@primer/primitives 11.7.0-rc.9e55ef3b → 11.7.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.
Files changed (80) hide show
  1. package/DESIGN_TOKENS_SPEC.md +6 -10
  2. package/dist/build/platforms/css.js +1 -0
  3. package/dist/css/functional/size/border.css +4 -2
  4. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +6 -4
  5. package/dist/css/functional/themes/dark-colorblind.css +6 -4
  6. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +6 -4
  7. package/dist/css/functional/themes/dark-dimmed.css +6 -4
  8. package/dist/css/functional/themes/dark-high-contrast.css +6 -4
  9. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +6 -4
  10. package/dist/css/functional/themes/dark-tritanopia.css +6 -4
  11. package/dist/css/functional/themes/dark.css +6 -4
  12. package/dist/css/functional/themes/light-colorblind-high-contrast.css +6 -4
  13. package/dist/css/functional/themes/light-colorblind.css +6 -4
  14. package/dist/css/functional/themes/light-high-contrast.css +6 -4
  15. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +6 -4
  16. package/dist/css/functional/themes/light-tritanopia.css +6 -4
  17. package/dist/css/functional/themes/light.css +6 -4
  18. package/dist/docs/functional/size/border.json +74 -12
  19. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +41 -11
  20. package/dist/docs/functional/themes/dark-colorblind.json +41 -11
  21. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +41 -11
  22. package/dist/docs/functional/themes/dark-dimmed.json +41 -11
  23. package/dist/docs/functional/themes/dark-high-contrast.json +41 -11
  24. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +41 -11
  25. package/dist/docs/functional/themes/dark-tritanopia.json +41 -11
  26. package/dist/docs/functional/themes/dark.json +41 -11
  27. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +41 -11
  28. package/dist/docs/functional/themes/light-colorblind.json +41 -11
  29. package/dist/docs/functional/themes/light-high-contrast.json +41 -11
  30. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +41 -11
  31. package/dist/docs/functional/themes/light-tritanopia.json +41 -11
  32. package/dist/docs/functional/themes/light.json +41 -11
  33. package/dist/fallbacks/color-fallbacks.json +1 -0
  34. package/dist/fallbacks/functional/size/border.json +2 -0
  35. package/dist/figma/dimension/dimension.json +46 -22
  36. package/dist/figma/figma.json +1 -1
  37. package/dist/figma/themes/dark-colorblind.json +34 -17
  38. package/dist/figma/themes/dark-dimmed.json +34 -17
  39. package/dist/figma/themes/dark-high-contrast.json +34 -17
  40. package/dist/figma/themes/dark-tritanopia.json +34 -17
  41. package/dist/figma/themes/dark.json +34 -17
  42. package/dist/figma/themes/light-colorblind.json +34 -17
  43. package/dist/figma/themes/light-high-contrast.json +34 -17
  44. package/dist/figma/themes/light-tritanopia.json +34 -17
  45. package/dist/figma/themes/light.json +34 -17
  46. package/dist/internalCss/dark-colorblind-high-contrast.css +12 -22
  47. package/dist/internalCss/dark-colorblind.css +12 -22
  48. package/dist/internalCss/dark-dimmed-high-contrast.css +12 -22
  49. package/dist/internalCss/dark-dimmed.css +12 -22
  50. package/dist/internalCss/dark-high-contrast.css +12 -22
  51. package/dist/internalCss/dark-tritanopia-high-contrast.css +12 -22
  52. package/dist/internalCss/dark-tritanopia.css +12 -22
  53. package/dist/internalCss/dark.css +12 -22
  54. package/dist/internalCss/light-colorblind-high-contrast.css +12 -22
  55. package/dist/internalCss/light-colorblind.css +12 -22
  56. package/dist/internalCss/light-high-contrast.css +12 -22
  57. package/dist/internalCss/light-tritanopia-high-contrast.css +12 -22
  58. package/dist/internalCss/light-tritanopia.css +12 -22
  59. package/dist/internalCss/light.css +12 -22
  60. package/dist/styleLint/functional/size/border.json +75 -13
  61. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +44 -10
  62. package/dist/styleLint/functional/themes/dark-colorblind.json +44 -10
  63. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +44 -10
  64. package/dist/styleLint/functional/themes/dark-dimmed.json +44 -10
  65. package/dist/styleLint/functional/themes/dark-high-contrast.json +44 -10
  66. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +44 -10
  67. package/dist/styleLint/functional/themes/dark-tritanopia.json +44 -10
  68. package/dist/styleLint/functional/themes/dark.json +44 -10
  69. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +44 -10
  70. package/dist/styleLint/functional/themes/light-colorblind.json +44 -10
  71. package/dist/styleLint/functional/themes/light-high-contrast.json +44 -10
  72. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +44 -10
  73. package/dist/styleLint/functional/themes/light-tritanopia.json +44 -10
  74. package/dist/styleLint/functional/themes/light.json +44 -10
  75. package/package.json +2 -2
  76. package/src/tokens/component/focus.json5 +104 -0
  77. package/src/tokens/fallback/color-fallbacks.json +1 -0
  78. package/src/tokens/functional/border/border.json5 +0 -20
  79. package/src/tokens/functional/size/border.json5 +0 -30
  80. package/src/tokens/functional/color/focus.json5 +0 -20
