@primer/primitives 10.0.0-rc.4b3d8b21 → 10.0.0-rc.59775793

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 (47) hide show
  1. package/README.md +2 -2
  2. package/dist/build/PrimerStyleDictionary.js +26 -26
  3. package/dist/build/formats/typescriptExportDefinition.js +2 -2
  4. package/dist/build/parsers/w3cJsonParser.js +2 -2
  5. package/dist/build/schemas/designToken.js +0 -1
  6. package/dist/build/transformers/durationToCss.js +2 -2
  7. package/dist/css/base/motion/motion.css +17 -0
  8. package/dist/css/functional/motion/motion.css +4 -3
  9. package/dist/css/functional/typography/typography.css +43 -43
  10. package/dist/css/primitives.css +64 -46
  11. package/dist/docs/base/motion/motion.json +205 -0
  12. package/dist/docs/functional/motion/motion.json +18 -3
  13. package/dist/fallbacks/base/motion/motion.json +17 -0
  14. package/dist/fallbacks/functional/motion/motion.json +1 -0
  15. package/dist/figma/dimension/dimension.json +518 -518
  16. package/dist/figma/figma.json +26 -26
  17. package/dist/figma/scales/dark-dimmed.json +1787 -1787
  18. package/dist/figma/scales/dark-high-constrast.json +1787 -1787
  19. package/dist/figma/scales/dark.json +1460 -1460
  20. package/dist/figma/scales/light-high-constrast.json +1775 -1775
  21. package/dist/figma/scales/light.json +1447 -1447
  22. package/dist/figma/shadows/dark-colorblind.json +285 -285
  23. package/dist/figma/shadows/dark-dimmed.json +285 -285
  24. package/dist/figma/shadows/dark-high-contrast.json +285 -285
  25. package/dist/figma/shadows/dark-tritanopia.json +285 -285
  26. package/dist/figma/shadows/dark.json +285 -285
  27. package/dist/figma/shadows/light-colorblind.json +254 -254
  28. package/dist/figma/shadows/light-high-contrast.json +254 -254
  29. package/dist/figma/shadows/light-tritanopia.json +254 -254
  30. package/dist/figma/shadows/light.json +254 -254
  31. package/dist/figma/themes/dark-colorblind.json +5161 -5161
  32. package/dist/figma/themes/dark-dimmed.json +5551 -5551
  33. package/dist/figma/themes/dark-high-contrast.json +4324 -4324
  34. package/dist/figma/themes/dark-tritanopia.json +5264 -5264
  35. package/dist/figma/themes/dark.json +5679 -5679
  36. package/dist/figma/themes/light-colorblind.json +5094 -5094
  37. package/dist/figma/themes/light-high-contrast.json +4418 -4418
  38. package/dist/figma/themes/light-tritanopia.json +5151 -5151
  39. package/dist/figma/themes/light.json +5547 -5547
  40. package/dist/figma/typography/typography.json +162 -162
  41. package/dist/styleLint/base/motion/motion.json +205 -0
  42. package/dist/styleLint/functional/motion/motion.json +18 -3
  43. package/package.json +20 -22
  44. package/src/tokens/base/motion/easing.json5 +26 -0
  45. package/src/tokens/base/motion/timing.json5 +50 -0
  46. package/src/tokens/functional/motion/loading.json5 +1 -1
  47. package/src/tokens/functional/motion/patterns.json5 +9 -2
