ui-foundations 0.3.1 → 0.4.1

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 (69) hide show
  1. package/README.md +179 -36
  2. package/dist/assets/icons/checkmark.svg +1 -0
  3. package/dist/core/index.css +7 -7
  4. package/dist/macros/ui.njk +142 -0
  5. package/dist/main.css +465 -173
  6. package/dist/react/badge.js +41 -0
  7. package/dist/react/button.js +15 -6
  8. package/dist/react/checkbox.js +30 -0
  9. package/dist/react/icon.js +19 -1
  10. package/dist/react/index.js +2 -0
  11. package/dist/react/label.js +1 -1
  12. package/dist/react/radio.js +62 -0
  13. package/dist/react/switch.js +18 -0
  14. package/dist/tokens/css/{appearance-(modes).tokens.mode-dark.css → appearance-modes.tokens.mode-dark.css} +1 -1
  15. package/dist/tokens/css/{appearance-(modes).tokens.mode-light.css → appearance-modes.tokens.mode-light.css} +1 -1
  16. package/dist/tokens/css/{components-(ui).tokens.css → components-ui.tokens.css} +46 -3
  17. package/dist/tokens/css/{core-(primitives).tokens.css → core-primitives.tokens.css} +61 -19
  18. package/dist/tokens/css/{semantics-(roles).tokens.css → semantics-roles.tokens.css} +1 -1
  19. package/dist/tokens/css/themes-brands.tokens.brand-a.css +22 -0
  20. package/dist/tokens/css/{themes-(brands).tokens.brand-b.css → themes-brands.tokens.brand-b.css} +9 -9
  21. package/dist/tokens/json/appearance-modes.tokens.mode-dark.json +121 -0
  22. package/dist/tokens/json/appearance-modes.tokens.mode-light.json +121 -0
  23. package/dist/tokens/json/components-ui.tokens.json +715 -0
  24. package/dist/tokens/json/{core-(primitives).tokens.json → core-primitives.tokens.json} +227 -413
  25. package/dist/tokens/json/semantics-roles.tokens.json +141 -0
  26. package/dist/tokens/json/themes-brands.tokens.brand-a.json +81 -0
  27. package/dist/tokens/json/themes-brands.tokens.brand-b.json +81 -0
  28. package/dist/tokens/missing-tokens.json +43 -0
  29. package/dist/tokens/tokens.yaml +1254 -149
  30. package/dist/tokens/ts/{appearance-(modes).tokens.mode-dark.ts → appearance-modes.tokens.mode-dark.ts} +1 -1
  31. package/dist/tokens/ts/{appearance-(modes).tokens.mode-light.ts → appearance-modes.tokens.mode-light.ts} +1 -1
  32. package/dist/tokens/ts/{components-(ui).tokens.ts → components-ui.tokens.ts} +47 -4
  33. package/dist/tokens/ts/{core-(primitives).tokens.ts → core-primitives.tokens.ts} +62 -20
  34. package/dist/tokens/ts/{semantics-(roles).tokens.ts → semantics-roles.tokens.ts} +1 -1
  35. package/dist/tokens/ts/{themes-(brands).tokens.brand-a.ts → themes-brands.tokens.brand-a.ts} +9 -9
  36. package/dist/tokens/ts/{themes-(brands).tokens.brand-b.ts → themes-brands.tokens.brand-b.ts} +9 -9
  37. package/dist/ui/index.css +2 -0
  38. package/dist/ui/patterns/badge.css +49 -0
  39. package/dist/ui/patterns/checkbox.css +71 -22
  40. package/dist/ui/patterns/radio.css +109 -0
  41. package/docs/README.md +38 -0
  42. package/docs/agentic/README.md +34 -0
  43. package/docs/agentic/assistant-behavior-rules.md +48 -0
  44. package/docs/agentic/skills/ux-writing-coach.md +116 -0
  45. package/docs/foundations/README.md +31 -0
  46. package/docs/foundations/foundation-001-token-layering.md +6 -0
  47. package/docs/foundations/foundation-002-naming-and-grouping.md +6 -0
  48. package/docs/foundations/foundation-003-color-semantics-and-status.md +6 -0
  49. package/docs/foundations/foundation-004-typography-scale-and-line-height.md +6 -0
  50. package/docs/foundations/foundation-005-responsive-breakpoints-and-containers.md +6 -0
  51. package/docs/foundations/foundation-006-z-index-layering.md +6 -0
  52. package/docs/foundations/foundation-007-typography-selectors-and-specificity.md +6 -0
  53. package/docs/foundations/foundation-008-mode-activation-and-consumer-control.md +6 -0
  54. package/docs/foundations/foundation-009-component-boundaries-and-utility.md +6 -0
  55. package/docs/foundations/foundation-010-implementation-and-pipeline-workflow.md +6 -0
  56. package/docs/foundations/foundation-011-branching-and-release-governance.md +6 -0
  57. package/docs/foundations/foundation-012-minimal-markup-and-composition.md +6 -0
  58. package/package.json +16 -14
  59. package/dist/tokens/css/themes-(brands).tokens.brand-a.css +0 -22
  60. package/dist/tokens/json/appearance-(modes).tokens.mode-dark.json +0 -182
  61. package/dist/tokens/json/appearance-(modes).tokens.mode-light.json +0 -182
  62. package/dist/tokens/json/components-(ui).tokens.json +0 -739
  63. package/dist/tokens/json/semantics-(roles).tokens.json +0 -203
  64. package/dist/tokens/json/themes-(brands).tokens.brand-a.json +0 -115
  65. package/dist/tokens/json/themes-(brands).tokens.brand-b.json +0 -115
  66. package/docs/agentic/skills/README.md +0 -51
  67. package/docs/agentic/skills/design-ops-specialist/SKILL.md +0 -60
  68. package/docs/agentic/skills/design-system-architect/SKILL.md +0 -106
  69. package/docs/agentic/team-ai-playbook.md +0 -226