@@ -288,9 +288,6 @@
288
288
  --base-display-color-yellow-8: #5c3d00;
289
289
  --base-display-color-yellow-9: #422b00;
290
290
  --bgColor-success-emphasis: #1f883d; /** Strong success background for prominent positive actions */
291
- --borderWidth-thick: 0.125rem; /** Thick 2px border for emphasis. Use for focus indicators, selected states, or to emphasize important boundaries */
292
- --borderWidth-thicker: 0.25rem; /** Extra thick 4px border for maximum emphasis. Use sparingly for high-contrast focus indicators or critical visual separators */
293
- --borderWidth-thin: 0.0625rem; /** Standard 1px border width. Use for most borders, dividers, and outlines throughout the interface */
294
291
  --button-outline-bgColor-active: #0757ba;
295
292
  --button-primary-bgColor-active: #197935;
296
293
  --button-primary-bgColor-disabled: #95d8a6;
@@ -301,8 +298,6 @@
301
298
  --control-checked-bgColor-active: #0757ba;
302
299
  --control-checked-bgColor-hover: #0860ca;
303
300
  --fgColor-danger: #d1242f; /** Danger text for errors and destructive actions */
304
- --outline-focus-offset: -0.125rem; /** Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds */
305
- --outline-focus-width: 0.125rem; /** Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements */
306
301
  --reactionButton-selected-bgColor-hover: #caecff;
307
302
  --avatarStack-fade-bgColor-default: var(--base-color-neutral-7);
308
303
  --avatarStack-fade-bgColor-muted: var(--base-color-neutral-5);
@@ -348,10 +343,9 @@
348
343
  --borderColor-success-emphasis: var(--base-color-green-5); /** Strong success border for prominent positive elements */
349
344
  --borderColor-success-muted: #4ac26b66; /** Subtle success border for positive feedback elements */
350
345
  --borderColor-transparent: var(--base-color-transparent); /** Fully transparent border */
351
- --borderWidth-default: var(--borderWidth-thin); /** Default border width for most UI elements. Alias of borderWidth.thin (1px) */
352
- --boxShadow-thick: inset 0 0 0 var(--borderWidth-thick); /** Thick shadow (2px) used instead of a border for emphasis without layout shift */
353
- --boxShadow-thicker: inset 0 0 0 var(--borderWidth-thicker); /** Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact */
354
- --boxShadow-thin: inset 0 0 0 var(--borderWidth-thin); /** Thin shadow used instead of a border to prevent layout shift */
346
+ --boxShadow-thick: inset 0 0 0 0.125rem; /** Thick shadow (2px) used instead of a border for emphasis without layout shift */
347
+ --boxShadow-thicker: inset 0 0 0 0.25rem; /** Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact */
348
+ --boxShadow-thin: inset 0 0 0 0.0625rem; /** Thin shadow used instead of a border to prevent layout shift */
355
349
  --button-danger-bgColor-active: var(--base-color-red-6);
356
350
  --button-danger-fgColor-disabled: #d1242f80;
357
351
  --button-danger-fgColor-rest: var(--fgColor-danger);
@@ -1087,7 +1081,7 @@
1087
1081
  --fgColor-open: var(--fgColor-success); /** Text color for open state indicators (issues, PRs) */
1088
1082
  --fgColor-upsell: var(--fgColor-done); /** Text color for upsell and promotional content */
1089
1083
  --fgColor-white: var(--base-color-neutral-0); /** Pure white text */
1090
- --focus-outlineColor: var(--borderColor-accent-emphasis); /** Outline color for focus states on interactive elements */
1084
+ --focus-outline-color: var(--borderColor-accent-emphasis); /** Outline color for focus states on interactive elements */
1091
1085
  --header-fgColor-default: #ffffffb3;
