@object-ui/components 16.1.0 → 17.1.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.
package/README.md CHANGED
@@ -150,6 +150,34 @@ function MyComponent() {
150
150
  - `link` - Link component
151
151
  - `breadcrumb` - Breadcrumb navigation
152
152
 
153
+ ## Notification Surfaces
154
+
155
+ Direct-import React components (not schema blocks) that render the notifications
156
+ raised through `NotificationProvider` from `@object-ui/react`. One per spec
157
+ `displayType`, so a `banner` no longer presents as a toast:
158
+
159
+ | Component | `displayType` | Where to mount it |
160
+ | --- | --- | --- |
161
+ | `<NotificationSnackbar />` | `snackbar` | anywhere inside the provider — it anchors itself bottom-center |
162
+ | `<NotificationBanners />` | `banner` | top of the content area (it takes space in the flow) |
163
+ | `<NotificationAlerts />` | `alert` | anywhere inside the provider — blocking dialog, FIFO queue |
164
+ | `<NotificationInline scope="…" />` | `inline` | in the surface that raises them |
165
+
166
+ `toast` stays with the host's `onToast` delegate (sonner in the console). All of
167
+ them draw the notification's `severity` icon unless it declares an `icon`
168
+ override naming a real Lucide icon. See the
169
+ [notifications guide](https://objectui.org/docs/guide/notifications).
170
+
171
+ ```tsx
172
+ import { NotificationBanners, NotificationAlerts } from '@object-ui/components';
173
+
174
+ <main>
175
+ <NotificationBanners />
176
+ <Outlet />
177
+ <NotificationAlerts />
178
+ </main>
179
+ ```
180
+
153
181
  ## Customization
154
182
 
155
183
  ### Override Styles
@@ -38,6 +38,84 @@ export interface FilterBuilderProps {
38
38
  className?: string;
39
39
  showClearAll?: boolean;
40
40
  }
41
+ declare const defaultOperators: readonly [{
42
+ readonly value: "equals";
43
+ readonly label: "Equals";
44
+ }, {
45
+ readonly value: "notEquals";
46
+ readonly label: "Does not equal";
47
+ }, {
48
+ readonly value: "contains";
49
+ readonly label: "Contains";
50
+ }, {
51
+ readonly value: "notContains";
52
+ readonly label: "Does not contain";
53
+ }, {
54
+ readonly value: "isEmpty";
55
+ readonly label: "Is empty";
56
+ }, {
57
+ readonly value: "isNotEmpty";
58
+ readonly label: "Is not empty";
59
+ }, {
60
+ readonly value: "greaterThan";
61
+ readonly label: "Greater than";
62
+ }, {
63
+ readonly value: "lessThan";
64
+ readonly label: "Less than";
65
+ }, {
66
+ readonly value: "greaterOrEqual";
67
+ readonly label: "Greater than or equal";
68
+ }, {
69
+ readonly value: "lessOrEqual";
70
+ readonly label: "Less than or equal";
71
+ }, {
72
+ readonly value: "before";
73
+ readonly label: "Before";
74
+ }, {
75
+ readonly value: "after";
76
+ readonly label: "After";
77
+ }, {
78
+ readonly value: "between";
79
+ readonly label: "Between";
80
+ }, {
81
+ readonly value: "in";
82
+ readonly label: "In";
83
+ }, {
84
+ readonly value: "notIn";
85
+ readonly label: "Not in";
86
+ }, {
87
+ readonly value: "startsWith";
88
+ readonly label: "Starts with";
89
+ }, {
90
+ readonly value: "endsWith";
91
+ readonly label: "Ends with";
92
+ }, {
93
+ readonly value: "isNull";
94
+ readonly label: "Is null";
95
+ }, {
96
+ readonly value: "isNotNull";
97
+ readonly label: "Is not null";
98
+ }, {
99
+ readonly value: "exists";
100
+ readonly label: "Is set";
101
+ }, {
102
+ readonly value: "notExists";
103
+ readonly label: "Is not set";
104
+ }];
105
+ /**
106
+ * The FilterBuilder's own operator vocabulary — every id its dropdown can
107
+ * hold, derived from the operators it actually renders.
108
+ *
109
+ * Exported because several translation tables map an external vocabulary
110
+ * (the spec's `VIEW_FILTER_OPERATORS`, Mongo `$`-tokens) *onto* this one, and
111
+ * a value that is not in this list produces a condition row whose operator
112
+ * select has nothing to select. Those tables assert against this export
113
+ * rather than restating it, so adding an operator here is the only edit
114
+ * needed to widen them.
115
+ */
116
+ export declare const FILTER_BUILDER_OPERATORS: ("endsWith" | "startsWith" | "in" | "after" | "equals" | "notEquals" | "contains" | "notContains" | "isEmpty" | "isNotEmpty" | "greaterThan" | "lessThan" | "greaterOrEqual" | "lessOrEqual" | "before" | "between" | "notIn" | "isNull" | "isNotNull" | "exists" | "notExists")[];
117
+ /** An operator id the FilterBuilder can render. */
118
+ export type FilterBuilderOperator = (typeof defaultOperators)[number]['value'];
41
119
  declare function FilterBuilder({ fields, value, onChange, className, showClearAll, }: FilterBuilderProps): React.JSX.Element;
42
120
  declare namespace FilterBuilder {
43
121
  var displayName: string;
@@ -12,6 +12,7 @@ export * from './item';
12
12
  export * from './kbd';
13
13
  export * from './native-select';
14
14
  export * from './navigation-overlay';
15
+ export * from './resizable';
15
16
  export * from './section-header';
16
17
  export * from './spinner';
17
18
  export * from './sort-builder';
@@ -0,0 +1,31 @@
1
+ import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../ui/resizable';
2
+ /**
3
+ * ObjectUI
4
+ * Copyright (c) 2024-present ObjectStack Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ /**
10
+ * The public `Resizable*` export site.
11
+ *
12
+ * This module used to wrap `ResizableHandle` to re-key its stacked-group styles
13
+ * from the dead `data-[panel-group-direction=vertical]` onto the
14
+ * `aria-orientation` attribute react-resizable-panels v4 actually emits (#3024).
15
+ * That fix now lives in `../ui/resizable` itself, so there is nothing left to
16
+ * wrap and all three components pass straight through.
17
+ *
18
+ * Editing `ui/` is normally off-limits (AGENTS.md #7), but that file is no
19
+ * longer upstream-synced: it is hand-migrated to v4 and listed under
20
+ * `customComponents` in `shadcn-components.json`, because upstream still ships
21
+ * the v3 file and re-syncing would break the build. See its header.
22
+ *
23
+ * This module stays as the single public export site rather than folding into
24
+ * `ui/index.ts`: `src/index.ts` star-exports `./ui` and `./custom` side by side,
25
+ * so exporting `Resizable*` from both would collide (TS2308).
26
+ */
27
+ import type * as React from 'react';
28
+ /** Kept on the public surface (it is exported from the package root) even though
29
+ * the wrapper it was introduced for is gone. */
30
+ export type ResizableHandleProps = React.ComponentProps<typeof ResizableHandle>;
31
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };
package/dist/index.css CHANGED
@@ -19,6 +19,7 @@
19
19
  --color-amber-200: oklch(92.4% 0.12 95.746);
20
20
  --color-amber-300: oklch(87.9% 0.169 91.605);
21
21
  --color-amber-400: oklch(82.8% 0.189 84.429);
22
+ --color-amber-600: oklch(66.6% 0.179 58.318);
22
23
  --color-amber-700: oklch(55.5% 0.163 48.998);
23
24
  --color-amber-800: oklch(47.3% 0.137 46.201);
24
25
  --color-amber-900: oklch(41.4% 0.112 45.904);
@@ -28,11 +29,15 @@
28
29
  --color-yellow-400: oklch(85.2% 0.199 91.936);
29
30
  --color-green-500: oklch(72.3% 0.219 149.579);
30
31
  --color-green-600: oklch(62.7% 0.194 149.214);
32
+ --color-emerald-50: oklch(97.9% 0.021 166.113);
31
33
  --color-emerald-100: oklch(95% 0.052 163.051);
34
+ --color-emerald-200: oklch(90.5% 0.093 164.15);
35
+ --color-emerald-300: oklch(84.5% 0.143 164.978);
32
36
  --color-emerald-400: oklch(76.5% 0.177 163.223);
33
37
  --color-emerald-500: oklch(69.6% 0.17 162.48);
34
38
  --color-emerald-600: oklch(59.6% 0.145 163.225);
35
39
  --color-emerald-700: oklch(50.8% 0.118 165.612);
40
+ --color-emerald-900: oklch(37.8% 0.077 168.94);
36
41
  --color-emerald-950: oklch(26.2% 0.051 172.552);
37
42
  --color-cyan-200: oklch(91.7% 0.08 205.041);
38
43
  --color-cyan-300: oklch(86.5% 0.127 207.078);
@@ -292,6 +297,9 @@
292
297
  }
293
298
  }
