@codecademy/gamut 68.7.1-alpha.1ea5a8.0 → 68.7.1-alpha.29afd9.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 (81) hide show
  1. package/agent-tools/DESIGN.Codecademy.md +120 -90
  2. package/agent-tools/DESIGN.LXStudio.md +132 -127
  3. package/agent-tools/DESIGN.Percipio.md +134 -129
  4. package/agent-tools/DESIGN.md +1 -12
  5. package/bin/lib/claude.mjs +14 -5
  6. package/bin/lib/cursor.mjs +4 -1
  7. package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.d.ts +2 -2
  8. package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.js +1 -1
  9. package/dist/Alert/elements.d.ts +2 -2
  10. package/dist/Anchor/index.d.ts +19 -9
  11. package/dist/Anchor/index.js +9 -6
  12. package/dist/BarChart/BarRow/elements.d.ts +47 -45
  13. package/dist/BarChart/utils/hooks.d.ts +2 -2
  14. package/dist/BarChart/utils/hooks.js +3 -1
  15. package/dist/Box/GridBox.d.ts +1 -0
  16. package/dist/Box/GridBox.js +1 -1
  17. package/dist/Box/props.d.ts +1 -1
  18. package/dist/Breadcrumbs/index.d.ts +5 -5
  19. package/dist/Breadcrumbs/index.js +2 -2
  20. package/dist/Button/CTAButton.d.ts +2 -2
  21. package/dist/Button/FillButton.d.ts +4 -4
  22. package/dist/Button/IconButton.d.ts +4 -4
  23. package/dist/Button/StrokeButton.d.ts +4 -4
  24. package/dist/Button/TextButton.d.ts +4 -4
  25. package/dist/Button/shared/InlineIconButton.d.ts +2 -2
  26. package/dist/Button/shared/styles.d.ts +3 -3
  27. package/dist/Button/shared/types.d.ts +1 -1
  28. package/dist/ButtonBase/ButtonBase.d.ts +9 -4
  29. package/dist/ButtonBase/ButtonBase.js +11 -4
  30. package/dist/Card/elements.d.ts +109 -103
  31. package/dist/Card/styles.d.ts +8 -8
  32. package/dist/Coachmark/index.d.ts +1 -1
  33. package/dist/ConnectedForm/ConnectedForm.d.ts +1 -1
  34. package/dist/ConnectedForm/ConnectedFormGroup.js +4 -3
  35. package/dist/ConnectedForm/utils.d.ts +1 -1
  36. package/dist/ConnectedForm/utils.js +1 -1
  37. package/dist/DatePicker/DatePickerInput/index.d.ts +1 -1
  38. package/dist/Disclosure/elements.d.ts +18 -12
  39. package/dist/FeatureShimmer/index.js +1 -1
  40. package/dist/Form/SelectDropdown/SelectDropdown.js +1 -1
  41. package/dist/Form/SelectDropdown/elements/containers.js +1 -1
  42. package/dist/Form/SelectDropdown/elements/controls.js +2 -2
  43. package/dist/Form/SelectDropdown/elements/multi-value.js +2 -2
  44. package/dist/Form/SelectDropdown/types/internal.d.ts +2 -2
  45. package/dist/Form/SelectDropdown/utils.js +2 -1
  46. package/dist/Form/elements/Form.d.ts +15 -15
  47. package/dist/Form/elements/FormGroup.d.ts +1 -1
  48. package/dist/Form/styles/Checkbox-styles.d.ts +1 -1
  49. package/dist/GridForm/GridFormButtons/index.d.ts +4 -4
  50. package/dist/List/ListProvider.d.ts +1 -1
  51. package/dist/List/elements.d.ts +44 -42
  52. package/dist/Menu/MenuItem.js +10 -6
  53. package/dist/Menu/elements.d.ts +2 -2
  54. package/dist/Modals/Dialog.js +6 -2
  55. package/dist/Modals/Modal.js +5 -2
  56. package/dist/Modals/elements.d.ts +1 -1
  57. package/dist/Pagination/AnimatedPaginationButtons.d.ts +31 -29
  58. package/dist/Pagination/EllipsisButton.d.ts +2 -2
  59. package/dist/Pagination/PaginationButton.d.ts +6 -6
  60. package/dist/Pagination/utils.d.ts +31 -29
  61. package/dist/Pagination/utils.js +14 -11
  62. package/dist/Popover/Popover.js +6 -6
  63. package/dist/Popover/types.d.ts +4 -3
  64. package/dist/PopoverContainer/PopoverContainer.js +9 -9
  65. package/dist/PopoverContainer/hooks.d.ts +16 -4
  66. package/dist/PopoverContainer/hooks.js +50 -27
  67. package/dist/PopoverContainer/types.d.ts +2 -1
  68. package/dist/Tabs/TabButton.d.ts +2 -2
  69. package/dist/Tabs/TabNavLink.d.ts +2 -2
  70. package/dist/Tag/elements.d.ts +14 -8
  71. package/dist/Tag/index.js +1 -1
  72. package/dist/Tip/InfoTip/InfoTipButton.d.ts +4 -4
  73. package/dist/Tip/PreviewTip/elements.d.ts +12 -6
  74. package/dist/Tip/__tests__/helpers.d.ts +1 -1
  75. package/dist/Tip/shared/FloatingTip.js +2 -2
  76. package/dist/Tip/shared/types.d.ts +2 -2
  77. package/dist/Tip/shared/utils.js +1 -1
  78. package/dist/utils/nullish.d.ts +10 -0
  79. package/dist/utils/nullish.js +11 -0
  80. package/dist/utils/react.js +4 -2
  81. package/package.json +10 -10
