panelui-native 0.63.0 → 0.65.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 (158) hide show
  1. package/README.md +5 -0
  2. package/lib/module/components/badge/index.js +1 -1
  3. package/lib/module/components/badge/index.js.map +1 -1
  4. package/lib/module/components/bar-chart/index.js +39 -2
  5. package/lib/module/components/bar-chart/index.js.map +1 -1
  6. package/lib/module/components/bottom-sheet/index.js +2 -2
  7. package/lib/module/components/bottom-sheet/index.js.map +1 -1
  8. package/lib/module/components/button/index.js +19 -9
  9. package/lib/module/components/button/index.js.map +1 -1
  10. package/lib/module/components/carousel/index.js +28 -14
  11. package/lib/module/components/carousel/index.js.map +1 -1
  12. package/lib/module/components/checkbox/index.js +2 -3
  13. package/lib/module/components/checkbox/index.js.map +1 -1
  14. package/lib/module/components/dialog/index.js +2 -2
  15. package/lib/module/components/dialog/index.js.map +1 -1
  16. package/lib/module/components/drawer/index.js +2 -2
  17. package/lib/module/components/drawer/index.js.map +1 -1
  18. package/lib/module/components/fab/index.js +4 -3
  19. package/lib/module/components/fab/index.js.map +1 -1
  20. package/lib/module/components/field/index.js +41 -6
  21. package/lib/module/components/field/index.js.map +1 -1
  22. package/lib/module/components/flow/flow-accessibility.js +84 -0
  23. package/lib/module/components/flow/flow-accessibility.js.map +1 -0
  24. package/lib/module/components/flow/index.js +100 -39
  25. package/lib/module/components/flow/index.js.map +1 -1
  26. package/lib/module/components/form/use-form.js +93 -66
  27. package/lib/module/components/form/use-form.js.map +1 -1
  28. package/lib/module/components/heatmap-chart/index.js +2 -2
  29. package/lib/module/components/heatmap-chart/index.js.map +1 -1
  30. package/lib/module/components/hex-chart/index.js +2 -2
  31. package/lib/module/components/hex-chart/index.js.map +1 -1
  32. package/lib/module/components/kpi/index.js +3 -1
  33. package/lib/module/components/kpi/index.js.map +1 -1
  34. package/lib/module/components/line-chart/index.js +3 -3
  35. package/lib/module/components/line-chart/index.js.map +1 -1
  36. package/lib/module/components/map/index.js +71 -8
  37. package/lib/module/components/map/index.js.map +1 -1
  38. package/lib/module/components/map/map-accessibility.js +20 -0
  39. package/lib/module/components/map/map-accessibility.js.map +1 -0
  40. package/lib/module/components/map/maplibre.js.map +1 -1
  41. package/lib/module/components/menu/index.js +4 -1
  42. package/lib/module/components/menu/index.js.map +1 -1
  43. package/lib/module/components/number-input/index.js +1 -23
  44. package/lib/module/components/number-input/index.js.map +1 -1
  45. package/lib/module/components/number-input/number-input-math.js +44 -0
  46. package/lib/module/components/number-input/number-input-math.js.map +1 -0
  47. package/lib/module/components/plot/index.js +2 -2
  48. package/lib/module/components/plot/index.js.map +1 -1
  49. package/lib/module/components/radio-group/index.js +1 -2
  50. package/lib/module/components/radio-group/index.js.map +1 -1
  51. package/lib/module/components/sortable/index.js +5 -55
  52. package/lib/module/components/sortable/index.js.map +1 -1
  53. package/lib/module/components/sortable/reorder.js +63 -0
  54. package/lib/module/components/sortable/reorder.js.map +1 -0
  55. package/lib/module/components/swipe/index.js +4 -4
  56. package/lib/module/components/swipe/index.js.map +1 -1
  57. package/lib/module/components/switch/index.js +36 -3
  58. package/lib/module/components/switch/index.js.map +1 -1
  59. package/lib/module/components/time-picker/accessibility.js +21 -0
  60. package/lib/module/components/time-picker/accessibility.js.map +1 -0
  61. package/lib/module/components/time-picker/index.js +34 -8
  62. package/lib/module/components/time-picker/index.js.map +1 -1
  63. package/lib/module/components/waterfall-chart/index.js +1325 -0
  64. package/lib/module/components/waterfall-chart/index.js.map +1 -0
  65. package/lib/module/index.js +1 -0
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/module/primitives/modal-isolation-store.js +29 -0
  68. package/lib/module/primitives/modal-isolation-store.js.map +1 -0
  69. package/lib/module/primitives/portal.js +36 -4
  70. package/lib/module/primitives/portal.js.map +1 -1
  71. package/lib/module/providers/panel-ui-provider.js +27 -6
  72. package/lib/module/providers/panel-ui-provider.js.map +1 -1
  73. package/lib/typescript/src/components/badge/index.d.ts.map +1 -1
  74. package/lib/typescript/src/components/bar-chart/index.d.ts.map +1 -1
  75. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  76. package/lib/typescript/src/components/carousel/index.d.ts +1 -1
  77. package/lib/typescript/src/components/carousel/index.d.ts.map +1 -1
  78. package/lib/typescript/src/components/checkbox/index.d.ts.map +1 -1
  79. package/lib/typescript/src/components/fab/index.d.ts.map +1 -1
  80. package/lib/typescript/src/components/field/index.d.ts +8 -1
  81. package/lib/typescript/src/components/field/index.d.ts.map +1 -1
  82. package/lib/typescript/src/components/flow/flow-accessibility.d.ts +49 -0
  83. package/lib/typescript/src/components/flow/flow-accessibility.d.ts.map +1 -0
  84. package/lib/typescript/src/components/flow/index.d.ts +14 -2
  85. package/lib/typescript/src/components/flow/index.d.ts.map +1 -1
  86. package/lib/typescript/src/components/form/use-form.d.ts.map +1 -1
  87. package/lib/typescript/src/components/heatmap-chart/index.d.ts.map +1 -1
  88. package/lib/typescript/src/components/hex-chart/index.d.ts.map +1 -1
  89. package/lib/typescript/src/components/kpi/index.d.ts.map +1 -1
  90. package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -1
  91. package/lib/typescript/src/components/map/index.d.ts +13 -5
  92. package/lib/typescript/src/components/map/index.d.ts.map +1 -1
  93. package/lib/typescript/src/components/map/map-accessibility.d.ts +19 -0
  94. package/lib/typescript/src/components/map/map-accessibility.d.ts.map +1 -0
  95. package/lib/typescript/src/components/map/maplibre.d.ts +2 -0
  96. package/lib/typescript/src/components/map/maplibre.d.ts.map +1 -1
  97. package/lib/typescript/src/components/menu/index.d.ts.map +1 -1
  98. package/lib/typescript/src/components/number-input/index.d.ts.map +1 -1
  99. package/lib/typescript/src/components/number-input/number-input-math.d.ts +9 -0
  100. package/lib/typescript/src/components/number-input/number-input-math.d.ts.map +1 -0
  101. package/lib/typescript/src/components/plot/index.d.ts.map +1 -1
  102. package/lib/typescript/src/components/radio-group/index.d.ts.map +1 -1
  103. package/lib/typescript/src/components/sortable/index.d.ts.map +1 -1
  104. package/lib/typescript/src/components/sortable/reorder.d.ts +14 -0
  105. package/lib/typescript/src/components/sortable/reorder.d.ts.map +1 -0
  106. package/lib/typescript/src/components/swipe/index.d.ts.map +1 -1
  107. package/lib/typescript/src/components/switch/index.d.ts +3 -3
  108. package/lib/typescript/src/components/switch/index.d.ts.map +1 -1
  109. package/lib/typescript/src/components/time-picker/accessibility.d.ts +10 -0
  110. package/lib/typescript/src/components/time-picker/accessibility.d.ts.map +1 -0
  111. package/lib/typescript/src/components/time-picker/index.d.ts.map +1 -1
  112. package/lib/typescript/src/components/waterfall-chart/index.d.ts +379 -0
  113. package/lib/typescript/src/components/waterfall-chart/index.d.ts.map +1 -0
  114. package/lib/typescript/src/index.d.ts +2 -1
  115. package/lib/typescript/src/index.d.ts.map +1 -1
  116. package/lib/typescript/src/primitives/modal-isolation-store.d.ts +10 -0
  117. package/lib/typescript/src/primitives/modal-isolation-store.d.ts.map +1 -0
  118. package/lib/typescript/src/primitives/portal.d.ts +6 -0
  119. package/lib/typescript/src/primitives/portal.d.ts.map +1 -1
  120. package/lib/typescript/src/providers/panel-ui-provider.d.ts.map +1 -1
  121. package/package.json +5 -2
  122. package/src/components/badge/index.tsx +4 -1
  123. package/src/components/bar-chart/index.tsx +40 -3
  124. package/src/components/bottom-sheet/index.tsx +3 -3
  125. package/src/components/button/index.tsx +15 -21
  126. package/src/components/carousel/index.tsx +42 -20
  127. package/src/components/checkbox/index.tsx +1 -2
  128. package/src/components/dialog/index.tsx +3 -3
  129. package/src/components/drawer/index.tsx +3 -3
  130. package/src/components/fab/index.tsx +8 -12
  131. package/src/components/field/index.tsx +52 -10
  132. package/src/components/flow/flow-accessibility.ts +109 -0
  133. package/src/components/flow/index.tsx +162 -50
  134. package/src/components/form/use-form.ts +101 -65
  135. package/src/components/heatmap-chart/index.tsx +2 -3
  136. package/src/components/hex-chart/index.tsx +2 -3
  137. package/src/components/kpi/index.tsx +3 -1
  138. package/src/components/line-chart/index.tsx +3 -2
  139. package/src/components/map/index.tsx +110 -7
  140. package/src/components/map/map-accessibility.ts +41 -0
  141. package/src/components/map/maplibre.ts +2 -0
  142. package/src/components/menu/index.tsx +4 -1
  143. package/src/components/number-input/index.tsx +1 -26
  144. package/src/components/number-input/number-input-math.ts +50 -0
  145. package/src/components/plot/index.tsx +2 -1
  146. package/src/components/radio-group/index.tsx +1 -2
  147. package/src/components/sortable/index.tsx +12 -64
  148. package/src/components/sortable/reorder.ts +88 -0
  149. package/src/components/swipe/index.tsx +7 -4
  150. package/src/components/switch/index.tsx +42 -6
  151. package/src/components/time-picker/accessibility.ts +24 -0
  152. package/src/components/time-picker/index.tsx +48 -2
  153. package/src/components/waterfall-chart/index.tsx +1589 -0
  154. package/src/index.ts +23 -0
  155. package/src/primitives/modal-isolation-store.ts +31 -0
  156. package/src/primitives/portal.tsx +34 -4
  157. package/src/providers/panel-ui-provider.tsx +41 -9
  158. package/theme.css +30 -3
