@codecademy/gamut 68.7.1-alpha.f618c1.0 → 68.7.2-alpha.0ef7c8.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 +91 -121
- package/agent-tools/DESIGN.LXStudio.md +127 -132
- package/agent-tools/DESIGN.Percipio.md +129 -134
- package/agent-tools/DESIGN.md +12 -1
- package/agent-tools/rules/accessibility.mdc +1 -1
- package/bin/lib/claude.mjs +5 -14
- package/bin/lib/cursor.mjs +1 -4
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.d.ts +2 -2
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/index.js +1 -1
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/styles/index.module.scss +5 -5
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/styles/mixins.scss +5 -5
- package/dist/AccordionButtonDeprecated/ButtonDeprecated/styles/variables.scss +22 -23
- package/dist/AccordionButtonDeprecated/styles.module.scss +8 -6
- package/dist/Alert/elements.d.ts +2 -2
- package/dist/Anchor/index.d.ts +9 -19
- package/dist/Anchor/index.js +6 -9
- package/dist/BarChart/BarRow/elements.d.ts +45 -47
- package/dist/BarChart/utils/hooks.d.ts +2 -2
- package/dist/BarChart/utils/hooks.js +1 -3
- package/dist/Box/GridBox.d.ts +0 -1
- 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 +4 -9
- package/dist/ButtonBase/ButtonBase.js +4 -11
- package/dist/Card/elements.d.ts +103 -109
- 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 +6 -6
- package/dist/ConnectedForm/SubmitButton.js +3 -2
- 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 +12 -18
- 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 +1 -2
- 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/GridForm/GridFormInputGroup/index.js +4 -3
- package/dist/List/ListProvider.d.ts +1 -1
- package/dist/List/elements.d.ts +42 -44
- package/dist/Menu/MenuItem.js +6 -10
- package/dist/Menu/elements.d.ts +2 -2
- package/dist/Modals/Dialog.js +2 -6
- package/dist/Modals/Modal.js +2 -5
- package/dist/Modals/elements.d.ts +1 -1
- package/dist/Pagination/AnimatedPaginationButtons.d.ts +29 -31
- package/dist/Pagination/EllipsisButton.d.ts +2 -2
- package/dist/Pagination/PaginationButton.d.ts +6 -6
- package/dist/Pagination/utils.d.ts +29 -31
- package/dist/Pagination/utils.js +11 -14
- package/dist/Popover/Popover.js +6 -6
- package/dist/Popover/types.d.ts +3 -4
- package/dist/PopoverContainer/PopoverContainer.js +9 -9
- package/dist/PopoverContainer/hooks.d.ts +4 -16
- package/dist/PopoverContainer/hooks.js +27 -50
- package/dist/PopoverContainer/types.d.ts +1 -2
- package/dist/Tabs/TabButton.d.ts +2 -2
- package/dist/Tabs/TabNavLink.d.ts +2 -2
- package/dist/Tag/elements.d.ts +8 -14
- package/dist/Tag/index.js +1 -1
- package/dist/Tip/InfoTip/InfoTipButton.d.ts +4 -4
- package/dist/Tip/PreviewTip/elements.d.ts +6 -12
- 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/Typography/styles/_variables.scss +54 -0
- package/dist/Video/styles/vds_base_theme.scss +3 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/utils/react.js +2 -4
- package/package.json +10 -10
- package/dist/HiddenText/index.d.ts +0 -7
- package/dist/HiddenText/index.js +0 -16
- package/dist/utils/nullish.d.ts +0 -10
- package/dist/utils/nullish.js +0 -11
|
@@ -4,8 +4,7 @@ name: LX Studio Design System
|
|
|
4
4
|
description: Design tokens for the Skillsoft LX Studio authoring platform.
|
|
5
5
|
colors:
|
|
6
6
|
# LX Studio additions — custom brand tokens
|
|
7
|
-
|
|
8
|
-
lxStudioPurpleHover: '#7955FC'
|
|
7
|
+
sapphire: '#1C50BB'
|
|
9
8
|
lxStudioSuccess: '#06844F'
|
|
10
9
|
lxStudioBgPrimary: '#FAFBFC'
|
|
11
10
|
# core palette — referenced by semantic aliases below
|
|
@@ -13,13 +12,13 @@ colors:
|
|
|
13
12
|
hyper-400: '#5533FF'
|
|
14
13
|
navy-900: '#0A0D1C'
|
|
15
14
|
navy-800: '#10162F'
|
|
16
|
-
navy-700: '
|
|
17
|
-
navy-600: '
|
|
18
|
-
navy-500: '
|
|
19
|
-
navy-400: '
|
|
20
|
-
navy-300: '
|
|
21
|
-
navy-200: '
|
|
22
|
-
navy-100: '
|
|
15
|
+
navy-700: 'rgba(16, 22, 47, 0.86)'
|
|
16
|
+
navy-600: 'rgba(16, 22, 47, 0.75)'
|
|
17
|
+
navy-500: 'rgba(16, 22, 47, 0.63)'
|
|
18
|
+
navy-400: 'rgba(16, 22, 47, 0.47)'
|
|
19
|
+
navy-300: 'rgba(16, 22, 47, 0.28)'
|
|
20
|
+
navy-200: 'rgba(16, 22, 47, 0.12)'
|
|
21
|
+
navy-100: 'rgba(16, 22, 47, 0.04)'
|
|
23
22
|
yellow-500: '#FFD300'
|
|
24
23
|
yellow-0: '#FFFAE5'
|
|
25
24
|
green-700: '#008A27'
|
|
@@ -42,8 +41,8 @@ colors:
|
|
|
42
41
|
background-success: '{colors.green-0}'
|
|
43
42
|
background-warning: '{colors.yellow-0}'
|
|
44
43
|
background-error: '{colors.red-0}'
|
|
45
|
-
primary: '{colors.
|
|
46
|
-
primary-hover: '{colors.
|
|
44
|
+
primary: '{colors.sapphire}'
|
|
45
|
+
primary-hover: '{colors.navy-800}'
|
|
47
46
|
primary-inverse: '{colors.yellow-500}'
|
|
48
47
|
secondary: '{colors.navy-800}'
|
|
49
48
|
secondary-hover: '{colors.navy-700}'
|
|
@@ -60,19 +59,19 @@ colors:
|
|
|
60
59
|
shadow-secondary: '{colors.navy-600}'
|
|
61
60
|
typography:
|
|
62
61
|
base:
|
|
63
|
-
fontFamily: '"
|
|
62
|
+
fontFamily: '"Skillsoft Text", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif'
|
|
64
63
|
fontSize: '1rem'
|
|
65
64
|
fontWeight: '400'
|
|
66
65
|
lineHeight: '1.5'
|
|
67
66
|
accent:
|
|
68
|
-
fontFamily: '"
|
|
67
|
+
fontFamily: '"Skillsoft Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif'
|
|
69
68
|
fontSize: '0.875rem'
|
|
70
69
|
fontWeight: '400'
|
|
71
70
|
lineHeight: '1.5'
|
|
72
71
|
title:
|
|
73
|
-
fontFamily: '"
|
|
72
|
+
fontFamily: '"Skillsoft Text", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif'
|
|
74
73
|
fontSize: '2.125rem'
|
|
75
|
-
fontWeight: '
|
|
74
|
+
fontWeight: '500'
|
|
76
75
|
lineHeight: '1.2'
|
|
77
76
|
monospace:
|
|
78
77
|
fontFamily: 'Monaco, Menlo, "Ubuntu Mono", "Droid Sans Mono", Consolas, monospace'
|
|
@@ -125,10 +124,12 @@ components:
|
|
|
125
124
|
|
|
126
125
|
# LX Studio
|
|
127
126
|
|
|
128
|
-
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.
|
|
129
128
|
|
|
130
129
|
**Storybook**: https://gamut.codecademy.com
|
|
131
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
|
+
|
|
132
133
|
---
|
|
133
134
|
|
|
134
135
|
## Visual Theme & Atmosphere
|
|
@@ -139,11 +140,10 @@ LX Studio communicates **modern professional craft** — clean, precise, and too
|
|
|
139
140
|
|
|
140
141
|
**Design philosophy**:
|
|
141
142
|
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
- Hanken Grotesk replaces Apercu and Suisse across all font roles
|
|
143
|
+
- Larger border radii (`sm`–`lg`) for a softer, more modern feel
|
|
144
|
+
- Brand blue (`sapphire` / `primary`) drives CTAs, buttons, and links
|
|
145
|
+
- Soft shadows (`shadow-primary` → `navy-200`)
|
|
146
|
+
- Skillsoft Text (`base`) and Skillsoft Sans (`accent`) for all UI typography
|
|
147
147
|
|
|
148
148
|
---
|
|
149
149
|
|
|
@@ -151,9 +151,9 @@ LX Studio communicates **modern professional craft** — clean, precise, and too
|
|
|
151
151
|
|
|
152
152
|
LX Studio uses a single Gamut theme — light mode only.
|
|
153
153
|
|
|
154
|
-
| Theme | Use case | Base font
|
|
155
|
-
| ------------- | -------------------------------------- |
|
|
156
|
-
| **LX Studio** | Skillsoft LX Studio authoring platform |
|
|
154
|
+
| Theme | Use case | Base font | Dark mode |
|
|
155
|
+
| ------------- | -------------------------------------- | --------------------- | ---------- |
|
|
156
|
+
| **LX Studio** | Skillsoft LX Studio authoring platform | Skillsoft Text / Sans | light only |
|
|
157
157
|
|
|
158
158
|
The active theme is set at the app root via `<GamutProvider theme={lxStudioTheme}>`.
|
|
159
159
|
|
|
@@ -165,79 +165,78 @@ Use these token names when specifying colors. LX Studio is light mode only — t
|
|
|
165
165
|
|
|
166
166
|
### Text
|
|
167
167
|
|
|
168
|
-
| Token |
|
|
169
|
-
| ---------------- |
|
|
170
|
-
| `text` |
|
|
171
|
-
| `text-accent` |
|
|
172
|
-
| `text-secondary` |
|
|
173
|
-
| `text-disabled` |
|
|
168
|
+
| Token | Resolves to | Use for |
|
|
169
|
+
| ---------------- | ----------- | --------------------------- |
|
|
170
|
+
| `text` | `navy-800` | Default body and UI text |
|
|
171
|
+
| `text-accent` | `navy-900` | Stronger emphasis text |
|
|
172
|
+
| `text-secondary` | `navy-600` | Supporting / secondary copy |
|
|
173
|
+
| `text-disabled` | `navy-500` | Disabled state labels |
|
|
174
174
|
|
|
175
175
|
### Background
|
|
176
176
|
|
|
177
|
-
| Token |
|
|
178
|
-
| --------------------- |
|
|
179
|
-
| `background` |
|
|
180
|
-
| `background-primary` |
|
|
181
|
-
| `background-contrast` |
|
|
182
|
-
| `background-selected` |
|
|
183
|
-
| `background-hover` |
|
|
184
|
-
| `background-disabled` |
|
|
185
|
-
| `background-success` |
|
|
186
|
-
| `background-warning` |
|
|
187
|
-
| `background-error` |
|
|
177
|
+
| Token | Resolves to | Use for |
|
|
178
|
+
| --------------------- | ------------------- | --------------------------------- |
|
|
179
|
+
| `background` | `white` | Default page/component background |
|
|
180
|
+
| `background-primary` | `lxStudioBgPrimary` | Slightly elevated surfaces |
|
|
181
|
+
| `background-contrast` | `white` | Maximum contrast surface |
|
|
182
|
+
| `background-selected` | `navy-100` | Selected row / item |
|
|
183
|
+
| `background-hover` | `navy-200` | Hover state overlay |
|
|
184
|
+
| `background-disabled` | `navy-200` | Disabled surface |
|
|
185
|
+
| `background-success` | `green-0` | Success state container |
|
|
186
|
+
| `background-warning` | `yellow-0` | Warning state container |
|
|
187
|
+
| `background-error` | `red-0` | Error state container |
|
|
188
188
|
|
|
189
189
|
### Interactive
|
|
190
190
|
|
|
191
|
-
| Token |
|
|
192
|
-
| ----------------- |
|
|
193
|
-
| `primary` |
|
|
194
|
-
| `primary-hover` |
|
|
195
|
-
| `primary-inverse` |
|
|
196
|
-
| `secondary` |
|
|
197
|
-
| `secondary-hover` |
|
|
198
|
-
| `danger` |
|
|
199
|
-
| `danger-hover` |
|
|
191
|
+
| Token | Resolves to | Use for |
|
|
192
|
+
| ----------------- | ------------ | ------------------------------------ |
|
|
193
|
+
| `primary` | `sapphire` | Primary CTA, links, focus rings |
|
|
194
|
+
| `primary-hover` | `navy-800` | Hover state of primary interactive |
|
|
195
|
+
| `primary-inverse` | `yellow-500` | Primary on a colored background |
|
|
196
|
+
| `secondary` | `navy-800` | Secondary CTA, ghost buttons |
|
|
197
|
+
| `secondary-hover` | `navy-700` | Hover state of secondary interactive |
|
|
198
|
+
| `danger` | `red-500` | Destructive actions, error states |
|
|
199
|
+
| `danger-hover` | `red-600` | Hover on danger interactive |
|
|
200
200
|
|
|
201
201
|
### Border
|
|
202
202
|
|
|
203
|
-
| Token |
|
|
204
|
-
| ------------------ |
|
|
205
|
-
| `border-primary` |
|
|
206
|
-
| `border-secondary` |
|
|
207
|
-
| `border-tertiary` |
|
|
208
|
-
| `border-disabled` |
|
|
203
|
+
| Token | Resolves to | Use for |
|
|
204
|
+
| ------------------ | ----------- | ------------------------------- |
|
|
205
|
+
| `border-primary` | `navy-400` | Standard input and card borders |
|
|
206
|
+
| `border-secondary` | `navy-600` | Medium-weight borders |
|
|
207
|
+
| `border-tertiary` | `navy-800` | Strong structural borders |
|
|
208
|
+
| `border-disabled` | `navy-300` | Disabled input borders |
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
`border-primary` resolves to `navy-400` — mid-weight borders for inputs and cards.
|
|
211
211
|
|
|
212
212
|
### Feedback
|
|
213
213
|
|
|
214
|
-
| Token |
|
|
215
|
-
| ------------------ |
|
|
216
|
-
| `feedback-error` |
|
|
217
|
-
| `feedback-success` |
|
|
218
|
-
| `feedback-warning` |
|
|
214
|
+
| Token | Resolves to | Use for |
|
|
215
|
+
| ------------------ | ----------------- | -------------------------------- |
|
|
216
|
+
| `feedback-error` | `red-600` | Error messages, validation |
|
|
217
|
+
| `feedback-success` | `lxStudioSuccess` | Success messages, confirmations |
|
|
218
|
+
| `feedback-warning` | `yellow-500` | Warning messages, caution states |
|
|
219
219
|
|
|
220
220
|
### Shadow
|
|
221
221
|
|
|
222
|
-
| Token |
|
|
223
|
-
| ------------------ |
|
|
224
|
-
| `shadow-primary` |
|
|
225
|
-
| `shadow-secondary` |
|
|
222
|
+
| Token | Resolves to |
|
|
223
|
+
| ------------------ | ----------- |
|
|
224
|
+
| `shadow-primary` | `navy-200` |
|
|
225
|
+
| `shadow-secondary` | `navy-600` |
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
Use `shadow-primary` for standard elevated surfaces.
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|
|
231
231
|
## LX Studio Color Palette
|
|
232
232
|
|
|
233
|
-
LX Studio adds
|
|
233
|
+
LX Studio adds named colors to the core palette. Use semantic aliases in code, not these raw names.
|
|
234
234
|
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
| `
|
|
238
|
-
| `
|
|
239
|
-
| `
|
|
240
|
-
| `lxStudioBgPrimary` | `#FAFBFC` | `background-primary` |
|
|
235
|
+
| Palette token | Semantic alias(es) |
|
|
236
|
+
| ------------------- | -------------------- |
|
|
237
|
+
| `sapphire` | `primary` |
|
|
238
|
+
| `lxStudioSuccess` | `feedback-success` |
|
|
239
|
+
| `lxStudioBgPrimary` | `background-primary` |
|
|
241
240
|
|
|
242
241
|
The full core swatch palette (navy, hyper, blue, green, yellow, red, etc.) is also available. Raw swatches should only be used for fixed colors that must not adapt (illustrations, data viz, etc.).
|
|
243
242
|
|
|
@@ -247,35 +246,35 @@ The full core swatch palette (navy, hyper, blue, green, yellow, red, etc.) is al
|
|
|
247
246
|
|
|
248
247
|
### Typefaces
|
|
249
248
|
|
|
250
|
-
LX Studio uses **
|
|
249
|
+
LX Studio uses **Skillsoft Text** for body and headlines and **Skillsoft Sans** for accent UI.
|
|
251
250
|
|
|
252
|
-
| Token | Font | Use for
|
|
253
|
-
| ----------- | ----------------------------------------------------- |
|
|
254
|
-
| `base` | `"
|
|
255
|
-
| `accent` | `"
|
|
256
|
-
| `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Code editor contexts
|
|
257
|
-
| `system` | System UI fonts | Performance-critical surfaces
|
|
251
|
+
| Token | Font | Use for |
|
|
252
|
+
| ----------- | ----------------------------------------------------- | ----------------------------------------- |
|
|
253
|
+
| `base` | `"Skillsoft Text"`, sans-serif fallback | All default UI text, headlines, body copy |
|
|
254
|
+
| `accent` | `"Skillsoft Sans"`, sans-serif fallback | Labels, captions, accent UI |
|
|
255
|
+
| `monospace` | Monaco, Menlo, Ubuntu Mono, Droid Sans Mono, Consolas | Code editor contexts |
|
|
256
|
+
| `system` | System UI fonts | Performance-critical surfaces |
|
|
258
257
|
|
|
259
|
-
|
|
258
|
+
Skillsoft fonts are loaded via Gamut's asset provider.
|
|
260
259
|
|
|
261
260
|
### Rules
|
|
262
261
|
|
|
263
|
-
- **
|
|
264
|
-
- **
|
|
262
|
+
- **Skillsoft Text Medium (500)** for headlines, sub-headlines, CTAs, and buttons — use `fontWeight="title"`, not literal `700`.
|
|
263
|
+
- **Skillsoft Text Regular (400)** for body text, UI labels, and menu items.
|
|
265
264
|
- Text is **left-aligned** by default. Center-align only for short marketing headlines. Never right-align.
|
|
266
265
|
- Do not adjust letter-spacing.
|
|
267
|
-
-
|
|
266
|
+
- Skillsoft Sans is the accent face; Skillsoft Text is used for `base` and title styles.
|
|
268
267
|
|
|
269
268
|
### Font weight scale
|
|
270
269
|
|
|
271
|
-
| Token | Value
|
|
272
|
-
| ------- |
|
|
273
|
-
| `base` | 400
|
|
274
|
-
| `title` |
|
|
270
|
+
| Token | Value | Use |
|
|
271
|
+
| ------- | ------- | ------------------------ |
|
|
272
|
+
| `base` | 400 | Body text, UI labels |
|
|
273
|
+
| `title` | **500** | Headlines, CTAs, buttons |
|
|
275
274
|
|
|
276
275
|
### Font size scale
|
|
277
276
|
|
|
278
|
-
|
|
277
|
+
Standard Gamut font size scale:
|
|
279
278
|
|
|
280
279
|
| Token key | Size | Common use |
|
|
281
280
|
| --------- | ---- | ---------------------------- |
|
|
@@ -291,7 +290,7 @@ Shared with Core — all sizes are identical.
|
|
|
291
290
|
|
|
292
291
|
### Line height scale
|
|
293
292
|
|
|
294
|
-
|
|
293
|
+
Standard Gamut line height scale:
|
|
295
294
|
|
|
296
295
|
| Token | Value | Use |
|
|
297
296
|
| ------------- | ----- | ------------------------------- |
|
|
@@ -307,7 +306,7 @@ Target 45–85 characters per line; 66 characters is ideal. Max 50 for multi-col
|
|
|
307
306
|
|
|
308
307
|
## Spacing Scale
|
|
309
308
|
|
|
310
|
-
|
|
309
|
+
All spacing is multiples of 4px on an 8px grid.
|
|
311
310
|
|
|
312
311
|
| Token | Value |
|
|
313
312
|
| ----- | ----- |
|
|
@@ -327,22 +326,20 @@ Identical to Core. All spacing is multiples of 4px on an 8px grid.
|
|
|
327
326
|
|
|
328
327
|
## Border Radius Scale
|
|
329
328
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
336
|
-
| `
|
|
337
|
-
| `
|
|
338
|
-
| `xl` | 16px | 16px | Large cards, modals |
|
|
339
|
-
| `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 |
|
|
340
337
|
|
|
341
338
|
---
|
|
342
339
|
|
|
343
340
|
## Responsive Behavior
|
|
344
341
|
|
|
345
|
-
|
|
342
|
+
Mobile-first; apply styles from the named breakpoint up.
|
|
346
343
|
|
|
347
344
|
| Token | Min-width | Max content |
|
|
348
345
|
| -------- | --------- | ----------- |
|
|
@@ -367,16 +364,14 @@ Minimum interactive touch target: **44×44px** on mobile breakpoints.
|
|
|
367
364
|
|
|
368
365
|
## Component Library
|
|
369
366
|
|
|
370
|
-
|
|
367
|
+
Gamut atoms, molecules, and organisms all apply. Use semantic tokens below for LX Studio styling.
|
|
371
368
|
|
|
372
|
-
Key
|
|
369
|
+
Key patterns:
|
|
373
370
|
|
|
374
|
-
- `FillButton`
|
|
375
|
-
- `
|
|
376
|
-
-
|
|
377
|
-
-
|
|
378
|
-
- `Card` shadows use navy-200 (soft) rather than navy-800 (hard)
|
|
379
|
-
- 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
|
|
380
375
|
|
|
381
376
|
---
|
|
382
377
|
|
|
@@ -385,15 +380,15 @@ Key LX Studio-specific visual differences:
|
|
|
385
380
|
### Colors
|
|
386
381
|
|
|
387
382
|
- **Do** use semantic color aliases (`primary`, `text`, `background`, etc.) — never hardcode hex values.
|
|
388
|
-
- **Do** use `
|
|
383
|
+
- **Do** use `primary` (resolves to palette `sapphire`) for buttons and links.
|
|
389
384
|
- **Don't** attempt dark mode — LX Studio is light only.
|
|
390
|
-
- **Don't** use
|
|
385
|
+
- **Don't** use raw palette swatches for adaptive UI — use semantic aliases.
|
|
391
386
|
|
|
392
387
|
### Typography
|
|
393
388
|
|
|
394
|
-
- **Do** use
|
|
389
|
+
- **Do** use `fontWeight="title"` (500) for headlines, CTAs, and buttons.
|
|
395
390
|
- **Do** keep body text at 150–175% line height for readability.
|
|
396
|
-
- **Don't** use
|
|
391
|
+
- **Don't** use fonts outside the LX Studio theme stack (Skillsoft Text, Skillsoft Sans).
|
|
397
392
|
- **Don't** right-align or center-align body paragraphs.
|
|
398
393
|
- **Don't** adjust letter-spacing.
|
|
399
394
|
|
|
@@ -410,27 +405,27 @@ Key LX Studio-specific visual differences:
|
|
|
410
405
|
|
|
411
406
|
Quick color/token reference for generating or specifying LX Studio UI:
|
|
412
407
|
|
|
413
|
-
| Scenario | Tokens
|
|
414
|
-
| ---------------- |
|
|
415
|
-
| Primary button | `bg: primary
|
|
416
|
-
| Body text | `color: text
|
|
417
|
-
| Headline | `color: text-accent
|
|
418
|
-
| Secondary text | `color: text-secondary
|
|
419
|
-
| Disabled text | `color: text-disabled
|
|
420
|
-
| Elevated surface | `bg: background-primary
|
|
421
|
-
| Card default | `bg: background
|
|
422
|
-
| Error state | `color: feedback-error
|
|
423
|
-
| Success state | `color: feedback-success
|
|
424
|
-
| Warning state | `color: feedback-warning
|
|
425
|
-
| Disabled state | `color: text-disabled
|
|
408
|
+
| Scenario | Tokens |
|
|
409
|
+
| ---------------- | -------------------------------------------------------------------------------------------------- |
|
|
410
|
+
| Primary button | `bg: primary`, `color: white`, `hover: primary-hover`, `borderRadius: md` |
|
|
411
|
+
| Body text | `color: text`, `font: base`, `size: 16`, `weight: 400`, `lineHeight: base` |
|
|
412
|
+
| Headline | `color: text-accent`, `font: base`, `size: 34–64`, `weight: title`, `lineHeight: title` |
|
|
413
|
+
| Secondary text | `color: text-secondary` |
|
|
414
|
+
| Disabled text | `color: text-disabled` |
|
|
415
|
+
| Elevated surface | `bg: background-primary` |
|
|
416
|
+
| Card default | `bg: background`, `borderRadius: none` — add `isInteractive` for hover shadow + `borderRadius: md` |
|
|
417
|
+
| Error state | `color: feedback-error`, `bg: background-error`, `borderColor: danger` |
|
|
418
|
+
| Success state | `color: feedback-success`, `bg: background-success` |
|
|
419
|
+
| Warning state | `color: feedback-warning`, `bg: background-warning` |
|
|
420
|
+
| Disabled state | `color: text-disabled`, `bg: background-disabled`, `borderColor: border-disabled` |
|
|
426
421
|
|
|
427
422
|
### Component token cheatsheet
|
|
428
423
|
|
|
429
424
|
```
|
|
430
|
-
FillButton → bg: primary
|
|
431
|
-
StrokeButton → bg: transparent,
|
|
432
|
-
Checkbox/Toggle → primary
|
|
433
|
-
Card → bg: background, shadow: shadow-primary (
|
|
425
|
+
FillButton → bg: primary, color: white, hover: primary-hover, borderRadius: md
|
|
426
|
+
StrokeButton → bg: transparent, borderColor: secondary
|
|
427
|
+
Checkbox/Toggle → bg: primary, hover: primary-hover, borderRadius: sm
|
|
428
|
+
Card → bg: background, shadow: shadow-primary (navy-200, soft), radius: none
|
|
434
429
|
Alert (error) → uses feedback-error + background-error
|
|
435
430
|
Alert (success) → uses feedback-success + background-success
|
|
436
431
|
Alert (warning) → uses feedback-warning + background-warning
|