Mercurial
diff .claude/skills/zenbu-design-system/SKILL.md @ 251:117c4d53c9a4
[ui] Add HTML-first Web Component system
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 04 Aug 2026 09:14:57 -0700 |
| parents | |
| children | 7a7581f040e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.claude/skills/zenbu-design-system/SKILL.md Tue Aug 04 09:14:57 2026 -0700 @@ -0,0 +1,46 @@ +--- +name: zenbu-design-system +description: Use this skill when changing Zenbu UI Web Components, design tokens, component stories, catalog routes, or cross-project design-system assets. +--- + +# Zenbu UI design system + +## Structure + +- `design_system/src/components/`: dependency-free ES module Web Components. +- `design_system/src/styles/tokens.css`: shared `--zen-*` design tokens. +- `design_system/src/styles/components.css`: component presentation. +- `design_system/src/index.html`: declarative component stories. +- `design_system/src/storybook.js` and `storybook.css`: catalog shell. +- `design_system/main.c`: Seobeo catalog server. + +## Component conventions + +- Stay close to native HTML and use light DOM. +- Wrap native interactive elements instead of recreating form/link semantics. +- Do not add framework or runtime dependencies. +- Keep application state outside components. +- Preserve keyboard, form, validity, label, and ARIA behavior. +- Prefix custom elements and tokens with `zen-` / `--zen-`. +- Keep selectors low-specificity so applications can override tokens. +- Support light, dark, reduced-motion, desktop, and mobile behavior. + +## Bazel targets + +```bash +bazel run //design_system:dev +bazel test //design_system/test:storybook_test +bazel build //design_system:design_system_server_bundle +``` + +Reusable targets: + +- `//design_system:components` +- `//design_system:styles` +- `//design_system:web_assets` + +## Story convention + +Write stories declaratively with `zen-story` and a direct `template`. Every +component state should have a rendered example and visible source. Browser tests +must cover native semantics and interactions rather than only element presence.