From 5542e72f98caab187312c9f2ccc904c1a6b22562 Mon Sep 17 00:00:00 2001 From: Commander1024 Date: Sun, 26 Jul 2026 16:56:32 +0200 Subject: [PATCH] Initial AI theme draft --- 404.php | 3 ++ archive.php | 4 +++ assets/js/theme.js | 56 ++++++++++++++++++++++++++++++++++++++ comments.php | 12 ++++++++ editor-style.css | 1 + footer.php | 9 ++++++ front-page.php | 16 +++++++++++ functions.php | 47 ++++++++++++++++++++++++++++++++ header.php | 30 ++++++++++++++++++++ index.php | 6 ++++ page.php | 5 ++++ search.php | 4 +++ searchform.php | 5 ++++ single.php | 13 +++++++++ style.css | 25 +++++++++++++++++ template-parts/content.php | 9 ++++++ 16 files changed, 245 insertions(+) create mode 100644 404.php create mode 100644 archive.php create mode 100644 assets/js/theme.js create mode 100644 comments.php create mode 100644 editor-style.css create mode 100644 footer.php create mode 100644 front-page.php create mode 100644 functions.php create mode 100644 header.php create mode 100644 index.php create mode 100644 page.php create mode 100644 search.php create mode 100644 searchform.php create mode 100644 single.php create mode 100644 style.css create mode 100644 template-parts/content.php diff --git a/404.php b/404.php new file mode 100644 index 0000000..f3d22e0 --- /dev/null +++ b/404.php @@ -0,0 +1,3 @@ + +

