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":"index32.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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"}
1
+ {"version":3,"file":"index32.js","sources":["../src/components/Footer.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n center?: boolean\n horizontal?: boolean\n vertical?: boolean\n}\n\nexport interface FooterTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n children: React.ReactNode\n}\n\nfunction FooterRoot({ children, className = '', center = false, horizontal = false, vertical = false, ...rest }: FooterProps) {\n const classes = [\n 'footer',\n center && 'footer-center',\n horizontal && 'footer-horizontal',\n vertical && 'footer-vertical',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <footer className={classes} {...rest}>{children}</footer>\n}\n\nfunction FooterTitle({ children, className = '', ...rest }: FooterTitleProps) {\n return <h6 className={`footer-title ${className}`} {...rest}>{children}</h6>\n}\n\nexport const Footer = Object.assign(FooterRoot, {\n Title: FooterTitle,\n})\n"],"names":["FooterRoot","children","className","center","horizontal","vertical","rest","classes","FooterTitle","jsx","Footer"],"mappings":";AAaA,SAASA,EAAW,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,QAAAC,IAAS,IAAO,YAAAC,IAAa,IAAO,UAAAC,IAAW,IAAO,GAAGC,KAAqB;AAC5H,QAAMC,IAAU;AAAA,IACd;AAAA,IACAJ,KAAU;AAAA,IACVC,KAAc;AAAA,IACdC,KAAY;AAAA,IACZH;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,UAAA,EAAO,WAAWK,GAAU,GAAGD,GAAO,UAAAL,GAAS;AACzD;AAEA,SAASO,EAAY,EAAE,UAAAP,GAAU,WAAAC,IAAY,IAAI,GAAGI,KAA0B;AAC5E,SAAO,gBAAAG,EAAC,QAAG,WAAW,gBAAgBP,CAAS,IAAK,GAAGI,GAAO,UAAAL,GAAS;AACzE;AAEO,MAAMS,IAAS,OAAO,OAAOV,GAAY;AAAA,EAC9C,OAAOQ;AACT,CAAC;"}
package/dist/index33.js CHANGED
@@ -1,21 +1,223 @@
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
1
+ import { jsx as t, jsxs as L } from "react/jsx-runtime";
2
+ import { createContext as ae, useId as J, useEffect as H, useRef as K, isValidElement as U, cloneElement as ie, useContext as le } from "react";
3
+ import { useForm as Y, useFieldArray as ce, useWatch as ue, Controller as me } from "react-hook-form";
4
+ const P = ae(void 0), M = {
5
+ email: {
6
+ value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
7
+ message: "Please enter a valid email address"
8
+ },
9
+ url: {
10
+ value: /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/,
11
+ message: "Please enter a valid URL"
12
+ },
13
+ number: {
14
+ value: /^-?\d+(\.\d+)?$/,
15
+ message: "Please enter a valid number"
16
+ }
17
+ };
18
+ function z() {
19
+ const r = le(P);
20
+ if (!r)
21
+ throw new Error("Form compound components must be used within Form");
22
+ return r;
23
+ }
24
+ function de({
25
+ form: r,
26
+ onFinish: o,
27
+ initialValues: s,
28
+ layout: u = "vertical",
29
+ labelWidth: m = 60,
30
+ size: y,
31
+ children: h,
32
+ className: l = "",
33
+ noValidate: i = !0,
34
+ ...g
35
+ }) {
36
+ const p = Y({
37
+ defaultValues: s
38
+ }), v = r || p, c = ($) => {
39
+ $.preventDefault(), o && v.handleSubmit(o)($);
40
+ };
41
+ return /* @__PURE__ */ t(P.Provider, { value: { form: v, layout: u, labelWidth: m, size: y }, children: /* @__PURE__ */ t("form", { onSubmit: c, className: l, noValidate: i, ...g, children: h }) });
42
+ }
43
+ function fe({
44
+ name: r,
45
+ label: o,
46
+ help: s,
47
+ required: u = !1,
48
+ rules: m,
49
+ valuePropName: y = "value",
50
+ inline: h = !1,
51
+ className: l = "",
52
+ children: i,
53
+ tooltip: g,
54
+ extra: p,
55
+ hasFeedback: v = !1,
56
+ dependencies: c,
57
+ validateTrigger: $ = "onChange",
58
+ initialValue: B,
59
+ hidden: S = !1
11
60
  }) {
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 })
16
- ] });
61
+ const { form: d, size: R, listName: q, layout: W, labelWidth: G } = z(), T = J(), C = J();
62
+ if (!r)
63
+ return /* @__PURE__ */ t("div", { className: `form-control ${h ? "w-auto" : "w-full"} ${l}`, style: S ? { display: "none" } : void 0, children: i });
64
+ let f;
65
+ Array.isArray(r) ? f = (q ? [q, ...r] : r).join(".") : f = r, H(() => {
66
+ B !== void 0 && d.getValues(f) === void 0 && d.setValue(f, B);
67
+ }, []);
68
+ const j = ue({
69
+ control: d.control,
70
+ name: c,
71
+ disabled: !c || c.length === 0
72
+ }), Z = K(d);
73
+ Z.current = d;
74
+ const E = K(void 0);
75
+ H(() => {
76
+ if (!c || c.length === 0) return;
77
+ if (E.current === void 0) {
78
+ E.current = JSON.stringify(j);
79
+ return;
80
+ }
81
+ const e = JSON.stringify(j);
82
+ E.current !== e && (E.current = e, Z.current.trigger(f));
83
+ }, [j, c, f]);
84
+ const w = ((e) => {
85
+ const n = e.split(".");
86
+ let a = d.formState.errors;
87
+ for (const V of n) {
88
+ if (!a) break;
89
+ a = a[V];
90
+ }
91
+ return a;
92
+ })(f), N = w?.message, Q = m ? Array.isArray(m) ? m : [m] : [], k = {}, A = [], I = [];
93
+ u && (k.required = "This field is required");
94
+ for (const e of Q) {
95
+ if (e.required && (k.required = typeof e.required == "string" ? e.required : e.message || "This field is required"), e.type && M[e.type] && A.push({
96
+ pattern: M[e.type].value,
97
+ message: e.message || M[e.type].message
98
+ }), e.min !== void 0) {
99
+ const n = typeof e.min == "object" ? e.min.value : e.min, a = typeof e.min == "object" ? e.min.message : e.message || `Minimum length is ${n} characters`;
100
+ k.minLength = { value: n, message: a };
101
+ }
102
+ if (e.max !== void 0) {
103
+ const n = typeof e.max == "object" ? e.max.value : e.max, a = typeof e.max == "object" ? e.max.message : e.message || `Maximum length is ${n} characters`;
104
+ k.maxLength = { value: n, message: a };
105
+ }
106
+ if (e.pattern) {
107
+ const n = e.pattern instanceof RegExp ? e.pattern : e.pattern.value, a = e.pattern instanceof RegExp ? e.message || "Invalid format" : e.pattern.message;
108
+ A.push({ pattern: n, message: a });
109
+ }
110
+ e.validate && I.push(e.validate);
111
+ }
112
+ (A.length > 0 || I.length > 0) && (k.validate = async (e) => {
113
+ if (!e && !k.required) return !0;
114
+ for (const { pattern: n, message: a } of A)
115
+ if (e && !n.test(e))
116
+ return a;
117
+ for (const n of I) {
118
+ const a = await n(e);
119
+ if (a !== !0)
120
+ return a;
121
+ }
122
+ return !0;
123
+ });
124
+ const D = Array.isArray($) ? $ : [$], O = D.includes("onChange"), X = D.includes("onBlur"), ee = ({ hasError: e, isValidating: n }) => n ? /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-xs text-base-content/50" }) : e ? /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-error", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) : /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-success", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }), te = () => /* @__PURE__ */ t("div", { className: "tooltip tooltip-top ml-1", "data-tip": g, children: /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-base-content/50 cursor-help", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) });
125
+ return /* @__PURE__ */ t(
126
+ me,
127
+ {
128
+ name: f,
129
+ control: d.control,
130
+ rules: k,
131
+ render: ({ field: e, fieldState: n }) => {
132
+ const { value: a, onChange: V, onBlur: re, ref: se } = e, oe = n.isTouched && d.formState.isValidating, x = {
133
+ id: T,
134
+ ref: se,
135
+ "aria-invalid": w ? !0 : void 0,
136
+ "aria-describedby": w ? C : void 0
137
+ };
138
+ x.onBlur = () => {
139
+ re(), X && d.trigger(f);
140
+ }, y === "checked" ? (x.checked = a, x.onChange = (F) => {
141
+ V(F.target.checked), O && d.trigger(f);
142
+ }) : (x.value = a || "", x.onChange = (F) => {
143
+ F && F.target !== void 0 ? V(F.target.value) : V(F), O && d.trigger(f);
144
+ }), R && U(i) && (i.props.size || (x.size = R)), w && (x.color = "error", x["aria-invalid"] = !0);
145
+ const ne = U(i) ? ie(i, x) : i, b = W === "horizontal", _ = W === "inline";
146
+ return /* @__PURE__ */ L("div", { className: `form-control ${h ? "w-auto" : "w-full"} ${b ? "mb-4" : ""} ${_ ? "inline-flex mr-4" : ""} ${l}`, style: S ? { display: "none" } : void 0, children: [
147
+ /* @__PURE__ */ L("div", { className: b ? "flex items-center gap-4" : "", children: [
148
+ o && /* @__PURE__ */ t(
149
+ "label",
150
+ {
151
+ htmlFor: T,
152
+ className: `label ${b ? "flex-shrink-0 justify-end py-0" : ""} ${!b && !_ ? "pb-1" : ""}`,
153
+ style: b ? { width: G } : void 0,
154
+ children: /* @__PURE__ */ L("span", { className: "label-text flex items-center", children: [
155
+ o,
156
+ u && /* @__PURE__ */ t("span", { className: "text-error ml-1", children: "*" }),
157
+ g && /* @__PURE__ */ t(te, {})
158
+ ] })
159
+ }
160
+ ),
161
+ /* @__PURE__ */ L("div", { className: `${b ? "flex-1" : ""} ${v ? "relative" : ""}`, children: [
162
+ ne,
163
+ v && n.isTouched && /* @__PURE__ */ t("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none", children: /* @__PURE__ */ t(ee, { hasError: !!w, isValidating: oe }) })
164
+ ] })
165
+ ] }),
166
+ !b && !h && /* @__PURE__ */ t("p", { id: C, className: `validator-hint ${N ? "!visible text-error" : ""} min-h-[1.25rem]`, role: N ? "alert" : void 0, children: N || s && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: s }) || " " }),
167
+ b && (N || s) && /* @__PURE__ */ t("p", { id: C, className: `validator-hint ${N ? "!visible text-error" : ""} min-h-[1.25rem]`, role: N ? "alert" : void 0, children: N || s && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: s }) }),
168
+ p && /* @__PURE__ */ t("div", { className: "text-sm text-base-content/60 mt-1", children: p })
169
+ ] });
170
+ }
171
+ }
172
+ );
173
+ }
174
+ function he({
175
+ name: r,
176
+ children: o
177
+ }) {
178
+ const { form: s, layout: u, size: m } = z(), { fields: y, append: h, remove: l, move: i } = ce({
179
+ control: s.control,
180
+ name: r
181
+ }), g = y.map((p, v) => ({
182
+ ...p,
183
+ name: v
184
+ }));
185
+ return /* @__PURE__ */ t(P.Provider, { value: { form: s, layout: u, size: m, listName: r }, children: o(g, {
186
+ add: h,
187
+ remove: l,
188
+ move: i
189
+ }) });
190
+ }
191
+ function ge() {
192
+ const r = Y(), o = r;
193
+ return o.setFieldValue = r.setValue, o.getFieldValue = (s) => r.getValues(s), o.getFieldsValue = r.getValues, o.setFieldsValue = (s) => {
194
+ Object.keys(s).forEach((u) => {
195
+ r.setValue(u, s[u]);
196
+ });
197
+ }, o.validateFields = r.trigger, o.resetFields = r.reset, o.isFieldTouched = (s) => !!r.formState.touchedFields[s], o.getFieldError = (s) => r.formState.errors[s]?.message, o;
198
+ }
199
+ function pe({ fields: r, className: o = "" }) {
200
+ const { form: s } = z(), { errors: u } = s.formState, m = (l, i = "") => {
201
+ const g = [];
202
+ for (const p in l) {
203
+ const v = i ? `${i}.${p}` : p, c = l[p];
204
+ c?.message ? g.push({ field: v, message: c.message }) : typeof c == "object" && c !== null && g.push(...m(c, v));
205
+ }
206
+ return g;
207
+ }, y = m(u), h = r ? y.filter((l) => r.includes(l.field)) : y;
208
+ return h.length === 0 ? null : /* @__PURE__ */ t("ul", { className: `text-error text-sm space-y-1 ${o}`, role: "alert", children: h.map((l, i) => /* @__PURE__ */ L("li", { className: "flex items-start gap-2", children: [
209
+ /* @__PURE__ */ t("svg", { className: "w-4 h-4 mt-0.5 flex-shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
210
+ /* @__PURE__ */ t("span", { children: l.message })
211
+ ] }, `${l.field}-${i}`)) });
17
212
  }
213
+ const Ne = Object.assign(de, {
214
+ Item: fe,
215
+ List: he,
216
+ ErrorList: pe,
217
+ useForm: ge
218
+ });
18
219
  export {
19
- h as Hero
220
+ Ne as Form,
221
+ ge as useFormInstance
20
222
  };
21
223
  //# sourceMappingURL=index33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index33.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;"}
1
+ {"version":3,"file":"index33.js","sources":["../src/components/Form.tsx"],"sourcesContent":["import React, { createContext, useContext, cloneElement, isValidElement, useId, useEffect, useRef } from 'react'\nimport { useForm, UseFormReturn, FieldValues, SubmitHandler, UseFormProps, Controller, useFieldArray, FieldArrayPath, FieldArray, useWatch } from 'react-hook-form'\n\ninterface FormContextValue {\n form: UseFormReturn<any>\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n labelWidth?: number\n listName?: string\n}\n\nconst FormContext = createContext<FormContextValue | undefined>(undefined)\n\n// Built-in type validators\nconst TYPE_VALIDATORS = {\n email: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Please enter a valid email address',\n },\n url: {\n value: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/,\n message: 'Please enter a valid URL',\n },\n number: {\n value: /^-?\\d+(\\.\\d+)?$/,\n message: 'Please enter a valid number',\n },\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n form?: UseFormReturn<TFieldValues>\n onFinish?: SubmitHandler<TFieldValues>\n initialValues?: UseFormProps<TFieldValues>['defaultValues']\n layout?: 'vertical' | 'horizontal' | 'inline'\n /** Label width in pixels for horizontal layout (default: 80) */\n labelWidth?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n children: React.ReactNode\n}\n\nexport interface FormRule {\n required?: boolean | string\n type?: 'email' | 'url' | 'number'\n min?: number | { value: number; message: string }\n max?: number | { value: number; message: string }\n pattern?: RegExp | { value: RegExp; message: string }\n message?: string\n validate?: (value: any) => boolean | string | Promise<boolean | string>\n}\n\nexport type ValidateTrigger = 'onChange' | 'onBlur' | 'onSubmit' | ('onChange' | 'onBlur' | 'onSubmit')[]\n\nexport interface FormItemProps {\n name?: string | string[]\n label?: string\n help?: string\n required?: boolean\n rules?: FormRule | FormRule[]\n valuePropName?: string\n inline?: boolean\n className?: string\n children: React.ReactElement\n /** Tooltip text to show next to label */\n tooltip?: string\n /** Additional content below the form control */\n extra?: React.ReactNode\n /** Show validation feedback icon */\n hasFeedback?: boolean\n /** Field names that this field depends on for validation */\n dependencies?: string[]\n /** When to trigger validation */\n validateTrigger?: ValidateTrigger\n /** Initial value for this field (overrides Form's initialValues) */\n initialValue?: any\n /** Hide this field (still validates and submits) */\n hidden?: boolean\n}\n\nexport interface FormListProps<TFieldValues extends FieldValues = FieldValues> {\n name: FieldArrayPath<TFieldValues>\n children: (\n fields: FieldArray<TFieldValues>[],\n operations: {\n add: (value?: any) => void\n remove: (index: number) => void\n move: (from: number, to: number) => void\n }\n ) => React.ReactNode\n}\n\nfunction useFormContext() {\n const context = useContext(FormContext)\n if (!context) {\n throw new Error('Form compound components must be used within Form')\n }\n return context\n}\n\nfunction FormRoot<TFieldValues extends FieldValues = FieldValues>({\n form: externalForm,\n onFinish,\n initialValues,\n layout = 'vertical',\n labelWidth = 60,\n size,\n children,\n className = '',\n noValidate = true,\n ...props\n}: FormProps<TFieldValues>) {\n const internalForm = useForm<TFieldValues>({\n defaultValues: initialValues,\n })\n\n const form = externalForm || internalForm\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (onFinish) {\n form.handleSubmit(onFinish)(e)\n }\n }\n\n return (\n <FormContext.Provider value={{ form, layout, labelWidth, size }}>\n <form onSubmit={handleSubmit} className={className} noValidate={noValidate} {...props}>\n {children}\n </form>\n </FormContext.Provider>\n )\n}\n\nfunction FormItem({\n name,\n label,\n help,\n required = false,\n rules,\n valuePropName = 'value',\n inline = false,\n className = '',\n children,\n tooltip,\n extra,\n hasFeedback = false,\n dependencies,\n validateTrigger = 'onChange',\n initialValue,\n hidden = false,\n}: FormItemProps) {\n const { form, size, listName, layout, labelWidth } = useFormContext()\n const inputId = useId()\n const errorId = useId()\n\n if (!name) {\n // Render without form control if no name provided\n return <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`} style={hidden ? { display: 'none' } : undefined}>{children}</div>\n }\n\n // Handle nested field names (for Form.List)\n let fieldName: string\n if (Array.isArray(name)) {\n // If we're inside a Form.List, prepend the list name\n const fullPath = listName ? [listName, ...name] : name\n fieldName = fullPath.join('.')\n } else {\n fieldName = name\n }\n\n // Set initial value if provided\n useEffect(() => {\n if (initialValue !== undefined) {\n const currentValue = form.getValues(fieldName as any)\n if (currentValue === undefined) {\n form.setValue(fieldName as any, initialValue)\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Watch dependencies and re-validate when they change\n const watchedDeps = useWatch({\n control: form.control,\n name: dependencies as any,\n disabled: !dependencies || dependencies.length === 0,\n })\n\n // Use refs to avoid infinite loops\n const formRef = useRef(form)\n formRef.current = form\n const prevDepsRef = useRef<string | undefined>(undefined)\n\n useEffect(() => {\n // Skip if no dependencies\n if (!dependencies || dependencies.length === 0) return\n\n // Skip initial render\n if (prevDepsRef.current === undefined) {\n prevDepsRef.current = JSON.stringify(watchedDeps)\n return\n }\n\n // Only trigger if dependency values actually changed\n const currentDeps = JSON.stringify(watchedDeps)\n if (prevDepsRef.current !== currentDeps) {\n prevDepsRef.current = currentDeps\n formRef.current.trigger(fieldName as any)\n }\n }, [watchedDeps, dependencies, fieldName])\n\n // Get error by traversing the error object path\n const getErrorByPath = (path: string) => {\n const keys = path.split('.')\n let error: any = form.formState.errors\n for (const key of keys) {\n if (!error) break\n error = error[key]\n }\n return error\n }\n\n const error = getErrorByPath(fieldName)\n const errorMessage = error?.message as string | undefined\n\n // Normalize rules to array\n const rulesArray: FormRule[] = rules\n ? Array.isArray(rules) ? rules : [rules]\n : []\n\n // Build validation rules\n const validationRules: any = {}\n const patternValidators: Array<{ pattern: RegExp; message: string }> = []\n const customValidators: Array<(value: any) => boolean | string | Promise<boolean | string>> = []\n\n // Handle top-level required prop\n if (required) {\n validationRules.required = 'This field is required'\n }\n\n // Process each rule\n for (const rule of rulesArray) {\n // Required\n if (rule.required) {\n validationRules.required = typeof rule.required === 'string'\n ? rule.required\n : rule.message || 'This field is required'\n }\n\n // Type validator\n if (rule.type && TYPE_VALIDATORS[rule.type]) {\n patternValidators.push({\n pattern: TYPE_VALIDATORS[rule.type].value,\n message: rule.message || TYPE_VALIDATORS[rule.type].message,\n })\n }\n\n // Min length\n if (rule.min !== undefined) {\n const minValue = typeof rule.min === 'object' ? rule.min.value : rule.min\n const minMessage = typeof rule.min === 'object'\n ? rule.min.message\n : rule.message || `Minimum length is ${minValue} characters`\n validationRules.minLength = { value: minValue, message: minMessage }\n }\n\n // Max length\n if (rule.max !== undefined) {\n const maxValue = typeof rule.max === 'object' ? rule.max.value : rule.max\n const maxMessage = typeof rule.max === 'object'\n ? rule.max.message\n : rule.message || `Maximum length is ${maxValue} characters`\n validationRules.maxLength = { value: maxValue, message: maxMessage }\n }\n\n // Pattern - collect all patterns\n if (rule.pattern) {\n const patternValue = rule.pattern instanceof RegExp ? rule.pattern : rule.pattern.value\n const patternMessage = rule.pattern instanceof RegExp\n ? rule.message || 'Invalid format'\n : rule.pattern.message\n patternValidators.push({ pattern: patternValue, message: patternMessage })\n }\n\n // Custom validator\n if (rule.validate) {\n customValidators.push(rule.validate)\n }\n }\n\n // Combine all pattern and custom validators into a single validate function\n if (patternValidators.length > 0 || customValidators.length > 0) {\n validationRules.validate = async (value: any) => {\n // Skip validation if empty (required rule handles that)\n if (!value && !validationRules.required) return true\n\n // Check all patterns\n for (const { pattern, message } of patternValidators) {\n if (value && !pattern.test(value)) {\n return message\n }\n }\n\n // Run all custom validators\n for (const validator of customValidators) {\n const result = await validator(value)\n if (result !== true) {\n return result\n }\n }\n\n return true\n }\n }\n\n // Normalize validateTrigger to array\n const triggers = Array.isArray(validateTrigger) ? validateTrigger : [validateTrigger]\n const shouldValidateOnChange = triggers.includes('onChange')\n const shouldValidateOnBlur = triggers.includes('onBlur')\n\n // Feedback icons\n const FeedbackIcon = ({ hasError, isValidating }: { hasError: boolean; isValidating: boolean }) => {\n if (isValidating) {\n return (\n <span className=\"loading loading-spinner loading-xs text-base-content/50\" />\n )\n }\n if (hasError) {\n return (\n <svg className=\"w-4 h-4 text-error\" 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 )\n }\n return (\n <svg className=\"w-4 h-4 text-success\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n }\n\n // Tooltip icon\n const TooltipIcon = () => (\n <div className=\"tooltip tooltip-top ml-1\" data-tip={tooltip}>\n <svg className=\"w-4 h-4 text-base-content/50 cursor-help\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n </div>\n )\n\n return (\n <Controller\n name={fieldName}\n control={form.control}\n rules={validationRules}\n render={({ field, fieldState }) => {\n const { value, onChange, onBlur, ref } = field\n const isValidating = fieldState.isTouched && form.formState.isValidating\n\n // Clone the child element and inject form control props\n const childProps: any = {\n id: inputId,\n ref,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': error ? errorId : undefined,\n }\n\n // Handle onBlur based on validateTrigger\n childProps.onBlur = () => {\n onBlur()\n if (shouldValidateOnBlur) {\n form.trigger(fieldName as any)\n }\n }\n\n // Handle different value prop names (e.g., 'checked' for checkboxes)\n if (valuePropName === 'checked') {\n childProps.checked = value\n childProps.onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.checked)\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n } else {\n childProps.value = value || ''\n childProps.onChange = (eventOrValue: any) => {\n // Handle components that pass value directly (e.g., Range, Rating)\n // vs components that pass event object (e.g., Input, Select)\n if (eventOrValue && eventOrValue.target !== undefined) {\n onChange(eventOrValue.target.value)\n } else {\n onChange(eventOrValue)\n }\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n }\n\n // Apply size if specified at form level\n if (size && isValidElement(children)) {\n const existingProps = children.props as any\n if (!existingProps.size) {\n childProps.size = size\n }\n }\n\n // Apply error styling and accessibility\n if (error) {\n childProps.color = 'error'\n childProps['aria-invalid'] = true\n }\n\n const enhancedChild = isValidElement(children)\n ? cloneElement(children as React.ReactElement<any>, childProps)\n : children\n\n const isHorizontal = layout === 'horizontal'\n const isInline = layout === 'inline'\n\n return (\n <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${isHorizontal ? 'mb-4' : ''} ${isInline ? 'inline-flex mr-4' : ''} ${className}`} style={hidden ? { display: 'none' } : undefined}>\n <div className={isHorizontal ? 'flex items-center gap-4' : ''}>\n {label && (\n <label\n htmlFor={inputId}\n className={`label ${isHorizontal ? 'flex-shrink-0 justify-end py-0' : ''} ${!isHorizontal && !isInline ? 'pb-1' : ''}`}\n style={isHorizontal ? { width: labelWidth } : undefined}\n >\n <span className=\"label-text flex items-center\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n {tooltip && <TooltipIcon />}\n </span>\n </label>\n )}\n <div className={`${isHorizontal ? 'flex-1' : ''} ${hasFeedback ? 'relative' : ''}`}>\n {enhancedChild}\n {hasFeedback && fieldState.isTouched && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none\">\n <FeedbackIcon hasError={!!error} isValidating={isValidating} />\n </span>\n )}\n </div>\n </div>\n {!isHorizontal && !inline && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>) || '\\u00A0'}\n </p>\n )}\n {isHorizontal && (errorMessage || help) && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>)}\n </p>\n )}\n {extra && (\n <div className=\"text-sm text-base-content/60 mt-1\">{extra}</div>\n )}\n </div>\n )\n }}\n />\n )\n}\n\nfunction FormList<TFieldValues extends FieldValues = FieldValues>({\n name,\n children,\n}: FormListProps<TFieldValues>) {\n const { form, layout, size } = useFormContext()\n\n const { fields, append, remove, move } = useFieldArray({\n control: form.control,\n name,\n })\n\n // Add name (index) to each field for proper path construction\n const fieldsWithName = fields.map((field, index) => ({\n ...field,\n name: index,\n }))\n\n return (\n <FormContext.Provider value={{ form, layout, size, listName: name as string }}>\n {children(fieldsWithName as any, {\n add: append,\n remove,\n move,\n })}\n </FormContext.Provider>\n )\n}\n\n// Enhanced hook to expose full form API\nexport function useFormInstance<TFieldValues extends FieldValues = FieldValues>() {\n const formInstance = useForm<TFieldValues>()\n\n // Add convenience methods to the instance\n const enhancedInstance = formInstance as typeof formInstance & {\n setFieldValue: typeof formInstance.setValue\n getFieldValue: (name: any) => any\n getFieldsValue: typeof formInstance.getValues\n setFieldsValue: (values: any) => void\n validateFields: typeof formInstance.trigger\n resetFields: typeof formInstance.reset\n isFieldTouched: (name: string) => boolean\n getFieldError: (name: string) => string | undefined\n }\n\n // Add the alias methods\n enhancedInstance.setFieldValue = formInstance.setValue\n enhancedInstance.getFieldValue = (name: any) => formInstance.getValues(name)\n enhancedInstance.getFieldsValue = formInstance.getValues\n enhancedInstance.setFieldsValue = (values: any) => {\n Object.keys(values).forEach((key) => {\n formInstance.setValue(key as any, values[key])\n })\n }\n enhancedInstance.validateFields = formInstance.trigger\n enhancedInstance.resetFields = formInstance.reset\n enhancedInstance.isFieldTouched = (name: string) => {\n const touched = formInstance.formState.touchedFields as any\n return !!touched[name]\n }\n enhancedInstance.getFieldError = (name: string) => {\n const errors = formInstance.formState.errors as any\n return errors[name]?.message as string | undefined\n }\n\n return enhancedInstance\n}\n\nexport interface FormErrorListProps {\n /** Specific field names to show errors for (shows all errors if not specified) */\n fields?: string[]\n /** Custom className */\n className?: string\n}\n\nfunction FormErrorList({ fields, className = '' }: FormErrorListProps) {\n const { form } = useFormContext()\n const { errors } = form.formState\n\n // Flatten nested errors into a list\n const flattenErrors = (obj: any, prefix = ''): Array<{ field: string; message: string }> => {\n const result: Array<{ field: string; message: string }> = []\n\n for (const key in obj) {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value?.message) {\n result.push({ field: fullKey, message: value.message as string })\n } else if (typeof value === 'object' && value !== null) {\n result.push(...flattenErrors(value, fullKey))\n }\n }\n\n return result\n }\n\n const allErrors = flattenErrors(errors)\n const filteredErrors = fields\n ? allErrors.filter(e => fields.includes(e.field))\n : allErrors\n\n if (filteredErrors.length === 0) {\n return null\n }\n\n return (\n <ul className={`text-error text-sm space-y-1 ${className}`} role=\"alert\">\n {filteredErrors.map((error, index) => (\n <li key={`${error.field}-${index}`} className=\"flex items-start gap-2\">\n <svg className=\"w-4 h-4 mt-0.5 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <span>{error.message}</span>\n </li>\n ))}\n </ul>\n )\n}\n\nexport const Form = Object.assign(FormRoot, {\n Item: FormItem,\n List: FormList,\n ErrorList: FormErrorList,\n useForm: useFormInstance,\n})\n\nexport type { UseFormReturn as FormInstance }\n"],"names":["FormContext","createContext","TYPE_VALIDATORS","useFormContext","context","useContext","FormRoot","externalForm","onFinish","initialValues","layout","labelWidth","size","children","className","noValidate","props","internalForm","useForm","form","handleSubmit","e","jsx","FormItem","name","label","help","required","rules","valuePropName","inline","tooltip","extra","hasFeedback","dependencies","validateTrigger","initialValue","hidden","listName","inputId","useId","errorId","fieldName","useEffect","watchedDeps","useWatch","formRef","useRef","prevDepsRef","currentDeps","error","path","keys","key","errorMessage","rulesArray","validationRules","patternValidators","customValidators","rule","minValue","minMessage","maxValue","maxMessage","patternValue","patternMessage","value","pattern","message","validator","result","triggers","shouldValidateOnChange","shouldValidateOnBlur","FeedbackIcon","hasError","isValidating","TooltipIcon","Controller","field","fieldState","onChange","onBlur","ref","childProps","eventOrValue","isValidElement","enhancedChild","cloneElement","isHorizontal","isInline","jsxs","FormList","fields","append","remove","move","useFieldArray","fieldsWithName","index","useFormInstance","formInstance","enhancedInstance","values","FormErrorList","errors","flattenErrors","obj","prefix","fullKey","allErrors","filteredErrors","Form"],"mappings":";;;AAWA,MAAMA,IAAcC,GAA4C,MAAS,GAGnEC,IAAkB;AAAA,EACtB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,KAAK;AAAA,IACH,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAAA,EAEX,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAEb;AAgEA,SAASC,IAAiB;AACxB,QAAMC,IAAUC,GAAWL,CAAW;AACtC,MAAI,CAACI;AACH,UAAM,IAAI,MAAM,mDAAmD;AAErE,SAAOA;AACT;AAEA,SAASE,GAAyD;AAAA,EAChE,MAAMC;AAAA,EACN,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,YAAAC,IAAa;AAAA,EACb,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC,IAAa;AAAA,EACb,GAAGC;AACL,GAA4B;AAC1B,QAAMC,IAAeC,EAAsB;AAAA,IACzC,eAAeT;AAAA,EAAA,CAChB,GAEKU,IAAOZ,KAAgBU,GAEvBG,IAAe,CAACC,MAAwC;AAC5D,IAAAA,EAAE,eAAA,GACEb,KACFW,EAAK,aAAaX,CAAQ,EAAEa,CAAC;AAAA,EAEjC;AAEA,SACE,gBAAAC,EAACtB,EAAY,UAAZ,EAAqB,OAAO,EAAE,MAAAmB,GAAM,QAAAT,GAAQ,YAAAC,GAAY,MAAAC,KACvD,UAAA,gBAAAU,EAAC,QAAA,EAAK,UAAUF,GAAc,WAAAN,GAAsB,YAAAC,GAAyB,GAAGC,GAC7E,UAAAH,GACH,GACF;AAEJ;AAEA,SAASU,GAAS;AAAA,EAChB,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,QAAAC,IAAS;AAAA,EACT,WAAAhB,IAAY;AAAA,EACZ,UAAAD;AAAA,EACA,SAAAkB;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,cAAAC;AAAA,EACA,QAAAC,IAAS;AACX,GAAkB;AAChB,QAAM,EAAE,MAAAlB,GAAM,MAAAP,GAAM,UAAA0B,GAAU,QAAA5B,GAAQ,YAAAC,EAAA,IAAeR,EAAA,GAC/CoC,IAAUC,EAAA,GACVC,IAAUD,EAAA;AAEhB,MAAI,CAAChB;AAEH,6BAAQ,OAAA,EAAI,WAAW,gBAAgBM,IAAS,WAAW,QAAQ,IAAIhB,CAAS,IAAI,OAAOuB,IAAS,EAAE,SAAS,OAAA,IAAW,QAAY,UAAAxB,GAAS;AAIjJ,MAAI6B;AACJ,EAAI,MAAM,QAAQlB,CAAI,IAGpBkB,KADiBJ,IAAW,CAACA,GAAU,GAAGd,CAAI,IAAIA,GAC7B,KAAK,GAAG,IAE7BkB,IAAYlB,GAIdmB,EAAU,MAAM;AACd,IAAIP,MAAiB,UACEjB,EAAK,UAAUuB,CAAgB,MAC/B,UACnBvB,EAAK,SAASuB,GAAkBN,CAAY;AAAA,EAGlD,GAAG,CAAA,CAAE;AAGL,QAAMQ,IAAcC,GAAS;AAAA,IAC3B,SAAS1B,EAAK;AAAA,IACd,MAAMe;AAAA,IACN,UAAU,CAACA,KAAgBA,EAAa,WAAW;AAAA,EAAA,CACpD,GAGKY,IAAUC,EAAO5B,CAAI;AAC3B,EAAA2B,EAAQ,UAAU3B;AAClB,QAAM6B,IAAcD,EAA2B,MAAS;AAExD,EAAAJ,EAAU,MAAM;AAEd,QAAI,CAACT,KAAgBA,EAAa,WAAW,EAAG;AAGhD,QAAIc,EAAY,YAAY,QAAW;AACrC,MAAAA,EAAY,UAAU,KAAK,UAAUJ,CAAW;AAChD;AAAA,IACF;AAGA,UAAMK,IAAc,KAAK,UAAUL,CAAW;AAC9C,IAAII,EAAY,YAAYC,MAC1BD,EAAY,UAAUC,GACtBH,EAAQ,QAAQ,QAAQJ,CAAgB;AAAA,EAE5C,GAAG,CAACE,GAAaV,GAAcQ,CAAS,CAAC;AAazC,QAAMQ,KAViB,CAACC,MAAiB;AACvC,UAAMC,IAAOD,EAAK,MAAM,GAAG;AAC3B,QAAID,IAAa/B,EAAK,UAAU;AAChC,eAAWkC,KAAOD,GAAM;AACtB,UAAI,CAACF,EAAO;AACZA,MAAAA,IAAQA,EAAMG,CAAG;AAAA,IACnB;AACA,WAAOH;AAAAA,EACT,GAE6BR,CAAS,GAChCY,IAAeJ,GAAO,SAGtBK,IAAyB3B,IAC3B,MAAM,QAAQA,CAAK,IAAIA,IAAQ,CAACA,CAAK,IACrC,CAAA,GAGE4B,IAAuB,CAAA,GACvBC,IAAiE,CAAA,GACjEC,IAAwF,CAAA;AAG9F,EAAI/B,MACF6B,EAAgB,WAAW;AAI7B,aAAWG,KAAQJ,GAAY;AAiB7B,QAfII,EAAK,aACPH,EAAgB,WAAW,OAAOG,EAAK,YAAa,WAChDA,EAAK,WACLA,EAAK,WAAW,2BAIlBA,EAAK,QAAQzD,EAAgByD,EAAK,IAAI,KACxCF,EAAkB,KAAK;AAAA,MACrB,SAASvD,EAAgByD,EAAK,IAAI,EAAE;AAAA,MACpC,SAASA,EAAK,WAAWzD,EAAgByD,EAAK,IAAI,EAAE;AAAA,IAAA,CACrD,GAICA,EAAK,QAAQ,QAAW;AAC1B,YAAMC,IAAW,OAAOD,EAAK,OAAQ,WAAWA,EAAK,IAAI,QAAQA,EAAK,KAChEE,IAAa,OAAOF,EAAK,OAAQ,WACnCA,EAAK,IAAI,UACTA,EAAK,WAAW,qBAAqBC,CAAQ;AACjD,MAAAJ,EAAgB,YAAY,EAAE,OAAOI,GAAU,SAASC,EAAA;AAAA,IAC1D;AAGA,QAAIF,EAAK,QAAQ,QAAW;AAC1B,YAAMG,IAAW,OAAOH,EAAK,OAAQ,WAAWA,EAAK,IAAI,QAAQA,EAAK,KAChEI,IAAa,OAAOJ,EAAK,OAAQ,WACnCA,EAAK,IAAI,UACTA,EAAK,WAAW,qBAAqBG,CAAQ;AACjD,MAAAN,EAAgB,YAAY,EAAE,OAAOM,GAAU,SAASC,EAAA;AAAA,IAC1D;AAGA,QAAIJ,EAAK,SAAS;AAChB,YAAMK,IAAeL,EAAK,mBAAmB,SAASA,EAAK,UAAUA,EAAK,QAAQ,OAC5EM,IAAiBN,EAAK,mBAAmB,SAC3CA,EAAK,WAAW,mBAChBA,EAAK,QAAQ;AACjB,MAAAF,EAAkB,KAAK,EAAE,SAASO,GAAc,SAASC,GAAgB;AAAA,IAC3E;AAGA,IAAIN,EAAK,YACPD,EAAiB,KAAKC,EAAK,QAAQ;AAAA,EAEvC;AAGA,GAAIF,EAAkB,SAAS,KAAKC,EAAiB,SAAS,OAC5DF,EAAgB,WAAW,OAAOU,MAAe;AAE/C,QAAI,CAACA,KAAS,CAACV,EAAgB,SAAU,QAAO;AAGhD,eAAW,EAAE,SAAAW,GAAS,SAAAC,EAAA,KAAaX;AACjC,UAAIS,KAAS,CAACC,EAAQ,KAAKD,CAAK;AAC9B,eAAOE;AAKX,eAAWC,KAAaX,GAAkB;AACxC,YAAMY,IAAS,MAAMD,EAAUH,CAAK;AACpC,UAAII,MAAW;AACb,eAAOA;AAAA,IAEX;AAEA,WAAO;AAAA,EACT;AAIF,QAAMC,IAAW,MAAM,QAAQpC,CAAe,IAAIA,IAAkB,CAACA,CAAe,GAC9EqC,IAAyBD,EAAS,SAAS,UAAU,GACrDE,IAAuBF,EAAS,SAAS,QAAQ,GAGjDG,KAAe,CAAC,EAAE,UAAAC,GAAU,cAAAC,QAC5BA,IAEA,gBAAAtD,EAAC,QAAA,EAAK,WAAU,0DAAA,CAA0D,IAG1EqD,IAEA,gBAAArD,EAAC,SAAI,WAAU,sBAAqB,MAAK,QAAO,SAAQ,aAAY,QAAO,gBACzE,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,wBAAuB,EAAA,CAC9F,IAIF,gBAAAA,EAAC,SAAI,WAAU,wBAAuB,MAAK,QAAO,SAAQ,aAAY,QAAO,gBAC3E,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,kBAAiB,EAAA,CACxF,GAKEuD,KAAc,MAClB,gBAAAvD,EAAC,OAAA,EAAI,WAAU,4BAA2B,YAAUS,GAClD,UAAA,gBAAAT,EAAC,OAAA,EAAI,WAAU,4CAA2C,MAAK,QAAO,SAAQ,aAAY,QAAO,gBAC/F,UAAA,gBAAAA,EAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,4DAAA,CAA4D,GACnI,GACF;AAGF,SACE,gBAAAA;AAAA,IAACwD;AAAA,IAAA;AAAA,MACC,MAAMpC;AAAA,MACN,SAASvB,EAAK;AAAA,MACd,OAAOqC;AAAA,MACP,QAAQ,CAAC,EAAE,OAAAuB,GAAO,YAAAC,QAAiB;AACjC,cAAM,EAAE,OAAAd,GAAO,UAAAe,GAAU,QAAAC,IAAQ,KAAAC,OAAQJ,GACnCH,KAAeI,EAAW,aAAa7D,EAAK,UAAU,cAGtDiE,IAAkB;AAAA,UACtB,IAAI7C;AAAA,UACJ,KAAA4C;AAAA,UACA,gBAAgBjC,IAAQ,KAAO;AAAA,UAC/B,oBAAoBA,IAAQT,IAAU;AAAA,QAAA;AAIxC,QAAA2C,EAAW,SAAS,MAAM;AACxB,UAAAF,GAAA,GACIT,KACFtD,EAAK,QAAQuB,CAAgB;AAAA,QAEjC,GAGIb,MAAkB,aACpBuD,EAAW,UAAUlB,GACrBkB,EAAW,WAAW,CAAC/D,MAA2C;AAChE,UAAA4D,EAAS5D,EAAE,OAAO,OAAO,GACrBmD,KACFrD,EAAK,QAAQuB,CAAgB;AAAA,QAEjC,MAEA0C,EAAW,QAAQlB,KAAS,IAC5BkB,EAAW,WAAW,CAACC,MAAsB;AAG3C,UAAIA,KAAgBA,EAAa,WAAW,SAC1CJ,EAASI,EAAa,OAAO,KAAK,IAElCJ,EAASI,CAAY,GAEnBb,KACFrD,EAAK,QAAQuB,CAAgB;AAAA,QAEjC,IAIE9B,KAAQ0E,EAAezE,CAAQ,MACXA,EAAS,MACZ,SACjBuE,EAAW,OAAOxE,KAKlBsC,MACFkC,EAAW,QAAQ,SACnBA,EAAW,cAAc,IAAI;AAG/B,cAAMG,KAAgBD,EAAezE,CAAQ,IACzC2E,GAAa3E,GAAqCuE,CAAU,IAC5DvE,GAEE4E,IAAe/E,MAAW,cAC1BgF,IAAWhF,MAAW;AAE5B,eACE,gBAAAiF,EAAC,OAAA,EAAI,WAAW,gBAAgB7D,IAAS,WAAW,QAAQ,IAAI2D,IAAe,SAAS,EAAE,IAAIC,IAAW,qBAAqB,EAAE,IAAI5E,CAAS,IAAI,OAAOuB,IAAS,EAAE,SAAS,WAAW,QACrL,UAAA;AAAA,UAAA,gBAAAsD,EAAC,OAAA,EAAI,WAAWF,IAAe,4BAA4B,IACxD,UAAA;AAAA,YAAAhE,KACC,gBAAAH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAASiB;AAAA,gBACT,WAAW,SAASkD,IAAe,mCAAmC,EAAE,IAAI,CAACA,KAAgB,CAACC,IAAW,SAAS,EAAE;AAAA,gBACpH,OAAOD,IAAe,EAAE,OAAO9E,MAAe;AAAA,gBAE9C,UAAA,gBAAAgF,EAAC,QAAA,EAAK,WAAU,gCACb,UAAA;AAAA,kBAAAlE;AAAA,kBACAE,KAAY,gBAAAL,EAAC,QAAA,EAAK,WAAU,mBAAkB,UAAA,KAAC;AAAA,kBAC/CS,uBAAY8C,IAAA,CAAA,CAAY;AAAA,gBAAA,EAAA,CAC3B;AAAA,cAAA;AAAA,YAAA;AAAA,YAGJ,gBAAAc,EAAC,OAAA,EAAI,WAAW,GAAGF,IAAe,WAAW,EAAE,IAAIxD,IAAc,aAAa,EAAE,IAC7E,UAAA;AAAA,cAAAsD;AAAA,cACAtD,KAAe+C,EAAW,aACzB,gBAAA1D,EAAC,UAAK,WAAU,iEACd,UAAA,gBAAAA,EAACoD,IAAA,EAAa,UAAU,CAAC,CAACxB,GAAO,cAAA0B,IAA4B,EAAA,CAC/D;AAAA,YAAA,EAAA,CAEJ;AAAA,UAAA,GACF;AAAA,UACC,CAACa,KAAgB,CAAC3D,KACjB,gBAAAR,EAAC,KAAA,EAAE,IAAImB,GAAS,WAAW,kBAAkBa,IAAe,wBAAwB,EAAE,oBAAoB,MAAMA,IAAe,UAAU,QACtI,UAAAA,KAAiB5B,KAAQ,gBAAAJ,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAI,EAAA,CAAK,KAAY,IAAA,CACrF;AAAA,UAED+D,MAAiBnC,KAAgB5B,MAChC,gBAAAJ,EAAC,KAAA,EAAE,IAAImB,GAAS,WAAW,kBAAkBa,IAAe,wBAAwB,EAAE,oBAAoB,MAAMA,IAAe,UAAU,QACtI,UAAAA,KAAiB5B,uBAAS,QAAA,EAAK,WAAU,wBAAwB,UAAAA,EAAA,CAAK,EAAA,CACzE;AAAA,UAEDM,KACC,gBAAAV,EAAC,OAAA,EAAI,WAAU,qCAAqC,UAAAU,EAAA,CAAM;AAAA,QAAA,GAE9D;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAAS4D,GAAyD;AAAA,EAChE,MAAApE;AAAA,EACA,UAAAX;AACF,GAAgC;AAC9B,QAAM,EAAE,MAAAM,GAAM,QAAAT,GAAQ,MAAAE,EAAA,IAAST,EAAA,GAEzB,EAAE,QAAA0F,GAAQ,QAAAC,GAAQ,QAAAC,GAAQ,MAAAC,EAAA,IAASC,GAAc;AAAA,IACrD,SAAS9E,EAAK;AAAA,IACd,MAAAK;AAAA,EAAA,CACD,GAGK0E,IAAiBL,EAAO,IAAI,CAACd,GAAOoB,OAAW;AAAA,IACnD,GAAGpB;AAAA,IACH,MAAMoB;AAAA,EAAA,EACN;AAEF,SACE,gBAAA7E,EAACtB,EAAY,UAAZ,EAAqB,OAAO,EAAE,MAAAmB,GAAM,QAAAT,GAAQ,MAAAE,GAAM,UAAUY,EAAA,GAC1D,YAAS0E,GAAuB;AAAA,IAC/B,KAAKJ;AAAA,IACL,QAAAC;AAAA,IACA,MAAAC;AAAA,EAAA,CACD,GACH;AAEJ;AAGO,SAASI,KAAkE;AAChF,QAAMC,IAAenF,EAAA,GAGfoF,IAAmBD;AAYzB,SAAAC,EAAiB,gBAAgBD,EAAa,UAC9CC,EAAiB,gBAAgB,CAAC9E,MAAc6E,EAAa,UAAU7E,CAAI,GAC3E8E,EAAiB,iBAAiBD,EAAa,WAC/CC,EAAiB,iBAAiB,CAACC,MAAgB;AACjD,WAAO,KAAKA,CAAM,EAAE,QAAQ,CAAClD,MAAQ;AACnC,MAAAgD,EAAa,SAAShD,GAAYkD,EAAOlD,CAAG,CAAC;AAAA,IAC/C,CAAC;AAAA,EACH,GACAiD,EAAiB,iBAAiBD,EAAa,SAC/CC,EAAiB,cAAcD,EAAa,OAC5CC,EAAiB,iBAAiB,CAAC9E,MAE1B,CAAC,CADQ6E,EAAa,UAAU,cACtB7E,CAAI,GAEvB8E,EAAiB,gBAAgB,CAAC9E,MACjB6E,EAAa,UAAU,OACxB7E,CAAI,GAAG,SAGhB8E;AACT;AASA,SAASE,GAAc,EAAE,QAAAX,GAAQ,WAAA/E,IAAY,MAA0B;AACrE,QAAM,EAAE,MAAAK,EAAA,IAAShB,EAAA,GACX,EAAE,QAAAsG,MAAWtF,EAAK,WAGlBuF,IAAgB,CAACC,GAAUC,IAAS,OAAkD;AAC1F,UAAMtC,IAAoD,CAAA;AAE1D,eAAWjB,KAAOsD,GAAK;AACrB,YAAME,IAAUD,IAAS,GAAGA,CAAM,IAAIvD,CAAG,KAAKA,GACxCa,IAAQyC,EAAItD,CAAG;AAErB,MAAIa,GAAO,UACTI,EAAO,KAAK,EAAE,OAAOuC,GAAS,SAAS3C,EAAM,SAAmB,IACvD,OAAOA,KAAU,YAAYA,MAAU,QAChDI,EAAO,KAAK,GAAGoC,EAAcxC,GAAO2C,CAAO,CAAC;AAAA,IAEhD;AAEA,WAAOvC;AAAA,EACT,GAEMwC,IAAYJ,EAAcD,CAAM,GAChCM,IAAiBlB,IACnBiB,EAAU,OAAO,CAAAzF,MAAKwE,EAAO,SAASxE,EAAE,KAAK,CAAC,IAC9CyF;AAEJ,SAAIC,EAAe,WAAW,IACrB,yBAIN,MAAA,EAAG,WAAW,gCAAgCjG,CAAS,IAAI,MAAK,SAC9D,UAAAiG,EAAe,IAAI,CAAC7D,GAAOiD,MAC1B,gBAAAR,EAAC,MAAA,EAAmC,WAAU,0BAC5C,UAAA;AAAA,IAAA,gBAAArE,EAAC,SAAI,WAAU,gCAA+B,MAAK,QAAO,SAAQ,aAAY,QAAO,gBACnF,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,qDAAoD,EAAA,CAC3H;AAAA,IACA,gBAAAA,EAAC,QAAA,EAAM,UAAA4B,EAAM,QAAA,CAAQ;AAAA,EAAA,KAJd,GAAGA,EAAM,KAAK,IAAIiD,CAAK,EAKhC,CACD,GACH;AAEJ;AAEO,MAAMa,KAAO,OAAO,OAAO1G,IAAU;AAAA,EAC1C,MAAMiB;AAAA,EACN,MAAMqE;AAAA,EACN,WAAWY;AAAA,EACX,SAASJ;AACX,CAAC;"}