1092
1086
  --header-fgColor-logo: var(--base-color-neutral-0);
1093
1087
  --overlay-bgColor: var(--base-color-neutral-0);
@@ -1175,7 +1169,8 @@
1175
1169
  --diffBlob-deletionWord-fgColor: var(--fgColor-default);
1176
1170
  --diffBlob-hunkNum-fgColor-hover: var(--fgColor-onEmphasis);
1177
1171
  --diffBlob-hunkNum-fgColor-rest: var(--fgColor-default);
1178
- --focus-outline: 2px solid #0969da; /** Focus ring outline for keyboard navigation and accessibility. */
1172
+ --focus-outline: 0.125rem solid #0969da; /** Focus ring outline for keyboard navigation and accessibility. */
1173
+ --focus-outlineColor: var(--focus-outline-color); /** Deprecated. Use focus.outline-color instead. */
1179
1174
  --overlay-borderColor: #d1d9e080;
1180
1175
  --reactionButton-selected-fgColor-rest: var(--fgColor-link);
1181
1176
  --tooltip-fgColor: var(--fgColor-onEmphasis);
@@ -1489,9 +1484,6 @@
1489
1484
  --base-display-color-yellow-8: #5c3d00;
1490
1485
  --base-display-color-yellow-9: #422b00;
1491
1486
  --bgColor-success-emphasis: #1f883d; /** Strong success background for prominent positive actions */
1492
- --borderWidth-thick: 0.125rem; /** Thick 2px border for emphasis. Use for focus indicators, selected states, or to emphasize important boundaries */
1493
- --borderWidth-thicker: 0.25rem; /** Extra thick 4px border for maximum emphasis. Use sparingly for high-contrast focus indicators or critical visual separators */
1494
- --borderWidth-thin: 0.0625rem; /** Standard 1px border width. Use for most borders, dividers, and outlines throughout the interface */
1495
1487
  --button-outline-bgColor-active: #0757ba;
1496
1488
  --button-primary-bgColor-active: #197935;
1497
1489
  --button-primary-bgColor-disabled: #95d8a6;
@@ -1502,8 +1494,6 @@
1502
1494
  --control-checked-bgColor-active: #0757ba;
1503
1495
  --control-checked-bgColor-hover: #0860ca;
1504
1496
  --fgColor-danger: #d1242f; /** Danger text for errors and destructive actions */
1505
- --outline-focus-offset: -0.125rem; /** Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds */
1506
- --outline-focus-width: 0.125rem; /** Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements */
1507
1497
  --reactionButton-selected-bgColor-hover: #caecff;
1508
1498
  --avatarStack-fade-bgColor-default: var(--base-color-neutral-7);
1509
1499
  --avatarStack-fade-bgColor-muted: var(--base-color-neutral-5);
@@ -1549,10 +1539,9 @@
1549
1539
  --borderColor-success-emphasis: var(--base-color-green-5); /** Strong success border for prominent positive elements */
1550
1540
  --borderColor-success-muted: #4ac26b66; /** Subtle success border for positive feedback elements */
1551
1541
  --borderColor-transparent: var(--base-color-transparent); /** Fully transparent border */
1552
- --borderWidth-default: var(--borderWidth-thin); /** Default border width for most UI elements. Alias of borderWidth.thin (1px) */
1553
- --boxShadow-thick: inset 0 0 0 var(--borderWidth-thick); /** Thick shadow (2px) used instead of a border for emphasis without layout shift */
1554
- --boxShadow-thicker: inset 0 0 0 var(--borderWidth-thicker); /** Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact */
1555
- --boxShadow-thin: inset 0 0 0 var(--borderWidth-thin); /** Thin shadow used instead of a border to prevent layout shift */
1542
+ --boxShadow-thick: inset 0 0 0 0.125rem; /** Thick shadow (2px) used instead of a border for emphasis without layout shift */
1543
+ --boxShadow-thicker: inset 0 0 0 0.25rem; /** Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact */
1544
+ --boxShadow-thin: inset 0 0 0 0.0625rem; /** Thin shadow used instead of a border to prevent layout shift */
1556
1545
  --button-danger-bgColor-active: var(--base-color-red-6);
1557
1546
  --button-danger-fgColor-disabled: #d1242f80;
1558
1547
  --button-danger-fgColor-rest: var(--fgColor-danger);
@@ -2288,7 +2277,7 @@
2288
2277
  --fgColor-open: var(--fgColor-success); /** Text color for open state indicators (issues, PRs) */
2289
2278
  --fgColor-upsell: var(--fgColor-done); /** Text color for upsell and promotional content */
