ionbase-ui 0.38.0 → 0.46.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "ionbase-ui",
3
- "version": "0.38.0",
3
+ "version": "0.46.0",
4
4
  "usage": "Pick a component here, then read dist/meta/<Name>.json for its full contract.",
5
5
  "hooks": [
6
6
  "useToast"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "ionbase-ui",
3
- "version": "0.38.0",
3
+ "version": "0.46.0",
4
4
  "usage": "A pattern is a documented composition of components, not a component. Read one here, then read the contracts of what it composes.",
5
5
  "patterns": {
6
6
  "AgentRun": {
@@ -100,9 +100,15 @@
100
100
  --ion-alert-icon: var(--icon-on-color);
101
101
  }
102
102
 
103
+ /* Neutral solid is not an accent: its ground is `surface/inverse`, which flips
104
+ * with the theme, so its foreground must flip too. See the note in avatar.css —
105
+ * `text/on-color` here was a category error that only rendered correctly while
106
+ * on-color happened to be the inverse of the inverse surface in both modes. */
103
107
  .ion-alert--solid.ion-alert--neutral {
104
108
  --ion-alert-surface: var(--surface-inverse);
105
109
  --ion-alert-border: var(--border-inverse);
110
+ --ion-alert-text: var(--text-inverse);
111
+ --ion-alert-icon: var(--icon-inverse);
106
112
  }
107
113
 
108
114
  .ion-alert--solid.ion-alert--primary {
@@ -38,33 +38,56 @@
38
38
  --ion-avatar-gradient-font-weight: var(--font-weight-medium);
39
39
 
40
40
  /* Slate, which is also the block default — Figma's default variant. */
41
- --ion-avatar-gradient-from: var(--color-gray-300);
42
- --ion-avatar-gradient-mid: var(--color-gray-200);
43
- --ion-avatar-gradient-to: var(--color-gray-50);
41
+ --ion-avatar-gradient-from: var(--surface-palette-1);
42
+ --ion-avatar-gradient-mid: var(--surface-palette-1-tint);
43
+ --ion-avatar-gradient-to: var(--surface-palette-1-subtle);
44
44
 
45
45
  /*
46
- * The initials, from the primitive ramp rather than a semantic text token.
46
+ * The initials. THIS USED TO READ FROM THE PRIMITIVE RAMP, AND THE COMMENT
47
+ * HERE DEFENDED IT — correctly, on its own terms: the disc was primitives, so
48
+ * a semantic foreground would have flipped in the dark theme and left the
49
+ * background alone. An earlier draft did exactly that and the gate caught it
50
+ * at 1.05:1. A foreground has to theme exactly as much as the ground under it.
47
51
  *
48
- * NOT AN OVERSIGHT, AND DO NOT "FIX" IT TO `--text-*`. The disc under this
49
- * text is built from primitives, so it does not theme; a semantic foreground
50
- * would flip in the dark theme and leave the background alone. An earlier
51
- * draft did exactly that and the contrast gate caught it at 1.05:1. A
52
- * foreground has to theme exactly as much as the background it sits on.
52
+ * That argument was right and the conclusion was wrong. It resolved the
53
+ * mismatch by theming NEITHER, which made the whole component theme-blind:
54
+ * seven near-white discs (luminance 0.89 to 0.98) rendered unchanged in the
55
+ * dark theme, because Primitives and Semantics each hold one mode and only
56
+ * Interface carries a Light/Dark axis. Nothing here was bound to Interface,
57
+ * so nothing here listened to the theme.
53
58
  *
54
- * In Figma these are bound to a `palette/1`..`palette/7` collection the token
55
- * export does not yet cover. Each one resolves to the primitive named here,
56
- * so nothing is lost today — see AGENTS.md.
59
+ * Both ends now theme together, which is what the original argument actually
60
+ * asked for. See AGENTS.md for the ladder and the measurements.
57
61
  */
58
- --ion-avatar-gradient-text: var(--color-gray-600);
62
+ --ion-avatar-gradient-text: var(--text-palette-1);
59
63
 
60
64
  /*
61
65
  * The sheen: a white radial highlight low and centre, over the linear
62
66
  * gradient. Identical in proportion at all four sizes — Figma expresses it as
63
67
  * a userSpaceOnUse radial scaled per size, and the ratios come out the same
64
- * to three decimals, so it is written once as percentages.
68
+ * to three decimals, so the geometry is written once as percentages.
69
+ *
70
+ * THE ALPHA IS A TOKEN NOW, AND IT HAS TO BE. It was a raw `18%` in both
71
+ * themes, and the initials sit exactly where the gloss peaks: over the dark
72
+ * disc it lightened the ground under light text and dropped five of seven
73
+ * hues under AA — green 3.76, red 3.92, pink 4.08, orange 4.15, blue 4.23.
74
+ * `surface/sheen` is 20% in Light and 5% in Dark, which brings the worst hue
75
+ * back to 4.94. 10% would land exactly on 4.50, which is not a margin.
76
+ *
77
+ * THE GATE ENFORCES THAT NUMBER NOW. It used to composite a translucent
78
+ * ground over the component's flat `background-color` — the `to` stop — so it
79
+ * measured the gloss over the palest part of the disc and never over `from`,
80
+ * where the failure is; 4.94 was a hand measurement in this comment and
81
+ * nothing checked it. `verify-contrast` pairs each layer against every opaque
82
+ * ground beneath it as of 5 Sep 2026, so the sheen is measured over all three
83
+ * disc stops and reports 4.94 on red by itself. Putting 18% back fails five
84
+ * hues at the values above.
85
+ *
86
+ * The cross product is a bound, not a rendering: the gloss peaks low and
87
+ * centre, where the linear gradient is already near `to`, so full-strength
88
+ * sheen over `from` is not a pixel that exists. It is the strictest the
89
+ * composite could be, which is the right side to be wrong on for a floor.
65
90
  */
66
- --ion-avatar-gradient-sheen: 18%;
67
- --ion-avatar-gradient-sheen-mid: 3.6%;
68
91
 
69
92
  /*
70
93
  * Bevel. Two inner shadows and no drop shadow — the redesign dropped the
@@ -94,23 +117,37 @@
94
117
  color: var(--ion-avatar-gradient-text);
95
118
 
96
119
  /*
97
- * The flat colour under the gradient is the `to` end, and that choice is
98
- * load-bearing twice over. It is the fallback if `background-image` never
99
- * paints, and it is the palest part of the disc — so it is also the worst
100
- * case for the dark initials, which is what makes `verify-contrast` measure
101
- * the pairing that actually needs measuring rather than a flattering one.
120
+ * The flat colour under the gradient is the `to` end. It is the fallback if
121
+ * `background-image` never paints, and that is the ONLY thing it is.
122
+ *
123
+ * THIS COMMENT USED TO CLAIM IT WAS ALSO THE WORST CASE FOR THE INITIALS, AND
124
+ * THAT WAS BACKWARDS. Dark text on a pale disc is hardest to read against the
125
+ * DARKEST stop, not the palest — `from`, not `to`. Because `verify-contrast`
126
+ * can only see a flat `background-color`, it was measuring the most flattering
127
+ * pairing of the three and calling it the strict one. Six of the seven hues
128
+ * were failing AA against the `from` stop the whole time — blue 3.42, purple
129
+ * 3.58, pink 3.27, orange 3.72, green 3.10, red 3.35 — and the build was green.
130
+ *
131
+ * The initials sit on `/800` in Light and `/200` in Dark, which mirror each
132
+ * other about the ramp exactly as the three disc stops do (300/200/50 against
133
+ * 700/800/900). They used to be `/600`, whose mirror is `/300` — the one rung
134
+ * in the component that was not mirrored, which is precisely why Light failed
135
+ * and Dark did not.
102
136
  *
103
- * It was the `from` end before the redesign, for the same reason read the
104
- * other way round: the text was white then, so its worst case was the
105
- * lightest stop it sat on. Flip this if the disc is ever inverted again.
137
+ * THE GATE MEASURES ALL THREE STOPS NOW. It used to read only a flat
138
+ * `background-color`, which is what let this hide; `verify-contrast` parses
139
+ * `background-image` gradients as of 4 Sep 2026, so the worst stop is enforced
140
+ * rather than trusted — 5.29 in Light (pink) and 5.31 in Dark (red) as it
141
+ * stands. Negative-tested by putting the initials back on `/600`: ten
142
+ * pairings fail that the old gate passed.
106
143
  */
107
144
  background-color: var(--ion-avatar-gradient-to);
108
145
  background-image:
109
146
  radial-gradient(
110
147
  55.556% 64.103% at 50% 70.513%,
111
- rgb(255 255 255 / var(--ion-avatar-gradient-sheen)) 0%,
112
- rgb(255 255 255 / var(--ion-avatar-gradient-sheen-mid)) 60%,
113
- rgb(255 255 255 / 0%) 100%
148
+ var(--surface-sheen) 0%,
149
+ var(--surface-sheen-subtle) 60%,
150
+ transparent 100%
114
151
  ),
115
152
  linear-gradient(
116
153
  180deg,
@@ -169,50 +206,50 @@
169
206
  }
170
207
 
171
208
  .ion-avatar-gradient--slate {
172
- --ion-avatar-gradient-from: var(--color-gray-300);
173
- --ion-avatar-gradient-mid: var(--color-gray-200);
174
- --ion-avatar-gradient-to: var(--color-gray-50);
175
- --ion-avatar-gradient-text: var(--color-gray-600);
209
+ --ion-avatar-gradient-from: var(--surface-palette-1);
210
+ --ion-avatar-gradient-mid: var(--surface-palette-1-tint);
211
+ --ion-avatar-gradient-to: var(--surface-palette-1-subtle);
212
+ --ion-avatar-gradient-text: var(--text-palette-1);
176
213
  }
177
214
 
178
215
  .ion-avatar-gradient--blue {
179
- --ion-avatar-gradient-from: var(--color-blue-300);
180
- --ion-avatar-gradient-mid: var(--color-blue-200);
181
- --ion-avatar-gradient-to: var(--color-blue-50);
182
- --ion-avatar-gradient-text: var(--color-blue-600);
216
+ --ion-avatar-gradient-from: var(--surface-palette-2);
217
+ --ion-avatar-gradient-mid: var(--surface-palette-2-tint);
218
+ --ion-avatar-gradient-to: var(--surface-palette-2-subtle);
219
+ --ion-avatar-gradient-text: var(--text-palette-2);
183
220
  }
184
221
 
185
222
  .ion-avatar-gradient--violet {
186
- --ion-avatar-gradient-from: var(--color-purple-300);
187
- --ion-avatar-gradient-mid: var(--color-purple-200);
188
- --ion-avatar-gradient-to: var(--color-purple-50);
189
- --ion-avatar-gradient-text: var(--color-purple-600);
223
+ --ion-avatar-gradient-from: var(--surface-palette-3);
224
+ --ion-avatar-gradient-mid: var(--surface-palette-3-tint);
225
+ --ion-avatar-gradient-to: var(--surface-palette-3-subtle);
226
+ --ion-avatar-gradient-text: var(--text-palette-3);
190
227
  }
191
228
 
192
229
  .ion-avatar-gradient--pink {
193
- --ion-avatar-gradient-from: var(--color-pink-300);
194
- --ion-avatar-gradient-mid: var(--color-pink-200);
195
- --ion-avatar-gradient-to: var(--color-pink-50);
196
- --ion-avatar-gradient-text: var(--color-pink-600);
230
+ --ion-avatar-gradient-from: var(--surface-palette-4);
231
+ --ion-avatar-gradient-mid: var(--surface-palette-4-tint);
232
+ --ion-avatar-gradient-to: var(--surface-palette-4-subtle);
233
+ --ion-avatar-gradient-text: var(--text-palette-4);
197
234
  }
198
235
 
199
236
  .ion-avatar-gradient--orange {
200
- --ion-avatar-gradient-from: var(--color-orange-300);
201
- --ion-avatar-gradient-mid: var(--color-orange-200);
202
- --ion-avatar-gradient-to: var(--color-orange-50);
203
- --ion-avatar-gradient-text: var(--color-orange-600);
237
+ --ion-avatar-gradient-from: var(--surface-palette-5);
238
+ --ion-avatar-gradient-mid: var(--surface-palette-5-tint);
239
+ --ion-avatar-gradient-to: var(--surface-palette-5-subtle);
240
+ --ion-avatar-gradient-text: var(--text-palette-5);
204
241
  }
205
242
 
206
243
  .ion-avatar-gradient--green {
207
- --ion-avatar-gradient-from: var(--color-green-300);
208
- --ion-avatar-gradient-mid: var(--color-green-200);
209
- --ion-avatar-gradient-to: var(--color-green-50);
210
- --ion-avatar-gradient-text: var(--color-green-600);
244
+ --ion-avatar-gradient-from: var(--surface-palette-6);
245
+ --ion-avatar-gradient-mid: var(--surface-palette-6-tint);
246
+ --ion-avatar-gradient-to: var(--surface-palette-6-subtle);
247
+ --ion-avatar-gradient-text: var(--text-palette-6);
211
248
  }
212
249
 
213
250
  .ion-avatar-gradient--red {
214
- --ion-avatar-gradient-from: var(--color-red-300);
215
- --ion-avatar-gradient-mid: var(--color-red-200);
216
- --ion-avatar-gradient-to: var(--color-red-50);
217
- --ion-avatar-gradient-text: var(--color-red-600);
251
+ --ion-avatar-gradient-from: var(--surface-palette-7);
252
+ --ion-avatar-gradient-mid: var(--surface-palette-7-tint);
253
+ --ion-avatar-gradient-to: var(--surface-palette-7-subtle);
254
+ --ion-avatar-gradient-text: var(--text-palette-7);
218
255
  }
@@ -232,7 +232,6 @@
232
232
  * find on a different element resolves to the block's `--text-tertiary` and
233
233
  * measures a pairing that never renders.
234
234
  */
235
- .ion-avatar__indicator--neutral,
236
235
  .ion-avatar__indicator--primary,
237
236
  .ion-avatar__indicator--success,
238
237
  .ion-avatar__indicator--warning,
@@ -241,8 +240,15 @@
241
240
  color: var(--text-on-color);
242
241
  }
243
242
 
243
+ /* Neutral is the odd one out: its ground is `surface/inverse`, a neutral that
244
+ * flips with the theme, not an accent. So its foreground has to flip with it —
245
+ * `text/inverse`, not `text/on-color`. Binding on-color here worked only by
246
+ * coincidence, while on-color happened to be the exact inverse of the inverse
247
+ * surface in both modes; the moment on-color settled on white for both, this
248
+ * pairing measured 1:1 and the indicator vanished. */
244
249
  .ion-avatar__indicator--neutral {
245
250
  background-color: var(--surface-inverse);
251
+ color: var(--text-inverse);
246
252
  }
247
253
 
248
254
  .ion-avatar__indicator--primary {
@@ -297,7 +297,12 @@
297
297
  --ion-button-pressed: var(--ion-shadow-inset-flush-lg);
298
298
 
299
299
  background-color: var(--surface-inverse);
300
- color: var(--text-on-color);
300
+
301
+ /* `text/inverse`, not `text/on-color`. This type's ground is the inverse
302
+ * neutral, which flips with the theme; on-color is for accent grounds. The
303
+ * two coincided until on-color settled on white for both modes, at which
304
+ * point this button was white on white. */
305
+ color: var(--text-inverse);
301
306
  border-color: var(--border-inverse);
302
307
  }
303
308
 
@@ -19,8 +19,8 @@
19
19
  --color-purple-100: #f1e8fd;
20
20
  --color-purple-200: #dfd4fc;
21
21
  --color-purple-300: #adadf5;
22
- --color-purple-400: #7e6ff1;
23
- --color-purple-500: #5a4cd6;
22
+ --color-purple-400: #9a8ff4;
23
+ --color-purple-500: #786cdd;
24
24
  --color-purple-600: #4f3cc8;
25
25
  --color-purple-700: #4715b2;
26
26
  --color-purple-800: #350e8b;
@@ -35,7 +35,7 @@
35
35
  --color-red-700: #ad1515;
36
36
  --color-red-800: #850e0e;
37
37
  --color-red-900: #650a0a;
38
- --color-orange-50: #fff4e5;
38
+ --color-orange-50: #fff6ea;
39
39
  --color-orange-100: #ffeed6;
40
40
  --color-orange-200: #fedbb4;
41
41
  --color-orange-300: #fdc17c;
@@ -184,7 +184,7 @@
184
184
  --success-700: #076426;
185
185
  --success-800: #054d1a;
186
186
  --success-900: #023c13;
187
- --warning-50: #fff4e5;
187
+ --warning-50: #fff6ea;
188
188
  --warning-100: #ffeed6;
189
189
  --warning-200: #fedbb4;
190
190
  --warning-300: #fdc17c;
@@ -208,15 +208,15 @@
208
208
  --information-100: #f1e8fd;
209
209
  --information-200: #dfd4fc;
210
210
  --information-300: #adadf5;
211
- --information-400: #7e6ff1;
212
- --information-500: #5a4cd6;
211
+ --information-400: #9a8ff4;
212
+ --information-500: #786cdd;
213
213
  --information-600: #4f3cc8;
214
214
  --information-700: #4715b2;
215
215
  --information-800: #350e8b;
216
216
  --information-900: #260769;
217
217
  --chart-1: #286ef0;
218
218
  --chart-2: #14994e;
219
- --chart-3: #5a4cd6;
219
+ --chart-3: #4f3cc8;
220
220
  --chart-4: #ea5600;
221
221
  --chart-5: #df2679;
222
222
  --chart-6: #a97a14;
@@ -253,13 +253,55 @@
253
253
  --icon-size-md: 20px;
254
254
  --icon-size-lg: 24px;
255
255
  --icon-size-xl: 32px;
256
- --palette-1: #4b5563;
257
- --palette-2: #1c62e3;
258
- --palette-3: #4f3cc8;
259
- --palette-4: #c3135c;
260
- --palette-5: #af3e0e;
261
- --palette-6: #0d7d38;
262
- --palette-7: #c61616;
256
+ --palette-1-50: #f6f8f9;
257
+ --palette-1-200: #e5e7eb;
258
+ --palette-1-300: #dde0e4;
259
+ --palette-1-600: #4b5563;
260
+ --palette-1-700: #384252;
261
+ --palette-1-800: #1d2735;
262
+ --palette-1-900: #131923;
263
+ --palette-2-50: #ebf7ff;
264
+ --palette-2-200: #c7e4fa;
265
+ --palette-2-300: #9fd5f9;
266
+ --palette-2-600: #1c62e3;
267
+ --palette-2-700: #1541b2;
268
+ --palette-2-800: #0e2d8b;
269
+ --palette-2-900: #071e69;
270
+ --palette-3-50: #f6f1f8;
271
+ --palette-3-200: #dfd4fc;
272
+ --palette-3-300: #adadf5;
273
+ --palette-3-600: #4f3cc8;
274
+ --palette-3-700: #4715b2;
275
+ --palette-3-800: #350e8b;
276
+ --palette-3-900: #260769;
277
+ --palette-4-50: #fdf2f8;
278
+ --palette-4-200: #fbd0e8;
279
+ --palette-4-300: #f9a9d5;
280
+ --palette-4-600: #c3135c;
281
+ --palette-4-700: #a0134b;
282
+ --palette-4-800: #881141;
283
+ --palette-4-900: #5a0427;
284
+ --palette-5-50: #fff6ea;
285
+ --palette-5-200: #fedbb4;
286
+ --palette-5-300: #fdc17c;
287
+ --palette-5-600: #af3e0e;
288
+ --palette-5-700: #8e2f07;
289
+ --palette-5-800: #671f07;
290
+ --palette-5-900: #401604;
291
+ --palette-6-50: #f8fefc;
292
+ --palette-6-200: #c6ebdc;
293
+ --palette-6-300: #82d8b4;
294
+ --palette-6-600: #0d7d38;
295
+ --palette-6-700: #076426;
296
+ --palette-6-800: #054d1a;
297
+ --palette-6-900: #023c13;
298
+ --palette-7-50: #fef1f1;
299
+ --palette-7-200: #fed2d2;
300
+ --palette-7-300: #ffadad;
301
+ --palette-7-600: #c61616;
302
+ --palette-7-700: #ad1515;
303
+ --palette-7-800: #850e0e;
304
+ --palette-7-900: #650a0a;
263
305
  --text-default: #131923;
264
306
  --text-secondary: #384252;
265
307
  --text-tertiary: #4b5563;
@@ -277,6 +319,13 @@
277
319
  --text-link-visited: #4715b2;
278
320
  --text-interactive: #384252;
279
321
  --text-interactive-hover: #131923;
322
+ --text-palette-1: #1d2735;
323
+ --text-palette-2: #0e2d8b;
324
+ --text-palette-3: #350e8b;
325
+ --text-palette-4: #881141;
326
+ --text-palette-5: #671f07;
327
+ --text-palette-6: #054d1a;
328
+ --text-palette-7: #850e0e;
280
329
  --icon-default: #1d2735;
281
330
  --icon-secondary: #384252;
282
331
  --icon-tertiary: #4b5563;
@@ -328,7 +377,7 @@
328
377
  --surface-warning: #af3e0e;
329
378
  --surface-warning-hover: #8e2f07;
330
379
  --surface-warning-pressed: #671f07;
331
- --surface-warning-subtle: #fff4e5;
380
+ --surface-warning-subtle: #fff6ea;
332
381
  --surface-warning-subtle-hover: #ffeed6;
333
382
  --surface-warning-tint: #ffeed6;
334
383
  --surface-information: #4f3cc8;
@@ -337,6 +386,29 @@
337
386
  --surface-information-subtle: #f6f1f8;
338
387
  --surface-information-subtle-hover: #f1e8fd;
339
388
  --surface-information-tint: #f1e8fd;
389
+ --surface-palette-1: #dde0e4;
390
+ --surface-palette-1-tint: #e5e7eb;
391
+ --surface-palette-1-subtle: #f6f8f9;
392
+ --surface-palette-2: #9fd5f9;
393
+ --surface-palette-2-tint: #c7e4fa;
394
+ --surface-palette-2-subtle: #ebf7ff;
395
+ --surface-palette-3: #adadf5;
396
+ --surface-palette-3-tint: #dfd4fc;
397
+ --surface-palette-3-subtle: #f6f1f8;
398
+ --surface-palette-4: #f9a9d5;
399
+ --surface-palette-4-tint: #fbd0e8;
400
+ --surface-palette-4-subtle: #fdf2f8;
401
+ --surface-palette-5: #fdc17c;
402
+ --surface-palette-5-tint: #fedbb4;
403
+ --surface-palette-5-subtle: #fff6ea;
404
+ --surface-palette-6: #82d8b4;
405
+ --surface-palette-6-tint: #c6ebdc;
406
+ --surface-palette-6-subtle: #f8fefc;
407
+ --surface-palette-7: #ffadad;
408
+ --surface-palette-7-tint: #fed2d2;
409
+ --surface-palette-7-subtle: #fef1f1;
410
+ --surface-sheen: rgba(255, 255, 255, 0.2);
411
+ --surface-sheen-subtle: rgba(255, 255, 255, 0.05);
340
412
  --border-subtle: #f0f2f4;
341
413
  --border-default: #e5e7eb;
342
414
  --border-strong: #dde0e4;
@@ -356,7 +428,7 @@
356
428
  --border-warning: #ea5600;
357
429
  --border-warning-strong: #8e2f07;
358
430
  --border-warning-subtle: #fedbb4;
359
- --border-information: #5a4cd6;
431
+ --border-information: #786cdd;
360
432
  --border-information-strong: #4715b2;
361
433
  --border-information-subtle: #dfd4fc;
362
434
  --border-focus: #286ef0;
@@ -7,18 +7,24 @@
7
7
  --text-secondary: #dde0e4;
8
8
  --text-tertiary: #9ca3b0;
9
9
  --text-placeholder: #4b5563;
10
- --text-on-color: #000000;
11
10
  --text-inverse: #131923;
12
- --text-primary: #609cf0;
11
+ --text-primary: #9fd5f9;
13
12
  --text-error: #ffadad;
14
- --text-success: #39b378;
15
- --text-warning: #ef8539;
13
+ --text-success: #82d8b4;
14
+ --text-warning: #fdc17c;
16
15
  --text-information: #adadf5;
17
- --text-link: #609cf0;
18
- --text-link-hover: #9fd5f9;
19
- --text-link-visited: #7e6ff1;
16
+ --text-link: #9fd5f9;
17
+ --text-link-hover: #c7e4fa;
18
+ --text-link-visited: #9a8ff4;
20
19
  --text-interactive: #dde0e4;
21
20
  --text-interactive-hover: #f6f8f9;
21
+ --text-palette-1: #e5e7eb;
22
+ --text-palette-2: #c7e4fa;
23
+ --text-palette-3: #dfd4fc;
24
+ --text-palette-4: #fbd0e8;
25
+ --text-palette-5: #fedbb4;
26
+ --text-palette-6: #c6ebdc;
27
+ --text-palette-7: #fed2d2;
22
28
  --icon-default: #f0f2f4;
23
29
  --icon-secondary: #dde0e4;
24
30
  --icon-tertiary: #9ca3b0;
@@ -28,7 +34,7 @@
28
34
  --icon-error: #f56b6b;
29
35
  --icon-success: #39b378;
30
36
  --icon-warning: #ef8539;
31
- --icon-information: #7e6ff1;
37
+ --icon-information: #9a8ff4;
32
38
  --icon-interactive: #dde0e4;
33
39
  --icon-interactive-hover: #f6f8f9;
34
40
  --surface-default: #000000;
@@ -47,36 +53,43 @@
47
53
  --surface-pressed: rgba(255, 255, 255, 0.1);
48
54
  --surface-selected: #071e69;
49
55
  --surface-selected-hover: #0e2d8b;
50
- --surface-primary: #286ef0;
51
- --surface-primary-hover: #609cf0;
52
- --surface-primary-pressed: #9fd5f9;
53
56
  --surface-primary-subtle: #071e69;
54
57
  --surface-primary-subtle-hover: #0e2d8b;
55
58
  --surface-primary-tint: #0e2d8b;
56
- --surface-error: #eb3737;
57
- --surface-error-hover: #f56b6b;
58
- --surface-error-pressed: #ffadad;
59
59
  --surface-error-subtle: #650a0a;
60
60
  --surface-error-subtle-hover: #850e0e;
61
61
  --surface-error-tint: #850e0e;
62
- --surface-success: #14994e;
63
- --surface-success-hover: #39b378;
64
- --surface-success-pressed: #82d8b4;
65
62
  --surface-success-subtle: #023c13;
66
63
  --surface-success-subtle-hover: #054d1a;
67
64
  --surface-success-tint: #054d1a;
68
- --surface-warning: #ea5600;
69
- --surface-warning-hover: #ef8539;
70
- --surface-warning-pressed: #fdc17c;
71
65
  --surface-warning-subtle: #401604;
72
66
  --surface-warning-subtle-hover: #671f07;
73
67
  --surface-warning-tint: #671f07;
74
- --surface-information: #5a4cd6;
75
- --surface-information-hover: #7e6ff1;
76
- --surface-information-pressed: #adadf5;
77
68
  --surface-information-subtle: #260769;
78
69
  --surface-information-subtle-hover: #350e8b;
79
70
  --surface-information-tint: #350e8b;
71
+ --surface-palette-1: #384252;
72
+ --surface-palette-1-tint: #1d2735;
73
+ --surface-palette-1-subtle: #131923;
74
+ --surface-palette-2: #1541b2;
75
+ --surface-palette-2-tint: #0e2d8b;
76
+ --surface-palette-2-subtle: #071e69;
77
+ --surface-palette-3: #4715b2;
78
+ --surface-palette-3-tint: #350e8b;
79
+ --surface-palette-3-subtle: #260769;
80
+ --surface-palette-4: #a0134b;
81
+ --surface-palette-4-tint: #881141;
82
+ --surface-palette-4-subtle: #5a0427;
83
+ --surface-palette-5: #8e2f07;
84
+ --surface-palette-5-tint: #671f07;
85
+ --surface-palette-5-subtle: #401604;
86
+ --surface-palette-6: #076426;
87
+ --surface-palette-6-tint: #054d1a;
88
+ --surface-palette-6-subtle: #023c13;
89
+ --surface-palette-7: #ad1515;
90
+ --surface-palette-7-tint: #850e0e;
91
+ --surface-palette-7-subtle: #650a0a;
92
+ --surface-sheen: rgba(255, 255, 255, 0.05);
80
93
  --border-subtle: #1d2735;
81
94
  --border-default: #384252;
82
95
  --border-strong: #4b5563;
@@ -85,19 +98,19 @@
85
98
  --border-disabled: #384252;
86
99
  --border-transparent: rgba(255, 255, 255, 0.05);
87
100
  --border-primary: #609cf0;
88
- --border-primary-strong: #1c62e3;
101
+ --border-primary-strong: #286ef0;
89
102
  --border-primary-subtle: #0e2d8b;
90
103
  --border-error: #f56b6b;
91
- --border-error-strong: #c61616;
104
+ --border-error-strong: #eb3737;
92
105
  --border-error-subtle: #850e0e;
93
106
  --border-success: #39b378;
94
- --border-success-strong: #0d7d38;
107
+ --border-success-strong: #14994e;
95
108
  --border-success-subtle: #054d1a;
96
109
  --border-warning: #ef8539;
97
- --border-warning-strong: #af3e0e;
110
+ --border-warning-strong: #ea5600;
98
111
  --border-warning-subtle: #671f07;
99
- --border-information: #7e6ff1;
100
- --border-information-strong: #4f3cc8;
112
+ --border-information: #9a8ff4;
113
+ --border-information-strong: #786cdd;
101
114
  --border-information-subtle: #350e8b;
102
115
  --border-focus: #609cf0;
103
116
  --border-focus-error: #f56b6b;