ui-foundations 0.4.1 → 0.6.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 (51) hide show
  1. package/README.md +8 -7
  2. package/dist/core/index.css +1 -0
  3. package/dist/macros/ui.njk +61 -0
  4. package/dist/main.css +528 -89
  5. package/dist/react/accordion.js +36 -0
  6. package/dist/react/avatar.js +34 -0
  7. package/dist/react/button.js +1 -12
  8. package/dist/react/checkbox.js +3 -20
  9. package/dist/react/divider.js +31 -0
  10. package/dist/react/icon.js +1 -12
  11. package/dist/react/index.js +6 -0
  12. package/dist/react/radio.js +3 -20
  13. package/dist/react/switch.js +3 -20
  14. package/dist/react/tabs.js +72 -0
  15. package/dist/react/textarea.js +38 -0
  16. package/dist/react/tooltip.js +25 -0
  17. package/dist/react/warn-dev.js +15 -0
  18. package/dist/tokens/css/appearance-modes.tokens.mode-dark.css +6 -6
  19. package/dist/tokens/css/appearance-modes.tokens.mode-light.css +1 -1
  20. package/dist/tokens/css/components-ui.tokens.css +66 -68
  21. package/dist/tokens/css/core-primitives.tokens.css +72 -1
  22. package/dist/tokens/css/semantics-roles.tokens.css +1 -1
  23. package/dist/tokens/css/themes-brands.tokens.brand-a.css +11 -11
  24. package/dist/tokens/css/themes-brands.tokens.brand-b.css +1 -1
  25. package/dist/tokens/css/themes-brands.tokens.brand-c.css +22 -0
  26. package/dist/tokens/json/components-ui.tokens.json +275 -277
  27. package/dist/tokens/json/core-primitives.tokens.json +302 -0
  28. package/dist/tokens/json/themes-brands.tokens.brand-a.json +10 -10
  29. package/dist/tokens/json/themes-brands.tokens.brand-b.json +10 -10
  30. package/dist/tokens/json/themes-brands.tokens.brand-c.json +81 -0
  31. package/dist/tokens/tokens.yaml +1701 -583
  32. package/dist/tokens/ts/appearance-modes.tokens.mode-dark.ts +6 -6
  33. package/dist/tokens/ts/appearance-modes.tokens.mode-light.ts +1 -1
  34. package/dist/tokens/ts/components-ui.tokens.ts +67 -69
  35. package/dist/tokens/ts/core-primitives.tokens.ts +73 -2
  36. package/dist/tokens/ts/semantics-roles.tokens.ts +1 -1
  37. package/dist/tokens/ts/themes-brands.tokens.brand-a.ts +11 -11
  38. package/dist/tokens/ts/themes-brands.tokens.brand-b.ts +1 -1
  39. package/dist/tokens/ts/themes-brands.tokens.brand-c.ts +32 -0
  40. package/dist/ui/index.css +6 -0
  41. package/dist/ui/patterns/accordion.css +81 -0
  42. package/dist/ui/patterns/avatar.css +57 -0
  43. package/dist/ui/patterns/divider.css +25 -0
  44. package/dist/ui/patterns/tabs.css +71 -0
  45. package/dist/ui/patterns/textarea.css +50 -0
  46. package/dist/ui/patterns/tooltip.css +64 -0
  47. package/docs/agentic/README.md +1 -0
  48. package/docs/agentic/skills/component-accessibility-audit.md +132 -0
  49. package/docs/foundations/foundation-007-typography-selectors-and-specificity.md +1 -1
  50. package/package.json +2 -1
  51. package/dist/tokens/missing-tokens.json +0 -43
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.555Z
2
+ // Generated on 2026-05-22T09:23:10.604Z
3
3
 