@@ -8,13 +8,12 @@ colors:
8
8
  hyper-400: '#5533FF'
9
9
  navy-900: '#0A0D1C'
10
10
  navy-800: '#10162F'
11
- navy-700: 'rgba(16, 22, 47, 0.86)'
12
- navy-600: 'rgba(16, 22, 47, 0.75)'
13
- navy-500: 'rgba(16, 22, 47, 0.63)'
14
- navy-400: 'rgba(16, 22, 47, 0.47)'
15
- navy-300: 'rgba(16, 22, 47, 0.28)'
16
- navy-200: 'rgba(16, 22, 47, 0.12)'
17
- navy-100: 'rgba(16, 22, 47, 0.04)'
11
+ navy-700: '#31374C'
12
+ navy-600: '#4C5063'
13
+ navy-500: '#686C7C'
14
+ navy-300: '#BCBEC5'
15
+ navy-200: '#E2E3E6'
16
+ navy-100: '#F5F6F7'
18
17
  yellow-500: '#FFD300'
19
18
  yellow-400: '#CCA900'
20
19
  yellow-0: '#FFFAE5'
@@ -78,6 +77,8 @@ typography:
78
77
  fontSize: '2.125rem'
79
78
  fontWeight: '700'
80
79
  lineHeight: '1.2'
80
+ hankenGrotesk:
81
+ fontFamily: '"Hanken Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif'
81
82
  monospace:
82
83
  fontFamily: 'Monaco, Menlo, "Ubuntu Mono", "Droid Sans Mono", Consolas, monospace'
83
84
  rounded:
@@ -180,8 +181,6 @@ This file defines the visual design tokens for codecademy.com, implemented using
180
181
  **Figma file**: https://www.figma.com/design/ReGfRNillGABAj5SlITalN/📐-Gamut
181
182
  **Storybook**: https://gamut.codecademy.com
182
183
 
183
- > **Other Gamut themes:** This document covers **Codecademy** (Core, Admin, Platform) only. For Percipio or LX Studio, install that product's `DESIGN.md` instead: `gamut plugin install cursor --theme percipio` or `--theme lxstudio` (see `DESIGN.Percipio.md` / `DESIGN.LXStudio.md` in agent-tools).
184
-
185
184
  ---
186
185
 
187
186
  ## Visual Theme & Atmosphere
@@ -193,7 +192,7 @@ Codecademy communicates **logic with personality** — structured and trustworth
193
192
  **Design philosophy**:
194
193
 
195
194
  - Components are color mode–aware by default — never hardcode hex values for adaptive UI
196
- - Every component works across Core, Admin, and Platform without modification
195
+ - Every component works across all themes without modification
197
196
  - Mobile-first responsive design built on a 12-column grid
198
197
  - Accessibility is guaranteed by design: semantic color tokens meet contrast requirements per mode automatically
199
198
 
@@ -201,17 +200,46 @@ Codecademy communicates **logic with personality** — structured and trustworth
201
200
 
202
201
  ## Themes
203
202
 
