@primer/primitives 11.4.1-rc.eb8ee149 → 11.5.0-rc.14eaeb12

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 (190) hide show
  1. package/DESIGN_TOKENS_GUIDE.md +185 -0
  2. package/DESIGN_TOKENS_SPEC.md +136 -8
  3. package/dist/build/formats/jsonFigma.js +8 -1
  4. package/dist/build/formats/markdownLlmGuidelines.js +349 -0
  5. package/dist/build/schemas/borderToken.d.ts +61 -5
  6. package/dist/build/schemas/borderToken.js +2 -1
  7. package/dist/build/schemas/colorToken.d.ts +639 -30
  8. package/dist/build/schemas/colorToken.js +3 -2
  9. package/dist/build/schemas/colorW3cValue.d.ts +28 -0
  10. package/dist/build/schemas/colorW3cValue.js +42 -0
  11. package/dist/build/schemas/cubicBezierToken.d.ts +1 -1
  12. package/dist/build/schemas/dimensionToken.d.ts +9 -2
  13. package/dist/build/schemas/dimensionValue.d.ts +12 -1
  14. package/dist/build/schemas/dimensionValue.js +10 -13
  15. package/dist/build/schemas/durationToken.d.ts +8 -2
  16. package/dist/build/schemas/durationValue.d.ts +11 -1
  17. package/dist/build/schemas/durationValue.js +13 -3
  18. package/dist/build/schemas/fontFamilyToken.d.ts +1 -1
  19. package/dist/build/schemas/fontWeightToken.d.ts +1 -1
  20. package/dist/build/schemas/gradientToken.d.ts +23 -2
  21. package/dist/build/schemas/gradientToken.js +2 -1
  22. package/dist/build/schemas/numberToken.d.ts +1 -1
  23. package/dist/build/schemas/shadowToken.d.ts +1751 -127
  24. package/dist/build/schemas/shadowToken.js +8 -2
  25. package/dist/build/schemas/stringToken.d.ts +1 -1
  26. package/dist/build/schemas/stringToken.js +1 -1
  27. package/dist/build/schemas/tokenType.d.ts +1 -1
  28. package/dist/build/schemas/transitionToken.d.ts +15 -3
  29. package/dist/build/schemas/typographyToken.d.ts +19 -5
  30. package/dist/build/schemas/typographyToken.js +1 -1
  31. package/dist/build/schemas/validTokenType.d.ts +1 -1
  32. package/dist/build/schemas/validTokenType.js +1 -1
  33. package/dist/build/schemas/viewportRangeToken.d.ts +1 -1
  34. package/dist/build/transformers/borderToCss.js +19 -1
  35. package/dist/build/transformers/colorAlphaToCss.js +6 -3
  36. package/dist/build/transformers/colorToHex.js +5 -2
  37. package/dist/build/transformers/colorToRgbAlpha.js +5 -2
  38. package/dist/build/transformers/colorToRgbaFloat.js +5 -0
  39. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  40. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  41. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  42. package/dist/build/transformers/dimensionToRem.js +21 -22
  43. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  44. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  45. package/dist/build/transformers/durationToCss.d.ts +2 -1
  46. package/dist/build/transformers/durationToCss.js +19 -12
  47. package/dist/build/transformers/gradientToCss.js +2 -1
  48. package/dist/build/transformers/shadowToCss.js +15 -1
  49. package/dist/build/transformers/utilities/normalizeColorValue.d.ts +23 -0
  50. package/dist/build/transformers/utilities/normalizeColorValue.js +74 -0
  51. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  52. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  53. package/dist/build/types/borderTokenValue.d.ts +5 -2
  54. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  55. package/dist/build/types/shadowTokenValue.d.ts +8 -5
  56. package/dist/css/base/motion/motion.css +1 -1
  57. package/dist/css/functional/size/radius.css +1 -1
  58. package/dist/css/functional/size/size-coarse.css +1 -0
  59. package/dist/css/functional/size/size-fine.css +1 -0
  60. package/dist/css/functional/size/size.css +5 -0
  61. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +42 -30
  62. package/dist/css/functional/themes/dark-colorblind.css +42 -30
  63. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +42 -30
  64. package/dist/css/functional/themes/dark-dimmed.css +42 -30
  65. package/dist/css/functional/themes/dark-high-contrast.css +42 -30
  66. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +42 -30
  67. package/dist/css/functional/themes/dark-tritanopia.css +42 -30
  68. package/dist/css/functional/themes/dark.css +42 -30
  69. package/dist/css/functional/themes/light-colorblind-high-contrast.css +42 -30
  70. package/dist/css/functional/themes/light-colorblind.css +42 -30
  71. package/dist/css/functional/themes/light-high-contrast.css +42 -30
  72. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +42 -30
  73. package/dist/css/functional/themes/light-tritanopia.css +42 -30
  74. package/dist/css/functional/themes/light.css +42 -30
  75. package/dist/docs/base/motion/motion.json +96 -24
  76. package/dist/docs/base/size/size.json +76 -19
  77. package/dist/docs/base/typography/typography.json +24 -6
  78. package/dist/docs/functional/size/border.json +26 -11
  79. package/dist/docs/functional/size/breakpoints.json +24 -6
  80. package/dist/docs/functional/size/radius.json +18 -6
  81. package/dist/docs/functional/size/size-coarse.json +55 -2
  82. package/dist/docs/functional/size/size-fine.json +55 -2
  83. package/dist/docs/functional/size/size.json +195 -15
  84. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +3921 -714
  85. package/dist/docs/functional/themes/dark-colorblind.json +3911 -712
  86. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +3774 -547
  87. package/dist/docs/functional/themes/dark-dimmed.json +3801 -554
  88. package/dist/docs/functional/themes/dark-high-contrast.json +3926 -715
  89. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +3936 -717
  90. package/dist/docs/functional/themes/dark-tritanopia.json +3769 -546
  91. package/dist/docs/functional/themes/dark.json +3920 -713
  92. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +3780 -553
  93. package/dist/docs/functional/themes/light-colorblind.json +3767 -548
  94. package/dist/docs/functional/themes/light-high-contrast.json +3785 -554
  95. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +3785 -554
  96. package/dist/docs/functional/themes/light-tritanopia.json +3777 -550
  97. package/dist/docs/functional/themes/light.json +3782 -551
  98. package/dist/docs/functional/typography/typography.json +8 -2
  99. package/dist/fallbacks/base/motion/motion.json +48 -12
  100. package/dist/fallbacks/functional/size/size-coarse.json +2 -1
  101. package/dist/fallbacks/functional/size/size-fine.json +2 -1
  102. package/dist/fallbacks/functional/size/size.json +5 -0
  103. package/dist/figma/dimension/dimension.json +56 -1
  104. package/dist/figma/themes/dark-colorblind.json +49 -1
  105. package/dist/figma/themes/dark-dimmed.json +51 -3
  106. package/dist/figma/themes/dark-high-contrast.json +49 -1
  107. package/dist/figma/themes/dark-tritanopia.json +49 -1
  108. package/dist/figma/themes/dark.json +49 -1
  109. package/dist/figma/themes/light-colorblind.json +53 -5
  110. package/dist/figma/themes/light-high-contrast.json +53 -5
  111. package/dist/figma/themes/light-tritanopia.json +53 -5
  112. package/dist/figma/themes/light.json +53 -5
  113. package/dist/internalCss/dark-colorblind-high-contrast.css +42 -30
  114. package/dist/internalCss/dark-colorblind.css +42 -30
  115. package/dist/internalCss/dark-dimmed-high-contrast.css +42 -30
  116. package/dist/internalCss/dark-dimmed.css +42 -30
  117. package/dist/internalCss/dark-high-contrast.css +42 -30
  118. package/dist/internalCss/dark-tritanopia-high-contrast.css +42 -30
  119. package/dist/internalCss/dark-tritanopia.css +42 -30
  120. package/dist/internalCss/dark.css +42 -30
  121. package/dist/internalCss/light-colorblind-high-contrast.css +42 -30
  122. package/dist/internalCss/light-colorblind.css +42 -30
  123. package/dist/internalCss/light-high-contrast.css +42 -30
  124. package/dist/internalCss/light-tritanopia-high-contrast.css +42 -30
  125. package/dist/internalCss/light-tritanopia.css +42 -30
  126. package/dist/internalCss/light.css +42 -30
  127. package/dist/styleLint/base/motion/motion.json +96 -24
  128. package/dist/styleLint/base/size/size.json +76 -19
  129. package/dist/styleLint/base/typography/typography.json +30 -12
  130. package/dist/styleLint/functional/size/border.json +27 -12
  131. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  132. package/dist/styleLint/functional/size/radius.json +19 -7
  133. package/dist/styleLint/functional/size/size-coarse.json +60 -7
  134. package/dist/styleLint/functional/size/size-fine.json +60 -7
  135. package/dist/styleLint/functional/size/size.json +246 -66
  136. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +4060 -733
  137. package/dist/styleLint/functional/themes/dark-colorblind.json +4050 -731
  138. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +3914 -567
  139. package/dist/styleLint/functional/themes/dark-dimmed.json +3941 -574
  140. package/dist/styleLint/functional/themes/dark-high-contrast.json +4065 -734
  141. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +4075 -736
  142. package/dist/styleLint/functional/themes/dark-tritanopia.json +4079 -736
  143. package/dist/styleLint/functional/themes/dark.json +4059 -732
  144. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +4091 -744
  145. package/dist/styleLint/functional/themes/light-colorblind.json +4078 -739
  146. package/dist/styleLint/functional/themes/light-high-contrast.json +4096 -745
  147. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +4096 -745
  148. package/dist/styleLint/functional/themes/light-tritanopia.json +4088 -741
  149. package/dist/styleLint/functional/themes/light.json +4093 -742
  150. package/dist/styleLint/functional/typography/typography.json +28 -22
  151. package/package.json +5 -4
  152. package/src/tokens/base/color/dark/dark.dimmed.json5 +405 -81
  153. package/src/tokens/base/color/dark/dark.high-contrast.json5 +405 -81
  154. package/src/tokens/base/color/dark/dark.json5 +475 -95
  155. package/src/tokens/base/color/dark/display-dark.json5 +960 -192
  156. package/src/tokens/base/color/light/display-light.json5 +960 -192
  157. package/src/tokens/base/color/light/light.high-contrast.json5 +405 -81
  158. package/src/tokens/base/color/light/light.json5 +475 -95
  159. package/src/tokens/base/motion/timing.json5 +12 -12
  160. package/src/tokens/base/size/size.json5 +194 -194
  161. package/src/tokens/base/typography/typography.json5 +6 -6
  162. package/src/tokens/component/avatar.json5 +72 -44
  163. package/src/tokens/component/button.json5 +1846 -1191
  164. package/src/tokens/component/reactionButton.json5 +20 -4
  165. package/src/tokens/functional/border/border.json5 +33 -2
  166. package/src/tokens/functional/color/bgColor.json5 +18 -2
  167. package/src/tokens/functional/color/borderColor.json5 +8 -1
  168. package/src/tokens/functional/color/control.json5 +160 -32
  169. package/src/tokens/functional/color/display.json5 +7 -0
  170. package/src/tokens/functional/color/fgColor.json5 +13 -1
  171. package/src/tokens/functional/color/syntax.json5 +24 -2
  172. package/src/tokens/functional/shadow/shadow.json5 +1254 -163
  173. package/src/tokens/functional/size/border.json5 +8 -8
  174. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  175. package/src/tokens/functional/size/radius.json5 +5 -5
  176. package/src/tokens/functional/size/size-coarse.json5 +15 -0
  177. package/src/tokens/functional/size/size-fine.json5 +15 -0
  178. package/src/tokens/functional/size/size.json5 +65 -15
  179. package/src/tokens/functional/typography/typography.json5 +8 -4
  180. package/dist/build/parsers/index.d.ts +0 -1
  181. package/dist/build/parsers/index.js +0 -1
  182. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  183. package/dist/build/parsers/w3cJsonParser.js +0 -25
  184. package/dist/removed/testing.json5 +0 -4
  185. package/guidelines/color.llm.md +0 -16
  186. package/guidelines/guidelines.llm.md +0 -34
  187. package/guidelines/motion.llm.md +0 -41
  188. package/guidelines/spacing.llm.md +0 -20
  189. package/guidelines/typography.llm.md +0 -14
  190. package/src/tokens/removed/testing.json5 +0 -4
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "borderWidth-default": {
3
3
  "key": "{borderWidth.default}",
4
- "$value": ["0.00390625rem", "0.0625px"],
4
+ "$value": ["0.0625rem", "1px"],
5
5
  "$description": "Default border width for most UI elements. Alias of borderWidth.thin (1px)",
6
6
  "$type": "dimension",
7
7
  "$extensions": {
@@ -46,7 +46,10 @@
46
46
  "filePath": "src/tokens/functional/size/border.json5",
47
47
  "isSource": true,
48
48
  "original": {
49
- "$value": "2px",
49
+ "$value": {
50
+ "value": 2,
51
+ "unit": "px"
52
+ },
50
53
  "$description": "Thick 2px border for emphasis. Use for focus indicators, selected states, or to emphasize important boundaries",
51
54
  "$type": "dimension",
52
55
  "$extensions": {
@@ -79,7 +82,10 @@
79
82
  "filePath": "src/tokens/functional/size/border.json5",
80
83
  "isSource": true,
81
84
  "original": {
82
- "$value": "4px",
85
+ "$value": {
86
+ "value": 4,
87
+ "unit": "px"
88
+ },
83
89
  "$description": "Extra thick 4px border for maximum emphasis. Use sparingly for high-contrast focus indicators or critical visual separators",
84
90
  "$type": "dimension",
85
91
  "$extensions": {
@@ -108,7 +114,10 @@
108
114
  "filePath": "src/tokens/functional/size/border.json5",
109
115
  "isSource": true,
110
116
  "original": {
111
- "$value": "1px",
117
+ "$value": {
118
+ "value": 1,
119
+ "unit": "px"
120
+ },
112
121
  "$description": "Standard 1px border width. Use for most borders, dividers, and outlines throughout the interface",
113
122
  "$type": "dimension",
114
123
  "$extensions": {
@@ -127,13 +136,13 @@
127
136
  "key": "{boxShadow.thick}",
128
137
  "$value": "inset 0 0 0 0.125rem,2px",
129
138
  "$description": "Thick shadow (2px) used instead of a border for emphasis without layout shift",
130
- "$type": "string",
139
+ "$type": "custom-string",
131
140
  "filePath": "src/tokens/functional/size/border.json5",
132
141
  "isSource": true,
133
142
  "original": {
134
143
  "$value": "inset 0 0 0 {borderWidth.thick}",
135
144
  "$description": "Thick shadow (2px) used instead of a border for emphasis without layout shift",
136
- "$type": "string",
145
+ "$type": "custom-string",
137
146
  "key": "{boxShadow.thick}"
138
147
  },
139
148
  "name": "boxShadow-thick",
@@ -144,13 +153,13 @@
144
153
  "key": "{boxShadow.thicker}",
145
154
  "$value": "inset 0 0 0 0.25rem,4px",
146
155
  "$description": "Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact",
147
- "$type": "string",
156
+ "$type": "custom-string",
148
157
  "filePath": "src/tokens/functional/size/border.json5",
149
158
  "isSource": true,
150
159
  "original": {
151
160
  "$value": "inset 0 0 0 {borderWidth.thicker}",
152
161
  "$description": "Thickest shadow (4px) used for high emphasis borders without layout shift. Use sparingly for maximum visual impact",
153
- "$type": "string",
162
+ "$type": "custom-string",
154
163
  "key": "{boxShadow.thicker}"
155
164
  },
156
165
  "name": "boxShadow-thicker",
@@ -161,13 +170,13 @@
161
170
  "key": "{boxShadow.thin}",
162
171
  "$value": "inset 0 0 0 0.0625rem,1px",
163
172
  "$description": "Thin shadow used instead of a border to prevent layout shift",
164
- "$type": "string",
173
+ "$type": "custom-string",
165
174
  "filePath": "src/tokens/functional/size/border.json5",
166
175
  "isSource": true,
167
176
  "original": {
168
177
  "$value": "inset 0 0 0 {borderWidth.thin}",
169
178
  "$description": "Thin shadow used instead of a border to prevent layout shift",
170
- "$type": "string",
179
+ "$type": "custom-string",
171
180
  "key": "{boxShadow.thin}"
172
181
  },
173
182
  "name": "boxShadow-thin",
@@ -188,7 +197,10 @@
188
197
  "filePath": "src/tokens/functional/size/border.json5",
189
198
  "isSource": true,
190
199
  "original": {
191
- "$value": "-2px",
200
+ "$value": {
201
+ "value": -2,
202
+ "unit": "px"
203
+ },
192
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",
193
205
  "$type": "dimension",
194
206
  "$extensions": {
@@ -221,7 +233,10 @@
221
233
  "filePath": "src/tokens/functional/size/border.json5",
222
234
  "isSource": true,
223
235
  "original": {
224
- "$value": "2px",
236
+ "$value": {
237
+ "value": 2,
238
+ "unit": "px"
239
+ },
225
240
  "$description": "Focus outline width (2px). Standard width for keyboard focus indicators to meet WCAG 2.4.7 accessibility requirements",
226
241
  "$type": "dimension",
227
242
  "$extensions": {
@@ -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": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "borderRadius-default": {
3
3
  "key": "{borderRadius.default}",
4
- "$value": ["0.0234375rem", "0.375px"],
4
+ "$value": ["0.375rem", "6px"],
5
5
  "$description": "Default border radius for most UI elements. Alias of borderRadius.medium (6px). Use when in doubt",
6
6
  "$type": "dimension",
7
7
  "$extensions": {
@@ -55,7 +55,10 @@
55
55
  "filePath": "src/tokens/functional/size/radius.json5",
56
56
  "isSource": true,
57
57
  "original": {
58
- "$value": "9999px",
58
+ "$value": {
59
+ "value": 9999,
60
+ "unit": "px"
61
+ },
59
62
  "$type": "dimension",
60
63
  "$description": "Use this border radius for pill shaped elements",
61
64
  "$extensions": {
@@ -80,7 +83,7 @@
80
83
  "borderRadius-large": {
81
84
  "key": "{borderRadius.large}",
82
85
  "$value": ["0.75rem", "12px"],
83
- "$description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. Always use this for buttons.",
86
+ "$description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired.",
84
87
  "$type": "dimension",
85
88
  "$extensions": {
86
89
  "org.primer.figma": {
@@ -98,8 +101,11 @@
98
101
  "filePath": "src/tokens/functional/size/radius.json5",
99
102
  "isSource": true,
100
103
  "original": {
101
- "$value": "12px",
102
- "$description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. Always use this for buttons.",
104
+ "$value": {
105
+ "value": 12,
106
+ "unit": "px"
107
+ },
108
+ "$description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired.",
103
109
  "$type": "dimension",
104
110
  "$extensions": {
105
111
  "org.primer.figma": {
@@ -141,7 +147,10 @@
141
147
  "filePath": "src/tokens/functional/size/radius.json5",
142
148
  "isSource": true,
143
149
  "original": {
144
- "$value": "6px",
150
+ "$value": {
151
+ "value": 6,
152
+ "unit": "px"
153
+ },
145
154
  "$description": "Medium border radius (6px). The default choice for most buttons, cards, and containers",
146
155
  "$type": "dimension",
147
156
  "$extensions": {
@@ -184,7 +193,10 @@
184
193
  "filePath": "src/tokens/functional/size/radius.json5",
185
194
  "isSource": true,
186
195
  "original": {
187
- "$value": "3px",
196
+ "$value": {
197
+ "value": 3,
198
+ "unit": "px"
199
+ },
188
200
  "$description": "Small border radius (3px). Use for small variants of components or small UI elements like badges, tags, or anything below 16px in height",
189
201
  "$type": "dimension",
190
202
  "$extensions": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "control-minTarget-auto": {
3
3
  "key": "{control.minTarget.auto}",
4
- "$value": ["0.171875rem", "2.75px"],
4
+ "$value": ["2.75rem", "44px"],
5
5
  "$type": "dimension",
6
6
  "$description": "Minimum touch target size for coarse pointer devices (touch screens)",
7
7
  "$extensions": {
@@ -28,12 +28,52 @@
28
28
  "attributes": {},
29
29
  "path": ["control", "minTarget", "auto"]
30
30
  },
31
+ "controlStack-large-gap-auto": {
32
+ "key": "{controlStack.large.gap.auto}",
33
+ "$value": ["0.75rem", "12px"],
34
+ "$type": "dimension",
35
+ "$extensions": {
36
+ "org.primer.figma": {
37
+ "collection": "pattern/size",
38
+ "scopes": ["gap"]
39
+ },
40
+ "org.primer.llm": {
41
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
42
+ "rules": "Use for spacing between interactive controls on touch devices in large layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
43
+ }
44
+ },
45
+ "filePath": "src/tokens/functional/size/size-coarse.json5",
46
+ "isSource": true,
47
+ "$description": "Gap between stacked controls in large density layouts for touch devices",
48
+ "original": {
49
+ "$value": "{base.size.12}",
50
+ "$type": "dimension",
51
+ "$extensions": {
52
+ "org.primer.figma": {
53
+ "collection": "pattern/size",
54
+ "scopes": ["gap"]
55
+ },
56
+ "org.primer.llm": {
57
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
58
+ "rules": "Use for spacing between interactive controls on touch devices in large layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
59
+ }
60
+ },
61
+ "$description": "Gap between stacked controls in large density layouts for touch devices",
62
+ "key": "{controlStack.large.gap.auto}"
63
+ },
64
+ "name": "controlStack-large-gap-auto",
65
+ "attributes": {},
66
+ "path": ["controlStack", "large", "gap", "auto"]
67
+ },
31
68
  "controlStack-medium-gap-auto": {
32
69
  "key": "{controlStack.medium.gap.auto}",
33
- "$value": ["0.046875rem", "0.75px"],
70
+ "$value": ["0.75rem", "12px"],
34
71
  "$type": "dimension",
35
- "$description": "Gap between stacked controls in medium density layouts for touch devices",
36
72
  "$extensions": {
73
+ "org.primer.figma": {
74
+ "collection": "pattern/size",
75
+ "scopes": ["gap"]
76
+ },
37
77
  "org.primer.llm": {
38
78
  "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
39
79
  "rules": "Use for spacing between interactive controls on touch devices in standard layouts. Do NOT use for desktop/mouse interfaces."
@@ -41,16 +81,21 @@
41
81
  },
42
82
  "filePath": "src/tokens/functional/size/size-coarse.json5",
43
83
  "isSource": true,
84
+ "$description": "Gap between stacked controls in medium density layouts for touch devices",
44
85
  "original": {
45
86
  "$value": "{base.size.12}",
46
87
  "$type": "dimension",
47
- "$description": "Gap between stacked controls in medium density layouts for touch devices",
48
88
  "$extensions": {
89
+ "org.primer.figma": {
90
+ "collection": "pattern/size",
91
+ "scopes": ["gap"]
92
+ },
49
93
  "org.primer.llm": {
50
94
  "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
51
95
  "rules": "Use for spacing between interactive controls on touch devices in standard layouts. Do NOT use for desktop/mouse interfaces."
52
96
  }
53
97
  },
98
+ "$description": "Gap between stacked controls in medium density layouts for touch devices",
54
99
  "key": "{controlStack.medium.gap.auto}"
55
100
  },
56
101
  "name": "controlStack-medium-gap-auto",
@@ -59,10 +104,13 @@
59
104
  },
60
105
  "controlStack-small-gap-auto": {
61
106
  "key": "{controlStack.small.gap.auto}",
62
- "$value": ["0.0625rem", "1px"],
107
+ "$value": ["1rem", "16px"],
63
108
  "$type": "dimension",
64
- "$description": "Gap between stacked controls in small density layouts for touch devices",
65
109
  "$extensions": {
110
+ "org.primer.figma": {
111
+ "collection": "pattern/size",
112
+ "scopes": ["gap"]
113
+ },
66
114
  "org.primer.llm": {
67
115
  "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
68
116
  "rules": "Use for spacing between interactive controls on touch devices in compact layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
@@ -70,16 +118,21 @@
70
118
  },
71
119
  "filePath": "src/tokens/functional/size/size-coarse.json5",
72
120
  "isSource": true,
121
+ "$description": "Gap between stacked controls in small density layouts for touch devices",
73
122
  "original": {
74
123
  "$value": "{base.size.16}",
75
124
  "$type": "dimension",
76
- "$description": "Gap between stacked controls in small density layouts for touch devices",
77
125
  "$extensions": {
126
+ "org.primer.figma": {
127
+ "collection": "pattern/size",
128
+ "scopes": ["gap"]
129
+ },
78
130
  "org.primer.llm": {
79
131
  "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
80
132
  "rules": "Use for spacing between interactive controls on touch devices in compact layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
81
133
  }
82
134
  },
135
+ "$description": "Gap between stacked controls in small density layouts for touch devices",
83
136
  "key": "{controlStack.small.gap.auto}"
84
137
  },
85
138
  "name": "controlStack-small-gap-auto",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "control-minTarget-auto": {
3
3
  "key": "{control.minTarget.auto}",
4
- "$value": ["0.0625rem", "1px"],
4
+ "$value": ["1rem", "16px"],
5
5
  "$type": "dimension",
6
6
  "$description": "Minimum target size for fine pointer devices (mouse)",
7
7
  "$extensions": {
@@ -28,12 +28,52 @@
28
28
  "attributes": {},
29
29
  "path": ["control", "minTarget", "auto"]
30
30
  },
31
+ "controlStack-large-gap-auto": {
32
+ "key": "{controlStack.large.gap.auto}",
33
+ "$value": ["0.5rem", "8px"],
34
+ "$type": "dimension",
35
+ "$extensions": {
36
+ "org.primer.figma": {
37
+ "collection": "pattern/size",
38
+ "scopes": ["gap"]
39
+ },
40
+ "org.primer.llm": {
41
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
42
+ "rules": "Use for spacing between interactive controls on desktop in large layouts. Do NOT use for mobile/touch interfaces."
43
+ }
44
+ },
45
+ "filePath": "src/tokens/functional/size/size-fine.json5",
46
+ "isSource": true,
47
+ "$description": "Gap between stacked controls in large density layouts for mouse interfaces",
48
+ "original": {
49
+ "$value": "{base.size.8}",
50
+ "$type": "dimension",
51
+ "$extensions": {
52
+ "org.primer.figma": {
53
+ "collection": "pattern/size",
54
+ "scopes": ["gap"]
55
+ },
56
+ "org.primer.llm": {
57
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
58
+ "rules": "Use for spacing between interactive controls on desktop in large layouts. Do NOT use for mobile/touch interfaces."
59
+ }
60
+ },
61
+ "$description": "Gap between stacked controls in large density layouts for mouse interfaces",
62
+ "key": "{controlStack.large.gap.auto}"
63
+ },
64
+ "name": "controlStack-large-gap-auto",
65
+ "attributes": {},
66
+ "path": ["controlStack", "large", "gap", "auto"]
67
+ },
31
68
  "controlStack-medium-gap-auto": {
32
69
  "key": "{controlStack.medium.gap.auto}",
33
- "$value": ["0.03125rem", "0.5px"],
70
+ "$value": ["0.5rem", "8px"],
34
71
  "$type": "dimension",
35
- "$description": "Gap between stacked controls in medium density layouts for mouse interfaces",
36
72
  "$extensions": {
73
+ "org.primer.figma": {
74
+ "collection": "pattern/size",
75
+ "scopes": ["gap"]
76
+ },
37
77
  "org.primer.llm": {
38
78
  "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
39
79
  "rules": "Use for spacing between interactive controls on desktop in standard layouts. Do NOT use for mobile/touch interfaces."
@@ -41,16 +81,21 @@
41
81
  },
42
82
  "filePath": "src/tokens/functional/size/size-fine.json5",
43
83
  "isSource": true,
84
+ "$description": "Gap between stacked controls in medium density layouts for mouse interfaces",
44
85
  "original": {
45
86
  "$value": "{base.size.8}",
46
87
  "$type": "dimension",
47
- "$description": "Gap between stacked controls in medium density layouts for mouse interfaces",
48
88
  "$extensions": {
89
+ "org.primer.figma": {
90
+ "collection": "pattern/size",
91
+ "scopes": ["gap"]
92
+ },
49
93
  "org.primer.llm": {
50
94
  "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
51
95
  "rules": "Use for spacing between interactive controls on desktop in standard layouts. Do NOT use for mobile/touch interfaces."
52
96
  }
53
97
  },
98
+ "$description": "Gap between stacked controls in medium density layouts for mouse interfaces",
54
99
  "key": "{controlStack.medium.gap.auto}"
55
100
  },
56
101
  "name": "controlStack-medium-gap-auto",
@@ -59,10 +104,13 @@
59
104
  },
60
105
  "controlStack-small-gap-auto": {
61
106
  "key": "{controlStack.small.gap.auto}",
62
- "$value": ["0.03125rem", "0.5px"],
107
+ "$value": ["0.5rem", "8px"],
63
108
  "$type": "dimension",
64
- "$description": "Gap between stacked controls in small density layouts for mouse interfaces",
65
109
  "$extensions": {
110
+ "org.primer.figma": {
111
+ "collection": "pattern/size",
112
+ "scopes": ["gap"]
113
+ },
66
114
  "org.primer.llm": {
67
115
  "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
68
116
  "rules": "Use for spacing between interactive controls on desktop in compact layouts. Tighter spacing than touch devices. Do NOT use for mobile/touch interfaces."
@@ -70,16 +118,21 @@
70
118
  },
71
119
  "filePath": "src/tokens/functional/size/size-fine.json5",
72
120
  "isSource": true,
121
+ "$description": "Gap between stacked controls in small density layouts for mouse interfaces",
73
122
  "original": {
74
123
  "$value": "{base.size.8}",
75
124
  "$type": "dimension",
76
- "$description": "Gap between stacked controls in small density layouts for mouse interfaces",
77
125
  "$extensions": {
126
+ "org.primer.figma": {
127
+ "collection": "pattern/size",
128
+ "scopes": ["gap"]
129
+ },
78
130
  "org.primer.llm": {
79
131
  "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
80
132
  "rules": "Use for spacing between interactive controls on desktop in compact layouts. Tighter spacing than touch devices. Do NOT use for mobile/touch interfaces."
81
133
  }
82
134
  },
135
+ "$description": "Gap between stacked controls in small density layouts for mouse interfaces",
83
136
  "key": "{controlStack.small.gap.auto}"
84
137
  },
85
138
  "name": "controlStack-small-gap-auto",