@motion-proto/live-tokens 0.50.0 → 0.53.0

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 (91) hide show
  1. package/.claude/skills/live-tokens-adjust-shape-space/SKILL.md +7 -1
  2. package/CHANGELOG.md +108 -0
  3. package/bin/adjust.mjs +16 -39
  4. package/bin/generate-theme.mjs +20 -6
  5. package/dist-plugin/adjust/index.cjs +781 -21
  6. package/dist-plugin/adjust/index.d.cts +2 -1
  7. package/dist-plugin/adjust/index.d.ts +2 -1
  8. package/dist-plugin/adjust/index.js +43 -21
  9. package/dist-plugin/{chunk-6OZFXIQI.js → chunk-232GZGQU.js} +207 -12
  10. package/dist-plugin/chunk-NE6N66EE.js +753 -0
  11. package/dist-plugin/{chunk-76TFDTJO.js → chunk-PB2JTK2H.js} +179 -128
  12. package/dist-plugin/{chunk-44RSTAII.js → chunk-TKZBVIW5.js} +33 -5
  13. package/dist-plugin/chunk-YR6GPXW2.js +129 -0
  14. package/dist-plugin/generateColorsAndType/index.cjs +135 -63
  15. package/dist-plugin/generateColorsAndType/index.d.cts +2 -1
  16. package/dist-plugin/generateColorsAndType/index.d.ts +2 -1
  17. package/dist-plugin/generateColorsAndType/index.js +28 -784
  18. package/dist-plugin/{themeTypes-DSwKq-bj.d.ts → index-DpTIRZ2H.d.cts} +67 -26
  19. package/dist-plugin/{themeTypes-DSwKq-bj.d.cts → index-DpTIRZ2H.d.ts} +67 -26
  20. package/dist-plugin/index.cjs +1254 -140
  21. package/dist-plugin/index.js +106 -82
  22. package/dist-plugin/migrateData/index.cjs +956 -14
  23. package/dist-plugin/migrateData/index.js +10 -3
  24. package/dist-plugin/tokensCssMigrations/index.cjs +71 -5
  25. package/dist-plugin/tokensCssMigrations/index.d.cts +20 -9
  26. package/dist-plugin/tokensCssMigrations/index.d.ts +20 -9
  27. package/dist-plugin/tokensCssMigrations/index.js +4 -1
  28. package/package.json +8 -4
  29. package/src/editor/component-editor/NotificationEditor.svelte +6 -0
  30. package/src/editor/component-editor/scaffolding/ComponentFileManager.svelte +9 -23
  31. package/src/editor/component-editor/scaffolding/LinkedBlock.svelte +8 -8
  32. package/src/editor/core/components/adjustAliases.ts +49 -22
  33. package/src/editor/core/components/aliasKinds.ts +7 -2
  34. package/src/editor/core/components/componentConfigService.ts +1 -1
  35. package/src/editor/core/palettes/oklch.ts +3 -137
  36. package/src/editor/core/palettes/paletteDerivation.ts +79 -37
  37. package/src/editor/core/store/editorStore.ts +7 -197
  38. package/src/editor/core/store/editorTypes.ts +9 -30
  39. package/src/editor/core/themes/generateColorsAndType.ts +18 -8
  40. package/src/editor/core/themes/lookSummary.ts +3 -25
  41. package/src/editor/core/themes/migrateComponentConfig.ts +205 -0
  42. package/src/editor/core/themes/migrations/2026-05-19-sectiondivider-rich-gradient.ts +1 -1
  43. package/src/editor/core/themes/migrations/2026-05-20-sectiondivider-slim-variants.ts +1 -1
  44. package/src/editor/core/themes/migrations/2026-05-22-sectiondivider-intrinsics-to-css.ts +1 -1
  45. package/src/editor/core/themes/parsers/gradient.ts +211 -0
  46. package/src/editor/core/themes/slices/gradients.ts +5 -58
  47. package/src/editor/core/themes/themeService.ts +22 -9
  48. package/src/editor/core/themes/themeTypes.ts +89 -27
  49. package/src/editor/docs/content/editing-tokens.md +6 -2
  50. package/src/editor/docs/content/themes-workflow.md +9 -11
  51. package/src/editor/docs/content/where-themes-live.md +2 -2
  52. package/src/editor/docs/content.generated.ts +3 -3
  53. package/src/editor/index.ts +1 -0
  54. package/src/editor/styles/ui-editor.css +5 -2
  55. package/src/editor/ui/BezierCurveEditor.svelte +90 -67
  56. package/src/editor/ui/PaletteEditor.svelte +180 -59
  57. package/src/editor/ui/ThemePanel.svelte +24 -15
  58. package/src/editor/ui/Toggle.svelte +36 -24
  59. package/src/editor/ui/UIPillButton.svelte +1 -1
  60. package/src/editor/ui/UIReveal.svelte +47 -0
  61. package/src/editor/ui/UISquareButton.svelte +1 -1
  62. package/src/editor/ui/colors/ColorStory.svelte +12 -8
  63. package/src/editor/ui/colors/ColorsTab.svelte +4 -5
  64. package/src/editor/ui/curveEngine.ts +101 -21
  65. package/src/editor/ui/palette/OverridesPanel.svelte +23 -8
  66. package/src/editor/ui/palette/PaletteBase.svelte +17 -78
  67. package/src/editor/ui/palette/PaletteJumpButton.svelte +3 -3
  68. package/src/editor/ui/palette/ScaleCurveEditor.svelte +110 -20
  69. package/src/editor/ui/palette/curveSummary.ts +20 -0
  70. package/src/editor/ui/palette/dockMagnify.ts +5 -13
  71. package/src/editor/ui/palette/paletteMath.ts +7 -4
  72. package/src/live-tokens/data/colors-and-type/autumn.json +528 -528
  73. package/src/live-tokens/data/colors-and-type/default.json +247 -247
  74. package/src/live-tokens/data/colors-and-type/halloween.json +532 -532
  75. package/src/live-tokens/data/colors-and-type/midnight-study.json +538 -538
  76. package/src/live-tokens/data/colors-and-type/ocean.json +521 -521
  77. package/src/live-tokens/data/colors-and-type/royal-velvet.json +532 -532
  78. package/src/live-tokens/data/colors-and-type/spring-meadow.json +504 -504
  79. package/src/live-tokens/data/colors-and-type/sunset.json +531 -531
  80. package/src/live-tokens/data/themes/autumn.json +604 -568
  81. package/src/live-tokens/data/themes/halloween.json +584 -583
  82. package/src/live-tokens/data/themes/midnight-study.json +673 -605
  83. package/src/live-tokens/data/themes/ocean.json +597 -561
  84. package/src/live-tokens/data/themes/royal-velvet.json +574 -573
  85. package/src/live-tokens/data/themes/spring-meadow.json +590 -556
  86. package/src/live-tokens/data/themes/sunset.json +632 -571
  87. package/src/live-tokens/data/tokens.generated.css +282 -282
  88. package/src/system/components/FloatingTokenTags.css +0 -1
  89. package/src/system/internal/backgroundContrast.ts +7 -0
  90. package/src/system/internal/oklch.ts +189 -0
  91. package/src/system/styles/tokens.css +283 -283