2290
2279
  --fgColor-white: var(--base-color-neutral-0); /** Pure white text */
2291
- --focus-outlineColor: var(--borderColor-accent-emphasis); /** Outline color for focus states on interactive elements */
2280
+ --focus-outline-color: var(--borderColor-accent-emphasis); /** Outline color for focus states on interactive elements */
2292
2281
  --header-fgColor-default: #ffffffb3;
2293
2282
  --header-fgColor-logo: var(--base-color-neutral-0);
2294
2283
  --overlay-bgColor: var(--base-color-neutral-0);
@@ -2376,7 +2365,8 @@
2376
2365
  --diffBlob-deletionWord-fgColor: var(--fgColor-default);
2377
2366
  --diffBlob-hunkNum-fgColor-hover: var(--fgColor-onEmphasis);
2378
2367
  --diffBlob-hunkNum-fgColor-rest: var(--fgColor-default);
2379
- --focus-outline: 2px solid #0969da; /** Focus ring outline for keyboard navigation and accessibility. */
2368
+ --focus-outline: 0.125rem solid #0969da; /** Focus ring outline for keyboard navigation and accessibility. */
2369
+ --focus-outlineColor: var(--focus-outline-color); /** Deprecated. Use focus.outline-color instead. */
2380
2370
  --overlay-borderColor: #d1d9e080;
2381
2371
  --reactionButton-selected-fgColor-rest: var(--fgColor-link);
2382
2372
  --tooltip-fgColor: var(--fgColor-onEmphasis);
@@ -183,43 +183,43 @@
183
183
  "attributes": {},
184
184
  "path": ["boxShadow", "thin"]
185
185
  },