294
299
  @layer utilities {
300
+ .\@container {
301
+ container-type: inline-size;
302
+ }
295
303
  .pointer-events-auto {
296
304
  pointer-events: auto;
297
305
  }
@@ -429,6 +437,9 @@
429
437
  .left-2\.5 {
430
438
  left: calc(var(--spacing) * 2.5);
431
439
  }
440
+ .left-4 {
441
+ left: calc(var(--spacing) * 4);
442
+ }
432
443
  .left-\[50\%\] {
433
444
  left: 50%;
434
445
  }
@@ -453,6 +464,9 @@
453
464
  .z-\[9999\] {
454
465
  z-index: 9999;
455
466
  }
467
+ .order-last {
468
+ order: 9999;
469
+ }
456
470
  .col-span-2 {
457
471
  grid-column: span 2 / span 2;
458
472
  }
@@ -558,6 +572,9 @@
558
572
  .mt-auto {
559
573
  margin-top: auto;
560
574
  }
575
+ .-mr-1 {
576
+ margin-right: calc(var(--spacing) * -1);
577
+ }
561
578
  .mr-1 {
562
579
  margin-right: var(--spacing);
563
580
  }
@@ -655,6 +672,10 @@
655
672
  width: var(--cell-size);
656
673
  height: var(--cell-size);
657
674
  }
