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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/DESIGN_TOKENS_GUIDE.md +185 -0
  2. package/DESIGN_TOKENS_SPEC.md +565 -0
  3. package/dist/build/filters/hasLlmExtensions.d.ts +7 -0
  4. package/dist/build/filters/hasLlmExtensions.js +11 -0
  5. package/dist/build/filters/index.d.ts +1 -0
  6. package/dist/build/filters/index.js +1 -0
  7. package/dist/build/formats/index.d.ts +1 -0
  8. package/dist/build/formats/index.js +1 -0
  9. package/dist/build/formats/markdownLlmGuidelines.d.ts +11 -0
  10. package/dist/build/formats/markdownLlmGuidelines.js +1168 -0
  11. package/dist/build/platforms/index.d.ts +1 -0
  12. package/dist/build/platforms/index.js +1 -0
  13. package/dist/build/platforms/llmGuidelines.d.ts +2 -0
  14. package/dist/build/platforms/llmGuidelines.js +17 -0
  15. package/dist/build/preprocessors/inheritGroupProperties.d.ts +7 -0
  16. package/dist/build/preprocessors/inheritGroupProperties.js +70 -0
  17. package/dist/build/primerStyleDictionary.js +7 -1
  18. package/dist/build/schemas/borderToken.d.ts +22 -2
  19. package/dist/build/schemas/borderToken.js +6 -0
  20. package/dist/build/schemas/colorToken.d.ts +4 -0
  21. package/dist/build/schemas/colorToken.js +2 -0
  22. package/dist/build/schemas/cubicBezierToken.d.ts +6 -0
  23. package/dist/build/schemas/cubicBezierToken.js +10 -2
  24. package/dist/build/schemas/designToken.d.ts +1 -1
  25. package/dist/build/schemas/designToken.js +113 -21
  26. package/dist/build/schemas/dimensionToken.d.ts +14 -3
  27. package/dist/build/schemas/dimensionToken.js +6 -2
  28. package/dist/build/schemas/dimensionValue.d.ts +24 -1
  29. package/dist/build/schemas/dimensionValue.js +20 -1
  30. package/dist/build/schemas/durationToken.d.ts +13 -1
  31. package/dist/build/schemas/durationToken.js +6 -0
  32. package/dist/build/schemas/durationValue.d.ts +11 -1
  33. package/dist/build/schemas/durationValue.js +13 -3
  34. package/dist/build/schemas/fontFamilyToken.d.ts +4 -0
  35. package/dist/build/schemas/fontFamilyToken.js +2 -0
  36. package/dist/build/schemas/fontWeightToken.d.ts +4 -0
  37. package/dist/build/schemas/fontWeightToken.js +2 -0
  38. package/dist/build/schemas/gradientToken.d.ts +4 -0
  39. package/dist/build/schemas/gradientToken.js +2 -0
  40. package/dist/build/schemas/llmExtension.d.ts +9 -0
  41. package/dist/build/schemas/llmExtension.js +11 -0
  42. package/dist/build/schemas/numberToken.d.ts +4 -0
  43. package/dist/build/schemas/numberToken.js +2 -0
  44. package/dist/build/schemas/shadowToken.d.ts +676 -84
  45. package/dist/build/schemas/shadowToken.js +2 -0
  46. package/dist/build/schemas/stringToken.d.ts +6 -0
  47. package/dist/build/schemas/stringToken.js +6 -0
  48. package/dist/build/schemas/transitionToken.d.ts +20 -2
  49. package/dist/build/schemas/transitionToken.js +6 -0
  50. package/dist/build/schemas/typographyToken.d.ts +38 -4
  51. package/dist/build/schemas/typographyToken.js +6 -0
  52. package/dist/build/schemas/validTokenType.d.ts +5 -1
  53. package/dist/build/schemas/validTokenType.js +71 -17
  54. package/dist/build/schemas/viewportRangeToken.d.ts +6 -0
  55. package/dist/build/schemas/viewportRangeToken.js +6 -0
  56. package/dist/build/transformers/dimensionToPixelUnitless.d.ts +3 -2
  57. package/dist/build/transformers/dimensionToPixelUnitless.js +22 -26
  58. package/dist/build/transformers/dimensionToRem.d.ts +2 -1
  59. package/dist/build/transformers/dimensionToRem.js +21 -22
  60. package/dist/build/transformers/dimensionToRemPxArray.d.ts +2 -1
  61. package/dist/build/transformers/dimensionToRemPxArray.js +21 -22
  62. package/dist/build/transformers/durationToCss.d.ts +2 -1
  63. package/dist/build/transformers/durationToCss.js +18 -11
  64. package/dist/build/transformers/utilities/parseDimension.d.ts +12 -0
  65. package/dist/build/transformers/utilities/parseDimension.js +31 -0
  66. package/dist/build/types/dimensionTokenValue.d.ts +9 -0
  67. package/dist/css/base/motion/motion.css +5 -4
  68. package/dist/css/functional/size/border.css +9 -14
  69. package/dist/css/functional/size/radius.css +7 -0
  70. package/dist/css/functional/size/size-coarse.css +3 -3
  71. package/dist/css/functional/size/size-fine.css +3 -3
  72. package/dist/css/functional/size/viewport.css +1 -1
  73. package/dist/css/functional/themes/dark-colorblind-high-contrast.css +194 -190
  74. package/dist/css/functional/themes/dark-colorblind.css +194 -190
  75. package/dist/css/functional/themes/dark-dimmed-high-contrast.css +194 -190
  76. package/dist/css/functional/themes/dark-dimmed.css +194 -190
  77. package/dist/css/functional/themes/dark-high-contrast.css +194 -190
  78. package/dist/css/functional/themes/dark-tritanopia-high-contrast.css +194 -190
  79. package/dist/css/functional/themes/dark-tritanopia.css +194 -190
  80. package/dist/css/functional/themes/dark.css +194 -190
  81. package/dist/css/functional/themes/light-colorblind-high-contrast.css +194 -190
  82. package/dist/css/functional/themes/light-colorblind.css +194 -190
  83. package/dist/css/functional/themes/light-high-contrast.css +194 -190
  84. package/dist/css/functional/themes/light-tritanopia-high-contrast.css +194 -190
  85. package/dist/css/functional/themes/light-tritanopia.css +194 -190
  86. package/dist/css/functional/themes/light.css +194 -190
  87. package/dist/css/functional/typography/typography.css +4 -4
  88. package/dist/css/primitives.css +5 -0
  89. package/dist/docs/base/motion/motion.json +181 -32
  90. package/dist/docs/base/size/size.json +76 -19
  91. package/dist/docs/base/typography/typography.json +24 -6
  92. package/dist/docs/functional/size/border.json +62 -182
  93. package/dist/docs/functional/size/breakpoints.json +24 -6
  94. package/dist/docs/functional/size/radius.json +221 -0
  95. package/dist/docs/functional/size/size-coarse.json +45 -3
  96. package/dist/docs/functional/size/size-fine.json +45 -3
  97. package/dist/docs/functional/size/size.json +60 -15
  98. package/dist/docs/functional/size/viewport.json +2 -2
  99. package/dist/docs/functional/themes/dark-colorblind-high-contrast.json +1043 -97
  100. package/dist/docs/functional/themes/dark-colorblind.json +1043 -97
  101. package/dist/docs/functional/themes/dark-dimmed-high-contrast.json +1043 -97
  102. package/dist/docs/functional/themes/dark-dimmed.json +1081 -135
  103. package/dist/docs/functional/themes/dark-high-contrast.json +1043 -97
  104. package/dist/docs/functional/themes/dark-tritanopia-high-contrast.json +1043 -97
  105. package/dist/docs/functional/themes/dark-tritanopia.json +1043 -97
  106. package/dist/docs/functional/themes/dark.json +1043 -97
  107. package/dist/docs/functional/themes/light-colorblind-high-contrast.json +1049 -103
  108. package/dist/docs/functional/themes/light-colorblind.json +1049 -103
  109. package/dist/docs/functional/themes/light-high-contrast.json +1049 -103
  110. package/dist/docs/functional/themes/light-tritanopia-high-contrast.json +1049 -103
  111. package/dist/docs/functional/themes/light-tritanopia.json +1049 -103
  112. package/dist/docs/functional/themes/light.json +1049 -103
  113. package/dist/docs/functional/typography/typography.json +180 -10
  114. package/dist/fallbacks/base/motion/motion.json +49 -12
  115. package/dist/fallbacks/functional/size/border.json +0 -5
  116. package/dist/fallbacks/functional/size/radius.json +7 -0
  117. package/dist/fallbacks/functional/size/viewport.json +1 -1
  118. package/dist/figma/dimension/dimension.json +30 -20
  119. package/dist/figma/themes/dark-colorblind.json +85 -0
  120. package/dist/figma/themes/dark-dimmed.json +134 -49
  121. package/dist/figma/themes/dark-high-contrast.json +85 -0
  122. package/dist/figma/themes/dark-tritanopia.json +85 -0
  123. package/dist/figma/themes/dark.json +85 -0
  124. package/dist/figma/themes/light-colorblind.json +89 -4
  125. package/dist/figma/themes/light-high-contrast.json +89 -4
  126. package/dist/figma/themes/light-tritanopia.json +89 -4
  127. package/dist/figma/themes/light.json +89 -4
  128. package/dist/figma/typography/typography.json +44 -40
  129. package/dist/internalCss/dark-colorblind-high-contrast.css +208 -218
  130. package/dist/internalCss/dark-colorblind.css +208 -218
  131. package/dist/internalCss/dark-dimmed-high-contrast.css +208 -218
  132. package/dist/internalCss/dark-dimmed.css +208 -218
  133. package/dist/internalCss/dark-high-contrast.css +208 -218
  134. package/dist/internalCss/dark-tritanopia-high-contrast.css +208 -218
  135. package/dist/internalCss/dark-tritanopia.css +208 -218
  136. package/dist/internalCss/dark.css +208 -218
  137. package/dist/internalCss/light-colorblind-high-contrast.css +208 -218
  138. package/dist/internalCss/light-colorblind.css +208 -218
  139. package/dist/internalCss/light-high-contrast.css +208 -218
  140. package/dist/internalCss/light-tritanopia-high-contrast.css +208 -218
  141. package/dist/internalCss/light-tritanopia.css +208 -218
  142. package/dist/internalCss/light.css +208 -218
  143. package/dist/styleLint/base/motion/motion.json +181 -32
  144. package/dist/styleLint/base/size/size.json +76 -19
  145. package/dist/styleLint/base/typography/typography.json +30 -12
  146. package/dist/styleLint/functional/size/border.json +55 -175
  147. package/dist/styleLint/functional/size/breakpoints.json +24 -6
  148. package/dist/styleLint/functional/size/radius.json +221 -0
  149. package/dist/styleLint/functional/size/size-coarse.json +45 -3
  150. package/dist/styleLint/functional/size/size-fine.json +45 -3
  151. package/dist/styleLint/functional/size/size.json +111 -66
  152. package/dist/styleLint/functional/size/viewport.json +2 -2
  153. package/dist/styleLint/functional/themes/dark-colorblind-high-contrast.json +975 -29
  154. package/dist/styleLint/functional/themes/dark-colorblind.json +975 -29
  155. package/dist/styleLint/functional/themes/dark-dimmed-high-contrast.json +975 -29
  156. package/dist/styleLint/functional/themes/dark-dimmed.json +1013 -67
  157. package/dist/styleLint/functional/themes/dark-high-contrast.json +975 -29
  158. package/dist/styleLint/functional/themes/dark-tritanopia-high-contrast.json +975 -29
  159. package/dist/styleLint/functional/themes/dark-tritanopia.json +975 -29
  160. package/dist/styleLint/functional/themes/dark.json +975 -29
  161. package/dist/styleLint/functional/themes/light-colorblind-high-contrast.json +981 -35
  162. package/dist/styleLint/functional/themes/light-colorblind.json +981 -35
  163. package/dist/styleLint/functional/themes/light-high-contrast.json +981 -35
  164. package/dist/styleLint/functional/themes/light-tritanopia-high-contrast.json +981 -35
  165. package/dist/styleLint/functional/themes/light-tritanopia.json +981 -35
  166. package/dist/styleLint/functional/themes/light.json +981 -35
  167. package/dist/styleLint/functional/typography/typography.json +196 -26
  168. package/package.json +6 -3
  169. package/src/tokens/base/motion/easing.json5 +39 -4
  170. package/src/tokens/base/motion/timing.json5 +12 -12
  171. package/src/tokens/base/size/size.json5 +19 -19
  172. package/src/tokens/base/typography/typography.json5 +6 -6
  173. package/src/tokens/functional/border/border.json5 +25 -0
  174. package/src/tokens/functional/color/bgColor.json5 +165 -0
  175. package/src/tokens/functional/color/borderColor.json5 +146 -0
  176. package/src/tokens/functional/color/control.json5 +24 -0
  177. package/src/tokens/functional/color/data-vis.json5 +7 -0
  178. package/src/tokens/functional/color/display.json5 +7 -0
  179. package/src/tokens/functional/color/fgColor.json5 +101 -1
  180. package/src/tokens/functional/color/focus.json5 +5 -0
  181. package/src/tokens/functional/color/selection.json5 +5 -0
  182. package/src/tokens/functional/color/syntax.json5 +14 -0
  183. package/src/tokens/functional/shadow/shadow.json5 +49 -4
  184. package/src/tokens/functional/size/border.json5 +22 -74
  185. package/src/tokens/functional/size/breakpoints.json5 +6 -6
  186. package/src/tokens/functional/size/radius.json5 +90 -0
  187. package/src/tokens/functional/size/size-coarse.json5 +24 -3
  188. package/src/tokens/functional/size/size-fine.json5 +45 -24
  189. package/src/tokens/functional/size/size.json5 +50 -15
  190. package/src/tokens/functional/size/viewport.json5 +1 -1
  191. package/src/tokens/functional/typography/font-stack.json5 +60 -0
  192. package/src/tokens/functional/typography/typography.json5 +71 -44
  193. package/dist/build/parsers/index.d.ts +0 -1
  194. package/dist/build/parsers/index.js +0 -1
  195. package/dist/build/parsers/w3cJsonParser.d.ts +0 -6
  196. package/dist/build/parsers/w3cJsonParser.js +0 -25
  197. package/dist/removed/testing.json5 +0 -4
  198. package/src/tokens/removed/testing.json5 +0 -4
