@primer/primitives 10.0.0-rc.eb6fe33a → 10.0.0-rc.f7aad39e

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 (46) hide show
  1. package/dist/build/PrimerStyleDictionary.js +26 -26
  2. package/dist/build/formats/typescriptExportDefinition.js +2 -2
  3. package/dist/build/parsers/w3cJsonParser.js +2 -2
  4. package/dist/build/schemas/designToken.js +0 -1
  5. package/dist/build/transformers/durationToCss.js +2 -2
  6. package/dist/css/base/motion/motion.css +17 -0
  7. package/dist/css/functional/motion/motion.css +4 -3
  8. package/dist/css/functional/typography/typography.css +43 -43
  9. package/dist/css/primitives.css +64 -46
  10. package/dist/docs/base/motion/motion.json +205 -0
  11. package/dist/docs/functional/motion/motion.json +18 -3
  12. package/dist/fallbacks/base/motion/motion.json +17 -0
  13. package/dist/fallbacks/functional/motion/motion.json +1 -0
  14. package/dist/figma/dimension/dimension.json +518 -518
  15. package/dist/figma/figma.json +26 -26
  16. package/dist/figma/scales/dark-dimmed.json +1787 -1787
  17. package/dist/figma/scales/dark-high-constrast.json +1787 -1787
  18. package/dist/figma/scales/dark.json +1460 -1460
  19. package/dist/figma/scales/light-high-constrast.json +1775 -1775
  20. package/dist/figma/scales/light.json +1447 -1447
  21. package/dist/figma/shadows/dark-colorblind.json +285 -285
  22. package/dist/figma/shadows/dark-dimmed.json +285 -285
  23. package/dist/figma/shadows/dark-high-contrast.json +285 -285
  24. package/dist/figma/shadows/dark-tritanopia.json +285 -285
  25. package/dist/figma/shadows/dark.json +285 -285
  26. package/dist/figma/shadows/light-colorblind.json +254 -254
  27. package/dist/figma/shadows/light-high-contrast.json +254 -254
  28. package/dist/figma/shadows/light-tritanopia.json +254 -254
  29. package/dist/figma/shadows/light.json +254 -254
  30. package/dist/figma/themes/dark-colorblind.json +5161 -5161
  31. package/dist/figma/themes/dark-dimmed.json +5551 -5551
  32. package/dist/figma/themes/dark-high-contrast.json +4324 -4324
  33. package/dist/figma/themes/dark-tritanopia.json +5264 -5264
  34. package/dist/figma/themes/dark.json +5679 -5679
  35. package/dist/figma/themes/light-colorblind.json +5094 -5094
  36. package/dist/figma/themes/light-high-contrast.json +4418 -4418
  37. package/dist/figma/themes/light-tritanopia.json +5151 -5151
  38. package/dist/figma/themes/light.json +5547 -5547
  39. package/dist/figma/typography/typography.json +162 -162
  40. package/dist/styleLint/base/motion/motion.json +205 -0
  41. package/dist/styleLint/functional/motion/motion.json +18 -3
  42. package/package.json +18 -21
  43. package/src/tokens/base/motion/easing.json5 +26 -0
  44. package/src/tokens/base/motion/timing.json5 +50 -0
  45. package/src/tokens/functional/motion/loading.json5 +1 -1
  46. 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.eb6fe33a",
3
+ "version": "10.0.0-rc.f7aad39e",
4
4
  "description": "Typography, spacing, and color primitives for Primer design system",
5
5
  "type": "module",
6
6
  "files": [
@@ -29,21 +29,21 @@
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": {
@@ -52,33 +52,30 @@
52
52
  "@changesets/cli": "^2.27.7",
53
53
  "@github/prettier-config": "^0.0.6",
54
54
  "@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",
55
+ "@types/node": "22.9",
56
+ "@typescript-eslint/eslint-plugin": "8.15",
57
+ "@typescript-eslint/parser": "8.15",
58
58
  "@vitest/coverage-v8": "^2.0.3",
59
59
  "color-blend": "^4.0.0",
60
60
  "color2k": "^2.0.3",
61
61
  "console-table-printer": "^2.12.1",
62
- "esbuild": "^0.23.1",
63
62
  "eslint": "^8.57.0",
64
63
  "eslint-config-prettier": "^9.1.0",
65
64
  "eslint-import-resolver-typescript": "3.6",
66
- "eslint-plugin-github": "^5.0.1",
67
- "eslint-plugin-jsx-a11y": "6.9",
65
+ "eslint-plugin-github": "5.1",
66
+ "eslint-plugin-jsx-a11y": "6.10",
68
67
  "eslint-plugin-mdx": "^3.1.5",
69
- "eslint-plugin-primer-react": "^5.3.0",
70
- "eslint-plugin-react": "7.34",
68
+ "eslint-plugin-react": "7.37",
71
69
  "eslint-plugin-react-hooks": "^4.6.2",
72
- "eslint-plugin-storybook": "^0.8.0",
73
70
  "json5": "^2.2.1",
74
71
  "markdown-table-ts": "^1.0.3",
75
72
  "prettier": "^3.3.3",
76
73
  "style-dictionary": "^4.1.3",
77
74
  "tsx": "^4.19.0",
78
- "typescript": "5.5",
75
+ "typescript": "5.6",
79
76
  "vitest": "^2.0.3",
80
77
  "zod": "3.23",
81
- "zod-validation-error": "3.3"
78
+ "zod-validation-error": "3.4"
82
79
  },
83
80
  "optionalDependencies": {
84
81
  "@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
  },