From 023bd23d96e8ae6031b8ee5c3a708aa292b0db8c Mon Sep 17 00:00:00 2001 From: Alex Dunmow Date: Sun, 5 Jul 2026 10:57:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(coffee):=20Wave=20A=20override=20contract?= =?UTF-8?q?=20=E2=80=94=2049=20builtin=20overrides,=207=20page=20templates?= =?UTF-8?q?,=20persona=20blocks,=20seed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WO-TF-013. Bring the coffee theme up to the frozen OVERRIDE-CONTRACT: - 49 mandatory builtin overrides in templates/overrides/coffee/ (chrome, marketing, primitives, commerce/local, blog family, auth surface, page-suggestions), each re-skinned in cafe/roastery chrome over the builtin data model. Legacy button/heading/image/text field reads updated to the new builtin contract (link/label/style, media/text). - Signature moves: chalkboard menu panel (menu-list), hand-drawn doodle dividers, torn-paper edges, kraft-tag stamped buttons, circular roast stamps, hours "today" highlight. Semantic tokens only; CSS-first motion with prefers-reduced-motion fallbacks. - 7 page templates: default, landing, article, full-width, blog-index, contact, auth. - Blocks rework: deleted the five builtin-duplicating theme blocks (menu_board, hours_strip, location_card, footer, doodle_divider) — now overrides. Kept/added 4 persona blocks: featured_pour, roast_profile, loyalty_card, brew_guide. - 5 dual-mode presets (mode "both"), all 19 tokens, light and dark tuned. - Bundled Fraunces / Work Sans / Caveat woff2 (OFL, latin subset, license recorded); fonts.json populated; all font-family via var(--font-*). Updated RECOMMENDED_FONTS.md, added RECOMMENDED_ICONS.md; required_icon_packs declared. - Themed email-safe wrapper retained (tables, inline styles). - Master pages rebuilt on builtin keys. Demo seed (demo:true): home, about, blog + 3 posts, contact (form + contact_submissions data table + row_inserted email-admins workflow), login. Cafe voice. make (codeless build + verify) and check-safety both exit 0. Co-Authored-By: Claude Opus 4.8 --- RECOMMENDED_FONTS.md | 75 ++--- RECOMMENDED_ICONS.md | 26 ++ assets/fonts/OFL.txt | 111 +++++++ assets/fonts/caveat-latin-400.woff2 | Bin 0 -> 48836 bytes assets/fonts/caveat-latin-700.woff2 | Bin 0 -> 51020 bytes assets/fonts/fraunces-latin-400.woff2 | Bin 0 -> 17968 bytes assets/fonts/fraunces-latin-600.woff2 | Bin 0 -> 18096 bytes assets/fonts/worksans-latin-400.woff2 | Bin 0 -> 19900 bytes assets/fonts/worksans-latin-600.woff2 | Bin 0 -> 20984 bytes assets/style.css | 183 +++++++++--- blocks/blocks.yaml | 62 ++-- blocks/brew_guide.ninjatpl | 29 ++ blocks/brew_guide.schema.json | 67 +++++ blocks/doodle_divider.ninjatpl | 39 --- blocks/doodle_divider.schema.json | 16 -- blocks/featured_pour.ninjatpl | 17 +- blocks/featured_pour.schema.json | 19 ++ blocks/footer.ninjatpl | 28 -- blocks/footer.schema.json | 22 -- blocks/hours_strip.ninjatpl | 13 - blocks/hours_strip.schema.json | 47 --- blocks/location_card.ninjatpl | 18 -- blocks/location_card.schema.json | 26 -- blocks/loyalty_card.ninjatpl | 24 ++ blocks/loyalty_card.schema.json | 38 +++ blocks/menu_board.ninjatpl | 26 -- blocks/menu_board.schema.json | 70 ----- blocks/roast_profile.ninjatpl | 26 ++ blocks/roast_profile.schema.json | 64 +++++ fonts.json | 27 +- manifest.yaml | 271 +++++++++++++++--- master_pages.json | 39 ++- plugin.mod | 1 + presets.json | 112 +++++++- seed/seed.json | 177 ++++++++++++ seed/workflows.json | 25 ++ templates/coffee/article.ninjatpl | 2 +- templates/coffee/auth.ninjatpl | 19 ++ templates/coffee/blog-index.ninjatpl | 15 + templates/coffee/contact.ninjatpl | 13 + templates/coffee/default.ninjatpl | 6 +- templates/coffee/full-width.ninjatpl | 2 +- templates/coffee/landing.ninjatpl | 2 +- .../coffee/announcement-bar.ninjatpl | 21 ++ .../overrides/coffee/audio-embed.ninjatpl | 15 + templates/overrides/coffee/auth-form.ninjatpl | 36 +++ .../overrides/coffee/auth-status.ninjatpl | 27 ++ .../overrides/coffee/author-bio-hero.ninjatpl | 20 ++ .../overrides/coffee/author-bio.ninjatpl | 12 + templates/overrides/coffee/blog-hero.ninjatpl | 22 ++ .../overrides/coffee/breadcrumbs.ninjatpl | 12 + templates/overrides/coffee/button.ninjatpl | 6 +- templates/overrides/coffee/card.ninjatpl | 12 + .../overrides/coffee/category-list.ninjatpl | 17 ++ .../overrides/coffee/contact-card.ninjatpl | 17 ++ .../overrides/coffee/contact-form.ninjatpl | 39 +++ templates/overrides/coffee/countdown.ninjatpl | 42 +++ templates/overrides/coffee/cta.ninjatpl | 14 + templates/overrides/coffee/divider.ninjatpl | 17 ++ .../overrides/coffee/event-list.ninjatpl | 40 +++ templates/overrides/coffee/faq.ninjatpl | 17 ++ .../overrides/coffee/feature-grid.ninjatpl | 17 ++ .../overrides/coffee/featured-posts.ninjatpl | 21 ++ templates/overrides/coffee/footer.ninjatpl | 38 +++ templates/overrides/coffee/gallery.ninjatpl | 9 + templates/overrides/coffee/heading.ninjatpl | 7 +- templates/overrides/coffee/hero.ninjatpl | 36 +++ .../overrides/coffee/hours-location.ninjatpl | 40 +++ templates/overrides/coffee/image.ninjatpl | 10 +- .../overrides/coffee/logo-strip.ninjatpl | 15 + templates/overrides/coffee/menu-list.ninjatpl | 31 ++ templates/overrides/coffee/navbar.ninjatpl | 74 +++++ .../coffee/newsletter-signup.ninjatpl | 9 + .../coffee/page-suggestions.ninjatpl | 22 ++ .../coffee/password-reset-form.ninjatpl | 14 + .../overrides/coffee/popular-posts.ninjatpl | 15 + templates/overrides/coffee/post-hero.ninjatpl | 19 ++ .../overrides/coffee/post-metadata.ninjatpl | 8 + templates/overrides/coffee/pricing.ninjatpl | 24 ++ templates/overrides/coffee/quote.ninjatpl | 6 + .../overrides/coffee/related-posts.ninjatpl | 16 ++ .../overrides/coffee/rich-section.ninjatpl | 13 + templates/overrides/coffee/rich-text.ninjatpl | 1 + .../overrides/coffee/sidebar-nav.ninjatpl | 12 + .../overrides/coffee/social-links.ninjatpl | 13 + templates/overrides/coffee/stats.ninjatpl | 44 +++ templates/overrides/coffee/team.ninjatpl | 21 ++ .../overrides/coffee/testimonial.ninjatpl | 26 ++ templates/overrides/coffee/text.ninjatpl | 2 +- templates/overrides/coffee/timeline.ninjatpl | 21 ++ .../overrides/coffee/utility-bar.ninjatpl | 10 + .../overrides/coffee/video-embed.ninjatpl | 22 ++ 92 files changed, 2260 insertions(+), 499 deletions(-) create mode 100644 RECOMMENDED_ICONS.md create mode 100644 assets/fonts/OFL.txt create mode 100644 assets/fonts/caveat-latin-400.woff2 create mode 100644 assets/fonts/caveat-latin-700.woff2 create mode 100644 assets/fonts/fraunces-latin-400.woff2 create mode 100644 assets/fonts/fraunces-latin-600.woff2 create mode 100644 assets/fonts/worksans-latin-400.woff2 create mode 100644 assets/fonts/worksans-latin-600.woff2 create mode 100644 blocks/brew_guide.ninjatpl create mode 100644 blocks/brew_guide.schema.json delete mode 100644 blocks/doodle_divider.ninjatpl delete mode 100644 blocks/doodle_divider.schema.json delete mode 100644 blocks/footer.ninjatpl delete mode 100644 blocks/footer.schema.json delete mode 100644 blocks/hours_strip.ninjatpl delete mode 100644 blocks/hours_strip.schema.json delete mode 100644 blocks/location_card.ninjatpl delete mode 100644 blocks/location_card.schema.json create mode 100644 blocks/loyalty_card.ninjatpl create mode 100644 blocks/loyalty_card.schema.json delete mode 100644 blocks/menu_board.ninjatpl delete mode 100644 blocks/menu_board.schema.json create mode 100644 blocks/roast_profile.ninjatpl create mode 100644 blocks/roast_profile.schema.json create mode 100644 seed/seed.json create mode 100644 seed/workflows.json create mode 100644 templates/coffee/auth.ninjatpl create mode 100644 templates/coffee/blog-index.ninjatpl create mode 100644 templates/coffee/contact.ninjatpl create mode 100644 templates/overrides/coffee/announcement-bar.ninjatpl create mode 100644 templates/overrides/coffee/audio-embed.ninjatpl create mode 100644 templates/overrides/coffee/auth-form.ninjatpl create mode 100644 templates/overrides/coffee/auth-status.ninjatpl create mode 100644 templates/overrides/coffee/author-bio-hero.ninjatpl create mode 100644 templates/overrides/coffee/author-bio.ninjatpl create mode 100644 templates/overrides/coffee/blog-hero.ninjatpl create mode 100644 templates/overrides/coffee/breadcrumbs.ninjatpl create mode 100644 templates/overrides/coffee/card.ninjatpl create mode 100644 templates/overrides/coffee/category-list.ninjatpl create mode 100644 templates/overrides/coffee/contact-card.ninjatpl create mode 100644 templates/overrides/coffee/contact-form.ninjatpl create mode 100644 templates/overrides/coffee/countdown.ninjatpl create mode 100644 templates/overrides/coffee/cta.ninjatpl create mode 100644 templates/overrides/coffee/divider.ninjatpl create mode 100644 templates/overrides/coffee/event-list.ninjatpl create mode 100644 templates/overrides/coffee/faq.ninjatpl create mode 100644 templates/overrides/coffee/feature-grid.ninjatpl create mode 100644 templates/overrides/coffee/featured-posts.ninjatpl create mode 100644 templates/overrides/coffee/footer.ninjatpl create mode 100644 templates/overrides/coffee/gallery.ninjatpl create mode 100644 templates/overrides/coffee/hero.ninjatpl create mode 100644 templates/overrides/coffee/hours-location.ninjatpl create mode 100644 templates/overrides/coffee/logo-strip.ninjatpl create mode 100644 templates/overrides/coffee/menu-list.ninjatpl create mode 100644 templates/overrides/coffee/navbar.ninjatpl create mode 100644 templates/overrides/coffee/newsletter-signup.ninjatpl create mode 100644 templates/overrides/coffee/page-suggestions.ninjatpl create mode 100644 templates/overrides/coffee/password-reset-form.ninjatpl create mode 100644 templates/overrides/coffee/popular-posts.ninjatpl create mode 100644 templates/overrides/coffee/post-hero.ninjatpl create mode 100644 templates/overrides/coffee/post-metadata.ninjatpl create mode 100644 templates/overrides/coffee/pricing.ninjatpl create mode 100644 templates/overrides/coffee/quote.ninjatpl create mode 100644 templates/overrides/coffee/related-posts.ninjatpl create mode 100644 templates/overrides/coffee/rich-section.ninjatpl create mode 100644 templates/overrides/coffee/rich-text.ninjatpl create mode 100644 templates/overrides/coffee/sidebar-nav.ninjatpl create mode 100644 templates/overrides/coffee/social-links.ninjatpl create mode 100644 templates/overrides/coffee/stats.ninjatpl create mode 100644 templates/overrides/coffee/team.ninjatpl create mode 100644 templates/overrides/coffee/testimonial.ninjatpl create mode 100644 templates/overrides/coffee/timeline.ninjatpl create mode 100644 templates/overrides/coffee/utility-bar.ninjatpl create mode 100644 templates/overrides/coffee/video-embed.ninjatpl diff --git a/RECOMMENDED_FONTS.md b/RECOMMENDED_FONTS.md index f992e0c..a4abeb9 100644 --- a/RECOMMENDED_FONTS.md +++ b/RECOMMENDED_FONTS.md @@ -1,49 +1,50 @@ # Coffee — Recommended fonts -The Coffee theme ships `fonts.json = []` per the wave-1 -[FONTS.md](../docs/FONTS.md) policy. No woff2s are bundled in this pass. -Templates resolve font families through the BlockNinja CSS variables -`--font-heading`, `--font-body`, and `--font-mono` with the fallback stacks -defined in `assets/style.css`. The site admin assigns fonts in the -typography panel; the picks below are the spec-aligned defaults that match -the visual identity. +The Coffee theme **bundles** its type as woff2 in `assets/fonts/` (latin +subsets, SIL Open Font License 1.1 — see `assets/fonts/OFL.txt`). The three +families become `source=template` rows in the fonts table and are selectable +in the admin typography picker. Templates always resolve font families through +the BlockNinja CSS variables `--font-heading`, `--font-body`, `--font-mono` +with the fallback stacks defined in the theme CSS — no family is hardcoded. -## How to apply +## Bundled families -1. Open the admin → Theme → Typography panel. -2. Switch to the **Google Fonts** tab. -3. Search and pick each family below. -4. Assign to the matching slot (Heading / Body / Mono). -5. Save. The picks are persisted as `google:` and rendered as - `@import` URLs by `theme.GenerateCSS()`. +| Slot | Family | Weights | Role | +|-----------|------------|-----------|------| +| Heading | Fraunces | 400, 600 | Ligature-rich display serif for headings and prices. Warm, hand-cut character. | +| Body | Work Sans | 400, 600 | Relaxed grotesque for long copy at 17px+. Reads well on cream and espresso backgrounds. | +| Accent | Caveat | 400, 700 | Hand-drawn script for badges, stamps, and doodle captions. | -## Picks +Mono is intentionally **not** bundled: prices and tabular figures fall back to +`"JetBrains Mono", ..., monospace` via `--font-mono`. Assign a mono family from +the Google Fonts tab if you want a specific face. -| Slot | Source | Family | Why | -|----------|------------------|------------------|-----| -| Heading | `google:Fraunces` | Fraunces | Ligature-rich display serif. Italic stylistic alternates land on h2/h3 headings; pairs with the spec's "Quentin Blake ink lines" aesthetic. | -| Body | `google:Inter` | Inter | Relaxed body sans for long copy at 17px+. Excellent screen rendering across cream and espresso backgrounds. | -| Mono | `google:JetBrains Mono` | JetBrains Mono | Tabular-numerals mono for prices in `menu_board` and `featured_pour`, and hours in `hours_strip`. | +## Default behaviour (no admin picks) -All three are already in the curated Google Fonts list in the picker and -have permissive SIL OFL 1.1 licences. +On a fresh install the admin has not assigned any slot, so `--font-heading` / +`--font-body` / `--font-mono` are unset and the CSS fallbacks apply. Because the +bundled families emit `@font-face` from the fonts table, the fallbacks resolve +to the bundled woff2: -## Fallback stacks (used before admin picks fonts) +- Headings render in **Fraunces**. +- Body renders in **Work Sans**. +- Hand-drawn accents (`.coffee-hand`) render in **Caveat**. -Defined in `assets/style.css`: +## How to change + +1. Open admin → Theme → Typography. +2. Pick a family per slot (bundled families appear as **Template** fonts; the + Google Fonts tab offers ~50 more). +3. Assign to Heading / Body / Mono and save. + +Note: the platform exposes three controllable slots. The hand-drawn accent +utility resolves through `--font-heading` (falling back to Caveat), so if you +deliberately change the heading font the badge accents follow it — that is the +three-slot model working as intended. + +## Fallback stacks (theme CSS) - `--coffee-heading-fallback`: `"Fraunces", "Playfair Display", Georgia, "Times New Roman", serif` -- `--coffee-body-fallback`: `"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif` +- `--coffee-body-fallback`: `"Work Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif` +- `--coffee-hand-fallback`: `"Caveat", "Segoe Print", "Bradley Hand", cursive` - `--coffee-mono-fallback`: `"JetBrains Mono", "Fira Code", Menlo, Consolas, monospace` - -Templates always consume the variable form, e.g. -`font-family: var(--font-heading, var(--coffee-heading-fallback))`. - -## Wave-2 follow-up - -If/when bundling becomes necessary (offline-first deployments, brand -exclusivity), commission/license the spec's exact Fraunces weights -(Regular 400, SemiBold 600, BoldItalic 700), Inter (Regular 400, Medium -500), and JetBrains Mono (Regular 400), and re-populate `fonts.json` per -[FONTS.md §"fonts.json schema"](../docs/FONTS.md). A `LICENSES.md` at the -theme root must also land in that pass. diff --git a/RECOMMENDED_ICONS.md b/RECOMMENDED_ICONS.md new file mode 100644 index 0000000..9abfc5f --- /dev/null +++ b/RECOMMENDED_ICONS.md @@ -0,0 +1,26 @@ +# Coffee — Recommended icon packs + +The Coffee theme renders icons through the CMS sprite system only +(``). It relies on two +bundled packs, declared in `plugin.mod` `required_icon_packs`: + +| Pack | Used for | +|----------------|----------| +| `lucide` | UI glyphs in builtin overrides (arrows, chevrons, check, map-pin, navigation, star, play, download, x). Bundled with the CMS — no install needed. | +| `simple-icons` | Brand marks in author-bio-hero and social-links (x, linkedin, github, instagram, facebook). Bundled with the CMS — no install needed. | + +Both packs ship with the CMS, so the theme renders with no manual setup. + +## If the loader does not auto-install + +The `required_icon_packs` field is forward-declared. Until the loader honors +it, confirm the packs are present: + +1. Open `/admin/icons`. +2. Confirm **Lucide** and **Simple Icons** are installed and enabled (both are + bundled defaults). +3. No downloads are required. + +Block content stores icon references as `"pack:name"` strings (e.g. +`"lucide:coffee"`, `"simple-icons:instagram"`). The theme never inlines SVG +paths. diff --git a/assets/fonts/OFL.txt b/assets/fonts/OFL.txt new file mode 100644 index 0000000..0bc9995 --- /dev/null +++ b/assets/fonts/OFL.txt @@ -0,0 +1,111 @@ +Bundled fonts — SIL Open Font License 1.1 +========================================= + +This directory bundles latin-subset woff2 files for three families, all +licensed under the SIL Open Font License, Version 1.1 (OFL-1.1). + +Copyright notices +----------------- +Fraunces: Copyright 2018 The Fraunces Project Authors (https://github.com/undercasetype/Fraunces) +Work Sans: Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans) +Caveat: Copyright 2019 The Caveat Project Authors (https://github.com/googlefonts/caveat) + +Files +----- +fraunces-latin-400.woff2, fraunces-latin-600.woff2 — Fraunces (heading) +worksans-latin-400.woff2, worksans-latin-600.woff2 — Work Sans (body) +caveat-latin-400.woff2, caveat-latin-700.woff2 — Caveat (hand-drawn accents) + +Full license text (SIL OFL 1.1) +------------------------------- +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/caveat-latin-400.woff2 b/assets/fonts/caveat-latin-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fb050a64b1c6182851ef6fdecdaa29d637952cda GIT binary patch literal 48836 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%0Ay2t<^M?ma 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/fraunces-latin-400.woff2 b/assets/fonts/fraunces-latin-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..83cbd8ff4a0b4df7f1f19124577ea8c60028976e GIT binary patch literal 17968 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/fraunces-latin-600.woff2 b/assets/fonts/fraunces-latin-600.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..58cee1fd39e841fc0299b080f79fa5b8d6958c76 GIT binary patch literal 18096 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 PgDsZ(2Xqbf7XSbN8Zj(T literal 0 HcmV?d00001 diff --git a/assets/fonts/worksans-latin-400.woff2 b/assets/fonts/worksans-latin-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..02a6a42cb637647d6c270144b89c87f4fa6b0a65 GIT binary patch literal 19900 zcmY(pW2`8!(lxwo+qP}nHqN$f+qQMKZQHhO+tz#Ty-&X6n>1;sznadPc6GYk+(2q5x%r!dOwe7jZ`*tnB6)e`(RsAyeyMb?$_wA1&ipI)DekB1;U>G`6U2|{Ci z3h|}OLyH;Tof|P%WJ4N45<*BqQbFXvusuL6%QZkzRsqCn4%EUBCDB-=<=xr#W)+l+ zCiVKl0vP$lcY09Ey=rpVg(5_&E20>ko5Um%^mcRQjS|Bp6v`V|r6Ox<=QEg*_;1(@ zO8lgZzED||pS<6}U$+{c8#~(J4*k$k2E%*=*E>@|Uo(Z;2d=(B6}-`lke)TJup_AH zP5JYwg=Kls-{)C$)yRu-Xe17Su$Ou|@+{F*W6ib=-TgqAcdu#EH)e+^i)N1gVx1rU zAC+71{9}YkK?4agg8=nR83N=zbns~g>ktFWMnnp}8kWpG#1UJ5ng#&iXp(s=f4>0# zU-nkb4(=f(j3dMf->C<@45$bLYVce1lYMzGUsE=z??I5n02(5+hE0U}U4l(_ zzq^iFrgSa@$3{9N0}h7E4gBB5%bKke)>5cK%>_nPk*bTDsX00D)zTy*C&AKzPSx28 zbGUfKd;^4vXm2`emAe$@4&2IxzDvV2LY!6Cmr0fee;j9t29FFxhHPXOokhT2xq7Dz zY>)hQpQWrOx%CKXkc=UOAq2Y~9!mWL3~{oku7^_uuTQfo+mqqfS{)J+QFN0(++mfp zLKm;YqBu=yb0^%u(J}AqX zWgufY_XUkk-@Jlt{WS>mCCCw52IahP{M|KZiOa?(9@8+Mua#cO+Y%aAv)vOsGGdoX~XF3j!>3qgRbvR?F)jQCFmfdz_}ofo$HLNiY8nR_H)5EdDGP-qgPCR(crbXLm48o)z0pSEMLIMMX@A=uyWTA}Au|nW`Y#9f0B$&ucBeZB$HB z+iaKbx>b-@|0dA7)aKxt%d@-qs5e(XZc;s0Bu}JqCNI2=EHBJ~eQ+7^UN|a17spV- zUjbFV-A(GZg0YMfxIM4}$FM_Igm|dmuLx$t>DqUz!3z=SBy4*JMbK4}h zuPz0$UYj`*=V&t1wa`E_XNeu6P6#2U-Y6fAYTZ6Vbw|hCY@&{#{k4i9Lv2b;;rFi| zV&PZ`U@*@L*gxx!2fA~-0lxzPRK%QQofDMD;h6yb9{J*`2PjTK$?{$ERH-HpHI`@^ zs!1gfTk!y9gLg!)=9!?FpT2o3OoLRUSa<1j`2;l&@P)};(4%LKvAv4ruSu8q+j{G! zB=n|sQMK21$2l8oRZw}ghT`0gX zT#9Jf-5tudFVR17OHG)0TSFS>j;1d+7W}b0_q#9?sFjvY12JwZe{M%TV`58uMM+r9c&r%n~LzHuoRTYD59yaxbrl99sw^?4BF?MgTEkhQIJx z5AZ-Tzk1#%KyLv0Ku93|BY5EON%lX=abN-@)H@IW00jai%e%s+ph?D2J}aFtj!MVj z`zt2q1X9EjC`$|F67TBct{7kzXrdw^I3Y-jcM4=ZrpwU2mt+bUbgV4iG*6MsnX+Th zXXZm%opbpYFgcxLc!!arqlZp~4&L!HO@2nW|nEUDQB{U4xRjvbCT zZ>M2OyjJWm$!PE%OjV6Av(8xEuy}ECAOKww#=6=O*gh|^ERd~gvctI;)yOPOH6n`69BGo4tQuO)6yuOat}VR;l+L_DVZxDJOzUA zzZvjWbOu7%LfnDy7Es1+T6cASZ4*F1k?NiE!TKhPR)zDDAxT&iwJHr_@fT3D{sGMf zF?%qTh=RFt!^LW|u2+x;N^SkFo~>i8$DfwZCscdE!eL{xc3_m0O0!wQBdI}4Roe>^jW3|)(lQOzrP<#u8TO9cnEk9hAmc4RS#_7=AC`#K+ z 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