@@ -0,0 +1,221 @@
1
+ {
2
+ "borderRadius-default": {
3
+ "key": "{borderRadius.default}",
4
+ "$extensions": {
5
+ "org.primer.figma": {
6
+ "collection": "functional/size",
7
+ "scopes": ["radius"],
8
+ "codeSyntax": {
9
+ "web": "var(--borderRadius-default) /* utility class: .rounded-2 */"
10
+ }
11
+ }
12
+ },
13
+ "filePath": "src/tokens/functional/size/radius.json5",
14
+ "isSource": true,
15
+ "original": {
16
+ "$value": "{borderRadius.medium}",
17
+ "$description": "Default border radius for most UI elements. Alias of borderRadius.medium (6px). Use when in doubt",
18
+ "$type": "dimension",
19
+ "$extensions": {
20
+ "org.primer.figma": {
21
+ "collection": "functional/size",
22
+ "scopes": ["radius"],
23
+ "codeSyntax": {
24
+ "web": "var(--borderRadius-default) /* utility class: .rounded-2 */"
25
+ }
26
+ }
27
+ },
28
+ "key": "{borderRadius.default}"
29
+ },
30
+ "name": "borderRadius-default",
31
+ "attributes": {},
32
+ "path": ["borderRadius", "default"],
33
+ "value": "0.375rem",
34
+ "type": "dimension",
35
+ "description": "Default border radius for most UI elements. Alias of borderRadius.medium (6px). Use when in doubt"
36
+ },
37
+ "borderRadius-full": {
38
+ "key": "{borderRadius.full}",
39
+ "$extensions": {
40
+ "org.primer.figma": {
41
+ "collection": "functional/size",
42
+ "scopes": ["radius"],
43
+ "codeSyntax": {
44
+ "web": "var(--borderRadius-full) /* utility class: .circle */"
45
+ }
46
+ },
47
+ "org.primer.llm": {
48
+ "usage": ["avatar", "pill-badge", "circular-button"],
49
+ "rules": "Use for avatars and pill-shaped elements. Do NOT use for rectangular containers."
50
+ }
51
+ },
52
+ "filePath": "src/tokens/functional/size/radius.json5",
53
+ "isSource": true,
54
+ "original": {
55
+ "$value": {
56
+ "value": 9999,
57
+ "unit": "px"
58
+ },
59
+ "$type": "dimension",
60
+ "$description": "Use this border radius for pill shaped elements",
61
+ "$extensions": {
62
+ "org.primer.figma": {
63
+ "collection": "functional/size",
64
+ "scopes": ["radius"],
65
+ "codeSyntax": {
66
+ "web": "var(--borderRadius-full) /* utility class: .circle */"
67
+ }
68
+ },
69
+ "org.primer.llm": {
70
+ "usage": ["avatar", "pill-badge", "circular-button"],
71
+ "rules": "Use for avatars and pill-shaped elements. Do NOT use for rectangular containers."
72
+ }
73
+ },
74
+ "key": "{borderRadius.full}"
75
+ },
76
+ "name": "borderRadius-full",
77
+ "attributes": {},
78
+ "path": ["borderRadius", "full"],
79
+ "value": "624.9375rem",
80
+ "type": "dimension",
81
+ "description": "Use this border radius for pill shaped elements"
82
+ },
83
+ "borderRadius-large": {
84
+ "key": "{borderRadius.large}",
85
+ "$extensions": {
86
+ "org.primer.figma": {
87
+ "collection": "functional/size",
88
+ "scopes": ["radius"],
89
+ "codeSyntax": {
90
+ "web": "var(--borderRadius-large) /* utility class: .rounded-3 */"
91
+ }
92
+ },
93
+ "org.primer.llm": {
94
+ "usage": ["dialog", "card", "modal"],
95
+ "rules": "Recommended for dialogs and modals."
96
+ }
97
+ },
98
+ "filePath": "src/tokens/functional/size/radius.json5",
99
+ "isSource": true,
100
+ "original": {
101
+ "$value": {
102
+ "value": 12,
103
+ "unit": "px"
104
+ },
105
+ "$description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. Always use this for buttons.",
106
+ "$type": "dimension",
107
+ "$extensions": {
108
+ "org.primer.figma": {
109
+ "collection": "functional/size",
110
+ "scopes": ["radius"],
111
+ "codeSyntax": {
112
+ "web": "var(--borderRadius-large) /* utility class: .rounded-3 */"
113
+ }
114
+ },
115
+ "org.primer.llm": {
116
+ "usage": ["dialog", "card", "modal"],
117
+ "rules": "Recommended for dialogs and modals."
118
+ }
119
+ },
120
+ "key": "{borderRadius.large}"
121
+ },
122
+ "name": "borderRadius-large",
123
+ "attributes": {},
124
+ "path": ["borderRadius", "large"],
125
+ "value": "0.75rem",
126
+ "type": "dimension",
127
+ "description": "Large border radius (12px). Use for larger containers, dialogs, or when more visual softness is desired. Always use this for buttons."
128
+ },
129
+ "borderRadius-medium": {
130
+ "key": "{borderRadius.medium}",
131
+ "$extensions": {
132
+ "org.primer.figma": {
133
+ "collection": "functional/size",
134
+ "scopes": ["radius"],
135
+ "codeSyntax": {
136
+ "web": "var(--borderRadius-medium) /* utility class: .rounded-2 */"
137
+ }
138
+ },
139
+ "org.primer.llm": {
140
+ "usage": ["button", "input", "textarea", "select", "card", "container"],
141
+ "rules": "Default choice for most components. Use for inputs, cards, and general containers."
142
+ }
143
+ },
144
+ "filePath": "src/tokens/functional/size/radius.json5",
145
+ "isSource": true,
146
+ "original": {
147
+ "$value": {
148
+ "value": 6,
149
+ "unit": "px"
150
+ },
151
+ "$description": "Medium border radius (6px). The default choice for most buttons, cards, and containers",
152
+ "$type": "dimension",
153
+ "$extensions": {
154
+ "org.primer.figma": {
155
+ "collection": "functional/size",
156
+ "scopes": ["radius"],
157
+ "codeSyntax": {
158
+ "web": "var(--borderRadius-medium) /* utility class: .rounded-2 */"
159
+ }
160
+ },
161
+ "org.primer.llm": {
162
+ "usage": ["button", "input", "textarea", "select", "card", "container"],
163
+ "rules": "Default choice for most components. Use for inputs, cards, and general containers."
164
+ }
165
+ },
166
+ "key": "{borderRadius.medium}"
167
+ },
168
+ "name": "borderRadius-medium",
169
+ "attributes": {},
170
+ "path": ["borderRadius", "medium"],
171
+ "value": "0.375rem",
172
+ "type": "dimension",
173
+ "description": "Medium border radius (6px). The default choice for most buttons, cards, and containers"
174
+ },
175
+ "borderRadius-small": {
176
+ "key": "{borderRadius.small}",
177
+ "$extensions": {
178
+ "org.primer.figma": {
179
+ "collection": "functional/size",
180
+ "scopes": ["radius"],
181
+ "codeSyntax": {
182
+ "web": "var(--borderRadius-small) /* utility class: .rounded-1 */"
183
+ }
184
+ },
185
+ "org.primer.llm": {
186
+ "usage": ["badge", "tag", "label", "small-input"],
187
+ "rules": "Use for small UI elements under 16px height. Do NOT use for buttons or cards."
188
+ }
189
+ },
190
+ "filePath": "src/tokens/functional/size/radius.json5",
191
+ "isSource": true,
192
+ "original": {
193
+ "$value": {
194
+ "value": 3,
195
+ "unit": "px"
196
+ },
197
+ "$description": "Small border radius (3px). Use for small variants of components or small UI elements like badges, tags, or anything below 16px in height",
198
+ "$type": "dimension",
199
+ "$extensions": {
200
+ "org.primer.figma": {
201
+ "collection": "functional/size",
202
+ "scopes": ["radius"],
203
+ "codeSyntax": {
204
+ "web": "var(--borderRadius-small) /* utility class: .rounded-1 */"
205
+ }
206
+ },
207
+ "org.primer.llm": {
208
+ "usage": ["badge", "tag", "label", "small-input"],
209
+ "rules": "Use for small UI elements under 16px height. Do NOT use for buttons or cards."
210
+ }
211
+ },
212
+ "key": "{borderRadius.small}"
213
+ },
214
+ "name": "borderRadius-small",
215
+ "attributes": {},
216
+ "path": ["borderRadius", "small"],
217
+ "value": "0.1875rem",
218
+ "type": "dimension",
219
+ "description": "Small border radius (3px). Use for small variants of components or small UI elements like badges, tags, or anything below 16px in height"
220
+ }
221
+ }
@@ -1,47 +1,89 @@
1
1
  {
2
2
  "control-minTarget-auto": {
3
3
  "key": "{control.minTarget.auto}",
4
+ "$extensions": {
5
+ "org.primer.llm": {
6
+ "usage": ["touch-target", "mobile-button", "tap-area"],
7
+ "rules": "Use as minimum size for interactive elements on touch devices. Ensures WCAG 2.5.5 compliance (44x44px minimum). Do NOT use for fine pointer (mouse) contexts."
8
+ }
9
+ },
4
10
  "filePath": "src/tokens/functional/size/size-coarse.json5",
5
11
  "isSource": true,
6
12
  "original": {
7
13
  "$value": "{base.size.44}",
8
14
  "$type": "dimension",
15
+ "$description": "Minimum touch target size for coarse pointer devices (touch screens)",
16
+ "$extensions": {
17
+ "org.primer.llm": {
18
+ "usage": ["touch-target", "mobile-button", "tap-area"],
19
+ "rules": "Use as minimum size for interactive elements on touch devices. Ensures WCAG 2.5.5 compliance (44x44px minimum). Do NOT use for fine pointer (mouse) contexts."
20
+ }
21
+ },
9
22
  "key": "{control.minTarget.auto}"
10
23
  },
11
24
  "name": "control-minTarget-auto",
12
25
  "attributes": {},
13
26
  "path": ["control", "minTarget", "auto"],
14
27
  "value": "2.75rem",
15
- "type": "dimension"
28
+ "type": "dimension",
29
+ "description": "Minimum touch target size for coarse pointer devices (touch screens)"
16
30
  },
17
31
  "controlStack-medium-gap-auto": {
18
32
  "key": "{controlStack.medium.gap.auto}",
33
+ "$extensions": {
34
+ "org.primer.llm": {
35
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
36
+ "rules": "Use for spacing between interactive controls on touch devices in standard layouts. Do NOT use for desktop/mouse interfaces."
37
+ }
38
+ },
19
39
  "filePath": "src/tokens/functional/size/size-coarse.json5",
20
40
  "isSource": true,
21
41
  "original": {
22
42
  "$value": "{base.size.12}",
23
43
  "$type": "dimension",
44
+ "$description": "Gap between stacked controls in medium density layouts for touch devices",
45
+ "$extensions": {
46
+ "org.primer.llm": {
47
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
48
+ "rules": "Use for spacing between interactive controls on touch devices in standard layouts. Do NOT use for desktop/mouse interfaces."
49
+ }
50
+ },
24
51
  "key": "{controlStack.medium.gap.auto}"
25
52
  },
26
53
  "name": "controlStack-medium-gap-auto",
27
54
  "attributes": {},
28
55
  "path": ["controlStack", "medium", "gap", "auto"],
29
56
  "value": "0.75rem",
30
- "type": "dimension"
57
+ "type": "dimension",
58
+ "description": "Gap between stacked controls in medium density layouts for touch devices"
31
59
  },
32
60
  "controlStack-small-gap-auto": {
33
61
  "key": "{controlStack.small.gap.auto}",
62
+ "$extensions": {
63
+ "org.primer.llm": {
64
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
65
+ "rules": "Use for spacing between interactive controls on touch devices in compact layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
66
+ }
67
+ },
34
68
  "filePath": "src/tokens/functional/size/size-coarse.json5",
35
69
  "isSource": true,
36
70
  "original": {
37
71
  "$value": "{base.size.16}",
38
72
  "$type": "dimension",
73
+ "$description": "Gap between stacked controls in small density layouts for touch devices",
74
+ "$extensions": {
75
+ "org.primer.llm": {
76
+ "usage": ["touch-control-spacing", "mobile-form-gap", "stacked-buttons"],
77
+ "rules": "Use for spacing between interactive controls on touch devices in compact layouts. Provides adequate touch separation. Do NOT use for desktop/mouse interfaces."
78
+ }
79
+ },
39
80
  "key": "{controlStack.small.gap.auto}"
40
81
  },
41
82
  "name": "controlStack-small-gap-auto",
42
83
  "attributes": {},
43
84
  "path": ["controlStack", "small", "gap", "auto"],
44
85
  "value": "1rem",
45
- "type": "dimension"
86
+ "type": "dimension",
87
+ "description": "Gap between stacked controls in small density layouts for touch devices"
46
88
  }
47
89
  }