204
- Codecademy products use **Core**, **Admin**, or **Platform** the same visual identity with theme-specific palette additions on Platform. Token aliases resolve per theme automatically; components require no modification.
203
+ Codecademy products use one of four Gamut themes, all sharing the same core visual identity. Token aliases resolve to the right values per theme automatically components require no modification.
204
+
205
+ | Theme | Use case | Base font | Dark mode |
206
+ | ------------- | ------------------------------- | -------------- | -------------- |
207
+ | **Core** | Codecademy (default) | Apercu | ✓ light + dark |
208
+ | **Admin** | Codecademy admin tools | Apercu | ✓ light + dark |
209
+ | **Platform** | Codecademy learning environment | Apercu | ✓ light + dark |
210
+ | **LX Studio** | LX Studio application | Hanken Grotesk | light only |
211
+
212
+ The active theme is set at the app root via `<GamutProvider>`. When designing, know which theme your screen targets — it affects primary colors, font families, and available color weights.
213
+
214
+ **Font licensing**: Apercu is licensed for codecademy.com only. LX Studio uses Hanken Grotesk.
215
+
216
+ For Percipio projects, use `DESIGN.Percipio.md` from the same package instead.
217
+
218
+ ### LX Studio theme overrides
219
+
220
+ LX Studio extends Core with these differences:
205
221
 
206
- | Theme | Use case | Base font | Dark mode |
207
- | ------------ | ------------------------------- | --------- | -------------- |
208
- | **Core** | Codecademy (default) | Apercu | ✓ light + dark |
209
- | **Admin** | Codecademy admin tools | Apercu | ✓ light + dark |
210
- | **Platform** | Codecademy learning environment | Apercu | ✓ light + dark |
222
+ **Font**: All families `"Hanken Grotesk"` (no Apercu, no Suisse).
211
223
 
212
- Set the active theme at the app root via `<GamutProvider theme={coreTheme | adminTheme | platformTheme}>`.
224
+ **Border radii** (all values shift up one step):
213
225
 
214
- **Font licensing:** Apercu is licensed for codecademy.com only.
226
+ | Token | Core | LX Studio |
227
+ | ----- | ---- | --------- |
228
+ | `sm` | 2px | 4px |
229
+ | `md` | 4px | 8px |
230
+ | `lg` | 8px | 12px |
231
+
232
+ **Semantic color overrides (light mode)**:
233
+
234
+ | Token | Core value | LX Studio value |
235
+ | -------------------- | ------------------- | ------------------------------- |
236
+ | `primary` | hyper-500 `#3A10E5` | `#5628FE` (lxStudioPurple) |
237
+ | `primary-hover` | hyper-400 `#5533FF` | `#7955FC` (lxStudioPurpleHover) |
238
+ | `feedback-success` | green-700 `#008A27` | `#06844F` (lxStudioSuccess) |
239
+ | `background-primary` | beige `#FFF0E5` | `#FAFBFC` (lxStudioBgPrimary) |
240
+ | `shadow-primary` | navy-800 | navy-200 |
241
+ | `border-primary` | navy-800 | navy-400 |
242
+ | `border-disabled` | navy-500 | navy-300 |
215
243
 
216
244
  ---
217
245
 
@@ -221,55 +249,55 @@ Use these token names when specifying colors in designs. They resolve to the cor
221
249
 
222
250
  ### Text
223
251
 
224
- | Token | Light | Dark | Use for |
225
- | ---------------- | --------------- | ------------ | --------------------------- |
226
- | `text` | `navy-800` | `white` | Default body and UI text |
227
- | `text-accent` | `navy-900` | `beige` | Stronger emphasis text |
228
- | `text-secondary` | navy-800 at 75% | white at 65% | Supporting / secondary copy |
229
- | `text-disabled` | navy-800 at 63% | white at 50% | Disabled state labels |
252
+ | Token | Light | Dark | Use for |
253
+ | ---------------- | -------------------------- | --------------- | --------------------------- |
254
+ | `text` | navy-800 `#10162F` at 100% | white `#ffffff` | Default body and UI text |
255
+ | `text-accent` | navy-900 `#0A0D1C` | beige `#FFF0E5` | Stronger emphasis text |
256
+ | `text-secondary` | navy-800 at 75% | white at 65% | Supporting / secondary copy |
257
+ | `text-disabled` | navy-800 at 63% | white at 50% | Disabled state labels |
230
258
 
231
259
  ### Background
232
260
 
