asterui 0.12.2 → 0.12.3

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 (298) hide show
  1. package/dist/index.d.ts +0 -3
  2. package/dist/index.js +196 -201
  3. package/dist/index.js.map +1 -1
  4. package/dist/index100.js +11 -44
  5. package/dist/index100.js.map +1 -1
  6. package/dist/index101.js +12 -10
  7. package/dist/index101.js.map +1 -1
  8. package/dist/index102.js +7 -14
  9. package/dist/index102.js.map +1 -1
  10. package/dist/index103.js +12 -7
  11. package/dist/index103.js.map +1 -1
  12. package/dist/index104.js +29 -11
  13. package/dist/index104.js.map +1 -1
  14. package/dist/index105.js +16 -29
  15. package/dist/index105.js.map +1 -1
  16. package/dist/index13.js +95 -35
  17. package/dist/index13.js.map +1 -1
  18. package/dist/index14.js +153 -90
  19. package/dist/index14.js.map +1 -1
  20. package/dist/index15.js +146 -154
  21. package/dist/index15.js.map +1 -1
  22. package/dist/index16.js +5 -150
  23. package/dist/index16.js.map +1 -1
  24. package/dist/index17.js +71 -5
  25. package/dist/index17.js.map +1 -1
  26. package/dist/index18.js +17 -71
  27. package/dist/index18.js.map +1 -1
  28. package/dist/index19.js +96 -15
  29. package/dist/index19.js.map +1 -1
  30. package/dist/index20.js +105 -89
  31. package/dist/index20.js.map +1 -1
  32. package/dist/index21.js +177 -107
  33. package/dist/index21.js.map +1 -1
  34. package/dist/index22.js +107 -181
  35. package/dist/index22.js.map +1 -1
  36. package/dist/index23.js +19 -110
  37. package/dist/index23.js.map +1 -1
  38. package/dist/index24.js +41 -17
  39. package/dist/index24.js.map +1 -1
  40. package/dist/index25.js +32 -43
  41. package/dist/index25.js.map +1 -1
  42. package/dist/index26.js +41 -32
  43. package/dist/index26.js.map +1 -1
  44. package/dist/index27.js +12 -41
  45. package/dist/index27.js.map +1 -1
  46. package/dist/index28.js +33 -12
  47. package/dist/index28.js.map +1 -1
  48. package/dist/index29.js +63 -33
  49. package/dist/index29.js.map +1 -1
  50. package/dist/index30.js +77 -60
  51. package/dist/index30.js.map +1 -1
  52. package/dist/index31.js +18 -80
  53. package/dist/index31.js.map +1 -1
  54. package/dist/index32.js +217 -15
  55. package/dist/index32.js.map +1 -1
  56. package/dist/index33.js +1078 -216
  57. package/dist/index33.js.map +1 -1
  58. package/dist/index34.js +17 -1081
  59. package/dist/index34.js.map +1 -1
  60. package/dist/index35.js +121 -17
  61. package/dist/index35.js.map +1 -1
  62. package/dist/index36.js +37 -119
  63. package/dist/index36.js.map +1 -1
  64. package/dist/index37.js +182 -31
  65. package/dist/index37.js.map +1 -1
  66. package/dist/index38.js +97 -191
  67. package/dist/index38.js.map +1 -1
  68. package/dist/index39.js +158 -93
  69. package/dist/index39.js.map +1 -1
  70. package/dist/index40.js +139 -155
  71. package/dist/index40.js.map +1 -1
  72. package/dist/index41.js +15 -146
  73. package/dist/index41.js.map +1 -1
  74. package/dist/index42.js +17 -14
  75. package/dist/index42.js.map +1 -1
  76. package/dist/index43.js +21 -18
  77. package/dist/index43.js.map +1 -1
  78. package/dist/index44.js +116 -18
  79. package/dist/index44.js.map +1 -1
  80. package/dist/index45.js +10 -116
  81. package/dist/index45.js.map +1 -1
  82. package/dist/index46.js +35 -13
  83. package/dist/index46.js.map +1 -1
  84. package/dist/index47.js +10 -35
  85. package/dist/index47.js.map +1 -1
  86. package/dist/index48.js +116 -10
  87. package/dist/index48.js.map +1 -1
  88. package/dist/index49.js +174 -114
  89. package/dist/index49.js.map +1 -1
  90. package/dist/index50.js +136 -165
  91. package/dist/index50.js.map +1 -1
  92. package/dist/index51.js +11 -146
  93. package/dist/index51.js.map +1 -1
  94. package/dist/index52.js +20 -10
  95. package/dist/index52.js.map +1 -1
  96. package/dist/index53.js +14 -22
  97. package/dist/index53.js.map +1 -1
  98. package/dist/index54.js +7 -14
  99. package/dist/index54.js.map +1 -1
  100. package/dist/index55.js +265 -6
  101. package/dist/index55.js.map +1 -1
  102. package/dist/index56.js +17 -266
  103. package/dist/index56.js.map +1 -1
  104. package/dist/index57.js +122 -17
  105. package/dist/index57.js.map +1 -1
  106. package/dist/index58.js +108 -120
  107. package/dist/index58.js.map +1 -1
  108. package/dist/index59.js +167 -107
  109. package/dist/index59.js.map +1 -1
  110. package/dist/index60.js +29 -167
  111. package/dist/index60.js.map +1 -1
  112. package/dist/index61.js +120 -30
  113. package/dist/index61.js.map +1 -1
  114. package/dist/index62.js +80 -116
  115. package/dist/index62.js.map +1 -1
  116. package/dist/index63.js +19 -85
  117. package/dist/index63.js.map +1 -1
  118. package/dist/index64.js +73 -19
  119. package/dist/index64.js.map +1 -1
  120. package/dist/index65.js +54 -71
  121. package/dist/index65.js.map +1 -1
  122. package/dist/index66.js +44 -56
  123. package/dist/index66.js.map +1 -1
  124. package/dist/index67.js +49 -42
  125. package/dist/index67.js.map +1 -1
  126. package/dist/index68.js +62 -52
  127. package/dist/index68.js.map +1 -1
  128. package/dist/index69.js +101 -56
  129. package/dist/index69.js.map +1 -1
  130. package/dist/index70.js +41 -107
  131. package/dist/index70.js.map +1 -1
  132. package/dist/index71.js +68 -41
  133. package/dist/index71.js.map +1 -1
  134. package/dist/index72.js +19 -66
  135. package/dist/index72.js.map +1 -1
  136. package/dist/index73.js +43 -18
  137. package/dist/index73.js.map +1 -1
  138. package/dist/index74.js +132 -44
  139. package/dist/index74.js.map +1 -1
  140. package/dist/index75.js +50 -132
  141. package/dist/index75.js.map +1 -1
  142. package/dist/index76.js +21 -51
  143. package/dist/index76.js.map +1 -1
  144. package/dist/index77.js +31 -22
  145. package/dist/index77.js.map +1 -1
  146. package/dist/index78.js +22 -31
  147. package/dist/index78.js.map +1 -1
  148. package/dist/index79.js +327 -20
  149. package/dist/index79.js.map +1 -1
  150. package/dist/index80.js +50 -323
  151. package/dist/index80.js.map +1 -1
  152. package/dist/index81.js +40 -56
  153. package/dist/index81.js.map +1 -1
  154. package/dist/index82.js +23 -40
  155. package/dist/index82.js.map +1 -1
  156. package/dist/index83.js +93 -21
  157. package/dist/index83.js.map +1 -1
  158. package/dist/index84.js +123 -88
  159. package/dist/index84.js.map +1 -1
  160. package/dist/index85.js +154 -123
  161. package/dist/index85.js.map +1 -1
  162. package/dist/index86.js +63 -159
  163. package/dist/index86.js.map +1 -1
  164. package/dist/index87.js +35 -65
  165. package/dist/index87.js.map +1 -1
  166. package/dist/index88.js +234 -35
  167. package/dist/index88.js.map +1 -1
  168. package/dist/index89.js +31 -231
  169. package/dist/index89.js.map +1 -1
  170. package/dist/index90.js +210 -34
  171. package/dist/index90.js.map +1 -1
  172. package/dist/index91.js +198 -195
  173. package/dist/index91.js.map +1 -1
  174. package/dist/index92.js +241 -159
  175. package/dist/index92.js.map +1 -1
  176. package/dist/index93.js +166 -283
  177. package/dist/index93.js.map +1 -1
  178. package/dist/index94.js +253 -173
  179. package/dist/index94.js.map +1 -1
  180. package/dist/index95.js +14 -258
  181. package/dist/index95.js.map +1 -1
  182. package/dist/index96.js +31 -12
  183. package/dist/index96.js.map +1 -1
  184. package/dist/index97.js +5 -32
  185. package/dist/index97.js.map +1 -1
  186. package/dist/index98.js +13 -5
  187. package/dist/index98.js.map +1 -1
  188. package/dist/index99.js +43 -11
  189. package/dist/index99.js.map +1 -1
  190. package/package.json +11 -5
  191. package/dist/components/Calendar.d.ts +0 -23
  192. package/dist/index.css +0 -1
  193. package/dist/index106.js +0 -21
  194. package/dist/index106.js.map +0 -1
  195. package/dist/index107.js +0 -177
  196. package/dist/index107.js.map +0 -1
  197. package/dist/index109.js +0 -10796
  198. package/dist/index109.js.map +0 -1
  199. package/dist/index110.js +0 -8
  200. package/dist/index110.js.map +0 -1
  201. package/dist/index111.js +0 -45
  202. package/dist/index111.js.map +0 -1
  203. package/dist/index112.js +0 -5
  204. package/dist/index112.js.map +0 -1
  205. package/dist/index113.js +0 -10
  206. package/dist/index113.js.map +0 -1
  207. package/dist/index114.js +0 -155
  208. package/dist/index114.js.map +0 -1
  209. package/dist/index115.js +0 -33
  210. package/dist/index115.js.map +0 -1
  211. package/dist/index116.js +0 -33
  212. package/dist/index116.js.map +0 -1
  213. package/dist/index117.js +0 -5
  214. package/dist/index117.js.map +0 -1
  215. package/dist/index118.js +0 -75
  216. package/dist/index118.js.map +0 -1
  217. package/dist/index119.js +0 -42
  218. package/dist/index119.js.map +0 -1
  219. package/dist/index120.js +0 -29
  220. package/dist/index120.js.map +0 -1
  221. package/dist/index121.js +0 -24
  222. package/dist/index121.js.map +0 -1
  223. package/dist/index122.js +0 -27
  224. package/dist/index122.js.map +0 -1
  225. package/dist/index123.js +0 -23
  226. package/dist/index123.js.map +0 -1
  227. package/dist/index124.js +0 -103
  228. package/dist/index124.js.map +0 -1
  229. package/dist/index125.js +0 -363
  230. package/dist/index125.js.map +0 -1
  231. package/dist/index126.js +0 -28
  232. package/dist/index126.js.map +0 -1
  233. package/dist/index127.js +0 -76
  234. package/dist/index127.js.map +0 -1
  235. package/dist/index128.js +0 -19
  236. package/dist/index128.js.map +0 -1
  237. package/dist/index129.js +0 -69
  238. package/dist/index129.js.map +0 -1
  239. package/dist/index130.js +0 -147
  240. package/dist/index130.js.map +0 -1
  241. package/dist/index131.js +0 -5
  242. package/dist/index131.js.map +0 -1
  243. package/dist/index132.js +0 -59
  244. package/dist/index132.js.map +0 -1
  245. package/dist/index133.js +0 -5
  246. package/dist/index133.js.map +0 -1
  247. package/dist/index134.js +0 -5
  248. package/dist/index134.js.map +0 -1
  249. package/dist/index135.js +0 -5
  250. package/dist/index135.js.map +0 -1
  251. package/dist/index136.js +0 -5
  252. package/dist/index136.js.map +0 -1
  253. package/dist/index137.js +0 -5
  254. package/dist/index137.js.map +0 -1
  255. package/dist/index138.js +0 -5
  256. package/dist/index138.js.map +0 -1
  257. package/dist/index139.js +0 -5
  258. package/dist/index139.js.map +0 -1
  259. package/dist/index140.js +0 -5
  260. package/dist/index140.js.map +0 -1
  261. package/dist/index141.js +0 -35
  262. package/dist/index141.js.map +0 -1
  263. package/dist/index142.js +0 -5
  264. package/dist/index142.js.map +0 -1
  265. package/dist/index143.js +0 -11
  266. package/dist/index143.js.map +0 -1
  267. package/dist/index144.js +0 -5
  268. package/dist/index144.js.map +0 -1
  269. package/dist/index145.js +0 -5
  270. package/dist/index145.js.map +0 -1
  271. package/dist/index146.js +0 -24
  272. package/dist/index146.js.map +0 -1
  273. package/dist/index147.js +0 -5
  274. package/dist/index147.js.map +0 -1
  275. package/dist/index148.js +0 -27
  276. package/dist/index148.js.map +0 -1
  277. package/dist/index149.js +0 -74
  278. package/dist/index149.js.map +0 -1
  279. package/dist/index150.js +0 -24
  280. package/dist/index150.js.map +0 -1
  281. package/dist/index151.js +0 -37
  282. package/dist/index151.js.map +0 -1
  283. package/dist/index152.js +0 -73
  284. package/dist/index152.js.map +0 -1
  285. package/dist/index153.js +0 -5
  286. package/dist/index153.js.map +0 -1
  287. package/dist/index154.js +0 -25
  288. package/dist/index154.js.map +0 -1
  289. package/dist/index155.js +0 -5
  290. package/dist/index155.js.map +0 -1
  291. package/dist/index156.js +0 -5
  292. package/dist/index156.js.map +0 -1
  293. package/dist/index157.js +0 -5
  294. package/dist/index157.js.map +0 -1
  295. package/dist/index158.js +0 -5
  296. package/dist/index158.js.map +0 -1
  297. package/dist/index159.js +0 -7
  298. package/dist/index159.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index14.js","sources":["../src/components/Card.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n children: React.ReactNode\n title?: React.ReactNode\n cover?: React.ReactNode\n actions?: React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n bordered?: boolean\n side?: boolean\n imageFull?: boolean\n actionsJustify?: 'start' | 'center' | 'end'\n loading?: boolean\n hoverable?: boolean\n // Meta props for avatar + description layout\n avatar?: React.ReactNode\n description?: React.ReactNode\n}\n\nexport interface CardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hoverable?: boolean\n}\n\nfunction CardGrid({ children, hoverable = false, className = '', style, ...rest }: CardGridProps) {\n const classes = [\n 'p-6 border border-base-content/10',\n hoverable && 'cursor-pointer hover:shadow-md transition-shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes} style={style} {...rest}>\n {children}\n </div>\n )\n}\n\nfunction CardRoot({\n children,\n title,\n cover,\n actions,\n className = '',\n style,\n size,\n bordered = true,\n side = false,\n imageFull = false,\n actionsJustify = 'end',\n loading = false,\n hoverable = false,\n avatar,\n description,\n ...rest\n}: CardProps) {\n const sizeClasses: Record<string, string> = {\n xs: 'card-xs',\n sm: 'card-sm',\n md: 'card-md',\n lg: 'card-lg',\n xl: 'card-xl',\n }\n\n const classes = [\n 'card',\n 'bg-base-100',\n size && sizeClasses[size],\n bordered && 'border border-base-content/10 shadow-sm',\n side && 'card-side',\n imageFull && 'image-full',\n hoverable && 'transition-shadow hover:shadow-lg cursor-pointer',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const justifyClasses: Record<string, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n }\n\n if (loading) {\n return (\n <div className={classes} style={style} {...rest}>\n {cover && (\n <figure>\n <div className=\"skeleton h-48 w-full rounded-none\" />\n </figure>\n )}\n <div className=\"card-body\">\n {(avatar || title) && (\n <div className=\"flex gap-4 mb-4\">\n {avatar && <div className=\"skeleton w-12 h-12 rounded-full flex-shrink-0\" />}\n <div className=\"flex-1 space-y-2\">\n <div className=\"skeleton h-6 w-2/3\" />\n {description && <div className=\"skeleton h-4 w-full\" />}\n </div>\n </div>\n )}\n {!avatar && !title && (\n <>\n <div className=\"skeleton h-6 w-2/3 mb-4\" />\n <div className=\"space-y-2\">\n <div className=\"skeleton h-4 w-full\" />\n <div className=\"skeleton h-4 w-5/6\" />\n <div className=\"skeleton h-4 w-4/6\" />\n </div>\n </>\n )}\n {actions && (\n <div className={`card-actions ${justifyClasses[actionsJustify]} mt-4`}>\n <div className=\"skeleton h-10 w-20\" />\n <div className=\"skeleton h-10 w-20\" />\n </div>\n )}\n </div>\n </div>\n )\n }\n\n // Render with avatar + title + description layout (meta style)\n const hasMetaLayout = avatar || (title && description)\n\n return (\n <div className={classes} style={style} {...rest}>\n {cover && <figure>{cover}</figure>}\n <div className=\"card-body\">\n {hasMetaLayout ? (\n <>\n <div className=\"flex gap-4\">\n {avatar && <div className=\"flex-shrink-0\">{avatar}</div>}\n <div className=\"flex-1 min-w-0\">\n {title && <h2 className=\"card-title\">{title}</h2>}\n {description && <p className=\"text-sm opacity-70 mt-1\">{description}</p>}\n </div>\n </div>\n {children}\n </>\n ) : (\n <>\n {title && <h2 className=\"card-title\">{title}</h2>}\n {children}\n </>\n )}\n {actions && <div className={`card-actions ${justifyClasses[actionsJustify]}`}>{actions}</div>}\n </div>\n </div>\n )\n}\n\nexport const Card = Object.assign(CardRoot, {\n Grid: CardGrid,\n})\n\nexport default Card\n"],"names":["CardGrid","children","hoverable","className","style","rest","classes","CardRoot","title","cover","actions","size","bordered","side","imageFull","actionsJustify","loading","avatar","description","justifyClasses","jsx","jsxs","Fragment","Card"],"mappings":"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"}