@@ -1,47 +1,89 @@
1
1
  {
2
2
  "control-minTarget-auto": {
3
3
  "key": "{control.minTarget.auto}",
4
+ "$extensions": {
5
+ "org.primer.llm": {
6
+ "usage": ["mouse-target", "desktop-button", "click-area"],
7
+ "rules": "Use as minimum size for interactive elements on desktop/mouse interfaces. Smaller than touch targets for denser layouts. Do NOT use for touch/mobile contexts."
8
+ }
9
+ },
4
10
  "filePath": "src/tokens/functional/size/size-fine.json5",
5
11
  "isSource": true,
6
12
  "original": {
7
13
  "$value": "{base.size.16}",
8
14
  "$type": "dimension",
15
+ "$description": "Minimum target size for fine pointer devices (mouse)",
16
+ "$extensions": {
17
+ "org.primer.llm": {
18
+ "usage": ["mouse-target", "desktop-button", "click-area"],
19
+ "rules": "Use as minimum size for interactive elements on desktop/mouse interfaces. Smaller than touch targets for denser layouts. Do NOT use for touch/mobile contexts."
20
+ }
21
+ },
9
22
  "key": "{control.minTarget.auto}"
10
23
  },
11
24
  "name": "control-minTarget-auto",
12
25
  "attributes": {},
13
26
  "path": ["control", "minTarget", "auto"],
14
27
  "value": "1rem",
15
- "type": "dimension"
28
+ "type": "dimension",
29
+ "description": "Minimum target size for fine pointer devices (mouse)"
16
30
  },
17
31
  "controlStack-medium-gap-auto": {
18
32
  "key": "{controlStack.medium.gap.auto}",
33
+ "$extensions": {
34
+ "org.primer.llm": {
35
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
36
+ "rules": "Use for spacing between interactive controls on desktop in standard layouts. Do NOT use for mobile/touch interfaces."
37
+ }
38
+ },
19
39
  "filePath": "src/tokens/functional/size/size-fine.json5",
20
40
  "isSource": true,
21
41
  "original": {
22
42
  "$value": "{base.size.8}",
23
43
  "$type": "dimension",
44
+ "$description": "Gap between stacked controls in medium density layouts for mouse interfaces",
45
+ "$extensions": {
46
+ "org.primer.llm": {
47
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
48
+ "rules": "Use for spacing between interactive controls on desktop in standard layouts. Do NOT use for mobile/touch interfaces."
49
+ }
50
+ },
24
51
  "key": "{controlStack.medium.gap.auto}"
25
52
  },
26
53
  "name": "controlStack-medium-gap-auto",
27
54
  "attributes": {},
28
55
  "path": ["controlStack", "medium", "gap", "auto"],
29
56
  "value": "0.5rem",
30
- "type": "dimension"
57
+ "type": "dimension",
58
+ "description": "Gap between stacked controls in medium density layouts for mouse interfaces"
31
59
  },
32
60
  "controlStack-small-gap-auto": {
33
61
  "key": "{controlStack.small.gap.auto}",
62
+ "$extensions": {
63
+ "org.primer.llm": {
64
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
65
+ "rules": "Use for spacing between interactive controls on desktop in compact layouts. Tighter spacing than touch devices. Do NOT use for mobile/touch interfaces."
66
+ }
67
+ },
34
68
  "filePath": "src/tokens/functional/size/size-fine.json5",
35
69
  "isSource": true,
36
70
  "original": {
37
71
  "$value": "{base.size.8}",
38
72
  "$type": "dimension",
73
+ "$description": "Gap between stacked controls in small density layouts for mouse interfaces",
74
+ "$extensions": {
75
+ "org.primer.llm": {
76
+ "usage": ["desktop-control-spacing", "form-gap", "stacked-buttons"],
77
+ "rules": "Use for spacing between interactive controls on desktop in compact layouts. Tighter spacing than touch devices. Do NOT use for mobile/touch interfaces."
78
+ }
79
+ },
39
80
  "key": "{controlStack.small.gap.auto}"
40
81
  },
41
82
  "name": "controlStack-small-gap-auto",
42
83
  "attributes": {},
43
84
  "path": ["controlStack", "small", "gap", "auto"],
44
85
  "value": "0.5rem",
45
- "type": "dimension"
86
+ "type": "dimension",
87
+ "description": "Gap between stacked controls in small density layouts for mouse interfaces"
46
88
  }
47
89
  }
