@primer/primitives 11.4.0-rc.f798df25 → 11.4.1-rc.4e2d1de5

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 (198) hide show
  1. package/DESIGN_TOKENS_GUIDE.md +185 -0
  2. package/DESIGN_TOKENS_SPEC.md +565 -0
  3. package/dist/build/filters/hasLlmExtensions.d.ts +7 -0
  4. package/dist/build/filters/hasLlmExtensions.js +11 -0
  5. package/dist/build/filters/index.d.ts +1 -0
  6. package/dist/build/filters/index.js +1 -0
  7. package/dist/build/formats/index.d.ts +1 -0
  8. package/dist/build/formats/index.js +1 -0
  9. package/dist/build/formats/markdownLlmGuidelines.d.ts +11 -0
  10. package/dist/build/formats/markdownLlmGuidelines.js +1168 -0
  11. package/dist/build/platforms/index.d.ts +1 -0
  12. package/dist/build/platforms/index.js +1 -0
  13. package/dist/build/platforms/llmGuidelines.d.ts +2 -0
  14. package/dist/build/platforms/llmGuidelines.js +17 -0
  15. package/dist/build/preprocessors/inheritGroupProperties.d.ts +7 -0
  16. package/dist/build/preprocessors/inheritGroupProperties.js +70 -0
  17. package/dist/build/primerStyleDictionary.js +7 -1
  18. package/dist/build/schemas/borderToken.d.ts +22 -2
  19. package/dist/build/schemas/borderToken.js +6 -0
  20. package/dist/build/schemas/colorToken.d.ts +4 -0
  21. package/dist/build/schemas/colorToken.js +2 -0
  22. package/dist/build/schemas/cubicBezierToken.d.ts +6 -0
  23. package/dist/build/schemas/cubicBezierToken.js +10 -2
  24. package/dist/build/schemas/designToken.d.ts +1 -1
  25. package/dist/build/schemas/designToken.js +113 -21
  26. package/dist/build/schemas/dimensionToken.d.ts +14 -3
  27. package/dist/build/schemas/dimensionToken.js +6 -2
  28. package/dist/build/schemas/dimensionValue.d.ts +24 -1
  29. package/dist/build/schemas/dimensionValue.js +20 -1
  30. package/dist/build/schemas/durationToken.d.ts +13 -1
  31. package/dist/build/schemas/durationToken.js +6 -0
  32. package/dist/build/schemas/durationValue.d.ts +11 -1
  33. package/dist/build/schemas/durationValue.js +13 -3
  34. package/dist/build/schemas/fontFamilyToken.d.ts +4 -0
  35. package/dist/build/schemas/fontFamilyToken.js +2 -0
  36. package/dist/build/schemas/fontWeightToken.d.ts +4 -0
  37. package/dist/build/schemas/fontWeightToken.js +2 -0
  38. package/dist/build/schemas/gradientToken.d.ts +4 -0
  39. package/dist/build/schemas/gradientToken.js +2 -0
  40. package/dist/build/schemas/llmExtension.d.ts +9 -0
  41. package/dist/build/schemas/llmExtension.js +11 -0
  42. package/dist/build/schemas/numberToken.d.ts +4 -0
  43. package/dist/build/schemas/numberToken.js +2 -0
  44. package/dist/build/schemas/shadowToken.d.ts +676 -84
  45. package/dist/build/schemas/shadowToken.js +2 -0
  46. package/dist/build/schemas/stringToken.d.ts +6 -0
  47. package/dist/build/schemas/stringToken.js +6 -0
  48. package/dist/build/schemas/transitionToken.d.ts +20 -2
  49. package/dist/build/schemas/transitionToken.js +6 -0
  50. package/dist/build/schemas/typographyToken.d.ts +38 -4
  51. package/dist/build/schemas/typographyToken.js +6 -0
  52. package/dist/build/schemas/validTokenType.d.ts +5 -1
  53. package/dist/build/schemas/validTokenType.js +71 -17
  54. package/dist/build/schemas/viewportRangeToken.d.ts +6 -0
  55. package/dist/build/schemas/viewportRangeToken.js +6 -0
  56. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  57. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  58. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  59. package/dist/build/transformers/dimensionToRem.js +21 -22
  60. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  61. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  62. package/dist/build/transformers/durationToCss.d.ts +2 -1
  63. package/dist/build/transformers/durationToCss.js +18 -11
  64. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  65. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  66. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  67. package/dist/css/base/motion/motion.css +5 -4
  68. package/dist/css/functional/size/border.css +9 -14
  69. package/dist/css/functional/size/radius.css +7 -0
  70. package/dist/css/functional/size/size-coarse.css +3 -3
  71. package/dist/css/functional/size/size-fine.css +3 -3
  72. package/dist/css/functional/size/viewport.css +1 -1
  73. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +194 -190
  74. package/dist/css/functional/themes/dark-colorblind.css +194 -190
  75. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +194 -190
  76. package/dist/css/functional/themes/dark-dimmed.css +194 -190
  77. package/dist/css/functional/themes/dark-high-contrast.css +194 -190
  78. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +194 -190
  79. package/dist/css/functional/themes/dark-tritanopia.css +194 -190
  80. package/dist/css/functional/themes/dark.css +194 -190
  81. package/dist/css/functional/themes/light-colorblind-high-contrast.css +194 -190
  82. package/dist/css/functional/themes/light-colorblind.css +194 -190
  83. package/dist/css/functional/themes/light-high-contrast.css +194 -190
  84. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +194 -190
  85. package/dist/css/functional/themes/light-tritanopia.css +194 -190
  86. package/dist/css/functional/themes/light.css +194 -190
  87. package/dist/css/functional/typography/typography.css +4 -4
  88. package/dist/css/primitives.css +5 -0
  89. package/dist/docs/base/motion/motion.json +181 -32
  90. package/dist/docs/base/size/size.json +76 -19
  91. package/dist/docs/base/typography/typography.json +24 -6
  92. package/dist/docs/functional/size/border.json +62 -182
  93. package/dist/docs/functional/size/breakpoints.json +24 -6
  94. package/dist/docs/functional/size/radius.json +221 -0
  95. package/dist/docs/functional/size/size-coarse.json +45 -3
  96. package/dist/docs/functional/size/size-fine.json +45 -3
  97. package/dist/docs/functional/size/size.json +60 -15
  98. package/dist/docs/functional/size/viewport.json +2 -2
  99. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +1043 -97
  100. package/dist/docs/functional/themes/dark-colorblind.json +1043 -97
  101. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +1043 -97
  102. package/dist/docs/functional/themes/dark-dimmed.json +1081 -135
  103. package/dist/docs/functional/themes/dark-high-contrast.json +1043 -97
  104. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +1043 -97
  105. package/dist/docs/functional/themes/dark-tritanopia.json +1043 -97
  106. package/dist/docs/functional/themes/dark.json +1043 -97
  107. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +1049 -103
  108. package/dist/docs/functional/themes/light-colorblind.json +1049 -103
  109. package/dist/docs/functional/themes/light-high-contrast.json +1049 -103
  110. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +1049 -103
  111. package/dist/docs/functional/themes/light-tritanopia.json +1049 -103
  112. package/dist/docs/functional/themes/light.json +1049 -103
  113. package/dist/docs/functional/typography/typography.json +180 -10
  114. package/dist/fallbacks/base/motion/motion.json +49 -12
  115. package/dist/fallbacks/functional/size/border.json +0 -5
  116. package/dist/fallbacks/functional/size/radius.json +7 -0
  117. package/dist/fallbacks/functional/size/viewport.json +1 -1
  118. package/dist/figma/dimension/dimension.json +30 -20
  119. package/dist/figma/themes/dark-colorblind.json +85 -0
  120. package/dist/figma/themes/dark-dimmed.json +134 -49
  121. package/dist/figma/themes/dark-high-contrast.json +85 -0
  122. package/dist/figma/themes/dark-tritanopia.json +85 -0
  123. package/dist/figma/themes/dark.json +85 -0
  124. package/dist/figma/themes/light-colorblind.json +89 -4
  125. package/dist/figma/themes/light-high-contrast.json +89 -4
  126. package/dist/figma/themes/light-tritanopia.json +89 -4
  127. package/dist/figma/themes/light.json +89 -4
  128. package/dist/figma/typography/typography.json +44 -40
  129. package/dist/internalCss/dark-colorblind-high-contrast.css +208 -218
  130. package/dist/internalCss/dark-colorblind.css +208 -218
  131. package/dist/internalCss/dark-dimmed-high-contrast.css +208 -218
  132. package/dist/internalCss/dark-dimmed.css +208 -218
  133. package/dist/internalCss/dark-high-contrast.css +208 -218
  134. package/dist/internalCss/dark-tritanopia-high-contrast.css +208 -218
  135. package/dist/internalCss/dark-tritanopia.css +208 -218
  136. package/dist/internalCss/dark.css +208 -218
  137. package/dist/internalCss/light-colorblind-high-contrast.css +208 -218
  138. package/dist/internalCss/light-colorblind.css +208 -218
  139. package/dist/internalCss/light-high-contrast.css +208 -218
  140. package/dist/internalCss/light-tritanopia-high-contrast.css +208 -218
  141. package/dist/internalCss/light-tritanopia.css +208 -218
  142. package/dist/internalCss/light.css +208 -218
  143. package/dist/styleLint/base/motion/motion.json +181 -32
  144. package/dist/styleLint/base/size/size.json +76 -19
  145. package/dist/styleLint/base/typography/typography.json +30 -12
  146. package/dist/styleLint/functional/size/border.json +55 -175
  147. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  148. package/dist/styleLint/functional/size/radius.json +221 -0
  149. package/dist/styleLint/functional/size/size-coarse.json +45 -3
  150. package/dist/styleLint/functional/size/size-fine.json +45 -3
  151. package/dist/styleLint/functional/size/size.json +111 -66
  152. package/dist/styleLint/functional/size/viewport.json +2 -2
  153. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +975 -29
  154. package/dist/styleLint/functional/themes/dark-colorblind.json +975 -29
  155. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +975 -29
  156. package/dist/styleLint/functional/themes/dark-dimmed.json +1013 -67
  157. package/dist/styleLint/functional/themes/dark-high-contrast.json +975 -29
  158. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +975 -29
  159. package/dist/styleLint/functional/themes/dark-tritanopia.json +975 -29
  160. package/dist/styleLint/functional/themes/dark.json +975 -29
  161. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +981 -35
  162. package/dist/styleLint/functional/themes/light-colorblind.json +981 -35
  163. package/dist/styleLint/functional/themes/light-high-contrast.json +981 -35
  164. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +981 -35
  165. package/dist/styleLint/functional/themes/light-tritanopia.json +981 -35
  166. package/dist/styleLint/functional/themes/light.json +981 -35
  167. package/dist/styleLint/functional/typography/typography.json +196 -26
  168. package/package.json +6 -3
  169. package/src/tokens/base/motion/easing.json5 +39 -4
  170. package/src/tokens/base/motion/timing.json5 +12 -12
  171. package/src/tokens/base/size/size.json5 +19 -19
  172. package/src/tokens/base/typography/typography.json5 +6 -6
  173. package/src/tokens/functional/border/border.json5 +25 -0
  174. package/src/tokens/functional/color/bgColor.json5 +165 -0
  175. package/src/tokens/functional/color/borderColor.json5 +146 -0
  176. package/src/tokens/functional/color/control.json5 +24 -0
  177. package/src/tokens/functional/color/data-vis.json5 +7 -0
  178. package/src/tokens/functional/color/display.json5 +7 -0
  179. package/src/tokens/functional/color/fgColor.json5 +101 -1
  180. package/src/tokens/functional/color/focus.json5 +5 -0
  181. package/src/tokens/functional/color/selection.json5 +5 -0
  182. package/src/tokens/functional/color/syntax.json5 +14 -0
  183. package/src/tokens/functional/shadow/shadow.json5 +49 -4
  184. package/src/tokens/functional/size/border.json5 +22 -74
  185. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  186. package/src/tokens/functional/size/radius.json5 +90 -0
  187. package/src/tokens/functional/size/size-coarse.json5 +24 -3
  188. package/src/tokens/functional/size/size-fine.json5 +45 -24
  189. package/src/tokens/functional/size/size.json5 +50 -15
  190. package/src/tokens/functional/size/viewport.json5 +1 -1
  191. package/src/tokens/functional/typography/font-stack.json5 +60 -0
  192. package/src/tokens/functional/typography/typography.json5 +71 -44
  193. package/dist/build/parsers/index.d.ts +0 -1
  194. package/dist/build/parsers/index.js +0 -1
  195. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  196. package/dist/build/parsers/w3cJsonParser.js +0 -25
  197. package/dist/removed/testing.json5 +0 -4
  198. package/src/tokens/removed/testing.json5 +0 -4