@@ -0,0 +1,205 @@
1
+ {
2
+ "base-easing-linear": {
3
+ "$value": [0, 0, 1, 1],
4
+ "$type": "cubicBezier",
5
+ "$description": "Ideal for non-movement properties, like opacity or background color.",
6
+ "filePath": "src/tokens/base/motion/easing.json5",
7
+ "isSource": true,
8
+ "original": {
9
+ "$value": [0, 0, 1, 1],
10
+ "$type": "cubicBezier",
11
+ "$description": "Ideal for non-movement properties, like opacity or background color."
12
+ },
13
+ "name": "base-easing-linear",
14
+ "attributes": {},
15
+ "path": ["base", "easing", "linear"]
16
+ },
17
+ "base-easing-easeIn": {
18
+ "$value": [0.7, 0.1, 0.75, 0.9],
19
+ "$type": "cubicBezier",
20
+ "$description": "Ideal for movement that starts on the page and ends off the page.",
21
+ "filePath": "src/tokens/base/motion/easing.json5",
22
+ "isSource": true,
23
+ "original": {
24
+ "$value": [0.7, 0.1, 0.75, 0.9],
25
+ "$type": "cubicBezier",
26
+ "$description": "Ideal for movement that starts on the page and ends off the page."
27
+ },
28
+ "name": "base-easing-easeIn",
29
+ "attributes": {},
30
+ "path": ["base", "easing", "easeIn"]
31
+ },
32
+ "base-easing-easeOut": {
33
+ "$value": [0.16, 1, 0.3, 1],
34
+ "$type": "cubicBezier",
35
+ "$description": "Ideal for movement that starts off the page and ends on the page.",
36
+ "filePath": "src/tokens/base/motion/easing.json5",
37
+ "isSource": true,
38
+ "original": {
39
+ "$value": [0.16, 1, 0.3, 1],
40
+ "$type": "cubicBezier",
41
+ "$description": "Ideal for movement that starts off the page and ends on the page."
42
+ },
43
+ "name": "base-easing-easeOut",
44
+ "attributes": {},
45
+ "path": ["base", "easing", "easeOut"]
46
+ },
47
+ "base-easing-easeInOut": {
48
+ "$value": [0.6, 0, 0.2, 1],
49
+ "$type": "cubicBezier",
50
+ "$description": "Ideal for movement that starts and ends on the page.",
51
+ "filePath": "src/tokens/base/motion/easing.json5",
52
+ "isSource": true,
53
+ "original": {
54
+ "$value": [0.6, 0, 0.2, 1],
55
+ "$type": "cubicBezier",
56
+ "$description": "Ideal for movement that starts and ends on the page."
57
+ },
58
+ "name": "base-easing-easeInOut",
59
+ "attributes": {},
60
+ "path": ["base", "easing", "easeInOut"]
61
+ },
62
+ "base-duration-0": {
63
+ "$value": "0ms",
64
+ "$type": "duration",
65
+ "filePath": "src/tokens/base/motion/timing.json5",
66
+ "isSource": true,
67
+ "original": {
68
+ "$value": "0ms",
69
+ "$type": "duration"
70
+ },
71
+ "name": "base-duration-0",
72
+ "attributes": {},
73
+ "path": ["base", "duration", "0"]
74
+ },
75
+ "base-duration-75": {
76
+ "$value": "75ms",
77
+ "$type": "duration",
78
+ "filePath": "src/tokens/base/motion/timing.json5",
79
+ "isSource": true,
80
+ "original": {
81
+ "$value": "75ms",
82
+ "$type": "duration"
83
+ },
84
+ "name": "base-duration-75",
85
+ "attributes": {},
86
+ "path": ["base", "duration", "75"]
87
+ },
88
+ "base-duration-200": {
89
+ "$value": "200ms",
90
+ "$type": "duration",
91
+ "filePath": "src/tokens/base/motion/timing.json5",
92
+ "isSource": true,
93
+ "original": {
94
+ "$value": "200ms",
95
+ "$type": "duration"
96
+ },
97
+ "name": "base-duration-200",
98
+ "attributes": {},
99
+ "path": ["base", "duration", "200"]
100
+ },
101
+ "base-duration-300": {
102
+ "$value": "300ms",
103
+ "$type": "duration",
104
+ "filePath": "src/tokens/base/motion/timing.json5",
105
+ "isSource": true,
106
+ "original": {
107
+ "$value": "300ms",
108
+ "$type": "duration"
109
+ },
110
+ "name": "base-duration-300",
111
+ "attributes": {},
112
+ "path": ["base", "duration", "300"]
113
+ },
114
+ "base-duration-400": {
115
+ "$value": "400ms",
116
+ "$type": "duration",
117
+ "filePath": "src/tokens/base/motion/timing.json5",
118
+ "isSource": true,
119
+ "original": {
120
+ "$value": "400ms",
121
+ "$type": "duration"
122
+ },
123
+ "name": "base-duration-400",
124
+ "attributes": {},
125
+ "path": ["base", "duration", "400"]
126
+ },
127
+ "base-duration-500": {
128
+ "$value": "500ms",
129
+ "$type": "duration",
130
+ "filePath": "src/tokens/base/motion/timing.json5",
131
+ "isSource": true,
132
+ "original": {
133
+ "$value": "500ms",
134
+ "$type": "duration"
135
+ },
136
+ "name": "base-duration-500",
137
+ "attributes": {},
138
+ "path": ["base", "duration", "500"]
139
+ },
140
+ "base-duration-600": {
141
+ "$value": "600ms",
142
+ "$type": "duration",
143
+ "filePath": "src/tokens/base/motion/timing.json5",
144
+ "isSource": true,
145
+ "original": {
146
+ "$value": "600ms",
147
+ "$type": "duration"
148
+ },
149
+ "name": "base-duration-600",
150
+ "attributes": {},
151
+ "path": ["base", "duration", "600"]
152
+ },
153
+ "base-duration-700": {
154
+ "$value": "700ms",
155
+ "$type": "duration",
156
+ "filePath": "src/tokens/base/motion/timing.json5",
157
+ "isSource": true,
158
+ "original": {
159
+ "$value": "700ms",
160
+ "$type": "duration"
161
+ },
162
+ "name": "base-duration-700",
163
+ "attributes": {},
164
+ "path": ["base", "duration", "700"]
165
+ },
166
+ "base-duration-800": {
167
+ "$value": "800ms",
168
+ "$type": "duration",
169
+ "filePath": "src/tokens/base/motion/timing.json5",
170
+ "isSource": true,
171
+ "original": {
172
+ "$value": "800ms",
173
+ "$type": "duration"
174
+ },
175
+ "name": "base-duration-800",
176
+ "attributes": {},
177
+ "path": ["base", "duration", "800"]
178
+ },
179
+ "base-duration-900": {
180
+ "$value": "900ms",
181
+ "$type": "duration",
182
+ "filePath": "src/tokens/base/motion/timing.json5",
183
+ "isSource": true,
184
+ "original": {
185
+ "$value": "900ms",
186
+ "$type": "duration"
187
+ },
188
+ "name": "base-duration-900",
189
+ "attributes": {},
190
+ "path": ["base", "duration", "900"]
191
+ },
192
+ "base-duration-1000": {
193
+ "$value": "1000ms",
194
+ "$type": "duration",
195
+ "filePath": "src/tokens/base/motion/timing.json5",
196
+ "isSource": true,
197
+ "original": {
198
+ "$value": "1000ms",
199
+ "$type": "duration"
200
+ },
201
+ "name": "base-duration-1000",
202
+ "attributes": {},
203
+ "path": ["base", "duration", "1000"]
204
+ }
205
+ }
@@ -6,7 +6,7 @@
6
6
  "filePath": "src/tokens/functional/motion/loading.json5",
