@nextlyhq/ui 0.0.2-alpha.41 → 0.0.2-alpha.43
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/dist/index.cjs +82 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -15
- package/dist/index.d.ts +26 -15
- package/dist/index.mjs +82 -46
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.scoped.css +1 -1
- package/dist/theme.css +137 -33
- package/docs/plugin-ui-authoring.md +55 -5
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -192,7 +192,7 @@ function cn(...inputs) {
|
|
|
192
192
|
// src/components/button.tsx
|
|
193
193
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
194
194
|
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
195
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-
|
|
195
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium cursor-pointer transition-all duration-150 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.98] [&_svg]:text-current",
|
|
196
196
|
{
|
|
197
197
|
variants: {
|
|
198
198
|
variant: {
|
|
@@ -203,8 +203,12 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
203
203
|
// Hover darkens to a deeper shade instead of opacity-90, which would
|
|
204
204
|
// composite the fill toward the page and drop white text under 4.5:1.
|
|
205
205
|
destructive: "bg-destructive-solid text-destructive-foreground border border-transparent hover:bg-destructive-700",
|
|
206
|
-
// border-border
|
|
207
|
-
//
|
|
206
|
+
// border-border is the decorative separator token, and it is the right
|
|
207
|
+
// one here: a button is identified by its label and fill, so its edge
|
|
208
|
+
// carries no meaning on its own and is not held to the 3:1 minimum that
|
|
209
|
+
// border-input meets for controls identified by their boundary. It is
|
|
210
|
+
// still used in preference to a faint primary alpha, which reads as a
|
|
211
|
+
// tint of the brand colour rather than as an edge.
|
|
208
212
|
outline: "border border-border text-foreground hover-unified bg-background",
|
|
209
213
|
secondary: "bg-background border border-border text-foreground hover:bg-primary/5",
|
|
210
214
|
ghost: "text-foreground border border-transparent hover-unified",
|
|
@@ -212,7 +216,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
|
212
216
|
},
|
|
213
217
|
size: {
|
|
214
218
|
default: "h-[var(--nx-control-height)] px-6 py-2",
|
|
215
|
-
sm: "h-[var(--nx-control-height-md)] px-4 text-
|
|
219
|
+
sm: "h-[var(--nx-control-height-md)] px-4 text-sm",
|
|
216
220
|
md: "h-[var(--nx-control-height)] px-6 text-sm",
|
|
217
221
|
lg: "h-[var(--nx-control-height-lg)] px-8 text-base",
|
|
218
222
|
icon: "h-[var(--nx-control-height)] w-[var(--nx-control-height)] p-0",
|
|
@@ -259,7 +263,7 @@ var import_class_variance_authority2 = require("class-variance-authority");
|
|
|
259
263
|
var import_react2 = require("react");
|
|
260
264
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
261
265
|
var inputVariants = (0, import_class_variance_authority2.cva)(
|
|
262
|
-
"file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-
|
|
266
|
+
"file:text-foreground placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary selection:text-primary-foreground w-full min-w-0 rounded-md 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!",
|
|
263
267
|
{
|
|
264
268
|
variants: {
|
|
265
269
|
size: {
|
|
@@ -300,7 +304,7 @@ var Textarea = (0, import_react3.forwardRef)(({ className, ...props }, ref) => {
|
|
|
300
304
|
className: cn(
|
|
301
305
|
// hover:border-primary (full strength) keeps the hover boundary more
|
|
302
306
|
// visible than the resting border-input, not a fainter alpha of it.
|
|
303
|
-
"flex min-h-[80px] w-full rounded-
|
|
307
|
+
"flex min-h-[80px] w-full rounded-md 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 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-primary/5 resize-y",
|
|
304
308
|
"aria-invalid:border-destructive aria-invalid:focus:border-destructive!",
|
|
305
309
|
className
|
|
306
310
|
),
|
|
@@ -369,7 +373,7 @@ var TooltipContent = (0, import_react5.forwardRef)(({ className, sideOffset = 4,
|
|
|
369
373
|
sideOffset,
|
|
370
374
|
"data-slot": "tooltip-content",
|
|
371
375
|
className: cn(
|
|
372
|
-
"z-50 overflow-hidden rounded-
|
|
376
|
+
"z-50 overflow-hidden rounded-lg 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",
|
|
373
377
|
className
|
|
374
378
|
),
|
|
375
379
|
...props
|
|
@@ -414,7 +418,7 @@ var FormLabelWithTooltip = React2.forwardRef(
|
|
|
414
418
|
{
|
|
415
419
|
side: "right",
|
|
416
420
|
className: cn(
|
|
417
|
-
"max-w-[250px] text-
|
|
421
|
+
"max-w-[250px] text-xs break-words relative z-[100] shadow-md border border-border bg-primary text-primary-foreground px-3 py-2 rounded-lg",
|
|
418
422
|
tooltipClassName
|
|
419
423
|
),
|
|
420
424
|
children: description
|
|
@@ -430,7 +434,7 @@ FormLabelWithTooltip.displayName = "FormLabelWithTooltip";
|
|
|
430
434
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
431
435
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
432
436
|
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
433
|
-
"inline-flex items-center rounded-
|
|
437
|
+
"inline-flex items-center rounded-sm px-2.5 py-0.5 h-[22px] text-xs font-medium transition-colors",
|
|
434
438
|
{
|
|
435
439
|
variants: {
|
|
436
440
|
variant: {
|
|
@@ -465,7 +469,7 @@ var import_class_variance_authority4 = require("class-variance-authority");
|
|
|
465
469
|
var import_react6 = require("react");
|
|
466
470
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
467
471
|
var cardVariants = (0, import_class_variance_authority4.cva)(
|
|
468
|
-
"bg-card text-foreground rounded-
|
|
472
|
+
"bg-card text-foreground rounded-lg border border-border transition-all duration-200",
|
|
469
473
|
{
|
|
470
474
|
variants: {
|
|
471
475
|
variant: {
|
|
@@ -501,7 +505,14 @@ var CardHeader = (0, import_react6.forwardRef)(
|
|
|
501
505
|
ref,
|
|
502
506
|
"data-slot": "card-header",
|
|
503
507
|
className: cn(
|
|
504
|
-
|
|
508
|
+
// Mirrors CardFooter: a header that carries its own tint runs the full
|
|
509
|
+
// width of the card, so at a nonzero --radius it would paint square
|
|
510
|
+
// across the card's curved top corners. `inherit` takes the parent's
|
|
511
|
+
// computed radius rather than restating a step. It only helps when the
|
|
512
|
+
// header is a direct child of the card; a header nested inside another
|
|
513
|
+
// wrapper inherits that wrapper's radius instead, and such a card needs
|
|
514
|
+
// `overflow-hidden` to clip the fill.
|
|
515
|
+
"flex flex-col rounded-t-[inherit] p-4",
|
|
505
516
|
!noBorder && "border-b border-border",
|
|
506
517
|
className
|
|
507
518
|
),
|
|
@@ -575,7 +586,13 @@ var CardFooter = (0, import_react6.forwardRef)(
|
|
|
575
586
|
ref,
|
|
576
587
|
"data-slot": "card-footer",
|
|
577
588
|
className: cn(
|
|
578
|
-
|
|
589
|
+
// The footer's tint runs the full width of the card, so at a nonzero
|
|
590
|
+
// --radius it would paint square across the card's curved bottom
|
|
591
|
+
// corners. `inherit` takes the card's own computed radius rather than
|
|
592
|
+
// restating a step, so a card whose radius is overridden stays
|
|
593
|
+
// matched, and it can never disagree with the card at any --radius,
|
|
594
|
+
// including the shipped 0 where `rounded-lg` is 0.
|
|
595
|
+
"flex items-center px-6 py-4 border-t border-border bg-primary/5 rounded-b-[inherit]",
|
|
579
596
|
className
|
|
580
597
|
),
|
|
581
598
|
...props
|
|
@@ -644,7 +661,7 @@ var import_class_variance_authority5 = require("class-variance-authority");
|
|
|
644
661
|
var import_react8 = require("react");
|
|
645
662
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
646
663
|
var alertVariants = (0, import_class_variance_authority5.cva)(
|
|
647
|
-
"relative flex items-start gap-3 rounded-
|
|
664
|
+
"relative flex items-start gap-3 rounded-md border border-border p-4 text-sm transition-colors duration-150",
|
|
648
665
|
{
|
|
649
666
|
variants: {
|
|
650
667
|
variant: {
|
|
@@ -748,7 +765,7 @@ var Skeleton = React3.forwardRef(
|
|
|
748
765
|
"data-slot": "skeleton",
|
|
749
766
|
"aria-hidden": "true",
|
|
750
767
|
className: cn(
|
|
751
|
-
"bg-primary/5 animate-pulse rounded-
|
|
768
|
+
"bg-primary/5 animate-pulse rounded-md motion-reduce:animate-none",
|
|
752
769
|
className
|
|
753
770
|
),
|
|
754
771
|
...props
|
|
@@ -795,7 +812,7 @@ var Progress = React4.forwardRef(
|
|
|
795
812
|
"aria-valuemax": max,
|
|
796
813
|
"aria-label": ariaLabel || `Progress: ${Math.round(percentage)}%`,
|
|
797
814
|
className: cn(
|
|
798
|
-
"relative h-2 w-full overflow-hidden rounded-
|
|
815
|
+
"relative h-2 w-full overflow-hidden rounded-full bg-accent",
|
|
799
816
|
className
|
|
800
817
|
),
|
|
801
818
|
...props,
|
|
@@ -828,7 +845,7 @@ var Checkbox = (0, import_react9.forwardRef)(({ className, indeterminate, ...pro
|
|
|
828
845
|
className: cn(
|
|
829
846
|
// Resting border uses border-input (a visible 3:1 boundary); the checked
|
|
830
847
|
// state switches to border-primary below, keeping the two states distinct.
|
|
831
|
-
"peer relative h-4 w-4 shrink-0 rounded-
|
|
848
|
+
"peer relative h-4 w-4 shrink-0 rounded-sm border border-input 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",
|
|
832
849
|
className
|
|
833
850
|
),
|
|
834
851
|
...props,
|
|
@@ -870,11 +887,15 @@ var RadioGroupItem = (0, import_react10.forwardRef)(({ className, ...props }, re
|
|
|
870
887
|
// (~5% opacity, effectively invisible); hover strengthens above the resting state.
|
|
871
888
|
// Resting border uses border-input (a visible 3:1 boundary); the checked
|
|
872
889
|
// state switches to border-primary below, keeping the two states distinct.
|
|
873
|
-
|
|
890
|
+
// rounded-full is fixed rather than derived from --radius: the circle is
|
|
891
|
+
// what tells the user only one option can be chosen. The thick checked
|
|
892
|
+
// border leaves a background-coloured core, and because the border's
|
|
893
|
+
// inner edge is curved too that core reads as a round dot.
|
|
894
|
+
"peer h-4 w-4 shrink-0 rounded-full border border-input 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]",
|
|
874
895
|
className
|
|
875
896
|
),
|
|
876
897
|
...props,
|
|
877
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioGroupPrimitive.Indicator, {})
|
|
898
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(RadioGroupPrimitive.Indicator, { className: "block size-full rounded-full" })
|
|
878
899
|
}
|
|
879
900
|
);
|
|
880
901
|
});
|
|
@@ -889,7 +910,7 @@ function Switch({ className, ...props }) {
|
|
|
889
910
|
{
|
|
890
911
|
"data-slot": "switch",
|
|
891
912
|
className: cn(
|
|
892
|
-
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-
|
|
913
|
+
"peer inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full 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",
|
|
893
914
|
"data-[state=checked]:bg-primary data-[state=checked]:border-primary!",
|
|
894
915
|
"data-[state=unchecked]:bg-input data-[state=unchecked]:border-border dark:data-[state=unchecked]:bg-input/80",
|
|
895
916
|
className
|
|
@@ -900,7 +921,7 @@ function Switch({ className, ...props }) {
|
|
|
900
921
|
{
|
|
901
922
|
"data-slot": "switch-thumb",
|
|
902
923
|
className: cn(
|
|
903
|
-
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-
|
|
924
|
+
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
|
|
904
925
|
)
|
|
905
926
|
}
|
|
906
927
|
)
|
|
@@ -971,7 +992,7 @@ var import_class_variance_authority7 = require("class-variance-authority");
|
|
|
971
992
|
var import_react12 = require("react");
|
|
972
993
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
973
994
|
var avatarVariants = (0, import_class_variance_authority7.cva)(
|
|
974
|
-
"relative inline-flex shrink-0 overflow-hidden rounded-
|
|
995
|
+
"relative inline-flex shrink-0 overflow-hidden rounded-full items-center justify-center bg-primary/5 text-muted-foreground",
|
|
975
996
|
{
|
|
976
997
|
variants: {
|
|
977
998
|
size: {
|
|
@@ -1038,7 +1059,7 @@ var AvatarFallback = (0, import_react12.forwardRef)(
|
|
|
1038
1059
|
ref,
|
|
1039
1060
|
"data-slot": "avatar-fallback",
|
|
1040
1061
|
className: cn(
|
|
1041
|
-
"bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-
|
|
1062
|
+
"bg-primary/5 text-muted-foreground flex size-full items-center justify-center rounded-full font-medium",
|
|
1042
1063
|
textSize,
|
|
1043
1064
|
className
|
|
1044
1065
|
),
|
|
@@ -1062,6 +1083,7 @@ var TabsList = (0, import_react13.forwardRef)(
|
|
|
1062
1083
|
ref,
|
|
1063
1084
|
"data-slot": "tabs-list",
|
|
1064
1085
|
className: cn(
|
|
1086
|
+
// Square corners: underline tabs, so the list never draws a rounded surface.
|
|
1065
1087
|
"inline-flex h-10 items-center justify-center gap-1 rounded-none p-0 text-muted-foreground",
|
|
1066
1088
|
className
|
|
1067
1089
|
),
|
|
@@ -1077,6 +1099,8 @@ var TabsTrigger = (0, import_react13.forwardRef)(
|
|
|
1077
1099
|
ref,
|
|
1078
1100
|
"data-slot": "tabs-trigger",
|
|
1079
1101
|
className: cn(
|
|
1102
|
+
// Square corners: the active state is a 2px bottom border that has to
|
|
1103
|
+
// run the full width of the trigger.
|
|
1080
1104
|
"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 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1081
1105
|
className
|
|
1082
1106
|
),
|
|
@@ -1118,7 +1142,7 @@ var PopoverContent = React5.forwardRef(({ className, align = "center", sideOffse
|
|
|
1118
1142
|
sideOffset,
|
|
1119
1143
|
"data-slot": "popover-content",
|
|
1120
1144
|
className: cn(
|
|
1121
|
-
"z-[100] w-72 rounded-
|
|
1145
|
+
"z-[100] w-72 rounded-lg 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]",
|
|
1122
1146
|
className
|
|
1123
1147
|
),
|
|
1124
1148
|
...props
|
|
@@ -1143,6 +1167,9 @@ var DialogOverlay = (0, import_react14.forwardRef)(({ className, ...props }, ref
|
|
|
1143
1167
|
ref,
|
|
1144
1168
|
"data-slot": "dialog-overlay",
|
|
1145
1169
|
className: cn(
|
|
1170
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1171
|
+
// rather than a surface token. Painting it from `background` would
|
|
1172
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1146
1173
|
"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1147
1174
|
className
|
|
1148
1175
|
),
|
|
@@ -1174,7 +1201,7 @@ var DialogContent = (0, import_react14.forwardRef)(({ className, children, size,
|
|
|
1174
1201
|
ref,
|
|
1175
1202
|
"data-slot": "dialog-content",
|
|
1176
1203
|
className: cn(
|
|
1177
|
-
"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-
|
|
1204
|
+
"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-lg 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%]",
|
|
1178
1205
|
dialogContentVariants({ size }),
|
|
1179
1206
|
className
|
|
1180
1207
|
),
|
|
@@ -1185,7 +1212,7 @@ var DialogContent = (0, import_react14.forwardRef)(({ className, children, size,
|
|
|
1185
1212
|
DialogPrimitive.Close,
|
|
1186
1213
|
{
|
|
1187
1214
|
"data-slot": "dialog-close",
|
|
1188
|
-
className: "absolute right-4 top-4 rounded-
|
|
1215
|
+
className: "absolute right-4 top-4 rounded-md p-1 text-muted-foreground cursor-pointer transition-colors duration-150 hover-unified focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed",
|
|
1189
1216
|
children: [
|
|
1190
1217
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react4.X, { className: "h-4 w-4" }),
|
|
1191
1218
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "sr-only", children: "Close" })
|
|
@@ -1260,6 +1287,9 @@ var AlertDialogOverlay = (0, import_react15.forwardRef)(({ className, ...props }
|
|
|
1260
1287
|
{
|
|
1261
1288
|
ref,
|
|
1262
1289
|
className: cn(
|
|
1290
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1291
|
+
// rather than a surface token. Painting it from `background` would
|
|
1292
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1263
1293
|
"fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-opacity duration-150 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
1264
1294
|
className
|
|
1265
1295
|
),
|
|
@@ -1276,7 +1306,7 @@ var AlertDialogContent = (0, import_react15.forwardRef)(({ className, ...props }
|
|
|
1276
1306
|
{
|
|
1277
1307
|
ref,
|
|
1278
1308
|
className: cn(
|
|
1279
|
-
"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-
|
|
1309
|
+
"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-lg 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%]",
|
|
1280
1310
|
className
|
|
1281
1311
|
),
|
|
1282
1312
|
...props
|
|
@@ -1376,7 +1406,7 @@ var DropdownMenuSubTrigger = React6.forwardRef(({ className, inset, children, ..
|
|
|
1376
1406
|
{
|
|
1377
1407
|
ref,
|
|
1378
1408
|
className: cn(
|
|
1379
|
-
"flex select-none items-center gap-2 rounded-
|
|
1409
|
+
"flex select-none items-center gap-2 rounded-sm 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",
|
|
1380
1410
|
menuItemBase,
|
|
1381
1411
|
inset && "pl-8",
|
|
1382
1412
|
className
|
|
@@ -1394,7 +1424,7 @@ var DropdownMenuSubContent = React6.forwardRef(({ className, ...props }, ref) =>
|
|
|
1394
1424
|
{
|
|
1395
1425
|
ref,
|
|
1396
1426
|
className: cn(
|
|
1397
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-
|
|
1427
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-lg 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]",
|
|
1398
1428
|
className
|
|
1399
1429
|
),
|
|
1400
1430
|
...props
|
|
@@ -1409,7 +1439,7 @@ var DropdownMenuContent = React6.forwardRef(({ className, sideOffset = 4, ...pro
|
|
|
1409
1439
|
ref,
|
|
1410
1440
|
sideOffset,
|
|
1411
1441
|
className: cn(
|
|
1412
|
-
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-
|
|
1442
|
+
"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-lg 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]",
|
|
1413
1443
|
className
|
|
1414
1444
|
),
|
|
1415
1445
|
...props
|
|
@@ -1422,7 +1452,7 @@ var DropdownMenuItem = React6.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
1422
1452
|
{
|
|
1423
1453
|
ref,
|
|
1424
1454
|
className: cn(
|
|
1425
|
-
"relative flex select-none items-center gap-2 rounded-
|
|
1455
|
+
"relative flex select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1426
1456
|
menuItemBase,
|
|
1427
1457
|
inset && "pl-8",
|
|
1428
1458
|
className
|
|
@@ -1436,7 +1466,7 @@ var DropdownMenuCheckboxItem = React6.forwardRef(({ className, children, checked
|
|
|
1436
1466
|
{
|
|
1437
1467
|
ref,
|
|
1438
1468
|
className: cn(
|
|
1439
|
-
"relative flex select-none items-center rounded-
|
|
1469
|
+
"relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1440
1470
|
menuItemBase,
|
|
1441
1471
|
className
|
|
1442
1472
|
),
|
|
@@ -1454,7 +1484,7 @@ var DropdownMenuRadioItem = React6.forwardRef(({ className, children, ...props }
|
|
|
1454
1484
|
{
|
|
1455
1485
|
ref,
|
|
1456
1486
|
className: cn(
|
|
1457
|
-
"relative flex select-none items-center rounded-
|
|
1487
|
+
"relative flex select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none",
|
|
1458
1488
|
menuItemBase,
|
|
1459
1489
|
className
|
|
1460
1490
|
),
|
|
@@ -1522,7 +1552,7 @@ function SelectValue({
|
|
|
1522
1552
|
var selectTriggerVariants = (0, import_class_variance_authority9.cva)(
|
|
1523
1553
|
// hover:border-primary (full strength) keeps the hover boundary more visible
|
|
1524
1554
|
// than the resting border-input, not a fainter alpha of it.
|
|
1525
|
-
"flex w-full items-center justify-between gap-2 rounded-
|
|
1555
|
+
"flex w-full items-center justify-between gap-2 rounded-md 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 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",
|
|
1526
1556
|
{
|
|
1527
1557
|
variants: {
|
|
1528
1558
|
size: {
|
|
@@ -1564,7 +1594,7 @@ function SelectContent({
|
|
|
1564
1594
|
{
|
|
1565
1595
|
"data-slot": "select-content",
|
|
1566
1596
|
className: cn(
|
|
1567
|
-
"bg-popover text-popover-foreground border border-border shadow-none rounded-
|
|
1597
|
+
"bg-popover text-popover-foreground border border-border shadow-none rounded-lg 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",
|
|
1568
1598
|
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",
|
|
1569
1599
|
className
|
|
1570
1600
|
),
|
|
@@ -1610,7 +1640,7 @@ function SelectItem({
|
|
|
1610
1640
|
{
|
|
1611
1641
|
"data-slot": "select-item",
|
|
1612
1642
|
className: cn(
|
|
1613
|
-
"relative flex w-full cursor-pointer items-center gap-2 rounded-
|
|
1643
|
+
"relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2 pr-8 pl-2 text-sm text-foreground outline-none select-none transition-colors hover-unified focus:bg-primary/5 focus:text-primary data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-4",
|
|
1614
1644
|
className
|
|
1615
1645
|
),
|
|
1616
1646
|
...props,
|
|
@@ -1682,6 +1712,9 @@ var SheetOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1682
1712
|
DialogPrimitive2.Overlay,
|
|
1683
1713
|
{
|
|
1684
1714
|
className: cn(
|
|
1715
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1716
|
+
// rather than a surface token. Painting it from `background` would
|
|
1717
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1685
1718
|
"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
|
|
1686
1719
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1687
1720
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
@@ -1784,7 +1817,7 @@ var Command = (0, import_react17.forwardRef)(
|
|
|
1784
1817
|
{
|
|
1785
1818
|
ref,
|
|
1786
1819
|
className: cn(
|
|
1787
|
-
"flex h-full w-full flex-col overflow-hidden rounded-
|
|
1820
|
+
"flex h-full w-full flex-col overflow-hidden rounded-lg bg-background text-foreground",
|
|
1788
1821
|
className
|
|
1789
1822
|
),
|
|
1790
1823
|
...props
|
|
@@ -1797,6 +1830,9 @@ var CommandDialogOverlay = (0, import_react17.forwardRef)(({ className, ...props
|
|
|
1797
1830
|
{
|
|
1798
1831
|
ref,
|
|
1799
1832
|
className: cn(
|
|
1833
|
+
// A modal scrim: a black wash is the point, so it stays a literal
|
|
1834
|
+
// rather than a surface token. Painting it from `background` would
|
|
1835
|
+
// make it a white veil in light mode and near-invisible in dark.
|
|
1800
1836
|
"fixed inset-0 z-[99] bg-black/80 backdrop-blur-sm",
|
|
1801
1837
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
1802
1838
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
@@ -1831,7 +1867,7 @@ var CommandDialog = ({ children, ...props }) => {
|
|
|
1831
1867
|
"m-4 sm:m-0",
|
|
1832
1868
|
// 16px margin on mobile, no margin on desktop
|
|
1833
1869
|
// Visual
|
|
1834
|
-
"overflow-hidden rounded-
|
|
1870
|
+
"overflow-hidden rounded-lg border border-border bg-background shadow-xl",
|
|
1835
1871
|
// Animation
|
|
1836
1872
|
"duration-200",
|
|
1837
1873
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
@@ -1937,7 +1973,7 @@ var CommandItem = (0, import_react17.forwardRef)(({ className, ...props }, ref)
|
|
|
1937
1973
|
// Spacing
|
|
1938
1974
|
"px-3 py-2.5",
|
|
1939
1975
|
// Visual
|
|
1940
|
-
"rounded-
|
|
1976
|
+
"rounded-sm text-base sm:text-sm outline-none",
|
|
1941
1977
|
// Transitions
|
|
1942
1978
|
"transition-all duration-200 ease-(--ease-premium)",
|
|
1943
1979
|
// Hover state - shared dashboard hover treatment
|
|
@@ -1966,7 +2002,7 @@ var CommandShortcut = (0, import_react17.forwardRef)(
|
|
|
1966
2002
|
"text-xs font-mono",
|
|
1967
2003
|
// Visual
|
|
1968
2004
|
"text-muted-foreground bg-primary/5",
|
|
1969
|
-
"border border-border rounded-
|
|
2005
|
+
"border border-border rounded-md",
|
|
1970
2006
|
// Spacing
|
|
1971
2007
|
"px-1.5 py-0.5",
|
|
1972
2008
|
className
|
|
@@ -2155,7 +2191,7 @@ function TableSearch({
|
|
|
2155
2191
|
value,
|
|
2156
2192
|
onChange: (e) => onChange(e.target.value),
|
|
2157
2193
|
"aria-busy": isLoading,
|
|
2158
|
-
className: "h-10 w-full rounded-
|
|
2194
|
+
className: "h-10 w-full rounded-md border border-input 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"
|
|
2159
2195
|
}
|
|
2160
2196
|
),
|
|
2161
2197
|
(value || isLoading) && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2", children: [
|
|
@@ -2165,7 +2201,7 @@ function TableSearch({
|
|
|
2165
2201
|
{
|
|
2166
2202
|
type: "button",
|
|
2167
2203
|
onClick: onClear,
|
|
2168
|
-
className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-
|
|
2204
|
+
className: "text-muted-foreground hover:text-foreground transition-colors p-0.5 rounded-md hover:bg-primary/5",
|
|
2169
2205
|
"aria-label": "Clear search",
|
|
2170
2206
|
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react10.X, { className: "w-3.5 h-3.5" })
|
|
2171
2207
|
}
|
|
@@ -2193,7 +2229,7 @@ function TableLoading() {
|
|
|
2193
2229
|
}
|
|
2194
2230
|
function TableEmpty({ message = "No records found" }) {
|
|
2195
2231
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "flex flex-col items-center justify-center gap-4 p-16 text-center text-muted-foreground", children: [
|
|
2196
|
-
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-
|
|
2232
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "flex h-12 w-12 items-center justify-center rounded-md bg-primary/5", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react11.FileQuestion, { className: "h-6 w-6" }) }),
|
|
2197
2233
|
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-sm font-medium", children: message })
|
|
2198
2234
|
] });
|
|
2199
2235
|
}
|
|
@@ -2209,9 +2245,9 @@ var TableSkeleton = ({
|
|
|
2209
2245
|
}) => {
|
|
2210
2246
|
const content = /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
|
|
2211
2247
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "border-0 rounded-none shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(Table, { children: [
|
|
2212
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-4 rounded-
|
|
2213
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-8 w-8 rounded-
|
|
2214
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "w-9 rounded-
|
|
2248
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { children: Array.from({ length: columns }).map((_, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableHead, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-4 rounded-sm" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[70%] max-w-[180px]" }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-[60%] max-w-[120px]" }) }, `skeleton-header-${colIdx}`)) }) }),
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableBody, { children: Array.from({ length: rowCount }).map((_, rowIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableRow, { className: "border-b border-border", children: Array.from({ length: columns }).map((_2, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(TableCell, { className: "py-3", children: colIdx === 0 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(GrayBar, { className: "h-4 w-4" }) : colIdx === columns - 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-8 w-8 rounded-md" }) }) : colIdx === 1 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
2250
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "w-9 rounded-md shrink-0" }),
|
|
2215
2251
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "space-y-1.5 flex-1", children: [
|
|
2216
2252
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-4 w-[120px]" }),
|
|
2217
2253
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Skeleton, { className: "h-3 w-[80px]" })
|
|
@@ -2239,7 +2275,7 @@ var TableSkeleton = ({
|
|
|
2239
2275
|
if (hideWrapper) {
|
|
2240
2276
|
return content;
|
|
2241
2277
|
}
|
|
2242
|
-
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-wrapper rounded-
|
|
2278
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "table-wrapper rounded-md border border-border bg-card overflow-hidden", children: content });
|
|
2243
2279
|
};
|
|
2244
2280
|
TableSkeleton.displayName = "TableSkeleton";
|
|
2245
2281
|
// Annotate the CommonJS export names for ESM import in node:
|