package/src/index.ts CHANGED
@@ -304,6 +304,7 @@ export {
304
304
  type MapArcProps,
305
305
  type MapGeoJSONProps,
306
306
  type MapClusterProps,
307
+ type MapFeatureAccessibility,
307
308
  type MapHeatmapProps,
308
309
  type MapUserLocationProps,
309
310
  type BasemapSource,
@@ -1095,6 +1096,28 @@ export {
1095
1096
  type TypographyParagraphProps,
1096
1097
  type TypographyCodeProps,
1097
1098
  } from './components/typography';
1099
+ export {
1100
+ WaterfallChart,
1101
+ useWaterfallChart,
1102
+ waterfallSteps,
1103
+ type WaterfallChartProps,
1104
+ type WaterfallChartHandle,
1105
+ type WaterfallChartHeaderProps,
1106
+ type WaterfallChartGridProps,
1107
+ type WaterfallChartBarsProps,
1108
+ type WaterfallChartConnectorsProps,
1109
+ type WaterfallChartValuesProps,
1110
+ type WaterfallChartSkeletonProps,
1111
+ type WaterfallChartXAxisProps,
1112
+ type WaterfallChartYAxisProps,
1113
+ type WaterfallChartTooltipProps,
1114
+ type WaterfallChartLegendProps,
1115
+ type WaterfallChartStatus,
1116
+ type WaterfallChartOrientation,
1117
+ type WaterfallDatum,
1118
+ type WaterfallStep,
1119
+ type WaterfallKind,
1120
+ } from './components/waterfall-chart';
1098
1121
 
1099
1122
  // Icons
1100
1123
  export {
@@ -0,0 +1,31 @@
1
+ /** Tracks modal owners without unisolating the app while a nested modal remains. */
2
+ export class ModalIsolationStore {
3
+ private owners = new Set<string>();
4
+ private listeners = new Set<() => void>();
5
+
6
+ acquire = (owner: string): (() => void) => {
7
+ const wasActive = this.getSnapshot();
8
+ this.owners.add(owner);
9
+ if (this.getSnapshot() !== wasActive) this.emit();
10
+
11
+ let released = false;
12
+ return () => {
13
+ if (released) return;
14
+ released = true;
15
+ const activeBeforeRelease = this.getSnapshot();
16
+ this.owners.delete(owner);
17
+ if (this.getSnapshot() !== activeBeforeRelease) this.emit();
18
+ };
19
+ };
20
+
21
+ subscribe = (listener: () => void): (() => void) => {
22
+ this.listeners.add(listener);
23
+ return () => this.listeners.delete(listener);
24
+ };
25
+
26
+ getSnapshot = (): boolean => this.owners.size > 0;
27
+
28
+ private emit() {
29
+ this.listeners.forEach((listener) => listener());
30
+ }
31
+ }
@@ -7,6 +7,7 @@ import {
7
7
  useSyncExternalStore,
8
8
  type ReactNode,
9
9
  } from 'react';
10
+ import { ModalIsolationStore } from './modal-isolation-store';
10
11
 
11
12
  type PortalMap = ReadonlyMap<string, ReactNode>;
12
13
 
@@ -39,13 +40,18 @@ class PortalStore {
39
40
  }
40
41
 
41
42
  const PortalContext = createContext<PortalStore | null>(null);
43
+ const ModalIsolationContext = createContext<ModalIsolationStore | null>(null);
42
44
 
43
45
  export function PortalProvider({ children }: { children: ReactNode }) {
44
- const storeRef = useRef<PortalStore | null>(null);
45
- storeRef.current ??= new PortalStore();
46
+ const portalStoreRef = useRef<PortalStore | null>(null);
47
+ const modalStoreRef = useRef<ModalIsolationStore | null>(null);
48
+ portalStoreRef.current ??= new PortalStore();
49
+ modalStoreRef.current ??= new ModalIsolationStore();
46
50
  return (
47
- <PortalContext.Provider value={storeRef.current}>
48
- {children}
51
+ <PortalContext.Provider value={portalStoreRef.current}>
52
+ <ModalIsolationContext.Provider value={modalStoreRef.current}>
53
+ {children}
54
+ </ModalIsolationContext.Provider>
49
55
  </PortalContext.Provider>
50
56
  );
51
57
  }
@@ -71,6 +77,30 @@ export function Portal({ children }: { children: ReactNode }) {
71
77
  return null;
72
78
  }
73
79
 
80
+ /** A portal that owns modal focus until it unmounts. */
81
+ export function ModalPortal({ children }: { children: ReactNode }) {
82
+ const store = useModalIsolationStore('ModalPortal');
83
+ const owner = useId();
84
+
85
+ useEffect(() => store.acquire(owner), [owner, store]);
86
+
87
+ return <Portal>{children}</Portal>;
88
+ }
89
+
90
+ /** Whether any modal portal currently owns focus. */
91
+ export function useModalIsolationActive(): boolean {
92
+ const store = useModalIsolationStore('useModalIsolationActive');
93
+ return useSyncExternalStore(store.subscribe, store.getSnapshot);
94
+ }
95
+
96
+ function useModalIsolationStore(component: string): ModalIsolationStore {
97
+ const store = useContext(ModalIsolationContext);
98
+ if (!store) {
99
+ throw new Error(`${component} must be used within a <PanelUIProvider>`);
100
+ }
101
+ return store;
102
+ }
103
+
74
104
  /** Mount point for portaled content. PanelUIProvider renders one automatically. */
75
105
  export function PortalHost() {
76
106
  const store = usePortalStore('PortalHost');
@@ -1,7 +1,11 @@
1
1
  import { Fragment, type ComponentType, type ReactNode } from 'react';
2
- import { StyleSheet, View } from 'react-native';
2
+ import { Platform, StyleSheet, View } from 'react-native';
3
3
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
4
- import { PortalHost, PortalProvider } from '../primitives/portal';
4
+ import {
5
+ PortalHost,
6
+ PortalProvider,
7
+ useModalIsolationActive,
8
+ } from '../primitives/portal';
5
9
  import { ToastViewport } from '../components/toast';
6
10
  import { cn } from '../utils/cn';
7
11
 
@@ -58,19 +62,47 @@ export function PanelUIProvider({
58
62
  {/* Outermost of ours, so every field below it can avoid the keyboard.
59
63
  A no-op Fragment when the controller is not installed. */}
60
64
  <KeyboardProvider>
61
- <View className={cn('flex-1', background && 'bg-background', className)}>
62
- <PortalProvider>
65
+ <PortalProvider>
66
+ <ProviderSurface
67
+ background={background}
68
+ className={className}
69
+ >
63
70
  {children}
64
- {/* Sits before PortalHost so it can portal into it. */}
65
- <ToastViewport />
66
- <PortalHost />
67
- </PortalProvider>
68
- </View>
71
+ </ProviderSurface>
72
+ </PortalProvider>
69
73
  </KeyboardProvider>
70
74
  </GestureHandlerRootView>
71
75
  );
72
76
  }
73
77
 
78
+ function ProviderSurface({
79
+ children,
80
+ className,
81
+ background,
82
+ }: Required<Pick<PanelUIProviderProps, 'children' | 'background'>> &
83
+ Pick<PanelUIProviderProps, 'className'>) {
84
+ const modalActive = useModalIsolationActive();
85
+ const isolateApp = Platform.OS === 'android' && modalActive;
86
+
87
+ return (
88
+ <View className={cn('flex-1', background && 'bg-background', className)}>
89
+ {/* This wrapper is the app accessibility boundary. PortalHost stays its
90
+ sibling, so hiding the background can never hide the active modal. */}
91
+ <View
92
+ collapsable={false}
93
+ style={styles.content}
94
+ importantForAccessibility={isolateApp ? 'no-hide-descendants' : 'auto'}
95
+ >
96
+ {children}
97
+ </View>
98
+ {/* Sits before PortalHost so it can portal into it. */}
99
+ <ToastViewport />
100
+ <PortalHost />
101
+ </View>
102
+ );
103
+ }
104
+
74
105
  const styles = StyleSheet.create({
75
106
  root: { flex: 1 },
107
+ content: { flex: 1 },
76
108
  });
package/theme.css CHANGED
@@ -78,12 +78,16 @@
78
78
  --color-accent-foreground: unset;
79
79
  --color-destructive: unset;
80
80
  --color-destructive-foreground: unset;
81
+ --color-destructive-solid-foreground: unset;
81
82
  --color-info: unset;
82
83
  --color-info-foreground: unset;
84
+ --color-info-solid-foreground: unset;
83
85
  --color-success: unset;
84
86
  --color-success-foreground: unset;
87
+ --color-success-solid-foreground: unset;
85
88
  --color-warning: unset;
86
89
  --color-warning-foreground: unset;
90
+ --color-warning-solid-foreground: unset;
87
91
  --color-border: unset;
88
92
  --color-input: unset;
89
93
  --color-ring: unset;
@@ -226,15 +230,19 @@
226
230
  /* status: {hue}-500, foreground {hue}-700 */
227
231
  --color-destructive: #ef4444;
228
232
  --color-destructive-foreground: #b91c1c;
233
+ --color-destructive-solid-foreground: #171717;
229
234
 
230
235
  --color-info: #3b82f6;
231
236
  --color-info-foreground: #1d4ed8;
237
+ --color-info-solid-foreground: #171717;
232
238
 
233
239
  --color-success: #10b981;
234
240
  --color-success-foreground: #047857;
241
+ --color-success-solid-foreground: #171717;
235
242
 
236
243
  --color-warning: #f59e0b;
237
244
  --color-warning-foreground: #b45309;
245
+ --color-warning-solid-foreground: #171717;
238
246
 
239
247
  /* border: black 8%, input: black 10% */
240
248
  --color-border: rgba(0, 0, 0, 0.08);
@@ -327,15 +335,19 @@
327
335
  /* color-mix(red-500 90%, white), foreground {hue}-400 */
328
336
  --color-destructive: #f15757;
329
337
  --color-destructive-foreground: #f87171;
338
+ --color-destructive-solid-foreground: #171717;
330
339
 
331
340
  --color-info: #3b82f6;
332
341
  --color-info-foreground: #60a5fa;
342
+ --color-info-solid-foreground: #171717;
333
343
 
334
344
  --color-success: #10b981;
335
345
  --color-success-foreground: #34d399;
346
+ --color-success-solid-foreground: #171717;
336
347
 
337
348
  --color-warning: #f59e0b;
338
349
  --color-warning-foreground: #fbbf24;
350
+ --color-warning-solid-foreground: #171717;
339
351
 
340
352
  /* border: white 6%, input: white 8% */
341
353
  --color-border: rgba(255, 255, 255, 0.06);
@@ -446,15 +458,19 @@
446
458
 
447
459
  --color-destructive: #eb5757;
448
460
  --color-destructive-foreground: #c62b30;
461
+ --color-destructive-solid-foreground: #08090a;
449
462
 
450
463
  --color-info: #4ea7fc;
451
464
  --color-info-foreground: #0b6ec4;
465
+ --color-info-solid-foreground: #08090a;
452
466
 
453
467
  --color-success: #27a644;
454
468
  --color-success-foreground: #1c7a32;
469
+ --color-success-solid-foreground: #08090a;
455
470
 
456
471
  --color-warning: #f2c94c;
457
472
  --color-warning-foreground: #8a6d0b;
473
+ --color-warning-solid-foreground: #08090a;
458
474
 
459
475
  --color-border: rgba(0, 0, 0, 0.08);
460
476
  --color-input: rgba(0, 0, 0, 0.12);
@@ -531,15 +547,19 @@
531
547
 
532
548
  --color-destructive: #eb5757;
533
549
  --color-destructive-foreground: #ff8a8a;
550
+ --color-destructive-solid-foreground: #08090a;
534
551
 
535
552
  --color-info: #4ea7fc;
536
553
  --color-info-foreground: #8ec5ff;
554
+ --color-info-solid-foreground: #08090a;
537
555
 
538
556
  --color-success: #27a644;
539
557
  --color-success-foreground: #4cc061;
558
+ --color-success-solid-foreground: #08090a;
540
559
 
541
560
  --color-warning: #f2c94c;
542
561
  --color-warning-foreground: #f5d97a;
562
+ --color-warning-solid-foreground: #08090a;
543
563
 
544
564
  /* The hairlines are opaque, not translucent: the surface ladder is only
545
565
  a few points wide, so a border mixed with whatever is under it would
@@ -606,10 +626,9 @@
606
626
  /* the sunken band under a card or dialog: black at 3.5% */
607
627
  --color-inset: rgba(0, 0, 0, 0.035);
608
628
 
609
- /* Brand green is too light for white text; light mode uses the
610
- darker ramp step so the contrast ratio holds. */
629
+ /* Dark green ink preserves the brand fill and clears the body-text floor. */
611
630
  --color-primary: #24b47e;
612
- --color-primary-foreground: #ffffff;
631
+ --color-primary-foreground: #052e1b;
613
632
 
614
633
  --color-secondary: rgba(0, 0, 0, 0.05);
615
634
  --color-secondary-foreground: #171717;
@@ -622,15 +641,19 @@
622
641
 
623
642
  --color-destructive: #ef4444;
624
643
  --color-destructive-foreground: #b91c1c;
644
+ --color-destructive-solid-foreground: #171717;
625
645
 
626
646
  --color-info: #3b82f6;
627
647
  --color-info-foreground: #1d4ed8;
648
+ --color-info-solid-foreground: #171717;
628
649
 
629
650
  --color-success: #24b47e;
630
651
  --color-success-foreground: #16794c;
652
+ --color-success-solid-foreground: #171717;
631
653
 
632
654
  --color-warning: #f59e0b;
633
655
  --color-warning-foreground: #b45309;
656
+ --color-warning-solid-foreground: #171717;
634
657
 
635
658
  --color-border: rgba(0, 0, 0, 0.08);
636
659
  --color-input: rgba(0, 0, 0, 0.1);
@@ -707,15 +730,19 @@
707
730
 
708
731
  --color-destructive: #f15757;
709
732
  --color-destructive-foreground: #f87171;
733
+ --color-destructive-solid-foreground: #171717;
710
734
 
711
735
  --color-info: #3b82f6;
712
736
  --color-info-foreground: #60a5fa;
737
+ --color-info-solid-foreground: #171717;
713
738
 
714
739
  --color-success: #3ecf8e;
715
740
  --color-success-foreground: #4ade80;
741
+ --color-success-solid-foreground: #171717;
716
742
 
717
743
  --color-warning: #f59e0b;
718
744
  --color-warning-foreground: #fbbf24;
745
+ --color-warning-solid-foreground: #171717;
719
746
 
720
747
  --color-border: rgba(255, 255, 255, 0.07);
721
748
  --color-input: rgba(255, 255, 255, 0.1);