@primer/primitives 11.4.0 → 11.4.1-rc.24c79953

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 (152) hide show
  1. package/DESIGN_TOKENS_GUIDE.md +185 -0
  2. package/DESIGN_TOKENS_SPEC.md +565 -0
  3. package/dist/build/formats/jsonFigma.js +8 -1
  4. package/dist/build/formats/markdownLlmGuidelines.d.ts +7 -6
  5. package/dist/build/formats/markdownLlmGuidelines.js +1034 -60
  6. package/dist/build/schemas/borderToken.d.ts +17 -3
  7. package/dist/build/schemas/colorToken.d.ts +1 -1
  8. package/dist/build/schemas/cubicBezierToken.d.ts +1 -1
  9. package/dist/build/schemas/dimensionToken.d.ts +9 -2
  10. package/dist/build/schemas/dimensionValue.d.ts +12 -1
  11. package/dist/build/schemas/dimensionValue.js +10 -13
  12. package/dist/build/schemas/durationToken.d.ts +8 -2
  13. package/dist/build/schemas/durationValue.d.ts +11 -1
  14. package/dist/build/schemas/durationValue.js +13 -3
  15. package/dist/build/schemas/fontFamilyToken.d.ts +1 -1
  16. package/dist/build/schemas/fontWeightToken.d.ts +1 -1
  17. package/dist/build/schemas/gradientToken.d.ts +1 -1
  18. package/dist/build/schemas/numberToken.d.ts +1 -1
  19. package/dist/build/schemas/shadowToken.d.ts +673 -85
  20. package/dist/build/schemas/stringToken.d.ts +1 -1
  21. package/dist/build/schemas/stringToken.js +1 -1
  22. package/dist/build/schemas/tokenType.d.ts +1 -1
  23. package/dist/build/schemas/transitionToken.d.ts +15 -3
  24. package/dist/build/schemas/typographyToken.d.ts +19 -5
  25. package/dist/build/schemas/typographyToken.js +1 -1
  26. package/dist/build/schemas/validTokenType.d.ts +1 -1
  27. package/dist/build/schemas/validTokenType.js +1 -1
  28. package/dist/build/schemas/viewportRangeToken.d.ts +1 -1
  29. package/dist/build/transformers/borderToCss.js +17 -1
  30. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  31. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  32. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  33. package/dist/build/transformers/dimensionToRem.js +21 -22
  34. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  35. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  36. package/dist/build/transformers/durationToCss.d.ts +2 -1
  37. package/dist/build/transformers/durationToCss.js +18 -11
  38. package/dist/build/transformers/shadowToCss.js +12 -1
  39. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  40. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  41. package/dist/build/types/borderTokenValue.d.ts +3 -1
  42. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  43. package/dist/build/types/shadowTokenValue.d.ts +6 -4
  44. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +32 -28
  45. package/dist/css/functional/themes/dark-colorblind.css +32 -28
  46. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +32 -28
  47. package/dist/css/functional/themes/dark-dimmed.css +32 -28
  48. package/dist/css/functional/themes/dark-high-contrast.css +32 -28
  49. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +32 -28
  50. package/dist/css/functional/themes/dark-tritanopia.css +32 -28
  51. package/dist/css/functional/themes/dark.css +32 -28
  52. package/dist/css/functional/themes/light-colorblind-high-contrast.css +32 -28
  53. package/dist/css/functional/themes/light-colorblind.css +32 -28
  54. package/dist/css/functional/themes/light-high-contrast.css +32 -28
  55. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +32 -28
  56. package/dist/css/functional/themes/light-tritanopia.css +32 -28
  57. package/dist/css/functional/themes/light.css +32 -28
  58. package/dist/css/primitives.css +4 -0
  59. package/dist/docs/base/motion/motion.json +96 -24
  60. package/dist/docs/base/size/size.json +76 -19
  61. package/dist/docs/base/typography/typography.json +24 -6
  62. package/dist/docs/functional/size/border.json +26 -11
  63. package/dist/docs/functional/size/breakpoints.json +24 -6
  64. package/dist/docs/functional/size/radius.json +16 -4
  65. package/dist/docs/functional/size/size.json +60 -15
  66. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +1423 -346
  67. package/dist/docs/functional/themes/dark-colorblind.json +1423 -346
  68. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +1423 -346
  69. package/dist/docs/functional/themes/dark-dimmed.json +1423 -346
  70. package/dist/docs/functional/themes/dark-high-contrast.json +1423 -346
  71. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +1423 -346
  72. package/dist/docs/functional/themes/dark-tritanopia.json +1423 -346
  73. package/dist/docs/functional/themes/dark.json +1423 -346
  74. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +1426 -349
  75. package/dist/docs/functional/themes/light-colorblind.json +1426 -349
  76. package/dist/docs/functional/themes/light-high-contrast.json +1426 -349
  77. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +1426 -349
  78. package/dist/docs/functional/themes/light-tritanopia.json +1426 -349
  79. package/dist/docs/functional/themes/light.json +1426 -349
  80. package/dist/docs/functional/typography/typography.json +8 -2
  81. package/dist/fallbacks/base/motion/motion.json +48 -12
  82. package/dist/figma/themes/light-colorblind.json +4 -4
  83. package/dist/figma/themes/light-high-contrast.json +4 -4
  84. package/dist/figma/themes/light-tritanopia.json +4 -4
  85. package/dist/figma/themes/light.json +4 -4
  86. package/dist/internalCss/dark-colorblind-high-contrast.css +28 -28
  87. package/dist/internalCss/dark-colorblind.css +28 -28
  88. package/dist/internalCss/dark-dimmed-high-contrast.css +28 -28
  89. package/dist/internalCss/dark-dimmed.css +28 -28
  90. package/dist/internalCss/dark-high-contrast.css +28 -28
  91. package/dist/internalCss/dark-tritanopia-high-contrast.css +28 -28
  92. package/dist/internalCss/dark-tritanopia.css +28 -28
  93. package/dist/internalCss/dark.css +28 -28
  94. package/dist/internalCss/light-colorblind-high-contrast.css +28 -28
  95. package/dist/internalCss/light-colorblind.css +28 -28
  96. package/dist/internalCss/light-high-contrast.css +28 -28
  97. package/dist/internalCss/light-tritanopia-high-contrast.css +28 -28
  98. package/dist/internalCss/light-tritanopia.css +28 -28
  99. package/dist/internalCss/light.css +28 -28
  100. package/dist/styleLint/base/motion/motion.json +96 -24
  101. package/dist/styleLint/base/size/size.json +76 -19
  102. package/dist/styleLint/base/typography/typography.json +30 -12
  103. package/dist/styleLint/functional/size/border.json +27 -12
  104. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  105. package/dist/styleLint/functional/size/radius.json +17 -5
  106. package/dist/styleLint/functional/size/size-coarse.json +3 -3
  107. package/dist/styleLint/functional/size/size-fine.json +3 -3
  108. package/dist/styleLint/functional/size/size.json +111 -66
  109. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +1551 -366
  110. package/dist/styleLint/functional/themes/dark-colorblind.json +1551 -366
  111. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +1551 -366
  112. package/dist/styleLint/functional/themes/dark-dimmed.json +1551 -366
  113. package/dist/styleLint/functional/themes/dark-high-contrast.json +1551 -366
  114. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +1551 -366
  115. package/dist/styleLint/functional/themes/dark-tritanopia.json +1551 -366
  116. package/dist/styleLint/functional/themes/dark.json +1551 -366
  117. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +1554 -369
  118. package/dist/styleLint/functional/themes/light-colorblind.json +1554 -369
  119. package/dist/styleLint/functional/themes/light-high-contrast.json +1554 -369
  120. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +1554 -369
  121. package/dist/styleLint/functional/themes/light-tritanopia.json +1554 -369
  122. package/dist/styleLint/functional/themes/light.json +1554 -369
  123. package/dist/styleLint/functional/typography/typography.json +28 -22
  124. package/package.json +6 -5
  125. package/src/tokens/base/motion/timing.json5 +12 -12
  126. package/src/tokens/base/size/size.json5 +19 -19
  127. package/src/tokens/base/typography/typography.json5 +6 -6
  128. package/src/tokens/component/avatar.json5 +72 -44
  129. package/src/tokens/component/button.json5 +1545 -1193
  130. package/src/tokens/functional/border/border.json5 +4 -1
  131. package/src/tokens/functional/color/bgColor.json5 +8 -0
  132. package/src/tokens/functional/color/display.json5 +7 -0
  133. package/src/tokens/functional/color/fgColor.json5 +8 -0
  134. package/src/tokens/functional/color/syntax.json5 +14 -0
  135. package/src/tokens/functional/shadow/shadow.json5 +678 -163
  136. package/src/tokens/functional/size/border.json5 +8 -8
  137. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  138. package/src/tokens/functional/size/radius.json5 +4 -4
  139. package/src/tokens/functional/size/size.json5 +15 -15
  140. package/src/tokens/functional/typography/typography.json5 +8 -4
  141. package/dist/build/parsers/index.d.ts +0 -1
  142. package/dist/build/parsers/index.js +0 -1
  143. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  144. package/dist/build/parsers/w3cJsonParser.js +0 -25
  145. package/dist/removed/testing.json5 +0 -4
  146. package/guidelines/color.llm.md +0 -16
  147. package/guidelines/guidelines.llm.md +0 -34
  148. package/guidelines/motion.llm.md +0 -41
  149. package/guidelines/spacing.llm.md +0 -20
  150. package/guidelines/typography.llm.md +0 -14
  151. package/src/tokens/removed/testing.json5 +0 -4
  152. package/token-guidelines.llm.md +0 -695
@@ -4,13 +4,26 @@
4
4
  $value: {
5
5
  color: '{base.color.neutral.13}',
6
6
  alpha: 0.04,
7
- offsetX: '0px',
8
- offsetY: '1px',
9
- blur: '0px',
10
- spread: '0px',
7
+ offsetX: {
8
+ value: 0,
9
+ unit: 'px',
10
+ },
11
+ offsetY: {
12
+ value: 1,
13
+ unit: 'px',
14
+ },
15
+ blur: {
16
+ value: 0,
17
+ unit: 'px',
18
+ },
19
+ spread: {
20
+ value: 0,
21
+ unit: 'px',
22
+ },
11
23
  inset: true,
12
24
  },
13
25
  $type: 'shadow',
26
+ $description: 'Inset shadow for recessed elements',
14
27
  $extensions: {
15
28
  'org.primer.figma': {
16
29
  collection: 'mode',
@@ -21,28 +34,57 @@
21
34
  $value: {
22
35
  color: '{base.color.neutral.0}',
23
36
  alpha: 0.24,
24
- offsetX: '0px',
25
- offsetY: '1px',
26
- blur: '0px',
27
- spread: '0px',
37
+ offsetX: {
38
+ value: 0,
39
+ unit: 'px',
40
+ },
41
+ offsetY: {
42
+ value: 1,
43
+ unit: 'px',
44
+ },
45
+ blur: {
46
+ value: 0,
47
+ unit: 'px',
48
+ },
49
+ spread: {
50
+ value: 0,
51
+ unit: 'px',
52
+ },
28
53
  inset: true,
29
54
  },
30
55
  },
31
56
  },
57
+ 'org.primer.llm': {
58
+ usage: ['input-field', 'pressed-button', 'recessed-area', 'well'],
59
+ rules: 'Use for elements that appear pressed or inset into the surface. Commonly used for input fields and wells. Do NOT use for floating elements.',
60
+ },
32
61
  },
33
62
  },
34
63
  resting: {
35
64
  xsmall: {
36
65
  $value: {
37
66
  color: '{base.color.neutral.13}',
38
- alpha: 0.06,
39
- offsetX: '0px',
40
- offsetY: '1px',
41
- blur: '1px',
42
- spread: '0px',
67
+ alpha: 0.05,
68
+ offsetX: {
69
+ value: 0,
70
+ unit: 'px',
71
+ },
72
+ offsetY: {
73
+ value: 1,
74
+ unit: 'px',
75
+ },
76
+ blur: {
77
+ value: 1,
78
+ unit: 'px',
79
+ },
80
+ spread: {
81
+ value: 0,
82
+ unit: 'px',
83
+ },
43
84
  inset: false,
44
85
  },
45
86
  $type: 'shadow',
87
+ $description: 'Extra small resting shadow for minimal elevation',
46
88
  $extensions: {
47
89
  'org.primer.figma': {
48
90
  collection: 'mode',
@@ -53,38 +95,79 @@
53
95
  $value: {
54
96
  color: '{base.color.neutral.0}',
55
97
  alpha: 0.8,
56
- offsetX: '0px',
57
- offsetY: '1px',
58
- blur: '1px',
59
- spread: '0px',
98
+ offsetX: {
99
+ value: 0,
100
+ unit: 'px',
101
+ },
102
+ offsetY: {
103
+ value: 1,
104
+ unit: 'px',
105
+ },
106
+ blur: {
107
+ value: 1,
108
+ unit: 'px',
109
+ },
110
+ spread: {
111
+ value: 0,
112
+ unit: 'px',
113
+ },
60
114
  inset: false,
61
115
  },
62
116
  },
63
117
  },
118
+ 'org.primer.llm': {
119
+ usage: ['badge', 'chip', 'small-card', 'subtle-elevation'],
120
+ rules: 'Use for very subtle elevation on small elements. Provides minimal lift from surface. Do NOT use for interactive elements needing clear affordance.',
121
+ },
64
122
  },
65
123
  },
66
124
  small: {
67
125
  $value: [
68
126
  {
69
127
  color: '{base.color.neutral.13}',
70
- alpha: 0.06,
71
- offsetX: '0px',
72
- offsetY: '1px',
73
- blur: '1px',
74
- spread: '0px',
128
+ alpha: 0.04,
129
+ offsetX: {
130
+ value: 0,
131
+ unit: 'px',
132
+ },
133
+ offsetY: {
134
+ value: 1,
135
+ unit: 'px',
136
+ },
137
+ blur: {
138
+ value: 1,
139
+ unit: 'px',
140
+ },
141
+ spread: {
142
+ value: 0,
143
+ unit: 'px',
144
+ },
75
145
  inset: false,
76
146
  },
77
147
  {
78
148
  color: '{base.color.neutral.13}',
79
- alpha: 0.06,
80
- offsetX: '0px',
81
- offsetY: '1px',
82
- blur: '3px',
83
- spread: '0px',
149
+ alpha: 0.03,
150
+ offsetX: {
151
+ value: 0,
152
+ unit: 'px',
153
+ },
154
+ offsetY: {
155
+ value: 1,
156
+ unit: 'px',
157
+ },
158
+ blur: {
159
+ value: 2,
160
+ unit: 'px',
161
+ },
162
+ spread: {
163
+ value: 0,
164
+ unit: 'px',
165
+ },
84
166
  inset: false,
85
167
  },
86
168
  ],
87
169
  $type: 'shadow',
170
+ $description: 'Small resting shadow for buttons and interactive elements',
88
171
  $extensions: {
89
172
  'org.primer.figma': {
90
173
  collection: 'mode',
@@ -96,24 +179,52 @@
96
179
  {
97
180
  color: '{base.color.neutral.0}',
98
181
  alpha: 0.6,
99
- offsetX: '0px',
100
- offsetY: '1px',
101
- blur: '1px',
102
- spread: '0px',
182
+ offsetX: {
183
+ value: 0,
184
+ unit: 'px',
185
+ },
186
+ offsetY: {
187
+ value: 1,
188
+ unit: 'px',
189
+ },
190
+ blur: {
191
+ value: 1,
192
+ unit: 'px',
193
+ },
194
+ spread: {
195
+ value: 0,
196
+ unit: 'px',
197
+ },
103
198
  inset: false,
104
199
  },
105
200
  {
106
201
  color: '{base.color.neutral.0}',
107
202
  alpha: 0.6,
108
- offsetX: '0px',
109
- offsetY: '1px',
110
- blur: '3px',
111
- spread: '0px',
203
+ offsetX: {
204
+ value: 0,
205
+ unit: 'px',
206
+ },
207
+ offsetY: {
208
+ value: 1,
209
+ unit: 'px',
210
+ },
211
+ blur: {
212
+ value: 3,
213
+ unit: 'px',
214
+ },
215
+ spread: {
216
+ value: 0,
217
+ unit: 'px',
218
+ },
112
219
  inset: false,
113
220
  },
114
221
  ],
115
222
  },
116
223
  },
224
+ 'org.primer.llm': {
225
+ usage: ['button', 'interactive-card', 'clickable-element'],
226
+ rules: 'Use for buttons and small interactive elements at rest. Provides subtle depth and clickable affordance. RECOMMENDED for default button shadows.',
227
+ },
117
228
  },
118
229
  },
119
230
  medium: {
@@ -121,21 +232,46 @@
121
232
  {
122
233
  color: '{base.color.neutral.12}',
123
234
  alpha: 0.1,
124
- offsetX: '0px',
125
- offsetY: '1px',
126
- blur: '1px',
127
- spread: '0px',
235
+ offsetX: {
236
+ value: 0,
237
+ unit: 'px',
238
+ },
239
+ offsetY: {
240
+ value: 1,
241
+ unit: 'px',
242
+ },
243
+ blur: {
244
+ value: 1,
245
+ unit: 'px',
246
+ },
247
+ spread: {
248
+ value: 0,
249
+ unit: 'px',
250
+ },
128
251
  },
129
252
  {
130
253
  color: '{base.color.neutral.12}',
131
254
  alpha: 0.12,
132
- offsetX: '0px',
133
- offsetY: '3px',
134
- blur: '6px',
135
- spread: '0px',
255
+ offsetX: {
256
+ value: 0,
257
+ unit: 'px',
258
+ },
259
+ offsetY: {
260
+ value: 3,
261
+ unit: 'px',
262
+ },
263
+ blur: {
264
+ value: 6,
265
+ unit: 'px',
266
+ },
267
+ spread: {
268
+ value: 0,
269
+ unit: 'px',
270
+ },
136
271
  },
137
272
  ],
138
273
  $type: 'shadow',
274
+ $description: 'Medium resting shadow for cards and elevated surfaces',
139
275
  $extensions: {
140
276
  'org.primer.figma': {
141
277
  collection: 'mode',
@@ -147,22 +283,50 @@
147
283
  {
148
284
  color: '{base.color.neutral.0}',
149
285
  alpha: 0.4,
150
- offsetX: '0px',
151
- offsetY: '1px',
152
- blur: '1px',
153
- spread: '0px',
286
+ offsetX: {
287
+ value: 0,
288
+ unit: 'px',
289
+ },
290
+ offsetY: {
291
+ value: 1,
292
+ unit: 'px',
293
+ },
294
+ blur: {
295
+ value: 1,
296
+ unit: 'px',
297
+ },
298
+ spread: {
299
+ value: 0,
300
+ unit: 'px',
301
+ },
154
302
  },
155
303
  {
156
304
  color: '{base.color.neutral.0}',
157
305
  alpha: 0.8,
158
- offsetX: '0px',
159
- offsetY: '3px',
160
- blur: '6px',
161
- spread: '0px',
306
+ offsetX: {
307
+ value: 0,
308
+ unit: 'px',
309
+ },
310
+ offsetY: {
311
+ value: 3,
312
+ unit: 'px',
313
+ },
314
+ blur: {
315
+ value: 6,
316
+ unit: 'px',
317
+ },
318
+ spread: {
319
+ value: 0,
320
+ unit: 'px',
321
+ },
162
322
  },
163
323
  ],
164
324
  },
165
325
  },
326
+ 'org.primer.llm': {
327
+ usage: ['card', 'panel', 'elevated-surface', 'elevated-sidebar'],
328
+ rules: 'Use for cards and content panels that sit above the page surface. Provides moderate elevation without appearing to float. Do NOT use for overlays or modals.',
329
+ },
166
330
  },
167
331
  },
168
332
  },
@@ -172,26 +336,62 @@
172
336
  {
173
337
  color: '{overlay.borderColor}',
174
338
  alpha: 0.5,
175
- offsetX: '0px',
176
- offsetY: '0px',
177
- blur: '0px',
178
- spread: '1px',
339
+ offsetX: {
340
+ value: 0,
341
+ unit: 'px',
342
+ },
343
+ offsetY: {
344
+ value: 0,
345
+ unit: 'px',
346
+ },
347
+ blur: {
348
+ value: 0,
349
+ unit: 'px',
350
+ },
351
+ spread: {
352
+ value: 1,
353
+ unit: 'px',
354
+ },
179
355
  },
180
356
  {
181
357
  color: '{base.color.neutral.12}',
182
358
  alpha: 0.04,
183
- offsetX: '0px',
184
- offsetY: '6px',
185
- blur: '12px',
186
- spread: '-3px',
359
+ offsetX: {
360
+ value: 0,
361
+ unit: 'px',
362
+ },
363
+ offsetY: {
364
+ value: 6,
365
+ unit: 'px',
366
+ },
367
+ blur: {
368
+ value: 12,
369
+ unit: 'px',
370
+ },
371
+ spread: {
372
+ value: -3,
373
+ unit: 'px',
374
+ },
187
375
  },
188
376
  {
189
377
  color: '{base.color.neutral.12}',
190
378
  alpha: 0.12,
191
- offsetX: '0px',
192
- offsetY: '6px',
193
- blur: '18px',
194
- spread: '0px',
379
+ offsetX: {
380
+ value: 0,
381
+ unit: 'px',
382
+ },
383
+ offsetY: {
384
+ value: 6,
385
+ unit: 'px',
386
+ },
387
+ blur: {
388
+ value: 18,
389
+ unit: 'px',
390
+ },
391
+ spread: {
392
+ value: 0,
393
+ unit: 'px',
394
+ },
195
395
  },
196
396
  ],
197
397
  $type: 'shadow',
@@ -207,26 +407,62 @@
207
407
  {
208
408
  color: '{overlay.borderColor}',
209
409
  alpha: 1,
210
- offsetX: '0px',
211
- offsetY: '0px',
212
- blur: '0px',
213
- spread: '1px',
410
+ offsetX: {
411
+ value: 0,
412
+ unit: 'px',
413
+ },
414
+ offsetY: {
415
+ value: 0,
416
+ unit: 'px',
417
+ },
418
+ blur: {
419
+ value: 0,
420
+ unit: 'px',
421
+ },
422
+ spread: {
423
+ value: 1,
424
+ unit: 'px',
425
+ },
214
426
  },
215
427
  {
216
428
  color: '{base.color.neutral.0}',
217
429
  alpha: 0.4,
218
- offsetX: '0px',
219
- offsetY: '6px',
220
- blur: '12px',
221
- spread: '-3px',
430
+ offsetX: {
431
+ value: 0,
432
+ unit: 'px',
433
+ },
434
+ offsetY: {
435
+ value: 6,
436
+ unit: 'px',
437
+ },
438
+ blur: {
439
+ value: 12,
440
+ unit: 'px',
441
+ },
442
+ spread: {
443
+ value: -3,
444
+ unit: 'px',
445
+ },
222
446
  },
223
447
  {
224
448
  color: '{base.color.neutral.0}',
225
449
  alpha: 0.4,
226
- offsetX: '0px',
227
- offsetY: '6px',
228
- blur: '18px',
229
- spread: '0px',
450
+ offsetX: {
451
+ value: 0,
452
+ unit: 'px',
453
+ },
454
+ offsetY: {
455
+ value: 6,
456
+ unit: 'px',
457
+ },
458
+ blur: {
459
+ value: 18,
460
+ unit: 'px',
461
+ },
462
+ spread: {
463
+ value: 0,
464
+ unit: 'px',
465
+ },
230
466
  },
231
467
  ],
232
468
  },
@@ -242,45 +478,106 @@
242
478
  {
243
479
  color: '{overlay.borderColor}',
244
480
  alpha: 0,
245
- offsetX: '0px',
246
- offsetY: '0px',
247
- blur: '0px',
248
- spread: '1px',
481
+ offsetX: {
482
+ value: 0,
483
+ unit: 'px',
484
+ },
485
+ offsetY: {
486
+ value: 0,
487
+ unit: 'px',
488
+ },
489
+ blur: {
490
+ value: 0,
491
+ unit: 'px',
492
+ },
493
+ spread: {
494
+ value: 1,
495
+ unit: 'px',
496
+ },
249
497
  },
250
498
  {
251
499
  color: '{base.color.neutral.12}',
252
500
  alpha: 0.08,
253
- offsetX: '0px',
254
- offsetY: '8px',
255
- blur: '16px',
256
- spread: '-4px',
501
+ offsetX: {
502
+ value: 0,
503
+ unit: 'px',
504
+ },
505
+ offsetY: {
506
+ value: 8,
507
+ unit: 'px',
508
+ },
509
+ blur: {
510
+ value: 16,
511
+ unit: 'px',
512
+ },
513
+ spread: {
514
+ value: -4,
515
+ unit: 'px',
516
+ },
257
517
  },
258
518
  {
259
519
  color: '{base.color.neutral.12}',
260
520
  alpha: 0.08,
261
- offsetX: '0px',
262
- offsetY: '4px',
263
- blur: '32px',
264
- spread: '-4px',
521
+ offsetX: {
522
+ value: 0,
523
+ unit: 'px',
524
+ },
525
+ offsetY: {
526
+ value: 4,
527
+ unit: 'px',
528
+ },
529
+ blur: {
530
+ value: 32,
531
+ unit: 'px',
532
+ },
533
+ spread: {
534
+ value: -4,
535
+ unit: 'px',
536
+ },
265
537
  },
266
538
  {
267
539
  color: '{base.color.neutral.12}',
268
540
  alpha: 0.08,
269
- offsetX: '0px',
270
- offsetY: '24px',
271
- blur: '48px',
272
- spread: '-12px',
541
+ offsetX: {
542
+ value: 0,
543
+ unit: 'px',
544
+ },
545
+ offsetY: {
546
+ value: 24,
547
+ unit: 'px',
548
+ },
549
+ blur: {
550
+ value: 48,
551
+ unit: 'px',
552
+ },
553
+ spread: {
554
+ value: -12,
555
+ unit: 'px',
556
+ },
273
557
  },
274
558
  {
275
559
  color: '{base.color.neutral.12}',
276
560
  alpha: 0.08,
277
- offsetX: '0px',
278
- offsetY: '48px',
279
- blur: '96px',
280
- spread: '-24px',
561
+ offsetX: {
562
+ value: 0,
563
+ unit: 'px',
564
+ },
565
+ offsetY: {
566
+ value: 48,
567
+ unit: 'px',
568
+ },
569
+ blur: {
570
+ value: 96,
571
+ unit: 'px',
572
+ },
573
+ spread: {
574
+ value: -24,
575
+ unit: 'px',
576
+ },
281
577
  },
282
578
  ],
283
579
  $type: 'shadow',
580
+ $description: 'Medium floating shadow for popovers and action menus',
284
581
  $extensions: {
285
582
  'org.primer.figma': {
286
583
  collection: 'mode',
@@ -292,46 +589,110 @@
292
589
  {
293
590
  color: '{overlay.borderColor}',
294
591
  alpha: 1,
295
- offsetX: '0px',
296
- offsetY: '0px',
297
- blur: '0px',
298
- spread: '1px',
592
+ offsetX: {
593
+ value: 0,
594
+ unit: 'px',
595
+ },
596
+ offsetY: {
597
+ value: 0,
598
+ unit: 'px',
599
+ },
600
+ blur: {
601
+ value: 0,
602
+ unit: 'px',
603
+ },
604
+ spread: {
605
+ value: 1,
606
+ unit: 'px',
607
+ },
299
608
  },
300
609
  {
301
610
  color: '{base.color.neutral.0}',
302
611
  alpha: 0.4,
303
- offsetX: '0px',
304
- offsetY: '8px',
305
- blur: '16px',
306
- spread: '-4px',
612
+ offsetX: {
613
+ value: 0,
614
+ unit: 'px',
615
+ },
616
+ offsetY: {
617
+ value: 8,
618
+ unit: 'px',
619
+ },
620
+ blur: {
621
+ value: 16,
622
+ unit: 'px',
623
+ },
624
+ spread: {
625
+ value: -4,
626
+ unit: 'px',
627
+ },
307
628
  },
308
629
  {
309
630
  color: '{base.color.neutral.0}',
310
631
  alpha: 0.4,
311
- offsetX: '0px',
312
- offsetY: '4px',
313
- blur: '32px',
314
- spread: '-4px',
632
+ offsetX: {
633
+ value: 0,
634
+ unit: 'px',
635
+ },
636
+ offsetY: {
637
+ value: 4,
638
+ unit: 'px',
639
+ },
640
+ blur: {
641
+ value: 32,
642
+ unit: 'px',
643
+ },
644
+ spread: {
645
+ value: -4,
646
+ unit: 'px',
647
+ },
315
648
  },
316
649
  {
317
650
  color: '{base.color.neutral.0}',
318
651
  alpha: 0.4,
319
- offsetX: '0px',
320
- offsetY: '24px',
321
- blur: '48px',
322
- spread: '-12px',
652
+ offsetX: {
653
+ value: 0,
654
+ unit: 'px',
655
+ },
656
+ offsetY: {
657
+ value: 24,
658
+ unit: 'px',
659
+ },
660
+ blur: {
661
+ value: 48,
662
+ unit: 'px',
663
+ },
664
+ spread: {
665
+ value: -12,
666
+ unit: 'px',
667
+ },
323
668
  },
324
669
  {
325
670
  color: '{base.color.neutral.0}',
326
671
  alpha: 0.4,
327
- offsetX: '0px',
328
- offsetY: '48px',
329
- blur: '96px',
330
- spread: '-24px',
672
+ offsetX: {
673
+ value: 0,
674
+ unit: 'px',
675
+ },
676
+ offsetY: {
677
+ value: 48,
678
+ unit: 'px',
679
+ },
680
+ blur: {
681
+ value: 96,
682
+ unit: 'px',
683
+ },
684
+ spread: {
685
+ value: -24,
686
+ unit: 'px',
687
+ },
331
688
  },
332
689
  ],
333
690
  },
334
691
  },
692
+ 'org.primer.llm': {
693
+ usage: ['popover', 'action-menu', 'select-panel', 'autocomplete'],
694
+ rules: 'Use for medium-sized floating elements like popovers and action menus. More prominent than small but less than dialogs. Do NOT use for full modals.',
695
+ },
335
696
  },
336
697
  },
337
698
  large: {
@@ -339,18 +700,42 @@
339
700
  {
340
701
  color: '{overlay.borderColor}',
341
702
  alpha: 0,
342
- offsetX: '0px',
343
- offsetY: '0px',
344
- blur: '0px',
345
- spread: '1px',
703
+ offsetX: {
704
+ value: 0,
705
+ unit: 'px',
706
+ },
707
+ offsetY: {
708
+ value: 0,
709
+ unit: 'px',
710
+ },
711
+ blur: {
712
+ value: 0,
713
+ unit: 'px',
714
+ },
715
+ spread: {
716
+ value: 1,
717
+ unit: 'px',
718
+ },
346
719
  },
347
720
  {
348
721
  color: '{base.color.neutral.12}',
349
722
  alpha: 0.24,
350
- offsetX: '0px',
351
- offsetY: '40px',
352
- blur: '80px',
353
- spread: '0px',
723
+ offsetX: {
724
+ value: 0,
725
+ unit: 'px',
726
+ },
727
+ offsetY: {
728
+ value: 40,
729
+ unit: 'px',
730
+ },
731
+ blur: {
732
+ value: 80,
733
+ unit: 'px',
734
+ },
735
+ spread: {
736
+ value: 0,
737
+ unit: 'px',
738
+ },
354
739
  },
355
740
  ],
356
741
  $type: 'shadow',
@@ -366,18 +751,42 @@
366
751
  {
367
752
  color: '{overlay.borderColor}',
368
753
  alpha: 1,
369
- offsetX: '0px',
370
- offsetY: '0px',
371
- blur: '0px',
372
- spread: '1px',
754
+ offsetX: {
755
+ value: 0,
756
+ unit: 'px',
757
+ },
758
+ offsetY: {
759
+ value: 0,
760
+ unit: 'px',
761
+ },
762
+ blur: {
763
+ value: 0,
764
+ unit: 'px',
765
+ },
766
+ spread: {
767
+ value: 1,
768
+ unit: 'px',
769
+ },
373
770
  },
374
771
  {
375
772
  color: '{base.color.neutral.0}',
376
773
  alpha: 1,
377
- offsetX: '0px',
378
- offsetY: '24px',
379
- blur: '48px',
380
- spread: '0px',
774
+ offsetX: {
775
+ value: 0,
776
+ unit: 'px',
777
+ },
778
+ offsetY: {
779
+ value: 24,
780
+ unit: 'px',
781
+ },
782
+ blur: {
783
+ value: 48,
784
+ unit: 'px',
785
+ },
786
+ spread: {
787
+ value: 0,
788
+ unit: 'px',
789
+ },
381
790
  },
382
791
  ],
383
792
  },
@@ -393,21 +802,46 @@
393
802
  {
394
803
  color: '{overlay.borderColor}',
395
804
  alpha: 0,
396
- offsetX: '0px',
397
- offsetY: '0px',
398
- blur: '0px',
399
- spread: '1px',
805
+ offsetX: {
806
+ value: 0,
807
+ unit: 'px',
808
+ },
809
+ offsetY: {
810
+ value: 0,
811
+ unit: 'px',
812
+ },
813
+ blur: {
814
+ value: 0,
815
+ unit: 'px',
816
+ },
817
+ spread: {
818
+ value: 1,
819
+ unit: 'px',
820
+ },
400
821
  },
401
822
  {
402
823
  color: '{base.color.neutral.12}',
403
824
  alpha: 0.32,
404
- offsetX: '0px',
405
- offsetY: '56px',
406
- blur: '112px',
407
- spread: '0px',
825
+ offsetX: {
826
+ value: 0,
827
+ unit: 'px',
828
+ },
829
+ offsetY: {
830
+ value: 56,
831
+ unit: 'px',
832
+ },
833
+ blur: {
834
+ value: 112,
835
+ unit: 'px',
836
+ },
837
+ spread: {
838
+ value: 0,
839
+ unit: 'px',
840
+ },
408
841
  },
409
842
  ],
410
843
  $type: 'shadow',
