Specs: repo-structure, 10 framework layer specs, packs, site. Changes: repo-restructure (10 tasks), css-refactor (12 tasks), legacy-import (proposal + triage categories). Supersede docs/css-refactor-plan.md in favor of OpenSpec change. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Spec: Tokens (Layer 01)
File: src/layers/01-tokens.css
Purpose
Pure design token definitions. Aliases Open Props primitives to semantic names. Contains only :root {} variable declarations — no rules, no selectors, no styling.
Open Props Dependency
ASW builds on Open Props as its primitive token source. Open Props provides:
- Color scales:
--color-0through--color-16 - Size scale:
--size-1through--size-15,--size-px-1through--size-px-12 - Font sizes:
--font-size-0through--font-size-8 - Font weights:
--font-weight-1through--font-weight-9 - Shadows:
--shadow-1through--shadow-6 - Border sizes:
--border-size-1through--border-size-5 - Animations, easings, gradients, and more
Version: tracked in vendor/open-props/VERSION
Aliasing Contract
Every Open Props primitive used in the framework MUST be aliased through this file. Downstream layers (02+) MUST reference semantic aliases, never primitives.
/* YES — downstream layers use this */
color: var(--text);
font-weight: var(--weight-bold);
padding: var(--space-4);
/* NO — never in layers 02+ */
color: var(--color-6);
font-weight: var(--font-weight-7);
padding: var(--size-3);
Token Categories
Colors
--surface,--surface-alt— background colors--text,--text-muted— foreground colors--accent,--accent-hover— interactive/brand color--border,--border-muted— border colors--code-bg,--code-text— code block colors
Spacing
--space-1through--space-7— spacing scale- Maps to Open Props
--size-Nscale
Typography
--weight-normal,--weight-medium,--weight-semibold,--weight-bold--font-body,--font-mono— font stacks--line-height-body,--line-height-heading--width-prose— max-width for readable text
Shadows
--shadow-dropdown,--shadow-modal— purpose-named shadows
Focus / Interaction
--focus-ring-width— keyboard focus ring width
Scenarios
Given a new primitive reference needed
- When a downstream layer needs an Open Props value
- Then add a semantic alias to this file first
- And reference only the alias in the downstream layer
Given an unused token
- When auditing finds a token alias with zero references in layers 02+
- Then it may be removed from this file
Given this file
- When inspected
- Then it contains only
:root {}with--custom-property: value;declarations - And no element selectors, no class selectors, no rules