@teamblind-chorus/ui 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/agents/AGENTS.md +4 -6
  2. package/agents/DESIGN.md +2 -0
  3. package/agents/LOVABLE.md +167 -373
  4. package/agents/anti-patterns.md +2 -2
  5. package/agents/catalog.md +7 -3
  6. package/agents/components/avatar-rail/avatar-rail.md +2 -0
  7. package/agents/components/badge/badge.md +2 -0
  8. package/agents/components/badge/role.md +2 -0
  9. package/agents/components/badge/update.md +2 -0
  10. package/agents/components/banner/banner.md +72 -9
  11. package/agents/components/banner/banner.spec.json +40 -2
  12. package/agents/components/bottom-sheet/bottom-sheet.md +2 -0
  13. package/agents/components/bubble/bubble.md +2 -0
  14. package/agents/components/button/button.family.json +8 -2
  15. package/agents/components/button/button.md +2 -0
  16. package/agents/components/button/check.md +2 -0
  17. package/agents/components/button/fab.md +2 -0
  18. package/agents/components/button/group.spec.json +65 -0
  19. package/agents/components/button/icon.md +2 -0
  20. package/agents/components/button/standard.md +45 -19
  21. package/agents/components/button/text.md +2 -0
  22. package/agents/components/button/toggle.md +2 -0
  23. package/agents/components/button/toolbar.md +2 -0
  24. package/agents/components/carousel/carousel.md +2 -0
  25. package/agents/components/carousel/post.md +5 -3
  26. package/agents/components/carousel/post.spec.json +4 -6
  27. package/agents/components/carousel/profile.md +4 -2
  28. package/agents/components/carousel/profile.spec.json +4 -6
  29. package/agents/components/chip/chip.md +2 -0
  30. package/agents/components/chip/filter.md +2 -0
  31. package/agents/components/chip/tag.md +2 -0
  32. package/agents/components/dialog/dialog.md +2 -0
  33. package/agents/components/directory-list/directory-list.md +2 -0
  34. package/agents/components/divider/divider.md +2 -0
  35. package/agents/components/feed/ad.md +2 -0
  36. package/agents/components/feed/feed.md +2 -0
  37. package/agents/components/feed/post.md +2 -0
  38. package/agents/components/form-field/form-field.md +3 -1
  39. package/agents/components/form-field/input.md +2 -0
  40. package/agents/components/form-field/input.spec.json +2 -1
  41. package/agents/components/form-field/search.md +2 -0
  42. package/agents/components/form-field/search.spec.json +2 -1
  43. package/agents/components/form-field/select.md +2 -0
  44. package/agents/components/form-field/textarea.md +2 -0
  45. package/agents/components/form-field/textarea.spec.json +2 -1
  46. package/agents/components/header/header.md +2 -0
  47. package/agents/components/header/main.md +2 -0
  48. package/agents/components/header/sub.md +2 -0
  49. package/agents/components/list/accordion.md +2 -0
  50. package/agents/components/list/entry.md +2 -0
  51. package/agents/components/list/entry.spec.json +2 -1
  52. package/agents/components/list/list.md +3 -1
  53. package/agents/components/list/radio.md +2 -0
  54. package/agents/components/list/standard.md +2 -0
  55. package/agents/components/list/standard.spec.json +2 -1
  56. package/agents/components/metadata/compact.md +13 -7
  57. package/agents/components/metadata/compact.spec.json +19 -6
  58. package/agents/components/metadata/metadata.family.json +3 -3
  59. package/agents/components/metadata/metadata.md +4 -2
  60. package/agents/components/metadata/standard.md +24 -0
  61. package/agents/components/nav-card/nav-card.md +2 -0
  62. package/agents/components/nav-list/nav-list.md +2 -0
  63. package/agents/components/navigation-bar/main.md +2 -0
  64. package/agents/components/navigation-bar/navigation-bar.md +2 -0
  65. package/agents/components/navigation-bar/search.md +2 -0
  66. package/agents/components/navigation-bar/sub.md +2 -0
  67. package/agents/components/page-shell/page-shell.md +2 -0
  68. package/agents/components/pagination/pagination.family.json +26 -0
  69. package/agents/components/pagination/pagination.md +40 -0
  70. package/agents/components/pagination/pagination.spec.json +54 -0
  71. package/agents/components/profile-header/profile-header.md +2 -0
  72. package/agents/components/progress/progress.md +2 -0
  73. package/agents/components/side-sheet/side-sheet.md +2 -0
  74. package/agents/components/skeleton/skeleton.md +2 -0
  75. package/agents/components/status-tag/status-tag.md +2 -0
  76. package/agents/components/suggestion-list/suggestion-list.md +2 -0
  77. package/agents/components/switch/switch.md +2 -0
  78. package/agents/components/tab-bar/tab-bar.md +2 -0
  79. package/agents/components/tabs/rounded.md +2 -0
  80. package/agents/components/tabs/segmented.md +2 -0
  81. package/agents/components/tabs/tabs.md +2 -0
  82. package/agents/components/tabs/underline.md +2 -0
  83. package/agents/components/thumbnail/thumbnail.md +2 -0
  84. package/agents/components/toast/toast.md +2 -0
  85. package/agents/components/tooltip/tooltip.md +2 -0
  86. package/agents/compose.md +3 -3
  87. package/agents/manifest.json +1 -0
  88. package/agents/patterns/README.md +2 -0
  89. package/agents/patterns/actions.md +2 -0
  90. package/agents/patterns/browsing.md +2 -0
  91. package/agents/patterns/communications.md +2 -0
  92. package/agents/patterns/layout.md +2 -0
  93. package/agents/patterns/modals.md +2 -0
  94. package/agents/patterns/visual.md +2 -0
  95. package/agents/usage.json +15 -3
  96. package/dist/index.cjs +95 -39
  97. package/dist/index.cjs.map +1 -1
  98. package/dist/index.d.cts +28 -1
  99. package/dist/index.d.ts +28 -1
  100. package/dist/index.js +94 -40
  101. package/dist/index.js.map +1 -1
  102. package/dist/styles.css +183 -41
  103. package/package.json +2 -3
  104. package/agents/reconstruct.md +0 -55
  105. package/agents/scoped-adoption.md +0 -111
