@bloomneo/uikit 1.5.0

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 (678) hide show
  1. package/CHANGELOG.md +222 -0
  2. package/LICENSE +21 -0
  3. package/README.md +513 -0
  4. package/bin/commands/build.js +232 -0
  5. package/bin/commands/bundle.js +587 -0
  6. package/bin/commands/create.js +768 -0
  7. package/bin/commands/deploy.js +533 -0
  8. package/bin/commands/generate.js +673 -0
  9. package/bin/commands/optimize.js +198 -0
  10. package/bin/commands/prerender.js +306 -0
  11. package/bin/commands/serve.js +216 -0
  12. package/bin/templates/fbca/README.md.template +130 -0
  13. package/bin/templates/fbca/docs/QUICKSTART_FBCA.md +368 -0
  14. package/bin/templates/fbca/docs/UIKIT_CLI_GUIDE.md +574 -0
  15. package/bin/templates/fbca/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  16. package/bin/templates/fbca/docs/UIKIT_LLM_GUIDE.md +2055 -0
  17. package/bin/templates/fbca/docs/UIKIT_THEME_GUIDE.md +359 -0
  18. package/bin/templates/fbca/package.json.template +41 -0
  19. package/bin/templates/fbca/public/favicon.svg +10 -0
  20. package/bin/templates/fbca/public/hero_fbca.svg +1 -0
  21. package/bin/templates/fbca/src/utils/asset.ts +6 -0
  22. package/bin/templates/fbca/src/web/App.tsx.template +20 -0
  23. package/bin/templates/fbca/src/web/features/auth/pages/index.tsx.template +157 -0
  24. package/bin/templates/fbca/src/web/features/docs/pages/[...slug].tsx.template +83 -0
  25. package/bin/templates/fbca/src/web/features/gallery/hooks/useGallery.ts.template +74 -0
  26. package/bin/templates/fbca/src/web/features/gallery/pages/index.tsx.template +136 -0
  27. package/bin/templates/fbca/src/web/features/main/components/CTASection.tsx.template +43 -0
  28. package/bin/templates/fbca/src/web/features/main/pages/About.tsx.template +374 -0
  29. package/bin/templates/fbca/src/web/features/main/pages/index.tsx.template +214 -0
  30. package/bin/templates/fbca/src/web/index.html.template +15 -0
  31. package/bin/templates/fbca/src/web/lib/page-router.tsx.template +134 -0
  32. package/bin/templates/fbca/src/web/main.tsx.template +14 -0
  33. package/bin/templates/fbca/src/web/shared/components/Footer.tsx.template +57 -0
  34. package/bin/templates/fbca/src/web/shared/components/Header.tsx.template +91 -0
  35. package/bin/templates/fbca/src/web/shared/components/SEO.tsx.template +24 -0
  36. package/bin/templates/fbca/src/web/shared/components/index.ts.template +3 -0
  37. package/bin/templates/fbca/src/web/shared/hooks/useSEO.ts.template +85 -0
  38. package/bin/templates/fbca/src/web/shared/utils/asset.ts +6 -0
  39. package/bin/templates/fbca/src/web/styles/index.css.template +8 -0
  40. package/bin/templates/fbca/src/web/utils/asset.ts +6 -0
  41. package/bin/templates/fbca/tsconfig.json.template +32 -0
  42. package/bin/templates/fbca/tsconfig.node.json.template +10 -0
  43. package/bin/templates/fbca/vite.config.ts.template +38 -0
  44. package/bin/templates/generate/component/component.tsx.template +79 -0
  45. package/bin/templates/generate/component/index.ts.template +2 -0
  46. package/bin/templates/generate/component/types.ts.template +58 -0
  47. package/bin/templates/generate/feature/index.ts.template +14 -0
  48. package/bin/templates/generate/feature/list-page.tsx.template +34 -0
  49. package/bin/templates/generate/feature/main-component.tsx.template +37 -0
  50. package/bin/templates/generate/feature/main-page.tsx.template +30 -0
  51. package/bin/templates/generate/feature/types.ts.template +34 -0
  52. package/bin/templates/generate/hook/hook.ts.template +35 -0
  53. package/bin/templates/generate/index.css.template +10 -0
  54. package/bin/templates/generate/main.tsx.template +10 -0
  55. package/bin/templates/generate/page/index.ts.template +2 -0
  56. package/bin/templates/generate/page/page.tsx.template +86 -0
  57. package/bin/templates/generate/theme/README.md +31 -0
  58. package/bin/templates/generate/theme/theme.js.template +155 -0
  59. package/bin/templates/multi/README.md.template +120 -0
  60. package/bin/templates/multi/docs/QUICKSTART_MULTI.md +334 -0
  61. package/bin/templates/multi/docs/UIKIT_CLI_GUIDE.md +574 -0
  62. package/bin/templates/multi/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  63. package/bin/templates/multi/docs/UIKIT_LLM_GUIDE.md +2055 -0
  64. package/bin/templates/multi/docs/UIKIT_THEME_GUIDE.md +359 -0
  65. package/bin/templates/multi/index.html.template +58 -0
  66. package/bin/templates/multi/package.json.template +35 -0
  67. package/bin/templates/multi/public/favicon.svg +10 -0
  68. package/bin/templates/multi/public/hero_multi.svg +1 -0
  69. package/bin/templates/multi/src/App.tsx.template +92 -0
  70. package/bin/templates/multi/src/components/Footer.tsx.template +58 -0
  71. package/bin/templates/multi/src/components/Header.tsx.template +103 -0
  72. package/bin/templates/multi/src/components/SEO.tsx.template +19 -0
  73. package/bin/templates/multi/src/components/index.ts.template +3 -0
  74. package/bin/templates/multi/src/hooks/useSEO.ts.template +38 -0
  75. package/bin/templates/multi/src/index.css.template +7 -0
  76. package/bin/templates/multi/src/main.tsx.template +14 -0
  77. package/bin/templates/multi/src/pages/About.tsx.template +276 -0
  78. package/bin/templates/multi/src/pages/Components.tsx.template +288 -0
  79. package/bin/templates/multi/src/pages/Contact.tsx.template +348 -0
  80. package/bin/templates/multi/src/pages/Dashboard.tsx.template +306 -0
  81. package/bin/templates/multi/src/pages/ErrorPage.tsx.template +37 -0
  82. package/bin/templates/multi/src/pages/Home.tsx.template +201 -0
  83. package/bin/templates/multi/src/pages/Login.tsx.template +148 -0
  84. package/bin/templates/multi/src/pages/Themes.tsx.template +207 -0
  85. package/bin/templates/multi/src/router.tsx.template +34 -0
  86. package/bin/templates/multi/src/utils/asset.ts +6 -0
  87. package/bin/templates/multi/tsconfig.json.template +30 -0
  88. package/bin/templates/multi/tsconfig.node.json +22 -0
  89. package/bin/templates/multi/vite.config.ts.template +36 -0
  90. package/bin/templates/single/README.md.template +131 -0
  91. package/bin/templates/single/docs/QUICKSTART_SINGLE.md +259 -0
  92. package/bin/templates/single/docs/UIKIT_CLI_GUIDE.md +574 -0
  93. package/bin/templates/single/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  94. package/bin/templates/single/docs/UIKIT_LLM_GUIDE.md +2055 -0
  95. package/bin/templates/single/docs/UIKIT_THEME_GUIDE.md +359 -0
  96. package/bin/templates/single/index.html.template +37 -0
  97. package/bin/templates/single/package.json.template +34 -0
  98. package/bin/templates/single/public/favicon.svg +10 -0
  99. package/bin/templates/single/public/hero.svg +1 -0
  100. package/bin/templates/single/src/App.tsx.template +233 -0
  101. package/bin/templates/single/src/index.css.template +7 -0
  102. package/bin/templates/single/src/main.tsx.template +14 -0
  103. package/bin/templates/single/src/styles/fonts.css +99 -0
  104. package/bin/templates/single/src/utils/asset.ts +6 -0
  105. package/bin/templates/single/tsconfig.json +31 -0
  106. package/bin/templates/single/tsconfig.node.json +22 -0
  107. package/bin/templates/single/vite.config.ts.template +36 -0
  108. package/bin/templates/spa/README.md.template +105 -0
  109. package/bin/templates/spa/components/SEO.tsx.template +19 -0
  110. package/bin/templates/spa/docs/QUICKSTART_SPA.md +300 -0
  111. package/bin/templates/spa/docs/UIKIT_CLI_GUIDE.md +574 -0
  112. package/bin/templates/spa/docs/UIKIT_COMPOSITE_UI_SYSTEM.md +649 -0
  113. package/bin/templates/spa/docs/UIKIT_LLM_GUIDE.md +2055 -0
  114. package/bin/templates/spa/docs/UIKIT_THEME_GUIDE.md +359 -0
  115. package/bin/templates/spa/hooks/useSEO.ts.template +38 -0
  116. package/bin/templates/spa/index.html.template +58 -0
  117. package/bin/templates/spa/package.json.template +35 -0
  118. package/bin/templates/spa/public/favicon.svg +15 -0
  119. package/bin/templates/spa/public/hero_spa.svg +1 -0
  120. package/bin/templates/spa/src/App.tsx.template +659 -0
  121. package/bin/templates/spa/src/index.css.template +7 -0
  122. package/bin/templates/spa/src/main.tsx.template +14 -0
  123. package/bin/templates/spa/src/utils/asset.ts +6 -0
  124. package/bin/templates/spa/tsconfig.json.template +30 -0
  125. package/bin/templates/spa/tsconfig.node.json +22 -0
  126. package/bin/templates/spa/vite.config.ts.template +36 -0
  127. package/bin/uikit.js +133 -0
  128. package/cookbook/README.md +20 -0
  129. package/cookbook/crud-page.tsx +99 -0
  130. package/cookbook/dashboard.tsx +89 -0
  131. package/cookbook/delete-flow.tsx +59 -0
  132. package/cookbook/login.tsx +85 -0
  133. package/cookbook/settings.tsx +113 -0
  134. package/dist/Combination-C0DFrmJW.js +674 -0
  135. package/dist/Combination-C0DFrmJW.js.map +1 -0
  136. package/dist/accordion.js +284 -0
  137. package/dist/accordion.js.map +1 -0
  138. package/dist/admin.js +429 -0
  139. package/dist/admin.js.map +1 -0
  140. package/dist/alert.js +67 -0
  141. package/dist/alert.js.map +1 -0
  142. package/dist/auth.js +178 -0
  143. package/dist/auth.js.map +1 -0
  144. package/dist/avatar.js +249 -0
  145. package/dist/avatar.js.map +1 -0
  146. package/dist/badge.js +40 -0
  147. package/dist/badge.js.map +1 -0
  148. package/dist/blank.js +80 -0
  149. package/dist/blank.js.map +1 -0
  150. package/dist/breadcrumb.js +104 -0
  151. package/dist/breadcrumb.js.map +1 -0
  152. package/dist/button.js +50 -0
  153. package/dist/button.js.map +1 -0
  154. package/dist/calendar.js +2785 -0
  155. package/dist/calendar.js.map +1 -0
  156. package/dist/card.js +91 -0
  157. package/dist/card.js.map +1 -0
  158. package/dist/check-DXouwtzp.js +12 -0
  159. package/dist/check-DXouwtzp.js.map +1 -0
  160. package/dist/checkbox.js +268 -0
  161. package/dist/checkbox.js.map +1 -0
  162. package/dist/chevron-down-BORJtX8F.js +14 -0
  163. package/dist/chevron-down-BORJtX8F.js.map +1 -0
  164. package/dist/chevron-left-C1pkx4AF.js +14 -0
  165. package/dist/chevron-left-C1pkx4AF.js.map +1 -0
  166. package/dist/chevron-right-pz9eCjj-.js +14 -0
  167. package/dist/chevron-right-pz9eCjj-.js.map +1 -0
  168. package/dist/circle-DHOdTDQh.js +14 -0
  169. package/dist/circle-DHOdTDQh.js.map +1 -0
  170. package/dist/collapsible.js +35 -0
  171. package/dist/collapsible.js.map +1 -0
  172. package/dist/command.js +481 -0
  173. package/dist/command.js.map +1 -0
  174. package/dist/confirm-dialog.js +129 -0
  175. package/dist/confirm-dialog.js.map +1 -0
  176. package/dist/container.js +334 -0
  177. package/dist/container.js.map +1 -0
  178. package/dist/createLucideIcon-B45kRl5r.js +80 -0
  179. package/dist/createLucideIcon-B45kRl5r.js.map +1 -0
  180. package/dist/data-table.js +574 -0
  181. package/dist/data-table.js.map +1 -0
  182. package/dist/detail-page.js +454 -0
  183. package/dist/detail-page.js.map +1 -0
  184. package/dist/dialog.js +137 -0
  185. package/dist/dialog.js.map +1 -0
  186. package/dist/dropdown-menu.js +424 -0
  187. package/dist/dropdown-menu.js.map +1 -0
  188. package/dist/ellipsis-BhAoKPVk.js +16 -0
  189. package/dist/ellipsis-BhAoKPVk.js.map +1 -0
  190. package/dist/empty-state.js +54 -0
  191. package/dist/empty-state.js.map +1 -0
  192. package/dist/errors.js +36 -0
  193. package/dist/errors.js.map +1 -0
  194. package/dist/eye-DDKoW0KS.js +46 -0
  195. package/dist/eye-DDKoW0KS.js.map +1 -0
  196. package/dist/fonts/caveat-cyrillic-400-normal.woff +0 -0
  197. package/dist/fonts/caveat-cyrillic-400-normal.woff2 +0 -0
  198. package/dist/fonts/caveat-cyrillic-700-normal.woff +0 -0
  199. package/dist/fonts/caveat-cyrillic-700-normal.woff2 +0 -0
  200. package/dist/fonts/caveat-cyrillic-ext-400-normal.woff +0 -0
  201. package/dist/fonts/caveat-cyrillic-ext-400-normal.woff2 +0 -0
  202. package/dist/fonts/caveat-cyrillic-ext-700-normal.woff +0 -0
  203. package/dist/fonts/caveat-cyrillic-ext-700-normal.woff2 +0 -0
  204. package/dist/fonts/caveat-latin-400-normal.woff +0 -0
  205. package/dist/fonts/caveat-latin-400-normal.woff2 +0 -0
  206. package/dist/fonts/caveat-latin-700-normal.woff +0 -0
  207. package/dist/fonts/caveat-latin-700-normal.woff2 +0 -0
  208. package/dist/fonts/caveat-latin-ext-400-normal.woff +0 -0
  209. package/dist/fonts/caveat-latin-ext-400-normal.woff2 +0 -0
  210. package/dist/fonts/caveat-latin-ext-700-normal.woff +0 -0
  211. package/dist/fonts/caveat-latin-ext-700-normal.woff2 +0 -0
  212. package/dist/fonts/crimson-text-latin-400-normal.woff +0 -0
  213. package/dist/fonts/crimson-text-latin-400-normal.woff2 +0 -0
  214. package/dist/fonts/crimson-text-latin-600-normal.woff +0 -0
  215. package/dist/fonts/crimson-text-latin-600-normal.woff2 +0 -0
  216. package/dist/fonts/crimson-text-latin-700-normal.woff +0 -0
  217. package/dist/fonts/crimson-text-latin-700-normal.woff2 +0 -0
  218. package/dist/fonts/crimson-text-latin-ext-400-normal.woff +0 -0
  219. package/dist/fonts/crimson-text-latin-ext-400-normal.woff2 +0 -0
  220. package/dist/fonts/crimson-text-latin-ext-600-normal.woff +0 -0
  221. package/dist/fonts/crimson-text-latin-ext-600-normal.woff2 +0 -0
  222. package/dist/fonts/crimson-text-latin-ext-700-normal.woff +0 -0
  223. package/dist/fonts/crimson-text-latin-ext-700-normal.woff2 +0 -0
  224. package/dist/fonts/crimson-text-vietnamese-400-normal.woff +0 -0
  225. package/dist/fonts/crimson-text-vietnamese-400-normal.woff2 +0 -0
  226. package/dist/fonts/crimson-text-vietnamese-600-normal.woff +0 -0
  227. package/dist/fonts/crimson-text-vietnamese-600-normal.woff2 +0 -0
  228. package/dist/fonts/crimson-text-vietnamese-700-normal.woff +0 -0
  229. package/dist/fonts/crimson-text-vietnamese-700-normal.woff2 +0 -0
  230. package/dist/fonts/dm-serif-display-latin-400-normal.woff +0 -0
  231. package/dist/fonts/dm-serif-display-latin-400-normal.woff2 +0 -0
  232. package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff +0 -0
  233. package/dist/fonts/dm-serif-display-latin-ext-400-normal.woff2 +0 -0
  234. package/dist/fonts/libre-baskerville-latin-400-normal.woff +0 -0
  235. package/dist/fonts/libre-baskerville-latin-400-normal.woff2 +0 -0
  236. package/dist/fonts/libre-baskerville-latin-700-normal.woff +0 -0
  237. package/dist/fonts/libre-baskerville-latin-700-normal.woff2 +0 -0
  238. package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff +0 -0
  239. package/dist/fonts/libre-baskerville-latin-ext-400-normal.woff2 +0 -0
  240. package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff +0 -0
  241. package/dist/fonts/libre-baskerville-latin-ext-700-normal.woff2 +0 -0
  242. package/dist/fonts/montserrat-cyrillic-400-normal.woff +0 -0
  243. package/dist/fonts/montserrat-cyrillic-400-normal.woff2 +0 -0
  244. package/dist/fonts/montserrat-cyrillic-500-normal.woff +0 -0
  245. package/dist/fonts/montserrat-cyrillic-500-normal.woff2 +0 -0
  246. package/dist/fonts/montserrat-cyrillic-600-normal.woff +0 -0
  247. package/dist/fonts/montserrat-cyrillic-600-normal.woff2 +0 -0
  248. package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff +0 -0
  249. package/dist/fonts/montserrat-cyrillic-ext-400-normal.woff2 +0 -0
  250. package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff +0 -0
  251. package/dist/fonts/montserrat-cyrillic-ext-500-normal.woff2 +0 -0
  252. package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff +0 -0
  253. package/dist/fonts/montserrat-cyrillic-ext-600-normal.woff2 +0 -0
  254. package/dist/fonts/montserrat-latin-400-normal.woff +0 -0
  255. package/dist/fonts/montserrat-latin-400-normal.woff2 +0 -0
  256. package/dist/fonts/montserrat-latin-500-normal.woff +0 -0
  257. package/dist/fonts/montserrat-latin-500-normal.woff2 +0 -0
  258. package/dist/fonts/montserrat-latin-600-normal.woff +0 -0
  259. package/dist/fonts/montserrat-latin-600-normal.woff2 +0 -0
  260. package/dist/fonts/montserrat-latin-ext-400-normal.woff +0 -0
  261. package/dist/fonts/montserrat-latin-ext-400-normal.woff2 +0 -0
  262. package/dist/fonts/montserrat-latin-ext-500-normal.woff +0 -0
  263. package/dist/fonts/montserrat-latin-ext-500-normal.woff2 +0 -0
  264. package/dist/fonts/montserrat-latin-ext-600-normal.woff +0 -0
  265. package/dist/fonts/montserrat-latin-ext-600-normal.woff2 +0 -0
  266. package/dist/fonts/montserrat-vietnamese-400-normal.woff +0 -0
  267. package/dist/fonts/montserrat-vietnamese-400-normal.woff2 +0 -0
  268. package/dist/fonts/montserrat-vietnamese-500-normal.woff +0 -0
  269. package/dist/fonts/montserrat-vietnamese-500-normal.woff2 +0 -0
  270. package/dist/fonts/montserrat-vietnamese-600-normal.woff +0 -0
  271. package/dist/fonts/montserrat-vietnamese-600-normal.woff2 +0 -0
  272. package/dist/fonts/playfair-display-cyrillic-400-normal.woff +0 -0
  273. package/dist/fonts/playfair-display-cyrillic-400-normal.woff2 +0 -0
  274. package/dist/fonts/playfair-display-cyrillic-500-normal.woff +0 -0
  275. package/dist/fonts/playfair-display-cyrillic-500-normal.woff2 +0 -0
  276. package/dist/fonts/playfair-display-latin-400-normal.woff +0 -0
  277. package/dist/fonts/playfair-display-latin-400-normal.woff2 +0 -0
  278. package/dist/fonts/playfair-display-latin-500-normal.woff +0 -0
  279. package/dist/fonts/playfair-display-latin-500-normal.woff2 +0 -0
  280. package/dist/fonts/playfair-display-latin-ext-400-normal.woff +0 -0
  281. package/dist/fonts/playfair-display-latin-ext-400-normal.woff2 +0 -0
  282. package/dist/fonts/playfair-display-latin-ext-500-normal.woff +0 -0
  283. package/dist/fonts/playfair-display-latin-ext-500-normal.woff2 +0 -0
  284. package/dist/fonts/playfair-display-vietnamese-400-normal.woff +0 -0
  285. package/dist/fonts/playfair-display-vietnamese-400-normal.woff2 +0 -0
  286. package/dist/fonts/playfair-display-vietnamese-500-normal.woff +0 -0
  287. package/dist/fonts/playfair-display-vietnamese-500-normal.woff2 +0 -0
  288. package/dist/fonts/poppins-devanagari-400-normal.woff +0 -0
  289. package/dist/fonts/poppins-devanagari-400-normal.woff2 +0 -0
  290. package/dist/fonts/poppins-devanagari-500-normal.woff +0 -0
  291. package/dist/fonts/poppins-devanagari-500-normal.woff2 +0 -0
  292. package/dist/fonts/poppins-devanagari-600-normal.woff +0 -0
  293. package/dist/fonts/poppins-devanagari-600-normal.woff2 +0 -0
  294. package/dist/fonts/poppins-latin-400-normal.woff +0 -0
  295. package/dist/fonts/poppins-latin-400-normal.woff2 +0 -0
  296. package/dist/fonts/poppins-latin-500-normal.woff +0 -0
  297. package/dist/fonts/poppins-latin-500-normal.woff2 +0 -0
  298. package/dist/fonts/poppins-latin-600-normal.woff +0 -0
  299. package/dist/fonts/poppins-latin-600-normal.woff2 +0 -0
  300. package/dist/fonts/poppins-latin-ext-400-normal.woff +0 -0
  301. package/dist/fonts/poppins-latin-ext-400-normal.woff2 +0 -0
  302. package/dist/fonts/poppins-latin-ext-500-normal.woff +0 -0
  303. package/dist/fonts/poppins-latin-ext-500-normal.woff2 +0 -0
  304. package/dist/fonts/poppins-latin-ext-600-normal.woff +0 -0
  305. package/dist/fonts/poppins-latin-ext-600-normal.woff2 +0 -0
  306. package/dist/fonts/rubik-arabic-400-normal.woff +0 -0
  307. package/dist/fonts/rubik-arabic-400-normal.woff2 +0 -0
  308. package/dist/fonts/rubik-arabic-500-normal.woff +0 -0
  309. package/dist/fonts/rubik-arabic-500-normal.woff2 +0 -0
  310. package/dist/fonts/rubik-cyrillic-400-normal.woff +0 -0
  311. package/dist/fonts/rubik-cyrillic-400-normal.woff2 +0 -0
  312. package/dist/fonts/rubik-cyrillic-500-normal.woff +0 -0
  313. package/dist/fonts/rubik-cyrillic-500-normal.woff2 +0 -0
  314. package/dist/fonts/rubik-cyrillic-ext-400-normal.woff +0 -0
  315. package/dist/fonts/rubik-cyrillic-ext-400-normal.woff2 +0 -0
  316. package/dist/fonts/rubik-cyrillic-ext-500-normal.woff +0 -0
  317. package/dist/fonts/rubik-cyrillic-ext-500-normal.woff2 +0 -0
  318. package/dist/fonts/rubik-hebrew-400-normal.woff +0 -0
  319. package/dist/fonts/rubik-hebrew-400-normal.woff2 +0 -0
  320. package/dist/fonts/rubik-hebrew-500-normal.woff +0 -0
  321. package/dist/fonts/rubik-hebrew-500-normal.woff2 +0 -0
  322. package/dist/fonts/rubik-latin-400-normal.woff +0 -0
  323. package/dist/fonts/rubik-latin-400-normal.woff2 +0 -0
  324. package/dist/fonts/rubik-latin-500-normal.woff +0 -0
  325. package/dist/fonts/rubik-latin-500-normal.woff2 +0 -0
  326. package/dist/fonts/rubik-latin-ext-400-normal.woff +0 -0
  327. package/dist/fonts/rubik-latin-ext-400-normal.woff2 +0 -0
  328. package/dist/fonts/rubik-latin-ext-500-normal.woff +0 -0
  329. package/dist/fonts/rubik-latin-ext-500-normal.woff2 +0 -0
  330. package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff +0 -0
  331. package/dist/fonts/source-serif-pro-cyrillic-400-normal.woff2 +0 -0
  332. package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff +0 -0
  333. package/dist/fonts/source-serif-pro-cyrillic-ext-400-normal.woff2 +0 -0
  334. package/dist/fonts/source-serif-pro-greek-400-normal.woff +0 -0
  335. package/dist/fonts/source-serif-pro-greek-400-normal.woff2 +0 -0
  336. package/dist/fonts/source-serif-pro-latin-400-normal.woff +0 -0
  337. package/dist/fonts/source-serif-pro-latin-400-normal.woff2 +0 -0
  338. package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff +0 -0
  339. package/dist/fonts/source-serif-pro-latin-ext-400-normal.woff2 +0 -0
  340. package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff +0 -0
  341. package/dist/fonts/source-serif-pro-vietnamese-400-normal.woff2 +0 -0
  342. package/dist/fonts/space-grotesk-latin-400-normal.woff +0 -0
  343. package/dist/fonts/space-grotesk-latin-400-normal.woff2 +0 -0
  344. package/dist/fonts/space-grotesk-latin-600-normal.woff +0 -0
  345. package/dist/fonts/space-grotesk-latin-600-normal.woff2 +0 -0
  346. package/dist/fonts/space-grotesk-latin-700-normal.woff +0 -0
  347. package/dist/fonts/space-grotesk-latin-700-normal.woff2 +0 -0
  348. package/dist/fonts/space-grotesk-latin-ext-400-normal.woff +0 -0
  349. package/dist/fonts/space-grotesk-latin-ext-400-normal.woff2 +0 -0
  350. package/dist/fonts/space-grotesk-latin-ext-600-normal.woff +0 -0
  351. package/dist/fonts/space-grotesk-latin-ext-600-normal.woff2 +0 -0
  352. package/dist/fonts/space-grotesk-latin-ext-700-normal.woff +0 -0
  353. package/dist/fonts/space-grotesk-latin-ext-700-normal.woff2 +0 -0
  354. package/dist/fonts/space-grotesk-vietnamese-400-normal.woff +0 -0
  355. package/dist/fonts/space-grotesk-vietnamese-400-normal.woff2 +0 -0
  356. package/dist/fonts/space-grotesk-vietnamese-600-normal.woff +0 -0
  357. package/dist/fonts/space-grotesk-vietnamese-600-normal.woff2 +0 -0
  358. package/dist/fonts/space-grotesk-vietnamese-700-normal.woff +0 -0
  359. package/dist/fonts/space-grotesk-vietnamese-700-normal.woff2 +0 -0
  360. package/dist/fonts/work-sans-latin-400-normal.woff +0 -0
  361. package/dist/fonts/work-sans-latin-400-normal.woff2 +0 -0
  362. package/dist/fonts/work-sans-latin-500-normal.woff +0 -0
  363. package/dist/fonts/work-sans-latin-500-normal.woff2 +0 -0
  364. package/dist/fonts/work-sans-latin-ext-400-normal.woff +0 -0
  365. package/dist/fonts/work-sans-latin-ext-400-normal.woff2 +0 -0
  366. package/dist/fonts/work-sans-latin-ext-500-normal.woff +0 -0
  367. package/dist/fonts/work-sans-latin-ext-500-normal.woff2 +0 -0
  368. package/dist/fonts/work-sans-vietnamese-400-normal.woff +0 -0
  369. package/dist/fonts/work-sans-vietnamese-400-normal.woff2 +0 -0
  370. package/dist/fonts/work-sans-vietnamese-500-normal.woff +0 -0
  371. package/dist/fonts/work-sans-vietnamese-500-normal.woff2 +0 -0
  372. package/dist/footer.js +308 -0
  373. package/dist/footer.js.map +1 -0
  374. package/dist/form-field.js +69 -0
  375. package/dist/form-field.js.map +1 -0
  376. package/dist/form.js +732 -0
  377. package/dist/form.js.map +1 -0
  378. package/dist/format.js +112 -0
  379. package/dist/format.js.map +1 -0
  380. package/dist/fouc.js +28 -0
  381. package/dist/fouc.js.map +1 -0
  382. package/dist/header.js +289 -0
  383. package/dist/header.js.map +1 -0
  384. package/dist/hooks.js +13 -0
  385. package/dist/hooks.js.map +1 -0
  386. package/dist/hover-card.js +210 -0
  387. package/dist/hover-card.js.map +1 -0
  388. package/dist/index-0ioNhtNM.js +11 -0
  389. package/dist/index-0ioNhtNM.js.map +1 -0
  390. package/dist/index-1QHKgw6D.js +55 -0
  391. package/dist/index-1QHKgw6D.js.map +1 -0
  392. package/dist/index-B6sSWi7l.js +747 -0
  393. package/dist/index-B6sSWi7l.js.map +1 -0
  394. package/dist/index-BCjJQGh8.js +71 -0
  395. package/dist/index-BCjJQGh8.js.map +1 -0
  396. package/dist/index-BGQepRFJ.js +28 -0
  397. package/dist/index-BGQepRFJ.js.map +1 -0
  398. package/dist/index-BVRIAMfe.js +37 -0
  399. package/dist/index-BVRIAMfe.js.map +1 -0
  400. package/dist/index-BY7PeRJA.js +145 -0
  401. package/dist/index-BY7PeRJA.js.map +1 -0
  402. package/dist/index-BZPx6jYI.js +9 -0
  403. package/dist/index-BZPx6jYI.js.map +1 -0
  404. package/dist/index-Ba4eHUBD.js +243 -0
  405. package/dist/index-Ba4eHUBD.js.map +1 -0
  406. package/dist/index-Bke1qZdk.js +35 -0
  407. package/dist/index-Bke1qZdk.js.map +1 -0
  408. package/dist/index-C0UREtMP.js +60 -0
  409. package/dist/index-C0UREtMP.js.map +1 -0
  410. package/dist/index-CCKe-Mpx.js +7 -0
  411. package/dist/index-CCKe-Mpx.js.map +1 -0
  412. package/dist/index-DFZozV_h.js +69 -0
  413. package/dist/index-DFZozV_h.js.map +1 -0
  414. package/dist/index-DFi6WydO.js +180 -0
  415. package/dist/index-DFi6WydO.js.map +1 -0
  416. package/dist/index-DQH6odE9.js +83 -0
  417. package/dist/index-DQH6odE9.js.map +1 -0
  418. package/dist/index-EO5flKM3.js +119 -0
  419. package/dist/index-EO5flKM3.js.map +1 -0
  420. package/dist/index-Lf7yDOXW.js +615 -0
  421. package/dist/index-Lf7yDOXW.js.map +1 -0
  422. package/dist/index-dhIqEbxW.js +1541 -0
  423. package/dist/index-dhIqEbxW.js.map +1 -0
  424. package/dist/index-pWhlqjff.js +32 -0
  425. package/dist/index-pWhlqjff.js.map +1 -0
  426. package/dist/index-rKs9bXHr.js +7 -0
  427. package/dist/index-rKs9bXHr.js.map +1 -0
  428. package/dist/index-xqkGMOJ8.js +14 -0
  429. package/dist/index-xqkGMOJ8.js.map +1 -0
  430. package/dist/index.js +247 -0
  431. package/dist/index.js.map +1 -0
  432. package/dist/input.js +22 -0
  433. package/dist/input.js.map +1 -0
  434. package/dist/label.js +36 -0
  435. package/dist/label.js.map +1 -0
  436. package/dist/layout-wrapper.js +208 -0
  437. package/dist/layout-wrapper.js.map +1 -0
  438. package/dist/llms.txt +1140 -0
  439. package/dist/menu-DBhEanGo.js +16 -0
  440. package/dist/menu-DBhEanGo.js.map +1 -0
  441. package/dist/menubar.js +565 -0
  442. package/dist/menubar.js.map +1 -0
  443. package/dist/mobile.js +183 -0
  444. package/dist/mobile.js.map +1 -0
  445. package/dist/motion.js +119 -0
  446. package/dist/motion.js.map +1 -0
  447. package/dist/page-header.js +47 -0
  448. package/dist/page-header.js.map +1 -0
  449. package/dist/page.js +214 -0
  450. package/dist/page.js.map +1 -0
  451. package/dist/pagination.js +121 -0
  452. package/dist/pagination.js.map +1 -0
  453. package/dist/platform.js +194 -0
  454. package/dist/platform.js.map +1 -0
  455. package/dist/popover.js +263 -0
  456. package/dist/popover.js.map +1 -0
  457. package/dist/popup.js +335 -0
  458. package/dist/popup.js.map +1 -0
  459. package/dist/progress.js +108 -0
  460. package/dist/progress.js.map +1 -0
  461. package/dist/radio-group.js +272 -0
  462. package/dist/radio-group.js.map +1 -0
  463. package/dist/safe-area.js +42 -0
  464. package/dist/safe-area.js.map +1 -0
  465. package/dist/search-CpUwRnG-.js +15 -0
  466. package/dist/search-CpUwRnG-.js.map +1 -0
  467. package/dist/select.js +985 -0
  468. package/dist/select.js.map +1 -0
  469. package/dist/separator.js +45 -0
  470. package/dist/separator.js.map +1 -0
  471. package/dist/sheet.js +127 -0
  472. package/dist/sheet.js.map +1 -0
  473. package/dist/skeleton.js +16 -0
  474. package/dist/skeleton.js.map +1 -0
  475. package/dist/slider.js +485 -0
  476. package/dist/slider.js.map +1 -0
  477. package/dist/sonner.js +52 -0
  478. package/dist/sonner.js.map +1 -0
  479. package/dist/styles/fonts.css +253 -0
  480. package/dist/styles.css +2 -0
  481. package/dist/switch.js +155 -0
  482. package/dist/switch.js.map +1 -0
  483. package/dist/tab-bar.js +110 -0
  484. package/dist/tab-bar.js.map +1 -0
  485. package/dist/table.js +115 -0
  486. package/dist/table.js.map +1 -0
  487. package/dist/tabs.js +218 -0
  488. package/dist/tabs.js.map +1 -0
  489. package/dist/textarea.js +19 -0
  490. package/dist/textarea.js.map +1 -0
  491. package/dist/theme-provider.js +154 -0
  492. package/dist/theme-provider.js.map +1 -0
  493. package/dist/themes.js +873 -0
  494. package/dist/themes.js.map +1 -0
  495. package/dist/toast.js +63 -0
  496. package/dist/toast.js.map +1 -0
  497. package/dist/toggle.js +70 -0
  498. package/dist/toggle.js.map +1 -0
  499. package/dist/tooltip.js +375 -0
  500. package/dist/tooltip.js.map +1 -0
  501. package/dist/types/App.d.ts +3 -0
  502. package/dist/types/App.d.ts.map +1 -0
  503. package/dist/types/components/layouts/admin.d.ts +117 -0
  504. package/dist/types/components/layouts/admin.d.ts.map +1 -0
  505. package/dist/types/components/layouts/auth.d.ts +17 -0
  506. package/dist/types/components/layouts/auth.d.ts.map +1 -0
  507. package/dist/types/components/layouts/blank.d.ts +63 -0
  508. package/dist/types/components/layouts/blank.d.ts.map +1 -0
  509. package/dist/types/components/layouts/layout-wrapper.d.ts +130 -0
  510. package/dist/types/components/layouts/layout-wrapper.d.ts.map +1 -0
  511. package/dist/types/components/layouts/mobile.d.ts +91 -0
  512. package/dist/types/components/layouts/mobile.d.ts.map +1 -0
  513. package/dist/types/components/layouts/page.d.ts +181 -0
  514. package/dist/types/components/layouts/page.d.ts.map +1 -0
  515. package/dist/types/components/layouts/popup.d.ts +100 -0
  516. package/dist/types/components/layouts/popup.d.ts.map +1 -0
  517. package/dist/types/components/sections/container.d.ts +79 -0
  518. package/dist/types/components/sections/container.d.ts.map +1 -0
  519. package/dist/types/components/sections/footer.d.ts +128 -0
  520. package/dist/types/components/sections/footer.d.ts.map +1 -0
  521. package/dist/types/components/sections/header.d.ts +72 -0
  522. package/dist/types/components/sections/header.d.ts.map +1 -0
  523. package/dist/types/components/sections/safe-area.d.ts +46 -0
  524. package/dist/types/components/sections/safe-area.d.ts.map +1 -0
  525. package/dist/types/components/sections/tab-bar.d.ts +61 -0
  526. package/dist/types/components/sections/tab-bar.d.ts.map +1 -0
  527. package/dist/types/components/ui/accordion.d.ts +8 -0
  528. package/dist/types/components/ui/accordion.d.ts.map +1 -0
  529. package/dist/types/components/ui/alert.d.ts +10 -0
  530. package/dist/types/components/ui/alert.d.ts.map +1 -0
  531. package/dist/types/components/ui/avatar.d.ts +7 -0
  532. package/dist/types/components/ui/avatar.d.ts.map +1 -0
  533. package/dist/types/components/ui/badge.d.ts +10 -0
  534. package/dist/types/components/ui/badge.d.ts.map +1 -0
  535. package/dist/types/components/ui/breadcrumb.d.ts +12 -0
  536. package/dist/types/components/ui/breadcrumb.d.ts.map +1 -0
  537. package/dist/types/components/ui/button.d.ts +11 -0
  538. package/dist/types/components/ui/button.d.ts.map +1 -0
  539. package/dist/types/components/ui/calendar.d.ts +9 -0
  540. package/dist/types/components/ui/calendar.d.ts.map +1 -0
  541. package/dist/types/components/ui/card.d.ts +10 -0
  542. package/dist/types/components/ui/card.d.ts.map +1 -0
  543. package/dist/types/components/ui/checkbox.d.ts +5 -0
  544. package/dist/types/components/ui/checkbox.d.ts.map +1 -0
  545. package/dist/types/components/ui/collapsible.d.ts +6 -0
  546. package/dist/types/components/ui/collapsible.d.ts.map +1 -0
  547. package/dist/types/components/ui/command.d.ts +19 -0
  548. package/dist/types/components/ui/command.d.ts.map +1 -0
  549. package/dist/types/components/ui/confirm-dialog.d.ts +72 -0
  550. package/dist/types/components/ui/confirm-dialog.d.ts.map +1 -0
  551. package/dist/types/components/ui/data-table.d.ts +211 -0
  552. package/dist/types/components/ui/data-table.d.ts.map +1 -0
  553. package/dist/types/components/ui/detail-page.d.ts +119 -0
  554. package/dist/types/components/ui/detail-page.d.ts.map +1 -0
  555. package/dist/types/components/ui/dialog.d.ts +16 -0
  556. package/dist/types/components/ui/dialog.d.ts.map +1 -0
  557. package/dist/types/components/ui/dropdown-menu.d.ts +26 -0
  558. package/dist/types/components/ui/dropdown-menu.d.ts.map +1 -0
  559. package/dist/types/components/ui/empty-state.d.ts +30 -0
  560. package/dist/types/components/ui/empty-state.d.ts.map +1 -0
  561. package/dist/types/components/ui/form-field.d.ts +57 -0
  562. package/dist/types/components/ui/form-field.d.ts.map +1 -0
  563. package/dist/types/components/ui/form.d.ts +185 -0
  564. package/dist/types/components/ui/form.d.ts.map +1 -0
  565. package/dist/types/components/ui/hover-card.d.ts +7 -0
  566. package/dist/types/components/ui/hover-card.d.ts.map +1 -0
  567. package/dist/types/components/ui/input.d.ts +4 -0
  568. package/dist/types/components/ui/input.d.ts.map +1 -0
  569. package/dist/types/components/ui/label.d.ts +5 -0
  570. package/dist/types/components/ui/label.d.ts.map +1 -0
  571. package/dist/types/components/ui/menubar.d.ts +27 -0
  572. package/dist/types/components/ui/menubar.d.ts.map +1 -0
  573. package/dist/types/components/ui/motion.d.ts +130 -0
  574. package/dist/types/components/ui/motion.d.ts.map +1 -0
  575. package/dist/types/components/ui/page-header.d.ts +45 -0
  576. package/dist/types/components/ui/page-header.d.ts.map +1 -0
  577. package/dist/types/components/ui/pagination.d.ts +14 -0
  578. package/dist/types/components/ui/pagination.d.ts.map +1 -0
  579. package/dist/types/components/ui/popover.d.ts +8 -0
  580. package/dist/types/components/ui/popover.d.ts.map +1 -0
  581. package/dist/types/components/ui/progress.d.ts +5 -0
  582. package/dist/types/components/ui/progress.d.ts.map +1 -0
  583. package/dist/types/components/ui/radio-group.d.ts +6 -0
  584. package/dist/types/components/ui/radio-group.d.ts.map +1 -0
  585. package/dist/types/components/ui/select.d.ts +16 -0
  586. package/dist/types/components/ui/select.d.ts.map +1 -0
  587. package/dist/types/components/ui/separator.d.ts +5 -0
  588. package/dist/types/components/ui/separator.d.ts.map +1 -0
  589. package/dist/types/components/ui/sheet.d.ts +14 -0
  590. package/dist/types/components/ui/sheet.d.ts.map +1 -0
  591. package/dist/types/components/ui/skeleton.d.ts +3 -0
  592. package/dist/types/components/ui/skeleton.d.ts.map +1 -0
  593. package/dist/types/components/ui/slider.d.ts +5 -0
  594. package/dist/types/components/ui/slider.d.ts.map +1 -0
  595. package/dist/types/components/ui/sonner.d.ts +4 -0
  596. package/dist/types/components/ui/sonner.d.ts.map +1 -0
  597. package/dist/types/components/ui/switch.d.ts +5 -0
  598. package/dist/types/components/ui/switch.d.ts.map +1 -0
  599. package/dist/types/components/ui/table.d.ts +11 -0
  600. package/dist/types/components/ui/table.d.ts.map +1 -0
  601. package/dist/types/components/ui/tabs.d.ts +8 -0
  602. package/dist/types/components/ui/tabs.d.ts.map +1 -0
  603. package/dist/types/components/ui/textarea.d.ts +4 -0
  604. package/dist/types/components/ui/textarea.d.ts.map +1 -0
  605. package/dist/types/components/ui/toast.d.ts +70 -0
  606. package/dist/types/components/ui/toast.d.ts.map +1 -0
  607. package/dist/types/components/ui/toggle.d.ts +10 -0
  608. package/dist/types/components/ui/toggle.d.ts.map +1 -0
  609. package/dist/types/components/ui/tooltip.d.ts +8 -0
  610. package/dist/types/components/ui/tooltip.d.ts.map +1 -0
  611. package/dist/types/hooks/index.d.ts +14 -0
  612. package/dist/types/hooks/index.d.ts.map +1 -0
  613. package/dist/types/hooks/useApi.d.ts +38 -0
  614. package/dist/types/hooks/useApi.d.ts.map +1 -0
  615. package/dist/types/hooks/useBreakpoint.d.ts +35 -0
  616. package/dist/types/hooks/useBreakpoint.d.ts.map +1 -0
  617. package/dist/types/hooks/useDataTable.d.ts +59 -0
  618. package/dist/types/hooks/useDataTable.d.ts.map +1 -0
  619. package/dist/types/hooks/useMediaQuery.d.ts +12 -0
  620. package/dist/types/hooks/useMediaQuery.d.ts.map +1 -0
  621. package/dist/types/hooks/useStorage.d.ts +35 -0
  622. package/dist/types/hooks/useStorage.d.ts.map +1 -0
  623. package/dist/types/index.d.ts +75 -0
  624. package/dist/types/index.d.ts.map +1 -0
  625. package/dist/types/lib/errors.d.ts +37 -0
  626. package/dist/types/lib/errors.d.ts.map +1 -0
  627. package/dist/types/lib/format.d.ts +80 -0
  628. package/dist/types/lib/format.d.ts.map +1 -0
  629. package/dist/types/lib/fouc.d.ts +64 -0
  630. package/dist/types/lib/fouc.d.ts.map +1 -0
  631. package/dist/types/lib/platform.d.ts +156 -0
  632. package/dist/types/lib/platform.d.ts.map +1 -0
  633. package/dist/types/lib/utils.d.ts +14 -0
  634. package/dist/types/lib/utils.d.ts.map +1 -0
  635. package/dist/types/main.d.ts +2 -0
  636. package/dist/types/main.d.ts.map +1 -0
  637. package/dist/types/themes/index.d.ts +499 -0
  638. package/dist/types/themes/index.d.ts.map +1 -0
  639. package/dist/types/themes/presets/base.d.ts +108 -0
  640. package/dist/types/themes/presets/base.d.ts.map +1 -0
  641. package/dist/types/themes/presets/elegant.d.ts +108 -0
  642. package/dist/types/themes/presets/elegant.d.ts.map +1 -0
  643. package/dist/types/themes/presets/metro.d.ts +114 -0
  644. package/dist/types/themes/presets/metro.d.ts.map +1 -0
  645. package/dist/types/themes/presets/studio.d.ts +115 -0
  646. package/dist/types/themes/presets/studio.d.ts.map +1 -0
  647. package/dist/types/themes/presets/vivid.d.ts +115 -0
  648. package/dist/types/themes/presets/vivid.d.ts.map +1 -0
  649. package/dist/types/themes/theme-provider.d.ts +122 -0
  650. package/dist/types/themes/theme-provider.d.ts.map +1 -0
  651. package/dist/types/types/index.d.ts +813 -0
  652. package/dist/types/types/index.d.ts.map +1 -0
  653. package/dist/uikit.css +1 -0
  654. package/dist/useDataTable-CPiBpEg-.js +254 -0
  655. package/dist/useDataTable-CPiBpEg-.js.map +1 -0
  656. package/dist/utils-CwJPJKOE.js +2278 -0
  657. package/dist/utils-CwJPJKOE.js.map +1 -0
  658. package/dist/utils.js +5 -0
  659. package/dist/utils.js.map +1 -0
  660. package/dist/wrapper.js +13 -0
  661. package/dist/wrapper.js.map +1 -0
  662. package/dist/x-BxwubQiM.js +15 -0
  663. package/dist/x-BxwubQiM.js.map +1 -0
  664. package/examples/README.md +18 -0
  665. package/examples/button.tsx +16 -0
  666. package/examples/confirm-dialog.tsx +44 -0
  667. package/examples/data-table.tsx +35 -0
  668. package/examples/dialog.tsx +34 -0
  669. package/examples/empty-state.tsx +13 -0
  670. package/examples/form-field.tsx +22 -0
  671. package/examples/format.tsx +19 -0
  672. package/examples/page-header.tsx +17 -0
  673. package/examples/skeleton.tsx +12 -0
  674. package/examples/theme-provider.tsx +33 -0
  675. package/examples/toast.tsx +32 -0
  676. package/examples/use-breakpoint.tsx +17 -0
  677. package/llms.txt +1140 -0
  678. package/package.json +430 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sources":["../node_modules/lucide-react/dist/esm/icons/arrow-down-wide-narrow.js","../node_modules/lucide-react/dist/esm/icons/arrow-up-down.js","../node_modules/lucide-react/dist/esm/icons/arrow-up-narrow-wide.js","../node_modules/lucide-react/dist/esm/icons/download.js","../node_modules/lucide-react/dist/esm/icons/filter.js","../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../src/components/ui/data-table.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowDownWideNarrow = createLucideIcon(\"ArrowDownWideNarrow\", [\n [\"path\", { d: \"m3 16 4 4 4-4\", key: \"1co6wj\" }],\n [\"path\", { d: \"M7 20V4\", key: \"1yoxec\" }],\n [\"path\", { d: \"M11 4h10\", key: \"1w87gc\" }],\n [\"path\", { d: \"M11 8h7\", key: \"djye34\" }],\n [\"path\", { d: \"M11 12h4\", key: \"q8tih4\" }]\n]);\n\nexport { ArrowDownWideNarrow as default };\n//# sourceMappingURL=arrow-down-wide-narrow.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUpDown = createLucideIcon(\"ArrowUpDown\", [\n [\"path\", { d: \"m21 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n]);\n\nexport { ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUpNarrowWide = createLucideIcon(\"ArrowUpNarrowWide\", [\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }],\n [\"path\", { d: \"M11 12h4\", key: \"q8tih4\" }],\n [\"path\", { d: \"M11 16h7\", key: \"uosisv\" }],\n [\"path\", { d: \"M11 20h10\", key: \"jvxblo\" }]\n]);\n\nexport { ArrowUpNarrowWide as default };\n//# sourceMappingURL=arrow-up-narrow-wide.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Download = createLucideIcon(\"Download\", [\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"polyline\", { points: \"7 10 12 15 17 10\", key: \"2ggqvy\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"15\", y2: \"3\", key: \"1vk2je\" }]\n]);\n\nexport { Download as default };\n//# sourceMappingURL=download.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Filter = createLucideIcon(\"Filter\", [\n [\"polygon\", { points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\", key: \"1yg77f\" }]\n]);\n\nexport { Filter as default };\n//# sourceMappingURL=filter.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RefreshCw = createLucideIcon(\"RefreshCw\", [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n]);\n\nexport { RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\n * Enhanced DataTable - Professional grade with virtual scrolling, advanced filtering\n * @module @bloomneo/uikit\n * @file src/components/ui/data-table.tsx\n */\n\nimport * as React from 'react';\nimport { forwardRef, useState, useMemo, useCallback, useEffect } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Badge } from '@/components/ui/badge';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { \n Select, \n SelectContent, \n SelectItem, \n SelectTrigger, \n SelectValue \n} from '@/components/ui/select';\nimport { \n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger\n} from '@/components/ui/dropdown-menu';\nimport { Separator } from '@/components/ui/separator';\nimport {\n ChevronDown,\n ChevronUp,\n Filter,\n Search,\n Download,\n RefreshCw,\n MoreHorizontal,\n Eye,\n Edit,\n Trash2,\n ArrowUpDown,\n SortAsc,\n SortDesc\n} from 'lucide-react';\nimport { requireArrayProp, warnInDev } from '@/lib/errors';\n\n/**\n * Cell value type. Defaults to `unknown` so consumers must narrow before use.\n */\nexport type DataTableCellValue = unknown;\n\n/**\n * Filter primitive value used by `FilterConfig`.\n */\nexport type DataTableFilterValue = string | number | boolean | Date | null;\n\n/**\n * Column definition with enhanced features\n */\nexport interface DataTableColumn<TRow = unknown, TValue = DataTableCellValue> {\n /** Unique column identifier */\n id: string;\n /** Column header text */\n header: string;\n /** Data accessor key (a property of the row) */\n accessorKey?: keyof TRow & (string | number);\n /** Data accessor function (computed value) */\n accessor?: (row: TRow) => TValue;\n /** Cell renderer function */\n cell?: (value: TValue, row: TRow, index: number) => React.ReactNode;\n /** Column width (px or %) */\n width?: string | number;\n /** Minimum column width */\n minWidth?: number;\n /** Maximum column width */\n maxWidth?: number;\n /** Enable sorting */\n sortable?: boolean;\n /** Enable filtering */\n filterable?: boolean;\n /** Filter type */\n filterType?: 'text' | 'select' | 'date' | 'number' | 'boolean';\n /** Filter options for select type */\n filterOptions?: Array<{ label: string; value: DataTableFilterValue }>;\n /** Enable column resizing */\n resizable?: boolean;\n /** Hide column by default */\n hidden?: boolean;\n /** Pin column to left or right */\n pinned?: 'left' | 'right';\n /** Data type for sorting */\n dataType?: 'string' | 'number' | 'date' | 'boolean';\n /** Custom sort function */\n sortFn?: (a: TValue, b: TValue) => number;\n /** Column group */\n group?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Sort configuration\n */\nexport interface SortConfig {\n key: string;\n direction: 'asc' | 'desc';\n}\n\n/**\n * Filter configuration\n */\nexport type FilterOperator = 'equals' | 'contains' | 'startsWith' | 'endsWith' | 'gt' | 'lt' | 'gte' | 'lte';\n\nexport interface FilterConfig {\n [key: string]: {\n type: 'text' | 'select' | 'date' | 'number' | 'boolean';\n value: DataTableFilterValue;\n operator?: FilterOperator;\n };\n}\n\n/**\n * Row action definition\n */\nexport interface RowAction<TRow = unknown> {\n /** Action identifier */\n id: string;\n /** Action label */\n label: string;\n /** Action icon */\n icon?: React.ComponentType<{ className?: string }>;\n /** Action handler */\n onClick: (row: TRow, index: number) => void;\n /** Conditional visibility */\n visible?: (row: TRow, index: number) => boolean;\n /** Action variant */\n variant?: 'default' | 'destructive' | 'secondary';\n /** Confirmation required */\n confirmation?: {\n title: string;\n description: string;\n };\n}\n\n/**\n * DataTable component props\n */\nexport interface DataTableProps<T = unknown> {\n /** Table data */\n data: T[];\n /** Column definitions */\n columns: DataTableColumn<T>[];\n /** Enable virtual scrolling for large datasets */\n virtualized?: boolean;\n /** Row height for virtualization */\n rowHeight?: number;\n /** Table height (triggers virtualization) */\n height?: number | string;\n /** Enable row selection */\n selectable?: boolean;\n /** Selection mode */\n selectionMode?: 'single' | 'multiple';\n /** Selected row keys */\n selectedRows?: string[];\n /** Selection change handler */\n onSelectionChange?: (selectedKeys: string[]) => void;\n /** Row key extractor */\n getRowId?: (row: T, index: number) => string;\n /** Enable sorting */\n sortable?: boolean;\n /** Current sort configuration */\n sortConfig?: SortConfig[];\n /** Sort change handler */\n onSortChange?: (sortConfig: SortConfig[]) => void;\n /** Enable filtering */\n filterable?: boolean;\n /** Current filter configuration */\n filterConfig?: FilterConfig;\n /** Filter change handler */\n onFilterChange?: (filterConfig: FilterConfig) => void;\n /** Enable search */\n searchable?: boolean;\n /** Search placeholder */\n searchPlaceholder?: string;\n /** Search value */\n searchValue?: string;\n /** Search change handler */\n onSearchChange?: (value: string) => void;\n /** Enable pagination */\n pagination?: boolean;\n /** Current page (0-indexed) */\n currentPage?: number;\n /** Page size */\n pageSize?: number;\n /** Total rows (for server-side pagination) */\n totalRows?: number;\n /** Page change handler */\n onPageChange?: (page: number) => void;\n /** Page size change handler */\n onPageSizeChange?: (pageSize: number) => void;\n /** Row actions */\n actions?: RowAction<T>[];\n /** Bulk actions */\n bulkActions?: Array<{\n id: string;\n label: string;\n icon?: React.ComponentType<{ className?: string }>;\n onClick: (selectedRows: T[]) => void;\n variant?: 'default' | 'destructive' | 'secondary';\n }>;\n /** Enable row expansion */\n expandable?: boolean;\n /** Expanded rows */\n expandedRows?: string[];\n /** Expand change handler */\n onExpandChange?: (expandedKeys: string[]) => void;\n /** Row expansion renderer */\n renderExpanded?: (row: T, index: number) => React.ReactNode;\n /** Loading state */\n loading?: boolean;\n /** Empty state */\n emptyState?: React.ReactNode;\n /** Error state */\n error?: string | React.ReactNode;\n /** Enable export */\n exportable?: boolean;\n /** Export formats */\n exportFormats?: Array<'csv' | 'json' | 'excel'>;\n /** Export handler */\n onExport?: (format: string, data: T[]) => void;\n /** Table size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Table density */\n density?: 'compact' | 'normal' | 'comfortable';\n /** Striped rows */\n striped?: boolean;\n /** Border style */\n bordered?: boolean;\n /** Hover effect */\n hoverable?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Custom styles */\n style?: React.CSSProperties;\n}\n\n/**\n * Table variants\n */\nconst tableVariants = cva(\n 'w-full border-collapse',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base'\n },\n bordered: {\n true: 'border border-border',\n false: ''\n }\n },\n defaultVariants: {\n size: 'md',\n bordered: true\n }\n }\n);\n\nconst cellVariants = cva(\n 'text-left border-b border-border transition-colors',\n {\n variants: {\n density: {\n compact: 'px-2 py-1',\n normal: 'px-3 py-2',\n comfortable: 'px-4 py-3'\n },\n pinned: {\n left: 'sticky left-0 z-10 bg-background',\n right: 'sticky right-0 z-10 bg-background',\n none: ''\n }\n },\n defaultVariants: {\n density: 'normal',\n pinned: 'none'\n }\n }\n);\n\n/**\n * Enhanced DataTable component\n */\nconst DataTable = forwardRef<HTMLTableElement, DataTableProps>((rawProps, ref) => {\n // Educational validation: catch the two most common misuses with messages\n // that name the prop and link to the docs entry, instead of crashing inside\n // a .map() call ten frames deep.\n requireArrayProp('DataTable', 'data', rawProps.data,\n 'Pass an array (use [] while loading instead of undefined).');\n requireArrayProp('DataTable', 'columns', rawProps.columns,\n 'Pass an array of DataTableColumn definitions.');\n if (rawProps.columns && rawProps.columns.some((c) => !c.id)) {\n warnInDev('DataTable',\n 'Every column needs a unique `id` (used for sort/filter/render keys).');\n }\n\n const {\n data = [],\n columns = [],\n virtualized = false,\n rowHeight = 40,\n height,\n selectable = false,\n selectionMode = 'multiple',\n selectedRows = [],\n onSelectionChange,\n getRowId = (row, index) => index.toString(),\n sortable = true,\n sortConfig = [],\n onSortChange,\n filterable = true,\n filterConfig = {},\n onFilterChange,\n searchable = true,\n searchPlaceholder = 'Search...',\n searchValue = '',\n onSearchChange,\n pagination = true,\n currentPage = 0,\n pageSize = 10,\n totalRows,\n onPageChange,\n onPageSizeChange,\n actions = [],\n bulkActions = [],\n expandable = false,\n expandedRows = [],\n onExpandChange,\n renderExpanded,\n loading = false,\n emptyState,\n error,\n exportable = false,\n exportFormats = ['csv', 'json'],\n onExport,\n size = 'md',\n density = 'normal',\n striped = false,\n bordered = true,\n hoverable = true,\n className,\n style,\n } = rawProps;\n\n // Internal state\n const [internalSort, setInternalSort] = useState<SortConfig[]>(sortConfig);\n const [internalFilters, setInternalFilters] = useState<FilterConfig>(filterConfig);\n const [internalSearch, setInternalSearch] = useState(searchValue);\n const [internalSelection, setInternalSelection] = useState<string[]>(selectedRows);\n\n // Compute visible columns\n const visibleColumns = useMemo(() => \n columns.filter(col => !col.hidden),\n [columns]\n );\n\n // Handle sorting\n const handleSort = useCallback((columnId: string) => {\n if (!sortable) return;\n\n const column = columns.find(col => col.id === columnId);\n if (!column?.sortable) return;\n\n const newSort = [...internalSort];\n const existingIndex = newSort.findIndex(s => s.key === columnId);\n\n if (existingIndex >= 0) {\n if (newSort[existingIndex].direction === 'asc') {\n newSort[existingIndex].direction = 'desc';\n } else {\n newSort.splice(existingIndex, 1);\n }\n } else {\n newSort.push({ key: columnId, direction: 'asc' });\n }\n\n setInternalSort(newSort);\n onSortChange?.(newSort);\n }, [sortable, columns, internalSort, onSortChange]);\n\n // Handle filtering\n const handleFilter = useCallback((columnId: string, value: DataTableFilterValue, operator: FilterOperator = 'contains') => {\n const newFilters = { ...internalFilters };\n \n if (value === '' || value == null) {\n delete newFilters[columnId];\n } else {\n const column = columns.find(col => col.id === columnId);\n newFilters[columnId] = {\n type: column?.filterType || 'text',\n value,\n operator\n };\n }\n\n setInternalFilters(newFilters);\n onFilterChange?.(newFilters);\n }, [columns, internalFilters, onFilterChange]);\n\n // Handle selection\n const handleSelectAll = useCallback((checked: boolean) => {\n if (!selectable) return;\n\n const newSelection = checked \n ? data.map((row, index) => getRowId(row, index))\n : [];\n\n setInternalSelection(newSelection);\n onSelectionChange?.(newSelection);\n }, [selectable, data, getRowId, onSelectionChange]);\n\n const handleSelectRow = useCallback((rowId: string, checked: boolean) => {\n if (!selectable) return;\n\n let newSelection = [...internalSelection];\n \n if (selectionMode === 'single') {\n newSelection = checked ? [rowId] : [];\n } else {\n if (checked) {\n newSelection.push(rowId);\n } else {\n newSelection = newSelection.filter(id => id !== rowId);\n }\n }\n\n setInternalSelection(newSelection);\n onSelectionChange?.(newSelection);\n }, [selectable, selectionMode, internalSelection, onSelectionChange]);\n\n // Filter and sort data\n const processedData = useMemo(() => {\n let result = [...data];\n\n // Apply search\n if (internalSearch) {\n result = result.filter(row => {\n return visibleColumns.some(column => {\n const value = column.accessor \n ? column.accessor(row)\n : column.accessorKey \n ? (row as any)[column.accessorKey]\n : '';\n return String(value).toLowerCase().includes(internalSearch.toLowerCase());\n });\n });\n }\n\n // Apply filters\n Object.entries(internalFilters).forEach(([columnId, filter]) => {\n const column = columns.find(col => col.id === columnId);\n if (!column) return;\n\n result = result.filter(row => {\n const value = column.accessor \n ? column.accessor(row)\n : column.accessorKey \n ? (row as any)[column.accessorKey]\n : '';\n\n switch (filter.operator) {\n case 'equals':\n return value === filter.value;\n case 'contains':\n return String(value).toLowerCase().includes(String(filter.value).toLowerCase());\n case 'startsWith':\n return String(value).toLowerCase().startsWith(String(filter.value).toLowerCase());\n case 'endsWith':\n return String(value).toLowerCase().endsWith(String(filter.value).toLowerCase());\n case 'gt':\n return Number(value) > Number(filter.value);\n case 'lt':\n return Number(value) < Number(filter.value);\n case 'gte':\n return Number(value) >= Number(filter.value);\n case 'lte':\n return Number(value) <= Number(filter.value);\n default:\n return String(value).toLowerCase().includes(String(filter.value).toLowerCase());\n }\n });\n });\n\n // Apply sorting\n if (internalSort.length > 0) {\n result.sort((a, b) => {\n for (const sort of internalSort) {\n const column = columns.find(col => col.id === sort.key);\n if (!column) continue;\n\n const aValue = column.accessor \n ? column.accessor(a)\n : column.accessorKey \n ? (a as any)[column.accessorKey]\n : '';\n \n const bValue = column.accessor \n ? column.accessor(b)\n : column.accessorKey \n ? (b as any)[column.accessorKey]\n : '';\n\n let comparison = 0;\n\n if (column.sortFn) {\n comparison = column.sortFn(aValue, bValue);\n } else {\n switch (column.dataType) {\n case 'number':\n comparison = Number(aValue) - Number(bValue);\n break;\n case 'date':\n comparison = new Date(aValue).getTime() - new Date(bValue).getTime();\n break;\n case 'boolean':\n comparison = (aValue ? 1 : 0) - (bValue ? 1 : 0);\n break;\n default:\n comparison = String(aValue).localeCompare(String(bValue));\n }\n }\n\n if (comparison !== 0) {\n return sort.direction === 'asc' ? comparison : -comparison;\n }\n }\n return 0;\n });\n }\n\n return result;\n }, [data, internalSearch, internalFilters, internalSort, columns, visibleColumns]);\n\n // Pagination\n const paginatedData = useMemo(() => {\n if (!pagination) return processedData;\n \n const start = currentPage * pageSize;\n const end = start + pageSize;\n return processedData.slice(start, end);\n }, [processedData, pagination, currentPage, pageSize]);\n\n const totalPages = Math.ceil((totalRows || processedData.length) / pageSize);\n\n // Render column header\n const renderColumnHeader = (column: DataTableColumn) => {\n const sortState = internalSort.find(s => s.key === column.id);\n const isSorted = !!sortState;\n const sortDirection = sortState?.direction;\n\n return (\n <th\n key={column.id}\n className={cn(\n cellVariants({ \n density, \n pinned: column.pinned || 'none' \n }),\n 'bg-muted/50 font-medium text-muted-foreground',\n column.sortable && 'cursor-pointer hover:bg-muted',\n column.className\n )}\n style={{ \n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth \n }}\n onClick={() => column.sortable && handleSort(column.id)}\n >\n <div className=\"flex items-center gap-2\">\n <span>{column.header}</span>\n {column.sortable && (\n <div className=\"flex flex-col\">\n {!isSorted && <ArrowUpDown className=\"h-3 w-3\" />}\n {isSorted && sortDirection === 'asc' && <SortAsc className=\"h-3 w-3\" />}\n {isSorted && sortDirection === 'desc' && <SortDesc className=\"h-3 w-3\" />}\n </div>\n )}\n {column.filterable && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={(e) => {\n e.stopPropagation();\n // Filter dropdown logic here\n }}\n >\n <Filter className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n </th>\n );\n };\n\n // Render table row\n // Internal: rows pass through as `unknown` and accessors narrow them.\n // Public consumers see the generic `T` from `DataTableProps<T>`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const renderRow = (row: any, index: number) => {\n const rowId = getRowId(row, index);\n const isSelected = internalSelection.includes(rowId);\n const isExpanded = expandedRows.includes(rowId);\n\n return (\n <React.Fragment key={rowId}>\n <tr\n className={cn(\n 'transition-colors',\n hoverable && 'hover:bg-muted/50',\n striped && index % 2 === 0 && 'bg-muted/20',\n isSelected && 'bg-primary/10'\n )}\n >\n {selectable && (\n <td className={cn(cellVariants({ density }))}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={(checked) => \n handleSelectRow(rowId, checked as boolean)\n }\n />\n </td>\n )}\n \n {visibleColumns.map((column) => {\n const value = column.accessor \n ? column.accessor(row)\n : column.accessorKey \n ? row[column.accessorKey]\n : '';\n\n return (\n <td\n key={column.id}\n className={cn(\n cellVariants({ \n density, \n pinned: column.pinned || 'none' \n }),\n column.className\n )}\n style={{ \n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth \n }}\n >\n {column.cell ? column.cell(value, row, index) : String(value)}\n </td>\n );\n })}\n\n {actions.length > 0 && (\n <td className={cn(cellVariants({ density }))}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {actions\n .filter(action => !action.visible || action.visible(row, index))\n .map((action) => (\n <DropdownMenuItem\n key={action.id}\n onClick={() => action.onClick(row, index)}\n className={cn(\n action.variant === 'destructive' && 'text-destructive'\n )}\n >\n {action.icon && <action.icon className=\"h-4 w-4 mr-2\" />}\n {action.label}\n </DropdownMenuItem>\n ))\n }\n </DropdownMenuContent>\n </DropdownMenu>\n </td>\n )}\n </tr>\n\n {expandable && isExpanded && renderExpanded && (\n <tr>\n <td colSpan={visibleColumns.length + (selectable ? 1 : 0) + (actions.length > 0 ? 1 : 0)}>\n {renderExpanded(row, index)}\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n };\n\n return (\n <div className={cn('space-y-4', className)} style={style}>\n {/* Toolbar */}\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"flex items-center gap-2\">\n {searchable && (\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={internalSearch}\n onChange={(e) => {\n setInternalSearch(e.target.value);\n onSearchChange?.(e.target.value);\n }}\n className=\"pl-8 w-64\"\n />\n </div>\n )}\n\n {bulkActions.length > 0 && internalSelection.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"secondary\">\n {internalSelection.length} selected\n </Badge>\n {bulkActions.map((action) => (\n <Button\n key={action.id}\n variant={action.variant || 'default'}\n size=\"sm\"\n onClick={() => {\n const selectedData = data.filter((row, index) => \n internalSelection.includes(getRowId(row, index))\n );\n action.onClick(selectedData);\n }}\n >\n {action.icon && <action.icon className=\"h-4 w-4 mr-2\" />}\n {action.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n {exportable && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Download className=\"h-4 w-4 mr-2\" />\n Export\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {exportFormats.map((format) => (\n <DropdownMenuItem\n key={format}\n onClick={() => onExport?.(format, processedData)}\n >\n Export as {format.toUpperCase()}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n <Button variant=\"outline\" size=\"sm\" onClick={() => window.location.reload()}>\n <RefreshCw className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {/* Table */}\n <div \n className=\"border border-border rounded-lg overflow-auto\"\n style={{ height }}\n >\n <table\n ref={ref}\n className={cn(tableVariants({ size, bordered }))}\n >\n <thead>\n <tr>\n {selectable && (\n <th className={cn(cellVariants({ density }), 'bg-muted/50')}>\n {selectionMode === 'multiple' && (\n <Checkbox\n checked={internalSelection.length === data.length && data.length > 0}\n // Note: indeterminate styling handled via CSS classes since Checkbox doesn't support indeterminate prop\n className={cn(\n internalSelection.length > 0 && internalSelection.length < data.length && \n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground [&>svg]:opacity-50'\n )}\n onCheckedChange={handleSelectAll}\n />\n )}\n </th>\n )}\n {visibleColumns.map(renderColumnHeader)}\n {actions.length > 0 && (\n <th className={cn(cellVariants({ density }), 'bg-muted/50 w-16')}>\n Actions\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td \n colSpan={visibleColumns.length + (selectable ? 1 : 0) + (actions.length > 0 ? 1 : 0)}\n className=\"text-center py-8\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <RefreshCw className=\"h-4 w-4 animate-spin\" />\n Loading...\n </div>\n </td>\n </tr>\n ) : error ? (\n <tr>\n <td \n colSpan={visibleColumns.length + (selectable ? 1 : 0) + (actions.length > 0 ? 1 : 0)}\n className=\"text-center py-8 text-destructive\"\n >\n {error}\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td \n colSpan={visibleColumns.length + (selectable ? 1 : 0) + (actions.length > 0 ? 1 : 0)}\n className=\"text-center py-8\"\n >\n {emptyState || (\n <div className=\"text-muted-foreground\">\n No data available\n </div>\n )}\n </td>\n </tr>\n ) : (\n paginatedData.map(renderRow)\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {pagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between\">\n <div className=\"text-sm text-muted-foreground\">\n Showing {currentPage * pageSize + 1} to{' '}\n {Math.min((currentPage + 1) * pageSize, totalRows || processedData.length)} of{' '}\n {totalRows || processedData.length} results\n </div>\n\n <div className=\"flex items-center gap-2\">\n <Select \n value={pageSize.toString()}\n onValueChange={(value) => onPageSizeChange?.(Number(value))}\n >\n <SelectTrigger className=\"w-20\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"10\">10</SelectItem>\n <SelectItem value=\"25\">25</SelectItem>\n <SelectItem value=\"50\">50</SelectItem>\n <SelectItem value=\"100\">100</SelectItem>\n </SelectContent>\n </Select>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={currentPage === 0}\n onClick={() => onPageChange?.(currentPage - 1)}\n >\n Previous\n </Button>\n \n {Array.from({ length: Math.min(5, totalPages) }, (_, i) => {\n const page = currentPage < 3 ? i : currentPage - 2 + i;\n if (page >= totalPages) return null;\n \n return (\n <Button\n key={page}\n variant={page === currentPage ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => onPageChange?.(page)}\n >\n {page + 1}\n </Button>\n );\n })}\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={currentPage === totalPages - 1}\n onClick={() => onPageChange?.(currentPage + 1)}\n >\n Next\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n});\n\nDataTable.displayName = 'DataTable';\n\nexport { DataTable };"],"names":["ArrowDownWideNarrow","createLucideIcon","ArrowUpDown","ArrowUpNarrowWide","Download","Filter","RefreshCw","tableVariants","cva","cellVariants","DataTable","forwardRef","rawProps","ref","requireArrayProp","c","warnInDev","data","columns","virtualized","rowHeight","height","selectable","selectionMode","selectedRows","onSelectionChange","getRowId","row","index","sortable","sortConfig","onSortChange","filterable","filterConfig","onFilterChange","searchable","searchPlaceholder","searchValue","onSearchChange","pagination","currentPage","pageSize","totalRows","onPageChange","onPageSizeChange","actions","bulkActions","expandable","expandedRows","onExpandChange","renderExpanded","loading","emptyState","error","exportable","exportFormats","onExport","size","density","striped","bordered","hoverable","className","style","internalSort","setInternalSort","useState","internalFilters","setInternalFilters","internalSearch","setInternalSearch","internalSelection","setInternalSelection","visibleColumns","useMemo","col","handleSort","useCallback","columnId","newSort","existingIndex","s","value","operator","newFilters","column","handleSelectAll","checked","newSelection","handleSelectRow","rowId","id","processedData","result","filter","a","b","sort","aValue","bValue","comparison","paginatedData","start","end","totalPages","renderColumnHeader","sortState","isSorted","sortDirection","jsx","cn","jsxs","SortAsc","SortDesc","Button","e","renderRow","isSelected","isExpanded","React","Checkbox","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","action","DropdownMenuItem","Search","Input","Badge","selectedData","format","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","_","i","page"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -0,0 +1,454 @@
1
+ import { jsx as e, jsxs as t, Fragment as V } from "react/jsx-runtime";
2
+ import { Card as v, CardContent as w, CardHeader as B, CardTitle as F } from "./card.js";
3
+ import { c as y } from "./utils-CwJPJKOE.js";
4
+ import { Button as d } from "./button.js";
5
+ import { Badge as P } from "./badge.js";
6
+ import { Alert as Y, AlertDescription as K } from "./alert.js";
7
+ import { Dialog as Q, DialogContent as R, DialogHeader as W, DialogTitle as X, DialogDescription as Z, DialogFooter as _ } from "./dialog.js";
8
+ import { TooltipProvider as ee, Tooltip as u, TooltipTrigger as x, TooltipContent as N } from "./tooltip.js";
9
+ import { ValidatedInput as h, FormActions as ae, ValidatedSelect as te, ValidatedTextarea as re } from "./form.js";
10
+ import { c as p } from "./createLucideIcon-B45kRl5r.js";
11
+ import { E as ne } from "./ellipsis-BhAoKPVk.js";
12
+ /**
13
+ * @license lucide-react v0.468.0 - ISC
14
+ *
15
+ * This source code is licensed under the ISC license.
16
+ * See the LICENSE file in the root directory of this source tree.
17
+ */
18
+ const se = p("ArrowLeft", [
19
+ ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
20
+ ["path", { d: "M19 12H5", key: "x3x0zl" }]
21
+ ]);
22
+ /**
23
+ * @license lucide-react v0.468.0 - ISC
24
+ *
25
+ * This source code is licensed under the ISC license.
26
+ * See the LICENSE file in the root directory of this source tree.
27
+ */
28
+ const ie = p("CircleCheckBig", [
29
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
30
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
31
+ ]);
32
+ /**
33
+ * @license lucide-react v0.468.0 - ISC
34
+ *
35
+ * This source code is licensed under the ISC license.
36
+ * See the LICENSE file in the root directory of this source tree.
37
+ */
38
+ const le = p("Copy", [
39
+ ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
40
+ ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
41
+ ]);
42
+ /**
43
+ * @license lucide-react v0.468.0 - ISC
44
+ *
45
+ * This source code is licensed under the ISC license.
46
+ * See the LICENSE file in the root directory of this source tree.
47
+ */
48
+ const ce = p("Trash2", [
49
+ ["path", { d: "M3 6h18", key: "d0wm0j" }],
50
+ ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }],
51
+ ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
52
+ ["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
53
+ ["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
54
+ ]);
55
+ /**
56
+ * @license lucide-react v0.468.0 - ISC
57
+ *
58
+ * This source code is licensed under the ISC license.
59
+ * See the LICENSE file in the root directory of this source tree.
60
+ */
61
+ const q = p("TriangleAlert", [
62
+ [
63
+ "path",
64
+ {
65
+ d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
66
+ key: "wmoenq"
67
+ }
68
+ ],
69
+ ["path", { d: "M12 9v4", key: "juzpu7" }],
70
+ ["path", { d: "M12 17h.01", key: "p32p05" }]
71
+ ]), M = (a, r) => {
72
+ if (r.formatter)
73
+ return r.formatter(a);
74
+ switch (r.type) {
75
+ case "date":
76
+ return new Date(a).toLocaleDateString();
77
+ case "datetime":
78
+ return new Date(a).toLocaleString();
79
+ case "boolean":
80
+ return a ? "✅ Yes" : "❌ No";
81
+ case "number":
82
+ return typeof a == "number" ? a.toLocaleString() : a;
83
+ case "json":
84
+ return /* @__PURE__ */ e("pre", { className: "text-xs bg-muted p-2 rounded overflow-auto max-h-32", children: JSON.stringify(a, null, 2) });
85
+ case "badge":
86
+ return /* @__PURE__ */ e(P, { variant: r.badgeVariant || "default", children: String(a) });
87
+ default:
88
+ return String(a);
89
+ }
90
+ }, de = (a) => {
91
+ navigator.clipboard.writeText(a);
92
+ };
93
+ function Le({
94
+ title: a,
95
+ subtitle: r,
96
+ icon: n,
97
+ onBack: i,
98
+ status: l,
99
+ actions: c = [],
100
+ formSections: g = [],
101
+ metadataFields: o = [],
102
+ sidebarCards: f = [],
103
+ isEditing: m = !1,
104
+ onFormChange: H,
105
+ onSave: C,
106
+ onCancel: k,
107
+ saveText: I = "Save Changes",
108
+ cancelText: O = "Cancel",
109
+ saving: b = !1,
110
+ formValid: $ = !0,
111
+ loading: L = !1,
112
+ error: D,
113
+ onClearError: T,
114
+ children: E,
115
+ className: G = ""
116
+ }) {
117
+ const S = c.find((s) => s.variant === "destructive"), A = c.find((s) => s.id === "edit"), j = c.filter((s) => s.variant !== "destructive" && s.id !== "edit"), z = [
118
+ ...S ? [S] : [],
119
+ ...A && !m ? [A] : [],
120
+ ...j.filter((s) => s.position !== "secondary")
121
+ ], J = j.filter((s) => s.position === "secondary");
122
+ return /* @__PURE__ */ e(ee, { children: /* @__PURE__ */ e("div", { className: y("min-h-screen p-6", G), children: /* @__PURE__ */ t("div", { className: "max-w-7xl mx-auto space-y-8", children: [
123
+ /* @__PURE__ */ e("div", { children: /* @__PURE__ */ t("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4 lg:gap-6", children: [
124
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-3 min-w-0 flex-1", children: [
125
+ n && /* @__PURE__ */ e("div", { className: "w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(n, { className: "w-6 h-6 text-primary" }) }),
126
+ /* @__PURE__ */ t("div", { className: "min-w-0 flex-1", children: [
127
+ /* @__PURE__ */ e("h1", { className: "text-xl md:text-2xl lg:text-3xl font-bold bg-gradient-to-r from-foreground to-foreground/80 bg-clip-text text-transparent leading-tight", children: L ? "Loading..." : a }),
128
+ r && /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground mt-0.5 leading-relaxed", children: r })
129
+ ] })
130
+ ] }),
131
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-2 shrink-0 lg:ml-4", children: [
132
+ /* @__PURE__ */ t(u, { children: [
133
+ /* @__PURE__ */ e(x, { asChild: !0, children: /* @__PURE__ */ t(
134
+ d,
135
+ {
136
+ variant: "outline",
137
+ size: "sm",
138
+ onClick: i,
139
+ className: "flex items-center gap-1.5",
140
+ children: [
141
+ /* @__PURE__ */ e(se, { className: "w-4 h-4" }),
142
+ /* @__PURE__ */ e("span", { className: "hidden sm:inline", children: "Back" })
143
+ ]
144
+ }
145
+ ) }),
146
+ /* @__PURE__ */ e(N, { side: "bottom", children: "Go back" })
147
+ ] }),
148
+ m && C && k ? /* @__PURE__ */ t("form", { onSubmit: (s) => {
149
+ s.preventDefault(), C();
150
+ }, className: "flex items-center gap-2", children: [
151
+ /* @__PURE__ */ e(
152
+ d,
153
+ {
154
+ type: "button",
155
+ variant: "outline",
156
+ size: "sm",
157
+ onClick: k,
158
+ disabled: b,
159
+ children: O
160
+ }
161
+ ),
162
+ /* @__PURE__ */ e(
163
+ d,
164
+ {
165
+ type: "submit",
166
+ size: "sm",
167
+ disabled: b || !$,
168
+ className: "min-w-20",
169
+ children: b ? /* @__PURE__ */ t("div", { className: "flex items-center gap-1", children: [
170
+ /* @__PURE__ */ e("div", { className: "w-3 h-3 border border-current border-t-transparent rounded-full animate-spin" }),
171
+ /* @__PURE__ */ e("span", { className: "hidden sm:inline", children: "Saving..." })
172
+ ] }) : I
173
+ }
174
+ )
175
+ ] }) : /* @__PURE__ */ t(V, { children: [
176
+ z.slice(0, 2).map((s) => /* @__PURE__ */ t(u, { children: [
177
+ /* @__PURE__ */ e(x, { asChild: !0, children: /* @__PURE__ */ t(
178
+ d,
179
+ {
180
+ variant: s.variant || "default",
181
+ size: "sm",
182
+ onClick: s.onClick,
183
+ disabled: s.disabled || L,
184
+ className: "flex items-center gap-1.5",
185
+ children: [
186
+ /* @__PURE__ */ e(s.icon, { className: "w-4 h-4" }),
187
+ /* @__PURE__ */ e("span", { className: "hidden sm:inline", children: s.loading ? "Loading..." : s.label })
188
+ ]
189
+ }
190
+ ) }),
191
+ /* @__PURE__ */ e(N, { side: "bottom", children: s.label })
192
+ ] }, s.id)),
193
+ (z.length > 2 || J.length > 0) && /* @__PURE__ */ t(u, { children: [
194
+ /* @__PURE__ */ e(x, { asChild: !0, children: /* @__PURE__ */ e(d, { variant: "outline", size: "sm", className: "px-2", children: /* @__PURE__ */ e(ne, { className: "w-4 h-4" }) }) }),
195
+ /* @__PURE__ */ e(N, { side: "bottom", children: "More actions" })
196
+ ] })
197
+ ] })
198
+ ] })
199
+ ] }) }),
200
+ D && /* @__PURE__ */ t(Y, { variant: "destructive", children: [
201
+ /* @__PURE__ */ e(q, { className: "h-4 w-4" }),
202
+ /* @__PURE__ */ t(K, { className: "flex items-center justify-between", children: [
203
+ D,
204
+ T && /* @__PURE__ */ e(d, { variant: "outline", size: "sm", onClick: T, children: "Dismiss" })
205
+ ] })
206
+ ] }),
207
+ l && /* @__PURE__ */ e(oe, { ...l }),
208
+ /* @__PURE__ */ t("div", { className: "grid grid-cols-1 xl:grid-cols-3 gap-8", children: [
209
+ /* @__PURE__ */ t("div", { className: "xl:col-span-2 space-y-6", children: [
210
+ g.map((s, U) => /* @__PURE__ */ e(
211
+ he,
212
+ {
213
+ section: s,
214
+ isEditing: m,
215
+ onFieldChange: H
216
+ },
217
+ U
218
+ )),
219
+ E
220
+ ] }),
221
+ /* @__PURE__ */ t("div", { className: "space-y-6", children: [
222
+ o.length > 0 && /* @__PURE__ */ e(me, { data: o }),
223
+ f
224
+ ] })
225
+ ] })
226
+ ] }) }) });
227
+ }
228
+ function oe({
229
+ active: a,
230
+ activeLabel: r = "Active",
231
+ inactiveLabel: n = "Inactive",
232
+ activeText: i = "Entity is operational and accessible",
233
+ inactiveText: l = "Entity is inactive and cannot access services",
234
+ customBadge: c
235
+ }) {
236
+ return /* @__PURE__ */ e(v, { className: "border-0 shadow-lg", children: /* @__PURE__ */ e(w, { className: "p-4", children: /* @__PURE__ */ t("div", { className: "flex items-center justify-between", children: [
237
+ /* @__PURE__ */ t("div", { className: "flex items-center gap-4", children: [
238
+ /* @__PURE__ */ e("div", { className: y(
239
+ "w-10 h-10 rounded-full flex items-center justify-center",
240
+ a ? "bg-green-100 text-green-600" : "bg-orange-100 text-orange-600"
241
+ ), children: a ? /* @__PURE__ */ e(ie, { className: "w-5 h-5" }) : /* @__PURE__ */ e(q, { className: "w-5 h-5" }) }),
242
+ /* @__PURE__ */ t("div", { children: [
243
+ /* @__PURE__ */ t("h3", { className: "font-semibold text-foreground", children: [
244
+ "Status: ",
245
+ a ? r : n
246
+ ] }),
247
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: a ? i : l })
248
+ ] })
249
+ ] }),
250
+ c || /* @__PURE__ */ t(P, { variant: a ? "default" : "secondary", className: "flex items-center gap-2", children: [
251
+ /* @__PURE__ */ e("div", { className: y(
252
+ "w-2 h-2 rounded-full",
253
+ a ? "bg-green-500" : "bg-orange-500"
254
+ ) }),
255
+ a ? r : n
256
+ ] })
257
+ ] }) }) });
258
+ }
259
+ function me({
260
+ data: a,
261
+ title: r = "Metadata"
262
+ }) {
263
+ return /* @__PURE__ */ t(v, { className: "border-0 shadow-lg", children: [
264
+ /* @__PURE__ */ e(B, { className: "border-0", children: /* @__PURE__ */ e(F, { className: "text-lg", children: r }) }),
265
+ /* @__PURE__ */ e(w, { className: "p-4 md:p-6 space-y-4", children: /* @__PURE__ */ e("div", { className: "space-y-3", children: a.map((n, i) => /* @__PURE__ */ t("div", { children: [
266
+ /* @__PURE__ */ t("label", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide flex items-center gap-1", children: [
267
+ n.icon && /* @__PURE__ */ e(n.icon, { className: "w-3 h-3" }),
268
+ n.label
269
+ ] }),
270
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-2 mt-1", children: n.copyable ? /* @__PURE__ */ t(V, { children: [
271
+ /* @__PURE__ */ e("div", { className: "text-sm font-mono bg-muted px-2 py-1 rounded border flex-1 break-all", children: M(n.value, n) }),
272
+ /* @__PURE__ */ t(u, { children: [
273
+ /* @__PURE__ */ e(x, { asChild: !0, children: /* @__PURE__ */ e(
274
+ d,
275
+ {
276
+ variant: "ghost",
277
+ size: "sm",
278
+ onClick: () => de(String(n.value)),
279
+ className: "h-8 w-8 p-0 shrink-0",
280
+ children: /* @__PURE__ */ e(le, { className: "w-3 h-3" })
281
+ }
282
+ ) }),
283
+ /* @__PURE__ */ t(N, { children: [
284
+ "Copy ",
285
+ n.label
286
+ ] })
287
+ ] })
288
+ ] }) : /* @__PURE__ */ e("div", { className: "text-sm break-words", children: M(n.value, n) }) })
289
+ ] }, i)) }) })
290
+ ] });
291
+ }
292
+ function he({
293
+ section: a,
294
+ isEditing: r,
295
+ onFieldChange: n
296
+ }) {
297
+ return /* @__PURE__ */ t(v, { className: "border-0 shadow-lg", children: [
298
+ /* @__PURE__ */ t(B, { className: "border-0", children: [
299
+ /* @__PURE__ */ t(F, { className: "flex items-center gap-3", children: [
300
+ a.icon && /* @__PURE__ */ e("div", { className: "w-8 h-8 rounded-lg bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ e(a.icon, { className: "w-4 h-4 text-primary" }) }),
301
+ /* @__PURE__ */ e("span", { className: "bg-gradient-to-r from-foreground to-foreground/80 bg-clip-text text-transparent", children: a.title })
302
+ ] }),
303
+ a.description && /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: a.description })
304
+ ] }),
305
+ /* @__PURE__ */ e(w, { className: "p-4 md:p-6", children: /* @__PURE__ */ e("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-6", children: a.fields.map((i) => /* @__PURE__ */ e("div", { className: i.type === "textarea" ? "md:col-span-2" : "", children: /* @__PURE__ */ e(
306
+ pe,
307
+ {
308
+ field: i,
309
+ isEditing: r,
310
+ onChange: (l) => n?.(i.key, l)
311
+ }
312
+ ) }, i.key)) }) })
313
+ ] });
314
+ }
315
+ function pe({
316
+ field: a,
317
+ isEditing: r,
318
+ onChange: n
319
+ }) {
320
+ const i = {
321
+ label: a.label,
322
+ value: String(a.value || ""),
323
+ onChange: n,
324
+ disabled: !r || a.disabled,
325
+ required: a.required,
326
+ placeholder: a.placeholder
327
+ };
328
+ switch (a.type) {
329
+ case "textarea":
330
+ return /* @__PURE__ */ e(
331
+ re,
332
+ {
333
+ ...i,
334
+ rows: a.rows || 3,
335
+ minLength: a.validation?.minLength,
336
+ maxLength: a.validation?.maxLength
337
+ }
338
+ );
339
+ case "select":
340
+ return /* @__PURE__ */ e(
341
+ te,
342
+ {
343
+ ...i,
344
+ options: a.options || []
345
+ }
346
+ );
347
+ case "email":
348
+ return /* @__PURE__ */ e(
349
+ h,
350
+ {
351
+ ...i,
352
+ type: "email",
353
+ minLength: a.validation?.minLength,
354
+ maxLength: a.validation?.maxLength,
355
+ pattern: a.validation?.pattern
356
+ }
357
+ );
358
+ case "password":
359
+ return /* @__PURE__ */ e(
360
+ h,
361
+ {
362
+ ...i,
363
+ type: "password",
364
+ minLength: a.validation?.minLength,
365
+ maxLength: a.validation?.maxLength,
366
+ showPasswordStrength: !0,
367
+ showPasswordToggle: !0
368
+ }
369
+ );
370
+ case "number":
371
+ return /* @__PURE__ */ e(
372
+ h,
373
+ {
374
+ ...i,
375
+ type: "number"
376
+ }
377
+ );
378
+ default:
379
+ return /* @__PURE__ */ e(
380
+ h,
381
+ {
382
+ ...i,
383
+ type: "text",
384
+ minLength: a.validation?.minLength,
385
+ maxLength: a.validation?.maxLength,
386
+ pattern: a.validation?.pattern
387
+ }
388
+ );
389
+ }
390
+ }
391
+ function De({
392
+ open: a,
393
+ entity: r,
394
+ confirmationValue: n,
395
+ onConfirmationChange: i,
396
+ onConfirm: l,
397
+ onCancel: c,
398
+ loading: g = !1
399
+ }) {
400
+ const o = n === r.name, f = (m) => {
401
+ m.preventDefault(), o && !g && l();
402
+ };
403
+ return /* @__PURE__ */ e(Q, { open: a, onOpenChange: c, children: /* @__PURE__ */ t(R, { className: "max-w-md", children: [
404
+ /* @__PURE__ */ t(W, { children: [
405
+ /* @__PURE__ */ t(X, { className: "flex items-center gap-3 text-destructive", children: [
406
+ /* @__PURE__ */ e("div", { className: "w-10 h-10 rounded-full bg-destructive/10 flex items-center justify-center", children: /* @__PURE__ */ e(ce, { className: "w-5 h-5 text-destructive" }) }),
407
+ "Delete ",
408
+ r.type
409
+ ] }),
410
+ /* @__PURE__ */ t(Z, { children: [
411
+ "This action cannot be undone. This will permanently delete the ",
412
+ r.type.toLowerCase(),
413
+ "."
414
+ ] })
415
+ ] }),
416
+ /* @__PURE__ */ t("form", { onSubmit: f, children: [
417
+ /* @__PURE__ */ t("div", { className: "space-y-4", children: [
418
+ /* @__PURE__ */ e("div", { className: "p-4 bg-destructive/5 border border-destructive/20 rounded-lg", children: /* @__PURE__ */ t("div", { className: "flex items-center gap-3", children: [
419
+ /* @__PURE__ */ e("div", { className: "w-8 h-8 rounded-lg bg-primary/10 flex items-center justify-center", children: r.icon ? /* @__PURE__ */ e(r.icon, { className: "w-4 h-4 text-primary" }) : /* @__PURE__ */ e("span", { className: "text-primary font-bold text-sm", children: r.name.charAt(0).toUpperCase() }) }),
420
+ /* @__PURE__ */ t("div", { children: [
421
+ /* @__PURE__ */ e("p", { className: "font-semibold text-foreground", children: r.name }),
422
+ /* @__PURE__ */ e("p", { className: "text-sm text-muted-foreground", children: r.type })
423
+ ] })
424
+ ] }) }),
425
+ /* @__PURE__ */ e(
426
+ h,
427
+ {
428
+ required: !0,
429
+ label: `Type "${r.name}" to confirm:`,
430
+ placeholder: r.name,
431
+ value: n,
432
+ onChange: i
433
+ }
434
+ )
435
+ ] }),
436
+ /* @__PURE__ */ e(_, { className: "mt-6", children: /* @__PURE__ */ e(
437
+ ae,
438
+ {
439
+ submitText: `Delete ${r.type}`,
440
+ cancelText: "Cancel",
441
+ showCancel: !0,
442
+ loading: g,
443
+ disabled: !o,
444
+ onCancel: c
445
+ }
446
+ ) })
447
+ ] })
448
+ ] }) });
449
+ }
450
+ export {
451
+ De as DeleteConfirmDialog,
452
+ Le as DetailPageLayout
453
+ };
454
+ //# sourceMappingURL=detail-page.js.map