Skip to content

About

πŸ› A custom Shopify storefront for a demi-fine jewelry brand - built on Dawn, restyled from the ground up.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Carly Taylor Jewelry

Shopify Theme

A custom Shopify storefront for a demi-fine jewelry brand β€” built on Dawn, restyled from the ground up.

Warm editorial art direction, a token-driven design layer, and three bespoke sections β€” without forking Dawn's rendering logic, accessibility work, or Online Store 2.0 contract.

Shopify Liquid Base CSS JS A11y


Table of contents


Overview

Carly Taylor Jewelry sells gold and silver pieces in the $25–$100 band β€” jewelry meant to be layered and lived in rather than kept in a box. The storefront had to read as boutique and editorial while still behaving like a high-volume commerce theme: fast, accessible, and fully editable by a non-technical merchant from the Shopify theme editor.

This theme takes Dawn as its base and treats it as a dependency, not a starting point to overwrite. Dawn's cart logic, Section Rendering API wiring, predictive search, variant picker, and focus management are left untouched. Everything brand-specific lives in an additive ct-* layer alongside it.

Base theme Shopify Dawn (Online Store 2.0, theme blocks enabled)
Custom sections 3 built from scratch (ct-hero, ct-category-grid, ct-newsletter) + 8 Dawn sections extended
Custom stylesheets 7 scoped files, all built on one shared token layer
Custom JavaScript 2 files, both pure progressive enhancement
Build step None β€” ships as-is to Shopify
Typography Cormorant Garamond (self-hosted) + Karla (Shopify font library)

Landing page design

The homepage is composed entirely of theme-editor sections defined in templates/index.json β€” every heading, image, link and colour scheme below is a merchant-editable setting, not hardcoded markup.

Composition

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  ANNOUNCEMENT BAR            scheme-7 Β· ink on warm white            β”‚
β”‚  "Welcome to Carly Taylor β€” use code WELCOME for 10% off…"           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  HEADER   βŒ‚ logo        Β« main menu Β»               βŒ•   ⌾   ⛃        β”‚
β”‚  sticky Β· transparent over the hero Β· solidifies after 40px scroll   β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚                                                                      β”‚
β”‚   ▏CARLY TAYLOR JEWELRY                          β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏                                              β–‘β–‘  hero image  β–‘   β”‚
β”‚   ▏Pieces you'll reach                           β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏  for every day                               β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏                                              β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏Gold and silver jewelry made to be lived in.  β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏                                              β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚   ▏( Shop the collection )                       β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘   β”‚
β”‚                                                                      β”‚
β”‚   β‘  ct-hero Β· 100vh Β· left-to-right scrim Β· eager-loaded LCP image   β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚                        Shop by category                              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                β”‚
β”‚   β”‚         β”‚  β”‚         β”‚  β”‚         β”‚  β”‚         β”‚                β”‚
β”‚   β”‚ NECKLACEβ”‚  β”‚ BRACELETβ”‚  β”‚ EARRING β”‚  β”‚ ANKLET  β”‚                β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚
β”‚                     ( View all pieces )                              β”‚
β”‚   β‘‘ ct-category-grid Β· 4-up β†’ 2-up Β· zoom-on-hover Β· collection-boundβ”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚                      CUSTOMER FAVORITES                              β”‚
β”‚                        Featured pieces                               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚   β”‚  img βŠ• β”‚   β”‚  img βŠ• β”‚   β”‚  img βŠ• β”‚   β”‚  img βŠ• β”‚  βŠ• = circular  β”‚
β”‚   β”‚        β”‚   β”‚        β”‚   β”‚        β”‚   β”‚        β”‚      quick add  β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚    Tigerlily     Ava          Debbie        Julia                    β”‚
β”‚    necklace      earrings     anklet        earrings                 β”‚
β”‚   β‘’ featured-collection Β· 8 hand-picked products Β· 4-up β†’ 2-up      β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚  β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘                                               β”‚
β”‚  β–‘β–‘  banner image   β–‘β–‘              The Art of Everyday Luxury       β”‚
β”‚  β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘              Inspired by you, designed by us  β”‚
β”‚  β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘                                               β”‚
β”‚  β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘              [  SHOP NOW  ]                   β”‚
β”‚   β‘£ ct-hero reused Β· mirrored scrim Β· square CTA Β· lazy-loaded       β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚                     Experience Carly Taylor                          β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                β”‚
β”‚   β”‚   β—ˆ     β”‚  β”‚   β—ˆ     β”‚  β”‚   β—ˆ     β”‚  β”‚   β—ˆ     β”‚                β”‚
β”‚   β”‚Made for β”‚  β”‚ Quality β”‚  β”‚Priced toβ”‚  β”‚Gifts    β”‚                β”‚
β”‚   β”‚Every Dayβ”‚  β”‚That Lastsβ”‚ β”‚  Layer  β”‚  β”‚That Feelβ”‚                β”‚
β”‚   β”‚  β‹―β‹―β‹―    β”‚  β”‚  β‹―β‹―β‹―    β”‚  β”‚  β‹―β‹―β‹―    β”‚  β”‚  β‹―β‹―β‹―    β”‚                β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚
β”‚   β‘€ multicolumn restyled Β· 96px PNG icons Β· flush equal-height cardsβ”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚   STAY IN TOUCH                             β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘    β”‚
β”‚   Be first to meet                          β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘    β”‚
β”‚     the new pieces                          β–‘β–‘  newsletter img  β–‘    β”‚
β”‚                                             β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘    β”‚
β”‚   [ Your email address    ] ( Subscribe )   β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘    β”‚
β”‚   β‘₯ ct-newsletter Β· image side is a setting Β· inline success state  β”‚
β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•‘
β”‚  FOOTER                              scheme-7 Β· ink surface          β”‚
β”‚  β—† Carly Taylor   Shop        Company        Follow along           β”‚
β”‚    brand blurb    All pieces  Contact        β“˜ β“• β“Ÿ                  β”‚
β”‚                   Necklaces   Shipping       Questions?              β”‚
β”‚                   Bracelets   Privacy        hello@carlytaylor.co    β”‚
β”‚  ─────────────────────────────────────────────────────────────────   β”‚
β”‚  Β© 2026 Carly Taylor Jewelry            [visa] [mc] [amex] [shop]    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Section breakdown

