Skip to content

Claude/design system setup 2koyc#1

Merged
erasmus merged 35 commits intomainfrom
claude/design-system-setup-2koyc
Mar 1, 2026
Merged

Claude/design system setup 2koyc#1
erasmus merged 35 commits intomainfrom
claude/design-system-setup-2koyc

Conversation

@erasmus
Copy link
Copy Markdown
Contributor

@erasmus erasmus commented Mar 1, 2026

No description provided.

Single-page interactive reference displaying all design system specs:
brand colors (light/dark), motion tokens, live GSAP animation preset
demos (entrance, exit, hover, logo reveal), scroll-triggered stagger
reveals, component customization tables, and getting started steps.
Respects prefers-reduced-motion throughout.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
…ns, large radius

Customizes the design system to match the shadcn/ui create configuration:
- Style: Maia (soft and rounded, generous spacing)
- Base color: Gray (blue-tinted neutrals, OKLCH hue ~262)
- Radius: Large (--radius: 0.75rem)
- Body font: Geist Sans
- Headline font: Poppins (h1-h4 only, user override)
- Icon library: Hugeicons
- Color format: OKLCH (Tailwind v4 standard)

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
…vel details

Corrections from shadcn-ui/ui apps/v4/registry/themes.ts:
- --primary light: 0.034 chroma (was 0.018)
- --ring light: oklch(0.707 0.022 261.325) (was foreground color)
- Dark --card/--popover: oklch(0.21 0.034 264.665) (differs from background)
- Dark --border: oklch(1 0 0 / 10%) (transparency, was solid)
- Dark --input: oklch(1 0 0 / 15%) (transparency)
- Dark --destructive: oklch(0.704 0.191 22.216) (brighter)
- --radius: 0.875rem (large preset, was 0.75rem)

Added Maia component-level CSS class patterns from style-maia.css:
- Button/Input: rounded-4xl (pill-shaped)
- Card: rounded-2xl + ring-1 ring-foreground/10
- Dialog: rounded-4xl + ring-1 ring-foreground/5
- Input background: bg-input/30 (tinted)

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Replace static table-only component section with live interactive examples:
- Buttons (primary, secondary, outline, destructive, ghost) with press effect
- Inputs with pill shape and tinted bg-input/30 background
- Badges (default, outline, brand yellow/blue/magenta)
- Cards with ring-1 border and hover-lift animation
- Dialog with scaleIn/scaleOut (back.out(1.7) overshoot)
- Sheet with slideInRight/slideOutRight
- Dropdown with slideInDown/fadeOut
- Tooltip with fast fadeIn/fadeOut (150ms)
- Toast with slideInRight/slideOutUp and auto-dismiss
- Accordion with expandIn height animation
- Tabs with fadeIn crossfade (150ms)

All animations use GSAP presets matching the design system spec.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- Buttons: background shift on hover per variant (primary, secondary,
  outline, destructive, ghost) with 150ms ease-out transition
- Inputs: inset border ring on hover, smooth transition to focus ring
- Accordion triggers: muted color on hover
- Tabs: foreground color on hover for inactive tabs
- Toast close button: background highlight + color shift on hover
- Dropdown items: transition on existing hover background

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Buttons:
- filter: brightness() for visible colour shift on hover (1.2 primary,
  0.94 secondary, 1.15 destructive)
- Tinted glow shadows via color-mix (primary/destructive get coloured
  bloom, outline/ghost get muted fills)
- CSS :active brightness(0.92) for instant press dim
- GSAP: micro-lift y:-1 on hover, scale(0.97) press with back.out(2)
  spring recovery

Cards:
- CSS filter: brightness(1.015) + shadow bloom on hover
- GSAP y:-4 lift (decoupled from shadow for smoother animation)

Inputs:
- Hover deepens tinted bg (30% → 50% input mix)
- Smooth ring transition on focus

Accordion:
- Background fill on trigger hover (rounded pill area)
- GSAP chevron nudge (y:2) on hover as affordance

Tabs:
- Semi-transparent muted bg pill on inactive hover
- Panels now slide-up + fade (y:6→0) instead of fade-only

Dropdown:
- Entry now uses scale(0.96→1) with back.out(1.5) overshoot
- Added :active state on items