NA-3~1(U2tJHokluEWf> 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 V70v*`%bai}JrPUlf9P;24FJV?H3k3x literal 0 HcmV?d00001 diff --git a/assets/fonts/worksans-latin-600.woff2 b/assets/fonts/worksans-latin-600.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1ec3048c147332a3ebf0837fae48f986d5173345 GIT binary patch literal 20984 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 p:first-of-type::first-letter { font-family: var(--font-heading, var(--coffee-heading-fallback)); font-size: 4em; @@ -64,7 +62,7 @@ body.coffee-paper { color: hsl(var(--primary)); } -/* --- Kraft-tag button --------------------------------------------------- */ +/* --- Kraft-tag button (stamp press on hover) ---------------------------- */ .kraft-tag { position: relative; display: inline-flex; @@ -78,22 +76,29 @@ body.coffee-paper { font-family: var(--font-body, var(--coffee-body-fallback)); font-weight: 500; letter-spacing: 0.02em; - box-shadow: 0 1px 0 hsl(var(--border)); + box-shadow: 0 2px 0 hsl(var(--border)); transition: transform 120ms ease, box-shadow 120ms ease; cursor: pointer; } - .kraft-tag:hover { - transform: rotate(-1.2deg); - box-shadow: 0 2px 0 hsl(var(--border)); + transform: translateY(1px) rotate(-1.2deg); + box-shadow: 0 1px 0 hsl(var(--border)); } - .kraft-tag:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 3px; } +.kraft-tag--ghost { + background-color: transparent; + color: hsl(var(--primary)); + box-shadow: none; + border-style: dashed; +} +.kraft-tag--ghost:hover { + background-color: hsl(var(--muted)); +} -/* --- Torn-edge utility -------------------------------------------------- */ +/* --- Torn-paper edges --------------------------------------------------- */ .coffee-torn-top { -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 12 L0 6 Q 5 2 10 5 T 20 4 T 30 6 T 40 3 T 50 5 T 60 4 T 70 5 T 80 3 T 90 5 T 100 4 L100 12 Z' fill='black'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 12 L0 6 Q 5 2 10 5 T 20 4 T 30 6 T 40 3 T 50 5 T 60 4 T 70 5 T 80 3 T 90 5 T 100 4 L100 12 Z' fill='black'/%3E%3C/svg%3E"); @@ -102,7 +107,6 @@ body.coffee-paper { -webkit-mask-size: 100% 100%; mask-size: 100% 100%; } - .coffee-torn-bottom { -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 6 Q 95 10 90 7 T 80 8 T 70 6 T 60 9 T 50 7 T 40 8 T 30 7 T 20 9 T 10 7 T 0 8 Z' fill='black'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 6 Q 95 10 90 7 T 80 8 T 70 6 T 60 9 T 50 7 T 40 8 T 30 7 T 20 9 T 10 7 T 0 8 Z' fill='black'/%3E%3C/svg%3E"); @@ -112,25 +116,40 @@ body.coffee-paper { mask-size: 100% 100%; } -/* --- Coffee surfaces ---------------------------------------------------- */ +/* --- Surfaces ----------------------------------------------------------- */ .coffee-card { background-color: hsl(var(--card)); color: hsl(var(--card-foreground)); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; } - .coffee-frame { border: 1px solid hsl(var(--border)); background-color: hsl(var(--card)); } - .coffee-pencil-rule { border-color: hsl(var(--border)); border-style: solid; } -/* --- Today highlight ---------------------------------------------------- */ +/* --- Chalkboard menu panel (inverts foreground/background for a hung board; + * light mode = dark board + cream chalk, dark mode = light menu paper) --- */ +.coffee-chalkboard { + position: relative; + background-color: hsl(var(--foreground)); + color: hsl(var(--background)); + border-radius: 0.5rem; + box-shadow: inset 0 0 0 3px hsl(var(--background) / 0.12), inset 0 0 0 4px hsl(var(--foreground)); +} +.coffee-chalk-rule { + border-color: hsl(var(--background) / 0.28); + border-style: solid; +} +.coffee-chalk-muted { + color: hsl(var(--background) / 0.72); +} + +/* --- Hours: today highlight --------------------------------------------- */ .coffee-hours-today { background-color: hsl(var(--accent) / 0.15); color: hsl(var(--accent-foreground)); @@ -138,14 +157,108 @@ body.coffee-paper { padding-left: 0.75rem; } -/* --- Price typography --------------------------------------------------- */ +/* --- Price + spec chips ------------------------------------------------- */ .coffee-price { font-family: var(--font-mono, var(--coffee-mono-fallback)); font-variant-numeric: tabular-nums; color: hsl(var(--accent)); } +.coffee-chip { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.3rem 0.7rem; + border: 1px dashed hsl(var(--border)); + border-radius: 9999px; + background-color: hsl(var(--muted)); + color: hsl(var(--foreground)); + font-family: var(--font-body, var(--coffee-body-fallback)); + font-size: 0.85rem; +} -/* --- Doodle pin overlay for location card ------------------------------- */ +/* --- Circular stamp / badge (press on hover) ---------------------------- */ +.coffee-stamp { + display: inline-flex; + align-items: center; + justify-content: center; + width: 4.25rem; + height: 4.25rem; + border-radius: 9999px; + background-color: hsl(var(--accent)); + color: hsl(var(--accent-foreground)); + border: 2px solid hsl(var(--accent-foreground) / 0.35); + box-shadow: inset 0 0 0 3px hsl(var(--accent)); + font-family: var(--font-heading, var(--coffee-hand-fallback)); + font-size: 0.95rem; + text-align: center; + line-height: 1.05; + transform: rotate(-6deg); + transition: transform 140ms ease; +} +.coffee-stamp:hover { + transform: rotate(-6deg) scale(0.94); +} +.coffee-stamp-sm { + width: 2.25rem; + height: 2.25rem; + font-size: 1rem; + transform: rotate(-4deg); + box-shadow: none; +} + +/* --- Loyalty punch stamps ----------------------------------------------- */ +.coffee-punch { + display: inline-flex; + align-items: center; + justify-content: center; + aspect-ratio: 1 / 1; + border-radius: 9999px; + border: 2px dashed hsl(var(--border)); + color: hsl(var(--muted-foreground)); +} +.coffee-punch-on { + border-style: solid; + border-color: hsl(var(--accent)); + background-color: hsl(var(--accent) / 0.15); + color: hsl(var(--accent)); + transform: rotate(-5deg); +} +.coffee-punch-reward { + border-color: hsl(var(--primary)); + background-color: hsl(var(--primary) / 0.12); + color: hsl(var(--primary)); +} + +/* --- Location pin ------------------------------------------------------- */ .coffee-pin { color: hsl(var(--accent)); } + +/* --- Doodle divider draw-in --------------------------------------------- */ +.coffee-doodle-draw path, +.coffee-doodle-draw ellipse, +.coffee-doodle-draw circle { + stroke-dasharray: 240; + stroke-dashoffset: 240; + animation: coffee-draw 1.4s ease forwards; +} + +@keyframes coffee-draw { + to { stroke-dashoffset: 0; } +} + +/* --- Motion safety: static fallback ------------------------------------- */ +@media (prefers-reduced-motion: reduce) { + .kraft-tag, + .coffee-stamp, + .coffee-punch-on { transition: none; } + .kraft-tag:hover, + .coffee-stamp:hover { transform: none; } + .coffee-doodle-draw path, + .coffee-doodle-draw ellipse, + .coffee-doodle-draw circle { + stroke-dasharray: none; + stroke-dashoffset: 0; + animation: none; + } +} diff --git a/blocks/blocks.yaml b/blocks/blocks.yaml index eef4aca..384d143 100644 --- a/blocks/blocks.yaml +++ b/blocks/blocks.yaml @@ -1,42 +1,32 @@ -# Coffee theme block definitions (codeless .bnp, WO-WZ-021). -# Keys are fully qualified (coffee:) because the codeless loader registers -# definitions verbatim — there is no PluginBlockRegistry prefixing in the -# codeless path (unlike the wasm/templ path). The qualified keys match the -# hardcoded data-block attributes and the master_pages.json references. +# Coffee theme block definitions (codeless .bnp). +# Only true persona furniture stays a theme block. Everything that duplicated a +# builtin (menu, hours, location, footer, divider) is now a template override of +# the builtin key under templates/overrides/coffee/ — not a block here. +# +# Keys are fully qualified (coffee:): the codeless loader registers +# definitions verbatim (no PluginBlockRegistry prefixing in the codeless path). blocks: - - key: coffee:menu_board - title: Menu Board - description: Kraft-paper menu with sections of items (espresso, filter, pastry, ...) - category: content - schema: menu_board.schema.json - template: menu_board.ninjatpl - - key: coffee:hours_strip - title: Hours Strip - description: Weekly hours strip listing each day's opening hours. - category: content - schema: hours_strip.schema.json - template: hours_strip.ninjatpl - - key: coffee:location_card - title: Location Card - description: Address card with optional static map image and doodled pin overlay. - category: content - schema: location_card.schema.json - template: location_card.ninjatpl - key: coffee:featured_pour title: Featured Pour - description: Hero card for a featured coffee, tea or pastry with tasting notes and price. + description: Single-origin spotlight card with hand-drawn badge, tasting notes and price. category: content schema: featured_pour.schema.json template: featured_pour.ninjatpl - - key: coffee:footer - title: Footer - description: Torn-edge footer with optional location summary and newsletter caption. - category: layout - schema: footer.schema.json - template: footer.ninjatpl - - key: coffee:doodle_divider - title: Doodle Divider - description: Hand-drawn divider in one of four motifs (beans, croissant, cup, leaf). - category: layout - schema: doodle_divider.schema.json - template: doodle_divider.ninjatpl + - key: coffee:roast_profile + title: Roast Profile + description: Roastery spec card — origin, process, roast level and tasting notes with a circular roast stamp. + category: content + schema: roast_profile.schema.json + template: roast_profile.ninjatpl + - key: coffee:loyalty_card + title: Loyalty Card + description: Ten-stamp coffee punch card with a reward on the tenth stamp. + category: content + schema: loyalty_card.schema.json + template: loyalty_card.ninjatpl + - key: coffee:brew_guide + title: Brew Guide + description: Step-by-step brew method card with a ratio/grind/water/temp/time strip and numbered steps. + category: content + schema: brew_guide.schema.json + template: brew_guide.ninjatpl diff --git a/blocks/brew_guide.ninjatpl b/blocks/brew_guide.ninjatpl new file mode 100644 index 0000000..c97192c --- /dev/null +++ b/blocks/brew_guide.ninjatpl @@ -0,0 +1,29 @@ +

+
+
+ {% if kicker %}

{{ kicker }}

{% endif %} + {% if method %}

{{ method }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% if ratio %}Ratio {{ ratio }}{% endif %} + {% if grind %}Grind {{ grind }}{% endif %} + {% if water %}Water {{ water }}{% endif %} + {% if temperature %}Temp {{ temperature }}{% endif %} + {% if time %}Time {{ time }}{% endif %} +
+ {% if steps %} +
    + {% for step in steps %} +
  1. + {{ forloop.Counter }} +
    + {% if step.title %}

    {{ step.title }}

    {% endif %} + {% if step.text %}

    {{ step.text }}

    {% endif %} +
    +
  2. + {% endfor %} +
+ {% endif %} +
+
+
diff --git a/blocks/brew_guide.schema.json b/blocks/brew_guide.schema.json new file mode 100644 index 0000000..2d34772 --- /dev/null +++ b/blocks/brew_guide.schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Brew Guide", + "description": "Step-by-step brew method card with a ratio/grind/water/temp/time spec strip and numbered steps", + "type": "object", + "properties": { + "kicker": { + "type": "string", + "title": "Kicker (hand-drawn)", + "default": "How we brew it", + "x-editor": "text" + }, + "method": { + "type": "string", + "title": "Method", + "description": "e.g. \"V60 Pour-Over\"", + "x-editor": "text" + }, + "intro": { + "type": "string", + "title": "Intro", + "x-editor": "textarea" + }, + "ratio": { + "type": "string", + "title": "Ratio", + "description": "e.g. \"1:16\"", + "x-editor": "text" + }, + "grind": { + "type": "string", + "title": "Grind", + "description": "e.g. \"Medium-fine\"", + "x-editor": "text" + }, + "water": { + "type": "string", + "title": "Water", + "description": "e.g. \"300g\"", + "x-editor": "text" + }, + "temperature": { + "type": "string", + "title": "Temperature", + "description": "e.g. \"94C\"", + "x-editor": "text" + }, + "time": { + "type": "string", + "title": "Total Time", + "description": "e.g. \"3:00\"", + "x-editor": "text" + }, + "steps": { + "type": "array", + "title": "Steps", + "x-editor": "collection", + "items": { + "type": "object", + "properties": { + "title": { "type": "string", "title": "Step Title", "x-editor": "text" }, + "text": { "type": "string", "title": "Step Text", "x-editor": "textarea" } + } + } + } + } +} diff --git a/blocks/doodle_divider.ninjatpl b/blocks/doodle_divider.ninjatpl deleted file mode 100644 index a97a2d0..0000000 --- a/blocks/doodle_divider.ninjatpl +++ /dev/null @@ -1,39 +0,0 @@ -
- {% if motif == "croissant" %} - - {% elif motif == "cup" %} - - {% elif motif == "leaf" %} - - {% else %} - - {% endif %} -
diff --git a/blocks/doodle_divider.schema.json b/blocks/doodle_divider.schema.json deleted file mode 100644 index 3505381..0000000 --- a/blocks/doodle_divider.schema.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Doodle Divider", - "description": "Inline SVG divider in one of four hand-drawn motifs", - "type": "object", - "properties": { - "motif": { - "type": "string", - "title": "Motif", - "description": "Which doodle to render", - "default": "beans", - "x-editor": "select", - "enum": ["beans", "croissant", "cup", "leaf"] - } - } -} diff --git a/blocks/featured_pour.ninjatpl b/blocks/featured_pour.ninjatpl index eda009d..65e2223 100644 --- a/blocks/featured_pour.ninjatpl +++ b/blocks/featured_pour.ninjatpl @@ -1,15 +1,14 @@ -
-
- - Featured - +
+
+ {{ label|default:"Featured pour" }}
- {% if image %}{{ name }}{% else %}
Add a hero image
{% endif %} + {% if image %}{% img image alt=name|default:"Featured pour" class="h-full w-full object-cover" %}{% else %}
Add a hero image
{% endif %}
- {% if name %}

{{ name }}

{% else %}

Featured pour

{% endif %} - {% if tasting %}
{{ tasting|safe }}
{% endif %} - {% if price %}
{{ price }}
{% endif %} + {% if origin %}

{{ origin }}

{% endif %} + {% if name %}

{{ name }}

{% else %}

Featured pour

{% endif %} + {% if tasting %}
{{ tasting|safe }}
{% endif %} + {% if price %}
{{ currency|default:"$" }}{{ price }}
{% endif %}
diff --git a/blocks/featured_pour.schema.json b/blocks/featured_pour.schema.json index f7020f9..609c6b8 100644 --- a/blocks/featured_pour.schema.json +++ b/blocks/featured_pour.schema.json @@ -4,6 +4,19 @@ "description": "Hero card for a featured coffee, tea, or pastry with image, tasting notes and price", "type": "object", "properties": { + "label": { + "type": "string", + "title": "Badge Label", + "description": "Hand-drawn badge text", + "default": "Featured pour", + "x-editor": "text" + }, + "origin": { + "type": "string", + "title": "Origin / Kicker", + "description": "Small hand-drawn line above the name (e.g. \"Single origin\")", + "x-editor": "text" + }, "name": { "type": "string", "title": "Name", @@ -22,6 +35,12 @@ "description": "Hero image", "x-editor": "media" }, + "currency": { + "type": "string", + "title": "Currency Symbol", + "default": "$", + "x-editor": "text" + }, "price": { "type": "string", "title": "Price", diff --git a/blocks/footer.ninjatpl b/blocks/footer.ninjatpl deleted file mode 100644 index 694152c..0000000 --- a/blocks/footer.ninjatpl +++ /dev/null @@ -1,28 +0,0 @@ -
-
-
-

Hello there

-

Pull up a seat. Pastries from 7, coffee until late.

-
- {% if showLocation != "false" and showLocation != false %} -
-

Visit

-
42 Roastery Lane -City, State 9000
-
- {% endif %} -
-

Stay in touch

- {% if newsletterText %}

{{ newsletterText }}

{% else %}

Slow notes from the bar. Brew tips, seasonal pours, no spam.

{% endif %} -
- - - -
-
-
-
- © Coffee theme — kraft paper edition. - Hand-drawn with care. -
-
diff --git a/blocks/footer.schema.json b/blocks/footer.schema.json deleted file mode 100644 index 8c74c49..0000000 --- a/blocks/footer.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Coffee Footer", - "description": "Torn-edge footer with optional location block and newsletter caption", - "type": "object", - "properties": { - "showLocation": { - "type": "string", - "title": "Show Location", - "description": "Whether to render the location/hours summary", - "default": "true", - "x-editor": "select", - "enum": ["true", "false"] - }, - "newsletterText": { - "type": "string", - "title": "Newsletter Caption", - "description": "Short caption above the newsletter input", - "x-editor": "textarea" - } - } -} diff --git a/blocks/hours_strip.ninjatpl b/blocks/hours_strip.ninjatpl deleted file mode 100644 index e23ad0f..0000000 --- a/blocks/hours_strip.ninjatpl +++ /dev/null @@ -1,13 +0,0 @@ -{% if context.now %}{% set today = context.now|date:"D"|lower %}{% endif %} - diff --git a/blocks/hours_strip.schema.json b/blocks/hours_strip.schema.json deleted file mode 100644 index f9a1c42..0000000 --- a/blocks/hours_strip.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Hours Strip", - "description": "Horizontal opening hours strip with today's row server-side highlighted", - "type": "object", - "properties": { - "todayLabel": { - "type": "string", - "title": "Today Label", - "description": "Label rendered next to today's row (e.g. \"Today\")", - "default": "Today", - "x-editor": "text" - }, - "hours": { - "type": "array", - "title": "Weekly Hours", - "description": "One row per day. Days not listed render as closed.", - "default": [], - "x-editor": "collection", - "items": { - "type": "object", - "properties": { - "day": { - "type": "string", - "title": "Day", - "description": "Weekday (Mon, Tue, Wed, Thu, Fri, Sat, Sun)", - "x-editor": "select", - "enum": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] - }, - "open": { - "type": "string", - "title": "Opens", - "description": "Opening time (e.g. \"7:00\")", - "x-editor": "text" - }, - "close": { - "type": "string", - "title": "Closes", - "description": "Closing time (e.g. \"15:00\")", - "x-editor": "text" - } - }, - "required": ["day"] - } - } - } -} diff --git a/blocks/location_card.ninjatpl b/blocks/location_card.ninjatpl deleted file mode 100644 index f61f3b6..0000000 --- a/blocks/location_card.ninjatpl +++ /dev/null @@ -1,18 +0,0 @@ -
- -
diff --git a/blocks/location_card.schema.json b/blocks/location_card.schema.json deleted file mode 100644 index 334f5e4..0000000 --- a/blocks/location_card.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Location Card", - "description": "Address card with optional map image and directions link, doodle-pin overlay", - "type": "object", - "properties": { - "address": { - "type": "string", - "title": "Address", - "description": "Street address as a multi-line block", - "x-editor": "textarea" - }, - "mapImage": { - "type": "string", - "title": "Map Image", - "description": "Optional static map image", - "x-editor": "media" - }, - "directionsUrl": { - "type": "string", - "title": "Directions URL", - "description": "Link to Google Maps or similar", - "x-editor": "link" - } - } -} diff --git a/blocks/loyalty_card.ninjatpl b/blocks/loyalty_card.ninjatpl new file mode 100644 index 0000000..4221bfd --- /dev/null +++ b/blocks/loyalty_card.ninjatpl @@ -0,0 +1,24 @@ +{% with filled=filled|default:0 %} +
+
+
+ {% if title %}

{{ title }}

{% endif %} + {% if subtitle %}

{{ subtitle }}

{% endif %} +
+ {% if filled >= 1 %}{% endif %} + {% if filled >= 2 %}{% endif %} + {% if filled >= 3 %}{% endif %} + {% if filled >= 4 %}{% endif %} + {% if filled >= 5 %}{% endif %} + {% if filled >= 6 %}{% endif %} + {% if filled >= 7 %}{% endif %} + {% if filled >= 8 %}{% endif %} + {% if filled >= 9 %}{% endif %} + +
+ {% if reward %}

{{ reward }}

{% endif %} + {% if footnote %}

{{ footnote }}

{% endif %} +
+
+
+{% endwith %} diff --git a/blocks/loyalty_card.schema.json b/blocks/loyalty_card.schema.json new file mode 100644 index 0000000..c017431 --- /dev/null +++ b/blocks/loyalty_card.schema.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Loyalty Card", + "description": "Ten-stamp coffee punch card. The tenth stamp is the reward. Set how many stamps are filled for the demo state.", + "type": "object", + "properties": { + "title": { + "type": "string", + "title": "Title", + "default": "Buy nine, tenth on us", + "x-editor": "text" + }, + "subtitle": { + "type": "string", + "title": "Subtitle (hand-drawn)", + "x-editor": "text" + }, + "filled": { + "type": "number", + "title": "Stamps Filled", + "description": "How many of the ten stamps are punched (0-10)", + "default": 0, + "minimum": 0, + "maximum": 10, + "x-editor": "number" + }, + "reward": { + "type": "string", + "title": "Reward Line", + "x-editor": "text" + }, + "footnote": { + "type": "string", + "title": "Footnote (hand-drawn)", + "x-editor": "text" + } + } +} diff --git a/blocks/menu_board.ninjatpl b/blocks/menu_board.ninjatpl deleted file mode 100644 index 718b34d..0000000 --- a/blocks/menu_board.ninjatpl +++ /dev/null @@ -1,26 +0,0 @@ -
-
-

- {{ title|default:"Menu" }} -

- {% if not sections %}

Add a section to get started.

{% endif %} - {% for section in sections %} -
- {% if section.name %}

{{ section.name }}

{% endif %} - {% if not section.items %}

No items yet.

{% endif %} -
    - {% for item in section.items %} -
  • -
    -
    {{ item.name }}
    - {% if item.note %}
    {{ item.note }}
    {% endif %} - {% if item.allergens %}
    Allergens: {{ item.allergens }}
    {% endif %} -
    - {% if item.price %}
    {{ item.price }}
    {% endif %} -
  • - {% endfor %} -
-
- {% endfor %} -
-
diff --git a/blocks/menu_board.schema.json b/blocks/menu_board.schema.json deleted file mode 100644 index 0e9bfaa..0000000 --- a/blocks/menu_board.schema.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Menu Board", - "description": "Kraft-paper menu card with sections of items (espresso, filter, pastry, etc.)", - "type": "object", - "properties": { - "title": { - "type": "string", - "title": "Title", - "description": "Heading shown at the top of the menu (e.g. \"Menu\", \"Today's Pour\")", - "default": "Menu", - "x-editor": "text" - }, - "sections": { - "type": "array", - "title": "Sections", - "description": "Menu sections such as Espresso, Filter, Pastry", - "default": [], - "x-editor": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Section Name", - "description": "Section heading (e.g. \"Espresso\")", - "x-editor": "text" - }, - "items": { - "type": "array", - "title": "Items", - "description": "Items in this section", - "x-editor": "collection", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name", - "description": "Item name (e.g. \"Flat White\")", - "x-editor": "text" - }, - "price": { - "type": "string", - "title": "Price", - "description": "Price (e.g. \"5.50\")", - "x-editor": "text" - }, - "note": { - "type": "string", - "title": "Note", - "description": "Optional descriptive line (e.g. tasting notes)", - "x-editor": "text" - }, - "allergens": { - "type": "string", - "title": "Allergens", - "description": "Free-text allergen list (e.g. \"contains dairy, gluten\")", - "x-editor": "text" - } - }, - "required": ["name"] - } - } - }, - "required": ["name"] - } - } - } -} diff --git a/blocks/roast_profile.ninjatpl b/blocks/roast_profile.ninjatpl new file mode 100644 index 0000000..3f4ea2f --- /dev/null +++ b/blocks/roast_profile.ninjatpl @@ -0,0 +1,26 @@ +
+
+
+
+
+
+ {% if origin %}

{{ origin }}

{% endif %} + {% if name %}

{{ name }}

{% endif %} + {% if producer %}

{{ producer }}

{% endif %} +
+ {% if roastLevel %}{{ roastLevel }}{% endif %} +
+ {% if notes %}
{{ notes|safe }}
{% endif %} +
+ {% if process %}
Process
{{ process }}
{% endif %} + {% if varietal %}
Varietal
{{ varietal }}
{% endif %} + {% if altitude %}
Altitude
{{ altitude }}
{% endif %} + {% if harvest %}
Harvest
{{ harvest }}
{% endif %} +
+
+
+ {% if image %}{% img image alt=name|default:"Roast profile" class="h-full w-full object-cover" %}{% else %}
Bean photo
{% endif %} +
+
+
+
diff --git a/blocks/roast_profile.schema.json b/blocks/roast_profile.schema.json new file mode 100644 index 0000000..27a1b04 --- /dev/null +++ b/blocks/roast_profile.schema.json @@ -0,0 +1,64 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Roast Profile", + "description": "Single-origin roastery spec card: origin, process, roast level and tasting notes with a circular roast stamp", + "type": "object", + "properties": { + "origin": { + "type": "string", + "title": "Origin / Kicker", + "description": "Hand-drawn line above the name (e.g. \"Single origin\")", + "x-editor": "text" + }, + "name": { + "type": "string", + "title": "Coffee Name", + "description": "e.g. \"Guji Highlands\"", + "x-editor": "text" + }, + "producer": { + "type": "string", + "title": "Producer / Farm", + "x-editor": "text" + }, + "roastLevel": { + "type": "string", + "title": "Roast Level (stamp)", + "description": "Short label shown in the circular stamp (e.g. \"Medium\")", + "x-editor": "text" + }, + "notes": { + "type": "string", + "title": "Tasting Notes", + "description": "Rich text tasting description", + "x-editor": "richtext" + }, + "process": { + "type": "string", + "title": "Process", + "description": "e.g. Washed, Natural, Honey", + "x-editor": "text" + }, + "varietal": { + "type": "string", + "title": "Varietal", + "x-editor": "text" + }, + "altitude": { + "type": "string", + "title": "Altitude", + "description": "e.g. \"1900-2100 masl\"", + "x-editor": "text" + }, + "harvest": { + "type": "string", + "title": "Harvest", + "x-editor": "text" + }, + "image": { + "type": "string", + "title": "Image", + "x-editor": "media" + } + } +} diff --git a/fonts.json b/fonts.json index fe51488..5985fd7 100644 --- a/fonts.json +++ b/fonts.json @@ -1 +1,26 @@ -[] +[ + { + "name": "Fraunces", + "family": "Fraunces", + "variants": [ + { "weight": "400", "style": "normal", "file": "fonts/fraunces-latin-400.woff2" }, + { "weight": "600", "style": "normal", "file": "fonts/fraunces-latin-600.woff2" } + ] + }, + { + "name": "Work Sans", + "family": "Work Sans", + "variants": [ + { "weight": "400", "style": "normal", "file": "fonts/worksans-latin-400.woff2" }, + { "weight": "600", "style": "normal", "file": "fonts/worksans-latin-600.woff2" } + ] + }, + { + "name": "Caveat", + "family": "Caveat", + "variants": [ + { "weight": "400", "style": "normal", "file": "fonts/caveat-latin-400.woff2" }, + { "weight": "700", "style": "normal", "file": "fonts/caveat-latin-700.woff2" } + ] + } +] diff --git a/manifest.yaml b/manifest.yaml index afe2102..ba4b013 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -1,95 +1,157 @@ -# Coffee theme — codeless .bnp manifest (WO-WZ-021 Phase B1). +# Coffee theme — codeless .bnp manifest (Wave A, WO-TF-013). # Synthesized into manifest.pb by `ninja plugin build` (no plugin.wasm). theme_presets: presets.json bundled_fonts: fonts.json master_pages: master_pages.json +required_icon_packs: + - lucide + - simple-icons + system_templates: - key: coffee title: Coffee - description: "Warm, hand-crafted theme for cafes, bakeries, and slow-craft makers" + description: "Warm, hand-crafted cafe and roastery theme — kraft paper, chalkboard menus, doodles and stamps." page_templates: - system: coffee key: default title: Default - description: "Header + main + footer with warm paper background" + description: "Header + main + footer over warm paper grain." slots: [header, main, footer] - system: coffee key: landing title: Landing - description: "Hero pour + featured menu, big imagery" + description: "Hero pour, featured menu, story and invitation." slots: [hero, menu, story, cta, footer] - system: coffee key: article title: Article - description: "Narrow narrative column for journal / recipes" + description: "Narrow narrative column with drop-cap for journal and recipes." slots: [header, main, footer] - system: coffee key: full-width title: Full Width - description: "Edge-to-edge gallery / interior shots" + description: "Edge-to-edge gallery and interior shots." slots: [header, main, footer] - -template_overrides: - - { template: coffee, block: heading } - - { template: coffee, block: text } - - { template: coffee, block: button } - - { template: coffee, block: image } + - system: coffee + key: blog-index + title: Blog Index + description: "Blog hero, featured posts and a post grid." + slots: [header, featured, main, footer] + - system: coffee + key: contact + title: Contact + description: "Contact form, hours and location." + slots: [header, main, footer] + - system: coffee + key: auth + title: Auth + description: "Centered card for login, register and password reset." + slots: [main, footer] email_wrappers: - coffee +template_overrides: + - { template: coffee, block: announcement-bar } + - { template: coffee, block: audio-embed } + - { template: coffee, block: auth-form } + - { template: coffee, block: author-bio } + - { template: coffee, block: author-bio-hero } + - { template: coffee, block: auth-status } + - { template: coffee, block: blog-hero } + - { template: coffee, block: breadcrumbs } + - { template: coffee, block: button } + - { template: coffee, block: card } + - { template: coffee, block: category-list } + - { template: coffee, block: contact-card } + - { template: coffee, block: contact-form } + - { template: coffee, block: countdown } + - { template: coffee, block: cta } + - { template: coffee, block: divider } + - { template: coffee, block: event-list } + - { template: coffee, block: faq } + - { template: coffee, block: featured-posts } + - { template: coffee, block: feature-grid } + - { template: coffee, block: footer } + - { template: coffee, block: gallery } + - { template: coffee, block: heading } + - { template: coffee, block: hero } + - { template: coffee, block: hours-location } + - { template: coffee, block: image } + - { template: coffee, block: logo-strip } + - { template: coffee, block: menu-list } + - { template: coffee, block: navbar } + - { template: coffee, block: newsletter-signup } + - { template: coffee, block: page-suggestions } + - { template: coffee, block: password-reset-form } + - { template: coffee, block: popular-posts } + - { template: coffee, block: post-hero } + - { template: coffee, block: post-metadata } + - { template: coffee, block: pricing } + - { template: coffee, block: quote } + - { template: coffee, block: related-posts } + - { template: coffee, block: rich-section } + - { template: coffee, block: rich-text } + - { template: coffee, block: sidebar-nav } + - { template: coffee, block: social-links } + - { template: coffee, block: stats } + - { template: coffee, block: team } + - { template: coffee, block: testimonial } + - { template: coffee, block: text } + - { template: coffee, block: timeline } + - { template: coffee, block: utility-bar } + - { template: coffee, block: video-embed } + css: input_css_append: | /* Coffee theme styles * - * Uses the 19 shadcn-style HSL token CSS variables (--background, - * --foreground, --primary, --accent, --border, --muted, --card, ...) via - * `hsl(var(--token))`. Font families are resolved through the BlockNinja font - * variables (--font-heading, --font-body, --font-mono) with fallback stacks - * derived from the spec §3 typography list. + * Dual-mode via the 19 shadcn-style HSL token CSS variables (--background, + * --foreground, --primary, --accent, --border, --muted, --card, ...) consumed + * as hsl(var(--token)). No literal colors. Font families resolve ONLY through + * the BlockNinja font variables (--font-heading, --font-body, --font-mono) with + * the fallback stacks below — never hardcoded, so the admin font picker works. */ - /* --- Font-family fallbacks --------------------------------------------- - * - * Templates use the variable form; the second argument is the fallback the - * site shows before the admin assigns fonts via the typography picker. - */ :root { --coffee-heading-fallback: "Fraunces", "Playfair Display", Georgia, "Times New Roman", serif; - --coffee-body-fallback: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --coffee-body-fallback: "Work Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + --coffee-hand-fallback: "Caveat", "Segoe Print", "Bradley Hand", cursive; --coffee-mono-fallback: "JetBrains Mono", "Fira Code", Menlo, Consolas, monospace; } - /* --- Paper grain background -------------------------------------------- - * - * Inline SVG noise overlay applied as the body background. Keeps file size - * tiny and palette-neutral so it works with all three presets. - */ + /* --- Paper grain background --------------------------------------------- */ body.coffee-paper { background-color: hsl(var(--background)); background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cfilter id='paper-grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.18 0 0 0 0 0.13 0 0 0 0 0.09 0 0 0 0.07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23paper-grain)'/%3E%3C/svg%3E"); background-repeat: repeat; } - /* --- Headings ----------------------------------------------------------- */ + /* --- Type roles --------------------------------------------------------- */ .coffee-display { font-family: var(--font-heading, var(--coffee-heading-fallback)); font-feature-settings: "liga" 1, "dlig" 1; letter-spacing: -0.01em; } - .coffee-body { font-family: var(--font-body, var(--coffee-body-fallback)); line-height: 1.65; } - .coffee-mono { font-family: var(--font-mono, var(--coffee-mono-fallback)); } + /* Hand-drawn accents (badges, stamps, captions). Routed through --font-heading + * with a Caveat fallback: unassigned it renders Caveat; if the admin sets a + * heading font the accents follow it (the 3-slot model working as intended). */ + .coffee-hand { + font-family: var(--font-heading, var(--coffee-hand-fallback)); + letter-spacing: 0.01em; + line-height: 1.15; + } - /* --- Doodle underline (heading override) -------------------------------- */ + /* --- Doodle underline --------------------------------------------------- */ .coffee-doodle-underline { background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12' preserveAspectRatio='none'%3E%3Cpath d='M2 8 Q 20 2 40 7 T 80 6 T 118 7' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' opacity='0.55'/%3E%3C/svg%3E"); background-repeat: no-repeat; @@ -98,7 +160,7 @@ css: padding-bottom: 0.18em; } - /* --- Drop-cap (text override / article body) ---------------------------- */ + /* --- Drop-cap ----------------------------------------------------------- */ .coffee-dropcap > p:first-of-type::first-letter { font-family: var(--font-heading, var(--coffee-heading-fallback)); font-size: 4em; @@ -108,7 +170,7 @@ css: color: hsl(var(--primary)); } - /* --- Kraft-tag button --------------------------------------------------- */ + /* --- Kraft-tag button (stamp press on hover) ---------------------------- */ .kraft-tag { position: relative; display: inline-flex; @@ -122,22 +184,29 @@ css: font-family: var(--font-body, var(--coffee-body-fallback)); font-weight: 500; letter-spacing: 0.02em; - box-shadow: 0 1px 0 hsl(var(--border)); + box-shadow: 0 2px 0 hsl(var(--border)); transition: transform 120ms ease, box-shadow 120ms ease; cursor: pointer; } - .kraft-tag:hover { - transform: rotate(-1.2deg); - box-shadow: 0 2px 0 hsl(var(--border)); + transform: translateY(1px) rotate(-1.2deg); + box-shadow: 0 1px 0 hsl(var(--border)); } - .kraft-tag:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 3px; } + .kraft-tag--ghost { + background-color: transparent; + color: hsl(var(--primary)); + box-shadow: none; + border-style: dashed; + } + .kraft-tag--ghost:hover { + background-color: hsl(var(--muted)); + } - /* --- Torn-edge utility -------------------------------------------------- */ + /* --- Torn-paper edges --------------------------------------------------- */ .coffee-torn-top { -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 12 L0 6 Q 5 2 10 5 T 20 4 T 30 6 T 40 3 T 50 5 T 60 4 T 70 5 T 80 3 T 90 5 T 100 4 L100 12 Z' fill='black'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 12 L0 6 Q 5 2 10 5 T 20 4 T 30 6 T 40 3 T 50 5 T 60 4 T 70 5 T 80 3 T 90 5 T 100 4 L100 12 Z' fill='black'/%3E%3C/svg%3E"); @@ -146,7 +215,6 @@ css: -webkit-mask-size: 100% 100%; mask-size: 100% 100%; } - .coffee-torn-bottom { -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 6 Q 95 10 90 7 T 80 8 T 70 6 T 60 9 T 50 7 T 40 8 T 30 7 T 20 9 T 10 7 T 0 8 Z' fill='black'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0 L100 0 L100 6 Q 95 10 90 7 T 80 8 T 70 6 T 60 9 T 50 7 T 40 8 T 30 7 T 20 9 T 10 7 T 0 8 Z' fill='black'/%3E%3C/svg%3E"); @@ -156,25 +224,40 @@ css: mask-size: 100% 100%; } - /* --- Coffee surfaces ---------------------------------------------------- */ + /* --- Surfaces ----------------------------------------------------------- */ .coffee-card { background-color: hsl(var(--card)); color: hsl(var(--card-foreground)); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; } - .coffee-frame { border: 1px solid hsl(var(--border)); background-color: hsl(var(--card)); } - .coffee-pencil-rule { border-color: hsl(var(--border)); border-style: solid; } - /* --- Today highlight ---------------------------------------------------- */ + /* --- Chalkboard menu panel (inverts foreground/background for a hung board; + * light mode = dark board + cream chalk, dark mode = light menu paper) --- */ + .coffee-chalkboard { + position: relative; + background-color: hsl(var(--foreground)); + color: hsl(var(--background)); + border-radius: 0.5rem; + box-shadow: inset 0 0 0 3px hsl(var(--background) / 0.12), inset 0 0 0 4px hsl(var(--foreground)); + } + .coffee-chalk-rule { + border-color: hsl(var(--background) / 0.28); + border-style: solid; + } + .coffee-chalk-muted { + color: hsl(var(--background) / 0.72); + } + + /* --- Hours: today highlight --------------------------------------------- */ .coffee-hours-today { background-color: hsl(var(--accent) / 0.15); color: hsl(var(--accent-foreground)); @@ -182,14 +265,108 @@ css: padding-left: 0.75rem; } - /* --- Price typography --------------------------------------------------- */ + /* --- Price + spec chips ------------------------------------------------- */ .coffee-price { font-family: var(--font-mono, var(--coffee-mono-fallback)); font-variant-numeric: tabular-nums; color: hsl(var(--accent)); } + .coffee-chip { + display: inline-flex; + align-items: center; + gap: 0.35rem; + padding: 0.3rem 0.7rem; + border: 1px dashed hsl(var(--border)); + border-radius: 9999px; + background-color: hsl(var(--muted)); + color: hsl(var(--foreground)); + font-family: var(--font-body, var(--coffee-body-fallback)); + font-size: 0.85rem; + } - /* --- Doodle pin overlay for location card ------------------------------- */ + /* --- Circular stamp / badge (press on hover) ---------------------------- */ + .coffee-stamp { + display: inline-flex; + align-items: center; + justify-content: center; + width: 4.25rem; + height: 4.25rem; + border-radius: 9999px; + background-color: hsl(var(--accent)); + color: hsl(var(--accent-foreground)); + border: 2px solid hsl(var(--accent-foreground) / 0.35); + box-shadow: inset 0 0 0 3px hsl(var(--accent)); + font-family: var(--font-heading, var(--coffee-hand-fallback)); + font-size: 0.95rem; + text-align: center; + line-height: 1.05; + transform: rotate(-6deg); + transition: transform 140ms ease; + } + .coffee-stamp:hover { + transform: rotate(-6deg) scale(0.94); + } + .coffee-stamp-sm { + width: 2.25rem; + height: 2.25rem; + font-size: 1rem; + transform: rotate(-4deg); + box-shadow: none; + } + + /* --- Loyalty punch stamps ----------------------------------------------- */ + .coffee-punch { + display: inline-flex; + align-items: center; + justify-content: center; + aspect-ratio: 1 / 1; + border-radius: 9999px; + border: 2px dashed hsl(var(--border)); + color: hsl(var(--muted-foreground)); + } + .coffee-punch-on { + border-style: solid; + border-color: hsl(var(--accent)); + background-color: hsl(var(--accent) / 0.15); + color: hsl(var(--accent)); + transform: rotate(-5deg); + } + .coffee-punch-reward { + border-color: hsl(var(--primary)); + background-color: hsl(var(--primary) / 0.12); + color: hsl(var(--primary)); + } + + /* --- Location pin ------------------------------------------------------- */ .coffee-pin { color: hsl(var(--accent)); } + + /* --- Doodle divider draw-in --------------------------------------------- */ + .coffee-doodle-draw path, + .coffee-doodle-draw ellipse, + .coffee-doodle-draw circle { + stroke-dasharray: 240; + stroke-dashoffset: 240; + animation: coffee-draw 1.4s ease forwards; + } + + @keyframes coffee-draw { + to { stroke-dashoffset: 0; } + } + + /* --- Motion safety: static fallback ------------------------------------- */ + @media (prefers-reduced-motion: reduce) { + .kraft-tag, + .coffee-stamp, + .coffee-punch-on { transition: none; } + .kraft-tag:hover, + .coffee-stamp:hover { transform: none; } + .coffee-doodle-draw path, + .coffee-doodle-draw ellipse, + .coffee-doodle-draw circle { + stroke-dasharray: none; + stroke-dashoffset: 0; + animation: none; + } + } diff --git a/master_pages.json b/master_pages.json index 74349ff..d9158a4 100644 --- a/master_pages.json +++ b/master_pages.json @@ -2,12 +2,11 @@ { "key": "coffee:default-master", "title": "Coffee Default Master", - "page_templates": ["default", "article"], + "page_templates": ["default", "article", "full-width", "contact"], "blocks": [ - { "block_key": "navbar", "title": "Main Navigation", "content": { "menuName": "main" }, "slot": "header", "sort_order": 0 }, - { "block_key": "coffee:hours_strip", "title": "Hours Strip", "content": { "todayLabel": "Today" }, "slot": "header", "sort_order": 1 }, + { "block_key": "navbar", "title": "Main Navigation", "content": { "menuName": "main", "companyName": "Ritual Coffee" }, "slot": "header", "sort_order": 0 }, { "block_key": "slot", "title": "Main Content", "content": { "slotName": "main", "placeholder": "Pour something in here" }, "slot": "main", "sort_order": 0 }, - { "block_key": "coffee:footer", "title": "Site Footer", "content": { "showLocation": true }, "slot": "footer", "sort_order": 0 } + { "block_key": "footer", "title": "Site Footer", "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily." }, "slot": "footer", "sort_order": 0 } ] }, { @@ -15,12 +14,32 @@ "title": "Coffee Landing Master", "page_templates": ["landing"], "blocks": [ - { "block_key": "navbar", "title": "Main Navigation", "content": { "menuName": "main" }, "slot": "header", "sort_order": 0 }, - { "block_key": "slot", "title": "Hero Slot", "content": { "slotName": "hero", "placeholder": "Drop a hero block" }, "slot": "hero", "sort_order": 0 }, - { "block_key": "coffee:featured_pour", "title": "Featured Pour", "content": {}, "slot": "menu", "sort_order": 0 }, - { "block_key": "slot", "title": "Story Slot", "content": { "slotName": "story", "placeholder": "Tell the story" }, "slot": "story", "sort_order": 0 }, - { "block_key": "coffee:location_card", "title": "Location Card", "content": {}, "slot": "cta", "sort_order": 0 }, - { "block_key": "coffee:footer", "title": "Site Footer", "content": { "showLocation": true }, "slot": "footer", "sort_order": 0 } + { "block_key": "navbar", "title": "Main Navigation", "content": { "menuName": "main", "companyName": "Ritual Coffee" }, "slot": "hero", "sort_order": 0 }, + { "block_key": "slot", "title": "Hero", "content": { "slotName": "hero", "placeholder": "Drop a hero block" }, "slot": "hero", "sort_order": 1 }, + { "block_key": "slot", "title": "Menu", "content": { "slotName": "menu", "placeholder": "Feature the menu" }, "slot": "menu", "sort_order": 0 }, + { "block_key": "slot", "title": "Story", "content": { "slotName": "story", "placeholder": "Tell the story" }, "slot": "story", "sort_order": 0 }, + { "block_key": "slot", "title": "Call To Action", "content": { "slotName": "cta", "placeholder": "Invite them in" }, "slot": "cta", "sort_order": 0 }, + { "block_key": "footer", "title": "Site Footer", "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily." }, "slot": "footer", "sort_order": 0 } + ] + }, + { + "key": "coffee:blog-master", + "title": "Coffee Blog Master", + "page_templates": ["blog-index"], + "blocks": [ + { "block_key": "navbar", "title": "Main Navigation", "content": { "menuName": "main", "companyName": "Ritual Coffee" }, "slot": "header", "sort_order": 0 }, + { "block_key": "slot", "title": "Featured", "content": { "slotName": "featured", "placeholder": "Featured posts" }, "slot": "featured", "sort_order": 0 }, + { "block_key": "slot", "title": "Posts", "content": { "slotName": "main", "placeholder": "Post grid" }, "slot": "main", "sort_order": 0 }, + { "block_key": "footer", "title": "Site Footer", "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily." }, "slot": "footer", "sort_order": 0 } + ] + }, + { + "key": "coffee:auth-master", + "title": "Coffee Auth Master", + "page_templates": ["auth"], + "blocks": [ + { "block_key": "slot", "title": "Auth Form", "content": { "slotName": "main", "placeholder": "Auth form" }, "slot": "main", "sort_order": 0 }, + { "block_key": "slot", "title": "Footer Note", "content": { "slotName": "footer", "placeholder": "Small print" }, "slot": "footer", "sort_order": 0 } ] } ] diff --git a/plugin.mod b/plugin.mod index 99a6283..f923636 100644 --- a/plugin.mod +++ b/plugin.mod @@ -7,3 +7,4 @@ description = "Warm, hand-crafted theme for cafes, bakeries, and slow-craft make kind = "theme" categories = ["templates"] tags = ["warm", "hospitality", "cafe", "bakery", "food", "handcraft", "organic", "artisan", "menu"] +required_icon_packs = ["lucide", "simple-icons"] diff --git a/presets.json b/presets.json index 9a12e66..57c2aa1 100644 --- a/presets.json +++ b/presets.json @@ -2,9 +2,9 @@ { "id": "morning-pour", "name": "Morning Pour", - "description": "Cream paper, espresso ink, terracotta accent", + "description": "Cream paper and espresso ink with a terracotta accent. Daylight cafe.", "theme": { - "mode": "light", + "mode": "both", "lightColors": { "background": "36 30% 96%", "foreground": "25 35% 18%", @@ -52,9 +52,9 @@ { "id": "dark-roast", "name": "Dark Roast", - "description": "Espresso-deep base with copper accent for evening cafes and roasteries", + "description": "Espresso-deep base with a copper accent. Evening roastery.", "theme": { - "mode": "dark", + "mode": "both", "lightColors": { "background": "36 30% 96%", "foreground": "25 35% 18%", @@ -102,9 +102,9 @@ { "id": "kraft-cream", "name": "Kraft Cream", - "description": "Warmer ivory paper with deeper terracotta accent", + "description": "Warmer ivory paper with a deeper terracotta accent. Bakery counter.", "theme": { - "mode": "light", + "mode": "both", "lightColors": { "background": "32 35% 92%", "foreground": "22 40% 16%", @@ -148,5 +148,105 @@ "ring": "16 50% 55%" } } + }, + { + "id": "chalkboard", + "name": "Chalkboard", + "description": "Slate-black menu board with chalk-white lettering and a chalk-cream accent.", + "theme": { + "mode": "both", + "lightColors": { + "background": "40 20% 94%", + "foreground": "200 12% 16%", + "card": "40 18% 90%", + "cardForeground": "200 12% 16%", + "popover": "40 18% 90%", + "popoverForeground": "200 12% 16%", + "primary": "195 22% 26%", + "primaryForeground": "40 30% 96%", + "secondary": "40 16% 86%", + "secondaryForeground": "200 12% 16%", + "muted": "40 14% 88%", + "mutedForeground": "200 10% 34%", + "accent": "28 55% 48%", + "accentForeground": "40 30% 96%", + "destructive": "0 68% 46%", + "destructiveForeground": "40 30% 96%", + "border": "200 10% 78%", + "input": "200 10% 78%", + "ring": "195 22% 26%" + }, + "darkColors": { + "background": "195 18% 12%", + "foreground": "40 34% 92%", + "card": "195 16% 15%", + "cardForeground": "40 34% 92%", + "popover": "195 16% 15%", + "popoverForeground": "40 34% 92%", + "primary": "40 34% 90%", + "primaryForeground": "195 18% 12%", + "secondary": "195 14% 20%", + "secondaryForeground": "40 34% 92%", + "muted": "195 12% 18%", + "mutedForeground": "40 18% 72%", + "accent": "30 70% 62%", + "accentForeground": "195 18% 12%", + "destructive": "0 62% 55%", + "destructiveForeground": "40 34% 92%", + "border": "195 12% 24%", + "input": "195 12% 22%", + "ring": "40 34% 90%" + } + } + }, + { + "id": "matcha-oat", + "name": "Matcha and Oat", + "description": "Soft sage green and oat cream for tea rooms and matcha bars.", + "theme": { + "mode": "both", + "lightColors": { + "background": "44 32% 94%", + "foreground": "120 15% 18%", + "card": "44 28% 91%", + "cardForeground": "120 15% 18%", + "popover": "44 28% 91%", + "popoverForeground": "120 15% 18%", + "primary": "132 26% 32%", + "primaryForeground": "44 32% 94%", + "secondary": "80 18% 84%", + "secondaryForeground": "120 15% 18%", + "muted": "80 16% 87%", + "mutedForeground": "120 12% 34%", + "accent": "36 60% 48%", + "accentForeground": "44 32% 94%", + "destructive": "0 68% 46%", + "destructiveForeground": "44 32% 94%", + "border": "90 14% 76%", + "input": "90 14% 76%", + "ring": "132 26% 32%" + }, + "darkColors": { + "background": "130 16% 11%", + "foreground": "44 30% 91%", + "card": "130 14% 14%", + "cardForeground": "44 30% 91%", + "popover": "130 14% 14%", + "popoverForeground": "44 30% 91%", + "primary": "128 34% 60%", + "primaryForeground": "130 16% 11%", + "secondary": "130 12% 20%", + "secondaryForeground": "44 30% 91%", + "muted": "130 10% 18%", + "mutedForeground": "80 14% 68%", + "accent": "38 72% 60%", + "accentForeground": "130 16% 11%", + "destructive": "0 60% 55%", + "destructiveForeground": "44 30% 91%", + "border": "130 10% 24%", + "input": "130 10% 22%", + "ring": "128 34% 60%" + } + } } ] diff --git a/seed/seed.json b/seed/seed.json new file mode 100644 index 0000000..ed6acea --- /dev/null +++ b/seed/seed.json @@ -0,0 +1,177 @@ +{ + "demo": true, + "settings": { + "merge": { + "site_title": "Ritual Coffee", + "site_description": "A neighbourhood cafe and small-batch roastery." + } + }, + "data_tables": [ + { + "key": "contact_submissions", + "name": "Contact Submissions", + "description": "Messages sent from the cafe contact form.", + "primary_key": "id", + "columns": [ + { "key": "name", "label": "Name", "type": "text", "required": true }, + { "key": "email", "label": "Email", "type": "email", "required": true }, + { "key": "reason", "label": "Reason", "type": "text", "required": false }, + { "key": "message", "label": "Message", "type": "text", "required": true } + ] + } + ], + "menu_items": [ + { "menu": "main", "label": "Home", "page_slug": "/", "sort_order": 0 }, + { "menu": "main", "label": "Menu", "url": "/#menu", "sort_order": 1 }, + { "menu": "main", "label": "About", "page_slug": "/about", "sort_order": 2 }, + { "menu": "main", "label": "Journal", "page_slug": "/blog", "sort_order": 3 }, + { "menu": "main", "label": "Visit", "page_slug": "/contact", "sort_order": 4 } + ], + "pages": [ + { + "slug": "/", + "title": "Ritual Coffee", + "template_key": "default", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Open from 7", "headline": "Coffee worth slowing down for", "subheadline": "We roast in small batches and pull every shot to order.", "ctaPrimary": { "text": "See the menu", "url": "/#menu" }, "ctaSecondary": { "text": "Find us", "url": "/contact" }, "minHeight": "50vh" } }, + { "block_key": "coffee:featured_pour", "title": "Featured Pour", "slot": "main", "sort_order": 1, "content": { "label": "This week", "origin": "Single origin", "name": "Guji Highlands", "tasting": "

Bright and floral. Notes of peach, jasmine and brown sugar.

", "price": "6.00", "currency": "$" } }, + { "block_key": "menu-list", "title": "Menu", "slot": "main", "sort_order": 2, "content": { "heading": "On the board", "intro": "Prices are for takeaway. Add fifty cents to dine in.", "currency": "$", "columns": 2, "sections": [ + { "title": "Espresso", "items": [ + { "name": "Espresso", "description": "Double shot", "price": "4.00" }, + { "name": "Flat white", "price": "5.00" }, + { "name": "Latte", "price": "5.50" }, + { "name": "Batch filter", "description": "Rotating single origin", "price": "5.00", "badges": [{ "label": "Filter" }] } + ] }, + { "title": "Kitchen", "items": [ + { "name": "Butter croissant", "price": "5.50" }, + { "name": "Sourdough toast", "description": "With jam or honey", "price": "6.00" }, + { "name": "Bacon and egg roll", "price": "12.00" }, + { "name": "Granola bowl", "description": "Oats, yoghurt, seasonal fruit", "price": "11.00", "badges": [{ "label": "V" }] } + ] } + ] } }, + { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 3, "content": { "heading": "Come and sit", "address": "12 Baker Lane\nNorthbridge", "phone": "08 1234 5678", "hours": [ + { "day": "Monday", "hours": "7:00 - 15:00" }, + { "day": "Tuesday", "hours": "7:00 - 15:00" }, + { "day": "Wednesday", "hours": "7:00 - 15:00" }, + { "day": "Thursday", "hours": "7:00 - 15:00" }, + { "day": "Friday", "hours": "7:00 - 16:00" }, + { "day": "Saturday", "hours": "8:00 - 16:00" }, + { "day": "Sunday", "closed": true } + ] } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "address": "12 Baker Lane, Northbridge", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/about", + "title": "About", + "template_key": "default", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "hero", "title": "Hero", "slot": "main", "sort_order": 0, "content": { "template": "centered", "eyebrow": "Our story", "headline": "One roaster, one room", "subheadline": "We started on a single machine and never grew out of caring about it.", "minHeight": "auto" } }, + { "block_key": "rich-section", "title": "Story", "slot": "main", "sort_order": 1, "content": { "eyebrow": "Why we roast", "heading": "Fresh, not fast", "body": "

We roast twice a week and rest every batch before it hits the hopper. That means the coffee you drink was roasted days ago, not months.

Everything on the board is made in-house. The croissants are laminated overnight. The jam is cooked in small pots on the back bench.

", "mediaPosition": "right" } }, + { "block_key": "coffee:brew_guide", "title": "Brew Guide", "slot": "main", "sort_order": 2, "content": { "kicker": "Make it at home", "method": "V60 pour-over", "intro": "This is how we brew filter on the bar. Scale it up or down by the ratio.", "ratio": "1:16", "grind": "Medium-fine", "water": "300g", "temperature": "94C", "time": "3:00", "steps": [ + { "title": "Rinse and dose", "text": "Rinse the paper. Add 19g of coffee and level the bed." }, + { "title": "Bloom", "text": "Pour 45g of water. Wait 40 seconds." }, + { "title": "Pour in stages", "text": "Pour in slow circles to 300g by two minutes." }, + { "title": "Draw down", "text": "Let it finish by three minutes. Swirl and serve." } + ] } }, + { "block_key": "team", "title": "Team", "slot": "main", "sort_order": 3, "content": { "heading": "Behind the bar", "members": [ + { "name": "Mara", "role": "Head roaster", "bio": "Runs the roaster and tastes every batch." }, + { "name": "Theo", "role": "Baker", "bio": "In before the birds. Owns the croissants." }, + { "name": "Priya", "role": "Barista", "bio": "Knows your order before you say it." } + ] } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/blog", + "title": "Journal", + "template_key": "blog-index", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "blog-hero", "title": "Journal Hero", "slot": "featured", "sort_order": 0, "content": { "title": "The Journal", "subtitle": "Notes from the roaster and the bar." } }, + { "block_key": "card", "title": "Post: Guji", "slot": "main", "sort_order": 0, "content": { "title": "Meet the Guji Highlands", "text": "Our new single origin is bright, floral and easy to love.", "link": "/blog/meet-the-guji-highlands", "linkLabel": "Read on" } }, + { "block_key": "card", "title": "Post: Roasting week", "slot": "main", "sort_order": 1, "content": { "title": "A week on the roaster", "text": "How we plan a roasting week and why we rest every batch.", "link": "/blog/a-week-on-the-roaster", "linkLabel": "Read on" } }, + { "block_key": "card", "title": "Post: Filter", "slot": "main", "sort_order": 2, "content": { "title": "How we brew filter", "text": "The recipe we use on the bar, step by step.", "link": "/blog/how-we-brew-filter", "linkLabel": "Read on" } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/blog/meet-the-guji-highlands", + "parent_slug": "/blog", + "title": "Meet the Guji Highlands", + "template_key": "article", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "Meet the Guji Highlands" } }, + { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

Our new single origin comes from the Guji zone in southern Ethiopia. It is washed, which keeps it clean and bright.

We taste peach and jasmine up front, then a soft brown sugar finish. It works as espresso and shines as filter.

Come in this week and try it on the bar.

" } }, + { "block_key": "coffee:roast_profile", "title": "Roast Profile", "slot": "main", "sort_order": 2, "content": { "origin": "Single origin", "name": "Guji Highlands", "producer": "Smallholders, Guji zone", "roastLevel": "Medium", "notes": "

Peach, jasmine, brown sugar.

", "process": "Washed", "varietal": "Heirloom", "altitude": "1900-2100 masl" } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/blog/a-week-on-the-roaster", + "parent_slug": "/blog", + "title": "A week on the roaster", + "template_key": "article", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "A week on the roaster" } }, + { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

We roast on Tuesdays and Fridays. Each batch is small, and we rest it before it goes on the bar.

Resting lets the coffee settle after roasting. Pulled too soon, it tastes sharp and gassy. Given a few days, it opens up.

That is why the date on the bag matters more than the date on the door.

" } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/blog/how-we-brew-filter", + "parent_slug": "/blog", + "title": "How we brew filter", + "template_key": "article", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "heading", "title": "Title", "slot": "main", "sort_order": 0, "content": { "level": 1, "text": "How we brew filter" } }, + { "block_key": "text", "title": "Body", "slot": "main", "sort_order": 1, "content": { "text": "

Filter is the clearest way to taste a coffee. We keep the recipe simple so you can repeat it at home.

Weigh the coffee and the water. Keep the grind even. Pour in slow circles and give it room to draw down.

" } }, + { "block_key": "coffee:brew_guide", "title": "Brew Guide", "slot": "main", "sort_order": 2, "content": { "kicker": "The recipe", "method": "V60 pour-over", "ratio": "1:16", "grind": "Medium-fine", "water": "300g", "temperature": "94C", "time": "3:00", "steps": [ + { "title": "Rinse and dose", "text": "Rinse the paper. Add 19g and level the bed." }, + { "title": "Bloom", "text": "Pour 45g. Wait 40 seconds." }, + { "title": "Pour", "text": "Slow circles to 300g by two minutes." }, + { "title": "Finish", "text": "Draw down by three minutes. Serve." } + ] } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/contact", + "title": "Visit", + "template_key": "contact", + "blocks": [ + { "block_key": "navbar", "title": "Navigation", "slot": "header", "sort_order": 0, "content": { "menuName": "main", "companyName": "Ritual Coffee", "ctaLabel": "Order ahead", "ctaUrl": "/contact" } }, + { "block_key": "hours-location", "title": "Hours", "slot": "main", "sort_order": 0, "content": { "heading": "Find us", "address": "12 Baker Lane\nNorthbridge", "phone": "08 1234 5678", "hours": [ + { "day": "Monday", "hours": "7:00 - 15:00" }, + { "day": "Tuesday", "hours": "7:00 - 15:00" }, + { "day": "Wednesday", "hours": "7:00 - 15:00" }, + { "day": "Thursday", "hours": "7:00 - 15:00" }, + { "day": "Friday", "hours": "7:00 - 16:00" }, + { "day": "Saturday", "hours": "8:00 - 16:00" }, + { "day": "Sunday", "closed": true } + ] } }, + { "block_key": "contact-form", "title": "Contact Form", "slot": "main", "sort_order": 1, "content": { "heading": "Say hello", "description": "Booking a table for six or more? Send us a note and we will sort it.", "submitLabel": "Send message", "successMessage": "Thanks. We will get back to you soon.", "formConfig": { "targetTable": "contact_submissions" }, "fields": [ + { "name": "name", "label": "Name", "type": "text", "required": true, "width": "half" }, + { "name": "email", "label": "Email", "type": "email", "required": true, "width": "half" }, + { "name": "reason", "label": "Reason", "type": "text", "required": false, "width": "full" }, + { "name": "message", "label": "Message", "type": "textarea", "required": true, "width": "full" } + ] } }, + { "block_key": "footer", "title": "Footer", "slot": "footer", "sort_order": 0, "content": { "companyName": "Ritual Coffee", "tagline": "Small-batch coffee, baked fresh daily.", "email": "hello@ritual.coffee", "copyright": "Ritual Coffee" } } + ] + }, + { + "slug": "/login", + "title": "Login", + "template_key": "auth", + "blocks": [ + { "block_key": "auth-form", "title": "Auth Form", "slot": "main", "sort_order": 0, "content": { "default_tab": "login", "show_social": false } }, + { "block_key": "text", "title": "Footer Note", "slot": "footer", "sort_order": 0, "content": { "text": "

Members get first pick of new roasts.

" } } + ] + } + ] +} diff --git a/seed/workflows.json b/seed/workflows.json new file mode 100644 index 0000000..c3aad46 --- /dev/null +++ b/seed/workflows.json @@ -0,0 +1,25 @@ +{ + "workflows": [ + { + "key": "notify_admins_on_contact", + "name": "Notify admins on contact", + "description": "Email site admins when someone submits the cafe contact form.", + "enabled": true, + "trigger": { + "type": "row_inserted", + "table": "contact_submissions" + }, + "steps": [ + { + "type": "email", + "name": "Email admins", + "template": "Form Submission Notification", + "recipients": { + "mode": "admins", + "scope": "all" + } + } + ] + } + ] +} diff --git a/templates/coffee/article.ninjatpl b/templates/coffee/article.ninjatpl index 9214286..fc8881d 100644 --- a/templates/coffee/article.ninjatpl +++ b/templates/coffee/article.ninjatpl @@ -1,5 +1,5 @@ - + {{ head_html|safe }} {{ admin_banner_html|safe }} diff --git a/templates/coffee/auth.ninjatpl b/templates/coffee/auth.ninjatpl new file mode 100644 index 0000000..d9377a5 --- /dev/null +++ b/templates/coffee/auth.ninjatpl @@ -0,0 +1,19 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} +
+
+ + {% if site_settings.Logo %}{{ site_settings.LogoAlt|default:site_settings.Title }}{% else %}{{ site_settings.Title|default:"Coffee" }}{% endif %} + +
+ {% if slots.main %}{{ slots.main|safe }}{% else %}

No form assigned to this page.

{% endif %} +
+ {% if slots.footer %}
{{ slots.footer|safe }}
{% endif %} +
+
+ {{ body_end_html|safe }} + + diff --git a/templates/coffee/blog-index.ninjatpl b/templates/coffee/blog-index.ninjatpl new file mode 100644 index 0000000..7a59504 --- /dev/null +++ b/templates/coffee/blog-index.ninjatpl @@ -0,0 +1,15 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} +
{{ slots.header|safe }}
+
+ {% if title %}

{{ title }}

{% if page_meta.MetaDescription %}

{{ page_meta.MetaDescription }}

{% endif %}
{% endif %} + {% if slots.featured %}
{{ slots.featured|safe }}
{% endif %} + {% if slots.main %}
{{ slots.main|safe }}
{% else %}

No stories brewed yet.

{% endif %} +
+
{{ slots.footer|safe }}
+ {{ body_end_html|safe }} + + diff --git a/templates/coffee/contact.ninjatpl b/templates/coffee/contact.ninjatpl new file mode 100644 index 0000000..d468bae --- /dev/null +++ b/templates/coffee/contact.ninjatpl @@ -0,0 +1,13 @@ + + +{{ head_html|safe }} + + {{ admin_banner_html|safe }} +
{{ slots.header|safe }}
+
+ {% if slots.main %}{{ slots.main|safe }}{% else %}

Add a contact form and your hours.

{% endif %} +
+
{{ slots.footer|safe }}
+ {{ body_end_html|safe }} + + diff --git a/templates/coffee/default.ninjatpl b/templates/coffee/default.ninjatpl index 2604f5d..b2e07c5 100644 --- a/templates/coffee/default.ninjatpl +++ b/templates/coffee/default.ninjatpl @@ -1,11 +1,11 @@ - + {{ head_html|safe }} {{ admin_banner_html|safe }}
{{ slots.header|safe }}
-
- {% if slots.main %}{{ slots.main|safe }}{% else %}

Pour something in here.

{% endif %} +
+ {% if slots.main %}{{ slots.main|safe }}{% else %}

Pour something in here.

{% endif %}
{{ slots.footer|safe }}
{{ body_end_html|safe }} diff --git a/templates/coffee/full-width.ninjatpl b/templates/coffee/full-width.ninjatpl index 6217ba2..edc2771 100644 --- a/templates/coffee/full-width.ninjatpl +++ b/templates/coffee/full-width.ninjatpl @@ -1,5 +1,5 @@ - + {{ head_html|safe }} {{ admin_banner_html|safe }} diff --git a/templates/coffee/landing.ninjatpl b/templates/coffee/landing.ninjatpl index 3e19c1b..9247a91 100644 --- a/templates/coffee/landing.ninjatpl +++ b/templates/coffee/landing.ninjatpl @@ -1,5 +1,5 @@ - + {{ head_html|safe }} {{ admin_banner_html|safe }} diff --git a/templates/overrides/coffee/announcement-bar.ninjatpl b/templates/overrides/coffee/announcement-bar.ninjatpl new file mode 100644 index 0000000..f28ade7 --- /dev/null +++ b/templates/overrides/coffee/announcement-bar.ninjatpl @@ -0,0 +1,21 @@ +{# coffee announcement-bar — dismissable strip; dismissal persists in localStorage keyed by variant+message hash. #} +{% set anncls = "bg-accent/15 text-foreground" %} +{% if variant == "promo" %}{% set anncls = "bg-accent text-accent-foreground" %}{% elif variant == "alert" %}{% set anncls = "bg-destructive text-destructive-foreground" %}{% endif %} +
+
+

{{ message }}{% if linkText and linkUrl %} {{ linkText }}{% endif %}

+{% if dismissable %}{% endif %} +
+
+{% if dismissable %}{% endif %} diff --git a/templates/overrides/coffee/audio-embed.ninjatpl b/templates/overrides/coffee/audio-embed.ninjatpl new file mode 100644 index 0000000..09d813d --- /dev/null +++ b/templates/overrides/coffee/audio-embed.ninjatpl @@ -0,0 +1,15 @@ +
{% if artwork %}
{% img artwork alt=title|default:"" class="h-full w-full object-cover" %}
{% endif %}
{% if title %}

{{ title }}

{% endif %}{% if artist %}

{{ artist }}

{% endif %}
{% if download %} Download{% endif %}
diff --git a/templates/overrides/coffee/auth-form.ninjatpl b/templates/overrides/coffee/auth-form.ninjatpl new file mode 100644 index 0000000..a1c014b --- /dev/null +++ b/templates/overrides/coffee/auth-form.ninjatpl @@ -0,0 +1,36 @@ +{# coffee auth-form — combined login/register in kraft chrome. Endpoints and panel + ids match the platform auth flow (/api/auth/login, /api/auth/register, + #auth-message, #login-panel/#register-panel). Auth state via the auth_state + provider (auth.logged_in / auth.display_name). Captcha, when enabled, is + emitted by the platform auth path. #} +{% if auth.logged_in %} +
+

You are logged in as {{ auth.display_name }}

+ My account +
+{% else %} +{% set defaultTab = default_tab|default:"login" %} +
+
+
+ + +
+
+
+
+
+ +

Forgot password?

+
+
+
+
+
+
+
+ +
+
+
+{% endif %} diff --git a/templates/overrides/coffee/auth-status.ninjatpl b/templates/overrides/coffee/auth-status.ninjatpl new file mode 100644 index 0000000..5571626 --- /dev/null +++ b/templates/overrides/coffee/auth-status.ninjatpl @@ -0,0 +1,27 @@ +{# coffee auth-status — header login state. Auth state via the auth_state provider; + endpoints match the platform (/login, /login?tab=register, /api/auth/logout, + /api/auth/resend-verification). #} +{% if not auth.logged_in %} +
+ Login + Sign up +
+{% else %} +{% if not auth.email_verified %}
Please verify your email address.
{% endif %} +
+ + +
+ +{% endif %} diff --git a/templates/overrides/coffee/author-bio-hero.ninjatpl b/templates/overrides/coffee/author-bio-hero.ninjatpl new file mode 100644 index 0000000..55118fd --- /dev/null +++ b/templates/overrides/coffee/author-bio-hero.ninjatpl @@ -0,0 +1,20 @@ +{% if author %} +
+
+{% if showAvatar and author.avatar_url %}
{% img author.avatar_url alt=author.display_name class="h-full w-full object-cover" %}
{% endif %} +

{{ author.display_name }}

+{% if author.job_title or author.company %}

{{ author.job_title }}{% if author.job_title and author.company %} · {% endif %}{{ author.company }}

{% endif %} +{% if author.bio %}

{{ author.bio }}

{% endif %} +
+{% if showPostCount %}{{ author.post_count|default:0 }} post{% if author.post_count != 1 %}s{% endif %}{% endif %} +{% if author.location %}{{ author.location }}{% endif %} +
+{% if showSocial %}
+{% if author.website_url %}{% endif %} +{% if author.twitter_handle %}{% endif %} +{% if author.linkedin_url %}{% endif %} +{% if author.github_url %}{% endif %} +
{% endif %} +
+
+{% endif %} diff --git a/templates/overrides/coffee/author-bio.ninjatpl b/templates/overrides/coffee/author-bio.ninjatpl new file mode 100644 index 0000000..e633802 --- /dev/null +++ b/templates/overrides/coffee/author-bio.ninjatpl @@ -0,0 +1,12 @@ +{% if post.author_name %} + +{% endif %} diff --git a/templates/overrides/coffee/blog-hero.ninjatpl b/templates/overrides/coffee/blog-hero.ninjatpl new file mode 100644 index 0000000..c5692e6 --- /dev/null +++ b/templates/overrides/coffee/blog-hero.ninjatpl @@ -0,0 +1,22 @@ +
+
+
+{% if title %}

{{ title }}

{% endif %} +{% if subtitle %}

{{ subtitle }}

{% endif %} +
+{% if posts %} +
+{% for post in posts %} + +{% endfor %} +
+{% endif %} +
+
diff --git a/templates/overrides/coffee/breadcrumbs.ninjatpl b/templates/overrides/coffee/breadcrumbs.ninjatpl new file mode 100644 index 0000000..67d4440 --- /dev/null +++ b/templates/overrides/coffee/breadcrumbs.ninjatpl @@ -0,0 +1,12 @@ +{% set arrows = template == "arrows" %} + diff --git a/templates/overrides/coffee/button.ninjatpl b/templates/overrides/coffee/button.ninjatpl index 5747e56..239f4f0 100644 --- a/templates/overrides/coffee/button.ninjatpl +++ b/templates/overrides/coffee/button.ninjatpl @@ -1 +1,5 @@ -{% if url %}{{ text }}{% else %}{% endif %} +{% with align=align|default:"left" style=style|default:"primary" %} +
+{% if link %}{% if icon and iconPosition != "right" %}{% endif %}{{ label|default:"Learn more" }}{% if icon and iconPosition == "right" %}{% endif %}{% else %}{% endif %} +
+{% endwith %} diff --git a/templates/overrides/coffee/card.ninjatpl b/templates/overrides/coffee/card.ninjatpl new file mode 100644 index 0000000..6be4284 --- /dev/null +++ b/templates/overrides/coffee/card.ninjatpl @@ -0,0 +1,12 @@ +{% with layout=layout|default:"vertical" %} + +{% endwith %} diff --git a/templates/overrides/coffee/category-list.ninjatpl b/templates/overrides/coffee/category-list.ninjatpl new file mode 100644 index 0000000..ef3bdb5 --- /dev/null +++ b/templates/overrides/coffee/category-list.ninjatpl @@ -0,0 +1,17 @@ +{% set pills = style == "pills" %} +
+{% if heading %}

{{ heading }}

{% endif %} +{% if pills %} +
+{% for cat in categories %} +{{ cat.name }}{% if showCount %}{{ cat.post_count }}{% endif %} +{% endfor %} +
+{% else %} + +{% endif %} +
diff --git a/templates/overrides/coffee/contact-card.ninjatpl b/templates/overrides/coffee/contact-card.ninjatpl new file mode 100644 index 0000000..75423c2 --- /dev/null +++ b/templates/overrides/coffee/contact-card.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if description %}

{{ description }}

{% endif %} +
+ {% for channel in channels %} +
+ {% if channel.icon %}{% endif %} +
+ {% if channel.label %}
{{ channel.label }}
{% endif %} + {% if channel.value %}
{% if channel.link %}{{ channel.value }}{% else %}{{ channel.value }}{% endif %}
{% endif %} +
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/coffee/contact-form.ninjatpl b/templates/overrides/coffee/contact-form.ninjatpl new file mode 100644 index 0000000..2e3f6fc --- /dev/null +++ b/templates/overrides/coffee/contact-form.ninjatpl @@ -0,0 +1,39 @@ +{% with bid=_block_id|default:context.blockId %} +
+
+ {% if form.submitted %} +
+
+

{{ form.message|default:successMessage|default:"Thanks. Your message is on its way." }}

+
+ {% else %} + {% if heading %}

{{ heading }}

{% endif %} + {% if description %}

{{ description }}

{% endif %} + {% if form.errors._form %}
{{ form.errors._form }}
{% endif %} + {% with formAction="/api/blocks/"|add:bid|add:"/submit" formTarget="#contact-form-"|add:bid %} + {% form action=formAction hx_target=formTarget hx_swap="outerHTML" class="mt-8 grid grid-cols-1 gap-5 sm:grid-cols-2" %} + {% for field in fields %} +
+ {% if field.label %}{% endif %} + {% if field.type == "textarea" %} + + {% elif field.type == "select" %} + + {% else %} + + {% endif %} +
+ {% endfor %} + +
+ +
+ {% endform %} + {% endwith %} + {% endif %} +
+
+{% endwith %} diff --git a/templates/overrides/coffee/countdown.ninjatpl b/templates/overrides/coffee/countdown.ninjatpl new file mode 100644 index 0000000..3f0d30c --- /dev/null +++ b/templates/overrides/coffee/countdown.ninjatpl @@ -0,0 +1,42 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+
+
--{{ labelDays|default:"Days" }}
+
--{{ labelHours|default:"Hours" }}
+
--{{ labelMinutes|default:"Minutes" }}
+
--{{ labelSeconds|default:"Seconds" }}
+
+ +
+ +
+
+ diff --git a/templates/overrides/coffee/cta.ninjatpl b/templates/overrides/coffee/cta.ninjatpl new file mode 100644 index 0000000..0e55039 --- /dev/null +++ b/templates/overrides/coffee/cta.ninjatpl @@ -0,0 +1,14 @@ +
+
+
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if text %}

{{ text }}

{% endif %} +
+
+ {% if primaryUrl and primaryLabel %}{{ primaryLabel }}{% endif %} + {% if secondaryUrl and secondaryLabel %}{{ secondaryLabel }}{% endif %} +
+
+
+
diff --git a/templates/overrides/coffee/divider.ninjatpl b/templates/overrides/coffee/divider.ninjatpl new file mode 100644 index 0000000..44c34aa --- /dev/null +++ b/templates/overrides/coffee/divider.ninjatpl @@ -0,0 +1,17 @@ +{% with variant=variant|default:"line" width=width|default:"full" %} + +{% endwith %} diff --git a/templates/overrides/coffee/event-list.ninjatpl b/templates/overrides/coffee/event-list.ninjatpl new file mode 100644 index 0000000..016723a --- /dev/null +++ b/templates/overrides/coffee/event-list.ninjatpl @@ -0,0 +1,40 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} + {% if layout == "cards" %} +
+ {% for event in events %}{% if not (hidePast and event.past) %} +
+ {% if event.media %}
{% img event.media alt=event.title class="h-full w-full object-cover" %}
{% endif %} +
+
{{ event.start }}{% if event.end %} – {{ event.end }}{% endif %}{% if event.timezone %} {{ event.timezone }}{% endif %}
+

{{ event.title }}

+ {% if event.venue %}

{{ event.venue }}

{% endif %} + {% if event.description %}

{{ event.description }}

{% endif %} + {% if event.link %}{{ event.linkLabel|default:"Details" }}{% endif %} +
+
+ {% endif %}{% endfor %} +
+ {% else %} +
    + {% for event in events %}{% if not (hidePast and event.past) %} +
  • +
    +
    {{ event.start }}
    + {% if event.end %}
    to {{ event.end }}
    {% endif %} + {% if event.timezone %}
    {{ event.timezone }}
    {% endif %} +
    +
    +

    {{ event.title }}

    + {% if event.venue %}

    {{ event.venue }}

    {% endif %} + {% if event.description %}

    {{ event.description }}

    {% endif %} +
    + {% if event.link %}{{ event.linkLabel|default:"Details" }}{% endif %} +
  • + {% endif %}{% endfor %} +
+ {% endif %} +
+
diff --git a/templates/overrides/coffee/faq.ninjatpl b/templates/overrides/coffee/faq.ninjatpl new file mode 100644 index 0000000..3d7e4fe --- /dev/null +++ b/templates/overrides/coffee/faq.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for item in items %} +
+ + {{ item.question }} + + +
{{ item.answer|safe }}
+
+ {% endfor %} +
+
+
diff --git a/templates/overrides/coffee/feature-grid.ninjatpl b/templates/overrides/coffee/feature-grid.ninjatpl new file mode 100644 index 0000000..f8d935b --- /dev/null +++ b/templates/overrides/coffee/feature-grid.ninjatpl @@ -0,0 +1,17 @@ +
+
+ {% if eyebrow %}

{{ eyebrow }}

{% endif %} + {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+ {% for item in items %} +
+ {% if item.icon %}
{% endif %} +

{% if item.linkUrl %}{{ item.title }}{% else %}{{ item.title }}{% endif %}

+ {% if item.text %}

{{ item.text }}

{% endif %} + {% if item.linkUrl and item.linkLabel %}{{ item.linkLabel }}{% endif %} +
+ {% endfor %} +
+
+
diff --git a/templates/overrides/coffee/featured-posts.ninjatpl b/templates/overrides/coffee/featured-posts.ninjatpl new file mode 100644 index 0000000..d55f640 --- /dev/null +++ b/templates/overrides/coffee/featured-posts.ninjatpl @@ -0,0 +1,21 @@ +
+
+{% if heading %}

{{ heading }}

{% endif %} +
+{% for post in posts %} +
+{% if showFeaturedImage and post.featured_image_url %}{% img post.featured_image_url alt=post.title class="h-full w-full object-cover transition-transform duration-300 group-hover:scale-105" %}{% endif %} +
+

{{ post.title }}

+{% if showExcerpt and post.excerpt %}

{{ post.excerpt }}

{% endif %} +
+{% if showAuthor and post.author_name %}{{ post.author_name }}{% endif %} +{% if showDate and post.published_at %}{{ post.published_at|date:"M j, Y" }}{% endif %} +{% if post.reading_time %}{{ post.reading_time }} min{% endif %} +
+
+
+{% endfor %} +
+
+
diff --git a/templates/overrides/coffee/footer.ninjatpl b/templates/overrides/coffee/footer.ninjatpl new file mode 100644 index 0000000..393f97b --- /dev/null +++ b/templates/overrides/coffee/footer.ninjatpl @@ -0,0 +1,38 @@ +{# coffee footer — torn-paper top edge, kraft chrome, builtin footer_menus provider. #} +{% set fl = layout %} +{% if not fl %}{% if template == "centered" %}{% set fl = "centered" %}{% else %}{% set fl = "columns" %}{% endif %}{% endif %} +{% macro sociallinks(cls) %}{% if social_items %}{% endif %}{% endmacro %} +{% macro newsletter() %}{% if showNewsletter %}

{{ newsletterTitle|default:"Stay in the loop" }}

{% if newsletterDescription %}

{{ newsletterDescription }}

{% endif %}
{% signup_form list=newsletterListSlug|default:"main" source="footer" submit=newsletterButtonText|default:"Subscribe" %}
{% endif %}{% endmacro %} +{% macro legalbar() %}

{% if copyright %}© {{ copyright }}{% else %}© {{ companyName }}{% endif %}

{% if legal_items %}{% endif %}
{% endmacro %} +
+
+{% if fl == "minimal" %} +
+
{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %}{% if tagline %}{% endif %}
+{{ sociallinks("") }} +
+{{ legalbar() }} +{% elif fl == "centered" %} +
+{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %} +{% if tagline %}

{{ tagline }}

{% endif %} +{% if columns %}{% endif %} +{{ newsletter() }} +{{ sociallinks("justify-center") }} +
+{{ legalbar() }} +{% else %} +
+
+{% if logo %}{{ companyName }}{% elif companyName %}{{ companyName }}{% endif %} +{% if tagline %}

{{ tagline }}

{% endif %} +{% if address or email or phone %}
{% if address %}
{{ address }}
{% endif %}{% if email %}{% endif %}{% if phone %}{% endif %}
{% endif %} +{{ sociallinks("mt-5") }} +
+{% for col in columns %}

{{ col.header }}

{% endfor %} +{% if showNewsletter %}
{{ newsletter() }}
{% endif %} +
+{{ legalbar() }} +{% endif %} +
+
diff --git a/templates/overrides/coffee/gallery.ninjatpl b/templates/overrides/coffee/gallery.ninjatpl new file mode 100644 index 0000000..76b306d --- /dev/null +++ b/templates/overrides/coffee/gallery.ninjatpl @@ -0,0 +1,9 @@ +{% with layout=layout|default:"grid" gap=gap|default:"md" cols=columns|default:3 %} + +{% endwith %} diff --git a/templates/overrides/coffee/heading.ninjatpl b/templates/overrides/coffee/heading.ninjatpl index c1e1f92..e89342c 100644 --- a/templates/overrides/coffee/heading.ninjatpl +++ b/templates/overrides/coffee/heading.ninjatpl @@ -1 +1,6 @@ -{% if level|integer == 1 %}

{{ text }}

{% elif level|integer == 3 %}

{{ text }}

{% elif level|integer == 4 %}

{{ text }}

{% elif level|integer == 5 %}
{{ text }}
{% elif level|integer == 6 %}
{{ text }}
{% else %}

{{ text }}

{% endif %} +{% if level == 1 %}

{{ text }}

+{% elif level == 3 %}

{{ text }}

+{% elif level == 4 %}

{{ text }}

+{% elif level == 5 %}
{{ text }}
+{% elif level == 6 %}
{{ text }}
+{% else %}

{{ text }}

{% endif %} diff --git a/templates/overrides/coffee/hero.ninjatpl b/templates/overrides/coffee/hero.ninjatpl new file mode 100644 index 0000000..149c6ae --- /dev/null +++ b/templates/overrides/coffee/hero.ninjatpl @@ -0,0 +1,36 @@ +{# coffee hero — paper chrome; styled-text fields accept {text} object OR bare string. #} +{% set eyebrowText = eyebrow.text|default:eyebrow %} +{% set headlineText = headline.text|default:headline %} +{% set subText = subheadline.text|default:subheadline %} +{% set descText = description.text|default:description %} +{% set pText = ctaPrimary.text %} +{% set pUrl = ctaPrimary.url %} +{% set sText = ctaSecondary.text %} +{% set sUrl = ctaSecondary.url %} +{% set variant = template|default:"centered" %} +{% set hasImage = backgroundImage %} +{% set showOverlay = hasImage and overlayColor != "none" and overlayColor != "" %} +{% macro herocontent(align) %} +{% if eyebrowText %}{{ eyebrowText }}{% endif %} +{% if headlineText %}

{{ headlineText }}

{% endif %} +{% if subText %}

{{ subText }}

{% endif %} +{% if descText %}

{{ descText }}

{% endif %} +{% if pText or sText %}
+{% if pText and pUrl %}{{ pText }}{% endif %} +{% if sText and sUrl %}{{ sText }}{% endif %} +
{% endif %} +{% if trustLogos %}

Regulars love

{% for logo in trustLogos %}{% if logo.url %}{% img logo.image alt=logo.alt class="h-8 w-auto" %}{% else %}{% img logo.image alt=logo.alt class="h-8 w-auto opacity-60" %}{% endif %}{% endfor %}
{% endif %} +{% endmacro %} +{% if variant == "split" %} +
+
{% if hasImage %}{% img backgroundImage alt=headlineText class="absolute inset-0 h-full w-full object-cover" layout="hero" %}{% endif %}
+
{{ herocontent("left") }}
+
+{% else %} +{% set align = "center" %} +{% if variant == "left-aligned" %}{% set align = "left" %}{% endif %} +
+{% if hasImage %}
{% img backgroundImage alt=headlineText class="h-full w-full object-cover" layout="hero" %}{% if showOverlay %}
{% endif %}
{% endif %} +
{{ herocontent(align) }}
+
+{% endif %} diff --git a/templates/overrides/coffee/hours-location.ninjatpl b/templates/overrides/coffee/hours-location.ninjatpl new file mode 100644 index 0000000..954f336 --- /dev/null +++ b/templates/overrides/coffee/hours-location.ninjatpl @@ -0,0 +1,40 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} +
+
+ {% if hours %} + + + {% for row in hours %} + + + + + {% endfor %} + +
{{ row.day }}{% if row.closed %}Closed{% else %}{{ row.hours }}{% endif %}
+ {% endif %} + {% if specialHoursNote %}

{{ specialHoursNote }}

{% endif %} + {% if address %}
Find us
{{ address }}
{% endif %} + {% if phone %}
Call ahead
{{ phone }}
{% endif %} + {% if directionsUrl %}Get directions{% endif %} +
+ {% if mapEmbedUrl %} +
+ +
+ {% endif %} +
+
+
+ diff --git a/templates/overrides/coffee/image.ninjatpl b/templates/overrides/coffee/image.ninjatpl index 1040ab1..e0a5475 100644 --- a/templates/overrides/coffee/image.ninjatpl +++ b/templates/overrides/coffee/image.ninjatpl @@ -1,6 +1,8 @@ -
-
- {% if src %}{{ alt }}{% else %}
Add an image to render the torn-edge frame.
{% endif %} +{% with size=size|default:"full" align=align|default:"center" %} +
+
+ {% if src %}{% img src alt=alt class="block h-auto w-full rounded-sm object-cover" layout=size %}{% else %}
Add an image
{% endif %}
- {% if caption %}
{{ caption }}
{% endif %} + {% if caption %}
{{ caption }}
{% endif %}
+{% endwith %} diff --git a/templates/overrides/coffee/logo-strip.ninjatpl b/templates/overrides/coffee/logo-strip.ninjatpl new file mode 100644 index 0000000..669d575 --- /dev/null +++ b/templates/overrides/coffee/logo-strip.ninjatpl @@ -0,0 +1,15 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} +
+
+ {% for logo in logos %} + {% if logo.url %}{% endif %} + {% img logo.image alt=logo.alt class="h-8 w-auto object-contain" %} + {% if logo.url %}{% endif %} + {% endfor %} +
+
+
+
+{% if marquee %}{% endif %} diff --git a/templates/overrides/coffee/menu-list.ninjatpl b/templates/overrides/coffee/menu-list.ninjatpl new file mode 100644 index 0000000..0948ee7 --- /dev/null +++ b/templates/overrides/coffee/menu-list.ninjatpl @@ -0,0 +1,31 @@ +
+
+ {% if heading %}

{{ heading }}

{% endif %} + {% if intro %}

{{ intro }}

{% endif %} +
+
+ {% for section in sections %} + + {% endfor %} +
+ {% if footnote %}

{{ footnote }}

{% endif %} +
+
+
diff --git a/templates/overrides/coffee/navbar.ninjatpl b/templates/overrides/coffee/navbar.ninjatpl new file mode 100644 index 0000000..97f8b18 --- /dev/null +++ b/templates/overrides/coffee/navbar.ninjatpl @@ -0,0 +1,74 @@ +{# coffee navbar — paper-strip chrome over the builtin menu provider. One navbar per page (fixed drawer ids). #} +{% set nv = variant %} +{% if not nv %}{% if template == "centered" %}{% set nv = "centered-logo" %}{% else %}{% set nv = "standard" %}{% endif %}{% endif %} +{% set sb = stickyBehavior %} +{% if not sb %}{% if sticky %}{% set sb = "sticky" %}{% else %}{% set sb = "none" %}{% endif %}{% endif %} +{% set cta_text = cta.text|default:ctaLabel %} +{% set cta_url = cta.url|default:ctaUrl %} +{% macro navlink(item) %}{{ item.label }}{% endmacro %} +{% macro dropdown(item) %}
{% endmacro %} +{% macro brand(size) %}{% if logoType == "text" and logoText.text %}{{ logoText.text }}{% elif logo %}{{ alt|default:companyName }}{% elif companyName %}{{ companyName }}{% endif %}{% endmacro %} +{% macro ctabtn(extra) %}{% if cta_text %}{{ cta_text }}{% endif %}{% endmacro %} +