@carbon/layout 11.59.0-rc.0 → 11.60.0-rc.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/es/index.js +62 -60
- package/js/generated/layout-tokens.d.ts +51 -0
- package/js/generated/layout-tokens.js +51 -0
- package/lib/index.d.ts +1 -38
- package/lib/index.js +67 -59
- package/package.json +7 -5
- package/src/dtcg/README.md +266 -0
- package/src/dtcg/layout.json +432 -0
- package/src/index.ts +74 -60
- package/style-dictionary/formats/js-layout.js +104 -0
- package/style-dictionary/formats/scss-layout.js +188 -0
- package/style-dictionary/sd.config.js +104 -0
- package/umd/index.js +67 -59
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# Layout Tokens (DTCG Format)
|
|
2
|
+
|
|
3
|
+
This directory contains `@carbon/layout` design tokens in the
|
|
4
|
+
[Design Tokens Community Group (DTCG)](https://tr.designtokens.org/format/)
|
|
5
|
+
format.
|
|
6
|
+
|
|
7
|
+
## File
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
dtcg/
|
|
11
|
+
└── layout.json # All layout tokens organised into DTCG groups
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Tokens are grouped using **native DTCG token groups**. Each top-level key in the
|
|
15
|
+
JSON (e.g. `"spacing"`, `"border-radius"`) is a group, and the tokens live
|
|
16
|
+
inside it:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"spacing": {
|
|
21
|
+
"$description": "Spacing scale based on the 8px mini-unit grid.",
|
|
22
|
+
"spacing-05": {
|
|
23
|
+
"$type": "dimension",
|
|
24
|
+
"$value": 2,
|
|
25
|
+
"$extensions": { "carbon.layout": { "converter": "miniUnits" } }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The group name is the **authoritative category** for a token. The Style
|
|
32
|
+
Dictionary pipeline reads `token.path[0]` (the group key) to decide which
|
|
33
|
+
generated file the token belongs to — no name-prefix inference, no hidden
|
|
34
|
+
ordering rules.
|
|
35
|
+
|
|
36
|
+
## Token Format
|
|
37
|
+
|
|
38
|
+
All tokens follow the DTCG specification. Every token has `$type`, `$value`, and
|
|
39
|
+
`$description`. Some tokens carry a `carbon.layout` extension that describes how
|
|
40
|
+
the value was derived.
|
|
41
|
+
|
|
42
|
+
### Keys
|
|
43
|
+
|
|
44
|
+
| Key | Required | Description |
|
|
45
|
+
| -------------- | -------- | --------------------------------------------------- |
|
|
46
|
+
| `$type` | ✅ | Always `"dimension"` for layout tokens |
|
|
47
|
+
| `$value` | ✅ | The token value — see **Authoring values** below |
|
|
48
|
+
| `$description` | ✅ | Human-readable description of purpose and usage |
|
|
49
|
+
| `$extensions` | — | Carbon-specific metadata — see **Extensions** below |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Authoring values
|
|
54
|
+
|
|
55
|
+
The `$value` field has two modes depending on whether `$extensions` is present.
|
|
56
|
+
|
|
57
|
+
### Without extensions — resolved CSS value
|
|
58
|
+
|
|
59
|
+
When no `carbon.layout` extension is present, `$value` must be a **fully
|
|
60
|
+
resolved CSS value** including its unit. The build pipeline uses it as-is.
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
"fluid-spacing-02": {
|
|
64
|
+
"$type": "dimension",
|
|
65
|
+
"$value": "2vw",
|
|
66
|
+
"$description": "Fluid spacing token — 2vw."
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Valid units: `rem`, `px`, `vw`, `vh`, `%`, or `0` (unitless zero).
|
|
71
|
+
|
|
72
|
+
### With extensions — raw numeric input + converter
|
|
73
|
+
|
|
74
|
+
When `carbon.layout.converter` is present, `$value` is the **raw numeric input**
|
|
75
|
+
to that converter function. The build pipeline resolves it to the final CSS
|
|
76
|
+
value. Do **not** include a unit in `$value` in this case.
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
"spacing-05": {
|
|
80
|
+
"$type": "dimension",
|
|
81
|
+
"$value": 2,
|
|
82
|
+
"$description": "Spacing token — 16px.",
|
|
83
|
+
"$extensions": {
|
|
84
|
+
"carbon.layout": {
|
|
85
|
+
"converter": "miniUnits"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Extensions — `carbon.layout`
|
|
94
|
+
|
|
95
|
+
### `converter`
|
|
96
|
+
|
|
97
|
+
Declares how to convert the raw `$value` number to a CSS value.
|
|
98
|
+
|
|
99
|
+
| `converter` | Input | Formula | Example |
|
|
100
|
+
| ------------- | --------------- | ------------------------ | ----------------- |
|
|
101
|
+
| `"miniUnits"` | Grid step count | `steps × 8px ÷ 16 = rem` | `2` → `"1rem"` |
|
|
102
|
+
| `"rem"` | Pixel value | `px ÷ 16 = rem` | `4` → `"0.25rem"` |
|
|
103
|
+
|
|
104
|
+
**`miniUnits`** — Carbon's 8px base grid. Pass the number of grid steps. Use
|
|
105
|
+
this for spacing, container, and layout-scale tokens.
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
"spacing-07": {
|
|
109
|
+
"$type": "dimension",
|
|
110
|
+
"$value": 4,
|
|
111
|
+
"$description": "Spacing token — 32px.",
|
|
112
|
+
"$extensions": {
|
|
113
|
+
"carbon.layout": {
|
|
114
|
+
"converter": "miniUnits"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**`rem`** — Direct pixel-to-rem conversion. Pass the value in pixels. Use this
|
|
121
|
+
for border-radius tokens and any token defined by an explicit px measurement
|
|
122
|
+
rather than a grid step.
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
"border-radius-04": {
|
|
126
|
+
"$type": "dimension",
|
|
127
|
+
"$value": 4,
|
|
128
|
+
"$description": "Border radius token — 4px.",
|
|
129
|
+
"$extensions": {
|
|
130
|
+
"carbon.layout": {
|
|
131
|
+
"converter": "rem"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### `deprecated`
|
|
138
|
+
|
|
139
|
+
Marks a token as deprecated. Set to `true` alongside any other extension keys.
|
|
140
|
+
Tools and codemods can read this flag to warn consumers.
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
"layout-01": {
|
|
144
|
+
"$type": "dimension",
|
|
145
|
+
"$value": 2,
|
|
146
|
+
"$description": "Deprecated. Replaced by spacing scale. Do not use in new work.",
|
|
147
|
+
"$extensions": {
|
|
148
|
+
"carbon.layout": {
|
|
149
|
+
"converter": "miniUnits",
|
|
150
|
+
"deprecated": true
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Token naming and generated file routing
|
|
159
|
+
|
|
160
|
+
Token names in `layout.json` use **kebab-case**. Routing to a generated Sass
|
|
161
|
+
file is determined by the **DTCG group** the token belongs to — `token.path[0]`
|
|
162
|
+
in Style Dictionary terms. There is no name-prefix inference.
|
|
163
|
+
|
|
164
|
+
| DTCG group key | Generated Sass file | Sass map variable |
|
|
165
|
+
| --------------- | ------------------------------------ | --------------------------- |
|
|
166
|
+
| `spacing` | `scss/generated/_spacing.scss` | `$spacing` |
|
|
167
|
+
| `fluid-spacing` | `scss/generated/_fluid-spacing.scss` | `$fluid-spacing` |
|
|
168
|
+
| `container` | `scss/generated/_container.scss` | `$container` |
|
|
169
|
+
| `icon-size` | `scss/generated/_icon-size.scss` | `$icon-size` |
|
|
170
|
+
| `border-radius` | `scss/generated/_border-radius.scss` | `$border-radius` |
|
|
171
|
+
| `layout` | `scss/generated/_layout.scss` | `$layout` |
|
|
172
|
+
| `size` | `scss/generated/_size.scss` | _(no map — bare variables)_ |
|
|
173
|
+
|
|
174
|
+
The JS export name is the camelCase version of the token's own key: `spacing-05`
|
|
175
|
+
→ `spacing05`, `border-radius-04` → `borderRadius04`, `fluid-spacing-02` →
|
|
176
|
+
`fluidSpacing02`.
|
|
177
|
+
|
|
178
|
+
### Adding a token to an existing category
|
|
179
|
+
|
|
180
|
+
Place the token inside the correct group object — it will automatically be
|
|
181
|
+
included in the right file on the next build. For example, to add a new spacing
|
|
182
|
+
step:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
"spacing": {
|
|
186
|
+
"spacing-14": {
|
|
187
|
+
"$type": "dimension",
|
|
188
|
+
"$value": 24,
|
|
189
|
+
"$description": "Spacing token — 192px.",
|
|
190
|
+
"$extensions": {
|
|
191
|
+
"carbon.layout": {
|
|
192
|
+
"converter": "miniUnits"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
This will add `$spacing-14: 12rem !default;` to `_spacing.scss` and
|
|
200
|
+
`export const spacing14 = '12rem';` to `layout-tokens.js`.
|
|
201
|
+
|
|
202
|
+
### Adding a token in a new category
|
|
203
|
+
|
|
204
|
+
If your token does not match any existing prefix (e.g. `gap-*`), you need to
|
|
205
|
+
also update the Style Dictionary pipeline:
|
|
206
|
+
|
|
207
|
+
1. Add your token to `layout.json` with the appropriate name prefix.
|
|
208
|
+
2. Add a new format function in
|
|
209
|
+
[`style-dictionary/formats/scss-layout.js`](../style-dictionary/formats/scss-layout.js):
|
|
210
|
+
```js
|
|
211
|
+
function formatGap({ dictionary }) {
|
|
212
|
+
const tokens = tokensForGroup(dictionary, 'gap-');
|
|
213
|
+
return buildStandardFile(tokens, 'gap', BANNER_2023);
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
3. Export it from the `module.exports` array at the bottom of that file.
|
|
217
|
+
4. Register the new output file in
|
|
218
|
+
[`style-dictionary/sd.config.js`](../style-dictionary/sd.config.js) under the
|
|
219
|
+
`scss` platform's `files` array:
|
|
220
|
+
```js
|
|
221
|
+
{ destination: '_gap.scss', format: 'carbon/scss-gap' }
|
|
222
|
+
```
|
|
223
|
+
5. Forward the new file from the appropriate `scss/_*.scss` entry point (or
|
|
224
|
+
create a new one and forward it from `index.scss`).
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Adding a new token
|
|
229
|
+
|
|
230
|
+
1. Add an entry to `layout.json` following the examples above.
|
|
231
|
+
2. Choose the right name prefix (see table above).
|
|
232
|
+
3. Choose the right `$value` and `converter`:
|
|
233
|
+
- Grid-aligned value? Use `converter: "miniUnits"` and pass the step count.
|
|
234
|
+
- Explicit pixel value? Use `converter: "rem"` and pass the px number.
|
|
235
|
+
- Non-rem unit (e.g. `vw`, `px`)? Omit extensions and write the full CSS
|
|
236
|
+
value directly in `$value`.
|
|
237
|
+
4. Run the build to regenerate SCSS and JS outputs:
|
|
238
|
+
```bash
|
|
239
|
+
cd packages/layout
|
|
240
|
+
yarn build:dtcg
|
|
241
|
+
```
|
|
242
|
+
5. Verify the resolved value in `js/generated/layout-tokens.js` and the correct
|
|
243
|
+
`scss/generated/_*.scss` file.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Build pipeline
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
src/dtcg/layout.json ← you edit this
|
|
251
|
+
│
|
|
252
|
+
▼ yarn build:dtcg
|
|
253
|
+
│ (style-dictionary/sd.config.js)
|
|
254
|
+
│
|
|
255
|
+
├── scss/generated/*.scss (Sass variables + maps, one file per token group)
|
|
256
|
+
└── js/generated/layout-tokens.{js,d.ts} (ES module + types)
|
|
257
|
+
│
|
|
258
|
+
▼
|
|
259
|
+
src/index.ts re-exports all tokens
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
The SD pipeline in
|
|
263
|
+
[`style-dictionary/sd.config.js`](../style-dictionary/sd.config.js) reads the
|
|
264
|
+
`carbon.layout.converter` extension and resolves `$value` before emitting. The
|
|
265
|
+
generated files always contain **resolved CSS values** regardless of how the
|
|
266
|
+
token was authored.
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://tr.designtokens.org/format/",
|
|
3
|
+
"$description": "Layout tokens for Carbon Design System — spacing, container, icon size, fluid spacing, size, border-radius, and deprecated layout scale.",
|
|
4
|
+
"spacing": {
|
|
5
|
+
"$description": "Spacing scale based on the 8px mini-unit grid.",
|
|
6
|
+
"spacing-01": {
|
|
7
|
+
"$type": "dimension",
|
|
8
|
+
"$value": 0.25,
|
|
9
|
+
"$description": "Spacing token — 2px. Use for the smallest internal padding or gaps between tightly-packed elements.",
|
|
10
|
+
"$extensions": {
|
|
11
|
+
"carbon.layout": {
|
|
12
|
+
"converter": "miniUnits"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"spacing-02": {
|
|
17
|
+
"$type": "dimension",
|
|
18
|
+
"$value": 0.5,
|
|
19
|
+
"$description": "Spacing token — 4px. Use for compact padding within dense components.",
|
|
20
|
+
"$extensions": {
|
|
21
|
+
"carbon.layout": {
|
|
22
|
+
"converter": "miniUnits"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"spacing-03": {
|
|
27
|
+
"$type": "dimension",
|
|
28
|
+
"$value": 1,
|
|
29
|
+
"$description": "Spacing token — 8px. Default small spacing unit for inset padding and icon gaps.",
|
|
30
|
+
"$extensions": {
|
|
31
|
+
"carbon.layout": {
|
|
32
|
+
"converter": "miniUnits"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"spacing-04": {
|
|
37
|
+
"$type": "dimension",
|
|
38
|
+
"$value": 1.5,
|
|
39
|
+
"$description": "Spacing token — 12px. Use for comfortable inset padding in small components.",
|
|
40
|
+
"$extensions": {
|
|
41
|
+
"carbon.layout": {
|
|
42
|
+
"converter": "miniUnits"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"spacing-05": {
|
|
47
|
+
"$type": "dimension",
|
|
48
|
+
"$value": 2,
|
|
49
|
+
"$description": "Spacing token — 16px. Standard spacing unit; use for typical component padding and gutters.",
|
|
50
|
+
"$extensions": {
|
|
51
|
+
"carbon.layout": {
|
|
52
|
+
"converter": "miniUnits"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"spacing-06": {
|
|
57
|
+
"$type": "dimension",
|
|
58
|
+
"$value": 3,
|
|
59
|
+
"$description": "Spacing token — 24px. Use for section padding and medium gaps between components.",
|
|
60
|
+
"$extensions": {
|
|
61
|
+
"carbon.layout": {
|
|
62
|
+
"converter": "miniUnits"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"spacing-07": {
|
|
67
|
+
"$type": "dimension",
|
|
68
|
+
"$value": 4,
|
|
69
|
+
"$description": "Spacing token — 32px. Use for group separation and larger layout gaps.",
|
|
70
|
+
"$extensions": {
|
|
71
|
+
"carbon.layout": {
|
|
72
|
+
"converter": "miniUnits"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"spacing-08": {
|
|
77
|
+
"$type": "dimension",
|
|
78
|
+
"$value": 5,
|
|
79
|
+
"$description": "Spacing token — 40px. Use for generous padding between distinct sections.",
|
|
80
|
+
"$extensions": {
|
|
81
|
+
"carbon.layout": {
|
|
82
|
+
"converter": "miniUnits"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"spacing-09": {
|
|
87
|
+
"$type": "dimension",
|
|
88
|
+
"$value": 6,
|
|
89
|
+
"$description": "Spacing token — 48px. Use for large vertical rhythm and section separation.",
|
|
90
|
+
"$extensions": {
|
|
91
|
+
"carbon.layout": {
|
|
92
|
+
"converter": "miniUnits"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"spacing-10": {
|
|
97
|
+
"$type": "dimension",
|
|
98
|
+
"$value": 8,
|
|
99
|
+
"$description": "Spacing token — 64px. Use for major page section gaps.",
|
|
100
|
+
"$extensions": {
|
|
101
|
+
"carbon.layout": {
|
|
102
|
+
"converter": "miniUnits"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"spacing-11": {
|
|
107
|
+
"$type": "dimension",
|
|
108
|
+
"$value": 10,
|
|
109
|
+
"$description": "Spacing token — 80px. Use for hero and large feature-area spacing.",
|
|
110
|
+
"$extensions": {
|
|
111
|
+
"carbon.layout": {
|
|
112
|
+
"converter": "miniUnits"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"spacing-12": {
|
|
117
|
+
"$type": "dimension",
|
|
118
|
+
"$value": 12,
|
|
119
|
+
"$description": "Spacing token — 96px. Use for very large layout separations.",
|
|
120
|
+
"$extensions": {
|
|
121
|
+
"carbon.layout": {
|
|
122
|
+
"converter": "miniUnits"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"spacing-13": {
|
|
127
|
+
"$type": "dimension",
|
|
128
|
+
"$value": 20,
|
|
129
|
+
"$description": "Spacing token — 160px. Use for the largest page-level spacing needs.",
|
|
130
|
+
"$extensions": {
|
|
131
|
+
"carbon.layout": {
|
|
132
|
+
"converter": "miniUnits"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"fluid-spacing": {
|
|
138
|
+
"$description": "Viewport-relative fluid spacing tokens.",
|
|
139
|
+
"fluid-spacing-01": {
|
|
140
|
+
"$type": "dimension",
|
|
141
|
+
"$value": "0",
|
|
142
|
+
"$description": "Fluid spacing token — 0. Use when no fluid spacing is required."
|
|
143
|
+
},
|
|
144
|
+
"fluid-spacing-02": {
|
|
145
|
+
"$type": "dimension",
|
|
146
|
+
"$value": "2vw",
|
|
147
|
+
"$description": "Fluid spacing token — 2vw. Use for viewport-proportional small spacing in fluid layouts."
|
|
148
|
+
},
|
|
149
|
+
"fluid-spacing-03": {
|
|
150
|
+
"$type": "dimension",
|
|
151
|
+
"$value": "5vw",
|
|
152
|
+
"$description": "Fluid spacing token — 5vw. Use for medium fluid spacing that scales with the viewport."
|
|
153
|
+
},
|
|
154
|
+
"fluid-spacing-04": {
|
|
155
|
+
"$type": "dimension",
|
|
156
|
+
"$value": "10vw",
|
|
157
|
+
"$description": "Fluid spacing token — 10vw. Use for large fluid spacing in full-bleed or hero sections."
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"container": {
|
|
161
|
+
"$description": "Interactive element container height tokens.",
|
|
162
|
+
"container-01": {
|
|
163
|
+
"$type": "dimension",
|
|
164
|
+
"$value": 3,
|
|
165
|
+
"$description": "Container height token — 24px. Minimum interactive target height for compact UI elements.",
|
|
166
|
+
"$extensions": {
|
|
167
|
+
"carbon.layout": {
|
|
168
|
+
"converter": "miniUnits"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"container-02": {
|
|
173
|
+
"$type": "dimension",
|
|
174
|
+
"$value": 4,
|
|
175
|
+
"$description": "Container height token — 32px. Small interactive element height.",
|
|
176
|
+
"$extensions": {
|
|
177
|
+
"carbon.layout": {
|
|
178
|
+
"converter": "miniUnits"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"container-03": {
|
|
183
|
+
"$type": "dimension",
|
|
184
|
+
"$value": 5,
|
|
185
|
+
"$description": "Container height token — 40px. Default interactive element height.",
|
|
186
|
+
"$extensions": {
|
|
187
|
+
"carbon.layout": {
|
|
188
|
+
"converter": "miniUnits"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"container-04": {
|
|
193
|
+
"$type": "dimension",
|
|
194
|
+
"$value": 6,
|
|
195
|
+
"$description": "Container height token — 48px. Large interactive element height.",
|
|
196
|
+
"$extensions": {
|
|
197
|
+
"carbon.layout": {
|
|
198
|
+
"converter": "miniUnits"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"container-05": {
|
|
203
|
+
"$type": "dimension",
|
|
204
|
+
"$value": 8,
|
|
205
|
+
"$description": "Container height token — 64px. Extra-large interactive element height.",
|
|
206
|
+
"$extensions": {
|
|
207
|
+
"carbon.layout": {
|
|
208
|
+
"converter": "miniUnits"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"size": {
|
|
214
|
+
"$description": "Named component size tokens (xs–2xl).",
|
|
215
|
+
"size-xs": {
|
|
216
|
+
"$type": "dimension",
|
|
217
|
+
"$value": 24,
|
|
218
|
+
"$description": "Component size token — XSmall, 24px. Use for the smallest component variant.",
|
|
219
|
+
"$extensions": {
|
|
220
|
+
"carbon.layout": {
|
|
221
|
+
"converter": "rem"
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"size-sm": {
|
|
226
|
+
"$type": "dimension",
|
|
227
|
+
"$value": 32,
|
|
228
|
+
"$description": "Component size token — Small, 32px.",
|
|
229
|
+
"$extensions": {
|
|
230
|
+
"carbon.layout": {
|
|
231
|
+
"converter": "rem"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"size-md": {
|
|
236
|
+
"$type": "dimension",
|
|
237
|
+
"$value": 40,
|
|
238
|
+
"$description": "Component size token — Medium, 40px. Default component size.",
|
|
239
|
+
"$extensions": {
|
|
240
|
+
"carbon.layout": {
|
|
241
|
+
"converter": "rem"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
"size-lg": {
|
|
246
|
+
"$type": "dimension",
|
|
247
|
+
"$value": 48,
|
|
248
|
+
"$description": "Component size token — Large, 48px.",
|
|
249
|
+
"$extensions": {
|
|
250
|
+
"carbon.layout": {
|
|
251
|
+
"converter": "rem"
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"size-xl": {
|
|
256
|
+
"$type": "dimension",
|
|
257
|
+
"$value": 64,
|
|
258
|
+
"$description": "Component size token — XLarge, 64px.",
|
|
259
|
+
"$extensions": {
|
|
260
|
+
"carbon.layout": {
|
|
261
|
+
"converter": "rem"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"size-2xl": {
|
|
266
|
+
"$type": "dimension",
|
|
267
|
+
"$value": 80,
|
|
268
|
+
"$description": "Component size token — 2XLarge, 80px.",
|
|
269
|
+
"$extensions": {
|
|
270
|
+
"carbon.layout": {
|
|
271
|
+
"converter": "rem"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"icon-size": {
|
|
277
|
+
"$description": "Icon size tokens.",
|
|
278
|
+
"icon-size-01": {
|
|
279
|
+
"$type": "dimension",
|
|
280
|
+
"$value": "1rem",
|
|
281
|
+
"$description": "Icon size token — 16px. Standard icon size for inline and UI icons."
|
|
282
|
+
},
|
|
283
|
+
"icon-size-02": {
|
|
284
|
+
"$type": "dimension",
|
|
285
|
+
"$value": "1.25rem",
|
|
286
|
+
"$description": "Icon size token — 20px. Use for slightly larger icons that need more visual weight."
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"border-radius": {
|
|
290
|
+
"$description": "Border radius tokens for component rounding.",
|
|
291
|
+
"border-radius-00": {
|
|
292
|
+
"$type": "dimension",
|
|
293
|
+
"$value": "0px",
|
|
294
|
+
"$description": "Border radius token — 0. No rounding; use for sharp-cornered elements."
|
|
295
|
+
},
|
|
296
|
+
"border-radius-02": {
|
|
297
|
+
"$type": "dimension",
|
|
298
|
+
"$value": 2,
|
|
299
|
+
"$description": "Border radius token — 2px. Subtle rounding for small components like tags and badges.",
|
|
300
|
+
"$extensions": {
|
|
301
|
+
"carbon.layout": {
|
|
302
|
+
"converter": "rem"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"border-radius-04": {
|
|
307
|
+
"$type": "dimension",
|
|
308
|
+
"$value": 4,
|
|
309
|
+
"$description": "Border radius token — 4px. Default rounding for inputs, cards, and general components.",
|
|
310
|
+
"$extensions": {
|
|
311
|
+
"carbon.layout": {
|
|
312
|
+
"converter": "rem"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
"border-radius-08": {
|
|
317
|
+
"$type": "dimension",
|
|
318
|
+
"$value": 8,
|
|
319
|
+
"$description": "Border radius token — 8px. Moderate rounding for panels, modals, and containers.",
|
|
320
|
+
"$extensions": {
|
|
321
|
+
"carbon.layout": {
|
|
322
|
+
"converter": "rem"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
"border-radius-16": {
|
|
327
|
+
"$type": "dimension",
|
|
328
|
+
"$value": 16,
|
|
329
|
+
"$description": "Border radius token — 16px. Strong rounding for large cards or featured containers.",
|
|
330
|
+
"$extensions": {
|
|
331
|
+
"carbon.layout": {
|
|
332
|
+
"converter": "rem"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"border-radius-24": {
|
|
337
|
+
"$type": "dimension",
|
|
338
|
+
"$value": 24,
|
|
339
|
+
"$description": "Border radius token — 24px. Very rounded corners for pill-adjacent components.",
|
|
340
|
+
"$extensions": {
|
|
341
|
+
"carbon.layout": {
|
|
342
|
+
"converter": "rem"
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"border-radius-max": {
|
|
347
|
+
"$type": "dimension",
|
|
348
|
+
"$value": "999999px",
|
|
349
|
+
"$description": "Border radius token — pill/fully rounded. Use for pill buttons, chips, and circular elements."
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
"layout": {
|
|
353
|
+
"$description": "Deprecated layout scale tokens. Replaced by the spacing scale — do not use in new work.",
|
|
354
|
+
"layout-01": {
|
|
355
|
+
"$type": "dimension",
|
|
356
|
+
"$value": 2,
|
|
357
|
+
"$description": "Deprecated layout token — 16px. Replaced by spacing scale. Do not use in new work.",
|
|
358
|
+
"$extensions": {
|
|
359
|
+
"carbon.layout": {
|
|
360
|
+
"converter": "miniUnits",
|
|
361
|
+
"deprecated": true
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
"layout-02": {
|
|
366
|
+
"$type": "dimension",
|
|
367
|
+
"$value": 3,
|
|
368
|
+
"$description": "Deprecated layout token — 24px. Replaced by spacing scale. Do not use in new work.",
|
|
369
|
+
"$extensions": {
|
|
370
|
+
"carbon.layout": {
|
|
371
|
+
"converter": "miniUnits",
|
|
372
|
+
"deprecated": true
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
"layout-03": {
|
|
377
|
+
"$type": "dimension",
|
|
378
|
+
"$value": 4,
|
|
379
|
+
"$description": "Deprecated layout token — 32px. Replaced by spacing scale. Do not use in new work.",
|
|
380
|
+
"$extensions": {
|
|
381
|
+
"carbon.layout": {
|
|
382
|
+
"converter": "miniUnits",
|
|
383
|
+
"deprecated": true
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
"layout-04": {
|
|
388
|
+
"$type": "dimension",
|
|
389
|
+
"$value": 6,
|
|
390
|
+
"$description": "Deprecated layout token — 48px. Replaced by spacing scale. Do not use in new work.",
|
|
391
|
+
"$extensions": {
|
|
392
|
+
"carbon.layout": {
|
|
393
|
+
"converter": "miniUnits",
|
|
394
|
+
"deprecated": true
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
"layout-05": {
|
|
399
|
+
"$type": "dimension",
|
|
400
|
+
"$value": 8,
|
|
401
|
+
"$description": "Deprecated layout token — 64px. Replaced by spacing scale. Do not use in new work.",
|
|
402
|
+
"$extensions": {
|
|
403
|
+
"carbon.layout": {
|
|
404
|
+
"converter": "miniUnits",
|
|
405
|
+
"deprecated": true
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
"layout-06": {
|
|
410
|
+
"$type": "dimension",
|
|
411
|
+
"$value": 12,
|
|
412
|
+
"$description": "Deprecated layout token — 96px. Replaced by spacing scale. Do not use in new work.",
|
|
413
|
+
"$extensions": {
|
|
414
|
+
"carbon.layout": {
|
|
415
|
+
"converter": "miniUnits",
|
|
416
|
+
"deprecated": true
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"layout-07": {
|
|
421
|
+
"$type": "dimension",
|
|
422
|
+
"$value": 20,
|
|
423
|
+
"$description": "Deprecated layout token — 160px. Replaced by spacing scale. Do not use in new work.",
|
|
424
|
+
"$extensions": {
|
|
425
|
+
"carbon.layout": {
|
|
426
|
+
"converter": "miniUnits",
|
|
427
|
+
"deprecated": true
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|