@mdigital_ui/ui 0.4.8 → 0.5.1

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 (227) hide show
  1. package/README.md +279 -247
  2. package/dist/alert/index.d.ts.map +1 -1
  3. package/dist/alert/index.js +1 -1
  4. package/dist/autocomplete/index.d.ts.map +1 -1
  5. package/dist/autocomplete/index.js +3 -2
  6. package/dist/avatar/index.d.ts.map +1 -1
  7. package/dist/avatar/index.js +1 -1
  8. package/dist/breadcrumbs/index.js +4 -4
  9. package/dist/button/index.js +2 -2
  10. package/dist/calendar/index.d.ts.map +1 -1
  11. package/dist/calendar/index.js +2 -1
  12. package/dist/cascader/index.d.ts.map +1 -1
  13. package/dist/cascader/index.js +1 -1
  14. package/dist/checkbox/index.d.ts.map +1 -1
  15. package/dist/checkbox/index.js +1 -1
  16. package/dist/checkbox/types.d.ts +2 -0
  17. package/dist/checkbox/types.d.ts.map +1 -1
  18. package/dist/{chunk-Z3DIBMBQ.js → chunk-3K4GIXFA.js} +178 -118
  19. package/dist/chunk-3K4GIXFA.js.map +1 -0
  20. package/dist/{chunk-SJLH5ZDW.js → chunk-4QLYRAW2.js} +3 -3
  21. package/dist/{chunk-SJLH5ZDW.js.map → chunk-4QLYRAW2.js.map} +1 -1
  22. package/dist/{chunk-4TEZWGX7.js → chunk-64OCJYSH.js} +17 -8
  23. package/dist/chunk-64OCJYSH.js.map +1 -0
  24. package/dist/{chunk-5YEC6FDN.js → chunk-6CMHCCDO.js} +14 -7
  25. package/dist/chunk-6CMHCCDO.js.map +1 -0
  26. package/dist/{chunk-7RT65ZGV.js → chunk-6H2Y3QKP.js} +75 -23
  27. package/dist/chunk-6H2Y3QKP.js.map +1 -0
  28. package/dist/{chunk-UFYG3HKL.js → chunk-6K6RGQNL.js} +193 -94
  29. package/dist/chunk-6K6RGQNL.js.map +1 -0
  30. package/dist/{chunk-ROQGBDET.js → chunk-6XXAZ6P2.js} +15 -7
  31. package/dist/chunk-6XXAZ6P2.js.map +1 -0
  32. package/dist/{chunk-3Z7RLVWD.js → chunk-75T5BISG.js} +7 -13
  33. package/dist/chunk-75T5BISG.js.map +1 -0
  34. package/dist/{chunk-XAM5EKOS.js → chunk-7SKAAKBC.js} +13 -12
  35. package/dist/chunk-7SKAAKBC.js.map +1 -0
  36. package/dist/{chunk-6RZEJRTC.js → chunk-7ZUIX4NK.js} +3 -3
  37. package/dist/{chunk-6RZEJRTC.js.map → chunk-7ZUIX4NK.js.map} +1 -1
  38. package/dist/{chunk-NPK4ESMA.js → chunk-B75ICJCX.js} +9 -16
  39. package/dist/chunk-B75ICJCX.js.map +1 -0
  40. package/dist/chunk-CB7YOZWV.js +50 -0
  41. package/dist/chunk-CB7YOZWV.js.map +1 -0
  42. package/dist/{chunk-UFC3RGIN.js → chunk-DXAOZB6J.js} +4 -4
  43. package/dist/chunk-DXAOZB6J.js.map +1 -0
  44. package/dist/{chunk-75N6T3IS.js → chunk-ECBTSKES.js} +13 -10
  45. package/dist/chunk-ECBTSKES.js.map +1 -0
  46. package/dist/{chunk-J2WIZULN.js → chunk-FCIK35OY.js} +3 -3
  47. package/dist/{chunk-J2WIZULN.js.map → chunk-FCIK35OY.js.map} +1 -1
  48. package/dist/{chunk-FY2TZ2NT.js → chunk-GP7R3AFC.js} +58 -30
  49. package/dist/chunk-GP7R3AFC.js.map +1 -0
  50. package/dist/{chunk-ED4CQZ72.js → chunk-GQM5WLP5.js} +4 -4
  51. package/dist/{chunk-ED4CQZ72.js.map → chunk-GQM5WLP5.js.map} +1 -1
  52. package/dist/{chunk-TBKPQOXF.js → chunk-GSLNACUF.js} +3 -3
  53. package/dist/{chunk-TBKPQOXF.js.map → chunk-GSLNACUF.js.map} +1 -1
  54. package/dist/{chunk-OJAHIPPP.js → chunk-HGWD63IR.js} +3 -3
  55. package/dist/{chunk-OJAHIPPP.js.map → chunk-HGWD63IR.js.map} +1 -1
  56. package/dist/chunk-HKQOAEFY.js +1 -1
  57. package/dist/{chunk-PD3O6ZH4.js → chunk-JXOLZBXF.js} +19 -8
  58. package/dist/chunk-JXOLZBXF.js.map +1 -0
  59. package/dist/{chunk-CUXQZRDI.js → chunk-JZCONCJS.js} +13 -3
  60. package/dist/chunk-JZCONCJS.js.map +1 -0
  61. package/dist/{chunk-TDPJYCNI.js → chunk-KBT6UQNA.js} +14 -35
  62. package/dist/chunk-KBT6UQNA.js.map +1 -0
  63. package/dist/{chunk-VNH6R5EU.js → chunk-KR3GBSVA.js} +4 -6
  64. package/dist/chunk-KR3GBSVA.js.map +1 -0
  65. package/dist/{chunk-JWYBDNC6.js → chunk-KTK7LSKX.js} +7 -8
  66. package/dist/chunk-KTK7LSKX.js.map +1 -0
  67. package/dist/{chunk-J4SAIKKZ.js → chunk-L3ZFNHVX.js} +25 -22
  68. package/dist/chunk-L3ZFNHVX.js.map +1 -0
  69. package/dist/{chunk-PB5VGXS5.js → chunk-LBOQJHFH.js} +3 -3
  70. package/dist/{chunk-PB5VGXS5.js.map → chunk-LBOQJHFH.js.map} +1 -1
  71. package/dist/{chunk-XCK62GVU.js → chunk-LZ2MHSYF.js} +8 -5
  72. package/dist/chunk-LZ2MHSYF.js.map +1 -0
  73. package/dist/{chunk-LHZJ2GJU.js → chunk-MHRSK2QC.js} +8 -6
  74. package/dist/chunk-MHRSK2QC.js.map +1 -0
  75. package/dist/{chunk-JIXINKUJ.js → chunk-N742SARE.js} +8 -7
  76. package/dist/chunk-N742SARE.js.map +1 -0
  77. package/dist/{chunk-3XOHSE3X.js → chunk-NA6EVQ6T.js} +3 -3
  78. package/dist/{chunk-3XOHSE3X.js.map → chunk-NA6EVQ6T.js.map} +1 -1
  79. package/dist/{chunk-6ROGWFQ2.js → chunk-NKLKTAUP.js} +3 -3
  80. package/dist/{chunk-6ROGWFQ2.js.map → chunk-NKLKTAUP.js.map} +1 -1
  81. package/dist/{chunk-S6HO7HUY.js → chunk-OSD63E6O.js} +15 -19
  82. package/dist/chunk-OSD63E6O.js.map +1 -0
  83. package/dist/{chunk-QDJ5PZPP.js → chunk-PHA7SLBY.js} +3 -3
  84. package/dist/chunk-PHA7SLBY.js.map +1 -0
  85. package/dist/{chunk-6NXZWLSM.js → chunk-S4BF3Z6O.js} +4 -4
  86. package/dist/{chunk-6NXZWLSM.js.map → chunk-S4BF3Z6O.js.map} +1 -1
  87. package/dist/{chunk-C65SCJD6.js → chunk-SK6YMTMA.js} +5 -12
  88. package/dist/chunk-SK6YMTMA.js.map +1 -0
  89. package/dist/{chunk-DBPLQZJ2.js → chunk-SSISBOLO.js} +75 -22
  90. package/dist/chunk-SSISBOLO.js.map +1 -0
  91. package/dist/{chunk-LWYZCSX4.js → chunk-UBJK5623.js} +12 -11
  92. package/dist/chunk-UBJK5623.js.map +1 -0
  93. package/dist/{chunk-74AF6PO2.js → chunk-UEQ3NEVL.js} +48 -12
  94. package/dist/chunk-UEQ3NEVL.js.map +1 -0
  95. package/dist/{chunk-A4MYCEGM.js → chunk-UHHCUCEE.js} +19 -8
  96. package/dist/chunk-UHHCUCEE.js.map +1 -0
  97. package/dist/{chunk-X7JN7WPF.js → chunk-UIPDAD62.js} +3 -3
  98. package/dist/chunk-UIPDAD62.js.map +1 -0
  99. package/dist/{chunk-YUACN5GJ.js → chunk-UPBKLI62.js} +20 -13
  100. package/dist/chunk-UPBKLI62.js.map +1 -0
  101. package/dist/{chunk-3B32X5PU.js → chunk-UUXSTLOY.js} +7 -5
  102. package/dist/chunk-UUXSTLOY.js.map +1 -0
  103. package/dist/{chunk-HSMO2BR4.js → chunk-VNB7ZHCZ.js} +4 -13
  104. package/dist/chunk-VNB7ZHCZ.js.map +1 -0
  105. package/dist/{chunk-TQEMGWZ2.js → chunk-W4RYNHAG.js} +3 -3
  106. package/dist/{chunk-TQEMGWZ2.js.map → chunk-W4RYNHAG.js.map} +1 -1
  107. package/dist/{chunk-PRDJLQLB.js → chunk-XNV3YAJK.js} +5 -5
  108. package/dist/chunk-XNV3YAJK.js.map +1 -0
  109. package/dist/{chunk-I7HJBHQU.js → chunk-Y3PVWMUN.js} +7 -7
  110. package/dist/chunk-Y3PVWMUN.js.map +1 -0
  111. package/dist/clipboard/index.js +2 -2
  112. package/dist/collapse/index.js +2 -2
  113. package/dist/color-picker/index.d.ts +3 -3
  114. package/dist/color-picker/index.d.ts.map +1 -1
  115. package/dist/color-picker/index.js +3 -2
  116. package/dist/context-menu/index.d.ts +4 -6
  117. package/dist/context-menu/index.d.ts.map +1 -1
  118. package/dist/context-menu/index.js +2 -2
  119. package/dist/date-picker/PickerWrapper.d.ts +3 -3
  120. package/dist/date-picker/PickerWrapper.d.ts.map +1 -1
  121. package/dist/date-picker/index.d.ts.map +1 -1
  122. package/dist/date-picker/index.js +3 -2
  123. package/dist/descriptions/index.js +1 -1
  124. package/dist/dropdown/index.js +3 -3
  125. package/dist/hooks/useControllable.d.ts +9 -2
  126. package/dist/hooks/useControllable.d.ts.map +1 -1
  127. package/dist/hooks/useRipple.d.ts +0 -6
  128. package/dist/hooks/useRipple.d.ts.map +1 -1
  129. package/dist/index.js +46 -46
  130. package/dist/input/index.js +1 -1
  131. package/dist/input-password/index.js +2 -2
  132. package/dist/mentions/index.d.ts.map +1 -1
  133. package/dist/mentions/index.js +2 -1
  134. package/dist/menubar/index.js +2 -2
  135. package/dist/multi-select/index.d.ts.map +1 -1
  136. package/dist/multi-select/index.js +4 -4
  137. package/dist/navigation-menu/index.d.ts.map +1 -1
  138. package/dist/navigation-menu/index.js +1 -1
  139. package/dist/number-input/index.d.ts.map +1 -1
  140. package/dist/number-input/index.js +3 -3
  141. package/dist/pagination/index.js +2 -2
  142. package/dist/popover/index.d.ts +16 -1
  143. package/dist/popover/index.d.ts.map +1 -1
  144. package/dist/popover/index.js +1 -1
  145. package/dist/qr-code/index.d.ts +3 -3
  146. package/dist/qr-code/index.d.ts.map +1 -1
  147. package/dist/qr-code/index.js +1 -1
  148. package/dist/radio/index.d.ts.map +1 -1
  149. package/dist/radio/index.js +1 -1
  150. package/dist/rating/index.js +2 -2
  151. package/dist/resizable/index.d.ts +4 -3
  152. package/dist/resizable/index.d.ts.map +1 -1
  153. package/dist/resizable/index.js +1 -1
  154. package/dist/result/index.d.ts.map +1 -1
  155. package/dist/result/index.js +1 -1
  156. package/dist/select/index.d.ts.map +1 -1
  157. package/dist/select/index.js +4 -4
  158. package/dist/skeleton/index.d.ts +3 -3
  159. package/dist/skeleton/index.d.ts.map +1 -1
  160. package/dist/skeleton/index.js +1 -1
  161. package/dist/table/index.d.ts.map +1 -1
  162. package/dist/table/index.js +8 -8
  163. package/dist/table/types.d.ts +16 -2
  164. package/dist/table/types.d.ts.map +1 -1
  165. package/dist/tags-input/index.d.ts.map +1 -1
  166. package/dist/tags-input/index.js +2 -1
  167. package/dist/textarea/index.d.ts +3 -3
  168. package/dist/textarea/index.d.ts.map +1 -1
  169. package/dist/textarea/index.js +1 -1
  170. package/dist/theme/ThemeProvider.d.ts +18 -2
  171. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  172. package/dist/theme/index.d.ts +1 -1
  173. package/dist/theme/index.d.ts.map +1 -1
  174. package/dist/theme/index.js +1 -1
  175. package/dist/timeline/index.d.ts.map +1 -1
  176. package/dist/timeline/index.js +1 -1
  177. package/dist/toggle/index.d.ts.map +1 -1
  178. package/dist/toggle/index.js +2 -2
  179. package/dist/toggle-group/index.d.ts.map +1 -1
  180. package/dist/toggle-group/index.js +2 -2
  181. package/dist/tour/index.d.ts.map +1 -1
  182. package/dist/tour/index.js +1 -1
  183. package/dist/transfer/index.js +2 -2
  184. package/dist/tree-select/index.js +2 -2
  185. package/dist/typography/index.d.ts.map +1 -1
  186. package/dist/typography/index.js +1 -1
  187. package/dist/upload/index.d.ts.map +1 -1
  188. package/dist/upload/index.js +2 -2
  189. package/package.json +4 -3
  190. package/styles/datepicker.css +126 -0
  191. package/styles/global.css +1 -113
  192. package/dist/chunk-3B32X5PU.js.map +0 -1
  193. package/dist/chunk-3Z7RLVWD.js.map +0 -1
  194. package/dist/chunk-4TEZWGX7.js.map +0 -1
  195. package/dist/chunk-5YEC6FDN.js.map +0 -1
  196. package/dist/chunk-74AF6PO2.js.map +0 -1
  197. package/dist/chunk-75N6T3IS.js.map +0 -1
  198. package/dist/chunk-7RT65ZGV.js.map +0 -1
  199. package/dist/chunk-A4MYCEGM.js.map +0 -1
  200. package/dist/chunk-C65SCJD6.js.map +0 -1
  201. package/dist/chunk-CUXQZRDI.js.map +0 -1
  202. package/dist/chunk-DBPLQZJ2.js.map +0 -1
  203. package/dist/chunk-FY2TZ2NT.js.map +0 -1
  204. package/dist/chunk-HSMO2BR4.js.map +0 -1
  205. package/dist/chunk-I7HJBHQU.js.map +0 -1
  206. package/dist/chunk-J4SAIKKZ.js.map +0 -1
  207. package/dist/chunk-JIXINKUJ.js.map +0 -1
  208. package/dist/chunk-JWYBDNC6.js.map +0 -1
  209. package/dist/chunk-LHZJ2GJU.js.map +0 -1
  210. package/dist/chunk-LWYZCSX4.js.map +0 -1
  211. package/dist/chunk-NPK4ESMA.js.map +0 -1
  212. package/dist/chunk-PD3O6ZH4.js.map +0 -1
  213. package/dist/chunk-PQOIW5CM.js +0 -27
  214. package/dist/chunk-PQOIW5CM.js.map +0 -1
  215. package/dist/chunk-PRDJLQLB.js.map +0 -1
  216. package/dist/chunk-QDJ5PZPP.js.map +0 -1
  217. package/dist/chunk-ROQGBDET.js.map +0 -1
  218. package/dist/chunk-S6HO7HUY.js.map +0 -1
  219. package/dist/chunk-TDPJYCNI.js.map +0 -1
  220. package/dist/chunk-UFC3RGIN.js.map +0 -1
  221. package/dist/chunk-UFYG3HKL.js.map +0 -1
  222. package/dist/chunk-VNH6R5EU.js.map +0 -1
  223. package/dist/chunk-X7JN7WPF.js.map +0 -1
  224. package/dist/chunk-XAM5EKOS.js.map +0 -1
  225. package/dist/chunk-XCK62GVU.js.map +0 -1
  226. package/dist/chunk-YUACN5GJ.js.map +0 -1
  227. package/dist/chunk-Z3DIBMBQ.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { colorVars } from './chunk-G6QIIWKU.js';
