@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
@@ -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
  }
@@ -56,14 +56,14 @@ function Button({
56
56
  }, undefined, false, undefined, this);
57
57
  }
58
58
  // ui/calendar.tsx
59
- import * as React from "react";
59
+ import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
60
60
  import {
61
61
  ChevronDownIcon,
62
62
  ChevronLeftIcon,
63
63
  ChevronRightIcon
64
64
  } from "lucide-react";
65
+ import * as React from "react";
65
66
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
66
- import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
67
67
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
68
68
  "use client";
69
69
  function Calendar({
@@ -79,7 +79,7 @@ function Calendar({
79
79
  const defaultClassNames = getDefaultClassNames();
80
80
  return /* @__PURE__ */ jsxDEV2(DayPicker, {
81
81
  showOutsideDays,
82
- className: cn2("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),
82
+ className: cn2("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),
83
83
  captionLayout,
84
84
  formatters: {
85
85
  formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
@@ -90,24 +90,24 @@ function Calendar({
90
90
  months: cn2("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
91
91
  month: cn2("flex w-full flex-col gap-4", defaultClassNames.month),
92
92
  nav: cn2("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
93
- button_previous: cn2(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
94
- button_next: cn2(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
93
+ button_previous: cn2(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) select-none p-0 aria-disabled:opacity-50", defaultClassNames.button_previous),
94
+ button_next: cn2(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) select-none p-0 aria-disabled:opacity-50", defaultClassNames.button_next),
95
95
  month_caption: cn2("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
96
- dropdowns: cn2("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
97
- dropdown_root: cn2("has-focus:border-ring has-focus:ring-ring/50 border-input relative rounded-md border shadow-2xs has-focus:ring-[3px]", defaultClassNames.dropdown_root),
98
- dropdown: cn2("bg-popover absolute inset-0 opacity-0", defaultClassNames.dropdown),
99
- caption_label: cn2("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),
96
+ dropdowns: cn2("flex h-(--cell-size) w-full items-center justify-center gap-1.5 font-medium text-sm", defaultClassNames.dropdowns),
97
+ dropdown_root: cn2("relative rounded-md border border-input shadow-2xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50", defaultClassNames.dropdown_root),
98
+ dropdown: cn2("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
99
+ caption_label: cn2("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),
100
100
  table: "w-full border-collapse",
101
101
  weekdays: cn2("flex", defaultClassNames.weekdays),
102
- weekday: cn2("text-muted-foreground flex-1 rounded-md text-[0.8rem] font-normal select-none", defaultClassNames.weekday),
102
+ weekday: cn2("flex-1 select-none rounded-md font-normal text-[0.8rem] text-muted-foreground", defaultClassNames.weekday),
103
103
  week: cn2("mt-2 flex w-full", defaultClassNames.week),
104
104
  week_number_header: cn2("w-(--cell-size) select-none", defaultClassNames.week_number_header),
105
- week_number: cn2("text-muted-foreground text-[0.8rem] select-none", defaultClassNames.week_number),
106
- day: cn2("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),
107
- range_start: cn2("bg-accent rounded-l-md", defaultClassNames.range_start),
105
+ week_number: cn2("select-none text-[0.8rem] text-muted-foreground", defaultClassNames.week_number),
106
+ day: cn2("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),
107
+ range_start: cn2("rounded-l-md bg-accent", defaultClassNames.range_start),
108
108
  range_middle: cn2("rounded-none", defaultClassNames.range_middle),
109
- range_end: cn2("bg-accent rounded-r-md", defaultClassNames.range_end),
110
- today: cn2("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
109
+ range_end: cn2("rounded-r-md bg-accent", defaultClassNames.range_end),
110
+ today: cn2("rounded-md bg-accent text-accent-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
111
111
  outside: cn2("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
112
112
  disabled: cn2("text-muted-foreground opacity-50", defaultClassNames.disabled),
113
113
  hidden: cn2("invisible", defaultClassNames.hidden),
@@ -176,13 +176,13 @@ function CalendarDayButton({
176
176
  "data-range-start": modifiers.range_start,
177
177
  "data-range-end": modifiers.range_end,
178
178
  "data-range-middle": modifiers.range_middle,
179
- className: cn2("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),
179
+ className: cn2("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),
180
180
  ...props
181
181
  }, undefined, false, undefined, this);
182
182
  }
183
183
  // ui/popover.tsx
184
- import * as PopoverPrimitive from "@radix-ui/react-popover";
185
184
  import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
185
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
186
186
  import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
187
187
  "use client";
188
188
  function Popover({
@@ -212,7 +212,7 @@ function PopoverContent({
212
212
  "data-slot": "popover-content",
213
213
  align,
214
214
  sideOffset,
215
- className: cn3("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),
215
+ 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 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),
216
216
  ...props
217
217
  }, undefined, false, undefined, this)
218
218
  }, undefined, false, undefined, this);
@@ -226,8 +226,8 @@ function PopoverAnchor({
226
226
  }, undefined, false, undefined, this);
227
227
  }
228
228
  // ui/date-range-picker.tsx
229
- import * as React2 from "react";
230
229
  import { cn as cn4 } from "@contractspec/lib.ui-kit-core/utils";
230
+ import * as React2 from "react";
231
231
  import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
232
232
  "use client";
233
233
  function DateRangePicker({
@@ -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({
@@ -352,8 +352,8 @@ function DatePicker({
352
352
  }
353
353
 
354
354
  // ui/time-picker.tsx
355
- import * as React3 from "react";
356
355
  import { cn as cn6 } from "@contractspec/lib.ui-kit-core/utils";
356
+ import * as React3 from "react";
357
357
  import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
358
358
  "use client";
359
359
  function formatTime(d, is24Hour) {
@@ -412,7 +412,7 @@ function TimePicker({
412
412
  max: is24Hour ? 23 : 12,
413
413
  value: hours,
414
414
  onChange: (e) => setHours(e.target.value),
415
- className: "border-input bg-background w-16 rounded-md border px-2 py-1 text-center"
415
+ className: "w-16 rounded-md border border-input bg-background px-2 py-1 text-center"
416
416
  }, undefined, false, undefined, this),
417
417
  /* @__PURE__ */ jsxDEV6("span", {
418
418
  children: ":"
@@ -423,7 +423,7 @@ function TimePicker({
423
423
  max: 59,
424
424
  value: minutes,
425
425
  onChange: (e) => setMinutes(e.target.value),
426
- className: "border-input bg-background w-16 rounded-md border px-2 py-1 text-center"
426
+ className: "w-16 rounded-md border border-input bg-background px-2 py-1 text-center"
427
427
  }, undefined, false, undefined, this),
428
428
  /* @__PURE__ */ jsxDEV6(Button, {
429
429
  type: "button",
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/dialog.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
10
11
  import * as DialogPrimitive from "@radix-ui/react-dialog";
11
12
  import { XIcon } from "lucide-react";
12
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
13
13
  import { jsxDEV } from "react/jsx-dev-runtime";
14
14
  "use client";
15
15
  function Dialog({
@@ -50,7 +50,7 @@ function DialogOverlay({
50
50
  }) {
51
51
  return /* @__PURE__ */ jsxDEV(DialogPrimitive.Overlay, {
52
52
  "data-slot": "dialog-overlay",
53
- className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
53
+ className: cn("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in", className),
54
54
  ...props
55
55
  }, undefined, false, undefined, this);
56
56
  }
@@ -66,13 +66,13 @@ function DialogContent({
66
66
  /* @__PURE__ */ jsxDEV(DialogOverlay, {}, undefined, false, undefined, this),
67
67
  /* @__PURE__ */ jsxDEV(DialogPrimitive.Content, {
68
68
  "data-slot": "dialog-content",
69
- className: cn("bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
69
+ className: cn("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg", className),
70
70
  ...props,
71
71
  children: [
72
72
  children,
73
73
  showCloseButton && /* @__PURE__ */ jsxDEV(DialogPrimitive.Close, {
74
74
  "data-slot": "dialog-close",
75
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
75
+ className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
76
76
  children: [
77
77
  /* @__PURE__ */ jsxDEV(XIcon, {}, undefined, false, undefined, this),
78
78
  /* @__PURE__ */ jsxDEV("span", {
@@ -112,7 +112,7 @@ function DialogTitle({
112
112
  }) {
113
113
  return /* @__PURE__ */ jsxDEV(DialogPrimitive.Title, {
114
114
  "data-slot": "dialog-title",
115
- className: cn("text-lg leading-none font-semibold", className),
115
+ className: cn("font-semibold text-lg leading-none", className),
116
116
  ...props
117
117
  }, undefined, false, undefined, this);
118
118
  }
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/drawer.tsx
10
- import { Drawer as DrawerPrimitive } from "vaul";
11
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import { Drawer as DrawerPrimitive } from "vaul";
12
12
  import { jsxDEV } from "react/jsx-dev-runtime";
13
13
  "use client";
14
14
  function Drawer({
@@ -49,7 +49,7 @@ function DrawerOverlay({
49
49
  }) {
50
50
  return /* @__PURE__ */ jsxDEV(DrawerPrimitive.Overlay, {
51
51
  "data-slot": "drawer-overlay",
52
- className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
52
+ className: cn("data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in", className),
53
53
  ...props
54
54
  }, undefined, false, undefined, this);
55
55
  }
@@ -64,11 +64,11 @@ function DrawerContent({
64
64
  /* @__PURE__ */ jsxDEV(DrawerOverlay, {}, undefined, false, undefined, this),
65
65
  /* @__PURE__ */ jsxDEV(DrawerPrimitive.Content, {
66
66
  "data-slot": "drawer-content",
67
- className: cn("group/drawer-content bg-background fixed z-50 flex h-auto flex-col", "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b", "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t", "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l sm:data-[vaul-drawer-direction=right]:max-w-sm", "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r sm:data-[vaul-drawer-direction=left]:max-w-sm", className),
67
+ className: cn("group/drawer-content fixed z-50 flex h-auto flex-col bg-background", "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b", "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t", "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l sm:data-[vaul-drawer-direction=right]:max-w-sm", "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r sm:data-[vaul-drawer-direction=left]:max-w-sm", className),
68
68
  ...props,
69
69
  children: [
70
70
  /* @__PURE__ */ jsxDEV("div", {
71
- className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
71
+ className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
72
72
  }, undefined, false, undefined, this),
73
73
  children
74
74
  ]
@@ -102,7 +102,7 @@ function DrawerTitle({
102
102
  }) {
103
103
  return /* @__PURE__ */ jsxDEV(DrawerPrimitive.Title, {
104
104
  "data-slot": "drawer-title",
105
- className: cn("text-foreground font-semibold", className),
105
+ className: cn("font-semibold text-foreground", className),
106
106
  ...props
107
107
  }, undefined, false, undefined, this);
108
108
  }
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/dropdown-menu.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
10
11
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
11
12
  import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
12
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
13
13
  import { jsxDEV } from "react/jsx-dev-runtime";
14
14
  "use client";
15
15
  function DropdownMenu({
@@ -45,7 +45,7 @@ function DropdownMenuContent({
45
45
  children: /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.Content, {
46
46
  "data-slot": "dropdown-menu-content",
47
47
  sideOffset,
48
- className: cn("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 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
48
+ className: cn("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),
49
49
  ...props
50
50
  }, undefined, false, undefined, this)
51
51
  }, undefined, false, undefined, this);
@@ -68,7 +68,7 @@ function DropdownMenuItem({
68
68
  "data-slot": "dropdown-menu-item",
69
69
  "data-inset": inset,
70
70
  "data-variant": variant,
71
- className: cn("data-[variant=destructive]:*:[svg]:text-destructive! focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
71
+ className: cn("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),
72
72
  ...props
73
73
  }, undefined, false, undefined, this);
74
74
  }
@@ -80,7 +80,7 @@ function DropdownMenuCheckboxItem({
80
80
  }) {
81
81
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.CheckboxItem, {
82
82
  "data-slot": "dropdown-menu-checkbox-item",
83
- className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
83
+ className: cn("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),
84
84
  checked,
85
85
  ...props,
86
86
  children: [
@@ -111,7 +111,7 @@ function DropdownMenuRadioItem({
111
111
  }) {
112
112
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.RadioItem, {
113
113
  "data-slot": "dropdown-menu-radio-item",
114
- className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
114
+ className: cn("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),
115
115
  ...props,
116
116
  children: [
117
117
  /* @__PURE__ */ jsxDEV("span", {
@@ -134,7 +134,7 @@ function DropdownMenuLabel({
134
134
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.Label, {
135
135
  "data-slot": "dropdown-menu-label",
136
136
  "data-inset": inset,
137
- className: cn("px-2 py-1.5 text-sm font-medium data-inset:pl-8", className),
137
+ className: cn("px-2 py-1.5 font-medium text-sm data-inset:pl-8", className),
138
138
  ...props
139
139
  }, undefined, false, undefined, this);
140
140
  }
@@ -144,7 +144,7 @@ function DropdownMenuSeparator({
144
144
  }) {
145
145
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.Separator, {
146
146
  "data-slot": "dropdown-menu-separator",
147
- className: cn("bg-border -mx-1 my-1 h-px", className),
147
+ className: cn("-mx-1 my-1 h-px bg-border", className),
148
148
  ...props
149
149
  }, undefined, false, undefined, this);
150
150
  }
@@ -154,7 +154,7 @@ function DropdownMenuShortcut({
154
154
  }) {
155
155
  return /* @__PURE__ */ jsxDEV("span", {
156
156
  "data-slot": "dropdown-menu-shortcut",
157
- className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
157
+ className: cn("ml-auto text-muted-foreground text-xs tracking-widest", className),
158
158
  ...props
159
159
  }, undefined, false, undefined, this);
160
160
  }
@@ -175,7 +175,7 @@ function DropdownMenuSubTrigger({
175
175
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.SubTrigger, {
176
176
  "data-slot": "dropdown-menu-sub-trigger",
177
177
  "data-inset": inset,
178
- className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8", className),
178
+ className: cn("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),
179
179
  ...props,
180
180
  children: [
181
181
  children,
@@ -191,7 +191,7 @@ function DropdownMenuSubContent({
191
191
  }) {
192
192
  return /* @__PURE__ */ jsxDEV(DropdownMenuPrimitive.SubContent, {
193
193
  "data-slot": "dropdown-menu-sub-content",
194
- className: cn("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 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", className),
194
+ className: cn("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),
195
195
  ...props
196
196
  }, undefined, false, undefined, this);
197
197
  }
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/stack.tsx
10
- import { cva } from "class-variance-authority";
11
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import { cva } from "class-variance-authority";
12
12
  import { jsxDEV } from "react/jsx-dev-runtime";
13
13
  var vStackVariants = cva("flex flex-col", {
14
14
  variants: {
@@ -171,8 +171,8 @@ function Box({
171
171
  }, undefined, false, undefined, this);
172
172
  }
173
173
  // ui/empty-state.tsx
174
- import { cva as cva2 } from "class-variance-authority";
175
174
  import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
175
+ import { cva as cva2 } from "class-variance-authority";
176
176
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
177
177
  var containerVariants = cva2("items-center text-center", {
178
178
  variants: {
@@ -198,9 +198,9 @@ function EmptyState({
198
198
  className: cn2(containerVariants({ density }), className),
199
199
  children: [
200
200
  icon ? /* @__PURE__ */ jsxDEV2("div", {
201
- className: "bg-muted flex h-12 w-12 items-center justify-center rounded-full",
201
+ className: "flex h-12 w-12 items-center justify-center rounded-full bg-muted",
202
202
  children: /* @__PURE__ */ jsxDEV2("div", {
203
- className: "text-muted-foreground flex items-center justify-center",
203
+ className: "flex items-center justify-center text-muted-foreground",
204
204
  children: icon
205
205
  }, undefined, false, undefined, this)
206
206
  }, undefined, false, undefined, this) : null,
@@ -211,7 +211,7 @@ function EmptyState({
211
211
  children: title
212
212
  }, undefined, false, undefined, this),
213
213
  description ? /* @__PURE__ */ jsxDEV2("p", {
214
- className: "text-muted-foreground text-base",
214
+ className: "text-base text-muted-foreground",
215
215
  children: description
216
216
  }, undefined, false, undefined, this) : null
217
217
  ]
@@ -7,13 +7,13 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/empty.tsx
10
- import { cva } from "class-variance-authority";
11
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import { cva } from "class-variance-authority";
12
12
  import { jsxDEV } from "react/jsx-dev-runtime";
13
13
  function Empty({ className, ...props }) {
14
14
  return /* @__PURE__ */ jsxDEV("div", {
15
15
  "data-slot": "empty",
16
- className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12", className),
16
+ className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12", className),
17
17
  ...props
18
18
  }, undefined, false, undefined, this);
19
19
  }
@@ -27,11 +27,11 @@ function EmptyHeader({
27
27
  ...props
28
28
  }, undefined, false, undefined, this);
29
29
  }
30
- var emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
30
+ var emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
31
31
  variants: {
32
32
  variant: {
33
33
  default: "bg-transparent",
34
- icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
34
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
35
35
  }
36
36
  },
37
37
  defaultVariants: {
@@ -56,7 +56,7 @@ function EmptyTitle({
56
56
  }) {
57
57
  return /* @__PURE__ */ jsxDEV("div", {
58
58
  "data-slot": "empty-title",
59
- className: cn("text-lg font-medium tracking-tight", className),
59
+ className: cn("font-medium text-lg tracking-tight", className),
60
60
  ...props
61
61
  }, undefined, false, undefined, this);
62
62
  }
@@ -66,7 +66,7 @@ function EmptyDescription({
66
66
  }) {
67
67
  return /* @__PURE__ */ jsxDEV("p", {
68
68
  "data-slot": "empty-description",
69
- className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", className),
69
+ className: cn("text-muted-foreground text-sm/relaxed [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
70
70
  ...props
71
71
  }, undefined, false, undefined, this);
72
72
  }
@@ -76,7 +76,7 @@ function EmptyContent({
76
76
  }) {
77
77
  return /* @__PURE__ */ jsxDEV("div", {
78
78
  "data-slot": "empty-content",
79
- className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
79
+ className: cn("flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm", className),
80
80
  ...props
81
81
  }, undefined, false, undefined, this);
82
82
  }