186
- "outline-focus-offset": {
187
- "key": "{outline.focus.offset}",
186
+ "focus-outline-offset": {
187
+ "key": "{focus.outline-offset}",
188
188
  "$value": ["-0.125rem", "-2px"],
189
- "$description": "Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds",
190
189
  "$type": "dimension",
190
+ "$description": "Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds",
191
191
  "$extensions": {
192
192
  "org.primer.figma": {
193
193
  "collection": "functional/size",
194
194
  "scopes": ["borderWidth", "effectFloat"]
195
195
  }
196
196
  },
197
- "filePath": "src/tokens/functional/size/border.json5",
197
+ "filePath": "src/tokens/component/focus.json5",
198
198
  "isSource": true,
199
199
  "original": {
200
200
  "$value": {
201
201
  "value": -2,
202
202
  "unit": "px"
203
203
  },
204
- "$description": "Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds",
205
204
  "$type": "dimension",
205
+ "$description": "Focus outline offset (-2px). Negative value creates an inset outline for keyboard focus indicators, ensuring the focus ring stays within the element bounds",
206
206
  "$extensions": {
207
207
  "org.primer.figma": {
208
208
  "collection": "functional/size",
209
209
  "scopes": ["borderWidth", "effectFloat"]
210
210
  }
211
211
  },
212
- "key": "{outline.focus.offset}"
212
+ "key": "{focus.outline-offset}"
213
213
  },
214
- "name": "outline-focus-offset",
214
+ "name": "focus-outline-offset",
215
215
  "attributes": {},
216
- "path": ["outline", "focus", "offset"]
216
+ "path": ["focus", "outline-offset"]
217
217
  },
218
- "outline-focus-width": {
219
- "key": "{outline.focus.width}",
218
+ "focus-outline-width": {
219
+ "key": "{focus.outline-width}",
220
220
  "$value": ["0.125rem", "2px"],
221
- "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
222
221
  "$type": "dimension",
222
+ "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
223
223
  "$extensions": {
224
224
  "org.primer.figma": {
225
225
  "collection": "functional/size",
@@ -230,15 +230,15 @@
230
230
  "rules": "MUST use for all keyboard focus indicators. Required for WCAG 2.4.7 compliance."
231
231
  }
232
232
  },
233
- "filePath": "src/tokens/functional/size/border.json5",
233
+ "filePath": "src/tokens/component/focus.json5",
234
234
  "isSource": true,
235
235
  "original": {
236
236
  "$value": {
237
237
  "value": 2,
238
238
  "unit": "px"
239
239
  },
240
- "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
241
240
  "$type": "dimension",
241
+ "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
242
242
  "$extensions": {
243
243
  "org.primer.figma": {
244
244
  "collection": "functional/size",
@@ -249,6 +249,68 @@
249
249
  "rules": "MUST use for all keyboard focus indicators. Required for WCAG 2.4.7 compliance."
250
250
  }
251
251
  },
252
+ "key": "{focus.outline-width}"
253
+ },
254
+ "name": "focus-outline-width",
255
+ "attributes": {},
256
+ "path": ["focus", "outline-width"]
257
+ },
258
+ "outline-focus-offset": {
259
+ "key": "{outline.focus.offset}",
260
+ "$value": ["-0.125rem", "-2px"],
261
+ "$type": "dimension",
262
+ "$deprecated": ["-0.125rem", "-2px"],
263
+ "$description": "Deprecated. Use focus.outline-offset instead.",
264
+ "$extensions": {
265
+ "org.primer.figma": {
266
+ "collection": "functional/size",
267
+ "scopes": ["borderWidth", "effectFloat"]
268
+ }
269
+ },
270
+ "filePath": "src/tokens/component/focus.json5",
271
+ "isSource": true,
272
+ "original": {
273
+ "$value": "{focus.outline-offset}",
274
+ "$type": "dimension",
275
+ "$deprecated": "{focus.outline-offset}",
276
+ "$description": "Deprecated. Use focus.outline-offset instead.",
277
+ "$extensions": {
278
+ "org.primer.figma": {
279
+ "collection": "functional/size",
280
+ "scopes": ["borderWidth", "effectFloat"]
281
+ }
282
+ },
283
+ "key": "{outline.focus.offset}"
284
+ },
285
+ "name": "outline-focus-offset",
286
+ "attributes": {},
287
+ "path": ["outline", "focus", "offset"]
288
+ },
289
+ "outline-focus-width": {
290
+ "key": "{outline.focus.width}",
291
+ "$value": ["0.125rem", "2px"],
292
+ "$type": "dimension",
293
+ "$deprecated": ["0.125rem", "2px"],
294
+ "$description": "Deprecated. Use focus.outline-width instead.",
295
+ "$extensions": {
296
+ "org.primer.figma": {
297
+ "collection": "functional/size",
298
+ "scopes": ["borderWidth", "effectFloat"]
299
+ }
300
+ },
301
+ "filePath": "src/tokens/component/focus.json5",
302
+ "isSource": true,
303
+ "original": {
304
+ "$value": "{focus.outline-width}",
305
+ "$type": "dimension",
306
+ "$deprecated": "{focus.outline-width}",
307
+ "$description": "Deprecated. Use focus.outline-width instead.",
308
+ "$extensions": {
309
+ "org.primer.figma": {
310
+ "collection": "functional/size",
311
+ "scopes": ["borderWidth", "effectFloat"]
312
+ }
313
+ },
252
314
  "key": "{outline.focus.width}"
253
315
  },
254
316
  "name": "outline-focus-width",
@@ -39619,7 +39619,11 @@
39619
39619
  },
39620
39620
  "focus-outline": {
39621
39621
  "key": "{focus.outline}",
39622
- "$value": "2px solid #409eff",
39622
+ "$value": {
39623
+ "color": "#409eff",
39624
+ "style": "solid",
39625
+ "width": ["0.125rem", "2px"]
39626
+ },
39623
39627
  "$type": "border",
39624
39628
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
39625
39629
  "$extensions": {
@@ -39628,16 +39632,13 @@
39628
39632
  "rules": "Always ensure focus states are visible. Do not override with custom focus styles that reduce visibility. Use for interactive elements like buttons, links, and form controls."
39629
39633
  }
39630
39634
  },
39631
- "filePath": "src/tokens/functional/border/border.json5",
39635
+ "filePath": "src/tokens/component/focus.json5",
39632
39636
  "isSource": true,
39633
39637
  "original": {
39634
39638
  "$value": {
39635
- "color": "{focus.outlineColor}",
39639
+ "color": "{focus.outline-color}",
39636
39640
  "style": "solid",
39637
- "width": {
39638
- "value": 2,
39639
- "unit": "px"
39640
- }
39641
+ "width": "{focus.outline-width}"
39641
39642
  },
39642
39643
  "$type": "border",
39643
39644
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
@@ -39653,8 +39654,8 @@
39653
39654
  "attributes": {},
39654
39655
  "path": ["focus", "outline"]
39655
39656
  },
39656
- "focus-outlineColor": {
39657
- "key": "{focus.outlineColor}",
39657
+ "focus-outline-color": {
39658
+ "key": "{focus.outline-color}",
39658
39659
  "$value": "#409eff",
39659
39660
  "$type": "color",
39660
39661
  "$description": "Outline color for focus states on interactive elements",
@@ -39669,7 +39670,7 @@
39669
39670
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39670
39671
  }
39671
39672
  },
39672
- "filePath": "src/tokens/functional/color/focus.json5",
39673
+ "filePath": "src/tokens/component/focus.json5",
39673
39674
  "isSource": true,
39674
39675
  "original": {
39675
39676
  "$value": "{borderColor.accent.emphasis}",
@@ -39686,6 +39687,39 @@
39686
39687
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39687
39688
  }
39688
39689
  },
39690
+ "key": "{focus.outline-color}"
39691
+ },
39692
+ "name": "focus-outline-color",
39693
+ "attributes": {},
39694
+ "path": ["focus", "outline-color"]
39695
+ },
39696
+ "focus-outlineColor": {
39697
+ "key": "{focus.outlineColor}",
39698
+ "$value": "#409eff",
39699
+ "$type": "color",
39700
+ "$deprecated": "#409eff",
39701
+ "$description": "Deprecated. Use focus.outline-color instead.",
39702
+ "$extensions": {
39703
+ "org.primer.figma": {
39704
+ "collection": "mode",
39705
+ "group": "component (internal)",
39706
+ "scopes": ["borderColor", "effectColor"]
39707
+ }
39708
+ },
39709
+ "filePath": "src/tokens/component/focus.json5",
39710
+ "isSource": true,
39711
+ "original": {
39712
+ "$value": "{focus.outline-color}",
39713
+ "$type": "color",
39714
+ "$deprecated": "{focus.outline-color}",
39715
+ "$description": "Deprecated. Use focus.outline-color instead.",
39716
+ "$extensions": {
39717
+ "org.primer.figma": {
39718
+ "collection": "mode",
39719
+ "group": "component (internal)",
39720
+ "scopes": ["borderColor", "effectColor"]
39721
+ }
39722
+ },
39689
39723
  "key": "{focus.outlineColor}"
39690
39724
  },
39691
39725
  "name": "focus-outlineColor",
@@ -39611,7 +39611,11 @@
39611
39611
  },
