@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.cjs
CHANGED
|
@@ -73,13 +73,13 @@ var buttonVariants = classVarianceAuthority.cva(
|
|
|
73
73
|
link: "text-primary border border-transparent underline-offset-4 hover:underline"
|
|
74
74
|
},
|
|
75
75
|
size: {
|
|
76
|
-
default: "h-
|
|
77
|
-
sm: "h-
|
|
78
|
-
md: "h-
|
|
79
|
-
lg: "h-
|
|
80
|
-
icon: "h-
|
|
81
|
-
"icon-sm": "h-
|
|
82
|
-
"icon-lg": "h-
|
|
76
|
+
default: "h-[var(--nx-control-height)] px-6 py-2",
|
|
77
|
+
sm: "h-[var(--nx-control-height-md)] px-4 text-[13px]",
|
|
78
|
+
md: "h-[var(--nx-control-height)] px-6 text-sm",
|
|
79
|
+
lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
|
|
80
|
+
icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
|
|
81
|
+
"icon-sm": "h-[var(--nx-control-height-md)] w-[var(--nx-control-height-md)] p-0",
|
|
82
|
+
"icon-lg": "h-[var(--nx-control-height-lg)] w-[var(--nx-control-height-lg)] p-0"
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
defaultVariants: {
|
|
@@ -116,13 +116,13 @@ var Button = React6.forwardRef(
|
|
|
116
116
|
);
|
|
117
117
|
Button.displayName = "Button";
|
|
118
118
|
var inputVariants = classVarianceAuthority.cva(
|
|
119
|
-
"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
|
|
119
|
+
"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!",
|
|
120
120
|
{
|
|
121
121
|
variants: {
|
|
122
122
|
size: {
|
|
123
|
-
sm: "h-
|
|
124
|
-
default: "h-
|
|
125
|
-
lg: "h-
|
|
123
|
+
sm: "h-[var(--nx-control-height-sm)] px-2.5 py-2 text-sm",
|
|
124
|
+
default: "h-[var(--nx-control-height)] px-3 py-2.5 text-sm",
|
|
125
|
+
lg: "h-[var(--nx-control-height-lg)] px-4 py-3 text-base"
|
|
126
126
|
}
|
|
127
127
|
},
|
|
128
128
|
defaultVariants: {
|
|
@@ -151,8 +151,8 @@ var Textarea = React6.forwardRef(({ className, ...props }, ref) => {
|
|
|
151
151
|
{
|
|
152
152
|
"data-slot": "textarea",
|
|
153
153
|
className: cn(
|
|
154
|
-
"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
|
|
155
|
-
"aria-invalid:border-destructive aria-invalid:focus
|
|
154
|
+
"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",
|
|
155
|
+
"aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
|
|
156
156
|
className
|
|
157
157
|
),
|
|
158
158
|
ref,
|
|
@@ -174,22 +174,41 @@ function Label({ className, ...props }) {
|
|
|
174
174
|
}
|
|
175
175
|
);
|
|
176
176
|
}
|
|
177
|
+
var PortalContext = React6.createContext({ container: null });
|
|
178
|
+
function PortalProvider({ container, children }) {
|
|
179
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PortalContext.Provider, { value: { container }, children });
|
|
180
|
+
}
|
|
181
|
+
function usePortalContainer() {
|
|
182
|
+
const { container } = React6.useContext(PortalContext);
|
|
183
|
+
return container ?? void 0;
|
|
184
|
+
}
|
|
177
185
|
var TooltipProvider = reactTooltip.Provider;
|
|
178
186
|
var Tooltip = reactTooltip.Root;
|
|
179
187
|
var TooltipTrigger = reactTooltip.Trigger;
|
|
180
|
-
var TooltipContent = React6.forwardRef(({ className, sideOffset = 4, ...props }, ref) =>
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
188
|
+
var TooltipContent = React6.forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
189
|
+
const portalContainer = usePortalContainer();
|
|
190
|
+
return (
|
|
191
|
+
// Portalled for the same reason as every other overlay here, plus one
|
|
192
|
+
// specific to the tooltip: the positioner measures against the nearest
|
|
193
|
+
// containing block, and it counts `container-type` as one while the
|
|
194
|
+
// browser does not. Left inline under a `@container` element, the content
|
|
195
|
+
// is offset by that element's own position. Portalling lifts it out of any
|
|
196
|
+
// such ancestor, so the two agree again.
|
|
197
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactTooltip.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
198
|
+
reactTooltip.Content,
|
|
199
|
+
{
|
|
200
|
+
ref,
|
|
201
|
+
sideOffset,
|
|
202
|
+
"data-slot": "tooltip-content",
|
|
203
|
+
className: cn(
|
|
204
|
+
"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",
|
|
205
|
+
className
|
|
206
|
+
),
|
|
207
|
+
...props
|
|
208
|
+
}
|
|
209
|
+
) })
|
|
210
|
+
);
|
|
211
|
+
});
|
|
193
212
|
TooltipContent.displayName = reactTooltip.Content.displayName;
|
|
194
213
|
var FormLabelWithTooltip = React6__namespace.forwardRef(
|
|
195
214
|
({
|
|
@@ -224,7 +243,7 @@ var FormLabelWithTooltip = React6__namespace.forwardRef(
|
|
|
224
243
|
{
|
|
225
244
|
side: "right",
|
|
226
245
|
className: cn(
|
|
227
|
-
"max-w-[250px] text-[12px] break-words relative z-[100] shadow-md border border-
|
|
246
|
+
"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",
|
|
228
247
|
tooltipClassName
|
|
229
248
|
),
|
|
230
249
|
children: description
|
|
@@ -240,12 +259,14 @@ var badgeVariants = classVarianceAuthority.cva(
|
|
|
240
259
|
{
|
|
241
260
|
variants: {
|
|
242
261
|
variant: {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
262
|
+
// Clear, legible chip in both modes (was bg-primary/5 at ~5% opacity,
|
|
263
|
+
// which was nearly invisible on dark backgrounds).
|
|
264
|
+
default: "bg-muted text-foreground",
|
|
265
|
+
primary: "bg-primary/10 text-primary dark:bg-primary/20",
|
|
266
|
+
success: "bg-success-100 text-success-700 dark:bg-success-900 dark:text-success-100",
|
|
267
|
+
warning: "bg-warning-100 text-warning-700 dark:bg-warning-900 dark:text-warning-100",
|
|
268
|
+
destructive: "bg-destructive-100 text-destructive-700 dark:bg-destructive-900 dark:text-destructive-100",
|
|
269
|
+
outline: "border border-border! bg-transparent text-foreground dark:text-muted-foreground dark:border-border!"
|
|
249
270
|
}
|
|
250
271
|
},
|
|
251
272
|
defaultVariants: {
|
|
@@ -264,7 +285,7 @@ function Badge({ className, variant = "default", ...props }) {
|
|
|
264
285
|
);
|
|
265
286
|
}
|
|
266
287
|
var cardVariants = classVarianceAuthority.cva(
|
|
267
|
-
"bg-card text-foreground rounded-none border border-
|
|
288
|
+
"bg-card text-foreground rounded-none border border-border transition-all duration-200",
|
|
268
289
|
{
|
|
269
290
|
variants: {
|
|
270
291
|
variant: {
|
|
@@ -301,7 +322,7 @@ var CardHeader = React6.forwardRef(
|
|
|
301
322
|
"data-slot": "card-header",
|
|
302
323
|
className: cn(
|
|
303
324
|
"flex flex-col p-4",
|
|
304
|
-
!noBorder && "border-b border-
|
|
325
|
+
!noBorder && "border-b border-border",
|
|
305
326
|
className
|
|
306
327
|
),
|
|
307
328
|
...props
|
|
@@ -374,7 +395,7 @@ var CardFooter = React6.forwardRef(
|
|
|
374
395
|
ref,
|
|
375
396
|
"data-slot": "card-footer",
|
|
376
397
|
className: cn(
|
|
377
|
-
"flex items-center px-6 py-4 border-t border-
|
|
398
|
+
"flex items-center px-6 py-4 border-t border-border bg-primary/5",
|
|
378
399
|
className
|
|
379
400
|
),
|
|
380
401
|
...props
|
|
@@ -384,14 +405,14 @@ var CardFooter = React6.forwardRef(
|
|
|
384
405
|
);
|
|
385
406
|
CardFooter.displayName = "CardFooter";
|
|
386
407
|
var alertVariants = classVarianceAuthority.cva(
|
|
387
|
-
"relative flex items-start gap-3 rounded-none border border-
|
|
408
|
+
"relative flex items-start gap-3 rounded-none border border-border p-4 text-sm transition-colors duration-150",
|
|
388
409
|
{
|
|
389
410
|
variants: {
|
|
390
411
|
variant: {
|
|
391
|
-
info: "border-
|
|
392
|
-
success: "border-
|
|
393
|
-
warning: "border-
|
|
394
|
-
destructive: "border-
|
|
412
|
+
info: "border-border bg-primary/5 text-primary dark:border-primary/30 dark:bg-primary/5 dark:text-primary-foreground/90",
|
|
413
|
+
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",
|
|
414
|
+
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",
|
|
415
|
+
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"
|
|
395
416
|
}
|
|
396
417
|
},
|
|
397
418
|
defaultVariants: {
|
|
@@ -487,7 +508,7 @@ var progressVariants = classVarianceAuthority.cva("h-full rounded-none transitio
|
|
|
487
508
|
variants: {
|
|
488
509
|
variant: {
|
|
489
510
|
default: "bg-primary-500",
|
|
490
|
-
success: "bg-
|
|
511
|
+
success: "bg-success-500",
|
|
491
512
|
error: "bg-destructive"
|
|
492
513
|
}
|
|
493
514
|
},
|
|
@@ -541,7 +562,22 @@ var Checkbox = React6.forwardRef(({ className, indeterminate, ...props }, ref) =
|
|
|
541
562
|
ref,
|
|
542
563
|
"data-slot": "checkbox",
|
|
543
564
|
className: cn(
|
|
544
|
-
|
|
565
|
+
// Unchecked outline uses primary/50: measured 3.95:1 on the light row and
|
|
566
|
+
// 5.32:1 on the dark one. WCAG 1.4.11 asks 3:1 of a control's boundary and
|
|
567
|
+
// the earlier values did not reach it — primary/40 came out at 2.85, close
|
|
568
|
+
// enough to look deliberate and still short. Callers must not override the
|
|
569
|
+
// border: passing `border-border` puts the divider token here, which
|
|
570
|
+
// measured 1.35:1 and 1.14:1, and a divider is meant to go unnoticed.
|
|
571
|
+
// Checked and indeterminate share the filled appearance; declaring both
|
|
572
|
+
// here keeps the control self-sufficient without host overrides.
|
|
573
|
+
//
|
|
574
|
+
// The box stays 16px and the target does not: `before` stretches an
|
|
575
|
+
// invisible 24px square from the centre, which is WCAG 2.5.8's floor.
|
|
576
|
+
// The exemption for a bare browser checkbox does not cover a styled one,
|
|
577
|
+
// and this is styled. Growing the box instead would make every dense
|
|
578
|
+
// table heavier for a rule about pointers, so the box and the thing you
|
|
579
|
+
// can hit are allowed to differ.
|
|
580
|
+
"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",
|
|
545
581
|
className
|
|
546
582
|
),
|
|
547
583
|
...props,
|
|
@@ -574,7 +610,9 @@ var RadioGroupItem = React6.forwardRef(({ className, ...props }, ref) => {
|
|
|
574
610
|
ref,
|
|
575
611
|
"data-slot": "radio-group-item",
|
|
576
612
|
className: cn(
|
|
577
|
-
|
|
613
|
+
// Unchecked outline uses primary/40 (clearly visible) instead of primary/5
|
|
614
|
+
// (~5% opacity, effectively invisible); hover strengthens above the resting state.
|
|
615
|
+
"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]",
|
|
578
616
|
className
|
|
579
617
|
),
|
|
580
618
|
...props,
|
|
@@ -589,9 +627,9 @@ function Switch({ className, ...props }) {
|
|
|
589
627
|
{
|
|
590
628
|
"data-slot": "switch",
|
|
591
629
|
className: cn(
|
|
592
|
-
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-none border border-
|
|
593
|
-
"data-[state=checked]:bg-primary data-[state=checked]
|
|
594
|
-
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-
|
|
630
|
+
"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",
|
|
631
|
+
"data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
|
|
632
|
+
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
|
|
595
633
|
className
|
|
596
634
|
),
|
|
597
635
|
...props,
|
|
@@ -636,7 +674,7 @@ var AccordionTrigger = React6.forwardRef(
|
|
|
636
674
|
...props,
|
|
637
675
|
children: [
|
|
638
676
|
children,
|
|
639
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-150" })
|
|
677
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-150 will-change-transform" })
|
|
640
678
|
]
|
|
641
679
|
}
|
|
642
680
|
) })
|
|
@@ -648,7 +686,7 @@ var AccordionContent = React6.forwardRef(
|
|
|
648
686
|
{
|
|
649
687
|
ref,
|
|
650
688
|
"data-slot": "accordion-content",
|
|
651
|
-
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
689
|
+
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",
|
|
652
690
|
...props,
|
|
653
691
|
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pb-4 pt-0", className), children })
|
|
654
692
|
}
|
|
@@ -757,7 +795,7 @@ var TabsTrigger = React6.forwardRef(
|
|
|
757
795
|
ref,
|
|
758
796
|
"data-slot": "tabs-trigger",
|
|
759
797
|
className: cn(
|
|
760
|
-
"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]
|
|
798
|
+
"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",
|
|
761
799
|
className
|
|
762
800
|
),
|
|
763
801
|
...props
|
|
@@ -780,14 +818,6 @@ var TabsContent = React6.forwardRef(
|
|
|
780
818
|
)
|
|
781
819
|
);
|
|
782
820
|
TabsContent.displayName = reactTabs.Content.displayName;
|
|
783
|
-
var PortalContext = React6.createContext({ container: null });
|
|
784
|
-
function PortalProvider({ container, children }) {
|
|
785
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PortalContext.Provider, { value: { container }, children });
|
|
786
|
-
}
|
|
787
|
-
function usePortalContainer() {
|
|
788
|
-
const { container } = React6.useContext(PortalContext);
|
|
789
|
-
return container ?? void 0;
|
|
790
|
-
}
|
|
791
821
|
var Popover = PopoverPrimitive__namespace.Root;
|
|
792
822
|
var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
|
|
793
823
|
var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
|
|
@@ -801,7 +831,7 @@ var PopoverContent = React6__namespace.forwardRef(({ className, align = "center"
|
|
|
801
831
|
sideOffset,
|
|
802
832
|
"data-slot": "popover-content",
|
|
803
833
|
className: cn(
|
|
804
|
-
"z-[100] w-72 rounded-none border border-
|
|
834
|
+
"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]",
|
|
805
835
|
className
|
|
806
836
|
),
|
|
807
837
|
...props
|
|
@@ -850,7 +880,7 @@ var DialogContent = React6.forwardRef(({ className, children, size, ...props },
|
|
|
850
880
|
ref,
|
|
851
881
|
"data-slot": "dialog-content",
|
|
852
882
|
className: cn(
|
|
853
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
883
|
+
"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%]",
|
|
854
884
|
dialogContentVariants({ size }),
|
|
855
885
|
className
|
|
856
886
|
),
|
|
@@ -947,7 +977,7 @@ var AlertDialogContent = React6.forwardRef(({ className, ...props }, ref) => {
|
|
|
947
977
|
{
|
|
948
978
|
ref,
|
|
949
979
|
className: cn(
|
|
950
|
-
"fixed left-[50%] top-[50%] z-[51] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-
|
|
980
|
+
"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%]",
|
|
951
981
|
className
|
|
952
982
|
),
|
|
953
983
|
...props
|
|
@@ -1035,12 +1065,14 @@ var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
|
|
|
1035
1065
|
var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
|
|
1036
1066
|
var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
|
|
1037
1067
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
|
|
1068
|
+
var menuItemBase = "cursor-pointer transition-colors data-[highlighted]:bg-muted data-[highlighted]:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
1038
1069
|
var DropdownMenuSubTrigger = React6__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1039
1070
|
DropdownMenuPrimitive__namespace.SubTrigger,
|
|
1040
1071
|
{
|
|
1041
1072
|
ref,
|
|
1042
1073
|
className: cn(
|
|
1043
|
-
"flex
|
|
1074
|
+
"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",
|
|
1075
|
+
menuItemBase,
|
|
1044
1076
|
inset && "pl-8",
|
|
1045
1077
|
className
|
|
1046
1078
|
),
|
|
@@ -1057,7 +1089,7 @@ var DropdownMenuSubContent = React6__namespace.forwardRef(({ className, ...props
|
|
|
1057
1089
|
{
|
|
1058
1090
|
ref,
|
|
1059
1091
|
className: cn(
|
|
1060
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-none border border-
|
|
1092
|
+
"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]",
|
|
1061
1093
|
className
|
|
1062
1094
|
),
|
|
1063
1095
|
...props
|
|
@@ -1072,7 +1104,7 @@ var DropdownMenuContent = React6__namespace.forwardRef(({ className, sideOffset
|
|
|
1072
1104
|
ref,
|
|
1073
1105
|
sideOffset,
|
|
1074
1106
|
className: cn(
|
|
1075
|
-
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-none border border-
|
|
1107
|
+
"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]",
|
|
1076
1108
|
className
|
|
1077
1109
|
),
|
|
1078
1110
|
...props
|
|
@@ -1085,7 +1117,8 @@ var DropdownMenuItem = React6__namespace.forwardRef(({ className, inset, ...prop
|
|
|
1085
1117
|
{
|
|
1086
1118
|
ref,
|
|
1087
1119
|
className: cn(
|
|
1088
|
-
"relative flex
|
|
1120
|
+
"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",
|
|
1121
|
+
menuItemBase,
|
|
1089
1122
|
inset && "pl-8",
|
|
1090
1123
|
className
|
|
1091
1124
|
),
|
|
@@ -1098,7 +1131,8 @@ var DropdownMenuCheckboxItem = React6__namespace.forwardRef(({ className, childr
|
|
|
1098
1131
|
{
|
|
1099
1132
|
ref,
|
|
1100
1133
|
className: cn(
|
|
1101
|
-
"relative flex
|
|
1134
|
+
"relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1135
|
+
menuItemBase,
|
|
1102
1136
|
className
|
|
1103
1137
|
),
|
|
1104
1138
|
checked,
|
|
@@ -1115,7 +1149,8 @@ var DropdownMenuRadioItem = React6__namespace.forwardRef(({ className, children,
|
|
|
1115
1149
|
{
|
|
1116
1150
|
ref,
|
|
1117
1151
|
className: cn(
|
|
1118
|
-
"relative flex
|
|
1152
|
+
"relative flex select-none items-center rounded-none py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1153
|
+
menuItemBase,
|
|
1119
1154
|
className
|
|
1120
1155
|
),
|
|
1121
1156
|
...props,
|
|
@@ -1173,13 +1208,13 @@ function SelectValue({
|
|
|
1173
1208
|
return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { "data-slot": "select-value", ...props });
|
|
1174
1209
|
}
|
|
1175
1210
|
var selectTriggerVariants = classVarianceAuthority.cva(
|
|
1176
|
-
"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
|
|
1211
|
+
"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",
|
|
1177
1212
|
{
|
|
1178
1213
|
variants: {
|
|
1179
1214
|
size: {
|
|
1180
|
-
sm: "h-
|
|
1181
|
-
default: "h-
|
|
1182
|
-
lg: "h-
|
|
1215
|
+
sm: "h-[var(--nx-control-height-sm)] text-sm",
|
|
1216
|
+
default: "h-[var(--nx-control-height)] text-sm",
|
|
1217
|
+
lg: "h-[var(--nx-control-height-lg)] text-base"
|
|
1183
1218
|
}
|
|
1184
1219
|
},
|
|
1185
1220
|
defaultVariants: {
|
|
@@ -1215,7 +1250,7 @@ function SelectContent({
|
|
|
1215
1250
|
{
|
|
1216
1251
|
"data-slot": "select-content",
|
|
1217
1252
|
className: cn(
|
|
1218
|
-
"bg-popover text-popover-foreground border border-
|
|
1253
|
+
"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",
|
|
1219
1254
|
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",
|
|
1220
1255
|
className
|
|
1221
1256
|
),
|
|
@@ -1342,10 +1377,10 @@ var sheetVariants = classVarianceAuthority.cva(
|
|
|
1342
1377
|
{
|
|
1343
1378
|
variants: {
|
|
1344
1379
|
side: {
|
|
1345
|
-
top: "inset-x-0 top-0 border-b border-
|
|
1346
|
-
bottom: "inset-x-0 bottom-0 border-t border-
|
|
1347
|
-
left: "inset-y-0 left-0 h-full w-3/4 border-r border-
|
|
1348
|
-
right: "inset-y-0 right-0 h-full w-3/4 border-l border-
|
|
1380
|
+
top: "inset-x-0 top-0 border-b border-border data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
1381
|
+
bottom: "inset-x-0 bottom-0 border-t border-border data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
1382
|
+
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",
|
|
1383
|
+
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"
|
|
1349
1384
|
}
|
|
1350
1385
|
},
|
|
1351
1386
|
defaultVariants: {
|
|
@@ -1469,7 +1504,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1469
1504
|
"m-4 sm:m-0",
|
|
1470
1505
|
// 16px margin on mobile, no margin on desktop
|
|
1471
1506
|
// Visual
|
|
1472
|
-
"overflow-hidden rounded-none border border-
|
|
1507
|
+
"overflow-hidden rounded-none border border-border bg-background shadow-xl",
|
|
1473
1508
|
// Animation
|
|
1474
1509
|
"duration-200",
|
|
1475
1510
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
@@ -1485,7 +1520,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1485
1520
|
var CommandInput = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1486
1521
|
"div",
|
|
1487
1522
|
{
|
|
1488
|
-
className: "flex items-center border-b border-
|
|
1523
|
+
className: "flex items-center border-b border-border px-4",
|
|
1489
1524
|
"cmdk-input-wrapper": "",
|
|
1490
1525
|
children: [
|
|
1491
1526
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-3 h-5 w-5 shrink-0 text-muted-foreground" }),
|
|
@@ -1604,7 +1639,7 @@ var CommandShortcut = React6.forwardRef(
|
|
|
1604
1639
|
"text-xs font-mono",
|
|
1605
1640
|
// Visual
|
|
1606
1641
|
"text-muted-foreground bg-primary/5",
|
|
1607
|
-
"border border-
|
|
1642
|
+
"border border-border rounded-none",
|
|
1608
1643
|
// Spacing
|
|
1609
1644
|
"px-1.5 py-0.5",
|
|
1610
1645
|
className
|
|
@@ -1647,7 +1682,7 @@ function Toaster({ theme = "system", ...props }) {
|
|
|
1647
1682
|
sonner.Toaster,
|
|
1648
1683
|
{
|
|
1649
1684
|
theme,
|
|
1650
|
-
className: "toaster group
|
|
1685
|
+
className: "toaster group bg-transparent! overflow-visible! z-[9999]!",
|
|
1651
1686
|
"data-slot": "toaster",
|
|
1652
1687
|
toastOptions: {
|
|
1653
1688
|
classNames: {
|
|
@@ -1662,9 +1697,9 @@ function Toaster({ theme = "system", ...props }) {
|
|
|
1662
1697
|
loading: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-4 w-4 animate-spin" })
|
|
1663
1698
|
},
|
|
1664
1699
|
style: {
|
|
1665
|
-
"--normal-bg": "
|
|
1666
|
-
"--normal-text": "
|
|
1667
|
-
"--normal-border": "
|
|
1700
|
+
"--normal-bg": "var(--nx-popover)",
|
|
1701
|
+
"--normal-text": "var(--nx-popover-foreground)",
|
|
1702
|
+
"--normal-border": "var(--nx-border)",
|
|
1668
1703
|
"--border-radius": "0px"
|
|
1669
1704
|
},
|
|
1670
1705
|
...props
|
|
@@ -1680,7 +1715,14 @@ var Table = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
1680
1715
|
}
|
|
1681
1716
|
) }));
|
|
1682
1717
|
Table.displayName = "Table";
|
|
1683
|
-
var TableHeader = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1718
|
+
var TableHeader = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1719
|
+
"thead",
|
|
1720
|
+
{
|
|
1721
|
+
ref,
|
|
1722
|
+
className: cn("[&_tr]:border-b border-border", className),
|
|
1723
|
+
...props
|
|
1724
|
+
}
|
|
1725
|
+
));
|
|
1684
1726
|
TableHeader.displayName = "TableHeader";
|
|
1685
1727
|
var TableBody = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1686
1728
|
"tbody",
|
|
@@ -1695,7 +1737,10 @@ var TableFooter = React6__namespace.forwardRef(({ className, ...props }, ref) =>
|
|
|
1695
1737
|
"tfoot",
|
|
1696
1738
|
{
|
|
1697
1739
|
ref,
|
|
1698
|
-
className: cn(
|
|
1740
|
+
className: cn(
|
|
1741
|
+
"border-t border-border font-medium [&>tr]:last:border-b-0",
|
|
1742
|
+
className
|
|
1743
|
+
),
|
|
1699
1744
|
...props
|
|
1700
1745
|
}
|
|
1701
1746
|
));
|
|
@@ -1705,7 +1750,7 @@ var TableRow = React6__namespace.forwardRef(({ className, ...props }, ref) => /*
|
|
|
1705
1750
|
{
|
|
1706
1751
|
ref,
|
|
1707
1752
|
className: cn(
|
|
1708
|
-
"border-b border-
|
|
1753
|
+
"border-b border-border transition-colors data-[state=selected]:bg-primary/5",
|
|
1709
1754
|
className
|
|
1710
1755
|
),
|
|
1711
1756
|
...props
|
|
@@ -1764,7 +1809,7 @@ function TableSearch({
|
|
|
1764
1809
|
value,
|
|
1765
1810
|
onChange: (e) => onChange(e.target.value),
|
|
1766
1811
|
"aria-busy": isLoading,
|
|
1767
|
-
className: "h-10 w-full rounded-none border border-
|
|
1812
|
+
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"
|
|
1768
1813
|
}
|
|
1769
1814
|
),
|
|
1770
1815
|
(value || isLoading) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
|
|
@@ -1802,212 +1847,6 @@ function TableEmpty({ message = "No records found" }) {
|
|
|
1802
1847
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: message })
|
|
1803
1848
|
] });
|
|
1804
1849
|
}
|
|
1805
|
-
function renderPageNumbers(currentPage, totalPages, maxVisiblePages, onPageChange) {
|
|
1806
|
-
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"}`;
|
|
1807
|
-
if (totalPages <= maxVisiblePages) {
|
|
1808
|
-
return Array.from({ length: totalPages }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1809
|
-
"button",
|
|
1810
|
-
{
|
|
1811
|
-
onClick: () => onPageChange(i),
|
|
1812
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1813
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1814
|
-
className: getBtnClass(currentPage === i),
|
|
1815
|
-
children: i + 1
|
|
1816
|
-
},
|
|
1817
|
-
`page-${i}`
|
|
1818
|
-
));
|
|
1819
|
-
}
|
|
1820
|
-
const pages = [];
|
|
1821
|
-
const startPage = Math.max(0, currentPage - Math.floor(maxVisiblePages / 2));
|
|
1822
|
-
const endPage = Math.min(totalPages - 1, startPage + maxVisiblePages - 1);
|
|
1823
|
-
if (startPage > 0) {
|
|
1824
|
-
pages.push(
|
|
1825
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1826
|
-
"button",
|
|
1827
|
-
{
|
|
1828
|
-
onClick: () => onPageChange(0),
|
|
1829
|
-
"aria-label": "Go to page 1",
|
|
1830
|
-
className: getBtnClass(currentPage === 0),
|
|
1831
|
-
children: "1"
|
|
1832
|
-
},
|
|
1833
|
-
"page-0"
|
|
1834
|
-
)
|
|
1835
|
-
);
|
|
1836
|
-
if (startPage > 1) {
|
|
1837
|
-
pages.push(
|
|
1838
|
-
/* @__PURE__ */ jsxRuntime.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-start"
|
|
1846
|
-
)
|
|
1847
|
-
);
|
|
1848
|
-
}
|
|
1849
|
-
}
|
|
1850
|
-
for (let i = startPage; i <= endPage; i++) {
|
|
1851
|
-
pages.push(
|
|
1852
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1853
|
-
"button",
|
|
1854
|
-
{
|
|
1855
|
-
onClick: () => onPageChange(i),
|
|
1856
|
-
"aria-label": `Go to page ${i + 1}`,
|
|
1857
|
-
"aria-current": currentPage === i ? "page" : void 0,
|
|
1858
|
-
className: getBtnClass(currentPage === i),
|
|
1859
|
-
children: i + 1
|
|
1860
|
-
},
|
|
1861
|
-
i
|
|
1862
|
-
)
|
|
1863
|
-
);
|
|
1864
|
-
}
|
|
1865
|
-
if (endPage < totalPages - 1) {
|
|
1866
|
-
if (endPage < totalPages - 2) {
|
|
1867
|
-
pages.push(
|
|
1868
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1869
|
-
"span",
|
|
1870
|
-
{
|
|
1871
|
-
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",
|
|
1872
|
-
"aria-hidden": "true",
|
|
1873
|
-
children: "..."
|
|
1874
|
-
},
|
|
1875
|
-
"ellipsis-end"
|
|
1876
|
-
)
|
|
1877
|
-
);
|
|
1878
|
-
}
|
|
1879
|
-
pages.push(
|
|
1880
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1881
|
-
"button",
|
|
1882
|
-
{
|
|
1883
|
-
onClick: () => onPageChange(totalPages - 1),
|
|
1884
|
-
"aria-label": `Go to page ${totalPages}`,
|
|
1885
|
-
className: getBtnClass(currentPage === totalPages - 1),
|
|
1886
|
-
children: totalPages
|
|
1887
|
-
},
|
|
1888
|
-
totalPages - 1
|
|
1889
|
-
)
|
|
1890
|
-
);
|
|
1891
|
-
}
|
|
1892
|
-
return pages;
|
|
1893
|
-
}
|
|
1894
|
-
function TablePagination({
|
|
1895
|
-
meta,
|
|
1896
|
-
onPageChange,
|
|
1897
|
-
onPageSizeChange,
|
|
1898
|
-
config,
|
|
1899
|
-
isLoading = false
|
|
1900
|
-
}) {
|
|
1901
|
-
const {
|
|
1902
|
-
showPageSizeSelector = true,
|
|
1903
|
-
pageSizeOptions = [10, 20, 30, 50],
|
|
1904
|
-
maxVisiblePages = 5
|
|
1905
|
-
} = config || {};
|
|
1906
|
-
return /* @__PURE__ */ jsxRuntime.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: [
|
|
1907
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "whitespace-nowrap order-2 sm:order-1", children: [
|
|
1908
|
-
"Showing ",
|
|
1909
|
-
(meta.page - 1) * meta.limit + 1,
|
|
1910
|
-
"-",
|
|
1911
|
-
Math.min(meta.page * meta.limit, meta.total),
|
|
1912
|
-
" of ",
|
|
1913
|
-
meta.total,
|
|
1914
|
-
" entries"
|
|
1915
|
-
] }),
|
|
1916
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8 order-1 sm:order-2", children: [
|
|
1917
|
-
showPageSizeSelector && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
1918
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap hidden sm:inline-block", children: "Rows per page" }),
|
|
1919
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1920
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1921
|
-
"select",
|
|
1922
|
-
{
|
|
1923
|
-
id: "pageSize",
|
|
1924
|
-
value: meta.limit,
|
|
1925
|
-
onChange: (e) => {
|
|
1926
|
-
const newPageSize = Number(e.target.value);
|
|
1927
|
-
onPageSizeChange(newPageSize);
|
|
1928
|
-
},
|
|
1929
|
-
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",
|
|
1930
|
-
disabled: isLoading,
|
|
1931
|
-
children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: size, children: size }, size))
|
|
1932
|
-
}
|
|
1933
|
-
),
|
|
1934
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1935
|
-
"svg",
|
|
1936
|
-
{
|
|
1937
|
-
className: "h-3 w-3",
|
|
1938
|
-
fill: "none",
|
|
1939
|
-
viewBox: "0 0 24 24",
|
|
1940
|
-
stroke: "currentColor",
|
|
1941
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1942
|
-
"path",
|
|
1943
|
-
{
|
|
1944
|
-
strokeLinecap: "round",
|
|
1945
|
-
strokeLinejoin: "round",
|
|
1946
|
-
strokeWidth: 2,
|
|
1947
|
-
d: "M19 9l-7 7-7-7"
|
|
1948
|
-
}
|
|
1949
|
-
)
|
|
1950
|
-
}
|
|
1951
|
-
) })
|
|
1952
|
-
] })
|
|
1953
|
-
] }),
|
|
1954
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center -space-x-px", children: [
|
|
1955
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1956
|
-
"button",
|
|
1957
|
-
{
|
|
1958
|
-
onClick: () => onPageChange(0),
|
|
1959
|
-
disabled: meta.page === 0 || isLoading,
|
|
1960
|
-
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",
|
|
1961
|
-
"aria-label": "First page",
|
|
1962
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsLeft, { className: "h-4 w-4" })
|
|
1963
|
-
}
|
|
1964
|
-
),
|
|
1965
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1966
|
-
"button",
|
|
1967
|
-
{
|
|
1968
|
-
onClick: () => onPageChange(meta.page - 1),
|
|
1969
|
-
disabled: meta.page === 0 || isLoading,
|
|
1970
|
-
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",
|
|
1971
|
-
"aria-label": "Previous page",
|
|
1972
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" })
|
|
1973
|
-
}
|
|
1974
|
-
),
|
|
1975
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: renderPageNumbers(
|
|
1976
|
-
meta.page,
|
|
1977
|
-
meta.totalPages,
|
|
1978
|
-
maxVisiblePages,
|
|
1979
|
-
onPageChange
|
|
1980
|
-
) }),
|
|
1981
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1982
|
-
"button",
|
|
1983
|
-
{
|
|
1984
|
-
onClick: () => onPageChange(meta.page + 1),
|
|
1985
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1986
|
-
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",
|
|
1987
|
-
"aria-label": "Next page",
|
|
1988
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" })
|
|
1989
|
-
}
|
|
1990
|
-
),
|
|
1991
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1992
|
-
"button",
|
|
1993
|
-
{
|
|
1994
|
-
onClick: () => onPageChange(meta.totalPages - 1),
|
|
1995
|
-
disabled: meta.page >= meta.totalPages - 1 || isLoading,
|
|
1996
|
-
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",
|
|
1997
|
-
"aria-label": "Last page",
|
|
1998
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsRight, { className: "h-4 w-4" })
|
|
1999
|
-
}
|
|
2000
|
-
)
|
|
2001
|
-
] }),
|
|
2002
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "whitespace-nowrap hidden sm:block", children: [
|
|
2003
|
-
"Page ",
|
|
2004
|
-
meta.page + 1,
|
|
2005
|
-
" of ",
|
|
2006
|
-
meta.totalPages
|
|
2007
|
-
] })
|
|
2008
|
-
] })
|
|
2009
|
-
] });
|
|
2010
|
-
}
|
|
2011
1850
|
var GrayBar = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className });
|
|
2012
1851
|
var TableSkeleton = ({
|
|
2013
1852
|
columns = 5,
|
|
@@ -2018,7 +1857,7 @@ var TableSkeleton = ({
|
|
|
2018
1857
|
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2019
1858
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ jsxRuntime.jsxs(Table, { children: [
|
|
2020
1859
|
/* @__PURE__ */ jsxRuntime.jsx(TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-4 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
|
|
2021
|
-
/* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx(TableRow, { className: "border-b border-
|
|
1860
|
+
/* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ jsxRuntime.jsx(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ jsxRuntime.jsx(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-8 w-8 rounded-none" }) }) : colIdx === 1 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
2022
1861
|
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "w-9 rounded-none shrink-0" }),
|
|
2023
1862
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 flex-1", children: [
|
|
2024
1863
|
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-4 w-[120px]" }),
|
|
@@ -2026,7 +1865,7 @@ var TableSkeleton = ({
|
|
|
2026
1865
|
] })
|
|
2027
1866
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, colIdx)) }, rowIdx)) })
|
|
2028
1867
|
] }) }),
|
|
2029
|
-
!hideFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-footer border-t border-
|
|
1868
|
+
!hideFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-footer border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-2 py-4 p-4", children: [
|
|
2030
1869
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 text-sm", children: /* @__PURE__ */ jsxRuntime.jsx(GrayBar, { className: "h-4 w-[120px]" }) }),
|
|
2031
1870
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-6", children: [
|
|
2032
1871
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -2047,232 +1886,55 @@ var TableSkeleton = ({
|
|
|
2047
1886
|
if (hideWrapper) {
|
|
2048
1887
|
return content;
|
|
2049
1888
|
}
|
|
2050
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-wrapper rounded-none border border-
|
|
1889
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-wrapper rounded-none border border-border bg-card overflow-hidden", children: content });
|
|
2051
1890
|
};
|
|
2052
1891
|
TableSkeleton.displayName = "TableSkeleton";
|
|
2053
|
-
function ResponsiveTableInner({
|
|
2054
|
-
data,
|
|
2055
|
-
columns,
|
|
2056
|
-
onRowClick,
|
|
2057
|
-
renderMobileCard,
|
|
2058
|
-
className,
|
|
2059
|
-
emptyMessage = "No results found.",
|
|
2060
|
-
ariaLabel,
|
|
2061
|
-
tableWrapperClassName,
|
|
2062
|
-
footer
|
|
2063
|
-
}, ref) {
|
|
2064
|
-
const visibleMobileColumns = React6__namespace.useMemo(
|
|
2065
|
-
() => columns.filter((col) => !col.hideOnMobile),
|
|
2066
|
-
[columns]
|
|
2067
|
-
);
|
|
2068
|
-
const primaryColumn = React6__namespace.useMemo(() => {
|
|
2069
|
-
return visibleMobileColumns.find(
|
|
2070
|
-
(col) => col.key !== "select" && col.key !== "actions"
|
|
2071
|
-
) || visibleMobileColumns[0];
|
|
2072
|
-
}, [visibleMobileColumns]);
|
|
2073
|
-
const secondaryColumns = React6__namespace.useMemo(
|
|
2074
|
-
() => visibleMobileColumns.filter((col) => col.key !== primaryColumn?.key),
|
|
2075
|
-
[visibleMobileColumns, primaryColumn]
|
|
2076
|
-
);
|
|
2077
|
-
React6__namespace.useEffect(() => {
|
|
2078
|
-
const isDev = typeof globalThis !== "undefined" && globalThis.process && globalThis.process.env?.NODE_ENV === "development";
|
|
2079
|
-
if (isDev && visibleMobileColumns.length === 0) {
|
|
2080
|
-
console.warn(
|
|
2081
|
-
"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."
|
|
2082
|
-
);
|
|
2083
|
-
}
|
|
2084
|
-
}, [visibleMobileColumns.length]);
|
|
2085
|
-
const handleItemClick = React6__namespace.useCallback(
|
|
2086
|
-
(item, e) => {
|
|
2087
|
-
if (!onRowClick) return;
|
|
2088
|
-
if (e) {
|
|
2089
|
-
const target = e.target;
|
|
2090
|
-
if (target.closest('[role="checkbox"]') || target.closest("button") || target.closest("a") || target.closest('[role^="menuitem"]') || target.closest("[data-actions]")) {
|
|
2091
|
-
return;
|
|
2092
|
-
}
|
|
2093
|
-
}
|
|
2094
|
-
onRowClick(item);
|
|
2095
|
-
},
|
|
2096
|
-
[onRowClick]
|
|
2097
|
-
);
|
|
2098
|
-
const handleCardKeyDown = React6__namespace.useCallback(
|
|
2099
|
-
(item) => (e) => {
|
|
2100
|
-
if (onRowClick && (e.key === "Enter" || e.key === " ")) {
|
|
2101
|
-
e.preventDefault();
|
|
2102
|
-
handleItemClick(item, e);
|
|
2103
|
-
}
|
|
2104
|
-
},
|
|
2105
|
-
[handleItemClick, onRowClick]
|
|
2106
|
-
);
|
|
2107
|
-
if (data.length === 0) {
|
|
2108
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2109
|
-
"div",
|
|
2110
|
-
{
|
|
2111
|
-
ref,
|
|
2112
|
-
className: cn(
|
|
2113
|
-
"p-8 text-center",
|
|
2114
|
-
className
|
|
2115
|
-
),
|
|
2116
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessage })
|
|
2117
|
-
}
|
|
2118
|
-
);
|
|
2119
|
-
}
|
|
2120
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("w-full", className), children: [
|
|
2121
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4 md:hidden", children: data.map((item) => {
|
|
2122
|
-
const primaryValue = primaryColumn ? String(item[primaryColumn.key]) : String(item.id);
|
|
2123
|
-
if (renderMobileCard) {
|
|
2124
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2125
|
-
"div",
|
|
2126
|
-
{
|
|
2127
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2128
|
-
role: onRowClick ? "button" : void 0,
|
|
2129
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2130
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2131
|
-
className: onRowClick ? "cursor-pointer" : void 0,
|
|
2132
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2133
|
-
children: renderMobileCard(item, visibleMobileColumns)
|
|
2134
|
-
},
|
|
2135
|
-
item.id
|
|
2136
|
-
);
|
|
2137
|
-
}
|
|
2138
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2139
|
-
Card,
|
|
2140
|
-
{
|
|
2141
|
-
variant: onRowClick ? "interactive" : "default",
|
|
2142
|
-
className: cn(
|
|
2143
|
-
onRowClick && "cursor-pointer",
|
|
2144
|
-
"transition-all duration-150"
|
|
2145
|
-
),
|
|
2146
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2147
|
-
role: onRowClick ? "button" : void 0,
|
|
2148
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2149
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2150
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2151
|
-
children: [
|
|
2152
|
-
primaryColumn ? /* @__PURE__ */ jsxRuntime.jsx(CardHeader, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "text-base", children: primaryColumn.render ? primaryColumn.render(item[primaryColumn.key], item) : String(item[primaryColumn.key]) }) }) : null,
|
|
2153
|
-
secondaryColumns.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(CardContent, { className: "pb-3", children: /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "flex flex-col gap-2", children: secondaryColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2154
|
-
"div",
|
|
2155
|
-
{
|
|
2156
|
-
className: "flex items-start justify-between gap-4 text-sm",
|
|
2157
|
-
children: [
|
|
2158
|
-
!column.hideLabelOnMobile && /* @__PURE__ */ jsxRuntime.jsxs("dt", { className: "text-muted-foreground min-w-[80px] shrink-0", children: [
|
|
2159
|
-
column.label,
|
|
2160
|
-
":"
|
|
2161
|
-
] }),
|
|
2162
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2163
|
-
"dd",
|
|
2164
|
-
{
|
|
2165
|
-
className: cn(
|
|
2166
|
-
"font-medium flex-1",
|
|
2167
|
-
!column.hideLabelOnMobile ? "text-right" : "text-left"
|
|
2168
|
-
),
|
|
2169
|
-
children: column.render ? column.render(item[column.key], item) : String(item[column.key])
|
|
2170
|
-
}
|
|
2171
|
-
)
|
|
2172
|
-
]
|
|
2173
|
-
},
|
|
2174
|
-
String(column.key)
|
|
2175
|
-
)) }) })
|
|
2176
|
-
]
|
|
2177
|
-
},
|
|
2178
|
-
item.id
|
|
2179
|
-
);
|
|
2180
|
-
}) }),
|
|
2181
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2182
|
-
"div",
|
|
2183
|
-
{
|
|
2184
|
-
className: cn(
|
|
2185
|
-
"table-wrapper hidden md:block overflow-hidden rounded-none border border-primary/5",
|
|
2186
|
-
tableWrapperClassName
|
|
2187
|
-
),
|
|
2188
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(Table, { "aria-label": ariaLabel || "Data table", children: [
|
|
2189
|
-
/* @__PURE__ */ jsxRuntime.jsx(TableHeader, { className: "bg-[hsl(var(--table-header-bg))]", children: /* @__PURE__ */ jsxRuntime.jsx(TableRow, { children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2190
|
-
TableHead,
|
|
2191
|
-
{
|
|
2192
|
-
className: column.headerClassName,
|
|
2193
|
-
children: column.label
|
|
2194
|
-
},
|
|
2195
|
-
String(column.key)
|
|
2196
|
-
)) }) }),
|
|
2197
|
-
/* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: data.map((item) => {
|
|
2198
|
-
const primaryValue = primaryColumn ? String(item[primaryColumn.key]) : String(item.id);
|
|
2199
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2200
|
-
TableRow,
|
|
2201
|
-
{
|
|
2202
|
-
className: cn(
|
|
2203
|
-
"hover-unified-table-row",
|
|
2204
|
-
onRowClick && "cursor-pointer"
|
|
2205
|
-
),
|
|
2206
|
-
onClick: (e) => handleItemClick(item, e),
|
|
2207
|
-
role: onRowClick ? "button" : void 0,
|
|
2208
|
-
tabIndex: onRowClick ? 0 : void 0,
|
|
2209
|
-
onKeyDown: onRowClick ? handleCardKeyDown(item) : void 0,
|
|
2210
|
-
"aria-label": onRowClick ? `View details for ${primaryValue}` : void 0,
|
|
2211
|
-
children: columns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2212
|
-
TableCell,
|
|
2213
|
-
{
|
|
2214
|
-
className: column.cellClassName,
|
|
2215
|
-
children: column.render ? column.render(item[column.key], item) : String(item[column.key])
|
|
2216
|
-
},
|
|
2217
|
-
String(column.key)
|
|
2218
|
-
))
|
|
2219
|
-
},
|
|
2220
|
-
item.id
|
|
2221
|
-
);
|
|
2222
|
-
}) })
|
|
2223
|
-
] })
|
|
2224
|
-
}
|
|
2225
|
-
),
|
|
2226
|
-
footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-footer border-t border-primary/5 bg-[hsl(var(--table-header-bg))]", children: footer })
|
|
2227
|
-
] });
|
|
2228
|
-
}
|
|
2229
|
-
var ResponsiveTable = React6__namespace.forwardRef(ResponsiveTableInner);
|
|
2230
1892
|
|
|
2231
1893
|
// src/tailwind-preset.ts
|
|
2232
1894
|
var uiPreset = {
|
|
2233
1895
|
theme: {
|
|
2234
1896
|
extend: {
|
|
2235
1897
|
colors: {
|
|
2236
|
-
border: "
|
|
2237
|
-
input: "
|
|
2238
|
-
ring: "
|
|
2239
|
-
background: "
|
|
2240
|
-
foreground: "
|
|
1898
|
+
border: "var(--nx-border)",
|
|
1899
|
+
input: "var(--nx-input)",
|
|
1900
|
+
ring: "var(--nx-ring)",
|
|
1901
|
+
background: "var(--nx-background)",
|
|
1902
|
+
foreground: "var(--nx-foreground)",
|
|
2241
1903
|
primary: {
|
|
2242
|
-
DEFAULT: "
|
|
2243
|
-
foreground: "
|
|
1904
|
+
DEFAULT: "var(--nx-primary)",
|
|
1905
|
+
foreground: "var(--nx-primary-foreground)"
|
|
2244
1906
|
},
|
|
2245
1907
|
secondary: {
|
|
2246
|
-
DEFAULT: "
|
|
2247
|
-
foreground: "
|
|
1908
|
+
DEFAULT: "var(--nx-secondary)",
|
|
1909
|
+
foreground: "var(--nx-secondary-foreground)"
|
|
2248
1910
|
},
|
|
2249
1911
|
destructive: {
|
|
2250
|
-
DEFAULT: "
|
|
2251
|
-
foreground: "
|
|
1912
|
+
DEFAULT: "var(--nx-destructive)",
|
|
1913
|
+
foreground: "var(--nx-destructive-foreground)"
|
|
2252
1914
|
},
|
|
2253
1915
|
success: {
|
|
2254
|
-
DEFAULT: "
|
|
2255
|
-
foreground: "
|
|
1916
|
+
DEFAULT: "var(--nx-success)",
|
|
1917
|
+
foreground: "var(--nx-success-foreground)"
|
|
2256
1918
|
},
|
|
2257
1919
|
warning: {
|
|
2258
|
-
DEFAULT: "
|
|
2259
|
-
foreground: "
|
|
1920
|
+
DEFAULT: "var(--nx-warning)",
|
|
1921
|
+
foreground: "var(--nx-warning-foreground)"
|
|
2260
1922
|
},
|
|
2261
1923
|
muted: {
|
|
2262
|
-
DEFAULT: "
|
|
2263
|
-
foreground: "
|
|
1924
|
+
DEFAULT: "var(--nx-muted)",
|
|
1925
|
+
foreground: "var(--nx-muted-foreground)"
|
|
2264
1926
|
},
|
|
2265
1927
|
accent: {
|
|
2266
|
-
DEFAULT: "
|
|
2267
|
-
foreground: "
|
|
1928
|
+
DEFAULT: "var(--nx-accent)",
|
|
1929
|
+
foreground: "var(--nx-accent-foreground)"
|
|
2268
1930
|
},
|
|
2269
1931
|
popover: {
|
|
2270
|
-
DEFAULT: "
|
|
2271
|
-
foreground: "
|
|
1932
|
+
DEFAULT: "var(--nx-popover)",
|
|
1933
|
+
foreground: "var(--nx-popover-foreground)"
|
|
2272
1934
|
},
|
|
2273
1935
|
card: {
|
|
2274
|
-
DEFAULT: "
|
|
2275
|
-
foreground: "
|
|
1936
|
+
DEFAULT: "var(--nx-card)",
|
|
1937
|
+
foreground: "var(--nx-card-foreground)"
|
|
2276
1938
|
}
|
|
2277
1939
|
},
|
|
2278
1940
|
borderRadius: {
|
|
@@ -2382,7 +2044,6 @@ exports.PortalProvider = PortalProvider;
|
|
|
2382
2044
|
exports.Progress = Progress;
|
|
2383
2045
|
exports.RadioGroup = RadioGroup;
|
|
2384
2046
|
exports.RadioGroupItem = RadioGroupItem;
|
|
2385
|
-
exports.ResponsiveTable = ResponsiveTable;
|
|
2386
2047
|
exports.Select = Select;
|
|
2387
2048
|
exports.SelectContent = SelectContent;
|
|
2388
2049
|
exports.SelectGroup = SelectGroup;
|
|
@@ -2417,7 +2078,6 @@ exports.TableFooter = TableFooter;
|
|
|
2417
2078
|
exports.TableHead = TableHead;
|
|
2418
2079
|
exports.TableHeader = TableHeader;
|
|
2419
2080
|
exports.TableLoading = TableLoading;
|
|
2420
|
-
exports.TablePagination = TablePagination;
|
|
2421
2081
|
exports.TableRow = TableRow;
|
|
2422
2082
|
exports.TableSearch = TableSearch;
|
|
2423
2083
|
exports.TableSkeleton = TableSkeleton;
|