@@ -58,289 +58,289 @@
58
58
  --shadow-lg: 5px 5px 9px 0px hsla(237, 18%, 3%, 0.9);
59
59
  --shadow-xl: 6px 7px 13px 0px hsla(237, 18%, 3%, 0.9);
60
60
  --shadow-2xl: 8px 9px 16px 0px hsla(237, 18%, 3%, 0.9);
61
- --color-brand-100: #ffe7ef;
62
- --color-brand-200: #ffb5d1;
63
- --color-brand-300: #ff7cb3;
64
- --color-brand-400: #fb2898;
65
- --color-brand-500: #d5007d;
66
- --color-brand-600: #ab0064;
67
- --color-brand-700: #85004c;
68
- --color-brand-800: #610036;
69
- --color-brand-850: #400022;
70
- --color-brand-900: #21000f;
71
- --color-brand-950: #070002;
72
- --surface-brand-lowest: #1d000c;
73
- --surface-brand-lower: #3e0020;
74
- --surface-brand-low: #620037;
75
- --surface-brand: #89004e;
76
- --surface-brand-high: #b10067;
77
- --surface-brand-higher: #cf3480;
78
- --surface-brand-highest: #e0649a;
79
- --border-brand-faint: #430024;
80
- --border-brand-subtle: #760043;
81
- --border-brand: #ae0065;
82
- --border-brand-medium: #e9008a;
83
- --border-brand-strong: #ff6cad;
84
- --text-brand: #ff75b1;
85
- --text-brand-secondary: #df2d88;
86
- --text-brand-tertiary: #953b63;
87
- --text-brand-muted: #5c3846;
88
- --text-brand-disabled: #403337;
89
- --color-accent-100: #b4fffb;
90
- --color-accent-200: #84e9e5;
91
- --color-accent-300: #6ad0cc;
92
- --color-accent-400: #50b8b4;
93
- --color-accent-500: #329f9b;
94
- --color-accent-600: #008582;
95
- --color-accent-700: #006866;
96
- --color-accent-800: #004b49;
97
- --color-accent-850: #002f2e;
98
- --color-accent-900: #001514;
99
- --color-accent-950: #000202;
100
- --surface-accent-lowest: #000f0e;
101
- --surface-accent-lower: #002423;
102
- --surface-accent-low: #003c3b;
103
- --surface-accent: #005654;
104
- --surface-accent-high: #00716f;
105
- --surface-accent-higher: #3b8a87;
106
- --surface-accent-highest: #66a29f;
107
- --border-accent-faint: #002827;
108
- --border-accent-subtle: #004a48;
109
- --border-accent: #006f6d;
110
- --border-accent-medium: #259592;
111
- --border-accent-strong: #53bbb7;
112
- --text-accent: #62efea;
113
- --text-accent-secondary: #5baba8;
114
- --text-accent-tertiary: #4d7271;
115
- --text-accent-muted: #3c4847;
116
- --text-accent-disabled: #313232;
117
- --color-special-100: #efecff;
118
- --color-special-200: #d3caff;
119
- --color-special-300: #b9a7ff;
120
- --color-special-400: #a282ff;
121
- --color-special-500: #8b5cf6;
122
- --color-special-600: #733ed8;
123
- --color-special-700: #5c1bba;
124
- --color-special-800: #430090;
125
- --color-special-850: #2a005f;
126
- --color-special-900: #130033;
127
- --color-special-950: #03000d;
128
- --surface-special-lowest: #0f002b;
129
- --surface-special-lower: #250055;
130
- --surface-special-low: #3d0084;
131
- --surface-special: #5700b7;
132
- --surface-special-high: #6c3bcb;
133
- --surface-special-higher: #8161d8;
134
- --surface-special-highest: #9983e4;
135
- --border-special-faint: #29005c;
136
- --border-special-subtle: #4b009f;
137
- --border-special: #6b34ce;
138
- --border-special-medium: #8c5df8;
139
- --border-special-strong: #ac93ff;
140
- --text-special: #baa9ff;
141
- --text-special-secondary: #8665e0;
142
- --text-special-tertiary: #5c4e8b;
143
- --text-special-muted: #3e3a4f;
144
- --text-special-disabled: #303032;
145
- --color-canvas-100: #ecedff;
146
- --color-canvas-200: #d0d0ed;
147
- --color-canvas-300: #b6b6d2;
148
- --color-canvas-400: #9c9db8;
149
- --color-canvas-500: #84849e;
150
- --color-canvas-600: #6b6c85;
151
- --color-canvas-700: #53546c;
152
- --color-canvas-800: #3c3c53;
153
- --color-canvas-850: #25243a;
154
- --color-canvas-900: #0f0e21;
155
- --color-canvas-950: #02000b;
156
- --surface-canvas-lowest: #0a0523;
157
- --surface-canvas-lower: #1c1a37;
158
- --surface-canvas-low: #31304c;
159
- --surface-canvas: #474761;
160
- --surface-canvas-high: #5f6077;
161
- --surface-canvas-higher: #79798e;
162
- --surface-canvas-highest: #9393a5;
163
- --border-canvas-faint: #1f1f34;
164
- --border-canvas-subtle: #3d3d54;
165
- --border-canvas: #5d5e76;
166
- --border-canvas-medium: #80809b;
167
- --border-canvas-strong: #a4a5c0;
168
- --text-canvas: #9595c6;
169
- --text-canvas-secondary: #6b6b89;
170
- --text-canvas-tertiary: #4e4f5e;
171
- --text-canvas-muted: #3c3c41;
172
- --text-canvas-disabled: #343435;
173
- --page-bg: #3c3c53;
61
+ --color-brand-100: oklch(0.95 0.0279 355.35);
62
+ --color-brand-200: oklch(0.8508 0.0915 355.35);
63
+ --color-brand-300: oklch(0.7516 0.1697 355.35);
64
+ --color-brand-400: oklch(0.6572 0.2509 355.35);
65
+ --color-brand-500: oklch(0.5689 0.2335 355.35);
66
+ --color-brand-600: oklch(0.4842 0.1988 355.35);
67
+ --color-brand-700: oklch(0.4021 0.1651 355.35);
68
+ --color-brand-800: oklch(0.3215 0.1322 355.35);
69
+ --color-brand-850: oklch(0.2417 0.0998 355.35);
70
+ --color-brand-900: oklch(0.1615 0.0677 355.35);
71
+ --color-brand-950: oklch(0.08 0.0386 355.35);
72
+ --surface-brand-lowest: oklch(0.15 0.0632 355.35);
73
+ --surface-brand-lower: oklch(0.2367 0.0977 355.35);
74
+ --surface-brand-low: oklch(0.3233 0.133 355.35);
75
+ --surface-brand: oklch(0.41 0.1684 355.35);
76
+ --surface-brand-high: oklch(0.4967 0.2039 355.35);
77
+ --surface-brand-higher: oklch(0.5833 0.2011 355.35);
78
+ --surface-brand-highest: oklch(0.67 0.1631 355.35);
79
+ --border-brand-faint: oklch(0.25 0.1031 355.35);
80
+ --border-brand-subtle: oklch(0.37 0.152 355.35);
81
+ --border-brand: oklch(0.49 0.2011 355.35);
82
+ --border-brand-medium: oklch(0.61 0.2503 355.35);
83
+ --border-brand-strong: oklch(0.73 0.1892 355.35);
84
+ --text-brand: oklch(0.7426 0.1777 355.35);
85
+ --text-brand-secondary: oklch(0.6408 0.2553 355.35);
86
+ --text-brand-tertiary: oklch(0.5389 0.1769 355.35);
87
+ --text-brand-muted: oklch(0.4371 0.0985 355.35);
88
+ --text-brand-disabled: oklch(0.3352 0.0201 355.35);
89
+ --color-accent-100: oklch(0.95 0.074 191.98);
90
+ --color-accent-200: oklch(0.8727 0.0957 191.98);
91
+ --color-accent-300: oklch(0.7965 0.0957 191.98);
92
+ --color-accent-400: oklch(0.7198 0.0957 191.98);
93
+ --color-accent-500: oklch(0.6406 0.0957 191.98);
94
+ --color-accent-600: oklch(0.5572 0.0957 191.98);
95
+ --color-accent-700: oklch(0.4677 0.0804 191.98);
96
+ --color-accent-800: oklch(0.373 0.0642 191.98);
97
+ --color-accent-850: oklch(0.2753 0.0475 191.98);
98
+ --color-accent-900: oklch(0.1769 0.031 191.98);
99
+ --color-accent-950: oklch(0.08 0.0166 191.98);
100
+ --surface-accent-lowest: oklch(0.15 0.0266 191.98);
101
+ --surface-accent-lower: oklch(0.2367 0.041 191.98);
102
+ --surface-accent-low: oklch(0.3233 0.0557 191.98);
103
+ --surface-accent: oklch(0.41 0.0705 191.98);
104
+ --surface-accent-high: oklch(0.4967 0.0854 191.98);
105
+ --surface-accent-higher: oklch(0.5833 0.0767 191.98);
106
+ --surface-accent-highest: oklch(0.67 0.0622 191.98);
107
+ --border-accent-faint: oklch(0.25 0.0432 191.98);
108
+ --border-accent-subtle: oklch(0.37 0.0637 191.98);
109
+ --border-accent: oklch(0.49 0.0842 191.98);
110
+ --border-accent-medium: oklch(0.61 0.0957 191.98);
111
+ --border-accent-strong: oklch(0.73 0.0957 191.98);
112
+ --text-accent: oklch(0.8748 0.1215 191.98);
113
+ --text-accent-secondary: oklch(0.7355 0.0916 191.98);
114
+ --text-accent-tertiary: oklch(0.5962 0.0617 191.98);
115
+ --text-accent-muted: oklch(0.4569 0.0318 191.98);
116
+ --text-accent-disabled: oklch(0.3176 0.0019 191.98);
117
+ --color-special-100: oklch(0.95 0.026 292.72);
118
+ --color-special-200: oklch(0.864 0.0733 292.72);
119
+ --color-special-300: oklch(0.7781 0.124 292.72);
120
+ --color-special-400: oklch(0.6921 0.1783 292.72);
121
+ --color-special-500: oklch(0.6056 0.2189 292.72);
122
+ --color-special-600: oklch(0.5186 0.2189 292.72);
123
+ --color-special-700: oklch(0.4311 0.2189 292.72);
124
+ --color-special-800: oklch(0.3434 0.1914 292.72);
125
+ --color-special-850: oklch(0.2556 0.1428 292.72);
126
+ --color-special-900: oklch(0.1677 0.0946 292.72);
127
+ --color-special-950: oklch(0.08 0.0497 292.72);
128
+ --surface-special-lowest: oklch(0.15 0.085 292.72);
129
+ --surface-special-lower: oklch(0.2367 0.1323 292.72);
130
+ --surface-special-low: oklch(0.3233 0.1803 292.72);
131
+ --surface-special: oklch(0.41 0.2284 292.72);
132
+ --surface-special-high: oklch(0.4967 0.2087 292.72);
133
+ --surface-special-higher: oklch(0.5833 0.1755 292.72);
134
+ --surface-special-highest: oklch(0.67 0.1423 292.72);
135
+ --border-special-faint: oklch(0.25 0.1397 292.72);
136
+ --border-special-subtle: oklch(0.37 0.2062 292.72);
137
+ --border-special: oklch(0.49 0.2189 292.72);
138
+ --border-special-medium: oklch(0.61 0.2189 292.72);
139
+ --border-special-strong: oklch(0.73 0.1539 292.72);
140
+ --text-special: oklch(0.7812 0.1221 292.72);
141
+ --text-special-secondary: oklch(0.5995 0.2096 292.72);
142
+ --text-special-tertiary: oklch(0.4866 0.1412 292.72);
143
+ --text-special-muted: oklch(0.3977 0.0728 292.72);
144
+ --text-special-disabled: oklch(0.3089 0.0044 292.72);
145
+ --color-canvas-100: oklch(0.95 0.0246 284.29);
146
+ --color-canvas-200: oklch(0.8674 0.0394 284.29);
147
+ --color-canvas-300: oklch(0.7858 0.0394 284.29);
148
+ --color-canvas-400: oklch(0.7044 0.0394 284.29);
149
+ --color-canvas-500: oklch(0.6226 0.0394 284.29);
150
+ --color-canvas-600: oklch(0.5394 0.0394 284.29);
151
+ --color-canvas-700: oklch(0.4542 0.0394 284.29);
152
+ --color-canvas-800: oklch(0.3661 0.0394 284.29);
153
+ --color-canvas-850: oklch(0.2732 0.0394 284.29);
154
+ --color-canvas-900: oklch(0.1766 0.0394 284.29);
155
+ --color-canvas-950: oklch(0.08 0.0394 284.29);
156
+ --surface-canvas-lowest: oklch(0.15 0.0615 284.29);
157
+ --surface-canvas-lower: oklch(0.2367 0.0555 284.29);
158
+ --surface-canvas-low: oklch(0.3233 0.0495 284.29);
159
+ --surface-canvas: oklch(0.41 0.0435 284.29);
160
+ --surface-canvas-high: oklch(0.4967 0.0376 284.29);
161
+ --surface-canvas-higher: oklch(0.5833 0.0316 284.29);
162
+ --surface-canvas-highest: oklch(0.67 0.0256 284.29);
163
+ --border-canvas-faint: oklch(0.25 0.0394 284.29);
164
+ --border-canvas-subtle: oklch(0.37 0.0394 284.29);
165
+ --border-canvas: oklch(0.49 0.0394 284.29);
166
+ --border-canvas-medium: oklch(0.61 0.0394 284.29);
167
+ --border-canvas-strong: oklch(0.73 0.0394 284.29);
168
+ --text-canvas: oklch(0.6883 0.0709 284.29);
169
+ --text-canvas-secondary: oklch(0.5977 0.0534 284.29);
170
+ --text-canvas-tertiary: oklch(0.507 0.0359 284.29);
171
+ --text-canvas-muted: oklch(0.4164 0.0183 284.29);
172
+ --text-canvas-disabled: oklch(0.3258 0.0008 284.29);
173
+ --page-bg: oklch(0.3661 0.0394 284.29);
174
174
  --page-bg-attachment: scroll;
