@codecademy/gamut 68.7.1-alpha.89ca82.0 β 68.7.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.
|
@@ -180,6 +180,8 @@ This file defines the visual design tokens for codecademy.com, implemented using
|
|
|
180
180
|
**Figma file**: https://www.figma.com/design/ReGfRNillGABAj5SlITalN/π-Gamut
|
|
181
181
|
**Storybook**: https://gamut.codecademy.com
|
|
182
182
|
|
|
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
|
+
|
|
183
185
|
---
|
|
184
186
|
|
|
185
187
|
## Visual Theme & Atmosphere
|
|
@@ -191,7 +193,7 @@ Codecademy communicates **logic with personality** β structured and trustworth
|
|
|
191
193
|
**Design philosophy**:
|
|
192
194
|
|
|
193
195
|
- Components are color modeβaware by default β never hardcode hex values for adaptive UI
|
|
194
|
-
- Every component works across
|
|
196
|
+
- Every component works across Core, Admin, and Platform without modification
|
|
195
197
|
- Mobile-first responsive design built on a 12-column grid
|
|
196
198
|
- Accessibility is guaranteed by design: semantic color tokens meet contrast requirements per mode automatically
|
|
197
199
|
|
|
@@ -199,46 +201,17 @@ Codecademy communicates **logic with personality** β structured and trustworth
|
|
|
199
201
|
|
|
200
202
|
## Themes
|
|
201
203
|
|
|
202
|
-
Codecademy products use
|
|
203
|
-
|
|
204
|
-
| Theme | Use case | Base font | Dark mode |
|
|
205
|
-
| ------------- | ------------------------------- | --------------------- | -------------- |
|
|
206
|
-
| **Core** | Codecademy (default) | Apercu | β light + dark |
|
|
207
|
-
| **Admin** | Codecademy admin tools | Apercu | β light + dark |
|
|
208
|
-
| **Platform** | Codecademy learning environment | Apercu | β light + dark |
|
|
209
|
-
| **LX Studio** | LX Studio application | Skillsoft Text / Sans | light only |
|
|
210
|
-
|
|
211
|
-
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.
|
|
212
|
-
|
|
213
|
-
**Font licensing**: Apercu is licensed for codecademy.com only. LX Studio and Percipio use Skillsoft Text and Skillsoft Sans.
|
|
214
|
-
|
|
215
|
-
For Percipio projects, use `DESIGN.Percipio.md` from the same package instead. For LX Studio, use `DESIGN.LXStudio.md`.
|
|
216
|
-
|
|
217
|
-
### LX Studio theme overrides
|
|
218
|
-
|
|
219
|
-
LX Studio extends Core with these differences:
|
|
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.
|
|
220
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
211
|
|
|
223
|
-
|
|
212
|
+
Set the active theme at the app root via `<GamutProvider theme={coreTheme | adminTheme | platformTheme}>`.
|
|
224
213
|
|
|
225
|
-
|
|
226
|
-
| ----- | ---- | --------- |
|
|
227
|
-
| `sm` | 2px | 4px |
|
|
228
|
-
| `md` | 4px | 8px |
|
|
229
|
-
| `lg` | 8px | 12px |
|
|
230
|
-
|
|
231
|
-
**Semantic color overrides (light mode)**:
|
|
232
|
-
|
|
233
|
-
| Token | Core value | LX Studio value |
|
|
234
|
-
| -------------------- | ----------- | ------------------- |
|
|
235
|
-
| `primary` | `hyper-500` | `sapphire` |
|
|
236
|
-
| `primary-hover` | `hyper-400` | `navy-800` |
|
|
237
|
-
| `feedback-success` | `green-700` | `lxStudioSuccess` |
|
|
238
|
-
| `background-primary` | `beige` | `lxStudioBgPrimary` |
|
|
239
|
-
| `shadow-primary` | navy-800 | navy-200 |
|
|
240
|
-
| `border-primary` | navy-800 | navy-400 |
|
|
241
|
-
| `border-disabled` | navy-500 | navy-300 |
|
|
214
|
+
**Font licensing:** Apercu is licensed for codecademy.com only.
|
|
242
215
|
|
|
243
216
|
---
|
|
244
217
|
|
|
@@ -336,24 +309,20 @@ All colors available as static tokens regardless of color mode. Use these only w
|
|
|
336
309
|
|
|
337
310
|
`lightBeige`, `gold`, `teal`, `purple` (Platform theme palette)
|
|
338
311
|
|
|
339
|
-
### LX Studio additions
|
|
340
|
-
|
|
341
|
-
`sapphire`, `lxStudioSuccess`, `lxStudioBgPrimary` (LX Studio theme palette)
|
|
342
|
-
|
|
343
312
|
---
|
|
344
313
|
|
|
345
314
|
## Typography
|
|
346
315
|
|
|
347
316
|
### Typefaces
|
|
348
317
|
|
|
349
|
-
| Token |
|
|
350
|
-
| ----------- | -------------------------------------------------------- |
|
|
351
|
-
| `base` | Apercu Pro (CSS: `Apercu`) |
|
|
352
|
-
| `accent` | Suisse Intl Mono (CSS: `Suisse`); falls back to `Apercu` |
|
|
353
|
-
| `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas |
|
|
354
|
-
| `system` | System UI fonts |
|
|
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 |
|
|
355
324
|
|
|
356
|
-
**Apercu is licensed for codecademy.com only.**
|
|
325
|
+
**Apercu is licensed for codecademy.com only.**
|
|
357
326
|
|
|
358
327
|
### Rules
|
|
359
328
|
|
|
@@ -453,14 +422,16 @@ Interactive cards (`isInteractive` prop) gain a shadow on hover and `borderRadiu
|
|
|
453
422
|
|
|
454
423
|
## Border Radius Scale
|
|
455
424
|
|
|
456
|
-
| Token | Value | Use
|
|
457
|
-
| ------ | ----- |
|
|
458
|
-
| `none` | 0px |
|
|
459
|
-
| `sm` | 2px |
|
|
460
|
-
| `md` | 4px |
|
|
461
|
-
| `lg` | 8px |
|
|
462
|
-
| `xl` | 16px |
|
|
463
|
-
| `full` | 999px |
|
|
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
|
+
---
|
|
464
435
|
|
|
465
436
|
---
|
|
466
437
|
|
|
@@ -124,10 +124,12 @@ components:
|
|
|
124
124
|
|
|
125
125
|
# LX Studio
|
|
126
126
|
|
|
127
|
-
This file defines the visual design tokens for the Skillsoft LX Studio authoring platform, implemented using the Gamut design system (`@codecademy/gamut`, `@codecademy/gamut-styles`). LX Studio uses a dedicated Gamut theme
|
|
127
|
+
This file defines the visual design tokens for the Skillsoft LX Studio authoring platform, implemented using the Gamut design system (`@codecademy/gamut`, `@codecademy/gamut-styles`). LX Studio uses a dedicated Gamut theme with its own brand colors, typography, and border radii β all Gamut components work without modification.
|
|
128
128
|
|
|
129
129
|
**Storybook**: https://gamut.codecademy.com
|
|
130
130
|
|
|
131
|
+
> **Other Gamut themes:** This document covers **LX Studio** only. For Codecademy (Core/Admin/Platform) or Percipio, install that product's `DESIGN.md` instead: `gamut plugin install cursor --theme core` or `--theme percipio`.
|
|
132
|
+
|
|
131
133
|
---
|
|
132
134
|
|
|
133
135
|
## Visual Theme & Atmosphere
|
|
@@ -138,11 +140,10 @@ LX Studio communicates **modern professional craft** β clean, precise, and too
|
|
|
138
140
|
|
|
139
141
|
**Design philosophy**:
|
|
140
142
|
|
|
141
|
-
-
|
|
142
|
-
- Larger border radii than Core give the UI a softer, more modern feel
|
|
143
|
+
- Larger border radii (`sm`β`lg`) for a softer, more modern feel
|
|
143
144
|
- Brand blue (`sapphire` / `primary`) drives CTAs, buttons, and links
|
|
144
|
-
-
|
|
145
|
-
- Skillsoft Text and Skillsoft Sans
|
|
145
|
+
- Soft shadows (`shadow-primary` β `navy-200`)
|
|
146
|
+
- Skillsoft Text (`base`) and Skillsoft Sans (`accent`) for all UI typography
|
|
146
147
|
|
|
147
148
|
---
|
|
148
149
|
|
|
@@ -206,7 +207,7 @@ Use these token names when specifying colors. LX Studio is light mode only β t
|
|
|
206
207
|
| `border-tertiary` | `navy-800` | Strong structural borders |
|
|
207
208
|
| `border-disabled` | `navy-300` | Disabled input borders |
|
|
208
209
|
|
|
209
|
-
|
|
210
|
+
`border-primary` resolves to `navy-400` β mid-weight borders for inputs and cards.
|
|
210
211
|
|
|
211
212
|
### Feedback
|
|
212
213
|
|
|
@@ -223,7 +224,7 @@ LX Studio's `border-primary` is mid-gray (navy-400) rather than Core's near-blac
|
|
|
223
224
|
| `shadow-primary` | `navy-200` |
|
|
224
225
|
| `shadow-secondary` | `navy-600` |
|
|
225
226
|
|
|
226
|
-
|
|
227
|
+
Use `shadow-primary` for standard elevated surfaces.
|
|
227
228
|
|
|
228
229
|
---
|
|
229
230
|
|
|
@@ -245,7 +246,7 @@ The full core swatch palette (navy, hyper, blue, green, yellow, red, etc.) is al
|
|
|
245
246
|
|
|
246
247
|
### Typefaces
|
|
247
248
|
|
|
248
|
-
LX Studio uses **Skillsoft Text** for body and headlines and **Skillsoft Sans** for accent UI.
|
|
249
|
+
LX Studio uses **Skillsoft Text** for body and headlines and **Skillsoft Sans** for accent UI.
|
|
249
250
|
|
|
250
251
|
| Token | Font | Use for |
|
|
251
252
|
| ----------- | ----------------------------------------------------- | ----------------------------------------- |
|
|
@@ -254,7 +255,7 @@ LX Studio uses **Skillsoft Text** for body and headlines and **Skillsoft Sans**
|
|
|
254
255
|
| `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Code editor contexts |
|
|
255
256
|
| `system` | System UI fonts | Performance-critical surfaces |
|
|
256
257
|
|
|
257
|
-
Skillsoft fonts are loaded via Gamut's asset provider
|
|
258
|
+
Skillsoft fonts are loaded via Gamut's asset provider.
|
|
258
259
|
|
|
259
260
|
### Rules
|
|
260
261
|
|
|
@@ -266,14 +267,14 @@ Skillsoft fonts are loaded via Gamut's asset provider (same stack as Percipio).
|
|
|
266
267
|
|
|
267
268
|
### Font weight scale
|
|
268
269
|
|
|
269
|
-
| Token | Value | Use
|
|
270
|
-
| ------- | ------- |
|
|
271
|
-
| `base` | 400 | Body text, UI labels
|
|
272
|
-
| `title` | **500** | Headlines, CTAs, buttons
|
|
270
|
+
| Token | Value | Use |
|
|
271
|
+
| ------- | ------- | ------------------------ |
|
|
272
|
+
| `base` | 400 | Body text, UI labels |
|
|
273
|
+
| `title` | **500** | Headlines, CTAs, buttons |
|
|
273
274
|
|
|
274
275
|
### Font size scale
|
|
275
276
|
|
|
276
|
-
|
|
277
|
+
Standard Gamut font size scale:
|
|
277
278
|
|
|
278
279
|
| Token key | Size | Common use |
|
|
279
280
|
| --------- | ---- | ---------------------------- |
|
|
@@ -289,7 +290,7 @@ Shared with Core β all sizes are identical.
|
|
|
289
290
|
|
|
290
291
|
### Line height scale
|
|
291
292
|
|
|
292
|
-
|
|
293
|
+
Standard Gamut line height scale:
|
|
293
294
|
|
|
294
295
|
| Token | Value | Use |
|
|
295
296
|
| ------------- | ----- | ------------------------------- |
|
|
@@ -305,7 +306,7 @@ Target 45β85 characters per line; 66 characters is ideal. Max 50 for multi-col
|
|
|
305
306
|
|
|
306
307
|
## Spacing Scale
|
|
307
308
|
|
|
308
|
-
|
|
309
|
+
All spacing is multiples of 4px on an 8px grid.
|
|
309
310
|
|
|
310
311
|
| Token | Value |
|
|
311
312
|
| ----- | ----- |
|
|
@@ -325,22 +326,20 @@ Identical to Core. All spacing is multiples of 4px on an 8px grid.
|
|
|
325
326
|
|
|
326
327
|
## Border Radius Scale
|
|
327
328
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
| `
|
|
333
|
-
| `
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
336
|
-
| `xl` | 16px | 16px | Large cards, modals |
|
|
337
|
-
| `full` | 999px | 999px | Pills, avatars, circular elements |
|
|
329
|
+
| Token | Value | Use |
|
|
330
|
+
| ------ | ----- | ------------------------ |
|
|
331
|
+
| `none` | 0px | Non-interactive elements |
|
|
332
|
+
| `sm` | 4px | Overlays |
|
|
333
|
+
| `md` | 8px | Interactive elements |
|
|
334
|
+
| `lg` | 12px | Non-interactive elements |
|
|
335
|
+
| `xl` | 16px | Non-interactive elements |
|
|
336
|
+
| `full` | 999px | Toggles, badges |
|
|
338
337
|
|
|
339
338
|
---
|
|
340
339
|
|
|
341
340
|
## Responsive Behavior
|
|
342
341
|
|
|
343
|
-
|
|
342
|
+
Mobile-first; apply styles from the named breakpoint up.
|
|
344
343
|
|
|
345
344
|
| Token | Min-width | Max content |
|
|
346
345
|
| -------- | --------- | ----------- |
|
|
@@ -365,16 +364,14 @@ Minimum interactive touch target: **44Γ44px** on mobile breakpoints.
|
|
|
365
364
|
|
|
366
365
|
## Component Library
|
|
367
366
|
|
|
368
|
-
|
|
367
|
+
Gamut atoms, molecules, and organisms all apply. Use semantic tokens below for LX Studio styling.
|
|
369
368
|
|
|
370
|
-
Key
|
|
369
|
+
Key patterns:
|
|
371
370
|
|
|
372
|
-
- `FillButton`
|
|
373
|
-
- `
|
|
374
|
-
-
|
|
375
|
-
-
|
|
376
|
-
- `Card` shadows use navy-200 (soft) rather than navy-800 (hard)
|
|
377
|
-
- No `Card-beige` variant β LX Studio `background-primary` is off-white, not beige
|
|
371
|
+
- `FillButton` β `bg: primary` (`sapphire`), `hover: primary-hover` (`navy-800`)
|
|
372
|
+
- `Checkbox` / `Toggle` β `primary`, `hover: primary-hover` (same as `FillButton`)
|
|
373
|
+
- Buttons and inputs β `borderRadius: md` (8px)
|
|
374
|
+
- `Card` β `shadow-primary` (`navy-200`); elevated surfaces use `background-primary` (`lxStudioBgPrimary`), not beige
|
|
378
375
|
|
|
379
376
|
---
|
|
380
377
|
|
|
@@ -385,13 +382,13 @@ Key LX Studio-specific visual differences:
|
|
|
385
382
|
- **Do** use semantic color aliases (`primary`, `text`, `background`, etc.) β never hardcode hex values.
|
|
386
383
|
- **Do** use `primary` (resolves to palette `sapphire`) for buttons and links.
|
|
387
384
|
- **Don't** attempt dark mode β LX Studio is light only.
|
|
388
|
-
- **Don't** use
|
|
385
|
+
- **Don't** use raw palette swatches for adaptive UI β use semantic aliases.
|
|
389
386
|
|
|
390
387
|
### Typography
|
|
391
388
|
|
|
392
389
|
- **Do** use `fontWeight="title"` (500) for headlines, CTAs, and buttons.
|
|
393
390
|
- **Do** keep body text at 150β175% line height for readability.
|
|
394
|
-
- **Don't** use
|
|
391
|
+
- **Don't** use fonts outside the LX Studio theme stack (Skillsoft Text, Skillsoft Sans).
|
|
395
392
|
- **Don't** right-align or center-align body paragraphs.
|
|
396
393
|
- **Don't** adjust letter-spacing.
|
|
397
394
|
|
|
@@ -427,7 +424,7 @@ Quick color/token reference for generating or specifying LX Studio UI:
|
|
|
427
424
|
```
|
|
428
425
|
FillButton β bg: primary, color: white, hover: primary-hover, borderRadius: md
|
|
429
426
|
StrokeButton β bg: transparent, borderColor: secondary
|
|
430
|
-
Checkbox/Toggle β
|
|
427
|
+
Checkbox/Toggle β bg: primary, hover: primary-hover, borderRadius: sm
|
|
431
428
|
Card β bg: background, shadow: shadow-primary (navy-200, soft), radius: none
|
|
432
429
|
Alert (error) β uses feedback-error + background-error
|
|
433
430
|
Alert (success) β uses feedback-success + background-success
|
|
@@ -118,21 +118,23 @@ This file defines the visual design tokens for the Skillsoft Percipio platform,
|
|
|
118
118
|
|
|
119
119
|
**Storybook**: https://gamut.codecademy.com
|
|
120
120
|
|
|
121
|
+
> **Other Gamut themes:** This document covers **Percipio** only. For Codecademy (Core/Admin/Platform) or LX Studio, install that product's `DESIGN.md` instead: `gamut plugin install cursor --theme core` or `--theme lxstudio`.
|
|
122
|
+
|
|
121
123
|
---
|
|
122
124
|
|
|
123
125
|
## Visual Theme & Atmosphere
|
|
124
126
|
|
|
125
|
-
Percipio communicates **professional clarity** β clean, trustworthy, and enterprise-ready. The design voice is
|
|
127
|
+
Percipio communicates **professional clarity** β clean, trustworthy, and enterprise-ready. The design voice is neutral and corporate: functional, with clear hierarchy. Brand blue drives interactive affordances; neutral grays define text and structure.
|
|
126
128
|
|
|
127
|
-
**Density**: Medium.
|
|
129
|
+
**Density**: Medium. Information-dense layouts with softer shadows and a muted neutral palette.
|
|
128
130
|
|
|
129
131
|
**Design philosophy**:
|
|
130
132
|
|
|
131
133
|
- Light mode only β no dark mode support
|
|
132
|
-
- Brand blue (`sapphire` / `primary`)
|
|
133
|
-
- Text
|
|
134
|
-
- Shadows are soft and minimal (
|
|
135
|
-
- Title font weight is 500
|
|
134
|
+
- Brand blue (`sapphire` / `primary`) for buttons, links, and focus rings
|
|
135
|
+
- Text uses dedicated Percipio palette tokens (`percipioTextPrimary`, etc.)
|
|
136
|
+
- Shadows are soft and minimal (`shadow-primary` β `navy-200`)
|
|
137
|
+
- Title font weight is **500** via `fontWeight="title"` β use semantic weight, not literal `700`
|
|
136
138
|
|
|
137
139
|
---
|
|
138
140
|
|
|
@@ -212,7 +214,7 @@ Percipio's border weights use a non-standard order: `primary` is mid-weight, `se
|
|
|
212
214
|
| `shadow-primary` | `navy-200` |
|
|
213
215
|
| `shadow-secondary` | `navy-400` |
|
|
214
216
|
|
|
215
|
-
|
|
217
|
+
Use `shadow-primary` for standard elevated surfaces.
|
|
216
218
|
|
|
217
219
|
---
|
|
218
220
|
|
|
@@ -264,16 +266,14 @@ Percipio uses **Skillsoft Text** for body and headlines and **Skillsoft Sans** f
|
|
|
264
266
|
|
|
265
267
|
### Font weight scale
|
|
266
268
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
|
270
|
-
|
|
|
271
|
-
| `base` | 400 | Body text, UI labels |
|
|
272
|
-
| `title` | **500** | Headlines, CTAs, buttons _(differs from Codecademy's 700)_ |
|
|
269
|
+
| Token | Value | Use |
|
|
270
|
+
| ------- | ------- | ------------------------ |
|
|
271
|
+
| `base` | 400 | Body text, UI labels |
|
|
272
|
+
| `title` | **500** | Headlines, CTAs, buttons |
|
|
273
273
|
|
|
274
274
|
### Font size scale
|
|
275
275
|
|
|
276
|
-
|
|
276
|
+
Standard Gamut font size scale:
|
|
277
277
|
|
|
278
278
|
| Token key | Size | Common use |
|
|
279
279
|
| --------- | ---- | ---------------------------- |
|
|
@@ -289,7 +289,7 @@ Shared with Core β all sizes are identical.
|
|
|
289
289
|
|
|
290
290
|
### Line height scale
|
|
291
291
|
|
|
292
|
-
|
|
292
|
+
Standard Gamut line height scale:
|
|
293
293
|
|
|
294
294
|
| Token | Value | Use |
|
|
295
295
|
| ------------- | ----- | ------------------------------- |
|
|
@@ -305,7 +305,7 @@ Target 45β85 characters per line; 66 characters is ideal. Max 50 for multi-col
|
|
|
305
305
|
|
|
306
306
|
## Spacing Scale
|
|
307
307
|
|
|
308
|
-
|
|
308
|
+
All spacing is multiples of 4px on an 8px grid.
|
|
309
309
|
|
|
310
310
|
| Token | Value |
|
|
311
311
|
| ----- | ----- |
|
|
@@ -325,22 +325,20 @@ Identical to Core. All spacing is multiples of 4px on an 8px grid.
|
|
|
325
325
|
|
|
326
326
|
## Border Radius Scale
|
|
327
327
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
| `
|
|
333
|
-
| `
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
336
|
-
| `xl` | 16px | Large cards, modals |
|
|
337
|
-
| `full` | 999px | Pills, avatars, circular elements |
|
|
328
|
+
| Token | Value | Use |
|
|
329
|
+
| ------ | ----- | ------------------------ |
|
|
330
|
+
| `none` | 0px | Non-interactive elements |
|
|
331
|
+
| `sm` | 2px | Overlays |
|
|
332
|
+
| `md` | 4px | Interactive elements |
|
|
333
|
+
| `lg` | 8px | Non-interactive elements |
|
|
334
|
+
| `xl` | 16px | Non-interactive elements |
|
|
335
|
+
| `full` | 999px | Toggles, badges |
|
|
338
336
|
|
|
339
337
|
---
|
|
340
338
|
|
|
341
339
|
## Responsive Behavior
|
|
342
340
|
|
|
343
|
-
|
|
341
|
+
Mobile-first; apply styles from the named breakpoint up.
|
|
344
342
|
|
|
345
343
|
| Token | Min-width | Max content |
|
|
346
344
|
| -------- | --------- | ----------- |
|
|
@@ -365,15 +363,13 @@ Minimum interactive touch target: **44Γ44px** on mobile breakpoints.
|
|
|
365
363
|
|
|
366
364
|
## Component Library
|
|
367
365
|
|
|
368
|
-
|
|
366
|
+
Gamut atoms, molecules, and organisms all apply. Use semantic tokens below for Percipio-specific styling.
|
|
369
367
|
|
|
370
|
-
Key
|
|
368
|
+
Key patterns:
|
|
371
369
|
|
|
372
|
-
- `FillButton`
|
|
373
|
-
- `
|
|
374
|
-
- `
|
|
375
|
-
- `Card` has softer `shadow-primary` (`navy-200` vs `navy-800` in Codecademy light mode)
|
|
376
|
-
- Card shadow patterns (`patternLeft`, `patternRight`) are available but rarely used in Percipio UIs
|
|
370
|
+
- `FillButton` β `bg: primary`, `hover: primary-hover`
|
|
371
|
+
- `Checkbox` / `Toggle` β `primary`, `hover: primary-hover`
|
|
372
|
+
- `Card` β `shadow-primary` (`navy-200`); `patternLeft` / `patternRight` are available but rarely used
|
|
377
373
|
|
|
378
374
|
---
|
|
379
375
|
|
|
@@ -383,14 +379,13 @@ Key Percipio-specific visual differences:
|
|
|
383
379
|
|
|
384
380
|
- **Do** use semantic color aliases (`primary`, `text`, `background`, etc.) β never hardcode hex values.
|
|
385
381
|
- **Do** use `primary` (resolves to palette `sapphire`) as the brand interactive color.
|
|
386
|
-
- **Don't** use Codecademy's hyper-purple or yellow in Percipio contexts.
|
|
387
382
|
- **Don't** attempt dark mode β Percipio is light only.
|
|
388
383
|
|
|
389
384
|
### Typography
|
|
390
385
|
|
|
391
386
|
- **Do** use title weight (500) for headlines, CTAs, and buttons β not 700.
|
|
392
387
|
- **Do** keep body text at 150β175% line height for readability.
|
|
393
|
-
- **Don't** use
|
|
388
|
+
- **Don't** use fonts outside the Percipio theme stack (Skillsoft Text, Skillsoft Sans, Roboto Mono for code).
|
|
394
389
|
- **Don't** right-align or center-align body paragraphs.
|
|
395
390
|
- **Don't** adjust letter-spacing.
|
|
396
391
|
|
package/agent-tools/DESIGN.md
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
Product-specific design context lives in this directory
|
|
1
|
+
Product-specific design context lives in this directory. **Use one `DESIGN.md` per app β matched to the Gamut theme that app uses.**
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
| Source file | Install with `--theme` |
|
|
4
|
+
| ---------------------- | --------------------------------------------------------- |
|
|
5
|
+
| `DESIGN.Codecademy.md` | `core`, `admin`, `platform` (aliases: `codecademy`, `cc`) |
|
|
6
|
+
| `DESIGN.Percipio.md` | `percipio` |
|
|
7
|
+
| `DESIGN.LXStudio.md` | `lxstudio` (alias: `lx-studio`) |
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
```sh
|
|
10
|
+
gamut plugin install cursor --theme <name>
|
|
11
|
+
# refresh: gamut plugin update cursor --theme <name> --force
|
|
12
|
+
```
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecademy/gamut",
|
|
3
3
|
"description": "Styleguide & Component library for Codecademy",
|
|
4
|
-
"version": "68.7.1
|
|
4
|
+
"version": "68.7.1",
|
|
5
5
|
"author": "Codecademy Engineering <dev@codecademy.com>",
|
|
6
6
|
"bin": "./bin/gamut.mjs",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@codecademy/gamut-icons": "9.57.
|
|
9
|
-
"@codecademy/gamut-illustrations": "0.58.
|
|
10
|
-
"@codecademy/gamut-patterns": "0.10.
|
|
11
|
-
"@codecademy/gamut-styles": "18.0.
|
|
12
|
-
"@codecademy/variance": "0.26.
|
|
8
|
+
"@codecademy/gamut-icons": "9.57.5",
|
|
9
|
+
"@codecademy/gamut-illustrations": "0.58.11",
|
|
10
|
+
"@codecademy/gamut-patterns": "0.10.30",
|
|
11
|
+
"@codecademy/gamut-styles": "18.0.0",
|
|
12
|
+
"@codecademy/variance": "0.26.1",
|
|
13
13
|
"@formatjs/intl-locale": "5.3.1",
|
|
14
14
|
"@react-aria/interactions": "3.25.0",
|
|
15
15
|
"@types/marked": "^4.0.8",
|