@nebutra/tokens 0.1.2 → 0.1.3

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 (69) hide show
  1. package/brands/gsap/brand.json +17 -64
  2. package/brands/linear/brand.json +18 -57
  3. package/brands/notion/brand.json +18 -62
  4. package/brands/raycast/brand.json +17 -64
  5. package/brands/stripe/brand.json +16 -72
  6. package/brands/vanta/brand.json +16 -63
  7. package/brands/vercel/brand.json +16 -50
  8. package/dist/brand-package/index.d.ts +123 -0
  9. package/dist/brand-package/index.js +61 -0
  10. package/dist/brand-package/index.js.map +1 -0
  11. package/dist/brand-package/use-brand.d.ts +2 -0
  12. package/dist/brand-package/use-brand.js +12 -0
  13. package/dist/brand-package/use-brand.js.map +1 -0
  14. package/dist/chunk-ALJTP5HL.js +881 -0
  15. package/dist/chunk-ALJTP5HL.js.map +1 -0
  16. package/dist/chunk-RGUJQOLH.js +1582 -0
  17. package/dist/chunk-RGUJQOLH.js.map +1 -0
  18. package/dist/index.d.ts +81 -0
  19. package/dist/index.js +187 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/use-brand-C8d4DPqE.d.ts +371 -0
  22. package/package.json +34 -9
  23. package/recipe.css +322 -1
  24. package/skins/README.md +2 -4
  25. package/skins/gsap.css +31 -119
  26. package/skins/linear.css +33 -117
  27. package/skins/notion.css +27 -117
  28. package/skins/raycast.css +32 -119
  29. package/skins/stripe.css +27 -129
  30. package/skins/vanta.css +27 -122
  31. package/skins/vercel.css +30 -111
  32. package/styles.css +388 -113
  33. package/.turbo/turbo-build.log +0 -8
  34. package/.turbo/turbo-typecheck.log +0 -4
  35. package/AGENTS.md +0 -45
  36. package/DESIGN.md +0 -357
  37. package/scripts/compile-brand-run.ts +0 -79
  38. package/scripts/compile-brand.mjs +0 -25
  39. package/scripts/emit-skins-run.ts +0 -62
  40. package/scripts/emit-skins.mjs +0 -31
  41. package/scripts/sync-styles.mjs +0 -29
  42. package/src/brand-package/__tests__/compile-refero.test.ts +0 -427
  43. package/src/brand-package/__tests__/emit-css.test.ts +0 -130
  44. package/src/brand-package/apply-brand.ts +0 -92
  45. package/src/brand-package/compile-helpers.ts +0 -170
  46. package/src/brand-package/compile-refero.ts +0 -69
  47. package/src/brand-package/emit-css.ts +0 -468
  48. package/src/brand-package/hex-to-hsl.ts +0 -100
  49. package/src/brand-package/index.ts +0 -71
  50. package/src/brand-package/infer-recipe.ts +0 -198
  51. package/src/brand-package/normalize.ts +0 -295
  52. package/src/brand-package/presets/context.ts +0 -17
  53. package/src/brand-package/presets/generic.ts +0 -214
  54. package/src/brand-package/presets/gsap.ts +0 -146
  55. package/src/brand-package/presets/index.ts +0 -31
  56. package/src/brand-package/presets/linear.ts +0 -183
  57. package/src/brand-package/presets/notion.ts +0 -208
  58. package/src/brand-package/presets/raycast.ts +0 -138
  59. package/src/brand-package/presets/recipe.ts +0 -61
  60. package/src/brand-package/presets/stripe.ts +0 -207
  61. package/src/brand-package/presets/vanta.ts +0 -220
  62. package/src/brand-package/presets/vercel.ts +0 -187
  63. package/src/brand-package/types.ts +0 -285
  64. package/src/brand-package/use-brand.ts +0 -207
  65. package/src/brand-package/validate.ts +0 -108
  66. package/src/index.ts +0 -67
  67. package/src/theme-provider.tsx +0 -246
  68. package/tsconfig.json +0 -11
  69. package/turbo.json +0 -15
@@ -76,68 +76,22 @@
76
76
  }
77
77
  ]
78
78
  },
