@definable/ui 0.1.0 → 0.1.8

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 (322) hide show
  1. package/README.md +6 -6
  2. package/dist/alert-dialog.d.ts +18 -0
  3. package/dist/alert.d.ts +18 -0
  4. package/dist/avatar.d.ts +9 -0
  5. package/dist/badge.d.ts +15 -0
  6. package/dist/button.d.ts +16 -0
  7. package/dist/calendar.d.ts +21 -0
  8. package/dist/card.d.ts +15 -0
  9. package/dist/carousel.d.ts +18 -0
  10. package/dist/charts.d.ts +26 -0
  11. package/dist/checkbox.d.ts +6 -0
  12. package/dist/collapse.d.ts +15 -0
  13. package/dist/command-menu.d.ts +12 -0
  14. package/dist/command.d.ts +89 -0
  15. package/dist/components/alert-dialog.d.ts +15 -0
  16. package/dist/components/alert-dialog.esm.js +59 -0
  17. package/dist/components/alert-dialog.esm.js.map +1 -0
  18. package/dist/components/alert-dialog.js +2 -0
  19. package/dist/components/alert-dialog.js.map +1 -0
  20. package/dist/components/alert.d.ts +11 -0
  21. package/dist/components/alert.esm.js +51 -0
  22. package/dist/components/alert.esm.js.map +1 -0
  23. package/dist/components/alert.js +2 -0
  24. package/dist/components/alert.js.map +1 -0
  25. package/dist/components/avatar.d.ts +5 -0
  26. package/dist/components/avatar.esm.js +42 -0
  27. package/dist/components/avatar.esm.js.map +1 -0
  28. package/dist/components/avatar.js +2 -0
  29. package/dist/components/avatar.js.map +1 -0
  30. package/dist/components/badge.d.ts +9 -0
  31. package/dist/components/badge.esm.js +27 -0
  32. package/dist/components/badge.esm.js.map +1 -0
  33. package/dist/components/badge.js +2 -0
  34. package/dist/components/badge.js.map +1 -0
  35. package/dist/components/button.d.ts +13 -0
  36. package/dist/components/button.esm.js +48 -0
  37. package/dist/components/button.esm.js.map +1 -0
  38. package/dist/components/button.js +2 -0
  39. package/dist/components/button.js.map +1 -0
  40. package/dist/components/calendar.d.ts +18 -0
  41. package/dist/components/calendar.esm.js +5562 -0
  42. package/dist/components/calendar.esm.js.map +1 -0
  43. package/dist/components/calendar.js +2 -0
  44. package/dist/components/calendar.js.map +1 -0
  45. package/dist/components/card.d.ts +8 -0
  46. package/dist/components/card.esm.js +62 -0
  47. package/dist/components/card.esm.js.map +1 -0
  48. package/dist/components/card.js +2 -0
  49. package/dist/components/card.js.map +1 -0
  50. package/dist/components/carousel.d.ts +13 -0
  51. package/dist/components/carousel.esm.js +101 -0
  52. package/dist/components/carousel.esm.js.map +1 -0
  53. package/dist/components/carousel.js +2 -0
  54. package/dist/components/carousel.js.map +1 -0
  55. package/dist/components/charts.d.ts +17 -0
  56. package/dist/components/charts.esm.js +48 -0
  57. package/dist/components/charts.esm.js.map +1 -0
  58. package/dist/components/charts.js +2 -0
  59. package/dist/components/charts.js.map +1 -0
  60. package/dist/components/checkbox.d.ts +4 -0
  61. package/dist/components/checkbox.esm.js +32 -0
  62. package/dist/components/checkbox.esm.js.map +1 -0
  63. package/dist/components/checkbox.js +2 -0
  64. package/dist/components/checkbox.js.map +1 -0
  65. package/dist/components/collapse.d.ts +11 -0
  66. package/dist/components/collapse.esm.js +50 -0
  67. package/dist/components/collapse.esm.js.map +1 -0
  68. package/dist/components/collapse.js +2 -0
  69. package/dist/components/collapse.js.map +1 -0
  70. package/dist/components/command-menu.d.ts +7 -0
  71. package/dist/components/command-menu.esm.js +90 -0
  72. package/dist/components/command-menu.esm.js.map +1 -0
  73. package/dist/components/command-menu.js +2 -0
  74. package/dist/components/command-menu.js.map +1 -0
  75. package/dist/components/command.d.ts +79 -0
  76. package/dist/components/command.esm.js +425 -0
  77. package/dist/components/command.esm.js.map +1 -0
  78. package/dist/components/command.js +2 -0
  79. package/dist/components/command.js.map +1 -0
  80. package/dist/components/confirmation-modal.d.ts +12 -0
  81. package/dist/components/confirmation-modal.esm.js +46 -0
  82. package/dist/components/confirmation-modal.esm.js.map +1 -0
  83. package/dist/components/confirmation-modal.js +2 -0
  84. package/dist/components/confirmation-modal.js.map +1 -0
  85. package/dist/components/context-menu.d.ts +26 -0
  86. package/dist/components/context-menu.esm.js +186 -0
  87. package/dist/components/context-menu.esm.js.map +1 -0
  88. package/dist/components/context-menu.js +2 -0
  89. package/dist/components/context-menu.js.map +1 -0
  90. package/dist/components/dialog.d.ts +21 -0
  91. package/dist/components/dialog.esm.js +122 -0
  92. package/dist/components/dialog.esm.js.map +1 -0
  93. package/dist/components/dialog.js +2 -0
  94. package/dist/components/dialog.js.map +1 -0
  95. package/dist/components/dropdown-menu.d.ts +9 -0
  96. package/dist/components/dropdown-menu.esm.js +49 -0
  97. package/dist/components/dropdown-menu.esm.js.map +1 -0
  98. package/dist/components/dropdown-menu.js +2 -0
  99. package/dist/components/dropdown-menu.js.map +1 -0
  100. package/dist/components/dropzone.d.ts +12 -0
  101. package/dist/components/dropzone.esm.js +45 -0
  102. package/dist/components/dropzone.esm.js.map +1 -0
  103. package/dist/components/dropzone.js +2 -0
  104. package/dist/components/dropzone.js.map +1 -0
  105. package/dist/components/image-cropper-modal.d.ts +10 -0
  106. package/dist/components/image-cropper-modal.esm.js +251 -0
  107. package/dist/components/image-cropper-modal.esm.js.map +1 -0
  108. package/dist/components/image-cropper-modal.js +2 -0
  109. package/dist/components/image-cropper-modal.js.map +1 -0
  110. package/dist/components/image-cropper.d.ts +11 -0
  111. package/dist/components/image-cropper.esm.js +131 -0
  112. package/dist/components/image-cropper.esm.js.map +1 -0
  113. package/dist/components/image-cropper.js +2 -0
  114. package/dist/components/image-cropper.js.map +1 -0
  115. package/dist/components/input.d.ts +5 -0
  116. package/dist/components/input.esm.js +22 -0
  117. package/dist/components/input.esm.js.map +1 -0
  118. package/dist/components/input.js +2 -0
  119. package/dist/components/input.js.map +1 -0
  120. package/dist/components/label.d.ts +4 -0
  121. package/dist/components/label.esm.js +20 -0
  122. package/dist/components/label.esm.js.map +1 -0
  123. package/dist/components/label.js +2 -0
  124. package/dist/components/label.js.map +1 -0
  125. package/dist/components/loader.d.ts +10 -0
  126. package/dist/components/loader.esm.js +70 -0
  127. package/dist/components/loader.esm.js.map +1 -0
  128. package/dist/components/loader.js +2 -0
  129. package/dist/components/loader.js.map +1 -0
  130. package/dist/components/loading-placeholder.d.ts +8 -0
  131. package/dist/components/loading-placeholder.esm.js +25 -0
  132. package/dist/components/loading-placeholder.esm.js.map +1 -0
  133. package/dist/components/loading-placeholder.js +2 -0
  134. package/dist/components/loading-placeholder.js.map +1 -0
  135. package/dist/components/markdown.d.ts +2 -0
  136. package/dist/components/markdown.esm.js +12066 -0
  137. package/dist/components/markdown.esm.js.map +1 -0
  138. package/dist/components/markdown.js +18 -0
  139. package/dist/components/markdown.js.map +1 -0
  140. package/dist/components/mention.d.ts +25 -0
  141. package/dist/components/mention.esm.js +154 -0
  142. package/dist/components/mention.esm.js.map +1 -0
  143. package/dist/components/mention.js +2 -0
  144. package/dist/components/mention.js.map +1 -0
  145. package/dist/components/modal.d.ts +19 -0
  146. package/dist/components/modal.esm.js +92 -0
  147. package/dist/components/modal.esm.js.map +1 -0
  148. package/dist/components/modal.js +2 -0
  149. package/dist/components/modal.js.map +1 -0
  150. package/dist/components/monaco-editor.d.ts +2 -0
  151. package/dist/components/monaco-editor.esm.js +295 -0
  152. package/dist/components/monaco-editor.esm.js.map +1 -0
  153. package/dist/components/monaco-editor.js +8 -0
  154. package/dist/components/monaco-editor.js.map +1 -0
  155. package/dist/components/notification.d.ts +5 -0
  156. package/dist/components/notification.esm.js +26 -0
  157. package/dist/components/notification.esm.js.map +1 -0
  158. package/dist/components/notification.js +2 -0
  159. package/dist/components/notification.js.map +1 -0
  160. package/dist/components/popover.d.ts +6 -0
  161. package/dist/components/popover.esm.js +24 -0
  162. package/dist/components/popover.esm.js.map +1 -0
  163. package/dist/components/popover.js +2 -0
  164. package/dist/components/popover.js.map +1 -0
  165. package/dist/components/progress.d.ts +4 -0
  166. package/dist/components/progress.esm.js +35 -0
  167. package/dist/components/progress.esm.js.map +1 -0
  168. package/dist/components/progress.js +2 -0
  169. package/dist/components/progress.js.map +1 -0
  170. package/dist/components/radio-group.d.ts +5 -0
  171. package/dist/components/radio-group.esm.js +48 -0
  172. package/dist/components/radio-group.esm.js.map +1 -0
  173. package/dist/components/radio-group.js +2 -0
  174. package/dist/components/radio-group.js.map +1 -0
  175. package/dist/components/scroll-area.d.ts +5 -0
  176. package/dist/components/scroll-area.esm.js +47 -0
  177. package/dist/components/scroll-area.esm.js.map +1 -0
  178. package/dist/components/scroll-area.js +2 -0
  179. package/dist/components/scroll-area.js.map +1 -0
  180. package/dist/components/select.d.ts +20 -0
  181. package/dist/components/select.esm.js +131 -0
  182. package/dist/components/select.esm.js.map +1 -0
  183. package/dist/components/select.js +2 -0
  184. package/dist/components/select.js.map +1 -0
  185. package/dist/components/selection-bar.d.ts +11 -0
  186. package/dist/components/selection-bar.esm.js +54 -0
  187. package/dist/components/selection-bar.esm.js.map +1 -0
  188. package/dist/components/selection-bar.js +2 -0
  189. package/dist/components/selection-bar.js.map +1 -0
  190. package/dist/components/separator.d.ts +4 -0
  191. package/dist/components/separator.esm.js +25 -0
  192. package/dist/components/separator.esm.js.map +1 -0
  193. package/dist/components/separator.js +2 -0
  194. package/dist/components/separator.js.map +1 -0
  195. package/dist/components/sheet.d.ts +13 -0
  196. package/dist/components/sheet.esm.js +129 -0
  197. package/dist/components/sheet.esm.js.map +1 -0
  198. package/dist/components/sheet.js +2 -0
  199. package/dist/components/sheet.js.map +1 -0
  200. package/dist/components/skeleton.d.ts +2 -0
  201. package/dist/components/skeleton.esm.js +18 -0
  202. package/dist/components/skeleton.esm.js.map +1 -0
  203. package/dist/components/skeleton.js +2 -0
  204. package/dist/components/skeleton.js.map +1 -0
  205. package/dist/components/slider.d.ts +4 -0
  206. package/dist/components/slider.esm.js +33 -0
  207. package/dist/components/slider.esm.js.map +1 -0
  208. package/dist/components/slider.js +2 -0
  209. package/dist/components/slider.js.map +1 -0
  210. package/dist/components/stepper.d.ts +2 -0
  211. package/dist/components/stepper.esm.js +214 -0
  212. package/dist/components/stepper.esm.js.map +1 -0
  213. package/dist/components/stepper.js +2 -0
  214. package/dist/components/stepper.js.map +1 -0
  215. package/dist/components/switch.d.ts +4 -0
  216. package/dist/components/switch.esm.js +36 -0
  217. package/dist/components/switch.esm.js.map +1 -0
  218. package/dist/components/switch.js +2 -0
  219. package/dist/components/switch.js.map +1 -0
  220. package/dist/components/table-empty.d.ts +9 -0
  221. package/dist/components/table-empty.esm.js +23 -0
  222. package/dist/components/table-empty.esm.js.map +1 -0
  223. package/dist/components/table-empty.js +2 -0
  224. package/dist/components/table-empty.js.map +1 -0
  225. package/dist/components/table-mobile.d.ts +4 -0
  226. package/dist/components/table-mobile.esm.js +92 -0
  227. package/dist/components/table-mobile.esm.js.map +1 -0
  228. package/dist/components/table-mobile.js +2 -0
  229. package/dist/components/table-mobile.js.map +1 -0
  230. package/dist/components/table.d.ts +31 -0
  231. package/dist/components/table.esm.js +143 -0
  232. package/dist/components/table.esm.js.map +1 -0
  233. package/dist/components/table.js +2 -0
  234. package/dist/components/table.js.map +1 -0
  235. package/dist/components/tabs.d.ts +7 -0
  236. package/dist/components/tabs.esm.js +47 -0
  237. package/dist/components/tabs.esm.js.map +1 -0
  238. package/dist/components/tabs.js +2 -0
  239. package/dist/components/tabs.js.map +1 -0
  240. package/dist/components/terminal.d.ts +43 -0
  241. package/dist/components/terminal.esm.js +50 -0
  242. package/dist/components/terminal.esm.js.map +1 -0
  243. package/dist/components/terminal.js +2 -0
  244. package/dist/components/terminal.js.map +1 -0
  245. package/dist/components/textarea.d.ts +5 -0
  246. package/dist/components/textarea.esm.js +21 -0
  247. package/dist/components/textarea.esm.js.map +1 -0
  248. package/dist/components/textarea.js +2 -0
  249. package/dist/components/textarea.js.map +1 -0
  250. package/dist/components/tooltip.d.ts +8 -0
  251. package/dist/components/tooltip.esm.js +100 -0
  252. package/dist/components/tooltip.esm.js.map +1 -0
  253. package/dist/components/tooltip.js +2 -0
  254. package/dist/components/tooltip.js.map +1 -0
  255. package/dist/components/use-toast.d.ts +21 -0
  256. package/dist/components/use-toast.esm.js +65 -0
  257. package/dist/components/use-toast.esm.js.map +1 -0
  258. package/dist/components/use-toast.js +2 -0
  259. package/dist/components/use-toast.js.map +1 -0
  260. package/dist/confirmation-modal.d.ts +16 -0
  261. package/dist/context-menu.d.ts +41 -0
  262. package/dist/dialog.d.ts +33 -0
  263. package/dist/dropdown-menu.d.ts +16 -0
  264. package/dist/dropzone.d.ts +16 -0
  265. package/dist/image-cropper-modal.d.ts +14 -0
  266. package/dist/image-cropper.d.ts +15 -0
  267. package/dist/index-DACAHwoB.js +35 -0
  268. package/dist/index-DACAHwoB.js.map +1 -0
  269. package/dist/index-Deooizx8.cjs +2 -0
  270. package/dist/index-Deooizx8.cjs.map +1 -0
  271. package/dist/index.d.ts +8 -2
  272. package/dist/index.esm.js +111 -75430
  273. package/dist/index.esm.js.map +1 -1
  274. package/dist/index.js +2 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/input.d.ts +8 -0
  277. package/dist/jsx-runtime-BYECrxsp.cjs +31 -0
  278. package/dist/jsx-runtime-BYECrxsp.cjs.map +1 -0
  279. package/dist/jsx-runtime-DGlMoOmv.js +631 -0
  280. package/dist/jsx-runtime-DGlMoOmv.js.map +1 -0
  281. package/dist/label.d.ts +6 -0
  282. package/dist/lib/utils.d.ts +2 -0
  283. package/dist/lib/utils.esm.js +5 -0
  284. package/dist/lib/utils.esm.js.map +1 -0
  285. package/dist/lib/utils.js +2 -0
  286. package/dist/lib/utils.js.map +1 -0
  287. package/dist/loader.d.ts +14 -0
  288. package/dist/loading-placeholder.d.ts +12 -0
  289. package/dist/markdown.d.ts +122 -0
  290. package/dist/mention.d.ts +29 -0
  291. package/dist/modal.d.ts +24 -0
  292. package/dist/monaco-editor.d.ts +76 -0
  293. package/dist/notification.d.ts +9 -0
  294. package/dist/popover.d.ts +10 -0
  295. package/dist/progress.d.ts +6 -0
  296. package/dist/radio-group.d.ts +8 -0
  297. package/dist/scroll-area.d.ts +8 -0
  298. package/dist/select.d.ts +31 -0
  299. package/dist/selection-bar.d.ts +15 -0
  300. package/dist/separator.d.ts +6 -0
  301. package/dist/sheet.d.ts +17 -0
  302. package/dist/skeleton.d.ts +5 -0
  303. package/dist/slider.d.ts +6 -0
  304. package/dist/stepper.d.ts +71 -0
  305. package/dist/styles.css +1 -1
  306. package/dist/switch.d.ts +6 -0
  307. package/dist/table-empty.d.ts +13 -0
  308. package/dist/table-mobile.d.ts +37 -0
  309. package/dist/table.d.ts +37 -0
  310. package/dist/tabs.d.ts +12 -0
  311. package/dist/terminal.d.ts +47 -0
  312. package/dist/textarea.d.ts +8 -0
  313. package/dist/tooltip.d.ts +12 -0
  314. package/dist/use-toast.d.ts +28 -0
  315. package/dist/utils-DSKoFOjv.cjs +2 -0
  316. package/dist/utils-DSKoFOjv.cjs.map +1 -0
  317. package/dist/utils-qaFjX9_3.js +2279 -0
  318. package/dist/utils-qaFjX9_3.js.map +1 -0
  319. package/dist/utils.d.ts +5 -0
  320. package/package.json +259 -1
  321. package/dist/index.cjs.js +0 -315
  322. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import { j as i } from "../jsx-runtime-DGlMoOmv.js";
