@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.
- package/agent-tools/DESIGN.Codecademy.md +120 -90
- package/agent-tools/DESIGN.LXStudio.md +132 -127
- package/agent-tools/DESIGN.Percipio.md +134 -129
- package/agent-tools/DESIGN.md +1 -12
- package/bin/lib/claude.mjs +14 -5
- package/bin/lib/cursor.mjs +4 -1
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.d.ts +2 -2
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.js +1 -1
- package/dist/Alert/elements.d.ts +2 -2
- package/dist/Anchor/index.d.ts +19 -9
- package/dist/Anchor/index.js +9 -6
- package/dist/BarChart/BarRow/elements.d.ts +47 -45
- package/dist/BarChart/utils/hooks.d.ts +2 -2
- package/dist/BarChart/utils/hooks.js +3 -1
- package/dist/Box/GridBox.d.ts +1 -0
- package/dist/Box/GridBox.js +1 -1
- package/dist/Box/props.d.ts +1 -1
- package/dist/Breadcrumbs/index.d.ts +5 -5
- package/dist/Breadcrumbs/index.js +2 -2
- package/dist/Button/CTAButton.d.ts +2 -2
- package/dist/Button/FillButton.d.ts +4 -4
- package/dist/Button/IconButton.d.ts +4 -4
- package/dist/Button/StrokeButton.d.ts +4 -4
- package/dist/Button/TextButton.d.ts +4 -4
- package/dist/Button/shared/InlineIconButton.d.ts +2 -2
- package/dist/Button/shared/styles.d.ts +3 -3
- package/dist/Button/shared/types.d.ts +1 -1
- package/dist/ButtonBase/ButtonBase.d.ts +9 -4
- package/dist/ButtonBase/ButtonBase.js +11 -4
- package/dist/Card/elements.d.ts +109 -103
- package/dist/Card/styles.d.ts +8 -8
- package/dist/Coachmark/index.d.ts +1 -1
- package/dist/ConnectedForm/ConnectedForm.d.ts +1 -1
- package/dist/ConnectedForm/ConnectedFormGroup.js +4 -3
- package/dist/ConnectedForm/utils.d.ts +1 -1
- package/dist/ConnectedForm/utils.js +1 -1
- package/dist/DatePicker/DatePickerInput/index.d.ts +1 -1
- package/dist/Disclosure/elements.d.ts +18 -12
- package/dist/FeatureShimmer/index.js +1 -1
- package/dist/Form/SelectDropdown/SelectDropdown.js +1 -1
- package/dist/Form/SelectDropdown/elements/containers.js +1 -1
- package/dist/Form/SelectDropdown/elements/controls.js +2 -2
- package/dist/Form/SelectDropdown/elements/multi-value.js +2 -2
- package/dist/Form/SelectDropdown/types/internal.d.ts +2 -2
- package/dist/Form/SelectDropdown/utils.js +2 -1
- package/dist/Form/elements/Form.d.ts +15 -15
- package/dist/Form/elements/FormGroup.d.ts +1 -1
- package/dist/Form/styles/Checkbox-styles.d.ts +1 -1
- package/dist/GridForm/GridFormButtons/index.d.ts +4 -4
- package/dist/List/ListProvider.d.ts +1 -1
- package/dist/List/elements.d.ts +44 -42
- package/dist/Menu/MenuItem.js +10 -6
- package/dist/Menu/elements.d.ts +2 -2
- package/dist/Modals/Dialog.js +6 -2
- package/dist/Modals/Modal.js +5 -2
- package/dist/Modals/elements.d.ts +1 -1
- package/dist/Pagination/AnimatedPaginationButtons.d.ts +31 -29
- package/dist/Pagination/EllipsisButton.d.ts +2 -2
- package/dist/Pagination/PaginationButton.d.ts +6 -6
- package/dist/Pagination/utils.d.ts +31 -29
- package/dist/Pagination/utils.js +14 -11
- package/dist/Popover/Popover.js +6 -6
- package/dist/Popover/types.d.ts +4 -3
- package/dist/PopoverContainer/PopoverContainer.js +9 -9
- package/dist/PopoverContainer/hooks.d.ts +16 -4
- package/dist/PopoverContainer/hooks.js +50 -27
- package/dist/PopoverContainer/types.d.ts +2 -1
- package/dist/Tabs/TabButton.d.ts +2 -2
- package/dist/Tabs/TabNavLink.d.ts +2 -2
- package/dist/Tag/elements.d.ts +14 -8
- package/dist/Tag/index.js +1 -1
- package/dist/Tip/InfoTip/InfoTipButton.d.ts +4 -4
- package/dist/Tip/PreviewTip/elements.d.ts +12 -6
- package/dist/Tip/__tests__/helpers.d.ts +1 -1
- package/dist/Tip/shared/FloatingTip.js +2 -2
- package/dist/Tip/shared/types.d.ts +2 -2
- package/dist/Tip/shared/utils.js +1 -1
- package/dist/utils/nullish.d.ts +10 -0
- package/dist/utils/nullish.js +11 -0
- package/dist/utils/react.js +4 -2
- 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: '
|
|
12
|
-
navy-600: '
|
|
13
|
-
navy-500: '
|
|
14
|
-
navy-
|
|
15
|
-
navy-
|
|
16
|
-
navy-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
224
|
+
**Border radii** (all values shift up one step):
|
|
213
225
|
|
|
214
|
-
|
|
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
|
|
225
|
-
| ---------------- |
|
|
226
|
-
| `text` |
|
|
227
|
-
| `text-accent` |
|
|
228
|
-
| `text-secondary` | navy-800 at 75%
|
|
229
|
-
| `text-disabled` | navy-800 at 63%
|
|
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
|
|
234
|
-
| --------------------- |
|
|
235
|
-
| `background` |
|
|
236
|
-
| `background-primary` |
|
|
237
|
-
| `background-contrast` |
|
|
238
|
-
| `background-selected` | navy-800 at 4%
|
|
239
|
-
| `background-hover` | navy-800 at 12%
|
|
240
|
-
| `background-disabled` | navy-800 at 12%
|
|
241
|
-
| `background-success` |
|
|
242
|
-
| `background-warning` |
|
|
243
|
-
| `background-error` |
|
|
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
|
|
248
|
-
| ----------------- |
|
|
249
|
-
| `primary` |
|
|
250
|
-
| `primary-hover` |
|
|
251
|
-
| `primary-inverse` |
|
|
252
|
-
| `secondary` |
|
|
253
|
-
| `secondary-hover` | navy-800 at 86%
|
|
254
|
-
| `danger` |
|
|
255
|
-
| `danger-hover` |
|
|
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
|
|
260
|
-
| ------------------ |
|
|
261
|
-
| `border-primary` |
|
|
262
|
-
| `border-secondary` | navy-800 at 75%
|
|
263
|
-
| `border-tertiary` | navy-800 at 28%
|
|
264
|
-
| `border-disabled` | navy-800 at 63%
|
|
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
|
|
269
|
-
| ------------------ |
|
|
270
|
-
| `feedback-error` |
|
|
271
|
-
| `feedback-success` |
|
|
272
|
-
| `feedback-warning` |
|
|
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
|
|
292
|
-
| `white` | 100–700 | rgba transparencies of `
|
|
293
|
-
| `blue` | 0, 100, 300, 400, 500, 800 |
|
|
294
|
-
| `hyper` | 400, 500 |
|
|
295
|
-
| `green` | 0, 100, 400, 700, 900 |
|
|
296
|
-
| `yellow` | 0, 400, 500, 900 |
|
|
297
|
-
| `red` | 0, 300, 400, 500, 600, 900 |
|
|
298
|
-
| `gray` | 100, 200, 300, 600, 800, 900 |
|
|
299
|
-
| `pink` | 0, 400 |
|
|
300
|
-
| `orange` | 100, 500 |
|
|
301
|
-
| `beige` | 100 (alias: `beige`) |
|
|
302
|
-
| `black` | — | `
|
|
303
|
-
| `white` (solid) | — | `
|
|
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
|
|
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 |
|
|
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 |
|
|
428
|
-
| `sm` | 2px |
|
|
429
|
-
| `md` | 4px |
|
|
430
|
-
| `lg` | 8px |
|
|
431
|
-
| `xl` | 16px |
|
|
432
|
-
| `full` | 999px |
|
|
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:
|
|
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` |
|