# Section Type What it does Key decisions
β‘  Hero ct-hero (custom) Full-viewport brand statement with directional scrim and pill CTA eager_load flag marks it as the LCP image; <em> inside the heading renders in italic Cormorant, controlled from the editor
β‘‘ Category grid ct-category-grid (custom) Four collection tiles bound to real collections Falls back to bundled placeholder art when a collection has no image; label overlays are readable at any crop
β‘’ Featured pieces featured-collection (extended) Eight hand-picked products, secondary image on hover Added a product_list setting so merchandising is explicit rather than "first N in collection"; added circular inline quick-add
β‘£ Promo banner ct-hero (reused) Mid-page campaign break Deliberately not a second section type β€” same section, mirrored gradient_direction and content_position, square CTA variant
β‘€ Experience grid multicolumn (extended) Four value propositions with custom iconography Added ct_icon (theme-asset PNG instead of an uploaded image) and ct_card_style so Dawn's stock multicolumn still works untouched when the flag is off
β‘₯ Newsletter ct-newsletter (custom) Split image / email capture Wraps Shopify's native customer form, so double opt-in and spam handling stay native

Art direction

  • Editorial, not e-commerce-default. Serif display type, generous vertical rhythm (72–88px section padding), and photography that bleeds to the viewport edge.
  • Warm neutrals only. No pure black, no pure white anywhere on the page β€” the darkest ink is #3a2d23 and the lightest surface is #fbf7f2.
  • One accent family. Bronze and champagne carry every hover, focus ring, and eyebrow.
  • Two heading breaks are intentional. The hero and newsletter headings break before their italic phrase, matching the source design, and both are editor-editable rich text.
  • Motion is a whisper. A single 0.35s ease token drives every transition, and every animated rule has a prefers-reduced-motion counterpart.

Design system

All brand values live in one file β€” assets/ct-tokens.css β€” loaded once in layout/theme.liquid immediately after Dawn's base.css.

Design tokens

Ink & surfaces