233
- | Token | Light | Dark | Use for |
234
- | --------------------- | --------------- | ------------ | --------------------------------- |
235
- | `background` | `white` | `navy-800` | Default page/component background |
236
- | `background-primary` | `beige` | `navy-900` | Slightly elevated surfaces |
237
- | `background-contrast` | `white` | `black` | Maximum contrast surface |
238
- | `background-selected` | navy-800 at 4% | white at 4% | Selected row / item |
239
- | `background-hover` | navy-800 at 12% | white at 9% | Hover state overlay |
240
- | `background-disabled` | navy-800 at 12% | white at 9% | Disabled surface |
241
- | `background-success` | `green-0` | `green-900` | Success state container |
242
- | `background-warning` | `yellow-0` | `yellow-900` | Warning state container |
243
- | `background-error` | `red-0` | `red-900` | Error state container |
261
+ | Token | Light | Dark | Use for |
262
+ | --------------------- | ------------------ | -------------------- | --------------------------------- |
263
+ | `background` | white `#ffffff` | navy-800 `#10162F` | Default page/component background |
264
+ | `background-primary` | beige `#FFF0E5` | navy-900 `#0A0D1C` | Slightly elevated surfaces |
265
+ | `background-contrast` | white | black `#000000` | Maximum contrast surface |
266
+ | `background-selected` | navy-800 at 4% | white at 4% | Selected row / item |
267
+ | `background-hover` | navy-800 at 12% | white at 9% | Hover state overlay |
268
+ | `background-disabled` | navy-800 at 12% | white at 9% | Disabled surface |
269
+ | `background-success` | green-0 `#F5FFE3` | green-900 `#151C07` | Success state container |
270
+ | `background-warning` | yellow-0 `#FFFAE5` | yellow-900 `#211B00` | Warning state container |
271
+ | `background-error` | red-0 `#FBF1F0` | red-900 `#280503` | Error state container |
244
272
 
245
273
  ### Interactive
246
274
 
247
- | Token | Light | Dark | Use for |
248
- | ----------------- | --------------- | ------------ | ------------------------------------ |
249
- | `primary` | `hyper-500` | `yellow-500` | Primary CTA, links, focus rings |
250
- | `primary-hover` | `hyper-400` | `yellow-400` | Hover state of primary interactive |
251
- | `primary-inverse` | `yellow-500` | `hyper-500` | Primary on a colored background |
252
- | `secondary` | `navy-800` | `white` | Secondary CTA, ghost buttons |
253
- | `secondary-hover` | navy-800 at 86% | white at 80% | Hover state of secondary interactive |
254
- | `danger` | `red-500` | `red-300` | Destructive actions, error states |
255
- | `danger-hover` | `red-600` | `red-400` | Hover on danger interactive |
275
+ | Token | Light | Dark | Use for |
276
+ | ----------------- | -------------------- | -------------------- | ------------------------------------ |
277
+ | `primary` | hyper-500 `#3A10E5` | yellow-500 `#FFD300` | Primary CTA, links, focus rings |
278
+ | `primary-hover` | hyper-400 `#5533FF` | yellow-400 `#CCA900` | Hover state of primary interactive |
279
+ | `primary-inverse` | yellow-500 `#FFD300` | hyper-500 `#3A10E5` | Primary on a colored background |
280
+ | `secondary` | navy-800 `#10162F` | white `#ffffff` | Secondary CTA, ghost buttons |
281
+ | `secondary-hover` | navy-800 at 86% | white at 80% | Hover state of secondary interactive |
282
+ | `danger` | red-500 `#E91C11` | red-300 `#E85D7F` | Destructive actions, error states |
283
+ | `danger-hover` | red-600 `#BE1809` | red-400 `#DC5879` | Hover on danger interactive |
256
284
 
257
285
  ### Border
258
286
 
259
- | Token | Light | Dark | Use for |
260
- | ------------------ | --------------- | ------------ | -------------------------- |
261
- | `border-primary` | `navy-800` | `white` | Strong borders, dividers |
262
- | `border-secondary` | navy-800 at 75% | white at 65% | Medium-weight borders |
263
- | `border-tertiary` | navy-800 at 28% | white at 20% | Subtle borders, separators |
264
- | `border-disabled` | navy-800 at 63% | white at 50% | Disabled input borders |
287
+ | Token | Light | Dark | Use for |
288
+ | ------------------ | ------------------ | --------------- | -------------------------- |
289
+ | `border-primary` | navy-800 `#10162F` | white `#ffffff` | Strong borders, dividers |
290
+ | `border-secondary` | navy-800 at 75% | white at 65% | Medium-weight borders |
291
+ | `border-tertiary` | navy-800 at 28% | white at 20% | Subtle borders, separators |
292
+ | `border-disabled` | navy-800 at 63% | white at 50% | Disabled input borders |
265
293
 
