@hanzo/ui 5.3.28 → 5.3.30

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 (229) hide show
  1. package/dist/3d/button.js +298 -0
  2. package/dist/3d/button.mjs +273 -0
  3. package/dist/3d/card.js +234 -0
  4. package/dist/3d/card.mjs +207 -0
  5. package/dist/3d/carousel.js +371 -0
  6. package/dist/3d/carousel.mjs +344 -0
  7. package/dist/3d/grid.js +362 -0
  8. package/dist/3d/grid.mjs +337 -0
  9. package/dist/3d/index.js +1518 -0
  10. package/dist/3d/index.mjs +1472 -0
  11. package/dist/3d/marquee.js +352 -0
  12. package/dist/3d/marquee.mjs +327 -0
  13. package/dist/3d/pin.js +46 -0
  14. package/dist/3d/pin.mjs +24 -0
  15. package/dist/accordion.js +80 -0
  16. package/dist/accordion.mjs +55 -0
  17. package/dist/alert-dialog.js +220 -0
  18. package/dist/alert-dialog.mjs +187 -0
  19. package/dist/alert.js +68 -0
  20. package/dist/alert.mjs +64 -0
  21. package/dist/animation/animated-background.js +424 -0
  22. package/dist/animation/animated-background.mjs +418 -0
  23. package/dist/animation/animated-beam.js +119 -0
  24. package/dist/animation/animated-beam.mjs +97 -0
  25. package/dist/animation/animated-cursor.js +275 -0
  26. package/dist/animation/animated-cursor.mjs +270 -0
  27. package/dist/animation/animated-icon.js +357 -0
  28. package/dist/animation/animated-icon.mjs +351 -0
  29. package/dist/animation/animated-list.js +339 -0
  30. package/dist/animation/animated-list.mjs +333 -0
  31. package/dist/animation/animated-number.js +283 -0
  32. package/dist/animation/animated-number.mjs +277 -0
  33. package/dist/animation/animated-testimonials.js +97 -0
  34. package/dist/animation/animated-testimonials.mjs +75 -0
  35. package/dist/animation/animated-tooltip.js +67 -0
  36. package/dist/animation/animated-tooltip.mjs +45 -0
  37. package/dist/animation/apple-cards-carousel.js +308 -0
  38. package/dist/animation/apple-cards-carousel.mjs +285 -0
  39. package/dist/animation/apple-hello-effect.js +60 -0
  40. package/dist/animation/apple-hello-effect.mjs +38 -0
  41. package/dist/animation/index.js +1952 -0
  42. package/dist/animation/index.mjs +1921 -0
  43. package/dist/avatar.js +71 -0
  44. package/dist/avatar.mjs +47 -0
  45. package/dist/badge.js +66 -0
  46. package/dist/badge.mjs +40 -0
  47. package/dist/blocks/index.js +1665 -0
  48. package/dist/blocks/index.mjs +1626 -0
  49. package/dist/breadcrumb.js +107 -0
  50. package/dist/breadcrumb.mjs +99 -0
  51. package/dist/calendar.js +189 -0
  52. package/dist/calendar.mjs +164 -0
  53. package/dist/carousel.js +278 -0
  54. package/dist/carousel.mjs +249 -0
  55. package/dist/checkbox.js +60 -0
  56. package/dist/checkbox.mjs +35 -0
  57. package/dist/code/block.js +226 -0
  58. package/dist/code/block.mjs +203 -0
  59. package/dist/code/compare.js +446 -0
  60. package/dist/code/compare.mjs +423 -0
  61. package/dist/code/diff.js +430 -0
  62. package/dist/code/diff.mjs +407 -0
  63. package/dist/code/editor.js +243 -0
  64. package/dist/code/editor.mjs +218 -0
  65. package/dist/code/explorer.js +291 -0
  66. package/dist/code/explorer.mjs +268 -0
  67. package/dist/code/index.js +2551 -0
  68. package/dist/code/index.mjs +2510 -0
  69. package/dist/code/preview.js +400 -0
  70. package/dist/code/preview.mjs +377 -0
  71. package/dist/code/snippet.js +274 -0
  72. package/dist/code/snippet.mjs +250 -0
  73. package/dist/code/tabs.js +75 -0
  74. package/dist/code/tabs.mjs +53 -0
  75. package/dist/code/terminal.js +437 -0
  76. package/dist/code/terminal.mjs +414 -0
  77. package/dist/collapsible.js +33 -0
  78. package/dist/collapsible.mjs +9 -0
  79. package/dist/command.js +262 -0
  80. package/dist/command.mjs +232 -0
  81. package/dist/context-menu.js +207 -0
  82. package/dist/context-menu.mjs +171 -0
  83. package/dist/device/index.js +3 -0
  84. package/dist/device/index.mjs +2 -0
  85. package/dist/dialog.js +151 -0
  86. package/dist/dialog.mjs +121 -0
  87. package/dist/dock/basic.js +174 -0
  88. package/dist/dock/basic.mjs +151 -0
  89. package/dist/dock/index.js +628 -0
  90. package/dist/dock/index.mjs +601 -0
  91. package/dist/dock/limelight-nav.js +295 -0
  92. package/dist/dock/limelight-nav.mjs +274 -0
  93. package/dist/dock/macos.js +141 -0
  94. package/dist/dock/macos.mjs +118 -0
  95. package/dist/dock/menu.js +70 -0
  96. package/dist/dock/menu.mjs +48 -0
  97. package/dist/dock/message.js +144 -0
  98. package/dist/dock/message.mjs +122 -0
  99. package/dist/drawer.js +115 -0
  100. package/dist/drawer.mjs +103 -0
  101. package/dist/dropdown-menu.js +202 -0
  102. package/dist/dropdown-menu.mjs +166 -0
  103. package/dist/finance/AdvancedChart.js +48 -0
  104. package/dist/finance/AdvancedChart.mjs +46 -0
  105. package/dist/finance/CompanyProfile.js +48 -0
  106. package/dist/finance/CompanyProfile.mjs +46 -0
  107. package/dist/finance/CryptoScreener.js +45 -0
  108. package/dist/finance/CryptoScreener.mjs +43 -0
  109. package/dist/finance/Financials.js +52 -0
  110. package/dist/finance/Financials.mjs +50 -0
  111. package/dist/finance/ForexScreener.js +46 -0
  112. package/dist/finance/ForexScreener.mjs +44 -0
  113. package/dist/finance/MarketOverview.js +104 -0
  114. package/dist/finance/MarketOverview.mjs +102 -0
  115. package/dist/finance/NewsTimeline.js +44 -0
  116. package/dist/finance/NewsTimeline.mjs +42 -0
  117. package/dist/finance/OrderEntry.js +131 -0
  118. package/dist/finance/OrderEntry.mjs +129 -0
  119. package/dist/finance/OrdersHistory.js +64 -0
  120. package/dist/finance/OrdersHistory.mjs +62 -0
  121. package/dist/finance/PositionsList.js +80 -0
  122. package/dist/finance/PositionsList.mjs +78 -0
  123. package/dist/finance/StockScreener.js +46 -0
  124. package/dist/finance/StockScreener.mjs +44 -0
  125. package/dist/finance/SymbolInfo.js +46 -0
  126. package/dist/finance/SymbolInfo.mjs +44 -0
  127. package/dist/finance/TechnicalAnalysis.js +54 -0
  128. package/dist/finance/TechnicalAnalysis.mjs +52 -0
  129. package/dist/finance/TickerTape.js +56 -0
  130. package/dist/finance/TickerTape.mjs +54 -0
  131. package/dist/finance/TradingPanel.js +191 -0
  132. package/dist/finance/TradingPanel.mjs +189 -0
  133. package/dist/finance/index.js +930 -0
  134. package/dist/finance/index.mjs +914 -0
  135. package/dist/form/index.js +155 -0
  136. package/dist/form/index.mjs +125 -0
  137. package/dist/form.js +172 -0
  138. package/dist/form.mjs +142 -0
  139. package/dist/hover-card.js +58 -0
  140. package/dist/hover-card.mjs +34 -0
  141. package/dist/index.js +8467 -0
  142. package/dist/index.mjs +8087 -0
  143. package/dist/input-otp.js +79 -0
  144. package/dist/input-otp.mjs +54 -0
  145. package/dist/lib/utils.js +28 -0
  146. package/dist/lib/utils.mjs +24 -0
  147. package/dist/navigation/index.js +98 -0
  148. package/dist/navigation/index.mjs +79 -0
  149. package/dist/navigation-menu.js +149 -0
  150. package/dist/navigation-menu.mjs +116 -0
  151. package/dist/pattern/grid-pattern.js +333 -0
  152. package/dist/pattern/grid-pattern.mjs +310 -0
  153. package/dist/pattern/index.js +333 -0
  154. package/dist/pattern/index.mjs +310 -0
  155. package/dist/popover.js +63 -0
  156. package/dist/popover.mjs +37 -0
  157. package/dist/primitives/index.js +8467 -0
  158. package/dist/primitives/index.mjs +8087 -0
  159. package/dist/primitives-export.js +8467 -0
  160. package/dist/primitives-export.mjs +8087 -0
  161. package/dist/progress.js +62 -0
  162. package/dist/progress.mjs +37 -0
  163. package/dist/project/gantt.js +65 -0
  164. package/dist/project/gantt.mjs +43 -0
  165. package/dist/project/index.js +636 -0
  166. package/dist/project/index.mjs +611 -0
  167. package/dist/project/kanban.js +597 -0
  168. package/dist/project/kanban.mjs +572 -0
  169. package/dist/project/list.js +35 -0
  170. package/dist/project/list.mjs +12 -0
  171. package/dist/radio-group.js +68 -0
  172. package/dist/radio-group.mjs +45 -0
  173. package/dist/resizable.js +72 -0
  174. package/dist/resizable.mjs +48 -0
  175. package/dist/scroll-area.js +89 -0
  176. package/dist/scroll-area.mjs +66 -0
  177. package/dist/select.js +140 -0
  178. package/dist/select.mjs +111 -0
  179. package/dist/separator.js +59 -0
  180. package/dist/separator.mjs +34 -0
  181. package/dist/sheet.js +148 -0
  182. package/dist/sheet.mjs +117 -0
  183. package/dist/skeleton.js +32 -0
  184. package/dist/skeleton.mjs +27 -0
  185. package/dist/slider.js +99 -0
  186. package/dist/slider.mjs +73 -0
  187. package/dist/sonner.js +34 -0
  188. package/dist/sonner.mjs +29 -0
  189. package/dist/switch.js +62 -0
  190. package/dist/switch.mjs +37 -0
  191. package/dist/table.js +110 -0
  192. package/dist/table.mjs +101 -0
  193. package/dist/tabs.js +82 -0
  194. package/dist/tabs.mjs +57 -0
  195. package/dist/tailwind/index.js +2023 -0
  196. package/dist/tailwind/index.mjs +2011 -0
  197. package/dist/textarea.js +78 -0
  198. package/dist/textarea.mjs +56 -0
  199. package/dist/toggle-group.js +118 -0
  200. package/dist/toggle-group.mjs +93 -0
  201. package/dist/toggle.js +71 -0
  202. package/dist/toggle.mjs +48 -0
  203. package/dist/tooltip.js +67 -0
  204. package/dist/tooltip.mjs +40 -0
  205. package/dist/types/index.js +57 -0
  206. package/dist/types/index.mjs +51 -0
  207. package/dist/ui/announcement.js +129 -0
  208. package/dist/ui/announcement.mjs +107 -0
  209. package/dist/ui/avatar-group.js +88 -0
  210. package/dist/ui/avatar-group.mjs +65 -0
  211. package/dist/ui/banner.js +85 -0
  212. package/dist/ui/banner.mjs +62 -0
  213. package/dist/ui/cursor.js +78 -0
  214. package/dist/ui/cursor.mjs +56 -0
  215. package/dist/ui/index.js +475 -0
  216. package/dist/ui/index.mjs +442 -0
  217. package/dist/ui/marquee.js +74 -0
  218. package/dist/ui/marquee.mjs +52 -0
  219. package/dist/ui/pill.js +85 -0
  220. package/dist/ui/pill.mjs +62 -0
  221. package/dist/ui/spinner.js +28 -0
  222. package/dist/ui/spinner.mjs +26 -0
  223. package/dist/ui/tags.js +101 -0
  224. package/dist/ui/tags.mjs +79 -0
  225. package/dist/ui/ticker.js +73 -0
  226. package/dist/ui/ticker.mjs +51 -0
  227. package/dist/util/index.js +463 -0
  228. package/dist/util/index.mjs +404 -0
  229. package/package.json +1 -1
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var reactSlot = require('@radix-ui/react-slot');
5
+ var lucideReact = require('lucide-react');
6
+ var clsx = require('clsx');
7
+ var tailwindMerge = require('tailwind-merge');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
+ function cn(...inputs) {
13
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
14
+ }
15
+ __name(cn, "cn");
16
+ var Breadcrumb = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", ref, ...props }), "Breadcrumb");
17
+ Breadcrumb.displayName = "Breadcrumb";
18
+ var BreadcrumbList = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
19
+ "ol",
20
+ {
21
+ className: cn(
22
+ "text-text-secondary flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
23
+ className
24
+ ),
25
+ ref,
26
+ ...props
27
+ }
28
+ ), "BreadcrumbList");
29
+ BreadcrumbList.displayName = "BreadcrumbList";
30
+ var BreadcrumbItem = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
31
+ "li",
32
+ {
33
+ className: cn("inline-flex items-center gap-1.5", className),
34
+ ref,
35
+ ...props
36
+ }
37
+ ), "BreadcrumbItem");
38
+ BreadcrumbItem.displayName = "BreadcrumbItem";
39
+ var BreadcrumbLink = /* @__PURE__ */ __name(({
40
+ asChild,
41
+ className,
42
+ ref,
43
+ ...props
44
+ }) => {
45
+ const Comp = asChild ? reactSlot.Slot : "a";
46
+ return /* @__PURE__ */ jsxRuntime.jsx(
47
+ Comp,
48
+ {
49
+ className: cn("hover:text-text-default transition-colors", className),
50
+ ref,
51
+ ...props
52
+ }
53
+ );
54
+ }, "BreadcrumbLink");
55
+ BreadcrumbLink.displayName = "BreadcrumbLink";
56
+ var BreadcrumbPage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
57
+ "span",
58
+ {
59
+ "aria-current": "page",
60
+ "aria-disabled": "true",
61
+ className: cn("text-text-default font-normal", className),
62
+ ref,
63
+ role: "link",
64
+ ...props
65
+ }
66
+ ), "BreadcrumbPage");
67
+ BreadcrumbPage.displayName = "BreadcrumbPage";
68
+ var BreadcrumbSeparator = /* @__PURE__ */ __name(({
69
+ children,
70
+ className,
71
+ ...props
72
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
73
+ "li",
74
+ {
75
+ "aria-hidden": "true",
76
+ className: cn("[&>svg]:h-4 [&>svg]:w-4", className),
77
+ role: "presentation",
78
+ ...props,
79
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
80
+ }
81
+ ), "BreadcrumbSeparator");
82
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
83
+ var BreadcrumbEllipsis = /* @__PURE__ */ __name(({
84
+ className,
85
+ ...props
86
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
87
+ "span",
88
+ {
89
+ "aria-hidden": "true",
90
+ className: cn("flex h-9 w-9 items-center justify-center", className),
91
+ role: "presentation",
92
+ ...props,
93
+ children: [
94
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
95
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
96
+ ]
97
+ }
98
+ ), "BreadcrumbEllipsis");
99
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
100
+
101
+ exports.Breadcrumb = Breadcrumb;
102
+ exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
103
+ exports.BreadcrumbItem = BreadcrumbItem;
104
+ exports.BreadcrumbLink = BreadcrumbLink;
105
+ exports.BreadcrumbList = BreadcrumbList;
106
+ exports.BreadcrumbPage = BreadcrumbPage;
107
+ exports.BreadcrumbSeparator = BreadcrumbSeparator;
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { ChevronRight, MoreHorizontal } from 'lucide-react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ __name(cn, "cn");
14
+ var Breadcrumb = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", ref, ...props }), "Breadcrumb");
15
+ Breadcrumb.displayName = "Breadcrumb";
16
+ var BreadcrumbList = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
17
+ "ol",
18
+ {
19
+ className: cn(
20
+ "text-text-secondary flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
21
+ className
22
+ ),
23
+ ref,
24
+ ...props
25
+ }
26
+ ), "BreadcrumbList");
27
+ BreadcrumbList.displayName = "BreadcrumbList";
28
+ var BreadcrumbItem = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
29
+ "li",
30
+ {
31
+ className: cn("inline-flex items-center gap-1.5", className),
32
+ ref,
33
+ ...props
34
+ }
35
+ ), "BreadcrumbItem");
36
+ BreadcrumbItem.displayName = "BreadcrumbItem";
37
+ var BreadcrumbLink = /* @__PURE__ */ __name(({
38
+ asChild,
39
+ className,
40
+ ref,
41
+ ...props
42
+ }) => {
43
+ const Comp = asChild ? Slot : "a";
44
+ return /* @__PURE__ */ jsx(
45
+ Comp,
46
+ {
47
+ className: cn("hover:text-text-default transition-colors", className),
48
+ ref,
49
+ ...props
50
+ }
51
+ );
52
+ }, "BreadcrumbLink");
53
+ BreadcrumbLink.displayName = "BreadcrumbLink";
54
+ var BreadcrumbPage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ jsx(
55
+ "span",
56
+ {
57
+ "aria-current": "page",
58
+ "aria-disabled": "true",
59
+ className: cn("text-text-default font-normal", className),
60
+ ref,
61
+ role: "link",
62
+ ...props
63
+ }
64
+ ), "BreadcrumbPage");
65
+ BreadcrumbPage.displayName = "BreadcrumbPage";
66
+ var BreadcrumbSeparator = /* @__PURE__ */ __name(({
67
+ children,
68
+ className,
69
+ ...props
70
+ }) => /* @__PURE__ */ jsx(
71
+ "li",
72
+ {
73
+ "aria-hidden": "true",
74
+ className: cn("[&>svg]:h-4 [&>svg]:w-4", className),
75
+ role: "presentation",
76
+ ...props,
77
+ children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
78
+ }
79
+ ), "BreadcrumbSeparator");
80
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
81
+ var BreadcrumbEllipsis = /* @__PURE__ */ __name(({
82
+ className,
83
+ ...props
84
+ }) => /* @__PURE__ */ jsxs(
85
+ "span",
86
+ {
87
+ "aria-hidden": "true",
88
+ className: cn("flex h-9 w-9 items-center justify-center", className),
89
+ role: "presentation",
90
+ ...props,
91
+ children: [
92
+ /* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" }),
93
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "More" })
94
+ ]
95
+ }
96
+ ), "BreadcrumbEllipsis");
97
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
98
+
99
+ export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
@@ -0,0 +1,189 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React2 = require('react');
7
+ var reactIcons = require('@radix-ui/react-icons');
8
+ var reactDayPicker = require('react-day-picker');
9
+ var clsx = require('clsx');
10
+ var tailwindMerge = require('tailwind-merge');
11
+ var reactSlot = require('@radix-ui/react-slot');
12
+ var classVarianceAuthority = require('class-variance-authority');
13
+ var lucideReact = require('lucide-react');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+
16
+ function _interopNamespace(e) {
17
+ if (e && e.__esModule) return e;
18
+ var n = Object.create(null);
19
+ if (e) {
20
+ Object.keys(e).forEach(function (k) {
21
+ if (k !== 'default') {
22
+ var d = Object.getOwnPropertyDescriptor(e, k);
23
+ Object.defineProperty(n, k, d.get ? d : {
24
+ enumerable: true,
25
+ get: function () { return e[k]; }
26
+ });
27
+ }
28
+ });
29
+ }
30
+ n.default = e;
31
+ return Object.freeze(n);
32
+ }
33
+
34
+ var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
35
+
36
+ var __defProp = Object.defineProperty;
37
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
38
+ function cn(...inputs) {
39
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
40
+ }
41
+ __name(cn, "cn");
42
+ var buttonVariants = classVarianceAuthority.cva(
43
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
44
+ {
45
+ variants: {
46
+ variant: {
47
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
48
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
49
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
50
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
51
+ ghost: "hover:bg-accent hover:text-accent-foreground",
52
+ link: "text-primary underline-offset-4 hover:underline",
53
+ // Keep the additional Hanzo variants for backward compatibility
54
+ primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
55
+ linkFG: "text-primary underline-offset-4 hover:underline",
56
+ linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
57
+ },
58
+ size: {
59
+ default: "h-9 px-4 py-2",
60
+ sm: "h-8 rounded-md px-3 text-xs",
61
+ lg: "h-10 rounded-md px-8",
62
+ icon: "h-9 w-9"
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ variant: "default",
67
+ size: "default"
68
+ }
69
+ }
70
+ );
71
+ var Button = React2__namespace.forwardRef(
72
+ ({ className, variant, size, asChild = false, isLoading = false, children, ...props }, ref) => {
73
+ const Comp = asChild ? reactSlot.Slot : "button";
74
+ return /* @__PURE__ */ jsxRuntime.jsxs(
75
+ Comp,
76
+ {
77
+ className: cn(buttonVariants({ variant, size, className })),
78
+ ref,
79
+ ...props,
80
+ children: [
81
+ isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
82
+ lucideReact.Loader2,
83
+ {
84
+ className: cn("h-4 w-4 animate-spin", size !== "icon" && "mr-2")
85
+ }
86
+ ) : null,
87
+ isLoading && size === "icon" ? null : children
88
+ ]
89
+ }
90
+ );
91
+ }
92
+ );
93
+ Button.displayName = "Button";
94
+ function Calendar({
95
+ className,
96
+ classNames,
97
+ showOutsideDays = true,
98
+ ...props
99
+ }) {
100
+ return /* @__PURE__ */ jsxRuntime.jsx(
101
+ reactDayPicker.DayPicker,
102
+ {
103
+ showOutsideDays,
104
+ className: cn("p-3", className),
105
+ classNames: {
106
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
107
+ month: "space-y-4",
108
+ caption: "flex justify-center pt-1 relative items-center",
109
+ caption_label: "text-sm font-medium",
110
+ nav: "space-x-1 flex items-center",
111
+ nav_button: cn(
112
+ buttonVariants({ variant: "outline" }),
113
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
114
+ ),
115
+ nav_button_previous: "absolute left-1",
116
+ nav_button_next: "absolute right-1",
117
+ table: "w-full border-collapse space-y-1",
118
+ head_row: "flex",
119
+ head_cell: "text-muted-1 rounded-md w-8 font-normal text-[0.8rem]",
120
+ row: "flex w-full mt-2",
121
+ cell: cn(
122
+ "relative p-0 text-center text-sm focus-within:relative focus-within:z-above-content [&:has([aria-selected])]:bg-level-1 [&:has([aria-selected].day-outside)]:bg-level-1/50 [&:has([aria-selected].day-range-end)]:rounded-r-md",
123
+ props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md" : "[&:has([aria-selected])]:rounded-md"
124
+ ),
125
+ day: cn(
126
+ buttonVariants({ variant: "ghost" }),
127
+ "h-8 w-8 p-0 font-normal aria-selected:opacity-100"
128
+ ),
129
+ day_range_start: "day-range-start",
130
+ day_range_end: "day-range-end",
131
+ day_selected: "bg-primary text-primary-fg hover:bg-primary hover:text-primary-fg focus:bg-primary focus:text-primary-fg",
132
+ day_today: "bg-accent text-primary-fg",
133
+ day_outside: "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-1 aria-selected:opacity-30",
134
+ day_disabled: "text-muted-foreground opacity-50",
135
+ day_range_middle: "aria-selected:bg-accent aria-selected:text-primary-fg",
136
+ day_hidden: "invisible",
137
+ ...classNames
138
+ },
139
+ components: {
140
+ Chevron: /* @__PURE__ */ __name(({ orientation, ...props2 }) => {
141
+ if (orientation === "left") {
142
+ return /* @__PURE__ */ jsxRuntime.jsx(reactIcons.ChevronLeftIcon, { className: "h-4 w-4" });
143
+ }
144
+ return /* @__PURE__ */ jsxRuntime.jsx(reactIcons.ChevronRightIcon, { className: "h-4 w-4" });
145
+ }, "Chevron")
146
+ },
147
+ ...props
148
+ }
149
+ );
150
+ }
151
+ __name(Calendar, "Calendar");
152
+ Calendar.displayName = "Calendar";
153
+ function CalendarDayButton({
154
+ className,
155
+ day,
156
+ modifiers,
157
+ ...props
158
+ }) {
159
+ const defaultClassNames = reactDayPicker.getDefaultClassNames();
160
+ const ref = React2__namespace.default.useRef(null);
161
+ React2__namespace.default.useEffect(() => {
162
+ if (modifiers.focused) ref.current?.focus();
163
+ }, [modifiers.focused]);
164
+ return /* @__PURE__ */ jsxRuntime.jsx(
165
+ Button,
166
+ {
167
+ ref,
168
+ variant: "ghost",
169
+ size: "icon",
170
+ "data-day": day.date.toLocaleDateString(),
171
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
172
+ "data-range-start": modifiers.range_start,
173
+ "data-range-end": modifiers.range_end,
174
+ "data-range-middle": modifiers.range_middle,
175
+ className: cn(
176
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
177
+ defaultClassNames.day,
178
+ className
179
+ ),
180
+ ...props
181
+ }
182
+ );
183
+ }
184
+ __name(CalendarDayButton, "CalendarDayButton");
185
+ var calendar_default = Calendar;
186
+
187
+ exports.Calendar = Calendar;
188
+ exports.CalendarDayButton = CalendarDayButton;
189
+ exports.default = calendar_default;
@@ -0,0 +1,164 @@
1
+ "use client";
2
+ import * as React2 from 'react';
3
+ import React2__default from 'react';
4
+ import { ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons';
5
+ import { DayPicker, getDefaultClassNames } from 'react-day-picker';
6
+ import { clsx } from 'clsx';
7
+ import { twMerge } from 'tailwind-merge';
8
+ import { Slot } from '@radix-ui/react-slot';
9
+ import { cva } from 'class-variance-authority';
10
+ import { Loader2 } from 'lucide-react';
11
+ import { jsxs, jsx } from 'react/jsx-runtime';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ function cn(...inputs) {
16
+ return twMerge(clsx(inputs));
17
+ }
18
+ __name(cn, "cn");
19
+ var buttonVariants = cva(
20
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
21
+ {
22
+ variants: {
23
+ variant: {
24
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
25
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
26
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
27
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
28
+ ghost: "hover:bg-accent hover:text-accent-foreground",
29
+ link: "text-primary underline-offset-4 hover:underline",
30
+ // Keep the additional Hanzo variants for backward compatibility
31
+ primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
32
+ linkFG: "text-primary underline-offset-4 hover:underline",
33
+ linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground"
34
+ },
35
+ size: {
36
+ default: "h-9 px-4 py-2",
37
+ sm: "h-8 rounded-md px-3 text-xs",
38
+ lg: "h-10 rounded-md px-8",
39
+ icon: "h-9 w-9"
40
+ }
41
+ },
42
+ defaultVariants: {
43
+ variant: "default",
44
+ size: "default"
45
+ }
46
+ }
47
+ );
48
+ var Button = React2.forwardRef(
49
+ ({ className, variant, size, asChild = false, isLoading = false, children, ...props }, ref) => {
50
+ const Comp = asChild ? Slot : "button";
51
+ return /* @__PURE__ */ jsxs(
52
+ Comp,
53
+ {
54
+ className: cn(buttonVariants({ variant, size, className })),
55
+ ref,
56
+ ...props,
57
+ children: [
58
+ isLoading ? /* @__PURE__ */ jsx(
59
+ Loader2,
60
+ {
61
+ className: cn("h-4 w-4 animate-spin", size !== "icon" && "mr-2")
62
+ }
63
+ ) : null,
64
+ isLoading && size === "icon" ? null : children
65
+ ]
66
+ }
67
+ );
68
+ }
69
+ );
70
+ Button.displayName = "Button";
71
+ function Calendar({
72
+ className,
73
+ classNames,
74
+ showOutsideDays = true,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsx(
78
+ DayPicker,
79
+ {
80
+ showOutsideDays,
81
+ className: cn("p-3", className),
82
+ classNames: {
83
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
84
+ month: "space-y-4",
85
+ caption: "flex justify-center pt-1 relative items-center",
86
+ caption_label: "text-sm font-medium",
87
+ nav: "space-x-1 flex items-center",
88
+ nav_button: cn(
89
+ buttonVariants({ variant: "outline" }),
90
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
91
+ ),
92
+ nav_button_previous: "absolute left-1",
93
+ nav_button_next: "absolute right-1",
94
+ table: "w-full border-collapse space-y-1",
95
+ head_row: "flex",
96
+ head_cell: "text-muted-1 rounded-md w-8 font-normal text-[0.8rem]",
97
+ row: "flex w-full mt-2",
98
+ cell: cn(
99
+ "relative p-0 text-center text-sm focus-within:relative focus-within:z-above-content [&:has([aria-selected])]:bg-level-1 [&:has([aria-selected].day-outside)]:bg-level-1/50 [&:has([aria-selected].day-range-end)]:rounded-r-md",
100
+ props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md" : "[&:has([aria-selected])]:rounded-md"
101
+ ),
102
+ day: cn(
103
+ buttonVariants({ variant: "ghost" }),
104
+ "h-8 w-8 p-0 font-normal aria-selected:opacity-100"
105
+ ),
106
+ day_range_start: "day-range-start",
107
+ day_range_end: "day-range-end",
108
+ day_selected: "bg-primary text-primary-fg hover:bg-primary hover:text-primary-fg focus:bg-primary focus:text-primary-fg",
109
+ day_today: "bg-accent text-primary-fg",
110
+ day_outside: "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-1 aria-selected:opacity-30",
111
+ day_disabled: "text-muted-foreground opacity-50",
112
+ day_range_middle: "aria-selected:bg-accent aria-selected:text-primary-fg",
113
+ day_hidden: "invisible",
114
+ ...classNames
115
+ },
116
+ components: {
117
+ Chevron: /* @__PURE__ */ __name(({ orientation, ...props2 }) => {
118
+ if (orientation === "left") {
119
+ return /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-4 w-4" });
120
+ }
121
+ return /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-4 w-4" });
122
+ }, "Chevron")
123
+ },
124
+ ...props
125
+ }
126
+ );
127
+ }
128
+ __name(Calendar, "Calendar");
129
+ Calendar.displayName = "Calendar";
130
+ function CalendarDayButton({
131
+ className,
132
+ day,
133
+ modifiers,
134
+ ...props
135
+ }) {
136
+ const defaultClassNames = getDefaultClassNames();
137
+ const ref = React2__default.useRef(null);
138
+ React2__default.useEffect(() => {
139
+ if (modifiers.focused) ref.current?.focus();
140
+ }, [modifiers.focused]);
141
+ return /* @__PURE__ */ jsx(
142
+ Button,
143
+ {
144
+ ref,
145
+ variant: "ghost",
146
+ size: "icon",
147
+ "data-day": day.date.toLocaleDateString(),
148
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
149
+ "data-range-start": modifiers.range_start,
150
+ "data-range-end": modifiers.range_end,
151
+ "data-range-middle": modifiers.range_middle,
152
+ className: cn(
153
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
154
+ defaultClassNames.day,
155
+ className
156
+ ),
157
+ ...props
158
+ }
159
+ );
160
+ }
161
+ __name(CalendarDayButton, "CalendarDayButton");
162
+ var calendar_default = Calendar;
163
+
164
+ export { Calendar, CalendarDayButton, calendar_default as default };