@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
package/dist/ui/empty.js CHANGED
@@ -2,13 +2,13 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/empty.tsx
5
- import { cva } from "class-variance-authority";
6
5
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import { cva } from "class-variance-authority";
7
7
  import { jsxDEV } from "react/jsx-dev-runtime";
8
8
  function Empty({ className, ...props }) {
9
9
  return /* @__PURE__ */ jsxDEV("div", {
10
10
  "data-slot": "empty",
11
- 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),
11
+ 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),
12
12
  ...props
13
13
  }, undefined, false, undefined, this);
14
14
  }
@@ -22,11 +22,11 @@ function EmptyHeader({
22
22
  ...props
23
23
  }, undefined, false, undefined, this);
24
24
  }
25
- var emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
25
+ var emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
26
26
  variants: {
27
27
  variant: {
28
28
  default: "bg-transparent",
29
- icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
29
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
30
30
  }
31
31
  },
32
32
  defaultVariants: {
@@ -51,7 +51,7 @@ function EmptyTitle({
51
51
  }) {
52
52
  return /* @__PURE__ */ jsxDEV("div", {
53
53
  "data-slot": "empty-title",
54
- className: cn("text-lg font-medium tracking-tight", className),
54
+ className: cn("font-medium text-lg tracking-tight", className),
55
55
  ...props
56
56
  }, undefined, false, undefined, this);
57
57
  }
@@ -61,7 +61,7 @@ function EmptyDescription({
61
61
  }) {
62
62
  return /* @__PURE__ */ jsxDEV("p", {
63
63
  "data-slot": "empty-description",
64
- className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", className),
64
+ className: cn("text-muted-foreground text-sm/relaxed [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
65
65
  ...props
66
66
  }, undefined, false, undefined, this);
67
67
  }
@@ -71,7 +71,7 @@ function EmptyContent({
71
71
  }) {
72
72
  return /* @__PURE__ */ jsxDEV("div", {
73
73
  "data-slot": "empty-content",
74
- className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
74
+ className: cn("flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm", className),
75
75
  ...props
76
76
  }, undefined, false, undefined, this);
77
77
  }
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
3
  import { Label } from './label';
4
4
  declare function FieldSet({ className, ...props }: React.ComponentPropsWithoutRef<'fieldset'>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function FieldLegend({ className, variant, ...props }: React.ComponentPropsWithoutRef<'legend'> & {
@@ -22,4 +22,4 @@ declare function FieldError({ className, children, errors, ...props }: React.Com
22
22
  message?: string;
23
23
  } | undefined)[];
24
24
  }): import("react/jsx-runtime").JSX.Element | null;
25
- export { Field, FieldLabel, FieldDescription, FieldError, FieldGroup, FieldLegend, FieldSeparator, FieldSet, FieldContent, FieldTitle, };
25
+ export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, };
package/dist/ui/field.js CHANGED
@@ -2,8 +2,8 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/label.tsx
5
- import * as LabelPrimitive from "@radix-ui/react-label";
6
5
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import * as LabelPrimitive from "@radix-ui/react-label";
7
7
  import { jsxDEV } from "react/jsx-dev-runtime";
8
8
  "use client";
9
9
  function Label({
@@ -12,13 +12,13 @@ function Label({
12
12
  }) {
13
13
  return /* @__PURE__ */ jsxDEV(LabelPrimitive.Root, {
14
14
  "data-slot": "label",
15
- className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
15
+ className: cn("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", className),
16
16
  ...props
17
17
  }, undefined, false, undefined, this);
18
18
  }
19
19
  // ui/separator.tsx
20
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
21
20
  import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
21
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
22
22
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
23
23
  "use client";
24
24
  function Separator({
@@ -31,14 +31,14 @@ function Separator({
31
31
  "data-slot": "separator",
32
32
  decorative,
33
33
  orientation,
34
- className: cn2("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),
34
+ className: cn2("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),
35
35
  ...props
36
36
  }, undefined, false, undefined, this);
37
37
  }
38
38
  // ui/field.tsx
39
- import * as React from "react";
40
- import { cva } from "class-variance-authority";
41
39
  import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
40
+ import { cva } from "class-variance-authority";
41
+ import * as React from "react";
42
42
  import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
43
43
  "use client";
44
44
  function FieldSet({
@@ -83,7 +83,7 @@ var fieldVariants = cva("group/field flex w-full gap-3 data-[invalid=true]:text-
83
83
  "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
84
84
  ],
85
85
  responsive: [
86
- "flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto",
86
+ "@md/field-group:flex-row flex-col @md/field-group:items-center *:w-full @md/field-group:*:w-auto [&>.sr-only]:w-auto",
87
87
  "@md/field-group:data-[slot=field-label]:*:flex-auto",
88
88
  "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
89
89
  ]
@@ -122,7 +122,7 @@ function FieldLabel({
122
122
  }) {
123
123
  return /* @__PURE__ */ jsxDEV3(Label, {
124
124
  "data-slot": "field-label",
125
- className: cn3("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-4", "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10", className),
125
+ className: cn3("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-4", "has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5 dark:has-data-[state=checked]:bg-primary/10", className),
126
126
  ...props
127
127
  }, undefined, false, undefined, this);
128
128
  }
@@ -132,7 +132,7 @@ function FieldTitle({
132
132
  }) {
133
133
  return /* @__PURE__ */ jsxDEV3("div", {
134
134
  "data-slot": "field-label",
135
- className: cn3("flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50", className),
135
+ className: cn3("flex w-fit items-center gap-2 font-medium text-sm leading-snug group-data-[disabled=true]/field:opacity-50", className),
136
136
  ...props
137
137
  }, undefined, false, undefined, this);
138
138
  }
@@ -142,7 +142,7 @@ function FieldDescription({
142
142
  }) {
143
143
  return /* @__PURE__ */ jsxDEV3("p", {
144
144
  "data-slot": "field-description",
145
- className: cn3("text-muted-foreground text-sm leading-normal font-normal group-has-data-[orientation=horizontal]/field:text-balance", "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
145
+ className: cn3("font-normal text-muted-foreground text-sm leading-normal group-has-data-[orientation=horizontal]/field:text-balance", "nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
146
146
  ...props
147
147
  }, undefined, false, undefined, this);
148
148
  }
@@ -161,7 +161,7 @@ function FieldSeparator({
161
161
  className: "absolute inset-0 top-1/2"
162
162
  }, undefined, false, undefined, this),
163
163
  children && /* @__PURE__ */ jsxDEV3("span", {
164
- className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
164
+ className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
165
165
  "data-slot": "field-separator-content",
166
166
  children
167
167
  }, undefined, false, undefined, this)
@@ -197,7 +197,7 @@ function FieldError({
197
197
  return /* @__PURE__ */ jsxDEV3("div", {
198
198
  role: "alert",
199
199
  "data-slot": "field-error",
200
- className: cn3("text-destructive text-sm font-normal", className),
200
+ className: cn3("font-normal text-destructive text-sm", className),
201
201
  ...props,
202
202
  children: content
203
203
  }, undefined, false, undefined, this);
package/dist/ui/form.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import * as React from 'react';
2
1
  import * as LabelPrimitive from '@radix-ui/react-label';
3
2
  import { Slot } from '@radix-ui/react-slot';
3
+ import * as React from 'react';
4
4
  import { type ControllerProps, type FieldPath, type FieldValues } from 'react-hook-form';
5
5
  export { zodResolver } from '@hookform/resolvers/zod';
6
- export { useForm, type UseFormReturn, useFieldArray } from 'react-hook-form';
6
+ export { type UseFormReturn, useFieldArray, useForm } from 'react-hook-form';
7
7
  declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
8
8
  declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
9
9
  declare const useFormField: () => {
@@ -23,4 +23,4 @@ declare function FormLabel({ className, ...props }: React.ComponentPropsWithoutR
23
23
  declare function FormControl({ ...props }: React.ComponentPropsWithoutRef<typeof Slot>): import("react/jsx-runtime").JSX.Element;
24
24
  declare function FormDescription({ className, ...props }: React.ComponentPropsWithoutRef<'p'>): import("react/jsx-runtime").JSX.Element;
25
25
  declare function FormMessage({ className, ...props }: React.ComponentPropsWithoutRef<'p'>): import("react/jsx-runtime").JSX.Element | null;
26
- export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
26
+ export { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useFormField, };
package/dist/ui/form.js CHANGED
@@ -2,8 +2,8 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/label.tsx
5
- import * as LabelPrimitive from "@radix-ui/react-label";
6
5
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import * as LabelPrimitive from "@radix-ui/react-label";
7
7
  import { jsxDEV } from "react/jsx-dev-runtime";
8
8
  "use client";
9
9
  function Label({
@@ -12,7 +12,7 @@ function Label({
12
12
  }) {
13
13
  return /* @__PURE__ */ jsxDEV(LabelPrimitive.Root, {
14
14
  "data-slot": "label",
15
- className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
15
+ className: cn("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", className),
16
16
  ...props
17
17
  }, undefined, false, undefined, this);
18
18
  }
@@ -24,8 +24,8 @@ function cn2(...inputs) {
24
24
  }
25
25
 
26
26
  // ui/form.tsx
27
- import * as React from "react";
28
27
  import { Slot } from "@radix-ui/react-slot";
28
+ import * as React from "react";
29
29
  import {
30
30
  Controller,
31
31
  FormProvider,
@@ -33,7 +33,7 @@ import {
33
33
  useFormState
34
34
  } from "react-hook-form";
35
35
  import { zodResolver } from "@hookform/resolvers/zod";
36
- import { useForm, useFieldArray } from "react-hook-form";
36
+ import { useFieldArray, useForm } from "react-hook-form";
37
37
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
38
38
  "use client";
39
39
  var Form = FormProvider;
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
2
1
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
2
+ import * as React from 'react';
3
3
  declare function HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
4
  declare function HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function HoverCardContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof HoverCardPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
6
- export { HoverCard, HoverCardTrigger, HoverCardContent };
6
+ export { HoverCard, HoverCardContent, HoverCardTrigger };
@@ -2,8 +2,8 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/hover-card.tsx
5
- import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
6
5
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
7
7
  import { jsxDEV } from "react/jsx-dev-runtime";
8
8
  "use client";
9
9
  function HoverCard({
@@ -34,7 +34,7 @@ function HoverCardContent({
34
34
  "data-slot": "hover-card-content",
35
35
  align,
36
36
  sideOffset,
37
- 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 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
37
+ 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 w-64 origin-(--radix-hover-card-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),
38
38
  ...props
39
39
  }, undefined, false, undefined, this)
40
40
  }, undefined, false, undefined, this);
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
3
  import { Button } from './button';
4
4
  declare function InputGroup({ className, ...props }: React.ComponentPropsWithoutRef<'div'>): import("react/jsx-runtime").JSX.Element;
5
5
  declare const inputGroupAddonVariants: (props?: ({
@@ -13,4 +13,4 @@ declare function InputGroupButton({ className, type, variant, size, ...props }:
13
13
  declare function InputGroupText({ className, ...props }: React.ComponentPropsWithoutRef<'span'>): import("react/jsx-runtime").JSX.Element;
14
14
  declare function InputGroupInput({ className, ...props }: React.ComponentPropsWithoutRef<'input'>): import("react/jsx-runtime").JSX.Element;
15
15
  declare function InputGroupTextarea({ className, ...props }: React.ComponentPropsWithoutRef<'textarea'>): import("react/jsx-runtime").JSX.Element;
16
- export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, };
16
+ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, };
@@ -2,23 +2,23 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/button.tsx
5
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
5
6
  import { Slot } from "@radix-ui/react-slot";
6
7
  import { cva } from "class-variance-authority";
7
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
8
8
  import { jsxDEV } from "react/jsx-dev-runtime";
9
- var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm 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", {
9
+ var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
10
10
  variants: {
11
11
  variant: {
12
12
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
14
- 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",
13
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
14
+ outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
15
15
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
16
16
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
17
17
  link: "text-primary underline-offset-4 hover:underline"
18
18
  },
19
19
  size: {
20
20
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
21
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
21
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
22
22
  lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
23
23
  icon: "size-9"
24
24
  }
@@ -57,7 +57,7 @@ function Input({ className, type, ...props }) {
57
57
  return /* @__PURE__ */ jsxDEV2("input", {
58
58
  type,
59
59
  "data-slot": "input",
60
- 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),
60
+ className: cn2("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30", "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", className),
61
61
  ...props
62
62
  }, undefined, false, undefined, this);
63
63
  }
@@ -67,13 +67,13 @@ import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
67
67
  function Textarea({ className, ...props }) {
68
68
  return /* @__PURE__ */ jsxDEV3("textarea", {
69
69
  "data-slot": "textarea",
70
- className: cn3("aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-2xs outline-hidden transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", className),
70
+ className: cn3("field-sizing-content flex min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-2xs outline-hidden transition-[color,box-shadow] placeholder:text-muted-foreground 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 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40", className),
71
71
  ...props
72
72
  }, undefined, false, undefined, this);
73
73
  }
74
74
  // ui/input-group.tsx
75
- import { cva as cva2 } from "class-variance-authority";
76
75
  import { cn as cn4 } from "@contractspec/lib.ui-kit-core/utils";
76
+ import { cva as cva2 } from "class-variance-authority";
77
77
  import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
78
78
  "use client";
79
79
  function InputGroup({
@@ -83,17 +83,17 @@ function InputGroup({
83
83
  return /* @__PURE__ */ jsxDEV4("div", {
84
84
  "data-slot": "input-group",
85
85
  role: "group",
86
- className: cn4("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]", "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
86
+ className: cn4("group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs outline-none transition-[color,box-shadow] dark:bg-input/30", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50", "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
87
87
  ...props
88
88
  }, undefined, false, undefined, this);
89
89
  }
90
- var inputGroupAddonVariants = cva2("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50", {
90
+ var inputGroupAddonVariants = cva2("flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 font-medium text-muted-foreground text-sm group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
91
91
  variants: {
92
92
  align: {
93
93
  "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
94
94
  "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
95
- "block-start": "order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5",
96
- "block-end": "order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"
95
+ "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
96
+ "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
97
97
  }
98
98
  },
99
99
  defaultVariants: {
@@ -125,11 +125,11 @@ function InputGroupAddon({
125
125
  ...props
126
126
  }, undefined, false, undefined, this);
127
127
  }
128
- var inputGroupButtonVariants = cva2("text-sm shadow-none flex gap-2 items-center", {
128
+ var inputGroupButtonVariants = cva2("flex items-center gap-2 text-sm shadow-none", {
129
129
  variants: {
130
130
  size: {
131
- xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
132
- sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
131
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
132
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
133
133
  "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
134
134
  "icon-sm": "size-8 p-0 has-[>svg]:p-0"
135
135
  }
@@ -158,7 +158,7 @@ function InputGroupText({
158
158
  ...props
159
159
  }) {
160
160
  return /* @__PURE__ */ jsxDEV4("span", {
161
- className: cn4("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
161
+ className: cn4("flex items-center gap-2 text-muted-foreground text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none", className),
162
162
  ...props
163
163
  }, undefined, false, undefined, this);
164
164
  }
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import { OTPInput } from 'input-otp';
2
+ import * as React from 'react';
3
3
  declare function InputOTP({ className, containerClassName, ref, ...props }: React.ComponentPropsWithoutRef<typeof OTPInput> & {
4
4
  ref?: React.Ref<React.ElementRef<typeof OTPInput>>;
5
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -13,4 +13,4 @@ declare function InputOTPSlot({ index, className, ref, ...props }: React.Compone
13
13
  declare function InputOTPSeparator({ ref, ...props }: React.ComponentPropsWithoutRef<'div'> & {
14
14
  ref?: React.Ref<HTMLDivElement>;
15
15
  }): import("react/jsx-runtime").JSX.Element;
16
- export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };
16
+ export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
@@ -2,10 +2,10 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/input-otp.tsx
5
- import * as React from "react";
5
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
6
  import { OTPInput, OTPInputContext } from "input-otp";
7
7
  import { Dot } from "lucide-react";
8
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
8
+ import * as React from "react";
9
9
  import { jsxDEV } from "react/jsx-dev-runtime";
10
10
  "use client";
11
11
  function InputOTP({
@@ -42,14 +42,14 @@ function InputOTPSlot({
42
42
  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index] || {};
43
43
  return /* @__PURE__ */ jsxDEV("div", {
44
44
  ref,
45
- className: cn("border-input relative flex h-10 w-10 items-center justify-center border-y border-r text-base transition-all first:rounded-l-md first:border-l last:rounded-r-md", isActive && "ring-ring ring-offset-background z-10 ring-2", className),
45
+ className: cn("relative flex h-10 w-10 items-center justify-center border-input border-y border-r text-base transition-all first:rounded-l-md first:border-l last:rounded-r-md", isActive && "z-10 ring-2 ring-ring ring-offset-background", className),
46
46
  ...props,
47
47
  children: [
48
48
  char,
49
49
  hasFakeCaret && /* @__PURE__ */ jsxDEV("div", {
50
50
  className: "pointer-events-none absolute inset-0 flex items-center justify-center",
51
51
  children: /* @__PURE__ */ jsxDEV("div", {
52
- className: "animate-caret-blink bg-foreground h-4 w-px duration-1000"
52
+ className: "h-4 w-px animate-caret-blink bg-foreground duration-1000"
53
53
  }, undefined, false, undefined, this)
54
54
  }, undefined, false, undefined, this)
55
55
  ]
package/dist/ui/input.js CHANGED
@@ -8,7 +8,7 @@ function Input({ className, type, ...props }) {
8
8
  return /* @__PURE__ */ jsxDEV("input", {
9
9
  type,
10
10
  "data-slot": "input",
11
- className: cn("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),
11
+ className: cn("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),
12
12
  ...props
13
13
  }, undefined, false, undefined, this);
14
14
  }
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
1
  import * as LabelPrimitive from '@radix-ui/react-label';
2
+ import * as React from 'react';
3
3
  declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
4
  export { Label };
package/dist/ui/label.js CHANGED
@@ -2,8 +2,8 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/label.tsx
5
- import * as LabelPrimitive from "@radix-ui/react-label";
6
5
  import { cn } from "@contractspec/lib.ui-kit-core/utils";
6
+ import * as LabelPrimitive from "@radix-ui/react-label";
7
7
  import { jsxDEV } from "react/jsx-dev-runtime";
8
8
  "use client";
9
9
  function Label({
@@ -12,7 +12,7 @@ function Label({
12
12
  }) {
13
13
  return /* @__PURE__ */ jsxDEV(LabelPrimitive.Root, {
14
14
  "data-slot": "label",
15
- className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
15
+ className: cn("flex select-none items-center gap-2 font-medium text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", className),
16
16
  ...props
17
17
  }, undefined, false, undefined, this);
18
18
  }
@@ -2,23 +2,23 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/button.tsx
5
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
5
6
  import { Slot } from "@radix-ui/react-slot";
6
7
  import { cva } from "class-variance-authority";
7
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
8
8
  import { jsxDEV } from "react/jsx-dev-runtime";
9
- var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm 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", {
9
+ var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
10
10
  variants: {
11
11
  variant: {
12
12
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
14
- 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",
13
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
14
+ outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
15
15
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
16
16
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
17
17
  link: "text-primary underline-offset-4 hover:underline"
18
18
  },
19
19
  size: {
20
20
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
21
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
21
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
22
22
  lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
23
23
  icon: "size-9"
24
24
  }
@@ -51,8 +51,8 @@ function Button({
51
51
  }, undefined, false, undefined, this);
52
52
  }
53
53
  // ui/stack.tsx
54
- import { cva as cva2 } from "class-variance-authority";
55
54
  import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
55
+ import { cva as cva2 } from "class-variance-authority";
56
56
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
57
57
  var vStackVariants = cva2("flex flex-col", {
58
58
  variants: {
@@ -215,13 +215,13 @@ function Box({
215
215
  }, undefined, false, undefined, this);
216
216
  }
217
217
  // ui/text.tsx
218
- import { Slot as Slot2 } from "@radix-ui/react-slot";
219
218
  import { cn as cn3 } from "@contractspec/lib.ui-kit-core/utils";
219
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
220
220
  import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
221
221
  function Text({ className, asChild = false, ...props }) {
222
222
  const Component = asChild ? Slot2 : "p";
223
223
  return /* @__PURE__ */ jsxDEV3(Component, {
224
- className: cn3("text-foreground web:select-text text-base", className),
224
+ className: cn3("web:select-text text-base text-foreground", className),
225
225
  ...props
226
226
  }, undefined, false, undefined, this);
227
227
  }
@@ -1,4 +1,4 @@
1
1
  export * from './MapBase';
2
- export * from './MapMarkers';
3
2
  export * from './MapGeoJsonOverlay';
4
3
  export * from './MapHeatmapH3';
4
+ export * from './MapMarkers';
@@ -24,15 +24,15 @@ function FeatureGrid({
24
24
  className: "rounded-lg border p-6",
25
25
  children: [
26
26
  it.icon && /* @__PURE__ */ jsxDEV("div", {
27
- className: "text-primary mb-3",
27
+ className: "mb-3 text-primary",
28
28
  children: it.icon
29
29
  }, undefined, false, undefined, this),
30
30
  /* @__PURE__ */ jsxDEV("h3", {
31
- className: "text-lg font-semibold",
31
+ className: "font-semibold text-lg",
32
32
  children: it.title
33
33
  }, undefined, false, undefined, this),
34
34
  it.description && /* @__PURE__ */ jsxDEV("p", {
35
- className: "text-muted-foreground mt-2 text-base",
35
+ className: "mt-2 text-base text-muted-foreground",
36
36
  children: it.description
37
37
  }, undefined, false, undefined, this)
38
38
  ]
@@ -2,23 +2,23 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // ui/button.tsx
5
+ import { cn } from "@contractspec/lib.ui-kit-core/utils";
5
6
  import { Slot } from "@radix-ui/react-slot";
6
7
  import { cva } from "class-variance-authority";
7
- import { cn } from "@contractspec/lib.ui-kit-core/utils";
8
8
  import { jsxDEV } from "react/jsx-dev-runtime";
9
- var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm 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", {
9
+ var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-hidden transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
10
10
  variants: {
11
11
  variant: {
12
12
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
14
- 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",
13
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
14
+ outline: "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
15
15
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
16
16
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
17
17
  link: "text-primary underline-offset-4 hover:underline"
18
18
  },
19
19
  size: {
20
20
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
21
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
21
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
22
22
  lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
23
23
  icon: "size-9"
24
24
  }
@@ -70,11 +70,11 @@ function Hero({
70
70
  className: cn2("mx-auto max-w-4xl py-16 text-center", className),
71
71
  children: [
72
72
  /* @__PURE__ */ jsxDEV2("h1", {
73
- className: "text-4xl font-bold tracking-tight md:text-5xl",
73
+ className: "font-bold text-4xl tracking-tight md:text-5xl",
74
74
  children: title
75
75
  }, undefined, false, undefined, this),
76
76
  subtitle && /* @__PURE__ */ jsxDEV2("p", {
77
- className: "text-muted-foreground mt-4 text-lg md:text-xl",
77
+ className: "mt-4 text-lg text-muted-foreground md:text-xl",
78
78
  children: subtitle
79
79
  }, undefined, false, undefined, this),
80
80
  (primaryCta || secondaryCta) && /* @__PURE__ */ jsxDEV2("div", {