175
- --color-neutral-100: #dde6ed;
176
- --color-neutral-200: #c1c9d0;
177
- --color-neutral-300: #a5adb4;
178
- --color-neutral-400: #8a9299;
179
- --color-neutral-500: #70787e;
180
- --color-neutral-600: #575e64;
181
- --color-neutral-700: #3f464b;
182
- --color-neutral-800: #282f34;
183
- --color-neutral-850: #13191e;
184
- --color-neutral-900: #03060a;
185
- --color-neutral-950: #000000;
186
- --surface-neutral-lowest: #040c13;
187
- --surface-neutral-lower: #162027;
188
- --surface-neutral-low: #2c353c;
189
- --surface-neutral: #434c52;
190
- --surface-neutral-high: #5c6369;
191
- --surface-neutral-higher: #767c81;
192
- --surface-neutral-highest: #91969a;
193
- --border-neutral-faint: #1c2327;
194
- --border-neutral-subtle: #3a4146;
195
- --border-neutral: #5a6267;
196
- --border-neutral-medium: #7c848b;
197
- --border-neutral-strong: #a0a9af;
198
- --text-primary: #ffffff;
199
- --text-secondary: #c2cacf;
200
- --text-tertiary: #7e8285;
201
- --text-muted: #4e4f50;
202
- --text-disabled: #383838;
203
- --text-inverted: #0f0f0f;
204
- --color-alternate-100: #eae3e0;
205
- --color-alternate-200: #cfc8c5;
206
- --color-alternate-300: #b5aeab;
207
- --color-alternate-400: #9b9591;
208
- --color-alternate-500: #817b78;
209
- --color-alternate-600: #67615e;
210
- --color-alternate-700: #4e4845;
211
- --color-alternate-800: #35302d;
212
- --color-alternate-850: #1e1917;
213
- --color-alternate-900: #090604;
214
- --color-alternate-950: #000000;
215
- --surface-alternate-lowest: #100907;
216
- --surface-alternate-lower: #241d19;
217
- --surface-alternate-low: #39322f;
218
- --surface-alternate: #4f4946;
219
- --surface-alternate-high: #66615e;
220
- --surface-alternate-higher: #7f7a78;
221
- --surface-alternate-highest: #989492;
222
- --border-alternate-faint: #25201e;
223
- --border-alternate-subtle: #443e3c;
224
- --border-alternate: #655f5c;
225
- --border-alternate-medium: #88827f;
226
- --border-alternate-strong: #ada6a3;
227
- --text-alternate: #ffffff;
228
- --text-alternate-secondary: #d6d0cd;
229
- --text-alternate-tertiary: #8a8786;
230
- --text-alternate-muted: #545352;
231
- --text-alternate-disabled: #3b3b3b;
232
- --color-info-100: #ddf2ff;
233
- --color-info-200: #8fd7ff;
234
- --color-info-300: #00bbff;
235
- --color-info-400: #009dd7;
236
- --color-info-500: #0081b1;
237
- --color-info-600: #00678f;
238
- --color-info-700: #004f6f;
239
- --color-info-800: #003850;
240
- --color-info-850: #002334;
241
- --color-info-900: #00101a;
242
- --color-info-950: #000205;
243
- --surface-info-lowest: #000d17;
244
- --surface-info-lower: #002232;
245
- --surface-info-low: #003951;
246
- --surface-info: #005171;
247
- --surface-info-high: #2c6a89;
248
- --surface-info-higher: #598198;
249
- --surface-info-highest: #8299a7;
250
- --border-info-faint: #002537;
251
- --border-info-subtle: #004662;
252
- --border-info: #006991;
253
- --border-info-medium: #008ec3;
254
- --border-info-strong: #00b6f8;
255
- --text-info: #64caff;
256
- --text-info-secondary: #0083b4;
257
- --text-info-tertiary: #1c506a;
258
- --text-info-muted: #1d2c34;
259
- --text-info-disabled: #181a1b;
260
- --color-success-100: #c7ffd1;
261
- --color-success-200: #77f194;
262
- --color-success-300: #59d47a;
263
- --color-success-400: #38b85f;
264
- --color-success-500: #009c45;
265
- --color-success-600: #007e36;
266
- --color-success-700: #006128;
267
- --color-success-800: #00461b;
268
- --color-success-850: #002c0e;
269
- --color-success-900: #001404;
270
- --color-success-950: #000300;
271
- --surface-success-lowest: #001003;
272
- --surface-success-lower: #00270b;
273
- --surface-success-low: #004018;
274
- --surface-success: #005a25;
275
- --surface-success-high: #007733;
276
- --surface-success-higher: #32914d;
277
- --surface-success-highest: #61a870;
278
- --border-success-faint: #002a0d;
279
- --border-success-subtle: #004e1f;
280
- --border-success: #007532;
281
- --border-success-medium: #059e46;
282
- --border-success-strong: #47c46b;
283
- --text-success: #88f2a0;
284
- --text-success-secondary: #2e974e;
285
- --text-success-tertiary: #31673e;
286
- --text-success-muted: #2c4530;
287
- --text-success-disabled: #263429;
288
- --color-warning-100: #ffebd1;
289
- --color-warning-200: #ffd08e;
290
- --color-warning-300: #ffb01f;
291
- --color-warning-400: #e09800;
292
- --color-warning-500: #be8000;
293
- --color-warning-600: #9b6800;
294
- --color-warning-700: #784f00;
295
- --color-warning-800: #563800;
296
- --color-warning-850: #362100;
297
- --color-warning-900: #190d00;
298
- --color-warning-950: #040100;
299
- --surface-warning-lowest: #130900;
300
- --surface-warning-lower: #372200;
301
- --surface-warning-low: #613f00;
302
- --surface-warning: #8d5e00;
303
- --surface-warning-high: #bc7f00;
304
- --surface-warning-higher: #eea200;
305
- --surface-warning-highest: #ffd395;
306
- --border-warning-faint: #301d00;
307
- --border-warning-subtle: #573900;
308
- --border-warning: #825600;
309
- --border-warning-medium: #af7600;
310
- --border-warning-strong: #df9700;
311
- --text-warning: #ffecd2;
312
- --text-warning-secondary: #eba633;
313
- --text-warning-tertiary: #a17e4c;
314
- --text-warning-muted: #685d4d;
315
- --text-warning-disabled: #4d4b4a;
316
- --color-danger-100: #ffe9e6;
317
- --color-danger-200: #ffc3bd;
318
- --color-danger-300: #ff9a93;
319
- --color-danger-400: #ff6a65;
320
- --color-danger-500: #f0373e;
321
- --color-danger-600: #d10023;
322
- --color-danger-700: #a40019;
323
- --color-danger-800: #78000f;
324
- --color-danger-850: #4e0006;
325
- --color-danger-900: #280002;
326
- --color-danger-950: #080000;
327
- --surface-danger-lowest: #1f0001;
328
- --surface-danger-lower: #410004;
329
- --surface-danger-low: #67000c;
330
- --surface-danger: #8f0014;
331
- --surface-danger-high: #ba001e;
332
- --surface-danger-higher: #cf4443;
333
- --surface-danger-highest: #df6e68;
334
- --border-danger-faint: #470005;
335
- --border-danger-subtle: #7c0010;
336
- --border-danger: #b6001d;
337
- --border-danger-medium: #ea3039;
338
- --border-danger-strong: #ff7872;
339
- --text-danger: #ff635f;
340
- --text-danger-secondary: #bb292f;
341
- --text-danger-tertiary: #813b37;
342
- --text-danger-muted: #543b39;
343
- --text-danger-disabled: #3c3939;
175
+ --color-neutral-100: oklch(0.92 0.0134 240.07);
176
+ --color-neutral-200: oklch(0.8321 0.0134 240.07);
177
+ --color-neutral-300: oklch(0.7443 0.0134 240.07);
178
+ --color-neutral-400: oklch(0.6564 0.0134 240.07);
179
+ --color-neutral-500: oklch(0.5679 0.0134 240.07);
180
+ --color-neutral-600: oklch(0.4788 0.0134 240.07);
181
+ --color-neutral-700: oklch(0.3894 0.0134 240.07);
182
+ --color-neutral-800: oklch(0.2996 0.0134 240.07);
183
+ --color-neutral-850: oklch(0.2097 0.0134 240.07);
184
+ --color-neutral-900: oklch(0.1198 0.0134 240.07);
185
+ --color-neutral-950: oklch(0.03 0.0134 240.07);
186
+ --surface-neutral-lowest: oklch(0.15 0.0209 240.07);
187
+ --surface-neutral-lower: oklch(0.2367 0.0189 240.07);
188
+ --surface-neutral-low: oklch(0.3233 0.0168 240.07);
189
+ --surface-neutral: oklch(0.41 0.0148 240.07);
190
+ --surface-neutral-high: oklch(0.4967 0.0128 240.07);
191
+ --surface-neutral-higher: oklch(0.5833 0.0107 240.07);
192
+ --surface-neutral-highest: oklch(0.67 0.0087 240.07);
193
+ --border-neutral-faint: oklch(0.25 0.0134 240.07);
194
+ --border-neutral-subtle: oklch(0.37 0.0134 240.07);
195
+ --border-neutral: oklch(0.49 0.0134 240.07);
196
+ --border-neutral-medium: oklch(0.61 0.0134 240.07);
197
+ --border-neutral-strong: oklch(0.73 0.0134 240.07);
198
+ --text-primary: oklch(1 0 0);
199
+ --text-secondary: oklch(0.9242 0.0128 240.07);
200
+ --text-tertiary: oklch(0.7298 0.0086 240.07);
201
+ --text-muted: oklch(0.5353 0.0045 240.07);
202
+ --text-disabled: oklch(0.3407 0.0003 240.07);
203
+ --text-inverted: oklch(0.17 0 0);
204
+ --color-alternate-100: oklch(0.92 0.0087 48.57);
205
+ --color-alternate-200: oklch(0.8376 0.0087 48.57);
206
+ --color-alternate-300: oklch(0.7558 0.0087 48.57);
207
+ --color-alternate-400: oklch(0.6729 0.0087 48.57);
208
+ --color-alternate-500: oklch(0.5873 0.0087 48.57);
209
+ --color-alternate-600: oklch(0.4982 0.0087 48.57);
210
+ --color-alternate-700: oklch(0.4064 0.0087 48.57);
211
+ --color-alternate-800: oklch(0.3127 0.0087 48.57);
212
+ --color-alternate-850: oklch(0.2182 0.0087 48.57);
213
+ --color-alternate-900: oklch(0.1236 0.0087 48.57);
214
+ --color-alternate-950: oklch(0.03 0.0087 48.57);
215
+ --surface-alternate-lowest: oklch(0.15 0.0136 48.57);
216
+ --surface-alternate-lower: oklch(0.2367 0.0123 48.57);
217
+ --surface-alternate-low: oklch(0.3233 0.0109 48.57);
218
+ --surface-alternate: oklch(0.41 0.0096 48.57);
219
+ --surface-alternate-high: oklch(0.4967 0.0083 48.57);
220
+ --surface-alternate-higher: oklch(0.5833 0.007 48.57);
221
+ --surface-alternate-highest: oklch(0.67 0.0057 48.57);
222
+ --border-alternate-faint: oklch(0.25 0.0087 48.57);
223
+ --border-alternate-subtle: oklch(0.37 0.0087 48.57);
224
+ --border-alternate: oklch(0.49 0.0087 48.57);
225
+ --border-alternate-medium: oklch(0.61 0.0087 48.57);
226
+ --border-alternate-strong: oklch(0.73 0.0087 48.57);
227
+ --text-alternate: oklch(1 0 0);
228
+ --text-alternate-secondary: oklch(0.9558 0.0083 48.57);
229
+ --text-alternate-tertiary: oklch(0.7547 0.0056 48.57);
230
+ --text-alternate-muted: oklch(0.5535 0.0029 48.57);
231
+ --text-alternate-disabled: oklch(0.3524 0.0002 48.57);
232
+ --color-info-100: oklch(0.95 0.0285 233.78);
233
+ --color-info-200: oklch(0.846 0.0911 233.78);
234
+ --color-info-300: oklch(0.7461 0.1557 233.78);
235
+ --color-info-400: oklch(0.655 0.1367 233.78);
236
+ --color-info-500: oklch(0.568 0.1186 233.78);
237
+ --color-info-600: oklch(0.4842 0.1011 233.78);
238
+ --color-info-700: oklch(0.4027 0.0842 233.78);
239
+ --color-info-800: oklch(0.3225 0.0675 233.78);
240
+ --color-info-850: oklch(0.2426 0.051 233.78);
241
+ --color-info-900: oklch(0.1621 0.0347 233.78);
242
+ --color-info-950: oklch(0.08 0.0205 233.78);
243
+ --surface-info-lowest: oklch(0.15 0.0324 233.78);
244
+ --surface-info-lower: oklch(0.2367 0.0498 233.78);
245
+ --surface-info-low: oklch(0.3233 0.0677 233.78);
246
+ --surface-info: oklch(0.41 0.0857 233.78);
247
+ --surface-info-high: oklch(0.4967 0.0799 233.78);
248
+ --surface-info-higher: oklch(0.5833 0.0563 233.78);
249
+ --surface-info-highest: oklch(0.67 0.0327 233.78);
250
+ --border-info-faint: oklch(0.25 0.0525 233.78);
251
+ --border-info-subtle: oklch(0.37 0.0774 233.78);
252
+ --border-info: oklch(0.49 0.1023 233.78);
253
+ --border-info-medium: oklch(0.61 0.1274 233.78);
254
+ --border-info-strong: oklch(0.73 0.1524 233.78);
255
+ --text-info: oklch(0.7983 0.1213 233.78);
256
+ --text-info-secondary: oklch(0.5745 0.12 233.78);
257
+ --text-info-tertiary: oklch(0.4353 0.091 233.78);
258
+ --text-info-muted: oklch(0.3258 0.0518 233.78);
259
+ --text-info-disabled: oklch(0.2164 0.0031 233.78);
260
+ --color-success-100: oklch(0.95 0.0837 149.58);
261
+ --color-success-200: oklch(0.8639 0.1684 149.58);
262
+ --color-success-300: oklch(0.7779 0.1684 149.58);
263
+ --color-success-400: oklch(0.6918 0.1684 149.58);
264
+ --color-success-500: oklch(0.6052 0.1684 149.58);
265
+ --color-success-600: oklch(0.5182 0.1443 149.58);
266
+ --color-success-700: oklch(0.4308 0.12 149.58);
267
+ --color-success-800: oklch(0.3432 0.0957 149.58);
268
+ --color-success-850: oklch(0.2554 0.0715 149.58);
269
+ --color-success-900: oklch(0.1676 0.0477 149.58);
270
+ --color-success-950: oklch(0.08 0.027 149.58);
271
+ --surface-success-lowest: oklch(0.15 0.043 149.58);
272
+ --surface-success-lower: oklch(0.2367 0.0664 149.58);
273
+ --surface-success-low: oklch(0.3233 0.0902 149.58);
274
+ --surface-success: oklch(0.41 0.1142 149.58);
275
+ --surface-success-high: oklch(0.4967 0.1383 149.58);
276
+ --surface-success-higher: oklch(0.5833 0.135 149.58);
277
+ --surface-success-highest: oklch(0.67 0.1095 149.58);
278
+ --border-success-faint: oklch(0.25 0.07 149.58);
279
+ --border-success-subtle: oklch(0.37 0.1031 149.58);
280
+ --border-success: oklch(0.49 0.1364 149.58);
281
+ --border-success-medium: oklch(0.61 0.1684 149.58);
282
+ --border-success-strong: oklch(0.73 0.1684 149.58);
283
+ --text-success: oklch(0.8775 0.1516 149.58);
284
+ --text-success-secondary: oklch(0.5991 0.142 149.58);
285
+ --text-success-tertiary: oklch(0.4759 0.1151 149.58);
286
+ --text-success-muted: oklch(0.3923 0.0711 149.58);
287
+ --text-success-disabled: oklch(0.3087 0.0269 149.58);
288
+ --color-warning-100: oklch(0.95 0.0406 75.11);
289
+ --color-warning-200: oklch(0.8835 0.0984 75.11);
290
+ --color-warning-300: oklch(0.8131 0.1652 75.11);
291
+ --color-warning-400: oklch(0.7333 0.1547 75.11);
292
+ --color-warning-500: oklch(0.6472 0.1365 75.11);
293
+ --color-warning-600: oklch(0.5563 0.1174 75.11);
294
+ --color-warning-700: oklch(0.462 0.0976 75.11);
295
+ --color-warning-800: oklch(0.3658 0.0774 75.11);
296
+ --color-warning-850: oklch(0.2691 0.0572 75.11);
297
+ --color-warning-900: oklch(0.1733 0.0376 75.11);
298
+ --color-warning-950: oklch(0.08 0.0222 75.11);
299
+ --surface-warning-lowest: oklch(0.15 0.033 75.11);
300
+ --surface-warning-lower: oklch(0.2733 0.058 75.11);
301
+ --surface-warning-low: oklch(0.3967 0.0838 75.11);
302
+ --surface-warning: oklch(0.52 0.1098 75.11);
303
+ --surface-warning-high: oklch(0.6433 0.1357 75.11);
304
+ --surface-warning-higher: oklch(0.7667 0.1617 75.11);
305
+ --surface-warning-highest: oklch(0.89 0.0926 75.11);
306
+ --border-warning-faint: oklch(0.25 0.0532 75.11);
307
+ --border-warning-subtle: oklch(0.37 0.0782 75.11);
308
+ --border-warning: oklch(0.49 0.1034 75.11);
309
+ --border-warning-medium: oklch(0.61 0.1287 75.11);
310
+ --border-warning-strong: oklch(0.73 0.154 75.11);
311
+ --text-warning: oklch(0.9513 0.0395 75.11);
312
+ --text-warning-secondary: oklch(0.8172 0.1612 75.11);
313
+ --text-warning-tertiary: oklch(0.683 0.1149 75.11);
314
+ --text-warning-muted: oklch(0.5488 0.0591 75.11);
315
+ --text-warning-disabled: oklch(0.4147 0.0033 75.11);
316
+ --color-danger-100: oklch(0.95 0.0249 24.69);
317
+ --color-danger-200: oklch(0.8693 0.0698 24.69);
318
+ --color-danger-300: oklch(0.7894 0.1217 24.69);
319
+ --color-danger-400: oklch(0.709 0.1833 24.69);
320
+ --color-danger-500: oklch(0.6271 0.2197 24.69);
321
+ --color-danger-600: oklch(0.5423 0.2197 24.69);
322
+ --color-danger-700: oklch(0.4536 0.1839 24.69);
323
+ --color-danger-800: oklch(0.3616 0.1467 24.69);
324
+ --color-danger-850: oklch(0.2677 0.1089 24.69);
325
+ --color-danger-900: oklch(0.1734 0.0714 24.69);
326
+ --color-danger-950: oklch(0.08 0.0377 24.69);
327
+ --surface-danger-lowest: oklch(0.15 0.0623 24.69);
328
+ --surface-danger-lower: oklch(0.2367 0.0965 24.69);
329
+ --surface-danger-low: oklch(0.3233 0.1313 24.69);
330
+ --surface-danger: oklch(0.41 0.1663 24.69);
331
+ --surface-danger-high: oklch(0.4967 0.2013 24.69);
332
+ --surface-danger-higher: oklch(0.5833 0.1761 24.69);
333
+ --surface-danger-highest: oklch(0.67 0.1428 24.69);
334
+ --border-danger-faint: oklch(0.25 0.1018 24.69);
335
+ --border-danger-subtle: oklch(0.37 0.1501 24.69);
336
+ --border-danger: oklch(0.49 0.1986 24.69);
337
+ --border-danger-medium: oklch(0.61 0.2197 24.69);
338
+ --border-danger-strong: oklch(0.73 0.1662 24.69);
339
+ --text-danger: oklch(0.6996 0.1913 24.69);
340
+ --text-danger-secondary: oklch(0.5206 0.1818 24.69);
341
+ --text-danger-tertiary: oklch(0.446 0.1082 24.69);
342
+ --text-danger-muted: oklch(0.3965 0.0562 24.69);
343
+ --text-danger-disabled: oklch(0.3471 0.0044 24.69);
344
344
  --font-display: "Arvo", serif;
