harebear-ui 0.0.0-stage → 0.2.2

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 (198) hide show
  1. package/AGENTS.md +66 -0
  2. package/LICENSE +21 -0
  3. package/README.md +92 -2
  4. package/bin/harebear-ui.mjs +125 -0
  5. package/dist/components/admin/activity-feed.d.ts +15 -0
  6. package/dist/components/admin/activity-feed.js +50 -0
  7. package/dist/components/admin/app-shell.d.ts +47 -0
  8. package/dist/components/admin/app-shell.js +108 -0
  9. package/dist/components/admin/callout.d.ts +7 -0
  10. package/dist/components/admin/callout.js +18 -0
  11. package/dist/components/admin/key-value-grid.d.ts +11 -0
  12. package/dist/components/admin/key-value-grid.js +23 -0
  13. package/dist/components/admin/link-tile.d.ts +17 -0
  14. package/dist/components/admin/link-tile.js +36 -0
  15. package/dist/components/admin/page-header.d.ts +14 -0
  16. package/dist/components/admin/page-header.js +41 -0
  17. package/dist/components/admin/search-input.d.ts +12 -0
  18. package/dist/components/admin/search-input.js +32 -0
  19. package/dist/components/admin/stat-card.d.ts +20 -0
  20. package/dist/components/admin/stat-card.js +53 -0
  21. package/dist/components/admin/status.d.ts +12 -0
  22. package/dist/components/admin/status.js +32 -0
  23. package/dist/components/admin/timeline.d.ts +13 -0
  24. package/dist/components/admin/timeline.js +36 -0
  25. package/dist/components/admin/usage-meter.d.ts +17 -0
  26. package/dist/components/admin/usage-meter.js +43 -0
  27. package/dist/components/admin/user-chip.d.ts +14 -0
  28. package/dist/components/admin/user-chip.js +38 -0
  29. package/dist/components/ai/chat.d.ts +44 -0
  30. package/dist/components/ai/chat.js +151 -0
  31. package/dist/components/ai/code-block.d.ts +27 -0
  32. package/dist/components/ai/code-block.js +63 -0
  33. package/dist/components/ai/conversation-list.d.ts +18 -0
  34. package/dist/components/ai/conversation-list.js +30 -0
  35. package/dist/components/ai/model-picker.d.ts +21 -0
  36. package/dist/components/ai/model-picker.js +55 -0
  37. package/dist/components/ai/prompt-input.d.ts +27 -0
  38. package/dist/components/ai/prompt-input.js +99 -0
  39. package/dist/components/auth/auth.d.ts +85 -0
  40. package/dist/components/auth/auth.js +325 -0
  41. package/dist/components/data/bar-list.d.ts +14 -0
  42. package/dist/components/data/bar-list.js +27 -0
  43. package/dist/components/data/data-table.d.ts +70 -0
  44. package/dist/components/data/data-table.js +208 -0
  45. package/dist/components/data/sparkline.d.ts +16 -0
  46. package/dist/components/data/sparkline.js +72 -0
  47. package/dist/components/data/status-bars.d.ts +17 -0
  48. package/dist/components/data/status-bars.js +37 -0
  49. package/dist/components/data/trend-chart.d.ts +31 -0
  50. package/dist/components/data/trend-chart.js +136 -0
  51. package/dist/components/theme/theme-provider.d.ts +42 -0
  52. package/dist/components/theme/theme-provider.js +110 -0
  53. package/dist/components/theme/theme-toggle.d.ts +5 -0
  54. package/dist/components/theme/theme-toggle.js +21 -0
  55. package/dist/components/ui/accordion.d.ts +7 -0
  56. package/dist/components/ui/accordion.js +53 -0
  57. package/dist/components/ui/alert-dialog.d.ts +18 -0
  58. package/dist/components/ui/alert-dialog.js +99 -0
  59. package/dist/components/ui/alert.d.ts +10 -0
  60. package/dist/components/ui/alert.js +42 -0
  61. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  62. package/dist/components/ui/aspect-ratio.js +11 -0
  63. package/dist/components/ui/attachment.d.ts +24 -0
  64. package/dist/components/ui/attachment.js +100 -0
  65. package/dist/components/ui/avatar.d.ts +11 -0
  66. package/dist/components/ui/avatar.js +49 -0
  67. package/dist/components/ui/badge.d.ts +9 -0
  68. package/dist/components/ui/badge.js +30 -0
  69. package/dist/components/ui/breadcrumb.d.ts +11 -0
  70. package/dist/components/ui/breadcrumb.js +70 -0
  71. package/dist/components/ui/bubble.d.ts +17 -0
  72. package/dist/components/ui/bubble.js +71 -0
  73. package/dist/components/ui/button-group.d.ts +11 -0
  74. package/dist/components/ui/button-group.js +39 -0
  75. package/dist/components/ui/button.d.ts +11 -0
  76. package/dist/components/ui/button.js +55 -0
  77. package/dist/components/ui/calendar.d.ts +10 -0
  78. package/dist/components/ui/calendar.js +108 -0
  79. package/dist/components/ui/card.d.ts +11 -0
  80. package/dist/components/ui/card.js +55 -0
  81. package/dist/components/ui/carousel.d.ts +28 -0
  82. package/dist/components/ui/carousel.js +131 -0
  83. package/dist/components/ui/chart.d.ts +44 -0
  84. package/dist/components/ui/chart.js +148 -0
  85. package/dist/components/ui/checkbox.d.ts +4 -0
  86. package/dist/components/ui/checkbox.js +19 -0
  87. package/dist/components/ui/code-block.d.ts +26 -0
  88. package/dist/components/ui/code-block.js +123 -0
  89. package/dist/components/ui/collapsible.d.ts +5 -0
  90. package/dist/components/ui/collapsible.js +23 -0
  91. package/dist/components/ui/combobox.d.ts +24 -0
  92. package/dist/components/ui/combobox.js +162 -0
  93. package/dist/components/ui/command.d.ts +18 -0
  94. package/dist/components/ui/command.js +86 -0
  95. package/dist/components/ui/context-menu.d.ts +31 -0
  96. package/dist/components/ui/context-menu.js +123 -0
  97. package/dist/components/ui/dialog.d.ts +17 -0
  98. package/dist/components/ui/dialog.js +94 -0
  99. package/dist/components/ui/direction.d.ts +7 -0
  100. package/dist/components/ui/direction.js +12 -0
  101. package/dist/components/ui/drawer.d.ts +13 -0
  102. package/dist/components/ui/drawer.js +76 -0
  103. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  104. package/dist/components/ui/dropdown-menu.js +126 -0
  105. package/dist/components/ui/empty.d.ts +11 -0
  106. package/dist/components/ui/empty.js +59 -0
  107. package/dist/components/ui/field.d.ts +24 -0
  108. package/dist/components/ui/field.js +109 -0
  109. package/dist/components/ui/hover-card.d.ts +6 -0
  110. package/dist/components/ui/hover-card.js +30 -0
  111. package/dist/components/ui/input-group.d.ts +16 -0
  112. package/dist/components/ui/input-group.js +77 -0
  113. package/dist/components/ui/input-otp.d.ts +11 -0
  114. package/dist/components/ui/input-otp.js +46 -0
  115. package/dist/components/ui/input.d.ts +3 -0
  116. package/dist/components/ui/input.js +13 -0
  117. package/dist/components/ui/item.d.ts +23 -0
  118. package/dist/components/ui/item.js +117 -0
  119. package/dist/components/ui/kbd.d.ts +3 -0
  120. package/dist/components/ui/kbd.js +19 -0
  121. package/dist/components/ui/label.d.ts +4 -0
  122. package/dist/components/ui/label.js +13 -0
  123. package/dist/components/ui/marker.d.ts +11 -0
  124. package/dist/components/ui/marker.js +39 -0
  125. package/dist/components/ui/menubar.d.ts +30 -0
  126. package/dist/components/ui/menubar.js +133 -0
  127. package/dist/components/ui/message-scroller.d.ts +10 -0
  128. package/dist/components/ui/message-scroller.js +59 -0
  129. package/dist/components/ui/message.d.ts +10 -0
  130. package/dist/components/ui/message.js +48 -0
  131. package/dist/components/ui/native-select.d.ts +8 -0
  132. package/dist/components/ui/native-select.js +37 -0
  133. package/dist/components/ui/navigation-menu.d.ts +14 -0
  134. package/dist/components/ui/navigation-menu.js +79 -0
  135. package/dist/components/ui/pagination.d.ts +17 -0
  136. package/dist/components/ui/pagination.js +79 -0
  137. package/dist/components/ui/popover.d.ts +10 -0
  138. package/dist/components/ui/popover.js +54 -0
  139. package/dist/components/ui/progress.d.ts +4 -0
  140. package/dist/components/ui/progress.js +18 -0
  141. package/dist/components/ui/questionnaire.d.ts +19 -0
  142. package/dist/components/ui/questionnaire.js +168 -0
  143. package/dist/components/ui/radio-group.d.ts +5 -0
  144. package/dist/components/ui/radio-group.js +25 -0
  145. package/dist/components/ui/resizable.d.ts +7 -0
  146. package/dist/components/ui/resizable.js +27 -0
  147. package/dist/components/ui/scroll-area.d.ts +5 -0
  148. package/dist/components/ui/scroll-area.js +35 -0
  149. package/dist/components/ui/select.d.ts +15 -0
  150. package/dist/components/ui/select.js +98 -0
  151. package/dist/components/ui/separator.d.ts +4 -0
  152. package/dist/components/ui/separator.js +15 -0
  153. package/dist/components/ui/sheet.d.ts +14 -0
  154. package/dist/components/ui/sheet.js +88 -0
  155. package/dist/components/ui/sidebar.d.ts +69 -0
  156. package/dist/components/ui/sidebar.js +377 -0
  157. package/dist/components/ui/skeleton.d.ts +2 -0
  158. package/dist/components/ui/skeleton.js +12 -0
  159. package/dist/components/ui/slider.d.ts +4 -0
  160. package/dist/components/ui/slider.js +35 -0
  161. package/dist/components/ui/sonner.d.ts +3 -0
  162. package/dist/components/ui/sonner.js +29 -0
  163. package/dist/components/ui/spinner.d.ts +2 -0
  164. package/dist/components/ui/spinner.js +15 -0
  165. package/dist/components/ui/switch.d.ts +6 -0
  166. package/dist/components/ui/switch.js +18 -0
  167. package/dist/components/ui/table.d.ts +10 -0
  168. package/dist/components/ui/table.js +65 -0
  169. package/dist/components/ui/tabs.d.ts +11 -0
  170. package/dist/components/ui/tabs.js +45 -0
  171. package/dist/components/ui/textarea.d.ts +3 -0
  172. package/dist/components/ui/textarea.js +12 -0
  173. package/dist/components/ui/toggle-group.d.ts +10 -0
  174. package/dist/components/ui/toggle-group.js +50 -0
  175. package/dist/components/ui/toggle.d.ts +9 -0
  176. package/dist/components/ui/toggle.js +35 -0
  177. package/dist/components/ui/tooltip.d.ts +7 -0
  178. package/dist/components/ui/tooltip.js +34 -0
  179. package/dist/components/ui/trace.d.ts +18 -0
  180. package/dist/components/ui/trace.js +74 -0
  181. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -0
  182. package/dist/hooks/use-copy-to-clipboard.js +24 -0
  183. package/dist/hooks/use-highlighted-code.d.ts +2 -0
  184. package/dist/hooks/use-highlighted-code.js +54 -0
  185. package/dist/hooks/use-mobile.d.ts +1 -0
  186. package/dist/hooks/use-mobile.js +17 -0
  187. package/dist/index.d.ts +94 -0
  188. package/dist/index.js +94 -0
  189. package/dist/lib/highlighter.d.ts +9 -0
  190. package/dist/lib/highlighter.js +77 -0
  191. package/dist/lib/utils.d.ts +3 -0
  192. package/dist/lib/utils.js +8 -0
  193. package/dist/shadcn-base.css +638 -0
  194. package/dist/styles.css +188 -0
  195. package/docs/COMPONENTS.md +405 -0
  196. package/llms.txt +36 -0
  197. package/package.json +119 -4
  198. package/skills/harebear-ui/SKILL.md +34 -0
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ declare function MessageGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
3
+ declare function Message({ className, align, ...props }: React.ComponentProps<"div"> & {
4
+ align?: "start" | "end";
5
+ }): React.JSX.Element;
6
+ declare function MessageAvatar({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
7
+ declare function MessageContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function MessageHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
9
+ declare function MessageFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
10
+ export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ // src/components/ui/message.tsx
5
+ function MessageGroup({ className, ...props }) {
6
+ return /* @__PURE__ */ jsx("div", {
7
+ "data-slot": "message-group",
8
+ className: cn("flex min-w-0 flex-col gap-2", className),
9
+ ...props
10
+ });
11
+ }
12
+ function Message({ className, align = "start", ...props }) {
13
+ return /* @__PURE__ */ jsx("div", {
14
+ "data-slot": "message",
15
+ "data-align": align,
16
+ className: cn("group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse", className),
17
+ ...props
18
+ });
19
+ }
20
+ function MessageAvatar({ className, ...props }) {
21
+ return /* @__PURE__ */ jsx("div", {
22
+ "data-slot": "message-avatar",
23
+ className: cn("flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8", className),
24
+ ...props
25
+ });
26
+ }
27
+ function MessageContent({ className, ...props }) {
28
+ return /* @__PURE__ */ jsx("div", {
29
+ "data-slot": "message-content",
30
+ className: cn("flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end", className),
31
+ ...props
32
+ });
33
+ }
34
+ function MessageHeader({ className, ...props }) {
35
+ return /* @__PURE__ */ jsx("div", {
36
+ "data-slot": "message-header",
37
+ className: cn("flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0", className),
38
+ ...props
39
+ });
40
+ }
41
+ function MessageFooter({ className, ...props }) {
42
+ return /* @__PURE__ */ jsx("div", {
43
+ "data-slot": "message-footer",
44
+ className: cn("flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end", className),
45
+ ...props
46
+ });
47
+ }
48
+ export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ type NativeSelectProps = Omit<React.ComponentProps<"select">, "size"> & {
3
+ size?: "sm" | "default";
4
+ };
5
+ declare function NativeSelect({ className, size, ...props }: NativeSelectProps): React.JSX.Element;
6
+ declare function NativeSelectOption({ className, ...props }: React.ComponentProps<"option">): React.JSX.Element;
7
+ declare function NativeSelectOptGroup({ className, ...props }: React.ComponentProps<"optgroup">): React.JSX.Element;
8
+ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { ChevronDownIcon } from "lucide-react";
5
+ // src/components/ui/native-select.tsx
6
+ function NativeSelect({ className, size = "default", ...props }) {
7
+ return /* @__PURE__ */ jsxs("div", {
8
+ className: cn("group/native-select relative w-fit has-[select:disabled]:opacity-50", className),
9
+ "data-slot": "native-select-wrapper",
10
+ "data-size": size,
11
+ children: [/* @__PURE__ */ jsx("select", {
12
+ "data-slot": "native-select",
13
+ "data-size": size,
14
+ className: "h-10 w-full min-w-0 appearance-none rounded-md border border-transparent bg-muted py-1 pr-9 pl-3.5 text-sm transition-[border-color,box-shadow,background-color] outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-primary focus-visible:bg-card focus-visible:ring-4 focus-visible:ring-primary/15 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-8 data-[size=sm]:py-0.5 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
15
+ ...props
16
+ }), /* @__PURE__ */ jsx(ChevronDownIcon, {
17
+ className: "pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 text-muted-foreground select-none",
18
+ "aria-hidden": "true",
19
+ "data-slot": "native-select-icon"
20
+ })]
21
+ });
22
+ }
23
+ function NativeSelectOption({ className, ...props }) {
24
+ return /* @__PURE__ */ jsx("option", {
25
+ "data-slot": "native-select-option",
26
+ className: cn("bg-[Canvas] text-[CanvasText]", className),
27
+ ...props
28
+ });
29
+ }
30
+ function NativeSelectOptGroup({ className, ...props }) {
31
+ return /* @__PURE__ */ jsx("optgroup", {
32
+ "data-slot": "native-select-optgroup",
33
+ className: cn("bg-[Canvas] text-[CanvasText]", className),
34
+ ...props
35
+ });
36
+ }
37
+ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { NavigationMenu as NavigationMenu$1 } from "radix-ui";
3
+ declare function NavigationMenu({ className, children, viewport, ...props }: React.ComponentProps<typeof NavigationMenu$1.Root> & {
4
+ viewport?: boolean;
5
+ }): React.JSX.Element;
6
+ declare function NavigationMenuList({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.List>): React.JSX.Element;
7
+ declare function NavigationMenuItem({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.Item>): React.JSX.Element;
8
+ declare const navigationMenuTriggerStyle: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
+ declare function NavigationMenuTrigger({ className, children, ...props }: React.ComponentProps<typeof NavigationMenu$1.Trigger>): React.JSX.Element;
10
+ declare function NavigationMenuContent({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.Content>): React.JSX.Element;
11
+ declare function NavigationMenuViewport({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.Viewport>): React.JSX.Element;
12
+ declare function NavigationMenuLink({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.Link>): React.JSX.Element;
13
+ declare function NavigationMenuIndicator({ className, ...props }: React.ComponentProps<typeof NavigationMenu$1.Indicator>): React.JSX.Element;
14
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { ChevronDownIcon } from "lucide-react";
5
+ import { cva } from "class-variance-authority";
6
+ import { NavigationMenu as NavigationMenu$1 } from "radix-ui";
7
+ // src/components/ui/navigation-menu.tsx
8
+ function NavigationMenu({ className, children, viewport = true, ...props }) {
9
+ return /* @__PURE__ */ jsxs(NavigationMenu$1.Root, {
10
+ "data-slot": "navigation-menu",
11
+ "data-viewport": viewport,
12
+ className: cn("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", className),
13
+ ...props,
14
+ children: [children, viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})]
15
+ });
16
+ }
17
+ function NavigationMenuList({ className, ...props }) {
18
+ return /* @__PURE__ */ jsx(NavigationMenu$1.List, {
19
+ "data-slot": "navigation-menu-list",
20
+ className: cn("group flex flex-1 list-none items-center justify-center gap-0", className),
21
+ ...props
22
+ });
23
+ }
24
+ function NavigationMenuItem({ className, ...props }) {
25
+ return /* @__PURE__ */ jsx(NavigationMenu$1.Item, {
26
+ "data-slot": "navigation-menu-item",
27
+ className: cn("relative", className),
28
+ ...props
29
+ });
30
+ }
31
+ const navigationMenuTriggerStyle = cva("group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted");
32
+ function NavigationMenuTrigger({ className, children, ...props }) {
33
+ return /* @__PURE__ */ jsxs(NavigationMenu$1.Trigger, {
34
+ "data-slot": "navigation-menu-trigger",
35
+ className: cn(navigationMenuTriggerStyle(), "group", className),
36
+ ...props,
37
+ children: [
38
+ children,
39
+ " ",
40
+ /* @__PURE__ */ jsx(ChevronDownIcon, {
41
+ className: "relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180",
42
+ "aria-hidden": "true"
43
+ })
44
+ ]
45
+ });
46
+ }
47
+ function NavigationMenuContent({ className, ...props }) {
48
+ return /* @__PURE__ */ jsx(NavigationMenu$1.Content, {
49
+ "data-slot": "navigation-menu-content",
50
+ className: cn("top-0 left-0 w-full p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95", className),
51
+ ...props
52
+ });
53
+ }
54
+ function NavigationMenuViewport({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx("div", {
56
+ className: cn("absolute top-full left-0 isolate z-50 flex justify-center"),
57
+ children: /* @__PURE__ */ jsx(NavigationMenu$1.Viewport, {
58
+ "data-slot": "navigation-menu-viewport",
59
+ className: cn("origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow ring-1 ring-foreground/10 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90", className),
60
+ ...props
61
+ })
62
+ });
63
+ }
64
+ function NavigationMenuLink({ className, ...props }) {
65
+ return /* @__PURE__ */ jsx(NavigationMenu$1.Link, {
66
+ "data-slot": "navigation-menu-link",
67
+ className: cn("flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4", className),
68
+ ...props
69
+ });
70
+ }
71
+ function NavigationMenuIndicator({ className, ...props }) {
72
+ return /* @__PURE__ */ jsx(NavigationMenu$1.Indicator, {
73
+ "data-slot": "navigation-menu-indicator",
74
+ className: cn("top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in", className),
75
+ ...props,
76
+ children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
77
+ });
78
+ }
79
+ export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
@@ -0,0 +1,17 @@
1
+ import { Button } from "./button.js";
2
+ import * as React from "react";
3
+ declare function Pagination({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
4
+ declare function PaginationContent({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
5
+ declare function PaginationItem({ ...props }: React.ComponentProps<"li">): React.JSX.Element;
6
+ type PaginationLinkProps = {
7
+ isActive?: boolean;
8
+ } & Pick<React.ComponentProps<typeof Button>, "size"> & React.ComponentProps<"a">;
9
+ declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): React.JSX.Element;
10
+ declare function PaginationPrevious({ className, text, ...props }: React.ComponentProps<typeof PaginationLink> & {
11
+ text?: string;
12
+ }): React.JSX.Element;
13
+ declare function PaginationNext({ className, text, ...props }: React.ComponentProps<typeof PaginationLink> & {
14
+ text?: string;
15
+ }): React.JSX.Element;
16
+ declare function PaginationEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
17
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious };
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Button } from "./button.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
6
+ // src/components/ui/pagination.tsx
7
+ function Pagination({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx("nav", {
9
+ role: "navigation",
10
+ "aria-label": "pagination",
11
+ "data-slot": "pagination",
12
+ className: cn("mx-auto flex w-full justify-center", className),
13
+ ...props
14
+ });
15
+ }
16
+ function PaginationContent({ className, ...props }) {
17
+ return /* @__PURE__ */ jsx("ul", {
18
+ "data-slot": "pagination-content",
19
+ className: cn("flex items-center gap-0.5", className),
20
+ ...props
21
+ });
22
+ }
23
+ function PaginationItem({ ...props }) {
24
+ return /* @__PURE__ */ jsx("li", {
25
+ "data-slot": "pagination-item",
26
+ ...props
27
+ });
28
+ }
29
+ function PaginationLink({ className, isActive, size = "icon", ...props }) {
30
+ return /* @__PURE__ */ jsx(Button, {
31
+ asChild: true,
32
+ variant: isActive ? "outline" : "ghost",
33
+ size,
34
+ className: cn(className),
35
+ children: /* @__PURE__ */ jsx("a", {
36
+ "aria-current": isActive ? "page" : void 0,
37
+ "data-slot": "pagination-link",
38
+ "data-active": isActive,
39
+ ...props
40
+ })
41
+ });
42
+ }
43
+ function PaginationPrevious({ className, text = "Previous", ...props }) {
44
+ return /* @__PURE__ */ jsxs(PaginationLink, {
45
+ "aria-label": "Go to previous page",
46
+ size: "default",
47
+ className: cn("pl-1.5!", className),
48
+ ...props,
49
+ children: [/* @__PURE__ */ jsx(ChevronLeftIcon, { "data-icon": "inline-start" }), /* @__PURE__ */ jsx("span", {
50
+ className: "hidden sm:block",
51
+ children: text
52
+ })]
53
+ });
54
+ }
55
+ function PaginationNext({ className, text = "Next", ...props }) {
56
+ return /* @__PURE__ */ jsxs(PaginationLink, {
57
+ "aria-label": "Go to next page",
58
+ size: "default",
59
+ className: cn("pr-1.5!", className),
60
+ ...props,
61
+ children: [/* @__PURE__ */ jsx("span", {
62
+ className: "hidden sm:block",
63
+ children: text
64
+ }), /* @__PURE__ */ jsx(ChevronRightIcon, { "data-icon": "inline-end" })]
65
+ });
66
+ }
67
+ function PaginationEllipsis({ className, ...props }) {
68
+ return /* @__PURE__ */ jsxs("span", {
69
+ "aria-hidden": true,
70
+ "data-slot": "pagination-ellipsis",
71
+ className: cn("flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
72
+ ...props,
73
+ children: [/* @__PURE__ */ jsx(MoreHorizontalIcon, {}), /* @__PURE__ */ jsx("span", {
74
+ className: "sr-only",
75
+ children: "More pages"
76
+ })]
77
+ });
78
+ }
79
+ export { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { Popover as Popover$1 } from "radix-ui";
3
+ declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): React.JSX.Element;
4
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): React.JSX.Element;
5
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): React.JSX.Element;
6
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): React.JSX.Element;
7
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): React.JSX.Element;
9
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
10
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Popover as Popover$1 } from "radix-ui";
5
+ // src/components/ui/popover.tsx
6
+ function Popover({ ...props }) {
7
+ return /* @__PURE__ */ jsx(Popover$1.Root, {
8
+ "data-slot": "popover",
9
+ ...props
10
+ });
11
+ }
12
+ function PopoverTrigger({ ...props }) {
13
+ return /* @__PURE__ */ jsx(Popover$1.Trigger, {
14
+ "data-slot": "popover-trigger",
15
+ ...props
16
+ });
17
+ }
18
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
19
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Content, {
20
+ "data-slot": "popover-content",
21
+ align,
22
+ sideOffset,
23
+ className: cn("z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
24
+ ...props
25
+ }) });
26
+ }
27
+ function PopoverAnchor({ ...props }) {
28
+ return /* @__PURE__ */ jsx(Popover$1.Anchor, {
29
+ "data-slot": "popover-anchor",
30
+ ...props
31
+ });
32
+ }
33
+ function PopoverHeader({ className, ...props }) {
34
+ return /* @__PURE__ */ jsx("div", {
35
+ "data-slot": "popover-header",
36
+ className: cn("flex flex-col gap-0.5 text-sm", className),
37
+ ...props
38
+ });
39
+ }
40
+ function PopoverTitle({ className, ...props }) {
41
+ return /* @__PURE__ */ jsx("div", {
42
+ "data-slot": "popover-title",
43
+ className: cn("font-medium", className),
44
+ ...props
45
+ });
46
+ }
47
+ function PopoverDescription({ className, ...props }) {
48
+ return /* @__PURE__ */ jsx("p", {
49
+ "data-slot": "popover-description",
50
+ className: cn("text-muted-foreground", className),
51
+ ...props
52
+ });
53
+ }
54
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { Progress as Progress$1 } from "radix-ui";
3
+ declare function Progress({ className, value, ...props }: React.ComponentProps<typeof Progress$1.Root>): React.JSX.Element;
4
+ export { Progress };
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { Progress as Progress$1 } from "radix-ui";
5
+ // src/components/ui/progress.tsx
6
+ function Progress({ className, value, ...props }) {
7
+ return /* @__PURE__ */ jsx(Progress$1.Root, {
8
+ "data-slot": "progress",
9
+ className: cn("relative flex h-2 w-full items-center overflow-x-hidden rounded-full bg-muted", className),
10
+ ...props,
11
+ children: /* @__PURE__ */ jsx(Progress$1.Indicator, {
12
+ "data-slot": "progress-indicator",
13
+ className: "size-full flex-1 rounded-full bg-primary transition-all",
14
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
15
+ })
16
+ });
17
+ }
18
+ export { Progress };
@@ -0,0 +1,19 @@
1
+ import { Button } from "./button.js";
2
+ import * as React from "react";
3
+ import { Questionnaire as Questionnaire$1 } from "@shadcn/react/questionnaire";
4
+ declare function Questionnaire({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Root>): React.JSX.Element;
5
+ declare function QuestionnaireProgress({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Progress>): React.JSX.Element;
6
+ declare function QuestionnaireItem({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Item>): React.JSX.Element;
7
+ declare function QuestionnaireTitle({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Title>): React.JSX.Element;
8
+ declare function QuestionnaireDescription({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Description>): React.JSX.Element;
9
+ declare function QuestionnaireChoices({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Choices>): React.JSX.Element;
10
+ declare function QuestionnaireChoice({ children, className, ...props }: React.ComponentProps<typeof Questionnaire$1.Choice>): React.JSX.Element;
11
+ declare function QuestionnaireChoiceDescription({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
12
+ declare function QuestionnaireInput({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Input>): React.JSX.Element;
13
+ declare function QuestionnaireError({ className, ...props }: React.ComponentProps<typeof Questionnaire$1.Error>): React.JSX.Element;
14
+ declare function QuestionnaireActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
15
+ declare function QuestionnairePrevious({ children, className, size, variant, ...props }: React.ComponentProps<typeof Questionnaire$1.Previous> & Pick<React.ComponentProps<typeof Button>, "size" | "variant">): React.JSX.Element;
16
+ declare function QuestionnaireSkip({ children, className, size, variant, ...props }: React.ComponentProps<typeof Questionnaire$1.Skip> & Pick<React.ComponentProps<typeof Button>, "size" | "variant">): React.JSX.Element;
17
+ declare function QuestionnaireNext({ children, className, size, variant, ...props }: React.ComponentProps<typeof Questionnaire$1.Next> & Pick<React.ComponentProps<typeof Button>, "size" | "variant">): React.JSX.Element;
18
+ declare function QuestionnaireSubmit({ children, className, size, variant, ...props }: React.ComponentProps<typeof Questionnaire$1.Submit> & Pick<React.ComponentProps<typeof Button>, "size" | "variant">): React.JSX.Element;
19
+ export { Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle };
@@ -0,0 +1,168 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { buttonVariants } from "./button.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { CheckIcon } from "lucide-react";
6
+ import { Questionnaire as Questionnaire$1 } from "@shadcn/react/questionnaire";
7
+ // src/components/ui/questionnaire.tsx
8
+ function Questionnaire({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(Questionnaire$1.Root, {
10
+ "data-slot": "questionnaire",
11
+ className: cn("flex w-full min-w-0 flex-col gap-4", className),
12
+ ...props
13
+ });
14
+ }
15
+ function QuestionnaireProgress({ className, ...props }) {
16
+ return /* @__PURE__ */ jsx(Questionnaire$1.Progress, {
17
+ "data-slot": "questionnaire-progress",
18
+ className: cn("min-h-[1lh] w-fit min-w-[14ch] text-xs font-medium text-muted-foreground tabular-nums", className),
19
+ ...props
20
+ });
21
+ }
22
+ function QuestionnaireItem({ className, ...props }) {
23
+ return /* @__PURE__ */ jsx(Questionnaire$1.Item, {
24
+ "data-slot": "questionnaire-item",
25
+ className: cn("flex min-w-0 flex-col gap-4 border-0 p-0 outline-none", className),
26
+ ...props
27
+ });
28
+ }
29
+ function QuestionnaireTitle({ className, ...props }) {
30
+ return /* @__PURE__ */ jsx(Questionnaire$1.Title, {
31
+ "data-slot": "questionnaire-title",
32
+ className: cn("font-heading text-base leading-snug font-medium text-pretty [&:not(:has(~[data-slot=questionnaire-description]))]:mb-4", className),
33
+ ...props
34
+ });
35
+ }
36
+ function QuestionnaireDescription({ className, ...props }) {
37
+ return /* @__PURE__ */ jsx(Questionnaire$1.Description, {
38
+ "data-slot": "questionnaire-description",
39
+ className: cn("text-sm text-pretty text-muted-foreground", className),
40
+ ...props
41
+ });
42
+ }
43
+ function QuestionnaireChoices({ className, ...props }) {
44
+ return /* @__PURE__ */ jsx(Questionnaire$1.Choices, {
45
+ "data-slot": "questionnaire-choices",
46
+ className: cn("group/questionnaire-choices grid min-w-0 gap-2", className),
47
+ ...props
48
+ });
49
+ }
50
+ function QuestionnaireChoice({ children, className, ...props }) {
51
+ return /* @__PURE__ */ jsxs(Questionnaire$1.Choice, {
52
+ "data-slot": "questionnaire-choice",
53
+ className: cn("group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start gap-2.5 rounded-lg border border-border bg-card px-3.5 py-3 text-start text-sm transition-colors outline-none select-none hover:bg-muted has-[>input:focus-visible]:border-primary has-[>input:focus-visible]:ring-4 has-[>input:focus-visible]:ring-primary/15 data-invalid:border-destructive data-checked:border-primary/40 data-checked:bg-primary-soft", "data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50", className),
54
+ ...props,
55
+ children: [
56
+ /* @__PURE__ */ jsx(Questionnaire$1.ChoiceInput, {
57
+ "data-slot": "questionnaire-choice-input",
58
+ className: "absolute inset-0 z-10 size-full cursor-pointer opacity-0"
59
+ }),
60
+ /* @__PURE__ */ jsxs("span", {
61
+ "aria-hidden": "true",
62
+ "data-slot": "questionnaire-choice-indicator",
63
+ className: "pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[4px] border border-input group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:bg-input/30 dark:group-data-checked/questionnaire-choice:bg-primary",
64
+ children: [/* @__PURE__ */ jsx("span", {
65
+ "data-slot": "questionnaire-choice-indicator-dot",
66
+ className: "hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block"
67
+ }), /* @__PURE__ */ jsx(CheckIcon, {
68
+ "data-slot": "questionnaire-choice-indicator-check",
69
+ className: "hidden size-3.5 group-data-[type=radio]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block"
70
+ })]
71
+ }),
72
+ /* @__PURE__ */ jsx(Questionnaire$1.ChoiceLabel, {
73
+ "data-slot": "questionnaire-choice-label",
74
+ className: "flex min-w-0 flex-1 flex-col gap-0.5 leading-snug",
75
+ children
76
+ }),
77
+ /* @__PURE__ */ jsx(Questionnaire$1.ChoiceShortcut, {
78
+ "data-slot": "questionnaire-choice-shortcut",
79
+ className: "pointer-events-none ms-auto hidden size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-md border border-input bg-background font-mono text-[0.625rem] leading-none font-medium text-muted-foreground group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[shortcut]/questionnaire-choice:inline-flex"
80
+ })
81
+ ]
82
+ });
83
+ }
84
+ function QuestionnaireChoiceDescription({ className, ...props }) {
85
+ return /* @__PURE__ */ jsx("span", {
86
+ "data-slot": "questionnaire-choice-description",
87
+ className: cn("text-muted-foreground", className),
88
+ ...props
89
+ });
90
+ }
91
+ function QuestionnaireInput({ className, ...props }) {
92
+ return /* @__PURE__ */ jsx("div", {
93
+ "data-slot": "questionnaire-input-wrapper",
94
+ className: "group/questionnaire-input relative w-full min-w-0",
95
+ children: /* @__PURE__ */ jsx(Questionnaire$1.Input, {
96
+ "data-slot": "questionnaire-input",
97
+ className: cn("h-10 w-full min-w-0 rounded-md border border-transparent bg-muted px-3.5 py-1 text-base transition-[border-color,box-shadow,background-color] outline-none focus-visible:border-primary focus-visible:bg-card focus-visible:ring-4 focus-visible:ring-primary/15 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-4 aria-invalid:ring-destructive/15 md:text-sm", "selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground", className),
98
+ ...props
99
+ })
100
+ });
101
+ }
102
+ function QuestionnaireError({ className, ...props }) {
103
+ return /* @__PURE__ */ jsx(Questionnaire$1.Error, {
104
+ "data-slot": "questionnaire-error",
105
+ className: cn("mt-2 text-sm text-destructive", className),
106
+ ...props
107
+ });
108
+ }
109
+ function QuestionnaireActions({ className, ...props }) {
110
+ return /* @__PURE__ */ jsx("div", {
111
+ "data-slot": "questionnaire-actions",
112
+ className: cn("grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2 sm:min-h-8", className),
113
+ ...props
114
+ });
115
+ }
116
+ function QuestionnairePrevious({ children, className, size = "default", variant = "outline", ...props }) {
117
+ return /* @__PURE__ */ jsx(Questionnaire$1.Previous, {
118
+ "data-slot": "questionnaire-previous",
119
+ "data-size": size,
120
+ "data-variant": variant,
121
+ className: cn(buttonVariants({
122
+ size,
123
+ variant
124
+ }), "col-start-1 row-start-1 min-h-11 justify-self-start sm:min-h-0", className),
125
+ ...props,
126
+ children: children ?? "Previous"
127
+ });
128
+ }
129
+ function QuestionnaireSkip({ children, className, size = "default", variant = "outline", ...props }) {
130
+ return /* @__PURE__ */ jsx(Questionnaire$1.Skip, {
131
+ "data-slot": "questionnaire-skip",
132
+ "data-size": size,
133
+ "data-variant": variant,
134
+ className: cn(buttonVariants({
135
+ size,
136
+ variant
137
+ }), "col-start-2 row-start-1 min-h-11 justify-self-end sm:min-h-0", className),
138
+ ...props,
139
+ children: children ?? "Skip"
140
+ });
141
+ }
142
+ function QuestionnaireNext({ children, className, size = "default", variant = "default", ...props }) {
143
+ return /* @__PURE__ */ jsx(Questionnaire$1.Next, {
144
+ "data-slot": "questionnaire-next",
145
+ "data-size": size,
146
+ "data-variant": variant,
147
+ className: cn(buttonVariants({
148
+ size,
149
+ variant
150
+ }), "col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0", className),
151
+ ...props,
152
+ children: children ?? "Next"
153
+ });
154
+ }
155
+ function QuestionnaireSubmit({ children, className, size = "default", variant = "default", ...props }) {
156
+ return /* @__PURE__ */ jsx(Questionnaire$1.Submit, {
157
+ "data-slot": "questionnaire-submit",
158
+ "data-size": size,
159
+ "data-variant": variant,
160
+ className: cn(buttonVariants({
161
+ size,
162
+ variant
163
+ }), "col-start-3 row-start-1 min-h-11 justify-self-end sm:min-h-0", className),
164
+ ...props,
165
+ children: children ?? "Submit"
166
+ });
167
+ }
168
+ export { Questionnaire, QuestionnaireActions, QuestionnaireChoice, QuestionnaireChoiceDescription, QuestionnaireChoices, QuestionnaireDescription, QuestionnaireError, QuestionnaireInput, QuestionnaireItem, QuestionnaireNext, QuestionnairePrevious, QuestionnaireProgress, QuestionnaireSkip, QuestionnaireSubmit, QuestionnaireTitle };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import { RadioGroup as RadioGroup$1 } from "radix-ui";
3
+ declare function RadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroup$1.Root>): React.JSX.Element;
4
+ declare function RadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroup$1.Item>): React.JSX.Element;
5
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { RadioGroup as RadioGroup$1 } from "radix-ui";
5
+ // src/components/ui/radio-group.tsx
6
+ function RadioGroup({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx(RadioGroup$1.Root, {
8
+ "data-slot": "radio-group",
9
+ className: cn("grid w-full gap-2", className),
10
+ ...props
11
+ });
12
+ }
13
+ function RadioGroupItem({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx(RadioGroup$1.Item, {
15
+ "data-slot": "radio-group-item",
16
+ className: cn("group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary", className),
17
+ ...props,
18
+ children: /* @__PURE__ */ jsx(RadioGroup$1.Indicator, {
19
+ "data-slot": "radio-group-indicator",
20
+ className: "flex size-4 items-center justify-center",
21
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" })
22
+ })
23
+ });
24
+ }
25
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,7 @@
1
+ import * as ResizablePrimitive from "react-resizable-panels";
2
+ declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): import("react").JSX.Element;
3
+ declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelProps): import("react").JSX.Element;
4
+ declare function ResizableHandle({ withHandle, className, ...props }: ResizablePrimitive.SeparatorProps & {
5
+ withHandle?: boolean;
6
+ }): import("react").JSX.Element;
7
+ export { ResizableHandle, ResizablePanel, ResizablePanelGroup };