79
- "zones": {
80
- "product": {
81
- "caption": {
82
- "fontSize": "14px",
83
- "lineHeight": 1.4,
84
- "fontWeight": 400,
85
- "letterSpacing": "-0.14px"
86
- },
87
- "bodySm": {
88
- "fontSize": "16px",
89
- "lineHeight": 1.15,
90
- "fontWeight": 400
91
- },
92
- "body": {
93
- "fontSize": "19px",
94
- "lineHeight": 1.15,
95
- "fontWeight": 400
96
- },
97
- "bodyLg": {
98
- "fontSize": "23px",
99
- "lineHeight": 1.38,
100
- "fontWeight": 400,
101
- "letterSpacing": "-0.23px"
102
- },
103
- "subheading": {
104
- "fontSize": "34px",
105
- "lineHeight": 1.2,
106
- "fontWeight": 400,
107
- "letterSpacing": "-0.34px"
108
- },
109
- "heading": {
110
- "fontSize": "44px",
111
- "lineHeight": 1.2,
112
- "fontWeight": 600,
113
- "letterSpacing": "-0.44px"
114
- }
115
- },
116
- "marketing": {
117
- "body": {
118
- "fontSize": "19px",
119
- "lineHeight": 1.15,
120
- "fontWeight": 400
121
- },
122
- "heading": {
123
- "fontSize": "66px",
124
- "lineHeight": 1.2,
125
- "fontWeight": 600,
126
- "letterSpacing": "-0.66px"
127
- },
128
- "headingLg": {
129
- "fontSize": "101px",
130
- "lineHeight": 1,
131
- "fontWeight": 600,
132
- "letterSpacing": "-1.11px"
133
- },
134
- "display": {
135
- "fontSize": "224px",
136
- "lineHeight": 0.9,
137
- "fontWeight": 600,
138
- "letterSpacing": "-4.48px"
139
- }
140
- }
79
+ "motion": {
80
+ "easeOut": "cubic-bezier(0.22, 1, 0.36, 1)",
81
+ "easeInOut": "cubic-bezier(0.65, 0, 0.35, 1)",
82
+ "easeSpring": "cubic-bezier(0.68, -0.55, 0.265, 1.55)",
83
+ "micro": 120,
84
+ "flow": 250,
85
+ "reveal": 400,
86
+ "cinematic": 700
87
+ },
88
+ "spacing": {
89
+ "xs": "0.5rem",
90
+ "sm": "0.875rem",
91
+ "md": "1.25rem",
92
+ "lg": "1.75rem",
93
+ "xl": "2.5rem",
94
+ "2xl": "3.5rem"
141
95
  },
142
96
  "extensions": {
143
97
  "categories": {
@@ -152,8 +106,7 @@
152
106
  "sourceUrl": "https://gsap.com",
153
107
  "notes": [
154
108
  "Outline-first product controls; category colors are marketing extensions.",
155
- "Replace typography.faces[].src with Create Center hosted font URLs.",
156
- "Use data-zone=\"marketing\" for hero/display; product zone for app chrome."
109
+ "Replace typography.faces[].src with Create Center hosted font URLs."
157
110
  ]
158
111
  },
159
112
  "roles": {
@@ -40,9 +40,9 @@
40
40
  "pill": "9999px"
41
41
  },
42
42
  "elevationTokens": {
43
- "card": "var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05))",
44
- "control": "var(--shadow-xs, 0 1px 2px 0 rgb(0 0 0 / 0.04))",
45
- "raised": "var(--shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1))"
43
+ "card": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
44
+ "control": "0 1px 2px 0 rgb(0 0 0 / 0.04)",
45
+ "raised": "0 4px 6px -1px rgb(0 0 0 / 0.1)"
46
46
  }
47
47
  },
48
48
  "typography": {
@@ -63,60 +63,21 @@
63
63
  }
64
64
  ]
65
65
  },
