@primer/primitives 7.17.0-rc.d7413369 → 7.17.1

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 (148) hide show
  1. package/README.md +1 -1
  2. package/dist/css/functional/typography/typography.css +1 -1
  3. package/dist/deprecated/colors.json +7 -0
  4. package/dist/docs/base/typography/typography.json +52 -4
  5. package/dist/docs/functional/themes/dark-colorblind.json +78 -78
  6. package/dist/docs/functional/themes/dark-dimmed.json +73 -73
  7. package/dist/docs/functional/themes/dark-high-contrast.json +75 -75
  8. package/dist/docs/functional/themes/dark-tritanopia.json +78 -78
  9. package/dist/docs/functional/themes/dark.json +73 -73
  10. package/dist/docs/functional/themes/light-colorblind.json +76 -76
  11. package/dist/docs/functional/themes/light-high-contrast.json +70 -70
  12. package/dist/docs/functional/themes/light-tritanopia.json +76 -76
  13. package/dist/docs/functional/themes/light.json +71 -71
  14. package/dist/docs/functional/typography/typography.json +455 -33
  15. package/dist/fallbacks/functional/typography/typography.json +1 -1
  16. package/dist/figma/figma.json +8 -0
  17. package/dist/figma/scales/dark-dimmed.json +20 -20
  18. package/dist/figma/scales/dark-high-constrast.json +20 -20
  19. package/dist/figma/scales/dark.json +20 -20
  20. package/dist/figma/scales/light-high-constrast.json +20 -20
  21. package/dist/figma/scales/light.json +20 -20
  22. package/dist/figma/themes/dark-colorblind.json +70 -70
  23. package/dist/figma/themes/dark-dimmed.json +65 -65
  24. package/dist/figma/themes/dark-high-contrast.json +69 -69
  25. package/dist/figma/themes/dark-tritanopia.json +70 -70
  26. package/dist/figma/themes/dark.json +65 -65
  27. package/dist/figma/themes/light-colorblind.json +59 -59
  28. package/dist/figma/themes/light-high-contrast.json +55 -55
  29. package/dist/figma/themes/light-tritanopia.json +59 -59
  30. package/dist/figma/themes/light.json +54 -54
  31. package/dist/figma/typography/typography.json +338 -0
  32. package/dist/internalCss/dark-colorblind.css +20 -20
  33. package/dist/internalCss/dark-dimmed.css +20 -20
  34. package/dist/internalCss/dark-high-contrast.css +20 -20
  35. package/dist/internalCss/dark-tritanopia.css +20 -20
  36. package/dist/internalCss/dark.css +20 -20
  37. package/dist/internalCss/light-colorblind.css +20 -20
  38. package/dist/internalCss/light-high-contrast.css +20 -20
  39. package/dist/internalCss/light-tritanopia.css +20 -20
  40. package/dist/internalCss/light.css +20 -20
  41. package/dist/js/colors/dark.d.ts +516 -0
  42. package/dist/js/colors/dark.js +616 -0
  43. package/dist/js/colors/dark_colorblind.d.ts +516 -0
  44. package/dist/js/colors/dark_colorblind.js +616 -0
  45. package/dist/js/colors/dark_dimmed.d.ts +516 -0
  46. package/dist/js/colors/dark_dimmed.js +616 -0
  47. package/dist/js/colors/dark_high_contrast.d.ts +516 -0
  48. package/dist/js/colors/dark_high_contrast.js +616 -0
  49. package/dist/js/colors/dark_tritanopia.d.ts +516 -0
  50. package/dist/js/colors/dark_tritanopia.js +616 -0
  51. package/dist/js/colors/index.d.ts +4638 -0
  52. package/dist/js/colors/index.js +15 -0
  53. package/dist/js/colors/light.d.ts +516 -0
  54. package/dist/js/colors/light.js +616 -0
  55. package/dist/js/colors/light_colorblind.d.ts +516 -0
  56. package/dist/js/colors/light_colorblind.js +616 -0
  57. package/dist/js/colors/light_high_contrast.d.ts +516 -0
  58. package/dist/js/colors/light_high_contrast.js +616 -0
  59. package/dist/js/colors/light_tritanopia.d.ts +516 -0
  60. package/dist/js/colors/light_tritanopia.js +616 -0
  61. package/dist/js/index.d.ts +4655 -0
  62. package/dist/js/index.js +9 -0
  63. package/dist/js/spacing/index.d.ts +6 -0
  64. package/dist/js/spacing/index.js +7 -0
  65. package/dist/js/spacing/normal.d.ts +4 -0
  66. package/dist/js/spacing/normal.js +13 -0
  67. package/dist/js/typography/index.d.ts +11 -0
  68. package/dist/js/typography/index.js +7 -0
  69. package/dist/js/typography/normal.d.ts +9 -0
  70. package/dist/js/typography/normal.js +19 -0
  71. package/dist/json/colors/dark.json +614 -0
  72. package/dist/json/colors/dark_colorblind.json +614 -0
  73. package/dist/json/colors/dark_dimmed.json +614 -0
  74. package/dist/json/colors/dark_high_contrast.json +614 -0
  75. package/dist/json/colors/dark_tritanopia.json +614 -0
  76. package/dist/json/colors/light.json +614 -0
  77. package/dist/json/colors/light_colorblind.json +614 -0
  78. package/dist/json/colors/light_high_contrast.json +614 -0
  79. package/dist/json/colors/light_tritanopia.json +614 -0
  80. package/dist/json/spacing/normal.json +11 -0
  81. package/dist/json/typography/normal.json +17 -0
  82. package/dist/removed/colors.json +432 -0
  83. package/dist/scss/colors/_dark.scss +452 -0
  84. package/dist/scss/colors/_dark_colorblind.scss +452 -0
  85. package/dist/scss/colors/_dark_dimmed.scss +452 -0
  86. package/dist/scss/colors/_dark_high_contrast.scss +452 -0
  87. package/dist/scss/colors/_dark_tritanopia.scss +452 -0
  88. package/dist/scss/colors/_light.scss +452 -0
  89. package/dist/scss/colors/_light_colorblind.scss +452 -0
  90. package/dist/scss/colors/_light_high_contrast.scss +452 -0
  91. package/dist/scss/colors/_light_tritanopia.scss +452 -0
  92. package/dist/scss/spacing/_normal.scss +11 -0
  93. package/dist/scss/typography/_normal.scss +15 -0
  94. package/dist/styleLint/base/typography/typography.json +52 -4
  95. package/dist/styleLint/functional/themes/dark-colorblind.json +78 -78
  96. package/dist/styleLint/functional/themes/dark-dimmed.json +73 -73
  97. package/dist/styleLint/functional/themes/dark-high-contrast.json +75 -75
  98. package/dist/styleLint/functional/themes/dark-tritanopia.json +78 -78
  99. package/dist/styleLint/functional/themes/dark.json +73 -73
  100. package/dist/styleLint/functional/themes/light-colorblind.json +76 -76
  101. package/dist/styleLint/functional/themes/light-high-contrast.json +70 -70
  102. package/dist/styleLint/functional/themes/light-tritanopia.json +76 -76
  103. package/dist/styleLint/functional/themes/light.json +71 -71
  104. package/dist/styleLint/functional/typography/typography.json +455 -33
  105. package/dist/ts/colors/dark.ts +614 -0
  106. package/dist/ts/colors/dark_colorblind.ts +614 -0
  107. package/dist/ts/colors/dark_dimmed.ts +614 -0
  108. package/dist/ts/colors/dark_high_contrast.ts +614 -0
  109. package/dist/ts/colors/dark_tritanopia.ts +614 -0
  110. package/dist/ts/colors/index.ts +10 -0
  111. package/dist/ts/colors/light.ts +614 -0
  112. package/dist/ts/colors/light_colorblind.ts +614 -0
  113. package/dist/ts/colors/light_high_contrast.ts +614 -0
  114. package/dist/ts/colors/light_tritanopia.ts +614 -0
  115. package/dist/ts/index.ts +4 -0
  116. package/dist/ts/spacing/index.ts +2 -0
  117. package/dist/ts/spacing/normal.ts +11 -0
  118. package/dist/ts/typography/index.ts +2 -0
  119. package/dist/ts/typography/normal.ts +17 -0
  120. package/package.json +3 -3
  121. package/src/PrimerStyleDictionary.ts +6 -0
  122. package/src/platforms/figma.ts +1 -0
  123. package/src/schemas/numberToken.ts +17 -0
  124. package/src/tokens/base/color/dark/dark.dimmed.json5 +1 -1
  125. package/src/tokens/base/color/dark/dark.high-contrast.json5 +1 -1
  126. package/src/tokens/base/color/dark/dark.json5 +1 -1
  127. package/src/tokens/base/color/light/light.high-contrast.json5 +1 -1
  128. package/src/tokens/base/color/light/light.json5 +1 -1
  129. package/src/tokens/base/typography/typography.json +28 -4
  130. package/src/tokens/functional/color/dark/app-dark.json5 +5 -5
  131. package/src/tokens/functional/color/dark/overrides/dark.high-contrast.json5 +17 -17
  132. package/src/tokens/functional/color/dark/overrides/dark.protanopia-deuteranopia.json5 +5 -5
  133. package/src/tokens/functional/color/dark/overrides/dark.tritanopia.json5 +5 -5
  134. package/src/tokens/functional/color/dark/patterns-dark.json5 +42 -42
  135. package/src/tokens/functional/color/dark/primitives-dark.json5 +16 -16
  136. package/src/tokens/functional/color/dark/syntax-dark.json5 +13 -13
  137. package/src/tokens/functional/color/light/app-light.json5 +5 -5
  138. package/src/tokens/functional/color/light/overrides/light.high-contrast.json5 +25 -25
  139. package/src/tokens/functional/color/light/overrides/light.protanopia-deuteranopia.json5 +5 -5
  140. package/src/tokens/functional/color/light/overrides/light.tritanopia.json5 +5 -5
  141. package/src/tokens/functional/color/light/patterns-light.json5 +30 -30
  142. package/src/tokens/functional/color/light/primitives-light.json5 +15 -15
  143. package/src/tokens/functional/color/light/syntax-light.json5 +14 -14
  144. package/src/tokens/functional/shadow/dark.json5 +1 -1
  145. package/src/tokens/functional/shadow/light.json5 +11 -11
  146. package/src/tokens/functional/typography/typography.json +242 -31
  147. package/src/transformers/floatToPixel.ts +33 -0
  148. package/src/transformers/index.ts +1 -0