1
+ {"version":3,"file":"index14.js","sources":["../src/components/Cascader.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback, useId } from 'react'\n\nexport interface CascaderOption {\n value: string | number\n label: React.ReactNode\n disabled?: boolean\n children?: CascaderOption[]\n}\n\nexport interface CascaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n options: CascaderOption[]\n value?: (string | number)[]\n onChange?: (value: (string | number)[], selectedOptions: CascaderOption[]) => void\n placeholder?: string\n disabled?: boolean\n allowClear?: boolean\n expandTrigger?: 'click' | 'hover'\n displayRender?: (labels: React.ReactNode[], selectedOptions: CascaderOption[]) => React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\nexport function Cascader({\n options,\n value,\n onChange,\n placeholder = 'Please select',\n disabled = false,\n allowClear = true,\n expandTrigger = 'click',\n displayRender,\n size = 'md',\n className = '',\n ...rest\n}: CascaderProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [selectedPath, setSelectedPath] = useState<(string | number)[]>(value || [])\n const [hoveredPath, setHoveredPath] = useState<(string | number)[]>([])\n const containerRef = useRef<HTMLDivElement>(null)\n const inputId = useId()\n const listboxId = useId()\n\n // Sync with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setSelectedPath(value)\n }\n }, [value])\n\n // Close on outside click\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n setHoveredPath([])\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Get options at each level based on path\n const getOptionsAtLevel = useCallback((level: number, path: (string | number)[]): CascaderOption[] => {\n if (level === 0) return options\n\n let currentOptions = options\n for (let i = 0; i < level; i++) {\n const selected = currentOptions.find(opt => opt.value === path[i])\n if (!selected?.children) return []\n currentOptions = selected.children\n }\n return currentOptions\n }, [options])\n\n // Get selected options objects from path\n const getSelectedOptions = useCallback((path: (string | number)[]): CascaderOption[] => {\n const result: CascaderOption[] = []\n let currentOptions = options\n\n for (const val of path) {\n const found = currentOptions.find(opt => opt.value === val)\n if (!found) break\n result.push(found)\n currentOptions = found.children || []\n }\n\n return result\n }, [options])\n\n // Determine which path to use for displaying columns\n const activePath = isOpen ? (hoveredPath.length > 0 ? hoveredPath : selectedPath) : selectedPath\n\n // Build columns to display\n const columns: CascaderOption[][] = []\n columns.push(options)\n\n for (let i = 0; i < activePath.length; i++) {\n const nextOptions = getOptionsAtLevel(i + 1, activePath)\n if (nextOptions.length > 0) {\n columns.push(nextOptions)\n }\n }\n\n const handleOptionClick = (option: CascaderOption, level: number) => {\n if (option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n\n if (option.children && option.children.length > 0) {\n // Has children - just expand, don't select yet\n setHoveredPath(newPath)\n } else {\n // Leaf node - select and close\n setSelectedPath(newPath)\n setIsOpen(false)\n setHoveredPath([])\n onChange?.(newPath, getSelectedOptions(newPath))\n }\n }\n\n const handleOptionHover = (option: CascaderOption, level: number) => {\n if (expandTrigger !== 'hover' || option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n setHoveredPath(newPath)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n setSelectedPath([])\n onChange?.([], [])\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault()\n setIsOpen(!isOpen)\n break\n case 'Escape':\n e.preventDefault()\n setIsOpen(false)\n setHoveredPath([])\n break\n }\n }\n\n // Display value\n const selectedOptions = getSelectedOptions(selectedPath)\n const labels = selectedOptions.map(opt => opt.label)\n const displayValue = displayRender\n ? displayRender(labels, selectedOptions)\n : labels.join(' / ')\n\n // Size classes\n const sizeClasses = {\n xs: 'input-xs text-xs',\n sm: 'input-sm text-sm',\n md: 'input-md',\n lg: 'input-lg text-lg',\n }\n\n const dropdownSizeClasses = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n }\n\n return (\n <div ref={containerRef} className={`relative inline-block w-full ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n {/* Input/Trigger */}\n <div\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n tabIndex={disabled ? -1 : 0}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${sizeClasses[size]} ${\n disabled ? 'input-disabled cursor-not-allowed' : ''\n } ${isOpen ? 'border-primary' : ''}`}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n >\n <span className={selectedPath.length === 0 ? 'text-base-content/50' : ''}>\n {selectedPath.length > 0 ? displayValue : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && selectedPath.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"btn btn-ghost btn-xs btn-circle\"\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n <svg\n className={`w-4 h-4 transition-transform ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </div>\n </div>\n\n {/* Dropdown */}\n {isOpen && (\n <div\n id={listboxId}\n className={`absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${dropdownSizeClasses[size]}`}\n >\n {columns.map((columnOptions, colIndex) => (\n <ul\n key={colIndex}\n role=\"listbox\"\n className={`min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${\n colIndex > 0 ? 'border-l border-base-300' : ''\n }`}\n >\n {columnOptions.map((option) => {\n const isSelected = selectedPath[colIndex] === option.value\n const isHovered = activePath[colIndex] === option.value\n const hasChildren = option.children && option.children.length > 0\n\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n className={`px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${\n option.disabled\n ? 'text-base-content/30 cursor-not-allowed'\n : isSelected\n ? 'bg-primary text-primary-content'\n : isHovered\n ? 'bg-base-200'\n : 'hover:bg-base-200'\n }`}\n onClick={() => handleOptionClick(option, colIndex)}\n onMouseEnter={() => handleOptionHover(option, colIndex)}\n >\n <span>{option.label}</span>\n {hasChildren && (\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )}\n </li>\n )\n })}\n </ul>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["Cascader","options","value","onChange","placeholder","disabled","allowClear","expandTrigger","displayRender","size","className","rest","isOpen","setIsOpen","useState","selectedPath","setSelectedPath","hoveredPath","setHoveredPath","containerRef","useRef","inputId","useId","listboxId","useEffect","handleClickOutside","e","getOptionsAtLevel","useCallback","level","path","currentOptions","i","selected","opt","getSelectedOptions","result","val","found","activePath","columns","nextOptions","handleOptionClick","option","newPath","handleOptionHover","handleClear","handleKeyDown","selectedOptions","labels","displayValue","sizeClasses","dropdownSizeClasses","jsxs","jsx","columnOptions","colIndex","isSelected","isHovered","hasChildren"],"mappings":"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"}
package/dist/index15.js CHANGED
@@ -1,161 +1,153 @@
1
- import { jsxs as m, jsx as n } from "react/jsx-runtime";
2
- import { useState as g, useRef as I, useId as j, useEffect as $, useCallback as E } from "react";
3
- function T({
4
- options: c,
5
- value: b,
6
- onChange: k,
7
- placeholder: M = "Please select",
8
- disabled: i = !1,
9
- allowClear: S = !0,
10
- expandTrigger: D = "click",
11
- displayRender: w,
12
- size: C = "md",
13
- className: B = "",
14
- ...H
15
- }) {
16
- const [r, d] = g(!1), [o, p] = g(b || []), [y, u] = g([]), x = I(null), W = j(), N = j();
17
- $(() => {
18
- b !== void 0 && p(b);
19
- }, [b]), $(() => {
20
- const e = (s) => {
21
- x.current && !x.current.contains(s.target) && (d(!1), u([]));
22
- };
23
- if (r)
24
- return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
25
- }, [r]);
26
- const z = E((e, s) => {
27
- if (e === 0) return c;
28
- let t = c;
29
- for (let l = 0; l < e; l++) {
30
- const a = t.find((f) => f.value === s[l]);
31
- if (!a?.children) return [];
32
- t = a.children;
33
- }
34
- return t;
35
- }, [c]), O = E((e) => {
36
- const s = [];
37
- let t = c;
38
- for (const l of e) {
39
- const a = t.find((f) => f.value === l);
40
- if (!a) break;
41
- s.push(a), t = a.children || [];
42
- }
43
- return s;
44
- }, [c]), h = r && y.length > 0 ? y : o, v = [];
45
- v.push(c);
46
- for (let e = 0; e < h.length; e++) {
47
- const s = z(e + 1, h);
48
- s.length > 0 && v.push(s);
49
- }
50
- const K = (e, s) => {
51
- if (e.disabled) return;
52
- const t = [...h.slice(0, s), e.value];
53
- e.children && e.children.length > 0 ? u(t) : (p(t), d(!1), u([]), k?.(t, O(t)));
54
- }, A = (e, s) => {
55
- if (D !== "hover" || e.disabled) return;
56
- const t = [...h.slice(0, s), e.value];
57
- u(t);
58
- }, R = (e) => {
59
- e.stopPropagation(), p([]), k?.([], []);
60
- }, V = (e) => {
61
- if (!i)
62
- switch (e.key) {
63
- case "Enter":
64
- case " ":
65
- e.preventDefault(), d(!r);
66
- break;
67
- case "Escape":
68
- e.preventDefault(), d(!1), u([]);
69
- break;
1
+ import { jsx as w } from "react/jsx-runtime";
2
+ import { useRef as C, useState as v, useEffect as M } from "react";
3
+ import O from "apexcharts";
4
+ function S(o) {
5
+ return typeof document > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(o).trim();
6
+ }
7
+ function x(o) {
8
+ const e = o.match(/oklch\(\s*([\d.]+)%?\s+([\d.]+)\s+([\d.]+)/);
9
+ if (!e) return "";
10
+ const t = parseFloat(e[1]) / 100, r = parseFloat(e[2]), c = parseFloat(e[3]) * Math.PI / 180, l = r * Math.cos(c), u = r * Math.sin(c), n = t + 0.3963377774 * l + 0.2158037573 * u, f = t - 0.1055613458 * l - 0.0638541728 * u, i = t - 0.0894841775 * l - 1.291485548 * u, s = n * n * n, d = f * f * f, m = i * i * i;
11
+ let b = 4.0767416621 * s - 3.3077115913 * d + 0.2309699292 * m, y = -1.2684380046 * s + 2.6097574011 * d - 0.3413193965 * m, g = -0.0041960863 * s - 0.7034186147 * d + 1.707614701 * m;
12
+ const k = (p) => (p = Math.max(0, Math.min(1, p)), p <= 31308e-7 ? 12.92 * p : 1.055 * Math.pow(p, 1 / 2.4) - 0.055);
13
+ return b = Math.round(k(b) * 255), y = Math.round(k(y) * 255), g = Math.round(k(g) * 255), `#${b.toString(16).padStart(2, "0")}${y.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}`;
14
+ }
15
+ function V() {
16
+ return typeof document > "u" ? [] : [
17
+ "--color-primary",
18
+ "--color-secondary",
19
+ "--color-accent",
20
+ "--color-info",
21
+ "--color-success",
22
+ "--color-warning",
23
+ "--color-error"
24
+ ].map((e) => {
25
+ const t = S(e);
26
+ return t.includes("oklch") ? x(t) : t;
27
+ }).filter(Boolean);
28
+ }
29
+ function A() {
30
+ const o = V(), e = S("--color-base-content"), t = e.includes("oklch") ? x(e) : e || "#888888", r = S("--color-base-300"), a = r.includes("oklch") ? x(r) : r || "#e0e0e0", c = t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i), l = c ? (parseInt(c[1], 16) + parseInt(c[2], 16) + parseInt(c[3], 16)) / 3 > 128 : !1;
31
+ return {
32
+ colors: o.length > 0 ? o : void 0,
33
+ theme: {
34
+ mode: l ? "dark" : "light"
35
+ },
36
+ chart: {
37
+ background: "transparent",
38
+ foreColor: t
39
+ },
40
+ grid: {
41
+ borderColor: a
42
+ },
43
+ xaxis: {
44
+ labels: {
45
+ style: {
46
+ colors: t
47
+ }
48
+ },
49
+ axisBorder: {
50
+ color: a
51
+ },
52
+ axisTicks: {
53
+ color: a
70
54
  }
71
- }, L = O(o), P = L.map((e) => e.label), q = w ? w(P, L) : P.join(" / "), F = {
72
- xs: "input-xs text-xs",
73
- sm: "input-sm text-sm",
74
- md: "input-md",
75
- lg: "input-lg text-lg"
76
- }, G = {
77
- xs: "text-xs",
78
- sm: "text-sm",
79
- md: "text-base",
80
- lg: "text-lg"
81
- };
82
- return /* @__PURE__ */ m("div", { ref: x, className: `relative inline-block w-full ${B}`, "data-state": r ? "open" : "closed", ...H, children: [
83
- /* @__PURE__ */ m(
84
- "div",
85
- {
86
- id: W,
87
- role: "combobox",
88
- "aria-expanded": r,
89
- "aria-haspopup": "listbox",
90
- "aria-controls": N,
91
- tabIndex: i ? -1 : 0,
92
- className: `input input-bordered w-full flex items-center justify-between cursor-pointer ${F[C]} ${i ? "input-disabled cursor-not-allowed" : ""} ${r ? "border-primary" : ""}`,
93
- onClick: () => !i && d(!r),
94
- onKeyDown: V,
95
- children: [
96
- /* @__PURE__ */ n("span", { className: o.length === 0 ? "text-base-content/50" : "", children: o.length > 0 ? q : M }),
97
- /* @__PURE__ */ m("div", { className: "flex items-center gap-1", children: [
98
- S && o.length > 0 && !i && /* @__PURE__ */ n(
99
- "button",
100
- {
101
- type: "button",
102
- className: "btn btn-ghost btn-xs btn-circle",
103
- onClick: R,
104
- "aria-label": "Clear selection",
105
- children: /* @__PURE__ */ n("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
106
- }
107
- ),
108
- /* @__PURE__ */ n(
109
- "svg",
110
- {
111
- className: `w-4 h-4 transition-transform ${r ? "rotate-180" : ""}`,
112
- fill: "none",
113
- viewBox: "0 0 24 24",
114
- stroke: "currentColor",
115
- children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
116
- }
117
- )
118
- ] })
119
- ]
55
+ },
56
+ yaxis: {
57
+ labels: {
58
+ style: {
59
+ colors: t
60
+ }
61
+ }
62
+ },
63
+ legend: {
64
+ labels: {
65
+ colors: t
66
+ }
67
+ },
68
+ tooltip: {
69
+ theme: l ? "dark" : "light",
70
+ style: {
71
+ fontSize: "12px"
72
+ },
73
+ x: {
74
+ show: !0
75
+ },
76
+ marker: {
77
+ show: !0
120
78
  }
121
- ),
122
- r && /* @__PURE__ */ n(
123
- "div",
124
- {
125
- id: N,
126
- className: `absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${G[C]}`,
127
- children: v.map((e, s) => /* @__PURE__ */ n(
128
- "ul",
129
- {
130
- role: "listbox",
131
- className: `min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${s > 0 ? "border-l border-base-300" : ""}`,
132
- children: e.map((t) => {
133
- const l = o[s] === t.value, a = h[s] === t.value, f = t.children && t.children.length > 0;
134
- return /* @__PURE__ */ m(
135
- "li",
136
- {
137
- role: "option",
138
- "aria-selected": l,
139
- "aria-disabled": t.disabled,
140
- className: `px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${t.disabled ? "text-base-content/30 cursor-not-allowed" : l ? "bg-primary text-primary-content" : a ? "bg-base-200" : "hover:bg-base-200"}`,
141
- onClick: () => K(t, s),
142
- onMouseEnter: () => A(t, s),
143
- children: [
144
- /* @__PURE__ */ n("span", { children: t.label }),
145
- f && /* @__PURE__ */ n("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ n("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
146
- ]
147
- },
148
- t.value
149
- );
150
- })
151
- },
152
- s
153
- ))
79
+ },
80
+ dataLabels: {
81
+ style: {
82
+ colors: [t, t, t, t, t, t, t]
83
+ },
84
+ background: {
85
+ enabled: !1
86
+ },
87
+ dropShadow: {
88
+ enabled: !1
154
89
  }
155
- )
156
- ] });
90
+ }
91
+ };
92
+ }
93
+ function h(o, e) {
94
+ const t = { ...o };
95
+ for (const r in e)
96
+ e[r] !== void 0 && (typeof e[r] == "object" && e[r] !== null && !Array.isArray(e[r]) && typeof o[r] == "object" && o[r] !== null && !Array.isArray(o[r]) ? t[r] = h(
97
+ o[r],
98
+ e[r]
99
+ ) : t[r] = e[r]);
100
+ return t;
157
101
  }
102
+ const $ = ({
103
+ type: o,
104
+ series: e,
105
+ width: t = "100%",
106
+ height: r = 350,
107
+ options: a = {},
108
+ themed: c = !0,
109
+ className: l = ""
110
+ }) => {
111
+ const u = C(null), n = C(null), [, f] = v(!1), i = () => {
112
+ const s = {
113
+ chart: {
114
+ type: o,
115
+ width: t,
116
+ height: r
117
+ },
118
+ series: e
119
+ };
120
+ if (c) {
121
+ const d = A();
122
+ return h(h(s, d), a);
123
+ }
124
+ return h(s, a);
125
+ };
126
+ return M(() => {
127
+ if (!u.current) return;
128
+ const s = i();
129
+ return n.current = new O(u.current, s), n.current.render(), f(!0), () => {
130
+ n.current && (n.current.destroy(), n.current = null);
131
+ };
132
+ }, []), M(() => {
133
+ if (!n.current) return;
134
+ const s = i();
135
+ n.current.updateOptions(s, !0, !0);
136
+ }, [o, e, t, r, a, c]), M(() => {
137
+ if (!c || typeof window > "u") return;
138
+ const s = new MutationObserver(() => {
139
+ if (n.current) {
140
+ const d = i();
141
+ n.current.updateOptions(d, !0, !0);
142
+ }
143
+ });
144
+ return s.observe(document.documentElement, {
145
+ attributes: !0,
146
+ attributeFilter: ["data-theme", "class"]
147
+ }), () => s.disconnect();
148
+ }, [c]), /* @__PURE__ */ w("div", { ref: u, className: l });
149
+ };
158
150
  export {
159
- T as Cascader
151
+ $ as Chart
160
152
  };
161
153
  //# sourceMappingURL=index15.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index15.js","sources":["../src/components/Cascader.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback, useId } from 'react'\n\nexport interface CascaderOption {\n value: string | number\n label: React.ReactNode\n disabled?: boolean\n children?: CascaderOption[]\n}\n\nexport interface CascaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n options: CascaderOption[]\n value?: (string | number)[]\n onChange?: (value: (string | number)[], selectedOptions: CascaderOption[]) => void\n placeholder?: string\n disabled?: boolean\n allowClear?: boolean\n expandTrigger?: 'click' | 'hover'\n displayRender?: (labels: React.ReactNode[], selectedOptions: CascaderOption[]) => React.ReactNode\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\nexport function Cascader({\n options,\n value,\n onChange,\n placeholder = 'Please select',\n disabled = false,\n allowClear = true,\n expandTrigger = 'click',\n displayRender,\n size = 'md',\n className = '',\n ...rest\n}: CascaderProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [selectedPath, setSelectedPath] = useState<(string | number)[]>(value || [])\n const [hoveredPath, setHoveredPath] = useState<(string | number)[]>([])\n const containerRef = useRef<HTMLDivElement>(null)\n const inputId = useId()\n const listboxId = useId()\n\n // Sync with controlled value\n useEffect(() => {\n if (value !== undefined) {\n setSelectedPath(value)\n }\n }, [value])\n\n // Close on outside click\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n setHoveredPath([])\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Get options at each level based on path\n const getOptionsAtLevel = useCallback((level: number, path: (string | number)[]): CascaderOption[] => {\n if (level === 0) return options\n\n let currentOptions = options\n for (let i = 0; i < level; i++) {\n const selected = currentOptions.find(opt => opt.value === path[i])\n if (!selected?.children) return []\n currentOptions = selected.children\n }\n return currentOptions\n }, [options])\n\n // Get selected options objects from path\n const getSelectedOptions = useCallback((path: (string | number)[]): CascaderOption[] => {\n const result: CascaderOption[] = []\n let currentOptions = options\n\n for (const val of path) {\n const found = currentOptions.find(opt => opt.value === val)\n if (!found) break\n result.push(found)\n currentOptions = found.children || []\n }\n\n return result\n }, [options])\n\n // Determine which path to use for displaying columns\n const activePath = isOpen ? (hoveredPath.length > 0 ? hoveredPath : selectedPath) : selectedPath\n\n // Build columns to display\n const columns: CascaderOption[][] = []\n columns.push(options)\n\n for (let i = 0; i < activePath.length; i++) {\n const nextOptions = getOptionsAtLevel(i + 1, activePath)\n if (nextOptions.length > 0) {\n columns.push(nextOptions)\n }\n }\n\n const handleOptionClick = (option: CascaderOption, level: number) => {\n if (option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n\n if (option.children && option.children.length > 0) {\n // Has children - just expand, don't select yet\n setHoveredPath(newPath)\n } else {\n // Leaf node - select and close\n setSelectedPath(newPath)\n setIsOpen(false)\n setHoveredPath([])\n onChange?.(newPath, getSelectedOptions(newPath))\n }\n }\n\n const handleOptionHover = (option: CascaderOption, level: number) => {\n if (expandTrigger !== 'hover' || option.disabled) return\n\n const newPath = [...activePath.slice(0, level), option.value]\n setHoveredPath(newPath)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n setSelectedPath([])\n onChange?.([], [])\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault()\n setIsOpen(!isOpen)\n break\n case 'Escape':\n e.preventDefault()\n setIsOpen(false)\n setHoveredPath([])\n break\n }\n }\n\n // Display value\n const selectedOptions = getSelectedOptions(selectedPath)\n const labels = selectedOptions.map(opt => opt.label)\n const displayValue = displayRender\n ? displayRender(labels, selectedOptions)\n : labels.join(' / ')\n\n // Size classes\n const sizeClasses = {\n xs: 'input-xs text-xs',\n sm: 'input-sm text-sm',\n md: 'input-md',\n lg: 'input-lg text-lg',\n }\n\n const dropdownSizeClasses = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n }\n\n return (\n <div ref={containerRef} className={`relative inline-block w-full ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n {/* Input/Trigger */}\n <div\n id={inputId}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n tabIndex={disabled ? -1 : 0}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${sizeClasses[size]} ${\n disabled ? 'input-disabled cursor-not-allowed' : ''\n } ${isOpen ? 'border-primary' : ''}`}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n >\n <span className={selectedPath.length === 0 ? 'text-base-content/50' : ''}>\n {selectedPath.length > 0 ? displayValue : placeholder}\n </span>\n <div className=\"flex items-center gap-1\">\n {allowClear && selectedPath.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"btn btn-ghost btn-xs btn-circle\"\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <svg className=\"w-3 h-3\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n <svg\n className={`w-4 h-4 transition-transform ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </div>\n </div>\n\n {/* Dropdown */}\n {isOpen && (\n <div\n id={listboxId}\n className={`absolute z-50 mt-1 bg-base-100 border border-base-300 rounded-lg shadow-lg flex ${dropdownSizeClasses[size]}`}\n >\n {columns.map((columnOptions, colIndex) => (\n <ul\n key={colIndex}\n role=\"listbox\"\n className={`min-w-[120px] max-h-[200px] overflow-y-auto py-1 ${\n colIndex > 0 ? 'border-l border-base-300' : ''\n }`}\n >\n {columnOptions.map((option) => {\n const isSelected = selectedPath[colIndex] === option.value\n const isHovered = activePath[colIndex] === option.value\n const hasChildren = option.children && option.children.length > 0\n\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n className={`px-3 py-2 cursor-pointer flex items-center justify-between gap-2 ${\n option.disabled\n ? 'text-base-content/30 cursor-not-allowed'\n : isSelected\n ? 'bg-primary text-primary-content'\n : isHovered\n ? 'bg-base-200'\n : 'hover:bg-base-200'\n }`}\n onClick={() => handleOptionClick(option, colIndex)}\n onMouseEnter={() => handleOptionHover(option, colIndex)}\n >\n <span>{option.label}</span>\n {hasChildren && (\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )}\n </li>\n )\n })}\n </ul>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["Cascader","options","value","onChange","placeholder","disabled","allowClear","expandTrigger","displayRender","size","className","rest","isOpen","setIsOpen","useState","selectedPath","setSelectedPath","hoveredPath","setHoveredPath","containerRef","useRef","inputId","useId","listboxId","useEffect","handleClickOutside","e","getOptionsAtLevel","useCallback","level","path","currentOptions","i","selected","opt","getSelectedOptions","result","val","found","activePath","columns","nextOptions","handleOptionClick","option","newPath","handleOptionHover","handleClear","handleKeyDown","selectedOptions","labels","displayValue","sizeClasses","dropdownSizeClasses","jsxs","jsx","columnOptions","colIndex","isSelected","isHovered","hasChildren"],"mappings":";;AAqBO,SAASA,EAAS;AAAA,EACvB,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,YAAAC,IAAa;AAAA,EACb,eAAAC,IAAgB;AAAA,EAChB,eAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAkB;AAChB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpC,CAACC,GAAcC,CAAe,IAAIF,EAA8BZ,KAAS,CAAA,CAAE,GAC3E,CAACe,GAAaC,CAAc,IAAIJ,EAA8B,CAAA,CAAE,GAChEK,IAAeC,EAAuB,IAAI,GAC1CC,IAAUC,EAAA,GACVC,IAAYD,EAAA;AAGlB,EAAAE,EAAU,MAAM;AACd,IAAItB,MAAU,UACZc,EAAgBd,CAAK;AAAA,EAEzB,GAAG,CAACA,CAAK,CAAC,GAGVsB,EAAU,MAAM;AACd,UAAMC,IAAqB,CAACC,MAAkB;AAC5C,MAAIP,EAAa,WAAW,CAACA,EAAa,QAAQ,SAASO,EAAE,MAAc,MACzEb,EAAU,EAAK,GACfK,EAAe,CAAA,CAAE;AAAA,IAErB;AAEA,QAAIN;AACF,sBAAS,iBAAiB,aAAaa,CAAkB,GAClD,MAAM,SAAS,oBAAoB,aAAaA,CAAkB;AAAA,EAE7E,GAAG,CAACb,CAAM,CAAC;AAGX,QAAMe,IAAoBC,EAAY,CAACC,GAAeC,MAAgD;AACpG,QAAID,MAAU,EAAG,QAAO5B;AAExB,QAAI8B,IAAiB9B;AACrB,aAAS+B,IAAI,GAAGA,IAAIH,GAAOG,KAAK;AAC9B,YAAMC,IAAWF,EAAe,KAAK,CAAAG,MAAOA,EAAI,UAAUJ,EAAKE,CAAC,CAAC;AACjE,UAAI,CAACC,GAAU,SAAU,QAAO,CAAA;AAChC,MAAAF,IAAiBE,EAAS;AAAA,IAC5B;AACA,WAAOF;AAAA,EACT,GAAG,CAAC9B,CAAO,CAAC,GAGNkC,IAAqBP,EAAY,CAACE,MAAgD;AACtF,UAAMM,IAA2B,CAAA;AACjC,QAAIL,IAAiB9B;AAErB,eAAWoC,KAAOP,GAAM;AACtB,YAAMQ,IAAQP,EAAe,KAAK,CAAAG,MAAOA,EAAI,UAAUG,CAAG;AAC1D,UAAI,CAACC,EAAO;AACZ,MAAAF,EAAO,KAAKE,CAAK,GACjBP,IAAiBO,EAAM,YAAY,CAAA;AAAA,IACrC;AAEA,WAAOF;AAAA,EACT,GAAG,CAACnC,CAAO,CAAC,GAGNsC,IAAa3B,KAAUK,EAAY,SAAS,IAAIA,IAA8BF,GAG9EyB,IAA8B,CAAA;AACpC,EAAAA,EAAQ,KAAKvC,CAAO;AAEpB,WAAS+B,IAAI,GAAGA,IAAIO,EAAW,QAAQP,KAAK;AAC1C,UAAMS,IAAcd,EAAkBK,IAAI,GAAGO,CAAU;AACvD,IAAIE,EAAY,SAAS,KACvBD,EAAQ,KAAKC,CAAW;AAAA,EAE5B;AAEA,QAAMC,IAAoB,CAACC,GAAwBd,MAAkB;AACnE,QAAIc,EAAO,SAAU;AAErB,UAAMC,IAAU,CAAC,GAAGL,EAAW,MAAM,GAAGV,CAAK,GAAGc,EAAO,KAAK;AAE5D,IAAIA,EAAO,YAAYA,EAAO,SAAS,SAAS,IAE9CzB,EAAe0B,CAAO,KAGtB5B,EAAgB4B,CAAO,GACvB/B,EAAU,EAAK,GACfK,EAAe,CAAA,CAAE,GACjBf,IAAWyC,GAAST,EAAmBS,CAAO,CAAC;AAAA,EAEnD,GAEMC,IAAoB,CAACF,GAAwBd,MAAkB;AACnE,QAAItB,MAAkB,WAAWoC,EAAO,SAAU;AAElD,UAAMC,IAAU,CAAC,GAAGL,EAAW,MAAM,GAAGV,CAAK,GAAGc,EAAO,KAAK;AAC5D,IAAAzB,EAAe0B,CAAO;AAAA,EACxB,GAEME,IAAc,CAAC,MAAwB;AAC3C,MAAE,gBAAA,GACF9B,EAAgB,CAAA,CAAE,GAClBb,IAAW,CAAA,GAAI,EAAE;AAAA,EACnB,GAEM4C,IAAgB,CAAC,MAA2B;AAChD,QAAI,CAAA1C;AAEJ,cAAQ,EAAE,KAAA;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AACH,YAAE,eAAA,GACFQ,EAAU,CAACD,CAAM;AACjB;AAAA,QACF,KAAK;AACH,YAAE,eAAA,GACFC,EAAU,EAAK,GACfK,EAAe,CAAA,CAAE;AACjB;AAAA,MAAA;AAAA,EAEN,GAGM8B,IAAkBb,EAAmBpB,CAAY,GACjDkC,IAASD,EAAgB,IAAI,CAAAd,MAAOA,EAAI,KAAK,GAC7CgB,IAAe1C,IACjBA,EAAcyC,GAAQD,CAAe,IACrCC,EAAO,KAAK,KAAK,GAGfE,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAsB;AAAA,IAC1B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA;AAGN,SACE,gBAAAC,EAAC,OAAA,EAAI,KAAKlC,GAAc,WAAW,gCAAgCT,CAAS,IAAI,cAAYE,IAAS,SAAS,UAAW,GAAGD,GAE1H,UAAA;AAAA,IAAA,gBAAA0C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIhC;AAAA,QACJ,MAAK;AAAA,QACL,iBAAeT;AAAA,QACf,iBAAc;AAAA,QACd,iBAAeW;AAAA,QACf,UAAUlB,IAAW,KAAK;AAAA,QAC1B,WAAW,gFAAgF8C,EAAY1C,CAAI,CAAC,IAC1GJ,IAAW,sCAAsC,EACnD,IAAIO,IAAS,mBAAmB,EAAE;AAAA,QAClC,SAAS,MAAM,CAACP,KAAYQ,EAAU,CAACD,CAAM;AAAA,QAC7C,WAAWmC;AAAA,QAEX,UAAA;AAAA,UAAA,gBAAAO,EAAC,QAAA,EAAK,WAAWvC,EAAa,WAAW,IAAI,yBAAyB,IACnE,UAAAA,EAAa,SAAS,IAAImC,IAAe9C,GAC5C;AAAA,UACA,gBAAAiD,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,YAAA/C,KAAcS,EAAa,SAAS,KAAK,CAACV,KACzC,gBAAAiD;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAASR;AAAA,gBACT,cAAW;AAAA,gBAEX,UAAA,gBAAAQ,EAAC,SAAI,WAAU,WAAU,MAAK,QAAO,SAAQ,aAAY,QAAO,gBAC9D,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,wBAAuB,EAAA,CAC9F;AAAA,cAAA;AAAA,YAAA;AAAA,YAGJ,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW,gCAAgC1C,IAAS,eAAe,EAAE;AAAA,gBACrE,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,QAAO;AAAA,gBAEP,UAAA,gBAAA0C,EAAC,UAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,iBAAA,CAAiB;AAAA,cAAA;AAAA,YAAA;AAAA,UACxF,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAID1C,KACC,gBAAA0C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI/B;AAAA,QACJ,WAAW,mFAAmF6B,EAAoB3C,CAAI,CAAC;AAAA,QAEtH,UAAA+B,EAAQ,IAAI,CAACe,GAAeC,MAC3B,gBAAAF;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,MAAK;AAAA,YACL,WAAW,oDACTE,IAAW,IAAI,6BAA6B,EAC9C;AAAA,YAEC,UAAAD,EAAc,IAAI,CAACZ,MAAW;AAC7B,oBAAMc,IAAa1C,EAAayC,CAAQ,MAAMb,EAAO,OAC/Ce,IAAYnB,EAAWiB,CAAQ,MAAMb,EAAO,OAC5CgB,IAAchB,EAAO,YAAYA,EAAO,SAAS,SAAS;AAEhE,qBACE,gBAAAU;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,iBAAeI;AAAA,kBACf,iBAAed,EAAO;AAAA,kBACtB,WAAW,oEACTA,EAAO,WACH,4CACAc,IACA,oCACAC,IACA,gBACA,mBACN;AAAA,kBACA,SAAS,MAAMhB,EAAkBC,GAAQa,CAAQ;AAAA,kBACjD,cAAc,MAAMX,EAAkBF,GAAQa,CAAQ;AAAA,kBAEtD,UAAA;AAAA,oBAAA,gBAAAF,EAAC,QAAA,EAAM,YAAO,MAAA,CAAM;AAAA,oBACnBK,uBACE,OAAA,EAAI,WAAU,WAAU,MAAK,QAAO,SAAQ,aAAY,QAAO,gBAC9D,UAAA,gBAAAL,EAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,eAAA,CAAe,EAAA,CACtF;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBApBGX,EAAO;AAAA,cAAA;AAAA,YAwBlB,CAAC;AAAA,UAAA;AAAA,UArCIa;AAAA,QAAA,CAuCR;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"index15.js","sources":["../src/components/Chart.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport ApexCharts from 'apexcharts'\nimport type { ApexOptions } from 'apexcharts'\n\nexport interface ChartProps {\n /** Chart type */\n type: 'line' | 'area' | 'bar' | 'pie' | 'donut' | 'radialBar' | 'scatter' | 'bubble' | 'heatmap' | 'candlestick' | 'boxPlot' | 'radar' | 'polarArea' | 'rangeBar' | 'rangeArea' | 'treemap'\n /** Chart series data */\n series: ApexAxisChartSeries | ApexNonAxisChartSeries\n /** Chart width */\n width?: string | number\n /** Chart height */\n height?: string | number\n /** ApexCharts options (merged with theme defaults) */\n options?: ApexOptions\n /** Use daisyUI theme colors */\n themed?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\n// Get CSS variable value from root\nfunction getCssVar(varName: string): string {\n if (typeof document === 'undefined') return ''\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim()\n}\n\n// Convert oklch to hex (approximate)\nfunction oklchToHex(oklch: string): string {\n // Parse oklch(L C H) format\n const match = oklch.match(/oklch\\(\\s*([\\d.]+)%?\\s+([\\d.]+)\\s+([\\d.]+)/)\n if (!match) return ''\n\n const l = parseFloat(match[1]) / 100 // Lightness 0-1\n const c = parseFloat(match[2]) // Chroma\n const h = parseFloat(match[3]) // Hue in degrees\n\n // Simplified oklch to sRGB conversion\n // This is an approximation - full conversion is complex\n const hRad = (h * Math.PI) / 180\n const a = c * Math.cos(hRad)\n const b = c * Math.sin(hRad)\n\n // Approximate conversion to linear RGB\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b\n const s_ = l - 0.0894841775 * a - 1.2914855480 * b\n\n const l3 = l_ * l_ * l_\n const m3 = m_ * m_ * m_\n const s3 = s_ * s_ * s_\n\n let r = 4.0767416621 * l3 - 3.3077115913 * m3 + 0.2309699292 * s3\n let g = -1.2684380046 * l3 + 2.6097574011 * m3 - 0.3413193965 * s3\n let bl = -0.0041960863 * l3 - 0.7034186147 * m3 + 1.7076147010 * s3\n\n // Clamp and convert to sRGB\n const toSrgb = (x: number) => {\n x = Math.max(0, Math.min(1, x))\n return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1/2.4) - 0.055\n }\n\n r = Math.round(toSrgb(r) * 255)\n g = Math.round(toSrgb(g) * 255)\n bl = Math.round(toSrgb(bl) * 255)\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${bl.toString(16).padStart(2, '0')}`\n}\n\n// Get daisyUI theme colors from CSS variables\nfunction getThemeColors(): string[] {\n if (typeof document === 'undefined') return []\n\n const colorVars = [\n '--color-primary',\n '--color-secondary',\n '--color-accent',\n '--color-info',\n '--color-success',\n '--color-warning',\n '--color-error',\n ]\n\n return colorVars\n .map(varName => {\n const value = getCssVar(varName)\n if (value.includes('oklch')) {\n return oklchToHex(value)\n }\n return value\n })\n .filter(Boolean)\n}\n\n// Get theme-aware chart options\nfunction getThemedOptions(): Partial<ApexOptions> {\n const colors = getThemeColors()\n\n // Get text color from CSS variable\n const baseContentVar = getCssVar('--color-base-content')\n const textColor = baseContentVar.includes('oklch')\n ? oklchToHex(baseContentVar)\n : (baseContentVar || '#888888')\n\n // Get grid color from CSS variable\n const base300Var = getCssVar('--color-base-300')\n const gridColor = base300Var.includes('oklch')\n ? oklchToHex(base300Var)\n : (base300Var || '#e0e0e0')\n\n // Determine if dark theme by checking luminance of text color\n // If text is light, we're on dark theme\n const textMatch = textColor.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)\n const isDark = textMatch\n ? (parseInt(textMatch[1], 16) + parseInt(textMatch[2], 16) + parseInt(textMatch[3], 16)) / 3 > 128\n : false\n\n return {\n colors: colors.length > 0 ? colors : undefined,\n theme: {\n mode: isDark ? 'dark' : 'light',\n },\n chart: {\n background: 'transparent',\n foreColor: textColor,\n },\n grid: {\n borderColor: gridColor,\n },\n xaxis: {\n labels: {\n style: {\n colors: textColor,\n },\n },\n axisBorder: {\n color: gridColor,\n },\n axisTicks: {\n color: gridColor,\n },\n },\n yaxis: {\n labels: {\n style: {\n colors: textColor,\n },\n },\n },\n legend: {\n labels: {\n colors: textColor,\n },\n },\n tooltip: {\n theme: isDark ? 'dark' : 'light',\n style: {\n fontSize: '12px',\n },\n x: {\n show: true,\n },\n marker: {\n show: true,\n },\n },\n dataLabels: {\n style: {\n colors: [textColor, textColor, textColor, textColor, textColor, textColor, textColor],\n },\n background: {\n enabled: false,\n },\n dropShadow: {\n enabled: false,\n },\n },\n }\n}\n\n// Deep merge objects\nfunction deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key in source) {\n if (source[key] !== undefined) {\n if (\n typeof source[key] === 'object' &&\n source[key] !== null &&\n !Array.isArray(source[key]) &&\n typeof target[key] === 'object' &&\n target[key] !== null &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(\n target[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n ) as T[Extract<keyof T, string>]\n } else {\n result[key] = source[key] as T[Extract<keyof T, string>]\n }\n }\n }\n\n return result\n}\n\nexport const Chart: React.FC<ChartProps> = ({\n type,\n series,\n width = '100%',\n height = 350,\n options = {},\n themed = true,\n className = '',\n}) => {\n const chartRef = useRef<HTMLDivElement>(null)\n const chartInstance = useRef<ApexCharts | null>(null)\n const [, setMounted] = useState(false)\n\n // Build final options\n const buildOptions = (): ApexOptions => {\n const baseOptions: ApexOptions = {\n chart: {\n type,\n width,\n height,\n },\n series,\n }\n\n if (themed) {\n const themedOpts = getThemedOptions()\n return deepMerge(deepMerge(baseOptions as unknown as Record<string, unknown>, themedOpts as unknown as Record<string, unknown>), options as unknown as Record<string, unknown>) as ApexOptions\n }\n\n return deepMerge(baseOptions as unknown as Record<string, unknown>, options as unknown as Record<string, unknown>) as ApexOptions\n }\n\n // Initialize chart\n useEffect(() => {\n if (!chartRef.current) return\n\n const opts = buildOptions()\n chartInstance.current = new ApexCharts(chartRef.current, opts)\n chartInstance.current.render()\n setMounted(true)\n\n return () => {\n if (chartInstance.current) {\n chartInstance.current.destroy()\n chartInstance.current = null\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Update chart when props change\n useEffect(() => {\n if (!chartInstance.current) return\n\n const opts = buildOptions()\n chartInstance.current.updateOptions(opts, true, true)\n }, [type, series, width, height, options, themed]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Listen for theme changes\n useEffect(() => {\n if (!themed || typeof window === 'undefined') return\n\n const observer = new MutationObserver(() => {\n if (chartInstance.current) {\n const opts = buildOptions()\n chartInstance.current.updateOptions(opts, true, true)\n }\n })\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme', 'class'],\n })\n\n return () => observer.disconnect()\n }, [themed]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return <div ref={chartRef} className={className} />\n}\n"],"names":["getCssVar","varName","oklchToHex","oklch","match","l","c","hRad","a","b","l_","m_","s_","l3","m3","s3","r","g","bl","toSrgb","x","getThemeColors","value","getThemedOptions","colors","baseContentVar","textColor","base300Var","gridColor","textMatch","isDark","deepMerge","target","source","result","key","Chart","type","series","width","height","options","themed","className","chartRef","useRef","chartInstance","setMounted","useState","buildOptions","baseOptions","themedOpts","useEffect","opts","ApexCharts","observer","jsx"],"mappings":"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"}
package/dist/index16.js CHANGED
@@ -1,153 +1,8 @@
1
- import { jsx as w } from "react/jsx-runtime";
2
- import { useRef as C, useState as v, useEffect as M } from "react";
3
- import O from "./index109.js";
4
- function S(o) {
5
- return typeof document > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(o).trim();
6
- }
7
- function x(o) {
8
- const e = o.match(/oklch\(\s*([\d.]+)%?\s+([\d.]+)\s+([\d.]+)/);
9
- if (!e) return "";
10
- const t = parseFloat(e[1]) / 100, r = parseFloat(e[2]), c = parseFloat(e[3]) * Math.PI / 180, l = r * Math.cos(c), u = r * Math.sin(c), n = t + 0.3963377774 * l + 0.2158037573 * u, f = t - 0.1055613458 * l - 0.0638541728 * u, i = t - 0.0894841775 * l - 1.291485548 * u, s = n * n * n, d = f * f * f, m = i * i * i;
11
- let b = 4.0767416621 * s - 3.3077115913 * d + 0.2309699292 * m, y = -1.2684380046 * s + 2.6097574011 * d - 0.3413193965 * m, g = -0.0041960863 * s - 0.7034186147 * d + 1.707614701 * m;
12
- const k = (p) => (p = Math.max(0, Math.min(1, p)), p <= 31308e-7 ? 12.92 * p : 1.055 * Math.pow(p, 1 / 2.4) - 0.055);
13
- return b = Math.round(k(b) * 255), y = Math.round(k(y) * 255), g = Math.round(k(g) * 255), `#${b.toString(16).padStart(2, "0")}${y.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}`;
14
- }
15
- function V() {
16
- return typeof document > "u" ? [] : [
17
- "--color-primary",
18
- "--color-secondary",
19
- "--color-accent",
20
- "--color-info",
21
- "--color-success",
22
- "--color-warning",
23
- "--color-error"
24
- ].map((e) => {
25
- const t = S(e);
26
- return t.includes("oklch") ? x(t) : t;
27
- }).filter(Boolean);
28
- }
29
- function I() {
30
- const o = V(), e = S("--color-base-content"), t = e.includes("oklch") ? x(e) : e || "#888888", r = S("--color-base-300"), a = r.includes("oklch") ? x(r) : r || "#e0e0e0", c = t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i), l = c ? (parseInt(c[1], 16) + parseInt(c[2], 16) + parseInt(c[3], 16)) / 3 > 128 : !1;
31
- return {
32
- colors: o.length > 0 ? o : void 0,
33
- theme: {
34
- mode: l ? "dark" : "light"
35
- },
36
- chart: {
37
- background: "transparent",
38
- foreColor: t
39
- },
40
- grid: {
41
- borderColor: a
42
- },
43
- xaxis: {
44
- labels: {
45
- style: {
46
- colors: t
47
- }
48
- },
49
- axisBorder: {
50
- color: a
51
- },
52
- axisTicks: {
53
- color: a
54
- }
55
- },
56
- yaxis: {
57
- labels: {
58
- style: {
59
- colors: t
60
- }
61
- }
62
- },
63
- legend: {
64
- labels: {
65
- colors: t
66
- }
67
- },
68
- tooltip: {
69
- theme: l ? "dark" : "light",
70
- style: {
71
- fontSize: "12px"
72
- },
73
- x: {
74
- show: !0
75
- },
76
- marker: {
77
- show: !0
78
- }
79
- },
80
- dataLabels: {
81
- style: {
82
- colors: [t, t, t, t, t, t, t]
83
- },
84
- background: {
85
- enabled: !1
86
- },
87
- dropShadow: {
88
- enabled: !1
89
- }
90
- }
91
- };
92
- }
93
- function h(o, e) {
94
- const t = { ...o };
95
- for (const r in e)
96
- e[r] !== void 0 && (typeof e[r] == "object" && e[r] !== null && !Array.isArray(e[r]) && typeof o[r] == "object" && o[r] !== null && !Array.isArray(o[r]) ? t[r] = h(
97
- o[r],
98
- e[r]
99
- ) : t[r] = e[r]);
100
- return t;
101
- }
102
- const $ = ({
103
- type: o,
104
- series: e,
105
- width: t = "100%",
106
- height: r = 350,
107
- options: a = {},
108
- themed: c = !0,
109
- className: l = ""
110
- }) => {
111
- const u = C(null), n = C(null), [, f] = v(!1), i = () => {
112
- const s = {
113
- chart: {
114
- type: o,
115
- width: t,
116
- height: r
117
- },
118
- series: e
119
- };
120
- if (c) {
121
- const d = I();
122
- return h(h(s, d), a);
123
- }
124
- return h(s, a);
125
- };
126
- return M(() => {
127
- if (!u.current) return;
128
- const s = i();
129
- return n.current = new O(u.current, s), n.current.render(), f(!0), () => {
130
- n.current && (n.current.destroy(), n.current = null);
131
- };
132
- }, []), M(() => {
133
- if (!n.current) return;
134
- const s = i();
135
- n.current.updateOptions(s, !0, !0);
136
- }, [o, e, t, r, a, c]), M(() => {
137
- if (!c || typeof window > "u") return;
138
- const s = new MutationObserver(() => {
139
- if (n.current) {
140
- const d = i();
141
- n.current.updateOptions(d, !0, !0);
142
- }
143
- });
144
- return s.observe(document.documentElement, {
145
- attributes: !0,
146
- attributeFilter: ["data-theme", "class"]
147
- }), () => s.disconnect();
148
- }, [c]), /* @__PURE__ */ w("div", { ref: u, className: l });
149
- };
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ const o = ({ id: e, children: s, className: r = "", ...a }) => /* @__PURE__ */ t("div", { id: e, className: `carousel-item ${r}`, ...a, children: s }), l = ({ children: e, snap: s = "start", vertical: r = !1, className: a = "", ...c }) => /* @__PURE__ */ t("div", { className: `carousel ${s === "center" ? "carousel-center" : s === "end" ? "carousel-end" : ""} ${r ? "carousel-vertical" : ""} ${a}`.trim(), ...c, children: e });
3
+ l.Item = o;
150
4
  export {
151
- $ as Chart
5
+ l as Carousel,
6
+ o as CarouselItem
152
7
  };
153
8
  //# sourceMappingURL=index16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index16.js","sources":["../src/components/Chart.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\nimport ApexCharts from 'apexcharts'\nimport type { ApexOptions } from 'apexcharts'\n\nexport interface ChartProps {\n /** Chart type */\n type: 'line' | 'area' | 'bar' | 'pie' | 'donut' | 'radialBar' | 'scatter' | 'bubble' | 'heatmap' | 'candlestick' | 'boxPlot' | 'radar' | 'polarArea' | 'rangeBar' | 'rangeArea' | 'treemap'\n /** Chart series data */\n series: ApexAxisChartSeries | ApexNonAxisChartSeries\n /** Chart width */\n width?: string | number\n /** Chart height */\n height?: string | number\n /** ApexCharts options (merged with theme defaults) */\n options?: ApexOptions\n /** Use daisyUI theme colors */\n themed?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\n// Get CSS variable value from root\nfunction getCssVar(varName: string): string {\n if (typeof document === 'undefined') return ''\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim()\n}\n\n// Convert oklch to hex (approximate)\nfunction oklchToHex(oklch: string): string {\n // Parse oklch(L C H) format\n const match = oklch.match(/oklch\\(\\s*([\\d.]+)%?\\s+([\\d.]+)\\s+([\\d.]+)/)\n if (!match) return ''\n\n const l = parseFloat(match[1]) / 100 // Lightness 0-1\n const c = parseFloat(match[2]) // Chroma\n const h = parseFloat(match[3]) // Hue in degrees\n\n // Simplified oklch to sRGB conversion\n // This is an approximation - full conversion is complex\n const hRad = (h * Math.PI) / 180\n const a = c * Math.cos(hRad)\n const b = c * Math.sin(hRad)\n\n // Approximate conversion to linear RGB\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b\n const s_ = l - 0.0894841775 * a - 1.2914855480 * b\n\n const l3 = l_ * l_ * l_\n const m3 = m_ * m_ * m_\n const s3 = s_ * s_ * s_\n\n let r = 4.0767416621 * l3 - 3.3077115913 * m3 + 0.2309699292 * s3\n let g = -1.2684380046 * l3 + 2.6097574011 * m3 - 0.3413193965 * s3\n let bl = -0.0041960863 * l3 - 0.7034186147 * m3 + 1.7076147010 * s3\n\n // Clamp and convert to sRGB\n const toSrgb = (x: number) => {\n x = Math.max(0, Math.min(1, x))\n return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1/2.4) - 0.055\n }\n\n r = Math.round(toSrgb(r) * 255)\n g = Math.round(toSrgb(g) * 255)\n bl = Math.round(toSrgb(bl) * 255)\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${bl.toString(16).padStart(2, '0')}`\n}\n\n// Get daisyUI theme colors from CSS variables\nfunction getThemeColors(): string[] {\n if (typeof document === 'undefined') return []\n\n const colorVars = [\n '--color-primary',\n '--color-secondary',\n '--color-accent',\n '--color-info',\n '--color-success',\n '--color-warning',\n '--color-error',\n ]\n\n return colorVars\n .map(varName => {\n const value = getCssVar(varName)\n if (value.includes('oklch')) {\n return oklchToHex(value)\n }\n return value\n })\n .filter(Boolean)\n}\n\n// Get theme-aware chart options\nfunction getThemedOptions(): Partial<ApexOptions> {\n const colors = getThemeColors()\n\n // Get text color from CSS variable\n const baseContentVar = getCssVar('--color-base-content')\n const textColor = baseContentVar.includes('oklch')\n ? oklchToHex(baseContentVar)\n : (baseContentVar || '#888888')\n\n // Get grid color from CSS variable\n const base300Var = getCssVar('--color-base-300')\n const gridColor = base300Var.includes('oklch')\n ? oklchToHex(base300Var)\n : (base300Var || '#e0e0e0')\n\n // Determine if dark theme by checking luminance of text color\n // If text is light, we're on dark theme\n const textMatch = textColor.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i)\n const isDark = textMatch\n ? (parseInt(textMatch[1], 16) + parseInt(textMatch[2], 16) + parseInt(textMatch[3], 16)) / 3 > 128\n : false\n\n return {\n colors: colors.length > 0 ? colors : undefined,\n theme: {\n mode: isDark ? 'dark' : 'light',\n },\n chart: {\n background: 'transparent',\n foreColor: textColor,\n },\n grid: {\n borderColor: gridColor,\n },\n xaxis: {\n labels: {\n style: {\n colors: textColor,\n },\n },\n axisBorder: {\n color: gridColor,\n },\n axisTicks: {\n color: gridColor,\n },\n },\n yaxis: {\n labels: {\n style: {\n colors: textColor,\n },\n },\n },\n legend: {\n labels: {\n colors: textColor,\n },\n },\n tooltip: {\n theme: isDark ? 'dark' : 'light',\n style: {\n fontSize: '12px',\n },\n x: {\n show: true,\n },\n marker: {\n show: true,\n },\n },\n dataLabels: {\n style: {\n colors: [textColor, textColor, textColor, textColor, textColor, textColor, textColor],\n },\n background: {\n enabled: false,\n },\n dropShadow: {\n enabled: false,\n },\n },\n }\n}\n\n// Deep merge objects\nfunction deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T {\n const result = { ...target }\n\n for (const key in source) {\n if (source[key] !== undefined) {\n if (\n typeof source[key] === 'object' &&\n source[key] !== null &&\n !Array.isArray(source[key]) &&\n typeof target[key] === 'object' &&\n target[key] !== null &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(\n target[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n ) as T[Extract<keyof T, string>]\n } else {\n result[key] = source[key] as T[Extract<keyof T, string>]\n }\n }\n }\n\n return result\n}\n\nexport const Chart: React.FC<ChartProps> = ({\n type,\n series,\n width = '100%',\n height = 350,\n options = {},\n themed = true,\n className = '',\n}) => {\n const chartRef = useRef<HTMLDivElement>(null)\n const chartInstance = useRef<ApexCharts | null>(null)\n const [, setMounted] = useState(false)\n\n // Build final options\n const buildOptions = (): ApexOptions => {\n const baseOptions: ApexOptions = {\n chart: {\n type,\n width,\n height,\n },\n series,\n }\n\n if (themed) {\n const themedOpts = getThemedOptions()\n return deepMerge(deepMerge(baseOptions as unknown as Record<string, unknown>, themedOpts as unknown as Record<string, unknown>), options as unknown as Record<string, unknown>) as ApexOptions\n }\n\n return deepMerge(baseOptions as unknown as Record<string, unknown>, options as unknown as Record<string, unknown>) as ApexOptions\n }\n\n // Initialize chart\n useEffect(() => {\n if (!chartRef.current) return\n\n const opts = buildOptions()\n chartInstance.current = new ApexCharts(chartRef.current, opts)\n chartInstance.current.render()\n setMounted(true)\n\n return () => {\n if (chartInstance.current) {\n chartInstance.current.destroy()\n chartInstance.current = null\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Update chart when props change\n useEffect(() => {\n if (!chartInstance.current) return\n\n const opts = buildOptions()\n chartInstance.current.updateOptions(opts, true, true)\n }, [type, series, width, height, options, themed]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Listen for theme changes\n useEffect(() => {\n if (!themed || typeof window === 'undefined') return\n\n const observer = new MutationObserver(() => {\n if (chartInstance.current) {\n const opts = buildOptions()\n chartInstance.current.updateOptions(opts, true, true)\n }\n })\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme', 'class'],\n })\n\n return () => observer.disconnect()\n }, [themed]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return <div ref={chartRef} className={className} />\n}\n"],"names":["getCssVar","varName","oklchToHex","oklch","match","l","c","hRad","a","b","l_","m_","s_","l3","m3","s3","r","g","bl","toSrgb","x","getThemeColors","value","getThemedOptions","colors","baseContentVar","textColor","base300Var","gridColor","textMatch","isDark","deepMerge","target","source","result","key","Chart","type","series","width","height","options","themed","className","chartRef","useRef","chartInstance","setMounted","useState","buildOptions","baseOptions","themedOpts","useEffect","opts","ApexCharts","observer","jsx"],"mappings":";;;AAsBA,SAASA,EAAUC,GAAyB;AAC1C,SAAI,OAAO,WAAa,MAAoB,KACrC,iBAAiB,SAAS,eAAe,EAAE,iBAAiBA,CAAO,EAAE,KAAA;AAC9E;AAGA,SAASC,EAAWC,GAAuB;AAEzC,QAAMC,IAAQD,EAAM,MAAM,4CAA4C;AACtE,MAAI,CAACC,EAAO,QAAO;AAEnB,QAAMC,IAAI,WAAWD,EAAM,CAAC,CAAC,IAAI,KAC3BE,IAAI,WAAWF,EAAM,CAAC,CAAC,GAKvBG,IAJI,WAAWH,EAAM,CAAC,CAAC,IAIX,KAAK,KAAM,KACvBI,IAAIF,IAAI,KAAK,IAAIC,CAAI,GACrBE,IAAIH,IAAI,KAAK,IAAIC,CAAI,GAGrBG,IAAKL,IAAI,eAAeG,IAAI,eAAeC,GAC3CE,IAAKN,IAAI,eAAeG,IAAI,eAAeC,GAC3CG,IAAKP,IAAI,eAAeG,IAAI,cAAeC,GAE3CI,IAAKH,IAAKA,IAAKA,GACfI,IAAKH,IAAKA,IAAKA,GACfI,IAAKH,IAAKA,IAAKA;AAErB,MAAII,IAAI,eAAeH,IAAK,eAAeC,IAAK,eAAeC,GAC3DE,IAAI,gBAAgBJ,IAAK,eAAeC,IAAK,eAAeC,GAC5DG,IAAK,gBAAgBL,IAAK,eAAeC,IAAK,cAAeC;AAGjE,QAAMI,IAAS,CAACC,OACdA,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGA,CAAC,CAAC,GACvBA,KAAK,WAAY,QAAQA,IAAI,QAAQ,KAAK,IAAIA,GAAG,IAAE,GAAG,IAAI;AAGnE,SAAAJ,IAAI,KAAK,MAAMG,EAAOH,CAAC,IAAI,GAAG,GAC9BC,IAAI,KAAK,MAAME,EAAOF,CAAC,IAAI,GAAG,GAC9BC,IAAK,KAAK,MAAMC,EAAOD,CAAE,IAAI,GAAG,GAEzB,IAAIF,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAGC,EAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AACjH;AAGA,SAASG,IAA2B;AAClC,SAAI,OAAO,WAAa,MAAoB,CAAA,IAE1B;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EAIC,IAAI,CAAApB,MAAW;AACd,UAAMqB,IAAQtB,EAAUC,CAAO;AAC/B,WAAIqB,EAAM,SAAS,OAAO,IACjBpB,EAAWoB,CAAK,IAElBA;AAAA,EACT,CAAC,EACA,OAAO,OAAO;AACnB;AAGA,SAASC,IAAyC;AAChD,QAAMC,IAASH,EAAA,GAGTI,IAAiBzB,EAAU,sBAAsB,GACjD0B,IAAYD,EAAe,SAAS,OAAO,IAC7CvB,EAAWuB,CAAc,IACxBA,KAAkB,WAGjBE,IAAa3B,EAAU,kBAAkB,GACzC4B,IAAYD,EAAW,SAAS,OAAO,IACzCzB,EAAWyB,CAAU,IACpBA,KAAc,WAIbE,IAAYH,EAAU,MAAM,6CAA6C,GACzEI,IAASD,KACV,SAASA,EAAU,CAAC,GAAG,EAAE,IAAI,SAASA,EAAU,CAAC,GAAG,EAAE,IAAI,SAASA,EAAU,CAAC,GAAG,EAAE,KAAK,IAAI,MAC7F;AAEJ,SAAO;AAAA,IACL,QAAQL,EAAO,SAAS,IAAIA,IAAS;AAAA,IACrC,OAAO;AAAA,MACL,MAAMM,IAAS,SAAS;AAAA,IAAA;AAAA,IAE1B,OAAO;AAAA,MACL,YAAY;AAAA,MACZ,WAAWJ;AAAA,IAAA;AAAA,IAEb,MAAM;AAAA,MACJ,aAAaE;AAAA,IAAA;AAAA,IAEf,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,QAAQF;AAAA,QAAA;AAAA,MACV;AAAA,MAEF,YAAY;AAAA,QACV,OAAOE;AAAA,MAAA;AAAA,MAET,WAAW;AAAA,QACT,OAAOA;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,QAAQF;AAAA,QAAA;AAAA,MACV;AAAA,IACF;AAAA,IAEF,QAAQ;AAAA,MACN,QAAQ;AAAA,QACN,QAAQA;AAAA,MAAA;AAAA,IACV;AAAA,IAEF,SAAS;AAAA,MACP,OAAOI,IAAS,SAAS;AAAA,MACzB,OAAO;AAAA,QACL,UAAU;AAAA,MAAA;AAAA,MAEZ,GAAG;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,MAER,QAAQ;AAAA,QACN,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,YAAY;AAAA,MACV,OAAO;AAAA,QACL,QAAQ,CAACJ,GAAWA,GAAWA,GAAWA,GAAWA,GAAWA,GAAWA,CAAS;AAAA,MAAA;AAAA,MAEtF,YAAY;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,MAEX,YAAY;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAEJ;AAGA,SAASK,EAA6CC,GAAWC,GAAuB;AACtF,QAAMC,IAAS,EAAE,GAAGF,EAAA;AAEpB,aAAWG,KAAOF;AAChB,IAAIA,EAAOE,CAAG,MAAM,WAEhB,OAAOF,EAAOE,CAAG,KAAM,YACvBF,EAAOE,CAAG,MAAM,QAChB,CAAC,MAAM,QAAQF,EAAOE,CAAG,CAAC,KAC1B,OAAOH,EAAOG,CAAG,KAAM,YACvBH,EAAOG,CAAG,MAAM,QAChB,CAAC,MAAM,QAAQH,EAAOG,CAAG,CAAC,IAE1BD,EAAOC,CAAG,IAAIJ;AAAA,MACZC,EAAOG,CAAG;AAAA,MACVF,EAAOE,CAAG;AAAA,IAAA,IAGZD,EAAOC,CAAG,IAAIF,EAAOE,CAAG;AAK9B,SAAOD;AACT;AAEO,MAAME,IAA8B,CAAC;AAAA,EAC1C,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,SAAAC,IAAU,CAAA;AAAA,EACV,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AACd,MAAM;AACJ,QAAMC,IAAWC,EAAuB,IAAI,GACtCC,IAAgBD,EAA0B,IAAI,GAC9C,GAAGE,CAAU,IAAIC,EAAS,EAAK,GAG/BC,IAAe,MAAmB;AACtC,UAAMC,IAA2B;AAAA,MAC/B,OAAO;AAAA,QACL,MAAAb;AAAA,QACA,OAAAE;AAAA,QACA,QAAAC;AAAA,MAAA;AAAA,MAEF,QAAAF;AAAA,IAAA;AAGF,QAAII,GAAQ;AACV,YAAMS,IAAa5B,EAAA;AACnB,aAAOQ,EAAUA,EAAUmB,GAAmDC,CAAgD,GAAGV,CAA6C;AAAA,IAChL;AAEA,WAAOV,EAAUmB,GAAmDT,CAA6C;AAAA,EACnH;AAGA,SAAAW,EAAU,MAAM;AACd,QAAI,CAACR,EAAS,QAAS;AAEvB,UAAMS,IAAOJ,EAAA;AACb,WAAAH,EAAc,UAAU,IAAIQ,EAAWV,EAAS,SAASS,CAAI,GAC7DP,EAAc,QAAQ,OAAA,GACtBC,EAAW,EAAI,GAER,MAAM;AACX,MAAID,EAAc,YAChBA,EAAc,QAAQ,QAAA,GACtBA,EAAc,UAAU;AAAA,IAE5B;AAAA,EACF,GAAG,CAAA,CAAE,GAGLM,EAAU,MAAM;AACd,QAAI,CAACN,EAAc,QAAS;AAE5B,UAAMO,IAAOJ,EAAA;AACb,IAAAH,EAAc,QAAQ,cAAcO,GAAM,IAAM,EAAI;AAAA,EACtD,GAAG,CAAChB,GAAMC,GAAQC,GAAOC,GAAQC,GAASC,CAAM,CAAC,GAGjDU,EAAU,MAAM;AACd,QAAI,CAACV,KAAU,OAAO,SAAW,IAAa;AAE9C,UAAMa,IAAW,IAAI,iBAAiB,MAAM;AAC1C,UAAIT,EAAc,SAAS;AACzB,cAAMO,IAAOJ,EAAA;AACb,QAAAH,EAAc,QAAQ,cAAcO,GAAM,IAAM,EAAI;AAAA,MACtD;AAAA,IACF,CAAC;AAED,WAAAE,EAAS,QAAQ,SAAS,iBAAiB;AAAA,MACzC,YAAY;AAAA,MACZ,iBAAiB,CAAC,cAAc,OAAO;AAAA,IAAA,CACxC,GAEM,MAAMA,EAAS,WAAA;AAAA,EACxB,GAAG,CAACb,CAAM,CAAC,GAEJ,gBAAAc,EAAC,OAAA,EAAI,KAAKZ,GAAU,WAAAD,EAAA,CAAsB;AACnD;"}
1
+ {"version":3,"file":"index16.js","sources":["../src/components/Carousel.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface CarouselItemProps extends React.HTMLAttributes<HTMLDivElement> {\n id?: string\n children: React.ReactNode\n}\n\nexport const CarouselItem: React.FC<CarouselItemProps> = ({ id, children, className = '', ...rest }) => {\n return (\n <div id={id} className={`carousel-item ${className}`} {...rest}>\n {children}\n </div>\n )\n}\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n snap?: 'start' | 'center' | 'end'\n vertical?: boolean\n}\n\nexport const Carousel: React.FC<CarouselProps> & {\n Item: typeof CarouselItem\n} = ({ children, snap = 'start', vertical = false, className = '', ...rest }) => {\n const snapClass = snap === 'center' ? 'carousel-center' : snap === 'end' ? 'carousel-end' : ''\n const directionClass = vertical ? 'carousel-vertical' : ''\n\n return (\n <div className={`carousel ${snapClass} ${directionClass} ${className}`.trim()} {...rest}>\n {children}\n </div>\n )\n}\n\nCarousel.Item = CarouselItem\n"],"names":["CarouselItem","id","children","className","rest","jsx","Carousel","snap","vertical"],"mappings":";AAOO,MAAMA,IAA4C,CAAC,EAAE,IAAAC,GAAI,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,QAEzF,gBAAAC,EAAC,SAAI,IAAAJ,GAAQ,WAAW,iBAAiBE,CAAS,IAAK,GAAGC,GACvD,UAAAF,EAAA,CACH,GAUSI,IAET,CAAC,EAAE,UAAAJ,GAAU,MAAAK,IAAO,SAAS,UAAAC,IAAW,IAAO,WAAAL,IAAY,IAAI,GAAGC,EAAA,MAKlE,gBAAAC,EAAC,OAAA,EAAI,WAAW,YAJAE,MAAS,WAAW,oBAAoBA,MAAS,QAAQ,iBAAiB,EAIrD,IAHhBC,IAAW,sBAAsB,EAGC,IAAIL,CAAS,GAAG,KAAA,GAAS,GAAGC,GAChF,UAAAF,GACH;AAIJI,EAAS,OAAON;"}