ionbase-ui 0.38.0 → 0.47.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.47.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.47.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,60 @@
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. It was a raw `18%` in both themes, hardcoded
71
+ * twice, which is a place dark mode has to be fixed by hand — the same reason
72
+ * the bevel below is a local. `surface/sheen` is 20% in Light and 5% in Dark,
73
+ * following `surface/scrim` and `surface/hover`: a translucent wash whose
74
+ * alpha themes.
75
+ *
76
+ * THE ACCESSIBILITY ARGUMENT THAT PUT IT AT 5% WAS WRONG, AND THIS COMMENT
77
+ * USED TO MAKE IT. It claimed the gloss dropped five of seven hues under AA in
78
+ * Dark — green 3.76, red 3.92, pink 4.08, orange 4.15, blue 4.23. Those
79
+ * numbers came from compositing the sheen at FULL STRENGTH over the `from`
80
+ * stop, and that pixel does not exist. `from` is the top of the disc; the
81
+ * radial is centred at 70.513% of the height with a vertical radius of
82
+ * 64.103%, so at y=0 it is 1.10 radii out — past its own transparent stop,
83
+ * contributing nothing. The gloss and the darkest stop never meet.
84
+ *
85
+ * The gate evaluates the gradient geometrically as of 5 Sep 2026, and at the
86
+ * authored 18% the worst REAL point in Dark is 5.07 (green, at 50%,69%, where
87
+ * the gloss actually peaks and the disc beneath it is already near `to`).
88
+ * Nothing was ever failing. 5% is an aesthetic choice, not a fix, and it is
89
+ * only still here because it was reviewed in Figma and preferred.
90
+ *
91
+ * The worst point on this component is the bare top of the disc — 5.29 in
92
+ * Light (pink) and 5.31 in Dark (red), the same two numbers the stop comment
93
+ * below records, because the sheen never touches it.
65
94
  */
66
- --ion-avatar-gradient-sheen: 18%;
67
- --ion-avatar-gradient-sheen-mid: 3.6%;
68
95
 
69
96
  /*
70
97
  * Bevel. Two inner shadows and no drop shadow — the redesign dropped the
@@ -94,23 +121,39 @@
94
121
  color: var(--ion-avatar-gradient-text);
95
122
 
96
123
  /*
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.
124
+ * The flat colour under the gradient is the `to` end. It is the fallback if
125
+ * `background-image` never paints, and that is the ONLY thing it is.
126
+ *
127
+ * THIS COMMENT USED TO CLAIM IT WAS ALSO THE WORST CASE FOR THE INITIALS, AND
128
+ * THAT WAS BACKWARDS. Dark text on a pale disc is hardest to read against the
129
+ * DARKEST stop, not the palest — `from`, not `to`. Because `verify-contrast`
130
+ * can only see a flat `background-color`, it was measuring the most flattering
131
+ * pairing of the three and calling it the strict one. Six of the seven hues
132
+ * were failing AA against the `from` stop the whole time — blue 3.42, purple
133
+ * 3.58, pink 3.27, orange 3.72, green 3.10, red 3.35 — and the build was green.
134
+ *
135
+ * The initials sit on `/800` in Light and `/200` in Dark, which mirror each
136
+ * other about the ramp exactly as the three disc stops do (300/200/50 against
137
+ * 700/800/900). They used to be `/600`, whose mirror is `/300` — the one rung
138
+ * in the component that was not mirrored, which is precisely why Light failed
139
+ * and Dark did not.
102
140
  *
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.
141
+ * THE GATE DOES NOT READ STOPS ANY MORE, IT EVALUATES THE GRADIENT. It began
142
+ * by reading only a flat `background-color`, which is what let this hide; then
143
+ * every stop; and as of 5 Sep 2026 it samples the disc, composites the layers
144
+ * at each point and reports the worst pixel the element actually paints —
145
+ * 5.29 in Light (pink) and 5.31 in Dark (red), both at 50%,0%, the bare top.
146
+ * Colours BETWEEN two stops are real pixels and none of them were measured
147
+ * before. Negative-tested by putting the initials back on `/600`: pink fails
148
+ * at 3.27 where the old gate passed it.
106
149
  */
107
150
  background-color: var(--ion-avatar-gradient-to);
108
151
  background-image:
109
152
  radial-gradient(
110
153
  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%
154
+ var(--surface-sheen) 0%,
155
+ var(--surface-sheen-subtle) 60%,
156
+ transparent 100%
114
157
  ),
115
158
  linear-gradient(
116
159
  180deg,
@@ -169,50 +212,50 @@
169
212
  }
170
213
 
171
214
  .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);
215
+ --ion-avatar-gradient-from: var(--surface-palette-1);
216
+ --ion-avatar-gradient-mid: var(--surface-palette-1-tint);
217
+ --ion-avatar-gradient-to: var(--surface-palette-1-subtle);
218
+ --ion-avatar-gradient-text: var(--text-palette-1);
176
219
  }
177
220
 
178
221
  .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);
222
+ --ion-avatar-gradient-from: var(--surface-palette-2);
223
+ --ion-avatar-gradient-mid: var(--surface-palette-2-tint);
224
+ --ion-avatar-gradient-to: var(--surface-palette-2-subtle);
225
+ --ion-avatar-gradient-text: var(--text-palette-2);
183
226
  }
184
227
 
185
228
  .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);
229
+ --ion-avatar-gradient-from: var(--surface-palette-3);
230
+ --ion-avatar-gradient-mid: var(--surface-palette-3-tint);
231
+ --ion-avatar-gradient-to: var(--surface-palette-3-subtle);
232
+ --ion-avatar-gradient-text: var(--text-palette-3);
190
233
  }
191
234
 
192
235
  .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);
236
+ --ion-avatar-gradient-from: var(--surface-palette-4);
237
+ --ion-avatar-gradient-mid: var(--surface-palette-4-tint);
238
+ --ion-avatar-gradient-to: var(--surface-palette-4-subtle);
239
+ --ion-avatar-gradient-text: var(--text-palette-4);
197
240
  }
198
241
 
199
242
  .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);
243
+ --ion-avatar-gradient-from: var(--surface-palette-5);
244
+ --ion-avatar-gradient-mid: var(--surface-palette-5-tint);
245
+ --ion-avatar-gradient-to: var(--surface-palette-5-subtle);
246
+ --ion-avatar-gradient-text: var(--text-palette-5);
204
247
  }
205
248
 
206
249
  .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);
250
+ --ion-avatar-gradient-from: var(--surface-palette-6);
251
+ --ion-avatar-gradient-mid: var(--surface-palette-6-tint);
252
+ --ion-avatar-gradient-to: var(--surface-palette-6-subtle);
253
+ --ion-avatar-gradient-text: var(--text-palette-6);
211
254
  }
212
255
 
213
256
  .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);
257
+ --ion-avatar-gradient-from: var(--surface-palette-7);
258
+ --ion-avatar-gradient-mid: var(--surface-palette-7-tint);
259
+ --ion-avatar-gradient-to: var(--surface-palette-7-subtle);
260
+ --ion-avatar-gradient-text: var(--text-palette-7);
218
261
  }
@@ -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;