Toast:
- Entry bounce via back.out(1.4) instead of flat ease

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Standalone example-mobile.html showing the design system components
assembled into a realistic mobile app UI. Rendered as a phone frame
at desktop, full-screen on mobile.

Components used:
- App bar with logo, notification bell (badge dot), avatar button
- Status bar mock (time, signal, wifi, battery)
- Greeting section (Poppins h1, Geist body)
- Maia pill search input with icon
- Stats row — 3 maia-card tiles with colour-coded values
- Featured project card (primary bg, progress bar, decorative circles)
- Quick actions grid (4 icon+label buttons, brand-colour icon fills)
- Task list with maia-card items, priority dots, badges, checkboxes
- Tabs (Today / Upcoming / Completed) with GSAP slide-up panel switch
- Accordion (Project Notes) with chevron hover nudge
- Bottom-sheet dialog (add task) — slides up from bottom
- FAB (add task) with bounce hover
- Bottom navigation bar with active dot indicator
- Toast notifications (slide-up entrance, back.out bounce)

All GSAP animations respect prefers-reduced-motion via dur() helper.
Brand colours used only for badges, priority dots, quick-action icons
and the featured card — not for semantic UI tokens.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- Nav link "Mobile Example" added to site header
- New Section 07 embeds example-mobile.html in a styled phone
  frame (390x780, border-radius 2.75rem, layered box-shadow)
  via <iframe> — fully interactive in-page
- Sidebar lists all 13 components and 10 animation patterns used
- "Open standalone" pill-link to example-mobile.html in new tab

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
All hover/base box-shadows used rgba(0,0,0,0.03–0.1) which is
invisible on dark backgrounds. Added .dark overrides for both
index.html and example-mobile.html that:
- Boost black shadow opacity (0.3–0.55 range)
- Add subtle rgba(255,255,255,0.04–0.12) light-edge glow
  so elevated elements pop off the dark surface

Affected: .card, .hover-lift, .theme-toggle, .maia-btn-*,
.maia-card, .maia-dialog, .maia-sheet, .maia-dropdown,
.maia-toast, .maia-input, .phone-frame, .stat-card, .task-item,
.fab

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Changed --background from pure white oklch(1 0 0) to #FAFAFA
(--brand-surface) in light mode across index.html,
example-mobile.html, and tokens/colors.css. Cards remain white
so they naturally lift off the slightly tinted surface.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New file: tokens/spacing.yaml
- 4px grid base scale (0–24, matching Tailwind)
- Semantic tokens: inline, component, gap, section, page
- Per-component spacing map (button, card, dialog, etc.)
- Guidelines: generous Maia defaults, gap-over-margin,
  44px touch targets, no arbitrary values

DESIGN-SYSTEM.md: new Section 7 (Spacing) with full tables
for base scale, semantic tokens, component spacing, and rules.
Sections 7–9 renumbered to 8–10. File map updated.

index.html: new Section 03 (Spacing) with visual scale bars,
semantic token cards, component spacing table, and guideline
cards. Nav link added. Sections 03–07 renumbered to 04–08.