675
+ .size-1\.5 {
676
+ width: calc(var(--spacing) * 1.5);
677
+ height: calc(var(--spacing) * 1.5);
678
+ }
658
679
  .size-3\.5 {
659
680
  width: calc(var(--spacing) * 3.5);
660
681
  height: calc(var(--spacing) * 3.5);
@@ -872,6 +893,9 @@
872
893
  .min-h-\[200px\] {
873
894
  min-height: 200px;
874
895
  }
896
+ .min-h-\[300px\] {
897
+ min-height: 300px;
898
+ }
875
899
  .min-h-full {
876
900
  min-height: 100%;
877
901
  }
@@ -1004,6 +1028,12 @@
1004
1028
  .w-\[calc\(100vw-1rem\)\] {
1005
1029
  width: calc(100vw - 1rem);
1006
1030
  }
1031
+ .w-\[min\(28rem\,calc\(100vw-2rem\)\)\] {
1032
+ width: min(28rem, calc(100vw - 2rem));
1033
+ }
1034
+ .w-\[var\(--radix-popover-trigger-width\)\] {
1035
+ width: var(--radix-popover-trigger-width);
1036
+ }
1007
1037
  .w-auto {
1008
1038
  width: auto;
1009
1039
  }
@@ -1130,6 +1160,9 @@
1130
1160
  .min-w-\[160px\] {
1131
1161
  min-width: 160px;
1132
1162
  }
1163
+ .min-w-\[200px\] {
1164
+ min-width: 200px;
1165
+ }
1133
1166
  .min-w-\[var\(--radix-select-trigger-width\)\] {
1134
1167
  min-width: var(--radix-select-trigger-width);
1135
1168
  }
@@ -1142,9 +1175,15 @@
1142
1175
  .flex-shrink-0 {
1143
1176
  flex-shrink: 0;
1144
1177
  }
1178
+ .shrink {
1179
+ flex-shrink: 1;
1180
+ }
1145
1181
  .shrink-0 {
1146
1182
  flex-shrink: 0;
1147
1183
  }
1184
+ .flex-grow {
1185
+ flex-grow: 1;
1186
+ }
1148
1187
  .grow {
1149
1188
  flex-grow: 1;
1150
1189
  }
@@ -1189,6 +1228,9 @@
1189
1228
  .origin-\[--radix-\.\.\.\] {
1190
1229
  transform-origin: --radix-...;
1191
1230
  }
1231
+ .origin-\[--radix-…\] {
1232
+ transform-origin: --radix-…;
1233
+ }
1192
1234
  .-translate-x-1\/2 {
1193
1235
  --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
1194
1236
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1478,6 +1520,9 @@
1478
1520
  margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
1479
1521
  margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
1480
1522
  }
1523
+ .gap-y-0\.5 {
1524
+ row-gap: calc(var(--spacing) * 0.5);
1525
+ }
1481
1526
  .gap-y-1\.5 {
1482
1527
  row-gap: calc(var(--spacing) * 1.5);
1483
1528
  }
@@ -1630,6 +1675,12 @@
1630
1675
  .border-amber-300 {
1631
1676
  border-color: var(--color-amber-300);
1632
1677
  }
1678
+ .border-amber-300\/70 {
1679
+ border-color: color-mix(in srgb, oklch(87.9% 0.169 91.605) 70%, transparent);
1680
+ @supports (color: color-mix(in lab, red, red)) {
1681
+ border-color: color-mix(in oklab, var(--color-amber-300) 70%, transparent);
1682
+ }
1683
+ }
1633
1684
  .border-amber-400\/40 {
1634
1685
  border-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 40%, transparent);
1635
1686
  @supports (color: color-mix(in lab, red, red)) {
@@ -1678,6 +1729,12 @@
1678
1729
  border-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);
1679
1730
  }
