# Component Design System **36 component archetypes with variation knobs** — derived from Hallmark's component cookbook, adapted for design asset generation. Use these as building blocks for UI designs. Pick one archetype per section, and vary the knobs to prevent repetition. --- ## Archetype Index ### CTAs / Buttons (C1–C5) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **C1** | Outlined chip | Default primary action, restrained tone | Solid fill (that's C3) | | **C2** | Filled pill | Confident, modern-minimal, SaaS | Outlined (too weak for action) | | **C3** | Text link | Editorial, minimal, trust typography | When you need a button (C1/C2) | | **C4** | Oversized solid | Manifesto, statement, high-impact | When restraint is needed | | **C5** | Inline form-as-CTA | Newsletter, signup — form IS the CTA | When CTA is separate from form | ### Cards (K1–K5) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **K1** | Bordered minimal | Single feature, restrained, modern-minimal | Shadow card (too decorative) | | **K2** | Elevated shadow | Card wants to lift, light background | Dark background (shadow invisible) | | **K3** | Accent-top | Hierarchy signal, section emphasis | When no hierarchy exists | | **K4** | Image-lead | Product card, portfolio, visual first | Text-heavy content (wrong layout) | | **K5** | Stat block | Single large number, metric callout | Multi-feature (use K1) | ### Form Inputs (F1–F4) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **F1** | Minimal line | Clean, modern-minimal, single field | Multi-field forms (too fragile) | | **F2** | Bordered box | Clear field definition, any background | When minimal is preferred | | **F3** | Filled subtle | Subtle background, grouped fields | Single field (overkill) | | **F4** | Floating label | Animated, modern, interactive focus | Simple labels (skip animation) | ### Navigation (N1–N5) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **N1** | Wordmark + links | Simple nav, 2–3 destinations | Complex nav (too limited) | | **N2** | Floating pill | Modern-minimal, detached, blur backdrop | Editorial (wrong voice) | | **N3** | Bottom bar | Mobile-first, thumb zone | Desktop (wrong placement) | | **N4** | Side rail | Editorial, vertical, portfolio | Wide layouts (wrong rhythm) | | **N5** | Edge-aligned minimal | Apple style, luxury, vast whitespace | When space is tight | ### Hero Patterns (H1–H6) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **H1** | Centered display | Formal, welcoming, simple brief | Complex content (overflows) | | **H2** | Split diptych | Headline left, visual right | Visual IS the story (use H6) | | **H3** | Stat-led | Data hero, metric is message | When no strong metric exists | | **H4** | Quote-led | Social proof hero, borrowed credibility | When no strong quote exists | | **H5** | Letter | Personal, first-person, intimate | Formal/B2B (wrong tone) | | **H6** | Full-bleed image | Visual story, photography-first | When text is primary (wrong) | ### Testimonials / Proof (T1–T4) | ID | Archetype | Use when | Don't confuse with | |---|---|---|---| | **T1** | Pull quote | Single strong quote, editorial | Multiple quotes (split) | | **T2** | Logo wall | Social proof, multiple clients | Single client (use T1) | | **T3** | Stat strip | 3–5 metrics in a row | When stats don't matter | | **T4** | Card carousel | Multiple testimonials, varied | Single testimonial (use T1) | --- ## 8-State Component Checklist Every interactive component MUST have code for all 8 states: | State | Trigger | Design requirements | |---|---|---| | **default** | Base state | Visual clarity, readable at arm's length | | **hover** | `:hover` | Subtle lift (translateY(-2px)), shadow increase, or color shift. Max 1 effect per element. | | **focus** | `:focus-visible` | `outline: 2px solid var(--color-focus)`, offset 1px. Appears *instantly* — no fade-in. | | **active** | `:active` | Press feedback — scale(0.98) or translateY(1px). Not bouncy. | | **disabled** | `disabled` attr | 3 signals: `opacity: 0.55` + `cursor: not-allowed` + `aria-disabled="true"`. | | **loading** | `data-state="loading"` | Spinner or skeleton, reduced opacity (0.7), `cursor: wait`. | | **error** | `data-state="error"` | Red border/underline, error icon, helper text appears. No layout shift. | | **success** | `data-state="success"` | Green checkmark, confirmation message. Silent (no toast unless effect is invisible). | ### 8-State Demo Wrapper Template For each component, emit a demo wrapper showing all 8 states: ```html