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