@@ -146,7 +146,7 @@
146
146
  },
147
147
  "base-text-size-2xl": {
148
148
  "key": "{base.text.size.2xl}",
149
- "$value": [null, "40px"],
149
+ "$value": ["2.5rem", "40px"],
150
150
  "$type": "dimension",
151
151
  "$description": "40px - Display text for hero sections.",
152
152
  "$extensions": {
@@ -158,7 +158,10 @@
158
158
  "filePath": "src/tokens/base/typography/typography.json5",
159
159
  "isSource": true,
160
160
  "original": {
161
- "$value": "2.5rem",
161
+ "$value": {
162
+ "value": 2.5,
163
+ "unit": "rem"
164
+ },
162
165
  "$type": "dimension",
163
166
  "$description": "40px - Display text for hero sections.",
164
167
  "$extensions": {
@@ -175,7 +178,7 @@
175
178
  },
176
179
  "base-text-size-lg": {
177
180
  "key": "{base.text.size.lg}",
178
- "$value": [null, "20px"],
181
+ "$value": ["1.25rem", "20px"],
179
182
  "$type": "dimension",
180
183
  "$description": "20px - Medium titles and subtitles.",
181
184
  "$extensions": {
@@ -187,7 +190,10 @@
187
190
  "filePath": "src/tokens/base/typography/typography.json5",
188
191
  "isSource": true,
189
192
  "original": {
190
- "$value": "1.25rem",
193
+ "$value": {
194
+ "value": 1.25,
195
+ "unit": "rem"
196
+ },
191
197
  "$type": "dimension",
192
198
  "$description": "20px - Medium titles and subtitles.",
193
199
  "$extensions": {
@@ -204,7 +210,7 @@
204
210
  },
205
211
  "base-text-size-md": {
206
212
  "key": "{base.text.size.md}",
207
- "$value": [null, "16px"],
213
+ "$value": ["1rem", "16px"],
208
214
  "$type": "dimension",
209
215
  "$description": "16px - Large body text and small titles.",
210
216
  "$extensions": {
@@ -216,7 +222,10 @@
216
222
  "filePath": "src/tokens/base/typography/typography.json5",
217
223
  "isSource": true,
218
224
  "original": {
219
- "$value": "1rem",
225
+ "$value": {
226
+ "value": 1,
227
+ "unit": "rem"
228
+ },
220
229
  "$type": "dimension",
221
230
  "$description": "16px - Large body text and small titles.",
222
231
  "$extensions": {
@@ -233,7 +242,7 @@
233
242
  },
234
243
  "base-text-size-sm": {
235
244
  "key": "{base.text.size.sm}",
236
- "$value": [null, "14px"],
245
+ "$value": ["0.875rem", "14px"],
237
246
  "$type": "dimension",
238
247
  "$description": "14px - Default body text size for UI.",
239
248
  "$extensions": {
@@ -245,7 +254,10 @@
245
254
  "filePath": "src/tokens/base/typography/typography.json5",
246
255
  "isSource": true,
247
256
  "original": {
248
- "$value": "0.875rem",
257
+ "$value": {
258
+ "value": 0.875,
259
+ "unit": "rem"
260
+ },
249
261
  "$type": "dimension",
250
262
  "$description": "14px - Default body text size for UI.",
251
263
  "$extensions": {
@@ -262,7 +274,7 @@
262
274
  },
263
275
  "base-text-size-xl": {
264
276
  "key": "{base.text.size.xl}",
265
- "$value": [null, "32px"],
277
+ "$value": ["2rem", "32px"],
266
278
  "$type": "dimension",
267
279
  "$description": "32px - Large titles and page headings.",
268
280
  "$extensions": {
@@ -274,7 +286,10 @@
274
286
  "filePath": "src/tokens/base/typography/typography.json5",
275
287
  "isSource": true,
276
288
  "original": {
277
- "$value": "2rem",
289
+ "$value": {
290
+ "value": 2,
291
+ "unit": "rem"
292
+ },
278
293
  "$type": "dimension",
279
294
  "$description": "32px - Large titles and page headings.",
280
295
  "$extensions": {
@@ -291,7 +306,7 @@
291
306
  },
292
307
  "base-text-size-xs": {
293
308
  "key": "{base.text.size.xs}",
294
- "$value": [null, "12px"],
309
+ "$value": ["0.75rem", "12px"],
295
310
  "$type": "dimension",
296
311
  "$description": "12px - Smallest text size for captions and compact UI elements.",
297
312
  "$extensions": {
@@ -303,7 +318,10 @@
303
318
  "filePath": "src/tokens/base/typography/typography.json5",
304
319
  "isSource": true,
305
320
  "original": {
306
- "$value": "0.75rem",
321
+ "$value": {
322
+ "value": 0.75,
323
+ "unit": "rem"
324
+ },
307
325
  "$type": "dimension",
308
326
  "$description": "12px - Smallest text size for captions and compact UI elements.",
309
327
  "$extensions": {
@@ -1,174 +1,8 @@
1
1
  {
2
- "borderRadius-default": {
3
- "key": "{borderRadius.default}",
4
- "$value": ["0.0234375rem", "0.375px"],
5
- "$type": "dimension",
6
- "$extensions": {
7
- "org.primer.figma": {
8
- "collection": "functional/size",
9
- "scopes": ["radius"],
10
- "codeSyntax": {
11
- "web": "var(--borderRadius-default) /* utility class: .rounded-2 */"
12
- }
13
- }
14
- },
15
- "filePath": "src/tokens/functional/size/border.json5",
16
- "isSource": true,
17
- "original": {
18
- "$value": "{borderRadius.medium}",
19
- "$type": "dimension",
20
- "$extensions": {
21
- "org.primer.figma": {
22
- "collection": "functional/size",
23
- "scopes": ["radius"],
24
- "codeSyntax": {
25
- "web": "var(--borderRadius-default) /* utility class: .rounded-2 */"
26
- }
27
- }
28
- },
29
- "key": "{borderRadius.default}"
30
- },
31
- "name": "borderRadius-default",
32
- "attributes": {},
33
- "path": ["borderRadius", "default"]
34
- },
35
- "borderRadius-full": {
36
- "key": "{borderRadius.full}",
37
- "$value": ["624.9375rem", "9999px"],
38
- "$type": "dimension",
39
- "$description": "Use this border radius for pill shaped elements",
40
- "$extensions": {
41
- "org.primer.figma": {
42
- "collection": "functional/size",
43
- "scopes": ["radius"],
44
- "codeSyntax": {
45
- "web": "var(--borderRadius-full) /* utility class: .circle */"
46
- }
47
- }
48
- },
49
- "filePath": "src/tokens/functional/size/border.json5",
50
- "isSource": true,
51
- "original": {
52
- "$value": "9999px",
53
- "$type": "dimension",
54
- "$description": "Use this border radius for pill shaped elements",
55
- "$extensions": {
56
- "org.primer.figma": {
57
- "collection": "functional/size",
58
- "scopes": ["radius"],
59
- "codeSyntax": {
60
- "web": "var(--borderRadius-full) /* utility class: .circle */"
61
- }
62
- }
63
- },
64
- "key": "{borderRadius.full}"
65
- },
66
- "name": "borderRadius-full",
67
- "attributes": {},
68
- "path": ["borderRadius", "full"]
69
- },
70
- "borderRadius-large": {
71
- "key": "{borderRadius.large}",
72
- "$value": ["0.75rem", "12px"],
73
- "$type": "dimension",
74
- "$extensions": {
75
- "org.primer.figma": {
76
- "collection": "functional/size",
77
- "scopes": ["radius"],
78
- "codeSyntax": {
79
- "web": "var(--borderRadius-large) /* utility class: .rounded-3 */"
80
- }
81
- }
82
- },
83
- "filePath": "src/tokens/functional/size/border.json5",
84
- "isSource": true,
85
- "original": {
86
- "$value": "12px",
87
- "$type": "dimension",
88
- "$extensions": {
89
- "org.primer.figma": {
90
- "collection": "functional/size",
91
- "scopes": ["radius"],
92
- "codeSyntax": {
93
- "web": "var(--borderRadius-large) /* utility class: .rounded-3 */"
94
- }
95
- }
96
- },
97
- "key": "{borderRadius.large}"
98
- },
99
- "name": "borderRadius-large",
100
- "attributes": {},
101
- "path": ["borderRadius", "large"]
102
- },
103
- "borderRadius-medium": {
104
- "key": "{borderRadius.medium}",
105
- "$value": ["0.375rem", "6px"],
106
- "$type": "dimension",
107
- "$extensions": {
108
- "org.primer.figma": {
109
- "collection": "functional/size",
110
- "scopes": ["radius"],
111
- "codeSyntax": {
112
- "web": "var(--borderRadius-medium) /* utility class: .rounded-2 */"
113
- }
114
- }
115
- },
116
- "filePath": "src/tokens/functional/size/border.json5",
117
- "isSource": true,
118
- "original": {
119
- "$value": "6px",
120
- "$type": "dimension",
121
- "$extensions": {
122
- "org.primer.figma": {
123
- "collection": "functional/size",
124
- "scopes": ["radius"],
125
- "codeSyntax": {
126
- "web": "var(--borderRadius-medium) /* utility class: .rounded-2 */"
127
- }
128
- }
129
- },
130
- "key": "{borderRadius.medium}"
131
- },
132
- "name": "borderRadius-medium",
133
- "attributes": {},
134
- "path": ["borderRadius", "medium"]
135
- },
136
- "borderRadius-small": {
137
- "key": "{borderRadius.small}",
138
- "$value": ["0.1875rem", "3px"],
139
- "$type": "dimension",
140
- "$extensions": {
141
- "org.primer.figma": {
142
- "collection": "functional/size",
143
- "scopes": ["radius"],
144
- "codeSyntax": {
145
- "web": "var(--borderRadius-small) /* utility class: .rounded-1 */"
146
- }
147
- }
148
- },
149
- "filePath": "src/tokens/functional/size/border.json5",
150
- "isSource": true,
151
- "original": {
152
- "$value": "3px",
153
- "$type": "dimension",
154
- "$extensions": {
155
- "org.primer.figma": {
156
- "collection": "functional/size",
157
- "scopes": ["radius"],
158
- "codeSyntax": {
159
- "web": "var(--borderRadius-small) /* utility class: .rounded-1 */"
160
- }
161
- }
162
- },
163
- "key": "{borderRadius.small}"
164
- },
165
- "name": "borderRadius-small",
166
- "attributes": {},
167
- "path": ["borderRadius", "small"]
168
- },
169
2
  "borderWidth-default": {
170
3
  "key": "{borderWidth.default}",
171
- "$value": ["0.00390625rem", "0.0625px"],
4
+ "$value": ["0.0625rem", "1px"],
5
+ "$description": "Default border width for most UI elements. Alias of borderWidth.thin (1px)",
172
6
  "$type": "dimension",
173
7
  "$extensions": {
174
8
  "org.primer.figma": {
@@ -180,6 +14,7 @@
180
14
  "isSource": true,
181
15
  "original": {
182
16
  "$value": "{borderWidth.thin}",
17
+ "$description": "Default border width for most UI elements. Alias of borderWidth.thin (1px)",
183
18
  "$type": "dimension",
184
19
  "$extensions": {
185
20
  "org.primer.figma": {
@@ -196,22 +31,35 @@
196
31
  "borderWidth-thick": {
197
32
  "key": "{borderWidth.thick}",
198
33
  "$value": ["0.125rem", "2px"],
34
+ "$description": "Thick 2px border for emphasis. Use for focus indicators, selected states, or to emphasize important boundaries",
199
35
  "$type": "dimension",
200
36
  "$extensions": {
201
37
  "org.primer.figma": {
202
38
  "collection": "functional/size",
203
39
  "scopes": ["borderWidth", "effectFloat"]
40
+ },
41
+ "org.primer.llm": {
42
+ "usage": ["focus-indicator", "selected-state", "emphasis-border"],
43
+ "rules": "MUST use for focus rings on interactive elements. Do NOT use for subtle dividers."
204
44
  }
205
45
  },
206
46
  "filePath": "src/tokens/functional/size/border.json5",
207
47
  "isSource": true,
208
48
  "original": {
209
- "$value": "2px",
49
+ "$value": {
50
+ "value": 2,
51
+ "unit": "px"
52
+ },
53
+ "$description": "Thick 2px border for emphasis. Use for focus indicators, selected states, or to emphasize important boundaries",
210
54
  "$type": "dimension",
211
55
  "$extensions": {
212
56
  "org.primer.figma": {
213
57
  "collection": "functional/size",
214
58
  "scopes": ["borderWidth", "effectFloat"]
59
+ },
60
+ "org.primer.llm": {
61
+ "usage": ["focus-indicator", "selected-state", "emphasis-border"],
62
+ "rules": "MUST use for focus rings on interactive elements. Do NOT use for subtle dividers."
215
63
  }
216
64
  },
217
65
  "key": "{borderWidth.thick}"
@@ -223,6 +71,7 @@
223
71
  "borderWidth-thicker": {
224
72
  "key": "{borderWidth.thicker}",
225
73
  "$value": ["0.25rem", "4px"],
74
+ "$description": "Extra thick 4px border for maximum emphasis. Use sparingly for high-contrast focus indicators or critical visual separators",
226
75
  "$type": "dimension",
227
76
  "$extensions": {
228
77
  "org.primer.figma": {
@@ -233,7 +82,11 @@
233
82
  "filePath": "src/tokens/functional/size/border.json5",
234
83
  "isSource": true,
235
84
  "original": {
236
- "$value": "4px",
85
+ "$value": {
86
+ "value": 4,
87
+ "unit": "px"
88
+ },
89
+ "$description": "Extra thick 4px border for maximum emphasis. Use sparingly for high-contrast focus indicators or critical visual separators",
237
90
  "$type": "dimension",
238
91
  "$extensions": {
239
92
  "org.primer.figma": {
@@ -250,6 +103,7 @@
250
103
  "borderWidth-thin": {
251
104
  "key": "{borderWidth.thin}",
252
105
  "$value": ["0.0625rem", "1px"],
106
+ "$description": "Standard 1px border width. Use for most borders, dividers, and outlines throughout the interface",
253
107
  "$type": "dimension",
254
108
  "$extensions": {
255
109
  "org.primer.figma": {
@@ -260,7 +114,11 @@
260
114
  "filePath": "src/tokens/functional/size/border.json5",
261
115
  "isSource": true,
262
116
  "original": {
263
- "$value": "1px",
117
+ "$value": {
118
+ "value": 1,
119
+ "unit": "px"
120
+ },
121
+ "$description": "Standard 1px border width. Use for most borders, dividers, and outlines throughout the interface",
264
122
  "$type": "dimension",
265
123
  "$extensions": {
266
124
  "org.primer.figma": {
@@ -277,11 +135,13 @@
277
135
  "boxShadow-thick": {
278
136
  "key": "{boxShadow.thick}",
279
137
  "$value": "inset 0 0 0 0.125rem,2px",
138
+ "$description": "Thick shadow (2px) used instead of a border for emphasis without layout shift",
280
139
  "$type": "string",
281
140
  "filePath": "src/tokens/functional/size/border.json5",
282
141
  "isSource": true,
283
142
  "original": {
284
143
  "$value": "inset 0 0 0 {borderWidth.thick}",
144
+ "$description": "Thick shadow (2px) used instead of a border for emphasis without layout shift",
285
145
  "$type": "string",
286
146
  "key": "{boxShadow.thick}"
287
147
  },
@@ -292,11 +152,13 @@
292
152
  "boxShadow-thicker": {
293
153
  "key": "{boxShadow.thicker}",
294
154
  "$value": "inset 0 0 0 0.25rem,4px",
155
+ "$description": "Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact",
295
156
  "$type": "string",
296
157
  "filePath": "src/tokens/functional/size/border.json5",
297
158
  "isSource": true,
298
159
  "original": {
299
160
  "$value": "inset 0 0 0 {borderWidth.thicker}",
161
+ "$description": "Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact",
300
162
  "$type": "string",
301
163
  "key": "{boxShadow.thicker}"
302
164
  },
@@ -307,13 +169,13 @@
307
169
  "boxShadow-thin": {
308
170
  "key": "{boxShadow.thin}",
309
171
  "$value": "inset 0 0 0 0.0625rem,1px",
310
- "$description": "Thin shadow for borders",
172
+ "$description": "Thin shadow used instead of a border to prevent layout shift",
311
173
  "$type": "string",
312
174
  "filePath": "src/tokens/functional/size/border.json5",
313
175
  "isSource": true,
314
176
  "original": {
315
177
  "$value": "inset 0 0 0 {borderWidth.thin}",
316
- "$description": "Thin shadow for borders",
178
+ "$description": "Thin shadow used instead of a border to prevent layout shift",
317
179
  "$type": "string",
318
180
  "key": "{boxShadow.thin}"
319
181
  },
@@ -324,6 +186,7 @@
324
186
  "outline-focus-offset": {
325
187
  "key": "{outline.focus.offset}",
326
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",
327
190
  "$type": "dimension",
328
191
  "$extensions": {
329
192
  "org.primer.figma": {
@@ -334,7 +197,11 @@
334
197
  "filePath": "src/tokens/functional/size/border.json5",
335
198
  "isSource": true,
336
199
  "original": {
337
- "$value": "-2px",
200
+ "$value": {
201
+ "value": -2,
202
+ "unit": "px"
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",
338
205
  "$type": "dimension",
339
206
  "$extensions": {
340
207
  "org.primer.figma": {
@@ -351,22 +218,35 @@
351
218
  "outline-focus-width": {
352
219
  "key": "{outline.focus.width}",
353
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",
354
222
  "$type": "dimension",
355
223
  "$extensions": {
356
224
  "org.primer.figma": {
357
225
  "collection": "functional/size",
358
226
  "scopes": ["borderWidth", "effectFloat"]
227
+ },
228
+ "org.primer.llm": {
229
+ "usage": ["focus-ring", "keyboard-focus", "accessibility"],
230
+ "rules": "MUST use for all keyboard focus indicators. Required for WCAG 2.4.7 compliance."
359
231
  }
360
232
  },
361
233
  "filePath": "src/tokens/functional/size/border.json5",
362
234
  "isSource": true,
363
235
  "original": {
364
- "$value": "2px",
236
+ "$value": {
237
+ "value": 2,
238
+ "unit": "px"
239
+ },
240
+ "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
365
241
  "$type": "dimension",
366
242
  "$extensions": {
367
243
  "org.primer.figma": {
368
244
  "collection": "functional/size",
369
245
  "scopes": ["borderWidth", "effectFloat"]
246
+ },
247
+ "org.primer.llm": {
248
+ "usage": ["focus-ring", "keyboard-focus", "accessibility"],
249
+ "rules": "MUST use for all keyboard focus indicators. Required for WCAG 2.4.7 compliance."
370
250
  }
371
251
  },
372
252
  "key": "{outline.focus.width}"
@@ -12,7 +12,10 @@
12
12
  "filePath": "src/tokens/functional/size/breakpoints.json5",
13
13
  "isSource": true,
14
14
  "original": {
15
- "$value": "1012px",
15
+ "$value": {
16
+ "value": 1012,
17
+ "unit": "px"
18
+ },
16
19
  "$type": "dimension",
17
20
  "$extensions": {
18
21
  "org.primer.figma": {
@@ -39,7 +42,10 @@
39
42
  "filePath": "src/tokens/functional/size/breakpoints.json5",
40
43
  "isSource": true,
41
44
  "original": {
42
- "$value": "768px",
45
+ "$value": {
46
+ "value": 768,
47
+ "unit": "px"
48
+ },
43
49
  "$type": "dimension",
44
50
  "$extensions": {
45
51
  "org.primer.figma": {
@@ -66,7 +72,10 @@
66
72
  "filePath": "src/tokens/functional/size/breakpoints.json5",
67
73
  "isSource": true,
68
74
  "original": {
69
- "$value": "544px",
75
+ "$value": {
76
+ "value": 544,
77
+ "unit": "px"
78
+ },
70
79
  "$type": "dimension",
71
80
  "$extensions": {
72
81
  "org.primer.figma": {
@@ -93,7 +102,10 @@
93
102
  "filePath": "src/tokens/functional/size/breakpoints.json5",
94
103
  "isSource": true,
95
104
  "original": {
96
- "$value": "1280px",
105
+ "$value": {
106
+ "value": 1280,
107
+ "unit": "px"
108
+ },
97
109
  "$type": "dimension",
98
110
  "$extensions": {
99
111
  "org.primer.figma": {
@@ -120,7 +132,10 @@
120
132
  "filePath": "src/tokens/functional/size/breakpoints.json5",
121
133
  "isSource": true,
122
134
  "original": {
123
- "$value": "320px",
135
+ "$value": {
136
+ "value": 320,
137
+ "unit": "px"
138
+ },
124
139
  "$type": "dimension",
125
140
  "$extensions": {
126
141
  "org.primer.figma": {
@@ -147,7 +162,10 @@
147
162
  "filePath": "src/tokens/functional/size/breakpoints.json5",
148
163
  "isSource": true,
149
164
  "original": {
150
- "$value": "1400px",
165
+ "$value": {
166
+ "value": 1400,
167
+ "unit": "px"
168
+ },
151
169
  "$type": "dimension",
152
170
  "$extensions": {
153
171
  "org.primer.figma": {