39612
39612
  "focus-outline": {
39613
39613
  "key": "{focus.outline}",
39614
- "$value": "2px solid #1f6feb",
39614
+ "$value": {
39615
+ "color": "#1f6feb",
39616
+ "style": "solid",
39617
+ "width": ["0.125rem", "2px"]
39618
+ },
39615
39619
  "$type": "border",
39616
39620
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
39617
39621
  "$extensions": {
@@ -39620,16 +39624,13 @@
39620
39624
  "rules": "Always ensure focus states are visible. Do not override with custom focus styles that reduce visibility. Use for interactive elements like buttons, links, and form controls."
39621
39625
  }
39622
39626
  },
39623
- "filePath": "src/tokens/functional/border/border.json5",
39627
+ "filePath": "src/tokens/component/focus.json5",
39624
39628
  "isSource": true,
39625
39629
  "original": {
39626
39630
  "$value": {
39627
- "color": "{focus.outlineColor}",
39631
+ "color": "{focus.outline-color}",
39628
39632
  "style": "solid",
39629
- "width": {
39630
- "value": 2,
39631
- "unit": "px"
39632
- }
39633
+ "width": "{focus.outline-width}"
39633
39634
  },
39634
39635
  "$type": "border",
39635
39636
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
@@ -39645,8 +39646,8 @@
39645
39646
  "attributes": {},
39646
39647
  "path": ["focus", "outline"]
39647
39648
  },
39648
- "focus-outlineColor": {
39649
- "key": "{focus.outlineColor}",
39649
+ "focus-outline-color": {
39650
+ "key": "{focus.outline-color}",
39650
39651
  "$value": "#1f6feb",
39651
39652
  "$type": "color",
39652
39653
  "$description": "Outline color for focus states on interactive elements",
@@ -39661,7 +39662,7 @@
39661
39662
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39662
39663
  }
39663
39664
  },
39664
- "filePath": "src/tokens/functional/color/focus.json5",
39665
+ "filePath": "src/tokens/component/focus.json5",
39665
39666
  "isSource": true,
39666
39667
  "original": {
39667
39668
  "$value": "{borderColor.accent.emphasis}",
@@ -39678,6 +39679,39 @@
39678
39679
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39679
39680
  }
39680
39681
  },