2
- import { cn, iconSizes } from './chunk-RAS6HUEI.js';
2
+ import { getValidationStatus, statusMessageVariants, cn, iconSizes } from './chunk-RAS6HUEI.js';
3
3
  import * as PopoverPrimitive from '@radix-ui/react-popover';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { Loader2, X, ChevronDown, Check, ChevronRight } from 'lucide-react';
@@ -221,12 +221,13 @@ var Cascader = React.memo(
221
221
  for (const option of options) computeForOption(option, []);
222
222
  return map;
223
223
  }, [normalizedValue, multiple, options, selectedPathSet]);
224
- let status = "default";
225
- if (error) status = "error";
226
- else if (warning) status = "warning";
227
- else if (success) status = "success";
228
- else if (info) status = "info";
229
- const helperMessage = error || warning || info || success || helperText;
224
+ const { status, message: helperMessage } = getValidationStatus({
225
+ error,
226
+ warning,
227
+ info,
228
+ success,
229
+ helperText
230
+ });
230
231
  const expandToPath = React.useCallback((path) => {
231
232
  const menus = [options];
232
233
  let currentOptions = options;
@@ -463,7 +464,7 @@ var Cascader = React.memo(
463
464
  label,
464
465
  required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", children: "*" })
465
466
  ] }),
466
- helperMessage && messagePosition === "top" && /* @__PURE__ */ jsx("span", { className: cn("text-xs", status === "error" && "text-error", status === "warning" && "text-warning", status === "info" && "text-info", status === "success" && "text-success", status === "default" && "text-text-secondary"), children: helperMessage })
467
+ helperMessage && messagePosition === "top" && /* @__PURE__ */ jsx("span", { className: statusMessageVariants({ status }), children: helperMessage })
467
468
  ] }),
468
469
  /* @__PURE__ */ jsx("div", { ref: containerRef, className: cn("relative cascader_root", fullWidth ? "w-full" : "inline-block", classNames?.root), "data-slot": "root", children: /* @__PURE__ */ jsxs(PopoverPrimitive.Root, { open: isOpen, onOpenChange: handleOpenChange, children: [
469
470
  /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
@@ -519,7 +520,7 @@ var Cascader = React.memo(
519
520
  }
520
521
  ) })
521
522
  ] }) }),
522
- helperMessage && messagePosition === "bottom" && /* @__PURE__ */ jsx("span", { className: cn("text-xs mt-0.5", status === "error" && "text-error", status === "warning" && "text-warning", status === "info" && "text-info", status === "success" && "text-success", status === "default" && "text-text-secondary"), children: helperMessage })
523
+ helperMessage && messagePosition === "bottom" && /* @__PURE__ */ jsx("span", { className: cn(statusMessageVariants({ status }), "mt-0.5"), children: helperMessage })
523
524
  ] });
524
525
  }
525
526
  );
@@ -527,5 +528,5 @@ Cascader.displayName = "Cascader";
527
528
  var cascader_default = Cascader;
528
529
 
529
530
  export { cascader_default };
530
- //# sourceMappingURL=chunk-LWYZCSX4.js.map
531
- //# sourceMappingURL=chunk-LWYZCSX4.js.map
531
+ //# sourceMappingURL=chunk-UBJK5623.js.map
532
+ //# sourceMappingURL=chunk-UBJK5623.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cascader/CascaderMenu.tsx","../src/cascader/index.tsx"],"names":["cva","jsxs","jsx","Loader2"],"mappings":"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","file":"chunk-UBJK5623.js","sourcesContent":["'use client'\n\nimport { cva } from \"class-variance-authority\";\nimport { Check, ChevronRight, Loader2 } from \"lucide-react\";\nimport React from \"react\";\n\nimport type { ComponentColor } from \"../types\";\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { CascaderOption, CascaderSize } from \"./types\";\n\nexport const cascaderMenuVariants = cva(\n \"overflow-auto rounded-md border bg-background w-[200px] max-h-[300px]\",\n {\n variants: {\n size: {\n xs: \"w-[160px]\",\n sm: \"w-[180px]\",\n md: \"w-[200px]\",\n lg: \"w-[220px]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cascaderItemVariants = cva(\n \"relative cursor-pointer select-none text-text-primary transition-colors flex items-center gap-2 w-full\",\n {\n variants: {\n size: {\n xs: \"px-2 py-1 text-xs min-h-[28px]\",\n sm: \"px-2.5 py-1.5 text-sm min-h-[32px]\",\n md: \"px-3 py-2 text-base min-h-[36px]\",\n lg: \"px-3.5 py-2.5 text-lg min-h-[44px]\",\n },\n disabled: { true: \"opacity-50 cursor-not-allowed\", false: \"hover:bg-surface\" },\n active: { true: \"bg-surface\", false: \"\" },\n selected: { true: \"font-medium\", false: \"\" },\n },\n defaultVariants: { size: \"md\", disabled: false, active: false, selected: false },\n },\n);\n\nexport interface CascaderMenuProps {\n activeMenus: CascaderOption[][]\n selectedPath: string[]\n hoveredPath: number[]\n focusedIndex: { level: number; index: number } | null\n selectedPathSet: Set<string>\n selectionStateMap: Map<string, { checked: boolean; indeterminate: boolean }> | null\n size: CascaderSize\n color: ComponentColor\n multiple: boolean\n expandTrigger: 'click' | 'hover'\n emptyContent: React.ReactNode\n onItemClick: (option: CascaderOption, level: number) => void\n onItemHover: (option: CascaderOption, level: number, index: number) => void\n classNames?: {\n dropdown?: string\n menu?: string\n option?: string\n }\n menuRefs: React.MutableRefObject<(HTMLDivElement | null)[]>\n}\n\nexport const CascaderMenu = ({\n activeMenus,\n selectedPath,\n hoveredPath,\n focusedIndex,\n selectedPathSet,\n selectionStateMap,\n size,\n color,\n multiple,\n expandTrigger,\n emptyContent,\n onItemClick,\n onItemHover,\n classNames,\n menuRefs,\n}: CascaderMenuProps) => {\n return (\n <div className={cn(\"flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:border-r-0 [&>*:not(:last-child)]:rounded-r-none cascader_dropdown\", colorVars[color], classNames?.dropdown)} data-slot=\"dropdown\">\n {activeMenus.map((menu, level) => (\n <div\n key={level}\n ref={(el) => { menuRefs.current[level] = el }}\n role=\"listbox\"\n className={cn(cascaderMenuVariants({ size }), \"border-border cascader_menu\", classNames?.menu)}\n data-slot=\"menu\"\n >\n {menu.length === 0 ? (\n <div className=\"px-3 py-6 text-center text-text-secondary text-sm\">{emptyContent}</div>\n ) : (\n menu.map((option, index) => {\n const isActive = selectedPath[level] === option.value || (expandTrigger === \"hover\" && hoveredPath[level] === index);\n const isFocused = focusedIndex?.level === level && focusedIndex?.index === index;\n const currentPath = selectedPath.slice(0, level);\n const fullPath = [...currentPath, option.value];\n const selectionState = multiple && selectionStateMap\n ? selectionStateMap.get(fullPath.join('\\0')) ?? { checked: false, indeterminate: false }\n : null;\n const isLeafSelected =\n !multiple &&\n selectedPathSet.has(fullPath.join('\\0')) &&\n (!option.children || option.children.length === 0);\n\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isLeafSelected || (selectionState?.checked ?? false)}\n aria-disabled={option.disabled}\n className={cn(\n cascaderItemVariants({ size, disabled: !!option.disabled, active: isActive || isFocused, selected: isLeafSelected }),\n isLeafSelected && 'bg-slot-10 text-slot',\n \"cascader_option\",\n classNames?.option,\n )}\n onClick={() => onItemClick(option, level)}\n onMouseEnter={() => onItemHover(option, level, index)}\n data-slot=\"option\"\n >\n {multiple && (\n <div className={cn(\"w-4 h-4 border rounded flex items-center justify-center shrink-0\", selectionState?.checked ? 'bg-slot border-slot' : \"border-border\")}>\n {selectionState?.checked && <Check className=\"h-3 w-3 text-background\" />}\n {selectionState?.indeterminate && !selectionState?.checked && <div className={cn(\"w-2 h-0.5 bg-slot\")} />}\n </div>\n )}\n <span className=\"flex-1 truncate\">{option.label}</span>\n <span className={cn(\"shrink-0 flex items-center\", iconSizes[size])}>\n {option.loading && <Loader2 className={cn(\"animate-spin\", iconSizes[size])} />}\n {!option.loading && option.children && option.children.length > 0 && <ChevronRight className={iconSizes[size]} />}\n {!option.loading && isLeafSelected && <Check className={cn(iconSizes[size], colorVars[color], 'text-slot')} />}\n </span>\n </div>\n );\n })\n )}\n </div>\n ))}\n </div>\n );\n};\n","'use client'\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown, Loader2, X } from \"lucide-react\";\nimport React from \"react\";\n\n\nimport { cn, getValidationStatus, iconSizes, statusMessageVariants } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { CascaderOption, CascaderProps, CascaderSize } from \"./types\";\nimport { CascaderMenu } from \"./CascaderMenu\";\n\nconst cascaderTriggerVariants = cva(\n \"flex items-center justify-between gap-2 rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n {\n variants: {\n status: {\n default: \"bg-background border-border hover:border-primary/50\",\n error: \"border-error\",\n warning: \"border-warning\",\n info: \"border-info\",\n success: \"border-success\",\n },\n size: {\n xs: \"h-(--select-height-xs) px-(--select-padding-x-xs) text-xs\",\n sm: \"h-(--select-height-sm) px-(--select-padding-x-sm) text-sm\",\n md: \"h-(--select-height-md) px-(--select-padding-x-md) text-base\",\n lg: \"h-(--select-height-lg) px-(--select-padding-x-lg) text-lg\",\n },\n fullWidth: { true: \"w-full\", false: \"max-w-full\" },\n },\n defaultVariants: { status: \"default\", size: \"md\", fullWidth: true },\n },\n);\n\nconst tagSizeClasses: Record<CascaderSize, string> = {\n xs: \"text-[10px] px-1 py-0\",\n sm: \"text-xs px-1.5 py-0.5\",\n md: \"text-sm px-2 py-0.5\",\n lg: \"text-sm px-2.5 py-1\",\n};\n\nconst Cascader = React.memo<CascaderProps>(\n ({\n options,\n value,\n defaultValue,\n onChange,\n onSelect,\n placeholder = \"Please select\",\n label,\n helperText,\n messagePosition = \"bottom\",\n color = \"default\",\n size = \"md\",\n placement = \"bottomLeft\",\n disabled = false,\n loading = false,\n error,\n warning,\n info,\n success,\n fullWidth = true,\n expandTrigger = \"hover\",\n multiple = false,\n maxTagCount = 3,\n clearable = true,\n showPath = true,\n pathSeparator = \" / \",\n changeOnSelect = false,\n loadData,\n displayRender,\n tagRender,\n emptyContent = \"No options\",\n className,\n classNames,\n required,\n ref,\n onOpenChange,\n }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState<string[] | string[][]>(defaultValue || []);\n const currentValue = value !== undefined ? value : internalValue;\n const [activeMenus, setActiveMenus] = React.useState<CascaderOption[][]>([options]);\n const [hoveredPath, setHoveredPath] = React.useState<number[]>([]);\n const [selectedPath, setSelectedPath] = React.useState<string[]>([]);\n const [focusedIndex, setFocusedIndex] = React.useState<{ level: number; index: number } | null>(null);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const menuRefs = React.useRef<(HTMLDivElement | null)[]>([]);\n\n const normalizedValue: string[][] = React.useMemo(() => {\n if (multiple) {\n return Array.isArray(currentValue[0]) ? (currentValue as string[][]) : [];\n }\n return Array.isArray(currentValue) && currentValue.length > 0 && !Array.isArray(currentValue[0])\n ? [currentValue as string[]]\n : [];\n }, [currentValue, multiple]);\n\n const selectedPathSet = React.useMemo(() => {\n const set = new Set<string>();\n for (const path of normalizedValue) set.add(path.join('\\0'));\n return set;\n }, [normalizedValue]);\n\n const selectionStateMap = React.useMemo(() => {\n if (!multiple) return null;\n const map = new Map<string, { checked: boolean; indeterminate: boolean }>();\n\n const collectLeafPaths = (option: CascaderOption, basePath: string[]): string[][] => {\n const paths: string[][] = [];\n const fullPath = [...basePath, option.value];\n if (!option.children || option.children.length === 0) {\n paths.push(fullPath);\n } else {\n for (const child of option.children) paths.push(...collectLeafPaths(child, fullPath));\n }\n return paths;\n };\n\n const computeForOption = (option: CascaderOption, basePath: string[]) => {\n const key = [...basePath, option.value].join('\\0');\n if (!option.children || option.children.length === 0) {\n map.set(key, { checked: selectedPathSet.has(key), indeterminate: false });\n } else {\n for (const child of option.children) computeForOption(child, [...basePath, option.value]);\n const leafPaths = collectLeafPaths(option, basePath);\n let selectedCount = 0;\n for (const lp of leafPaths) { if (selectedPathSet.has(lp.join('\\0'))) selectedCount++ }\n map.set(key, { checked: selectedCount === leafPaths.length && leafPaths.length > 0, indeterminate: selectedCount > 0 && selectedCount < leafPaths.length });\n }\n };\n\n for (const option of options) computeForOption(option, []);\n return map;\n }, [normalizedValue, multiple, options, selectedPathSet]);\n\n const { status, message: helperMessage } = getValidationStatus({\n error, warning, info, success, helperText,\n });\n\n const expandToPath = React.useCallback((path: string[]) => {\n const menus: CascaderOption[][] = [options];\n let currentOptions = options;\n for (const val of path) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (option?.children && option.children.length > 0) { menus.push(option.children); currentOptions = option.children }\n }\n setActiveMenus(menus);\n }, [options]);\n\n const handleOpenChange = React.useCallback((open: boolean) => {\n if (disabled || loading) return;\n setIsOpen(open);\n onOpenChange?.(open);\n if (open) {\n setActiveMenus([options]);\n setHoveredPath([]);\n setFocusedIndex(null);\n if (normalizedValue.length > 0 && !multiple) {\n setSelectedPath(normalizedValue[0] || []);\n expandToPath(normalizedValue[0] || []);\n } else {\n setSelectedPath([]);\n }\n }\n }, [disabled, loading, options, normalizedValue, multiple, onOpenChange, expandToPath]);\n\n const getSelectedOptions = React.useCallback((path: string[]): CascaderOption[] => {\n const selected: CascaderOption[] = [];\n let currentOptions = options;\n for (const val of path) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (option) { selected.push(option); currentOptions = option.children || [] }\n }\n return selected;\n }, [options]);\n\n const isPathSelected = React.useCallback((path: string[]): boolean => {\n return normalizedValue.some((sp) => sp.length === path.length && sp.every((val, idx) => val === path[idx]));\n }, [normalizedValue]);\n\n const getAllLeafPaths = React.useCallback((option: CascaderOption, currentPath: string[]): string[][] => {\n const paths: string[][] = [];\n const fullPath = [...currentPath, option.value];\n if (!option.children || option.children.length === 0) { paths.push(fullPath) }\n else { option.children.forEach((child) => { paths.push(...getAllLeafPaths(child, fullPath)) }) }\n return paths;\n }, []);\n\n const handleItemClick = React.useCallback(async (option: CascaderOption, level: number) => {\n if (option.disabled) return;\n const newPath = [...selectedPath.slice(0, level), option.value];\n setSelectedPath(newPath);\n\n if (loadData && !option.children && !option.isLeaf && !option.loading) {\n const selectedOpts = getSelectedOptions(newPath);\n try { await loadData(selectedOpts) } catch { /* consumer handles */ }\n return;\n }\n\n const hasChildren = option.children && option.children.length > 0;\n const isLeaf = !hasChildren;\n\n if (hasChildren && !multiple) {\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n if (changeOnSelect) {\n const selectedOpts = getSelectedOptions(newPath);\n if (value === undefined) setInternalValue(newPath);\n onChange?.(newPath, selectedOpts);\n }\n } else if (hasChildren && multiple) {\n const leafPaths = getAllLeafPaths(option, selectedPath.slice(0, level));\n const allSelected = leafPaths.every((path) => isPathSelected(path));\n let newValue: string[][];\n if (allSelected) {\n newValue = normalizedValue.filter((sp) => !leafPaths.some((lp) => lp.length === sp.length && lp.every((v, i) => v === sp[i])));\n } else {\n newValue = [...normalizedValue, ...leafPaths.filter((path) => !isPathSelected(path))];\n }\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n if (value === undefined) setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n } else if (isLeaf) {\n if (multiple) {\n let newValue: string[][];\n if (isPathSelected(newPath)) {\n newValue = normalizedValue.filter((path) => !(path.length === newPath.length && path.every((val, idx) => val === newPath[idx])));\n } else {\n newValue = [...normalizedValue, newPath];\n }\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n if (value === undefined) setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n } else {\n const selectedOpts = getSelectedOptions(newPath);\n if (value === undefined) setInternalValue(newPath);\n onChange?.(newPath, selectedOpts);\n onSelect?.(newPath, selectedOpts);\n handleOpenChange(false);\n }\n }\n }, [selectedPath, value, onChange, onSelect, getSelectedOptions, multiple, isPathSelected, normalizedValue, getAllLeafPaths, changeOnSelect, loadData, handleOpenChange]);\n\n const handleItemHover = React.useCallback((option: CascaderOption, level: number, index: number) => {\n if (expandTrigger !== \"hover\" || option.disabled) return;\n setHoveredPath((prev) => [...prev.slice(0, level), index]);\n setSelectedPath((prev) => [...prev.slice(0, level), option.value]);\n if (option.children && option.children.length > 0) {\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n } else {\n setActiveMenus((prev) => prev.slice(0, level + 1));\n }\n }, [expandTrigger]);\n\n const handleClear = React.useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n const emptyValue = multiple ? [] : [];\n if (value === undefined) setInternalValue(emptyValue);\n onChange?.(emptyValue, []);\n }, [value, onChange, multiple]);\n\n const removeSelection = React.useCallback((pathToRemove: string[], e: React.MouseEvent) => {\n e.stopPropagation();\n if (!multiple) return;\n const newValue = normalizedValue.filter((path) => !(path.length === pathToRemove.length && path.every((val, idx) => val === pathToRemove[idx])));\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n }, [multiple, normalizedValue, value, onChange, getSelectedOptions]);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (!isOpen) {\n if (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\") { e.preventDefault(); handleOpenChange(true) }\n return;\n }\n switch (e.key) {\n case \"Escape\": e.preventDefault(); handleOpenChange(false); break;\n case \"ArrowDown\":\n e.preventDefault();\n if (focusedIndex === null) { setFocusedIndex({ level: 0, index: 0 }) }\n else { const m = activeMenus[focusedIndex.level]; if (m && focusedIndex.index < m.length - 1) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index + 1 }) }\n break;\n case \"ArrowUp\": e.preventDefault(); if (focusedIndex && focusedIndex.index > 0) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index - 1 }); break;\n case \"ArrowRight\":\n e.preventDefault();\n if (focusedIndex) { const m = activeMenus[focusedIndex.level]; const o = m?.[focusedIndex.index]; if (o?.children?.length) { setActiveMenus((prev) => [...prev.slice(0, focusedIndex.level + 1), o.children!]); setFocusedIndex({ level: focusedIndex.level + 1, index: 0 }) } }\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (focusedIndex && focusedIndex.level > 0) { const pl = focusedIndex.level - 1; setActiveMenus((prev) => prev.slice(0, focusedIndex.level)); setFocusedIndex({ level: pl, index: hoveredPath[pl] ?? 0 }) }\n break;\n case \"Enter\":\n e.preventDefault();\n if (focusedIndex) { const m = activeMenus[focusedIndex.level]; const o = m?.[focusedIndex.index]; if (o) handleItemClick(o, focusedIndex.level) }\n break;\n }\n }, [isOpen, focusedIndex, activeMenus, handleOpenChange, handleItemClick, hoveredPath]);\n\n const displayValue = React.useMemo(() => {\n if (normalizedValue.length === 0) return null;\n if (displayRender) {\n if (multiple) {\n return displayRender(normalizedValue.map((path) => getSelectedOptions(path).map((opt) => opt.label)), normalizedValue.map((path) => getSelectedOptions(path)));\n }\n const so = getSelectedOptions(normalizedValue[0] || []);\n return displayRender(so.map((opt) => opt.label), so);\n }\n if (!multiple) {\n const so = getSelectedOptions(normalizedValue[0] || []);\n const labels = so.map((opt) => opt.label);\n return showPath ? labels.join(pathSeparator) : labels[labels.length - 1] || null;\n }\n return null;\n }, [normalizedValue, displayRender, getSelectedOptions, multiple, showPath, pathSeparator]);\n\n const showClearButton = clearable && normalizedValue.length > 0 && normalizedValue[0]?.[0] && !disabled && !loading;\n\n const renderTriggerContent = () => {\n if (multiple && normalizedValue.length > 0) {\n const visibleTags = normalizedValue.slice(0, maxTagCount);\n const remainingCount = normalizedValue.length - maxTagCount;\n return (\n <div className=\"flex-1 flex flex-wrap gap-1 items-center min-h-0 overflow-hidden\">\n {visibleTags.map((path, idx) => {\n const selectedOpts = getSelectedOptions(path);\n const tagLabel = showPath ? selectedOpts.map((o) => o.label).join(pathSeparator) : selectedOpts[selectedOpts.length - 1]?.label || \"\";\n if (tagRender) return <React.Fragment key={idx}>{tagRender({ label: tagLabel, value: path, closable: !disabled, onClose: () => removeSelection(path, { stopPropagation: () => {} } as React.MouseEvent) })}</React.Fragment>;\n return (\n <span key={idx} className={cn(\"inline-flex items-center gap-1 rounded whitespace-nowrap\", colorVars[color], 'bg-slot-10 text-slot', tagSizeClasses[size])}>\n <span className=\"truncate max-w-[150px]\">{tagLabel}</span>\n {!disabled && <button type=\"button\" onClick={(e) => removeSelection(path, e)} className=\"hover:text-error shrink-0\"><X className=\"h-3 w-3\" /></button>}\n </span>\n );\n })}\n {remainingCount > 0 && <span className={cn(\"inline-flex items-center bg-surface text-text-secondary rounded whitespace-nowrap\", tagSizeClasses[size])}>+{remainingCount}</span>}\n </div>\n );\n }\n return <span className={cn(\"truncate flex-1\", !displayValue && \"text-text-secondary\")}>{displayValue || placeholder}</span>;\n };\n\n const popoverSide = placement.startsWith(\"top\") ? \"top\" : \"bottom\";\n const popoverAlign = placement.endsWith(\"Right\") ? \"end\" : \"start\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth ? \"w-full\" : \"inline-block\")}>\n <div className=\"flex gap-2 items-center mb-0.5\">\n {label && <label className=\"text-sm font-medium text-text-secondary\">{label}{required && <span className=\"text-error ml-1\">*</span>}</label>}\n {helperMessage && messagePosition === \"top\" && (\n <span className={statusMessageVariants({ status })}>{helperMessage}</span>\n )}\n </div>\n <div ref={containerRef} className={cn(\"relative cascader_root\", fullWidth ? \"w-full\" : \"inline-block\", classNames?.root)} data-slot=\"root\">\n <PopoverPrimitive.Root open={isOpen} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger asChild>\n <div\n ref={ref}\n className={cn(cascaderTriggerVariants({ status, size, fullWidth }), colorVars[color], 'focus-visible:ring-slot', disabled && \"opacity-50 cursor-not-allowed\", loading && \"opacity-50 pointer-events-none\", \"cascader_trigger\", classNames?.trigger, className)}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-disabled={disabled}\n aria-label={label || placeholder}\n data-slot=\"trigger\"\n >\n {renderTriggerContent()}\n <div className=\"flex items-center gap-1 text-text-secondary shrink-0\">\n {loading && <Loader2 className={cn(\"animate-spin text-text-secondary\", iconSizes[size])} />}\n {!loading && showClearButton && <button type=\"button\" onClick={handleClear} className=\"hover:text-text-primary\" aria-label=\"Clear selection\"><X className={iconSizes[size]} /></button>}\n {!loading && <ChevronDown className={cn(\"transition-transform\", iconSizes[size], isOpen && \"rotate-180\")} />}\n </div>\n </div>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={popoverSide}\n align={popoverAlign}\n sideOffset={4}\n className=\"z-[var(--z-popover)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 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-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 duration-200\"\n >\n <CascaderMenu\n activeMenus={activeMenus}\n selectedPath={selectedPath}\n hoveredPath={hoveredPath}\n focusedIndex={focusedIndex}\n selectedPathSet={selectedPathSet}\n selectionStateMap={selectionStateMap}\n size={size}\n color={color}\n multiple={multiple}\n expandTrigger={expandTrigger}\n emptyContent={emptyContent}\n onItemClick={handleItemClick}\n onItemHover={handleItemHover}\n classNames={classNames}\n menuRefs={menuRefs}\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </div>\n {helperMessage && messagePosition === \"bottom\" && (\n <span className={cn(statusMessageVariants({ status }), \"mt-0.5\")}>{helperMessage}</span>\n )}\n </div>\n );\n },\n);\n\nCascader.displayName = \"Cascader\";\n\nexport type * from \"./types\";\nexport default Cascader;\n"]}
@@ -179,7 +179,9 @@ function buildSVGPaths(matrix, cellSize, moduleStyle, finderStyle, iconArea) {
179
179
  const r = (cellSize - (isFinder ? 0 : gap * 2)) / 2;
180
180
  const cx = x + cellSize / 2;
181
181
  const cy = y + cellSize / 2;
182
- paths.push(`M${cx - r},${cy}a${r},${r} 0 1,0 ${r * 2},0a${r},${r} 0 1,0 ${-r * 2},0`);
182
+ paths.push(
183
+ `M${cx - r},${cy}a${r},${r} 0 1,0 ${r * 2},0a${r},${r} 0 1,0 ${-r * 2},0`
184
+ );
183
185
  } else if (style === "rounded") {
184
186
  const r = cellSize * 0.3;
185
187
  const s = cellSize - (isFinder ? 0 : gap);
@@ -190,7 +192,9 @@ function buildSVGPaths(matrix, cellSize, moduleStyle, finderStyle, iconArea) {
190
192
  );
191
193
  } else {
192
194
  const g = isFinder ? 0 : gap / 2;
193
- paths.push(`M${x + g},${y + g}h${cellSize - g * 2}v${cellSize - g * 2}h${-(cellSize - g * 2)}Z`);
195
+ paths.push(
196
+ `M${x + g},${y + g}h${cellSize - g * 2}v${cellSize - g * 2}h${-(cellSize - g * 2)}Z`
197
+ );
194
198
  }
195
199
  }
196
200
  }
@@ -222,7 +226,12 @@ var QRCode = React.memo(
222
226
  const rootRef = useRef(null);
223
227
  const [libLoaded, setLibLoaded] = useState(!!_createFn);
224
228
  const resolvedFg = useSlotColor(rootRef, fgColor, "--_c", "#000000");
225
- const resolvedBg = useSlotColor(rootRef, bgColorProp, "--color-background", "#ffffff");
229
+ const resolvedBg = useSlotColor(
230
+ rootRef,
231
+ bgColorProp,
232
+ "--color-background",
233
+ "#ffffff"
234
+ );
226
235
  useEffect(() => {
227
236
  if (_createFn) {
228
237
  setLibLoaded(true);
@@ -241,19 +250,48 @@ var QRCode = React.memo(
241
250
  const centerX = (size - iconSize) / 2;
242
251
  const centerY = (size - iconSize) / 2;
243
252
  const pad = cellSize * 2;
244
- return { x: centerX - pad, y: centerY - pad, w: iconSize + pad * 2, h: iconSize + pad * 2 };
253
+ return {
254
+ x: centerX - pad,
255
+ y: centerY - pad,
256
+ w: iconSize + pad * 2,
257
+ h: iconSize + pad * 2
258
+ };
245
259
  }, [icon, matrix, size, iconSize]);
246
260
  const renderCanvas = useCallback(() => {
247
- if (!canvasRef.current || !matrix || typeof window === "undefined") return;
248
- drawCanvasQR(canvasRef.current, matrix, size, resolvedFg, resolvedBg, moduleStyle, finderStyle, iconArea);
249
- }, [matrix, size, resolvedFg, resolvedBg, moduleStyle, finderStyle, iconArea]);
261
+ if (!canvasRef.current || !matrix || typeof window === "undefined")
262
+ return;
263
+ drawCanvasQR(
264
+ canvasRef.current,
265
+ matrix,
266
+ size,
267
+ resolvedFg,
268
+ resolvedBg,
269
+ moduleStyle,
270
+ finderStyle,
271
+ iconArea
272
+ );
273
+ }, [
274
+ matrix,
275
+ size,
276
+ resolvedFg,
277
+ resolvedBg,
278
+ moduleStyle,
279
+ finderStyle,
280
+ iconArea
281
+ ]);
250
282
  useEffect(() => {
251
283
  if (type === "canvas") renderCanvas();
252
284
  }, [type, renderCanvas]);
253
285
  const svgContent = useMemo(() => {
254
286
  if (type !== "svg" || !matrix) return null;
255
287
  const cellSize = size / matrix.size;
256
- const d = buildSVGPaths(matrix, cellSize, moduleStyle, finderStyle, iconArea);
288
+ const d = buildSVGPaths(
289
+ matrix,
290
+ cellSize,
291
+ moduleStyle,
292
+ finderStyle,
293
+ iconArea
294
+ );
257
295
  return d;
258
296
  }, [type, matrix, size, moduleStyle, finderStyle, iconArea]);
259
297
  return /* @__PURE__ */ jsxs(
@@ -331,7 +369,6 @@ var QRCode = React.memo(
331
369
  className: cn(
332
370
  "qrCode_overlay",
333
371
  "absolute inset-0 flex items-center justify-center bg-background/80 rounded-lg",
334
- bordered && "m-3",
335
372
  classNames?.overlay
336
373
  ),
337
374
  children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 border-2 border-slot border-t-transparent rounded-full animate-spin" })
@@ -344,7 +381,6 @@ var QRCode = React.memo(
344
381
  className: cn(
345
382
  "qrCode_overlay",
346
383
  "absolute inset-0 flex flex-col items-center justify-center bg-background/90 rounded-lg gap-2",
347
- bordered && "m-3",
348
384
  classNames?.overlay
349
385
  ),
350
386
  children: [
@@ -370,5 +406,5 @@ QRCode.displayName = "QRCode";
370
406
  var qr_code_default = QRCode;
371
407
 
372
408
  export { qr_code_default };
373
- //# sourceMappingURL=chunk-74AF6PO2.js.map
374
- //# sourceMappingURL=chunk-74AF6PO2.js.map
409
+ //# sourceMappingURL=chunk-UEQ3NEVL.js.map
410
+ //# sourceMappingURL=chunk-UEQ3NEVL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/qr-code/index.tsx"],"names":[],"mappings":"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","file":"chunk-UEQ3NEVL.js","sourcesContent":["\"use client\";\n\nimport React, {\n useRef,\n useEffect,\n useMemo,\n useCallback,\n useState,\n} from \"react\";\n\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { QRCodeProps, QRModuleStyle, QRFinderStyle } from \"./types\";\nimport type { ComponentColor } from \"../types\";\n\n// ── QR generation ───────────────────────────────────────────\n\ninterface QRMatrix {\n size: number;\n get(row: number, col: number): number;\n}\n\nlet _createFn: ((text: string, opts?: any) => { modules: QRMatrix }) | null =\n null;\n\nasync function loadQRLib(): Promise<boolean> {\n if (_createFn) return true;\n try {\n const mod: any = await import(\"qrcode\");\n _createFn = mod.create || mod.default?.create || null;\n return !!_createFn;\n } catch {\n return false;\n }\n}\n\nfunction createQRMatrixSync(text: string, errorLevel: string): QRMatrix | null {\n if (!_createFn) return null;\n try {\n const result = _createFn(text, { errorCorrectionLevel: errorLevel });\n return result.modules as QRMatrix;\n } catch {\n return null;\n }\n}\n\n// ── Resolve computed color from an element's CSS var ────────\n\nfunction resolveColor(el: Element, varName: string): string | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = getComputedStyle(el).getPropertyValue(varName).trim();\n if (!raw) return null;\n // Convert oklch / any CSS color to a canvas-usable string\n const probe = document.createElement(\"div\");\n probe.style.color = raw;\n document.body.appendChild(probe);\n const computed = getComputedStyle(probe).color;\n document.body.removeChild(probe);\n return computed || null;\n } catch {\n return null;\n }\n}\n\n// ── Hook: read a slot CSS var from an element ref ───────────\n// Watches for theme mutations and re-resolves automatically.\n\nfunction useSlotColor(\n rootRef: React.RefObject<HTMLElement | null>,\n explicitColor: string | undefined,\n slotVar: string,\n fallback: string,\n): string {\n const [resolved, setResolved] = useState(explicitColor || fallback);\n\n useEffect(() => {\n if (explicitColor) {\n setResolved(explicitColor);\n return;\n }\n\n const update = () => {\n const el = rootRef.current;\n if (!el) return;\n const computed = resolveColor(el, slotVar);\n setResolved(computed || fallback);\n };\n\n // Initial + delayed resolve (slot vars need the element to be in the DOM)\n update();\n const raf = requestAnimationFrame(update);\n\n // Re-resolve when theme changes\n const observer = new MutationObserver(update);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\", \"data-theme\", \"data-mode\"],\n });\n\n return () => {\n cancelAnimationFrame(raf);\n observer.disconnect();\n };\n }, [explicitColor, slotVar, fallback, rootRef]);\n\n return resolved;\n}\n\n// ── Finder pattern detection ────────────────────────────────\n\nfunction isFinderModule(row: number, col: number, size: number): boolean {\n if (row < 7 && col < 7) return true;\n if (row < 7 && col >= size - 7) return true;\n if (row >= size - 7 && col < 7) return true;\n return false;\n}\n\n// ── Canvas renderer ─────────────────────────────────────────\n\nfunction drawCanvasQR(\n canvas: HTMLCanvasElement,\n matrix: QRMatrix,\n pixelSize: number,\n color: string,\n bgColor: string,\n moduleStyle: QRModuleStyle,\n finderStyle: QRFinderStyle,\n iconArea?: { x: number; y: number; w: number; h: number },\n) {\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const ratio =\n typeof window !== \"undefined\" ? window.devicePixelRatio || 1 : 1;\n canvas.width = pixelSize * ratio;\n canvas.height = pixelSize * ratio;\n canvas.style.width = `${pixelSize}px`;\n canvas.style.height = `${pixelSize}px`;\n ctx.scale(ratio, ratio);\n\n const moduleCount = matrix.size;\n const cellSize = pixelSize / moduleCount;\n\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, pixelSize, pixelSize);\n\n ctx.fillStyle = color;\n\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n if (!matrix.get(row, col)) continue;\n\n const x = col * cellSize;\n const y = row * cellSize;\n\n if (\n iconArea &&\n x + cellSize > iconArea.x &&\n x < iconArea.x + iconArea.w &&\n y + cellSize > iconArea.y &&\n y < iconArea.y + iconArea.h\n ) {\n continue;\n }\n\n const isFinder = isFinderModule(row, col, moduleCount);\n\n if (isFinder) {\n drawFinderModule(ctx, x, y, cellSize, finderStyle);\n } else {\n drawDataModule(ctx, x, y, cellSize, moduleStyle);\n }\n }\n }\n}\n\nfunction drawDataModule(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n size: number,\n style: QRModuleStyle,\n) {\n const gap = size * 0.1;\n\n switch (style) {\n case \"dots\": {\n const radius = (size - gap * 2) / 2;\n ctx.beginPath();\n ctx.arc(x + size / 2, y + size / 2, radius, 0, Math.PI * 2);\n ctx.fill();\n break;\n }\n case \"rounded\": {\n const r = size * 0.3;\n const s = size - gap;\n const ox = x + gap / 2;\n const oy = y + gap / 2;\n ctx.beginPath();\n ctx.moveTo(ox + r, oy);\n ctx.arcTo(ox + s, oy, ox + s, oy + s, r);\n ctx.arcTo(ox + s, oy + s, ox, oy + s, r);\n ctx.arcTo(ox, oy + s, ox, oy, r);\n ctx.arcTo(ox, oy, ox + s, oy, r);\n ctx.closePath();\n ctx.fill();\n break;\n }\n case \"squares\":\n default: {\n ctx.fillRect(x + gap / 2, y + gap / 2, size - gap, size - gap);\n break;\n }\n }\n}\n\nfunction drawFinderModule(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n size: number,\n style: QRFinderStyle,\n) {\n switch (style) {\n case \"dot\": {\n const r = size / 2;\n ctx.beginPath();\n ctx.arc(x + r, y + r, r * 0.9, 0, Math.PI * 2);\n ctx.fill();\n break;\n }\n case \"rounded\": {\n const radius = size * 0.3;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.arcTo(x + size, y, x + size, y + size, radius);\n ctx.arcTo(x + size, y + size, x, y + size, radius);\n ctx.arcTo(x, y + size, x, y, radius);\n ctx.arcTo(x, y, x + size, y, radius);\n ctx.closePath();\n ctx.fill();\n break;\n }\n case \"square\":\n default:\n ctx.fillRect(x, y, size, size);\n break;\n }\n}\n\n// ── SVG renderer ────────────────────────────────────────────\n\nfunction buildSVGPaths(\n matrix: QRMatrix,\n cellSize: number,\n moduleStyle: QRModuleStyle,\n finderStyle: QRFinderStyle,\n iconArea?: { x: number; y: number; w: number; h: number },\n): string {\n const paths: string[] = [];\n const moduleCount = matrix.size;\n\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n if (!matrix.get(row, col)) continue;\n\n const x = col * cellSize;\n const y = row * cellSize;\n\n if (\n iconArea &&\n x + cellSize > iconArea.x &&\n x < iconArea.x + iconArea.w &&\n y + cellSize > iconArea.y &&\n y < iconArea.y + iconArea.h\n ) {\n continue;\n }\n\n const isFinder = isFinderModule(row, col, moduleCount);\n const style = isFinder ? finderStyle : (moduleStyle as string);\n const gap = cellSize * 0.1;\n\n if (style === \"dots\" || style === \"dot\") {\n const r = (cellSize - (isFinder ? 0 : gap * 2)) / 2;\n const cx = x + cellSize / 2;\n const cy = y + cellSize / 2;\n paths.push(\n `M${cx - r},${cy}a${r},${r} 0 1,0 ${r * 2},0a${r},${r} 0 1,0 ${-r * 2},0`,\n );\n } else if (style === \"rounded\") {\n const r = cellSize * 0.3;\n const s = cellSize - (isFinder ? 0 : gap);\n const ox = x + (isFinder ? 0 : gap / 2);\n const oy = y + (isFinder ? 0 : gap / 2);\n paths.push(\n `M${ox + r},${oy}H${ox + s - r}Q${ox + s},${oy} ${ox + s},${oy + r}V${oy + s - r}Q${ox + s},${oy + s} ${ox + s - r},${oy + s}H${ox + r}Q${ox},${oy + s} ${ox},${oy + s - r}V${oy + r}Q${ox},${oy} ${ox + r},${oy}Z`,\n );\n } else {\n const g = isFinder ? 0 : gap / 2;\n paths.push(\n `M${x + g},${y + g}h${cellSize - g * 2}v${cellSize - g * 2}h${-(cellSize - g * 2)}Z`,\n );\n }\n }\n }\n\n return paths.join(\"\");\n}\n\n// ── Component ───────────────────────────────────────────────\n\nconst QRCode = React.memo<QRCodeProps>(\n ({\n value,\n size = 128,\n color = \"default\" as ComponentColor,\n fgColor,\n bgColor: bgColorProp,\n errorLevel = \"M\",\n type = \"canvas\",\n moduleStyle = \"squares\",\n finderStyle = \"square\",\n icon,\n iconSize = 40,\n iconBorderRadius = 4,\n bordered = true,\n status = \"active\",\n onRefresh,\n refreshText = \"Refresh\",\n expiredText = \"QR code expired\",\n className,\n classNames,\n }) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n const [libLoaded, setLibLoaded] = useState(!!_createFn);\n\n // Slot system: colorVars sets --_c on the root element.\n // We read --_c (fg) and --color-background (bg) from computed style.\n const resolvedFg = useSlotColor(rootRef, fgColor, \"--_c\", \"#000000\");\n const resolvedBg = useSlotColor(\n rootRef,\n bgColorProp,\n \"--color-background\",\n \"#ffffff\",\n );\n\n useEffect(() => {\n if (_createFn) {\n setLibLoaded(true);\n return;\n }\n loadQRLib().then((ok) => setLibLoaded(ok));\n }, []);\n\n const matrix = useMemo(() => {\n if (!value || !libLoaded) return null;\n return createQRMatrixSync(value, errorLevel);\n }, [value, errorLevel, libLoaded]);\n\n const iconArea = useMemo(() => {\n if (!icon || !matrix) return undefined;\n const moduleCount = matrix.size;\n const cellSize = size / moduleCount;\n const centerX = (size - iconSize) / 2;\n const centerY = (size - iconSize) / 2;\n const pad = cellSize * 2;\n return {\n x: centerX - pad,\n y: centerY - pad,\n w: iconSize + pad * 2,\n h: iconSize + pad * 2,\n };\n }, [icon, matrix, size, iconSize]);\n\n const renderCanvas = useCallback(() => {\n if (!canvasRef.current || !matrix || typeof window === \"undefined\")\n return;\n drawCanvasQR(\n canvasRef.current,\n matrix,\n size,\n resolvedFg,\n resolvedBg,\n moduleStyle,\n finderStyle,\n iconArea,\n );\n }, [\n matrix,\n size,\n resolvedFg,\n resolvedBg,\n moduleStyle,\n finderStyle,\n iconArea,\n ]);\n\n useEffect(() => {\n if (type === \"canvas\") renderCanvas();\n }, [type, renderCanvas]);\n\n const svgContent = useMemo(() => {\n if (type !== \"svg\" || !matrix) return null;\n const cellSize = size / matrix.size;\n const d = buildSVGPaths(\n matrix,\n cellSize,\n moduleStyle,\n finderStyle,\n iconArea,\n );\n return d;\n }, [type, matrix, size, moduleStyle, finderStyle, iconArea]);\n\n return (\n <div\n ref={rootRef}\n data-slot=\"root\"\n className={cn(\n \"qrCode_root\",\n \"relative inline-flex flex-col items-center\",\n colorVars[color],\n bordered && \"p-3 rounded-lg border border-slot bg-background\",\n classNames?.root,\n className,\n )}\n >\n {type === \"canvas\" ? (\n <canvas\n ref={canvasRef}\n data-slot=\"canvas\"\n className={cn(\"qrCode_canvas\", classNames?.canvas)}\n style={{ width: size, height: size }}\n />\n ) : (\n <svg\n data-slot=\"svg\"\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className={cn(\"qrCode_svg\", classNames?.svg)}\n >\n <rect width={size} height={size} fill={resolvedBg} />\n {svgContent && <path d={svgContent} fill={resolvedFg} />}\n </svg>\n )}\n\n {/* Icon overlay */}\n {icon && status === \"active\" && (\n <div\n data-slot=\"icon\"\n className={cn(\"qrCode_icon\", \"absolute\", classNames?.icon)}\n style={{\n width: iconSize,\n height: iconSize,\n top: `calc(50% - ${iconSize / 2}px)`,\n left: `calc(50% - ${iconSize / 2}px)`,\n backgroundColor: resolvedBg,\n borderRadius: iconBorderRadius,\n padding: 3,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <img\n src={icon}\n alt=\"\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"contain\",\n borderRadius: Math.max(0, iconBorderRadius - 2),\n }}\n />\n </div>\n )}\n\n {/* Loading overlay */}\n {status === \"loading\" && (\n <div\n data-slot=\"overlay\"\n className={cn(\n \"qrCode_overlay\",\n \"absolute inset-0 flex items-center justify-center bg-background/80 rounded-lg\",\n classNames?.overlay,\n )}\n >\n <div className=\"w-6 h-6 border-2 border-slot border-t-transparent rounded-full animate-spin\" />\n </div>\n )}\n\n {/* Expired overlay */}\n {status === \"expired\" && (\n <div\n data-slot=\"overlay\"\n className={cn(\n \"qrCode_overlay\",\n \"absolute inset-0 flex flex-col items-center justify-center bg-background/90 rounded-lg gap-2\",\n classNames?.overlay,\n )}\n >\n <p className=\"text-sm text-text-secondary\">{expiredText}</p>\n {onRefresh && (\n <button\n type=\"button\"\n onClick={onRefresh}\n className=\"text-sm text-slot hover:opacity-80 font-medium cursor-pointer\"\n >\n {refreshText}\n </button>\n )}\n </div>\n )}\n </div>\n );\n },\n);\n\nQRCode.displayName = \"QRCode\";\n\nexport type * from \"./types\";\nexport default QRCode;\n"]}
@@ -19,9 +19,14 @@ function useMergeRefs(...refs) {
19
19
  }, []);
20
20
  }
21
21
  var checkboxVariants = cva(
22
- "appearance-none rounded border bg-background cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
22
+ "appearance-none rounded border cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
23
23
  {
24
24
  variants: {
25
+ variant: {
26
+ solid: "bg-background border-slot-30 checked:bg-slot checked:border-slot indeterminate:bg-slot indeterminate:border-slot",
27
+ outline: "bg-background border-slot-30 checked:border-slot indeterminate:border-slot",
28
+ soft: "bg-background border-slot-30 checked:bg-slot-10 checked:border-slot indeterminate:bg-slot-10 indeterminate:border-slot"
29
+ },
25
30
  color: colorVars,
26
31
  size: {
27
32
  xs: "w-(--checkbox-size-xs) h-(--checkbox-size-xs)",
@@ -35,13 +40,20 @@ var checkboxVariants = cva(
35
40
  }
36
41
  },
37
42
  defaultVariants: {
43
+ variant: "solid",
38
44
  color: "primary",
39
45
  size: "md"
40
46
  }
41
47
  }
42
48
  );
49
+ var indicatorColors = {
50
+ solid: "text-slot-fg",
51
+ outline: "text-slot",
52
+ soft: "text-slot"
53
+ };
43
54
  var Checkbox = React.memo(
44
55
  ({
56
+ variant = "solid",
45
57
  color = "primary",
46
58
  size = "md",
47
59
  label,
@@ -80,7 +92,7 @@ var Checkbox = React.memo(
80
92
  internalRef.current.indeterminate = indeterminate;
81
93
  }
82
94
  }, [indeterminate]);
83
- const checkboxElement = /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", "data-slot": "wrapper", children: [
95
+ const checkboxElement = /* @__PURE__ */ jsxs("span", { className: cn("relative inline-flex", colorVars[color]), "data-slot": "wrapper", children: [
84
96
  /* @__PURE__ */ jsx(
85
97
  "input",
86
98
  {
@@ -88,8 +100,7 @@ var Checkbox = React.memo(
88
100
  type: "checkbox",
89
101
  className: cn(
90
102
  "checkbox_checkbox",
91
- checkboxVariants({ color, size, error: !!error }),
92
- "border-border checked:border-slot indeterminate:border-slot",
103
+ checkboxVariants({ variant, color, size, error: !!error }),
93
104
  "focus-visible:ring-slot",
94
105
  className,
95
106
  classNames?.checkbox
@@ -116,10 +127,10 @@ var Checkbox = React.memo(
116
127
  children: indeterminate ? /* @__PURE__ */ jsx(
117
128
  Minus,
118
129
  {
119
- className: cn(iconSizes[size], "text-slot"),
130
+ className: cn(iconSizes[size], indicatorColors[variant]),
120
131
  strokeWidth: 3
121
132
  }
122
- ) : /* @__PURE__ */ jsx(Check, { className: cn(iconSizes[size], "text-slot") })
133
+ ) : /* @__PURE__ */ jsx(Check, { className: cn(iconSizes[size], indicatorColors[variant]) })
123
134
  }
124
135
  )
125
136
  ] });
@@ -179,5 +190,5 @@ Checkbox.displayName = "Checkbox";
179
190
  var checkbox_default = Checkbox;
180
191
 
181
192
  export { checkbox_default };
182
- //# sourceMappingURL=chunk-A4MYCEGM.js.map
183
- //# sourceMappingURL=chunk-A4MYCEGM.js.map
193
+ //# sourceMappingURL=chunk-UHHCUCEE.js.map
194
+ //# sourceMappingURL=chunk-UHHCUCEE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/checkbox/index.tsx"],"names":[],"mappings":"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","file":"chunk-UHHCUCEE.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { Check, Minus } from \"lucide-react\";\nimport React, { useState, useCallback, useEffect, useId } from \"react\";\n\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { CheckboxProps } from \"./types\";\n\nfunction useMergeRefs<T>(\n ...refs: (React.Ref<T> | undefined)[]\n): React.RefCallback<T> {\n const refsRef = React.useRef(refs);\n refsRef.current = refs;\n\n return useCallback((instance: T | null) => {\n refsRef.current.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref && typeof ref === \"object\") {\n (ref as React.MutableRefObject<T | null>).current = instance;\n }\n });\n }, []);\n}\n\nconst checkboxVariants = cva(\n \"appearance-none rounded border cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n {\n variants: {\n variant: {\n solid:\n \"bg-background border-slot-30 checked:bg-slot checked:border-slot indeterminate:bg-slot indeterminate:border-slot\",\n outline:\n \"bg-background border-slot-30 checked:border-slot indeterminate:border-slot\",\n soft:\n \"bg-background border-slot-30 checked:bg-slot-10 checked:border-slot indeterminate:bg-slot-10 indeterminate:border-slot\",\n },\n color: colorVars,\n size: {\n xs: \"w-(--checkbox-size-xs) h-(--checkbox-size-xs)\",\n sm: \"w-(--checkbox-size-sm) h-(--checkbox-size-sm)\",\n md: \"w-(--checkbox-size-md) h-(--checkbox-size-md)\",\n lg: \"w-(--checkbox-size-lg) h-(--checkbox-size-lg)\",\n },\n error: {\n true: \"border-error checked:border-error\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"solid\",\n color: \"primary\",\n size: \"md\",\n },\n },\n);\n\nconst indicatorColors = {\n solid: \"text-slot-fg\",\n outline: \"text-slot\",\n soft: \"text-slot\",\n} as const;\n\nconst Checkbox = React.memo<CheckboxProps>(\n ({\n variant = \"solid\",\n color = \"primary\",\n size = \"md\",\n label,\n helperText,\n error,\n indeterminate = false,\n className,\n checked,\n defaultChecked,\n ref,\n classNames,\n ...props\n }) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isControlled = checked !== undefined;\n const isChecked = isControlled ? checked : internalChecked;\n const internalRef = React.useRef<HTMLInputElement>(null);\n\n const uniqueId = useId();\n const checkboxId = props.id || `checkbox-${uniqueId}`;\n const helperId = `checkbox-helper-${uniqueId}`;\n const hasHelperText = !!(helperText || error);\n\n const mergedRef = useMergeRefs(ref, internalRef);\n\n const onChangeRef = React.useRef(props.onChange);\n onChangeRef.current = props.onChange;\n\n const onChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(event.target.checked);\n }\n onChangeRef.current?.(event);\n },\n [isControlled],\n );\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const checkboxElement = (\n <span className={cn(\"relative inline-flex\", colorVars[color])} data-slot=\"wrapper\">\n <input\n ref={mergedRef}\n type=\"checkbox\"\n className={cn(\n \"checkbox_checkbox\",\n checkboxVariants({ variant, color, size, error: !!error }),\n \"focus-visible:ring-slot\",\n className,\n classNames?.checkbox,\n )}\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n aria-invalid={!!error || undefined}\n aria-describedby={hasHelperText ? helperId : undefined}\n {...props}\n id={checkboxId}\n onChange={onChange}\n checked={isChecked}\n data-slot=\"checkbox\"\n />\n {(isChecked || indeterminate) && (\n <span\n className={cn(\n \"checkbox_indicator\",\n \"absolute inset-0 flex items-center justify-center pointer-events-none\",\n classNames?.indicator,\n )}\n data-slot=\"indicator\"\n >\n {indeterminate ? (\n <Minus\n className={cn(iconSizes[size], indicatorColors[variant])}\n strokeWidth={3}\n />\n ) : (\n <Check className={cn(iconSizes[size], indicatorColors[variant])} />\n )}\n </span>\n )}\n </span>\n );\n\n return (\n <div\n className={cn(\"checkbox_root\", label && \"w-full\", classNames?.root)}\n data-slot=\"root\"\n >\n <label\n htmlFor={checkboxId}\n className={cn(\n \"flex items-center gap-2\",\n !props.disabled && \"cursor-pointer\",\n )}\n >\n {checkboxElement}\n {label && (\n <span\n className={cn(\n \"checkbox_label\",\n \"text-sm text-text-primary select-none\",\n error && \"text-error\",\n props.disabled && \"opacity-50\",\n classNames?.label,\n )}\n data-slot=\"label\"\n >\n {label}\n </span>\n )}\n </label>\n {(helperText || error) && (\n <p\n id={helperId}\n className={cn(\n \"checkbox_description\",\n \"mt-1 ml-0 text-xs\",\n error ? \"text-error\" : \"text-text-secondary\",\n classNames?.description,\n )}\n data-slot=\"description\"\n >\n {typeof error === \"string\" ? error : helperText}\n </p>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport type * from \"./types\";\nexport default Checkbox;\n"]}
@@ -31,7 +31,7 @@ var Skeleton = React.memo(
31
31
  className: cn(
32
32
  "skeleton_root",
33
33
  skeletonVariants({ size, color }),
34
- "bg-slot-50",
34
+ "bg-slot-20",
35
35
  circle && "rounded-full aspect-square",
36
36
  className
37
37
  )
@@ -43,5 +43,5 @@ Skeleton.displayName = "Skeleton";
43
43
  var skeleton_default = Skeleton;
44
44
 
45
45
  export { skeleton_default };
46
- //# sourceMappingURL=chunk-X7JN7WPF.js.map
47
- //# sourceMappingURL=chunk-X7JN7WPF.js.map
46
+ //# sourceMappingURL=chunk-UIPDAD62.js.map
47
+ //# sourceMappingURL=chunk-UIPDAD62.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/skeleton/index.tsx"],"names":[],"mappings":";;;;;;AASA,IAAM,gBAAA,GAAmB,IAAI,uBAAA,EAAyB;AAAA,EACpD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI,KAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAED,IAAM,WAAW,KAAA,CAAM,IAAA;AAAA,EACrB,CAAC,EAAE,KAAA,GAAQ,SAAA,EAAW,OAAO,IAAA,EAAM,SAAA,EAAW,MAAA,GAAS,KAAA,EAAM,KAAM;AACjE,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,WAAA,EAAU,MAAA;AAAA,QACV,YAAA,EAAW,SAAA;AAAA,QACX,SAAA,EAAW,EAAA;AAAA,UACT,eAAA;AAAA,UACA,gBAAA,CAAiB,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,UAChC,YAAA;AAAA,UACA,MAAA,IAAU,4BAAA;AAAA,UACV;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGvB,IAAO,gBAAA,GAAQ","file":"chunk-UIPDAD62.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { SkeletonProps } from \"./types\";\n\nconst skeletonVariants = cva(\"animate-pulse rounded\", {\n variants: {\n size: {\n xs: \"h-3\",\n sm: \"h-4\",\n md: \"h-5\",\n lg: \"h-6\",\n },\n color: colorVars,\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n },\n});\n\nconst Skeleton = React.memo<SkeletonProps>(\n ({ color = \"default\", size = \"md\", className, circle = false }) => {\n return (\n <div\n data-slot=\"root\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n className={cn(\n \"skeleton_root\",\n skeletonVariants({ size, color }),\n \"bg-slot-20\",\n circle && \"rounded-full aspect-square\",\n className,\n )}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport type * from \"./types\";\nexport default Skeleton;\n"]}
@@ -95,7 +95,6 @@ var Tour = React.memo(
95
95
  const [targetRect, setTargetRect] = useState(null);
96
96
  const [targetRadius, setTargetRadius] = useState("0px");
97
97
  const [entering, setEntering] = useState(false);
98
- const [contentFading, setContentFading] = useState(false);
99
98
  const popoverRef = useRef(null);
100
99
  const setOpen = useCallback(
101
100
  (v) => {
@@ -106,12 +105,8 @@ var Tour = React.memo(
106
105
  );
107
106
  const setCurrent = useCallback(
108
107
  (v) => {
109
- setContentFading(true);
110
- setTimeout(() => {
111
- if (controlledCurrent === void 0) setInternalCurrent(v);
112
- onCurrentChange?.(v);
113
- setContentFading(false);
114
- }, 150);
108
+ if (controlledCurrent === void 0) setInternalCurrent(v);
109
+ onCurrentChange?.(v);
115
110
  },
116
111
  [controlledCurrent, onCurrentChange]
117
112
  );
@@ -140,13 +135,26 @@ var Tour = React.memo(
140
135
  };
141
136
  updateRect();
142
137
  el.scrollIntoView({ behavior: "smooth", block: "center" });
138
+ const scrollParents = [window];
139
+ let parent = el.parentElement;
140
+ while (parent) {
141
+ const { overflow, overflowX, overflowY } = getComputedStyle(parent);
142
+ if (/auto|scroll/.test(overflow + overflowX + overflowY)) {
143
+ scrollParents.push(parent);
144
+ }
145
+ parent = parent.parentElement;
146
+ }
143
147
  const ro = new ResizeObserver(updateRect);
144
148
  ro.observe(el);
145
- window.addEventListener("scroll", updateRect, { passive: true });
149
+ for (const sp of scrollParents) {
150
+ sp.addEventListener("scroll", updateRect, { passive: true });
151
+ }
146
152
  window.addEventListener("resize", updateRect, { passive: true });
147
153
  return () => {
148
154
  ro.disconnect();
149
- window.removeEventListener("scroll", updateRect);
155
+ for (const sp of scrollParents) {
156
+ sp.removeEventListener("scroll", updateRect);
157
+ }
150
158
  window.removeEventListener("resize", updateRect);
151
159
  };
152
160
  }, [isOpen, current, step]);
@@ -197,8 +205,7 @@ var Tour = React.memo(
197
205
  };
198
206
  const popoverStyle = targetRect ? {
199
207
  ...getPopoverStyle(targetRect, placement, s.gap),
200
- transition: entering ? "none" : `top ${DURATION} ${EASE}, left ${DURATION} ${EASE}, bottom ${DURATION} ${EASE}, right ${DURATION} ${EASE}, opacity 150ms ease`,
201
- opacity: contentFading ? 0 : 1
208
+ transition: entering ? "none" : `top ${DURATION} ${EASE}, left ${DURATION} ${EASE}, bottom ${DURATION} ${EASE}, right ${DURATION} ${EASE}`
202
209
  } : { position: "fixed", opacity: 0 };
203
210
  return /* @__PURE__ */ jsxs(
204
211
  "div",
@@ -299,5 +306,5 @@ Tour.displayName = "Tour";
299
306
  var tour_default = Tour;
300
307
 
301
308
  export { tour_default };
302
- //# sourceMappingURL=chunk-YUACN5GJ.js.map
303
- //# sourceMappingURL=chunk-YUACN5GJ.js.map
309
+ //# sourceMappingURL=chunk-UPBKLI62.js.map
310
+ //# sourceMappingURL=chunk-UPBKLI62.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tour/index.tsx"],"names":[],"mappings":"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","file":"chunk-UPBKLI62.js","sourcesContent":["'use client'\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react'\n\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { TourProps, TourPlacement } from './types'\n\nfunction getTargetElement(target: string | (() => HTMLElement | null)): HTMLElement | null {\n if (typeof target === 'function') return target()\n return document.querySelector(target)\n}\n\nfunction getTargetBorderRadius(el: HTMLElement): string {\n if (typeof window === 'undefined') return '0px'\n return getComputedStyle(el).borderRadius || '0px'\n}\n\n// ── Popover positioning ─────────────────────────────────────\nfunction computePopoverPosition(\n rect: DOMRect,\n placement: TourPlacement,\n gap: number,\n): { top: number; left: number } {\n const base = placement.split('-')[0] as 'top' | 'right' | 'bottom' | 'left'\n const align = placement.split('-')[1] as 'start' | 'end' | undefined\n\n let top = 0\n let left = 0\n\n const cx = rect.left + rect.width / 2\n const cy = rect.top + rect.height / 2\n\n if (base === 'bottom') {\n top = rect.bottom + gap\n left = align === 'start' ? rect.left : align === 'end' ? rect.right : cx\n } else if (base === 'top') {\n top = rect.top - gap\n left = align === 'start' ? rect.left : align === 'end' ? rect.right : cx\n } else if (base === 'left') {\n top = align === 'start' ? rect.top : align === 'end' ? rect.bottom : cy\n left = rect.left - gap\n } else {\n top = align === 'start' ? rect.top : align === 'end' ? rect.bottom : cy\n left = rect.right + gap\n }\n\n return { top, left }\n}\n\nfunction getPopoverStyle(\n rect: DOMRect,\n placement: TourPlacement,\n gap: number,\n): React.CSSProperties {\n const base = placement.split('-')[0] as 'top' | 'right' | 'bottom' | 'left'\n const align = placement.split('-')[1] as 'start' | 'end' | undefined\n\n const pos = computePopoverPosition(rect, placement, gap)\n const style: React.CSSProperties = {\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n }\n\n // Transform for anchoring\n if (base === 'bottom') {\n if (!align) style.transform = 'translateX(-50%)'\n else if (align === 'end') style.transform = 'translateX(-100%)'\n } else if (base === 'top') {\n if (!align) style.transform = 'translate(-50%, -100%)'\n else if (align === 'start') style.transform = 'translateY(-100%)'\n else style.transform = 'translate(-100%, -100%)'\n } else if (base === 'left') {\n if (!align) style.transform = 'translate(-100%, -50%)'\n else if (align === 'start') style.transform = 'translateX(-100%)'\n else style.transform = 'translate(-100%, -100%)'\n } else {\n if (!align) style.transform = 'translateY(-50%)'\n else if (align === 'end') style.transform = 'translateY(-100%)'\n }\n\n return style\n}\n\nconst sizeMap = {\n xs: { padding: 4, gap: 8, popover: 'p-3 max-w-[260px]', title: 'text-sm font-semibold', desc: 'text-xs', btn: 'h-6 px-2.5 text-xs' },\n sm: { padding: 6, gap: 10, popover: 'p-3.5 max-w-[300px]', title: 'text-sm font-semibold', desc: 'text-sm', btn: 'h-7 px-3 text-xs' },\n md: { padding: 8, gap: 12, popover: 'p-4 max-w-[340px]', title: 'text-base font-semibold', desc: 'text-sm', btn: 'h-8 px-3 text-sm' },\n lg: { padding: 10, gap: 14, popover: 'p-5 max-w-[400px]', title: 'text-lg font-semibold', desc: 'text-base', btn: 'h-9 px-4 text-sm' },\n}\n\n// Transition easing\nconst EASE = 'cubic-bezier(0.4, 0, 0.2, 1)'\nconst DURATION = '350ms'\n\nconst Tour = React.memo<TourProps>(\n ({\n steps,\n open: controlledOpen,\n onOpenChange,\n current: controlledCurrent,\n onCurrentChange,\n color = 'primary',\n size = 'md',\n showProgress = true,\n showSkip = true,\n skipText = 'Skip',\n finishText = 'Finish',\n nextText = 'Next',\n prevText = 'Back',\n onFinish,\n onSkip,\n overlayClickable = false,\n className,\n classNames,\n }) => {\n const [internalOpen, setInternalOpen] = useState(false)\n const [internalCurrent, setInternalCurrent] = useState(0)\n const isOpen = controlledOpen !== undefined ? controlledOpen : internalOpen\n const current = controlledCurrent !== undefined ? controlledCurrent : internalCurrent\n\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null)\n const [targetRadius, setTargetRadius] = useState('0px')\n const [entering, setEntering] = useState(false)\n const popoverRef = useRef<HTMLDivElement>(null)\n\n const setOpen = useCallback(\n (v: boolean) => {\n if (controlledOpen === undefined) setInternalOpen(v)\n onOpenChange?.(v)\n },\n [controlledOpen, onOpenChange],\n )\n\n const setCurrent = useCallback(\n (v: number) => {\n if (controlledCurrent === undefined) setInternalCurrent(v)\n onCurrentChange?.(v)\n },\n [controlledCurrent, onCurrentChange],\n )\n\n const step = steps[current]\n const s = sizeMap[size]\n\n // Initial entrance animation\n useEffect(() => {\n if (isOpen) {\n setEntering(true)\n const t = setTimeout(() => setEntering(false), 400)\n return () => clearTimeout(t)\n }\n }, [isOpen])\n\n // Track target rect + border-radius\n useEffect(() => {\n if (!isOpen || !step) { setTargetRect(null); return }\n const el = getTargetElement(step.target)\n if (!el) { setTargetRect(null); return }\n\n const updateRect = () => {\n setTargetRect(el.getBoundingClientRect())\n setTargetRadius(getTargetBorderRadius(el))\n }\n updateRect()\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' })\n\n // Collect all scrollable ancestors so the highlight follows if any of them scroll\n const scrollParents: (HTMLElement | Window)[] = [window]\n let parent = el.parentElement\n while (parent) {\n const { overflow, overflowX, overflowY } = getComputedStyle(parent)\n if (/auto|scroll/.test(overflow + overflowX + overflowY)) {\n scrollParents.push(parent)\n }\n parent = parent.parentElement\n }\n\n const ro = new ResizeObserver(updateRect)\n ro.observe(el)\n for (const sp of scrollParents) {\n sp.addEventListener('scroll', updateRect, { passive: true })\n }\n window.addEventListener('resize', updateRect, { passive: true })\n\n return () => {\n ro.disconnect()\n for (const sp of scrollParents) {\n sp.removeEventListener('scroll', updateRect)\n }\n window.removeEventListener('resize', updateRect)\n }\n }, [isOpen, current, step])\n\n const handleNext = () => {\n step?.onNext?.()\n if (current < steps.length - 1) setCurrent(current + 1)\n else { setOpen(false); onFinish?.() }\n }\n\n const handlePrev = () => {\n step?.onPrev?.()\n if (current > 0) setCurrent(current - 1)\n }\n\n const handleSkip = () => {\n setOpen(false)\n if (controlledCurrent === undefined) setInternalCurrent(0)\n onSkip?.()\n }\n\n useEffect(() => {\n if (!isOpen) return\n const handleEsc = (e: KeyboardEvent) => { if (e.key === 'Escape') handleSkip() }\n document.addEventListener('keydown', handleEsc)\n return () => document.removeEventListener('keydown', handleEsc)\n }, [isOpen])\n\n if (!isOpen || !step) return null\n\n const placement = step.placement || 'bottom'\n const isLast = current === steps.length - 1\n\n // The spotlight element — uses box-shadow to create the overlay\n // As this element transitions position/size/border-radius, the\n // entire overlay smoothly morphs to follow the target.\n const spotlightStyle: React.CSSProperties = targetRect\n ? {\n position: 'fixed',\n top: targetRect.top - s.padding,\n left: targetRect.left - s.padding,\n width: targetRect.width + s.padding * 2,\n height: targetRect.height + s.padding * 2,\n borderRadius: targetRadius,\n boxShadow: '0 0 0 9999px rgba(0, 0, 0, 0.5)',\n transition: entering\n ? 'none'\n : `top ${DURATION} ${EASE}, left ${DURATION} ${EASE}, width ${DURATION} ${EASE}, height ${DURATION} ${EASE}, border-radius ${DURATION} ${EASE}`,\n pointerEvents: 'none' as const,\n opacity: entering ? 0 : 1,\n animation: entering ? 'none' : undefined,\n }\n : {\n position: 'fixed' as const,\n inset: 0,\n background: 'rgba(0,0,0,0.5)',\n }\n\n // Popover transitions position smoothly (no remount)\n const popoverStyle: React.CSSProperties = targetRect\n ? {\n ...getPopoverStyle(targetRect, placement, s.gap),\n transition: entering\n ? 'none'\n : `top ${DURATION} ${EASE}, left ${DURATION} ${EASE}, bottom ${DURATION} ${EASE}, right ${DURATION} ${EASE}`,\n }\n : { position: 'fixed', opacity: 0 }\n\n return (\n <div\n data-slot=\"root\"\n className={cn('tour_root', colorVars[color], classNames?.root, className)}\n style={{ opacity: entering ? 0 : 1, transition: `opacity 300ms ${EASE}` }}\n ref={(el) => {\n // Trigger entrance fade after mount\n if (el && entering) requestAnimationFrame(() => setEntering(false))\n }}\n >\n {/* Spotlight overlay — single div, box-shadow creates darkened backdrop */}\n <div\n data-slot=\"overlay\"\n className={cn('tour_overlay', 'z-[var(--z-overlay)]', classNames?.overlay)}\n onClick={overlayClickable ? handleSkip : undefined}\n style={spotlightStyle}\n />\n\n {/* Highlight ring — follows target shape */}\n {targetRect && (\n <div\n data-slot=\"highlight\"\n className=\"fixed z-[var(--z-overlay)] pointer-events-none\"\n style={{\n top: targetRect.top - s.padding,\n left: targetRect.left - s.padding,\n width: targetRect.width + s.padding * 2,\n height: targetRect.height + s.padding * 2,\n borderRadius: targetRadius,\n boxShadow: '0 0 0 2px var(--color-slot, #3b82f6), 0 0 12px 2px color-mix(in srgb, var(--color-slot, #3b82f6) 30%, transparent)',\n transition: `top ${DURATION} ${EASE}, left ${DURATION} ${EASE}, width ${DURATION} ${EASE}, height ${DURATION} ${EASE}, border-radius ${DURATION} ${EASE}`,\n }}\n />\n )}\n\n {/* Popover — position transitions, content crossfades */}\n <div\n ref={popoverRef}\n data-slot=\"popover\"\n className={cn(\n 'tour_popover',\n 'z-[calc(var(--z-overlay)+1)] rounded-lg border border-border bg-background shadow-lg',\n s.popover,\n classNames?.popover,\n )}\n style={popoverStyle}\n >\n {step.cover && (\n <div data-slot=\"cover\" className={cn('tour_cover', 'mb-3 rounded-md overflow-hidden', classNames?.cover)}>\n {step.cover}\n </div>\n )}\n\n <div data-slot=\"title\" className={cn('tour_title', s.title, 'text-text-primary', classNames?.title)}>\n {step.title}\n </div>\n\n {step.description && (\n <div data-slot=\"description\" className={cn('tour_description', s.desc, 'text-text-secondary mt-1', classNames?.description)}>\n {step.description}\n </div>\n )}\n\n <div data-slot=\"footer\" className={cn('tour_footer', 'flex items-center justify-between mt-3 gap-2', classNames?.footer)}>\n <div className=\"flex items-center gap-2\">\n {showProgress && (\n <span data-slot=\"indicator\" className={cn('tour_indicator', 'text-xs text-text-secondary', classNames?.indicator)}>\n {current + 1} / {steps.length}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showSkip && !isLast && (\n <button\n type=\"button\"\n onClick={handleSkip}\n className={cn('inline-flex items-center justify-center rounded-md text-text-secondary hover:text-text-primary transition-colors font-medium cursor-pointer', s.btn)}\n >\n {skipText}\n </button>\n )}\n\n {current > 0 && (\n <button\n type=\"button\"\n onClick={handlePrev}\n className={cn('inline-flex items-center justify-center rounded-md border border-border bg-background text-text-primary hover:bg-surface transition-colors font-medium cursor-pointer', s.btn)}\n >\n {step.prevText || prevText}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleNext}\n className={cn('inline-flex items-center justify-center rounded-md bg-slot text-slot-fg hover:bg-slot-90 transition-colors font-medium cursor-pointer', s.btn)}\n >\n {isLast ? finishText : step.nextText || nextText}\n </button>\n </div>\n </div>\n </div>\n </div>\n )\n },\n)\n\nTour.displayName = 'Tour'\n\nexport type * from './types'\nexport default Tour\n"]}