Skip to content

Commit 3cec8c2

Browse files
Update tokens to use text size scale (#1298)
* update tokens to use lineHeight scale * schema fix * Update .changeset/rare-zebras-refuse.md * add tests
1 parent bfe0d46 commit 3cec8c2

File tree

6 files changed

+98
-11
lines changed

6 files changed

+98
-11
lines changed

.changeset/rare-zebras-refuse.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/primitives': minor
3+
---
4+
5+
Adding text size scale

src/schemas/dimensionToken.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const dimensionToken = baseToken
1313
$extensions: z
1414
.object({
1515
'org.primer.figma': z.object({
16-
collection: collection(['base/size', 'functional/size', 'pattern/size', 'typography']),
16+
collection: collection(['base/size', 'base/typography', 'functional/size', 'pattern/size', 'typography']),
1717
scopes: scopes([
1818
'all',
1919
'size',

src/schemas/dimensionValue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {schemaErrorMessage} from '../utilities/index.js'
33

44
export const dimensionValue = z.union([
55
z.string().superRefine((dim, ctx) => {
6-
if (!/(^-?[0-9]+(px|rem)$|^-?[0-9]+\.?[0-9]*em$)/.test(dim)) {
6+
if (!/(^-?[0-9]+\.?[0-9]*(px|rem)$|^-?[0-9]+\.?[0-9]*em$)/.test(dim)) {
77
ctx.addIssue({
88
code: 'custom',
99
message: schemaErrorMessage(

src/schemas/dimensionValueSchema.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ describe('Schema: dimensionValue', () => {
1010
expect(dimensionValue.safeParse(0).success).toStrictEqual(true)
1111
})
1212

13+
it('passes on decimal rem values', () => {
14+
expect(dimensionValue.safeParse('0.75rem').success).toStrictEqual(true)
15+
expect(dimensionValue.safeParse('0.875rem').success).toStrictEqual(true)
16+
expect(dimensionValue.safeParse('1.25rem').success).toStrictEqual(true)
17+
expect(dimensionValue.safeParse('2.5rem').success).toStrictEqual(true)
18+
expect(dimensionValue.safeParse('-0.5rem').success).toStrictEqual(true)
19+
})
20+
21+
it('passes on decimal px values', () => {
22+
expect(dimensionValue.safeParse('2.5px').success).toStrictEqual(true)
23+
expect(dimensionValue.safeParse('0.5px').success).toStrictEqual(true)
24+
expect(dimensionValue.safeParse('-1.5px').success).toStrictEqual(true)
25+
})
26+
1327
it('fails on invalid value', () => {
1428
expect(dimensionValue.safeParse('1%').success).toStrictEqual(false)
1529
expect(dimensionValue.safeParse(1).success).toStrictEqual(false)

src/tokens/base/typography/typography.json5

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,74 @@
11
{
22
base: {
33
text: {
4+
size: {
5+
xs: {
6+
$value: '0.75rem',
7+
$type: 'dimension',
8+
$description: '12px - Smallest text size for captions and compact UI elements.',
9+
$extensions: {
10+
'org.primer.figma': {
11+
collection: 'base/typography',
12+
scopes: ['fontSize'],
13+
},
14+
},
15+
},
16+
sm: {
17+
$value: '0.875rem',
18+
$type: 'dimension',
19+
$description: '14px - Default body text size for UI.',
20+
$extensions: {
21+
'org.primer.figma': {
22+
collection: 'base/typography',
23+
scopes: ['fontSize'],
24+
},
25+
},
26+
},
27+
md: {
28+
$value: '1rem',
29+
$type: 'dimension',
30+
$description: '16px - Large body text and small titles.',
31+
$extensions: {
32+
'org.primer.figma': {
33+
collection: 'base/typography',
34+
scopes: ['fontSize'],
35+
},
36+
},
37+
},
38+
lg: {
39+
$value: '1.25rem',
40+
$type: 'dimension',
41+
$description: '20px - Medium titles and subtitles.',
42+
$extensions: {
43+
'org.primer.figma': {
44+
collection: 'base/typography',
45+
scopes: ['fontSize'],
46+
},
47+
},
48+
},
49+
xl: {
50+
$value: '2rem',
51+
$type: 'dimension',
52+
$description: '32px - Large titles and page headings.',
53+
$extensions: {
54+
'org.primer.figma': {
55+
collection: 'base/typography',
56+
scopes: ['fontSize'],
57+
},
58+
},
59+
},
60+
'2xl': {
61+
$value: '2.5rem',
62+
$type: 'dimension',
63+
$description: '40px - Display text for hero sections.',
64+
$extensions: {
65+
'org.primer.figma': {
66+
collection: 'base/typography',
67+
scopes: ['fontSize'],
68+
},
69+
},
70+
},
71+
},
472
weight: {
573
light: {
674
$type: 'fontWeight',

src/tokens/functional/typography/typography.json5

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
},
5959
},
6060
size: {
61-
$value: '40px',
61+
$value: '{base.text.size.2xl}',
6262
$type: 'dimension',
6363
$extensions: {
6464
'org.primer.figma': {
@@ -104,7 +104,7 @@
104104
title: {
105105
size: {
106106
large: {
107-
$value: '32px',
107+
$value: '{base.text.size.xl}',
108108
$type: 'dimension',
109109
$extensions: {
110110
'org.primer.figma': {
@@ -114,7 +114,7 @@
114114
},
115115
},
116116
medium: {
117-
$value: '20px',
117+
$value: '{base.text.size.lg}',
118118
$type: 'dimension',
119119
$extensions: {
120120
'org.primer.figma': {
@@ -124,7 +124,7 @@
124124
},
125125
},
126126
small: {
127-
$value: '16px',
127+
$value: '{base.text.size.md}',
128128
$type: 'dimension',
129129
$extensions: {
130130
'org.primer.figma': {
@@ -242,7 +242,7 @@
242242
},
243243
subtitle: {
244244
size: {
245-
$value: '20px',
245+
$value: '{base.text.size.lg}',
246246
$type: 'dimension',
247247
$extensions: {
248248
'org.primer.figma': {
@@ -288,7 +288,7 @@
288288
body: {
289289
size: {
290290
large: {
291-
$value: '16px',
291+
$value: '{base.text.size.md}',
292292
$type: 'dimension',
293293
$extensions: {
294294
'org.primer.figma': {
@@ -298,7 +298,7 @@
298298
},
299299
},
300300
medium: {
301-
$value: '14px',
301+
$value: '{base.text.size.sm}',
302302
$type: 'dimension',
303303
$extensions: {
304304
'org.primer.figma': {
@@ -308,7 +308,7 @@
308308
},
309309
},
310310
small: {
311-
$value: '12px',
311+
$value: '{base.text.size.xs}',
312312
$type: 'dimension',
313313
$extensions: {
314314
'org.primer.figma': {
@@ -404,7 +404,7 @@
404404
},
405405
caption: {
406406
size: {
407-
$value: '12px',
407+
$value: '{base.text.size.xs}',
408408
$type: 'dimension',
409409
$extensions: {
410410
'org.primer.figma': {

0 commit comments

Comments
 (0)