7
7
  "isSource": true,
8
8
  "original": {
9
- "$value": "1000ms",
9
+ "$value": "{base.duration.1000}",
10
10
  "$type": "duration",
11
11
  "$description": "The amount of time to wait before showing a loading indicator or announcing a loading state to assistive technologies."
12
12
  },
@@ -21,7 +21,7 @@
21
21
  "filePath": "src/tokens/functional/motion/patterns.json5",
22
22
  "isSource": true,
23
23
  "original": {
24
- "$value": "1000ms",
24
+ "$value": "{base.duration.1000}",
25
25
  "$type": "duration",
26
26
  "$description": "The amount of time it takes the \"Spinner\" loading indicator to make a full 360deg rotation"
27
27
  },
@@ -29,6 +29,21 @@
29
29
  "attributes": {},
30
30
  "path": ["motion", "spinner", "duration", "rotation"]
31
31
  },
32
+ "motion-spinner-easing-rotation": {
33
+ "$value": [0, 0, 1, 1],
34
+ "$type": "cubicBezier",
35
+ "$description": "The easing curve for the \"Spinner\" loading indicator rotation",
36
+ "filePath": "src/tokens/functional/motion/patterns.json5",
37
+ "isSource": true,
38
+ "original": {
39
+ "$value": "{base.easing.linear}",
40
+ "$type": "cubicBezier",
41
+ "$description": "The easing curve for the \"Spinner\" loading indicator rotation"
42
+ },
43
+ "name": "motion-spinner-easing-rotation",
44
+ "attributes": {},
45
+ "path": ["motion", "spinner", "easing", "rotation"]
46
+ },
32
47
  "motion-skeletonLoader-shimmer-duration-scale": {
33
48
  "$value": "1000ms",
34
49
  "$type": "duration",
@@ -36,7 +51,7 @@
36
51
  "filePath": "src/tokens/functional/motion/patterns.json5",
37
52
  "isSource": true,
38
53
  "original": {
39
- "$value": "1000ms",
54
+ "$value": "{base.duration.1000}",
40
55
  "$type": "duration",
41
56
  "$description": "The amount of times it takes the \"shimmer\" effect to go from the start (left) of the skeleton loader to the end (right)"
42
57
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer/primitives",
3
- "version": "10.0.0-rc.4b3d8b21",
3
+ "version": "10.0.0-rc.59775793",
4
4
  "description": "Typography, spacing, and color primitives for Primer design system",
5
5
  "type": "module",
6
6
  "files": [
@@ -29,56 +29,54 @@
29
29
  "build:figma": "tsx scripts/buildFigma.ts",
30
30
  "build:config": "tsc -p build.tsconfig.jsonc && tsx ./scripts/copyDir.ts src/types dist/build/types",
31
31
  "clean": "rm -rf dist",
32
- "tokenJson:check": "tsx scripts/diffThemes.ts && tsx scripts/diffTokenProps.ts",
33
- "contrast:check": "tsx scripts/color-contrast.ts",
34
- "format": "prettier --write '**/*.{js,jsx,ts,tsx,md,mdx,css}'",
35
- "format:check": "prettier --check '**/*.{js,jsx,ts,tsx,md,mdx,css}'",
36
- "install:storybook": "cd docs/storybook && npm ci --legacy-peer-deps --no-audit --no-fund",
32
+ "validate:tokenJson": "tsx scripts/diffThemes.ts && tsx scripts/diffTokenProps.ts",
33
+ "validate:contrast": "tsx scripts/color-contrast.ts",
34
+ "format": "prettier --check '**/*.{js,jsx,ts,tsx,md,mdx,css}'",
35
+ "format:fix": "prettier --write '**/*.{js,jsx,ts,tsx,md,mdx,css}'",
37
36
  "lint": "ESLINT_USE_FLAT_CONFIG=false eslint '**/*.{js,ts,tsx,md,mdx}' --config .eslintrc.cjs && npm run lint:tokens",
38
37
  "lint:fix": "eslint '**/*.{js,ts,tsx,md,mdx}' --fix --max-warnings=0 --config .eslintrc.cjs",
39
38
  "lint:tokens": "tsx ./scripts/validateTokenJson.ts",
39
+ "test": "npm run test:unit && npm run test:integration",
40
+ "test:unit": "vitest run --coverage",
41
+ "test:integration": "vitest run -r integration",
40
42
  "prebuild": "rm -rf dist",
41
43
  "prepack": "npm run build",
42
44
  "release": "changeset publish",
43
- "start:storybook": "npm run build && cd docs/storybook && npm run storybook",
44
- "test": "npm run test:unit && npm run test:integration",
45
- "test:unit": "vitest run --coverage",
46
- "test:integration": "vitest run -r integration"
45
+ "install:storybook": "cd docs/storybook && npm ci --legacy-peer-deps --no-audit --no-fund",
46
+ "start:storybook": "npm run build && cd docs/storybook && npm run storybook"
47
47
  },
48
48
  "prettier": "@github/prettier-config",
49
49
  "devDependencies": {
50
- "@actions/github": "^6.0.0",
50
+ "@actions/core": "^1.11.1",
51
+ "@actions/glob": "^0.5.0",
51
52
  "@changesets/changelog-github": "^0.5.0",
52
53
  "@changesets/cli": "^2.27.7",
53
54
  "@github/prettier-config": "^0.0.6",
54
55
  "@playwright/test": "^1.47.1",
55
- "@types/node": "^20.14.11",
56
- "@typescript-eslint/eslint-plugin": "^7.15.0",
57
- "@typescript-eslint/parser": "^7.15.0",
56
+ "@types/node": "22.9",
57
+ "@typescript-eslint/eslint-plugin": "8.15",
58
+ "@typescript-eslint/parser": "8.15",
58
59
  "@vitest/coverage-v8": "^2.0.3",
59
60
  "color-blend": "^4.0.0",
60
61
  "color2k": "^2.0.3",
61
62
  "console-table-printer": "^2.12.1",
62
- "esbuild": "^0.23.1",
63
63
  "eslint": "^8.57.0",
64
64
  "eslint-config-prettier": "^9.1.0",
65
65
  "eslint-import-resolver-typescript": "3.6",
66
- "eslint-plugin-github": "^5.0.1",
67
- "eslint-plugin-jsx-a11y": "6.9",
66
+ "eslint-plugin-github": "5.1",
67
+ "eslint-plugin-jsx-a11y": "6.10",
68
68
  "eslint-plugin-mdx": "^3.1.5",
69
- "eslint-plugin-primer-react": "^5.3.0",
70
- "eslint-plugin-react": "7.34",
69
+ "eslint-plugin-react": "7.37",
71
70
  "eslint-plugin-react-hooks": "^4.6.2",
72
- "eslint-plugin-storybook": "^0.8.0",
73
71
  "json5": "^2.2.1",
74
72
  "markdown-table-ts": "^1.0.3",
75
73
  "prettier": "^3.3.3",
76
74
  "style-dictionary": "^4.1.3",
77
75
  "tsx": "^4.19.0",
78
- "typescript": "5.5",
76
+ "typescript": "5.6",
79
77
  "vitest": "^2.0.3",
80
78
  "zod": "3.23",
81
- "zod-validation-error": "3.3"
79
+ "zod-validation-error": "3.4"
82
80
  },
83
81
  "optionalDependencies": {
84
82
  "@rollup/rollup-linux-x64-gnu": "^4.22.0"
@@ -0,0 +1,26 @@
1
+ {
2
+ base: {
3
+ easing: {
4
+ linear: {
5
+ $value: [0, 0, 1, 1],
6
+ $type: 'cubicBezier',
7
+ $description: 'Ideal for non-movement properties, like opacity or background color.',
8
+ },
9
+ easeIn: {
10
+ $value: [0.7, 0.1, 0.75, 0.9],
11
+ $type: 'cubicBezier',
12
+ $description: 'Ideal for movement that starts on the page and ends off the page.',
13
+ },
14
+ easeOut: {
15
+ $value: [0.16, 1, 0.3, 1],
16
+ $type: 'cubicBezier',
17
+ $description: 'Ideal for movement that starts off the page and ends on the page.',
18
+ },
19
+ easeInOut: {
20
+ $value: [0.6, 0, 0.2, 1],
21
+ $type: 'cubicBezier',
22
+ $description: 'Ideal for movement that starts and ends on the page.',
23
+ },
24
+ },
25
+ },
26
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ base: {
3
+ duration: {
4
+ '0': {
5
+ $value: '0ms',
6
+ $type: 'duration',
7
+ },
8
+ '75': {
9
+ $value: '75ms',
10
+ $type: 'duration',
11
+ },
12
+ '200': {
13
+ $value: '200ms',
14
+ $type: 'duration',
15
+ },
16
+ '300': {
17
+ $value: '300ms',
18
+ $type: 'duration',
19
+ },
20
+ '400': {
21
+ $value: '400ms',
22
+ $type: 'duration',
23
+ },
24
+ '500': {
25
+ $value: '500ms',
26
+ $type: 'duration',
27
+ },
28
+ '600': {
29
+ $value: '600ms',
30
+ $type: 'duration',
31
+ },
32
+ '700': {
33
+ $value: '700ms',
34
+ $type: 'duration',
35
+ },
36
+ '800': {
37
+ $value: '800ms',
38
+ $type: 'duration',
39
+ },
40
+ '900': {
41
+ $value: '900ms',
42
+ $type: 'duration',
43
+ },
44
+ '1000': {
45
+ $value: '1000ms',
46
+ $type: 'duration',
47
+ },
48
+ },
49
+ },
50
+ }
@@ -7,7 +7,7 @@
7
7
  loading: {
8
8
  delay: {
9
9
  default: {
10
- $value: '1000ms',
10
+ $value: '{base.duration.1000}',
11
11
  $type: 'duration',
12
12
  $description: 'The amount of time to wait before showing a loading indicator or announcing a loading state to assistive technologies.',
13
13
  },
@@ -7,17 +7,24 @@
7
7
  spinner: {
8
8
  duration: {
9
9
  rotation: {
10
- $value: '1000ms',
10
+ $value: '{base.duration.1000}',
11
11
  $type: 'duration',
12
12
  $description: 'The amount of time it takes the "Spinner" loading indicator to make a full 360deg rotation',
13
13
  },
14
14
  },
15
+ easing: {
16
+ rotation: {
17
+ $value: '{base.easing.linear}',
18
+ $type: 'cubicBezier',
19
+ $description: 'The easing curve for the "Spinner" loading indicator rotation',
20
+ },
21
+ },
15
22
  },
16
23
  skeletonLoader: {
17
24
  shimmer: {
18
25
  duration: {
19
26
  scale: {
20
- $value: '1000ms',
27
+ $value: '{base.duration.1000}',
21
28
  $type: 'duration',
22
29
  $description: 'The amount of times it takes the "shimmer" effect to go from the start (left) of the skeleton loader to the end (right)',
23
30
  },