Token Value Role
--ct-ink #3a2d23 Headings, dark surfaces, primary buttons
--ct-cream #fbf7f2 Page background (scheme-6)
--ct-surface #f1e8dc Raised cards, category tiles
--ct-body #5c4e40 Body copy β€” deliberately lighter than heading ink
--ct-muted #7a6a5a Captions, form labels, meta
--ct-on-dark #f3e6d8 Text on the ink footer (scheme-7)

Brand accents

Token Value Role
--ct-accent #a67b5b Secondary button label
--ct-bronze #be9373 Eyebrows, link hover, button hover
--ct-champagne #dbb894 Focus rings, on-dark hover, announcement highlight

Borders & feedback

Token Value Role
--ct-border #e9ddd0 Hairline dividers
--ct-border-strong #c9b49e Chips, outlined controls
--ct-input-border #dacbb7 Form fields
--ct-success / --ct-error #7c9070 / #b0563e Form and inventory states

Geometry & motion

Token Value Note
--ct-container 128rem (1280px) Dawn's page_width setting only steps in hundreds, so the exact value is pinned here
--ct-radius-pill 999px Exceeds every Dawn radius setting's 40px cap
--ct-radius-panel … --ct-radius-sm 20 / 16 / 14 / 10px Cards, drawers, inputs
--ct-ease 0.35s ease Single shared duration for all interactive transitions
--ct-tracking-eyebrow 0.3em Uppercase eyebrow labels

Typography

Role Family Delivery Weights
Display / headings Cormorant Garamond Self-hosted .woff2 in assets/ 400, 500, 600, 400 italic
Body / UI Karla Shopify font library (settings.type_body_font) 400

Cormorant Garamond is not available under that exact name in Shopify's font_picker library β€” only the visually distinct Cormorant display cut β€” so it is self-hosted rather than substituted. The 400 weight is <link rel="preload">ed because it renders the above-the-fold hero copy.

Shared primitives

Three classes are defined once in the token layer and reused by every section, so there is a single definition of each brand control: .ct-eyebrow, .ct-btn (with --dark, --light, --square, --outline variants), and .ct-chip.

Colour schemes

Two schemes were added to Dawn's native colour-scheme system rather than being hardcoded, so merchants can apply them to any section from the theme editor:

Scheme Background Text Used by
scheme-6 #fbf7f2 cream #3a2d23 ink Every light section, cards, cart drawer
scheme-7 #3a2d23 ink #f3e6d8 warm white Announcement bar, footer

Architecture

Dawn-first principle

The guiding rule of this codebase: if Dawn can already express it, Dawn expresses it.

  • Dawn's settings-driven variables (--color-*, --page-width, radius settings) remain the source of truth. The ct-* tokens only cover roles Dawn's six-field colour-scheme model has no slot for.
  • No cart, variant, search, or form logic is reimplemented. The custom cart drawer styling sits on top of Dawn's own drawer; the newsletter section wraps Shopify's native customer form.
  • Extended Dawn sections stay backwards compatible. multicolumn and featured-collection gain new settings that are off by default β€” with the flag off, the section renders exactly as stock Dawn does.
  • Section Rendering API contracts are preserved. sections/cart-icon-bubble.liquid mirrors the header's cart markup so live cart updates don't desync the header.

Naming convention

Every brand-owned file, class, setting, and locale key is prefixed ct- / ct_. This makes the custom surface area greppable in one command and makes future Dawn upgrades a mechanical diff rather than an archaeology exercise.

# Everything this project owns, in one query
grep -rn "ct-\|ct_" --include=*.liquid --include=*.css --include=*.js .

Stylesheet scoping

Each stylesheet is loaded by the section that needs it, not globally:

File Loaded by Scope
ct-tokens.css layout/theme.liquid Global β€” tokens + shared primitives only
ct-header.css header.liquid, announcement-bar.liquid .ct-header
ct-homepage-sections.css hero, category grid, featured, multicolumn, newsletter Per-section roots
ct-footer.css footer.liquid .footer
ct-product.css main-product.liquid .ct-product
ct-cart-drawer.css cart-drawer.liquid .ct-cart-*
ct-contact.css contact-form.liquid .ct-contact

No build step

No bundler, transpiler, or preprocessor. The theme is plain Liquid, CSS custom properties, and vanilla JavaScript β€” it deploys to Shopify exactly as it exists in this repository. That keeps the theme editor's live preview honest and removes an entire class of "works locally, breaks in production" failures.