66
- "zones": {
67
- "product": {
68
- "caption": {
69
- "fontSize": "13px",
70
- "lineHeight": 1.2,
71
- "fontWeight": 400
72
- },
73
- "bodySm": {
74
- "fontSize": "14px",
75
- "lineHeight": 1.5,
76
- "fontWeight": 400
77
- },
78
- "body": {
79
- "fontSize": "14px",
80
- "lineHeight": 1.5,
81
- "fontWeight": 400
82
- },
83
- "bodyLg": {
84
- "fontSize": "16px",
85
- "lineHeight": 1.5,
86
- "fontWeight": 400
87
- },
88
- "heading": {
89
- "fontSize": "24px",
90
- "lineHeight": 1.25,
91
- "fontWeight": 510,
92
- "letterSpacing": "-0.012em"
93
- },
94
- "display": {
95
- "fontSize": "32px",
96
- "lineHeight": 1.15,
97
- "fontWeight": 510,
98
- "letterSpacing": "-0.022em"
99
- }
100
- },
101
- "marketing": {
102
- "body": {
103
- "fontSize": "15px",
104
- "lineHeight": 1.6,
105
- "fontWeight": 400
106
- },
107
- "heading": {
108
- "fontSize": "48px",
109
- "lineHeight": 1,
110
- "fontWeight": 510,
111
- "letterSpacing": "-0.022em"
112
- },
113
- "display": {
114
- "fontSize": "72px",
115
- "lineHeight": 1,
116
- "fontWeight": 510,
117
- "letterSpacing": "-0.022em"
118
- }
119
- }
66
+ "motion": {
67
+ "easeOut": "cubic-bezier(0.16, 1, 0.3, 1)",
68
+ "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)",
69
+ "micro": 80,
70
+ "flow": 140,
71
+ "reveal": 200,
72
+ "cinematic": 320
73
+ },
74
+ "spacing": {
75
+ "xs": "0.375rem",
76
+ "sm": "0.5rem",
77
+ "md": "0.75rem",
78
+ "lg": "1rem",
79
+ "xl": "1.5rem",
80
+ "2xl": "2rem"
120
81
  },
121
82
  "extensions": {
122
83
  "sourceUrl": "https://linear.app",
@@ -98,65 +98,21 @@
98
98
  }
99
99
  ]
100
100
  },
101
- "zones": {
102
- "product": {
103
- "caption": {
104
- "fontSize": "12px",
105
- "lineHeight": 1.33,
106
- "fontWeight": 500,
107
- "letterSpacing": "0.12px"
108
- },
109
- "bodySm": {
110
- "fontSize": "14px",
111
- "lineHeight": 1.43,
112
- "fontWeight": 500
113
- },
114
- "body": {
115
- "fontSize": "16px",
116
- "lineHeight": 1.5,
117
- "fontWeight": 400
118
- },
119
- "subheading": {
120
- "fontSize": "20px",
121
- "lineHeight": 1,
122
- "fontWeight": 500
123
- },
124
- "headingSm": {
125
- "fontSize": "22px",
126
- "lineHeight": 1.27,
127
- "fontWeight": 600,
128
- "letterSpacing": "-0.242px"
129
- },
130
- "heading": {
131
- "fontSize": "40px",
132
- "lineHeight": 1.5,
133
- "fontWeight": 600
134
- }
135
- },
136
- "marketing": {
137
- "body": {
138
- "fontSize": "16px",
139
- "lineHeight": 1.5,
140
- "fontWeight": 400
141
- },
142
- "heading": {
143
- "fontSize": "48px",
144
- "lineHeight": 1.5,
145
- "fontWeight": 700
146
- },
147
- "headingLg": {
148
- "fontSize": "54px",
149
- "lineHeight": 1.04,
150
- "fontWeight": 700,
151
- "letterSpacing": "-1.89px"
152
- },
153
- "display": {
154
- "fontSize": "72px",
155
- "lineHeight": 1.21,
156
- "fontWeight": 700,
157
- "letterSpacing": "-2.016px"
158
- }
159
- }
101
+ "motion": {
102
+ "easeOut": "cubic-bezier(0.25, 0.46, 0.45, 0.94)",
103
+ "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)",
104
+ "micro": 120,
105
+ "flow": 200,
106
+ "reveal": 280,
107
+ "cinematic": 460
108
+ },
109
+ "spacing": {
110
+ "xs": "0.625rem",
111
+ "sm": "1rem",
112
+ "md": "1.5rem",
113
+ "lg": "2rem",
114
+ "xl": "2.75rem",
115
+ "2xl": "3.75rem"
160
116
  },
161
117
  "extensions": {
162
118
  "categories": {
@@ -180,10 +136,10 @@
180
136
  "notes": [
181
137
  "roles.action = Notion Blue (only filled CTA). Accent hues are decorative card washes.",
182
138
  "roles.brand = Ink Black (logo / wordmark / text hierarchy via alpha).",
183
- "Canvas = Paper Warmth; cards = Pure White — never invert.",
184
- "Card elev=none + hairline border; sticky nav soft shadow → elevation raised slot.",
139
+ "Canvas = Paper Warmth; cards = Pure White \u2014 never invert.",
140
+ "Card elev=none + hairline border; sticky nav soft shadow \u2192 elevation raised slot.",
185
141
  "Buttons 8px, cards 12px, pills 9999px.",
186
- "Lyon Text is editorial accent only — not product chrome UI."
142
+ "Lyon Text is editorial accent only \u2014 not product chrome UI."
187
143
  ]
188
144
  }
189
145
  }
@@ -64,69 +64,22 @@
64
64
  }