package/agents/AGENTS.md CHANGED
@@ -9,10 +9,10 @@ Entrypoint for AI agents, external renderers, and design tools (Lovable, v0, Cur
9
9
  Five directives. Apply in order; later directives never override earlier ones.
10
10
 
11
11
  1. **Design-system-first (Source of Truth).** Chorus is the source of truth for every surface. Start from Chorus tokens, components, and patterns — not generic libraries, screenshot inference, or invented values. Begin every task by reading [`schema/manifest.json`](schema/manifest.json) + [`schema/catalog.md`](schema/catalog.md).
12
- 2. **Component flexibility — extrapolate, don't fork.** Read the intent and respect each component's anatomy invariants (slot grammar, sizing tokens, state contract), but flex composition (slot fill, layout placement, modifier props) to fit context. The contract is the token bindings and spec slot rules, not the example screenshot. The family's `visualReuse` flag in `<family>.family.json` says how far flexibility extends — `"open"` families (section, banner, feed, list, button, chip, badge, navigation-bar, tab-bar, tabs, suggestion-list, avatar-rail, thumbnail) may be picked **on visual-fit grounds even when the brief's intent does not match `useCases` verbatim**; `"locked"` families (dialog, bottom-sheet, toast, tooltip, form-field — interaction-contract primitives) MUST only be used in their canonical role. Never wrap a Chorus component to restyle — re-compose with the slots it already gives you.
12
+ 2. **Component flexibility — extrapolate, don't fork.** Read the intent and respect each component's anatomy invariants (slot grammar, sizing tokens, state contract), but flex composition (slot fill, layout placement, modifier props) to fit context. The contract is the token bindings and spec slot rules, not the example screenshot. The family's `visualReuse` flag in `<family>.family.json` says how far flexibility extends — `"open"` families (avatar-rail, badge, banner, bubble, button, carousel, chip, directory-list, divider, feed, header, list, metadata, nav-card, nav-list, navigation-bar, page-shell, pagination, profile-header, progress, side-sheet, skeleton, status-tag, suggestion-list, switch, tab-bar, tabs, thumbnail) may be picked **on visual-fit grounds even when the brief's intent does not match `useCases` verbatim**; `"locked"` families (dialog, bottom-sheet, toast, tooltip, form-field — interaction-contract primitives) MUST only be used in their canonical role. Never wrap a Chorus component to restyle — re-compose with the slots it already gives you.
13
13
  3. **New surfaces stay token-true.** When Chorus has no component for what the surface needs, design a new screen or primitive. Every color, spacing, typography, radius, and border-width MUST resolve through Chorus tokens and the foundations in [`schema/DESIGN.md`](schema/DESIGN.md). No raw hex, no off-scale px, no third-party type ramp — regardless of novelty.
14
14
  4. **Lego-block composition.** Combine and extend existing components Lego-style — nest, group, sequence, re-purpose. Tokens stay non-negotiable; components are the flexible part. A novel screen should still read as one harmony with the system.
15
- 5. **UX-pattern consistency.** Pick components by expected interaction when interaction is the point — Dialog for modal commits, BottomSheet for committed-sheet flows, Toast for non-blocking feedback, Tooltip for trigger-anchored hints, FormField for real text entry. These five (`visualReuse: "locked"`) MUST NOT be borrowed for shape alone — focus trap, auto-dismiss, ARIA live region, hover/focus trigger, `<input>` semantics are the contract. The other thirteen (`"open"`) carry interaction defaults too — List for menus/pickers, Feed for authored content, Chip vs Button for facet vs commit — but defaults are *suggestions*, not rules; pick by visual fit when the design calls for it. Across a flow, keep behavior/motion/affordance predictable regardless of tier.
15
+ 5. **UX-pattern consistency.** Pick components by expected interaction when interaction is the point — Dialog for modal commits, BottomSheet for committed-sheet flows, Toast for non-blocking feedback, Tooltip for trigger-anchored hints, FormField for real text entry. These five (`visualReuse: "locked"`) MUST NOT be borrowed for shape alone — focus trap, auto-dismiss, ARIA live region, hover/focus trigger, `<input>` semantics are the contract. The other twenty-eight (`"open"`) carry interaction defaults too — List for menus/pickers, Feed for authored content, Chip vs Button for facet vs commit — but defaults are *suggestions*, not rules; pick by visual fit when the design calls for it. Across a flow, keep behavior/motion/affordance predictable regardless of tier.
16
16
 
17
17
  The "Hard rules" below are the machine-checkable carve-outs — principles tell you *how to think*; hard rules tell you *what not to ship*.
18
18
 
@@ -27,7 +27,7 @@ MCP server at [`apps/mcp-server`](apps/mcp-server) exposes the schema to any MCP
27
27
  1. **[`schema/manifest.json`](schema/manifest.json)** — single entry point. Every family, sub-component, resolved-token bundle, JSON Schema. Never crawl `schema/components/` to infer system shape.
28
28
  2. **[`schema/catalog.md`](schema/catalog.md)** — intent → component map. Pick components before reading specs.
29
29
  3. **`schema/components/<family>/<sub>.spec.json`** — per-sub-component contract: props, slots, sizes, appearances, states, behavior.
30
- 4. **[`schema/tokens/resolved.light.json`](schema/tokens/resolved.light.json)** / **[`resolved.dark.json`](schema/tokens/resolved.dark.json)** — flat `path → { $value, $type }` for rendering. Fall back to `reference.json` + `system.json` only for the dependency graph. `resolved.web.*.json` are sparse `≥800px` overlays.
30
+ 4. **[`schema/tokens/resolved.light.json`](schema/tokens/resolved.light.json)** / **[`resolved.dark.json`](schema/tokens/resolved.dark.json)** — flat `path → { $value, $type }` for rendering. Fall back to `reference.json` + `system.json` only for the dependency graph. `resolved.web.json` / `resolved.web.dark.json` are sparse `≥800px` overlays.
31
31
  5. **[`schema/DESIGN.md`](schema/DESIGN.md)** — cross-cutting rules every spec defers to (color quartets, focus rings, no-layout strokes, state overlays). Keep loaded.
32
32
  6. **[`patterns/`](patterns)** — canonical pixel references as function-grouped image boards (`actions`, `browsing`, `communications`, `layout`, `modals`, `visual`) + notes. Consult when matching a new composition to a signed-off visual target.
33
33
 
@@ -38,7 +38,7 @@ MCP server at [`apps/mcp-server`](apps/mcp-server) exposes the schema to any MCP
38
38
  Not expressible in JSON Schemas. Agents MUST encode as guardrails.
39
39
 
40
40
  1. **Token-only color, type, space, radius.** Every visible value resolves to a `sys.*` (or `ref.*` if no semantic alias) from `resolved.*.json`. No literal hex, no `color-mix()`, no magic numbers. Exception: exact pixel values already in a spec's `sizing` block (e.g. `"160px"` minWidth on `standard`).
41
- 2. **Color pairs travel together.** `sys.color.<role>Container` foreground MUST be `sys.color.on<Role>Container`. Retune the token; never split the pair. See [memory: token pairs].
41
+ 2. **Color pairs travel together.** `sys.color.<role>Container` foreground MUST be `sys.color.on<Role>Container`. Retune the token; never split the pair. See [`schema/DESIGN.md`](schema/DESIGN.md) color quartets.
42
42
  3. **No-layout strokes & focus rings.** Edge strokes are inset `box-shadow`, never `border:`. Focus rings are `::after` overlays. State/focus MUST NOT reflow the control. Always `box-sizing: border-box`. **Cards hosting a full-bleed child with its own opaque fill (cover band, hero thumbnail, header band under `overflow: hidden`) promote the outline stroke to the same `::after` overlay layer the focus ring uses** — an inset shadow on the card paints below the child and gets masked at edges the child touches. See [`schema/DESIGN.md`](schema/DESIGN.md).
43
43
  4. **Slot contract is closed.** `slots` enumerates every region. Do not introduce undeclared slots. Respect `slotCompatibility` when present.
44
44
  5. **States compose via overlay, not replacement.** Hover/pressed/focused/disabled overlay the resolved `appearance`. Use `DESIGN.md`'s recipe; do not invent per-component recipes.
@@ -139,5 +139,3 @@ Conventional Commits. Format: `type(scope): subject`.
139
139
  - **spec** — `<sub>.spec.json`: machine-readable contract for one sub-component.
140
140
  - **family.json** — family-level index: sub-components + family-wide axes (e.g. `flavor: ["default", "destructive"]`).
141
141
  - **resolved tokens** — `tokens/resolved.<theme>.json`: flat, fully-dereferenced bundles.
142
-
143
- [memory: token pairs]: claude-memory/feedback_token_pairs.md
package/agents/DESIGN.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Chorus design rationale
2
2
 
3
+ > 🇰🇷 한국어: [`i18n/ko/schema/DESIGN.md`](../i18n/ko/schema/DESIGN.md)
4
+
3
5
  > Single source of truth for every design rule in Chorus.
4
6
 
5
7
  Token JSON files in [`schema/tokens`](schema/tokens) hold values only; their meaning, intent, and usage live here. For an orientation to the repo, see [`README.md`](../README.md).