Feature set

Storefront

  • Sticky, context-aware header β€” transparent over the homepage hero, solidifying past a 40px scroll threshold. Measures the announcement bar and header as one group so the hero pull-up clears both, and recalculates after webfonts settle.
  • Announcement bar with merchant-controlled inline emphasis (the promo code is a rich-text <strong>, not hardcoded markup).
  • Predictive search and customer accounts wired into the header as explicit, merchant-toggleable settings.

Product page

  • Breadcrumb derived from the current collection, falling back through collection β†’ product.collections.first β†’ product type.
  • Accordion detail tabs β€” Dawn's native <details> markup, height-animated via the Web Animations API. With JavaScript disabled the accordions still open and close correctly.
  • Mobile sticky add-to-bag bar β€” a Dawn-less component that never duplicates form state; its button targets the real product form via the HTML form= attribute, so the same product-form.js handler runs.
  • Live line total on the add-to-bag button (Add to bag β€” 2 Γ— $48), updating with quantity.
  • Inventory state indicators (in stock / low / backorder / out).

Cart

  • Free shipping progress bar in the cart drawer, driven by a merchant-set threshold (ct_free_shipping_threshold, default $75) with a live remaining-amount message.
  • Branded empty state using the monogram mark.
  • Circular inline quick-add on product cards, with proper aria-label per product.

Contact

  • Rebuilt two-column contact page β€” intro column plus form column, with accessible error summary, per-field error links, and a focus-managed success state.

Project structure

.
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ ct-tokens.css              # Design tokens, @font-face, shared primitives
β”‚   β”œβ”€β”€ ct-header.css              # Header + announcement bar
β”‚   β”œβ”€β”€ ct-homepage-sections.css   # Hero, category grid, newsletter, featured, experience
β”‚   β”œβ”€β”€ ct-footer.css              # Footer
β”‚   β”œβ”€β”€ ct-product.css             # Product detail page
β”‚   β”œβ”€β”€ ct-cart-drawer.css         # Cart drawer + free-shipping bar
β”‚   β”œβ”€β”€ ct-contact.css             # Contact page
β”‚   β”œβ”€β”€ ct-accordion.js            # PDP accordion height animation (progressive enhancement)
β”‚   β”œβ”€β”€ ct-sticky-atc.js           # Mobile sticky add-to-bag bar
β”‚   β”œβ”€β”€ cormorant-garamond-*.woff2 # Self-hosted display typeface
β”‚   β”œβ”€β”€ full-logo.svg / mark.svg   # Wordmark + monogram
β”‚   └── ct-*.jpg / ct-icon-*.png   # Section placeholder art + experience icons
β”‚
β”œβ”€β”€ sections/
β”‚   β”œβ”€β”€ ct-hero.liquid             # β˜… Custom β€” hero and promo banner
β”‚   β”œβ”€β”€ ct-category-grid.liquid    # β˜… Custom β€” shop-by-category tiles
β”‚   β”œβ”€β”€ ct-newsletter.liquid       # β˜… Custom β€” split image / email capture
β”‚   β”œβ”€β”€ header.liquid              # Extended β€” sticky + transparent-over-hero
β”‚   β”œβ”€β”€ footer.liquid              # Extended β€” manual link blocks + follow block
β”‚   β”œβ”€β”€ featured-collection.liquid # Extended β€” product_list, eyebrow, circular quick add
β”‚   β”œβ”€β”€ multicolumn.liquid         # Extended β€” theme-asset icons, card style
β”‚   β”œβ”€β”€ main-product.liquid        # Extended β€” breadcrumb, accordions, sticky ATC
β”‚   └── contact-form.liquid        # Rebuilt β€” two-column layout
β”‚
β”œβ”€β”€ snippets/
β”‚   β”œβ”€β”€ card-product.liquid        # Extended β€” inline circular quick add
β”‚   β”œβ”€β”€ cart-drawer.liquid         # Extended β€” free-shipping progress, branded empty state
β”‚   └── buy-buttons.liquid         # Extended β€” live line total
β”‚
β”œβ”€β”€ templates/
β”‚   β”œβ”€β”€ index.json                 # Landing page composition
β”‚   β”œβ”€β”€ product.json
β”‚   └── page.contact.json
β”‚
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ settings_data.json         # Brand palette (scheme-6/7), typography, layout
β”‚   └── settings_schema.json       # + free-shipping threshold setting
β”‚
β”œβ”€β”€ locales/
β”‚   β”œβ”€β”€ en.default.json            # Storefront strings
β”‚   └── en.default.schema.json     # Theme-editor strings for all custom settings
β”‚
└── docs/                          # Repository documentation only β€” not uploaded to Shopify
    β”œβ”€β”€ logo.svg                   # Wordmark (fixed bronze, for this README)
    └── mark.svg                   # Monogram