65
65
  ]
66
66
  },
67
- "zones": {
68
- "product": {
69
- "caption": {
70
- "fontSize": "11px",
71
- "lineHeight": 0.91,
72
- "fontWeight": 500,
73
- "letterSpacing": "0.8px"
74
- },
75
- "bodySm": {
76
- "fontSize": "13px",
77
- "lineHeight": 1.2,
78
- "fontWeight": 500
79
- },
80
- "body": {
81
- "fontSize": "16px",
82
- "lineHeight": 1.15,
83
- "fontWeight": 400
84
- },
85
- "bodyLg": {
86
- "fontSize": "18px",
87
- "lineHeight": 1.15,
88
- "fontWeight": 400
89
- },
90
- "subheading": {
91
- "fontSize": "20px",
92
- "lineHeight": 1.2,
93
- "fontWeight": 400,
94
- "letterSpacing": "0.2px"
95
- },
96
- "headingSm": {
97
- "fontSize": "24px",
98
- "lineHeight": 1.15,
99
- "fontWeight": 500
100
- },
101
- "heading": {
102
- "fontSize": "32px",
103
- "lineHeight": 1.15,
104
- "fontWeight": 500
105
- }
106
- },
107
- "marketing": {
108
- "body": {
109
- "fontSize": "16px",
110
- "lineHeight": 1.15,
111
- "fontWeight": 400
112
- },
113
- "heading": {
114
- "fontSize": "32px",
115
- "lineHeight": 1.15,
116
- "fontWeight": 500
117
- },
118
- "headingLg": {
119
- "fontSize": "56px",
120
- "lineHeight": 1.17,
121
- "fontWeight": 400,
122
- "letterSpacing": "0.22px"
123
- },
124
- "display": {
125
- "fontSize": "64px",
126
- "lineHeight": 1.1,
127
- "fontWeight": 600
128
- }
129
- }
67
+ "motion": {
68
+ "easeOut": "cubic-bezier(0.16, 1, 0.3, 1)",
69
+ "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)",
70
+ "easeSpring": "cubic-bezier(0.34, 1.56, 0.64, 1)",
71
+ "micro": 90,
72
+ "flow": 160,
73
+ "reveal": 220,
74
+ "cinematic": 340
75
+ },
76
+ "spacing": {
77
+ "xs": "0.375rem",
78
+ "sm": "0.5rem",
79
+ "md": "0.75rem",
80
+ "lg": "1rem",
81
+ "xl": "1.375rem",
82
+ "2xl": "2rem"
130
83
  },
131
84
  "extensions": {
132
85
  "categories": {
@@ -137,7 +90,7 @@
137
90
  "sourceUrl": "https://raycast.com",
138
91
  "notes": [
139
92
  "Primary CTA = Mist fill + Iron text (neutral solid).",
140
- "Coral Pulse is brand mark only — do not use for general product chrome CTAs.",
93
+ "Coral Pulse is brand mark only \u2014 do not use for general product chrome CTAs.",
141
94
  "Cards use elevation=key (keyboard-key inset shadow stack)."
142
95
  ]
143
96
  },
@@ -83,77 +83,21 @@
83
83
  }
84
84
  ]
85
85
  },
