@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.
@@ -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
+ }