1680
1731
  }
1732
+ .border-emerald-300\/70 {
1733
+ border-color: color-mix(in srgb, oklch(84.5% 0.143 164.978) 70%, transparent);
1734
+ @supports (color: color-mix(in lab, red, red)) {
1735
+ border-color: color-mix(in oklab, var(--color-emerald-300) 70%, transparent);
1736
+ }
1737
+ }
1681
1738
  .border-gray-300 {
1682
1739
  border-color: var(--color-gray-300);
1683
1740
  }
@@ -1795,6 +1852,9 @@
1795
1852
  background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);
1796
1853
  }
1797
1854
  }
1855
+ .bg-emerald-50 {
1856
+ background-color: var(--color-emerald-50);
1857
+ }
1798
1858
  .bg-emerald-100 {
1799
1859
  background-color: var(--color-emerald-100);
1800
1860
  }
@@ -2259,6 +2319,9 @@
2259
2319
  .text-accent-foreground {
2260
2320
  color: var(--color-accent-foreground);
2261
2321
  }
2322
+ .text-amber-600 {
2323
+ color: var(--color-amber-600);
2324
+ }
2262
2325
  .text-amber-700 {
2263
2326
  color: var(--color-amber-700);
2264
2327
  }
@@ -2292,6 +2355,9 @@
2292
2355
  .text-emerald-700 {
2293
2356
  color: var(--color-emerald-700);
2294
2357
  }
2358
+ .text-emerald-900 {
2359
+ color: var(--color-emerald-900);
2360
+ }
2295
2361
  .text-foreground {
2296
2362
  color: var(--color-foreground);
2297
2363
  }
@@ -2614,6 +2680,10 @@
2614
2680
  --tw-outline-style: none;
2615
2681
  outline-style: none;
2616
2682
  }
2683
+ .select-all {
2684
+ -webkit-user-select: all;
2685
+ user-select: all;
2686
+ }
2617
2687
  .select-none {
2618
2688
  -webkit-user-select: none;
2619
2689
  user-select: none;
@@ -3357,6 +3427,34 @@
3357
3427
  .aria-selected\:text-muted-foreground[aria-selected="true"] {
3358
3428
  color: var(--color-muted-foreground);
3359
3429
  }
3430
+ .aria-\[orientation\=horizontal\]\:h-px[aria-orientation="horizontal"] {
3431
+ height: 1px;
3432
+ }
3433
+ .aria-\[orientation\=horizontal\]\:w-full[aria-orientation="horizontal"] {
3434
+ width: 100%;
3435
+ }
3436
+ .aria-\[orientation\=horizontal\]\:after\:left-0[aria-orientation="horizontal"]::after {
3437
+ content: var(--tw-content);
3438
+ left: 0px;
3439
+ }
3440
+ .aria-\[orientation\=horizontal\]\:after\:h-1[aria-orientation="horizontal"]::after {
3441
+ content: var(--tw-content);
3442
+ height: var(--spacing);
3443
+ }
3444
+ .aria-\[orientation\=horizontal\]\:after\:w-full[aria-orientation="horizontal"]::after {
3445
+ content: var(--tw-content);
3446
+ width: 100%;
3447
+ }
3448
+ .aria-\[orientation\=horizontal\]\:after\:translate-x-0[aria-orientation="horizontal"]::after {
3449
+ content: var(--tw-content);
3450
+ --tw-translate-x: 0px;
3451
+ translate: var(--tw-translate-x) var(--tw-translate-y);
3452
+ }
3453
+ .aria-\[orientation\=horizontal\]\:after\:-translate-y-1\/2[aria-orientation="horizontal"]::after {
3454
+ content: var(--tw-content);
3455
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
3456
+ translate: var(--tw-translate-x) var(--tw-translate-y);
3457
+ }
3360
3458
  .data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
3361
3459
  background-color: var(--color-sidebar-accent);
3362
3460
  }