39682
+ "key": "{focus.outline-color}"
39683
+ },
39684
+ "name": "focus-outline-color",
39685
+ "attributes": {},
39686
+ "path": ["focus", "outline-color"]
39687
+ },
39688
+ "focus-outlineColor": {
39689
+ "key": "{focus.outlineColor}",
39690
+ "$value": "#1f6feb",
39691
+ "$type": "color",
39692
+ "$deprecated": "#1f6feb",
39693
+ "$description": "Deprecated. Use focus.outline-color instead.",
39694
+ "$extensions": {
39695
+ "org.primer.figma": {
39696
+ "collection": "mode",
39697
+ "group": "component (internal)",
39698
+ "scopes": ["borderColor", "effectColor"]
39699
+ }
39700
+ },
39701
+ "filePath": "src/tokens/component/focus.json5",
39702
+ "isSource": true,
39703
+ "original": {
39704
+ "$value": "{focus.outline-color}",
39705
+ "$type": "color",
39706
+ "$deprecated": "{focus.outline-color}",
39707
+ "$description": "Deprecated. Use focus.outline-color instead.",
39708
+ "$extensions": {
39709
+ "org.primer.figma": {
39710
+ "collection": "mode",
39711
+ "group": "component (internal)",
39712
+ "scopes": ["borderColor", "effectColor"]
39713
+ }
39714
+ },
39681
39715
  "key": "{focus.outlineColor}"
39682
39716
  },
39683
39717
  "name": "focus-outlineColor",
@@ -39629,7 +39629,11 @@
39629
39629
  },
39630
39630
  "focus-outline": {
39631
39631
  "key": "{focus.outline}",
39632
- "$value": "2px solid #6cb6ff",
39632
+ "$value": {
39633
+ "color": "#6cb6ff",
39634
+ "style": "solid",
39635
+ "width": ["0.125rem", "2px"]
39636
+ },
39633
39637
  "$type": "border",
39634
39638
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
39635
39639
  "$extensions": {
@@ -39638,16 +39642,13 @@
39638
39642
  "rules": "Always ensure focus states are visible. Do not override with custom focus styles that reduce visibility. Use for interactive elements like buttons, links, and form controls."
39639
39643
  }
39640
39644
  },
39641
- "filePath": "src/tokens/functional/border/border.json5",
39645
+ "filePath": "src/tokens/component/focus.json5",
39642
39646
  "isSource": true,
39643
39647
  "original": {
39644
39648
  "$value": {
39645
- "color": "{focus.outlineColor}",
39649
+ "color": "{focus.outline-color}",
39646
39650
  "style": "solid",
39647
- "width": {
39648
- "value": 2,
39649
- "unit": "px"
39650
- }
39651
+ "width": "{focus.outline-width}"
39651
39652
  },
39652
39653
  "$type": "border",
39653
39654
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
@@ -39663,8 +39664,8 @@
39663
39664
  "attributes": {},
39664
39665
  "path": ["focus", "outline"]
39665
39666
  },
39666
- "focus-outlineColor": {
39667
- "key": "{focus.outlineColor}",
39667
+ "focus-outline-color": {
39668
+ "key": "{focus.outline-color}",
39668
39669
  "$value": "#6cb6ff",
39669
39670
  "$type": "color",
39670
39671
  "$description": "Outline color for focus states on interactive elements",
@@ -39679,7 +39680,7 @@
39679
39680
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39680
39681
  }
39681
39682
  },
39682
- "filePath": "src/tokens/functional/color/focus.json5",
39683
+ "filePath": "src/tokens/component/focus.json5",
39683
39684
  "isSource": true,
39684
39685
  "original": {
39685
39686
  "$value": "{borderColor.accent.emphasis}",
@@ -39696,6 +39697,39 @@
39696
39697
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39697
39698
  }
39698
39699
  },
39700
+ "key": "{focus.outline-color}"
39701
+ },
39702
+ "name": "focus-outline-color",
39703
+ "attributes": {},
39704
+ "path": ["focus", "outline-color"]
39705
+ },
39706
+ "focus-outlineColor": {
39707
+ "key": "{focus.outlineColor}",
39708
+ "$value": "#6cb6ff",
39709
+ "$type": "color",
39710
+ "$deprecated": "#6cb6ff",
39711
+ "$description": "Deprecated. Use focus.outline-color instead.",
39712
+ "$extensions": {
39713
+ "org.primer.figma": {
39714
+ "collection": "mode",
39715
+ "group": "component (internal)",
39716
+ "scopes": ["borderColor", "effectColor"]
39717
+ }
39718
+ },
39719
+ "filePath": "src/tokens/component/focus.json5",
39720
+ "isSource": true,
39721
+ "original": {
39722
+ "$value": "{focus.outline-color}",
39723
+ "$type": "color",
39724
+ "$deprecated": "{focus.outline-color}",
39725
+ "$description": "Deprecated. Use focus.outline-color instead.",
39726
+ "$extensions": {
39727
+ "org.primer.figma": {
39728
+ "collection": "mode",
39729
+ "group": "component (internal)",
39730
+ "scopes": ["borderColor", "effectColor"]
39731
+ }
39732
+ },
39699
39733
  "key": "{focus.outlineColor}"
39700
39734
  },
39701
39735
  "name": "focus-outlineColor",
@@ -39649,7 +39649,11 @@
39649
39649
  },