266
294
  ### Feedback
267
295
 
268
- | Token | Light | Dark | Use for |
269
- | ------------------ | ----------- | ----------- | -------------------------------- |
270
- | `feedback-error` | `red-600` | `red-300` | Error messages, validation |
271
- | `feedback-success` | `green-700` | `green-400` | Success messages, confirmations |
272
- | `feedback-warning` | `yellow` | `yellow-0` | Warning messages, caution states |
296
+ | Token | Light | Dark | Use for |
297
+ | ------------------ | ------------------- | ------------------- | -------------------------------- |
298
+ | `feedback-error` | red-600 `#BE1809` | red-300 `#E85D7F` | Error messages, validation |
299
+ | `feedback-success` | green-700 `#008A27` | green-400 `#AEE938` | Success messages, confirmations |
300
+ | `feedback-warning` | yellow `#FFD300` | yellow-0 `#FFFAE5` | Warning messages, caution states |
273
301
 
274
302
  ### Shadow
275
303
 
@@ -286,28 +314,32 @@ All colors available as static tokens regardless of color mode. Use these only w
286
314
 
287
315
  ### Core Palette
288
316
 
289
- | Name | Weights available | Notes |
290
- | --------------- | ---------------------------- | -------------------------------------------------------------------------- |
291
- | `navy` | 100–900 | 100–700 are rgba transparencies of `navy-800`; 800 and 900 are solid |
292
- | `white` | 100–700 | rgba transparencies of `white` (no solid white weight — use `white` token) |
293
- | `blue` | 0, 100, 300, 400, 500, 800 | named alias `blue` maps to `blue-500` |
294
- | `hyper` | 400, 500 | named alias `hyper` maps to `hyper-500` |
295
- | `green` | 0, 100, 400, 700, 900 | named alias `green` maps to `green-700` |
296
- | `yellow` | 0, 400, 500, 900 | named alias `yellow` maps to `yellow-500` |
297
- | `red` | 0, 300, 400, 500, 600, 900 | named alias `red` maps to `red-500` |
298
- | `gray` | 100, 200, 300, 600, 800, 900 | |
299
- | `pink` | 0, 400 | named alias `pink` maps to `pink-400` |
300
- | `orange` | 100, 500 | named alias `orange` maps to `orange-500` |
301
- | `beige` | 100 (alias: `beige`) | solid `beige` token |
302
- | `black` | — | `black` token |
303
- | `white` (solid) | — | `white` token |
317
+ | Name | Weights available | Notes |
318
+ | --------------- | ---------------------------- | --------------------------------------------------------------------------------- |
319
+ | `navy` | 100–900 | 100–700 are rgba transparencies of `#10162F`; 800 = `#10162F`; 900 = `#0A0D1C` |
320
+ | `white` | 100–700 | rgba transparencies of `#ffffff` (no solid white weight — use `white` for `#fff`) |
321
+ | `blue` | 0, 100, 300, 400, 500, 800 | 500 = `#1557FF` |
322
+ | `hyper` | 400, 500 | 500 = `#3A10E5` (purple-blue), 400 = `#5533FF` |
323
+ | `green` | 0, 100, 400, 700, 900 | 700 = `#008A27` |
324
+ | `yellow` | 0, 400, 500, 900 | 500 = `#FFD300` |
325
+ | `red` | 0, 300, 400, 500, 600, 900 | 500 = `#E91C11` |
326
+ | `gray` | 100, 200, 300, 600, 800, 900 | |
327
+ | `pink` | 0, 400 | 400 = `#F966FF` |
328
+ | `orange` | 100, 500 | 500 = `#FF8C00` |
329
+ | `beige` | 100 (alias: `beige`) | `#FFF0E5` |
330
+ | `black` | — | `#000000` |
331
+ | `white` (solid) | — | `#ffffff` |
304
332
 
305
333
  **Named aliases** (shorthand for common weights):
306
334
  `beige`, `blue`, `green`, `hyper`, `lightBlue`, `lightGreen`, `navy`, `orange`, `paleBlue`, `paleGreen`, `palePink`, `paleRed`, `paleYellow`, `pink`, `red`, `yellow`, `black`, `white`
