@dimasbaguspm/versaur 0.0.8 → 0.0.9

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 (260) hide show
  1. package/README.md +5 -44
  2. package/dist/calendar-DwRERSxq.js +645 -0
  3. package/dist/drawer-Cn7sreJG.js +221 -0
  4. package/dist/enforce-subpath-import.js +106 -0
  5. package/dist/feedbacks/index.d.ts +3 -0
  6. package/dist/feedbacks/index.js +6 -0
  7. package/dist/feedbacks/progress-indicator/index.d.ts +2 -0
  8. package/dist/feedbacks/progress-indicator/progress-indicator.d.ts +7 -0
  9. package/dist/feedbacks/progress-indicator/types.d.ts +19 -0
  10. package/dist/form-layout-COQbtyW5.js +302 -0
  11. package/dist/{components → forms}/calculator-input/types.d.ts +2 -2
  12. package/dist/forms/index.d.ts +12 -0
  13. package/dist/forms/index.js +18 -0
  14. package/dist/{components → forms}/segment-multiple-input/types.d.ts +4 -0
  15. package/dist/{components → forms}/segment-single-input/types.d.ts +4 -0
  16. package/dist/{components → forms}/time-picker-input/types.d.ts +1 -1
  17. package/dist/index-DOdDlCoL.js +3055 -0
  18. package/dist/index.d.ts +6 -2
  19. package/dist/index.js +50 -7727
  20. package/dist/layouts/form-layout/form-layout.d.ts +4 -0
  21. package/dist/layouts/form-layout/index.d.ts +2 -0
  22. package/dist/layouts/form-layout/types.d.ts +20 -0
  23. package/dist/layouts/index.d.ts +5 -0
  24. package/dist/layouts/index.js +8 -0
  25. package/dist/menu--hEHXVZf.js +315 -0
  26. package/dist/navigation/index.d.ts +2 -0
  27. package/dist/navigation/index.js +5 -0
  28. package/dist/{components → navigation}/tabs/types.d.ts +4 -0
  29. package/dist/overlays/index.d.ts +3 -0
  30. package/dist/overlays/index.js +7 -0
  31. package/dist/{components → overlays}/menu/menu.atoms.d.ts +1 -1
  32. package/dist/{components → overlays}/menu/menu.d.ts +1 -1
  33. package/dist/{components → overlays}/menu/types.d.ts +1 -1
  34. package/dist/primitive/brand/brand.atoms.d.ts +6 -0
  35. package/dist/primitive/brand/brand.d.ts +8 -0
  36. package/dist/primitive/brand/index.d.ts +2 -0
  37. package/dist/primitive/brand/types.d.ts +17 -0
  38. package/dist/{components → primitive}/button-icon/types.d.ts +1 -1
  39. package/dist/primitive/index.d.ts +14 -0
  40. package/dist/primitive/index.js +18 -0
  41. package/dist/skeleton-DwqjRsF-.js +277 -0
  42. package/dist/styles.css +4 -0
  43. package/dist/switch-input-DRNFMsqC.js +1985 -0
  44. package/dist/tabs-KyFmo5cA.js +310 -0
  45. package/dist/tile-BinjKW_i.js +921 -0
  46. package/package.json +24 -2
  47. package/dist/components/alert/alert.stories.d.ts +0 -42
  48. package/dist/components/alert/helpers.d.ts +0 -14
  49. package/dist/components/app-bar/app-bar.stories.d.ts +0 -21
  50. package/dist/components/app-bar/helpers.d.ts +0 -6
  51. package/dist/components/avatar/avatar.stories.d.ts +0 -42
  52. package/dist/components/avatar/helpers.d.ts +0 -14
  53. package/dist/components/badge/badge.stories.d.ts +0 -50
  54. package/dist/components/badge/helpers.d.ts +0 -11
  55. package/dist/components/bottom-bar/bottom-bar.stories.d.ts +0 -6
  56. package/dist/components/bottom-bar/helpers.d.ts +0 -7
  57. package/dist/components/breadcrumbs/breadcrumbs.stories.d.ts +0 -7
  58. package/dist/components/breadcrumbs/helpers.d.ts +0 -7
  59. package/dist/components/button/button.stories.d.ts +0 -50
  60. package/dist/components/button-float/button-float.stories.d.ts +0 -27
  61. package/dist/components/button-float/helpers.d.ts +0 -4
  62. package/dist/components/button-icon/button-icon.stories.d.ts +0 -45
  63. package/dist/components/button-icon/helpers.d.ts +0 -11
  64. package/dist/components/calculator/calculator.stories.d.ts +0 -8
  65. package/dist/components/calculator/helpers.d.ts +0 -7
  66. package/dist/components/calculator-input/calculator-input.stories.d.ts +0 -8
  67. package/dist/components/calculator-input/helpers.d.ts +0 -3
  68. package/dist/components/calendar/calendar.stories.d.ts +0 -6
  69. package/dist/components/checkbox-input/checkbox-input.stories.d.ts +0 -44
  70. package/dist/components/checkbox-input/context.d.ts +0 -10
  71. package/dist/components/checkbox-input/helpers.d.ts +0 -11
  72. package/dist/components/chip-input/chip-input.stories.d.ts +0 -12
  73. package/dist/components/chip-input/context.d.ts +0 -11
  74. package/dist/components/chip-input/helpers.d.ts +0 -4
  75. package/dist/components/date-single-picker-input/date-single-picker-input.docked.stories.d.ts +0 -10
  76. package/dist/components/date-single-picker-input/date-single-picker-input.modal.stories.d.ts +0 -10
  77. package/dist/components/date-single-picker-input/helpers.d.ts +0 -3
  78. package/dist/components/drawer/context.d.ts +0 -11
  79. package/dist/components/drawer/drawer.stories.d.ts +0 -42
  80. package/dist/components/drawer/helpers.d.ts +0 -40
  81. package/dist/components/icon/helpers.d.ts +0 -4
  82. package/dist/components/icon/icon.stories.d.ts +0 -39
  83. package/dist/components/index.d.ts +0 -35
  84. package/dist/components/loading-indicator/helpers.d.ts +0 -9
  85. package/dist/components/loading-indicator/loading-indicator.stories.d.ts +0 -16
  86. package/dist/components/menu/context.d.ts +0 -13
  87. package/dist/components/menu/helpers.d.ts +0 -8
  88. package/dist/components/menu/menu.stories.d.ts +0 -22
  89. package/dist/components/modal/helpers.d.ts +0 -7
  90. package/dist/components/modal/modal.stories.d.ts +0 -13
  91. package/dist/components/page-layout/helpers.d.ts +0 -6
  92. package/dist/components/page-layout/page-layout.stories.d.ts +0 -8
  93. package/dist/components/radio-input/context.d.ts +0 -11
  94. package/dist/components/radio-input/helpers.d.ts +0 -11
  95. package/dist/components/radio-input/radio-input.stories.d.ts +0 -74
  96. package/dist/components/segment-multiple-input/context.d.ts +0 -12
  97. package/dist/components/segment-multiple-input/helpers.d.ts +0 -15
  98. package/dist/components/segment-multiple-input/segment-multiple-input.stories.d.ts +0 -66
  99. package/dist/components/segment-single-input/context.d.ts +0 -12
  100. package/dist/components/segment-single-input/helpers.d.ts +0 -15
  101. package/dist/components/segment-single-input/segment-single-input.stories.d.ts +0 -57
  102. package/dist/components/select-input/helpers.d.ts +0 -3
  103. package/dist/components/select-input/select-input.stories.d.ts +0 -50
  104. package/dist/components/skeleton/helpers.d.ts +0 -6
  105. package/dist/components/skeleton/skeleton.stories.d.ts +0 -25
  106. package/dist/components/snackbar/helpers.d.ts +0 -8
  107. package/dist/components/snackbar/snackbar.stories.d.ts +0 -8
  108. package/dist/components/switch-input/helpers.d.ts +0 -18
  109. package/dist/components/switch-input/switch-input.stories.d.ts +0 -10
  110. package/dist/components/table/context.d.ts +0 -3
  111. package/dist/components/table/helpers.d.ts +0 -2
  112. package/dist/components/table/table.stories.d.ts +0 -27
  113. package/dist/components/tabs/context.d.ts +0 -3
  114. package/dist/components/tabs/helpers.d.ts +0 -8
  115. package/dist/components/tabs/tabs.stories.d.ts +0 -17
  116. package/dist/components/text/helpers.d.ts +0 -18
  117. package/dist/components/text/text.stories.d.ts +0 -17
  118. package/dist/components/text-input/helpers.d.ts +0 -3
  119. package/dist/components/text-input/text-input.stories.d.ts +0 -20
  120. package/dist/components/textarea-input/helpers.d.ts +0 -4
  121. package/dist/components/textarea-input/textarea-input.stories.d.ts +0 -50
  122. package/dist/components/tile/helpers.d.ts +0 -8
  123. package/dist/components/tile/tile.stories.d.ts +0 -35
  124. package/dist/components/time-picker-input/helpers.d.ts +0 -4
  125. package/dist/components/time-picker-input/time-picker-input.stories.d.ts +0 -7
  126. package/dist/components/top-bar/helpers.d.ts +0 -26
  127. package/dist/components/top-bar/top-bar.stories.d.ts +0 -15
  128. package/dist/hooks/index.d.ts +0 -1
  129. package/dist/hooks/use-floating-position/index.d.ts +0 -1
  130. /package/dist/{components → feedbacks}/loading-indicator/index.d.ts +0 -0
  131. /package/dist/{components → feedbacks}/loading-indicator/loading-indicator.atoms.d.ts +0 -0
  132. /package/dist/{components → feedbacks}/loading-indicator/loading-indicator.d.ts +0 -0
  133. /package/dist/{components → feedbacks}/loading-indicator/types.d.ts +0 -0
  134. /package/dist/{components → feedbacks}/skeleton/index.d.ts +0 -0
  135. /package/dist/{components → feedbacks}/skeleton/skeleton.d.ts +0 -0
  136. /package/dist/{components → feedbacks}/skeleton/types.d.ts +0 -0
  137. /package/dist/{components → forms}/calculator-input/calculator-input.atoms.d.ts +0 -0
  138. /package/dist/{components → forms}/calculator-input/calculator-input.d.ts +0 -0
  139. /package/dist/{components → forms}/calculator-input/index.d.ts +0 -0
  140. /package/dist/{components → forms}/checkbox-input/checkbox-input.atoms.d.ts +0 -0
  141. /package/dist/{components → forms}/checkbox-input/checkbox-input.d.ts +0 -0
  142. /package/dist/{components → forms}/checkbox-input/index.d.ts +0 -0
  143. /package/dist/{components → forms}/checkbox-input/types.d.ts +0 -0
  144. /package/dist/{components → forms}/chip-input/chip-input.atoms.d.ts +0 -0
  145. /package/dist/{components → forms}/chip-input/chip-input.d.ts +0 -0
  146. /package/dist/{components → forms}/chip-input/index.d.ts +0 -0
  147. /package/dist/{components → forms}/chip-input/types.d.ts +0 -0
  148. /package/dist/{components → forms}/date-single-picker-input/date-single-picker-input.atoms.d.ts +0 -0
  149. /package/dist/{components → forms}/date-single-picker-input/date-single-picker-input.d.ts +0 -0
  150. /package/dist/{components → forms}/date-single-picker-input/date-single-picker-input.docked.d.ts +0 -0
  151. /package/dist/{components → forms}/date-single-picker-input/date-single-picker-input.modal.d.ts +0 -0
  152. /package/dist/{components → forms}/date-single-picker-input/index.d.ts +0 -0
  153. /package/dist/{components → forms}/date-single-picker-input/types.d.ts +0 -0
  154. /package/dist/{components → forms}/date-single-picker-input/use-date-single-picker.d.ts +0 -0
  155. /package/dist/{components → forms}/radio-input/index.d.ts +0 -0
  156. /package/dist/{components → forms}/radio-input/radio-input.atoms.d.ts +0 -0
  157. /package/dist/{components → forms}/radio-input/radio-input.d.ts +0 -0
  158. /package/dist/{components → forms}/radio-input/types.d.ts +0 -0
  159. /package/dist/{components → forms}/segment-multiple-input/index.d.ts +0 -0
  160. /package/dist/{components → forms}/segment-multiple-input/segment-multiple-input.atoms.d.ts +0 -0
  161. /package/dist/{components → forms}/segment-multiple-input/segment-multiple-input.d.ts +0 -0
  162. /package/dist/{components → forms}/segment-single-input/index.d.ts +0 -0
  163. /package/dist/{components → forms}/segment-single-input/segment-single-input.atoms.d.ts +0 -0
  164. /package/dist/{components → forms}/segment-single-input/segment-single-input.d.ts +0 -0
  165. /package/dist/{components → forms}/select-input/index.d.ts +0 -0
  166. /package/dist/{components → forms}/select-input/select-input.d.ts +0 -0
  167. /package/dist/{components → forms}/select-input/types.d.ts +0 -0
  168. /package/dist/{components → forms}/switch-input/index.d.ts +0 -0
  169. /package/dist/{components → forms}/switch-input/switch-input.atoms.d.ts +0 -0
  170. /package/dist/{components → forms}/switch-input/switch-input.d.ts +0 -0
  171. /package/dist/{components → forms}/switch-input/types.d.ts +0 -0
  172. /package/dist/{components → forms}/text-input/index.d.ts +0 -0
  173. /package/dist/{components → forms}/text-input/text-input.d.ts +0 -0
  174. /package/dist/{components → forms}/text-input/types.d.ts +0 -0
  175. /package/dist/{components → forms}/textarea-input/index.d.ts +0 -0
  176. /package/dist/{components → forms}/textarea-input/textarea-input.d.ts +0 -0
  177. /package/dist/{components → forms}/textarea-input/types.d.ts +0 -0
  178. /package/dist/{components → forms}/time-picker-input/index.d.ts +0 -0
  179. /package/dist/{components → forms}/time-picker-input/time-picker-input.atoms.d.ts +0 -0
  180. /package/dist/{components → forms}/time-picker-input/time-picker-input.d.ts +0 -0
  181. /package/dist/{components → layouts}/app-bar/app-bar.atoms.d.ts +0 -0
  182. /package/dist/{components → layouts}/app-bar/app-bar.d.ts +0 -0
  183. /package/dist/{components → layouts}/app-bar/index.d.ts +0 -0
  184. /package/dist/{components → layouts}/app-bar/types.d.ts +0 -0
  185. /package/dist/{components → layouts}/bottom-bar/bottom-bar.atoms.d.ts +0 -0
  186. /package/dist/{components → layouts}/bottom-bar/bottom-bar.d.ts +0 -0
  187. /package/dist/{components → layouts}/bottom-bar/index.d.ts +0 -0
  188. /package/dist/{components → layouts}/bottom-bar/types.d.ts +0 -0
  189. /package/dist/{components → layouts}/page-layout/index.d.ts +0 -0
  190. /package/dist/{components → layouts}/page-layout/page-layout.d.ts +0 -0
  191. /package/dist/{components → layouts}/page-layout/types.d.ts +0 -0
  192. /package/dist/{components → layouts}/top-bar/index.d.ts +0 -0
  193. /package/dist/{components → layouts}/top-bar/top-bar.atoms.d.ts +0 -0
  194. /package/dist/{components → layouts}/top-bar/top-bar.d.ts +0 -0
  195. /package/dist/{components → layouts}/top-bar/types.d.ts +0 -0
  196. /package/dist/{components → navigation}/breadcrumbs/breadcrumbs.atoms.d.ts +0 -0
  197. /package/dist/{components → navigation}/breadcrumbs/breadcrumbs.d.ts +0 -0
  198. /package/dist/{components → navigation}/breadcrumbs/index.d.ts +0 -0
  199. /package/dist/{components → navigation}/breadcrumbs/types.d.ts +0 -0
  200. /package/dist/{components → navigation}/tabs/index.d.ts +0 -0
  201. /package/dist/{components → navigation}/tabs/tabs.atoms.d.ts +0 -0
  202. /package/dist/{components → navigation}/tabs/tabs.d.ts +0 -0
  203. /package/dist/{components → navigation}/tabs/use-tab-indicator.d.ts +0 -0
  204. /package/dist/{components → overlays}/drawer/drawer.atoms.d.ts +0 -0
  205. /package/dist/{components → overlays}/drawer/drawer.d.ts +0 -0
  206. /package/dist/{components → overlays}/drawer/index.d.ts +0 -0
  207. /package/dist/{components → overlays}/drawer/types.d.ts +0 -0
  208. /package/dist/{components → overlays}/menu/index.d.ts +0 -0
  209. /package/dist/{components → overlays}/menu/use-menu.d.ts +0 -0
  210. /package/dist/{components → overlays}/modal/index.d.ts +0 -0
  211. /package/dist/{components → overlays}/modal/modal.atoms.d.ts +0 -0
  212. /package/dist/{components → overlays}/modal/modal.d.ts +0 -0
  213. /package/dist/{components → overlays}/modal/types.d.ts +0 -0
  214. /package/dist/{components → overlays}/modal/use-escape-close.d.ts +0 -0
  215. /package/dist/{components → overlays}/modal/use-focus-trap.d.ts +0 -0
  216. /package/dist/{components → primitive}/alert/alert.atoms.d.ts +0 -0
  217. /package/dist/{components → primitive}/alert/alert.d.ts +0 -0
  218. /package/dist/{components → primitive}/alert/index.d.ts +0 -0
  219. /package/dist/{components → primitive}/alert/types.d.ts +0 -0
  220. /package/dist/{components → primitive}/avatar/avatar.atoms.d.ts +0 -0
  221. /package/dist/{components → primitive}/avatar/avatar.d.ts +0 -0
  222. /package/dist/{components → primitive}/avatar/index.d.ts +0 -0
  223. /package/dist/{components → primitive}/avatar/types.d.ts +0 -0
  224. /package/dist/{components → primitive}/badge/badge.d.ts +0 -0
  225. /package/dist/{components → primitive}/badge/index.d.ts +0 -0
  226. /package/dist/{components → primitive}/badge/types.d.ts +0 -0
  227. /package/dist/{components → primitive}/button/button.d.ts +0 -0
  228. /package/dist/{components → primitive}/button/index.d.ts +0 -0
  229. /package/dist/{components → primitive}/button/types.d.ts +0 -0
  230. /package/dist/{components → primitive}/button-float/button-float.d.ts +0 -0
  231. /package/dist/{components → primitive}/button-float/index.d.ts +0 -0
  232. /package/dist/{components → primitive}/button-float/types.d.ts +0 -0
  233. /package/dist/{hooks/use-floating-position → primitive/button-float}/use-floating-position.d.ts +0 -0
  234. /package/dist/{components → primitive}/button-icon/button-icon.d.ts +0 -0
  235. /package/dist/{components → primitive}/button-icon/index.d.ts +0 -0
  236. /package/dist/{components → primitive}/calculator/calculator.atoms.d.ts +0 -0
  237. /package/dist/{components → primitive}/calculator/calculator.d.ts +0 -0
  238. /package/dist/{components → primitive}/calculator/index.d.ts +0 -0
  239. /package/dist/{components → primitive}/calculator/types.d.ts +0 -0
  240. /package/dist/{components → primitive}/calculator/use-calculator.d.ts +0 -0
  241. /package/dist/{components → primitive}/calendar/calendar.d.ts +0 -0
  242. /package/dist/{components → primitive}/calendar/index.d.ts +0 -0
  243. /package/dist/{components → primitive}/calendar/types.d.ts +0 -0
  244. /package/dist/{components → primitive}/icon/icon.d.ts +0 -0
  245. /package/dist/{components → primitive}/icon/index.d.ts +0 -0
  246. /package/dist/{components → primitive}/icon/types.d.ts +0 -0
  247. /package/dist/{components → primitive}/snackbar/index.d.ts +0 -0
  248. /package/dist/{components → primitive}/snackbar/snackbar.atoms.d.ts +0 -0
  249. /package/dist/{components → primitive}/snackbar/snackbar.d.ts +0 -0
  250. /package/dist/{components → primitive}/snackbar/types.d.ts +0 -0
  251. /package/dist/{components → primitive}/table/index.d.ts +0 -0
  252. /package/dist/{components → primitive}/table/table.atoms.d.ts +0 -0
  253. /package/dist/{components → primitive}/table/table.d.ts +0 -0
  254. /package/dist/{components → primitive}/table/types.d.ts +0 -0
  255. /package/dist/{components → primitive}/text/index.d.ts +0 -0
  256. /package/dist/{components → primitive}/text/text.d.ts +0 -0
  257. /package/dist/{components → primitive}/text/types.d.ts +0 -0
  258. /package/dist/{components → primitive}/tile/index.d.ts +0 -0
  259. /package/dist/{components → primitive}/tile/tile.d.ts +0 -0
  260. /package/dist/{components → primitive}/tile/types.d.ts +0 -0
@@ -0,0 +1,645 @@
1
+ import { c as cva, j as jsxRuntimeExports, a as cn } from "./index-DOdDlCoL.js";
2
+ import React__default, { forwardRef, useState, useRef, useEffect, useCallback } from "react";
3
+ import { X, ChevronLeft, ChevronRight } from "lucide-react";
4
+ const calculatorRootVariants = cva(
5
+ "flex flex-col w-full max-w-xs rounded-lg bg-background",
6
+ {
7
+ variants: {
8
+ disabled: {
9
+ true: "opacity-60 pointer-events-none",
10
+ false: ""
11
+ }
12
+ },
13
+ defaultVariants: {
14
+ disabled: !1
15
+ }
16
+ }
17
+ ), calculatorButtonVariants = cva(
18
+ "flex-1 min-w-0 h-12 m-0.5 rounded text-lg font-medium transition-colors select-none",
19
+ {
20
+ variants: {
21
+ variant: {
22
+ default: "bg-neutral text-foreground hover:bg-neutral-soft hover:text-neutral",
23
+ action: "bg-primary text-white hover:bg-primary-soft hover:text-primary",
24
+ operator: "bg-secondary text-white hover:bg-secondary-soft hover:text-secondary",
25
+ danger: "bg-danger text-white hover:bg-danger-soft hover:text-danger"
26
+ },
27
+ disabled: {
28
+ true: "opacity-50 pointer-events-none",
29
+ false: ""
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ variant: "default",
34
+ disabled: !1
35
+ }
36
+ }
37
+ ), CalculatorButton = forwardRef(({ variant: i = "default", className: e, ...t }, l) => /* @__PURE__ */ jsxRuntimeExports.jsx(
38
+ "button",
39
+ {
40
+ ref: l,
41
+ type: "button",
42
+ className: cn(
43
+ calculatorButtonVariants({ variant: i, disabled: t.disabled }),
44
+ e
45
+ ),
46
+ ...t
47
+ }
48
+ ));
49
+ function getIconColorFromVariant(i = "primary") {
50
+ const e = i.split("-");
51
+ if (e.length === 1)
52
+ switch (e[0]) {
53
+ case "ghost":
54
+ case "neutral":
55
+ case "outline":
56
+ return "ghost";
57
+ default:
58
+ return "neutral";
59
+ }
60
+ switch (e[0]) {
61
+ case "primary":
62
+ return "primary";
63
+ case "secondary":
64
+ return "secondary";
65
+ case "tertiary":
66
+ return "tertiary";
67
+ case "ghost":
68
+ return "ghost";
69
+ case "neutral":
70
+ return "ghost";
71
+ case "success":
72
+ return "success";
73
+ case "info":
74
+ return "info";
75
+ case "warning":
76
+ return "warning";
77
+ case "danger":
78
+ return "danger";
79
+ default:
80
+ return "neutral";
81
+ }
82
+ }
83
+ const buttonIconVariants = cva(
84
+ "inline-flex items-center justify-center font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98] select-none",
85
+ {
86
+ variants: {
87
+ variant: {
88
+ // Core variants using Versaur color system
89
+ primary: "bg-coral text-white hover:bg-coral/90 focus-visible:ring-coral-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
90
+ secondary: "bg-sage text-white hover:bg-sage/90 focus-visible:ring-sage-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
91
+ tertiary: "bg-mist text-white hover:bg-mist/90 focus-visible:ring-mist-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
92
+ ghost: "bg-white text-foreground hover:bg-slate-soft focus-visible:ring-slate-soft focus-visible:ring-offset-white",
93
+ neutral: "bg-neutral text-foreground border border-border hover:bg-neutral/80 focus-visible:ring-foreground-soft focus-visible:ring-offset-white shadow-sm",
94
+ // Outline variants
95
+ "primary-outline": "border border-coral text-coral bg-white hover:bg-coral hover:text-white focus-visible:ring-coral-soft focus-visible:ring-offset-white transition-all",
96
+ "secondary-outline": "border border-sage text-sage bg-white hover:bg-sage hover:text-white focus-visible:ring-sage-soft focus-visible:ring-offset-white transition-all",
97
+ "tertiary-outline": "border border-mist text-mist bg-white hover:bg-mist hover:text-white focus-visible:ring-mist-soft focus-visible:ring-offset-white transition-all",
98
+ "ghost-outline": "border border-slate text-slate bg-white hover:bg-slate hover:text-white focus-visible:ring-slate-soft focus-visible:ring-offset-white transition-all",
99
+ "neutral-outline": "border border-neutral text-foreground bg-white hover:bg-neutral hover:text-foreground focus-visible:ring-foreground-soft focus-visible:ring-offset-white transition-all",
100
+ // Ghost variants (subtle)
101
+ "primary-ghost": "text-coral bg-white hover:bg-coral-soft focus-visible:ring-coral-soft focus-visible:ring-offset-white",
102
+ "secondary-ghost": "text-sage bg-white hover:bg-sage-soft focus-visible:ring-sage-soft focus-visible:ring-offset-white",
103
+ "tertiary-ghost": "text-mist bg-white hover:bg-mist-soft focus-visible:ring-mist-soft focus-visible:ring-offset-white",
104
+ "neutral-ghost": "text-foreground bg-white hover:bg-neutral/70 focus-visible:ring-foreground-soft focus-visible:ring-offset-white",
105
+ // Semantic variants
106
+ success: "bg-success text-white hover:bg-success/90 focus-visible:ring-success-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
107
+ "success-outline": "border border-success text-success bg-white hover:bg-success hover:text-white focus-visible:ring-success-soft focus-visible:ring-offset-white transition-all",
108
+ "success-ghost": "text-success bg-white hover:bg-success-soft focus-visible:ring-success-soft focus-visible:ring-offset-white",
109
+ info: "bg-info text-white hover:bg-info/90 focus-visible:ring-info-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
110
+ "info-outline": "border border-info text-info bg-white hover:bg-info hover:text-white focus-visible:ring-info-soft focus-visible:ring-offset-white transition-all",
111
+ "info-ghost": "text-info bg-white hover:bg-info-soft focus-visible:ring-info-soft focus-visible:ring-offset-white",
112
+ warning: "bg-warning text-white hover:bg-warning/90 focus-visible:ring-warning-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
113
+ "warning-outline": "border border-warning text-warning bg-white hover:bg-warning hover:text-white focus-visible:ring-warning-soft focus-visible:ring-offset-white transition-all",
114
+ "warning-ghost": "text-warning bg-white hover:bg-warning-soft focus-visible:ring-warning-soft focus-visible:ring-offset-white",
115
+ danger: "bg-danger text-white hover:bg-danger/90 focus-visible:ring-danger-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
116
+ "danger-outline": "border border-danger text-danger bg-white hover:bg-danger hover:text-white focus-visible:ring-danger-soft focus-visible:ring-offset-white transition-all",
117
+ "danger-ghost": "text-danger bg-white hover:bg-danger-soft focus-visible:ring-danger-soft focus-visible:ring-offset-white",
118
+ // Utility variants
119
+ outline: "border border-border text-foreground bg-white hover:bg-accent-soft focus-visible:ring-accent-soft focus-visible:ring-offset-white transition-all",
120
+ destructive: "bg-danger text-white hover:bg-danger/90 focus-visible:ring-danger-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md"
121
+ },
122
+ size: {
123
+ xs: "h-6 w-6",
124
+ sm: "h-8 w-8",
125
+ md: "h-10 w-10",
126
+ lg: "h-12 w-12",
127
+ xl: "h-14 w-14"
128
+ },
129
+ shape: {
130
+ rounded: "rounded-md",
131
+ square: "rounded-sm",
132
+ circle: "rounded-full"
133
+ }
134
+ },
135
+ defaultVariants: {
136
+ variant: "primary",
137
+ size: "md",
138
+ shape: "rounded"
139
+ }
140
+ }
141
+ ), iconVariants = cva("inline-flex items-center justify-center", {
142
+ variants: {
143
+ size: {
144
+ xs: "w-3 h-3",
145
+ sm: "w-4 h-4",
146
+ md: "w-5 h-5",
147
+ lg: "w-6 h-6",
148
+ xl: "w-8 h-8"
149
+ },
150
+ color: {
151
+ primary: "text-primary",
152
+ secondary: "text-secondary",
153
+ tertiary: "text-tertiary",
154
+ ghost: "text-ghost",
155
+ neutral: "text-neutral",
156
+ success: "text-success",
157
+ info: "text-info",
158
+ warning: "text-warning",
159
+ danger: "text-danger"
160
+ }
161
+ },
162
+ defaultVariants: {
163
+ size: "md",
164
+ color: "primary"
165
+ }
166
+ }), Icon = React__default.forwardRef(function({ as: e, color: t = "primary", size: l = "md", className: f, ...s }, c) {
167
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
168
+ e,
169
+ {
170
+ ref: c,
171
+ className: iconVariants({ color: t, size: l, className: f }),
172
+ ...s
173
+ }
174
+ );
175
+ }), ButtonIcon = React__default.forwardRef(
176
+ function({
177
+ className: e,
178
+ variant: t = "primary",
179
+ size: l = "md",
180
+ shape: f = "rounded",
181
+ disabled: s = !1,
182
+ as: c,
183
+ "aria-label": o,
184
+ ...u
185
+ }, h) {
186
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
187
+ "button",
188
+ {
189
+ ref: h,
190
+ type: "button",
191
+ className: cn(
192
+ buttonIconVariants({
193
+ variant: t,
194
+ size: l,
195
+ shape: f
196
+ }),
197
+ e
198
+ ),
199
+ disabled: s,
200
+ "aria-disabled": s,
201
+ "aria-label": o,
202
+ inert: s ? !0 : void 0,
203
+ ...u,
204
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
205
+ Icon,
206
+ {
207
+ as: c,
208
+ size: l,
209
+ color: getIconColorFromVariant(t)
210
+ }
211
+ )
212
+ }
213
+ );
214
+ }
215
+ );
216
+ function useCalculator({
217
+ initialValue = "",
218
+ disabled,
219
+ onChange
220
+ }) {
221
+ const [input, setInput] = useState(String(initialValue)), inputRef = useRef(null);
222
+ useEffect(() => {
223
+ setInput(String(initialValue));
224
+ }, [initialValue]);
225
+ const evaluate = useCallback((expr) => {
226
+ try {
227
+ if (!/^[-+*/.\d\s]+$/.test(expr)) return "";
228
+ const result = eval(expr);
229
+ return result?.toString() ?? "";
230
+ } catch {
231
+ return "";
232
+ }
233
+ }, []), handleButton = useCallback(
234
+ (i) => {
235
+ if (!disabled)
236
+ if (i === "C")
237
+ setInput("");
238
+ else if (i === "⌫")
239
+ setInput((e) => e.slice(0, -1));
240
+ else if (i === "=") {
241
+ const e = evaluate(input);
242
+ setInput(e);
243
+ } else
244
+ setInput((e) => e + i);
245
+ },
246
+ [disabled, input, evaluate]
247
+ );
248
+ useEffect(() => {
249
+ if (onChange) {
250
+ const i = evaluate(input);
251
+ onChange(i);
252
+ }
253
+ }, [evaluate, input, onChange]), useEffect(() => {
254
+ if (disabled) return;
255
+ const i = (e) => {
256
+ if (document.activeElement !== inputRef.current && document.activeElement?.tagName !== "BODY")
257
+ return;
258
+ const t = e.key;
259
+ t === "Enter" || t === "=" ? (handleButton("="), e.preventDefault()) : t === "Backspace" ? (handleButton("⌫"), e.preventDefault()) : t === "Escape" || t === "C" || t === "c" ? (handleButton("C"), e.preventDefault()) : (/^[0-9]$/.test(t) || ["/", "*", "-", "+", "."].includes(t)) && (handleButton(t), e.preventDefault());
260
+ };
261
+ return window.addEventListener("keydown", i), () => window.removeEventListener("keydown", i);
262
+ }, [handleButton, disabled]), useEffect(() => {
263
+ disabled || inputRef.current?.focus();
264
+ }, [disabled]);
265
+ const handleInput = (i) => {
266
+ const e = i.target.value.replace(/[^\d+\-*/.]/g, "");
267
+ setInput(e);
268
+ };
269
+ return {
270
+ input,
271
+ inputRef,
272
+ handleButton,
273
+ handleInput
274
+ };
275
+ }
276
+ const BUTTONS = [
277
+ ["7", "8", "9", "/"],
278
+ ["4", "5", "6", "*"],
279
+ ["1", "2", "3", "-"],
280
+ ["0", ".", "=", "+"]
281
+ ], Calculator = forwardRef(
282
+ ({
283
+ initialValue: i = "",
284
+ onChange: e,
285
+ disabled: t,
286
+ className: l,
287
+ "aria-label": f
288
+ }, s) => {
289
+ const { input: c, inputRef: o, handleButton: u, handleInput: h } = useCalculator({
290
+ initialValue: i,
291
+ disabled: t,
292
+ onChange: e
293
+ });
294
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
295
+ "div",
296
+ {
297
+ ref: s,
298
+ className: cn(calculatorRootVariants({ disabled: t }), l),
299
+ "aria-label": f || "Calculator",
300
+ role: "region",
301
+ children: [
302
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
303
+ "input",
304
+ {
305
+ ref: o,
306
+ className: "w-full mb-3 px-3 py-2 rounded border border-[var(--color-neutral)] bg-[var(--color-neutral-soft)] text-right text-xl font-mono focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)]",
307
+ value: c,
308
+ onChange: h,
309
+ disabled: t,
310
+ inputMode: "decimal",
311
+ "aria-label": "Calculator input"
312
+ }
313
+ ),
314
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-1 mb-3", children: BUTTONS.map((b, v) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex w-full", children: b.map((g) => g === "⌫" ? /* @__PURE__ */ jsxRuntimeExports.jsx(
315
+ ButtonIcon,
316
+ {
317
+ as: X,
318
+ variant: "danger-ghost",
319
+ "aria-label": "Backspace",
320
+ size: "md",
321
+ onClick: () => u("⌫"),
322
+ disabled: t
323
+ },
324
+ "backspace"
325
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(
326
+ CalculatorButton,
327
+ {
328
+ variant: g === "=" ? "action" : g === "C" ? "danger" : ["/", "*", "-", "+", "/"].includes(g) ? "operator" : "default",
329
+ onClick: () => u(g),
330
+ disabled: t,
331
+ "aria-label": g,
332
+ children: g
333
+ },
334
+ g
335
+ )) }, v)) })
336
+ ]
337
+ }
338
+ );
339
+ }
340
+ );
341
+ Calculator.displayName = "Calculator";
342
+ const buttonVariants = cva(
343
+ "inline-flex items-center justify-center gap-2 rounded-md font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98] select-none",
344
+ {
345
+ variants: {
346
+ variant: {
347
+ // Core variants using Versaur color system
348
+ primary: "bg-coral text-white hover:bg-coral/90 focus-visible:ring-coral-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
349
+ secondary: "bg-sage text-white hover:bg-sage/90 focus-visible:ring-sage-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
350
+ tertiary: "bg-mist text-white hover:bg-mist/90 focus-visible:ring-mist-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
351
+ ghost: "bg-white text-foreground hover:bg-slate-soft focus-visible:ring-slate-soft focus-visible:ring-offset-white",
352
+ neutral: "bg-neutral text-foreground border border-border hover:bg-neutral/80 focus-visible:ring-foreground-soft focus-visible:ring-offset-white shadow-sm",
353
+ // Outline variants
354
+ "primary-outline": "border border-coral text-coral bg-white hover:bg-coral hover:text-white focus-visible:ring-coral-soft focus-visible:ring-offset-white transition-all",
355
+ "secondary-outline": "border border-sage text-sage bg-white hover:bg-sage hover:text-white focus-visible:ring-sage-soft focus-visible:ring-offset-white transition-all",
356
+ "tertiary-outline": "border border-mist text-mist bg-white hover:bg-mist hover:text-white focus-visible:ring-mist-soft focus-visible:ring-offset-white transition-all",
357
+ "ghost-outline": "border border-slate text-slate bg-white hover:bg-slate hover:text-white focus-visible:ring-slate-soft focus-visible:ring-offset-white transition-all",
358
+ "neutral-outline": "border border-neutral text-foreground bg-white hover:bg-neutral hover:text-foreground focus-visible:ring-foreground-soft focus-visible:ring-offset-white transition-all",
359
+ // Ghost variants (subtle)
360
+ "primary-ghost": "text-coral bg-white hover:bg-coral-soft focus-visible:ring-coral-soft focus-visible:ring-offset-white",
361
+ "secondary-ghost": "text-sage bg-white hover:bg-sage-soft focus-visible:ring-sage-soft focus-visible:ring-offset-white",
362
+ "tertiary-ghost": "text-mist bg-white hover:bg-mist-soft focus-visible:ring-mist-soft focus-visible:ring-offset-white",
363
+ "neutral-ghost": "text-foreground bg-white hover:bg-neutral/70 focus-visible:ring-foreground-soft focus-visible:ring-offset-white",
364
+ // Semantic variants
365
+ success: "bg-success text-white hover:bg-success/90 focus-visible:ring-success-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
366
+ "success-outline": "border border-success text-success bg-white hover:bg-success hover:text-white focus-visible:ring-success-soft focus-visible:ring-offset-white transition-all",
367
+ "success-ghost": "text-success bg-white hover:bg-success-soft focus-visible:ring-success-soft focus-visible:ring-offset-white",
368
+ info: "bg-info text-white hover:bg-info/90 focus-visible:ring-info-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
369
+ "info-outline": "border border-info text-info bg-white hover:bg-info hover:text-white focus-visible:ring-info-soft focus-visible:ring-offset-white transition-all",
370
+ "info-ghost": "text-info bg-white hover:bg-info-soft focus-visible:ring-info-soft focus-visible:ring-offset-white",
371
+ warning: "bg-warning text-white hover:bg-warning/90 focus-visible:ring-warning-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
372
+ "warning-outline": "border border-warning text-warning bg-white hover:bg-warning hover:text-white focus-visible:ring-warning-soft focus-visible:ring-offset-white transition-all",
373
+ "warning-ghost": "text-warning bg-white hover:bg-warning-soft focus-visible:ring-warning-soft focus-visible:ring-offset-white",
374
+ danger: "bg-danger text-white hover:bg-danger/90 focus-visible:ring-danger-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md",
375
+ "danger-outline": "border border-danger text-danger bg-white hover:bg-danger hover:text-white focus-visible:ring-danger-soft focus-visible:ring-offset-white transition-all",
376
+ "danger-ghost": "text-danger bg-white hover:bg-danger-soft focus-visible:ring-danger-soft focus-visible:ring-offset-white",
377
+ // Utility variants
378
+ outline: "border border-border text-foreground bg-white hover:bg-accent-soft focus-visible:ring-accent-soft focus-visible:ring-offset-white transition-all",
379
+ destructive: "bg-danger text-white hover:bg-danger/90 focus-visible:ring-danger-soft focus-visible:ring-offset-white shadow-sm hover:shadow-md"
380
+ },
381
+ size: {
382
+ sm: "h-8 px-3 text-sm min-w-[2.25rem]",
383
+ md: "h-10 px-4 text-sm min-w-[2.5rem]",
384
+ lg: "h-12 px-8 text-lg min-w-[2.75rem]"
385
+ }
386
+ },
387
+ defaultVariants: {
388
+ variant: "primary",
389
+ size: "md"
390
+ }
391
+ }
392
+ ), Button = React__default.forwardRef(
393
+ function i({
394
+ className: e,
395
+ variant: t = "primary",
396
+ size: l = "md",
397
+ disabled: f = !1,
398
+ type: s = "button",
399
+ children: c,
400
+ ...o
401
+ }, u) {
402
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
403
+ "button",
404
+ {
405
+ ref: u,
406
+ type: s,
407
+ className: cn(buttonVariants({ variant: t, size: l }), e),
408
+ disabled: f,
409
+ "aria-disabled": f,
410
+ inert: f ? !0 : void 0,
411
+ ...o,
412
+ children: c
413
+ }
414
+ );
415
+ }
416
+ ), textVariants = cva("", {
417
+ variants: {
418
+ color: {
419
+ primary: "text-primary",
420
+ secondary: "text-secondary",
421
+ tertiary: "text-tertiary",
422
+ ghost: "text-ghost",
423
+ neutral: "text-ghost",
424
+ success: "text-success",
425
+ info: "text-info",
426
+ warning: "text-warning",
427
+ danger: "text-danger"
428
+ },
429
+ hasUnderline: {
430
+ true: "underline",
431
+ false: ""
432
+ },
433
+ isCapitalize: {
434
+ true: "capitalize",
435
+ false: ""
436
+ },
437
+ align: {
438
+ left: "text-left",
439
+ center: "text-center",
440
+ right: "text-right",
441
+ justify: "text-justify"
442
+ },
443
+ italic: {
444
+ true: "italic",
445
+ false: ""
446
+ },
447
+ clamp: {
448
+ 1: "line-clamp-1",
449
+ 2: "line-clamp-2",
450
+ 3: "line-clamp-3",
451
+ 4: "line-clamp-4",
452
+ 5: "line-clamp-5",
453
+ none: ""
454
+ },
455
+ ellipsis: {
456
+ true: "truncate",
457
+ false: ""
458
+ },
459
+ as: {
460
+ h1: "font-bold text-4xl leading-loose",
461
+ h2: "font-semibold text-3xl leading-relaxed",
462
+ h3: "font-medium text-2xl leading-relaxed",
463
+ h4: "font-bold text-xl leading-normal",
464
+ h5: "font-semibold text-lg leading-normal",
465
+ h6: "font-medium text-base leading-normal",
466
+ p: "font-normal text-base leading-normal",
467
+ span: "font-normal text-base leading-normal",
468
+ label: "font-normal text-xs leading-normal"
469
+ }
470
+ },
471
+ defaultVariants: {
472
+ color: "neutral",
473
+ hasUnderline: !1,
474
+ isCapitalize: !1,
475
+ align: "left",
476
+ italic: !1,
477
+ clamp: "none",
478
+ ellipsis: !1,
479
+ as: "span"
480
+ }
481
+ }), Text = forwardRef(
482
+ ({
483
+ as: i = "span",
484
+ color: e = "ghost",
485
+ hasUnderline: t = !1,
486
+ isCapitalize: l = !1,
487
+ align: f = "left",
488
+ italic: s = !1,
489
+ clamp: c = "none",
490
+ ellipsis: o = !1,
491
+ fontSize: u,
492
+ fontWeight: h,
493
+ className: b,
494
+ children: v,
495
+ ...g
496
+ }, y) => {
497
+ const a = [
498
+ "h1",
499
+ "h2",
500
+ "h3",
501
+ "h4",
502
+ "h5",
503
+ "h6",
504
+ "p",
505
+ "span",
506
+ "label"
507
+ ].includes(i) ? i : "span", w = u ? `text-${u}` : "", m = h ? `font-${h}` : "";
508
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
509
+ i,
510
+ {
511
+ ref: y,
512
+ className: cn(
513
+ textVariants({
514
+ color: e,
515
+ hasUnderline: t,
516
+ isCapitalize: l,
517
+ align: f,
518
+ italic: s,
519
+ clamp: c,
520
+ ellipsis: o,
521
+ // @ts-expect-error - `as` is not a valid variant
522
+ as: a
523
+ }),
524
+ w,
525
+ m,
526
+ b
527
+ ),
528
+ ...g,
529
+ children: v
530
+ }
531
+ );
532
+ }
533
+ ), CalendarRoot = ({
534
+ value: i,
535
+ onChange: e,
536
+ className: t,
537
+ ...l
538
+ }) => {
539
+ const f = /* @__PURE__ */ new Date(), [s, c] = useState(f.getMonth()), [o, u] = useState(f.getFullYear()), h = (n, a) => new Date(n, a + 1, 0).getDate(), b = (n, a) => new Date(n, a, 1).getDay(), v = () => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between px-4 pt-4 pb-2", children: [
540
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { fontSize: "base", fontWeight: "semibold", children: i ? i.toLocaleDateString(void 0, {
541
+ year: "numeric",
542
+ month: "long"
543
+ }) : `${o} ${new Date(o, s).toLocaleString(void 0, { month: "long" })}` }),
544
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
545
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
546
+ ButtonIcon,
547
+ {
548
+ as: ChevronLeft,
549
+ variant: "ghost",
550
+ size: "sm",
551
+ "aria-label": "Previous month",
552
+ onClick: () => {
553
+ const n = s === 0 ? 11 : s - 1, a = s === 0 ? o - 1 : o;
554
+ c(n), u(a), e?.(new Date(a, n, 1));
555
+ }
556
+ }
557
+ ),
558
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
559
+ ButtonIcon,
560
+ {
561
+ as: ChevronRight,
562
+ variant: "ghost",
563
+ size: "sm",
564
+ "aria-label": "Next month",
565
+ onClick: () => {
566
+ const n = s === 11 ? 0 : s + 1, a = s === 11 ? o + 1 : o;
567
+ c(n), u(a), e?.(new Date(a, n, 1));
568
+ }
569
+ }
570
+ )
571
+ ] })
572
+ ] }), g = () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-7 px-4 text-slate-500 mb-1", children: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((n) => /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { fontSize: "xs", color: "ghost", align: "center", children: n }, n)) }), y = () => {
573
+ const n = [], a = b(o, s), w = h(o, s), m = h(o, s - 1 < 0 ? 11 : s - 1);
574
+ for (let r = 0; r < a; r++) {
575
+ const d = m - a + r + 1;
576
+ n.push(
577
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
578
+ ButtonIcon,
579
+ {
580
+ as: () => d,
581
+ size: "sm",
582
+ "aria-label": "Previous month day",
583
+ variant: "ghost",
584
+ className: "text-slate-300",
585
+ onClick: () => {
586
+ const x = s === 0 ? 11 : s - 1, p = s === 0 ? o - 1 : o, R = m - a + r + 1;
587
+ e?.(new Date(p, x, R)), c(x), u(p);
588
+ }
589
+ },
590
+ "prev-" + r
591
+ )
592
+ );
593
+ }
594
+ for (let r = 1; r <= w; r++) {
595
+ const d = i && i.getFullYear() === o && i.getMonth() === s && i.getDate() === r;
596
+ n.push(
597
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
598
+ ButtonIcon,
599
+ {
600
+ as: () => r,
601
+ variant: d ? "primary" : "ghost",
602
+ size: "sm",
603
+ "aria-label": `Select ${o}-${s + 1}-${r}`,
604
+ "aria-current": d ? "date" : void 0,
605
+ onClick: () => e?.(new Date(o, s, r))
606
+ },
607
+ r
608
+ )
609
+ );
610
+ }
611
+ const j = a + w;
612
+ for (let r = 0; r < (j % 7 === 0 ? 0 : 7 - j % 7); r++)
613
+ n.push(
614
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
615
+ ButtonIcon,
616
+ {
617
+ as: () => r + 1,
618
+ size: "sm",
619
+ "aria-label": "Next month day",
620
+ variant: "ghost",
621
+ className: "text-slate-300",
622
+ onClick: () => {
623
+ const d = s === 11 ? 0 : s + 1, x = s === 11 ? o + 1 : o, p = r + 1;
624
+ e?.(new Date(x, d, p)), c(d), u(x);
625
+ }
626
+ },
627
+ "next-" + r
628
+ )
629
+ );
630
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-7 gap-2 px-4 pb-4", children: n });
631
+ };
632
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn("select-none", t), ...l, children: [
633
+ v(),
634
+ g(),
635
+ y()
636
+ ] });
637
+ }, Calendar = Object.assign(CalendarRoot, {});
638
+ export {
639
+ Button as B,
640
+ Calculator as C,
641
+ Icon as I,
642
+ Text as T,
643
+ ButtonIcon as a,
644
+ Calendar as b
645
+ };