2
+ import * as t from "react";
3
+ import * as e from "@radix-ui/react-switch";
4
+ import { c as a } from "../utils-qaFjX9_3.js";
5
+ import { motion as n } from "framer-motion";
6
+ const c = t.forwardRef(({ className: o, ...s }, r) => /* @__PURE__ */ i.jsx(
7
+ e.Root,
8
+ {
9
+ className: a(
10
+ "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
11
+ o
12
+ ),
13
+ ...s,
14
+ ref: r,
15
+ children: /* @__PURE__ */ i.jsx(e.Thumb, { asChild: !0, children: /* @__PURE__ */ i.jsx(
16
+ n.div,
17
+ {
18
+ className: "block h-4 w-4 rounded-full bg-background shadow-lg ring-0",
19
+ initial: !1,
20
+ animate: {
21
+ x: s.checked ? 16 : 0
22
+ },
23
+ transition: {
24
+ type: "spring",
25
+ stiffness: 500,
26
+ damping: 30
27
+ }
28
+ }
29
+ ) })
30
+ }
31
+ ));
32
+ c.displayName = e.Root.displayName;
33
+ export {
34
+ c as Switch
35
+ };
36
+ //# sourceMappingURL=switch.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.esm.js","sources":["../../src/components/switch.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { cn } from \"@/lib/utils\"\nimport { motion } from \"framer-motion\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb asChild>\n <motion.div\n className=\"block h-4 w-4 rounded-full bg-background shadow-lg ring-0\"\n initial={false}\n animate={{\n x: props.checked ? 16 : 0\n }}\n transition={{\n type: \"spring\",\n stiffness: 500,\n damping: 30\n }}\n />\n </SwitchPrimitives.Thumb>\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch } "],"names":["Switch","React","className","props","ref","jsx","SwitchPrimitives","cn","motion"],"mappings":";;;;;AAKA,MAAMA,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IACJ,KAAAC;AAAA,IAEA,UAAAC,gBAAAA,EAAAA,IAACC,EAAiB,OAAjB,EAAuB,SAAO,IAC7B,UAAAD,gBAAAA,EAAAA;AAAAA,MAACG,EAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,UACP,GAAGL,EAAM,UAAU,KAAK;AAAA,QAAA;AAAA,QAE1B,YAAY;AAAA,UACV,MAAM;AAAA,UACN,WAAW;AAAA,UACX,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IAAA,EACF,CACF;AAAA,EAAA;AACF,CACD;AACDH,EAAO,cAAcM,EAAiB,KAAK;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../jsx-runtime-BYECrxsp.cjs"),a=require("react"),l=require("@radix-ui/react-switch"),u=require("../utils-DSKoFOjv.cjs"),d=require("framer-motion");function o(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:()=>e[i]})}}return t.default=e,Object.freeze(t)}const f=o(a),s=o(l),c=f.forwardRef(({className:e,...t},i)=>r.jsxRuntimeExports.jsx(s.Root,{className:u.cn("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:i,children:r.jsxRuntimeExports.jsx(s.Thumb,{asChild:!0,children:r.jsxRuntimeExports.jsx(d.motion.div,{className:"block h-4 w-4 rounded-full bg-background shadow-lg ring-0",initial:!1,animate:{x:t.checked?16:0},transition:{type:"spring",stiffness:500,damping:30}})})}));c.displayName=s.Root.displayName;exports.Switch=c;
2
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sources":["../../src/components/switch.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { cn } from \"@/lib/utils\"\nimport { motion } from \"framer-motion\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb asChild>\n <motion.div\n className=\"block h-4 w-4 rounded-full bg-background shadow-lg ring-0\"\n initial={false}\n animate={{\n x: props.checked ? 16 : 0\n }}\n transition={{\n type: \"spring\",\n stiffness: 500,\n damping: 30\n }}\n />\n </SwitchPrimitives.Thumb>\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch } "],"names":["Switch","React","className","props","ref","jsx","SwitchPrimitives","cn","motion"],"mappings":"qhBAKMA,EAASC,EAAM,WAGnB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACC,EAAiB,KAAjB,CACC,UAAWC,EAAAA,GACT,8XACAL,CAAA,EAED,GAAGC,EACJ,IAAAC,EAEA,SAAAC,EAAAA,kBAAAA,IAACC,EAAiB,MAAjB,CAAuB,QAAO,GAC7B,SAAAD,EAAAA,kBAAAA,IAACG,EAAAA,OAAO,IAAP,CACC,UAAU,4DACV,QAAS,GACT,QAAS,CACP,EAAGL,EAAM,QAAU,GAAK,CAAA,EAE1B,WAAY,CACV,KAAM,SACN,UAAW,IACX,QAAS,EAAA,CACX,CAAA,CACF,CACF,CAAA,CACF,CACD,EACDH,EAAO,YAAcM,EAAiB,KAAK"}
@@ -0,0 +1,9 @@
1
+ interface TableEmptyProps {
2
+ title?: string;
3
+ description?: string;
4
+ actionLabel?: string;
5
+ onAction?: () => void;
6
+ icon?: React.ReactNode;
7
+ }
8
+ export declare function TableEmpty({ title, description, actionLabel, onAction, icon }: TableEmptyProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,23 @@
1
+ import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
+ import { FolderOpen as l } from "lucide-react";
3
+ import { Button as m } from "./button.esm.js";
4
+ function n({
5
+ title: s = "No data available",
6
+ description: r = "Get started by creating your first record.",
7
+ actionLabel: a = "Create New",
8
+ onAction: t,
9
+ icon: c = /* @__PURE__ */ e.jsx(l, { className: "w-10 h-10 text-muted-foreground" })
10
+ }) {
11
+ return /* @__PURE__ */ e.jsx("div", { className: "flex flex-col items-center justify-center py-12 px-4", children: /* @__PURE__ */ e.jsxs("div", { className: "space-y-5 text-center", children: [
12
+ /* @__PURE__ */ e.jsx("div", { className: "flex justify-center", children: c }),
13
+ /* @__PURE__ */ e.jsxs("div", { className: "space-y-2", children: [
14
+ /* @__PURE__ */ e.jsx("h3", { className: "text-lg font-medium", children: s }),
15
+ /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted-foreground max-w-sm mx-auto", children: r })
16
+ ] }),
17
+ t && /* @__PURE__ */ e.jsx(m, { onClick: t, children: a })
18
+ ] }) });
19
+ }
20
+ export {
21
+ n as TableEmpty
22
+ };
23
+ //# sourceMappingURL=table-empty.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-empty.esm.js","sources":["../../src/components/table-empty.tsx"],"sourcesContent":["import { FolderOpen } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface TableEmptyProps {\n title?: string;\n description?: string;\n actionLabel?: string;\n onAction?: () => void;\n icon?: React.ReactNode;\n}\n\nexport function TableEmpty({\n title = \"No data available\",\n description = \"Get started by creating your first record.\",\n actionLabel = \"Create New\",\n onAction,\n icon = <FolderOpen className=\"w-10 h-10 text-muted-foreground\" />\n}: TableEmptyProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-4\">\n <div className=\"space-y-5 text-center\">\n <div className=\"flex justify-center\">{icon}</div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-medium\">{title}</h3>\n <p className=\"text-sm text-muted-foreground max-w-sm mx-auto\">\n {description}\n </p>\n </div>\n {onAction && (\n <Button onClick={onAction}>\n {actionLabel}\n </Button>\n )}\n </div>\n </div>\n );\n} "],"names":["TableEmpty","title","description","actionLabel","onAction","icon","jsx","FolderOpen","jsxs","Button"],"mappings":";;;AAWO,SAASA,EAAW;AAAA,EACzB,OAAAC,IAAQ;AAAA,EACR,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc;AAAA,EACd,UAAAC;AAAA,EACA,MAAAC,IAAOC,gBAAAA,EAAAA,IAACC,GAAA,EAAW,WAAU,kCAAA,CAAkC;AACjE,GAAoB;AAClB,+BACG,OAAA,EAAI,WAAU,wDACb,UAAAC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,IAAAF,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,uBAAuB,UAAAD,GAAK;AAAA,IAC3CG,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAAF,gBAAAA,EAAAA,IAAC,MAAA,EAAG,WAAU,uBAAuB,UAAAL,GAAM;AAAA,MAC3CK,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAU,kDACV,UAAAJ,EAAA,CACH;AAAA,IAAA,GACF;AAAA,IACCE,KACCE,gBAAAA,EAAAA,IAACG,GAAA,EAAO,SAASL,GACd,UAAAD,EAAA,CACH;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../jsx-runtime-BYECrxsp.cjs"),i=require("lucide-react"),c=require("./button.js");function a({title:s="No data available",description:r="Get started by creating your first record.",actionLabel:n="Create New",onAction:t,icon:x=e.jsxRuntimeExports.jsx(i.FolderOpen,{className:"w-10 h-10 text-muted-foreground"})}){return e.jsxRuntimeExports.jsx("div",{className:"flex flex-col items-center justify-center py-12 px-4",children:e.jsxRuntimeExports.jsxs("div",{className:"space-y-5 text-center",children:[e.jsxRuntimeExports.jsx("div",{className:"flex justify-center",children:x}),e.jsxRuntimeExports.jsxs("div",{className:"space-y-2",children:[e.jsxRuntimeExports.jsx("h3",{className:"text-lg font-medium",children:s}),e.jsxRuntimeExports.jsx("p",{className:"text-sm text-muted-foreground max-w-sm mx-auto",children:r})]}),t&&e.jsxRuntimeExports.jsx(c.Button,{onClick:t,children:n})]})})}exports.TableEmpty=a;
2
+ //# sourceMappingURL=table-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-empty.js","sources":["../../src/components/table-empty.tsx"],"sourcesContent":["import { FolderOpen } from \"lucide-react\";\nimport { Button } from \"./button\";\n\ninterface TableEmptyProps {\n title?: string;\n description?: string;\n actionLabel?: string;\n onAction?: () => void;\n icon?: React.ReactNode;\n}\n\nexport function TableEmpty({\n title = \"No data available\",\n description = \"Get started by creating your first record.\",\n actionLabel = \"Create New\",\n onAction,\n icon = <FolderOpen className=\"w-10 h-10 text-muted-foreground\" />\n}: TableEmptyProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-4\">\n <div className=\"space-y-5 text-center\">\n <div className=\"flex justify-center\">{icon}</div>\n <div className=\"space-y-2\">\n <h3 className=\"text-lg font-medium\">{title}</h3>\n <p className=\"text-sm text-muted-foreground max-w-sm mx-auto\">\n {description}\n </p>\n </div>\n {onAction && (\n <Button onClick={onAction}>\n {actionLabel}\n </Button>\n )}\n </div>\n </div>\n );\n} "],"names":["TableEmpty","title","description","actionLabel","onAction","icon","jsx","FolderOpen","jsxs","Button"],"mappings":"kLAWO,SAASA,EAAW,CACzB,MAAAC,EAAQ,oBACR,YAAAC,EAAc,6CACd,YAAAC,EAAc,aACd,SAAAC,EACA,KAAAC,EAAOC,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CAAW,UAAU,iCAAA,CAAkC,CACjE,EAAoB,CAClB,+BACG,MAAA,CAAI,UAAU,uDACb,SAAAC,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,wBACb,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,sBAAuB,SAAAD,EAAK,EAC3CG,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAF,EAAAA,kBAAAA,IAAC,KAAA,CAAG,UAAU,sBAAuB,SAAAL,EAAM,EAC3CK,EAAAA,kBAAAA,IAAC,IAAA,CAAE,UAAU,iDACV,SAAAJ,CAAA,CACH,CAAA,EACF,EACCE,GACCE,EAAAA,kBAAAA,IAACG,SAAA,CAAO,QAASL,EACd,SAAAD,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ"}
@@ -0,0 +1,4 @@
1
+ import { TableProps } from './table';
2
+ export declare function TableMobile<T extends {
3
+ id: string;
4
+ }>({ data, columns, showCheckbox, onRowClick, selectedItems, onSelect, isLoading, loadingRows }: TableProps<T>): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,92 @@
1
+ import { j as r } from "../jsx-runtime-DGlMoOmv.js";
2
+ import { c as x } from "../utils-qaFjX9_3.js";
3
+ import { Checkbox as u } from "./checkbox.esm.js";
4
+ import { Tooltip as f } from "./tooltip.esm.js";
5
+ import { useState as v } from "react";
6
+ import { ChevronRight as b } from "lucide-react";
7
+ function T({
8
+ data: l,
9
+ columns: t,
10
+ showCheckbox: n = !0,
11
+ onRowClick: d,
12
+ selectedItems: a,
13
+ onSelect: o,
14
+ isLoading: p = !1,
15
+ loadingRows: c = 3
16
+ }) {
17
+ const [h, m] = v(null);
18
+ return p ? /* @__PURE__ */ r.jsx("div", { className: "space-y-4", children: Array(c).fill(0).map((s, i) => /* @__PURE__ */ r.jsxs(
19
+ "div",
20
+ {
21
+ className: "border border-border/40 rounded-xl p-4 space-y-4 shadow-sm bg-card/30 animate-pulse",
22
+ children: [
23
+ /* @__PURE__ */ r.jsxs("div", { className: "flex items-center justify-between", children: [
24
+ /* @__PURE__ */ r.jsx("div", { className: "h-5 bg-muted/70 rounded-md w-2/5" }),
25
+ n && /* @__PURE__ */ r.jsx("div", { className: "h-4 w-4 rounded-md bg-muted/50" })
26
+ ] }),
27
+ /* @__PURE__ */ r.jsx("div", { className: "space-y-3 pt-2", children: t.slice(0, 4).map((e, j) => /* @__PURE__ */ r.jsxs("div", { className: "flex items-start gap-3", children: [
28
+ /* @__PURE__ */ r.jsx("div", { className: "h-4 bg-muted/40 rounded-md w-1/4" }),
29
+ /* @__PURE__ */ r.jsx("div", { className: "h-4 bg-muted/60 rounded-md", style: { width: Math.random() * 50 + 30 + "%" } })
30
+ ] }, `skeleton-col-${e.id}`)) })
31
+ ]
32
+ },
33
+ `skeleton-${i}`
34
+ )) }) : l.length === 0 ? null : /* @__PURE__ */ r.jsx("div", { className: "space-y-4", children: l.map((s, i) => /* @__PURE__ */ r.jsxs(
35
+ "div",
36
+ {
37
+ className: x(
38
+ "border border-border/40 rounded-xl overflow-hidden bg-card/30 shadow-sm transition-all duration-200",
39
+ d && "cursor-pointer hover:border-primary/30 hover:shadow-md hover:bg-card/50"
40
+ ),
41
+ onClick: () => d == null ? void 0 : d(s),
42
+ children: [
43
+ /* @__PURE__ */ r.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-border/30 bg-muted/5", children: [
44
+ /* @__PURE__ */ r.jsx("div", { className: "font-medium", children: t[0].cell(s) || `Item ${i + 1}` }),
45
+ /* @__PURE__ */ r.jsxs("div", { className: "flex items-center gap-2", children: [
46
+ n && /* @__PURE__ */ r.jsx(
47
+ u,
48
+ {
49
+ checked: a == null ? void 0 : a.has(s.id),
50
+ onClick: (e) => {
51
+ e.stopPropagation(), o == null || o(s.id, !(a != null && a.has(s.id)));
52
+ },
53
+ className: "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground"
54
+ }
55
+ ),
56
+ d && /* @__PURE__ */ r.jsx(b, { className: "h-4 w-4 text-muted-foreground/50" })
57
+ ] })
58
+ ] }),
59
+ /* @__PURE__ */ r.jsx("div", { className: "px-4 py-3 space-y-3", children: t.slice(1).map((e) => /* @__PURE__ */ r.jsxs(
60
+ "div",
61
+ {
62
+ className: "flex items-start gap-3 text-sm group",
63
+ onMouseEnter: () => e.tooltipValue && m(`${i}-${e.id}`),
64
+ onMouseLeave: () => m(null),
65
+ children: [
66
+ /* @__PURE__ */ r.jsx("div", { className: "font-medium text-muted-foreground w-1/3 min-w-[80px] text-xs uppercase tracking-wide pt-0.5", children: e.header }),
67
+ /* @__PURE__ */ r.jsx("div", { className: x(
68
+ "flex-1 min-w-0 text-foreground/90 group-hover:text-foreground transition-colors",
69
+ e.truncate && "truncate"
70
+ ), children: e.cell(s) }),
71
+ e.tooltipValue && h === `${i}-${e.id}` && /* @__PURE__ */ r.jsx(
72
+ f,
73
+ {
74
+ content: e.tooltipValue(s),
75
+ side: "bottom",
76
+ align: "start",
77
+ isVisible: !0
78
+ }
79
+ )
80
+ ]
81
+ },
82
+ e.id
83
+ )) })
84
+ ]
85
+ },
86
+ s.id
87
+ )) });
88
+ }
89
+ export {
90
+ T as TableMobile
91
+ };
92
+ //# sourceMappingURL=table-mobile.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-mobile.esm.js","sources":["../../src/components/table-mobile.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { Column, TableProps } from \"./table\"\nimport { ChevronRight } from \"lucide-react\"\n\nexport function TableMobile<T extends { id: string }>({\n data,\n columns,\n showCheckbox = true,\n onRowClick,\n selectedItems,\n onSelect,\n isLoading = false,\n loadingRows = 3\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Loading skeleton component for mobile\n if (isLoading) {\n return (\n <div className=\"space-y-4\">\n {Array(loadingRows).fill(0).map((_, index) => (\n <div \n key={`skeleton-${index}`} \n className=\"border border-border/40 rounded-xl p-4 space-y-4 shadow-sm bg-card/30 animate-pulse\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"h-5 bg-muted/70 rounded-md w-2/5\" />\n {showCheckbox && (\n <div className=\"h-4 w-4 rounded-md bg-muted/50\" />\n )}\n </div>\n <div className=\"space-y-3 pt-2\">\n {columns.slice(0, 4).map((column, colIndex) => (\n <div key={`skeleton-col-${column.id}`} className=\"flex items-start gap-3\">\n <div className=\"h-4 bg-muted/40 rounded-md w-1/4\" />\n <div className=\"h-4 bg-muted/60 rounded-md\" style={{ width: Math.random() * 50 + 30 + '%' }} />\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n }\n\n if (data.length === 0) {\n return null; // Empty state is handled by the main Table component\n }\n\n return (\n <div className=\"space-y-4\">\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"border border-border/40 rounded-xl overflow-hidden bg-card/30 shadow-sm transition-all duration-200\",\n onRowClick && \"cursor-pointer hover:border-primary/30 hover:shadow-md hover:bg-card/50\"\n )}\n onClick={() => onRowClick?.(item)}\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border/30 bg-muted/5\">\n <div className=\"font-medium\">\n {/* Display a primary identifier */}\n {columns[0].cell(item) || `Item ${index + 1}`}\n </div>\n <div className=\"flex items-center gap-2\">\n {showCheckbox && (\n <Checkbox\n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n className=\"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n />\n )}\n {onRowClick && (\n <ChevronRight className=\"h-4 w-4 text-muted-foreground/50\" />\n )}\n </div>\n </div>\n \n <div className=\"px-4 py-3 space-y-3\">\n {columns.slice(1).map((column) => (\n <div\n key={column.id}\n className=\"flex items-start gap-3 text-sm group\"\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className=\"font-medium text-muted-foreground w-1/3 min-w-[80px] text-xs uppercase tracking-wide pt-0.5\">\n {column.header}\n </div>\n <div className={cn(\n \"flex-1 min-w-0 text-foreground/90 group-hover:text-foreground transition-colors\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align=\"start\"\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n} "],"names":["TableMobile","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","isLoading","loadingRows","hoveredText","setHoveredText","useState","jsx","_","index","jsxs","column","colIndex","item","cn","Checkbox","ChevronRight","Tooltip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../jsx-runtime-BYECrxsp.cjs"),l=require("../utils-DSKoFOjv.cjs"),j=require("./checkbox.js"),h=require("./tooltip.js"),b=require("react"),v=require("lucide-react");function g({data:x,columns:d,showCheckbox:n=!0,onRowClick:i,selectedItems:t,onSelect:o,isLoading:p=!1,loadingRows:c=3}){const[m,u]=b.useState(null);return p?e.jsxRuntimeExports.jsx("div",{className:"space-y-4",children:Array(c).fill(0).map((r,a)=>e.jsxRuntimeExports.jsxs("div",{className:"border border-border/40 rounded-xl p-4 space-y-4 shadow-sm bg-card/30 animate-pulse",children:[e.jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxRuntimeExports.jsx("div",{className:"h-5 bg-muted/70 rounded-md w-2/5"}),n&&e.jsxRuntimeExports.jsx("div",{className:"h-4 w-4 rounded-md bg-muted/50"})]}),e.jsxRuntimeExports.jsx("div",{className:"space-y-3 pt-2",children:d.slice(0,4).map((s,f)=>e.jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxRuntimeExports.jsx("div",{className:"h-4 bg-muted/40 rounded-md w-1/4"}),e.jsxRuntimeExports.jsx("div",{className:"h-4 bg-muted/60 rounded-md",style:{width:Math.random()*50+30+"%"}})]},`skeleton-col-${s.id}`))})]},`skeleton-${a}`))}):x.length===0?null:e.jsxRuntimeExports.jsx("div",{className:"space-y-4",children:x.map((r,a)=>e.jsxRuntimeExports.jsxs("div",{className:l.cn("border border-border/40 rounded-xl overflow-hidden bg-card/30 shadow-sm transition-all duration-200",i&&"cursor-pointer hover:border-primary/30 hover:shadow-md hover:bg-card/50"),onClick:()=>i==null?void 0:i(r),children:[e.jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border/30 bg-muted/5",children:[e.jsxRuntimeExports.jsx("div",{className:"font-medium",children:d[0].cell(r)||`Item ${a+1}`}),e.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-2",children:[n&&e.jsxRuntimeExports.jsx(j.Checkbox,{checked:t==null?void 0:t.has(r.id),onClick:s=>{s.stopPropagation(),o==null||o(r.id,!(t!=null&&t.has(r.id)))},className:"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground"}),i&&e.jsxRuntimeExports.jsx(v.ChevronRight,{className:"h-4 w-4 text-muted-foreground/50"})]})]}),e.jsxRuntimeExports.jsx("div",{className:"px-4 py-3 space-y-3",children:d.slice(1).map(s=>e.jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-3 text-sm group",onMouseEnter:()=>s.tooltipValue&&u(`${a}-${s.id}`),onMouseLeave:()=>u(null),children:[e.jsxRuntimeExports.jsx("div",{className:"font-medium text-muted-foreground w-1/3 min-w-[80px] text-xs uppercase tracking-wide pt-0.5",children:s.header}),e.jsxRuntimeExports.jsx("div",{className:l.cn("flex-1 min-w-0 text-foreground/90 group-hover:text-foreground transition-colors",s.truncate&&"truncate"),children:s.cell(r)}),s.tooltipValue&&m===`${a}-${s.id}`&&e.jsxRuntimeExports.jsx(h.Tooltip,{content:s.tooltipValue(r),side:"bottom",align:"start",isVisible:!0})]},s.id))})]},r.id))})}exports.TableMobile=g;
2
+ //# sourceMappingURL=table-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-mobile.js","sources":["../../src/components/table-mobile.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { Column, TableProps } from \"./table\"\nimport { ChevronRight } from \"lucide-react\"\n\nexport function TableMobile<T extends { id: string }>({\n data,\n columns,\n showCheckbox = true,\n onRowClick,\n selectedItems,\n onSelect,\n isLoading = false,\n loadingRows = 3\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Loading skeleton component for mobile\n if (isLoading) {\n return (\n <div className=\"space-y-4\">\n {Array(loadingRows).fill(0).map((_, index) => (\n <div \n key={`skeleton-${index}`} \n className=\"border border-border/40 rounded-xl p-4 space-y-4 shadow-sm bg-card/30 animate-pulse\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"h-5 bg-muted/70 rounded-md w-2/5\" />\n {showCheckbox && (\n <div className=\"h-4 w-4 rounded-md bg-muted/50\" />\n )}\n </div>\n <div className=\"space-y-3 pt-2\">\n {columns.slice(0, 4).map((column, colIndex) => (\n <div key={`skeleton-col-${column.id}`} className=\"flex items-start gap-3\">\n <div className=\"h-4 bg-muted/40 rounded-md w-1/4\" />\n <div className=\"h-4 bg-muted/60 rounded-md\" style={{ width: Math.random() * 50 + 30 + '%' }} />\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n }\n\n if (data.length === 0) {\n return null; // Empty state is handled by the main Table component\n }\n\n return (\n <div className=\"space-y-4\">\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"border border-border/40 rounded-xl overflow-hidden bg-card/30 shadow-sm transition-all duration-200\",\n onRowClick && \"cursor-pointer hover:border-primary/30 hover:shadow-md hover:bg-card/50\"\n )}\n onClick={() => onRowClick?.(item)}\n >\n <div className=\"flex items-center justify-between p-4 border-b border-border/30 bg-muted/5\">\n <div className=\"font-medium\">\n {/* Display a primary identifier */}\n {columns[0].cell(item) || `Item ${index + 1}`}\n </div>\n <div className=\"flex items-center gap-2\">\n {showCheckbox && (\n <Checkbox\n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n className=\"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\"\n />\n )}\n {onRowClick && (\n <ChevronRight className=\"h-4 w-4 text-muted-foreground/50\" />\n )}\n </div>\n </div>\n \n <div className=\"px-4 py-3 space-y-3\">\n {columns.slice(1).map((column) => (\n <div\n key={column.id}\n className=\"flex items-start gap-3 text-sm group\"\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className=\"font-medium text-muted-foreground w-1/3 min-w-[80px] text-xs uppercase tracking-wide pt-0.5\">\n {column.header}\n </div>\n <div className={cn(\n \"flex-1 min-w-0 text-foreground/90 group-hover:text-foreground transition-colors\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align=\"start\"\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n} "],"names":["TableMobile","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","isLoading","loadingRows","hoveredText","setHoveredText","useState","jsx","_","index","jsxs","column","colIndex","item","cn","Checkbox","e","ChevronRight","Tooltip"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface Column<T> {
2
+ id: string;
3
+ header: string;
4
+ width?: string;
5
+ cell: (item: T) => React.ReactNode;
6
+ className?: string;
7
+ tooltipValue?: (item: T) => string;
8
+ truncate?: boolean;
9
+ }
10
+ export interface TableProps<T> {
11
+ data: T[];
12
+ columns: Column<T>[];
13
+ showCheckbox?: boolean;
14
+ onRowClick?: (item: T) => void;
15
+ className?: string;
16
+ selectedItems?: Set<string>;
17
+ onSelect?: (id: string, checked: boolean) => void;
18
+ emptyState?: {
19
+ title?: string;
20
+ description?: string;
21
+ actionLabel?: string;
22
+ onAction?: () => void;
23
+ icon?: React.ReactNode;
24
+ };
25
+ isLoading?: boolean;
26
+ loadingRows?: number;
27
+ tableHeight?: string;
28
+ }
29
+ export declare function Table<T extends {
30
+ id: string;
31
+ }>({ data, columns, showCheckbox, onRowClick, className, selectedItems, onSelect, emptyState, isLoading, loadingRows, tableHeight }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,143 @@
1
+ import { j as r } from "../jsx-runtime-DGlMoOmv.js";
2
+ import { c as s } from "../utils-qaFjX9_3.js";
3
+ import { Checkbox as j } from "./checkbox.esm.js";
4
+ import { Tooltip as y } from "./tooltip.esm.js";
5
+ import { useState as T } from "react";
6
+ import { TableEmpty as $ } from "./table-empty.esm.js";
7
+ const h = ({ children: d, className: t }) => /* @__PURE__ */ r.jsx("div", { className: s("border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm", t), children: d });
8
+ function P({
9
+ data: d,
10
+ columns: t,
11
+ showCheckbox: o = !0,
12
+ onRowClick: p,
13
+ className: v,
14
+ selectedItems: a,
15
+ onSelect: l,
16
+ emptyState: u,
17
+ isLoading: f = !1,
18
+ loadingRows: g = 5,
19
+ tableHeight: m
20
+ }) {
21
+ const [b, c] = T(null), x = [
22
+ o ? "40px" : null,
23
+ ...t.map((i) => i.width || "1fr")
24
+ ].filter(Boolean).join(" "), N = () => /* @__PURE__ */ r.jsx("div", { className: s("divide-y divide-border/30 overflow-y-auto", `h-[calc(100vh-${m})]`), children: Array(g).fill(0).map((i, n) => /* @__PURE__ */ r.jsxs(
25
+ "div",
26
+ {
27
+ className: "grid items-center px-6 py-4 text-sm",
28
+ style: { gridTemplateColumns: x },
29
+ children: [
30
+ o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx("div", { className: "h-4 w-4 rounded bg-muted animate-pulse" }) }),
31
+ t.map((e) => /* @__PURE__ */ r.jsx(
32
+ "div",
33
+ {
34
+ className: s("px-2 relative min-w-0", e.className),
35
+ children: /* @__PURE__ */ r.jsx(
36
+ "div",
37
+ {
38
+ className: "h-4 bg-muted rounded animate-pulse",
39
+ style: { width: Math.random() * 40 + 40 + "%" }
40
+ }
41
+ )
42
+ },
43
+ `skeleton-col-${e.id}`
44
+ ))
45
+ ]
46
+ },
47
+ `skeleton-${n}`
48
+ )) });
49
+ return f ? /* @__PURE__ */ r.jsx(h, { className: v, children: /* @__PURE__ */ r.jsxs("div", { className: "relative", children: [
50
+ /* @__PURE__ */ r.jsxs(
51
+ "div",
52
+ {
53
+ className: s(
54
+ "grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10"
55
+ ),
56
+ style: { gridTemplateColumns: x },
57
+ children: [
58
+ o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx("div", { className: "h-4 w-4 rounded bg-muted animate-pulse" }) }),
59
+ t.map((i) => /* @__PURE__ */ r.jsx("div", { className: s("px-2 font-medium", i.className), children: i.header }, i.id))
60
+ ]
61
+ }
62
+ ),
63
+ /* @__PURE__ */ r.jsx(N, {})
64
+ ] }) }) : d.length === 0 ? /* @__PURE__ */ r.jsx(h, { className: v, children: /* @__PURE__ */ r.jsx("div", { className: "relative", children: /* @__PURE__ */ r.jsx($, { ...u }) }) }) : /* @__PURE__ */ r.jsx(h, { className: v, children: /* @__PURE__ */ r.jsxs("div", { className: "relative", children: [
65
+ /* @__PURE__ */ r.jsxs(
66
+ "div",
67
+ {
68
+ className: s(
69
+ "grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10"
70
+ ),
71
+ style: { gridTemplateColumns: x },
72
+ children: [
73
+ o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx(
74
+ j,
75
+ {
76
+ checked: d.length > 0 && (a == null ? void 0 : a.size) === d.length,
77
+ onClick: (i) => {
78
+ i.stopPropagation(), d.forEach((n) => l == null ? void 0 : l(n.id, !(a != null && a.has(n.id))));
79
+ }
80
+ }
81
+ ) }),
82
+ t.map((i) => /* @__PURE__ */ r.jsx("div", { className: s("px-2 font-medium", i.className), children: i.header }, i.id))
83
+ ]
84
+ }
85
+ ),
86
+ /* @__PURE__ */ r.jsx("div", { className: s("divide-y divide-border/30 overflow-y-auto", m || "h-[calc(100vh-12rem)]"), children: d.map((i, n) => /* @__PURE__ */ r.jsxs(
87
+ "div",
88
+ {
89
+ className: s(
90
+ "grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer"
91
+ ),
92
+ style: { gridTemplateColumns: x },
93
+ onClick: () => p == null ? void 0 : p(i),
94
+ children: [
95
+ o && /* @__PURE__ */ r.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ r.jsx(
96
+ j,
97
+ {
98
+ checked: a == null ? void 0 : a.has(i.id),
99
+ onClick: (e) => {
100
+ e.stopPropagation(), l == null || l(i.id, !(a != null && a.has(i.id)));
101
+ }
102
+ }
103
+ ) }),
104
+ t.map((e) => /* @__PURE__ */ r.jsxs(
105
+ "div",
106
+ {
107
+ className: s(
108
+ "px-2 relative min-w-0",
109
+ e.className
110
+ ),
111
+ onMouseEnter: () => e.tooltipValue && c(`${n}-${e.id}`),
112
+ onMouseLeave: () => c(null),
113
+ children: [
114
+ /* @__PURE__ */ r.jsx("div", { className: s(
115
+ "flex items-center gap-2",
116
+ e.truncate && "overflow-hidden"
117
+ ), children: /* @__PURE__ */ r.jsx("div", { className: s(
118
+ "w-full",
119
+ e.truncate && "truncate"
120
+ ), children: e.cell(i) }) }),
121
+ e.tooltipValue && b === `${n}-${e.id}` && /* @__PURE__ */ r.jsx(
122
+ y,
123
+ {
124
+ content: e.tooltipValue(i),
125
+ side: "bottom",
126
+ align: "start",
127
+ isVisible: !0
128
+ }
129
+ )
130
+ ]
131
+ },
132
+ e.id
133
+ ))
134
+ ]
135
+ },
136
+ i.id
137
+ )) })
138
+ ] }) });
139
+ }
140
+ export {
141
+ P as Table
142
+ };
143
+ //# sourceMappingURL=table.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.esm.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeight?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeight\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", `h-[calc(100vh-${tableHeight})]`)}>\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", tableHeight || \"h-[calc(100vh-12rem)]\")}>\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeight","hoveredText","setHoveredText","useState","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","e","item","Tooltip"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../jsx-runtime-BYECrxsp.cjs"),t=require("../utils-DSKoFOjv.cjs"),v=require("./checkbox.js"),g=require("./tooltip.js"),N=require("react"),y=require("./table-empty.js"),j=({children:n,className:x})=>s.jsxRuntimeExports.jsx("div",{className:t.cn("border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm",x),children:n});function T({data:n,columns:x,showCheckbox:o=!0,onRowClick:p,className:l,selectedItems:i,onSelect:d,emptyState:h,isLoading:E=!1,loadingRows:b=5,tableHeight:m}){const[f,c]=N.useState(null),u=[o?"40px":null,...x.map(e=>e.width||"1fr")].filter(Boolean).join(" "),R=()=>s.jsxRuntimeExports.jsx("div",{className:t.cn("divide-y divide-border/30 overflow-y-auto",`h-[calc(100vh-${m})]`),children:Array(b).fill(0).map((e,a)=>s.jsxRuntimeExports.jsxs("div",{className:"grid items-center px-6 py-4 text-sm",style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"})}),x.map(r=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 relative min-w-0",r.className),children:s.jsxRuntimeExports.jsx("div",{className:"h-4 bg-muted rounded animate-pulse",style:{width:Math.random()*40+40+"%"}})},`skeleton-col-${r.id}`))]},`skeleton-${a}`))});return E?s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsxs("div",{className:"relative",children:[s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10"),style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx("div",{className:"h-4 w-4 rounded bg-muted animate-pulse"})}),x.map(e=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 font-medium",e.className),children:e.header},e.id))]}),s.jsxRuntimeExports.jsx(R,{})]})}):n.length===0?s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsx("div",{className:"relative",children:s.jsxRuntimeExports.jsx(y.TableEmpty,{...h})})}):s.jsxRuntimeExports.jsx(j,{className:l,children:s.jsxRuntimeExports.jsxs("div",{className:"relative",children:[s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10"),style:{gridTemplateColumns:u},children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx(v.Checkbox,{checked:n.length>0&&(i==null?void 0:i.size)===n.length,onClick:e=>{e.stopPropagation(),n.forEach(a=>d==null?void 0:d(a.id,!(i!=null&&i.has(a.id))))}})}),x.map(e=>s.jsxRuntimeExports.jsx("div",{className:t.cn("px-2 font-medium",e.className),children:e.header},e.id))]}),s.jsxRuntimeExports.jsx("div",{className:t.cn("divide-y divide-border/30 overflow-y-auto",m||"h-[calc(100vh-12rem)]"),children:n.map((e,a)=>s.jsxRuntimeExports.jsxs("div",{className:t.cn("grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer"),style:{gridTemplateColumns:u},onClick:()=>p==null?void 0:p(e),children:[o&&s.jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:s.jsxRuntimeExports.jsx(v.Checkbox,{checked:i==null?void 0:i.has(e.id),onClick:r=>{r.stopPropagation(),d==null||d(e.id,!(i!=null&&i.has(e.id)))}})}),x.map(r=>s.jsxRuntimeExports.jsxs("div",{className:t.cn("px-2 relative min-w-0",r.className),onMouseEnter:()=>r.tooltipValue&&c(`${a}-${r.id}`),onMouseLeave:()=>c(null),children:[s.jsxRuntimeExports.jsx("div",{className:t.cn("flex items-center gap-2",r.truncate&&"overflow-hidden"),children:s.jsxRuntimeExports.jsx("div",{className:t.cn("w-full",r.truncate&&"truncate"),children:r.cell(e)})}),r.tooltipValue&&f===`${a}-${r.id}`&&s.jsxRuntimeExports.jsx(g.Tooltip,{content:r.tooltipValue(e),side:"bottom",align:"start",isVisible:!0})]},r.id))]},e.id))})]})})}exports.Table=T;
2
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sources":["../../src/components/table.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\nimport { Checkbox } from \"./checkbox\"\nimport { Tooltip } from \"./tooltip\"\nimport { useState } from \"react\"\nimport { TableEmpty } from \"./table-empty\"\n\nexport interface Column<T> {\n id: string\n header: string\n width?: string\n cell: (item: T) => React.ReactNode\n className?: string\n tooltipValue?: (item: T) => string\n truncate?: boolean\n}\n\nexport interface TableProps<T> {\n data: T[]\n columns: Column<T>[]\n showCheckbox?: boolean\n onRowClick?: (item: T) => void\n className?: string\n selectedItems?: Set<string>\n onSelect?: (id: string, checked: boolean) => void\n emptyState?: {\n title?: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n icon?: React.ReactNode\n }\n isLoading?: boolean\n loadingRows?: number\n tableHeight?: string\n}\n\nconst TableContainer = ({ children, className }: { children: React.ReactNode, className?: string }) => {\n return (\n <div className={cn(\"border border-border/50 rounded-lg overflow-hidden bg-background shadow-sm\", className)}>\n {children}\n </div>\n )\n} \nexport function Table<T extends { id: string }>({ \n data, \n columns, \n showCheckbox = true,\n onRowClick,\n className,\n selectedItems,\n onSelect,\n emptyState,\n isLoading = false,\n loadingRows = 5,\n tableHeight\n}: TableProps<T>) {\n const [hoveredText, setHoveredText] = useState<string | null>(null);\n\n // Improved grid template calculation\n const gridTemplateColumns = [\n showCheckbox ? '40px' : null,\n ...columns.map(col => col.width || '1fr')\n ].filter(Boolean).join(' ');\n\n // Loading skeleton component\n const TableSkeleton = () => (\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", `h-[calc(100vh-${tableHeight})]`)}>\n {Array(loadingRows).fill(0).map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"grid items-center px-6 py-4 text-sm\"\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={`skeleton-col-${column.id}`} \n className={cn(\"px-2 relative min-w-0\", column.className)}\n >\n <div className=\"h-4 bg-muted rounded animate-pulse\" \n style={{ width: Math.random() * 40 + 40 + '%' }} />\n </div>\n ))}\n </div>\n ))}\n </div>\n );\n\n if (isLoading) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <div className=\"h-4 w-4 rounded bg-muted animate-pulse\" />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n <TableSkeleton />\n </div>\n </TableContainer>\n );\n }\n\n if (data.length === 0) {\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n <TableEmpty {...emptyState} />\n </div>\n </TableContainer>\n );\n }\n\n return (\n <TableContainer className={className}>\n <div className=\"relative\">\n {/* Header */}\n <div className={cn(\n \"grid items-center px-6 py-3 text-xs font-medium text-muted-foreground/80 bg-muted/30 border-b border-border/30 sticky top-0 z-10\",\n )}\n style={{ gridTemplateColumns }}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={data.length > 0 && selectedItems?.size === data.length}\n onClick={(e) => {\n e.stopPropagation();\n data.forEach(item => onSelect?.(item.id, !selectedItems?.has(item.id)));\n }}\n />\n </div>\n )}\n {columns.map(column => (\n <div key={column.id} className={cn(\"px-2 font-medium\", column.className)}>\n {column.header}\n </div>\n ))}\n </div>\n\n {/* Body */}\n <div className={cn(\"divide-y divide-border/30 overflow-y-auto\", tableHeight || \"h-[calc(100vh-12rem)]\")}>\n {data.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"grid items-center px-6 py-4 text-sm text-foreground bg-background hover:bg-muted/30 transition-colors duration-150 group cursor-pointer\",\n )}\n style={{ gridTemplateColumns }}\n onClick={() => onRowClick?.(item)}\n >\n {showCheckbox && (\n <div className=\"flex items-center justify-center\">\n <Checkbox \n checked={selectedItems?.has(item.id)}\n onClick={(e) => {\n e.stopPropagation();\n onSelect?.(item.id, !selectedItems?.has(item.id));\n }}\n />\n </div>\n )}\n \n {columns.map(column => (\n <div \n key={column.id} \n className={cn(\n \"px-2 relative min-w-0\",\n column.className\n )}\n onMouseEnter={() => column.tooltipValue && setHoveredText(`${index}-${column.id}`)}\n onMouseLeave={() => setHoveredText(null)}\n >\n <div className={cn(\n \"flex items-center gap-2\",\n column.truncate && \"overflow-hidden\"\n )}>\n <div className={cn(\n \"w-full\",\n column.truncate && \"truncate\"\n )}>\n {column.cell(item)}\n </div>\n </div>\n {column.tooltipValue && hoveredText === `${index}-${column.id}` && (\n <Tooltip\n content={column.tooltipValue(item)}\n side=\"bottom\"\n align='start'\n isVisible={true}\n />\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </TableContainer>\n );\n} "],"names":["TableContainer","children","className","cn","Table","data","columns","showCheckbox","onRowClick","selectedItems","onSelect","emptyState","isLoading","loadingRows","tableHeight","hoveredText","setHoveredText","useState","gridTemplateColumns","col","TableSkeleton","jsx","_","index","jsxs","column","TableEmpty","Checkbox","item","e","Tooltip"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3
+ declare const Tabs: React.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React.RefAttributes<HTMLDivElement>>;
4
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const TabsContent: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -0,0 +1,47 @@
1
+ import { j as a } from "../jsx-runtime-DGlMoOmv.js";
2
+ import * as o from "react";
3
+ import * as e from "@radix-ui/react-tabs";
4
+ import { c as n } from "../utils-qaFjX9_3.js";
5
+ const m = e.Root, r = o.forwardRef(({ className: i, ...s }, t) => /* @__PURE__ */ a.jsx(
6
+ e.List,
7
+ {
8
+ ref: t,
9
+ className: n(
10
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
11
+ i
12
+ ),
13
+ ...s
14
+ }
15
+ ));
16
+ r.displayName = e.List.displayName;
17
+ const f = o.forwardRef(({ className: i, ...s }, t) => /* @__PURE__ */ a.jsx(
18
+ e.Trigger,
19
+ {
20
+ ref: t,
21
+ className: n(
22
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
23
+ i
24
+ ),
25
+ ...s
26
+ }
27
+ ));
28
+ f.displayName = e.Trigger.displayName;
29
+ const c = o.forwardRef(({ className: i, ...s }, t) => /* @__PURE__ */ a.jsx(
30
+ e.Content,
31
+ {
32
+ ref: t,
33
+ className: n(
34
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
35
+ i
36
+ ),
37
+ ...s
38
+ }
39
+ ));
40
+ c.displayName = e.Content.displayName;
41
+ export {
42
+ m as Tabs,
43
+ c as TabsContent,
44
+ r as TabsList,
45
+ f as TabsTrigger
46
+ };
47
+ //# sourceMappingURL=tabs.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.esm.js","sources":["../../src/components/tabs.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent } "],"names":["Tabs","TabsPrimitive","TabsList","React","className","props","ref","jsx","cn","TabsTrigger","TabsContent"],"mappings":";;;;AAIA,MAAMA,IAAOC,EAAc,MAErBC,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAS,cAAcD,EAAc,KAAK;AAE1C,MAAMQ,IAAcN,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAY,cAAcR,EAAc,QAAQ;AAEhD,MAAMS,IAAcP,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAY,cAAcT,EAAc,QAAQ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../jsx-runtime-BYECrxsp.cjs"),d=require("react"),b=require("@radix-ui/react-tabs"),r=require("../utils-DSKoFOjv.cjs");function c(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(s,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return s.default=e,Object.freeze(s)}const a=c(d),i=c(b),g=i.Root,u=a.forwardRef(({className:e,...s},t)=>n.jsxRuntimeExports.jsx(i.List,{ref:t,className:r.cn("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",e),...s}));u.displayName=i.List.displayName;const l=a.forwardRef(({className:e,...s},t)=>n.jsxRuntimeExports.jsx(i.Trigger,{ref:t,className:r.cn("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",e),...s}));l.displayName=i.Trigger.displayName;const f=a.forwardRef(({className:e,...s},t)=>n.jsxRuntimeExports.jsx(i.Content,{ref:t,className:r.cn("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...s}));f.displayName=i.Content.displayName;exports.Tabs=g;exports.TabsContent=f;exports.TabsList=u;exports.TabsTrigger=l;
2
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sources":["../../src/components/tabs.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n className\n )}\n {...props}\n />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent } "],"names":["Tabs","TabsPrimitive","TabsList","React","className","props","ref","jsx","cn","TabsTrigger","TabsContent"],"mappings":"wfAIMA,EAAOC,EAAc,KAErBC,EAAWC,EAAM,WAGrB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACN,EAAc,KAAd,CACC,IAAAK,EACA,UAAWE,EAAAA,GACT,4FACAJ,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDH,EAAS,YAAcD,EAAc,KAAK,YAE1C,MAAMQ,EAAcN,EAAM,WAGxB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACN,EAAc,QAAd,CACC,IAAAK,EACA,UAAWE,EAAAA,GACT,iYACAJ,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDI,EAAY,YAAcR,EAAc,QAAQ,YAEhD,MAAMS,EAAcP,EAAM,WAGxB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACN,EAAc,QAAd,CACC,IAAAK,EACA,UAAWE,EAAAA,GACT,kIACAJ,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDK,EAAY,YAAcT,EAAc,QAAQ"}