@@ -2,7 +2,7 @@
2
2
  color: {
3
3
  ansi: {
4
4
  black: {
5
- $value: '{base.color.gray.9}',
5
+ $value: '{base.color.neutral.9}',
6
6
  $type: 'color',
7
7
  $extensions: {
8
8
  'org.primer.figma': {
@@ -13,7 +13,7 @@
13
13
  },
14
14
  },
15
15
  'black-bright': {
16
- $value: '{base.color.gray.6}',
16
+ $value: '{base.color.neutral.6}',
17
17
  $type: 'color',
18
18
  $extensions: {
19
19
  'org.primer.figma': {
@@ -24,7 +24,7 @@
24
24
  },
25
25
  },
26
26
  white: {
27
- $value: '{base.color.gray.5}',
27
+ $value: '{base.color.neutral.5}',
28
28
  $type: 'color',
29
29
  $extensions: {
30
30
  'org.primer.figma': {
@@ -35,7 +35,7 @@
35
35
  },
36
36
  },
37
37
  'white-bright': {
38
- $value: '{base.color.gray.4}',
38
+ $value: '{base.color.neutral.4}',
39
39
  $type: 'color',
40
40
  $extensions: {
41
41
  'org.primer.figma': {
@@ -46,7 +46,7 @@
46
46
  },
47
47
  },
48
48
  gray: {
49
- $value: '{base.color.gray.5}',
49
+ $value: '{base.color.neutral.5}',
50
50
  $type: 'color',
51
51
  $extensions: {
52
52
  'org.primer.figma': {
@@ -192,7 +192,7 @@
192
192
  prettylights: {
193
193
  syntax: {
194
194
  comment: {
195
- $value: '{base.color.gray.6}',
195
+ $value: '{base.color.neutral.6}',
196
196
  $type: 'color',
197
197
  $extensions: {
198
198
  'org.primer.figma': {
@@ -238,7 +238,7 @@
238
238
  storage: {
239
239
  modifier: {
240
240
  import: {
241
- $value: '{base.color.gray.9}',
241
+ $value: '{base.color.neutral.9}',
242
242
  $type: 'color',
243
243
  $extensions: {
244
244
  'org.primer.figma': {
@@ -307,7 +307,7 @@
307
307
  },
308
308
  },
309
309
  angle: {
310
- $value: '{base.color.gray.6}',
310
+ $value: '{base.color.neutral.6}',
311
311
  $type: 'color',
312
312
  $extensions: {
313
313
  'org.primer.figma': {
@@ -321,7 +321,7 @@
321
321
  invalid: {
322
322
  illegal: {
323
323
  text: {
324
- $value: '{base.color.gray.0}',
324
+ $value: '{base.color.neutral.0}',
325
325
  $type: 'color',
326
326
  $extensions: {
327
327
  'org.primer.figma': {
@@ -347,7 +347,7 @@
347
347
  carriage: {
348
348
  return: {
349
349
  text: {
350
- $value: '{base.color.gray.0}',
350
+ $value: '{base.color.neutral.0}',
351
351
  $type: 'color',
352
352
  $extensions: {
353
353
  'org.primer.figma': {
@@ -405,7 +405,7 @@
405
405
  },
406
406
  },
407
407
  italic: {
408
- $value: '{base.color.gray.9}',
408
+ $value: '{base.color.neutral.9}',
409
409
  $type: 'color',
410
410
  $extensions: {
411
411
  'org.primer.figma': {
@@ -416,7 +416,7 @@
416
416
  },
417
417
  },
418
418
  bold: {
419
- $value: '{base.color.gray.9}',
419
+ $value: '{base.color.neutral.9}',
420
420
  $type: 'color',
421
421
  $extensions: {
422
422
  'org.primer.figma': {
@@ -500,7 +500,7 @@
500
500
  },
501
501
  ignored: {
502
502
  text: {
503
- $value: '{base.color.gray.1}',
503
+ $value: '{base.color.neutral.1}',
504
504
  $type: 'color',
505
505
  $extensions: {
506
506
  'org.primer.figma': {
@@ -541,7 +541,7 @@
541
541
  sublimelinter: {
542
542
  gutter: {
543
543
  mark: {
544
- $value: '{base.color.gray.4}',
544
+ $value: '{base.color.neutral.4}',
545
545
  $type: 'color',
546
546
  $extensions: {
547
547
  'org.primer.figma': {
@@ -3,7 +3,7 @@
3
3
  shadow: {
4
4
  $value: [
5
5
  {
6
- color: '{base.color.gray.9}',
6
+ color: '{base.color.neutral.9}',
7
7
  alpha: 1,
8
8
  offsetX: '0px',
9
9
  offsetY: '0px',
@@ -187,7 +187,7 @@
187
187
  medium: {
188
188
  $value: [
189
189
  {
190
- color: '{base.color.gray.7}',
190
+ color: '{base.color.neutral.7}',
191
191
  alpha: 0.12,
192
192
  offsetX: '0px',
193
193
  offsetY: '3px',
@@ -217,7 +217,7 @@
217
217
  spread: '1px',
218
218
  },
219
219
  {
220
- color: '{base.color.gray.7}',
220
+ color: '{base.color.neutral.7}',
221
221
  alpha: 0.04,
222
222
  offsetX: '0px',
223
223
  offsetY: '6px',
@@ -225,7 +225,7 @@
225
225
  spread: '-3px',
226
226
  },
227
227
  {
228
- color: '{base.color.gray.7}',
228
+ color: '{base.color.neutral.7}',
229
229
  alpha: 0.12,
230
230
  offsetX: '0px',
231
231
  offsetY: '6px',
@@ -253,7 +253,7 @@
253
253
  spread: '1px',
254
254
  },
255
255
  {
256
- color: '{base.color.gray.7}',
256
+ color: '{base.color.neutral.7}',
257
257
  alpha: 0.08,
258
258
  offsetX: '0px',
259
259
  offsetY: '8px',
@@ -261,7 +261,7 @@
261
261
  spread: '-4px',
262
262
  },
263
263
  {
264
- color: '{base.color.gray.7}',
264
+ color: '{base.color.neutral.7}',
265
265
  alpha: 0.08,
266
266
  offsetX: '0px',
267
267
  offsetY: '4px',
@@ -269,7 +269,7 @@
269
269
  spread: '-4px',
270
270
  },
271
271
  {
272
- color: '{base.color.gray.7}',
272
+ color: '{base.color.neutral.7}',
273
273
  alpha: 0.08,
274
274
  offsetX: '0px',
275
275
  offsetY: '24px',
@@ -277,7 +277,7 @@
277
277
  spread: '-12px',
278
278
  },
279
279
  {
280
- color: '{base.color.gray.7}',
280
+ color: '{base.color.neutral.7}',
281
281
  alpha: 0.08,
282
282
  offsetX: '0px',
283
283
  offsetY: '48px',
@@ -305,7 +305,7 @@
305
305
  spread: '1px',
306
306
  },
307
307
  {
308
- color: '{base.color.gray.7}',
308
+ color: '{base.color.neutral.7}',
309
309
  alpha: 0.24,
310
310
  offsetX: '0px',
311
311
  offsetY: '40px',
@@ -333,7 +333,7 @@
333
333
  spread: '1px',
334
334
  },
335
335
  {
336
- color: '{base.color.gray.7}',
336
+ color: '{base.color.neutral.7}',
337
337
  alpha: 0.32,
338
338
  offsetX: '0px',
339
339
  offsetY: '56px',
@@ -353,7 +353,7 @@
353
353
  legacy: {
354
354
  $value: [
355
355
  {
356
- color: '{base.color.gray.7}',
356
+ color: '{base.color.neutral.7}',
357
357
  alpha: 0.04,
358
358
  offsetX: '0px',
359
359
  offsetY: '6px',
@@ -361,7 +361,7 @@
361
361
  spread: '-3px',
362
362
  },
363
363
  {
364
- color: '{base.color.gray.7}',
364
+ color: '{base.color.neutral.7}',
365
365
  alpha: 0.12,
366
366
  offsetX: '0px',
367
367
  offsetY: '6px',
@@ -34,20 +34,51 @@
34
34
  "text": {
35
35
  "display": {
36
36
  "lineBoxHeight": {
37
- "$value": "56px",
38
- "$type": "dimension"
37
+ "$value": 1.4,
38
+ "$type": "number",
39
+ "$extensions": {
40
+ "org.primer.data": {
41
+ "fontSize": 40
42
+ },
43
+ "org.primer.figma": {
44
+ "collection": "typography",
45
+ "scopes": ["all"],
46
+ "fontSizeInPx": 40
47
+ }
48
+ }
39
49
  },
40
50
  "size": {
41
51
  "$value": "40px",
42
- "$type": "dimension"
52
+ "$type": "dimension",
53
+ "$extensions": {
54
+ "org.primer.figma": {
55
+ "collection": "typography",
56
+ "scopes": ["all"]
57
+ }
58
+ }
43
59
  },
44
60
  "lineHeight": {
45
61
  "$value": 1.4,
46
- "$type": "number"
62
+ "$type": "number",
63
+ "$extensions": {
64
+ "org.primer.data": {
65
+ "fontSize": 40
66
+ },
67
+ "org.primer.figma": {
68
+ "collection": "typography",
69
+ "scopes": ["all"]
70
+ }
71
+ }
47
72
  },
48
73
  "weight": {
49
74
  "$value": "{base.text.weight.medium}",
50
- "$type": "fontWeight"
75
+ "$type": "fontWeight",
76
+ "$extensions": {
77
+ "org.primer.figma": {
78
+ "collection": "typography",
79
+ "scopes": ["all"]
80
+ }
81
+ }
51
82
  },
52
83
  "shorthand": {
53
84
  "$value": {
@@ -64,43 +95,106 @@
64
95
  "size": {
65
96
  "large": {
66
97
  "$value": "32px",
67
- "$type": "dimension"
98
+ "$type": "dimension",
99
+ "$extensions": {
100
+ "org.primer.figma": {
101
+ "collection": "typography",
102
+ "scopes": ["all"]
103
+ }
104
+ }
68
105
  },
69
106
  "medium": {
70
107
  "$value": "20px",
71
- "$type": "dimension"
108
+ "$type": "dimension",
109
+ "$extensions": {
110
+ "org.primer.figma": {
111
+ "collection": "typography",
112
+ "scopes": ["all"]
113
+ }
114
+ }
72
115
  },
73
116
  "small": {
74
117
  "$value": "16px",
75
- "$type": "dimension"
118
+ "$type": "dimension",
119
+ "$extensions": {
120
+ "org.primer.figma": {
121
+ "collection": "typography",
122
+ "scopes": ["all"]
123
+ }
124
+ }
76
125
  }
77
126
  },
78
127
  "lineHeight": {
79
128
  "large": {
80
129
  "$value": 1.5,
81
- "$type": "number"
130
+ "$type": "number",
131
+ "$extensions": {
132
+ "org.primer.data": {
133
+ "fontSize": 32
134
+ },
135
+ "org.primer.figma": {
136
+ "collection": "typography",
137
+ "scopes": ["all"]
138
+ }
139
+ }
82
140
  },
83
141
  "medium": {
84
142
  "$value": 1.6,
85
- "$type": "number"
143
+ "$type": "number",
144
+ "$extensions": {
145
+ "org.primer.data": {
146
+ "fontSize": 20
147
+ },
148
+ "org.primer.figma": {
149
+ "collection": "typography",
150
+ "scopes": ["all"]
151
+ }
152
+ }
86
153
  },
87
154
  "small": {
88
155
  "$value": 1.5,
89
- "$type": "number"
156
+ "$type": "number",
157
+ "$extensions": {
158
+ "org.primer.data": {
159
+ "fontSize": 16
160
+ },
161
+ "org.primer.figma": {
162
+ "collection": "typography",
163
+ "scopes": ["all"]
164
+ }
165
+ }
90
166
  }
91
167
  },
92
168
  "weight": {
93
169
  "large": {
94
170
  "$value": "{base.text.weight.semibold}",
95
- "$type": "fontWeight"
171
+ "$type": "fontWeight",
172
+ "$extensions": {
173
+ "org.primer.figma": {
174
+ "collection": "typography",
175
+ "scopes": ["all"]
176
+ }
177
+ }
96
178
  },
97
179
  "medium": {
98
180
  "$value": "{base.text.weight.semibold}",
99
- "$type": "fontWeight"
181
+ "$type": "fontWeight",
182
+ "$extensions": {
183
+ "org.primer.figma": {
184
+ "collection": "typography",
185
+ "scopes": ["all"]
186
+ }
187
+ }
100
188
  },
101
189
  "small": {
102
190
  "$value": "{base.text.weight.semibold}",
103
- "$type": "fontWeight"
191
+ "$type": "fontWeight",
192
+ "$extensions": {
193
+ "org.primer.figma": {
194
+ "collection": "typography",
195
+ "scopes": ["all"]
196
+ }
197
+ }
104
198
  }
105
199
  },
106
200
  "shorthand": {
@@ -139,15 +233,33 @@
139
233
  "subtitle": {
140
234
  "size": {
141
235
  "$value": "20px",
142
- "$type": "dimension"
236
+ "$type": "dimension",
237
+ "$extensions": {
238
+ "org.primer.figma": {
239
+ "collection": "typography",
240
+ "scopes": ["all"]
241
+ }
242
+ }
143
243
  },
144
244
  "lineHeight": {
145
245
  "$value": 1.6,
146
- "$type": "number"
246
+ "$type": "number",
247
+ "$extensions": {
248
+ "org.primer.figma": {
249
+ "collection": "typography",
250
+ "scopes": ["all"]
251
+ }
252
+ }
147
253
  },
148
254
  "weight": {
149
255
  "$value": "{base.text.weight.normal}",
150
- "$type": "fontWeight"
256
+ "$type": "fontWeight",
257
+ "$extensions": {
258
+ "org.primer.figma": {
259
+ "collection": "typography",
260
+ "scopes": ["all"]
261
+ }
262
+ }
151
263
  },
152
264
  "shorthand": {
153
265
  "$value": {
@@ -164,29 +276,74 @@
164
276
  "size": {
165
277
  "large": {
166
278
  "$value": "16px",
167
- "$type": "dimension"
279
+ "$type": "dimension",
280
+ "$extensions": {
281
+ "org.primer.figma": {
282
+ "collection": "typography",
283
+ "scopes": ["all"]
284
+ }
285
+ }
168
286
  },
169
287
  "medium": {
170
288
  "$value": "14px",
171
- "$type": "dimension"
289
+ "$type": "dimension",
290
+ "$extensions": {
291
+ "org.primer.figma": {
292
+ "collection": "typography",
293
+ "scopes": ["all"]
294
+ }
295
+ }
172
296
  },
173
297
  "small": {
174
298
  "$value": "12px",
175
- "$type": "dimension"
299
+ "$type": "dimension",
300
+ "$extensions": {
301
+ "org.primer.figma": {
302
+ "collection": "typography",
303
+ "scopes": ["all"]
304
+ }
305
+ }
176
306
  }
177
307
  },
178
308
  "lineHeight": {
179
309
  "large": {
180
310
  "$value": 1.5,
181
- "$type": "number"
311
+ "$type": "number",
312
+ "$extensions": {
313
+ "org.primer.data": {
314
+ "fontSize": 16
315
+ },
316
+ "org.primer.figma": {
317
+ "collection": "typography",
318
+ "scopes": ["all"]
319
+ }
320
+ }
182
321
  },
183
322
  "medium": {
184
323
  "$value": 1.4285,
185
- "$type": "number"
324
+ "$type": "number",
325
+ "$extensions": {
326
+ "org.primer.data": {
327
+ "fontSize": 14
328
+ },
329
+ "org.primer.figma": {
330
+ "collection": "typography",
331
+ "scopes": ["all"]
332
+ }
333
+ }
186
334
  },
187
335
  "small": {
188
336
  "$value": 1.6666,
189
- "$type": "number"
337
+ "$type": "number",
338
+ "$extensions": {
339
+ "org.primer.data": {
340
+ "fontSize": 12
341
+ },
342
+ "org.primer.figma": {
343
+ "collection": "typography",
344
+ "scopes": ["all"]
345
+ }
346
+ }
190
347
  }
191
348
  },
192
349
  "weight": {
@@ -229,15 +386,36 @@
229
386
  "caption": {
230
387
  "size": {
231
388
  "$value": "12px",
232
- "$type": "dimension"
389
+ "$type": "dimension",
390
+ "$extensions": {
391
+ "org.primer.figma": {
392
+ "collection": "typography",
393
+ "scopes": ["all"]
394
+ }
395
+ }
233
396
  },
234
397
  "lineHeight": {
235
398
  "$value": 1.3333,
236
- "$type": "number"
399
+ "$type": "number",
400
+ "$extensions": {
401
+ "org.primer.data": {
402
+ "fontSize": 12
403
+ },
404
+ "org.primer.figma": {
405
+ "collection": "typography",
406
+ "scopes": ["all"]
407
+ }
408
+ }
237
409
  },
238
410
  "weight": {
239
411
  "$value": "{base.text.weight.normal}",
240
- "$type": "fontWeight"
412
+ "$type": "fontWeight",
413
+ "$extensions": {
414
+ "org.primer.figma": {
415
+ "collection": "typography",
416
+ "scopes": ["all"]
417
+ }
418
+ }
241
419
  },
242
420
  "shorthand": {
243
421
  "$value": {
@@ -253,15 +431,36 @@
253
431
  "codeBlock": {
254
432
  "size": {
255
433
  "$value": "13px",
256
- "$type": "dimension"
434
+ "$type": "dimension",
435
+ "$extensions": {
436
+ "org.primer.figma": {
437
+ "collection": "typography",
438
+ "scopes": ["all"]
439
+ }
440
+ }
257
441
  },
258
442
  "lineHeight": {
259
443
  "$value": 1.5385,
260
- "$type": "number"
444
+ "$type": "number",
445
+ "$extensions": {
446
+ "org.primer.data": {
447
+ "fontSize": 13
448
+ },
449
+ "org.primer.figma": {
450
+ "collection": "typography",
451
+ "scopes": ["all"]
452
+ }
453
+ }
261
454
  },
262
455
  "weight": {
263
456
  "$value": "{base.text.weight.normal}",
264
- "$type": "fontWeight"
457
+ "$type": "fontWeight",
458
+ "$extensions": {
459
+ "org.primer.figma": {
460
+ "collection": "typography",
461
+ "scopes": ["all"]
462
+ }
463
+ }
265
464
  },
266
465
  "shorthand": {
267
466
  "$value": {
@@ -277,11 +476,23 @@
277
476
  "codeInline": {
278
477
  "size": {
279
478
  "$value": "0.9285em",
280
- "$type": "dimension"
479
+ "$type": "dimension",
480
+ "$extensions": {
481
+ "org.primer.figma": {
482
+ "collection": "typography",
483
+ "scopes": ["all"]
484
+ }
485
+ }
281
486
  },
282
487
  "weight": {
283
488
  "$value": "{base.text.weight.normal}",
284
- "$type": "fontWeight"
489
+ "$type": "fontWeight",
490
+ "$extensions": {
491
+ "org.primer.figma": {
492
+ "collection": "typography",
493
+ "scopes": ["all"]
494
+ }
495
+ }
285
496
  },
286
497
  "shorthand": {
287
498
  "$value": {
@@ -0,0 +1,33 @@
1
+ import type StyleDictionary from 'style-dictionary'
2
+ import {isNumber} from '../filters'
3
+ /**
4
+ * takes a value and returns it if its a px string if it is a float and the token has a fontSize value in extensions['org.primer.data']
5
+ * @param value
6
+ * @returns string
7
+ */
8
+ export const convertFloatToPixel = (token: StyleDictionary.TransformedToken) => {
9
+ // short circut if value is not a number
10
+ if (
11
+ typeof token.value !== 'number' ||
12
+ !token.$extensions?.['org.primer.data']?.fontSize ||
13
+ typeof token.$extensions?.['org.primer.data']?.fontSize !== 'number'
14
+ ) {
15
+ return token.value
16
+ }
17
+ // convert value
18
+ const convertedValue = token.$extensions?.['org.primer.data']?.fontSize * token.value
19
+ // return converted value
20
+ return convertedValue === 0 ? 0 : `${Math.round(convertedValue)}px`
21
+ }
22
+ /**
23
+ * @description converts a float value to a pixel value based on the provided fontSize on the tokersn extension
24
+ * @type value transformer — [StyleDictionary.ValueTransform](https://github.com/amzn/style-dictionary/blob/main/types/Transform.d.ts)
25
+ * @matcher matches all tokens of $type `isNumber`
26
+ * @transformer returns a pixel string
27
+ */
28
+ export const floatToPixel: StyleDictionary.Transform = {
29
+ type: `value`,
30
+ transitive: true,
31
+ matcher: isNumber,
32
+ transformer: (token: StyleDictionary.TransformedToken): string => convertFloatToPixel(token),
33
+ }
@@ -4,6 +4,7 @@ export {colorToHexAlpha} from './colorToHexAlpha'
4
4
  export {colorToHexMix} from './colorToHexMix'
5
5
  export {colorToRgbAlpha} from './colorToRgbAlpha'
6
6
  export {colorToRgbaFloat} from './colorToRgbaFloat'
7
+ export {floatToPixel} from './floatToPixel'
7
8
  export {dimensionToRem} from './dimensionToRem'
8
9
  export {dimensionToRemPxArray} from './dimensionToRemPxArray'
9
10
  export {dimensionToPixelUnitless} from './dimensionToPixelUnitless'