86
- "zones": {
87
- "product": {
88
- "caption": {
89
- "fontSize": "12px",
90
- "lineHeight": 1.45,
91
- "fontWeight": 300,
92
- "letterSpacing": "-0.12px"
93
- },
94
- "bodySm": {
95
- "fontSize": "14px",
96
- "lineHeight": 1.4,
97
- "fontWeight": 400,
98
- "letterSpacing": "-0.14px"
99
- },
100
- "body": {
101
- "fontSize": "16px",
102
- "lineHeight": 1.2,
103
- "fontWeight": 400,
104
- "letterSpacing": "-0.16px"
105
- },
106
- "bodyLg": {
107
- "fontSize": "20px",
108
- "lineHeight": 1.4,
109
- "fontWeight": 300,
110
- "letterSpacing": "-0.2px"
111
- },
112
- "subheading": {
113
- "fontSize": "22px",
114
- "lineHeight": 1.1,
115
- "fontWeight": 300,
116
- "letterSpacing": "-0.22px"
117
- },
118
- "headingSm": {
119
- "fontSize": "26px",
120
- "lineHeight": 1.12,
121
- "fontWeight": 300,
122
- "letterSpacing": "-0.26px"
123
- },
124
- "heading": {
125
- "fontSize": "32px",
126
- "lineHeight": 1.1,
127
- "fontWeight": 300,
128
- "letterSpacing": "-0.64px"
129
- }
130
- },
131
- "marketing": {
132
- "body": {
133
- "fontSize": "16px",
134
- "lineHeight": 1.4,
135
- "fontWeight": 300,
136
- "letterSpacing": "-0.16px"
137
- },
138
- "heading": {
139
- "fontSize": "32px",
140
- "lineHeight": 1.1,
141
- "fontWeight": 300,
142
- "letterSpacing": "-0.64px"
143
- },
144
- "headingLg": {
145
- "fontSize": "48px",
146
- "lineHeight": 1.03,
147
- "fontWeight": 300,
148
- "letterSpacing": "-0.96px"
149
- },
150
- "display": {
151
- "fontSize": "56px",
152
- "lineHeight": 1.03,
153
- "fontWeight": 300,
154
- "letterSpacing": "-1.4px"
155
- }
156
- }
86
+ "motion": {
87
+ "easeOut": "cubic-bezier(0.215, 0.61, 0.355, 1)",
88
+ "easeInOut": "cubic-bezier(0.645, 0.045, 0.355, 1)",
89
+ "micro": 100,
90
+ "flow": 180,
91
+ "reveal": 260,
92
+ "cinematic": 400
93
+ },
94
+ "spacing": {
95
+ "xs": "0.5rem",
96
+ "sm": "0.75rem",
97
+ "md": "1.125rem",
98
+ "lg": "1.75rem",
99
+ "xl": "2.25rem",
100
+ "2xl": "3.25rem"
157
101
  },
158
102
  "extensions": {
159
103
  "categories": {
@@ -174,7 +118,7 @@
174
118
  "sourceUrl": "https://stripe.com",
175
119
  "notes": [
176
120
  "roles.action = Indigo Ink filled CTA; roles.brand = Midnight Ink wordmark.",
177
- "Elevation none — tint ladder + 1px frost rules; never box-shadow.",
121
+ "Elevation none \u2014 tint ladder + 1px frost rules; never box-shadow.",
178
122
  "Control radius 4px (not pill); tags may stay full-pill.",
179
123
  "Typography weight 300 is the product signature (Inter Tight substitute).",
180
124
  "Pair solid CTA with ghost outline (lavender border) as secondary."
@@ -109,68 +109,21 @@
109
109
  }
110
110
  ]
111
111
  },
112
- "zones": {
113
- "product": {
114
- "caption": {
115
- "fontSize": "12px",
116
- "lineHeight": 1.5,
117
- "fontWeight": 500,
118
- "letterSpacing": "-0.02px"
119
- },
120
- "bodySm": {
121
- "fontSize": "14px",
122
- "lineHeight": 1.43,
123
- "fontWeight": 400,
124
- "letterSpacing": "-0.02px"
125
- },
126
- "body": {
127
- "fontSize": "16px",
128
- "lineHeight": 1.5,
129
- "fontWeight": 400,
130
- "letterSpacing": "-0.02px"
131
- },
132
- "subheading": {
133
- "fontSize": "20px",
134
- "lineHeight": 1.4,
135
- "fontWeight": 500
136
- },
137
- "headingSm": {
138
- "fontSize": "24px",
139
- "lineHeight": 1.35,
140
- "fontWeight": 500
141
- },
142
- "heading": {
143
- "fontSize": "32px",
144
- "lineHeight": 1.3,
145
- "fontWeight": 500
146
- }
147
- },
148
- "marketing": {
149
- "body": {
150
- "fontSize": "16px",
151
- "lineHeight": 1.5,
152
- "fontWeight": 400,
153
- "letterSpacing": "-0.02px"
154
- },
155
- "heading": {
156
- "fontSize": "42px",
157
- "lineHeight": 1.2,
158
- "fontWeight": 400,
159
- "letterSpacing": "-0.84px"
160
- },
161
- "headingLg": {
162
- "fontSize": "56px",
163
- "lineHeight": 1.15,
164
- "fontWeight": 400,
165
- "letterSpacing": "-1.12px"
166
- },
167
- "display": {
168
- "fontSize": "90px",
169
- "lineHeight": 1.1,
170
- "fontWeight": 400,
171
- "letterSpacing": "-1.62px"
172
- }
173
- }
112
+ "motion": {
113
+ "easeOut": "cubic-bezier(0.33, 1, 0.68, 1)",
114
+ "easeInOut": "cubic-bezier(0.37, 0, 0.63, 1)",
115
+ "micro": 120,
116
+ "flow": 240,
117
+ "reveal": 380,
118
+ "cinematic": 620
119
+ },
120
+ "spacing": {
121
+ "xs": "0.75rem",
122
+ "sm": "1.125rem",
123
+ "md": "1.75rem",
124
+ "lg": "2.5rem",
125
+ "xl": "3.5rem",
126
+ "2xl": "5rem"
174
127
  },
175
128
  "extensions": {
176
129
  "categories": {
@@ -189,7 +142,7 @@
189
142
  "notes": [
190
143
  "roles.action = Vivid Violet (filled CTA only).",
191
144
  "roles.brand = Indigo Ink (logo / wordmark / brand-mark).",
192
- "Elevation none — 1px carbon borders frame cards; no drop-shadow.",
145
+ "Elevation none \u2014 1px carbon borders frame cards; no drop-shadow.",
193
146
  "Full-pill controls (999px); cards 16px.",
194
147
  "UI = Inter Variable; marketing display = Reckless serif.",
195
148
  "Lavender wash is marketing hero surface (decorative), not product chrome fill."
@@ -121,55 +121,21 @@
121
121
  }
122
122
  ]
123
123
  },
124
- "zones": {
125
- "product": {
126
- "caption": {
127
- "fontSize": "13px",
128
- "lineHeight": 1.54,
129
- "fontWeight": 400
130
- },
131
- "bodySm": {
132
- "fontSize": "14px",
133
- "lineHeight": 1.43,
134
- "fontWeight": 400
135
- },
136
- "body": {
137
- "fontSize": "16px",
138
- "lineHeight": 1.5,
139
- "fontWeight": 400
140
- },
141
- "heading": {
142
- "fontSize": "30px",
143
- "lineHeight": 1.1,
144
- "fontWeight": 500,
145
- "letterSpacing": "-1.5px"
146
- }
147
- },
148
- "marketing": {
149
- "body": {
150
- "fontSize": "16px",
151
- "lineHeight": 1.5,
152
- "fontWeight": 400
153
- },
154
- "heading": {
155
- "fontSize": "30px",
156
- "lineHeight": 1.1,
157
- "fontWeight": 450,
158
- "letterSpacing": "-1.5px"
159
- },
160
- "headingLg": {
161
- "fontSize": "56px",
162
- "lineHeight": 1,
163
- "fontWeight": 450,
164
- "letterSpacing": "-3.36px"
165
- },
166
- "display": {
167
- "fontSize": "64px",
168
- "lineHeight": 1,
169
- "fontWeight": 450,
170
- "letterSpacing": "-3.84px"
171
- }
172
- }
124
+ "motion": {
125
+ "easeOut": "cubic-bezier(0, 0, 0.2, 1)",
126
+ "easeInOut": "cubic-bezier(0.4, 0, 0.2, 1)",
127
+ "micro": 100,
128
+ "flow": 150,
129
+ "reveal": 200,
130
+ "cinematic": 300
131
+ },
132
+ "spacing": {
133
+ "xs": "0.5rem",
134
+ "sm": "0.75rem",
135
+ "md": "1rem",
136
+ "lg": "1.5rem",
137
+ "xl": "2rem",
138
+ "2xl": "3rem"
173
139
  },
174
140
  "extensions": {
175
141
  "categories": {
@@ -178,7 +144,7 @@
178
144
  },
179
145
  "sourceUrl": "https://vercel.com",
180
146
  "notes": [
181
- "Dual-mode monochrome — light: Obsidian CTA; dark: white CTA on carbon.",
147
+ "Dual-mode monochrome \u2014 light: Obsidian CTA; dark: white CTA on carbon.",
182
148
  "Elevation is hairline double-ring, never drop-shadow.",
183
149
  "Spectrum/solar gradients are marketing-only decorative (not product chrome)."
184
150
  ]