Skip to content

Component foundation

PLT components remain DaisyUI-first. Zensical documentation should show the reusable component contracts without creating a parallel component API.

Layering

DaisyUI anatomy
PLT design tokens
PLT theme utilities
PLT storefront composition
Hydration island contract

Visual rules

Token Current value
Base component border 2px
Emphasis border 3px
Default hard shadow 4px
Hover hard shadow 8px
Active hard shadow 2px
Radius 0.25rem

Colors are owned by packages/design-system/src/tokens.css and remain unchanged.

DaisyUI invariant

Use official d--prefixed DaisyUI classes for primitives:

<button class="d-btn d-btn-primary theme-bordered theme-elevated theme-label-bold">
  Shop now
</button>

<article class="d-card bg-base-100 theme-bordered theme-elevated">
  <div class="d-card-body">
    <h2 class="d-card-title theme-headline-sm">Product title</h2>
  </div>
</article>

Use plt-* only for compositions that DaisyUI does not provide, such as media-card layout, product-grid shell or cart-line composition.

Reusable storefront base

The store template should start from these reusable units:

Unit Role
Hero First-screen editorial and campaign section.
PromoStrip Campaign strip, shipping message or compliance note.
ProductGrid Handle-based product section.
ProductCard Product summary renderer.
CollectionCard Collection summary renderer.
SearchField Store search entry point.
FilterBar Collection filtering shell.
SortSelect Collection sort shell.
Newsletter Marketing signup shell.
EmptyState No-results and fallback states.