@@ -3418,37 +3516,6 @@
3418
3516
  .data-\[orientation\=vertical\]\:h-auto[data-orientation="vertical"] {
3419
3517
  height: auto;
3420
3518
  }
3421
- .data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction="vertical"] {
3422
- height: 1px;
3423
- }
3424
- .data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction="vertical"] {
3425
- width: 100%;
3426
- }
3427
- .data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction="vertical"] {
3428
- flex-direction: column;
3429
- }
3430
- .data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction="vertical"]::after {
3431
- content: var(--tw-content);
3432
- left: 0px;
3433
- }
3434
- .data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction="vertical"]::after {
3435
- content: var(--tw-content);
3436
- height: var(--spacing);
3437
- }
3438
- .data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction="vertical"]::after {
3439
- content: var(--tw-content);
3440
- width: 100%;
3441
- }
3442
- .data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction="vertical"]::after {
3443
- content: var(--tw-content);
3444
- --tw-translate-x: 0px;
3445
- translate: var(--tw-translate-x) var(--tw-translate-y);
3446
- }
3447
- .data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction="vertical"]::after {
3448
- content: var(--tw-content);
3449
- --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
3450
- translate: var(--tw-translate-x) var(--tw-translate-y);
3451
- }
3452
3519
  .data-\[placeholder\]\:text-muted-foreground[data-placeholder] {
3453
3520
  color: var(--color-muted-foreground);
3454
3521
  }
@@ -3535,6 +3602,9 @@
3535
3602
  .data-\[state\=active\]\:bg-transparent[data-state="active"] {
3536
3603
  background-color: transparent;
3537
3604
  }
3605
+ .data-\[state\=active\]\:text-destructive[data-state="active"] {
3606
+ color: var(--color-destructive);
3607
+ }
3538
3608
  .data-\[state\=active\]\:text-foreground[data-state="active"] {
3539
3609
  color: var(--color-foreground);
3540
3610
  }
@@ -3614,6 +3684,9 @@
3614
3684
  .data-\[state\=hidden\]\:fade-out[data-state="hidden"] {
3615
3685
  --tw-exit-opacity: 0;
3616
3686
  }
3687
+ .data-\[state\=inactive\]\:hidden[data-state="inactive"] {
3688
+ display: none;
3689
+ }
3617
3690
  .data-\[state\=on\]\:bg-accent[data-state="on"] {
3618
3691
  background-color: var(--color-accent);
3619
3692
  }
@@ -3818,9 +3891,18 @@
3818
3891
  .motion-safe\:duration-300 {
3819
3892
  animation-duration: 300ms;
3820
3893
  }
3894
+ .motion-safe\:fade-in {
3895
+ --tw-enter-opacity: 0;
3896
+ }
3821
3897
  .motion-safe\:fade-in-0 {
3822
3898
  --tw-enter-opacity: 0;
3823
3899
  }
3900
+ .motion-safe\:slide-in-from-bottom-4 {
3901
+ --tw-enter-translate-y: 1rem;
3902
+ }
3903
+ .motion-safe\:slide-in-from-top-4 {
3904
+ --tw-enter-translate-y: -1rem;
3905
+ }
3824
3906
  .motion-safe\:zoom-in-95 {
3825
3907
  --tw-enter-scale: .95;
3826
3908
  }
@@ -4456,12 +4538,24 @@
4456
4538
  grid-column: span 4 / span 4;
4457
4539
  }
4458
4540
  }
4541
+ .dark\:border-amber-700\/60:where(.dark, .dark *) {
4542
+ border-color: color-mix(in srgb, oklch(55.5% 0.163 48.998) 60%, transparent);
4543
+ @supports (color: color-mix(in lab, red, red)) {
4544
+ border-color: color-mix(in oklab, var(--color-amber-700) 60%, transparent);
4545
+ }
4546
+ }
4459
4547
  .dark\:border-amber-900:where(.dark, .dark *) {
4460
4548
  border-color: var(--color-amber-900);
4461
4549
  }
4462
4550
  .dark\:border-destructive:where(.dark, .dark *) {
4463
4551
  border-color: var(--color-destructive);
4464
4552
  }
4553
+ .dark\:border-emerald-700\/60:where(.dark, .dark *) {
4554
+ border-color: color-mix(in srgb, oklch(50.8% 0.118 165.612) 60%, transparent);
4555
+ @supports (color: color-mix(in lab, red, red)) {
4556
+ border-color: color-mix(in oklab, var(--color-emerald-700) 60%, transparent);
4557
+ }
4558
+ }
4465
4559
  .dark\:bg-amber-950\/20:where(.dark, .dark *) {
4466
4560
  background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 20%, transparent);
4467
4561
  @supports (color: color-mix(in lab, red, red)) {
@@ -4474,6 +4568,12 @@
4474
4568
  background-color: color-mix(in oklab, var(--color-amber-950) 30%, transparent);
4475
4569
  }
4476
4570
  }
4571
+ .dark\:bg-amber-950\/40:where(.dark, .dark *) {
4572
+ background-color: color-mix(in srgb, oklch(27.9% 0.077 45.635) 40%, transparent);
4573
+ @supports (color: color-mix(in lab, red, red)) {
4574
+ background-color: color-mix(in oklab, var(--color-amber-950) 40%, transparent);
4575
+ }
4576
+ }
4477
4577
  .dark\:bg-background\/95:where(.dark, .dark *) {
4478
4578
  background-color: color-mix(in srgb, hsl(var(--background)) 95%, transparent);
4479
4579
  @supports (color: color-mix(in lab, red, red)) {
@@ -4486,6 +4586,12 @@
4486
4586
  background-color: color-mix(in oklab, var(--color-destructive) 15%, transparent);
4487
4587
  }
4488
4588
  }
4589
+ .dark\:bg-emerald-950\/40:where(.dark, .dark *) {
4590
+ background-color: color-mix(in srgb, oklch(26.2% 0.051 172.552) 40%, transparent);
4591
+ @supports (color: color-mix(in lab, red, red)) {
4592
+ background-color: color-mix(in oklab, var(--color-emerald-950) 40%, transparent);
4593
+ }
4594
+ }
4489
4595
  .dark\:bg-emerald-950\/50:where(.dark, .dark *) {
4490
4596
  background-color: color-mix(in srgb, oklch(26.2% 0.051 172.552) 50%, transparent);
4491
4597
  @supports (color: color-mix(in lab, red, red)) {
@@ -4501,6 +4607,12 @@
4501
4607
  .dark\:text-amber-400:where(.dark, .dark *) {
4502
4608
  color: var(--color-amber-400);
4503
4609
  }
4610
+ .dark\:text-destructive-foreground:where(.dark, .dark *) {
4611
+ color: var(--color-destructive-foreground);
4612
+ }
4613
+ .dark\:text-emerald-200:where(.dark, .dark *) {
4614
+ color: var(--color-emerald-200);
4615
+ }
4504
4616
  .dark\:text-emerald-400:where(.dark, .dark *) {
4505
4617
  color: var(--color-emerald-400);
4506
4618
  }
@@ -4832,7 +4944,7 @@
4832
4944
  border-bottom-style: var(--tw-border-style);
4833
4945
  border-bottom-width: 0px;
4834
4946
  }
4835
- .\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical] > div {
4947
+ .\[\&\[aria-orientation\=horizontal\]\>div\]\:rotate-90[aria-orientation=horizontal] > div {
4836
4948
  rotate: 90deg;
4837
4949
  }
4838
4950
  .\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open] > svg {
package/dist/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  export { cn } from './lib/utils';
2
2
  export { renderChildren } from './lib/utils';
3
3
  export { cva } from 'class-variance-authority';
4
- export { getLazyIcon, LazyIcon, toKebabIconName } from './lib/lazy-icon';
4
+ export { getLazyIcon, isLucideIconName, LazyIcon, toKebabIconName } from './lib/lazy-icon';
5
5
  export { registerPlaceholders } from './renderers/placeholders';
6
6
  export { GridFieldAuthoringProvider, useGridFieldAuthoring, type GridFieldAuthoring, } from './context/gridFieldAuthoring';
7
7
  export * from './ui';
8
8
  export * from './custom';
9
+ export * from './notifications';
10
+ export { TOASTER_POSITIONS } from './renderers/feedback/toaster';
9
11
  export { useConfigDraft } from './hooks/use-config-draft';
10
12
  export type { UseConfigDraftOptions, UseConfigDraftReturn } from './hooks/use-config-draft';
11
13
  export { useIsMobile } from './hooks/use-mobile';