@contractspec/lib.ui-kit-web 3.7.6 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -88
- package/dist/browser/ui/accordion.js +4 -4
- package/dist/browser/ui/alert-dialog.js +9 -9
- package/dist/browser/ui/alert.js +4 -4
- package/dist/browser/ui/atoms/FilterSelect/FilterSelect.js +51 -51
- package/dist/browser/ui/atoms/FilterSelect/index.js +51 -51
- package/dist/browser/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
- package/dist/browser/ui/atoms/Pagination/Pagination.js +13 -13
- package/dist/browser/ui/atoms/Pagination/index.js +13 -13
- package/dist/browser/ui/atoms/SearchInput/SearchInput.js +8 -8
- package/dist/browser/ui/atoms/SearchInput/index.js +8 -8
- package/dist/browser/ui/avatar.js +1 -1
- package/dist/browser/ui/badge.js +3 -3
- package/dist/browser/ui/breadcrumb.js +4 -4
- package/dist/browser/ui/button.js +5 -5
- package/dist/browser/ui/calendar.js +21 -21
- package/dist/browser/ui/card.js +2 -2
- package/dist/browser/ui/carousel.js +6 -6
- package/dist/browser/ui/checkbox.js +2 -2
- package/dist/browser/ui/command.js +14 -14
- package/dist/browser/ui/confirm-dialog.js +9 -9
- package/dist/browser/ui/context-menu.js +10 -10
- package/dist/browser/ui/cta.js +5 -5
- package/dist/browser/ui/data-table.js +1005 -0
- package/dist/browser/ui/data-table.parts.js +463 -0
- package/dist/browser/ui/date-picker.js +26 -26
- package/dist/browser/ui/date-range-picker.js +24 -24
- package/dist/browser/ui/datetime-picker.js +29 -29
- package/dist/browser/ui/dialog.js +5 -5
- package/dist/browser/ui/drawer.js +5 -5
- package/dist/browser/ui/dropdown-menu.js +10 -10
- package/dist/browser/ui/empty-state.js +5 -5
- package/dist/browser/ui/empty.js +7 -7
- package/dist/browser/ui/field.js +12 -12
- package/dist/browser/ui/form.js +4 -4
- package/dist/browser/ui/hover-card.js +2 -2
- package/dist/browser/ui/input-group.js +16 -16
- package/dist/browser/ui/input-otp.js +4 -4
- package/dist/browser/ui/input.js +1 -1
- package/dist/browser/ui/label.js +2 -2
- package/dist/browser/ui/loading-button.js +8 -8
- package/dist/browser/ui/marketing/FeatureGrid.js +3 -3
- package/dist/browser/ui/marketing/Hero.js +7 -7
- package/dist/browser/ui/marketing/PricingTable.js +10 -10
- package/dist/browser/ui/menubar.js +12 -12
- package/dist/browser/ui/molecules/Autocomplete/index.js +26 -26
- package/dist/browser/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
- package/dist/browser/ui/molecules/SearchAndFilter/index.js +62 -62
- package/dist/browser/ui/molecules/SkeletonList.js +1 -1
- package/dist/browser/ui/nav-layout.js +22 -22
- package/dist/browser/ui/navigation-menu.js +7 -7
- package/dist/browser/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
- package/dist/browser/ui/organisms/ListPage/ListPage.js +84 -84
- package/dist/browser/ui/page-header.js +4 -4
- package/dist/browser/ui/pagination.js +6 -6
- package/dist/browser/ui/popover.js +2 -2
- package/dist/browser/ui/progress.js +3 -3
- package/dist/browser/ui/radio-group.js +3 -3
- package/dist/browser/ui/resizable.js +3 -3
- package/dist/browser/ui/scroll-area.js +4 -4
- package/dist/browser/ui/section.js +1 -1
- package/dist/browser/ui/select.js +6 -6
- package/dist/browser/ui/separator.js +2 -2
- package/dist/browser/ui/sheet.js +5 -5
- package/dist/browser/ui/sidebar.js +64 -64
- package/dist/browser/ui/skeleton.js +1 -1
- package/dist/browser/ui/slider.js +6 -6
- package/dist/browser/ui/stack.js +1 -1
- package/dist/browser/ui/stat-card-group.js +5 -5
- package/dist/browser/ui/stepper.js +2 -2
- package/dist/browser/ui/switch.js +3 -3
- package/dist/browser/ui/table.js +5 -5
- package/dist/browser/ui/tabs.js +3 -3
- package/dist/browser/ui/text.js +2 -2
- package/dist/browser/ui/textarea.js +1 -1
- package/dist/browser/ui/time-picker.js +10 -10
- package/dist/browser/ui/toast.js +5 -5
- package/dist/browser/ui/toaster.js +5 -5
- package/dist/browser/ui/toggle-group.js +7 -7
- package/dist/browser/ui/toggle.js +5 -5
- package/dist/browser/ui/tooltip.js +3 -3
- package/dist/browser/ui/typography.js +14 -14
- package/dist/browser/ui/usecases/UseCaseCard.js +8 -8
- package/dist/browser/ui/usecases/UserStoryCard.js +3 -3
- package/dist/browser/ui/visualization/Visualization.js +439 -0
- package/dist/browser/ui/visualization/Visualization.support.js +128 -0
- package/dist/browser/ui/visualization/index.js +10 -0
- package/dist/ui/accordion.d.ts +2 -2
- package/dist/ui/accordion.js +4 -4
- package/dist/ui/alert-dialog.d.ts +2 -2
- package/dist/ui/alert-dialog.js +9 -9
- package/dist/ui/alert.d.ts +2 -2
- package/dist/ui/alert.js +4 -4
- package/dist/ui/atoms/FilterSelect/FilterSelect.js +51 -51
- package/dist/ui/atoms/FilterSelect/index.d.ts +1 -1
- package/dist/ui/atoms/FilterSelect/index.js +51 -51
- package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
- package/dist/ui/atoms/LoadingSpinner/index.d.ts +1 -1
- package/dist/ui/atoms/Pagination/Pagination.js +13 -13
- package/dist/ui/atoms/Pagination/index.js +13 -13
- package/dist/ui/atoms/SearchInput/SearchInput.js +8 -8
- package/dist/ui/atoms/SearchInput/index.js +8 -8
- package/dist/ui/avatar.d.ts +2 -2
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/badge.js +3 -3
- package/dist/ui/breadcrumb.d.ts +1 -1
- package/dist/ui/breadcrumb.js +4 -4
- package/dist/ui/button.d.ts +1 -1
- package/dist/ui/button.js +5 -5
- package/dist/ui/calendar.js +21 -21
- package/dist/ui/card.d.ts +1 -1
- package/dist/ui/card.js +2 -2
- package/dist/ui/carousel.d.ts +2 -2
- package/dist/ui/carousel.js +6 -6
- package/dist/ui/checkbox.d.ts +1 -1
- package/dist/ui/checkbox.js +2 -2
- package/dist/ui/collapsible.d.ts +1 -1
- package/dist/ui/command.d.ts +2 -2
- package/dist/ui/command.js +14 -14
- package/dist/ui/confirm-dialog.js +9 -9
- package/dist/ui/context-menu.d.ts +2 -2
- package/dist/ui/context-menu.js +10 -10
- package/dist/ui/cta.js +5 -5
- package/dist/ui/data-table.d.ts +12 -0
- package/dist/ui/data-table.js +1000 -0
- package/dist/ui/data-table.parts.d.ts +14 -0
- package/dist/ui/data-table.parts.js +458 -0
- package/dist/ui/date-picker.js +26 -26
- package/dist/ui/date-range-picker.js +24 -24
- package/dist/ui/datetime-picker.js +29 -29
- package/dist/ui/dialog.d.ts +1 -1
- package/dist/ui/dialog.js +5 -5
- package/dist/ui/drawer.d.ts +1 -1
- package/dist/ui/drawer.js +5 -5
- package/dist/ui/dropdown-menu.d.ts +2 -2
- package/dist/ui/dropdown-menu.js +10 -10
- package/dist/ui/empty-state.d.ts +1 -1
- package/dist/ui/empty-state.js +5 -5
- package/dist/ui/empty.d.ts +2 -2
- package/dist/ui/empty.js +7 -7
- package/dist/ui/field.d.ts +2 -2
- package/dist/ui/field.js +12 -12
- package/dist/ui/form.d.ts +3 -3
- package/dist/ui/form.js +4 -4
- package/dist/ui/hover-card.d.ts +2 -2
- package/dist/ui/hover-card.js +2 -2
- package/dist/ui/input-group.d.ts +2 -2
- package/dist/ui/input-group.js +16 -16
- package/dist/ui/input-otp.d.ts +2 -2
- package/dist/ui/input-otp.js +4 -4
- package/dist/ui/input.js +1 -1
- package/dist/ui/label.d.ts +1 -1
- package/dist/ui/label.js +2 -2
- package/dist/ui/loading-button.js +8 -8
- package/dist/ui/map/index.d.ts +1 -1
- package/dist/ui/marketing/FeatureGrid.js +3 -3
- package/dist/ui/marketing/Hero.js +7 -7
- package/dist/ui/marketing/PricingTable.js +10 -10
- package/dist/ui/marketing/index.d.ts +1 -1
- package/dist/ui/menubar.d.ts +2 -2
- package/dist/ui/menubar.js +12 -12
- package/dist/ui/molecules/Autocomplete/index.js +26 -26
- package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
- package/dist/ui/molecules/SearchAndFilter/index.js +62 -62
- package/dist/ui/molecules/SkeletonList.js +1 -1
- package/dist/ui/nav-layout.d.ts +1 -1
- package/dist/ui/nav-layout.js +22 -22
- package/dist/ui/navigation-menu.d.ts +2 -2
- package/dist/ui/navigation-menu.js +7 -7
- package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
- package/dist/ui/organisms/ErrorBoundary/index.d.ts +1 -1
- package/dist/ui/organisms/ListPage/ListPage.js +84 -84
- package/dist/ui/organisms/ListPage/index.d.ts +1 -1
- package/dist/ui/organisms/ListPage/types.d.ts +1 -1
- package/dist/ui/page-header.d.ts +1 -1
- package/dist/ui/page-header.js +4 -4
- package/dist/ui/pagination.js +6 -6
- package/dist/ui/popover.d.ts +2 -2
- package/dist/ui/popover.js +2 -2
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.js +3 -3
- package/dist/ui/radio-group.d.ts +1 -1
- package/dist/ui/radio-group.js +3 -3
- package/dist/ui/resizable.d.ts +2 -2
- package/dist/ui/resizable.js +3 -3
- package/dist/ui/scroll-area.d.ts +1 -1
- package/dist/ui/scroll-area.js +4 -4
- package/dist/ui/section.d.ts +1 -1
- package/dist/ui/section.js +1 -1
- package/dist/ui/select.d.ts +1 -1
- package/dist/ui/select.js +6 -6
- package/dist/ui/separator.d.ts +1 -1
- package/dist/ui/separator.js +2 -2
- package/dist/ui/sheet.d.ts +2 -2
- package/dist/ui/sheet.js +5 -5
- package/dist/ui/sidebar.d.ts +1 -1
- package/dist/ui/sidebar.js +64 -64
- package/dist/ui/skeleton.js +1 -1
- package/dist/ui/slider.d.ts +1 -1
- package/dist/ui/slider.js +6 -6
- package/dist/ui/stack.d.ts +4 -4
- package/dist/ui/stack.js +1 -1
- package/dist/ui/stat-card-group.js +5 -5
- package/dist/ui/stepper.js +2 -2
- package/dist/ui/switch.d.ts +1 -1
- package/dist/ui/switch.js +3 -3
- package/dist/ui/table.d.ts +1 -1
- package/dist/ui/table.js +5 -5
- package/dist/ui/tabs.d.ts +2 -2
- package/dist/ui/tabs.js +3 -3
- package/dist/ui/text.js +2 -2
- package/dist/ui/textarea.js +1 -1
- package/dist/ui/time-picker.js +10 -10
- package/dist/ui/toast.d.ts +2 -2
- package/dist/ui/toast.js +5 -5
- package/dist/ui/toaster.js +5 -5
- package/dist/ui/toggle-group.d.ts +1 -1
- package/dist/ui/toggle-group.js +7 -7
- package/dist/ui/toggle.d.ts +1 -1
- package/dist/ui/toggle.js +5 -5
- package/dist/ui/tooltip.d.ts +2 -2
- package/dist/ui/tooltip.js +3 -3
- package/dist/ui/typography.js +14 -14
- package/dist/ui/use-toast.d.ts +1 -1
- package/dist/ui/usecases/UseCaseCard.js +8 -8
- package/dist/ui/usecases/UserStoryCard.js +3 -3
- package/dist/ui/visualization/Visualization.d.ts +9 -0
- package/dist/ui/visualization/Visualization.js +434 -0
- package/dist/ui/visualization/Visualization.support.d.ts +15 -0
- package/dist/ui/visualization/Visualization.support.js +123 -0
- package/dist/ui/visualization/index.d.ts +1 -0
- package/dist/ui/visualization/index.js +5 -0
- package/package.json +72 -9
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined")
|
|
5
|
+
return require.apply(this, arguments);
|
|
6
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// ui/button.tsx
|
|
10
|
+
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
11
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
12
|
+
import { cva } from "class-variance-authority";
|
|
13
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
14
|
+
var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
15
|
+
variants: {
|
|
16
|
+
variant: {
|
|
17
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
18
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
19
|
+
outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
20
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
21
|
+
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
22
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
23
|
+
},
|
|
24
|
+
size: {
|
|
25
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
26
|
+
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
27
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
28
|
+
icon: "size-9"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
variant: "default",
|
|
33
|
+
size: "default"
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
function Button({
|
|
37
|
+
className,
|
|
38
|
+
variant,
|
|
39
|
+
size,
|
|
40
|
+
asChild = false,
|
|
41
|
+
ref,
|
|
42
|
+
...props
|
|
43
|
+
}) {
|
|
44
|
+
if (asChild) {
|
|
45
|
+
return /* @__PURE__ */ jsxDEV(Slot, {
|
|
46
|
+
"data-slot": "button",
|
|
47
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
48
|
+
...props
|
|
49
|
+
}, undefined, false, undefined, this);
|
|
50
|
+
}
|
|
51
|
+
return /* @__PURE__ */ jsxDEV("button", {
|
|
52
|
+
ref,
|
|
53
|
+
"data-slot": "button",
|
|
54
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
55
|
+
...props
|
|
56
|
+
}, undefined, false, undefined, this);
|
|
57
|
+
}
|
|
58
|
+
// ui/checkbox.tsx
|
|
59
|
+
import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
|
|
60
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
61
|
+
import { CheckIcon } from "lucide-react";
|
|
62
|
+
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
63
|
+
"use client";
|
|
64
|
+
function Checkbox({
|
|
65
|
+
className,
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
return /* @__PURE__ */ jsxDEV2(CheckboxPrimitive.Root, {
|
|
69
|
+
"data-slot": "checkbox",
|
|
70
|
+
className: cn2("peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs outline-none transition-shadow focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:data-[state=checked]:bg-primary dark:aria-invalid:ring-destructive/40", className),
|
|
71
|
+
...props,
|
|
72
|
+
children: /* @__PURE__ */ jsxDEV2(CheckboxPrimitive.Indicator, {
|
|
73
|
+
"data-slot": "checkbox-indicator",
|
|
74
|
+
className: "grid place-content-center text-current transition-none",
|
|
75
|
+
children: /* @__PURE__ */ jsxDEV2(CheckIcon, {
|
|
76
|
+
className: "size-3.5"
|
|
77
|
+
}, undefined, false, undefined, this)
|
|
78
|
+
}, undefined, false, undefined, this)
|
|
79
|
+
}, undefined, false, undefined, this);
|
|
80
|
+
}
|
|
81
|
+
// ui/dropdown-menu.tsx
|
|
82
|
+
import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
|
|
83
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
84
|
+
import { CheckIcon as CheckIcon2, ChevronRightIcon, CircleIcon } from "lucide-react";
|
|
85
|
+
import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
|
|
86
|
+
"use client";
|
|
87
|
+
function DropdownMenu({
|
|
88
|
+
...props
|
|
89
|
+
}) {
|
|
90
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Root, {
|
|
91
|
+
"data-slot": "dropdown-menu",
|
|
92
|
+
...props
|
|
93
|
+
}, undefined, false, undefined, this);
|
|
94
|
+
}
|
|
95
|
+
function DropdownMenuPortal({
|
|
96
|
+
...props
|
|
97
|
+
}) {
|
|
98
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Portal, {
|
|
99
|
+
"data-slot": "dropdown-menu-portal",
|
|
100
|
+
...props
|
|
101
|
+
}, undefined, false, undefined, this);
|
|
102
|
+
}
|
|
103
|
+
function DropdownMenuTrigger({
|
|
104
|
+
...props
|
|
105
|
+
}) {
|
|
106
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Trigger, {
|
|
107
|
+
"data-slot": "dropdown-menu-trigger",
|
|
108
|
+
...props
|
|
109
|
+
}, undefined, false, undefined, this);
|
|
110
|
+
}
|
|
111
|
+
function DropdownMenuContent({
|
|
112
|
+
className,
|
|
113
|
+
sideOffset = 4,
|
|
114
|
+
...props
|
|
115
|
+
}) {
|
|
116
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Portal, {
|
|
117
|
+
children: /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Content, {
|
|
118
|
+
"data-slot": "dropdown-menu-content",
|
|
119
|
+
sideOffset,
|
|
120
|
+
className: cn3("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 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in", className),
|
|
121
|
+
...props
|
|
122
|
+
}, undefined, false, undefined, this)
|
|
123
|
+
}, undefined, false, undefined, this);
|
|
124
|
+
}
|
|
125
|
+
function DropdownMenuGroup({
|
|
126
|
+
...props
|
|
127
|
+
}) {
|
|
128
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Group, {
|
|
129
|
+
"data-slot": "dropdown-menu-group",
|
|
130
|
+
...props
|
|
131
|
+
}, undefined, false, undefined, this);
|
|
132
|
+
}
|
|
133
|
+
function DropdownMenuItem({
|
|
134
|
+
className,
|
|
135
|
+
inset,
|
|
136
|
+
variant = "default",
|
|
137
|
+
...props
|
|
138
|
+
}) {
|
|
139
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Item, {
|
|
140
|
+
"data-slot": "dropdown-menu-item",
|
|
141
|
+
"data-inset": inset,
|
|
142
|
+
"data-variant": variant,
|
|
143
|
+
className: cn3("relative flex cursor-default select-none items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-inset:pl-8 data-[variant=destructive]:text-destructive data-disabled:opacity-50 data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 data-[variant=destructive]:*:[svg]:text-destructive!", className),
|
|
144
|
+
...props
|
|
145
|
+
}, undefined, false, undefined, this);
|
|
146
|
+
}
|
|
147
|
+
function DropdownMenuCheckboxItem({
|
|
148
|
+
className,
|
|
149
|
+
children,
|
|
150
|
+
checked,
|
|
151
|
+
...props
|
|
152
|
+
}) {
|
|
153
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.CheckboxItem, {
|
|
154
|
+
"data-slot": "dropdown-menu-checkbox-item",
|
|
155
|
+
className: cn3("relative flex cursor-default select-none items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className),
|
|
156
|
+
checked,
|
|
157
|
+
...props,
|
|
158
|
+
children: [
|
|
159
|
+
/* @__PURE__ */ jsxDEV3("span", {
|
|
160
|
+
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
|
|
161
|
+
children: /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.ItemIndicator, {
|
|
162
|
+
children: /* @__PURE__ */ jsxDEV3(CheckIcon2, {
|
|
163
|
+
className: "size-4"
|
|
164
|
+
}, undefined, false, undefined, this)
|
|
165
|
+
}, undefined, false, undefined, this)
|
|
166
|
+
}, undefined, false, undefined, this),
|
|
167
|
+
children
|
|
168
|
+
]
|
|
169
|
+
}, undefined, true, undefined, this);
|
|
170
|
+
}
|
|
171
|
+
function DropdownMenuRadioGroup({
|
|
172
|
+
...props
|
|
173
|
+
}) {
|
|
174
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.RadioGroup, {
|
|
175
|
+
"data-slot": "dropdown-menu-radio-group",
|
|
176
|
+
...props
|
|
177
|
+
}, undefined, false, undefined, this);
|
|
178
|
+
}
|
|
179
|
+
function DropdownMenuRadioItem({
|
|
180
|
+
className,
|
|
181
|
+
children,
|
|
182
|
+
...props
|
|
183
|
+
}) {
|
|
184
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.RadioItem, {
|
|
185
|
+
"data-slot": "dropdown-menu-radio-item",
|
|
186
|
+
className: cn3("relative flex cursor-default select-none items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className),
|
|
187
|
+
...props,
|
|
188
|
+
children: [
|
|
189
|
+
/* @__PURE__ */ jsxDEV3("span", {
|
|
190
|
+
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
|
|
191
|
+
children: /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.ItemIndicator, {
|
|
192
|
+
children: /* @__PURE__ */ jsxDEV3(CircleIcon, {
|
|
193
|
+
className: "size-2 fill-current"
|
|
194
|
+
}, undefined, false, undefined, this)
|
|
195
|
+
}, undefined, false, undefined, this)
|
|
196
|
+
}, undefined, false, undefined, this),
|
|
197
|
+
children
|
|
198
|
+
]
|
|
199
|
+
}, undefined, true, undefined, this);
|
|
200
|
+
}
|
|
201
|
+
function DropdownMenuLabel({
|
|
202
|
+
className,
|
|
203
|
+
inset,
|
|
204
|
+
...props
|
|
205
|
+
}) {
|
|
206
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Label, {
|
|
207
|
+
"data-slot": "dropdown-menu-label",
|
|
208
|
+
"data-inset": inset,
|
|
209
|
+
className: cn3("px-2 py-1.5 font-medium text-sm data-inset:pl-8", className),
|
|
210
|
+
...props
|
|
211
|
+
}, undefined, false, undefined, this);
|
|
212
|
+
}
|
|
213
|
+
function DropdownMenuSeparator({
|
|
214
|
+
className,
|
|
215
|
+
...props
|
|
216
|
+
}) {
|
|
217
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Separator, {
|
|
218
|
+
"data-slot": "dropdown-menu-separator",
|
|
219
|
+
className: cn3("-mx-1 my-1 h-px bg-border", className),
|
|
220
|
+
...props
|
|
221
|
+
}, undefined, false, undefined, this);
|
|
222
|
+
}
|
|
223
|
+
function DropdownMenuShortcut({
|
|
224
|
+
className,
|
|
225
|
+
...props
|
|
226
|
+
}) {
|
|
227
|
+
return /* @__PURE__ */ jsxDEV3("span", {
|
|
228
|
+
"data-slot": "dropdown-menu-shortcut",
|
|
229
|
+
className: cn3("ml-auto text-muted-foreground text-xs tracking-widest", className),
|
|
230
|
+
...props
|
|
231
|
+
}, undefined, false, undefined, this);
|
|
232
|
+
}
|
|
233
|
+
function DropdownMenuSub({
|
|
234
|
+
...props
|
|
235
|
+
}) {
|
|
236
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.Sub, {
|
|
237
|
+
"data-slot": "dropdown-menu-sub",
|
|
238
|
+
...props
|
|
239
|
+
}, undefined, false, undefined, this);
|
|
240
|
+
}
|
|
241
|
+
function DropdownMenuSubTrigger({
|
|
242
|
+
className,
|
|
243
|
+
inset,
|
|
244
|
+
children,
|
|
245
|
+
...props
|
|
246
|
+
}) {
|
|
247
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.SubTrigger, {
|
|
248
|
+
"data-slot": "dropdown-menu-sub-trigger",
|
|
249
|
+
"data-inset": inset,
|
|
250
|
+
className: cn3("flex cursor-default select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-inset:pl-8 data-[state=open]:text-accent-foreground", className),
|
|
251
|
+
...props,
|
|
252
|
+
children: [
|
|
253
|
+
children,
|
|
254
|
+
/* @__PURE__ */ jsxDEV3(ChevronRightIcon, {
|
|
255
|
+
className: "ml-auto size-4"
|
|
256
|
+
}, undefined, false, undefined, this)
|
|
257
|
+
]
|
|
258
|
+
}, undefined, true, undefined, this);
|
|
259
|
+
}
|
|
260
|
+
function DropdownMenuSubContent({
|
|
261
|
+
className,
|
|
262
|
+
...props
|
|
263
|
+
}) {
|
|
264
|
+
return /* @__PURE__ */ jsxDEV3(DropdownMenuPrimitive.SubContent, {
|
|
265
|
+
"data-slot": "dropdown-menu-sub-content",
|
|
266
|
+
className: cn3("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 z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=closed]:animate-out data-[state=open]:animate-in", className),
|
|
267
|
+
...props
|
|
268
|
+
}, undefined, false, undefined, this);
|
|
269
|
+
}
|
|
270
|
+
// ui/data-table.parts.tsx
|
|
271
|
+
import {
|
|
272
|
+
ChevronDown,
|
|
273
|
+
ChevronRight,
|
|
274
|
+
Columns3,
|
|
275
|
+
GripVertical,
|
|
276
|
+
PanelLeft,
|
|
277
|
+
PanelRight,
|
|
278
|
+
PinOff
|
|
279
|
+
} from "lucide-react";
|
|
280
|
+
import * as React from "react";
|
|
281
|
+
import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
|
|
282
|
+
"use client";
|
|
283
|
+
function ColumnVisibilityMenu({
|
|
284
|
+
columns
|
|
285
|
+
}) {
|
|
286
|
+
const hideableColumns = columns.filter((column) => column.canHide);
|
|
287
|
+
if (!hideableColumns.length)
|
|
288
|
+
return null;
|
|
289
|
+
return /* @__PURE__ */ jsxDEV4(DropdownMenu, {
|
|
290
|
+
children: [
|
|
291
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuTrigger, {
|
|
292
|
+
asChild: true,
|
|
293
|
+
children: /* @__PURE__ */ jsxDEV4(Button, {
|
|
294
|
+
variant: "outline",
|
|
295
|
+
size: "sm",
|
|
296
|
+
children: [
|
|
297
|
+
/* @__PURE__ */ jsxDEV4(Columns3, {
|
|
298
|
+
className: "h-4 w-4"
|
|
299
|
+
}, undefined, false, undefined, this),
|
|
300
|
+
"Columns"
|
|
301
|
+
]
|
|
302
|
+
}, undefined, true, undefined, this)
|
|
303
|
+
}, undefined, false, undefined, this),
|
|
304
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuContent, {
|
|
305
|
+
align: "end",
|
|
306
|
+
children: [
|
|
307
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuLabel, {
|
|
308
|
+
children: "Visible Columns"
|
|
309
|
+
}, undefined, false, undefined, this),
|
|
310
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuSeparator, {}, undefined, false, undefined, this),
|
|
311
|
+
hideableColumns.map((column) => /* @__PURE__ */ jsxDEV4(DropdownMenuCheckboxItem, {
|
|
312
|
+
checked: column.visible,
|
|
313
|
+
onCheckedChange: (checked) => column.toggleVisibility?.(Boolean(checked)),
|
|
314
|
+
children: column.label
|
|
315
|
+
}, column.id, false, undefined, this))
|
|
316
|
+
]
|
|
317
|
+
}, undefined, true, undefined, this)
|
|
318
|
+
]
|
|
319
|
+
}, undefined, true, undefined, this);
|
|
320
|
+
}
|
|
321
|
+
function PinMenu({
|
|
322
|
+
column
|
|
323
|
+
}) {
|
|
324
|
+
if (!column.canPin)
|
|
325
|
+
return null;
|
|
326
|
+
return /* @__PURE__ */ jsxDEV4(DropdownMenu, {
|
|
327
|
+
children: [
|
|
328
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuTrigger, {
|
|
329
|
+
asChild: true,
|
|
330
|
+
children: /* @__PURE__ */ jsxDEV4(Button, {
|
|
331
|
+
variant: "ghost",
|
|
332
|
+
size: "icon",
|
|
333
|
+
className: "h-6 w-6",
|
|
334
|
+
onClick: (event) => event.stopPropagation(),
|
|
335
|
+
children: /* @__PURE__ */ jsxDEV4(Columns3, {
|
|
336
|
+
className: "h-3.5 w-3.5"
|
|
337
|
+
}, undefined, false, undefined, this)
|
|
338
|
+
}, undefined, false, undefined, this)
|
|
339
|
+
}, undefined, false, undefined, this),
|
|
340
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuContent, {
|
|
341
|
+
align: "start",
|
|
342
|
+
children: [
|
|
343
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuItem, {
|
|
344
|
+
onClick: () => column.pin?.("left"),
|
|
345
|
+
children: [
|
|
346
|
+
/* @__PURE__ */ jsxDEV4(PanelLeft, {
|
|
347
|
+
className: "h-4 w-4"
|
|
348
|
+
}, undefined, false, undefined, this),
|
|
349
|
+
"Pin Left"
|
|
350
|
+
]
|
|
351
|
+
}, undefined, true, undefined, this),
|
|
352
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuItem, {
|
|
353
|
+
onClick: () => column.pin?.("right"),
|
|
354
|
+
children: [
|
|
355
|
+
/* @__PURE__ */ jsxDEV4(PanelRight, {
|
|
356
|
+
className: "h-4 w-4"
|
|
357
|
+
}, undefined, false, undefined, this),
|
|
358
|
+
"Pin Right"
|
|
359
|
+
]
|
|
360
|
+
}, undefined, true, undefined, this),
|
|
361
|
+
/* @__PURE__ */ jsxDEV4(DropdownMenuItem, {
|
|
362
|
+
onClick: () => column.pin?.(false),
|
|
363
|
+
children: [
|
|
364
|
+
/* @__PURE__ */ jsxDEV4(PinOff, {
|
|
365
|
+
className: "h-4 w-4"
|
|
366
|
+
}, undefined, false, undefined, this),
|
|
367
|
+
"Unpin"
|
|
368
|
+
]
|
|
369
|
+
}, undefined, true, undefined, this)
|
|
370
|
+
]
|
|
371
|
+
}, undefined, true, undefined, this)
|
|
372
|
+
]
|
|
373
|
+
}, undefined, true, undefined, this);
|
|
374
|
+
}
|
|
375
|
+
function ResizeHandle({
|
|
376
|
+
column
|
|
377
|
+
}) {
|
|
378
|
+
const lastX = React.useRef(null);
|
|
379
|
+
const onMouseDown = React.useCallback((event) => {
|
|
380
|
+
event.preventDefault();
|
|
381
|
+
event.stopPropagation();
|
|
382
|
+
lastX.current = event.clientX;
|
|
383
|
+
const onMouseMove = (moveEvent) => {
|
|
384
|
+
if (lastX.current == null)
|
|
385
|
+
return;
|
|
386
|
+
const delta = moveEvent.clientX - lastX.current;
|
|
387
|
+
lastX.current = moveEvent.clientX;
|
|
388
|
+
column.resizeBy?.(delta);
|
|
389
|
+
};
|
|
390
|
+
const onMouseUp = () => {
|
|
391
|
+
lastX.current = null;
|
|
392
|
+
window.removeEventListener("mousemove", onMouseMove);
|
|
393
|
+
window.removeEventListener("mouseup", onMouseUp);
|
|
394
|
+
};
|
|
395
|
+
window.addEventListener("mousemove", onMouseMove);
|
|
396
|
+
window.addEventListener("mouseup", onMouseUp);
|
|
397
|
+
}, [column]);
|
|
398
|
+
return /* @__PURE__ */ jsxDEV4("span", {
|
|
399
|
+
role: "separator",
|
|
400
|
+
"aria-orientation": "vertical",
|
|
401
|
+
tabIndex: -1,
|
|
402
|
+
className: "absolute inset-y-0 right-0 flex w-3 cursor-col-resize items-center justify-center",
|
|
403
|
+
onMouseDown,
|
|
404
|
+
children: /* @__PURE__ */ jsxDEV4(GripVertical, {
|
|
405
|
+
className: "h-3.5 w-3.5 text-muted-foreground"
|
|
406
|
+
}, undefined, false, undefined, this)
|
|
407
|
+
}, undefined, false, undefined, this);
|
|
408
|
+
}
|
|
409
|
+
function renderHeaderContent(controller, column) {
|
|
410
|
+
if (column.kind === "selection" && controller.selectionMode === "multiple") {
|
|
411
|
+
return /* @__PURE__ */ jsxDEV4(Checkbox, {
|
|
412
|
+
checked: controller.allRowsSelected || (controller.someRowsSelected ? "indeterminate" : false),
|
|
413
|
+
onCheckedChange: (checked) => controller.toggleAllRowsSelected?.(Boolean(checked)),
|
|
414
|
+
onClick: (event) => event.stopPropagation()
|
|
415
|
+
}, undefined, false, undefined, this);
|
|
416
|
+
}
|
|
417
|
+
if (column.kind === "expansion")
|
|
418
|
+
return null;
|
|
419
|
+
return column.header;
|
|
420
|
+
}
|
|
421
|
+
function renderCellContent(row, cell) {
|
|
422
|
+
if (!cell)
|
|
423
|
+
return null;
|
|
424
|
+
if (cell.kind === "selection") {
|
|
425
|
+
return /* @__PURE__ */ jsxDEV4(Checkbox, {
|
|
426
|
+
checked: row.isSelected,
|
|
427
|
+
onCheckedChange: (checked) => row.toggleSelected?.(Boolean(checked))
|
|
428
|
+
}, undefined, false, undefined, this);
|
|
429
|
+
}
|
|
430
|
+
if (cell.kind === "expansion") {
|
|
431
|
+
return row.canExpand ? /* @__PURE__ */ jsxDEV4(Button, {
|
|
432
|
+
variant: "ghost",
|
|
433
|
+
size: "icon",
|
|
434
|
+
className: "h-7 w-7",
|
|
435
|
+
onClick: () => row.toggleExpanded?.(),
|
|
436
|
+
children: row.isExpanded ? /* @__PURE__ */ jsxDEV4(ChevronDown, {
|
|
437
|
+
className: "h-4 w-4"
|
|
438
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV4(ChevronRight, {
|
|
439
|
+
className: "h-4 w-4"
|
|
440
|
+
}, undefined, false, undefined, this)
|
|
441
|
+
}, undefined, false, undefined, this) : null;
|
|
442
|
+
}
|
|
443
|
+
return cell.content;
|
|
444
|
+
}
|
|
445
|
+
function stickyStyle(column, isHeader = false) {
|
|
446
|
+
return {
|
|
447
|
+
width: column.size,
|
|
448
|
+
minWidth: column.size,
|
|
449
|
+
maxWidth: column.size,
|
|
450
|
+
left: column.pinState === "left" ? column.stickyOffset : undefined,
|
|
451
|
+
right: column.pinState === "right" ? column.stickyOffset : undefined,
|
|
452
|
+
position: column.pinState ? "sticky" : "relative",
|
|
453
|
+
zIndex: column.pinState ? isHeader ? 30 : 20 : undefined
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
export {
|
|
457
|
+
stickyStyle,
|
|
458
|
+
renderHeaderContent,
|
|
459
|
+
renderCellContent,
|
|
460
|
+
ResizeHandle,
|
|
461
|
+
PinMenu,
|
|
462
|
+
ColumnVisibilityMenu
|
|
463
|
+
};
|
|
@@ -7,23 +7,23 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// ui/button.tsx
|
|
10
|
+
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
10
11
|
import { Slot } from "@radix-ui/react-slot";
|
|
11
12
|
import { cva } from "class-variance-authority";
|
|
12
|
-
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
13
13
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
14
|
-
var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm
|
|
14
|
+
var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
15
15
|
variants: {
|
|
16
16
|
variant: {
|
|
17
17
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
18
|
-
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40
|
|
19
|
-
outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:
|
|
18
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
19
|
+
outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
20
20
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
21
21
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
22
22
|
link: "text-primary underline-offset-4 hover:underline"
|
|
23
23
|
},
|
|
24
24
|
size: {
|
|
25
25
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
26
|
-
sm: "h-8
|
|
26
|
+
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
27
27
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
28
28
|
icon: "size-9"
|
|
29
29
|
}
|
|
@@ -62,19 +62,19 @@ function Input({ className, type, ...props }) {
|
|
|
62
62
|
return /* @__PURE__ */ jsxDEV2("input", {
|
|
63
63
|
type,
|
|
64
64
|
"data-slot": "input",
|
|
65
|
-
className: cn2("
|
|
65
|
+
className: cn2("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30", "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", className),
|
|
66
66
|
...props
|
|
67
67
|
}, undefined, false, undefined, this);
|
|
68
68
|
}
|
|
69
69
|
// ui/calendar.tsx
|
|
70
|
-
import
|
|
70
|
+
import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
|
|
71
71
|
import {
|
|
72
72
|
ChevronDownIcon,
|
|
73
73
|
ChevronLeftIcon,
|
|
74
74
|
ChevronRightIcon
|
|
75
75
|
} from "lucide-react";
|
|
76
|
+
import * as React from "react";
|
|
76
77
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
77
|
-
import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
|
|
78
78
|
import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
|
|
79
79
|
"use client";
|
|
80
80
|
function Calendar({
|
|
@@ -90,7 +90,7 @@ function Calendar({
|
|
|
90
90
|
const defaultClassNames = getDefaultClassNames();
|
|
91
91
|
return /* @__PURE__ */ jsxDEV3(DayPicker, {
|
|
92
92
|
showOutsideDays,
|
|
93
|
-
className: cn3("group/calendar bg-background
|
|
93
|
+
className: cn3("group/calendar bg-background in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent p-3 [--cell-size:--spacing(8)]", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
|
|
94
94
|
captionLayout,
|
|
95
95
|
formatters: {
|
|
96
96
|
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
|
|
@@ -101,24 +101,24 @@ function Calendar({
|
|
|
101
101
|
months: cn3("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
|
|
102
102
|
month: cn3("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
103
103
|
nav: cn3("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
|
|
104
|
-
button_previous: cn3(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0
|
|
105
|
-
button_next: cn3(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0
|
|
104
|
+
button_previous: cn3(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) select-none p-0 aria-disabled:opacity-50", defaultClassNames.button_previous),
|
|
105
|
+
button_next: cn3(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) select-none p-0 aria-disabled:opacity-50", defaultClassNames.button_next),
|
|
106
106
|
month_caption: cn3("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
|
|
107
|
-
dropdowns: cn3("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm
|
|
108
|
-
dropdown_root: cn3("has-focus:border-ring has-focus:ring-
|
|
109
|
-
dropdown: cn3("
|
|
110
|
-
caption_label: cn3("font-medium
|
|
107
|
+
dropdowns: cn3("flex h-(--cell-size) w-full items-center justify-center gap-1.5 font-medium text-sm", defaultClassNames.dropdowns),
|
|
108
|
+
dropdown_root: cn3("relative rounded-md border border-input shadow-2xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50", defaultClassNames.dropdown_root),
|
|
109
|
+
dropdown: cn3("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
|
|
110
|
+
caption_label: cn3("select-none font-medium", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
|
|
111
111
|
table: "w-full border-collapse",
|
|
112
112
|
weekdays: cn3("flex", defaultClassNames.weekdays),
|
|
113
|
-
weekday: cn3("
|
|
113
|
+
weekday: cn3("flex-1 select-none rounded-md font-normal text-[0.8rem] text-muted-foreground", defaultClassNames.weekday),
|
|
114
114
|
week: cn3("mt-2 flex w-full", defaultClassNames.week),
|
|
115
115
|
week_number_header: cn3("w-(--cell-size) select-none", defaultClassNames.week_number_header),
|
|
116
|
-
week_number: cn3("
|
|
117
|
-
day: cn3("group/day relative aspect-square h-full w-full p-0 text-center
|
|
118
|
-
range_start: cn3("
|
|
116
|
+
week_number: cn3("select-none text-[0.8rem] text-muted-foreground", defaultClassNames.week_number),
|
|
117
|
+
day: cn3("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md", defaultClassNames.day),
|
|
118
|
+
range_start: cn3("rounded-l-md bg-accent", defaultClassNames.range_start),
|
|
119
119
|
range_middle: cn3("rounded-none", defaultClassNames.range_middle),
|
|
120
|
-
range_end: cn3("
|
|
121
|
-
today: cn3("bg-accent text-accent-foreground
|
|
120
|
+
range_end: cn3("rounded-r-md bg-accent", defaultClassNames.range_end),
|
|
121
|
+
today: cn3("rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
122
122
|
outside: cn3("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
123
123
|
disabled: cn3("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
124
124
|
hidden: cn3("invisible", defaultClassNames.hidden),
|
|
@@ -187,13 +187,13 @@ function CalendarDayButton({
|
|
|
187
187
|
"data-range-start": modifiers.range_start,
|
|
188
188
|
"data-range-end": modifiers.range_end,
|
|
189
189
|
"data-range-middle": modifiers.range_middle,
|
|
190
|
-
className: cn3("data-[range-end=true]:
|
|
190
|
+
className: cn3("flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-start=true]:rounded-l-md data-[range-end=true]:bg-primary data-[range-middle=true]:bg-accent data-[range-start=true]:bg-primary data-[selected-single=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:text-accent-foreground data-[range-start=true]:text-primary-foreground data-[selected-single=true]:text-primary-foreground group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
|
|
191
191
|
...props
|
|
192
192
|
}, undefined, false, undefined, this);
|
|
193
193
|
}
|
|
194
194
|
// ui/popover.tsx
|
|
195
|
-
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
196
195
|
import { cn as cn4 } from "@contractspec/lib.ui-kit-core/utils";
|
|
196
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
197
197
|
import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
|
|
198
198
|
"use client";
|
|
199
199
|
function Popover({
|
|
@@ -223,7 +223,7 @@ function PopoverContent({
|
|
|
223
223
|
"data-slot": "popover-content",
|
|
224
224
|
align,
|
|
225
225
|
sideOffset,
|
|
226
|
-
className: cn4("
|
|
226
|
+
className: cn4("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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=closed]:animate-out data-[state=open]:animate-in", className),
|
|
227
227
|
...props
|
|
228
228
|
}, undefined, false, undefined, this)
|
|
229
229
|
}, undefined, false, undefined, this);
|
|
@@ -237,9 +237,9 @@ function PopoverAnchor({
|
|
|
237
237
|
}, undefined, false, undefined, this);
|
|
238
238
|
}
|
|
239
239
|
// ui/date-picker.tsx
|
|
240
|
-
import * as React2 from "react";
|
|
241
|
-
import { CalendarIcon } from "lucide-react";
|
|
242
240
|
import { cn as cn5 } from "@contractspec/lib.ui-kit-core/utils";
|
|
241
|
+
import { CalendarIcon } from "lucide-react";
|
|
242
|
+
import * as React2 from "react";
|
|
243
243
|
import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
|
|
244
244
|
"use client";
|
|
245
245
|
function DatePicker({
|