@nextlyhq/ui 0.0.2-alpha.33 → 0.0.2-alpha.35
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 +26 -17
- package/dist/index.cjs +158 -498
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -143
- package/dist/index.d.ts +36 -143
- package/dist/index.mjs +161 -499
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +2 -0
- package/dist/theme.css +859 -0
- package/docs/plugin-ui-authoring.md +178 -0
- package/package.json +15 -8
package/dist/index.mjs
CHANGED
|
@@ -6,8 +6,8 @@ import { clsx } from 'clsx';
|
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { Root as Root$2 } from '@radix-ui/react-label';
|
|
9
|
-
import { Info, Minus, Check, ChevronDown, X, ChevronRight, Circle, Search, Loader2, ChevronUp, XCircle, AlertTriangle, AlertCircle, CheckCircle2, FileQuestion
|
|
10
|
-
import { Content, Provider, Root, Trigger } from '@radix-ui/react-tooltip';
|
|
9
|
+
import { Info, Minus, Check, ChevronDown, X, ChevronRight, Circle, Search, Loader2, ChevronUp, XCircle, AlertTriangle, AlertCircle, CheckCircle2, FileQuestion } from 'lucide-react';
|
|
10
|
+
import { Portal, Content, Provider, Root, Trigger } from '@radix-ui/react-tooltip';
|
|
11
11
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
12
12
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
13
13
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
@@ -43,13 +43,13 @@ var buttonVariants = cva(
|
|
|
43
43
|
link: "text-primary border border-transparent underline-offset-4 hover:underline"
|
|
44
44
|
},
|
|
45
45
|
size: {
|
|
46
|
-
default: "h-
|
|
47
|
-
sm: "h-
|
|
48
|
-
md: "h-
|
|
49
|
-
lg: "h-
|
|
50
|
-
icon: "h-
|
|
51
|
-
"icon-sm": "h-
|
|
52
|
-
"icon-lg": "h-
|
|
46
|
+
default: "h-[var(--nx-control-height)] px-6 py-2",
|
|
47
|
+
sm: "h-[var(--nx-control-height-md)] px-4 text-[13px]",
|
|
48
|
+
md: "h-[var(--nx-control-height)] px-6 text-sm",
|
|
49
|
+
lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
|
|
50
|
+
icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
|
|
51
|
+
"icon-sm": "h-[var(--nx-control-height-md)] w-[var(--nx-control-height-md)] p-0",
|
|
52
|
+
"icon-lg": "h-[var(--nx-control-height-lg)] w-[var(--nx-control-height-lg)] p-0"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
defaultVariants: {
|
|
@@ -86,13 +86,13 @@ var Button = forwardRef(
|
|
|
86
86
|
);
|
|
87
87
|
Button.displayName = "Button";
|
|
88
88
|
var inputVariants = cva(
|
|
89
|
-
"file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-none border border-input bg-background text-sm transition-all duration-150 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus:ring-offset-0 focus:outline-none focus
|
|
89
|
+
"file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-none border border-input bg-background text-sm transition-all duration-150 outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus:ring-offset-0 focus:outline-none focus:border-primary! focus-visible:border-primary! aria-invalid:border-destructive aria-invalid:focus:border-destructive! data-[invalid=true]:border-destructive data-[invalid=true]:focus:border-destructive!",
|
|
90
90
|
{
|
|
91
91
|
variants: {
|
|
92
92
|
size: {
|
|
93
|
-
sm: "h-
|
|
94
|
-
default: "h-
|
|
95
|
-
lg: "h-
|
|
93
|
+
sm: "h-[var(--nx-control-height-sm)] px-2.5 py-2 text-sm",
|
|
94
|
+
default: "h-[var(--nx-control-height)] px-3 py-2.5 text-sm",
|
|
95
|
+
lg: "h-[var(--nx-control-height-lg)] px-4 py-3 text-base"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
defaultVariants: {
|
|
@@ -121,8 +121,8 @@ var Textarea = forwardRef(({ className, ...props }, ref) => {
|
|
|
121
121
|
{
|
|
122
122
|
"data-slot": "textarea",
|
|
123
123
|
className: cn(
|
|
124
|
-
"flex min-h-[80px] w-full rounded-none border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground placeholder:opacity-50 transition-all duration-200 focus
|
|
125
|
-
"aria-invalid:border-destructive aria-invalid:focus
|
|
124
|
+
"flex min-h-[80px] w-full rounded-none border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground placeholder:opacity-50 transition-all duration-200 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary/30 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 resize-y",
|
|
125
|
+
"aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
|
|
126
126
|
className
|
|
127
127
|
),
|
|
128
128
|
ref,
|
|
@@ -144,22 +144,41 @@ function Label({ className, ...props }) {
|
|
|
144
144
|
}
|
|
145
145
|
);
|
|
146
146
|
}
|
|
147
|
+
var PortalContext = createContext({ container: null });
|
|
148
|
+
function PortalProvider({ container, children }) {
|
|
149
|
+
return /* @__PURE__ */ jsx(PortalContext.Provider, { value: { container }, children });
|
|
150
|
+
}
|
|
151
|
+
function usePortalContainer() {
|
|
152
|
+
const { container } = useContext(PortalContext);
|
|
153
|
+
return container ?? void 0;
|
|
154
|
+
}
|
|
147
155
|
var TooltipProvider = Provider;
|
|
148
156
|
var Tooltip = Root;
|
|
149
157
|
var TooltipTrigger = Trigger;
|
|
150
|
-
var TooltipContent = forwardRef(({ className, sideOffset = 4, ...props }, ref) =>
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
var TooltipContent = forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
159
|
+
const portalContainer = usePortalContainer();
|
|
160
|
+
return (
|
|
161
|
+
// Portalled for the same reason as every other overlay here, plus one
|
|
162
|
+
// specific to the tooltip: the positioner measures against the nearest
|
|
163
|
+
// containing block, and it counts `container-type` as one while the
|
|
164
|
+
// browser does not. Left inline under a `@container` element, the content
|
|
165
|
+
// is offset by that element's own position. Portalling lifts it out of any
|
|
166
|
+
// such ancestor, so the two agree again.
|
|
167
|
+
/* @__PURE__ */ jsx(Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
168
|
+
Content,
|
|
169
|
+
{
|
|
170
|
+
ref,
|
|
171
|
+
sideOffset,
|
|
172
|
+
"data-slot": "tooltip-content",
|
|
173
|
+
className: cn(
|
|
174
|
+
"z-50 overflow-hidden rounded-none px-3 py-1.5 text-xs shadow-lg border border-border bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
175
|
+
className
|
|
176
|
+
),
|
|
177
|
+
...props
|
|
178
|
+
}
|
|
179
|
+
) })
|
|
180
|
+
);
|
|
181
|
+
});
|
|
163
182
|
TooltipContent.displayName = Content.displayName;
|
|
164
183
|
var FormLabelWithTooltip = React6.forwardRef(
|
|
165
184
|
({
|
|
@@ -194,7 +213,7 @@ var FormLabelWithTooltip = React6.forwardRef(
|
|
|
194
213
|
{
|
|
195
214
|
side: "right",
|
|
196
215
|
className: cn(
|
|
197
|
-
"max-w-[250px] text-[12px] break-words relative z-[100] shadow-md border border-
|
|
216
|
+
"max-w-[250px] text-[12px] break-words relative z-[100] shadow-md border border-border bg-primary text-primary-foreground px-3 py-2 rounded-none",
|
|
198
217
|
tooltipClassName
|
|
199
218
|
),
|
|
200
219
|
children: description
|
|
@@ -210,12 +229,14 @@ var badgeVariants = cva(
|
|
|
210
229
|
{
|
|
211
230
|
variants: {
|
|
212
231
|
variant: {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
232
|
+
// Clear, legible chip in both modes (was bg-primary/5 at ~5% opacity,
|
|
233
|
+
// which was nearly invisible on dark backgrounds).
|
|
234
|
+
default: "bg-muted text-foreground",
|
|
235
|
+
primary: "bg-primary/10 text-primary dark:bg-primary/20",
|
|
236
|
+
success: "bg-success-100 text-success-700 dark:bg-success-900 dark:text-success-100",
|
|
237
|
+
warning: "bg-warning-100 text-warning-700 dark:bg-warning-900 dark:text-warning-100",
|
|
238
|
+
destructive: "bg-destructive-100 text-destructive-700 dark:bg-destructive-900 dark:text-destructive-100",
|
|
239
|
+
outline: "border border-border! bg-transparent text-foreground dark:text-muted-foreground dark:border-border!"
|
|
219
240
|
}
|
|
220
241
|
},
|
|
221
242
|
defaultVariants: {
|
|
@@ -234,7 +255,7 @@ function Badge({ className, variant = "default", ...props }) {
|
|
|
234
255
|
);
|
|
235
256
|
}
|
|
236
257
|
var cardVariants = cva(
|
|
237
|
-
"bg-card text-foreground rounded-none border border-
|
|
258
|
+
"bg-card text-foreground rounded-none border border-border transition-all duration-200",
|
|
238
259
|
{
|
|
239
260
|
variants: {
|
|
240
261
|
variant: {
|
|
@@ -271,7 +292,7 @@ var CardHeader = forwardRef(
|
|
|
271
292
|
"data-slot": "card-header",
|
|
272
293
|
className: cn(
|
|
273
294
|
"flex flex-col p-4",
|
|
274
|
-
!noBorder && "border-b border-
|
|
295
|
+
!noBorder && "border-b border-border",
|
|
275
296
|
className
|
|
276
297
|
),
|
|
277
298
|
...props
|
|
@@ -344,7 +365,7 @@ var CardFooter = forwardRef(
|
|
|
344
365
|
ref,
|
|
345
366
|
"data-slot": "card-footer",
|
|
346
367
|
className: cn(
|
|
347
|
-
"flex items-center px-6 py-4 border-t border-
|
|
368
|
+
"flex items-center px-6 py-4 border-t border-border bg-primary/5",
|
|
348
369
|
className
|
|
349
370
|
),
|
|
350
371
|
...props
|
|
@@ -354,14 +375,14 @@ var CardFooter = forwardRef(
|
|
|
354
375
|
);
|
|
355
376
|
CardFooter.displayName = "CardFooter";
|
|
356
377
|
var alertVariants = cva(
|
|
357
|
-
"relative flex items-start gap-3 rounded-none border border-
|
|
378
|
+
"relative flex items-start gap-3 rounded-none border border-border p-4 text-sm transition-colors duration-150",
|
|
358
379
|
{
|
|
359
380
|
variants: {
|
|
360
381
|
variant: {
|
|
361
|
-
info: "border-
|
|
362
|
-
success: "border-
|
|
363
|
-
warning: "border-
|
|
364
|
-
destructive: "border-
|
|
382
|
+
info: "border-border bg-primary/5 text-primary dark:border-primary/30 dark:bg-primary/5 dark:text-primary-foreground/90",
|
|
383
|
+
success: "border-success-200 bg-success-50 text-success-900 border-l-4 border-l-success dark:border-success-900 dark:bg-success-950 dark:text-success-100",
|
|
384
|
+
warning: "border-warning-200 bg-warning-50 text-warning-900 border-l-4 border-l-warning dark:border-warning-900 dark:bg-warning-950 dark:text-warning-100",
|
|
385
|
+
destructive: "border-destructive-200 bg-destructive-50 text-destructive-900 border-l-4 border-l-destructive dark:border-destructive-900 dark:bg-destructive-950 dark:text-destructive-100"
|
|
365
386
|
}
|
|
366
387
|
},
|
|
367
388
|
defaultVariants: {
|
|
@@ -457,7 +478,7 @@ var progressVariants = cva("h-full rounded-none transition-all", {
|
|
|
457
478
|
variants: {
|
|
458
479
|
variant: {
|
|
459
480
|
default: "bg-primary-500",
|
|
460
|
-
success: "bg-
|
|
481
|
+
success: "bg-success-500",
|
|
461
482
|
error: "bg-destructive"
|
|
462
483
|
}
|
|
463
484
|
},
|
|
@@ -511,7 +532,22 @@ var Checkbox = forwardRef(({ className, indeterminate, ...props }, ref) => /* @_
|
|
|
511
532
|
ref,
|
|
512
533
|
"data-slot": "checkbox",
|
|
513
534
|
className: cn(
|
|
514
|
-
|
|
535
|
+
// Unchecked outline uses primary/50: measured 3.95:1 on the light row and
|
|
536
|
+
// 5.32:1 on the dark one. WCAG 1.4.11 asks 3:1 of a control's boundary and
|
|
537
|
+
// the earlier values did not reach it — primary/40 came out at 2.85, close
|
|
538
|
+
// enough to look deliberate and still short. Callers must not override the
|
|
539
|
+
// border: passing `border-border` puts the divider token here, which
|
|
540
|
+
// measured 1.35:1 and 1.14:1, and a divider is meant to go unnoticed.
|
|
541
|
+
// Checked and indeterminate share the filled appearance; declaring both
|
|
542
|
+
// here keeps the control self-sufficient without host overrides.
|
|
543
|
+
//
|
|
544
|
+
// The box stays 16px and the target does not: `before` stretches an
|
|
545
|
+
// invisible 24px square from the centre, which is WCAG 2.5.8's floor.
|
|
546
|
+
// The exemption for a bare browser checkbox does not cover a styled one,
|
|
547
|
+
// and this is styled. Growing the box instead would make every dense
|
|
548
|
+
// table heavier for a rule about pointers, so the box and the thing you
|
|
549
|
+
// can hit are allowed to differ.
|
|
550
|
+
"peer relative h-4 w-4 shrink-0 rounded-none border border-primary/50 ring-offset-background before:absolute before:left-1/2 before:top-1/2 before:h-6 before:w-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary transition-all duration-200",
|
|
515
551
|
className
|
|
516
552
|
),
|
|
517
553
|
...props,
|
|
@@ -544,7 +580,9 @@ var RadioGroupItem = forwardRef(({ className, ...props }, ref) => {
|
|
|
544
580
|
ref,
|
|
545
581
|
"data-slot": "radio-group-item",
|
|
546
582
|
className: cn(
|
|
547
|
-
|
|
583
|
+
// Unchecked outline uses primary/40 (clearly visible) instead of primary/5
|
|
584
|
+
// (~5% opacity, effectively invisible); hover strengthens above the resting state.
|
|
585
|
+
"peer h-4 w-4 shrink-0 rounded-none border border-primary/40 bg-background cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none focus-visible:outline-none aria-invalid:border-destructive aria-invalid:focus:border-destructive! aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50 hover:border-primary/70 data-[state=checked]:border-primary data-[state=checked]:border-[5px]",
|
|
548
586
|
className
|
|
549
587
|
),
|
|
550
588
|
...props,
|
|
@@ -559,9 +597,9 @@ function Switch({ className, ...props }) {
|
|
|
559
597
|
{
|
|
560
598
|
"data-slot": "switch",
|
|
561
599
|
className: cn(
|
|
562
|
-
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-none border border-
|
|
563
|
-
"data-[state=checked]:bg-primary data-[state=checked]
|
|
564
|
-
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-
|
|
600
|
+
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-none border border-border transition-all outline-none focus-visible:border-primary aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive! disabled:cursor-not-allowed disabled:opacity-50",
|
|
601
|
+
"data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
|
|
602
|
+
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
|
|
565
603
|
className
|
|
566
604
|
),
|
|
567
605
|
...props,
|
|
@@ -606,7 +644,7 @@ var AccordionTrigger = forwardRef(
|
|
|
606
644
|
...props,
|
|
607
645
|
children: [
|
|
608
646
|
children,
|
|
609
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-150" })
|
|
647
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-150 will-change-transform" })
|
|
610
648
|
]
|
|
611
649
|
}
|
|
612
650
|
) })
|
|
@@ -618,7 +656,7 @@ var AccordionContent = forwardRef(
|
|
|
618
656
|
{
|
|
619
657
|
ref,
|
|
620
658
|
"data-slot": "accordion-content",
|
|
621
|
-
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
659
|
+
className: "overflow-hidden text-sm transition-all will-change-[height] transform-[translateZ(0)] data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
622
660
|
...props,
|
|
623
661
|
children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
|
|
624
662
|
}
|
|
@@ -727,7 +765,7 @@ var TabsTrigger = forwardRef(
|
|
|
727
765
|
ref,
|
|
728
766
|
"data-slot": "tabs-trigger",
|
|
729
767
|
className: cn(
|
|
730
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-none bg-transparent px-4 py-2 text-sm font-medium cursor-pointer transition-all duration-200 border-b-2 relative -mb-0.5 data-[state=active]
|
|
768
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-none bg-transparent px-4 py-2 text-sm font-medium cursor-pointer transition-all duration-200 border-b-2 relative -mb-0.5 data-[state=active]:border-b-primary! data-[state=active]:text-primary data-[state=inactive]:border-transparent data-[state=inactive]:text-muted-foreground hover:text-primary hover:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/20 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
731
769
|
className
|
|
732
770
|
),
|
|
733
771
|
...props
|
|
@@ -750,14 +788,6 @@ var TabsContent = forwardRef(
|
|
|
750
788
|
)
|
|
751
789
|
);
|
|
752
790
|
TabsContent.displayName = Content$1.displayName;
|
|
753
|
-
var PortalContext = createContext({ container: null });
|
|
754
|
-
function PortalProvider({ container, children }) {
|
|
755
|
-
return /* @__PURE__ */ jsx(PortalContext.Provider, { value: { container }, children });
|
|
756
|
-
}
|
|
757
|
-
function usePortalContainer() {
|
|
758
|
-
const { container } = useContext(PortalContext);
|
|
759
|
-
return container ?? void 0;
|
|
760
|
-
}
|
|
761
791
|
var Popover = PopoverPrimitive.Root;
|
|
762
792
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
763
793
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
@@ -771,7 +801,7 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
|
|
|
771
801
|
sideOffset,
|
|
772
802
|
"data-slot": "popover-content",
|
|
773
803
|
className: cn(
|
|
774
|
-
"z-[100] w-72 rounded-none border border-
|
|
804
|
+
"z-[100] w-72 rounded-none border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
|
|
775
805
|
className
|
|
776
806
|
),
|
|
777
807
|
...props
|
|
@@ -820,7 +850,7 @@ var DialogContent = forwardRef(({ className, children, size, ...props }, ref) =>
|
|
|
820
850
|
ref,
|
|
821
851
|
"data-slot": "dialog-content",
|
|
822
852
|
className: cn(
|
|
823
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
853
|
+
"fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-none duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
824
854
|
dialogContentVariants({ size }),
|
|
825
855
|
className
|
|
826
856
|
),
|
|
@@ -917,7 +947,7 @@ var AlertDialogContent = forwardRef(({ className, ...props }, ref) => {
|
|
|
917
947
|
{
|
|
918
948
|
ref,
|
|
919
949
|
className: cn(
|
|
920
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
950
|
+
"fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-xl rounded-none duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
921
951
|
className
|
|
922
952
|
),
|
|
923
953
|
...props
|
|
@@ -1005,12 +1035,14 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
1005
1035
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
1006
1036
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
1007
1037
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
1038
|
+
var menuItemBase = "cursor-pointer transition-colors data-[highlighted]:bg-muted data-[highlighted]:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
1008
1039
|
var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1009
1040
|
DropdownMenuPrimitive.SubTrigger,
|
|
1010
1041
|
{
|
|
1011
1042
|
ref,
|
|
1012
1043
|
className: cn(
|
|
1013
|
-
"flex
|
|
1044
|
+
"flex select-none items-center gap-2 rounded-none px-2 py-1.5 text-sm outline-none data-[state=open]:bg-muted data-[state=open]:text-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1045
|
+
menuItemBase,
|
|
1014
1046
|
inset && "pl-8",
|
|
1015
1047
|
className
|
|
1016
1048
|
),
|
|
@@ -1027,7 +1059,7 @@ var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) =>
|
|
|
1027
1059
|
{
|
|
1028
1060
|
ref,
|
|
1029
1061
|
className: cn(
|
|
1030
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-none border border-
|
|
1062
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-none border border-border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
|
|
1031
1063
|
className
|
|
1032
1064
|
),
|
|
1033
1065
|
...props
|
|
@@ -1042,7 +1074,7 @@ var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...pro
|
|
|
1042
1074
|
ref,
|
|
1043
1075
|
sideOffset,
|
|
1044
1076
|
className: cn(
|
|
1045
|
-
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-none border border-
|
|
1077
|
+
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-none border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
|
|
1046
1078
|
className
|
|
1047
1079
|
),
|
|
1048
1080
|
...props
|
|
@@ -1055,7 +1087,8 @@ var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
1055
1087
|
{
|
|
1056
1088
|
ref,
|
|
1057
1089
|
className: cn(
|
|
1058
|
-
"relative flex
|
|
1090
|
+
"relative flex select-none items-center gap-2 rounded-none px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1091
|
+
menuItemBase,
|
|
1059
1092
|
inset && "pl-8",
|
|
1060
1093
|
className
|
|
1061
1094
|
),
|
|
@@ -1068,7 +1101,8 @@ var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked
|
|
|
1068
1101
|
{
|
|
1069
1102
|
ref,
|
|
1070
1103
|
className: cn(
|
|
1071
|
-
"relative flex
|
|
1104
|
+
"relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1105
|
+
menuItemBase,
|
|
1072
1106
|
className
|
|
1073
1107
|
),
|
|
1074
1108
|
checked,
|
|
@@ -1085,7 +1119,8 @@ var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }
|
|
|
1085
1119
|
{
|
|
1086
1120
|
ref,
|
|
1087
1121
|
className: cn(
|
|
1088
|
-
"relative flex
|
|
1122
|
+
"relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1123
|
+
menuItemBase,
|
|
1089
1124
|
className
|
|
1090
1125
|
),
|
|
1091
1126
|
...props,
|
|
@@ -1143,13 +1178,13 @@ function SelectValue({
|
|
|
1143
1178
|
return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
1144
1179
|
}
|
|
1145
1180
|
var selectTriggerVariants = cva(
|
|
1146
|
-
"flex w-full items-center justify-between gap-2 rounded-none border border-input bg-background px-3 text-sm text-foreground cursor-pointer transition-all duration-150 focus
|
|
1181
|
+
"flex w-full items-center justify-between gap-2 rounded-none border border-input bg-background px-3 text-sm text-foreground cursor-pointer transition-all duration-150 focus:border-primary! focus-visible:border-primary! focus:outline-none hover:border-primary/30 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 data-[placeholder]:text-muted-foreground aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:border-destructive! [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
|
|
1147
1182
|
{
|
|
1148
1183
|
variants: {
|
|
1149
1184
|
size: {
|
|
1150
|
-
sm: "h-
|
|
1151
|
-
default: "h-
|
|
1152
|
-
lg: "h-
|
|
1185
|
+
sm: "h-[var(--nx-control-height-sm)] text-sm",
|
|
1186
|
+
default: "h-[var(--nx-control-height)] text-sm",
|
|
1187
|
+
lg: "h-[var(--nx-control-height-lg)] text-base"
|
|
1153
1188
|
}
|
|
1154
1189
|
},
|
|
1155
1190
|
defaultVariants: {
|
|
@@ -1185,7 +1220,7 @@ function SelectContent({
|
|
|
1185
1220
|
{
|
|
1186
1221
|
"data-slot": "select-content",
|
|
1187
1222
|
className: cn(
|
|
1188
|
-
"bg-popover text-popover-foreground border border-
|
|
1223
|
+
"bg-popover text-popover-foreground border border-border shadow-none rounded-none z-9999 max-h-(--radix-select-content-available-height) min-w-32 overflow-hidden data-[state=open]:animate-zoom-in-95 data-[state=closed]:animate-zoom-out-95 data-[side=bottom]:animate-slide-in-from-top-2 data-[side=left]:animate-slide-in-from-right-2 data-[side=right]:animate-slide-in-from-left-2 data-[side=top]:animate-slide-in-from-bottom-2",
|
|
1189
1224
|
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
1190
1225
|
className
|
|
1191
1226
|
),
|
|
@@ -1312,10 +1347,10 @@ var sheetVariants = cva(
|
|
|
1312
1347
|
{
|
|
1313
1348
|
variants: {
|
|
1314
1349
|
side: {
|
|
1315
|
-
top: "inset-x-0 top-0 border-b border-
|
|
1316
|
-
bottom: "inset-x-0 bottom-0 border-t border-
|
|
1317
|
-
left: "inset-y-0 left-0 h-full w-3/4 border-r border-
|
|
1318
|
-
right: "inset-y-0 right-0 h-full w-3/4 border-l border-
|
|
1350
|
+
top: "inset-x-0 top-0 border-b border-border data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
1351
|
+
bottom: "inset-x-0 bottom-0 border-t border-border data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
1352
|
+
left: "inset-y-0 left-0 h-full w-3/4 border-r border-border data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
|
|
1353
|
+
right: "inset-y-0 right-0 h-full w-3/4 border-l border-border data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
|
|
1319
1354
|
}
|
|
1320
1355
|
},
|
|
1321
1356
|
defaultVariants: {
|
|
@@ -1439,7 +1474,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1439
1474
|
"m-4 sm:m-0",
|
|
1440
1475
|
// 16px margin on mobile, no margin on desktop
|
|
1441
1476
|
// Visual
|
|
1442
|
-
"overflow-hidden rounded-none border border-
|
|
1477
|
+
"overflow-hidden rounded-none border border-border bg-background shadow-xl",
|
|
1443
1478
|
// Animation
|
|
1444
1479
|
"duration-200",
|
|
1445
1480
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
@@ -1455,7 +1490,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1455
1490
|
var CommandInput = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
1456
1491
|
"div",
|
|
1457
1492
|
{
|
|
1458
|
-
className: "flex items-center border-b border-
|
|
1493
|
+
className: "flex items-center border-b border-border px-4",
|
|
1459
1494
|
"cmdk-input-wrapper": "",
|
|
1460
1495
|
children: [
|
|
1461
1496
|
/* @__PURE__ */ jsx(Search, { className: "mr-3 h-5 w-5 shrink-0 text-muted-foreground" }),
|
|
@@ -1574,7 +1609,7 @@ var CommandShortcut = forwardRef(
|
|
|
1574
1609
|
"text-xs font-mono",
|
|
1575
1610
|
// Visual
|
|
1576
1611
|
"text-muted-foreground bg-primary/5",
|
|
1577
|
-
"border border-
|
|
1612
|
+
"border border-border rounded-none",
|
|
1578
1613
|
// Spacing
|
|
1579
1614
|
"px-1.5 py-0.5",
|
|
1580
1615
|
className
|
|
@@ -1617,7 +1652,7 @@ function Toaster({ theme = "system", ...props }) {
|
|
|
1617
1652
|
Toaster$1,
|
|
1618
1653
|
{
|
|
1619
1654
|
theme,
|
|
1620
|
-
className: "toaster group
|
|
1655
|
+
className: "toaster group bg-transparent! overflow-visible! z-[9999]!",
|
|
1621
1656
|
"data-slot": "toaster",
|
|
1622
1657
|
toastOptions: {
|
|
1623
1658
|
classNames: {
|
|
@@ -1632,9 +1667,9 @@ function Toaster({ theme = "system", ...props }) {
|
|
|
1632
1667
|
loading: /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" })
|
|
1633
1668
|
},
|
|
1634
1669
|
style: {
|
|
1635
|
-
"--normal-bg": "
|
|
1636
|
-
"--normal-text": "
|
|
1637
|
-
"--normal-border": "
|
|
1670
|
+
"--normal-bg": "var(--nx-popover)",
|
|
1671
|
+
"--normal-text": "var(--nx-popover-foreground)",
|
|
1672
|
+
"--normal-border": "var(--nx-border)",
|
|
1638
1673
|
"--border-radius": "0px"
|
|
1639
1674
|
},
|
|
1640
1675
|
...props
|
|
@@ -1650,7 +1685,14 @@ var Table = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
1650
1685
|
}
|
|
1651
1686
|
) }));
|
|
1652
1687
|
Table.displayName = "Table";
|
|
1653
|
-
var TableHeader = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1688
|
+
var TableHeader = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1689
|
+
"thead",
|
|
1690
|
+
{
|
|
1691
|
+
ref,
|
|
1692
|
+
className: cn("[&_tr]:border-b border-border", className),
|
|
1693
|
+
...props
|
|
1694
|
+
}
|
|
1695
|
+
));
|
|
1654
1696
|
TableHeader.displayName = "TableHeader";
|
|
1655
1697
|
var TableBody = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1656
1698
|
"tbody",
|
|
@@ -1665,7 +1707,10 @@ var TableFooter = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1665
1707
|
"tfoot",
|
|
1666
1708
|
{
|
|
1667
1709
|
ref,
|
|
1668
|
-
className: cn(
|
|
1710
|
+
className: cn(
|
|
1711
|
+
"border-t border-border font-medium [&>tr]:last:border-b-0",
|
|
1712
|
+
className
|
|
1713
|
+
),
|
|
1669
1714
|
...props
|
|
1670
1715
|
}
|
|
1671
1716
|
));
|
|
@@ -1675,7 +1720,7 @@ var TableRow = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
1675
1720
|
{
|
|
1676
1721
|
ref,
|
|
1677
1722
|
className: cn(
|
|
1678
|
-
"border-b border-
|
|
1723
|
+
"border-b border-border transition-colors data-[state=selected]:bg-primary/5",
|
|
1679
1724
|
className
|
|
1680
1725
|
),
|
|
1681
1726
|
...props
|
|
@@ -1734,7 +1779,7 @@ function TableSearch({
|
|
|
1734
1779
|
value,
|
|
1735
1780
|
onChange: (e) => onChange(e.target.value),
|
|
1736
1781
|
"aria-busy": isLoading,
|
|
1737
|
-
className: "h-10 w-full rounded-none border border-
|
|
1782
|
+
className: "h-10 w-full rounded-none border border-border bg-background pl-10 pr-10 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 transition-all"
|
|
1738
1783
|
}
|
|
1739
1784
|
),
|
|
1740
1785
|
(value || isLoading) && /* @__PURE__ */ jsxs("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
|
|
@@ -1772,212 +1817,6 @@ function TableEmpty({ message = "No records found" }) {
|
|
|
1772
1817
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: message })
|
|
1773
1818
|
] });
|
|
1774
1819
|
}
|
|
1775
|
-
function renderPageNumbers(currentPage, totalPages, maxVisiblePages, onPageChange) {
|
|
1776
|
-
const getBtnClass = (active) => `flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 text-xs z-10 -ml-px transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring ${active ? "!bg-primary !text-primary-foreground !border-primary z-20" : "!bg-background !border-primary/5 hover-muted disabled:opacity-50"}`;
|
|
1777
|
-
if (totalPages <= maxVisiblePages) {
|
|
1778
|
-
return Array.from({ length: totalPages }).map((_, i) => /* @__PURE__ */ jsx(
|
|
1779
|
-
"button",
|
|
1780
|
-
{
|
|
1781
|
-
onClick: () => onPageChange(i),
|
|
1782
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1783
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1784
|
-
className: getBtnClass(currentPage === i),
|
|
1785
|
-
children: i + 1
|
|
1786
|
-
},
|
|
1787
|
-
`page-${i}`
|
|
1788
|
-
));
|
|
1789
|
-
}
|
|
1790
|
-
const pages = [];
|
|
1791
|
-
const startPage = Math.max(0, currentPage - Math.floor(maxVisiblePages / 2));
|
|
1792
|
-
const endPage = Math.min(totalPages - 1, startPage + maxVisiblePages - 1);
|
|
1793
|
-
if (startPage > 0) {
|
|
1794
|
-
pages.push(
|
|
1795
|
-
/* @__PURE__ */ jsx(
|
|
1796
|
-
"button",
|
|
1797
|
-
{
|
|
1798
|
-
onClick: () => onPageChange(0),
|
|
1799
|
-
"aria-label": "Go to page 1",
|
|
1800
|
-
className: getBtnClass(currentPage === 0),
|
|
1801
|
-
children: "1"
|
|
1802
|
-
},
|
|
1803
|
-
"page-0"
|
|
1804
|
-
)
|
|
1805
|
-
);
|
|
1806
|
-
if (startPage > 1) {
|
|
1807
|
-
pages.push(
|
|
1808
|
-
/* @__PURE__ */ jsx(
|
|
1809
|
-
"span",
|
|
1810
|
-
{
|
|
1811
|
-
className: "flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 !border-primary/5 !bg-background text-muted-foreground text-xs -ml-px",
|
|
1812
|
-
"aria-hidden": "true",
|
|
1813
|
-
children: "..."
|
|
1814
|
-
},
|
|
1815
|
-
"ellipsis-start"
|
|
1816
|
-
)
|
|
1817
|
-
);
|
|
1818
|
-
}
|
|
1819
|
-
}
|
|
1820
|
-
for (let i = startPage; i <= endPage; i++) {
|
|
1821
|
-
pages.push(
|
|
1822
|
-
/* @__PURE__ */ jsx(
|
|
1823
|
-
"button",
|
|
1824
|
-
{
|
|
1825
|
-
onClick: () => onPageChange(i),
|
|
1826
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1827
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1828
|
-
className: getBtnClass(currentPage === i),
|
|
1829
|
-
children: i + 1
|
|
1830
|
-
},
|
|
1831
|
-
i
|
|
1832
|
-
)
|
|
1833
|
-
);
|
|
1834
|
-
}
|
|
1835
|
-
if (endPage < totalPages - 1) {
|
|
1836
|
-
if (endPage < totalPages - 2) {
|
|
1837
|
-
pages.push(
|
|
1838
|
-
/* @__PURE__ */ jsx(
|
|
1839
|
-
"span",
|
|
1840
|
-
{
|
|
1841
|
-
className: "flex h-8 w-8 items-center justify-center border-y border-primary/5 border-r border-primary/5 !border-primary/5 !bg-background text-muted-foreground text-xs -ml-px",
|
|
1842
|
-
"aria-hidden": "true",
|
|
1843
|
-
children: "..."
|
|
1844
|
-
},
|
|
1845
|
-
"ellipsis-end"
|
|
1846
|
-
)
|
|
1847
|
-
);
|
|
1848
|
-
}
|
|
1849
|
-
pages.push(
|
|
1850
|
-
/* @__PURE__ */ jsx(
|
|
1851
|
-
"button",
|
|
1852
|
-
{
|
|
1853
|
-
onClick: () => onPageChange(totalPages - 1),
|
|
1854
|
-
"aria-label": `Go to page ${totalPages}`,
|
|
1855
|
-
className: getBtnClass(currentPage === totalPages - 1),
|
|
1856
|
-
children: totalPages
|
|
1857
|
-
},
|
|
1858
|
-
totalPages - 1
|
|
1859
|
-
)
|
|
1860
|
-
);
|
|
1861
|
-
}
|
|
1862
|
-
return pages;
|
|
1863
|
-
}
|
|
1864
|
-
function TablePagination({
|
|
1865
|
-
meta,
|
|
1866
|
-
onPageChange,
|
|
1867
|
-
onPageSizeChange,
|
|
1868
|
-
config,
|
|
1869
|
-
isLoading = false
|
|
1870
|
-
}) {
|
|
1871
|
-
const {
|
|
1872
|
-
showPageSizeSelector = true,
|
|
1873
|
-
pageSizeOptions = [10, 20, 30, 50],
|
|
1874
|
-
maxVisiblePages = 5
|
|
1875
|
-
} = config || {};
|
|
1876
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row w-full items-center justify-between gap-4 text-xs sm:text-sm text-muted-foreground p-4 border-t border-primary/5", children: [
|
|
1877
|
-
/* @__PURE__ */ jsxs("div", { className: "whitespace-nowrap order-2 sm:order-1", children: [
|
|
1878
|
-
"Showing ",
|
|
1879
|
-
(meta.page - 1) * meta.limit + 1,
|
|
1880
|
-
"-",
|
|
1881
|
-
Math.min(meta.page * meta.limit, meta.total),
|
|
1882
|
-
" of ",
|
|
1883
|
-
meta.total,
|
|
1884
|
-
" entries"
|
|
1885
|
-
] }),
|
|
1886
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8 order-1 sm:order-2", children: [
|
|
1887
|
-
showPageSizeSelector && /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
1888
|
-
/* @__PURE__ */ jsx("span", { className: "whitespace-nowrap hidden sm:inline-block", children: "Rows per page" }),
|
|
1889
|
-
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1890
|
-
/* @__PURE__ */ jsx(
|
|
1891
|
-
"select",
|
|
1892
|
-
{
|
|
1893
|
-
id: "pageSize",
|
|
1894
|
-
value: meta.limit,
|
|
1895
|
-
onChange: (e) => {
|
|
1896
|
-
const newPageSize = Number(e.target.value);
|
|
1897
|
-
onPageSizeChange(newPageSize);
|
|
1898
|
-
},
|
|
1899
|
-
className: "h-8 w-[70px] appearance-none rounded-none border border-primary/5 bg-background px-2 py-1 text-sm font-medium focus-visible:outline-none focus:ring-1 focus:ring-ring disabled:opacity-50 hover-muted cursor-pointer",
|
|
1900
|
-
disabled: isLoading,
|
|
1901
|
-
children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
|
|
1902
|
-
}
|
|
1903
|
-
),
|
|
1904
|
-
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-muted-foreground", children: /* @__PURE__ */ jsx(
|
|
1905
|
-
"svg",
|
|
1906
|
-
{
|
|
1907
|
-
className: "h-3 w-3",
|
|
1908
|
-
fill: "none",
|
|
1909
|
-
viewBox: "0 0 24 24",
|
|
1910
|
-
stroke: "currentColor",
|
|
1911
|
-
children: /* @__PURE__ */ jsx(
|
|
1912
|
-
"path",
|
|
1913
|
-
{
|
|
1914
|
-
strokeLinecap: "round",
|
|
1915
|
-
strokeLinejoin: "round",
|
|
1916
|
-
strokeWidth: 2,
|
|
1917
|
-
d: "M19 9l-7 7-7-7"
|
|
1918
|
-
}
|
|
1919
|
-
)
|
|
1920
|
-
}
|
|
1921
|
-
) })
|
|
1922
|
-
] })
|
|
1923
|
-
] }),
|
|
1924
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center -space-x-px", children: [
|
|
1925
|
-
/* @__PURE__ */ jsx(
|
|
1926
|
-
"button",
|
|
1927
|
-
{
|
|
1928
|
-
onClick: () => onPageChange(0),
|
|
1929
|
-
disabled: meta.page === 0 || isLoading,
|
|
1930
|
-
className: "hidden sm:flex h-8 w-8 items-center justify-center rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1931
|
-
"aria-label": "First page",
|
|
1932
|
-
children: /* @__PURE__ */ jsx(ChevronsLeft, { className: "h-4 w-4" })
|
|
1933
|
-
}
|
|
1934
|
-
),
|
|
1935
|
-
/* @__PURE__ */ jsx(
|
|
1936
|
-
"button",
|
|
1937
|
-
{
|
|
1938
|
-
onClick: () => onPageChange(meta.page - 1),
|
|
1939
|
-
disabled: meta.page === 0 || isLoading,
|
|
1940
|
-
className: "flex h-8 w-8 items-center justify-center rounded-none sm:rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1941
|
-
"aria-label": "Previous page",
|
|
1942
|
-
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" })
|
|
1943
|
-
}
|
|
1944
|
-
),
|
|
1945
|
-
/* @__PURE__ */ jsx("div", { className: "flex", children: renderPageNumbers(
|
|
1946
|
-
meta.page,
|
|
1947
|
-
meta.totalPages,
|
|
1948
|
-
maxVisiblePages,
|
|
1949
|
-
onPageChange
|
|
1950
|
-
) }),
|
|
1951
|
-
/* @__PURE__ */ jsx(
|
|
1952
|
-
"button",
|
|
1953
|
-
{
|
|
1954
|
-
onClick: () => onPageChange(meta.page + 1),
|
|
1955
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1956
|
-
className: "flex h-8 w-8 items-center justify-center rounded-none sm:rounded-none border-y border-primary/5 border-x border-primary/5 sm :border-r border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1957
|
-
"aria-label": "Next page",
|
|
1958
|
-
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
|
|
1959
|
-
}
|
|
1960
|
-
),
|
|
1961
|
-
/* @__PURE__ */ jsx(
|
|
1962
|
-
"button",
|
|
1963
|
-
{
|
|
1964
|
-
onClick: () => onPageChange(meta.totalPages - 1),
|
|
1965
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1966
|
-
className: "hidden sm:flex h-8 w-8 items-center justify-center rounded-none border border-primary/5 bg-background hover-muted disabled:opacity-50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring z-10",
|
|
1967
|
-
"aria-label": "Last page",
|
|
1968
|
-
children: /* @__PURE__ */ jsx(ChevronsRight, { className: "h-4 w-4" })
|
|
1969
|
-
}
|
|
1970
|
-
)
|
|
1971
|
-
] }),
|
|
1972
|
-
/* @__PURE__ */ jsxs("div", { className: "whitespace-nowrap hidden sm:block", children: [
|
|
1973
|
-
"Page ",
|
|
1974
|
-
meta.page + 1,
|
|
1975
|
-
" of ",
|
|
1976
|
-
meta.totalPages
|
|
1977
|
-
] })
|
|
1978
|
-
] })
|
|
1979
|
-
] });
|
|
1980
|
-
}
|
|
1981
1820
|
var GrayBar = ({ className }) => /* @__PURE__ */ jsx(Skeleton, { className });
|
|
1982
1821
|
var TableSkeleton = ({
|
|
1983
1822
|
columns = 5,
|
|
@@ -1988,7 +1827,7 @@ var TableSkeleton = ({
|
|
|
1988
1827
|
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1989
1828
|
/* @__PURE__ */ jsx("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ jsxs(Table, { children: [
|
|
1990
1829
|
/* @__PURE__ */ jsx(TableHeader, { children: /* @__PURE__ */ jsx(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ jsx(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-4 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
|
|
1991
|
-
/* @__PURE__ */ jsx(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsx(TableRow, { className: "border-b border-
|
|
1830
|
+
/* @__PURE__ */ jsx(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsx(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ jsx(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-8 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1992
1831
|
/* @__PURE__ */ jsx(Skeleton, { className: "w-9 rounded-none shrink-0" }),
|
|
1993
1832
|
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5 flex-1", children: [
|
|
1994
1833
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-[120px]" }),
|
|
@@ -1996,7 +1835,7 @@ var TableSkeleton = ({
|
|
|
1996
1835
|
] })
|
|
1997
1836
|
] }) : /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, colIdx)) }, rowIdx)) })
|
|
1998
1837
|
] }) }),
|
|
1999
|
-
!hideFooter && /* @__PURE__ */ jsx("div", { className: "table-footer border-t border-
|
|
1838
|
+
!hideFooter && /* @__PURE__ */ jsx("div", { className: "table-footer border-t border-border", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-2 py-4 p-4", children: [
|
|
2000
1839
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 text-sm", children: /* @__PURE__ */ jsx(GrayBar, { className: "h-4 w-[120px]" }) }),
|
|
2001
1840
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-6", children: [
|
|
2002
1841
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -2017,232 +1856,55 @@ var TableSkeleton = ({
|
|
|
2017
1856
|
if (hideWrapper) {
|
|
2018
1857
|
return content;
|
|
2019
1858
|
}
|
|
2020
|
-
return /* @__PURE__ */ jsx("div", { className: "table-wrapper rounded-none border border-
|
|
1859
|
+
return /* @__PURE__ */ jsx("div", { className: "table-wrapper rounded-none border border-border bg-card overflow-hidden", children: content });
|
|
2021
1860
|
};
|
|
2022
1861
|
TableSkeleton.displayName = "TableSkeleton";
|
|
2023
|
-
function ResponsiveTableInner({
|
|
2024
|
-
data,
|
|
2025
|
-
columns,
|
|
2026
|
-
onRowClick,
|
|
2027
|
-
renderMobileCard,
|
|
2028
|
-
className,
|
|
2029
|
-
emptyMessage = "No results found.",
|
|
2030
|
-
ariaLabel,
|
|
2031
|
-
tableWrapperClassName,
|
|
2032
|
-
footer
|
|
2033
|
-
}, ref) {
|
|
2034
|
-
const visibleMobileColumns = React6.useMemo(
|
|
2035
|
-
() => columns.filter((col) => !col.hideOnMobile),
|
|
2036
|
-
[columns]
|
|
2037
|
-
);
|
|
2038
|
-
const primaryColumn = React6.useMemo(() => {
|
|
2039
|
-
return visibleMobileColumns.find(
|
|
2040
|
-
(col) => col.key !== "select" && col.key !== "actions"
|
|
2041
|
-
) || visibleMobileColumns[0];
|
|
2042
|
-
}, [visibleMobileColumns]);
|
|
2043
|
-
const secondaryColumns = React6.useMemo(
|
|
2044
|
-
() => visibleMobileColumns.filter((col) => col.key !== primaryColumn?.key),
|
|
2045
|
-
[visibleMobileColumns, primaryColumn]
|
|
2046
|
-
);
|
|
2047
|
-
React6.useEffect(() => {
|
|
2048
|
-
const isDev = typeof globalThis !== "undefined" && globalThis.process && globalThis.process.env?.NODE_ENV === "development";
|
|
2049
|
-
if (isDev && visibleMobileColumns.length === 0) {
|
|
2050
|
-
console.warn(
|
|
2051
|
-
"ResponsiveTable: All columns are hidden on mobile (hideOnMobile: true). Consider showing at least one column for better mobile UX. Users will see empty card borders on mobile devices."
|
|
2052
|
-
);
|
|
2053
|
-
}
|
|
2054
|
-
}, [visibleMobileColumns.length]);
|
|
2055
|
-
const handleItemClick = React6.useCallback(
|
|
2056
|
-
(item, e) => {
|
|
2057
|
-
if (!onRowClick) return;
|
|
2058
|
-
if (e) {
|
|
2059
|
-
const target = e.target;
|
|
2060
|
-
if (target.closest('[role="checkbox"]') || target.closest("button") || target.closest("a") || target.closest('[role^="menuitem"]') || target.closest("[data-actions]")) {
|
|
2061
|
-
return;
|
|
2062
|
-
}
|
|
2063
|
-
}
|
|
2064
|
-
onRowClick(item);
|
|
2065
|
-
},
|
|
2066
|
-
[onRowClick]
|
|
2067
|
-
);
|
|
2068
|
-
const handleCardKeyDown = React6.useCallback(
|
|
2069
|
-
(item) => (e) => {
|
|
2070
|
-
if (onRowClick && (e.key === "Enter" || e.key === " ")) {
|
|
2071
|
-
e.preventDefault();
|
|
2072
|
-
handleItemClick(item, e);
|
|
2073
|
-
}
|
|
2074
|
-
},
|
|
2075
|
-
[handleItemClick, onRowClick]
|
|
2076
|
-
);
|
|
2077
|
-
if (data.length === 0) {
|
|
2078
|
-
return /* @__PURE__ */ jsx(
|
|
2079
|
-
"div",
|
|
2080
|
-
{
|
|
2081
|
-
ref,
|
|
2082
|
-
className: cn(
|
|
2083
|
-
"p-8 text-center",
|
|
2084
|
-
className
|
|
2085
|
-
),
|
|
2086
|
-
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessage })
|
|
2087
|
-
}
|
|
2088
|
-
);
|
|
2089
|
-
}
|
|
2090
|
-
return /* @__PURE__ */ jsxs("div", { ref, className: cn("w-full", className), children: [
|
|
2091
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 md:hidden", children: data.map((item) => {
|
|
2092
|
-
const primaryValue = primaryColumn ? String(item[primaryColumn.key]) : String(item.id);
|
|
2093
|
-
if (renderMobileCard) {
|
|
2094
|
-
return /* @__PURE__ */ jsx(
|
|
2095
|
-
"div",
|
|
2096
|
-
{
|
|
2097
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2098
|
-
role: onRowClick ? "button" : void 0,
|
|
2099
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2100
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2101
|
-
className: onRowClick ? "cursor-pointer" : void 0,
|
|
2102
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2103
|
-
children: renderMobileCard(item, visibleMobileColumns)
|
|
2104
|
-
},
|
|
2105
|
-
item.id
|
|
2106
|
-
);
|
|
2107
|
-
}
|
|
2108
|
-
return /* @__PURE__ */ jsxs(
|
|
2109
|
-
Card,
|
|
2110
|
-
{
|
|
2111
|
-
variant: onRowClick ? "interactive" : "default",
|
|
2112
|
-
className: cn(
|
|
2113
|
-
onRowClick && "cursor-pointer",
|
|
2114
|
-
"transition-all duration-150"
|
|
2115
|
-
),
|
|
2116
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2117
|
-
role: onRowClick ? "button" : void 0,
|
|
2118
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2119
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2120
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2121
|
-
children: [
|
|
2122
|
-
primaryColumn ? /* @__PURE__ */ jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: primaryColumn.render ? primaryColumn.render(item[primaryColumn.key], item) : String(item[primaryColumn.key]) }) }) : null,
|
|
2123
|
-
secondaryColumns.length > 0 && /* @__PURE__ */ jsx(CardContent, { className: "pb-3", children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-2", children: secondaryColumns.map((column) => /* @__PURE__ */ jsxs(
|
|
2124
|
-
"div",
|
|
2125
|
-
{
|
|
2126
|
-
className: "flex items-start justify-between gap-4 text-sm",
|
|
2127
|
-
children: [
|
|
2128
|
-
!column.hideLabelOnMobile && /* @__PURE__ */ jsxs("dt", { className: "text-muted-foreground min-w-[80px] shrink-0", children: [
|
|
2129
|
-
column.label,
|
|
2130
|
-
":"
|
|
2131
|
-
] }),
|
|
2132
|
-
/* @__PURE__ */ jsx(
|
|
2133
|
-
"dd",
|
|
2134
|
-
{
|
|
2135
|
-
className: cn(
|
|
2136
|
-
"font-medium flex-1",
|
|
2137
|
-
!column.hideLabelOnMobile ? "text-right" : "text-left"
|
|
2138
|
-
),
|
|
2139
|
-
children: column.render ? column.render(item[column.key], item) : String(item[column.key])
|
|
2140
|
-
}
|
|
2141
|
-
)
|
|
2142
|
-
]
|
|
2143
|
-
},
|
|
2144
|
-
String(column.key)
|
|
2145
|
-
)) }) })
|
|
2146
|
-
]
|
|
2147
|
-
},
|
|
2148
|
-
item.id
|
|
2149
|
-
);
|
|
2150
|
-
}) }),
|
|
2151
|
-
/* @__PURE__ */ jsx(
|
|
2152
|
-
"div",
|
|
2153
|
-
{
|
|
2154
|
-
className: cn(
|
|
2155
|
-
"table-wrapper hidden md:block overflow-hidden rounded-none border border-primary/5",
|
|
2156
|
-
tableWrapperClassName
|
|
2157
|
-
),
|
|
2158
|
-
children: /* @__PURE__ */ jsxs(Table, { "aria-label": ariaLabel || "Data table", children: [
|
|
2159
|
-
/* @__PURE__ */ jsx(TableHeader, { className: "bg-[hsl(var(--table-header-bg))]", children: /* @__PURE__ */ jsx(TableRow, { children: columns.map((column) => /* @__PURE__ */ jsx(
|
|
2160
|
-
TableHead,
|
|
2161
|
-
{
|
|
2162
|
-
className: column.headerClassName,
|
|
2163
|
-
children: column.label
|
|
2164
|
-
},
|
|
2165
|
-
String(column.key)
|
|
2166
|
-
)) }) }),
|
|
2167
|
-
/* @__PURE__ */ jsx(TableBody, { children: data.map((item) => {
|
|
2168
|
-
const primaryValue = primaryColumn ? String(item[primaryColumn.key]) : String(item.id);
|
|
2169
|
-
return /* @__PURE__ */ jsx(
|
|
2170
|
-
TableRow,
|
|
2171
|
-
{
|
|
2172
|
-
className: cn(
|
|
2173
|
-
"hover-unified-table-row",
|
|
2174
|
-
onRowClick && "cursor-pointer"
|
|
2175
|
-
),
|
|
2176
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2177
|
-
role: onRowClick ? "button" : void 0,
|
|
2178
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2179
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2180
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2181
|
-
children: columns.map((column) => /* @__PURE__ */ jsx(
|
|
2182
|
-
TableCell,
|
|
2183
|
-
{
|
|
2184
|
-
className: column.cellClassName,
|
|
2185
|
-
children: column.render ? column.render(item[column.key], item) : String(item[column.key])
|
|
2186
|
-
},
|
|
2187
|
-
String(column.key)
|
|
2188
|
-
))
|
|
2189
|
-
},
|
|
2190
|
-
item.id
|
|
2191
|
-
);
|
|
2192
|
-
}) })
|
|
2193
|
-
] })
|
|
2194
|
-
}
|
|
2195
|
-
),
|
|
2196
|
-
footer && /* @__PURE__ */ jsx("div", { className: "table-footer border-t border-primary/5 bg-[hsl(var(--table-header-bg))]", children: footer })
|
|
2197
|
-
] });
|
|
2198
|
-
}
|
|
2199
|
-
var ResponsiveTable = React6.forwardRef(ResponsiveTableInner);
|
|
2200
1862
|
|
|
2201
1863
|
// src/tailwind-preset.ts
|
|
2202
1864
|
var uiPreset = {
|
|
2203
1865
|
theme: {
|
|
2204
1866
|
extend: {
|
|
2205
1867
|
colors: {
|
|
2206
|
-
border: "
|
|
2207
|
-
input: "
|
|
2208
|
-
ring: "
|
|
2209
|
-
background: "
|
|
2210
|
-
foreground: "
|
|
1868
|
+
border: "var(--nx-border)",
|
|
1869
|
+
input: "var(--nx-input)",
|
|
1870
|
+
ring: "var(--nx-ring)",
|
|
1871
|
+
background: "var(--nx-background)",
|
|
1872
|
+
foreground: "var(--nx-foreground)",
|
|
2211
1873
|
primary: {
|
|
2212
|
-
DEFAULT: "
|
|
2213
|
-
foreground: "
|
|
1874
|
+
DEFAULT: "var(--nx-primary)",
|
|
1875
|
+
foreground: "var(--nx-primary-foreground)"
|
|
2214
1876
|
},
|
|
2215
1877
|
secondary: {
|
|
2216
|
-
DEFAULT: "
|
|
2217
|
-
foreground: "
|
|
1878
|
+
DEFAULT: "var(--nx-secondary)",
|
|
1879
|
+
foreground: "var(--nx-secondary-foreground)"
|
|
2218
1880
|
},
|
|
2219
1881
|
destructive: {
|
|
2220
|
-
DEFAULT: "
|
|
2221
|
-
foreground: "
|
|
1882
|
+
DEFAULT: "var(--nx-destructive)",
|
|
1883
|
+
foreground: "var(--nx-destructive-foreground)"
|
|
2222
1884
|
},
|
|
2223
1885
|
success: {
|
|
2224
|
-
DEFAULT: "
|
|
2225
|
-
foreground: "
|
|
1886
|
+
DEFAULT: "var(--nx-success)",
|
|
1887
|
+
foreground: "var(--nx-success-foreground)"
|
|
2226
1888
|
},
|
|
2227
1889
|
warning: {
|
|
2228
|
-
DEFAULT: "
|
|
2229
|
-
foreground: "
|
|
1890
|
+
DEFAULT: "var(--nx-warning)",
|
|
1891
|
+
foreground: "var(--nx-warning-foreground)"
|
|
2230
1892
|
},
|
|
2231
1893
|
muted: {
|
|
2232
|
-
DEFAULT: "
|
|
2233
|
-
foreground: "
|
|
1894
|
+
DEFAULT: "var(--nx-muted)",
|
|
1895
|
+
foreground: "var(--nx-muted-foreground)"
|
|
2234
1896
|
},
|
|
2235
1897
|
accent: {
|
|
2236
|
-
DEFAULT: "
|
|
2237
|
-
foreground: "
|
|
1898
|
+
DEFAULT: "var(--nx-accent)",
|
|
1899
|
+
foreground: "var(--nx-accent-foreground)"
|
|
2238
1900
|
},
|
|
2239
1901
|
popover: {
|
|
2240
|
-
DEFAULT: "
|
|
2241
|
-
foreground: "
|
|
1902
|
+
DEFAULT: "var(--nx-popover)",
|
|
1903
|
+
foreground: "var(--nx-popover-foreground)"
|
|
2242
1904
|
},
|
|
2243
1905
|
card: {
|
|
2244
|
-
DEFAULT: "
|
|
2245
|
-
foreground: "
|
|
1906
|
+
DEFAULT: "var(--nx-card)",
|
|
1907
|
+
foreground: "var(--nx-card-foreground)"
|
|
2246
1908
|
}
|
|
2247
1909
|
},
|
|
2248
1910
|
borderRadius: {
|
|
@@ -2269,6 +1931,6 @@ var uiPreset = {
|
|
|
2269
1931
|
};
|
|
2270
1932
|
var tailwind_preset_default = uiPreset;
|
|
2271
1933
|
|
|
2272
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FormLabelWithTooltip, Input, Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalProvider, Progress, RadioGroup, RadioGroupItem,
|
|
1934
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FormLabelWithTooltip, Input, Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortalProvider, Progress, RadioGroup, RadioGroupItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableEmpty, TableError, TableFooter, TableHead, TableHeader, TableLoading, TableRow, TableSearch, TableSkeleton, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, avatarVariants, badgeVariants, buttonVariants, cardVariants, cn, dialogContentVariants, inputVariants, progressVariants, selectTriggerVariants, sheetVariants, spinnerVariants, tailwind_preset_default as uiPreset, usePortalContainer };
|
|
2273
1935
|
//# sourceMappingURL=index.mjs.map
|
|
2274
1936
|
//# sourceMappingURL=index.mjs.map
|