diff --git a/theme/front-page.php b/theme/front-page.php index b87d192..e06c5f4 100644 --- a/theme/front-page.php +++ b/theme/front-page.php @@ -100,10 +100,12 @@ $shop_url = get_permalink(wc_get_page_id('shop'));
['DEPT. 01', 'For passive aggression at room temp.'], - 'canvas' => ['DEPT. 02', 'Wall art for the soul-tired.'], - 'planners' => ['DEPT. 03', 'Productivity, with a wink.'], - 'apparel' => ['DEPT. 04', 'Casual Friday, but make it bitter.'], + 'drinkware' => ['DEPT. 01', 'For passive aggression at room temp.'], + 'wall-decor' => ['DEPT. 02', 'Wall art for the soul-tired.'], + 'stationery' => ['DEPT. 03', 'Productivity, with a wink.'], + 'apparel' => ['DEPT. 04', 'Casual Friday, but make it bitter.'], + 'stickers' => ['DEPT. 05', 'Stick it where they'll see it.'], + 'accessories' => ['DEPT. 06', 'The extras that speak for you.'], ]; if (!empty($categories)) { @@ -236,23 +238,25 @@ $shop_url = get_permalink(wc_get_page_id('shop'));
['bg' => '#FBF8EF', 'fg' => '#1A1A1A'], 'ink' => ['bg' => '#1A1A1A', 'fg' => '#F5F1E8'], 'olive' => ['bg' => '#7B8C5A', 'fg' => '#F5F1E8'], ]; - foreach ($designs as [$title, $tag, $color, $lines, $count]) { + foreach ($designs as [$title, $tag, $color, $lines, $tag_slug]) { + $tag_term = get_term_by('slug', $tag_slug, 'product_tag'); + $count = $tag_term ? $tag_term->count : 0; + $tag_url = $tag_term ? get_term_link($tag_term, 'product_tag') : home_url('/shop/'); $cm = $color_map[$color]; - $designs_url = home_url('/designs/'); ?> - +
' . esc_html($line) . '
'; ?> diff --git a/theme/functions.php b/theme/functions.php index 62f07dc..b2cdc3b 100644 --- a/theme/functions.php +++ b/theme/functions.php @@ -141,12 +141,13 @@ function rar_nav() { ?>
+
diff --git a/theme/js/rar.js b/theme/js/rar.js index 70128a4..09fd6c3 100644 --- a/theme/js/rar.js +++ b/theme/js/rar.js @@ -176,7 +176,51 @@ } catch (e) {} } - // ─── WooCommerce quantity controls (override default +/-) ───────────────── + // ─── Search overlay toggle ─────────────────────────────────────────────────── + window.rarToggleSearch = function () { + var overlay = document.getElementById('rar-search-overlay'); + var btn = document.getElementById('rar-search-toggle'); + if (!overlay) return; + var isHidden = overlay.hidden; + overlay.hidden = !isHidden; + if (btn) btn.setAttribute('aria-expanded', isHidden ? 'true' : 'false'); + if (isHidden) { + var input = overlay.querySelector('input[type=search]'); + if (input) { input.focus(); input.select(); } + } + }; + + // Close search overlay on Escape key + document.addEventListener('keydown', function (e) { + if (e.key === 'Escape') { + var overlay = document.getElementById('rar-search-overlay'); + if (overlay && !overlay.hidden) { + overlay.hidden = true; + var btn = document.getElementById('rar-search-toggle'); + if (btn) { btn.setAttribute('aria-expanded', 'false'); btn.focus(); } + } + } + }); + + // ─── Newsletter form submit (placeholder handler) ───────────────────────── + window.rarNewsletterSubmit = function (e, form) { + e.preventDefault(); + var email = form.querySelector('input[type=email]'); + if (!email || !email.value) return false; + var btn = form.querySelector('button[type=submit]'); + if (btn) { + btn.textContent = 'Filed. ✓'; + btn.disabled = true; + } + if (email) { + email.value = ''; + email.placeholder = 'You're on the list.'; + email.disabled = true; + } + return false; + }; + + // ─── WooCommerce quantity controls (override default +/-) ───────────────── // Replace WC's quantity input with our styled controls function initQtyControls() { document.querySelectorAll('.quantity:not(.rar-qty-init)').forEach(function (wrap) { diff --git a/theme/style.css b/theme/style.css index 3f1d961..ff48bb4 100644 --- a/theme/style.css +++ b/theme/style.css @@ -160,6 +160,44 @@ button { font-family: inherit; cursor: pointer; border: none; background: none; transition: background 0.15s; } .rar-nav__cart:hover { background: var(--stamp-dark) !important; } +.rar-nav__search-btn { + display: inline-flex; align-items: center; gap: 6px; + background: none; border: none; cursor: pointer; + color: var(--manila); font-family: var(--mono); font-size: 11px; + letter-spacing: 0.12em; text-transform: uppercase; padding: 0; + transition: color 0.15s; +} +.rar-nav__search-btn:hover { color: var(--stamp); } +.rar-search-overlay { + position: sticky; top: 0; z-index: 99; + background: var(--paper); border-bottom: 1.5px solid var(--ink); + padding: 12px 40px; +} +.rar-search-form { + display: flex; align-items: center; gap: 10px; max-width: 640px; margin: 0 auto; +} +.rar-search-input { + flex: 1; padding: 10px 14px; + border: 1.5px solid var(--ink); background: transparent; + font-family: var(--mono); font-size: 13px; letter-spacing: 0.04em; + color: var(--ink); outline: none; +} +.rar-search-input:focus { border-color: var(--stamp); } +.rar-search-close { + background: none; border: none; cursor: pointer; font-size: 18px; + color: var(--ink-muted); padding: 4px 8px; line-height: 1; + transition: color 0.15s; +} +.rar-search-close:hover { color: var(--stamp); } +.rar-newsletter-form { display: flex; gap: 8px; width: 100%; } +.rar-newsletter-form input[type=email] { + flex: 1; max-width: 240px; padding: 10px 12px; + background: transparent; + border: 1px solid rgba(245,241,232,0.3); + color: var(--manila); font-family: var(--mono); font-size: 11px; + letter-spacing: 0.06em; outline: none; border-radius: 2px; +} +.rar-newsletter-form input[type=email]::placeholder { color: rgba(245,241,232,0.4); } /* ───────── Buttons ───────── */ .rar-btn { diff --git a/theme/woocommerce/archive-product.php b/theme/woocommerce/archive-product.php index 20a255a..f967166 100644 --- a/theme/woocommerce/archive-product.php +++ b/theme/woocommerce/archive-product.php @@ -15,10 +15,12 @@ $cat_slug = $is_category ? $term->slug : 'shop'; // Category descriptions $cat_desc_map = [ - 'mugs' => '47 ceramics, 12 enamels, and a few we honestly forgot to count. Dishwasher safe. Microwave safe. HR safe (mostly).', - 'canvas' => 'Print-on-demand wall art for the soul-tired and decoratively passive-aggressive.', - 'planners' => 'For the person who plans a lot and does a little. Or the other way around.', - 'apparel' => 'Wear your grievances. Business casual with a quiet fury.', + 'drinkware' => 'Dishwasher safe. Microwave safe. HR safe (mostly). Mugs, tumblers, and vessels for the passively aggressive.', + 'wall-decor' => 'Print-on-demand wall art for the soul-tired and decoratively passive-aggressive.', + 'stationery' => 'For the person who plans a lot and does a little. Or the other way around.', + 'apparel' => 'Wear your grievances. Business casual with a quiet fury.', + 'stickers' => 'Stick your opinions where they'll be seen. Water-resistant, like your resolve.', + 'accessories' => 'The extras that speak for you when you've run out of words.', ]; if (empty($cat_desc)) { $cat_desc = $cat_desc_map[$cat_slug] ?? 'The complete collection. Curated for the chronically employed.';