@tirth_jasoliya/ui 1.0.5 → 1.0.6

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 (307) hide show
  1. package/dist/components/core/error.cjs +3 -0
  2. package/dist/components/core/error.cjs.map +1 -0
  3. package/dist/components/core/error.d.cts +5 -0
  4. package/dist/components/core/error.d.ts +5 -0
  5. package/dist/components/core/error.js +3 -0
  6. package/dist/components/core/error.js.map +1 -0
  7. package/dist/components/core/event-success.cjs +3 -0
  8. package/dist/components/core/event-success.cjs.map +1 -0
  9. package/dist/components/core/event-success.d.cts +5 -0
  10. package/dist/components/core/event-success.d.ts +5 -0
  11. package/dist/components/core/event-success.js +3 -0
  12. package/dist/components/core/event-success.js.map +1 -0
  13. package/dist/components/core/index.cjs +3 -0
  14. package/dist/components/core/index.cjs.map +1 -0
  15. package/dist/components/core/index.d.cts +7 -0
  16. package/dist/components/core/index.d.ts +7 -0
  17. package/dist/components/core/index.js +3 -0
  18. package/dist/components/core/index.js.map +1 -0
  19. package/dist/components/core/loader.cjs +3 -0
  20. package/dist/components/core/loader.cjs.map +1 -0
  21. package/dist/components/core/loader.d.cts +5 -0
  22. package/dist/components/core/loader.d.ts +5 -0
  23. package/dist/components/core/loader.js +3 -0
  24. package/dist/components/core/loader.js.map +1 -0
  25. package/dist/components/core/notfound.cjs +3 -0
  26. package/dist/components/core/notfound.cjs.map +1 -0
  27. package/dist/components/core/notfound.d.cts +5 -0
  28. package/dist/components/core/notfound.d.ts +5 -0
  29. package/dist/components/core/notfound.js +3 -0
  30. package/dist/components/core/notfound.js.map +1 -0
  31. package/dist/components/core/offline-content.cjs +3 -0
  32. package/dist/components/core/offline-content.cjs.map +1 -0
  33. package/dist/components/core/offline-content.d.cts +5 -0
  34. package/dist/components/core/offline-content.d.ts +5 -0
  35. package/dist/components/core/offline-content.js +3 -0
  36. package/dist/components/core/offline-content.js.map +1 -0
  37. package/dist/components/core/unauthorized.cjs +3 -0
  38. package/dist/components/core/unauthorized.cjs.map +1 -0
  39. package/dist/components/core/unauthorized.d.cts +5 -0
  40. package/dist/components/core/unauthorized.d.ts +5 -0
  41. package/dist/components/core/unauthorized.js +3 -0
  42. package/dist/components/core/unauthorized.js.map +1 -0
  43. package/dist/components/data/data-table/data-table-action-bar.cjs +3 -0
  44. package/dist/components/data/data-table/data-table-action-bar.cjs.map +1 -0
  45. package/dist/components/data/data-table/data-table-action-bar.d.cts +26 -0
  46. package/dist/components/data/data-table/data-table-action-bar.d.ts +26 -0
  47. package/dist/components/data/data-table/data-table-action-bar.js +3 -0
  48. package/dist/components/data/data-table/data-table-action-bar.js.map +1 -0
  49. package/dist/components/data/data-table/data-table-column-header.cjs +3 -0
  50. package/dist/components/data/data-table/data-table-column-header.cjs.map +1 -0
  51. package/dist/components/data/data-table/data-table-column-header.d.cts +11 -0
  52. package/dist/components/data/data-table/data-table-column-header.d.ts +11 -0
  53. package/dist/components/data/data-table/data-table-column-header.js +3 -0
  54. package/dist/components/data/data-table/data-table-column-header.js.map +1 -0
  55. package/dist/components/data/data-table/data-table-faceted-filter.cjs +3 -0
  56. package/dist/components/data/data-table/data-table-faceted-filter.cjs.map +1 -0
  57. package/dist/components/data/data-table/data-table-faceted-filter.d.cts +18 -0
  58. package/dist/components/data/data-table/data-table-faceted-filter.d.ts +18 -0
  59. package/dist/components/data/data-table/data-table-faceted-filter.js +3 -0
  60. package/dist/components/data/data-table/data-table-faceted-filter.js.map +1 -0
  61. package/dist/components/data/data-table/data-table-pagination.cjs +3 -0
  62. package/dist/components/data/data-table/data-table-pagination.cjs.map +1 -0
  63. package/dist/components/data/data-table/data-table-pagination.d.cts +12 -0
  64. package/dist/components/data/data-table/data-table-pagination.d.ts +12 -0
  65. package/dist/components/data/data-table/data-table-pagination.js +3 -0
  66. package/dist/components/data/data-table/data-table-pagination.js.map +1 -0
  67. package/dist/components/data/data-table/data-table-toolbar.cjs +3 -0
  68. package/dist/components/data/data-table/data-table-toolbar.cjs.map +1 -0
  69. package/dist/components/data/data-table/data-table-toolbar.d.cts +23 -0
  70. package/dist/components/data/data-table/data-table-toolbar.d.ts +23 -0
  71. package/dist/components/data/data-table/data-table-toolbar.js +3 -0
  72. package/dist/components/data/data-table/data-table-toolbar.js.map +1 -0
  73. package/dist/components/data/data-table/data-table-types.cjs +3 -0
  74. package/dist/components/data/data-table/data-table-types.cjs.map +1 -0
  75. package/dist/components/data/data-table/data-table-types.d.cts +69 -0
  76. package/dist/components/data/data-table/data-table-types.d.ts +69 -0
  77. package/dist/components/data/data-table/data-table-types.js +2 -0
  78. package/dist/components/data/data-table/data-table-types.js.map +1 -0
  79. package/dist/components/data/data-table/data-table-view-options.cjs +3 -0
  80. package/dist/components/data/data-table/data-table-view-options.cjs.map +1 -0
  81. package/dist/components/data/data-table/data-table-view-options.d.cts +9 -0
  82. package/dist/components/data/data-table/data-table-view-options.d.ts +9 -0
  83. package/dist/components/data/data-table/data-table-view-options.js +3 -0
  84. package/dist/components/data/data-table/data-table-view-options.js.map +1 -0
  85. package/dist/components/data/data-table/data-table.cjs +3 -0
  86. package/dist/components/data/data-table/data-table.cjs.map +1 -0
  87. package/dist/components/data/data-table/data-table.d.cts +8 -0
  88. package/dist/components/data/data-table/data-table.d.ts +8 -0
  89. package/dist/components/data/data-table/data-table.js +3 -0
  90. package/dist/components/data/data-table/data-table.js.map +1 -0
  91. package/dist/components/data/data-table/index.cjs +3 -0
  92. package/dist/components/data/data-table/index.cjs.map +1 -0
  93. package/dist/components/data/data-table/index.d.cts +16 -0
  94. package/dist/components/data/data-table/index.d.ts +16 -0
  95. package/dist/components/data/data-table/index.js +3 -0
  96. package/dist/components/data/data-table/index.js.map +1 -0
  97. package/dist/components/data/data-template/data-template-action-bar.cjs +3 -0
  98. package/dist/components/data/data-template/data-template-action-bar.cjs.map +1 -0
  99. package/dist/components/data/data-template/data-template-action-bar.d.cts +14 -0
  100. package/dist/components/data/data-template/data-template-action-bar.d.ts +14 -0
  101. package/dist/components/data/data-template/data-template-action-bar.js +3 -0
  102. package/dist/components/data/data-template/data-template-action-bar.js.map +1 -0
  103. package/dist/components/data/data-template/data-template-pagination.cjs +3 -0
  104. package/dist/components/data/data-template/data-template-pagination.cjs.map +1 -0
  105. package/dist/components/data/data-template/data-template-pagination.d.cts +17 -0
  106. package/dist/components/data/data-template/data-template-pagination.d.ts +17 -0
  107. package/dist/components/data/data-template/data-template-pagination.js +3 -0
  108. package/dist/components/data/data-template/data-template-pagination.js.map +1 -0
  109. package/dist/components/data/data-template/data-template-toolbar.cjs +3 -0
  110. package/dist/components/data/data-template/data-template-toolbar.cjs.map +1 -0
  111. package/dist/components/data/data-template/data-template-toolbar.d.cts +27 -0
  112. package/dist/components/data/data-template/data-template-toolbar.d.ts +27 -0
  113. package/dist/components/data/data-template/data-template-toolbar.js +3 -0
  114. package/dist/components/data/data-template/data-template-toolbar.js.map +1 -0
  115. package/dist/components/data/data-template/data-template-types.cjs +3 -0
  116. package/dist/components/data/data-template/data-template-types.cjs.map +1 -0
  117. package/dist/components/data/data-template/data-template-types.d.cts +107 -0
  118. package/dist/components/data/data-template/data-template-types.d.ts +107 -0
  119. package/dist/components/data/data-template/data-template-types.js +2 -0
  120. package/dist/components/data/data-template/data-template-types.js.map +1 -0
  121. package/dist/components/data/data-template/data-template.cjs +3 -0
  122. package/dist/components/data/data-template/data-template.cjs.map +1 -0
  123. package/dist/components/data/data-template/data-template.d.cts +8 -0
  124. package/dist/components/data/data-template/data-template.d.ts +8 -0
  125. package/dist/components/data/data-template/data-template.js +3 -0
  126. package/dist/components/data/data-template/data-template.js.map +1 -0
  127. package/dist/components/data/data-template/index.cjs +3 -0
  128. package/dist/components/data/data-template/index.cjs.map +1 -0
  129. package/dist/components/data/data-template/index.d.cts +8 -0
  130. package/dist/components/data/data-template/index.d.ts +8 -0
  131. package/dist/components/data/data-template/index.js +3 -0
  132. package/dist/components/data/data-template/index.js.map +1 -0
  133. package/dist/components/general.cjs +3 -0
  134. package/dist/components/general.cjs.map +1 -0
  135. package/dist/components/general.d.cts +51 -0
  136. package/dist/components/general.d.ts +51 -0
  137. package/dist/components/general.js +3 -0
  138. package/dist/components/general.js.map +1 -0
  139. package/dist/components/layouts/app-container.cjs +3 -0
  140. package/dist/components/layouts/app-container.cjs.map +1 -0
  141. package/dist/components/layouts/app-container.d.cts +13 -0
  142. package/dist/components/layouts/app-container.d.ts +13 -0
  143. package/dist/components/layouts/app-container.js +3 -0
  144. package/dist/components/layouts/app-container.js.map +1 -0
  145. package/dist/components/layouts/app-content.cjs +3 -0
  146. package/dist/components/layouts/app-content.cjs.map +1 -0
  147. package/dist/components/layouts/app-content.d.cts +45 -0
  148. package/dist/components/layouts/app-content.d.ts +45 -0
  149. package/dist/components/layouts/app-content.js +3 -0
  150. package/dist/components/layouts/app-content.js.map +1 -0
  151. package/dist/components/layouts/app-footer.cjs +3 -0
  152. package/dist/components/layouts/app-footer.cjs.map +1 -0
  153. package/dist/components/layouts/app-footer.d.cts +18 -0
  154. package/dist/components/layouts/app-footer.d.ts +18 -0
  155. package/dist/components/layouts/app-footer.js +3 -0
  156. package/dist/components/layouts/app-footer.js.map +1 -0
  157. package/dist/components/layouts/app-header.cjs +3 -0
  158. package/dist/components/layouts/app-header.cjs.map +1 -0
  159. package/dist/components/layouts/app-header.d.cts +19 -0
  160. package/dist/components/layouts/app-header.d.ts +19 -0
  161. package/dist/components/layouts/app-header.js +3 -0
  162. package/dist/components/layouts/app-header.js.map +1 -0
  163. package/dist/components/layouts/factories.cjs +3 -0
  164. package/dist/components/layouts/factories.cjs.map +1 -0
  165. package/dist/components/layouts/factories.d.cts +18 -0
  166. package/dist/components/layouts/factories.d.ts +18 -0
  167. package/dist/components/layouts/factories.js +3 -0
  168. package/dist/components/layouts/factories.js.map +1 -0
  169. package/dist/components/layouts/index.cjs +3 -0
  170. package/dist/components/layouts/index.cjs.map +1 -0
  171. package/dist/components/layouts/index.d.cts +8 -0
  172. package/dist/components/layouts/index.d.ts +8 -0
  173. package/dist/components/layouts/index.js +3 -0
  174. package/dist/components/layouts/index.js.map +1 -0
  175. package/dist/components/ui/badge.cjs +3 -0
  176. package/dist/components/ui/badge.cjs.map +1 -0
  177. package/dist/components/ui/badge.d.cts +13 -0
  178. package/dist/components/ui/badge.d.ts +13 -0
  179. package/dist/components/ui/badge.js +3 -0
  180. package/dist/components/ui/badge.js.map +1 -0
  181. package/dist/components/ui/button.cjs +3 -0
  182. package/dist/components/ui/button.cjs.map +1 -0
  183. package/dist/components/ui/button.d.cts +14 -0
  184. package/dist/components/ui/button.d.ts +14 -0
  185. package/dist/components/ui/button.js +3 -0
  186. package/dist/components/ui/button.js.map +1 -0
  187. package/dist/components/ui/card.cjs +3 -0
  188. package/dist/components/ui/card.cjs.map +1 -0
  189. package/dist/components/ui/card.d.cts +12 -0
  190. package/dist/components/ui/card.d.ts +12 -0
  191. package/dist/components/ui/card.js +3 -0
  192. package/dist/components/ui/card.js.map +1 -0
  193. package/dist/components/ui/checkbox.cjs +3 -0
  194. package/dist/components/ui/checkbox.cjs.map +1 -0
  195. package/dist/components/ui/checkbox.d.cts +7 -0
  196. package/dist/components/ui/checkbox.d.ts +7 -0
  197. package/dist/components/ui/checkbox.js +3 -0
  198. package/dist/components/ui/checkbox.js.map +1 -0
  199. package/dist/components/ui/command.cjs +3 -0
  200. package/dist/components/ui/command.cjs.map +1 -0
  201. package/dist/components/ui/command.d.cts +20 -0
  202. package/dist/components/ui/command.d.ts +20 -0
  203. package/dist/components/ui/command.js +3 -0
  204. package/dist/components/ui/command.js.map +1 -0
  205. package/dist/components/ui/dialog.cjs +3 -0
  206. package/dist/components/ui/dialog.cjs.map +1 -0
  207. package/dist/components/ui/dialog.d.cts +16 -0
  208. package/dist/components/ui/dialog.d.ts +16 -0
  209. package/dist/components/ui/dialog.js +3 -0
  210. package/dist/components/ui/dialog.js.map +1 -0
  211. package/dist/components/ui/dropdown-menu.cjs +3 -0
  212. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  213. package/dist/components/ui/dropdown-menu.d.cts +28 -0
  214. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  215. package/dist/components/ui/dropdown-menu.js +3 -0
  216. package/dist/components/ui/dropdown-menu.js.map +1 -0
  217. package/dist/components/ui/input.cjs +3 -0
  218. package/dist/components/ui/input.cjs.map +1 -0
  219. package/dist/components/ui/input.d.cts +6 -0
  220. package/dist/components/ui/input.d.ts +6 -0
  221. package/dist/components/ui/input.js +3 -0
  222. package/dist/components/ui/input.js.map +1 -0
  223. package/dist/components/ui/popover.cjs +3 -0
  224. package/dist/components/ui/popover.cjs.map +1 -0
  225. package/dist/components/ui/popover.d.cts +10 -0
  226. package/dist/components/ui/popover.d.ts +10 -0
  227. package/dist/components/ui/popover.js +3 -0
  228. package/dist/components/ui/popover.js.map +1 -0
  229. package/dist/components/ui/select.cjs +3 -0
  230. package/dist/components/ui/select.cjs.map +1 -0
  231. package/dist/components/ui/select.d.cts +18 -0
  232. package/dist/components/ui/select.d.ts +18 -0
  233. package/dist/components/ui/select.js +3 -0
  234. package/dist/components/ui/select.js.map +1 -0
  235. package/dist/components/ui/separator.cjs +3 -0
  236. package/dist/components/ui/separator.cjs.map +1 -0
  237. package/dist/components/ui/separator.d.cts +7 -0
  238. package/dist/components/ui/separator.d.ts +7 -0
  239. package/dist/components/ui/separator.js +3 -0
  240. package/dist/components/ui/separator.js.map +1 -0
  241. package/dist/components/ui/sheet.cjs +3 -0
  242. package/dist/components/ui/sheet.cjs.map +1 -0
  243. package/dist/components/ui/sheet.d.cts +18 -0
  244. package/dist/components/ui/sheet.d.ts +18 -0
  245. package/dist/components/ui/sheet.js +3 -0
  246. package/dist/components/ui/sheet.js.map +1 -0
  247. package/dist/components/ui/table.cjs +3 -0
  248. package/dist/components/ui/table.cjs.map +1 -0
  249. package/dist/components/ui/table.d.cts +13 -0
  250. package/dist/components/ui/table.d.ts +13 -0
  251. package/dist/components/ui/table.js +3 -0
  252. package/dist/components/ui/table.js.map +1 -0
  253. package/dist/components/ui/toggle.cjs +3 -0
  254. package/dist/components/ui/toggle.cjs.map +1 -0
  255. package/dist/components/ui/toggle.d.cts +16 -0
  256. package/dist/components/ui/toggle.d.ts +16 -0
  257. package/dist/components/ui/toggle.js +3 -0
  258. package/dist/components/ui/toggle.js.map +1 -0
  259. package/dist/components/ui/tooltip.cjs +3 -0
  260. package/dist/components/ui/tooltip.cjs.map +1 -0
  261. package/dist/components/ui/tooltip.d.cts +10 -0
  262. package/dist/components/ui/tooltip.d.ts +10 -0
  263. package/dist/components/ui/tooltip.js +3 -0
  264. package/dist/components/ui/tooltip.js.map +1 -0
  265. package/dist/context/app-meta/context.cjs +3 -0
  266. package/dist/context/app-meta/context.cjs.map +1 -0
  267. package/dist/context/app-meta/context.d.cts +18 -0
  268. package/dist/context/app-meta/context.d.ts +18 -0
  269. package/dist/context/app-meta/context.js +3 -0
  270. package/dist/context/app-meta/context.js.map +1 -0
  271. package/dist/context/app-meta/hooks.cjs +3 -0
  272. package/dist/context/app-meta/hooks.cjs.map +1 -0
  273. package/dist/context/app-meta/hooks.d.cts +10 -0
  274. package/dist/context/app-meta/hooks.d.ts +10 -0
  275. package/dist/context/app-meta/hooks.js +3 -0
  276. package/dist/context/app-meta/hooks.js.map +1 -0
  277. package/dist/context/app-meta/index.cjs +3 -0
  278. package/dist/context/app-meta/index.cjs.map +1 -0
  279. package/dist/context/app-meta/index.d.cts +5 -0
  280. package/dist/context/app-meta/index.d.ts +5 -0
  281. package/dist/context/app-meta/index.js +3 -0
  282. package/dist/context/app-meta/index.js.map +1 -0
  283. package/dist/context/app-meta/types.cjs +3 -0
  284. package/dist/context/app-meta/types.cjs.map +1 -0
  285. package/dist/context/app-meta/types.d.cts +48 -0
  286. package/dist/context/app-meta/types.d.ts +48 -0
  287. package/dist/context/app-meta/types.js +2 -0
  288. package/dist/context/app-meta/types.js.map +1 -0
  289. package/dist/context/index.cjs +3 -0
  290. package/dist/context/index.cjs.map +1 -0
  291. package/dist/context/index.d.cts +5 -0
  292. package/dist/context/index.d.ts +5 -0
  293. package/dist/context/index.js +3 -0
  294. package/dist/context/index.js.map +1 -0
  295. package/dist/index.cjs +2 -3490
  296. package/dist/index.cjs.map +1 -1
  297. package/dist/index.d.cts +29 -410
  298. package/dist/index.d.ts +29 -410
  299. package/dist/index.js +2 -3442
  300. package/dist/index.js.map +1 -1
  301. package/dist/lib/utils.cjs +3 -0
  302. package/dist/lib/utils.cjs.map +1 -0
  303. package/dist/lib/utils.d.cts +5 -0
  304. package/dist/lib/utils.d.ts +5 -0
  305. package/dist/lib/utils.js +3 -0
  306. package/dist/lib/utils.js.map +1 -0
  307. package/package.json +32 -11
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/layouts/index.ts","../../../src/lib/utils.ts","../../../src/components/layouts/app-container.tsx","../../../src/components/layouts/app-header.tsx","../../../src/components/ui/button.tsx","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx","../../../src/components/layouts/app-footer.tsx","../../../src/components/layouts/factories.tsx"],"sourcesContent":["export * from './app-container.jsx';\r\nexport * from './app-header.jsx';\r\nexport * from './app-content.jsx';\r\nexport * from './app-footer.jsx';\r\nexport * from './factories.jsx';","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { cn } from '../../lib/utils.js';\r\nimport type { ReactNode } from 'react';\r\n\r\ntype SpacingSize = 'none' | 'tight' | 'default' | 'loose' | 'extra-loose';\r\n\r\nconst spacingClasses: Record<SpacingSize, string> = {\r\n 'none': 'gap-0',\r\n 'tight': 'gap-2',\r\n 'default': 'gap-4',\r\n 'loose': 'gap-6',\r\n 'extra-loose': 'gap-8'\r\n};\r\n\r\nexport type AppContainerProps = {\r\n children: ReactNode;\r\n className?: string;\r\n spacing?: SpacingSize;\r\n padding?: 'none' | 'tight' | 'default' | 'loose';\r\n};\r\n\r\nconst paddingClasses: Record<NonNullable<AppContainerProps['padding']>, string> = {\r\n 'none': 'p-0',\r\n 'tight': 'p-2',\r\n 'default': 'p-4',\r\n 'loose': 'p-6'\r\n};\r\n\r\nexport const AppContainer = ({\r\n children,\r\n className,\r\n spacing = 'tight',\r\n padding = 'none',\r\n}: AppContainerProps) => {\r\n return (\r\n <div className={cn(\r\n 'flex flex-col h-full',\r\n spacingClasses[spacing],\r\n paddingClasses[padding],\r\n className\r\n )}>\r\n {children}\r\n </div>\r\n );\r\n};","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { ArrowLeftIcon, ChevronRight } from 'lucide-react';\r\nimport { cn } from '../../lib/utils.js';\r\nimport { Button } from '../../components/ui/button.jsx';\r\nimport type { ReactNode } from 'react';\r\nimport { NavLink } from 'react-router';\r\n\r\ntype ColumnConfig = {\r\n content: ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppHeaderProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n showBackButton?: boolean;\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppHeader = ({\r\n className,\r\n columns = [],\r\n showBackButton = true,\r\n meta = { title: \"\" },\r\n}: AppHeaderProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n const renderBackAction = () => {\r\n if (!meta.backAction || !showBackButton) return null;\r\n\r\n const buttonProps = {\r\n variant: 'secondary',\r\n size: 'icon',\r\n className: 'hover:bg-primary/20 inline-flex',\r\n } as const;\r\n\r\n if (meta.backAction.href) {\r\n return (\r\n <NavLink to={meta.backAction.href}>\r\n <Button {...buttonProps}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n </NavLink>\r\n );\r\n }\r\n\r\n return (\r\n <Button {...buttonProps} onClick={meta.backAction.onClick}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n );\r\n };\r\n\r\n const renderMetadata = () => {\r\n if (!meta.metadata || meta.metadata.length === 0) return null;\r\n\r\n return (\r\n <div className=\"flex gap-4\">\r\n {meta.metadata.map((item, index) => (\r\n item.value && (\r\n <div key={index} className=\"text-sm\">\r\n <span className=\"text-muted-foreground\">{item.label} </span>\r\n <span>{item.value}</span>\r\n </div>\r\n )\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderStatus = () => {\r\n if (!meta.status) return null;\r\n\r\n const colorClasses = {\r\n success: 'bg-green-100 text-green-800',\r\n warning: 'bg-yellow-100 text-yellow-800',\r\n critical: 'bg-red-100 text-red-800',\r\n info: 'bg-blue-100 text-blue-800',\r\n default: 'bg-gray-100 text-gray-800',\r\n };\r\n\r\n return (\r\n <span className={cn(\r\n 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium',\r\n colorClasses[meta.status.color as keyof typeof colorClasses]\r\n )}>\r\n {meta.status.content}\r\n </span>\r\n );\r\n };\r\n\r\n const reservedColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex gap-2 items-center\">\r\n {renderBackAction()}\r\n <div className=\"flex flex-col gap-2 w-max\">\r\n <h1 className=\"text-2xl font-bold tracking-tight\">{meta.title}</h1>\r\n {renderStatus()}\r\n {meta.description && (\r\n <p className=\"text-muted-foreground\">{meta.description}</p>\r\n )}\r\n {renderMetadata()}\r\n {meta.breadcrumbs && meta.breadcrumbs.length > 0 && (\r\n <div className=\"flex items-center text-sm text-muted-foreground\">\r\n {meta.breadcrumbs.map((crumb, index) => (\r\n <div key={index} className=\"flex items-center\">\r\n {crumb.href ? (\r\n <span className=\"hover:text-primary hover:underline\">\r\n {crumb.label}\r\n </span>\r\n ) : (\r\n <span>{crumb.label}</span>\r\n )}\r\n {index < meta.breadcrumbs!.length - 1 && (\r\n <ChevronRight className=\"mx-2 h-4 w-4\" />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ),\r\n align: 'left',\r\n width: 'fill',\r\n };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: meta.primaryActions,\r\n align: 'right',\r\n width: 'auto',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n reservedColumn,\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4 p-2', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n showSheetOverlay?: boolean\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding]\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetTrigger,\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n showSheetOverlay = true,\r\n disableOverlay = true,\r\n } = props as WithSheetLayoutProps\r\n\r\n const isControlled = isSheetOpen !== undefined\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth)\r\n\r\n return (\r\n <div className={cn(\r\n \"flex relative flex-1 overflow-hidden\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n )}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n {sheetTrigger && (\r\n <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n {sheetTrigger}\r\n </div>\r\n )}\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n\r\n {/* Container overlay */}\r\n {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-secondary/20 z-40\",\r\n \"transition-opacity duration-500 ease-in-out\",\r\n \"opacity-0\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onClick={() => setSheetOpen?.(false)}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n <SheetPortal>\r\n {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][1],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n )\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// import { cn } from \"@/lib/utils\"\r\n// import React, { useState, createContext, useContext } from \"react\"\r\n// import {\r\n// Sheet,\r\n// SheetTrigger,\r\n// SheetContent,\r\n// SheetPortal,\r\n// SheetOverlay\r\n// } from \"@/components/ui/sheet\"\r\n\r\n// const AppContentContext = createContext(false)\r\n\r\n// type SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\n// type SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\n// type SheetMode = \"fullscreen\" | \"container\"\r\n\r\n// type BaseAppContentProps = {\r\n// children: React.ReactNode\r\n// className?: string\r\n// variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n// header?: React.ReactNode\r\n// footer?: React.ReactNode\r\n// headerClassName?: string\r\n// footerClassName?: string\r\n// parentContainer?: boolean\r\n// padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n// }\r\n\r\n// type FullLayoutProps = BaseAppContentProps & {\r\n// layout?: \"full\"\r\n// }\r\n\r\n// type SplitLayoutProps = BaseAppContentProps & {\r\n// layout: \"split\"\r\n// splitRatio?: SplitRatio\r\n// reverse?: boolean\r\n// }\r\n\r\n// type SheetOptions = {\r\n// sheetContent: React.ReactNode\r\n// sheetWidth?: SplitRatio\r\n// sheetSide?: SheetSide\r\n// sheetMode?: SheetMode\r\n// onSheetClose?: () => void\r\n// showSheetOverlay?: boolean\r\n// sheetClassName?: string\r\n// isSheetOpen?: boolean\r\n// onSheetOpenChange?: (open: boolean) => void\r\n// sheetTrigger?: React.ReactNode\r\n// disableOverlay?: boolean\r\n// }\r\n\r\n// type WithSheetLayoutProps = BaseAppContentProps & {\r\n// layout: \"with-sheet\"\r\n// } & SheetOptions\r\n\r\n// type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\n// const splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n// \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n// \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n// \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n// \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n// \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n// \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n// \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n// }\r\n\r\n// const paddingClasses = {\r\n// none: \"p-0\",\r\n// tight: \"p-2\",\r\n// default: \"p-4\",\r\n// loose: \"p-6\",\r\n// }\r\n\r\n// const getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n// const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n// return {\r\n// container: \"inset-y-0 z-50\",\r\n// content: cn(\"h-full bg-background\", side === \"right\" ? \"border-l\" : \"border-r\"),\r\n// transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n// transformOpen: \"translate-x-0\",\r\n// contentPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n// sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n// }\r\n// }\r\n\r\n// const baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\n// const variantClasses = {\r\n// default: \"bg-background\",\r\n// card: \"bg-background shadow-sm border\",\r\n// border: \"bg-background border-2\",\r\n// transparent: \"bg-transparent\",\r\n// }\r\n\r\n// export const AppContent = (props: AppContentProps) => {\r\n// const {\r\n// children,\r\n// className,\r\n// variant = \"default\",\r\n// layout = \"full\",\r\n// header,\r\n// footer,\r\n// headerClassName,\r\n// footerClassName,\r\n// parentContainer = false,\r\n// padding = parentContainer ? \"none\" : \"tight\",\r\n// } = props\r\n\r\n// const isNested = useContext(AppContentContext)\r\n// const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n// const contentWrapper = React.useCallback(\r\n// (content: React.ReactNode) => (\r\n// <div className={cn(\r\n// \"flex-1 overflow-auto h-full\",\r\n// !parentContainer && paddingClasses[padding]\r\n// )}>\r\n// {content}\r\n// </div>\r\n// ),\r\n// [padding, parentContainer]\r\n// )\r\n\r\n// const renderContent = () => {\r\n// switch (layout) {\r\n// case \"split\": {\r\n// const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n// if (!Array.isArray(children) || children.length !== 2) {\r\n// return (\r\n// <div className=\"flex items-center justify-center h-full text-red-500\">\r\n// Error: AppContent with layout=\"split\" requires exactly 2 children\r\n// </div>\r\n// )\r\n// }\r\n\r\n// const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n// const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n// const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n// return (\r\n// <div className=\"flex h-full gap-4\">\r\n// <div className={cn(firstClass, \"overflow-auto\")}>\r\n// {contentWrapper(firstChild)}\r\n// </div>\r\n// <div className={cn(secondClass, \"overflow-auto\")}>\r\n// {contentWrapper(secondChild)}\r\n// </div>\r\n// </div>\r\n// )\r\n// }\r\n\r\n// case \"with-sheet\": {\r\n// const {\r\n// sheetContent,\r\n// sheetWidth = \"four-fifth\",\r\n// sheetSide = \"right\",\r\n// sheetMode = \"container\",\r\n// sheetTrigger,\r\n// sheetClassName,\r\n// isSheetOpen,\r\n// onSheetOpenChange,\r\n// showSheetOverlay = true,\r\n// disableOverlay = false,\r\n// } = props as WithSheetLayoutProps\r\n\r\n// const isControlled = isSheetOpen !== undefined\r\n// const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen\r\n// const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen\r\n\r\n// if (sheetMode === \"container\") {\r\n// const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth)\r\n\r\n// return (\r\n// <div className={cn(\r\n// \"flex relative flex-1 overflow-hidden\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// )}>\r\n// {/* Main content area */}\r\n// <div className={cn(\r\n// \"h-full overflow-auto transition-all duration-500\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// ? sheetClasses.contentPushClass\r\n// : \"w-full\",\r\n// sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n// )}>\r\n// {sheetTrigger && (\r\n// <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n// {sheetTrigger}\r\n// </div>\r\n// )}\r\n// <div className={cn(!parentContainer && paddingClasses[padding])}>\r\n// {children}\r\n// </div>\r\n// </div>\r\n\r\n// {/* Container sheet */}\r\n// <div\r\n// className={cn(\r\n// sheetClasses.container,\r\n// \"transition-all duration-500 ease-out\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n// : sheetOpen\r\n// ? sheetClasses.transformOpen\r\n// : cn(sheetClasses.transform, \"hidden\"),\r\n// \"overflow-y-auto\"\r\n// )}\r\n// >\r\n// <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n// {sheetContent}\r\n// </div>\r\n// </div>\r\n\r\n// {/* Container overlay */}\r\n// {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n// <div\r\n// className={cn(\"absolute inset-0 bg-secondary/20 z-40\")}\r\n// onClick={() => setSheetOpen?.(false)}\r\n// />\r\n// )}\r\n// </div>\r\n// )\r\n// }\r\n\r\n// return (\r\n// <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n// {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n// <SheetPortal>\r\n// {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n// <SheetContent\r\n// side={sheetSide}\r\n// className={cn(\r\n// \"fixed bg-background border\",\r\n// splitRatioClasses[sheetWidth][1],\r\n// sheetClassName\r\n// )}\r\n// >\r\n// {sheetContent}\r\n// </SheetContent>\r\n// </SheetPortal>\r\n// </Sheet>\r\n// )\r\n// }\r\n\r\n// default:\r\n// return contentWrapper(children)\r\n// }\r\n// }\r\n\r\n// return (\r\n// <AppContentContext.Provider value={true}>\r\n// <div className={cn(\r\n// baseClasses,\r\n// variantClasses[variant],\r\n// paddingClasses[padding],\r\n// isNested && \"flex-1\",\r\n// parentContainer && \"h-full\",\r\n// !parentContainer && \"rounded-2xl\",\r\n// className\r\n// )}>\r\n// {header && (\r\n// <div\r\n// className={cn(\r\n// \"border-b\",\r\n// headerClassName,\r\n// variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n// variant === \"border\" && \"border-b-2\",\r\n// paddingClasses[padding]\r\n// )}\r\n// >\r\n// {header}\r\n// </div>\r\n// )}\r\n// {renderContent()}\r\n// {footer && (\r\n// <div\r\n// className={cn(\r\n// \"border-t\",\r\n// footerClassName,\r\n// variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n// variant === \"border\" && \"border-t-2\",\r\n// paddingClasses[padding]\r\n// )}\r\n// >\r\n// {footer}\r\n// </div>\r\n// )}\r\n// </div>\r\n// </AppContentContext.Provider>\r\n// )\r\n// }\r\n\r\n","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { cn } from '../../lib/utils.js';\r\n\r\ntype ColumnConfig = {\r\n content: React.ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppFooterProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppFooter = ({\r\n className,\r\n columns = [],\r\n meta = { title: \"\" },\r\n}: AppFooterProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n // const renderPagination = () => {\r\n // if (!meta.pagination) return null;\r\n\r\n // return (\r\n // <div className=\"flex items-center gap-2\">\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasPrevious}\r\n // onClick={meta.pagination.onPrevious}\r\n // >\r\n // <ChevronLeft className=\"h-4 w-4 mr-1\" />\r\n // {meta.pagination.previousLabel || 'Previous'}\r\n // </Button>\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasNext}\r\n // onClick={meta.pagination.onNext}\r\n // >\r\n // {meta.pagination.nextLabel || 'Next'}\r\n // <ChevronRight className=\"h-4 w-4 ml-1\" />\r\n // </Button>\r\n // </div>\r\n // );\r\n // };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex items-center gap-4 p-2\">\r\n {/* {renderPagination()} */}\r\n {meta.secondaryActions}\r\n </div>\r\n ),\r\n align: 'right',\r\n width: 'fill',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};","import type { AppMetaContextType } from '../../context/app-meta/types.js';\r\nimport { AppHeaderProps, AppHeader as BaseAppHeader } from './app-header.jsx';\r\nimport { AppFooterProps, AppFooter as BaseAppFooter } from './app-footer.jsx';\r\nimport { AppContentProps, AppContent as BaseAppContent } from './app-content.jsx';\r\nimport { AppContainerProps, AppContainer as BaseAppContainer } from './app-container.jsx';\r\n\r\nexport function createLayoutComponents<TRoute extends string>({\r\n useTypedAppMeta,\r\n}: {\r\n useTypedAppMeta: () => AppMetaContextType<TRoute>;\r\n}) {\r\n const AppHeader = (props: Omit<AppHeaderProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppHeader {...props} meta={meta} />;\r\n };\r\n\r\n const AppFooter = (props: Omit<AppFooterProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppFooter {...props} meta={meta} />;\r\n };\r\n\r\n const AppContent = (props: AppContentProps) => (\r\n <BaseAppContent {...props} />\r\n );\r\n\r\n const AppContainer = (props: AppContainerProps) => (\r\n <BaseAppContainer {...props} />\r\n );\r\n\r\n return {\r\n AppHeader,\r\n AppFooter,\r\n AppContent,\r\n AppContainer,\r\n };\r\n}"],"mappings":"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","names":["layouts_exports","__export","AppContainer","AppContent","AppFooter","AppHeader","createLayoutComponents","__toCommonJS","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","spacingClasses","paddingClasses","AppContainer","children","className","spacing","padding","cn","import_lucide_react","import_radix_ui","import_class_variance_authority","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","import_react_router","import_jsx_runtime","AppHeader","className","columns","showBackButton","meta","renderBackAction","buttonProps","Button","renderMetadata","item","index","renderStatus","cn","reservedColumn","crumb","actionsColumn","allColumns","col","column","import_react","import_radix_ui","import_lucide_react","import_jsx_runtime","Sheet","props","SheetPrimitive","SheetTrigger","SheetPortal","props","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","import_jsx_runtime","AppContentContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","footerClassName","parentContainer","padding","isNested","internalSheetOpen","setInternalSheetOpen","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetTrigger","sheetClassName","isSheetOpen","onSheetOpenChange","showSheetOverlay","disableOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","Sheet","SheetTrigger","SheetPortal","SheetOverlay","SheetContent","import_jsx_runtime","AppFooter","className","columns","meta","actionsColumn","allColumns","col","cn","column","index","import_jsx_runtime","createLayoutComponents","useTypedAppMeta","props","meta","AppHeader","AppFooter","AppContent","AppContainer"]}
@@ -0,0 +1,8 @@
1
+ export { AppContainer, AppContainerProps } from './app-container.cjs';
2
+ export { AppHeader, AppHeaderProps } from './app-header.cjs';
3
+ export { AppContent, AppContentProps } from './app-content.cjs';
4
+ export { AppFooter, AppFooterProps } from './app-footer.cjs';
5
+ export { createLayoutComponents } from './factories.cjs';
6
+ import 'react/jsx-runtime';
7
+ import 'react';
8
+ import '../../context/app-meta/types.cjs';
@@ -0,0 +1,8 @@
1
+ export { AppContainer, AppContainerProps } from './app-container.js';
2
+ export { AppHeader, AppHeaderProps } from './app-header.js';
3
+ export { AppContent, AppContentProps } from './app-content.js';
4
+ export { AppFooter, AppFooterProps } from './app-footer.js';
5
+ export { createLayoutComponents } from './factories.js';
6
+ import 'react/jsx-runtime';
7
+ import 'react';
8
+ import '../../context/app-meta/types.js';
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ import{clsx as ee}from"clsx";import{twMerge as te}from"tailwind-merge";function o(...t){return te(ee(t))}import{jsx as ae}from"react/jsx-runtime";var oe={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ne={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},j=({children:t,className:a,spacing:s="tight",padding:e="none"})=>ae("div",{className:o("flex flex-col h-full",oe[s],ne[e],a),children:t});import{ArrowLeftIcon as q,ChevronRight as pe}from"lucide-react";import{Slot as re}from"radix-ui";import{cva as se}from"class-variance-authority";import{jsx as le}from"react/jsx-runtime";var ie=se("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function F({className:t,variant:a,size:s,asChild:e=!1,...f}){let r=e?re.Slot:"button";return le(r,{"data-slot":"button",className:o(ie({variant:a,size:s,className:t}),"transition-none"),...f})}import{NavLink as de}from"react-router";import{jsx as l,jsxs as m}from"react/jsx-runtime";var E=({className:t,columns:a=[],showBackButton:s=!0,meta:e={title:""}})=>{let f=()=>{if(!e.backAction||!s)return null;let n={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return e.backAction.href?l(de,{to:e.backAction.href,children:m(F,{...n,children:[l(q,{className:"size-6"}),e.backAction.content]})}):m(F,{...n,onClick:e.backAction.onClick,children:[l(q,{className:"size-6"}),e.backAction.content]})},r=()=>!e.metadata||e.metadata.length===0?null:l("div",{className:"flex gap-4",children:e.metadata.map((n,u)=>n.value&&m("div",{className:"text-sm",children:[m("span",{className:"text-muted-foreground",children:[n.label," "]}),l("span",{children:n.value})]},u))}),d=()=>e.status?l("span",{className:o("inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",{success:"bg-green-100 text-green-800",warning:"bg-yellow-100 text-yellow-800",critical:"bg-red-100 text-red-800",info:"bg-blue-100 text-blue-800",default:"bg-gray-100 text-gray-800"}[e.status.color]),children:e.status.content}):null,O={content:m("div",{className:"flex gap-2 items-center",children:[f(),m("div",{className:"flex flex-col gap-2 w-max",children:[l("h1",{className:"text-2xl font-bold tracking-tight",children:e.title}),d(),e.description&&l("p",{className:"text-muted-foreground",children:e.description}),r(),e.breadcrumbs&&e.breadcrumbs.length>0&&l("div",{className:"flex items-center text-sm text-muted-foreground",children:e.breadcrumbs.map((n,u)=>m("div",{className:"flex items-center",children:[n.href?l("span",{className:"hover:text-primary hover:underline",children:n.label}):l("span",{children:n.label}),u<e.breadcrumbs.length-1&&l(pe,{className:"mx-2 h-4 w-4"})]},u))})]})]}),align:"left",width:"fill"},z={content:e.primaryActions,align:"right",width:"auto"},p=[O,...a.filter(n=>n!==void 0),z];return l("div",{className:o("flex items-center w-full gap-4 p-2",t),children:p.map((n,u)=>l("div",{className:o("flex items-center h-full",n.className,{"justify-start":n.align==="left","justify-center":n.align==="center","justify-end":n.align==="right","flex-1":n.width==="fill"}),children:n.content},u))})};import fe,{useState as ue,createContext as he,useContext as me}from"react";import{Dialog as x}from"radix-ui";import{XIcon as ce}from"lucide-react";import{jsx as g,jsxs as L}from"react/jsx-runtime";function X({...t}){return g(x.Root,{"data-slot":"sheet",...t})}function G({...t}){return g(x.Trigger,{"data-slot":"sheet-trigger",...t})}function H({...t}){return g(x.Portal,{"data-slot":"sheet-portal",...t})}function W({className:t,...a}){return g(x.Overlay,{"data-slot":"sheet-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...a})}function J({className:t,children:a,side:s="right",...e}){return L(H,{children:[g(W,{}),L(x.Content,{"data-slot":"sheet-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",s==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",s==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",s==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",s==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",t),...e,children:[a,L(x.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[g(ce,{className:"size-4"}),g("span",{className:"sr-only",children:"Close"})]})]})]})}import{jsx as i,jsxs as y}from"react/jsx-runtime";var K=he(!1),V={"one-half":["w-1/2","w-1/2"],"one-third":["w-1/3","w-2/3"],"two-third":["w-2/3","w-1/3"],"one-fourth":["w-1/4","w-3/4"],"three-fourth":["w-3/4","w-1/4"],"one-fifth":["w-1/5","w-4/5"],"four-fifth":["w-4/5","w-1/5"]},P={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ge=(t,a)=>{let[s,e]=V[a];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:o("h-full bg-background transition-all duration-500 ease-in-out",t==="right"?"border-l":"border-r"),transform:t==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:t==="right"?s:e,sheetPushClass:t==="right"?e:s}},ve="flex flex-col overflow-hidden rounded-2xl relative",Ce={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},Q=t=>{let{children:a,className:s,variant:e="default",layout:f="full",header:r,footer:d,headerClassName:O,footerClassName:z,parentContainer:p=!1,padding:n=p?"none":"tight"}=t,u=me(K),[Y,Z]=ue(!1),B=fe.useCallback(v=>i("div",{className:o("flex-1 overflow-auto h-full no-scrollbar",p&&"flex",!p&&P[n]),children:v}),[n,p]),$=()=>{switch(f){case"split":{let{splitRatio:v="three-fourth",reverse:N=!1}=t;if(!Array.isArray(a)||a.length!==2)return i("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[h,A]=V[v],[C,w]=N?[a[1],a[0]]:[a[0],a[1]],[R,M]=N?[A,h]:[h,A];return y("div",{className:"flex h-full gap-2",children:[i("div",{className:o(R,"overflow-auto"),children:B(C)}),i("div",{className:o(M,"overflow-auto"),children:B(w)})]})}case"with-sheet":{let{sheetContent:v,sheetWidth:N="four-fifth",sheetSide:h="right",sheetMode:A="container",sheetTrigger:C,sheetClassName:w,isSheetOpen:R,onSheetOpenChange:M,showSheetOverlay:I=!0,disableOverlay:S=!0}=t,_=R!==void 0,c=_?R:Y,T=_?M:Z;if(A==="container"){let b=ge(h,N);return y("div",{className:o("flex relative flex-1 overflow-hidden",c&&S&&["left","right"].includes(h)),children:[y("div",{className:o("h-full overflow-auto transition-all duration-500",c&&S&&["left","right"].includes(h)?b.contentPushClass:"w-full",c&&S&&"overflow-y-auto overflow-x-hidden"),children:[C&&i("div",{onClick:()=>T?.(!c),children:C}),i("div",{className:o("h-full",!p&&P[n]),children:a})]}),i("div",{className:o(b.container,"transition-all duration-500 ease-in-out",c&&S&&["left","right"].includes(h)?o(b.sheetPushClass,"overflow-y-auto"):c?b.transformOpen:o(b.transform,"hidden"),"overflow-y-auto"),children:i("div",{className:o(b.content,w,"h-full"),children:v})}),c&&I&&!S&&i("div",{className:o("absolute inset-0 bg-secondary/20 z-40","transition-opacity duration-500 ease-in-out","opacity-0",c?"opacity-100":"opacity-0"),onClick:()=>T?.(!1)})]})}return y(X,{open:c,onOpenChange:T,children:[C&&i(G,{asChild:!0,children:C}),y(H,{children:[I&&i(W,{className:"fixed inset-0 bg-secondary/50 z-50"}),i(J,{side:h,className:o("fixed bg-background border","transition-all duration-500 ease-in-out",V[N][1],w),children:v})]})]})}default:return B(a)}};return i(K.Provider,{value:!0,children:y("div",{className:o(ve,Ce[e],P[n],u&&"flex-1",p&&"h-full",!p&&"rounded-2xl",s),children:[r&&i("div",{className:o("border-b",O,e==="card"&&!p&&"rounded-t-2xl",e==="border"&&"border-b-2",P[n]),children:r}),$(),d&&i("div",{className:o("border-t",z,e==="card"&&!p&&"rounded-b-2xl",e==="border"&&"border-t-2",P[n]),children:d})]})})};import{jsx as D}from"react/jsx-runtime";var U=({className:t,columns:a=[],meta:s={title:""}})=>{let e={content:D("div",{className:"flex items-center gap-4 p-2",children:s.secondaryActions}),align:"right",width:"fill"},f=[...a.filter(r=>r!==void 0),e];return D("div",{className:o("flex items-center w-full gap-4",t),children:f.map((r,d)=>D("div",{className:o("flex items-center h-full",r.className,{"justify-start":r.align==="left","justify-center":r.align==="center","justify-end":r.align==="right","flex-1":r.width==="fill"}),children:r.content},d))})};import{jsx as k}from"react/jsx-runtime";function nt({useTypedAppMeta:t}){return{AppHeader:r=>{let{meta:d}=t();return k(E,{...r,meta:d})},AppFooter:r=>{let{meta:d}=t();return k(U,{...r,meta:d})},AppContent:r=>k(Q,{...r}),AppContainer:r=>k(j,{...r})}}export{j as AppContainer,Q as AppContent,U as AppFooter,E as AppHeader,nt as createLayoutComponents};
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/layouts/app-container.tsx","../../../src/components/layouts/app-header.tsx","../../../src/components/ui/button.tsx","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx","../../../src/components/layouts/app-footer.tsx","../../../src/components/layouts/factories.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { cn } from '../../lib/utils.js';\r\nimport type { ReactNode } from 'react';\r\n\r\ntype SpacingSize = 'none' | 'tight' | 'default' | 'loose' | 'extra-loose';\r\n\r\nconst spacingClasses: Record<SpacingSize, string> = {\r\n 'none': 'gap-0',\r\n 'tight': 'gap-2',\r\n 'default': 'gap-4',\r\n 'loose': 'gap-6',\r\n 'extra-loose': 'gap-8'\r\n};\r\n\r\nexport type AppContainerProps = {\r\n children: ReactNode;\r\n className?: string;\r\n spacing?: SpacingSize;\r\n padding?: 'none' | 'tight' | 'default' | 'loose';\r\n};\r\n\r\nconst paddingClasses: Record<NonNullable<AppContainerProps['padding']>, string> = {\r\n 'none': 'p-0',\r\n 'tight': 'p-2',\r\n 'default': 'p-4',\r\n 'loose': 'p-6'\r\n};\r\n\r\nexport const AppContainer = ({\r\n children,\r\n className,\r\n spacing = 'tight',\r\n padding = 'none',\r\n}: AppContainerProps) => {\r\n return (\r\n <div className={cn(\r\n 'flex flex-col h-full',\r\n spacingClasses[spacing],\r\n paddingClasses[padding],\r\n className\r\n )}>\r\n {children}\r\n </div>\r\n );\r\n};","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { ArrowLeftIcon, ChevronRight } from 'lucide-react';\r\nimport { cn } from '../../lib/utils.js';\r\nimport { Button } from '../../components/ui/button.jsx';\r\nimport type { ReactNode } from 'react';\r\nimport { NavLink } from 'react-router';\r\n\r\ntype ColumnConfig = {\r\n content: ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppHeaderProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n showBackButton?: boolean;\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppHeader = ({\r\n className,\r\n columns = [],\r\n showBackButton = true,\r\n meta = { title: \"\" },\r\n}: AppHeaderProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n const renderBackAction = () => {\r\n if (!meta.backAction || !showBackButton) return null;\r\n\r\n const buttonProps = {\r\n variant: 'secondary',\r\n size: 'icon',\r\n className: 'hover:bg-primary/20 inline-flex',\r\n } as const;\r\n\r\n if (meta.backAction.href) {\r\n return (\r\n <NavLink to={meta.backAction.href}>\r\n <Button {...buttonProps}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n </NavLink>\r\n );\r\n }\r\n\r\n return (\r\n <Button {...buttonProps} onClick={meta.backAction.onClick}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n );\r\n };\r\n\r\n const renderMetadata = () => {\r\n if (!meta.metadata || meta.metadata.length === 0) return null;\r\n\r\n return (\r\n <div className=\"flex gap-4\">\r\n {meta.metadata.map((item, index) => (\r\n item.value && (\r\n <div key={index} className=\"text-sm\">\r\n <span className=\"text-muted-foreground\">{item.label} </span>\r\n <span>{item.value}</span>\r\n </div>\r\n )\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderStatus = () => {\r\n if (!meta.status) return null;\r\n\r\n const colorClasses = {\r\n success: 'bg-green-100 text-green-800',\r\n warning: 'bg-yellow-100 text-yellow-800',\r\n critical: 'bg-red-100 text-red-800',\r\n info: 'bg-blue-100 text-blue-800',\r\n default: 'bg-gray-100 text-gray-800',\r\n };\r\n\r\n return (\r\n <span className={cn(\r\n 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium',\r\n colorClasses[meta.status.color as keyof typeof colorClasses]\r\n )}>\r\n {meta.status.content}\r\n </span>\r\n );\r\n };\r\n\r\n const reservedColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex gap-2 items-center\">\r\n {renderBackAction()}\r\n <div className=\"flex flex-col gap-2 w-max\">\r\n <h1 className=\"text-2xl font-bold tracking-tight\">{meta.title}</h1>\r\n {renderStatus()}\r\n {meta.description && (\r\n <p className=\"text-muted-foreground\">{meta.description}</p>\r\n )}\r\n {renderMetadata()}\r\n {meta.breadcrumbs && meta.breadcrumbs.length > 0 && (\r\n <div className=\"flex items-center text-sm text-muted-foreground\">\r\n {meta.breadcrumbs.map((crumb, index) => (\r\n <div key={index} className=\"flex items-center\">\r\n {crumb.href ? (\r\n <span className=\"hover:text-primary hover:underline\">\r\n {crumb.label}\r\n </span>\r\n ) : (\r\n <span>{crumb.label}</span>\r\n )}\r\n {index < meta.breadcrumbs!.length - 1 && (\r\n <ChevronRight className=\"mx-2 h-4 w-4\" />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ),\r\n align: 'left',\r\n width: 'fill',\r\n };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: meta.primaryActions,\r\n align: 'right',\r\n width: 'auto',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n reservedColumn,\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4 p-2', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n showSheetOverlay?: boolean\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding]\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetTrigger,\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n showSheetOverlay = true,\r\n disableOverlay = true,\r\n } = props as WithSheetLayoutProps\r\n\r\n const isControlled = isSheetOpen !== undefined\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth)\r\n\r\n return (\r\n <div className={cn(\r\n \"flex relative flex-1 overflow-hidden\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n )}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n {sheetTrigger && (\r\n <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n {sheetTrigger}\r\n </div>\r\n )}\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n\r\n {/* Container overlay */}\r\n {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-secondary/20 z-40\",\r\n \"transition-opacity duration-500 ease-in-out\",\r\n \"opacity-0\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onClick={() => setSheetOpen?.(false)}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n <SheetPortal>\r\n {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][1],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n )\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// import { cn } from \"@/lib/utils\"\r\n// import React, { useState, createContext, useContext } from \"react\"\r\n// import {\r\n// Sheet,\r\n// SheetTrigger,\r\n// SheetContent,\r\n// SheetPortal,\r\n// SheetOverlay\r\n// } from \"@/components/ui/sheet\"\r\n\r\n// const AppContentContext = createContext(false)\r\n\r\n// type SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\n// type SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\n// type SheetMode = \"fullscreen\" | \"container\"\r\n\r\n// type BaseAppContentProps = {\r\n// children: React.ReactNode\r\n// className?: string\r\n// variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n// header?: React.ReactNode\r\n// footer?: React.ReactNode\r\n// headerClassName?: string\r\n// footerClassName?: string\r\n// parentContainer?: boolean\r\n// padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n// }\r\n\r\n// type FullLayoutProps = BaseAppContentProps & {\r\n// layout?: \"full\"\r\n// }\r\n\r\n// type SplitLayoutProps = BaseAppContentProps & {\r\n// layout: \"split\"\r\n// splitRatio?: SplitRatio\r\n// reverse?: boolean\r\n// }\r\n\r\n// type SheetOptions = {\r\n// sheetContent: React.ReactNode\r\n// sheetWidth?: SplitRatio\r\n// sheetSide?: SheetSide\r\n// sheetMode?: SheetMode\r\n// onSheetClose?: () => void\r\n// showSheetOverlay?: boolean\r\n// sheetClassName?: string\r\n// isSheetOpen?: boolean\r\n// onSheetOpenChange?: (open: boolean) => void\r\n// sheetTrigger?: React.ReactNode\r\n// disableOverlay?: boolean\r\n// }\r\n\r\n// type WithSheetLayoutProps = BaseAppContentProps & {\r\n// layout: \"with-sheet\"\r\n// } & SheetOptions\r\n\r\n// type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\n// const splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n// \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n// \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n// \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n// \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n// \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n// \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n// \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n// }\r\n\r\n// const paddingClasses = {\r\n// none: \"p-0\",\r\n// tight: \"p-2\",\r\n// default: \"p-4\",\r\n// loose: \"p-6\",\r\n// }\r\n\r\n// const getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n// const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n// return {\r\n// container: \"inset-y-0 z-50\",\r\n// content: cn(\"h-full bg-background\", side === \"right\" ? \"border-l\" : \"border-r\"),\r\n// transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n// transformOpen: \"translate-x-0\",\r\n// contentPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n// sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n// }\r\n// }\r\n\r\n// const baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\n// const variantClasses = {\r\n// default: \"bg-background\",\r\n// card: \"bg-background shadow-sm border\",\r\n// border: \"bg-background border-2\",\r\n// transparent: \"bg-transparent\",\r\n// }\r\n\r\n// export const AppContent = (props: AppContentProps) => {\r\n// const {\r\n// children,\r\n// className,\r\n// variant = \"default\",\r\n// layout = \"full\",\r\n// header,\r\n// footer,\r\n// headerClassName,\r\n// footerClassName,\r\n// parentContainer = false,\r\n// padding = parentContainer ? \"none\" : \"tight\",\r\n// } = props\r\n\r\n// const isNested = useContext(AppContentContext)\r\n// const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n// const contentWrapper = React.useCallback(\r\n// (content: React.ReactNode) => (\r\n// <div className={cn(\r\n// \"flex-1 overflow-auto h-full\",\r\n// !parentContainer && paddingClasses[padding]\r\n// )}>\r\n// {content}\r\n// </div>\r\n// ),\r\n// [padding, parentContainer]\r\n// )\r\n\r\n// const renderContent = () => {\r\n// switch (layout) {\r\n// case \"split\": {\r\n// const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n// if (!Array.isArray(children) || children.length !== 2) {\r\n// return (\r\n// <div className=\"flex items-center justify-center h-full text-red-500\">\r\n// Error: AppContent with layout=\"split\" requires exactly 2 children\r\n// </div>\r\n// )\r\n// }\r\n\r\n// const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n// const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n// const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n// return (\r\n// <div className=\"flex h-full gap-4\">\r\n// <div className={cn(firstClass, \"overflow-auto\")}>\r\n// {contentWrapper(firstChild)}\r\n// </div>\r\n// <div className={cn(secondClass, \"overflow-auto\")}>\r\n// {contentWrapper(secondChild)}\r\n// </div>\r\n// </div>\r\n// )\r\n// }\r\n\r\n// case \"with-sheet\": {\r\n// const {\r\n// sheetContent,\r\n// sheetWidth = \"four-fifth\",\r\n// sheetSide = \"right\",\r\n// sheetMode = \"container\",\r\n// sheetTrigger,\r\n// sheetClassName,\r\n// isSheetOpen,\r\n// onSheetOpenChange,\r\n// showSheetOverlay = true,\r\n// disableOverlay = false,\r\n// } = props as WithSheetLayoutProps\r\n\r\n// const isControlled = isSheetOpen !== undefined\r\n// const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen\r\n// const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen\r\n\r\n// if (sheetMode === \"container\") {\r\n// const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth)\r\n\r\n// return (\r\n// <div className={cn(\r\n// \"flex relative flex-1 overflow-hidden\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// )}>\r\n// {/* Main content area */}\r\n// <div className={cn(\r\n// \"h-full overflow-auto transition-all duration-500\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// ? sheetClasses.contentPushClass\r\n// : \"w-full\",\r\n// sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n// )}>\r\n// {sheetTrigger && (\r\n// <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n// {sheetTrigger}\r\n// </div>\r\n// )}\r\n// <div className={cn(!parentContainer && paddingClasses[padding])}>\r\n// {children}\r\n// </div>\r\n// </div>\r\n\r\n// {/* Container sheet */}\r\n// <div\r\n// className={cn(\r\n// sheetClasses.container,\r\n// \"transition-all duration-500 ease-out\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n// : sheetOpen\r\n// ? sheetClasses.transformOpen\r\n// : cn(sheetClasses.transform, \"hidden\"),\r\n// \"overflow-y-auto\"\r\n// )}\r\n// >\r\n// <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n// {sheetContent}\r\n// </div>\r\n// </div>\r\n\r\n// {/* Container overlay */}\r\n// {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n// <div\r\n// className={cn(\"absolute inset-0 bg-secondary/20 z-40\")}\r\n// onClick={() => setSheetOpen?.(false)}\r\n// />\r\n// )}\r\n// </div>\r\n// )\r\n// }\r\n\r\n// return (\r\n// <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n// {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n// <SheetPortal>\r\n// {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n// <SheetContent\r\n// side={sheetSide}\r\n// className={cn(\r\n// \"fixed bg-background border\",\r\n// splitRatioClasses[sheetWidth][1],\r\n// sheetClassName\r\n// )}\r\n// >\r\n// {sheetContent}\r\n// </SheetContent>\r\n// </SheetPortal>\r\n// </Sheet>\r\n// )\r\n// }\r\n\r\n// default:\r\n// return contentWrapper(children)\r\n// }\r\n// }\r\n\r\n// return (\r\n// <AppContentContext.Provider value={true}>\r\n// <div className={cn(\r\n// baseClasses,\r\n// variantClasses[variant],\r\n// paddingClasses[padding],\r\n// isNested && \"flex-1\",\r\n// parentContainer && \"h-full\",\r\n// !parentContainer && \"rounded-2xl\",\r\n// className\r\n// )}>\r\n// {header && (\r\n// <div\r\n// className={cn(\r\n// \"border-b\",\r\n// headerClassName,\r\n// variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n// variant === \"border\" && \"border-b-2\",\r\n// paddingClasses[padding]\r\n// )}\r\n// >\r\n// {header}\r\n// </div>\r\n// )}\r\n// {renderContent()}\r\n// {footer && (\r\n// <div\r\n// className={cn(\r\n// \"border-t\",\r\n// footerClassName,\r\n// variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n// variant === \"border\" && \"border-t-2\",\r\n// paddingClasses[padding]\r\n// )}\r\n// >\r\n// {footer}\r\n// </div>\r\n// )}\r\n// </div>\r\n// </AppContentContext.Provider>\r\n// )\r\n// }\r\n\r\n","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { cn } from '../../lib/utils.js';\r\n\r\ntype ColumnConfig = {\r\n content: React.ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppFooterProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppFooter = ({\r\n className,\r\n columns = [],\r\n meta = { title: \"\" },\r\n}: AppFooterProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n // const renderPagination = () => {\r\n // if (!meta.pagination) return null;\r\n\r\n // return (\r\n // <div className=\"flex items-center gap-2\">\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasPrevious}\r\n // onClick={meta.pagination.onPrevious}\r\n // >\r\n // <ChevronLeft className=\"h-4 w-4 mr-1\" />\r\n // {meta.pagination.previousLabel || 'Previous'}\r\n // </Button>\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasNext}\r\n // onClick={meta.pagination.onNext}\r\n // >\r\n // {meta.pagination.nextLabel || 'Next'}\r\n // <ChevronRight className=\"h-4 w-4 ml-1\" />\r\n // </Button>\r\n // </div>\r\n // );\r\n // };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex items-center gap-4 p-2\">\r\n {/* {renderPagination()} */}\r\n {meta.secondaryActions}\r\n </div>\r\n ),\r\n align: 'right',\r\n width: 'fill',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n};","import type { AppMetaContextType } from '../../context/app-meta/types.js';\r\nimport { AppHeaderProps, AppHeader as BaseAppHeader } from './app-header.jsx';\r\nimport { AppFooterProps, AppFooter as BaseAppFooter } from './app-footer.jsx';\r\nimport { AppContentProps, AppContent as BaseAppContent } from './app-content.jsx';\r\nimport { AppContainerProps, AppContainer as BaseAppContainer } from './app-container.jsx';\r\n\r\nexport function createLayoutComponents<TRoute extends string>({\r\n useTypedAppMeta,\r\n}: {\r\n useTypedAppMeta: () => AppMetaContextType<TRoute>;\r\n}) {\r\n const AppHeader = (props: Omit<AppHeaderProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppHeader {...props} meta={meta} />;\r\n };\r\n\r\n const AppFooter = (props: Omit<AppFooterProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppFooter {...props} meta={meta} />;\r\n };\r\n\r\n const AppContent = (props: AppContentProps) => (\r\n <BaseAppContent {...props} />\r\n );\r\n\r\n const AppContainer = (props: AppContainerProps) => (\r\n <BaseAppContainer {...props} />\r\n );\r\n\r\n return {\r\n AppHeader,\r\n AppFooter,\r\n AppContent,\r\n AppContainer,\r\n };\r\n}"],"mappings":"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","names":["clsx","twMerge","cn","inputs","jsx","spacingClasses","paddingClasses","AppContainer","children","className","spacing","padding","cn","ArrowLeftIcon","ChevronRight","SlotPrimitive","cva","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","NavLink","jsx","jsxs","AppHeader","className","columns","showBackButton","meta","renderBackAction","buttonProps","Button","ArrowLeftIcon","renderMetadata","item","index","renderStatus","cn","reservedColumn","crumb","ChevronRight","actionsColumn","allColumns","col","column","React","useState","createContext","useContext","SheetPrimitive","XIcon","jsx","jsxs","Sheet","props","SheetPrimitive","SheetTrigger","SheetPortal","props","jsx","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","jsx","jsxs","AppContentContext","createContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","footerClassName","parentContainer","padding","isNested","useContext","internalSheetOpen","setInternalSheetOpen","useState","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetTrigger","sheetClassName","isSheetOpen","onSheetOpenChange","showSheetOverlay","disableOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","Sheet","SheetTrigger","SheetPortal","SheetOverlay","SheetContent","jsx","AppFooter","className","columns","meta","actionsColumn","allColumns","col","cn","column","index","jsx","createLayoutComponents","useTypedAppMeta","props","meta","AppHeader","AppFooter","AppContent","AppContainer"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var b=(r,e)=>{for(var a in e)o(r,a,{get:e[a],enumerable:!0})},m=(r,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of g(e))!f.call(r,t)&&t!==a&&o(r,t,{get:()=>e[t],enumerable:!(i=l(e,t))||i.enumerable});return r};var x=r=>m(o({},"__esModule",{value:!0}),r);var h={};b(h,{Badge:()=>y,badgeVariants:()=>v});module.exports=x(h);var c=require("radix-ui"),p=require("class-variance-authority");var n=require("clsx"),s=require("tailwind-merge");function d(...r){return(0,s.twMerge)((0,n.clsx)(r))}var u=require("react/jsx-runtime"),v=(0,p.cva)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function y({className:r,variant:e,asChild:a=!1,...i}){let t=a?c.Slot.Slot:"span";return(0,u.jsx)(t,{"data-slot":"badge",className:d(v({variant:e}),r),...i})}0&&(module.exports={Badge,badgeVariants});
3
+ //# sourceMappingURL=badge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/badge.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAsC,oBACtCC,EAAuC,oCCFvC,IAAAC,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CDgCI,IAAAC,EAAA,6BA/BEC,KAAgB,OACpB,iZACA,CACE,SAAU,CACR,QAAS,CACP,QACE,iFACF,UACE,uFACF,YACE,4KACF,QACE,wEACJ,CACF,EACA,gBAAiB,CACf,QAAS,SACX,CACF,CACF,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAC8D,CAC5D,IAAMC,EAAOF,EAAU,EAAAG,KAAc,KAAO,OAE5C,SACE,OAACD,EAAA,CACC,YAAU,QACV,UAAWE,EAAGR,EAAc,CAAE,QAAAG,CAAQ,CAAC,EAAGD,CAAS,EAClD,GAAGG,EACN,CAEJ","names":["badge_exports","__export","Badge","badgeVariants","__toCommonJS","import_radix_ui","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","badgeVariants","Badge","className","variant","asChild","props","Comp","SlotPrimitive","cn"]}
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_dist_types_js from 'class-variance-authority/dist/types.js';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const badgeVariants: (props?: ({
7
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
8
+ } & class_variance_authority_dist_types_js.ClassProp) | undefined) => string;
9
+ declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
10
+ asChild?: boolean;
11
+ }): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Badge, badgeVariants };
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_dist_types_js from 'class-variance-authority/dist/types.js';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const badgeVariants: (props?: ({
7
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
8
+ } & class_variance_authority_dist_types_js.ClassProp) | undefined) => string;
9
+ declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
10
+ asChild?: boolean;
11
+ }): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Badge, badgeVariants };
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ import{Slot as d}from"radix-ui";import{cva as c}from"class-variance-authority";import{clsx as n}from"clsx";import{twMerge as s}from"tailwind-merge";function e(...r){return s(n(r))}import{jsx as v}from"react/jsx-runtime";var p=c("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function x({className:r,variant:t,asChild:a=!1,...i}){let o=a?d.Slot:"span";return v(o,{"data-slot":"badge",className:e(p({variant:t}),r),...i})}export{x as Badge,p as badgeVariants};
3
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/badge.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n destructive:\n \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";AACA,OAAS,QAAQA,MAAqB,WACtC,OAAS,OAAAC,MAA8B,2BCFvC,OAAS,QAAAC,MAA6B,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CDgCI,cAAAC,MAAA,oBA/BJ,IAAMC,EAAgBC,EACpB,iZACA,CACE,SAAU,CACR,QAAS,CACP,QACE,iFACF,UACE,uFACF,YACE,4KACF,QACE,wEACJ,CACF,EACA,gBAAiB,CACf,QAAS,SACX,CACF,CACF,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAC8D,CAC5D,IAAMC,EAAOF,EAAUG,EAAc,KAAO,OAE5C,OACET,EAACQ,EAAA,CACC,YAAU,QACV,UAAWE,EAAGT,EAAc,CAAE,QAAAI,CAAQ,CAAC,EAAGD,CAAS,EAClD,GAAGG,EACN,CAEJ","names":["SlotPrimitive","cva","clsx","twMerge","cn","inputs","jsx","badgeVariants","cva","Badge","className","variant","asChild","props","Comp","SlotPrimitive","cn"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var n=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var m=(e,t)=>{for(var o in t)n(e,o,{get:t[o],enumerable:!0})},h=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of b(t))!f.call(e,r)&&r!==o&&n(e,r,{get:()=>t[r],enumerable:!(i=g(t,r))||i.enumerable});return e};var x=e=>h(n({},"__esModule",{value:!0}),e);var k={};m(k,{Button:()=>y,buttonVariants:()=>v});module.exports=x(k);var u=require("radix-ui"),c=require("class-variance-authority");var a=require("clsx"),s=require("tailwind-merge");function d(...e){return(0,s.twMerge)((0,a.clsx)(e))}var l=require("react/jsx-runtime"),v=(0,c.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function y({className:e,variant:t,size:o,asChild:i=!1,...r}){let p=i?u.Slot.Slot:"button";return(0,l.jsx)(p,{"data-slot":"button",className:d(v({variant:t,size:o,className:e}),"transition-none"),...r})}0&&(module.exports={Button,buttonVariants});
3
+ //# sourceMappingURL=button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/button.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,YAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAsC,oBACtCC,EAAuC,oCCFvC,IAAAC,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CD6CI,IAAAC,EAAA,6BA5CEC,KAAiB,OACrB,8bACA,CACE,SAAU,CACR,QAAS,CACP,QACE,mEACF,YACE,8JACF,QACE,wIACF,UACE,yEACF,MACE,uEACF,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,gDACJ,GAAI,uCACJ,KAAM,QACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,EAAO,CACd,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CACH,IAAMC,EAAOF,EAAU,EAAAG,KAAc,KAAO,SAE5C,SACE,OAACD,EAAA,CACC,YAAU,SACV,UAAWE,EAAGT,EAAe,CAAE,QAAAG,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,EAAG,iBAAiB,EAC5E,GAAGI,EACN,CAEJ","names":["button_exports","__export","Button","buttonVariants","__toCommonJS","import_radix_ui","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn"]}
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_dist_types_js from 'class-variance-authority/dist/types.js';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonVariants: (props?: ({
7
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
9
+ } & class_variance_authority_dist_types_js.ClassProp) | undefined) => string;
10
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
11
+ asChild?: boolean;
12
+ }): react_jsx_runtime.JSX.Element;
13
+
14
+ export { Button, buttonVariants };
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_dist_types_js from 'class-variance-authority/dist/types.js';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonVariants: (props?: ({
7
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
8
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
9
+ } & class_variance_authority_dist_types_js.ClassProp) | undefined) => string;
10
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
11
+ asChild?: boolean;
12
+ }): react_jsx_runtime.JSX.Element;
13
+
14
+ export { Button, buttonVariants };
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ import{Slot as u}from"radix-ui";import{cva as c}from"class-variance-authority";import{clsx as s}from"clsx";import{twMerge as d}from"tailwind-merge";function t(...e){return d(s(e))}import{jsx as l}from"react/jsx-runtime";var v=c("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function x({className:e,variant:r,size:o,asChild:i=!1,...n}){let a=i?u.Slot:"button";return l(a,{"data-slot":"button",className:t(v({variant:r,size:o,className:e}),"transition-none"),...n})}export{x as Button,v as buttonVariants};
3
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/button.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";AACA,OAAS,QAAQA,MAAqB,WACtC,OAAS,OAAAC,MAA8B,2BCFvC,OAAS,QAAAC,MAA6B,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CD6CI,cAAAC,MAAA,oBA5CJ,IAAMC,EAAiBC,EACrB,8bACA,CACE,SAAU,CACR,QAAS,CACP,QACE,mEACF,YACE,8JACF,QACE,wIACF,UACE,yEACF,MACE,uEACF,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,gDACJ,GAAI,uCACJ,KAAM,QACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,EAAO,CACd,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CACH,IAAMC,EAAOF,EAAUG,EAAc,KAAO,SAE5C,OACEV,EAACS,EAAA,CACC,YAAU,SACV,UAAWE,EAAGV,EAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,EAAG,iBAAiB,EAC5E,GAAGI,EACN,CAEJ","names":["SlotPrimitive","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var u=(t,o)=>{for(var n in o)d(t,n,{get:o[n],enumerable:!0})},f=(t,o,n,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of p(o))!m.call(t,e)&&e!==n&&d(t,e,{get:()=>o[e],enumerable:!(s=l(o,e))||s.enumerable});return t};var C=t=>f(d({},"__esModule",{value:!0}),t);var w={};u(w,{Card:()=>v,CardAction:()=>b,CardContent:()=>N,CardDescription:()=>R,CardFooter:()=>P,CardHeader:()=>x,CardTitle:()=>g});module.exports=C(w);var c=require("clsx"),i=require("tailwind-merge");function r(...t){return(0,i.twMerge)((0,c.clsx)(t))}var a=require("react/jsx-runtime");function v({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card",className:r("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...o})}function x({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-header",className:r("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...o})}function g({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-title",className:r("leading-none font-semibold",t),...o})}function R({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-description",className:r("text-muted-foreground text-sm",t),...o})}function b({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-action",className:r("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...o})}function N({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-content",className:r("px-6",t),...o})}function P({className:t,...o}){return(0,a.jsx)("div",{"data-slot":"card-footer",className:r("flex items-center px-6 [.border-t]:pt-6",t),...o})}0&&(module.exports={Card,CardAction,CardContent,CardDescription,CardFooter,CardHeader,CardTitle});
3
+ //# sourceMappingURL=card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/card.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,eAAAC,EAAA,gBAAAC,EAAA,oBAAAC,EAAA,eAAAC,EAAA,eAAAC,EAAA,cAAAC,IAAA,eAAAC,EAAAT,GCAA,IAAAU,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CDCI,IAAAC,EAAA,6BAFJ,SAASC,EAAK,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAgC,CAClE,SACE,OAAC,OACC,YAAU,OACV,UAAWC,EACT,oFACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASE,EAAW,CAAE,UAAAH,EAAW,GAAGC,CAAM,EAAgC,CACxE,SACE,OAAC,OACC,YAAU,cACV,UAAWC,EACT,6JACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASG,EAAU,CAAE,UAAAJ,EAAW,GAAGC,CAAM,EAAgC,CACvE,SACE,OAAC,OACC,YAAU,aACV,UAAWC,EAAG,6BAA8BF,CAAS,EACpD,GAAGC,EACN,CAEJ,CAEA,SAASI,EAAgB,CAAE,UAAAL,EAAW,GAAGC,CAAM,EAAgC,CAC7E,SACE,OAAC,OACC,YAAU,mBACV,UAAWC,EAAG,gCAAiCF,CAAS,EACvD,GAAGC,EACN,CAEJ,CAEA,SAASK,EAAW,CAAE,UAAAN,EAAW,GAAGC,CAAM,EAAgC,CACxE,SACE,OAAC,OACC,YAAU,cACV,UAAWC,EACT,iEACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASM,EAAY,CAAE,UAAAP,EAAW,GAAGC,CAAM,EAAgC,CACzE,SACE,OAAC,OACC,YAAU,eACV,UAAWC,EAAG,OAAQF,CAAS,EAC9B,GAAGC,EACN,CAEJ,CAEA,SAASO,EAAW,CAAE,UAAAR,EAAW,GAAGC,CAAM,EAAgC,CACxE,SACE,OAAC,OACC,YAAU,cACV,UAAWC,EAAG,0CAA2CF,CAAS,EACjE,GAAGC,EACN,CAEJ","names":["card_exports","__export","Card","CardAction","CardContent","CardDescription","CardFooter","CardHeader","CardTitle","__toCommonJS","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","Card","className","props","cn","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter"]}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Card({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
5
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
6
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
7
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
8
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
9
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
11
+
12
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Card({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
5
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
6
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
7
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
8
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
9
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
11
+
12
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ import{clsx as e}from"clsx";import{twMerge as n}from"tailwind-merge";function r(...t){return n(e(t))}import{jsx as a}from"react/jsx-runtime";function l({className:t,...o}){return a("div",{"data-slot":"card",className:r("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...o})}function p({className:t,...o}){return a("div",{"data-slot":"card-header",className:r("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...o})}function m({className:t,...o}){return a("div",{"data-slot":"card-title",className:r("leading-none font-semibold",t),...o})}function u({className:t,...o}){return a("div",{"data-slot":"card-description",className:r("text-muted-foreground text-sm",t),...o})}function f({className:t,...o}){return a("div",{"data-slot":"card-action",className:r("col-start-2 row-span-2 row-start-1 self-start justify-self-end",t),...o})}function C({className:t,...o}){return a("div",{"data-slot":"card-content",className:r("px-6",t),...o})}function v({className:t,...o}){return a("div",{"data-slot":"card-footer",className:r("flex items-center px-6 [.border-t]:pt-6",t),...o})}export{l as Card,f as CardAction,C as CardContent,u as CardDescription,v as CardFooter,p as CardHeader,m as CardTitle};
3
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/card.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n"],"mappings":";AAAA,OAAS,QAAAA,MAA6B,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CCCI,cAAAC,MAAA,oBAFJ,SAASC,EAAK,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAgC,CAClE,OACEH,EAAC,OACC,YAAU,OACV,UAAWI,EACT,oFACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASE,EAAW,CAAE,UAAAH,EAAW,GAAGC,CAAM,EAAgC,CACxE,OACEH,EAAC,OACC,YAAU,cACV,UAAWI,EACT,6JACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASG,EAAU,CAAE,UAAAJ,EAAW,GAAGC,CAAM,EAAgC,CACvE,OACEH,EAAC,OACC,YAAU,aACV,UAAWI,EAAG,6BAA8BF,CAAS,EACpD,GAAGC,EACN,CAEJ,CAEA,SAASI,EAAgB,CAAE,UAAAL,EAAW,GAAGC,CAAM,EAAgC,CAC7E,OACEH,EAAC,OACC,YAAU,mBACV,UAAWI,EAAG,gCAAiCF,CAAS,EACvD,GAAGC,EACN,CAEJ,CAEA,SAASK,EAAW,CAAE,UAAAN,EAAW,GAAGC,CAAM,EAAgC,CACxE,OACEH,EAAC,OACC,YAAU,cACV,UAAWI,EACT,iEACAF,CACF,EACC,GAAGC,EACN,CAEJ,CAEA,SAASM,EAAY,CAAE,UAAAP,EAAW,GAAGC,CAAM,EAAgC,CACzE,OACEH,EAAC,OACC,YAAU,eACV,UAAWI,EAAG,OAAQF,CAAS,EAC9B,GAAGC,EACN,CAEJ,CAEA,SAASO,EAAW,CAAE,UAAAR,EAAW,GAAGC,CAAM,EAAgC,CACxE,OACEH,EAAC,OACC,YAAU,cACV,UAAWI,EAAG,0CAA2CF,CAAS,EACjE,GAAGC,EACN,CAEJ","names":["clsx","twMerge","cn","inputs","jsx","Card","className","props","cn","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var k=(e,r)=>{for(var t in r)a(e,t,{get:r[t],enumerable:!0})},h=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of b(r))!u.call(e,i)&&i!==t&&a(e,i,{get:()=>r[i],enumerable:!(s=p(r,i))||s.enumerable});return e};var x=e=>h(a({},"__esModule",{value:!0}),e);var v={};k(v,{Checkbox:()=>f});module.exports=x(v);var c=require("radix-ui"),l=require("lucide-react");var n=require("clsx"),d=require("tailwind-merge");function m(...e){return(0,d.twMerge)((0,n.clsx)(e))}var o=require("react/jsx-runtime");function f({className:e,...r}){return(0,o.jsx)(c.Checkbox.Root,{"data-slot":"checkbox",className:m("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...r,children:(0,o.jsx)(c.Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,o.jsx)(l.CheckIcon,{className:"size-3.5"})})})}0&&(module.exports={Checkbox});
3
+ //# sourceMappingURL=checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ui/checkbox.tsx","../../../src/lib/utils.ts"],"sourcesContent":["import * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}"],"mappings":";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAA8C,oBAC9CC,EAA0B,wBCF1B,IAAAC,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASC,KAAMC,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CDkBQ,IAAAC,EAAA,6BAjBR,SAASC,EAAS,CAChB,UAAAC,EACA,GAAGC,CACL,EAAwD,CACtD,SACE,OAAC,EAAAC,SAAkB,KAAlB,CACC,YAAU,WACV,UAAWC,EACT,8eACAH,CACF,EACC,GAAGC,EAEJ,mBAAC,EAAAC,SAAkB,UAAlB,CACC,YAAU,qBACV,UAAU,gEAEV,mBAAC,aAAU,UAAU,WAAW,EAClC,EACF,CAEJ","names":["checkbox_exports","__export","Checkbox","__toCommonJS","import_radix_ui","import_lucide_react","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","Checkbox","className","props","CheckboxPrimitive","cn"]}
@@ -0,0 +1,7 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Checkbox as Checkbox$1 } from 'radix-ui';
4
+
5
+ declare function Checkbox({ className, ...props }: React.ComponentProps<typeof Checkbox$1.Root>): react_jsx_runtime.JSX.Element;
6
+
7
+ export { Checkbox };