@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,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/resizable.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
10
11
  import { GripVertical } from "lucide-react";
11
12
  import { Group, Panel, Separator } from "react-resizable-panels";
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
  var ResizablePanelGroup = ({ className, ...props }) => /* @__PURE__ */ jsxDEV(Group, {
@@ -22,10 +22,10 @@ var ResizableHandle = ({
22
22
  className,
23
23
  ...props
24
24
  }) => /* @__PURE__ */ jsxDEV(Separator, {
25
- className: cn("bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=vertical]:h-px aria-[orientation=vertical]:w-full aria-[orientation=vertical]:after:left-0 aria-[orientation=vertical]:after:h-1 aria-[orientation=vertical]:after:w-full aria-[orientation=vertical]:after:translate-x-0 aria-[orientation=vertical]:after:-translate-y-1/2 [&[aria-orientation=vertical]>div]:rotate-90", className),
25
+ className: cn("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 aria-[orientation=vertical]:h-px aria-[orientation=vertical]:w-full aria-[orientation=vertical]:after:left-0 aria-[orientation=vertical]:after:h-1 aria-[orientation=vertical]:after:w-full aria-[orientation=vertical]:after:translate-x-0 aria-[orientation=vertical]:after:-translate-y-1/2 [&[aria-orientation=vertical]>div]:rotate-90", className),
26
26
  ...props,
27
27
  children: withHandle && /* @__PURE__ */ jsxDEV("div", {
28
- className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border",
28
+ className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border",
29
29
  children: /* @__PURE__ */ jsxDEV(GripVertical, {
30
30
  className: "h-2.5 w-2.5"
31
31
  }, undefined, false, undefined, this)
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/scroll-area.tsx
10
- import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
11
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
12
12
  import { jsxDEV } from "react/jsx-dev-runtime";
13
13
  "use client";
14
14
  function ScrollArea({
@@ -23,7 +23,7 @@ function ScrollArea({
23
23
  children: [
24
24
  /* @__PURE__ */ jsxDEV(ScrollAreaPrimitive.Viewport, {
25
25
  "data-slot": "scroll-area-viewport",
26
- className: "focus-visible:ring-ring/50 size-full rounded-[inherit] outline-hidden transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1",
26
+ className: "size-full rounded-[inherit] outline-hidden transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] focus-visible:ring-ring/50",
27
27
  children
28
28
  }, undefined, false, undefined, this),
29
29
  /* @__PURE__ */ jsxDEV(ScrollBar, {}, undefined, false, undefined, this),
@@ -39,11 +39,11 @@ function ScrollBar({
39
39
  return /* @__PURE__ */ jsxDEV(ScrollAreaPrimitive.ScrollAreaScrollbar, {
40
40
  "data-slot": "scroll-area-scrollbar",
41
41
  orientation,
42
- className: cn("flex touch-none p-px transition-colors select-none", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", className),
42
+ className: cn("flex touch-none select-none p-px transition-colors", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", className),
43
43
  ...props,
44
44
  children: /* @__PURE__ */ jsxDEV(ScrollAreaPrimitive.ScrollAreaThumb, {
45
45
  "data-slot": "scroll-area-thumb",
46
- className: "bg-border relative flex-1 rounded-full"
46
+ className: "relative flex-1 rounded-full bg-border"
47
47
  }, undefined, false, undefined, this)
48
48
  }, undefined, false, undefined, this);
49
49
  }
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/section.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 sectionVariants = cva("", {
14
14
  variants: {
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/select.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
10
11
  import * as SelectPrimitive from "@radix-ui/react-select";
11
12
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } 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 Select({
@@ -45,7 +45,7 @@ function SelectTrigger({
45
45
  return /* @__PURE__ */ jsxDEV(SelectPrimitive.Trigger, {
46
46
  "data-slot": "select-trigger",
47
47
  "data-size": size,
48
- className: cn("aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border-input focus-visible:border-ring focus-visible:ring-ring/50 data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-2xs outline-hidden transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
48
+ className: cn("flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-2xs outline-hidden transition-[color,box-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-[size=default]:h-9 data-[size=sm]:h-8 data-placeholder:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0", className),
49
49
  ...props,
50
50
  children: [
51
51
  children,
@@ -67,7 +67,7 @@ function SelectContent({
67
67
  return /* @__PURE__ */ jsxDEV(SelectPrimitive.Portal, {
68
68
  children: /* @__PURE__ */ jsxDEV(SelectPrimitive.Content, {
69
69
  "data-slot": "select-content",
70
- 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className),
70
+ 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in", position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1", className),
71
71
  position,
72
72
  ...props,
73
73
  children: [
@@ -87,7 +87,7 @@ function SelectLabel({
87
87
  }) {
88
88
  return /* @__PURE__ */ jsxDEV(SelectPrimitive.Label, {
89
89
  "data-slot": "select-label",
90
- className: cn("text-muted-foreground px-2 py-1.5 text-xs", className),
90
+ className: cn("px-2 py-1.5 text-muted-foreground text-xs", className),
91
91
  ...props
92
92
  }, undefined, false, undefined, this);
93
93
  }
@@ -98,7 +98,7 @@ function SelectItem({
98
98
  }) {
99
99
  return /* @__PURE__ */ jsxDEV(SelectPrimitive.Item, {
100
100
  "data-slot": "select-item",
101
- className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-xs py-1.5 pr-8 pl-2 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 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
101
+ className: cn("relative flex w-full cursor-default select-none items-center gap-2 rounded-xs py-1.5 pr-8 pl-2 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:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
102
102
  ...props,
103
103
  children: [
104
104
  /* @__PURE__ */ jsxDEV("span", {
@@ -121,7 +121,7 @@ function SelectSeparator({
121
121
  }) {
122
122
  return /* @__PURE__ */ jsxDEV(SelectPrimitive.Separator, {
123
123
  "data-slot": "select-separator",
124
- className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
124
+ className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className),
125
125
  ...props
126
126
  }, undefined, false, undefined, this);
127
127
  }
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/separator.tsx
10
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
11
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
12
12
  import { jsxDEV } from "react/jsx-dev-runtime";
13
13
  "use client";
14
14
  function Separator({
@@ -21,7 +21,7 @@ function Separator({
21
21
  "data-slot": "separator",
22
22
  decorative,
23
23
  orientation,
24
- className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
24
+ className: cn("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px", className),
25
25
  ...props
26
26
  }, undefined, false, undefined, this);
27
27
  }
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/sheet.tsx
10
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
10
11
  import * as SheetPrimitive 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 Sheet({ ...props }) {
@@ -48,7 +48,7 @@ function SheetOverlay({
48
48
  }) {
49
49
  return /* @__PURE__ */ jsxDEV(SheetPrimitive.Overlay, {
50
50
  "data-slot": "sheet-overlay",
51
- 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),
51
+ 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),
52
52
  ...props
53
53
  }, undefined, false, undefined, this);
54
54
  }
@@ -63,12 +63,12 @@ function SheetContent({
63
63
  /* @__PURE__ */ jsxDEV(SheetOverlay, {}, undefined, false, undefined, this),
64
64
  /* @__PURE__ */ jsxDEV(SheetPrimitive.Content, {
65
65
  "data-slot": "sheet-content",
66
- className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
66
+ className: cn("fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
67
67
  ...props,
68
68
  children: [
69
69
  children,
70
70
  /* @__PURE__ */ jsxDEV(SheetPrimitive.Close, {
71
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary 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",
71
+ 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-secondary",
72
72
  children: [
73
73
  /* @__PURE__ */ jsxDEV(XIcon, {
74
74
  className: "size-4"
@@ -110,7 +110,7 @@ function SheetTitle({
110
110
  }) {
111
111
  return /* @__PURE__ */ jsxDEV(SheetPrimitive.Title, {
112
112
  "data-slot": "sheet-title",
113
- className: cn("text-foreground font-semibold", className),
113
+ className: cn("font-semibold text-foreground", className),
114
114
  ...props
115
115
  }, undefined, false, undefined, this);
116
116
  }
@@ -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
  }
@@ -69,14 +69,26 @@ function Input({ className, type, ...props }) {
69
69
  return /* @__PURE__ */ jsxDEV2("input", {
70
70
  type,
71
71
  "data-slot": "input",
72
- className: cn3("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),
72
+ className: cn3("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),
73
+ ...props
74
+ }, undefined, false, undefined, this);
75
+ }
76
+ // ui/skeleton.tsx
77
+ import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
78
+ function Skeleton({
79
+ className,
80
+ ...props
81
+ }) {
82
+ return /* @__PURE__ */ jsxDEV3("div", {
83
+ "data-slot": "skeleton",
84
+ className: cn2("animate-pulse rounded-md bg-accent", className),
73
85
  ...props
74
86
  }, undefined, false, undefined, this);
75
87
  }
76
88
  // ui/separator.tsx
77
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
78
89
  import { cn as cn4 } from "@contractspec/lib.ui-kit-core/utils";
79
- import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
90
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
91
+ import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
80
92
  "use client";
81
93
  function Separator({
82
94
  className,
@@ -84,30 +96,18 @@ function Separator({
84
96
  decorative = true,
85
97
  ...props
86
98
  }) {
87
- return /* @__PURE__ */ jsxDEV3(SeparatorPrimitive.Root, {
99
+ return /* @__PURE__ */ jsxDEV4(SeparatorPrimitive.Root, {
88
100
  "data-slot": "separator",
89
101
  decorative,
90
102
  orientation,
91
- className: cn4("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
92
- ...props
93
- }, undefined, false, undefined, this);
94
- }
95
- // ui/skeleton.tsx
96
- import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
97
- function Skeleton({
98
- className,
99
- ...props
100
- }) {
101
- return /* @__PURE__ */ jsxDEV4("div", {
102
- "data-slot": "skeleton",
103
- className: cn2("bg-accent animate-pulse rounded-md", className),
103
+ className: cn4("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px", className),
104
104
  ...props
105
105
  }, undefined, false, undefined, this);
106
106
  }
107
107
  // ui/sheet.tsx
108
+ import { cn as cn5 } from "@contractspec/lib.ui-kit-core/utils";
108
109
  import * as SheetPrimitive from "@radix-ui/react-dialog";
109
110
  import { XIcon } from "lucide-react";
110
- import { cn as cn5 } from "@contractspec/lib.ui-kit-core/utils";
111
111
  import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
112
112
  "use client";
113
113
  function Sheet({ ...props }) {
@@ -146,7 +146,7 @@ function SheetOverlay({
146
146
  }) {
147
147
  return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Overlay, {
148
148
  "data-slot": "sheet-overlay",
149
- className: cn5("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),
149
+ className: cn5("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),
150
150
  ...props
151
151
  }, undefined, false, undefined, this);
152
152
  }
@@ -161,12 +161,12 @@ function SheetContent({
161
161
  /* @__PURE__ */ jsxDEV5(SheetOverlay, {}, undefined, false, undefined, this),
162
162
  /* @__PURE__ */ jsxDEV5(SheetPrimitive.Content, {
163
163
  "data-slot": "sheet-content",
164
- className: cn5("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
164
+ className: cn5("fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
165
165
  ...props,
166
166
  children: [
167
167
  children,
168
168
  /* @__PURE__ */ jsxDEV5(SheetPrimitive.Close, {
169
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary 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",
169
+ 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-secondary",
170
170
  children: [
171
171
  /* @__PURE__ */ jsxDEV5(XIcon, {
172
172
  className: "size-4"
@@ -208,7 +208,7 @@ function SheetTitle({
208
208
  }) {
209
209
  return /* @__PURE__ */ jsxDEV5(SheetPrimitive.Title, {
210
210
  "data-slot": "sheet-title",
211
- className: cn5("text-foreground font-semibold", className),
211
+ className: cn5("font-semibold text-foreground", className),
212
212
  ...props
213
213
  }, undefined, false, undefined, this);
214
214
  }
@@ -222,26 +222,9 @@ function SheetDescription({
222
222
  ...props
223
223
  }, undefined, false, undefined, this);
224
224
  }
225
- // ui/use-mobile.tsx
226
- import * as React from "react";
227
- var MOBILE_BREAKPOINT = 640;
228
- function useIsMobile() {
229
- const [isMobile, setIsMobile] = React.useState(undefined);
230
- React.useEffect(() => {
231
- const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
232
- const onChange = () => {
233
- setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
234
- };
235
- mql.addEventListener("change", onChange);
236
- setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
237
- return () => mql.removeEventListener("change", onChange);
238
- }, []);
239
- return !!isMobile;
240
- }
241
-
242
225
  // ui/tooltip.tsx
243
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
244
226
  import { cn as cn6 } from "@contractspec/lib.ui-kit-core/utils";
227
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
245
228
  import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
246
229
  "use client";
247
230
  function TooltipProvider({
@@ -282,23 +265,40 @@ function TooltipContent({
282
265
  children: /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Content, {
283
266
  "data-slot": "tooltip-content",
284
267
  sideOffset,
285
- className: cn6("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", className),
268
+ className: cn6("fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in text-balance rounded-md bg-foreground px-3 py-1.5 text-background text-xs data-[state=closed]:animate-out", className),
286
269
  ...props,
287
270
  children: [
288
271
  children,
289
272
  /* @__PURE__ */ jsxDEV6(TooltipPrimitive.Arrow, {
290
- className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px]"
273
+ className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground"
291
274
  }, undefined, false, undefined, this)
292
275
  ]
293
276
  }, undefined, true, undefined, this)
294
277
  }, undefined, false, undefined, this);
295
278
  }
279
+ // ui/use-mobile.tsx
280
+ import * as React from "react";
281
+ var MOBILE_BREAKPOINT = 640;
282
+ function useIsMobile() {
283
+ const [isMobile, setIsMobile] = React.useState(undefined);
284
+ React.useEffect(() => {
285
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
286
+ const onChange = () => {
287
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
288
+ };
289
+ mql.addEventListener("change", onChange);
290
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
291
+ return () => mql.removeEventListener("change", onChange);
292
+ }, []);
293
+ return !!isMobile;
294
+ }
295
+
296
296
  // ui/sidebar.tsx
297
- import * as React2 from "react";
297
+ import { cn as cn7 } from "@contractspec/lib.ui-kit-core/utils";
298
298
  import { Slot as Slot2 } from "@radix-ui/react-slot";
299
299
  import { cva as cva2 } from "class-variance-authority";
300
300
  import { PanelLeftIcon } from "lucide-react";
301
- import { cn as cn7 } from "@contractspec/lib.ui-kit-core/utils";
301
+ import * as React2 from "react";
302
302
  import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
303
303
  "use client";
304
304
  var SIDEBAR_COOKIE_NAME = "sidebar_state";
@@ -371,7 +371,7 @@ function SidebarProvider({
371
371
  "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
372
372
  ...style
373
373
  },
374
- className: cn7("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
374
+ className: cn7("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", className),
375
375
  ...props,
376
376
  children
377
377
  }, undefined, false, undefined, this)
@@ -390,7 +390,7 @@ function Sidebar({
390
390
  if (collapsible === "none") {
391
391
  return /* @__PURE__ */ jsxDEV7("div", {
392
392
  "data-slot": "sidebar",
393
- className: cn7("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className),
393
+ className: cn7("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", className),
394
394
  ...props,
395
395
  children
396
396
  }, undefined, false, undefined, this);
@@ -404,7 +404,7 @@ function Sidebar({
404
404
  "data-sidebar": "sidebar",
405
405
  "data-slot": "sidebar",
406
406
  "data-mobile": "true",
407
- className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",
407
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
408
408
  style: {
409
409
  "--sidebar-width": SIDEBAR_WIDTH_MOBILE
410
410
  },
@@ -430,7 +430,7 @@ function Sidebar({
430
430
  }, undefined, false, undefined, this);
431
431
  }
432
432
  return /* @__PURE__ */ jsxDEV7("div", {
433
- className: "group peer text-sidebar-foreground hidden md:block",
433
+ className: "group peer hidden text-sidebar-foreground md:block",
434
434
  "data-state": state,
435
435
  "data-collapsible": state === "collapsed" ? collapsible : "",
436
436
  "data-variant": variant,
@@ -448,7 +448,7 @@ function Sidebar({
448
448
  children: /* @__PURE__ */ jsxDEV7("div", {
449
449
  "data-sidebar": "sidebar",
450
450
  "data-slot": "sidebar-inner",
451
- className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
451
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
452
452
  children
453
453
  }, undefined, false, undefined, this)
454
454
  }, undefined, false, undefined, this)
@@ -493,7 +493,7 @@ function SidebarRail({
493
493
  tabIndex: -1,
494
494
  onClick: toggleSidebar,
495
495
  title: "Toggle Sidebar",
496
- className: cn7("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
496
+ className: cn7("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offcanvas]:translate-x-0 hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
497
497
  ...props
498
498
  }, undefined, false, undefined, this);
499
499
  }
@@ -503,7 +503,7 @@ function SidebarInset({
503
503
  }) {
504
504
  return /* @__PURE__ */ jsxDEV7("main", {
505
505
  "data-slot": "sidebar-inset",
506
- className: cn7("bg-background relative flex w-full flex-1 flex-col", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
506
+ className: cn7("relative flex w-full flex-1 flex-col bg-background", "md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm", className),
507
507
  ...props
508
508
  }, undefined, false, undefined, this);
509
509
  }
@@ -514,7 +514,7 @@ function SidebarInput({
514
514
  return /* @__PURE__ */ jsxDEV7(Input, {
515
515
  "data-slot": "sidebar-input",
516
516
  "data-sidebar": "input",
517
- className: cn7("bg-background h-8 w-full shadow-none", className),
517
+ className: cn7("h-8 w-full bg-background shadow-none", className),
518
518
  ...props
519
519
  }, undefined, false, undefined, this);
520
520
  }
@@ -547,7 +547,7 @@ function SidebarSeparator({
547
547
  return /* @__PURE__ */ jsxDEV7(Separator, {
548
548
  "data-slot": "sidebar-separator",
549
549
  "data-sidebar": "separator",
550
- className: cn7("bg-sidebar-border mx-2 w-auto", className),
550
+ className: cn7("mx-2 w-auto bg-sidebar-border", className),
551
551
  ...props
552
552
  }, undefined, false, undefined, this);
553
553
  }
@@ -582,7 +582,7 @@ function SidebarGroupLabel({
582
582
  return /* @__PURE__ */ jsxDEV7(Comp, {
583
583
  "data-slot": "sidebar-group-label",
584
584
  "data-sidebar": "group-label",
585
- className: cn7("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
585
+ className: cn7("flex h-8 shrink-0 items-center rounded-md px-2 font-medium text-sidebar-foreground/70 text-xs outline-hidden ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
586
586
  ...props
587
587
  }, undefined, false, undefined, this);
588
588
  }
@@ -595,7 +595,7 @@ function SidebarGroupAction({
595
595
  return /* @__PURE__ */ jsxDEV7(Comp, {
596
596
  "data-slot": "sidebar-group-action",
597
597
  "data-sidebar": "group-action",
598
- className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
598
+ className: cn7("absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
599
599
  ...props
600
600
  }, undefined, false, undefined, this);
601
601
  }
@@ -701,7 +701,7 @@ function SidebarMenuAction({
701
701
  return /* @__PURE__ */ jsxDEV7(Comp, {
702
702
  "data-slot": "sidebar-menu-action",
703
703
  "data-sidebar": "menu-action",
704
- className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
704
+ className: cn7("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0", className),
705
705
  ...props
706
706
  }, undefined, false, undefined, this);
707
707
  }
@@ -712,7 +712,7 @@ function SidebarMenuBadge({
712
712
  return /* @__PURE__ */ jsxDEV7("div", {
713
713
  "data-slot": "sidebar-menu-badge",
714
714
  "data-sidebar": "menu-badge",
715
- className: cn7("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
715
+ className: cn7("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 font-medium text-sidebar-foreground text-xs tabular-nums", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
716
716
  ...props
717
717
  }, undefined, false, undefined, this);
718
718
  }
@@ -751,7 +751,7 @@ function SidebarMenuSub({
751
751
  return /* @__PURE__ */ jsxDEV7("ul", {
752
752
  "data-slot": "sidebar-menu-sub",
753
753
  "data-sidebar": "menu-sub",
754
- className: cn7("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
754
+ className: cn7("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-sidebar-border border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
755
755
  ...props
756
756
  }, undefined, false, undefined, this);
757
757
  }
@@ -779,7 +779,7 @@ function SidebarMenuSubButton({
779
779
  "data-sidebar": "menu-sub-button",
780
780
  "data-size": size,
781
781
  "data-active": isActive,
782
- className: cn7("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
782
+ className: cn7("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
783
783
  ...props
784
784
  }, undefined, false, undefined, this);
785
785
  }
@@ -21,7 +21,7 @@ function Skeleton({
21
21
  }) {
22
22
  return /* @__PURE__ */ jsxDEV("div", {
23
23
  "data-slot": "skeleton",
24
- className: cn("bg-accent animate-pulse rounded-md", className),
24
+ className: cn("animate-pulse rounded-md bg-accent", className),
25
25
  ...props
26
26
  }, undefined, false, undefined, this);
27
27
  }
@@ -7,9 +7,9 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // ui/slider.tsx
10
- import * as React from "react";
11
- import * as SliderPrimitive from "@radix-ui/react-slider";
12
10
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
11
+ import * as SliderPrimitive from "@radix-ui/react-slider";
12
+ import * as React from "react";
13
13
  import { jsxDEV } from "react/jsx-dev-runtime";
14
14
  "use client";
15
15
  function Slider({
@@ -27,20 +27,20 @@ function Slider({
27
27
  value,
28
28
  min,
29
29
  max,
30
- className: cn("relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", className),
30
+ className: cn("relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col data-disabled:opacity-50", className),
31
31
  ...props,
32
32
  children: [
33
33
  /* @__PURE__ */ jsxDEV(SliderPrimitive.Track, {
34
34
  "data-slot": "slider-track",
35
- className: cn("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),
35
+ className: cn("relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1.5"),
36
36
  children: /* @__PURE__ */ jsxDEV(SliderPrimitive.Range, {
37
37
  "data-slot": "slider-range",
38
- className: cn("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
38
+ className: cn("absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")
39
39
  }, undefined, false, undefined, this)
40
40
  }, undefined, false, undefined, this),
41
41
  Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsxDEV(SliderPrimitive.Thumb, {
42
42
  "data-slot": "slider-thumb",
43
- className: "border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-2xs transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
43
+ className: "block size-4 shrink-0 rounded-full border border-primary bg-background shadow-2xs ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50"
44
44
  }, index, false, undefined, this))
45
45
  ]
46
46
  }, undefined, true, undefined, this);
@@ -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: {