@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.
Files changed (234) hide show
  1. package/README.md +33 -88
  2. package/dist/browser/ui/accordion.js +4 -4
  3. package/dist/browser/ui/alert-dialog.js +9 -9
  4. package/dist/browser/ui/alert.js +4 -4
  5. package/dist/browser/ui/atoms/FilterSelect/FilterSelect.js +51 -51
  6. package/dist/browser/ui/atoms/FilterSelect/index.js +51 -51
  7. package/dist/browser/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
  8. package/dist/browser/ui/atoms/Pagination/Pagination.js +13 -13
  9. package/dist/browser/ui/atoms/Pagination/index.js +13 -13
  10. package/dist/browser/ui/atoms/SearchInput/SearchInput.js +8 -8
  11. package/dist/browser/ui/atoms/SearchInput/index.js +8 -8
  12. package/dist/browser/ui/avatar.js +1 -1
  13. package/dist/browser/ui/badge.js +3 -3
  14. package/dist/browser/ui/breadcrumb.js +4 -4
  15. package/dist/browser/ui/button.js +5 -5
  16. package/dist/browser/ui/calendar.js +21 -21
  17. package/dist/browser/ui/card.js +2 -2
  18. package/dist/browser/ui/carousel.js +6 -6
  19. package/dist/browser/ui/checkbox.js +2 -2
  20. package/dist/browser/ui/command.js +14 -14
  21. package/dist/browser/ui/confirm-dialog.js +9 -9
  22. package/dist/browser/ui/context-menu.js +10 -10
  23. package/dist/browser/ui/cta.js +5 -5
  24. package/dist/browser/ui/data-table.js +1005 -0
  25. package/dist/browser/ui/data-table.parts.js +463 -0
  26. package/dist/browser/ui/date-picker.js +26 -26
  27. package/dist/browser/ui/date-range-picker.js +24 -24
  28. package/dist/browser/ui/datetime-picker.js +29 -29
  29. package/dist/browser/ui/dialog.js +5 -5
  30. package/dist/browser/ui/drawer.js +5 -5
  31. package/dist/browser/ui/dropdown-menu.js +10 -10
  32. package/dist/browser/ui/empty-state.js +5 -5
  33. package/dist/browser/ui/empty.js +7 -7
  34. package/dist/browser/ui/field.js +12 -12
  35. package/dist/browser/ui/form.js +4 -4
  36. package/dist/browser/ui/hover-card.js +2 -2
  37. package/dist/browser/ui/input-group.js +16 -16
  38. package/dist/browser/ui/input-otp.js +4 -4
  39. package/dist/browser/ui/input.js +1 -1
  40. package/dist/browser/ui/label.js +2 -2
  41. package/dist/browser/ui/loading-button.js +8 -8
  42. package/dist/browser/ui/marketing/FeatureGrid.js +3 -3
  43. package/dist/browser/ui/marketing/Hero.js +7 -7
  44. package/dist/browser/ui/marketing/PricingTable.js +10 -10
  45. package/dist/browser/ui/menubar.js +12 -12
  46. package/dist/browser/ui/molecules/Autocomplete/index.js +26 -26
  47. package/dist/browser/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
  48. package/dist/browser/ui/molecules/SearchAndFilter/index.js +62 -62
  49. package/dist/browser/ui/molecules/SkeletonList.js +1 -1
  50. package/dist/browser/ui/nav-layout.js +22 -22
  51. package/dist/browser/ui/navigation-menu.js +7 -7
  52. package/dist/browser/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
  53. package/dist/browser/ui/organisms/ListPage/ListPage.js +84 -84
  54. package/dist/browser/ui/page-header.js +4 -4
  55. package/dist/browser/ui/pagination.js +6 -6
  56. package/dist/browser/ui/popover.js +2 -2
  57. package/dist/browser/ui/progress.js +3 -3
  58. package/dist/browser/ui/radio-group.js +3 -3
  59. package/dist/browser/ui/resizable.js +3 -3
  60. package/dist/browser/ui/scroll-area.js +4 -4
  61. package/dist/browser/ui/section.js +1 -1
  62. package/dist/browser/ui/select.js +6 -6
  63. package/dist/browser/ui/separator.js +2 -2
  64. package/dist/browser/ui/sheet.js +5 -5
  65. package/dist/browser/ui/sidebar.js +64 -64
  66. package/dist/browser/ui/skeleton.js +1 -1
  67. package/dist/browser/ui/slider.js +6 -6
  68. package/dist/browser/ui/stack.js +1 -1
  69. package/dist/browser/ui/stat-card-group.js +5 -5
  70. package/dist/browser/ui/stepper.js +2 -2
  71. package/dist/browser/ui/switch.js +3 -3
  72. package/dist/browser/ui/table.js +5 -5
  73. package/dist/browser/ui/tabs.js +3 -3
  74. package/dist/browser/ui/text.js +2 -2
  75. package/dist/browser/ui/textarea.js +1 -1
  76. package/dist/browser/ui/time-picker.js +10 -10
  77. package/dist/browser/ui/toast.js +5 -5
  78. package/dist/browser/ui/toaster.js +5 -5
  79. package/dist/browser/ui/toggle-group.js +7 -7
  80. package/dist/browser/ui/toggle.js +5 -5
  81. package/dist/browser/ui/tooltip.js +3 -3
  82. package/dist/browser/ui/typography.js +14 -14
  83. package/dist/browser/ui/usecases/UseCaseCard.js +8 -8
  84. package/dist/browser/ui/usecases/UserStoryCard.js +3 -3
  85. package/dist/browser/ui/visualization/Visualization.js +439 -0
  86. package/dist/browser/ui/visualization/Visualization.support.js +128 -0
  87. package/dist/browser/ui/visualization/index.js +10 -0
  88. package/dist/ui/accordion.d.ts +2 -2
  89. package/dist/ui/accordion.js +4 -4
  90. package/dist/ui/alert-dialog.d.ts +2 -2
  91. package/dist/ui/alert-dialog.js +9 -9
  92. package/dist/ui/alert.d.ts +2 -2
  93. package/dist/ui/alert.js +4 -4
  94. package/dist/ui/atoms/FilterSelect/FilterSelect.js +51 -51
  95. package/dist/ui/atoms/FilterSelect/index.d.ts +1 -1
  96. package/dist/ui/atoms/FilterSelect/index.js +51 -51
  97. package/dist/ui/atoms/LoadingSpinner/LoadingSpinner.js +1 -1
  98. package/dist/ui/atoms/LoadingSpinner/index.d.ts +1 -1
  99. package/dist/ui/atoms/Pagination/Pagination.js +13 -13
  100. package/dist/ui/atoms/Pagination/index.js +13 -13
  101. package/dist/ui/atoms/SearchInput/SearchInput.js +8 -8
  102. package/dist/ui/atoms/SearchInput/index.js +8 -8
  103. package/dist/ui/avatar.d.ts +2 -2
  104. package/dist/ui/avatar.js +1 -1
  105. package/dist/ui/badge.d.ts +1 -1
  106. package/dist/ui/badge.js +3 -3
  107. package/dist/ui/breadcrumb.d.ts +1 -1
  108. package/dist/ui/breadcrumb.js +4 -4
  109. package/dist/ui/button.d.ts +1 -1
  110. package/dist/ui/button.js +5 -5
  111. package/dist/ui/calendar.js +21 -21
  112. package/dist/ui/card.d.ts +1 -1
  113. package/dist/ui/card.js +2 -2
  114. package/dist/ui/carousel.d.ts +2 -2
  115. package/dist/ui/carousel.js +6 -6
  116. package/dist/ui/checkbox.d.ts +1 -1
  117. package/dist/ui/checkbox.js +2 -2
  118. package/dist/ui/collapsible.d.ts +1 -1
  119. package/dist/ui/command.d.ts +2 -2
  120. package/dist/ui/command.js +14 -14
  121. package/dist/ui/confirm-dialog.js +9 -9
  122. package/dist/ui/context-menu.d.ts +2 -2
  123. package/dist/ui/context-menu.js +10 -10
  124. package/dist/ui/cta.js +5 -5
  125. package/dist/ui/data-table.d.ts +12 -0
  126. package/dist/ui/data-table.js +1000 -0
  127. package/dist/ui/data-table.parts.d.ts +14 -0
  128. package/dist/ui/data-table.parts.js +458 -0
  129. package/dist/ui/date-picker.js +26 -26
  130. package/dist/ui/date-range-picker.js +24 -24
  131. package/dist/ui/datetime-picker.js +29 -29
  132. package/dist/ui/dialog.d.ts +1 -1
  133. package/dist/ui/dialog.js +5 -5
  134. package/dist/ui/drawer.d.ts +1 -1
  135. package/dist/ui/drawer.js +5 -5
  136. package/dist/ui/dropdown-menu.d.ts +2 -2
  137. package/dist/ui/dropdown-menu.js +10 -10
  138. package/dist/ui/empty-state.d.ts +1 -1
  139. package/dist/ui/empty-state.js +5 -5
  140. package/dist/ui/empty.d.ts +2 -2
  141. package/dist/ui/empty.js +7 -7
  142. package/dist/ui/field.d.ts +2 -2
  143. package/dist/ui/field.js +12 -12
  144. package/dist/ui/form.d.ts +3 -3
  145. package/dist/ui/form.js +4 -4
  146. package/dist/ui/hover-card.d.ts +2 -2
  147. package/dist/ui/hover-card.js +2 -2
  148. package/dist/ui/input-group.d.ts +2 -2
  149. package/dist/ui/input-group.js +16 -16
  150. package/dist/ui/input-otp.d.ts +2 -2
  151. package/dist/ui/input-otp.js +4 -4
  152. package/dist/ui/input.js +1 -1
  153. package/dist/ui/label.d.ts +1 -1
  154. package/dist/ui/label.js +2 -2
  155. package/dist/ui/loading-button.js +8 -8
  156. package/dist/ui/map/index.d.ts +1 -1
  157. package/dist/ui/marketing/FeatureGrid.js +3 -3
  158. package/dist/ui/marketing/Hero.js +7 -7
  159. package/dist/ui/marketing/PricingTable.js +10 -10
  160. package/dist/ui/marketing/index.d.ts +1 -1
  161. package/dist/ui/menubar.d.ts +2 -2
  162. package/dist/ui/menubar.js +12 -12
  163. package/dist/ui/molecules/Autocomplete/index.js +26 -26
  164. package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +62 -62
  165. package/dist/ui/molecules/SearchAndFilter/index.js +62 -62
  166. package/dist/ui/molecules/SkeletonList.js +1 -1
  167. package/dist/ui/nav-layout.d.ts +1 -1
  168. package/dist/ui/nav-layout.js +22 -22
  169. package/dist/ui/navigation-menu.d.ts +2 -2
  170. package/dist/ui/navigation-menu.js +7 -7
  171. package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +11 -11
  172. package/dist/ui/organisms/ErrorBoundary/index.d.ts +1 -1
  173. package/dist/ui/organisms/ListPage/ListPage.js +84 -84
  174. package/dist/ui/organisms/ListPage/index.d.ts +1 -1
  175. package/dist/ui/organisms/ListPage/types.d.ts +1 -1
  176. package/dist/ui/page-header.d.ts +1 -1
  177. package/dist/ui/page-header.js +4 -4
  178. package/dist/ui/pagination.js +6 -6
  179. package/dist/ui/popover.d.ts +2 -2
  180. package/dist/ui/popover.js +2 -2
  181. package/dist/ui/progress.d.ts +1 -1
  182. package/dist/ui/progress.js +3 -3
  183. package/dist/ui/radio-group.d.ts +1 -1
  184. package/dist/ui/radio-group.js +3 -3
  185. package/dist/ui/resizable.d.ts +2 -2
  186. package/dist/ui/resizable.js +3 -3
  187. package/dist/ui/scroll-area.d.ts +1 -1
  188. package/dist/ui/scroll-area.js +4 -4
  189. package/dist/ui/section.d.ts +1 -1
  190. package/dist/ui/section.js +1 -1
  191. package/dist/ui/select.d.ts +1 -1
  192. package/dist/ui/select.js +6 -6
  193. package/dist/ui/separator.d.ts +1 -1
  194. package/dist/ui/separator.js +2 -2
  195. package/dist/ui/sheet.d.ts +2 -2
  196. package/dist/ui/sheet.js +5 -5
  197. package/dist/ui/sidebar.d.ts +1 -1
  198. package/dist/ui/sidebar.js +64 -64
  199. package/dist/ui/skeleton.js +1 -1
  200. package/dist/ui/slider.d.ts +1 -1
  201. package/dist/ui/slider.js +6 -6
  202. package/dist/ui/stack.d.ts +4 -4
  203. package/dist/ui/stack.js +1 -1
  204. package/dist/ui/stat-card-group.js +5 -5
  205. package/dist/ui/stepper.js +2 -2
  206. package/dist/ui/switch.d.ts +1 -1
  207. package/dist/ui/switch.js +3 -3
  208. package/dist/ui/table.d.ts +1 -1
  209. package/dist/ui/table.js +5 -5
  210. package/dist/ui/tabs.d.ts +2 -2
  211. package/dist/ui/tabs.js +3 -3
  212. package/dist/ui/text.js +2 -2
  213. package/dist/ui/textarea.js +1 -1
  214. package/dist/ui/time-picker.js +10 -10
  215. package/dist/ui/toast.d.ts +2 -2
  216. package/dist/ui/toast.js +5 -5
  217. package/dist/ui/toaster.js +5 -5
  218. package/dist/ui/toggle-group.d.ts +1 -1
  219. package/dist/ui/toggle-group.js +7 -7
  220. package/dist/ui/toggle.d.ts +1 -1
  221. package/dist/ui/toggle.js +5 -5
  222. package/dist/ui/tooltip.d.ts +2 -2
  223. package/dist/ui/tooltip.js +3 -3
  224. package/dist/ui/typography.js +14 -14
  225. package/dist/ui/use-toast.d.ts +1 -1
  226. package/dist/ui/usecases/UseCaseCard.js +8 -8
  227. package/dist/ui/usecases/UserStoryCard.js +3 -3
  228. package/dist/ui/visualization/Visualization.d.ts +9 -0
  229. package/dist/ui/visualization/Visualization.js +434 -0
  230. package/dist/ui/visualization/Visualization.support.d.ts +15 -0
  231. package/dist/ui/visualization/Visualization.support.js +123 -0
  232. package/dist/ui/visualization/index.d.ts +1 -0
  233. package/dist/ui/visualization/index.js +5 -0
  234. package/package.json +75 -12
@@ -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 font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-hidden focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
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 dark:bg-destructive/60",
19
- outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
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 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
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("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] 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 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className),
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 * as React from "react";
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 p-3 [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
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 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
105
- button_next: cn3(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
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 font-medium", defaultClassNames.dropdowns),
108
- dropdown_root: cn3("has-focus:border-ring has-focus:ring-ring/50 border-input relative rounded-md border shadow-2xs has-focus:ring-[3px]", defaultClassNames.dropdown_root),
109
- dropdown: cn3("bg-popover absolute inset-0 opacity-0", defaultClassNames.dropdown),
110
- caption_label: cn3("font-medium select-none", captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5", defaultClassNames.caption_label),
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("text-muted-foreground flex-1 rounded-md text-[0.8rem] font-normal select-none", defaultClassNames.weekday),
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("text-muted-foreground text-[0.8rem] select-none", defaultClassNames.week_number),
117
- day: cn3("group/day relative aspect-square h-full w-full p-0 text-center select-none [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md", defaultClassNames.day),
118
- range_start: cn3("bg-accent rounded-l-md", defaultClassNames.range_start),
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("bg-accent rounded-r-md", defaultClassNames.range_end),
121
- today: cn3("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
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]: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:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
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("bg-popover text-popover-foreground 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
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({