+ + +
1 ) ); } ?>
+ { + const root = document.documentElement; + const storedTheme = localStorage.getItem('c1024-theme'); + if (storedTheme) root.dataset.theme = storedTheme; + + const themeToggle = document.querySelector('[data-theme-toggle]'); + if (themeToggle) { + const updateThemeLabel = () => { + const dark = root.dataset.theme === 'dark'; + themeToggle.setAttribute('aria-pressed', String(dark)); + themeToggle.setAttribute('aria-label', dark ? 'Use light mode' : 'Use dark mode'); + }; + updateThemeLabel(); + themeToggle.addEventListener('click', () => { + root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark'; + localStorage.setItem('c1024-theme', root.dataset.theme); + updateThemeLabel(); + }); + } + + const header = document.querySelector('.site-header'); + let lastY = window.scrollY; + let ticking = false; + window.addEventListener('scroll', () => { + if (ticking || !header) return; + ticking = true; + requestAnimationFrame(() => { + const currentY = window.scrollY; + header.classList.toggle('is-hidden', currentY > lastY && currentY > header.offsetHeight); + lastY = currentY; + ticking = false; + }); + }, { passive: true }); + + const searchToggle = document.querySelector('[data-search-toggle]'); + const searchPanel = document.querySelector('[data-search-panel]'); + if (searchToggle && searchPanel) { + searchToggle.addEventListener('click', () => { + const open = searchPanel.classList.toggle('is-open'); + searchToggle.setAttribute('aria-expanded', String(open)); + if (open) searchPanel.querySelector('input')?.focus(); + }); + document.addEventListener('click', event => { + if (!searchPanel.contains(event.target) && !searchToggle.contains(event.target)) { + searchPanel.classList.remove('is-open'); + searchToggle.setAttribute('aria-expanded', 'false'); + } + }); + } + + const menuToggle = document.querySelector('[data-menu-toggle]'); + if (menuToggle && header) menuToggle.addEventListener('click', () => { + const open = header.classList.toggle('menu-open'); + menuToggle.setAttribute('aria-expanded', String(open)); + }); +})(); diff --git a/comments.php b/comments.php new file mode 100644 index 0000000..b43285b --- /dev/null +++ b/comments.php @@ -0,0 +1,12 @@ + +
+ +

+
    'ol', 'short_ping' => true, 'avatar_size' => 48 ) ); ?>
+ + +

+ +
diff --git a/editor-style.css b/editor-style.css new file mode 100644 index 0000000..950993a --- /dev/null +++ b/editor-style.css @@ -0,0 +1 @@ +@font-face{font-family:'Alpha Lyrae';src:url('fonts/AlphaLyrae-Medium.woff2') format('woff2')}@font-face{font-family:'Crimson Pro';src:url('fonts/crimson-pro-latin-ext-wght-normal.woff2') format('woff2')}@font-face{font-family:'Berkeley Mono';src:url('fonts/BerkeleyMono-Regular.woff2') format('woff2')}body{font-family:'Crimson Pro',Georgia,serif;font-size:22px;line-height:1.55;color:#1d1b19}h1,h2,h3,h4{font-family:'Alpha Lyrae',sans-serif;font-weight:500;letter-spacing:.025em}code,pre{font-family:'Berkeley Mono',monospace}a{color:#c3480b} diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..0c8f237 --- /dev/null +++ b/footer.php @@ -0,0 +1,9 @@ + + + + diff --git a/front-page.php b/front-page.php new file mode 100644 index 0000000..dccb7fa --- /dev/null +++ b/front-page.php @@ -0,0 +1,16 @@ + + +
+ +

+
+ +
+ 1 ) ); } } else { while ( have_posts() ) { the_post(); ?>
>
+
+ true, 'flex-height' => true ) ); + add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script' ) ); + add_theme_support( 'align-wide' ); + add_editor_style( 'editor-style.css' ); + register_nav_menus( array( + 'primary' => __( 'Primary menu', 'c1024-2026' ), + 'footer' => __( 'Footer menu', 'c1024-2026' ), + ) ); +} +add_action( 'after_setup_theme', 'c1024_2026_setup' ); + +function c1024_2026_assets() { + wp_enqueue_style( 'c1024-2026-style', get_stylesheet_uri(), array(), '1.0.0' ); + wp_enqueue_script( 'c1024-2026-theme', get_template_directory_uri() . '/assets/js/theme.js', array(), '1.0.0', true ); +} +add_action( 'wp_enqueue_scripts', 'c1024_2026_assets' ); + +function c1024_2026_customize_register( $wp_customize ) { + $wp_customize->add_section( 'c1024_2026_home_hero', array( + 'title' => __( 'Home page video hero', 'c1024-2026' ), + 'description' => __( 'Displayed on the site front page.', 'c1024-2026' ), + 'priority' => 30, + ) ); + $wp_customize->add_setting( 'c1024_2026_hero_video', array( 'sanitize_callback' => 'absint' ) ); + $wp_customize->add_control( new WP_Customize_Media_Control( $wp_customize, 'c1024_2026_hero_video', array( + 'label' => __( 'Hero video', 'c1024-2026' ), 'section' => 'c1024_2026_home_hero', 'mime_type' => 'video', + ) ) ); + $wp_customize->add_setting( 'c1024_2026_hero_title', array( 'default' => get_bloginfo( 'name' ), 'sanitize_callback' => 'sanitize_text_field' ) ); + $wp_customize->add_control( 'c1024_2026_hero_title', array( 'label' => __( 'Overlay heading', 'c1024-2026' ), 'section' => 'c1024_2026_home_hero', 'type' => 'text' ) ); + $wp_customize->add_setting( 'c1024_2026_hero_text', array( 'sanitize_callback' => 'sanitize_textarea_field' ) ); + $wp_customize->add_control( 'c1024_2026_hero_text', array( 'label' => __( 'Overlay text', 'c1024-2026' ), 'section' => 'c1024_2026_home_hero', 'type' => 'textarea' ) ); +} +add_action( 'customize_register', 'c1024_2026_customize_register' ); + +function c1024_2026_excerpt_more( $more ) { + return '…'; +} +add_filter( 'excerpt_more', 'c1024_2026_excerpt_more' ); diff --git a/header.php b/header.php new file mode 100644 index 0000000..9b32135 --- /dev/null +++ b/header.php @@ -0,0 +1,30 @@ + +> + + + + + +> + + + + diff --git a/index.php b/index.php new file mode 100644 index 0000000..7af178b --- /dev/null +++ b/index.php @@ -0,0 +1,6 @@ + +
+ + 1 ) ); } else { ?>

+
+ +
+
>
', '' ); ?>
+
+ + +
1 ) ); } else { ?>

+"> + + + + diff --git a/single.php b/single.php new file mode 100644 index 0000000..78000da --- /dev/null +++ b/single.php @@ -0,0 +1,13 @@ + +
+ +
> +
', '' ); ?>
+
+
+
+
+ + +
+a{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:.4rem}.icon-button{display:grid;place-items:center;width:2.2rem;height:2.2rem;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text)}.icon-button:hover,.icon-button:focus{background:var(--surface);color:var(--accent)}.icon{width:1.15rem;height:1.15rem;fill:none;stroke:currentColor;stroke-width:1.8}.search-panel{position:absolute;top:calc(100% + 1px);right:max(1rem,calc((100vw - var(--wide))/2));width:min(420px,calc(100vw - 2rem));padding:1rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);transform:translateY(-.5rem);opacity:0;visibility:hidden;transition:.18s}.search-panel.is-open{transform:none;opacity:1;visibility:visible}.search-form{display:flex;gap:.5rem}.search-field{flex:1;min-width:0;padding:.55rem .7rem;border:1px solid var(--line);border-radius:2px;background:var(--bg);color:var(--text)}.button,.search-submit,input[type=submit]{padding:.55rem .9rem;border:1px solid var(--accent);border-radius:2px;background:var(--accent);color:#fff;font-family:'Berkeley Mono',monospace;font-size:.68rem;letter-spacing:.04em}.menu-toggle{display:none} +.site-main{max-width:var(--content);padding:3.5rem 1.5rem 5rem;margin:auto}.page-header{max-width:var(--content);padding:3.5rem 1.5rem 0;margin:auto}.page-title,.entry-title,h1,h2,h3,h4{font-family:'Alpha Lyrae',sans-serif;font-weight:500;line-height:1.16;letter-spacing:.025em}.page-title{margin:0;font-size:clamp(2rem,1.35rem + 2.5vw,3.5rem)}.archive-description{color:var(--muted)}.post-card{padding:2.25rem 0;border-bottom:1px solid var(--line)}.post-card:first-child{padding-top:0}.entry-meta,.entry-footer,.taxonomy{color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem;letter-spacing:.035em}.entry-meta a,.entry-footer a{color:inherit}.entry-title{margin:.35rem 0 .8rem;font-size:clamp(1.75rem,1.3rem + 1.7vw,2.75rem)}.entry-title a{color:var(--text);text-decoration:none}.entry-title a:hover{color:var(--accent)}.entry-summary p{margin-bottom:0}.entry-thumbnail{margin:1.25rem 0}.entry-thumbnail img{width:100%;border-radius:2px}.post-categories,.tags-links{display:flex;flex-wrap:wrap;gap:.4rem;margin:.7rem 0}.post-categories a,.tags-links a{padding:.18rem .45rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);text-decoration:none}.post-categories a:hover,.tags-links a:hover{border-color:var(--accent);color:var(--accent)}.single .entry-header,.page .entry-header{margin-bottom:2rem}.single .entry-title,.page .entry-title{font-size:clamp(2.25rem,1.5rem + 3vw,4rem)}.entry-content{font-size:clamp(1.25rem,1.1rem + .4vw,1.5rem)}.entry-content>*{margin-top:0;margin-bottom:1.3em}.entry-content h2{margin-top:2em;font-size:1.55em}.entry-content h3{margin-top:1.8em;font-size:1.25em}.entry-content ul,.entry-content ol{padding-left:1.3em}.entry-content blockquote{padding:.35rem 1.25rem;border-left:4px solid var(--accent);margin-left:0;color:var(--muted);font-style:italic}.entry-content pre{padding:1rem 1.2rem;overflow:auto;border-radius:2px;background:var(--code-bg);color:var(--code-text);font-size:.78em}.entry-content code{font-family:'Berkeley Mono',monospace;font-size:.8em}.entry-content :not(pre)>code{padding:.1em .3em;border-radius:2px;background:var(--surface);border:1px solid var(--line)}.wp-block-image,.entry-content figure{margin-left:0;margin-right:0}.wp-caption-text{color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem}.wp-block-separator{border:0;border-top:1px solid var(--line)} +.hero{position:relative;display:grid;min-height:min(65vh,760px);overflow:hidden;background:#171615;color:#fff}.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero::after{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.74),rgba(0,0,0,.2));content:''}.hero-content{position:relative;z-index:1;align-self:end;max-width:var(--wide);width:100%;padding:clamp(4rem,13vw,10rem) 1.5rem 3.5rem;margin:auto}.hero-eyebrow{font-family:'Berkeley Mono',monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#f09b72}.hero-title{max-width:850px;margin:.45rem 0;font-family:'Alpha Lyrae',sans-serif;font-size:clamp(2.8rem,7vw,6rem);font-weight:500;line-height:.98}.hero-text{max-width:560px;margin:0;font-size:clamp(1.25rem,1.1rem + .5vw,1.6rem)}.hero+.site-main{padding-top:3rem}.pagination,.post-navigation{display:flex;justify-content:space-between;gap:1rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);font-family:'Berkeley Mono',monospace;font-size:.7rem}.pagination .nav-links{display:flex;gap:.8rem}.page-numbers{padding:.25rem}.page-numbers.current{color:var(--accent)}.comments-area{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--line)}.comment-list{padding:0;list-style:none}.comment-body{padding:1rem 0;border-bottom:1px solid var(--line)}.comment-meta{font-family:'Berkeley Mono',monospace;font-size:.7rem}.comment-form input:not([type=submit]),.comment-form textarea{width:100%;padding:.55rem;border:1px solid var(--line);background:var(--surface);color:var(--text)}.site-footer{padding:2.5rem 1.5rem;border-top:1px solid var(--line);color:var(--muted);font-family:'Berkeley Mono',monospace;font-size:.68rem}.footer-inner{display:flex;justify-content:space-between;gap:1rem;max-width:var(--wide);margin:auto}.footer-menu{display:flex;gap:1rem;margin:0;padding:0;list-style:none}.footer-menu a{color:inherit}.not-found{text-align:center}.not-found .search-form{max-width:380px;margin:2rem auto} +@media(max-width:760px){.header-inner{min-height:4rem;padding:.55rem 1rem;flex-wrap:wrap}.menu-toggle{display:grid}.primary-navigation{order:4;width:100%;display:none}.site-header.menu-open .primary-navigation{display:block}.primary-menu{align-items:flex-start;flex-direction:column;gap:.9rem;padding:.8rem 0;border-top:1px solid var(--line)}.site-description{display:none}.site-main{padding:2.5rem 1rem 4rem}.page-header{padding:2.5rem 1rem 0}.hero-content{padding:6rem 1rem 2.5rem}.hero{min-height:55vh}.footer-inner{flex-direction:column}.entry-content{font-size:1.25rem}} +@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important}} diff --git a/template-parts/content.php b/template-parts/content.php new file mode 100644 index 0000000..edfe927 --- /dev/null +++ b/template-parts/content.php @@ -0,0 +1,9 @@ +
> +
+ + ', esc_url( get_permalink() ) ), '' ); ?> +
+
+ +
+