CLAUDE.md: key files table updated with spacing.yaml at #5.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Bump all section spacing tokens up one scale step for more generous
vertical rhythm (e.g. section-lg: 5rem → 6rem). Add scale-32 (8rem)
to base scale. Increase h1 from 2.25rem to 2.75rem.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Every modification to the design system must now include a
corresponding CHANGELOG.md entry with version, date, and specifics.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Brand highlights updated across all files:
- --brand-highlight-yellow → --brand-highlight-light-green (#B9F7CE)
- --brand-highlight-blue → --brand-highlight-grass-green (#3DC683)
- --brand-highlight-magenta → --brand-highlight-dark-green (#15552E)

Same values for both light and dark mode. Grass green used
for text where dark green would be invisible on dark backgrounds.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Updated the usage example in tokens/colors.css comment block to
reference --brand-highlight-grass-green instead.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- .maia-badge-light-green text color: --brand-highlight-light-green →
  --brand-highlight-grass-green (light green text invisible on light bg)
- .maia-badge-dark-green text color: --brand-highlight-dark-green →
  --brand-highlight-grass-green (dark green text invisible on dark bg)
- .hero-title .accent-dark-green: same fix for hero readability

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
…d functional only

New 3-tier color philosophy:
1. Neutrals (default) — surfaces, greys, foreground, border
2. Brand greens (purposeful) — decorative is OK but must have intent
3. Non-brand colors (functional only) — e.g. red only for errors/warnings

Applied to example-mobile.html: priority dots, stat values, utility
links, and icons changed from brand colors to neutrals. Removed
arbitrary oklch colors in favour of brand/neutral tokens.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
The three brand badges (light-green, grass-green, dark-green) were
nearly identical. Now they form a clear soft → mid → bold progression:
- light-green: pastel bg, dark-green text (softest)
- grass-green: tinted bg, grass-green text (mid, unchanged)
- dark-green: solid dark-green bg, light-green text (boldest)

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New icon guide in DESIGN-SYSTEM.md defines four contexts (inline,
quick-action tile, FAB, navigation) with prescribed color, background,
size, and stroke-weight. Key rule: one treatment per context, icons
use currentColor by default with neutral container backgrounds.

Fixed example-mobile.html: all four quick-action icons now use the
same neutral bg + currentColor stroke + stroke-width 2 instead of
four different mixed treatments (primary, brand-green, dark-green,
muted-foreground).

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New components in DESIGN-SYSTEM.md and shadcn-customizations.yaml:
- Chart: Recharts-backed, --chart-1..5 tokens, Maia card shell
- Card with Image: image-top variant, aspect-ratio 16/9, overflow hidden
- Field: form field wrapper (label + input + desc + error), select, textarea

New Icons demo section on the site showing all three icon contexts
(inline/toolbar, quick-action tile, navigation) with a dark mode
callout explaining currentColor behavior.

Dark mode icon guidelines added to DESIGN-SYSTEM.md with do/don't
table and common bug patterns. Dark mode shadow overrides added for
chart, card-image, select, and textarea components.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- New .icon-btn, .icon-tile, .nav-icon CSS classes with :hover,
  :focus-visible, and :active states replacing inline JS handlers
- Fix .anim-tag dark mode: swap text to --brand-highlight-light-green,
  raise bg/border opacity for readable contrast
- Fix .maia-badge-light-green dark mode: dark-green text was invisible,
  now light-green text on tinted dark-green background

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Light mode: dark green bg (#15552E), light green text (#B9F7CE).
Dark mode: light green bg (#B9F7CE), dark green text/border (#15552E).
Poppins 500, 15px, -0.05em letter-spacing, border-radius: 15px.
Replaces placeholder grid-square .logo-icon with .logo-badge class.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New .h0 utility class for hero/landing display text. Poppins 400,
line-height 1.0, letter-spacing -0.03em. Added Poppins weight 400
to Google Fonts import. Updated typography preview, DESIGN-SYSTEM.md,
shadcn-customizations.yaml, and CLAUDE.md.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New Section 02 with: light mode variants (large, default, small,
badge-only), dark mode variants on forced-dark panels, side-by-side
animated reveal demo, usage rules, and full spec reference table.
Refactored logo reveal JS into reusable playReveal()/wireReplay()
helpers with ScrollTrigger auto-play. Added .logo-badge-dark CSS
class. Renumbered sections 02-08 to 03-09.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Remove "Lineage HQ" wordmark from animated demos. Replace simple
scale-in with a richer three-phase GSAP animation:
1. Pill elastic scale-in (scaleX 0→1, elastic.out, 800ms)
2. Staggered character blur-to-sharp (per-char blur 8→0px, 350ms)
3. Settling brand glow pulse (box-shadow fade, 600ms)

Added splitBadgeChars() for per-character animation, .logo-char
with will-change for GPU acceleration. Updated spec table and
section description. Static size demos still show badge + wordmark.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Apply motion design best practices from research:
- Phase 1: scale 0.9→1 with back.out(1.7) + blur dissolve (not
  elastic/scale-from-zero which reads cartoonish)
- Phase 2: center-out stagger radiating from the * glyph using
  stagger: {each: 0.05, from: "center"}, blur 4px→0
- Phase 3: dual-layer glow (16px tight + 40px diffuse) for
  realistic falloff instead of single box-shadow

Total ~1s matching slowest motion token. Updated spec table,
section description, and changelog.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
The wordmarks were only removed from the animated demos but still
appeared in the static Light Mode and Dark Mode size panels.
Simplified both panels to badge-only displays at 3 sizes (22px,
15px, 12px). Removed replay buttons and scroll triggers from
static panels. Cleaned up unused wireReplay calls.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New logo variant alongside way*ID badge:
- Poppins 600, 36px, -0.05em letter-spacing
- Light: #15552E text, Dark: #B9F7CE text
- Asterisk (*) uses grass green #3DC683 as accent
- Three sizes (36px, 24px, 16px) in both light/dark panels
- Animated reveal: left-stagger chars with blur dissolve,
  asterisk scale pop with back.out(3), text-shadow glow pulse
- splitWordmarkChars() preserves .logo-asterisk span while
  splitting surrounding text into per-character spans
- Separate spec reference tables for each logo variant
- Section reorganized with sub-headings and divider

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Change .hero-title from bold 800 weight to the h0 spec:
Poppins 400, clamp(3.5rem, 8vw, 6rem), line-height 1.0,
letter-spacing -0.03em. Lighter weight at larger scale gives
a more elegant display feel. Mobile breakpoint updated to
clamp(2rem, 8vw, 3.5rem) for fluid scaling.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
Fixes four concrete bugs that would break a developer using the system:

1. Radius conflict: shadcn-customizations.yaml had 0.75rem in two places,
   corrected to 0.875rem to match DESIGN-SYSTEM.md and Maia spec

2. HOVER.glow wrong color: was rgba(43,195,255) (blue), corrected to
   rgba(61,198,131,0.35) — brand grass green (#3DC683)

3. assets/logos/README.md fully rewritten: previous content was generic
   placeholder SVG file slots with no brand info. Now documents both
   actual logo variants (way*ID badge + Lineage*Labs wordmark) with CSS,
   HTML, animation specs, size table, and usage rules

4. DESIGN-SYSTEM.md: added missing slideOutLeft/slideOutRight to exit
   preset table; rewrote logo animation section with actual variant specs

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
New tokens/breakpoints.yaml with Tailwind-aligned breakpoint scale
(mobile/sm/md/lg/xl), mobile-first philosophy, container behavior,
grid patterns, and 7 responsive guidelines. md: (768px) is the
primary layout shift breakpoint.

Added §8 Responsive to DESIGN-SYSTEM.md with breakpoint table,
container CSS, layout patterns, typography rules, and guidelines.
Sections renumbered §8-10 → §9-11.

Added Responsive section to index.html with live grid demo (1→2→3
columns on resize), breakpoint indicator, container visualization,
and guideline cards. Sections renumbered 05-09 → 06-10.

Updated CLAUDE.md Key Files table with breakpoints.yaml at priority 6.

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- h1: clamp(2rem, 4vw, 2.75rem), h2: clamp(1.5rem, 3vw, 1.75rem)
- Section spacing and large layout gaps compress one step below md:
- Component padding, small gaps, radius, touch targets stay fixed

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
…port)

- Global CSS resets: overflow-x:clip on html, overflow-wrap:break-word,
  media containment (max-width:100%), .table-scroll wrapper class
- Safe grid pattern: minmax(min(Xpx, 100%), 1fr) replaces bare minmax()
- Overlay components clamped to calc(100vw - 3rem)
- All 9 token/comp tables wrapped in .table-scroll containers
- Inline 2-col grids collapse below 640px via expanded media query
- Documented in DESIGN-SYSTEM.md, breakpoints.yaml, customizations.yaml

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
- min-height not height for full-screen sections
- Slides/carousels must overflow-y: auto on mobile
- overflow: hidden only for decorative wrappers, never content
- dvh not vh (accounts for mobile browser chrome)
- Reduce content density or enable inner scroll

https://claude.ai/code/session_01JvxUxotit9gCCDHmCCS4hB
@erasmus erasmus merged commit b3290b5 into main Mar 1, 2026
3 checks passed
@schorle0 schorle0 deleted the claude/design-system-setup-2koyc branch March 9, 2026 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants