@primer/primitives 11.4.0 → 11.4.1-rc.14fb4bb1

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 (165) 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 +61 -5
  7. package/dist/build/schemas/borderToken.js +2 -1
  8. package/dist/build/schemas/colorToken.d.ts +639 -30
  9. package/dist/build/schemas/colorToken.js +3 -2
  10. package/dist/build/schemas/colorW3cValue.d.ts +28 -0
  11. package/dist/build/schemas/colorW3cValue.js +42 -0
  12. package/dist/build/schemas/cubicBezierToken.d.ts +1 -1
  13. package/dist/build/schemas/dimensionToken.d.ts +9 -2
  14. package/dist/build/schemas/dimensionValue.d.ts +12 -1
  15. package/dist/build/schemas/dimensionValue.js +10 -13
  16. package/dist/build/schemas/durationToken.d.ts +8 -2
  17. package/dist/build/schemas/durationValue.d.ts +11 -1
  18. package/dist/build/schemas/durationValue.js +13 -3
  19. package/dist/build/schemas/fontFamilyToken.d.ts +1 -1
  20. package/dist/build/schemas/fontWeightToken.d.ts +1 -1
  21. package/dist/build/schemas/gradientToken.d.ts +23 -2
  22. package/dist/build/schemas/gradientToken.js +2 -1
  23. package/dist/build/schemas/numberToken.d.ts +1 -1
  24. package/dist/build/schemas/shadowToken.d.ts +1751 -127
  25. package/dist/build/schemas/shadowToken.js +8 -2
  26. package/dist/build/schemas/stringToken.d.ts +1 -1
  27. package/dist/build/schemas/stringToken.js +1 -1
  28. package/dist/build/schemas/tokenType.d.ts +1 -1
  29. package/dist/build/schemas/transitionToken.d.ts +15 -3
  30. package/dist/build/schemas/typographyToken.d.ts +19 -5
  31. package/dist/build/schemas/typographyToken.js +1 -1
  32. package/dist/build/schemas/validTokenType.d.ts +1 -1
  33. package/dist/build/schemas/validTokenType.js +1 -1
  34. package/dist/build/schemas/viewportRangeToken.d.ts +1 -1
  35. package/dist/build/transformers/borderToCss.js +19 -1
  36. package/dist/build/transformers/colorAlphaToCss.js +6 -3
  37. package/dist/build/transformers/colorToHex.js +5 -2
  38. package/dist/build/transformers/colorToRgbAlpha.js +5 -2
  39. package/dist/build/transformers/colorToRgbaFloat.js +5 -0
  40. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  41. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  42. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  43. package/dist/build/transformers/dimensionToRem.js +21 -22
  44. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  45. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  46. package/dist/build/transformers/durationToCss.d.ts +2 -1
  47. package/dist/build/transformers/durationToCss.js +18 -11
  48. package/dist/build/transformers/gradientToCss.js +2 -1
  49. package/dist/build/transformers/shadowToCss.js +15 -1
  50. package/dist/build/transformers/utilities/normalizeColorValue.d.ts +23 -0
  51. package/dist/build/transformers/utilities/normalizeColorValue.js +74 -0
  52. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  53. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  54. package/dist/build/types/borderTokenValue.d.ts +5 -2
  55. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  56. package/dist/build/types/shadowTokenValue.d.ts +8 -5
  57. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +32 -28
  58. package/dist/css/functional/themes/dark-colorblind.css +32 -28
  59. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +32 -28
  60. package/dist/css/functional/themes/dark-dimmed.css +32 -28
  61. package/dist/css/functional/themes/dark-high-contrast.css +32 -28
  62. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +32 -28
  63. package/dist/css/functional/themes/dark-tritanopia.css +32 -28
  64. package/dist/css/functional/themes/dark.css +32 -28
  65. package/dist/css/functional/themes/light-colorblind-high-contrast.css +32 -28
  66. package/dist/css/functional/themes/light-colorblind.css +32 -28
  67. package/dist/css/functional/themes/light-high-contrast.css +32 -28
  68. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +32 -28
  69. package/dist/css/functional/themes/light-tritanopia.css +32 -28
  70. package/dist/css/functional/themes/light.css +32 -28
  71. package/dist/css/primitives.css +4 -0
  72. package/dist/docs/base/motion/motion.json +96 -24
  73. package/dist/docs/base/size/size.json +76 -19
  74. package/dist/docs/base/typography/typography.json +24 -6
  75. package/dist/docs/functional/size/border.json +26 -11
  76. package/dist/docs/functional/size/breakpoints.json +24 -6
  77. package/dist/docs/functional/size/radius.json +16 -4
  78. package/dist/docs/functional/size/size.json +60 -15
  79. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +2629 -346
  80. package/dist/docs/functional/themes/dark-colorblind.json +2629 -346
  81. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +2629 -346
  82. package/dist/docs/functional/themes/dark-dimmed.json +2629 -346
  83. package/dist/docs/functional/themes/dark-high-contrast.json +2629 -346
  84. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +2629 -346
  85. package/dist/docs/functional/themes/dark-tritanopia.json +2629 -346
  86. package/dist/docs/functional/themes/dark.json +2629 -346
  87. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +2635 -352
  88. package/dist/docs/functional/themes/light-colorblind.json +2632 -349
  89. package/dist/docs/functional/themes/light-high-contrast.json +2635 -352
  90. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +2635 -352
  91. package/dist/docs/functional/themes/light-tritanopia.json +2632 -349
  92. package/dist/docs/functional/themes/light.json +2632 -349
  93. package/dist/docs/functional/typography/typography.json +8 -2
  94. package/dist/fallbacks/base/motion/motion.json +48 -12
  95. package/dist/figma/themes/light-colorblind.json +4 -4
  96. package/dist/figma/themes/light-high-contrast.json +4 -4
  97. package/dist/figma/themes/light-tritanopia.json +4 -4
  98. package/dist/figma/themes/light.json +4 -4
  99. package/dist/internalCss/dark-colorblind-high-contrast.css +28 -28
  100. package/dist/internalCss/dark-colorblind.css +28 -28
  101. package/dist/internalCss/dark-dimmed-high-contrast.css +28 -28
  102. package/dist/internalCss/dark-dimmed.css +28 -28
  103. package/dist/internalCss/dark-high-contrast.css +28 -28
  104. package/dist/internalCss/dark-tritanopia-high-contrast.css +28 -28
  105. package/dist/internalCss/dark-tritanopia.css +28 -28
  106. package/dist/internalCss/dark.css +28 -28
  107. package/dist/internalCss/light-colorblind-high-contrast.css +28 -28
  108. package/dist/internalCss/light-colorblind.css +28 -28
  109. package/dist/internalCss/light-high-contrast.css +28 -28
  110. package/dist/internalCss/light-tritanopia-high-contrast.css +28 -28
  111. package/dist/internalCss/light-tritanopia.css +28 -28
  112. package/dist/internalCss/light.css +28 -28
  113. package/dist/styleLint/base/motion/motion.json +96 -24
  114. package/dist/styleLint/base/size/size.json +76 -19
  115. package/dist/styleLint/base/typography/typography.json +30 -12
  116. package/dist/styleLint/functional/size/border.json +27 -12
  117. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  118. package/dist/styleLint/functional/size/radius.json +17 -5
  119. package/dist/styleLint/functional/size/size-coarse.json +3 -3
  120. package/dist/styleLint/functional/size/size-fine.json +3 -3
  121. package/dist/styleLint/functional/size/size.json +111 -66
  122. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +2757 -366
  123. package/dist/styleLint/functional/themes/dark-colorblind.json +2757 -366
  124. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +2757 -366
  125. package/dist/styleLint/functional/themes/dark-dimmed.json +2757 -366
  126. package/dist/styleLint/functional/themes/dark-high-contrast.json +2757 -366
  127. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +2757 -366
  128. package/dist/styleLint/functional/themes/dark-tritanopia.json +2757 -366
  129. package/dist/styleLint/functional/themes/dark.json +2757 -366
  130. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +2763 -372
  131. package/dist/styleLint/functional/themes/light-colorblind.json +2760 -369
  132. package/dist/styleLint/functional/themes/light-high-contrast.json +2763 -372
  133. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +2763 -372
  134. package/dist/styleLint/functional/themes/light-tritanopia.json +2760 -369
  135. package/dist/styleLint/functional/themes/light.json +2760 -369
  136. package/dist/styleLint/functional/typography/typography.json +28 -22
  137. package/package.json +9 -7
  138. package/src/tokens/base/motion/timing.json5 +12 -12
  139. package/src/tokens/base/size/size.json5 +194 -194
  140. package/src/tokens/base/typography/typography.json5 +6 -6
  141. package/src/tokens/component/avatar.json5 +72 -44
  142. package/src/tokens/component/button.json5 +1545 -1193
  143. package/src/tokens/functional/border/border.json5 +4 -1
  144. package/src/tokens/functional/color/bgColor.json5 +8 -0
  145. package/src/tokens/functional/color/display.json5 +7 -0
  146. package/src/tokens/functional/color/fgColor.json5 +8 -0
  147. package/src/tokens/functional/color/syntax.json5 +14 -0
  148. package/src/tokens/functional/shadow/shadow.json5 +1254 -163
  149. package/src/tokens/functional/size/border.json5 +8 -8
  150. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  151. package/src/tokens/functional/size/radius.json5 +4 -4
  152. package/src/tokens/functional/size/size.json5 +15 -15
  153. package/src/tokens/functional/typography/typography.json5 +8 -4
  154. package/dist/build/parsers/index.d.ts +0 -1
  155. package/dist/build/parsers/index.js +0 -1
  156. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  157. package/dist/build/parsers/w3cJsonParser.js +0 -25
  158. package/dist/removed/testing.json5 +0 -4
  159. package/guidelines/color.llm.md +0 -16
  160. package/guidelines/guidelines.llm.md +0 -34
  161. package/guidelines/motion.llm.md +0 -41
  162. package/guidelines/spacing.llm.md +0 -20
  163. package/guidelines/typography.llm.md +0 -14
  164. package/src/tokens/removed/testing.json5 +0 -4
  165. 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,422 @@
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
+ },
688
+ },
689
+ ],
690
+ },
691
+ 'light-high-contrast': {
692
+ $value: [
693
+ {
694
+ color: '{overlay.borderColor}',
695
+ alpha: 1,
696
+ offsetX: {
697
+ value: 0,
698
+ unit: 'px',
699
+ },
700
+ offsetY: {
701
+ value: 0,
702
+ unit: 'px',
703
+ },
704
+ blur: {
705
+ value: 0,
706
+ unit: 'px',
707
+ },
708
+ spread: {
709
+ value: 1,
710
+ unit: 'px',
711
+ },
712
+ },
713
+ {
714
+ color: '{base.color.neutral.12}',
715
+ alpha: 0.08,
716
+ offsetX: {
717
+ value: 0,
718
+ unit: 'px',
719
+ },
720
+ offsetY: {
721
+ value: 8,
722
+ unit: 'px',
723
+ },
724
+ blur: {
725
+ value: 16,
726
+ unit: 'px',
727
+ },
728
+ spread: {
729
+ value: -4,
730
+ unit: 'px',
731
+ },
732
+ },
733
+ {
734
+ color: '{base.color.neutral.12}',
735
+ alpha: 0.08,
736
+ offsetX: {
737
+ value: 0,
738
+ unit: 'px',
739
+ },
740
+ offsetY: {
741
+ value: 4,
742
+ unit: 'px',
743
+ },
744
+ blur: {
745
+ value: 32,
746
+ unit: 'px',
747
+ },
748
+ spread: {
749
+ value: -4,
750
+ unit: 'px',
751
+ },
752
+ },
753
+ {
754
+ color: '{base.color.neutral.12}',
755
+ alpha: 0.08,
756
+ offsetX: {
757
+ value: 0,
758
+ unit: 'px',
759
+ },
760
+ offsetY: {
761
+ value: 24,
762
+ unit: 'px',
763
+ },
764
+ blur: {
765
+ value: 48,
766
+ unit: 'px',
767
+ },
768
+ spread: {
769
+ value: -12,
770
+ unit: 'px',
771
+ },
772
+ },
773
+ {
774
+ color: '{base.color.neutral.12}',
775
+ alpha: 0.08,
776
+ offsetX: {
777
+ value: 0,
778
+ unit: 'px',
779
+ },
780
+ offsetY: {
781
+ value: 48,
782
+ unit: 'px',
783
+ },
784
+ blur: {
785
+ value: 96,
786
+ unit: 'px',
787
+ },
788
+ spread: {
789
+ value: -24,
790
+ unit: 'px',
791
+ },
792
+ },
793
+ ],
794
+ },
795
+ 'light-protanopia-deuteranopia-high-contrast': {
796
+ $value: [
797
+ {
798
+ color: '{overlay.borderColor}',
799
+ alpha: 1,
800
+ offsetX: {
801
+ value: 0,
802
+ unit: 'px',
803
+ },
804
+ offsetY: {
805
+ value: 0,
806
+ unit: 'px',
807
+ },
808
+ blur: {
809
+ value: 0,
810
+ unit: 'px',
811
+ },
812
+ spread: {
813
+ value: 1,
814
+ unit: 'px',
815
+ },
816
+ },
817
+ {
818
+ color: '{base.color.neutral.12}',
819
+ alpha: 0.08,
820
+ offsetX: {
821
+ value: 0,
822
+ unit: 'px',
823
+ },
824
+ offsetY: {
825
+ value: 8,
826
+ unit: 'px',
827
+ },
828
+ blur: {
829
+ value: 16,
830
+ unit: 'px',
831
+ },
832
+ spread: {
833
+ value: -4,
834
+ unit: 'px',
835
+ },
836
+ },
837
+ {
838
+ color: '{base.color.neutral.12}',
839
+ alpha: 0.08,
840
+ offsetX: {
841
+ value: 0,
842
+ unit: 'px',
843
+ },
844
+ offsetY: {
845
+ value: 4,
846
+ unit: 'px',
847
+ },
848
+ blur: {
849
+ value: 32,
850
+ unit: 'px',
851
+ },
852
+ spread: {
853
+ value: -4,
854
+ unit: 'px',
855
+ },
856
+ },
857
+ {
858
+ color: '{base.color.neutral.12}',
859
+ alpha: 0.08,
860
+ offsetX: {
861
+ value: 0,
862
+ unit: 'px',
863
+ },
864
+ offsetY: {
865
+ value: 24,
866
+ unit: 'px',
867
+ },
868
+ blur: {
869
+ value: 48,
870
+ unit: 'px',
871
+ },
872
+ spread: {
873
+ value: -12,
874
+ unit: 'px',
875
+ },
876
+ },
877
+ {
878
+ color: '{base.color.neutral.12}',
879
+ alpha: 0.08,
880
+ offsetX: {
881
+ value: 0,
882
+ unit: 'px',
883
+ },
884
+ offsetY: {
885
+ value: 48,
886
+ unit: 'px',
887
+ },
888
+ blur: {
889
+ value: 96,
890
+ unit: 'px',
891
+ },
892
+ spread: {
893
+ value: -24,
894
+ unit: 'px',
895
+ },
896
+ },
897
+ ],
898
+ },
899
+ 'light-tritanopia-high-contrast': {
900
+ $value: [
901
+ {
902
+ color: '{overlay.borderColor}',
903
+ alpha: 1,
904
+ offsetX: {
905
+ value: 0,
906
+ unit: 'px',
907
+ },
908
+ offsetY: {
909
+ value: 0,
910
+ unit: 'px',
911
+ },
912
+ blur: {
913
+ value: 0,
914
+ unit: 'px',
915
+ },
916
+ spread: {
917
+ value: 1,
918
+ unit: 'px',
919
+ },
920
+ },
921
+ {
922
+ color: '{base.color.neutral.12}',
923
+ alpha: 0.08,
924
+ offsetX: {
925
+ value: 0,
926
+ unit: 'px',
927
+ },
928
+ offsetY: {
929
+ value: 8,
930
+ unit: 'px',
931
+ },
932
+ blur: {
933
+ value: 16,
934
+ unit: 'px',
935
+ },
936
+ spread: {
937
+ value: -4,
938
+ unit: 'px',
939
+ },
940
+ },
941
+ {
942
+ color: '{base.color.neutral.12}',
943
+ alpha: 0.08,
944
+ offsetX: {
945
+ value: 0,
946
+ unit: 'px',
947
+ },
948
+ offsetY: {
949
+ value: 4,
950
+ unit: 'px',
951
+ },
952
+ blur: {
953
+ value: 32,
954
+ unit: 'px',
955
+ },
956
+ spread: {
957
+ value: -4,
958
+ unit: 'px',
959
+ },
960
+ },
961
+ {
962
+ color: '{base.color.neutral.12}',
963
+ alpha: 0.08,
964
+ offsetX: {
965
+ value: 0,
966
+ unit: 'px',
967
+ },
968
+ offsetY: {
969
+ value: 24,
970
+ unit: 'px',
971
+ },
972
+ blur: {
973
+ value: 48,
974
+ unit: 'px',
975
+ },
976
+ spread: {
977
+ value: -12,
978
+ unit: 'px',
979
+ },
980
+ },
981
+ {
982
+ color: '{base.color.neutral.12}',
983
+ alpha: 0.08,
984
+ offsetX: {
985
+ value: 0,
986
+ unit: 'px',
987
+ },
988
+ offsetY: {
989
+ value: 48,
990
+ unit: 'px',
991
+ },
992
+ blur: {
993
+ value: 96,
994
+ unit: 'px',
995
+ },
996
+ spread: {
997
+ value: -24,
998
+ unit: 'px',
999
+ },
331
1000
  },
332
1001
  ],
333
1002
  },
334
1003
  },
1004
+ 'org.primer.llm': {
1005
+ usage: ['popover', 'action-menu', 'select-panel', 'autocomplete'],
1006
+ 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.',
1007
+ },
335
1008
  },
336
1009
  },
337
1010
  large: {
@@ -339,18 +1012,42 @@
339
1012
  {
340
1013
  color: '{overlay.borderColor}',
341
1014
  alpha: 0,
342
- offsetX: '0px',
343
- offsetY: '0px',
344
- blur: '0px',
345
- spread: '1px',
1015
+ offsetX: {
1016
+ value: 0,
1017
+ unit: 'px',
1018
+ },
1019
+ offsetY: {
1020
+ value: 0,
1021
+ unit: 'px',
1022
+ },
1023
+ blur: {
1024
+ value: 0,
1025
+ unit: 'px',
1026
+ },
1027
+ spread: {
1028
+ value: 1,
1029
+ unit: 'px',
1030
+ },
346
1031
  },
347
1032
  {
348
1033
  color: '{base.color.neutral.12}',
349
1034
  alpha: 0.24,
350
- offsetX: '0px',
351
- offsetY: '40px',
352
- blur: '80px',
353
- spread: '0px',
1035
+ offsetX: {
1036
+ value: 0,
1037
+ unit: 'px',
1038
+ },
1039
+ offsetY: {
1040
+ value: 40,
1041
+ unit: 'px',
1042
+ },
1043
+ blur: {
1044
+ value: 80,
1045
+ unit: 'px',
1046
+ },
1047
+ spread: {
1048
+ value: 0,
1049
+ unit: 'px',
1050
+ },
354
1051
  },
355
1052
  ],
356
1053
  $type: 'shadow',
@@ -366,18 +1063,174 @@
366
1063
  {
367
1064
  color: '{overlay.borderColor}',
368
1065
  alpha: 1,
369
- offsetX: '0px',
370
- offsetY: '0px',
371
- blur: '0px',
372
- spread: '1px',
1066
+ offsetX: {
1067
+ value: 0,
1068
+ unit: 'px',
1069
+ },
1070
+ offsetY: {
1071
+ value: 0,
1072
+ unit: 'px',
1073
+ },
1074
+ blur: {
1075
+ value: 0,
1076
+ unit: 'px',
1077
+ },
1078
+ spread: {
1079
+ value: 1,
1080
+ unit: 'px',
1081
+ },
373
1082
  },
374
1083
  {
375
1084
  color: '{base.color.neutral.0}',
376
1085
  alpha: 1,
377
- offsetX: '0px',
378
- offsetY: '24px',
379
- blur: '48px',
380
- spread: '0px',
1086
+ offsetX: {
1087
+ value: 0,
1088
+ unit: 'px',
1089
+ },
1090
+ offsetY: {
1091
+ value: 24,
1092
+ unit: 'px',
1093
+ },
1094
+ blur: {
1095
+ value: 48,
1096
+ unit: 'px',
1097
+ },
1098
+ spread: {
1099
+ value: 0,
1100
+ unit: 'px',
1101
+ },
1102
+ },
1103
+ ],
1104
+ },
1105
+ 'light-high-contrast': {
1106
+ $value: [
1107
+ {
1108
+ color: '{overlay.borderColor}',
1109
+ alpha: 1,
1110
+ offsetX: {
1111
+ value: 0,
1112
+ unit: 'px',
1113
+ },
1114
+ offsetY: {
1115
+ value: 0,
1116
+ unit: 'px',
1117
+ },
1118
+ blur: {
1119
+ value: 0,
1120
+ unit: 'px',
1121
+ },
1122
+ spread: {
1123
+ value: 1,
1124
+ unit: 'px',
1125
+ },
1126
+ },
1127
+ {
1128
+ color: '{base.color.neutral.12}',
1129
+ alpha: 0.24,
1130
+ offsetX: {
1131
+ value: 0,
1132
+ unit: 'px',
1133
+ },
1134
+ offsetY: {
1135
+ value: 40,
1136
+ unit: 'px',
1137
+ },
1138
+ blur: {
1139
+ value: 80,
1140
+ unit: 'px',
1141
+ },
1142
+ spread: {
1143
+ value: 0,
1144
+ unit: 'px',
1145
+ },
1146
+ },
1147
+ ],
1148
+ },
1149
+ 'light-protanopia-deuteranopia-high-contrast': {
1150
+ $value: [
1151
+ {
1152
+ color: '{overlay.borderColor}',
1153
+ alpha: 1,
1154
+ offsetX: {
1155
+ value: 0,
1156
+ unit: 'px',
1157
+ },
1158
+ offsetY: {
1159
+ value: 0,
1160
+ unit: 'px',
1161
+ },
1162
+ blur: {
1163
+ value: 0,
1164
+ unit: 'px',
1165
+ },
1166
+ spread: {
1167
+ value: 1,
1168
+ unit: 'px',
1169
+ },
1170
+ },
1171
+ {
1172
+ color: '{base.color.neutral.12}',
1173
+ alpha: 0.24,
1174
+ offsetX: {
1175
+ value: 0,
1176
+ unit: 'px',
1177
+ },
1178
+ offsetY: {
1179
+ value: 40,
1180
+ unit: 'px',
1181
+ },
1182
+ blur: {
1183
+ value: 80,
1184
+ unit: 'px',
1185
+ },
1186
+ spread: {
1187
+ value: 0,
1188
+ unit: 'px',
1189
+ },
1190
+ },
1191
+ ],
1192
+ },
1193
+ 'light-tritanopia-high-contrast': {
1194
+ $value: [
1195
+ {
1196
+ color: '{overlay.borderColor}',
1197
+ alpha: 1,
1198
+ offsetX: {
1199
+ value: 0,
1200
+ unit: 'px',
1201
+ },
1202
+ offsetY: {
1203
+ value: 0,
1204
+ unit: 'px',
1205
+ },
1206
+ blur: {
1207
+ value: 0,
1208
+ unit: 'px',
1209
+ },
1210
+ spread: {
1211
+ value: 1,
1212
+ unit: 'px',
1213
+ },
1214
+ },
1215
+ {
1216
+ color: '{base.color.neutral.12}',
1217
+ alpha: 0.24,
1218
+ offsetX: {
1219
+ value: 0,
1220
+ unit: 'px',
1221
+ },
1222
+ offsetY: {
1223
+ value: 40,
1224
+ unit: 'px',
1225
+ },
1226
+ blur: {
1227
+ value: 80,
1228
+ unit: 'px',
1229
+ },
1230
+ spread: {
1231
+ value: 0,
1232
+ unit: 'px',
1233
+ },
381
1234
  },
382
1235
  ],
383
1236
  },
@@ -393,21 +1246,46 @@
393
1246
  {
394
1247
  color: '{overlay.borderColor}',
395
1248
  alpha: 0,
396
- offsetX: '0px',
397
- offsetY: '0px',
398
- blur: '0px',
399
- spread: '1px',
1249
+ offsetX: {
1250
+ value: 0,
1251
+ unit: 'px',
1252
+ },
1253
+ offsetY: {
1254
+ value: 0,
1255
+ unit: 'px',
1256
+ },
1257
+ blur: {
1258
+ value: 0,
1259
+ unit: 'px',
1260
+ },
1261
+ spread: {
1262
+ value: 1,
1263
+ unit: 'px',
1264
+ },
400
1265
  },
401
1266
  {
402
1267
  color: '{base.color.neutral.12}',
403
1268
  alpha: 0.32,
404
- offsetX: '0px',
405
- offsetY: '56px',
406
- blur: '112px',
407
- spread: '0px',
1269
+ offsetX: {
1270
+ value: 0,
1271
+ unit: 'px',
1272
+ },
1273
+ offsetY: {
1274
+ value: 56,
1275
+ unit: 'px',
1276
+ },
1277
+ blur: {
1278
+ value: 112,
1279
+ unit: 'px',
1280
+ },
1281
+ spread: {
1282
+ value: 0,
1283
+ unit: 'px',
1284
+ },
408
1285
  },
409
1286
  ],
410
1287
  $type: 'shadow',
1288
+ $description: 'Extra large floating shadow for full-screen overlays and sheets',
411
1289
  $extensions: {
412
1290
  'org.primer.figma': {
413
1291
  collection: 'mode',
@@ -419,22 +1297,182 @@
419
1297
  {
420
1298
  color: '{overlay.borderColor}',
421
1299
  alpha: 1,
422
- offsetX: '0px',
423
- offsetY: '0px',
424
- blur: '0px',
425
- spread: '1px',
1300
+ offsetX: {
1301
+ value: 0,
1302
+ unit: 'px',
1303
+ },
1304
+ offsetY: {
1305
+ value: 0,
1306
+ unit: 'px',
1307
+ },
1308
+ blur: {
1309
+ value: 0,
1310
+ unit: 'px',
1311
+ },
1312
+ spread: {
1313
+ value: 1,
1314
+ unit: 'px',
1315
+ },
426
1316
  },
427
1317
  {
428
1318
  color: '{base.color.neutral.0}',
429
1319
  alpha: 1,
430
- offsetX: '0px',
431
- offsetY: '32px',
432
- blur: '64px',
433
- spread: '0px',
1320
+ offsetX: {
1321
+ value: 0,
1322
+ unit: 'px',
1323
+ },
1324
+ offsetY: {
1325
+ value: 32,
1326
+ unit: 'px',
1327
+ },
1328
+ blur: {
1329
+ value: 64,
1330
+ unit: 'px',
1331
+ },
1332
+ spread: {
1333
+ value: 0,
1334
+ unit: 'px',
1335
+ },
1336
+ },
1337
+ ],
1338
+ },
1339
+ 'light-high-contrast': {
1340
+ $value: [
1341
+ {
1342
+ color: '{overlay.borderColor}',
1343
+ alpha: 1,
1344
+ offsetX: {
1345
+ value: 0,
1346
+ unit: 'px',
1347
+ },
1348
+ offsetY: {
1349
+ value: 0,
1350
+ unit: 'px',
1351
+ },
1352
+ blur: {
1353
+ value: 0,
1354
+ unit: 'px',
1355
+ },
1356
+ spread: {
1357
+ value: 1,
1358
+ unit: 'px',
1359
+ },
1360
+ },
1361
+ {
1362
+ color: '{base.color.neutral.12}',
1363
+ alpha: 0.32,
1364
+ offsetX: {
1365
+ value: 0,
1366
+ unit: 'px',
1367
+ },
1368
+ offsetY: {
1369
+ value: 56,
1370
+ unit: 'px',
1371
+ },
1372
+ blur: {
1373
+ value: 112,
1374
+ unit: 'px',
1375
+ },
1376
+ spread: {
1377
+ value: 0,
1378
+ unit: 'px',
1379
+ },
1380
+ },
1381
+ ],
1382
+ },
1383
+ 'light-protanopia-deuteranopia-high-contrast': {
1384
+ $value: [
1385
+ {
1386
+ color: '{overlay.borderColor}',
1387
+ alpha: 1,
1388
+ offsetX: {
1389
+ value: 0,
1390
+ unit: 'px',
1391
+ },
1392
+ offsetY: {
1393
+ value: 0,
1394
+ unit: 'px',
1395
+ },
1396
+ blur: {
1397
+ value: 0,
1398
+ unit: 'px',
1399
+ },
1400
+ spread: {
1401
+ value: 1,
1402
+ unit: 'px',
1403
+ },
1404
+ },
1405
+ {
1406
+ color: '{base.color.neutral.12}',
1407
+ alpha: 0.32,
1408
+ offsetX: {
1409
+ value: 0,
1410
+ unit: 'px',
1411
+ },
1412
+ offsetY: {
1413
+ value: 56,
1414
+ unit: 'px',
1415
+ },
1416
+ blur: {
1417
+ value: 112,
1418
+ unit: 'px',
1419
+ },
1420
+ spread: {
1421
+ value: 0,
1422
+ unit: 'px',
1423
+ },
1424
+ },
1425
+ ],
1426
+ },
1427
+ 'light-tritanopia-high-contrast': {
1428
+ $value: [
1429
+ {
1430
+ color: '{overlay.borderColor}',
1431
+ alpha: 1,
1432
+ offsetX: {
1433
+ value: 0,
1434
+ unit: 'px',
1435
+ },
1436
+ offsetY: {
1437
+ value: 0,
1438
+ unit: 'px',
1439
+ },
1440
+ blur: {
1441
+ value: 0,
1442
+ unit: 'px',
1443
+ },
1444
+ spread: {
1445
+ value: 1,
1446
+ unit: 'px',
1447
+ },
1448
+ },
1449
+ {
1450
+ color: '{base.color.neutral.12}',
1451
+ alpha: 0.32,
1452
+ offsetX: {
1453
+ value: 0,
1454
+ unit: 'px',
1455
+ },
1456
+ offsetY: {
1457
+ value: 56,
1458
+ unit: 'px',
1459
+ },
1460
+ blur: {
1461
+ value: 112,
1462
+ unit: 'px',
1463
+ },
1464
+ spread: {
1465
+ value: 0,
1466
+ unit: 'px',
1467
+ },
434
1468
  },
435
1469
  ],
436
1470
  },
437
1471
  },
1472
+ 'org.primer.llm': {
1473
+ usage: ['full-screen-overlay', 'side-sheet', 'drawer', 'large-modal'],
1474
+ 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.',
1475
+ },
438
1476
  },
439
1477
  },
440
1478
  legacy: {
@@ -442,21 +1480,46 @@
442
1480
  {
443
1481
  color: '{base.color.neutral.12}',
444
1482
  alpha: 0.04,
445
- offsetX: '0px',
446
- offsetY: '6px',
447
- blur: '12px',
448
- spread: '-3px',
1483
+ offsetX: {
1484
+ value: 0,
1485
+ unit: 'px',
1486
+ },
1487
+ offsetY: {
1488
+ value: 6,
1489
+ unit: 'px',
1490
+ },
1491
+ blur: {
1492
+ value: 12,
1493
+ unit: 'px',
1494
+ },
1495
+ spread: {
1496
+ value: -3,
1497
+ unit: 'px',
1498
+ },
449
1499
  },
450
1500
  {
451
1501
  color: '{base.color.neutral.12}',
452
1502
  alpha: 0.12,
453
- offsetX: '0px',
454
- offsetY: '6px',
455
- blur: '18px',
456
- spread: '0px',
1503
+ offsetX: {
1504
+ value: 0,
1505
+ unit: 'px',
1506
+ },
1507
+ offsetY: {
1508
+ value: 6,
1509
+ unit: 'px',
1510
+ },
1511
+ blur: {
1512
+ value: 18,
1513
+ unit: 'px',
1514
+ },
1515
+ spread: {
1516
+ value: 0,
1517
+ unit: 'px',
1518
+ },
457
1519
  },
458
1520
  ],
459
1521
  $type: 'shadow',
1522
+ $description: 'Legacy floating shadow for backward compatibility',
460
1523
  $extensions: {
461
1524
  'org.primer.figma': {},
462
1525
  'org.primer.overrides': {
@@ -465,22 +1528,50 @@
465
1528
  {
466
1529
  color: '{base.color.neutral.0}',
467
1530
  alpha: 0.4,
468
- offsetX: '0px',
469
- offsetY: '6px',
470
- blur: '12px',
471
- spread: '-3px',
1531
+ offsetX: {
1532
+ value: 0,
1533
+ unit: 'px',
1534
+ },
1535
+ offsetY: {
1536
+ value: 6,
1537
+ unit: 'px',
1538
+ },
1539
+ blur: {
1540
+ value: 12,
1541
+ unit: 'px',
1542
+ },
1543
+ spread: {
1544
+ value: -3,
1545
+ unit: 'px',
1546
+ },
472
1547
  },
473
1548
  {
474
1549
  color: '{base.color.neutral.0}',
475
1550
  alpha: 0.4,
476
- offsetX: '0px',
477
- offsetY: '6px',
478
- blur: '18px',
479
- spread: '0px',
1551
+ offsetX: {
1552
+ value: 0,
1553
+ unit: 'px',
1554
+ },
1555
+ offsetY: {
1556
+ value: 6,
1557
+ unit: 'px',
1558
+ },
1559
+ blur: {
1560
+ value: 18,
1561
+ unit: 'px',
1562
+ },
1563
+ spread: {
1564
+ value: 0,
1565
+ unit: 'px',
1566
+ },
480
1567
  },
481
1568
  ],
482
1569
  },
483
1570
  },
1571
+ 'org.primer.llm': {
1572
+ usage: ['legacy-component', 'backward-compatibility'],
1573
+ rules: 'DEPRECATED: Use shadow-floating-small instead. Only use for maintaining backward compatibility with existing implementations.',
1574
+ },
484
1575
  },
485
1576
  },
486
1577
  },