asterui 0.12.1 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/components/Calendar.d.ts +23 -0
  2. package/dist/components/Checkbox.d.ts +10 -0
  3. package/dist/components/Dock.d.ts +38 -0
  4. package/dist/components/Mask.d.ts +14 -0
  5. package/dist/index.css +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.js +203 -194
  8. package/dist/index.js.map +1 -1
  9. package/dist/index10.js +85 -59
  10. package/dist/index10.js.map +1 -1
  11. package/dist/index100.js +45 -7
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js +11 -11
  14. package/dist/index101.js.map +1 -1
  15. package/dist/index102.js +12 -28
  16. package/dist/index102.js.map +1 -1
  17. package/dist/index103.js +7 -17
  18. package/dist/index103.js.map +1 -1
  19. package/dist/index104.js +12 -10792
  20. package/dist/index104.js.map +1 -1
  21. package/dist/index105.js +31 -5
  22. package/dist/index105.js.map +1 -1
  23. package/dist/index106.js +16 -40
  24. package/dist/index106.js.map +1 -1
  25. package/dist/index107.js +174 -2
  26. package/dist/index107.js.map +1 -1
  27. package/dist/index109.js +10788 -147
  28. package/dist/index109.js.map +1 -1
  29. package/dist/index110.js +5 -30
  30. package/dist/index110.js.map +1 -1
  31. package/dist/index111.js +39 -27
  32. package/dist/index111.js.map +1 -1
  33. package/dist/index113.js +6 -71
  34. package/dist/index113.js.map +1 -1
  35. package/dist/index114.js +147 -34
  36. package/dist/index114.js.map +1 -1
  37. package/dist/index115.js +28 -24
  38. package/dist/index115.js.map +1 -1
  39. package/dist/index116.js +28 -19
  40. package/dist/index116.js.map +1 -1
  41. package/dist/index117.js +2 -24
  42. package/dist/index117.js.map +1 -1
  43. package/dist/index118.js +71 -19
  44. package/dist/index118.js.map +1 -1
  45. package/dist/index119.js +33 -94
  46. package/dist/index119.js.map +1 -1
  47. package/dist/index120.js +24 -358
  48. package/dist/index120.js.map +1 -1
  49. package/dist/index121.js +19 -23
  50. package/dist/index121.js.map +1 -1
  51. package/dist/index122.js +22 -71
  52. package/dist/index122.js.map +1 -1
  53. package/dist/index123.js +18 -14
  54. package/dist/index123.js.map +1 -1
  55. package/dist/index124.js +92 -58
  56. package/dist/index124.js.map +1 -1
  57. package/dist/index125.js +357 -141
  58. package/dist/index125.js.map +1 -1
  59. package/dist/index126.js +25 -2
  60. package/dist/index126.js.map +1 -1
  61. package/dist/index127.js +70 -53
  62. package/dist/index127.js.map +1 -1
  63. package/dist/index128.js +16 -2
  64. package/dist/index128.js.map +1 -1
  65. package/dist/index129.js +66 -2
  66. package/dist/index129.js.map +1 -1
  67. package/dist/index13.js +35 -95
  68. package/dist/index13.js.map +1 -1
  69. package/dist/index130.js +144 -2
  70. package/dist/index130.js.map +1 -1
  71. package/dist/index131.js +2 -2
  72. package/dist/index132.js +56 -2
  73. package/dist/index132.js.map +1 -1
  74. package/dist/index133.js +2 -2
  75. package/dist/index134.js +2 -2
  76. package/dist/index136.js +2 -32
  77. package/dist/index136.js.map +1 -1
  78. package/dist/index137.js +2 -2
  79. package/dist/index138.js +2 -8
  80. package/dist/index138.js.map +1 -1
  81. package/dist/index139.js +2 -2
  82. package/dist/index14.js +90 -153
  83. package/dist/index14.js.map +1 -1
  84. package/dist/index140.js +2 -2
  85. package/dist/index141.js +31 -20
  86. package/dist/index141.js.map +1 -1
  87. package/dist/index142.js +2 -2
  88. package/dist/index143.js +7 -23
  89. package/dist/index143.js.map +1 -1
  90. package/dist/index144.js +2 -71
  91. package/dist/index144.js.map +1 -1
  92. package/dist/index145.js +2 -21
  93. package/dist/index145.js.map +1 -1
  94. package/dist/index146.js +20 -33
  95. package/dist/index146.js.map +1 -1
  96. package/dist/index147.js +2 -70
  97. package/dist/index147.js.map +1 -1
  98. package/dist/index148.js +24 -2
  99. package/dist/index148.js.map +1 -1
  100. package/dist/index149.js +70 -21
  101. package/dist/index149.js.map +1 -1
  102. package/dist/index15.js +154 -146
  103. package/dist/index15.js.map +1 -1
  104. package/dist/index150.js +21 -2
  105. package/dist/index150.js.map +1 -1
  106. package/dist/index151.js +34 -2
  107. package/dist/index151.js.map +1 -1
  108. package/dist/index152.js +70 -2
  109. package/dist/index152.js.map +1 -1
  110. package/dist/index153.js +2 -2
  111. package/dist/index154.js +21 -3
  112. package/dist/index154.js.map +1 -1
  113. package/dist/index155.js +5 -0
  114. package/dist/index155.js.map +1 -0
  115. package/dist/index156.js +5 -0
  116. package/dist/index156.js.map +1 -0
  117. package/dist/index157.js +5 -0
  118. package/dist/index157.js.map +1 -0
  119. package/dist/index158.js +5 -0
  120. package/dist/index158.js.map +1 -0
  121. package/dist/index159.js +7 -0
  122. package/dist/index159.js.map +1 -0
  123. package/dist/index16.js +150 -5
  124. package/dist/index16.js.map +1 -1
  125. package/dist/index17.js +5 -71
  126. package/dist/index17.js.map +1 -1
  127. package/dist/index18.js +71 -17
  128. package/dist/index18.js.map +1 -1
  129. package/dist/index19.js +15 -96
  130. package/dist/index19.js.map +1 -1
  131. package/dist/index20.js +89 -105
  132. package/dist/index20.js.map +1 -1
  133. package/dist/index21.js +107 -177
  134. package/dist/index21.js.map +1 -1
  135. package/dist/index22.js +181 -107
  136. package/dist/index22.js.map +1 -1
  137. package/dist/index23.js +110 -19
  138. package/dist/index23.js.map +1 -1
  139. package/dist/index24.js +19 -32
  140. package/dist/index24.js.map +1 -1
  141. package/dist/index25.js +42 -40
  142. package/dist/index25.js.map +1 -1
  143. package/dist/index26.js +31 -11
  144. package/dist/index26.js.map +1 -1
  145. package/dist/index27.js +41 -33
  146. package/dist/index27.js.map +1 -1
  147. package/dist/index28.js +12 -63
  148. package/dist/index28.js.map +1 -1
  149. package/dist/index29.js +33 -80
  150. package/dist/index29.js.map +1 -1
  151. package/dist/index30.js +63 -18
  152. package/dist/index30.js.map +1 -1
  153. package/dist/index31.js +79 -219
  154. package/dist/index31.js.map +1 -1
  155. package/dist/index32.js +16 -1080
  156. package/dist/index32.js.map +1 -1
  157. package/dist/index33.js +218 -16
  158. package/dist/index33.js.map +1 -1
  159. package/dist/index34.js +1081 -121
  160. package/dist/index34.js.map +1 -1
  161. package/dist/index35.js +17 -39
  162. package/dist/index35.js.map +1 -1
  163. package/dist/index36.js +121 -190
  164. package/dist/index36.js.map +1 -1
  165. package/dist/index37.js +37 -94
  166. package/dist/index37.js.map +1 -1
  167. package/dist/index38.js +186 -157
  168. package/dist/index38.js.map +1 -1
  169. package/dist/index39.js +89 -138
  170. package/dist/index39.js.map +1 -1
  171. package/dist/index40.js +161 -14
  172. package/dist/index40.js.map +1 -1
  173. package/dist/index41.js +146 -18
  174. package/dist/index41.js.map +1 -1
  175. package/dist/index42.js +14 -20
  176. package/dist/index42.js.map +1 -1
  177. package/dist/index43.js +15 -116
  178. package/dist/index43.js.map +1 -1
  179. package/dist/index44.js +18 -10
  180. package/dist/index44.js.map +1 -1
  181. package/dist/index45.js +119 -35
  182. package/dist/index45.js.map +1 -1
  183. package/dist/index46.js +12 -115
  184. package/dist/index46.js.map +1 -1
  185. package/dist/index47.js +33 -174
  186. package/dist/index47.js.map +1 -1
  187. package/dist/index48.js +10 -147
  188. package/dist/index48.js.map +1 -1
  189. package/dist/index49.js +116 -12
  190. package/dist/index49.js.map +1 -1
  191. package/dist/index50.js +176 -22
  192. package/dist/index50.js.map +1 -1
  193. package/dist/index51.js +147 -14
  194. package/dist/index51.js.map +1 -1
  195. package/dist/index52.js +10 -5
  196. package/dist/index52.js.map +1 -1
  197. package/dist/index53.js +21 -265
  198. package/dist/index53.js.map +1 -1
  199. package/dist/index54.js +10 -13
  200. package/dist/index54.js.map +1 -1
  201. package/dist/index55.js +7 -122
  202. package/dist/index55.js.map +1 -1
  203. package/dist/index56.js +262 -106
  204. package/dist/index56.js.map +1 -1
  205. package/dist/index57.js +14 -167
  206. package/dist/index57.js.map +1 -1
  207. package/dist/index58.js +121 -31
  208. package/dist/index58.js.map +1 -1
  209. package/dist/index59.js +107 -119
  210. package/dist/index59.js.map +1 -1
  211. package/dist/index60.js +161 -77
  212. package/dist/index60.js.map +1 -1
  213. package/dist/index61.js +31 -19
  214. package/dist/index61.js.map +1 -1
  215. package/dist/index62.js +117 -69
  216. package/dist/index62.js.map +1 -1
  217. package/dist/index63.js +82 -53
  218. package/dist/index63.js.map +1 -1
  219. package/dist/index64.js +19 -44
  220. package/dist/index64.js.map +1 -1
  221. package/dist/index65.js +70 -48
  222. package/dist/index65.js.map +1 -1
  223. package/dist/index66.js +55 -60
  224. package/dist/index66.js.map +1 -1
  225. package/dist/index67.js +39 -101
  226. package/dist/index67.js.map +1 -1
  227. package/dist/index68.js +52 -41
  228. package/dist/index68.js.map +1 -1
  229. package/dist/index69.js +58 -64
  230. package/dist/index69.js.map +1 -1
  231. package/dist/index70.js +105 -19
  232. package/dist/index70.js.map +1 -1
  233. package/dist/index71.js +41 -46
  234. package/dist/index71.js.map +1 -1
  235. package/dist/index72.js +63 -129
  236. package/dist/index72.js.map +1 -1
  237. package/dist/index73.js +19 -50
  238. package/dist/index73.js.map +1 -1
  239. package/dist/index74.js +46 -22
  240. package/dist/index74.js.map +1 -1
  241. package/dist/index75.js +132 -29
  242. package/dist/index75.js.map +1 -1
  243. package/dist/index76.js +52 -22
  244. package/dist/index76.js.map +1 -1
  245. package/dist/index77.js +19 -326
  246. package/dist/index77.js.map +1 -1
  247. package/dist/index78.js +31 -56
  248. package/dist/index78.js.map +1 -1
  249. package/dist/index79.js +22 -40
  250. package/dist/index79.js.map +1 -1
  251. package/dist/index80.js +328 -22
  252. package/dist/index80.js.map +1 -1
  253. package/dist/index81.js +55 -94
  254. package/dist/index81.js.map +1 -1
  255. package/dist/index82.js +38 -128
  256. package/dist/index82.js.map +1 -1
  257. package/dist/index83.js +20 -158
  258. package/dist/index83.js.map +1 -1
  259. package/dist/index84.js +93 -63
  260. package/dist/index84.js.map +1 -1
  261. package/dist/index85.js +128 -33
  262. package/dist/index85.js.map +1 -1
  263. package/dist/index86.js +152 -225
  264. package/dist/index86.js.map +1 -1
  265. package/dist/index87.js +63 -32
  266. package/dist/index87.js.map +1 -1
  267. package/dist/index88.js +35 -210
  268. package/dist/index88.js.map +1 -1
  269. package/dist/index89.js +229 -208
  270. package/dist/index89.js.map +1 -1
  271. package/dist/index90.js +34 -295
  272. package/dist/index90.js.map +1 -1
  273. package/dist/index91.js +200 -168
  274. package/dist/index91.js.map +1 -1
  275. package/dist/index92.js +198 -243
  276. package/dist/index92.js.map +1 -1
  277. package/dist/index93.js +293 -12
  278. package/dist/index93.js.map +1 -1
  279. package/dist/index94.js +174 -29
  280. package/dist/index94.js.map +1 -1
  281. package/dist/index95.js +258 -6
  282. package/dist/index95.js.map +1 -1
  283. package/dist/index96.js +13 -13
  284. package/dist/index96.js.map +1 -1
  285. package/dist/index97.js +32 -45
  286. package/dist/index97.js.map +1 -1
  287. package/dist/index98.js +5 -12
  288. package/dist/index98.js.map +1 -1
  289. package/dist/index99.js +13 -14
  290. package/dist/index99.js.map +1 -1
  291. package/package.json +2 -1
  292. package/dist/index108.js +0 -10
  293. package/dist/index108.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index34.js","sources":["../src/components/Image.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\n\nexport interface ImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {\n src: string\n alt?: string\n fallback?: string\n placeholder?: React.ReactNode\n preview?: boolean\n width?: string | number\n height?: string | number\n className?: string\n onLoad?: () => void\n onError?: () => void\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = '',\n fallback,\n placeholder,\n preview = true,\n width,\n height,\n className = '',\n onLoad,\n onError,\n ...props\n}) => {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [showPreview, setShowPreview] = useState(false)\n const [currentSrc, setCurrentSrc] = useState(src)\n\n useEffect(() => {\n setLoading(true)\n setError(false)\n setCurrentSrc(src)\n }, [src])\n\n const handleLoad = () => {\n setLoading(false)\n setError(false)\n onLoad?.()\n }\n\n const handleError = () => {\n setLoading(false)\n setError(true)\n if (fallback) {\n setCurrentSrc(fallback)\n }\n onError?.()\n }\n\n const handleImageClick = () => {\n if (preview && !error && !loading) {\n setShowPreview(true)\n }\n }\n\n const handleClosePreview = () => {\n setShowPreview(false)\n }\n\n const getStyle = (): React.CSSProperties => {\n const style: React.CSSProperties = {}\n if (width) {\n style.width = typeof width === 'number' ? `${width}px` : width\n }\n if (height) {\n style.height = typeof height === 'number' ? `${height}px` : height\n }\n return style\n }\n\n const imageClasses = [\n className,\n preview && !error && !loading ? 'cursor-pointer hover:opacity-80 transition-opacity' : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <>\n <div className=\"relative inline-block\" style={getStyle()}>\n {loading && placeholder && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-base-200\">\n {placeholder}\n </div>\n )}\n <img\n {...props}\n src={currentSrc}\n alt={alt}\n className={imageClasses}\n style={{ ...getStyle(), display: loading ? 'none' : 'block' }}\n onLoad={handleLoad}\n onError={handleError}\n onClick={handleImageClick}\n />\n {error && !fallback && (\n <div\n className=\"flex items-center justify-center bg-base-200 text-base-content/50\"\n style={getStyle()}\n >\n <svg\n className=\"w-12 h-12\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n\n {showPreview && (\n <div\n className=\"fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n >\n <div className=\"relative max-w-full max-h-full\">\n <button\n className=\"absolute top-4 right-4 btn btn-circle btn-sm\"\n onClick={handleClosePreview}\n >\n <svg\n className=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n <img\n src={src}\n alt={alt}\n className=\"max-w-full max-h-[90vh] object-contain\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n </div>\n )}\n </>\n )\n}\n"],"names":["Image","src","alt","fallback","placeholder","preview","width","height","className","onLoad","onError","props","loading","setLoading","useState","error","setError","showPreview","setShowPreview","currentSrc","setCurrentSrc","useEffect","handleLoad","handleError","handleImageClick","handleClosePreview","getStyle","style","imageClasses","jsxs","Fragment","jsx","e"],"mappings":"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"}