β˜… = section that does not exist in Dawn.


Local development

Requires the Shopify CLI (v3+) and a development store.

# 1. Authenticate
shopify auth login

# 2. Start a live-reloading dev server against your store
shopify theme dev --store your-store.myshopify.com

# 3. Lint against Shopify's theme rules
shopify theme check

# 4. Push to an unpublished theme for review
shopify theme push --unpublished --theme "Carly Taylor β€” Review"

Note β€” the homepage expects collections with the handles necklace, bracelets, earrings, and anklets. Without them, the category grid renders its bundled placeholder art and links to /collections/all.


Merchant controls

Everything below is editable from Online Store β†’ Themes β†’ Customize β€” no code changes needed.

Setting Location Default
Hero image, heading, body, CTA label & link Hero section Bundled art + brand copy
Hero height, scrim direction, content position Hero section Fullscreen, left, middle-left
CTA style (light / dark / square) Hero section Light
Category tiles β€” collection, label, image Category grid blocks 4 tiles
Featured products β€” explicit product list Featured collection 8 products
Experience cards β€” icon, title, body Multicolumn blocks 4 cards
Newsletter image side, heading, body Newsletter section Right
Free shipping threshold Theme settings β†’ Cart $75
Announcement text + promo emphasis Announcement bar Welcome offer
Footer links, contact email, copyright Footer blocks Brand defaults
Search / account icon visibility Header section Both on

Accessibility

Accessibility is treated as a constraint, not a pass at the end.

  • Dawn's foundations are preserved β€” focus trapping in the drawer and modals, skip links, visually-hidden labelling, and live regions are untouched.
  • Reduced motion is honoured everywhere. Every transition and animation in the ct-* layer has a prefers-reduced-motion: reduce counterpart; the PDP accordion script exits early and falls back to native <details> behaviour.
  • Progressive enhancement, strictly. Both custom scripts null-check every lookup and fail silently to a working baseline. With JavaScript off: accordions still toggle, the product form still submits, the cart still works.
  • Focus is always visible β€” :focus-visible rings use --ct-champagne at 2px with 2px offset, on every custom control.
  • Semantic headings β€” heading levels are editor-controlled (heading_tag) so a merchant can keep exactly one <h1> per page.
  • Icon-only controls carry per-item accessible names (e.g. quick-add announces the product title, not just "Add").

Performance

  • No build, no framework, no runtime dependency. Total custom JavaScript is two small vanilla files, both defer-loaded, plus a handful of inline section scripts.
  • LCP is explicit. The hero exposes an eager_load setting that drives loading="eager" and fetchpriority="high"; the mid-page banner reuse leaves it off and lazy-loads.
  • Fonts are self-hosted with font-display: swap, and only the single above-the-fold weight is preloaded.
  • Stylesheets are section-scoped β€” the product page never downloads footer or contact CSS.
  • Scroll work is throttled through requestAnimationFrame with passive listeners.

Roadmap

  • Collection page template restyle (filters, sort, pagination)
  • Blog / journal template
  • Product bundle and "complete the look" cross-sell block
  • Metafield-driven care instructions on the PDP
  • Additional locale files beyond en.default

Credits

Built on Shopify Dawn, Shopify's reference Online Store 2.0 theme, which is released under the MIT License.

Typefaces: Cormorant Garamond and Karla, both under the SIL Open Font License.

Brand, art direction, and all ct-* source in this repository are the property of Carly Taylor Jewelry.


Built with Liquid, CSS custom properties, and a strong preference for not reinventing Dawn.

About

πŸ› A custom Shopify storefront for a demi-fine jewelry brand - built on Dawn, restyled from the ground up.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages