# DV Layer > DTCG-shaped CSS-native design token system with CSS, vanilla-JS, and React > components. Tokens are the single source of truth; components compose > semantic tokens via BEM classes. Storybook is the canonical interactive > documentation surface. ## Repo layout - [packages/tokens](packages/tokens/src) — DTCG-shaped JSON: `primitives/`, `semantic/`, `modes/` - [packages/html](packages/html/src) — CSS (`src/css/components/*.css`) + vanilla JS (`src/js/components/*.js`) - [packages/react](packages/react/src) — typed React wrappers, render-prop polymorphism (ADR-022) - [packages/icons](packages/icons/src) — SVG icon set + sprite + React bindings - [packages/animation](packages/animation/src) — WAAPI / springs / scroll / FLIP / gestures - [packages/mcp](packages/mcp/README.md) — shared HTTP reference service and canonical consumer upgrade workflow - [packages/storybook](packages/storybook) — narrative docs as `.stories.tsx` + interactive component browser ## Conventions - BEM: `.dv-{block}__{element}--{modifier}` ([ADR-001](docs/adr/ADR-001-bem-components-use-tokens-not-utilities.md)) - Utilities: `.dv:{utility}` Tailwind-v4-style prefix-as-variant ([ADR-020](docs/adr/ADR-020-utility-prefix-as-variant.md)) - Dark utilities: CSS-only local mode scopes; Chrome/Edge 120+, Firefox 146+, Safari/iOS Safari 26.4+ (including WordPress CSS). For older targets use semantic colors/components ([ADR-042](docs/adr/ADR-042-scoped-dark-utilities.md)). - Tokens: 2-tier — primitives → semantic, no component layer ([ADR-005](docs/adr/ADR-005-two-tier-token-architecture.md)) - Token shape: DTCG-shaped, not strictly conformant ([ADR-008](docs/adr/ADR-008-dtcg-shape-not-strict.md)) - Color: OKLCH primitives ([ADR-004](docs/adr/ADR-004-oklch-color-space.md)) - Theming: no prebuilt themes — override accent semantic tokens in `@layer dv-themes` ([ADR-025](docs/adr/ADR-025-themes-are-examples-not-shipped.md)) - React entry: per-file `'use client'`, ESM-only ([ADR-012](docs/adr/ADR-012-rsc-entry-point-split.md), [ADR-013](docs/adr/ADR-013-drop-cjs-output.md)) - Overlay state: `data-state` attribute, not BEM modifier ([ADR-021](docs/adr/ADR-021-overlay-state-attribute.md)) - Container-query utilities: `.dv:@md:p-6`, etc. ([ADR-019](docs/adr/ADR-019-container-query-utilities.md)) ## Components (source of truth: `packages/html/src/css/components/`) Each component CSS file carries an `@ai-component` JSDoc header (base class, React component, element, variants, sizes, HTML examples, a11y notes). These headers — plus the React `@ai-react-*` blocks and vanilla-JS behaviour — are parsed by `scripts/build-ai-meta.mjs` into `.build-meta/ai-manifest.json` and inlined into `llms-full.txt`. The list below is generated; for interactive examples use Storybook (`pnpm storybook`), and for the canonical class shape read the CSS source. - [accordion](packages/html/src/css/components/_accordion.css): React - [alert](packages/html/src/css/components/_alert.css): info|success|warning|error · React - [alert-dialog](packages/html/src/css/components/_alert-dialog.css): React - [app](packages/html/src/css/components/_app.css): React - [avatar](packages/html/src/css/components/_avatar.css): accent|success|info · sizes xs,sm,md,lg,xl · React - [badge](packages/html/src/css/components/_badge.css): neutral|success|warning|error|info|accent|solid-accent|solid-success|solid-warning|solid-error|interactive|removable · sizes sm,lg · React - [banner](packages/html/src/css/components/_banner.css): info|success|warning|error|accent · React - [breadcrumb](packages/html/src/css/components/_breadcrumb.css): React - [bulk-bar](packages/html/src/css/components/_bulk-bar.css): React - [button](packages/html/src/css/components/_button.css): accent|neutral|outline|ghost|danger|link|success|icon-only|block|active|loading · sizes sm,lg · React