@@ -1,203 +0,0 @@
1
- {
2
- "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
3
- "Typography": {
4
- "Heading": {
5
- "Font Family": {
6
- "$type": "fontFamily",
7
- "$value": {
8
- "$ref": "Brand/Font/Lead"
9
- }
10
- },
11
- "Font Size": {
12
- "md": {
13
- "$type": "number",
14
- "$value": {
15
- "$ref": "Font/Size/md"
16
- }
17
- },
18
- "xs": {
19
- "$type": "number",
20
- "$value": {
21
- "$ref": "Font/Size/xs"
22
- }
23
- },
24
- "sm": {
25
- "$type": "number",
26
- "$value": {
27
- "$ref": "Font/Size/sm"
28
- }
29
- },
30
- "lg": {
31
- "$type": "number",
32
- "$value": {
33
- "$ref": "Font/Size/lg"
34
- }
35
- },
36
- "xl": {
37
- "$type": "number",
38
- "$value": {
39
- "$ref": "Font/Size/xl"
40
- }
41
- },
42
- "xxl": {
43
- "$type": "number",
44
- "$value": {
45
- "$ref": "Font/Size/xxl"
46
- }
47
- },
48
- "xxxl": {
49
- "$type": "number",
50
- "$value": {
51
- "$ref": "Font/Size/xxxl"
52
- }
53
- }
54
- },
55
- "Font Weight": {
56
- "$type": "fontWeight",
57
- "$value": {
58
- "$ref": "Font/Weight/700"
59
- }
60
- },
61
- "Line Height": {
62
- "md": {
63
- "$type": "number",
64
- "$value": {
65
- "$ref": "Line Height/md"
66
- }
67
- },
68
- "xs": {
69
- "$type": "number",
70
- "$value": {
71
- "$ref": "Line Height/xs"
72
- }
73
- },
74
- "sm": {
75
- "$type": "number",
76
- "$value": {
77
- "$ref": "Line Height/sm"
78
- }
79
- },
80
- "lg": {
81
- "$type": "number",
82
- "$value": {
83
- "$ref": "Line Height/lg"
84
- }
85
- },
86
- "xl": {
87
- "$type": "number",
88
- "$value": {
89
- "$ref": "Line Height/xl"
90
- }
91
- },
92
- "xxl": {
93
- "$type": "number",
94
- "$value": {
95
- "$ref": "Line Height/xxl"
96
- }
97
- },
98
- "xxxl": {
99
- "$type": "number",
100
- "$value": {
101
- "$ref": "Line Height/xxxl"
102
- }
103
- }
104
- }
105
- },
106
- "Code": {
107
- "$type": "fontFamily",
108
- "$value": {
109
- "$ref": "Font/Family/Mono"
110
- }
111
- },
112
- "Label": {
113
- "Font Family": {
114
- "$type": "fontFamily",
115
- "$value": {
116
- "$ref": "Brand/Font/Lead"
117
- }
118
- },
119
- "Font Weight": {
120
- "$type": "fontWeight",
121
- "$value": {
122
- "$ref": "Font/Weight/600"
123
- }
124
- },
125
- "Font Size": {
126
- "$type": "number",
127
- "$value": {
128
- "$ref": "Font/Size/md"
129
- }
130
- },
131
- "Line Height": {
132
- "$type": "number",
133
- "$value": {
134
- "$ref": "Line Height/md"
135
- }
136
- },
137
- "Gap": {
138
- "$type": "number",
139
- "$value": {
140
- "$ref": "Size/Spacing/200"
141
- }
142
- }
143
- },
144
- "Body": {
145
- "Font Family": {
146
- "$type": "fontFamily",
147
- "$value": {
148
- "$ref": "Brand/Font/Base"
149
- }
150
- },
151
- "Font Weight": {
152
- "$type": "fontWeight",
153
- "$value": {
154
- "$ref": "Font/Weight/400"
155
- }
156
- },
157
- "Font Size": {
158
- "$type": "number",
159
- "$value": {
160
- "$ref": "Font/Size/md"
161
- }
162
- },
163
- "Line Height": {
164
- "$type": "number",
165
- "$value": {
166
- "$ref": "Line Height/md"
167
- }
168
- }
169
- }
170
- },
171
- "Corner": {
172
- "Button Radius": {
173
- "$type": "number",
174
- "$value": {
175
- "$ref": "Brand/Corner/Button"
176
- }
177
- },
178
- "Card Radius": {
179
- "$type": "number",
180
- "$value": {
181
- "$ref": "Brand/Corner/Card"
182
- }
183
- },
184
- "Modal Radius": {
185
- "$type": "number",
186
- "$value": {
187
- "$ref": "Brand/Corner/Modal"
188
- }
189
- },
190
- "Form Radius": {
191
- "$type": "number",
192
- "$value": {
193
- "$ref": "Brand/Corner/Card"
194
- }
195
- },
196
- "Checkbox Radius": {
197
- "$type": "number",
198
- "$value": {
199
- "$ref": "Brand/Corner/Input"
200
- }
201
- }
202
- }
203
- }
@@ -1,115 +0,0 @@
1
- {
2
- "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
3
- "Brand": {
4
- "Color": {
5
- "Functional": {
6
- "Success": {
7
- "$type": "color",
8
- "$value": {
9
- "$ref": "Color/Brand A/Green"
10
- }
11
- },
12
- "Danger": {
13
- "$type": "color",
14
- "$value": {
15
- "$ref": "Color/Brand A/Red"
16
- }
17
- },
18
- "Base": {
19
- "$type": "color",
20
- "$value": {
21
- "$ref": "Color/Brand A/Blue/700"
22
- }
23
- },
24
- "Base Dark": {
25
- "$type": "color",
26
- "$value": {
27
- "$ref": "Color/Brand A/Blue/800"
28
- }
29
- }
30
- },
31
- "Primary": {
32
- "$type": "color",
33
- "$value": {
34
- "$ref": "Color/Brand A/Purple/600"
35
- }
36
- },
37
- "Accent": {
38
- "$type": "color",
39
- "$value": {
40
- "$ref": "Color/Brand A/Blue/500"
41
- }
42
- },
43
- "Primary Dark": {
44
- "$type": "color",
45
- "$value": {
46
- "$ref": "Color/Brand A/Purple/800"
47
- }
48
- },
49
- "Accent Dark": {
50
- "$type": "color",
51
- "$value": {
52
- "$ref": "Color/Brand A/Blue/700"
53
- }
54
- },
55
- "Subtle": {
56
- "$type": "color",
57
- "$value": {
58
- "$ref": "Color/Neutral/500"
59
- }
60
- },
61
- "Subtle Dark": {
62
- "$type": "color",
63
- "$value": {
64
- "$ref": "Color/Neutral/800"
65
- }
66
- },
67
- "Subtle Light": {
68
- "$type": "color",
69
- "$value": {
70
- "$ref": "Color/Neutral/200"
71
- }
72
- }
73
- },
74
- "Font": {
75
- "Base": {
76
- "$type": "string",
77
- "$value": {
78
- "$ref": "Font/Family/Sans"
79
- }
80
- },
81
- "Lead": {
82
- "$type": "string",
83
- "$value": {
84
- "$ref": "Font/Family/Serif"
85
- }
86
- }
87
- },
88
- "Corner": {
89
- "Button": {
90
- "$type": "number",
91
- "$value": {
92
- "$ref": "Size/Radius/700"
93
- }
94
- },
95
- "Card": {
96
- "$type": "number",
97
- "$value": {
98
- "$ref": "Size/Radius/200"
99
- }
100
- },
101
- "Modal": {
102
- "$type": "number",
103
- "$value": {
104
- "$ref": "Size/Radius/400"
105
- }
106
- },
107
- "Input": {
108
- "$type": "number",
109
- "$value": {
110
- "$ref": "Size/Radius/200"
111
- }
112
- }
113
- }
114
- }
115
- }
@@ -1,115 +0,0 @@
1
- {
2
- "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
3
- "Brand": {
4
- "Color": {
5
- "Functional": {
6
- "Success": {
7
- "$type": "color",
8
- "$value": {
9
- "$ref": "Color/Brand A/Green"
10
- }
11
- },
12
- "Danger": {
13
- "$type": "color",
14
- "$value": {
15
- "$ref": "Color/Brand A/Red"
16
- }
17
- },
18
- "Base": {
19
- "$type": "color",
20
- "$value": {
21
- "$ref": "Color/Brand A/Blue/700"
22
- }
23
- },
24
- "Base Dark": {
25
- "$type": "color",
26
- "$value": {
27
- "$ref": "Color/Brand A/Blue/800"
28
- }
29
- }
30
- },
31
- "Primary": {
32
- "$type": "color",
33
- "$value": {
34
- "$ref": "Color/Brand A/Purple/600"
35
- }
36
- },
37
- "Accent": {
38
- "$type": "color",
39
- "$value": {
40
- "$ref": "Color/Brand A/Blue/500"
41
- }
42
- },
43
- "Primary Dark": {
44
- "$type": "color",
45
- "$value": {
46
- "$ref": "Color/Brand A/Purple/800"
47
- }
48
- },
49
- "Accent Dark": {
50
- "$type": "color",
51
- "$value": {
52
- "$ref": "Color/Brand A/Blue/700"
53
- }
54
- },
55
- "Subtle": {
56
- "$type": "color",
57
- "$value": {
58
- "$ref": "Color/Neutral/500"
59
- }
60
- },
61
- "Subtle Dark": {
62
- "$type": "color",
63
- "$value": {
64
- "$ref": "Color/Neutral/800"
65
- }
66
- },
67
- "Subtle Light": {
68
- "$type": "color",
69
- "$value": {
70
- "$ref": "Color/Neutral/200"
71
- }
72
- }
73
- },
74
- "Font": {
75
- "Base": {
76
- "$type": "string",
77
- "$value": {
78
- "$ref": "Font/Family/Sans"
79
- }
80
- },
81
- "Lead": {
82
- "$type": "string",
83
- "$value": {
84
- "$ref": "Font/Family/Serif"
85
- }
86
- }
87
- },
88
- "Corner": {
89
- "Button": {
90
- "$type": "number",
91
- "$value": {
92
- "$ref": "Size/Radius/700"
93
- }
94
- },
95
- "Card": {
96
- "$type": "number",
97
- "$value": {
98
- "$ref": "Size/Radius/200"
99
- }
100
- },
101
- "Modal": {
102
- "$type": "number",
103
- "$value": {
104
- "$ref": "Size/Radius/400"
105
- }
106
- },
107
- "Input": {
108
- "$type": "number",
109
- "$value": {
110
- "$ref": "Size/Radius/200"
111
- }
112
- }
113
- }
114
- }
115
- }
@@ -1,51 +0,0 @@
1
- # Agentic Skills
2
-
3
- This directory contains repo-specific skills for AI-assisted design-system work.
4
-
5
- ## Available skills
6
-
7
- ### design-ops-specialist
8
-
9
- Use for tactical, proposal-first work:
10
-
11
- - minimal component drafts
12
- - token naming proposals
13
- - CSS pattern structure suggestions
14
- - optional React wrapper API sketches
15
- - docs/playground integration plans
16
-
17
- Best when the question is close to implementation and should stay incremental and non-breaking.
18
-
19
- Path:
20
- - `docs/agentic/skills/design-ops-specialist/SKILL.md`
21
-
22
- ### design-system-architect
23
-
24
- Use for strategic, system-level work:
25
-
26
- - foundation reviews
27
- - token governance decisions
28
- - component boundary decisions
29
- - Figma/code reconciliation
30
- - architecture-level handoff and system recommendations
31
-
32
- Best when the question is about whether something belongs in the system at all, how foundations should evolve, or how to restore consistency across Figma, tokens, code, and docs.
33
-
34
- Path:
35
- - `docs/agentic/skills/design-system-architect/SKILL.md`
36
-
37
- ## Quick selection guide
38
-
39
- Use `design-ops-specialist` when the question sounds like:
40
-
41
- - "Propose a draft for this component"
42
- - "How should the token names look?"
43
- - "What files would change?"
44
- - "How would the CSS and docs be structured?"
45
-
46
- Use `design-system-architect` when the question sounds like:
47
-
48
- - "Should this be a standalone component or composition?"
49
- - "Do we need new semantic tokens?"
50
- - "Are the foundations still coherent?"
51
- - "How do we reconcile Figma and code drift?"
@@ -1,60 +0,0 @@
1
- ---
2
- name: design-ops-specialist
3
- description: "Tactical proposal-first guidance for token-first component work in this repo and package consumers. Use when a request asks for a minimal component draft, token naming proposal, CSS pattern structure under src/ui/patterns, optional React wrapper API, docs/playground integration, or a concrete implementation plan that should stay incremental and non-breaking. Prefer design-system-architect instead when the request is about foundations, token governance, component-boundary decisions, Figma/code drift, or system-wide architecture."
4
- ---
5
-
6
- # Design Ops Specialist
7
-
8
- ## Intent
9
-
10
- Use this skill for tactical, proposal-first work before or just ahead of implementation.
11
-
12
- This skill is narrower than `design-system-architect`.
13
-
14
- - Use `design-ops-specialist` for concrete component drafts and repo-shaped implementation proposals.
15
- - Use `design-system-architect` for system-wide reviews, governance, and architecture decisions.
16
-
17
- ## Workflow
18
-
19
- 1. Confirm scope and constraints:
20
- - component name
21
- - parts / variants / states
22
- - platform or framework constraints
23
- - whether the ask is proposal-only or implementation-adjacent
24
- 2. Align with source rules:
25
- - `docs/foundations/`
26
- - `docs/agentic/assistant-behavior-rules.md`
27
- - `docs/agentic/team-ai-playbook.md`
28
- 3. If the request implies a new system component, call out that boundary validation is required and defer the strategic decision to `design-system-architect` when needed.
29
- 4. Produce a concise proposal by default, with no code changes unless explicitly requested.
30
- 5. Keep proposals minimal, incremental, and non-breaking.
31
-
32
- ## Output format
33
-
34
- Provide these sections:
35
-
36
- 1. Boundary assumption
37
- - whether this is assumed to be composition or a valid standalone candidate
38
- - if unclear, say so briefly
39
- 2. Token naming proposal
40
- - prefix, variants, parts, states
41
- - alignment to foundations naming rules
42
- 3. CSS pattern structure
43
- - target files under `src/ui/patterns` or existing family integration
44
- - expected class names and token hookups
45
- 4. Optional React wrapper API
46
- - only when requested or clearly needed
47
- - props mapped to token variants/states
48
- 5. Docs + playground integration
49
- - required docs pages/sections
50
- - playground additions or updates
51
- 6. Implementation surface
52
- - exact repo paths likely to change
53
-
54
- ## Guardrails
55
-
56
- - Prefer extending existing patterns over introducing new frameworks.
57
- - Keep recommendations compatible with token-first and Figma-aligned architecture.
58
- - Do not broaden into foundations governance unless explicitly asked.
59
- - If requirements are underspecified, ask targeted clarifying questions or state minimal assumptions.
60
- - If the task is really about whether something belongs in the system at all, hand off conceptually to `design-system-architect`.
@@ -1,106 +0,0 @@
1
- ---
2
- name: design-system-architect
3
- description: "Strategic design-system architecture for this repo. Use when reviewing or evolving foundations, deciding token governance, evaluating component boundaries, reconciling Figma/code drift, auditing semantic coverage, or making architecture-level decisions that span beyond a single component proposal. Prefer this skill over design-ops-specialist when the request is system-wide, governance-heavy, or about whether something should enter the system at all."
4
- ---
5
-
6
- # Design System Architect
7
-
8
- ## Intent
9
-
10
- Use this skill for system-level decisions, reviews, and governance.
11
-
12
- This skill is broader than `design-ops-specialist`.
13
-
14
- - Use `design-ops-specialist` for tactical, proposal-first component drafts.
15
- - Use `design-system-architect` for architecture, boundaries, token governance, and Figma/code alignment decisions.
16
-
17
- ## Required source alignment
18
-
19
- Before responding, align to these repo sources:
20
-
21
- - `docs/foundations/`
22
- - `docs/agentic/assistant-behavior-rules.md`
23
- - `docs/agentic/team-ai-playbook.md`
24
-
25
- At minimum, check these when relevant:
26
-
27
- - `docs/foundations/foundation-001-token-layering.md`
28
- - `docs/foundations/foundation-002-naming-and-grouping.md`
29
- - `docs/foundations/foundation-003-color-semantics-and-status.md`
30
- - `docs/foundations/foundation-009-component-boundaries-and-utility.md`
31
- - `docs/foundations/foundation-010-implementation-and-pipeline-workflow.md`
32
- - `docs/foundations/foundation-011-branching-and-release-governance.md`
33
-
34
- ## Task types
35
-
36
- ### 1. Foundation review
37
-
38
- Use when reviewing the health of the system.
39
-
40
- Check for:
41
-
42
- - layering integrity
43
- - semantic gaps
44
- - naming drift
45
- - duplicate concepts
46
- - hard-coded or leaky component decisions
47
- - weak state coverage
48
- - Figma/code mismatch
49
-
50
- ### 2. Token governance
51
-
52
- Use when deciding whether to create, alias, rename, or reject token changes.
53
-
54
- Report:
55
-
56
- - correct layer
57
- - rationale
58
- - consumer scope
59
- - theme/mode impact
60
- - migration implications
61
-
62
- ### 3. Boundary decision
63
-
64
- Use before proposing or implementing a new component.
65
-
66
- Decide:
67
-
68
- - composition inside an existing family, or
69
- - standalone system component
70
-
71
- Apply the Snowflake check from `foundation-009`.
72
-
73
- ### 4. Figma/code reconciliation
74
-
75
- Use when system contracts drift between Figma and implementation.
76
-
77
- Review:
78
-
79
- - token exports in `figma/exports/`
80
- - Code Connect mappings in `figma/connections/`
81
- - implementation in `src/ui/` and `src/react/`
82
- - docs/playground representation in `site/components/`
83
-
84
- ### 5. System handoff
85
-
86
- Use when another designer or engineer needs a structured architectural recommendation.
87
-
88
- ## Output format
89
-
90
- Provide these sections when relevant:
91
-
92
- 1. Task type
93
- 2. Current system reading
94
- 3. Decision
95
- 4. Rationale
96
- 5. Repo surfaces affected
97
- 6. Risks / mismatches
98
- 7. Recommended next step
99
-
100
- ## Guardrails
101
-
102
- - Do not invent raw values inside components.
103
- - Keep the 4-layer architecture intact.
104
- - Treat token work and component boundary decisions as separate questions.
105
- - Prefer small, reviewable changes and feature-branch delivery.
106
- - Say explicitly when something should remain local instead of entering the system.