39650
39650
  "focus-outline": {
39651
39651
  "key": "{focus.outline}",
39652
- "$value": "2px solid #316dca",
39652
+ "$value": {
39653
+ "color": "#316dca",
39654
+ "style": "solid",
39655
+ "width": ["0.125rem", "2px"]
39656
+ },
39653
39657
  "$type": "border",
39654
39658
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
39655
39659
  "$extensions": {
@@ -39658,16 +39662,13 @@
39658
39662
  "rules": "Always ensure focus states are visible. Do not override with custom focus styles that reduce visibility. Use for interactive elements like buttons, links, and form controls."
39659
39663
  }
39660
39664
  },
39661
- "filePath": "src/tokens/functional/border/border.json5",
39665
+ "filePath": "src/tokens/component/focus.json5",
39662
39666
  "isSource": true,
39663
39667
  "original": {
39664
39668
  "$value": {
39665
- "color": "{focus.outlineColor}",
39669
+ "color": "{focus.outline-color}",
39666
39670
  "style": "solid",
39667
- "width": {
39668
- "value": 2,
39669
- "unit": "px"
39670
- }
39671
+ "width": "{focus.outline-width}"
39671
39672
  },
39672
39673
  "$type": "border",
39673
39674
  "$description": "Focus ring outline for keyboard navigation and accessibility.",
@@ -39683,8 +39684,8 @@
39683
39684
  "attributes": {},
39684
39685
  "path": ["focus", "outline"]
39685
39686
  },
39686
- "focus-outlineColor": {
39687
- "key": "{focus.outlineColor}",
39687
+ "focus-outline-color": {
39688
+ "key": "{focus.outline-color}",
39688
39689
  "$value": "#316dca",
39689
39690
  "$type": "color",
39690
39691
  "$description": "Outline color for focus states on interactive elements",
@@ -39699,7 +39700,7 @@
39699
39700
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39700
39701
  }
39701
39702
  },
39702
- "filePath": "src/tokens/functional/color/focus.json5",
39703
+ "filePath": "src/tokens/component/focus.json5",
39703
39704
  "isSource": true,
39704
39705
  "original": {
39705
39706
  "$value": "{borderColor.accent.emphasis}",
@@ -39716,6 +39717,39 @@
39716
39717
  "rules": "Use for focus outlines on interactive elements like buttons, links, and form controls. MUST be visible for keyboard navigation accessibility. Do NOT use for decorative borders or non-interactive elements."
39717
39718
  }
39718
39719
  },
39720
+ "key": "{focus.outline-color}"
39721
+ },
39722
+ "name": "focus-outline-color",
39723
+ "attributes": {},
39724
+ "path": ["focus", "outline-color"]
39725
+ },
39726
+ "focus-outlineColor": {
39727
+ "key": "{focus.outlineColor}",
39728
+ "$value": "#316dca",
39729
+ "$type": "color",
39730
+ "$deprecated": "#316dca",
39731
+ "$description": "Deprecated. Use focus.outline-color instead.",
39732
+ "$extensions": {
39733
+ "org.primer.figma": {
39734
+ "collection": "mode",
39735
+ "group": "component (internal)",
39736
+ "scopes": ["borderColor", "effectColor"]
39737
+ }
39738
+ },
39739
+ "filePath": "src/tokens/component/focus.json5",
39740
+ "isSource": true,
39741
+ "original": {
39742
+ "$value": "{focus.outline-color}",
39743
+ "$type": "color",
39744
+ "$deprecated": "{focus.outline-color}",
39745
+ "$description": "Deprecated. Use focus.outline-color instead.",
39746
+ "$extensions": {
39747
+ "org.primer.figma": {
39748
+ "collection": "mode",
39749
+ "group": "component (internal)",
39750
+ "scopes": ["borderColor", "effectColor"]
39751
+ }
39752
+ },
39719
39753
  "key": "{focus.outlineColor}"
39720
39754
  },
39721
39755
  "name": "focus-outlineColor",