345
345
  --font-sans: "Manrope", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, sans-serif;
346
346
  --font-serif: "GFS Didot", serif;
@@ -51,7 +51,6 @@
51
51
  white-space: nowrap;
52
52
  user-select: none;
53
53
  pointer-events: none;
54
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
55
54
  }
56
55
 
57
56
  .ftt-box.ftt-bloop {
@@ -1,8 +1,11 @@
1
+ import { parseOklchCss, oklchToRgb255 } from './oklch';
2
+
1
3
  export type ContrastColorToken = '--color-black' | '--color-white';
2
4
 
3
5
  type Rgb = { r: number; g: number; b: number };
4
6
 
5
7
  const HEX_RE = /#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})\b/gi;
8
+ const OKLCH_RE = /oklch\(\s*[\d.]+%?\s+[\d.]+%?\s+[\d.]+(?:deg)?\s*\)/gi;
6
9
  const RGB_RE = /rgba?\(\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)(?:\s*[,/]\s*[\d.]+%?)?\s*\)/gi;
7
10
 
8
11
  function channel(value: string): number {
@@ -24,6 +27,10 @@ function parseHex(hex: string): Rgb {
24
27
  function colorsIn(background: string): Rgb[] {
25
28
  const colors: Rgb[] = [];
26
29
  for (const match of background.matchAll(HEX_RE)) colors.push(parseHex(match[0]));
30
+ for (const match of background.matchAll(OKLCH_RE)) {
31
+ const parsed = parseOklchCss(match[0]);
32
+ if (parsed) colors.push(oklchToRgb255(parsed.l, parsed.c, parsed.h));
33
+ }
27
34
  for (const match of background.matchAll(RGB_RE)) {
28
35
  colors.push({ r: channel(match[1]), g: channel(match[2]), b: channel(match[3]) });
29
36
  }