844
+ $description: 'Extra large floating shadow for full-screen overlays and sheets',
411
845
  $extensions: {
412
846
  'org.primer.figma': {
413
847
  collection: 'mode',
@@ -419,22 +853,50 @@
419
853
  {
420
854
  color: '{overlay.borderColor}',
421
855
  alpha: 1,
422
- offsetX: '0px',
423
- offsetY: '0px',
424
- blur: '0px',
425
- spread: '1px',
856
+ offsetX: {
857
+ value: 0,
858
+ unit: 'px',
859
+ },
860
+ offsetY: {
861
+ value: 0,
862
+ unit: 'px',
863
+ },
864
+ blur: {
865
+ value: 0,
866
+ unit: 'px',
867
+ },
868
+ spread: {
869
+ value: 1,
870
+ unit: 'px',
871
+ },
426
872
  },
427
873
  {
428
874
  color: '{base.color.neutral.0}',
429
875
  alpha: 1,
430
- offsetX: '0px',
431
- offsetY: '32px',
432
- blur: '64px',
433
- spread: '0px',
876
+ offsetX: {
877
+ value: 0,
878
+ unit: 'px',
879
+ },
880
+ offsetY: {
881
+ value: 32,
882
+ unit: 'px',
883
+ },
884
+ blur: {
885
+ value: 64,
886
+ unit: 'px',
887
+ },
888
+ spread: {
889
+ value: 0,
890
+ unit: 'px',
891
+ },
434
892
  },
435
893
  ],
436
894
  },
437
895
  },
896
+ 'org.primer.llm': {
897
+ usage: ['full-screen-overlay', 'side-sheet', 'drawer', 'large-modal'],
898
+ rules: 'Use for full-screen or near-full-screen overlays like side sheets and drawers. Maximum elevation in the system. Do NOT use for small floating elements.',
899
+ },
438
900
  },
439
901
  },
440
902
  legacy: {
@@ -442,21 +904,46 @@
442
904
  {
443
905
  color: '{base.color.neutral.12}',
444
906
  alpha: 0.04,
445
- offsetX: '0px',
446
- offsetY: '6px',
447
- blur: '12px',
448
- spread: '-3px',
907
+ offsetX: {
908
+ value: 0,
909
+ unit: 'px',
910
+ },
911
+ offsetY: {
912
+ value: 6,
913
+ unit: 'px',
914
+ },
915
+ blur: {
916
+ value: 12,
917
+ unit: 'px',
918
+ },
919
+ spread: {
920
+ value: -3,
921
+ unit: 'px',
922
+ },
449
923
  },
450
924
  {
451
925
  color: '{base.color.neutral.12}',
452
926
  alpha: 0.12,
453
- offsetX: '0px',
454
- offsetY: '6px',
455
- blur: '18px',
456
- spread: '0px',
927
+ offsetX: {
928
+ value: 0,
929
+ unit: 'px',
930
+ },
931
+ offsetY: {
932
+ value: 6,
933
+ unit: 'px',
934
+ },
935
+ blur: {
936
+ value: 18,
937
+ unit: 'px',
938
+ },
939
+ spread: {
940
+ value: 0,
941
+ unit: 'px',
942
+ },
457
943
  },
458
944
  ],
459
945
  $type: 'shadow',
946
+ $description: 'Legacy floating shadow for backward compatibility',
460
947
  $extensions: {
461
948
  'org.primer.figma': {},
462
949
  'org.primer.overrides': {
@@ -465,22 +952,50 @@
465
952
  {
466
953
  color: '{base.color.neutral.0}',
467
954
  alpha: 0.4,
468
- offsetX: '0px',
469
- offsetY: '6px',
470
- blur: '12px',
471
- spread: '-3px',
955
+ offsetX: {
956
+ value: 0,
957
+ unit: 'px',
958
+ },
959
+ offsetY: {
960
+ value: 6,
961
+ unit: 'px',
962
+ },
963
+ blur: {
964
+ value: 12,
965
+ unit: 'px',
966
+ },
967
+ spread: {
968
+ value: -3,
969
+ unit: 'px',
970
+ },
472
971
  },
473
972
  {
474
973
  color: '{base.color.neutral.0}',
475
974
  alpha: 0.4,
476
- offsetX: '0px',
477
- offsetY: '6px',
478
- blur: '18px',
479
- spread: '0px',
975
+ offsetX: {
976
+ value: 0,
977
+ unit: 'px',
978
+ },
979
+ offsetY: {
980
+ value: 6,
981
+ unit: 'px',
982
+ },
983
+ blur: {
984
+ value: 18,
985
+ unit: 'px',
986
+ },
987
+ spread: {
988
+ value: 0,
989
+ unit: 'px',
990
+ },
480
991
  },
481
992
  ],
482
993
  },
483
994
  },
995
+ 'org.primer.llm': {
996
+ usage: ['legacy-component', 'backward-compatibility'],
997
+ rules: 'DEPRECATED: Use shadow-floating-small instead. Only use for maintaining backward compatibility with existing implementations.',
998
+ },
484
999
  },
485
1000
  },
486
1001
  },