4
4
  export const tokens = {
5
5
  "colors": {
@@ -13,7 +13,7 @@ export const tokens = {
13
13
  "--color-text-success": "var(--brand-color-functional-success)",
14
14
  "--color-fill-surface": "var(--color-neutral-1000)",
15
15
  "--color-fill-disabled": "var(--color-neutral-300)",
16
- "--color-fill-hover": "var(--color-neutral-alpha-500)",
16
+ "--color-fill-hover": "var(--color-neutral-alpha-inverse-100)",
17
17
  "--color-fill-brand": "var(--brand-color-primary)",
18
18
  "--color-fill-subtle": "var(--brand-color-subtle)",
19
19
  "--color-fill-active": "var(--brand-color-accent)",
@@ -25,10 +25,10 @@ export const tokens = {
25
25
  "--color-border-brand": "var(--brand-color-primary)",
26
26
  "--color-border-disabled": "var(--color-neutral-500)",
27
27
  "--color-border-danger": "var(--brand-color-functional-danger)",
28
- "--color-overlay-backdrop": "var(--color-neutral-alpha-400)",
29
- "--color-overlay-hover": "var(--color-neutral-alpha-200)",
30
- "--color-overlay-active": "var(--color-neutral-alpha-400)",
31
- "--color-overlay-selected": "var(--color-neutral-alpha-600)",
28
+ "--color-overlay-backdrop": "var(--color-neutral-alpha-inverse-400)",
29
+ "--color-overlay-hover": "var(--color-neutral-alpha-inverse-100)",
30
+ "--color-overlay-active": "var(--color-neutral-alpha-inverse-200)",
31
+ "--color-overlay-selected": "var(--color-neutral-alpha-inverse-300)",
32
32
  "--color-focus": "var(--brand-color-primary-dark)"
33
33
  }
34
34
  } as const;
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.553Z
2
+ // Generated on 2026-05-22T09:23:10.601Z
3
3
 
4
4
  export const tokens = {
5
5
  "colors": {
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.559Z
2
+ // Generated on 2026-05-22T09:23:10.611Z
3
3
 
4
4
  export const tokens = {
5
5
  "components": {
@@ -62,104 +62,102 @@ export const tokens = {
62
62
  "--input-text-text-color-default": "var(--color-text-default)",
63
63
  "--input-text-text-color-hover": "var(--color-text-default)",
64
64
  "--input-text-text-color-active": "var(--color-text-default)",
65
- "--input-text-border-color-default": "var(--color-border-default)",
66
- "--input-text-border-color-hover": "var(--color-border-brand)",
67
- "--input-text-border-color-active": "var(--color-border-brand)",
68
- "--input-text-border-color-focus": "var(--color-border-brand)",
69
- "--input-text-border-color-invalid": "var(--color-border-danger)",
70
- "--input-text-border-color-valid": "var(--color-border-strong)",
71
- "--input-text-container-background-default": "var(--color-fill-surface)",
72
- "--input-text-container-background-hover": "var(--color-fill-surface)",
73
- "--input-text-container-background-focus": "var(--color-fill-surface)",
74
- "--input-text-container-background-active": "var(--color-fill-surface)",
65
+ "--input-text-text-color-disabled": "var(--color-text-disabled)",
75
66
  "--input-text-text-color-placeholder": "var(--color-text-subtle)",
76
- "--input-text-height-min": "2.5rem",
67
+ "--input-border-border-color-default": "var(--color-border-default)",
68
+ "--input-border-border-color-hover": "var(--color-border-brand)",
69
+ "--input-border-border-color-active": "var(--color-border-brand)",
70
+ "--input-border-border-color-focus": "var(--color-border-brand)",
71
+ "--input-border-border-size-default": "var(--size-border-100)",
72
+ "--input-border-border-size-hover": "var(--size-border-100)",
73
+ "--input-border-border-size-active": "var(--size-border-200)",
74
+ "--input-border-border-radius": "var(--brand-corner-input)",
75
+ "--input-border-border-color-disabled": "var(--color-border-disabled)",
76
+ "--input-border-border-color-invalid": "var(--color-border-danger)",
77
+ "--input-border-border-color-valid": "var(--color-border-strong)",
77
78
  "--input-font-family": "var(--brand-font-base)",
78
79
  "--input-font-weight": "var(--typography-body-font-weight)",
79
80
  "--input-font-size": "var(--typography-label-font-size)",
80
81
  "--input-line-height": "var(--typography-body-line-height)",
81
- "--input-border-size-default": "var(--size-border-100)",
82
- "--input-border-size-hover": "var(--size-border-100)",
83
- "--input-border-size-active": "var(--size-border-200)",
84
- "--input-border-radius": "var(--brand-corner-input)",
82
+ "--input-container-background-default": "var(--color-fill-surface)",
83
+ "--input-container-background-hover": "var(--color-fill-surface)",
84
+ "--input-container-background-focus": "var(--color-fill-surface)",
85
+ "--input-container-background-active": "var(--color-fill-surface)",
86
+ "--input-container-background-disabled": "var(--color-fill-disabled)",
85
87
  "--input-padding-inline": "var(--size-spacing-200)",
86
88
  "--input-padding-inline-icon-only": "var(--size-spacing-200)",
87
89
  "--input-padding-block": "var(--size-spacing-200)",
88
90
  "--input-gap": "var(--size-spacing-200)",
89
- "--input-text-color-disabled": "var(--color-text-disabled)",
90
- "--input-border-color-disabled": "var(--color-border-disabled)",
91
- "--input-container-background-disabled": "var(--color-fill-disabled)",
92
91
  "--input-overlay-hover": "var(--color-transparent)",
93
92
  "--input-overlay-active": "var(--color-transparent)",
94
93
  "--input-height": "2.5rem",
95
- "--input-checkbox-text-color-default": "var(--color-text-default)",
96
- "--input-checkbox-text-color-hover": "var(--color-text-strong)",
97
- "--input-checkbox-text-color-active": "var(--color-text-inverse)",
98
- "--input-checkbox-border-color-default": "var(--color-border-subtle)",
99
- "--input-checkbox-border-color-hover": "var(--color-border-strong)",
100
- "--input-checkbox-border-color-active": "var(--color-border-brand)",
101
- "--input-checkbox-border-color-focus": "var(--color-border-brand)",
102
- "--input-checkbox-border-color-invalid": "var(--color-border-danger)",
103
- "--input-checkbox-border-color-valid": "var(--color-border-strong)",
104
- "--input-checkbox-border-color-disabled": "var(--color-border-disabled)",
105
- "--input-checkbox-container-background-default": "var(--color-fill-surface)",
106
- "--input-checkbox-container-background-hover": "var(--color-fill-surface)",
107
- "--input-checkbox-container-background-focus": "var(--color-fill-surface)",
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)",
94
+ "--input-height-min": "2.5rem",
95
+ "--form-group-gap": "var(--size-spacing-400)",
96
+ "--form-group-title-color": "var(--color-text-default)",
97
+ "--form-padding-inline": "var(--size-spacing-400)",
98
+ "--form-padding-block": "var(--size-spacing-400)",
99
+ "--form-border-radius": "var(--brand-corner-card)",
100
+ "--form-gap": "var(--size-spacing-400)",
101
+ "--form-field-gap": "var(--size-spacing-200)",
102
+ "--form-field-helper-text-color-default": "var(--color-text-subtle)",
103
+ "--form-field-helper-text-color-invalid": "var(--color-text-danger)",
104
+ "--form-container-background": "var(--color-fill-surface)",
105
+ "--form-container-border-color": "var(--color-border-subtle)",
106
+ "--form-border-size": "var(--size-border-100)",
107
+ "--checkbox-text-color-default": "var(--color-text-default)",
108
+ "--checkbox-text-color-hover": "var(--color-text-strong)",
109
+ "--checkbox-text-color-active": "var(--color-text-inverse)",
110
+ "--checkbox-border-color-default": "var(--color-border-subtle)",
111
+ "--checkbox-border-color-hover": "var(--color-border-strong)",
112
+ "--checkbox-border-color-active": "var(--color-border-brand)",
113
+ "--checkbox-border-color-focus": "var(--color-border-brand)",
114
+ "--checkbox-border-color-invalid": "var(--color-border-danger)",
115
+ "--checkbox-border-color-valid": "var(--color-border-strong)",
116
+ "--checkbox-border-color-disabled": "var(--color-border-disabled)",
111
117
  "--checkbox-border-size-hover": "var(--size-border-200)",
112
118
  "--checkbox-border-size-disabled": "var(--size-border-000)",
113
119
  "--checkbox-border-size-default": "var(--size-border-100)",
120
+ "--checkbox-container-background-default": "var(--color-fill-surface)",
121
+ "--checkbox-container-background-hover": "var(--color-fill-surface)",
122
+ "--checkbox-container-background-focus": "var(--color-fill-surface)",
123
+ "--checkbox-container-background-active": "var(--color-fill-brand)",
124
+ "--checkbox-container-background-disabled": "var(--color-fill-disabled)",
125
+ "--checkbox-text-color-disabled": "var(--color-text-disabled)",
114
126
  "--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
127
  "--input-radio-text-color-disabled": "var(--color-text-disabled)",
118
128
  "--input-radio-border-color-default": "var(--color-border-subtle)",
119
129
  "--input-radio-border-color-hover": "var(--color-border-strong)",
120
130
  "--input-radio-border-color-active": "var(--color-border-brand)",
121
- "--input-radio-border-color-focus": "var(--color-border-brand)",
122
131
  "--input-radio-border-color-disabled": "var(--color-border-disabled)",
123
132
  "--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
133
  "--input-radio-container-background-disabled": "var(--color-fill-disabled)",
128
134
  "--radio-border-size-default": "var(--size-border-100)",
129
135
  "--radio-border-size-hover": "var(--size-border-200)",
130
136
  "--radio-border-size-disabled": "var(--size-border-000)",
131
- "--form-group-gap": "var(--size-spacing-400)",
132
- "--form-group-title-color": "var(--color-text-default)",
133
- "--form-padding-inline": "var(--size-spacing-400)",
134
- "--form-padding-block": "var(--size-spacing-400)",
135
- "--form-border-radius": "var(--brand-corner-card)",
136
- "--form-gap": "var(--size-spacing-400)",
137
- "--form-field-gap": "var(--size-spacing-200)",
138
- "--form-field-helper-text-color-default": "var(--color-text-subtle)",
139
- "--form-field-helper-text-color-invalid": "var(--color-text-danger)",
140
- "--form-container-background": "var(--color-fill-surface)",
141
- "--form-container-border-color": "var(--color-border-subtle)",
142
- "--form-border-size": "var(--size-border-100)",
143
- "--badge-default-container-background": "var(--color-fill-subtle)",
144
137
  "--badge-default-text-color": "var(--color-text-default)",
145
- "--badge-brand-container-background": "var(--color-fill-brand)",
138
+ "--badge-default-border-color": "var(--color-transparent)",
139
+ "--badge-default-container-background": "var(--color-fill-subtle)",
146
140
  "--badge-brand-text-color": "var(--color-text-inverse)",
147
- "--badge-success-container-background": "var(--color-fill-success)",
141
+ "--badge-brand-border-color": "var(--color-transparent)",
142
+ "--badge-brand-container-background": "var(--color-fill-brand)",
148
143
  "--badge-success-text-color": "var(--color-text-inverse)",
144
+ "--badge-success-border-color": "var(--color-transparent)",
145
+ "--badge-success-container-background": "var(--color-fill-success)",
146
+ "--badge-font-family": "var(--brand-font-lead)",
147
+ "--badge-font-weight": "var(--typography-label-font-weight)",
148
+ "--badge-font-size": "var(--typography-label-font-size)",
149
+ "--badge-line-height": "var(--typography-label-line-height)",
150
+ "--badge-border-size-default": "var(--size-border-100)",
151
+ "--badge-border-radius": "var(--brand-corner-input)",
152
+ "--badge-padding-inline": "var(--size-spacing-400)",
153
+ "--badge-padding-inline-icon-only": "var(--size-spacing-200)",
154
+ "--badge-padding-block": "var(--size-spacing-200)",
155
+ "--badge-gap": "var(--size-spacing-200)",
156
+ "--badge-height-min": "2.5rem",
157
+ "--badge-width-min": "2.5rem",
149
158
  "--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)"
159
+ "--badge-danger-border-color": "var(--color-transparent)",
160
+ "--badge-danger-text-color": "var(--color-text-inverse)"
163
161
  }
164
162
  } as const;
165
163
 
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.563Z
2
+ // Generated on 2026-05-22T09:23:10.621Z
3
3
 
4
4
  export const tokens = {
5
5
  "colors": {
@@ -23,6 +23,16 @@ export const tokens = {
23
23
  "--color-neutral-alpha-800": "rgba(0 0 0 / 0.8)",
24
24
  "--color-neutral-alpha-900": "rgba(0 0 0 / 0.9)",
25
25
  "--color-neutral-alpha-000": "rgba(0 0 0 / 0)",
26
+ "--color-neutral-alpha-inverse-100": "rgba(255 255 255 / 0.1)",
27
+ "--color-neutral-alpha-inverse-200": "rgba(255 255 255 / 0.2)",
28
+ "--color-neutral-alpha-inverse-300": "rgba(255 255 255 / 0.3)",
29
+ "--color-neutral-alpha-inverse-400": "rgba(255 255 255 / 0.4)",
30
+ "--color-neutral-alpha-inverse-500": "rgba(255 255 255 / 0.5)",
31
+ "--color-neutral-alpha-inverse-600": "rgba(255 255 255 / 0.6)",
32
+ "--color-neutral-alpha-inverse-700": "rgba(255 255 255 / 0.7)",
33
+ "--color-neutral-alpha-inverse-800": "rgba(255 255 255 / 0.8)",
34
+ "--color-neutral-alpha-inverse-900": "rgba(255 255 255 / 0.9)",
35
+ "--color-neutral-alpha-inverse-000": "rgba(255 255 255 / 0)",
26
36
  "--color-neutral-000": "rgb(255 255 255)",
27
37
  "--color-brand-b-purple-200": "rgb(222 192 255)",
28
38
  "--color-brand-b-purple-300": "rgb(196 143 255)",
@@ -84,7 +94,68 @@ export const tokens = {
84
94
  "--color-brand-a-sand-600": "rgb(108 109 97)",
85
95
  "--color-brand-a-sand-700": "rgb(80 81 72)",
86
96
  "--color-brand-a-sand-800": "rgb(52 52 47)",
87
- "--color-brand-a-sand-900": "rgb(24 24 22)"
97
+ "--color-brand-a-sand-900": "rgb(24 24 22)",
98
+ "--color-brand-c-blue-10": "rgb(27 17 92)",
99
+ "--color-brand-c-blue-20": "rgb(7 45 146)",
100
+ "--color-brand-c-blue-30": "rgb(10 60 194)",
101
+ "--color-brand-c-blue-40": "rgb(12 75 243)",
102
+ "--color-brand-c-blue-50": "rgb(53 103 246)",
103
+ "--color-brand-c-blue-60": "rgb(109 147 248)",
104
+ "--color-brand-c-blue-70": "rgb(148 176 250)",
105
+ "--color-brand-c-blue-80": "rgb(182 200 252)",
106
+ "--color-brand-c-blue-90": "rgb(216 226 253)",
107
+ "--color-brand-c-blue-100": "rgb(27 17 92)",
108
+ "--color-brand-c-coolblue-10": "rgb(5 68 97)",
109
+ "--color-brand-c-coolblue-20": "rgb(7 102 146)",
110
+ "--color-brand-c-coolblue-30": "rgb(10 136 194)",
111
+ "--color-brand-c-coolblue-40": "rgb(12 170 243)",
112
+ "--color-brand-c-coolblue-50": "rgb(56 185 245)",
113
+ "--color-brand-c-coolblue-60": "rgb(112 203 244)",
114
+ "--color-brand-c-coolblue-70": "rgb(169 223 248)",
115
+ "--color-brand-c-coolblue-80": "rgb(198 234 251)",
116
+ "--color-brand-c-coolblue-90": "rgb(226 244 253)",
117
+ "--color-brand-c-coolblue-100": "rgb(11 68 97)",
118
+ "--color-brand-c-green-10": "rgb(5 66 61)",
119
+ "--color-brand-c-green-20": "rgb(36 111 73)",
120
+ "--color-brand-c-green-30": "rgb(43 161 104)",
121
+ "--color-brand-c-green-40": "rgb(48 182 117)",
122
+ "--color-brand-c-green-50": "rgb(97 196 141)",
123
+ "--color-brand-c-green-60": "rgb(135 210 166)",
124
+ "--color-brand-c-green-70": "rgb(169 224 191)",
125
+ "--color-brand-c-green-80": "rgb(197 228 205)",
126
+ "--color-brand-c-green-90": "rgb(223 246 235)",
127
+ "--color-brand-c-green-100": "rgb(239 251 245)",
128
+ "--color-brand-c-red-10": "rgb(96 6 9)",
129
+ "--color-brand-c-red-20": "rgb(144 9 14)",
130
+ "--color-brand-c-red-30": "rgb(192 12 18)",
131
+ "--color-brand-c-red-40": "rgb(240 15 23)",
132
+ "--color-brand-c-red-50": "rgb(242 58 65)",
133
+ "--color-brand-c-red-60": "rgb(246 111 116)",
134
+ "--color-brand-c-red-70": "rgb(248 150 153)",
135
+ "--color-brand-c-red-80": "rgb(250 183 185)",
136
+ "--color-brand-c-red-90": "rgb(253 226 227)",
137
+ "--color-brand-c-red-100": "rgb(254 236 236)",
138
+ "--color-brand-c-orange-10": "rgb(102 61 0)",
139
+ "--color-brand-c-orange-20": "rgb(153 92 0)",
140
+ "--color-brand-c-orange-30": "rgb(204 122 0)",
141
+ "--color-brand-c-orange-40": "rgb(255 153 0)",
142
+ "--color-brand-c-orange-50": "rgb(255 171 46)",
143
+ "--color-brand-c-orange-60": "rgb(255 194 102)",
144
+ "--color-brand-c-orange-70": "rgb(255 210 143)",
145
+ "--color-brand-c-orange-80": "rgb(255 224 178)",
146
+ "--color-brand-c-orange-90": "rgb(255 239 214)",
147
+ "--color-brand-c-orange-100": "rgb(255 247 235)",
148
+ "--color-brand-c-purple-10": "rgb(57 17 92)",
149
+ "--color-brand-c-purple-20": "rgb(81 7 146)",
150
+ "--color-brand-c-purple-30": "rgb(108 10 194)",
151
+ "--color-brand-c-purple-40": "rgb(135 12 243)",
152
+ "--color-brand-c-purple-50": "rgb(156 53 246)",
153
+ "--color-brand-c-purple-60": "rgb(183 109 248)",
154
+ "--color-brand-c-purple-70": "rgb(202 148 250)",
155
+ "--color-brand-c-purple-80": "rgb(219 182 252)",
156
+ "--color-brand-c-purple-90": "rgb(236 216 253)",
157
+ "--color-brand-c-purple-100": "rgb(245 236 254)",
158
+ "--color-brand-c-midnight-10": "rgb(11 9 45)"
88
159
  },
89
160
  "typography": {
90
161
  "--font-size-md": "1rem",
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.564Z
2
+ // Generated on 2026-05-22T09:23:10.624Z
3
3
 
4
4
  export const tokens = {
5
5
  "typography": {
@@ -1,16 +1,16 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.565Z
2
+ // Generated on 2026-05-22T09:23:10.626Z
3
3
 
4
4
  export const tokens = {
5
5
  "colors": {
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)",
6
+ "--brand-color-functional-success": "var(--color-brand-c-green-30)",
7
+ "--brand-color-functional-danger": "var(--color-brand-c-red-30)",
8
+ "--brand-color-functional-base": "var(--color-brand-c-blue-10)",
9
+ "--brand-color-functional-base-dark": "var(--color-brand-c-midnight-10)",
10
+ "--brand-color-primary": "var(--color-brand-c-blue-40)",
11
+ "--brand-color-accent": "var(--color-brand-c-coolblue-60)",
12
+ "--brand-color-primary-dark": "var(--color-brand-c-blue-10)",
13
+ "--brand-color-accent-dark": "var(--color-brand-c-coolblue-10)",
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)"
@@ -20,8 +20,8 @@ export const tokens = {
20
20
  "--brand-font-lead": "var(--font-family-serif)"
21
21
  },
22
22
  "radii": {
23
- "--brand-corner-button": "var(--size-radius-700)",
24
- "--brand-corner-card": "var(--size-radius-200)",
23
+ "--brand-corner-button": "var(--size-radius-full)",
24
+ "--brand-corner-card": "var(--size-radius-300)",
25
25
  "--brand-corner-modal": "var(--size-radius-400)",
26
26
  "--brand-corner-input": "var(--size-radius-200)"
27
27
  }
@@ -1,5 +1,5 @@
1
1
  // Auto-generated design tokens from Figma
2
- // Generated on 2026-04-28T09:23:28.567Z
2
+ // Generated on 2026-05-22T09:23:10.628Z
3
3
 
4
4
  export const tokens = {
5
5
  "colors": {
@@ -0,0 +1,32 @@
1
+ // Auto-generated design tokens from Figma
2
+ // Generated on 2026-05-22T09:23:10.629Z
3
+
4
+ export const tokens = {
5
+ "colors": {
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
+ "--brand-color-subtle": "var(--color-neutral-500)",
15
+ "--brand-color-subtle-dark": "var(--color-neutral-800)",
16
+ "--brand-color-subtle-light": "var(--color-neutral-200)"
17
+ },
18
+ "typography": {
19
+ "--brand-font-base": "var(--font-family-sans)",
20
+ "--brand-font-lead": "var(--font-family-serif)"
21
+ },
22
+ "radii": {
23
+ "--brand-corner-button": "var(--size-radius-700)",
24
+ "--brand-corner-card": "var(--size-radius-200)",
25
+ "--brand-corner-modal": "var(--size-radius-400)",
26
+ "--brand-corner-input": "var(--size-radius-200)"
27
+ }
28
+ } as const;
29
+
30
+ export type ColorToken = keyof typeof tokens.colors;
31
+ export type TypographyToken = keyof typeof tokens.typography;
32
+ export type RadiusToken = keyof typeof tokens.radii;
package/dist/ui/index.css CHANGED
@@ -6,3 +6,9 @@
6
6
  @import url("./patterns/radio.css") layer(components);
7
7
  @import url("./patterns/switch.css") layer(components);
8
8
  @import url("./patterns/badge.css") layer(components);
9
+ @import url("./patterns/divider.css") layer(components);
10
+ @import url("./patterns/textarea.css") layer(components);
11
+ @import url("./patterns/avatar.css") layer(components);
12
+ @import url("./patterns/accordion.css") layer(components);
13
+ @import url("./patterns/tabs.css") layer(components);
14
+ @import url("./patterns/tooltip.css") layer(components);
@@ -0,0 +1,81 @@
1
+ @layer components {
2
+ .accordion {
3
+ display: flex;
4
+ flex-direction: column;
5
+ border: var(--size-border-100) solid var(--color-border-default);
6
+ border-radius: var(--size-radius-400);
7
+ overflow: hidden;
8
+ }
9
+
10
+ .accordion-item {
11
+ border-block-start: var(--size-border-100) solid var(--color-border-default);
12
+ }
13
+
14
+ .accordion-item:first-child {
15
+ border-block-start: none;
16
+ }
17
+
18
+ .accordion-item > summary {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: var(--size-spacing-200);
22
+ padding-inline: var(--size-spacing-400);
23
+ padding-block: var(--size-spacing-300);
24
+ font-family: var(--font-family-sans);
25
+ font-size: var(--font-size-md);
26
+ font-weight: var(--font-weight-600);
27
+ line-height: var(--line-height-md);
28
+ color: var(--color-text-default);
29
+ cursor: pointer;
30
+ list-style: none;
31
+ user-select: none;
32
+ }
33
+
34
+ .accordion-item > summary::-webkit-details-marker {
35
+ display: none;
36
+ }
37
+
38
+ .accordion-item > summary::before {
39
+ content: "";
40
+ display: inline-block;
41
+ inline-size: 0.5rem;
42
+ block-size: 0.5rem;
43
+ border-inline-end: var(--size-border-200) solid currentColor;
44
+ border-block-end: var(--size-border-200) solid currentColor;
45
+ transform: rotate(-45deg);
46
+ transition: transform 0.2s ease;
47
+ flex-shrink: 0;
48
+ }
49
+
50
+ .accordion-item[open] > summary::before {
51
+ transform: rotate(45deg);
52
+ }
53
+
54
+ .accordion-item > summary:hover,
55
+ .accordion-item > summary.is-hover {
56
+ background: var(--color-fill-hover);
57
+ }
58
+
59
+ .accordion-item > summary:focus-visible,
60
+ .accordion-item > summary.is-focus-visible {
61
+ outline: none;
62
+ box-shadow: inset 0 0 0 var(--shadow-focus) var(--color-focus);
63
+ }
64
+
65
+ .accordion-item__content {
66
+ padding-inline: var(--size-spacing-400);
67
+ padding-block: var(--size-spacing-300);
68
+ font-family: var(--font-family-sans);
69
+ font-size: var(--font-size-md);
70
+ line-height: var(--line-height-md);
71
+ color: var(--color-text-default);
72
+ }
73
+
74
+ /* ── Disabled ── */
75
+
76
+ .accordion-item.is-disabled > summary {
77
+ color: var(--color-text-disabled);
78
+ cursor: not-allowed;
79
+ pointer-events: none;
80
+ }
81
+ }
@@ -0,0 +1,57 @@
1
+ @layer components {
2
+ .avatar {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ border-radius: var(--size-radius-full);
7
+ overflow: hidden;
8
+ background: var(--color-fill-subtle);
9
+ color: var(--color-text-default);
10
+ font-family: var(--font-family-sans);
11
+ font-weight: var(--font-weight-600);
12
+ inline-size: 2.5rem;
13
+ block-size: 2.5rem;
14
+ font-size: var(--font-size-sm);
15
+ }
16
+
17
+ /* ── Sizes ── */
18
+
19
+ .avatar.xs {
20
+ inline-size: 1.5rem;
21
+ block-size: 1.5rem;
22
+ font-size: var(--font-size-xs);
23
+ }
24
+
25
+ .avatar.sm {
26
+ inline-size: 2rem;
27
+ block-size: 2rem;
28
+ font-size: var(--font-size-xs);
29
+ }
30
+
31
+ .avatar.lg {
32
+ inline-size: 3rem;
33
+ block-size: 3rem;
34
+ font-size: var(--font-size-md);
35
+ }
36
+
37
+ .avatar.xl {
38
+ inline-size: 4rem;
39
+ block-size: 4rem;
40
+ font-size: var(--font-size-lg);
41
+ }
42
+
43
+ /* ── Image ── */
44
+
45
+ .avatar > img {
46
+ inline-size: 100%;
47
+ block-size: 100%;
48
+ object-fit: cover;
49
+ }
50
+
51
+ /* ── Initials ── */
52
+
53
+ .avatar__initials {
54
+ user-select: none;
55
+ text-transform: uppercase;
56
+ }
57
+ }
@@ -0,0 +1,25 @@
1
+ @layer components {
2
+ .divider {
3
+ border: none;
4
+ margin: 0;
5
+ padding: 0;
6
+ background: var(--divider-color, var(--color-border-default));
7
+ block-size: var(--size-border-100);
8
+ inline-size: 100%;
9
+ align-self: stretch;
10
+ }
11
+
12
+ /* ── Vertical orientation ── */
13
+
14
+ .divider[aria-orientation="vertical"] {
15
+ block-size: auto;
16
+ inline-size: var(--size-border-100);
17
+ align-self: stretch;
18
+ }
19
+
20
+ /* ── Subtle variant ── */
21
+
22
+ .divider.subtle {
23
+ --divider-color: var(--color-border-subtle);
24
+ }
25
+ }
@@ -0,0 +1,71 @@
1
+ @layer components {
2
+ .tabs {
3
+ display: flex;
4
+ flex-direction: column;
5
+ }
6
+
7
+ .tab-list {
8
+ display: flex;
9
+ gap: 0;
10
+ border-block-end: var(--size-border-100) solid var(--color-border-default);
11
+ }
12
+
13
+ .tab-list[aria-orientation="vertical"] {
14
+ flex-direction: column;
15
+ border-block-end: none;
16
+ border-inline-end: var(--size-border-100) solid var(--color-border-default);
17
+ }
18
+
19
+ .tab {
20
+ display: inline-flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ padding-inline: var(--size-spacing-400);
24
+ padding-block: var(--size-spacing-300);
25
+ font-family: var(--font-family-sans);
26
+ font-size: var(--font-size-md);
27
+ font-weight: var(--font-weight-500);
28
+ line-height: var(--line-height-md);
29
+ color: var(--color-text-default);
30
+ background: transparent;
31
+ border: none;
32
+ border-block-end: var(--size-border-200) solid transparent;
33
+ cursor: pointer;
34
+ white-space: nowrap;
35
+ transition: border-color 0.15s ease, color 0.15s ease;
36
+ }
37
+
38
+ .tab:hover,
39
+ .tab.is-hover {
40
+ color: var(--color-text-brand);
41
+ border-block-end-color: var(--color-border-subtle);
42
+ }
43
+
44
+ .tab[aria-selected="true"],
45
+ .tab.is-selected {
46
+ color: var(--color-text-brand);
47
+ font-weight: var(--font-weight-600);
48
+ border-block-end-color: var(--color-border-brand);
49
+ }
50
+
51
+ .tab:focus-visible,
52
+ .tab.is-focus-visible {
53
+ outline: none;
54
+ box-shadow: inset 0 0 0 var(--shadow-focus) var(--color-focus);
55
+ }
56
+
57
+ .tab:disabled,
58
+ .tab.is-disabled {
59
+ color: var(--color-text-disabled);
60
+ cursor: not-allowed;
61
+ border-block-end-color: transparent;
62
+ }
63
+
64
+ .tab-panel {
65
+ padding-block: var(--size-spacing-400);
66
+ }
67
+
68
+ .tab-panel[hidden] {
69
+ display: none;
70
+ }
71
+ }