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.
- package/README.md +179 -36
- package/dist/assets/icons/checkmark.svg +1 -0
- package/dist/core/index.css +7 -7
- package/dist/macros/ui.njk +142 -0
- package/dist/main.css +465 -173
- package/dist/react/badge.js +41 -0
- package/dist/react/button.js +15 -6
- package/dist/react/checkbox.js +30 -0
- package/dist/react/icon.js +19 -1
- package/dist/react/index.js +2 -0
- package/dist/react/label.js +1 -1
- package/dist/react/radio.js +62 -0
- package/dist/react/switch.js +18 -0
- package/dist/tokens/css/{appearance-(modes).tokens.mode-dark.css → appearance-modes.tokens.mode-dark.css} +1 -1
- package/dist/tokens/css/{appearance-(modes).tokens.mode-light.css → appearance-modes.tokens.mode-light.css} +1 -1
- package/dist/tokens/css/{components-(ui).tokens.css → components-ui.tokens.css} +46 -3
- package/dist/tokens/css/{core-(primitives).tokens.css → core-primitives.tokens.css} +61 -19
- package/dist/tokens/css/{semantics-(roles).tokens.css → semantics-roles.tokens.css} +1 -1
- package/dist/tokens/css/themes-brands.tokens.brand-a.css +22 -0
- package/dist/tokens/css/{themes-(brands).tokens.brand-b.css → themes-brands.tokens.brand-b.css} +9 -9
- package/dist/tokens/json/appearance-modes.tokens.mode-dark.json +121 -0
- package/dist/tokens/json/appearance-modes.tokens.mode-light.json +121 -0
- package/dist/tokens/json/components-ui.tokens.json +715 -0
- package/dist/tokens/json/{core-(primitives).tokens.json → core-primitives.tokens.json} +227 -413
- package/dist/tokens/json/semantics-roles.tokens.json +141 -0
- package/dist/tokens/json/themes-brands.tokens.brand-a.json +81 -0
- package/dist/tokens/json/themes-brands.tokens.brand-b.json +81 -0
- package/dist/tokens/missing-tokens.json +43 -0
- package/dist/tokens/tokens.yaml +1254 -149
- package/dist/tokens/ts/{appearance-(modes).tokens.mode-dark.ts → appearance-modes.tokens.mode-dark.ts} +1 -1
- package/dist/tokens/ts/{appearance-(modes).tokens.mode-light.ts → appearance-modes.tokens.mode-light.ts} +1 -1
- package/dist/tokens/ts/{components-(ui).tokens.ts → components-ui.tokens.ts} +47 -4
- package/dist/tokens/ts/{core-(primitives).tokens.ts → core-primitives.tokens.ts} +62 -20
- package/dist/tokens/ts/{semantics-(roles).tokens.ts → semantics-roles.tokens.ts} +1 -1
- package/dist/tokens/ts/{themes-(brands).tokens.brand-a.ts → themes-brands.tokens.brand-a.ts} +9 -9
- package/dist/tokens/ts/{themes-(brands).tokens.brand-b.ts → themes-brands.tokens.brand-b.ts} +9 -9
- package/dist/ui/index.css +2 -0
- package/dist/ui/patterns/badge.css +49 -0
- package/dist/ui/patterns/checkbox.css +71 -22
- package/dist/ui/patterns/radio.css +109 -0
- package/docs/README.md +38 -0
- package/docs/agentic/README.md +34 -0
- package/docs/agentic/assistant-behavior-rules.md +48 -0
- package/docs/agentic/skills/ux-writing-coach.md +116 -0
- package/docs/foundations/README.md +31 -0
- package/docs/foundations/foundation-001-token-layering.md +6 -0
- package/docs/foundations/foundation-002-naming-and-grouping.md +6 -0
- package/docs/foundations/foundation-003-color-semantics-and-status.md +6 -0
- package/docs/foundations/foundation-004-typography-scale-and-line-height.md +6 -0
- package/docs/foundations/foundation-005-responsive-breakpoints-and-containers.md +6 -0
- package/docs/foundations/foundation-006-z-index-layering.md +6 -0
- package/docs/foundations/foundation-007-typography-selectors-and-specificity.md +6 -0
- package/docs/foundations/foundation-008-mode-activation-and-consumer-control.md +6 -0
- package/docs/foundations/foundation-009-component-boundaries-and-utility.md +6 -0
- package/docs/foundations/foundation-010-implementation-and-pipeline-workflow.md +6 -0
- package/docs/foundations/foundation-011-branching-and-release-governance.md +6 -0
- package/docs/foundations/foundation-012-minimal-markup-and-composition.md +6 -0
- package/package.json +16 -14
- package/dist/tokens/css/themes-(brands).tokens.brand-a.css +0 -22
- package/dist/tokens/json/appearance-(modes).tokens.mode-dark.json +0 -182
- package/dist/tokens/json/appearance-(modes).tokens.mode-light.json +0 -182
- package/dist/tokens/json/components-(ui).tokens.json +0 -739
- package/dist/tokens/json/semantics-(roles).tokens.json +0 -203
- package/dist/tokens/json/themes-(brands).tokens.brand-a.json +0 -115
- package/dist/tokens/json/themes-(brands).tokens.brand-b.json +0 -115
- package/docs/agentic/skills/README.md +0 -51
- package/docs/agentic/skills/design-ops-specialist/SKILL.md +0 -60
- package/docs/agentic/skills/design-system-architect/SKILL.md +0 -106
- package/docs/agentic/team-ai-playbook.md +0 -226
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-
|
|
2
|
+
// Generated on 2026-04-28T09:23:28.559Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"components": {
|
|
@@ -93,18 +93,41 @@ export const tokens = {
|
|
|
93
93
|
"--input-overlay-active": "var(--color-transparent)",
|
|
94
94
|
"--input-height": "2.5rem",
|
|
95
95
|
"--input-checkbox-text-color-default": "var(--color-text-default)",
|
|
96
|
-
"--input-checkbox-text-color-hover": "var(--color-text-
|
|
96
|
+
"--input-checkbox-text-color-hover": "var(--color-text-strong)",
|
|
97
97
|
"--input-checkbox-text-color-active": "var(--color-text-inverse)",
|
|
98
98
|
"--input-checkbox-border-color-default": "var(--color-border-subtle)",
|
|
99
|
-
"--input-checkbox-border-color-hover": "var(--color-border-
|
|
99
|
+
"--input-checkbox-border-color-hover": "var(--color-border-strong)",
|
|
100
100
|
"--input-checkbox-border-color-active": "var(--color-border-brand)",
|
|
101
101
|
"--input-checkbox-border-color-focus": "var(--color-border-brand)",
|
|
102
102
|
"--input-checkbox-border-color-invalid": "var(--color-border-danger)",
|
|
103
103
|
"--input-checkbox-border-color-valid": "var(--color-border-strong)",
|
|
104
|
+
"--input-checkbox-border-color-disabled": "var(--color-border-disabled)",
|
|
104
105
|
"--input-checkbox-container-background-default": "var(--color-fill-surface)",
|
|
105
106
|
"--input-checkbox-container-background-hover": "var(--color-fill-surface)",
|
|
106
107
|
"--input-checkbox-container-background-focus": "var(--color-fill-surface)",
|
|
107
108
|
"--input-checkbox-container-background-active": "var(--color-fill-brand)",
|
|
109
|
+
"--input-checkbox-container-background-disabled": "var(--color-fill-disabled)",
|
|
110
|
+
"--input-checkbox-text-color-disabled": "var(--color-text-disabled)",
|
|
111
|
+
"--checkbox-border-size-hover": "var(--size-border-200)",
|
|
112
|
+
"--checkbox-border-size-disabled": "var(--size-border-000)",
|
|
113
|
+
"--checkbox-border-size-default": "var(--size-border-100)",
|
|
114
|
+
"--input-radio-text-color-default": "var(--color-text-default)",
|
|
115
|
+
"--input-radio-text-color-hover": "var(--color-text-strong)",
|
|
116
|
+
"--input-radio-text-color-active": "var(--color-text-inverse)",
|
|
117
|
+
"--input-radio-text-color-disabled": "var(--color-text-disabled)",
|
|
118
|
+
"--input-radio-border-color-default": "var(--color-border-subtle)",
|
|
119
|
+
"--input-radio-border-color-hover": "var(--color-border-strong)",
|
|
120
|
+
"--input-radio-border-color-active": "var(--color-border-brand)",
|
|
121
|
+
"--input-radio-border-color-focus": "var(--color-border-brand)",
|
|
122
|
+
"--input-radio-border-color-disabled": "var(--color-border-disabled)",
|
|
123
|
+
"--input-radio-container-background-default": "var(--color-fill-surface)",
|
|
124
|
+
"--input-radio-container-background-hover": "var(--color-fill-surface)",
|
|
125
|
+
"--input-radio-container-background-focus": "var(--color-fill-surface)",
|
|
126
|
+
"--input-radio-container-background-active": "var(--color-fill-brand)",
|
|
127
|
+
"--input-radio-container-background-disabled": "var(--color-fill-disabled)",
|
|
128
|
+
"--radio-border-size-default": "var(--size-border-100)",
|
|
129
|
+
"--radio-border-size-hover": "var(--size-border-200)",
|
|
130
|
+
"--radio-border-size-disabled": "var(--size-border-000)",
|
|
108
131
|
"--form-group-gap": "var(--size-spacing-400)",
|
|
109
132
|
"--form-group-title-color": "var(--color-text-default)",
|
|
110
133
|
"--form-padding-inline": "var(--size-spacing-400)",
|
|
@@ -116,7 +139,27 @@ export const tokens = {
|
|
|
116
139
|
"--form-field-helper-text-color-invalid": "var(--color-text-danger)",
|
|
117
140
|
"--form-container-background": "var(--color-fill-surface)",
|
|
118
141
|
"--form-container-border-color": "var(--color-border-subtle)",
|
|
119
|
-
"--form-border-size": "var(--size-border-100)"
|
|
142
|
+
"--form-border-size": "var(--size-border-100)",
|
|
143
|
+
"--badge-default-container-background": "var(--color-fill-subtle)",
|
|
144
|
+
"--badge-default-text-color": "var(--color-text-default)",
|
|
145
|
+
"--badge-brand-container-background": "var(--color-fill-brand)",
|
|
146
|
+
"--badge-brand-text-color": "var(--color-text-inverse)",
|
|
147
|
+
"--badge-success-container-background": "var(--color-fill-success)",
|
|
148
|
+
"--badge-success-text-color": "var(--color-text-inverse)",
|
|
149
|
+
"--badge-danger-container-background": "var(--color-fill-danger)",
|
|
150
|
+
"--badge-danger-text-color": "var(--color-text-inverse)",
|
|
151
|
+
"--badge-border-radius": "var(--size-radius-full)",
|
|
152
|
+
"--badge-font-family": "var(--typography-label-font-family)",
|
|
153
|
+
"--badge-font-weight": "var(--font-weight-700)",
|
|
154
|
+
"--badge-font-size-sm": "var(--font-size-xs)",
|
|
155
|
+
"--badge-font-size-md": "var(--font-size-sm)",
|
|
156
|
+
"--badge-line-height-sm": "var(--line-height-xs)",
|
|
157
|
+
"--badge-line-height-md": "var(--line-height-sm)",
|
|
158
|
+
"--badge-padding-inline-sm": "var(--size-spacing-200)",
|
|
159
|
+
"--badge-padding-inline-md": "var(--size-spacing-300)",
|
|
160
|
+
"--badge-padding-block-sm": "var(--size-spacing-000)",
|
|
161
|
+
"--badge-padding-block-md": "var(--size-spacing-100)",
|
|
162
|
+
"--badge-gap": "var(--size-spacing-100)"
|
|
120
163
|
}
|
|
121
164
|
} as const;
|
|
122
165
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-
|
|
2
|
+
// Generated on 2026-04-28T09:23:28.563Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
@@ -24,25 +24,67 @@ export const tokens = {
|
|
|
24
24
|
"--color-neutral-alpha-900": "rgba(0 0 0 / 0.9)",
|
|
25
25
|
"--color-neutral-alpha-000": "rgba(0 0 0 / 0)",
|
|
26
26
|
"--color-neutral-000": "rgb(255 255 255)",
|
|
27
|
-
"--color-brand-
|
|
28
|
-
"--color-brand-
|
|
29
|
-
"--color-brand-
|
|
30
|
-
"--color-brand-
|
|
31
|
-
"--color-brand-
|
|
32
|
-
"--color-brand-
|
|
33
|
-
"--color-brand-
|
|
34
|
-
"--color-brand-
|
|
35
|
-
"--color-brand-
|
|
36
|
-
"--color-brand-b-
|
|
37
|
-
"--color-brand-b-
|
|
38
|
-
"--color-brand-b-
|
|
39
|
-
"--color-brand-b-blue-
|
|
40
|
-
"--color-brand-b-blue-
|
|
41
|
-
"--color-brand-b-blue-
|
|
42
|
-
"--color-brand-b-
|
|
43
|
-
"--color-brand-b-red": "rgb(204
|
|
44
|
-
"--color-brand-b-
|
|
45
|
-
"--color-
|
|
27
|
+
"--color-brand-b-purple-200": "rgb(222 192 255)",
|
|
28
|
+
"--color-brand-b-purple-300": "rgb(196 143 255)",
|
|
29
|
+
"--color-brand-b-purple-600": "rgb(151 71 255)",
|
|
30
|
+
"--color-brand-b-purple-700": "rgb(122 20 255)",
|
|
31
|
+
"--color-brand-b-purple-800": "rgb(85 26 139)",
|
|
32
|
+
"--color-brand-b-purple-900": "rgb(58 18 95)",
|
|
33
|
+
"--color-brand-b-blue-100": "rgb(206 219 253)",
|
|
34
|
+
"--color-brand-b-blue-200": "rgb(158 183 250)",
|
|
35
|
+
"--color-brand-b-blue-300": "rgb(109 147 248)",
|
|
36
|
+
"--color-brand-b-blue-400": "rgb(61 111 245)",
|
|
37
|
+
"--color-brand-b-blue-500": "rgb(12 75 243)",
|
|
38
|
+
"--color-brand-b-blue-600": "rgb(10 60 194)",
|
|
39
|
+
"--color-brand-b-blue-700": "rgb(7 45 146)",
|
|
40
|
+
"--color-brand-b-blue-800": "rgb(5 30 97)",
|
|
41
|
+
"--color-brand-b-blue-900": "rgb(2 15 49)",
|
|
42
|
+
"--color-brand-b-red-100": "rgb(255 255 255)",
|
|
43
|
+
"--color-brand-b-red-200": "rgb(255 204 204)",
|
|
44
|
+
"--color-brand-b-red-300": "rgb(255 153 153)",
|
|
45
|
+
"--color-brand-b-red-400": "rgb(255 102 102)",
|
|
46
|
+
"--color-brand-b-red-500": "rgb(255 51 51)",
|
|
47
|
+
"--color-brand-b-red-600": "rgb(255 0 0)",
|
|
48
|
+
"--color-brand-b-red-700": "rgb(153 0 0)",
|
|
49
|
+
"--color-brand-b-red-800": "rgb(102 0 0)",
|
|
50
|
+
"--color-brand-b-red-900": "rgb(51 0 0)",
|
|
51
|
+
"--color-brand-b-green-100": "rgb(246 254 250)",
|
|
52
|
+
"--color-brand-b-green-200": "rgb(200 249 223)",
|
|
53
|
+
"--color-brand-b-green-300": "rgb(154 244 196)",
|
|
54
|
+
"--color-brand-b-green-400": "rgb(108 239 170)",
|
|
55
|
+
"--color-brand-b-green-500": "rgb(62 234 143)",
|
|
56
|
+
"--color-brand-b-green-600": "rgb(19 174 92)",
|
|
57
|
+
"--color-brand-b-green-700": "rgb(14 129 68)",
|
|
58
|
+
"--color-brand-b-green-800": "rgb(8 69 36)",
|
|
59
|
+
"--color-brand-b-green-900": "rgb(4 37 19)",
|
|
60
|
+
"--color-transparent": "rgba(0 0 0 / 0)",
|
|
61
|
+
"--color-brand-a-green-100": "rgb(243 246 233)",
|
|
62
|
+
"--color-brand-a-green-200": "rgb(223 231 197)",
|
|
63
|
+
"--color-brand-a-green-300": "rgb(207 219 169)",
|
|
64
|
+
"--color-brand-a-green-400": "rgb(191 207 140)",
|
|
65
|
+
"--color-brand-a-green-500": "rgb(175 195 111)",
|
|
66
|
+
"--color-brand-a-green-600": "rgb(159 183 82)",
|
|
67
|
+
"--color-brand-a-green-700": "rgb(137 158 66)",
|
|
68
|
+
"--color-brand-a-green-800": "rgb(112 129 54)",
|
|
69
|
+
"--color-brand-a-green-900": "rgb(81 93 39)",
|
|
70
|
+
"--color-brand-a-red-100": "rgb(254 251 251)",
|
|
71
|
+
"--color-brand-a-red-200": "rgb(250 224 230)",
|
|
72
|
+
"--color-brand-a-red-300": "rgb(244 179 195)",
|
|
73
|
+
"--color-brand-a-red-400": "rgb(238 135 160)",
|
|
74
|
+
"--color-brand-a-red-500": "rgb(231 90 124)",
|
|
75
|
+
"--color-brand-a-red-600": "rgb(225 46 89)",
|
|
76
|
+
"--color-brand-a-red-700": "rgb(191 28 67)",
|
|
77
|
+
"--color-brand-a-red-800": "rgb(147 21 52)",
|
|
78
|
+
"--color-brand-a-red-900": "rgb(102 15 36)",
|
|
79
|
+
"--color-brand-a-sand-100": "rgb(240 240 229)",
|
|
80
|
+
"--color-brand-a-sand-200": "rgb(221 222 197)",
|
|
81
|
+
"--color-brand-a-sand-300": "rgb(192 193 172)",
|
|
82
|
+
"--color-brand-a-sand-400": "rgb(164 165 147)",
|
|
83
|
+
"--color-brand-a-sand-500": "rgb(136 137 122)",
|
|
84
|
+
"--color-brand-a-sand-600": "rgb(108 109 97)",
|
|
85
|
+
"--color-brand-a-sand-700": "rgb(80 81 72)",
|
|
86
|
+
"--color-brand-a-sand-800": "rgb(52 52 47)",
|
|
87
|
+
"--color-brand-a-sand-900": "rgb(24 24 22)"
|
|
46
88
|
},
|
|
47
89
|
"typography": {
|
|
48
90
|
"--font-size-md": "1rem",
|
package/dist/tokens/ts/{themes-(brands).tokens.brand-a.ts → themes-brands.tokens.brand-a.ts}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-
|
|
2
|
+
// Generated on 2026-04-28T09:23:28.565Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
-
"--brand-color-functional-success": "var(--color-brand-a-green)",
|
|
7
|
-
"--brand-color-functional-danger": "var(--color-brand-a-red)",
|
|
8
|
-
"--brand-color-functional-base": "var(--color-brand-a-
|
|
9
|
-
"--brand-color-functional-base-dark": "var(--color-brand-a-
|
|
10
|
-
"--brand-color-primary": "var(--color-brand-a-
|
|
11
|
-
"--brand-color-accent": "var(--color-brand-a-
|
|
12
|
-
"--brand-color-primary-dark": "var(--color-brand-a-
|
|
13
|
-
"--brand-color-accent-dark": "var(--color-brand-a-
|
|
6
|
+
"--brand-color-functional-success": "var(--color-brand-a-green-600)",
|
|
7
|
+
"--brand-color-functional-danger": "var(--color-brand-a-red-600)",
|
|
8
|
+
"--brand-color-functional-base": "var(--color-brand-a-green-700)",
|
|
9
|
+
"--brand-color-functional-base-dark": "var(--color-brand-a-green-900)",
|
|
10
|
+
"--brand-color-primary": "var(--color-brand-a-sand-700)",
|
|
11
|
+
"--brand-color-accent": "var(--color-brand-a-green-400)",
|
|
12
|
+
"--brand-color-primary-dark": "var(--color-brand-a-sand-900)",
|
|
13
|
+
"--brand-color-accent-dark": "var(--color-brand-a-green-600)",
|
|
14
14
|
"--brand-color-subtle": "var(--color-neutral-500)",
|
|
15
15
|
"--brand-color-subtle-dark": "var(--color-neutral-800)",
|
|
16
16
|
"--brand-color-subtle-light": "var(--color-neutral-200)"
|
package/dist/tokens/ts/{themes-(brands).tokens.brand-b.ts → themes-brands.tokens.brand-b.ts}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// Auto-generated design tokens from Figma
|
|
2
|
-
// Generated on 2026-
|
|
2
|
+
// Generated on 2026-04-28T09:23:28.567Z
|
|
3
3
|
|
|
4
4
|
export const tokens = {
|
|
5
5
|
"colors": {
|
|
6
|
-
"--brand-color-functional-success": "var(--color-brand-b-green)",
|
|
7
|
-
"--brand-color-functional-danger": "var(--color-brand-b-red)",
|
|
8
|
-
"--brand-color-functional-base": "var(--color-brand-b-purple-
|
|
9
|
-
"--brand-color-functional-base-dark": "var(--color-brand-b-purple-
|
|
10
|
-
"--brand-color-primary": "var(--color-brand-b-
|
|
11
|
-
"--brand-color-accent": "var(--color-brand-b-
|
|
12
|
-
"--brand-color-primary-dark": "var(--color-brand-b-
|
|
13
|
-
"--brand-color-accent-dark": "var(--color-brand-b-
|
|
6
|
+
"--brand-color-functional-success": "var(--color-brand-b-green-600)",
|
|
7
|
+
"--brand-color-functional-danger": "var(--color-brand-b-red-600)",
|
|
8
|
+
"--brand-color-functional-base": "var(--color-brand-b-purple-700)",
|
|
9
|
+
"--brand-color-functional-base-dark": "var(--color-brand-b-purple-900)",
|
|
10
|
+
"--brand-color-primary": "var(--color-brand-b-purple-600)",
|
|
11
|
+
"--brand-color-accent": "var(--color-brand-b-green-400)",
|
|
12
|
+
"--brand-color-primary-dark": "var(--color-brand-b-purple-800)",
|
|
13
|
+
"--brand-color-accent-dark": "var(--color-brand-b-green-800)",
|
|
14
14
|
"--brand-color-subtle": "var(--color-neutral-500)",
|
|
15
15
|
"--brand-color-subtle-dark": "var(--color-neutral-800)",
|
|
16
16
|
"--brand-color-subtle-light": "var(--color-neutral-200)"
|
package/dist/ui/index.css
CHANGED
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
@import url("./patterns/input.css") layer(components);
|
|
4
4
|
@import url("./patterns/icon.css") layer(components);
|
|
5
5
|
@import url("./patterns/checkbox.css") layer(components);
|
|
6
|
+
@import url("./patterns/radio.css") layer(components);
|
|
6
7
|
@import url("./patterns/switch.css") layer(components);
|
|
8
|
+
@import url("./patterns/badge.css") layer(components);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.badge {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--badge-gap, 0.25rem);
|
|
6
|
+
border-radius: var(--badge-border-radius, 625rem);
|
|
7
|
+
font-family: var(--badge-font-family, inherit);
|
|
8
|
+
font-weight: var(--badge-font-weight, 700);
|
|
9
|
+
white-space: nowrap;
|
|
10
|
+
background: var(--badge-default-container-background);
|
|
11
|
+
color: var(--badge-default-text-color);
|
|
12
|
+
font-size: var(--badge-font-size-md);
|
|
13
|
+
line-height: var(--badge-line-height-md);
|
|
14
|
+
padding-inline: var(--badge-padding-inline-md);
|
|
15
|
+
padding-block: var(--badge-padding-block-md);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* ── Sizes ── */
|
|
19
|
+
|
|
20
|
+
.badge.sm {
|
|
21
|
+
font-size: var(--badge-font-size-sm);
|
|
22
|
+
line-height: var(--badge-line-height-sm);
|
|
23
|
+
padding-inline: var(--badge-padding-inline-sm);
|
|
24
|
+
padding-block: var(--badge-padding-block-sm);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* ── Variants ── */
|
|
28
|
+
|
|
29
|
+
.badge.brand {
|
|
30
|
+
background: var(--badge-brand-container-background);
|
|
31
|
+
color: var(--badge-brand-text-color);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.badge.success {
|
|
35
|
+
background: var(--badge-success-container-background);
|
|
36
|
+
color: var(--badge-success-text-color);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.badge.danger {
|
|
40
|
+
background: var(--badge-danger-container-background);
|
|
41
|
+
color: var(--badge-danger-text-color);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* ── Icon slot ── */
|
|
45
|
+
|
|
46
|
+
.badge > .icon {
|
|
47
|
+
flex: 0 0 auto;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
font-weight: var(--typography-label-font-weight);
|
|
8
8
|
font-size: var(--typography-label-font-size);
|
|
9
9
|
line-height: var(--typography-label-line-height);
|
|
10
|
-
color: var(--
|
|
10
|
+
color: var(--input-checkbox-text-color-default);
|
|
11
11
|
cursor: pointer;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.checkbox-field.is-disabled {
|
|
15
|
-
color: var(--
|
|
15
|
+
color: var(--input-checkbox-text-color-disabled);
|
|
16
16
|
cursor: not-allowed;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -24,52 +24,91 @@
|
|
|
24
24
|
display: inline-grid;
|
|
25
25
|
place-content: center;
|
|
26
26
|
border-style: solid;
|
|
27
|
-
border-width: var(--
|
|
28
|
-
border-color: var(--
|
|
29
|
-
border-radius: var(--
|
|
30
|
-
background: var(--
|
|
31
|
-
color: var(--
|
|
27
|
+
border-width: var(--checkbox-border-size-default);
|
|
28
|
+
border-color: var(--input-checkbox-border-color-default);
|
|
29
|
+
border-radius: var(--corner-checkbox-radius);
|
|
30
|
+
background: var(--input-checkbox-container-background-default);
|
|
31
|
+
color: var(--input-checkbox-text-color-active);
|
|
32
32
|
cursor: pointer;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.checkbox::after {
|
|
36
36
|
content: "";
|
|
37
|
+
display: block;
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
.checkbox:checked,
|
|
40
41
|
.checkbox.is-checked {
|
|
41
|
-
border-color: var(--
|
|
42
|
-
background: var(--
|
|
42
|
+
border-color: var(--input-checkbox-border-color-active);
|
|
43
|
+
background: var(--input-checkbox-container-background-active);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
.checkbox:checked::after,
|
|
46
47
|
.checkbox.is-checked::after {
|
|
47
|
-
content: "
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
content: "";
|
|
49
|
+
inline-size: 0.75em;
|
|
50
|
+
block-size: 0.75em;
|
|
51
|
+
background-color: currentColor;
|
|
52
|
+
-webkit-mask-image: url("/assets/icons/checkmark.svg");
|
|
53
|
+
mask-image: url("/assets/icons/checkmark.svg");
|
|
54
|
+
-webkit-mask-size: contain;
|
|
55
|
+
mask-size: contain;
|
|
56
|
+
-webkit-mask-repeat: no-repeat;
|
|
57
|
+
mask-repeat: no-repeat;
|
|
58
|
+
-webkit-mask-position: center;
|
|
59
|
+
mask-position: center;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.checkbox:indeterminate,
|
|
63
|
+
.checkbox.is-indeterminate {
|
|
64
|
+
border-color: var(--input-checkbox-border-color-active);
|
|
65
|
+
background: var(--input-checkbox-container-background-active);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.checkbox:indeterminate::after,
|
|
69
|
+
.checkbox.is-indeterminate::after {
|
|
70
|
+
inline-size: 0.75rem;
|
|
71
|
+
block-size: var(--size-border-200);
|
|
72
|
+
border-radius: 999px;
|
|
73
|
+
background: currentColor;
|
|
50
74
|
}
|
|
51
75
|
|
|
52
76
|
.checkbox:hover,
|
|
53
77
|
.checkbox.is-hover {
|
|
54
78
|
background:
|
|
55
79
|
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
56
|
-
var(--
|
|
57
|
-
|
|
80
|
+
var(--input-checkbox-container-background-hover);
|
|
81
|
+
color: var(--input-checkbox-text-color-hover);
|
|
82
|
+
border-color: var(--input-checkbox-border-color-hover);
|
|
83
|
+
border-width: var(--checkbox-border-size-hover);
|
|
58
84
|
}
|
|
59
85
|
|
|
60
86
|
.checkbox:checked:hover,
|
|
61
87
|
.checkbox.is-checked.is-hover {
|
|
62
88
|
background:
|
|
63
89
|
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
64
|
-
var(--
|
|
90
|
+
var(--input-checkbox-container-background-active);
|
|
91
|
+
color: var(--input-checkbox-text-color-hover);
|
|
92
|
+
border-color: var(--input-checkbox-border-color-hover);
|
|
93
|
+
border-width: var(--checkbox-border-size-hover);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.checkbox:indeterminate:hover,
|
|
97
|
+
.checkbox.is-indeterminate.is-hover {
|
|
98
|
+
background:
|
|
99
|
+
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
100
|
+
var(--input-checkbox-container-background-active);
|
|
101
|
+
color: var(--input-checkbox-text-color-hover);
|
|
102
|
+
border-color: var(--input-checkbox-border-color-hover);
|
|
103
|
+
border-width: var(--checkbox-border-size-hover);
|
|
65
104
|
}
|
|
66
105
|
|
|
67
106
|
.checkbox:active,
|
|
68
107
|
.checkbox.is-active {
|
|
69
108
|
background:
|
|
70
109
|
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
71
|
-
var(--
|
|
72
|
-
border-color: var(--
|
|
110
|
+
var(--input-checkbox-container-background-default);
|
|
111
|
+
border-color: var(--input-checkbox-border-color-active);
|
|
73
112
|
border-width: var(--size-border-200);
|
|
74
113
|
}
|
|
75
114
|
|
|
@@ -77,21 +116,31 @@
|
|
|
77
116
|
.checkbox.is-checked.is-active {
|
|
78
117
|
background:
|
|
79
118
|
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
80
|
-
var(--
|
|
119
|
+
var(--input-checkbox-container-background-active);
|
|
120
|
+
border-color: var(--input-checkbox-border-color-active);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.checkbox:indeterminate:active,
|
|
124
|
+
.checkbox.is-indeterminate.is-active {
|
|
125
|
+
background:
|
|
126
|
+
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
127
|
+
var(--input-checkbox-container-background-active);
|
|
128
|
+
border-color: var(--input-checkbox-border-color-active);
|
|
81
129
|
}
|
|
82
130
|
|
|
83
131
|
.checkbox:focus-visible,
|
|
84
132
|
.checkbox.is-focus-visible {
|
|
85
|
-
border-color: var(--
|
|
133
|
+
border-color: var(--input-checkbox-border-color-focus);
|
|
86
134
|
outline: none;
|
|
87
135
|
box-shadow: 0 0 0 var(--shadow-focus, 0) var(--color-focus, transparent);
|
|
88
136
|
}
|
|
89
137
|
|
|
90
138
|
.checkbox:disabled,
|
|
91
139
|
.checkbox.is-disabled {
|
|
92
|
-
border-
|
|
93
|
-
|
|
94
|
-
|
|
140
|
+
border-width: var(--checkbox-border-size-disabled);
|
|
141
|
+
border-color: var(--input-checkbox-border-color-disabled);
|
|
142
|
+
background: var(--input-checkbox-container-background-disabled);
|
|
143
|
+
color: var(--input-checkbox-text-color-disabled);
|
|
95
144
|
cursor: not-allowed;
|
|
96
145
|
}
|
|
97
146
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.radio-field {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--typography-label-gap);
|
|
6
|
+
font-family: var(--typography-label-font-family);
|
|
7
|
+
font-weight: var(--typography-label-font-weight);
|
|
8
|
+
font-size: var(--typography-label-font-size);
|
|
9
|
+
line-height: var(--typography-label-line-height);
|
|
10
|
+
color: var(--input-radio-text-color-default);
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.radio-field.is-disabled {
|
|
15
|
+
color: var(--input-radio-text-color-disabled);
|
|
16
|
+
cursor: not-allowed;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.radio {
|
|
20
|
+
inline-size: var(--size-spacing-600);
|
|
21
|
+
block-size: var(--size-spacing-600);
|
|
22
|
+
margin: 0;
|
|
23
|
+
appearance: none;
|
|
24
|
+
display: inline-grid;
|
|
25
|
+
place-content: center;
|
|
26
|
+
border-style: solid;
|
|
27
|
+
border-width: var(--radio-border-size-default);
|
|
28
|
+
border-color: var(--input-radio-border-color-default);
|
|
29
|
+
border-radius: var(--size-radius-full);
|
|
30
|
+
background: var(--input-radio-container-background-default);
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.radio::after {
|
|
35
|
+
content: "";
|
|
36
|
+
display: block;
|
|
37
|
+
inline-size: 0;
|
|
38
|
+
block-size: 0;
|
|
39
|
+
border-radius: var(--size-radius-full);
|
|
40
|
+
background: currentColor;
|
|
41
|
+
transition: all 120ms ease;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.radio:checked,
|
|
45
|
+
.radio.is-checked {
|
|
46
|
+
border-color: var(--input-radio-border-color-active);
|
|
47
|
+
background: var(--input-radio-container-background-default);
|
|
48
|
+
color: var(--input-radio-text-color-active);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.radio:checked::after,
|
|
52
|
+
.radio.is-checked::after {
|
|
53
|
+
inline-size: 0.5rem;
|
|
54
|
+
block-size: 0.5rem;
|
|
55
|
+
background: var(--input-radio-border-color-active);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.radio:hover,
|
|
59
|
+
.radio.is-hover {
|
|
60
|
+
background:
|
|
61
|
+
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
62
|
+
var(--input-radio-container-background-hover);
|
|
63
|
+
color: var(--input-radio-text-color-hover);
|
|
64
|
+
border-color: var(--input-radio-border-color-hover);
|
|
65
|
+
border-width: var(--radio-border-size-hover);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.radio:checked:hover,
|
|
69
|
+
.radio.is-checked.is-hover {
|
|
70
|
+
background:
|
|
71
|
+
linear-gradient(0deg, var(--color-overlay-hover), var(--color-overlay-hover)),
|
|
72
|
+
var(--input-radio-container-background-default);
|
|
73
|
+
border-color: var(--input-radio-border-color-hover);
|
|
74
|
+
border-width: var(--radio-border-size-hover);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.radio:active,
|
|
78
|
+
.radio.is-active {
|
|
79
|
+
background:
|
|
80
|
+
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
81
|
+
var(--input-radio-container-background-default);
|
|
82
|
+
border-color: var(--input-radio-border-color-active);
|
|
83
|
+
border-width: var(--size-border-200);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.radio:checked:active,
|
|
87
|
+
.radio.is-checked.is-active {
|
|
88
|
+
background:
|
|
89
|
+
linear-gradient(0deg, var(--color-overlay-active), var(--color-overlay-active)),
|
|
90
|
+
var(--input-radio-container-background-default);
|
|
91
|
+
border-color: var(--input-radio-border-color-active);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.radio:focus-visible,
|
|
95
|
+
.radio.is-focus-visible {
|
|
96
|
+
border-color: var(--input-radio-border-color-focus);
|
|
97
|
+
outline: none;
|
|
98
|
+
box-shadow: 0 0 0 var(--shadow-focus, 0) var(--color-focus, transparent);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.radio:disabled,
|
|
102
|
+
.radio.is-disabled {
|
|
103
|
+
border-width: var(--radio-border-size-disabled);
|
|
104
|
+
border-color: var(--input-radio-border-color-disabled);
|
|
105
|
+
background: var(--input-radio-container-background-disabled);
|
|
106
|
+
color: var(--input-radio-text-color-disabled);
|
|
107
|
+
cursor: not-allowed;
|
|
108
|
+
}
|
|
109
|
+
}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Documentation Map
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This directory is the human- and agent-readable map of UI Foundations.
|
|
6
|
+
Use it to find the right level of documentation before diving into implementation
|
|
7
|
+
details or local agent configuration.
|
|
8
|
+
|
|
9
|
+
## Canonical sections
|
|
10
|
+
|
|
11
|
+
| Section | What belongs here | Start with |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `playbook.md` | Reading order, operating model, and agent roles | `docs/playbook.md` |
|
|
14
|
+
| `foundations/` | Token architecture, naming, theming, parity, and format guidance | `docs/foundations/README.md` |
|
|
15
|
+
| `principles/` | Perception, heuristics, and accessibility intent | `docs/principles/README.md` |
|
|
16
|
+
| `patterns/` | Pattern-level composition guidance | `docs/patterns/README.md` |
|
|
17
|
+
| `components/` | Component-facing entry docs and TODO gaps | `docs/components/README.md` |
|
|
18
|
+
| `agentic/` | Agent behavior, workflows, prompts, and migration context | `docs/agentic/README.md` |
|
|
19
|
+
| `adr/` | Architecture decision records and documentation migration notes | `docs/adr/README.md` |
|
|
20
|
+
| `validation/` | Validation checklists, CI, token parity, and accessibility checks | `docs/validation/README.md` |
|
|
21
|
+
|
|
22
|
+
## Legacy docs kept in place
|
|
23
|
+
|
|
24
|
+
- `docs/ui-foundations-rules.md`
|
|
25
|
+
- `docs/token-pipeline.md`
|
|
26
|
+
- `docs/working-context.md`
|
|
27
|
+
- `docs/context-manifest.json`
|
|
28
|
+
- `docs/foundations/foundation-*.md`
|
|
29
|
+
|
|
30
|
+
These remain valid source material. New docs should point to them rather than
|
|
31
|
+
rewriting them unless a targeted migration is clearly safe.
|
|
32
|
+
|
|
33
|
+
## Related docs
|
|
34
|
+
|
|
35
|
+
- `AGENTS.md`
|
|
36
|
+
- `README.md`
|
|
37
|
+
- `IMPLEMENTATION.md`
|
|
38
|
+
- `DESIGN.md`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Agentic Docs
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
This section explains how different agents should read, plan, validate, and act
|
|
6
|
+
in the repository.
|
|
7
|
+
|
|
8
|
+
## Canonical files
|
|
9
|
+
|
|
10
|
+
| File | Topic |
|
|
11
|
+
|---|---|
|
|
12
|
+
| `assistant-behavior-rules.md` | Detailed component and token checklist |
|
|
13
|
+
| `kiro-workflow.md` | Kiro steering, specs, and workflow guidance |
|
|
14
|
+
| `goose-workflow.md` | Goose audit and validation workflow guidance |
|
|
15
|
+
| `codex-workflow.md` | Codex execution workflow guidance |
|
|
16
|
+
| `rule-pipeline.md` | Principles -> Patterns -> Components -> Validation -> CI |
|
|
17
|
+
|
|
18
|
+
## Supporting files
|
|
19
|
+
|
|
20
|
+
| File | Topic |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `rule-pipeline-audit.md` | Audit findings, target architecture, and gap table |
|
|
23
|
+
| `MIGRATION.md` | Historical migration context |
|
|
24
|
+
| `prompts/` | Prompt templates and placeholders |
|
|
25
|
+
| `modes/` | Task-specific agent modes |
|
|
26
|
+
|
|
27
|
+
## Who should read this
|
|
28
|
+
|
|
29
|
+
- Agents planning or executing repo work
|
|
30
|
+
- Engineers maintaining local agent workflows
|
|
31
|
+
|
|
32
|
+
## Skills
|
|
33
|
+
|
|
34
|
+
- `skills/ux-writing-coach.md` — multilingual UX writing review skill for product copy
|