1
+ {"version":3,"file":"index34.js","sources":["../src/components/Grid.tsx"],"sourcesContent":["import React from 'react'\n\nconst GridContext = React.createContext<{ cols: 24 | 120 }>({ cols: 24 })\n\nexport interface RowProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n cols?: 24 | 120\n gutter?: number | [number, number]\n justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly'\n align?: 'start' | 'end' | 'center' | 'stretch' | 'baseline'\n}\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n span?: number\n offset?: number\n order?: number\n xs?: number\n sm?: number\n md?: number\n lg?: number\n xl?: number\n xxl?: number\n}\n\n// Explicit class mappings - Tailwind v4 supports any grid value natively\nconst COL_SPAN_CLASSES: Record<number, string> = {\n 1: 'col-span-1', 2: 'col-span-2', 3: 'col-span-3', 4: 'col-span-4',\n 5: 'col-span-5', 6: 'col-span-6', 7: 'col-span-7', 8: 'col-span-8',\n 9: 'col-span-9', 10: 'col-span-10', 11: 'col-span-11', 12: 'col-span-12',\n 13: 'col-span-13', 14: 'col-span-14', 15: 'col-span-15', 16: 'col-span-16',\n 17: 'col-span-17', 18: 'col-span-18', 19: 'col-span-19', 20: 'col-span-20',\n 21: 'col-span-21', 22: 'col-span-22', 23: 'col-span-23', 24: 'col-span-24',\n}\n\nconst SM_COL_SPAN_CLASSES: Record<number, string> = {\n 1: 'sm:col-span-1', 2: 'sm:col-span-2', 3: 'sm:col-span-3', 4: 'sm:col-span-4',\n 5: 'sm:col-span-5', 6: 'sm:col-span-6', 7: 'sm:col-span-7', 8: 'sm:col-span-8',\n 9: 'sm:col-span-9', 10: 'sm:col-span-10', 11: 'sm:col-span-11', 12: 'sm:col-span-12',\n 13: 'sm:col-span-13', 14: 'sm:col-span-14', 15: 'sm:col-span-15', 16: 'sm:col-span-16',\n 17: 'sm:col-span-17', 18: 'sm:col-span-18', 19: 'sm:col-span-19', 20: 'sm:col-span-20',\n 21: 'sm:col-span-21', 22: 'sm:col-span-22', 23: 'sm:col-span-23', 24: 'sm:col-span-24',\n}\n\nconst MD_COL_SPAN_CLASSES: Record<number, string> = {\n 1: 'md:col-span-1', 2: 'md:col-span-2', 3: 'md:col-span-3', 4: 'md:col-span-4',\n 5: 'md:col-span-5', 6: 'md:col-span-6', 7: 'md:col-span-7', 8: 'md:col-span-8',\n 9: 'md:col-span-9', 10: 'md:col-span-10', 11: 'md:col-span-11', 12: 'md:col-span-12',\n 13: 'md:col-span-13', 14: 'md:col-span-14', 15: 'md:col-span-15', 16: 'md:col-span-16',\n 17: 'md:col-span-17', 18: 'md:col-span-18', 19: 'md:col-span-19', 20: 'md:col-span-20',\n 21: 'md:col-span-21', 22: 'md:col-span-22', 23: 'md:col-span-23', 24: 'md:col-span-24',\n}\n\nconst LG_COL_SPAN_CLASSES: Record<number, string> = {\n 1: 'lg:col-span-1', 2: 'lg:col-span-2', 3: 'lg:col-span-3', 4: 'lg:col-span-4',\n 5: 'lg:col-span-5', 6: 'lg:col-span-6', 7: 'lg:col-span-7', 8: 'lg:col-span-8',\n 9: 'lg:col-span-9', 10: 'lg:col-span-10', 11: 'lg:col-span-11', 12: 'lg:col-span-12',\n 13: 'lg:col-span-13', 14: 'lg:col-span-14', 15: 'lg:col-span-15', 16: 'lg:col-span-16',\n 17: 'lg:col-span-17', 18: 'lg:col-span-18', 19: 'lg:col-span-19', 20: 'lg:col-span-20',\n 21: 'lg:col-span-21', 22: 'lg:col-span-22', 23: 'lg:col-span-23', 24: 'lg:col-span-24',\n}\n\nconst XL_COL_SPAN_CLASSES: Record<number, string> = {\n 1: 'xl:col-span-1', 2: 'xl:col-span-2', 3: 'xl:col-span-3', 4: 'xl:col-span-4',\n 5: 'xl:col-span-5', 6: 'xl:col-span-6', 7: 'xl:col-span-7', 8: 'xl:col-span-8',\n 9: 'xl:col-span-9', 10: 'xl:col-span-10', 11: 'xl:col-span-11', 12: 'xl:col-span-12',\n 13: 'xl:col-span-13', 14: 'xl:col-span-14', 15: 'xl:col-span-15', 16: 'xl:col-span-16',\n 17: 'xl:col-span-17', 18: 'xl:col-span-18', 19: 'xl:col-span-19', 20: 'xl:col-span-20',\n 21: 'xl:col-span-21', 22: 'xl:col-span-22', 23: 'xl:col-span-23', 24: 'xl:col-span-24',\n}\n\nconst XXL_COL_SPAN_CLASSES: Record<number, string> = {\n 1: '2xl:col-span-1', 2: '2xl:col-span-2', 3: '2xl:col-span-3', 4: '2xl:col-span-4',\n 5: '2xl:col-span-5', 6: '2xl:col-span-6', 7: '2xl:col-span-7', 8: '2xl:col-span-8',\n 9: '2xl:col-span-9', 10: '2xl:col-span-10', 11: '2xl:col-span-11', 12: '2xl:col-span-12',\n 13: '2xl:col-span-13', 14: '2xl:col-span-14', 15: '2xl:col-span-15', 16: '2xl:col-span-16',\n 17: '2xl:col-span-17', 18: '2xl:col-span-18', 19: '2xl:col-span-19', 20: '2xl:col-span-20',\n 21: '2xl:col-span-21', 22: '2xl:col-span-22', 23: '2xl:col-span-23', 24: '2xl:col-span-24',\n}\n\nconst COL_START_CLASSES: Record<number, string> = {\n 1: 'col-start-1', 2: 'col-start-2', 3: 'col-start-3', 4: 'col-start-4',\n 5: 'col-start-5', 6: 'col-start-6', 7: 'col-start-7', 8: 'col-start-8',\n 9: 'col-start-9', 10: 'col-start-10', 11: 'col-start-11', 12: 'col-start-12',\n 13: 'col-start-13', 14: 'col-start-14', 15: 'col-start-15', 16: 'col-start-16',\n 17: 'col-start-17', 18: 'col-start-18', 19: 'col-start-19', 20: 'col-start-20',\n 21: 'col-start-21', 22: 'col-start-22', 23: 'col-start-23', 24: 'col-start-24',\n 25: 'col-start-25',\n}\n\nconst ORDER_CLASSES: Record<number, string> = {\n 1: 'order-1', 2: 'order-2', 3: 'order-3', 4: 'order-4',\n 5: 'order-5', 6: 'order-6', 7: 'order-7', 8: 'order-8',\n 9: 'order-9', 10: 'order-10', 11: 'order-11', 12: 'order-12',\n}\n\n// 120-column grid mappings - using arbitrary value syntax for values > 12\nconst COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: 'col-span-1', 2: 'col-span-2', 3: 'col-span-3', 4: 'col-span-4', 5: 'col-span-5',\n 6: 'col-span-6', 7: 'col-span-7', 8: 'col-span-8', 9: 'col-span-9', 10: 'col-span-10',\n 11: 'col-span-11', 12: 'col-span-12', 13: 'col-span-13', 14: 'col-span-14', 15: 'col-span-15',\n 16: 'col-span-16', 17: 'col-span-17', 18: 'col-span-18', 19: 'col-span-19', 20: 'col-span-20',\n 21: 'col-span-21', 22: 'col-span-22', 23: 'col-span-23', 24: 'col-span-24', 25: 'col-span-25',\n 26: 'col-span-26', 27: 'col-span-27', 28: 'col-span-28', 29: 'col-span-29', 30: 'col-span-30',\n 31: 'col-span-31', 32: 'col-span-32', 33: 'col-span-33', 34: 'col-span-34', 35: 'col-span-35',\n 36: 'col-span-36', 37: 'col-span-37', 38: 'col-span-38', 39: 'col-span-39', 40: 'col-span-40',\n 41: 'col-span-41', 42: 'col-span-42', 43: 'col-span-43', 44: 'col-span-44', 45: 'col-span-45',\n 46: 'col-span-46', 47: 'col-span-47', 48: 'col-span-48', 49: 'col-span-49', 50: 'col-span-50',\n 51: 'col-span-51', 52: 'col-span-52', 53: 'col-span-53', 54: 'col-span-54', 55: 'col-span-55',\n 56: 'col-span-56', 57: 'col-span-57', 58: 'col-span-58', 59: 'col-span-59', 60: 'col-span-60',\n 61: 'col-span-61', 62: 'col-span-62', 63: 'col-span-63', 64: 'col-span-64', 65: 'col-span-65',\n 66: 'col-span-66', 67: 'col-span-67', 68: 'col-span-68', 69: 'col-span-69', 70: 'col-span-70',\n 71: 'col-span-71', 72: 'col-span-72', 73: 'col-span-73', 74: 'col-span-74', 75: 'col-span-75',\n 76: 'col-span-76', 77: 'col-span-77', 78: 'col-span-78', 79: 'col-span-79', 80: 'col-span-80',\n 81: 'col-span-81', 82: 'col-span-82', 83: 'col-span-83', 84: 'col-span-84', 85: 'col-span-85',\n 86: 'col-span-86', 87: 'col-span-87', 88: 'col-span-88', 89: 'col-span-89', 90: 'col-span-90',\n 91: 'col-span-91', 92: 'col-span-92', 93: 'col-span-93', 94: 'col-span-94', 95: 'col-span-95',\n 96: 'col-span-96', 97: 'col-span-97', 98: 'col-span-98', 99: 'col-span-99', 100: 'col-span-100',\n 101: 'col-span-101', 102: 'col-span-102', 103: 'col-span-103', 104: 'col-span-104', 105: 'col-span-105',\n 106: 'col-span-106', 107: 'col-span-107', 108: 'col-span-108', 109: 'col-span-109', 110: 'col-span-110',\n 111: 'col-span-111', 112: 'col-span-112', 113: 'col-span-113', 114: 'col-span-114', 115: 'col-span-115',\n 116: 'col-span-116', 117: 'col-span-117', 118: 'col-span-118', 119: 'col-span-119', 120: 'col-span-120',\n}\n\nconst SM_COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: 'sm:col-span-1', 2: 'sm:col-span-2', 3: 'sm:col-span-3', 4: 'sm:col-span-4', 5: 'sm:col-span-5',\n 6: 'sm:col-span-6', 7: 'sm:col-span-7', 8: 'sm:col-span-8', 9: 'sm:col-span-9', 10: 'sm:col-span-10',\n 11: 'sm:col-span-11', 12: 'sm:col-span-12', 13: 'sm:col-span-13', 14: 'sm:col-span-14', 15: 'sm:col-span-15',\n 16: 'sm:col-span-16', 17: 'sm:col-span-17', 18: 'sm:col-span-18', 19: 'sm:col-span-19', 20: 'sm:col-span-20',\n 21: 'sm:col-span-21', 22: 'sm:col-span-22', 23: 'sm:col-span-23', 24: 'sm:col-span-24', 25: 'sm:col-span-25',\n 26: 'sm:col-span-26', 27: 'sm:col-span-27', 28: 'sm:col-span-28', 29: 'sm:col-span-29', 30: 'sm:col-span-30',\n 31: 'sm:col-span-31', 32: 'sm:col-span-32', 33: 'sm:col-span-33', 34: 'sm:col-span-34', 35: 'sm:col-span-35',\n 36: 'sm:col-span-36', 37: 'sm:col-span-37', 38: 'sm:col-span-38', 39: 'sm:col-span-39', 40: 'sm:col-span-40',\n 41: 'sm:col-span-41', 42: 'sm:col-span-42', 43: 'sm:col-span-43', 44: 'sm:col-span-44', 45: 'sm:col-span-45',\n 46: 'sm:col-span-46', 47: 'sm:col-span-47', 48: 'sm:col-span-48', 49: 'sm:col-span-49', 50: 'sm:col-span-50',\n 51: 'sm:col-span-51', 52: 'sm:col-span-52', 53: 'sm:col-span-53', 54: 'sm:col-span-54', 55: 'sm:col-span-55',\n 56: 'sm:col-span-56', 57: 'sm:col-span-57', 58: 'sm:col-span-58', 59: 'sm:col-span-59', 60: 'sm:col-span-60',\n 61: 'sm:col-span-61', 62: 'sm:col-span-62', 63: 'sm:col-span-63', 64: 'sm:col-span-64', 65: 'sm:col-span-65',\n 66: 'sm:col-span-66', 67: 'sm:col-span-67', 68: 'sm:col-span-68', 69: 'sm:col-span-69', 70: 'sm:col-span-70',\n 71: 'sm:col-span-71', 72: 'sm:col-span-72', 73: 'sm:col-span-73', 74: 'sm:col-span-74', 75: 'sm:col-span-75',\n 76: 'sm:col-span-76', 77: 'sm:col-span-77', 78: 'sm:col-span-78', 79: 'sm:col-span-79', 80: 'sm:col-span-80',\n 81: 'sm:col-span-81', 82: 'sm:col-span-82', 83: 'sm:col-span-83', 84: 'sm:col-span-84', 85: 'sm:col-span-85',\n 86: 'sm:col-span-86', 87: 'sm:col-span-87', 88: 'sm:col-span-88', 89: 'sm:col-span-89', 90: 'sm:col-span-90',\n 91: 'sm:col-span-91', 92: 'sm:col-span-92', 93: 'sm:col-span-93', 94: 'sm:col-span-94', 95: 'sm:col-span-95',\n 96: 'sm:col-span-96', 97: 'sm:col-span-97', 98: 'sm:col-span-98', 99: 'sm:col-span-99', 100: 'sm:col-span-100',\n 101: 'sm:col-span-101', 102: 'sm:col-span-102', 103: 'sm:col-span-103', 104: 'sm:col-span-104', 105: 'sm:col-span-105',\n 106: 'sm:col-span-106', 107: 'sm:col-span-107', 108: 'sm:col-span-108', 109: 'sm:col-span-109', 110: 'sm:col-span-110',\n 111: 'sm:col-span-111', 112: 'sm:col-span-112', 113: 'sm:col-span-113', 114: 'sm:col-span-114', 115: 'sm:col-span-115',\n 116: 'sm:col-span-116', 117: 'sm:col-span-117', 118: 'sm:col-span-118', 119: 'sm:col-span-119', 120: 'sm:col-span-120',\n}\n\nconst MD_COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: 'md:col-span-1', 2: 'md:col-span-2', 3: 'md:col-span-3', 4: 'md:col-span-4', 5: 'md:col-span-5',\n 6: 'md:col-span-6', 7: 'md:col-span-7', 8: 'md:col-span-8', 9: 'md:col-span-9', 10: 'md:col-span-10',\n 11: 'md:col-span-11', 12: 'md:col-span-12', 13: 'md:col-span-13', 14: 'md:col-span-14', 15: 'md:col-span-15',\n 16: 'md:col-span-16', 17: 'md:col-span-17', 18: 'md:col-span-18', 19: 'md:col-span-19', 20: 'md:col-span-20',\n 21: 'md:col-span-21', 22: 'md:col-span-22', 23: 'md:col-span-23', 24: 'md:col-span-24', 25: 'md:col-span-25',\n 26: 'md:col-span-26', 27: 'md:col-span-27', 28: 'md:col-span-28', 29: 'md:col-span-29', 30: 'md:col-span-30',\n 31: 'md:col-span-31', 32: 'md:col-span-32', 33: 'md:col-span-33', 34: 'md:col-span-34', 35: 'md:col-span-35',\n 36: 'md:col-span-36', 37: 'md:col-span-37', 38: 'md:col-span-38', 39: 'md:col-span-39', 40: 'md:col-span-40',\n 41: 'md:col-span-41', 42: 'md:col-span-42', 43: 'md:col-span-43', 44: 'md:col-span-44', 45: 'md:col-span-45',\n 46: 'md:col-span-46', 47: 'md:col-span-47', 48: 'md:col-span-48', 49: 'md:col-span-49', 50: 'md:col-span-50',\n 51: 'md:col-span-51', 52: 'md:col-span-52', 53: 'md:col-span-53', 54: 'md:col-span-54', 55: 'md:col-span-55',\n 56: 'md:col-span-56', 57: 'md:col-span-57', 58: 'md:col-span-58', 59: 'md:col-span-59', 60: 'md:col-span-60',\n 61: 'md:col-span-61', 62: 'md:col-span-62', 63: 'md:col-span-63', 64: 'md:col-span-64', 65: 'md:col-span-65',\n 66: 'md:col-span-66', 67: 'md:col-span-67', 68: 'md:col-span-68', 69: 'md:col-span-69', 70: 'md:col-span-70',\n 71: 'md:col-span-71', 72: 'md:col-span-72', 73: 'md:col-span-73', 74: 'md:col-span-74', 75: 'md:col-span-75',\n 76: 'md:col-span-76', 77: 'md:col-span-77', 78: 'md:col-span-78', 79: 'md:col-span-79', 80: 'md:col-span-80',\n 81: 'md:col-span-81', 82: 'md:col-span-82', 83: 'md:col-span-83', 84: 'md:col-span-84', 85: 'md:col-span-85',\n 86: 'md:col-span-86', 87: 'md:col-span-87', 88: 'md:col-span-88', 89: 'md:col-span-89', 90: 'md:col-span-90',\n 91: 'md:col-span-91', 92: 'md:col-span-92', 93: 'md:col-span-93', 94: 'md:col-span-94', 95: 'md:col-span-95',\n 96: 'md:col-span-96', 97: 'md:col-span-97', 98: 'md:col-span-98', 99: 'md:col-span-99', 100: 'md:col-span-100',\n 101: 'md:col-span-101', 102: 'md:col-span-102', 103: 'md:col-span-103', 104: 'md:col-span-104', 105: 'md:col-span-105',\n 106: 'md:col-span-106', 107: 'md:col-span-107', 108: 'md:col-span-108', 109: 'md:col-span-109', 110: 'md:col-span-110',\n 111: 'md:col-span-111', 112: 'md:col-span-112', 113: 'md:col-span-113', 114: 'md:col-span-114', 115: 'md:col-span-115',\n 116: 'md:col-span-116', 117: 'md:col-span-117', 118: 'md:col-span-118', 119: 'md:col-span-119', 120: 'md:col-span-120',\n}\n\nconst LG_COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: 'lg:col-span-1', 2: 'lg:col-span-2', 3: 'lg:col-span-3', 4: 'lg:col-span-4', 5: 'lg:col-span-5',\n 6: 'lg:col-span-6', 7: 'lg:col-span-7', 8: 'lg:col-span-8', 9: 'lg:col-span-9', 10: 'lg:col-span-10',\n 11: 'lg:col-span-11', 12: 'lg:col-span-12', 13: 'lg:col-span-13', 14: 'lg:col-span-14', 15: 'lg:col-span-15',\n 16: 'lg:col-span-16', 17: 'lg:col-span-17', 18: 'lg:col-span-18', 19: 'lg:col-span-19', 20: 'lg:col-span-20',\n 21: 'lg:col-span-21', 22: 'lg:col-span-22', 23: 'lg:col-span-23', 24: 'lg:col-span-24', 25: 'lg:col-span-25',\n 26: 'lg:col-span-26', 27: 'lg:col-span-27', 28: 'lg:col-span-28', 29: 'lg:col-span-29', 30: 'lg:col-span-30',\n 31: 'lg:col-span-31', 32: 'lg:col-span-32', 33: 'lg:col-span-33', 34: 'lg:col-span-34', 35: 'lg:col-span-35',\n 36: 'lg:col-span-36', 37: 'lg:col-span-37', 38: 'lg:col-span-38', 39: 'lg:col-span-39', 40: 'lg:col-span-40',\n 41: 'lg:col-span-41', 42: 'lg:col-span-42', 43: 'lg:col-span-43', 44: 'lg:col-span-44', 45: 'lg:col-span-45',\n 46: 'lg:col-span-46', 47: 'lg:col-span-47', 48: 'lg:col-span-48', 49: 'lg:col-span-49', 50: 'lg:col-span-50',\n 51: 'lg:col-span-51', 52: 'lg:col-span-52', 53: 'lg:col-span-53', 54: 'lg:col-span-54', 55: 'lg:col-span-55',\n 56: 'lg:col-span-56', 57: 'lg:col-span-57', 58: 'lg:col-span-58', 59: 'lg:col-span-59', 60: 'lg:col-span-60',\n 61: 'lg:col-span-61', 62: 'lg:col-span-62', 63: 'lg:col-span-63', 64: 'lg:col-span-64', 65: 'lg:col-span-65',\n 66: 'lg:col-span-66', 67: 'lg:col-span-67', 68: 'lg:col-span-68', 69: 'lg:col-span-69', 70: 'lg:col-span-70',\n 71: 'lg:col-span-71', 72: 'lg:col-span-72', 73: 'lg:col-span-73', 74: 'lg:col-span-74', 75: 'lg:col-span-75',\n 76: 'lg:col-span-76', 77: 'lg:col-span-77', 78: 'lg:col-span-78', 79: 'lg:col-span-79', 80: 'lg:col-span-80',\n 81: 'lg:col-span-81', 82: 'lg:col-span-82', 83: 'lg:col-span-83', 84: 'lg:col-span-84', 85: 'lg:col-span-85',\n 86: 'lg:col-span-86', 87: 'lg:col-span-87', 88: 'lg:col-span-88', 89: 'lg:col-span-89', 90: 'lg:col-span-90',\n 91: 'lg:col-span-91', 92: 'lg:col-span-92', 93: 'lg:col-span-93', 94: 'lg:col-span-94', 95: 'lg:col-span-95',\n 96: 'lg:col-span-96', 97: 'lg:col-span-97', 98: 'lg:col-span-98', 99: 'lg:col-span-99', 100: 'lg:col-span-100',\n 101: 'lg:col-span-101', 102: 'lg:col-span-102', 103: 'lg:col-span-103', 104: 'lg:col-span-104', 105: 'lg:col-span-105',\n 106: 'lg:col-span-106', 107: 'lg:col-span-107', 108: 'lg:col-span-108', 109: 'lg:col-span-109', 110: 'lg:col-span-110',\n 111: 'lg:col-span-111', 112: 'lg:col-span-112', 113: 'lg:col-span-113', 114: 'lg:col-span-114', 115: 'lg:col-span-115',\n 116: 'lg:col-span-116', 117: 'lg:col-span-117', 118: 'lg:col-span-118', 119: 'lg:col-span-119', 120: 'lg:col-span-120',\n}\n\nconst XL_COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: 'xl:col-span-1', 2: 'xl:col-span-2', 3: 'xl:col-span-3', 4: 'xl:col-span-4', 5: 'xl:col-span-5',\n 6: 'xl:col-span-6', 7: 'xl:col-span-7', 8: 'xl:col-span-8', 9: 'xl:col-span-9', 10: 'xl:col-span-10',\n 11: 'xl:col-span-11', 12: 'xl:col-span-12', 13: 'xl:col-span-13', 14: 'xl:col-span-14', 15: 'xl:col-span-15',\n 16: 'xl:col-span-16', 17: 'xl:col-span-17', 18: 'xl:col-span-18', 19: 'xl:col-span-19', 20: 'xl:col-span-20',\n 21: 'xl:col-span-21', 22: 'xl:col-span-22', 23: 'xl:col-span-23', 24: 'xl:col-span-24', 25: 'xl:col-span-25',\n 26: 'xl:col-span-26', 27: 'xl:col-span-27', 28: 'xl:col-span-28', 29: 'xl:col-span-29', 30: 'xl:col-span-30',\n 31: 'xl:col-span-31', 32: 'xl:col-span-32', 33: 'xl:col-span-33', 34: 'xl:col-span-34', 35: 'xl:col-span-35',\n 36: 'xl:col-span-36', 37: 'xl:col-span-37', 38: 'xl:col-span-38', 39: 'xl:col-span-39', 40: 'xl:col-span-40',\n 41: 'xl:col-span-41', 42: 'xl:col-span-42', 43: 'xl:col-span-43', 44: 'xl:col-span-44', 45: 'xl:col-span-45',\n 46: 'xl:col-span-46', 47: 'xl:col-span-47', 48: 'xl:col-span-48', 49: 'xl:col-span-49', 50: 'xl:col-span-50',\n 51: 'xl:col-span-51', 52: 'xl:col-span-52', 53: 'xl:col-span-53', 54: 'xl:col-span-54', 55: 'xl:col-span-55',\n 56: 'xl:col-span-56', 57: 'xl:col-span-57', 58: 'xl:col-span-58', 59: 'xl:col-span-59', 60: 'xl:col-span-60',\n 61: 'xl:col-span-61', 62: 'xl:col-span-62', 63: 'xl:col-span-63', 64: 'xl:col-span-64', 65: 'xl:col-span-65',\n 66: 'xl:col-span-66', 67: 'xl:col-span-67', 68: 'xl:col-span-68', 69: 'xl:col-span-69', 70: 'xl:col-span-70',\n 71: 'xl:col-span-71', 72: 'xl:col-span-72', 73: 'xl:col-span-73', 74: 'xl:col-span-74', 75: 'xl:col-span-75',\n 76: 'xl:col-span-76', 77: 'xl:col-span-77', 78: 'xl:col-span-78', 79: 'xl:col-span-79', 80: 'xl:col-span-80',\n 81: 'xl:col-span-81', 82: 'xl:col-span-82', 83: 'xl:col-span-83', 84: 'xl:col-span-84', 85: 'xl:col-span-85',\n 86: 'xl:col-span-86', 87: 'xl:col-span-87', 88: 'xl:col-span-88', 89: 'xl:col-span-89', 90: 'xl:col-span-90',\n 91: 'xl:col-span-91', 92: 'xl:col-span-92', 93: 'xl:col-span-93', 94: 'xl:col-span-94', 95: 'xl:col-span-95',\n 96: 'xl:col-span-96', 97: 'xl:col-span-97', 98: 'xl:col-span-98', 99: 'xl:col-span-99', 100: 'xl:col-span-100',\n 101: 'xl:col-span-101', 102: 'xl:col-span-102', 103: 'xl:col-span-103', 104: 'xl:col-span-104', 105: 'xl:col-span-105',\n 106: 'xl:col-span-106', 107: 'xl:col-span-107', 108: 'xl:col-span-108', 109: 'xl:col-span-109', 110: 'xl:col-span-110',\n 111: 'xl:col-span-111', 112: 'xl:col-span-112', 113: 'xl:col-span-113', 114: 'xl:col-span-114', 115: 'xl:col-span-115',\n 116: 'xl:col-span-116', 117: 'xl:col-span-117', 118: 'xl:col-span-118', 119: 'xl:col-span-119', 120: 'xl:col-span-120',\n}\n\nconst XXL_COL_SPAN_120_CLASSES: Record<number, string> = {\n 1: '2xl:col-span-1', 2: '2xl:col-span-2', 3: '2xl:col-span-3', 4: '2xl:col-span-4', 5: '2xl:col-span-5',\n 6: '2xl:col-span-6', 7: '2xl:col-span-7', 8: '2xl:col-span-8', 9: '2xl:col-span-9', 10: '2xl:col-span-10',\n 11: '2xl:col-span-11', 12: '2xl:col-span-12', 13: '2xl:col-span-13', 14: '2xl:col-span-14', 15: '2xl:col-span-15',\n 16: '2xl:col-span-16', 17: '2xl:col-span-17', 18: '2xl:col-span-18', 19: '2xl:col-span-19', 20: '2xl:col-span-20',\n 21: '2xl:col-span-21', 22: '2xl:col-span-22', 23: '2xl:col-span-23', 24: '2xl:col-span-24', 25: '2xl:col-span-25',\n 26: '2xl:col-span-26', 27: '2xl:col-span-27', 28: '2xl:col-span-28', 29: '2xl:col-span-29', 30: '2xl:col-span-30',\n 31: '2xl:col-span-31', 32: '2xl:col-span-32', 33: '2xl:col-span-33', 34: '2xl:col-span-34', 35: '2xl:col-span-35',\n 36: '2xl:col-span-36', 37: '2xl:col-span-37', 38: '2xl:col-span-38', 39: '2xl:col-span-39', 40: '2xl:col-span-40',\n 41: '2xl:col-span-41', 42: '2xl:col-span-42', 43: '2xl:col-span-43', 44: '2xl:col-span-44', 45: '2xl:col-span-45',\n 46: '2xl:col-span-46', 47: '2xl:col-span-47', 48: '2xl:col-span-48', 49: '2xl:col-span-49', 50: '2xl:col-span-50',\n 51: '2xl:col-span-51', 52: '2xl:col-span-52', 53: '2xl:col-span-53', 54: '2xl:col-span-54', 55: '2xl:col-span-55',\n 56: '2xl:col-span-56', 57: '2xl:col-span-57', 58: '2xl:col-span-58', 59: '2xl:col-span-59', 60: '2xl:col-span-60',\n 61: '2xl:col-span-61', 62: '2xl:col-span-62', 63: '2xl:col-span-63', 64: '2xl:col-span-64', 65: '2xl:col-span-65',\n 66: '2xl:col-span-66', 67: '2xl:col-span-67', 68: '2xl:col-span-68', 69: '2xl:col-span-69', 70: '2xl:col-span-70',\n 71: '2xl:col-span-71', 72: '2xl:col-span-72', 73: '2xl:col-span-73', 74: '2xl:col-span-74', 75: '2xl:col-span-75',\n 76: '2xl:col-span-76', 77: '2xl:col-span-77', 78: '2xl:col-span-78', 79: '2xl:col-span-79', 80: '2xl:col-span-80',\n 81: '2xl:col-span-81', 82: '2xl:col-span-82', 83: '2xl:col-span-83', 84: '2xl:col-span-84', 85: '2xl:col-span-85',\n 86: '2xl:col-span-86', 87: '2xl:col-span-87', 88: '2xl:col-span-88', 89: '2xl:col-span-89', 90: '2xl:col-span-90',\n 91: '2xl:col-span-91', 92: '2xl:col-span-92', 93: '2xl:col-span-93', 94: '2xl:col-span-94', 95: '2xl:col-span-95',\n 96: '2xl:col-span-96', 97: '2xl:col-span-97', 98: '2xl:col-span-98', 99: '2xl:col-span-99', 100: '2xl:col-span-100',\n 101: '2xl:col-span-101', 102: '2xl:col-span-102', 103: '2xl:col-span-103', 104: '2xl:col-span-104', 105: '2xl:col-span-105',\n 106: '2xl:col-span-106', 107: '2xl:col-span-107', 108: '2xl:col-span-108', 109: '2xl:col-span-109', 110: '2xl:col-span-110',\n 111: '2xl:col-span-111', 112: '2xl:col-span-112', 113: '2xl:col-span-113', 114: '2xl:col-span-114', 115: '2xl:col-span-115',\n 116: '2xl:col-span-116', 117: '2xl:col-span-117', 118: '2xl:col-span-118', 119: '2xl:col-span-119', 120: '2xl:col-span-120',\n}\n\nconst COL_START_120_CLASSES: Record<number, string> = {\n 1: 'col-start-1', 2: 'col-start-2', 3: 'col-start-3', 4: 'col-start-4', 5: 'col-start-5',\n 6: 'col-start-6', 7: 'col-start-7', 8: 'col-start-8', 9: 'col-start-9', 10: 'col-start-10',\n 11: 'col-start-11', 12: 'col-start-12', 13: 'col-start-13', 14: 'col-start-14', 15: 'col-start-15',\n 16: 'col-start-16', 17: 'col-start-17', 18: 'col-start-18', 19: 'col-start-19', 20: 'col-start-20',\n 21: 'col-start-21', 22: 'col-start-22', 23: 'col-start-23', 24: 'col-start-24', 25: 'col-start-25',\n 26: 'col-start-26', 27: 'col-start-27', 28: 'col-start-28', 29: 'col-start-29', 30: 'col-start-30',\n 31: 'col-start-31', 32: 'col-start-32', 33: 'col-start-33', 34: 'col-start-34', 35: 'col-start-35',\n 36: 'col-start-36', 37: 'col-start-37', 38: 'col-start-38', 39: 'col-start-39', 40: 'col-start-40',\n 41: 'col-start-41', 42: 'col-start-42', 43: 'col-start-43', 44: 'col-start-44', 45: 'col-start-45',\n 46: 'col-start-46', 47: 'col-start-47', 48: 'col-start-48', 49: 'col-start-49', 50: 'col-start-50',\n 51: 'col-start-51', 52: 'col-start-52', 53: 'col-start-53', 54: 'col-start-54', 55: 'col-start-55',\n 56: 'col-start-56', 57: 'col-start-57', 58: 'col-start-58', 59: 'col-start-59', 60: 'col-start-60',\n 61: 'col-start-61', 62: 'col-start-62', 63: 'col-start-63', 64: 'col-start-64', 65: 'col-start-65',\n 66: 'col-start-66', 67: 'col-start-67', 68: 'col-start-68', 69: 'col-start-69', 70: 'col-start-70',\n 71: 'col-start-71', 72: 'col-start-72', 73: 'col-start-73', 74: 'col-start-74', 75: 'col-start-75',\n 76: 'col-start-76', 77: 'col-start-77', 78: 'col-start-78', 79: 'col-start-79', 80: 'col-start-80',\n 81: 'col-start-81', 82: 'col-start-82', 83: 'col-start-83', 84: 'col-start-84', 85: 'col-start-85',\n 86: 'col-start-86', 87: 'col-start-87', 88: 'col-start-88', 89: 'col-start-89', 90: 'col-start-90',\n 91: 'col-start-91', 92: 'col-start-92', 93: 'col-start-93', 94: 'col-start-94', 95: 'col-start-95',\n 96: 'col-start-96', 97: 'col-start-97', 98: 'col-start-98', 99: 'col-start-99', 100: 'col-start-100',\n 101: 'col-start-101', 102: 'col-start-102', 103: 'col-start-103', 104: 'col-start-104', 105: 'col-start-105',\n 106: 'col-start-106', 107: 'col-start-107', 108: 'col-start-108', 109: 'col-start-109', 110: 'col-start-110',\n 111: 'col-start-111', 112: 'col-start-112', 113: 'col-start-113', 114: 'col-start-114', 115: 'col-start-115',\n 116: 'col-start-116', 117: 'col-start-117', 118: 'col-start-118', 119: 'col-start-119', 120: 'col-start-120',\n 121: 'col-start-121',\n}\n\nexport function Row({ children, cols = 24, gutter = 0, justify, align, className = '', style: userStyle, ...rest }: RowProps) {\n const [gutterX, gutterY] = Array.isArray(gutter) ? gutter : [gutter, 0]\n\n // Scale gutter for 120-column grids to maintain consistent visual spacing\n // 120 columns creates 5x more grid tracks than 24 columns, so gutter needs to be 1/5\n const actualGutterX = cols === 120 ? gutterX / 5 : gutterX\n const actualGutterY = cols === 120 ? gutterY / 5 : gutterY\n\n const justifyClasses: Record<string, string> = {\n start: 'justify-items-start',\n end: 'justify-items-end',\n center: 'justify-items-center',\n between: 'justify-items-between',\n around: 'justify-items-around',\n evenly: 'justify-items-evenly',\n }\n\n const alignClasses: Record<string, string> = {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n }\n\n // Grid column class mapping - literal strings for Tailwind\n const GRID_COLS_CLASSES: Record<24 | 120, string> = {\n 24: 'grid-cols-[repeat(24,minmax(0,1fr))]',\n 120: 'grid-cols-[repeat(120,minmax(0,1fr))]',\n }\n\n const classes = [\n 'grid',\n GRID_COLS_CLASSES[cols],\n 'w-full',\n justify && justifyClasses[justify],\n align && alignClasses[align],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const style: React.CSSProperties = {\n ...(actualGutterX && { columnGap: `${actualGutterX}px` }),\n ...(actualGutterY && { rowGap: `${actualGutterY}px` }),\n ...userStyle,\n }\n\n return (\n <GridContext.Provider value={{ cols }}>\n <div className={classes} style={style} {...rest}>\n {children}\n </div>\n </GridContext.Provider>\n )\n}\n\nexport function Col({ children, span, offset, order, xs, sm, md, lg, xl, xxl, className = '', ...rest }: ColProps) {\n const { cols } = React.useContext(GridContext)\n const classes: string[] = []\n\n // Select mapping objects based on column count\n const colSpanClasses = cols === 120 ? COL_SPAN_120_CLASSES : COL_SPAN_CLASSES\n const smColSpanClasses = cols === 120 ? SM_COL_SPAN_120_CLASSES : SM_COL_SPAN_CLASSES\n const mdColSpanClasses = cols === 120 ? MD_COL_SPAN_120_CLASSES : MD_COL_SPAN_CLASSES\n const lgColSpanClasses = cols === 120 ? LG_COL_SPAN_120_CLASSES : LG_COL_SPAN_CLASSES\n const xlColSpanClasses = cols === 120 ? XL_COL_SPAN_120_CLASSES : XL_COL_SPAN_CLASSES\n const xxlColSpanClasses = cols === 120 ? XXL_COL_SPAN_120_CLASSES : XXL_COL_SPAN_CLASSES\n const colStartClasses = cols === 120 ? COL_START_120_CLASSES : COL_START_CLASSES\n\n // Base span or xs (mobile-first)\n const baseSpan = span || xs\n if (baseSpan && colSpanClasses[baseSpan]) {\n classes.push(colSpanClasses[baseSpan])\n }\n\n // Responsive spans\n if (sm && smColSpanClasses[sm]) classes.push(smColSpanClasses[sm])\n if (md && mdColSpanClasses[md]) classes.push(mdColSpanClasses[md])\n if (lg && lgColSpanClasses[lg]) classes.push(lgColSpanClasses[lg])\n if (xl && xlColSpanClasses[xl]) classes.push(xlColSpanClasses[xl])\n if (xxl && xxlColSpanClasses[xxl]) classes.push(xxlColSpanClasses[xxl])\n\n // Offset (uses col-start)\n if (offset && colStartClasses[offset + 1]) {\n classes.push(colStartClasses[offset + 1])\n }\n\n // Order\n if (order && ORDER_CLASSES[order]) {\n classes.push(ORDER_CLASSES[order])\n }\n\n if (className) classes.push(className)\n\n return <div className={classes.join(' ')} {...rest}>{children}</div>\n}\n\nexport const Grid = {\n Row,\n Col,\n}\n"],"names":["GridContext","React","COL_SPAN_CLASSES","SM_COL_SPAN_CLASSES","MD_COL_SPAN_CLASSES","LG_COL_SPAN_CLASSES","XL_COL_SPAN_CLASSES","XXL_COL_SPAN_CLASSES","COL_START_CLASSES","ORDER_CLASSES","COL_SPAN_120_CLASSES","SM_COL_SPAN_120_CLASSES","MD_COL_SPAN_120_CLASSES","LG_COL_SPAN_120_CLASSES","XL_COL_SPAN_120_CLASSES","XXL_COL_SPAN_120_CLASSES","COL_START_120_CLASSES","Row","children","cols","gutter","justify","align","className","userStyle","rest","gutterX","gutterY","actualGutterX","actualGutterY","justifyClasses","alignClasses","classes","style","jsx","Col","span","offset","order","xs","sm","md","lg","xl","xxl","colSpanClasses","smColSpanClasses","mdColSpanClasses","lgColSpanClasses","xlColSpanClasses","xxlColSpanClasses","colStartClasses","baseSpan","Grid"],"mappings":"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,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAChF,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,IAAI;AAAA,EAAe,KAAK;AAAA,EACjF,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EACzF,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EACzF,KAAK;AAAA,EAAgB,KAAK;AAAA,EAAgB,KAAK;AAAA,EAA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,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA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AAAA,EAAiB,GAAG;AAAA,EACnF,GAAG;AAAA,EAAiB,GAAG;AAAA,EAAiB,GAAG;AAAA,EAAiB,GAAG;AAAA,EAAiB,IAAI;AAAA,EACpF,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAC5F,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,IAAI;AAAA,EAAkB,KAAK;AAAA,EAC7F,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EACrG,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EACrG,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EACrG,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AAAA,EAAmB,KAAK;AACvG,GAEMC,IAAmD;AAAA,EACvD,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,GAAG;AAAA,EACvF,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,GAAG;AAAA,EAAkB,IAAI;AAAA,EACxF,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAChG,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,IAAI;AAAA,EAAmB,KAAK;AAAA,EACjG,KAAK;AAAA,EAAoB,KAAK;AAAA,EAAoB,KAAK;AAAA,EAAoB,KAAK;AAAA,EAAoB,KAAK;AAAA,EACzG,KAAK;AAAA,EAAoB,KAAK;AAAA,EAAoB,KAA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"}
package/dist/index35.js CHANGED
@@ -1,43 +1,21 @@
1
- import { jsxs as p, jsx as m } from "react/jsx-runtime";
2
- import b from "react";
3
- const j = ({
4
- position: r = "top-end",
5
- children: s,
6
- className: c = "",
7
- ...o
8
- }) => {
9
- const n = (d) => {
10
- const [l, h] = d.split("-"), t = [];
11
- switch (l) {
12
- case "top":
13
- t.push("indicator-top");
14
- break;
15
- case "middle":
16
- t.push("indicator-middle");
17
- break;
18
- case "bottom":
19
- t.push("indicator-bottom");
20
- break;
21
- }
22
- switch (h) {
23
- case "start":
24
- t.push("indicator-start");
25
- break;
26
- case "center":
27
- t.push("indicator-center");
28
- break;
29
- case "end":
30
- t.push("indicator-end");
31
- break;
32
- }
33
- return t.join(" ");
34
- }, e = b.Children.toArray(s), a = e[0], i = e[1];
35
- return /* @__PURE__ */ p("div", { className: `indicator inline-block ${c}`, ...o, children: [
36
- i && /* @__PURE__ */ m("div", { className: `indicator-item ${n(r)}`, children: i }),
37
- a
1
+ import { jsxs as v, jsx as e } from "react/jsx-runtime";
2
+ function h({
3
+ children: o,
4
+ overlay: n = !1,
5
+ overlayClassName: l = "",
6
+ contentClassName: a = "",
7
+ wrapperClassName: s,
8
+ className: i = "",
9
+ style: r,
10
+ ...t
11
+ }) {
12
+ const c = ["hero", "min-h-screen", i].filter(Boolean).join(" "), f = ["hero-content", a].filter(Boolean).join(" "), m = ["hero-overlay", l].filter(Boolean).join(" ");
13
+ return /* @__PURE__ */ v("div", { className: c, style: r, ...t, children: [
14
+ n && /* @__PURE__ */ e("div", { className: m }),
15
+ /* @__PURE__ */ e("div", { className: f, children: s ? /* @__PURE__ */ e("div", { className: s, children: o }) : o })
38
16
  ] });
39
- };
17
+ }
40
18
  export {
41
- j as Indicator
19
+ h as Hero
42
20
  };
43
21
  //# sourceMappingURL=index35.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index35.js","sources":["../src/components/Indicator.tsx"],"sourcesContent":["import React from 'react'\n\nexport type IndicatorPosition =\n | 'top-start'\n | 'top-center'\n | 'top-end'\n | 'middle-start'\n | 'middle-center'\n | 'middle-end'\n | 'bottom-start'\n | 'bottom-center'\n | 'bottom-end'\n\nexport interface IndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n position?: IndicatorPosition\n children: React.ReactNode\n}\n\nexport const Indicator: React.FC<IndicatorProps> = ({\n position = 'top-end',\n children,\n className = '',\n ...rest\n}) => {\n // Get position classes for indicator\n const getPositionClasses = (pos: IndicatorPosition) => {\n const [vertical, horizontal] = pos.split('-')\n const classes: string[] = []\n\n switch (vertical) {\n case 'top':\n classes.push('indicator-top')\n break\n case 'middle':\n classes.push('indicator-middle')\n break\n case 'bottom':\n classes.push('indicator-bottom')\n break\n }\n\n switch (horizontal) {\n case 'start':\n classes.push('indicator-start')\n break\n case 'center':\n classes.push('indicator-center')\n break\n case 'end':\n classes.push('indicator-end')\n break\n }\n\n return classes.join(' ')\n }\n\n const childrenArray = React.Children.toArray(children)\n const content = childrenArray[0]\n const indicatorElement = childrenArray[1]\n\n return (\n <div className={`indicator inline-block ${className}`} {...rest}>\n {indicatorElement && (\n <div className={`indicator-item ${getPositionClasses(position)}`}>\n {indicatorElement}\n </div>\n )}\n {content}\n </div>\n )\n}\n"],"names":["Indicator","position","children","className","rest","getPositionClasses","pos","vertical","horizontal","classes","childrenArray","React","content","indicatorElement","jsx"],"mappings":";;AAkBO,MAAMA,IAAsC,CAAC;AAAA,EAClD,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AAEJ,QAAMC,IAAqB,CAACC,MAA2B;AACrD,UAAM,CAACC,GAAUC,CAAU,IAAIF,EAAI,MAAM,GAAG,GACtCG,IAAoB,CAAA;AAE1B,YAAQF,GAAA;AAAA,MACN,KAAK;AACH,QAAAE,EAAQ,KAAK,eAAe;AAC5B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,IAAA;AAGJ,YAAQD,GAAA;AAAA,MACN,KAAK;AACH,QAAAC,EAAQ,KAAK,iBAAiB;AAC9B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,kBAAkB;AAC/B;AAAA,MACF,KAAK;AACH,QAAAA,EAAQ,KAAK,eAAe;AAC5B;AAAA,IAAA;AAGJ,WAAOA,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAgBC,EAAM,SAAS,QAAQT,CAAQ,GAC/CU,IAAUF,EAAc,CAAC,GACzBG,IAAmBH,EAAc,CAAC;AAExC,2BACG,OAAA,EAAI,WAAW,0BAA0BP,CAAS,IAAK,GAAGC,GACxD,UAAA;AAAA,IAAAS,KACC,gBAAAC,EAAC,SAAI,WAAW,kBAAkBT,EAAmBJ,CAAQ,CAAC,IAC3D,UAAAY,EAAA,CACH;AAAA,IAEDD;AAAA,EAAA,GACH;AAEJ;"}
1
+ {"version":3,"file":"index35.js","sources":["../src/components/Hero.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface HeroProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n overlay?: boolean\n overlayClassName?: string\n contentClassName?: string\n wrapperClassName?: string\n}\n\nexport function Hero({\n children,\n overlay = false,\n overlayClassName = '',\n contentClassName = '',\n wrapperClassName,\n className = '',\n style,\n ...rest\n}: HeroProps) {\n const classes = ['hero', 'min-h-screen', className].filter(Boolean).join(' ')\n const contentClasses = ['hero-content', contentClassName].filter(Boolean).join(' ')\n const overlayClasses = ['hero-overlay', overlayClassName].filter(Boolean).join(' ')\n\n return (\n <div className={classes} style={style} {...rest}>\n {overlay && <div className={overlayClasses} />}\n <div className={contentClasses}>\n {wrapperClassName ? <div className={wrapperClassName}>{children}</div> : children}\n </div>\n </div>\n )\n}\n"],"names":["Hero","children","overlay","overlayClassName","contentClassName","wrapperClassName","className","style","rest","classes","contentClasses","overlayClasses","jsx"],"mappings":";AAUO,SAASA,EAAK;AAAA,EACnB,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,kBAAAC,IAAmB;AAAA,EACnB,kBAAAC,IAAmB;AAAA,EACnB,kBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAU,CAAC,QAAQ,gBAAgBH,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GACtEI,IAAiB,CAAC,gBAAgBN,CAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC5EO,IAAiB,CAAC,gBAAgBR,CAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAElF,2BACG,OAAA,EAAI,WAAWM,GAAS,OAAAF,GAAe,GAAGC,GACxC,UAAA;AAAA,IAAAN,KAAW,gBAAAU,EAAC,OAAA,EAAI,WAAWD,EAAA,CAAgB;AAAA,IAC5C,gBAAAC,EAAC,OAAA,EAAI,WAAWF,GACb,UAAAL,IAAmB,gBAAAO,EAAC,OAAA,EAAI,WAAWP,GAAmB,UAAAJ,EAAA,CAAS,IAASA,EAAA,CAC3E;AAAA,EAAA,GACF;AAEJ;"}
package/dist/index36.js CHANGED
@@ -1,194 +1,125 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import b, { useId as O, useState as y, useRef as x, useCallback as B, useEffect as k, createContext as R, useContext as F } from "react";
3
- const A = R(void 0);
4
- function v() {
5
- const t = F(A);
6
- if (!t)
7
- throw new Error("Dropdown compound components must be used within Dropdown");
8
- return t;
9
- }
10
- function M({
11
- children: t,
12
- hover: i = !1,
13
- position: u = "bottom",
14
- align: o = "start",
15
- className: c = "",
16
- ...d
17
- }) {
18
- const n = O(), s = O(), [a, l] = y(!1), [r, I] = y(-1), [m, C] = y(0), e = x(/* @__PURE__ */ new Map()), f = x(null), w = B((D, h, j) => {
19
- h ? e.current.set(D, { ref: h, disabled: j }) : e.current.delete(D);
20
- }, []);
21
- k(() => {
22
- const D = (h) => {
23
- f.current && !f.current.contains(h.target) && (l(!1), I(-1));
24
- };
25
- if (a)
26
- return document.addEventListener("mousedown", D), () => document.removeEventListener("mousedown", D);
27
- }, [a]);
28
- const g = {
29
- top: "dropdown-top",
30
- bottom: "dropdown-bottom",
31
- left: "dropdown-left",
32
- right: "dropdown-right"
33
- }, K = {
34
- start: "",
35
- center: "dropdown-center",
36
- end: "dropdown-end"
37
- }, N = [
38
- "dropdown",
39
- g[u],
40
- K[o],
41
- i && "dropdown-hover",
42
- a && "dropdown-open",
43
- c
1
+ import { jsxs as u, Fragment as M, jsx as e } from "react/jsx-runtime";
2
+ import { useState as a, useEffect as P } from "react";
3
+ const I = ({
4
+ src: s,
5
+ alt: f = "",
6
+ fallback: i,
7
+ placeholder: h,
8
+ preview: p = !0,
9
+ width: n,
10
+ height: o,
11
+ className: g = "",
12
+ onLoad: k,
13
+ onError: y,
14
+ ...C
15
+ }) => {
16
+ const [r, l] = a(!0), [c, m] = a(!1), [L, b] = a(!1), [N, v] = a(s);
17
+ P(() => {
18
+ l(!0), m(!1), v(s);
19
+ }, [s]);
20
+ const j = () => {
21
+ l(!1), m(!1), k?.();
22
+ }, w = () => {
23
+ l(!1), m(!0), i && v(i), y?.();
24
+ }, S = () => {
25
+ p && !c && !r && b(!0);
26
+ }, x = () => {
27
+ b(!1);
28
+ }, d = () => {
29
+ const t = {};
30
+ return n && (t.width = typeof n == "number" ? `${n}px` : n), o && (t.height = typeof o == "number" ? `${o}px` : o), t;
31
+ }, E = [
32
+ g,
33
+ p && !c && !r ? "cursor-pointer hover:opacity-80 transition-opacity" : ""
44
34
  ].filter(Boolean).join(" ");
45
- return /* @__PURE__ */ p(
46
- A.Provider,
47
- {
48
- value: {
49
- position: u,
50
- align: o,
51
- menuId: n,
52
- triggerId: s,
53
- isOpen: a,
54
- setIsOpen: l,
55
- focusedIndex: r,
56
- setFocusedIndex: I,
57
- registerItem: w,
58
- itemCount: m,
59
- setItemCount: C
60
- },
61
- children: /* @__PURE__ */ p("div", { ref: f, className: N, "data-state": a ? "open" : "closed", ...d, children: t })
62
- }
63
- );
64
- }
65
- function T({ children: t, className: i = "" }) {
66
- const { menuId: u, triggerId: o, isOpen: c, setIsOpen: d, setFocusedIndex: n, itemCount: s } = v(), a = (r) => {
67
- switch (r.key) {
68
- case "Enter":
69
- case " ":
70
- case "ArrowDown":
71
- r.preventDefault(), d(!0), n(0);
72
- break;
73
- case "ArrowUp":
74
- r.preventDefault(), d(!0), n(s - 1);
75
- break;
76
- case "Escape":
77
- r.preventDefault(), d(!1), n(-1);
78
- break;
79
- }
80
- }, l = () => {
81
- d(!c), c || n(0);
82
- };
83
- return /* @__PURE__ */ p(
84
- "button",
85
- {
86
- id: o,
87
- type: "button",
88
- tabIndex: 0,
89
- className: `btn ${i}`,
90
- "aria-haspopup": "menu",
91
- "aria-expanded": c,
92
- "aria-controls": u,
93
- onClick: l,
94
- onKeyDown: a,
95
- children: t
96
- }
97
- );
98
- }
99
- function V({ children: t, className: i = "" }) {
100
- const { menuId: u, triggerId: o, isOpen: c, setIsOpen: d, focusedIndex: n, setFocusedIndex: s, setItemCount: a } = v(), l = x(null), r = b.Children.toArray(t).filter(
101
- (e) => b.isValidElement(e) && e.type === E
102
- );
103
- k(() => {
104
- a(r.length);
105
- }, [r.length, a]), k(() => {
106
- c && n >= 0 && l.current && l.current.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')[n]?.focus();
107
- }, [c, n]);
108
- const I = (e) => {
109
- const w = r.filter(
110
- (g) => b.isValidElement(g) && !g.props.disabled
111
- ).length;
112
- switch (e.key) {
113
- case "ArrowDown":
114
- e.preventDefault(), s((n + 1) % w);
115
- break;
116
- case "ArrowUp":
117
- e.preventDefault(), s((n - 1 + w) % w);
118
- break;
119
- case "Home":
120
- e.preventDefault(), s(0);
121
- break;
122
- case "End":
123
- e.preventDefault(), s(w - 1);
124
- break;
125
- case "Escape":
126
- e.preventDefault(), d(!1), s(-1), document.getElementById(o)?.focus();
127
- break;
128
- case "Tab":
129
- d(!1), s(-1);
130
- break;
131
- }
132
- }, m = [
133
- "dropdown-content",
134
- "menu",
135
- "bg-base-100",
136
- "rounded-box",
137
- "z-[1]",
138
- "shadow",
139
- i
140
- ].filter(Boolean).join(" "), C = b.Children.map(t, (e, f) => b.isValidElement(e) && e.type === E ? b.cloneElement(e, { _index: f }) : e);
141
- return /* @__PURE__ */ p(
142
- "ul",
143
- {
144
- ref: l,
145
- id: u,
146
- role: "menu",
147
- "aria-labelledby": o,
148
- tabIndex: -1,
149
- className: m,
150
- onKeyDown: I,
151
- children: C
152
- }
153
- );
154
- }
155
- function E({
156
- children: t,
157
- onClick: i,
158
- active: u = !1,
159
- disabled: o = !1,
160
- danger: c = !1,
161
- className: d = ""
162
- }) {
163
- const { setIsOpen: n, setFocusedIndex: s, triggerId: a } = v(), l = [u && "active", o && "disabled", d].filter(Boolean).join(" "), r = () => {
164
- o || (i?.(), n(!1), s(-1), document.getElementById(a)?.focus());
165
- };
166
- return /* @__PURE__ */ p("li", { className: l, role: "none", children: /* @__PURE__ */ p(
167
- "a",
168
- {
169
- role: "menuitem",
170
- tabIndex: o ? -1 : 0,
171
- "aria-disabled": o || void 0,
172
- className: c ? "text-error" : "",
173
- onClick: r,
174
- onKeyDown: (m) => {
175
- (m.key === "Enter" || m.key === " ") && !o && (m.preventDefault(), r());
176
- },
177
- children: t
178
- }
179
- ) });
180
- }
181
- function L({ className: t = "" }) {
182
- const i = ["border-base-content/10", t].filter(Boolean).join(" ");
183
- return /* @__PURE__ */ p("li", { role: "separator", className: "my-1", children: /* @__PURE__ */ p("hr", { className: i }) });
184
- }
185
- const q = Object.assign(M, {
186
- Trigger: T,
187
- Menu: V,
188
- Item: E,
189
- Divider: L
190
- });
35
+ return /* @__PURE__ */ u(M, { children: [
36
+ /* @__PURE__ */ u("div", { className: "relative inline-block", style: d(), children: [
37
+ r && h && /* @__PURE__ */ e("div", { className: "absolute inset-0 flex items-center justify-center bg-base-200", children: h }),
38
+ /* @__PURE__ */ e(
39
+ "img",
40
+ {
41
+ ...C,
42
+ src: N,
43
+ alt: f,
44
+ className: E,
45
+ style: { ...d(), display: r ? "none" : "block" },
46
+ onLoad: j,
47
+ onError: w,
48
+ onClick: S
49
+ }
50
+ ),
51
+ c && !i && /* @__PURE__ */ e(
52
+ "div",
53
+ {
54
+ className: "flex items-center justify-center bg-base-200 text-base-content/50",
55
+ style: d(),
56
+ children: /* @__PURE__ */ e(
57
+ "svg",
58
+ {
59
+ className: "w-12 h-12",
60
+ fill: "none",
61
+ stroke: "currentColor",
62
+ viewBox: "0 0 24 24",
63
+ children: /* @__PURE__ */ e(
64
+ "path",
65
+ {
66
+ strokeLinecap: "round",
67
+ strokeLinejoin: "round",
68
+ strokeWidth: 2,
69
+ d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"
70
+ }
71
+ )
72
+ }
73
+ )
74
+ }
75
+ )
76
+ ] }),
77
+ L && /* @__PURE__ */ e(
78
+ "div",
79
+ {
80
+ className: "fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-4",
81
+ onClick: x,
82
+ children: /* @__PURE__ */ u("div", { className: "relative max-w-full max-h-full", children: [
83
+ /* @__PURE__ */ e(
84
+ "button",
85
+ {
86
+ className: "absolute top-4 right-4 btn btn-circle btn-sm",
87
+ onClick: x,
88
+ children: /* @__PURE__ */ e(
89
+ "svg",
90
+ {
91
+ className: "w-6 h-6",
92
+ fill: "none",
93
+ stroke: "currentColor",
94
+ viewBox: "0 0 24 24",
95
+ children: /* @__PURE__ */ e(
96
+ "path",
97
+ {
98
+ strokeLinecap: "round",
99
+ strokeLinejoin: "round",
100
+ strokeWidth: 2,
101
+ d: "M6 18L18 6M6 6l12 12"
102
+ }
103
+ )
104
+ }
105
+ )
106
+ }
107
+ ),
108
+ /* @__PURE__ */ e(
109
+ "img",
110
+ {
111
+ src: s,
112
+ alt: f,
113
+ className: "max-w-full max-h-[90vh] object-contain",
114
+ onClick: (t) => t.stopPropagation()
115
+ }
116
+ )
117
+ ] })
118
+ }
119
+ )
120
+ ] });
121
+ };
191
122
  export {
192
- q as Dropdown
123
+ I as Image
193
124
  };
194
125
  //# sourceMappingURL=index36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index36.js","sources":["../src/components/Dropdown.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useRef, useState, useCallback, useEffect } from 'react'\n\ninterface DropdownContextValue {\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n menuId: string\n triggerId: string\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n focusedIndex: number\n setFocusedIndex: (index: number) => void\n registerItem: (index: number, ref: HTMLElement | null, disabled: boolean) => void\n itemCount: number\n setItemCount: (count: number) => void\n}\n\nconst DropdownContext = createContext<DropdownContextValue | undefined>(undefined)\n\nfunction useDropdownContext() {\n const context = useContext(DropdownContext)\n if (!context) {\n throw new Error('Dropdown compound components must be used within Dropdown')\n }\n return context\n}\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n hover?: boolean\n position?: 'top' | 'bottom' | 'left' | 'right'\n align?: 'start' | 'center' | 'end'\n}\n\nexport interface DropdownTriggerProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownMenuProps {\n children: React.ReactNode\n className?: string\n}\n\nexport interface DropdownItemProps {\n children: React.ReactNode\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n danger?: boolean\n className?: string\n _index?: number // Internal prop passed by DropdownMenu\n}\n\nexport interface DropdownDividerProps {\n className?: string\n}\n\nfunction DropdownRoot({\n children,\n hover = false,\n position = 'bottom',\n align = 'start',\n className = '',\n ...rest\n}: DropdownProps) {\n const menuId = useId()\n const triggerId = useId()\n const [isOpen, setIsOpen] = useState(false)\n const [focusedIndex, setFocusedIndex] = useState(-1)\n const [itemCount, setItemCount] = useState(0)\n const itemRefs = useRef<Map<number, { ref: HTMLElement | null; disabled: boolean }>>(new Map())\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n const registerItem = useCallback((index: number, ref: HTMLElement | null, disabled: boolean) => {\n if (ref) {\n itemRefs.current.set(index, { ref, disabled })\n } else {\n itemRefs.current.delete(index)\n }\n }, [])\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n setFocusedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const positionClasses: Record<string, string> = {\n top: 'dropdown-top',\n bottom: 'dropdown-bottom',\n left: 'dropdown-left',\n right: 'dropdown-right',\n }\n\n const alignClasses: Record<string, string> = {\n start: '',\n center: 'dropdown-center',\n end: 'dropdown-end',\n }\n\n const dropdownClasses = [\n 'dropdown',\n positionClasses[position],\n alignClasses[align],\n hover && 'dropdown-hover',\n isOpen && 'dropdown-open',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <DropdownContext.Provider\n value={{\n position,\n align,\n menuId,\n triggerId,\n isOpen,\n setIsOpen,\n focusedIndex,\n setFocusedIndex,\n registerItem,\n itemCount,\n setItemCount,\n }}\n >\n <div ref={dropdownRef} className={dropdownClasses} data-state={isOpen ? 'open' : 'closed'} {...rest}>{children}</div>\n </DropdownContext.Provider>\n )\n}\n\nfunction DropdownTrigger({ children, className = '' }: DropdownTriggerProps) {\n const { menuId, triggerId, isOpen, setIsOpen, setFocusedIndex, itemCount } = useDropdownContext()\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(0)\n break\n case 'ArrowUp':\n event.preventDefault()\n setIsOpen(true)\n setFocusedIndex(itemCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const handleClick = () => {\n setIsOpen(!isOpen)\n if (!isOpen) {\n setFocusedIndex(0)\n }\n }\n\n return (\n <button\n id={triggerId}\n type=\"button\"\n tabIndex={0}\n className={`btn ${className}`}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={menuId}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </button>\n )\n}\n\nfunction DropdownMenu({ children, className = '' }: DropdownMenuProps) {\n const { menuId, triggerId, isOpen, setIsOpen, focusedIndex, setFocusedIndex, setItemCount } = useDropdownContext()\n const menuRef = useRef<HTMLUListElement>(null)\n\n // Count children and set item count\n const childArray = React.Children.toArray(children).filter(\n (child) => React.isValidElement(child) && (child.type === DropdownItem)\n )\n\n useEffect(() => {\n setItemCount(childArray.length)\n }, [childArray.length, setItemCount])\n\n // Focus management\n useEffect(() => {\n if (isOpen && focusedIndex >= 0 && menuRef.current) {\n const items = menuRef.current.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])')\n const item = items[focusedIndex] as HTMLElement\n item?.focus()\n }\n }, [isOpen, focusedIndex])\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const enabledItems = childArray.filter(\n (child) => React.isValidElement(child) && !(child.props as DropdownItemProps).disabled\n )\n const enabledCount = enabledItems.length\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n setFocusedIndex((focusedIndex + 1) % enabledCount)\n break\n case 'ArrowUp':\n event.preventDefault()\n setFocusedIndex((focusedIndex - 1 + enabledCount) % enabledCount)\n break\n case 'Home':\n event.preventDefault()\n setFocusedIndex(0)\n break\n case 'End':\n event.preventDefault()\n setFocusedIndex(enabledCount - 1)\n break\n case 'Escape':\n event.preventDefault()\n setIsOpen(false)\n setFocusedIndex(-1)\n // Return focus to trigger\n document.getElementById(triggerId)?.focus()\n break\n case 'Tab':\n setIsOpen(false)\n setFocusedIndex(-1)\n break\n }\n }\n\n const menuClasses = [\n 'dropdown-content',\n 'menu',\n 'bg-base-100',\n 'rounded-box',\n 'z-[1]',\n 'shadow',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n // Clone children to pass index\n const childrenWithIndex = React.Children.map(children, (child, index) => {\n if (React.isValidElement(child) && child.type === DropdownItem) {\n return React.cloneElement(child as React.ReactElement<any>, { _index: index })\n }\n return child\n })\n\n return (\n <ul\n ref={menuRef}\n id={menuId}\n role=\"menu\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={menuClasses}\n onKeyDown={handleKeyDown}\n >\n {childrenWithIndex}\n </ul>\n )\n}\n\nfunction DropdownItem({\n children,\n onClick,\n active = false,\n disabled = false,\n danger = false,\n className = '',\n}: DropdownItemProps) {\n const { setIsOpen, setFocusedIndex, triggerId } = useDropdownContext()\n const itemClasses = [active && 'active', disabled && 'disabled', className].filter(Boolean).join(' ')\n\n const handleClick = () => {\n if (!disabled) {\n onClick?.()\n setIsOpen(false)\n setFocusedIndex(-1)\n document.getElementById(triggerId)?.focus()\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if ((event.key === 'Enter' || event.key === ' ') && !disabled) {\n event.preventDefault()\n handleClick()\n }\n }\n\n return (\n <li className={itemClasses} role=\"none\">\n <a\n role=\"menuitem\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n className={danger ? 'text-error' : ''}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </a>\n </li>\n )\n}\n\nfunction DropdownDivider({ className = '' }: DropdownDividerProps) {\n const classes = ['border-base-content/10', className].filter(Boolean).join(' ')\n return (\n <li role=\"separator\" className=\"my-1\">\n <hr className={classes} />\n </li>\n )\n}\n\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Menu: DropdownMenu,\n Item: DropdownItem,\n Divider: DropdownDivider,\n})\n"],"names":["DropdownContext","createContext","useDropdownContext","context","useContext","DropdownRoot","children","hover","position","align","className","rest","menuId","useId","triggerId","isOpen","setIsOpen","useState","focusedIndex","setFocusedIndex","itemCount","setItemCount","itemRefs","useRef","dropdownRef","registerItem","useCallback","index","ref","disabled","useEffect","handleClickOutside","event","positionClasses","alignClasses","dropdownClasses","jsx","DropdownTrigger","handleKeyDown","handleClick","DropdownMenu","menuRef","childArray","React","child","DropdownItem","enabledCount","menuClasses","childrenWithIndex","onClick","active","danger","itemClasses","DropdownDivider","classes","Dropdown"],"mappings":"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"}
1
+ {"version":3,"file":"index36.js","sources":["../src/components/Image.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react'\n\nexport interface ImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {\n src: string\n alt?: string\n fallback?: string\n placeholder?: React.ReactNode\n preview?: boolean\n width?: string | number\n height?: string | number\n className?: string\n onLoad?: () => void\n onError?: () => void\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = '',\n fallback,\n placeholder,\n preview = true,\n width,\n height,\n className = '',\n onLoad,\n onError,\n ...props\n}) => {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [showPreview, setShowPreview] = useState(false)\n const [currentSrc, setCurrentSrc] = useState(src)\n\n useEffect(() => {\n setLoading(true)\n setError(false)\n setCurrentSrc(src)\n }, [src])\n\n const handleLoad = () => {\n setLoading(false)\n setError(false)\n onLoad?.()\n }\n\n const handleError = () => {\n setLoading(false)\n setError(true)\n if (fallback) {\n setCurrentSrc(fallback)\n }\n onError?.()\n }\n\n const handleImageClick = () => {\n if (preview && !error && !loading) {\n setShowPreview(true)\n }\n }\n\n const handleClosePreview = () => {\n setShowPreview(false)\n }\n\n const getStyle = (): React.CSSProperties => {\n const style: React.CSSProperties = {}\n if (width) {\n style.width = typeof width === 'number' ? `${width}px` : width\n }\n if (height) {\n style.height = typeof height === 'number' ? `${height}px` : height\n }\n return style\n }\n\n const imageClasses = [\n className,\n preview && !error && !loading ? 'cursor-pointer hover:opacity-80 transition-opacity' : '',\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <>\n <div className=\"relative inline-block\" style={getStyle()}>\n {loading && placeholder && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-base-200\">\n {placeholder}\n </div>\n )}\n <img\n {...props}\n src={currentSrc}\n alt={alt}\n className={imageClasses}\n style={{ ...getStyle(), display: loading ? 'none' : 'block' }}\n onLoad={handleLoad}\n onError={handleError}\n onClick={handleImageClick}\n />\n {error && !fallback && (\n <div\n className=\"flex items-center justify-center bg-base-200 text-base-content/50\"\n style={getStyle()}\n >\n <svg\n className=\"w-12 h-12\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n\n {showPreview && (\n <div\n className=\"fixed inset-0 z-50 bg-black bg-opacity-80 flex items-center justify-center p-4\"\n onClick={handleClosePreview}\n >\n <div className=\"relative max-w-full max-h-full\">\n <button\n className=\"absolute top-4 right-4 btn btn-circle btn-sm\"\n onClick={handleClosePreview}\n >\n <svg\n className=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n <img\n src={src}\n alt={alt}\n className=\"max-w-full max-h-[90vh] object-contain\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n </div>\n )}\n </>\n )\n}\n"],"names":["Image","src","alt","fallback","placeholder","preview","width","height","className","onLoad","onError","props","loading","setLoading","useState","error","setError","showPreview","setShowPreview","currentSrc","setCurrentSrc","useEffect","handleLoad","handleError","handleImageClick","handleClosePreview","getStyle","style","imageClasses","jsxs","Fragment","jsx","e"],"mappings":"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"}