@@ -64,7 +64,10 @@
64
64
  "filePath": "src/tokens/functional/size/size.json5",
65
65
  "isSource": true,
66
66
  "original": {
67
- "$value": "10px",
67
+ "$value": {
68
+ "value": 10,
69
+ "unit": "px"
70
+ },
68
71
  "$type": "dimension",
69
72
  "$extensions": {
70
73
  "org.primer.figma": {
@@ -226,7 +229,10 @@
226
229
  "filePath": "src/tokens/functional/size/size.json5",
227
230
  "isSource": true,
228
231
  "original": {
229
- "$value": "6px",
232
+ "$value": {
233
+ "value": 6,
234
+ "unit": "px"
235
+ },
230
236
  "$type": "dimension",
231
237
  "$extensions": {
232
238
  "org.primer.figma": {
@@ -631,7 +637,10 @@
631
637
  "filePath": "src/tokens/functional/size/size.json5",
632
638
  "isSource": true,
633
639
  "original": {
634
- "$value": "14px",
640
+ "$value": {
641
+ "value": 14,
642
+ "unit": "px"
643
+ },
635
644
  "$type": "dimension",
636
645
  "$extensions": {
637
646
  "org.primer.figma": {
@@ -793,7 +802,10 @@
793
802
  "filePath": "src/tokens/functional/size/size.json5",
794
803
  "isSource": true,
795
804
  "original": {
796
- "$value": "2px",
805
+ "$value": {
806
+ "value": 2,
807
+ "unit": "px"
808
+ },
797
809
  "$type": "dimension",
798
810
  "$extensions": {
799
811
  "org.primer.figma": {
@@ -1144,7 +1156,10 @@
1144
1156
  "filePath": "src/tokens/functional/size/size.json5",
1145
1157
  "isSource": true,
1146
1158
  "original": {
1147
- "$value": "432px",
1159
+ "$value": {
1160
+ "value": 432,
1161
+ "unit": "px"
1162
+ },
1148
1163
  "$type": "dimension",
1149
1164
  "$extensions": {
1150
1165
  "org.primer.figma": {
@@ -1171,7 +1186,10 @@
1171
1186
  "filePath": "src/tokens/functional/size/size.json5",
1172
1187
  "isSource": true,
1173
1188
  "original": {
1174
- "$value": "320px",
1189
+ "$value": {
1190
+ "value": 320,
1191
+ "unit": "px"
1192
+ },
1175
1193
  "$type": "dimension",
1176
1194
  "$extensions": {
1177
1195
  "org.primer.figma": {
@@ -1198,7 +1216,10 @@
1198
1216
  "filePath": "src/tokens/functional/size/size.json5",
1199
1217
  "isSource": true,
1200
1218
  "original": {
1201
- "$value": "256px",
1219
+ "$value": {
1220
+ "value": 256,
1221
+ "unit": "px"
1222
+ },
1202
1223
  "$type": "dimension",
1203
1224
  "$extensions": {
1204
1225
  "org.primer.figma": {
@@ -1225,7 +1246,10 @@
1225
1246
  "filePath": "src/tokens/functional/size/size.json5",
1226
1247
  "isSource": true,
1227
1248
  "original": {
1228
- "$value": "600px",
1249
+ "$value": {
1250
+ "value": 600,
1251
+ "unit": "px"
1252
+ },
1229
1253
  "$type": "dimension",
1230
1254
  "$extensions": {
1231
1255
  "org.primer.figma": {
@@ -1252,7 +1276,10 @@
1252
1276
  "filePath": "src/tokens/functional/size/size.json5",
1253
1277
  "isSource": true,
1254
1278
  "original": {
1255
- "$value": "4px",
1279
+ "$value": {
1280
+ "value": 4,
1281
+ "unit": "px"
1282
+ },
1256
1283
  "$type": "dimension",
1257
1284
  "$extensions": {
1258
1285
  "org.primer.figma": {
@@ -1387,7 +1414,10 @@
1387
1414
  "filePath": "src/tokens/functional/size/size.json5",
1388
1415
  "isSource": true,
1389
1416
  "original": {
1390
- "$value": "640px",
1417
+ "$value": {
1418
+ "value": 640,
1419
+ "unit": "px"
1420
+ },
1391
1421
  "$type": "dimension",
1392
1422
  "$extensions": {
1393
1423
  "org.primer.figma": {
@@ -1414,7 +1444,10 @@
1414
1444
  "filePath": "src/tokens/functional/size/size.json5",
1415
1445
  "isSource": true,
1416
1446
  "original": {
1417
- "$value": "480px",
1447
+ "$value": {
1448
+ "value": 480,
1449
+ "unit": "px"
1450
+ },
1418
1451
  "$type": "dimension",
1419
1452
  "$extensions": {
1420
1453
  "org.primer.figma": {
@@ -1441,7 +1474,10 @@
1441
1474
  "filePath": "src/tokens/functional/size/size.json5",
1442
1475
  "isSource": true,
1443
1476
  "original": {
1444
- "$value": "320px",
1477
+ "$value": {
1478
+ "value": 320,
1479
+ "unit": "px"
1480
+ },
1445
1481
  "$type": "dimension",
1446
1482
  "$extensions": {
1447
1483
  "org.primer.figma": {
@@ -1468,7 +1504,10 @@
1468
1504
  "filePath": "src/tokens/functional/size/size.json5",
1469
1505
  "isSource": true,
1470
1506
  "original": {
1471
- "$value": "960px",
1507
+ "$value": {
1508
+ "value": 960,
1509
+ "unit": "px"
1510
+ },
1472
1511
  "$type": "dimension",
1473
1512
  "$extensions": {
1474
1513
  "org.primer.figma": {
@@ -1495,7 +1534,10 @@
1495
1534
  "filePath": "src/tokens/functional/size/size.json5",
1496
1535
  "isSource": true,
1497
1536
  "original": {
1498
- "$value": "192px",
1537
+ "$value": {
1538
+ "value": 192,
1539
+ "unit": "px"
1540
+ },
1499
1541
  "$type": "dimension",
1500
1542
  "$extensions": {
1501
1543
  "org.primer.figma": {
@@ -1597,7 +1639,10 @@
1597
1639
  "filePath": "src/tokens/functional/size/size.json5",
1598
1640
  "isSource": true,
1599
1641
  "original": {
1600
- "$value": "2px",
1642
+ "$value": {
1643
+ "value": 2,
1644
+ "unit": "px"
1645
+ },
1601
1646
  "$type": "dimension",
1602
1647
  "key": "{spinner.strokeWidth.default}"
1603
1648
  },
@@ -34,14 +34,14 @@
34
34
  "filePath": "src/tokens/functional/size/viewport.json5",
35
35
  "isSource": true,
36
36
  "original": {
37
- "$value": "(max-width: calc({breakpoint.large} - 0.02px) and (max-height: calc({breakpoint.small} - 0.02px)) and (orientation: landscape))",
37
+ "$value": "((max-width: calc({breakpoint.large} - 0.02px)) and (max-height: calc({breakpoint.small} - 0.02px)) and (orientation: landscape))",
38
38
  "$type": "custom-viewportRange",
39
39
  "key": "{viewportRange.narrowLandscape}"
40
40
  },
41
41
  "name": "viewportRange-narrowLandscape",
42
42
  "attributes": {},
43
43
  "path": ["viewportRange", "narrowLandscape"],
44
- "value": "(max-width: calc(63.25rem - 0.02px) and (max-height: calc(34rem - 0.02px)) and (orientation: landscape))",
44
+ "value": "((max-width: calc(63.25rem - 0.02px)) and (max-height: calc(34rem - 0.02px)) and (orientation: landscape))",
45
45
  "type": "custom-viewportRange"
46
46
  },
47
47
  "viewportRange-portrait": {