307
335
 
308
336
  ### Platform-only additions
309
337
 
310
- `lightBeige`, `gold`, `teal`, `purple` (Platform theme palette)
338
+ `lightBeige` (`#FFFBF8`), `gold` (`#8A7300`), `teal` (`#006D82`), `purple` (`#B3CCFF`)
339
+
340
+ ### LX Studio additions
341
+
342
+ `lxStudioPurple` (`#5628FE`), `lxStudioPurpleHover` (`#7955FC`), `lxStudioSuccess` (`#06844F`)
311
343
 
312
344
  ---
313
345
 
@@ -315,14 +347,14 @@ All colors available as static tokens regardless of color mode. Use these only w
315
347
 
316
348
  ### Typefaces
317
349
 
318
- | Token | Font stack | Use for |
319
- | ----------- | -------------------------------------------------------- | ------------------------------------------------ |
320
- | `base` | Apercu Pro (CSS: `Apercu`) | All default UI text, headlines, body copy |
321
- | `accent` | Suisse Intl Mono (CSS: `Suisse`); falls back to `Apercu` | Code, captions, labels, lists, technical context |
322
- | `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Code editor contexts |
323
- | `system` | System UI fonts | Performance-critical surfaces |
350
+ | Token | Core / Admin / Platform | LX Studio | Use for |
351
+ | ----------- | -------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------------------ |
352
+ | `base` | Apercu Pro (CSS: `Apercu`) | Hanken Grotesk | All default UI text, headlines, body copy |
353
+ | `accent` | Suisse Intl Mono (CSS: `Suisse`); falls back to `Apercu` | Hanken Grotesk | Code, captions, labels, lists, technical context |
354
+ | `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Code editor contexts |
355
+ | `system` | System UI fonts | System UI fonts | Performance-critical surfaces |
324
356
 
325
- **Apercu is licensed for codecademy.com only.**
357
+ **Apercu is licensed for codecademy.com only.** LX Studio uses Hanken Grotesk for both `base` and `accent`.
326
358
 
327
359
  ### Rules
328
360
 
@@ -422,16 +454,14 @@ Interactive cards (`isInteractive` prop) gain a shadow on hover and `borderRadiu
422
454
 
423
455
  ## Border Radius Scale
424
456
 
425
- | Token | Value | Use |
426
- | ------ | ----- | ------------------------ |
427
- | `none` | 0px | Non-interactive elements |
428
- | `sm` | 2px | Overlays |
429
- | `md` | 4px | Interactive elements |
430
- | `lg` | 8px | Non-interactive elements |
431
- | `xl` | 16px | Non-interactive elements |
432
- | `full` | 999px | Toggles, badges |
433
-
434
- ---
457
+ | Token | Value | Use |
458
+ | ------ | ----- | ------------------------------------------ |
459
+ | `none` | 0px | Square / non-interactive elements |
460
+ | `sm` | 2px | Subtle rounding, tags |
461
+ | `md` | 4px | Default buttons, inputs, interactive cards |
462
+ | `lg` | 8px | Cards, panels |
463
+ | `xl` | 16px | Large cards, modals |
464
+ | `full` | 999px | Pills, avatars, circular elements |
435
465
 
436
466
  ---
437
467
 
@@ -573,8 +603,8 @@ Quick color/token reference for generating or specifying UI:
573
603
 
574
604
  | Scenario | Tokens |
575
605
  | ---------------------- | ----------------------------------------------------------------------------------------------------- |
576
- | Primary button (light) | `bg: primary`, `color: white`, `hover: primary-hover` |
577
- | Primary button (dark) | `bg: primary`, `color: text`, `hover: primary-hover` |
606
+ | Primary button (light) | `bg: primary (#3A10E5)`, `color: white`, `hover: primary-hover (#5533FF)` |
607
+ | Primary button (dark) | `bg: primary (#FFD300)`, `color: navy-800`, `hover: primary-hover (#CCA900)` |
578
608
  | Body text | `color: text`, `font: base (Apercu Pro)`, `size: 16px`, `weight: 400`, `lineHeight: base (1.5)` |
579
609
  | Headline | `color: text-accent`, `font: base`, `size: 34–64px`, `weight: title (700)`, `lineHeight: title (1.2)` |
580
610
  | Caption / label | `color: text-secondary`, `font: accent (Suisse Int'l Mono)`, `size: 14px` |