@desbug/ultra-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +203 -0
  2. package/dist/components/blocks/activity-feed-card.d.ts +25 -0
  3. package/dist/components/blocks/activity-feed-card.d.ts.map +1 -0
  4. package/dist/components/blocks/activity-feed-card.js +13 -0
  5. package/dist/components/blocks/activity-feed-card.js.map +1 -0
  6. package/dist/components/blocks/bar-breakdown-card.d.ts +34 -0
  7. package/dist/components/blocks/bar-breakdown-card.d.ts.map +1 -0
  8. package/dist/components/blocks/bar-breakdown-card.js +24 -0
  9. package/dist/components/blocks/bar-breakdown-card.js.map +1 -0
  10. package/dist/components/blocks/block-card.d.ts +39 -0
  11. package/dist/components/blocks/block-card.d.ts.map +1 -0
  12. package/dist/components/blocks/block-card.js +14 -0
  13. package/dist/components/blocks/block-card.js.map +1 -0
  14. package/dist/components/blocks/callout-card.d.ts +20 -0
  15. package/dist/components/blocks/callout-card.d.ts.map +1 -0
  16. package/dist/components/blocks/callout-card.js +12 -0
  17. package/dist/components/blocks/callout-card.js.map +1 -0
  18. package/dist/components/blocks/donut-card.d.ts +28 -0
  19. package/dist/components/blocks/donut-card.d.ts.map +1 -0
  20. package/dist/components/blocks/donut-card.js +24 -0
  21. package/dist/components/blocks/donut-card.js.map +1 -0
  22. package/dist/components/blocks/file-list-card.d.ts +21 -0
  23. package/dist/components/blocks/file-list-card.d.ts.map +1 -0
  24. package/dist/components/blocks/file-list-card.js +12 -0
  25. package/dist/components/blocks/file-list-card.js.map +1 -0
  26. package/dist/components/blocks/funnel-card.d.ts +19 -0
  27. package/dist/components/blocks/funnel-card.d.ts.map +1 -0
  28. package/dist/components/blocks/funnel-card.js +18 -0
  29. package/dist/components/blocks/funnel-card.js.map +1 -0
  30. package/dist/components/blocks/gauge-card.d.ts +20 -0
  31. package/dist/components/blocks/gauge-card.d.ts.map +1 -0
  32. package/dist/components/blocks/gauge-card.js +12 -0
  33. package/dist/components/blocks/gauge-card.js.map +1 -0
  34. package/dist/components/blocks/index.d.ts +21 -0
  35. package/dist/components/blocks/index.d.ts.map +1 -0
  36. package/dist/components/blocks/index.js +24 -0
  37. package/dist/components/blocks/index.js.map +1 -0
  38. package/dist/components/blocks/kpi-card.d.ts +18 -0
  39. package/dist/components/blocks/kpi-card.d.ts.map +1 -0
  40. package/dist/components/blocks/kpi-card.js +11 -0
  41. package/dist/components/blocks/kpi-card.js.map +1 -0
  42. package/dist/components/blocks/palette.d.ts +9 -0
  43. package/dist/components/blocks/palette.d.ts.map +1 -0
  44. package/dist/components/blocks/palette.js +20 -0
  45. package/dist/components/blocks/palette.js.map +1 -0
  46. package/dist/components/blocks/progress-list-card.d.ts +29 -0
  47. package/dist/components/blocks/progress-list-card.d.ts.map +1 -0
  48. package/dist/components/blocks/progress-list-card.js +19 -0
  49. package/dist/components/blocks/progress-list-card.js.map +1 -0
  50. package/dist/components/blocks/radar-stats-card.d.ts +18 -0
  51. package/dist/components/blocks/radar-stats-card.d.ts.map +1 -0
  52. package/dist/components/blocks/radar-stats-card.js +10 -0
  53. package/dist/components/blocks/radar-stats-card.js.map +1 -0
  54. package/dist/components/blocks/ranking-list-card.d.ts +25 -0
  55. package/dist/components/blocks/ranking-list-card.d.ts.map +1 -0
  56. package/dist/components/blocks/ranking-list-card.js +10 -0
  57. package/dist/components/blocks/ranking-list-card.js.map +1 -0
  58. package/dist/components/blocks/spark-stat-card.d.ts +22 -0
  59. package/dist/components/blocks/spark-stat-card.d.ts.map +1 -0
  60. package/dist/components/blocks/spark-stat-card.js +10 -0
  61. package/dist/components/blocks/spark-stat-card.js.map +1 -0
  62. package/dist/components/blocks/steps-card.d.ts +17 -0
  63. package/dist/components/blocks/steps-card.d.ts.map +1 -0
  64. package/dist/components/blocks/steps-card.js +16 -0
  65. package/dist/components/blocks/steps-card.js.map +1 -0
  66. package/dist/components/blocks/team-list-card.d.ts +21 -0
  67. package/dist/components/blocks/team-list-card.d.ts.map +1 -0
  68. package/dist/components/blocks/team-list-card.js +9 -0
  69. package/dist/components/blocks/team-list-card.js.map +1 -0
  70. package/dist/components/blocks/timeline-card.d.ts +19 -0
  71. package/dist/components/blocks/timeline-card.d.ts.map +1 -0
  72. package/dist/components/blocks/timeline-card.js +13 -0
  73. package/dist/components/blocks/timeline-card.js.map +1 -0
  74. package/dist/components/blocks/todo-list-card.d.ts +21 -0
  75. package/dist/components/blocks/todo-list-card.d.ts.map +1 -0
  76. package/dist/components/blocks/todo-list-card.js +11 -0
  77. package/dist/components/blocks/todo-list-card.js.map +1 -0
  78. package/dist/components/blocks/trend-chart-card.d.ts +33 -0
  79. package/dist/components/blocks/trend-chart-card.d.ts.map +1 -0
  80. package/dist/components/blocks/trend-chart-card.js +13 -0
  81. package/dist/components/blocks/trend-chart-card.js.map +1 -0
  82. package/dist/components/shared/avatar-stack.d.ts +17 -0
  83. package/dist/components/shared/avatar-stack.d.ts.map +1 -0
  84. package/dist/components/shared/avatar-stack.js +10 -0
  85. package/dist/components/shared/avatar-stack.js.map +1 -0
  86. package/dist/components/shared/avatar-with-name.d.ts +15 -0
  87. package/dist/components/shared/avatar-with-name.d.ts.map +1 -0
  88. package/dist/components/shared/avatar-with-name.js +8 -0
  89. package/dist/components/shared/avatar-with-name.js.map +1 -0
  90. package/dist/components/shared/chart-card.d.ts +20 -0
  91. package/dist/components/shared/chart-card.d.ts.map +1 -0
  92. package/dist/components/shared/chart-card.js +8 -0
  93. package/dist/components/shared/chart-card.js.map +1 -0
  94. package/dist/components/shared/data-table-cells.d.ts +35 -0
  95. package/dist/components/shared/data-table-cells.d.ts.map +1 -0
  96. package/dist/components/shared/data-table-cells.js +37 -0
  97. package/dist/components/shared/data-table-cells.js.map +1 -0
  98. package/dist/components/shared/data-table-column-manager.d.ts +25 -0
  99. package/dist/components/shared/data-table-column-manager.d.ts.map +1 -0
  100. package/dist/components/shared/data-table-column-manager.js +88 -0
  101. package/dist/components/shared/data-table-column-manager.js.map +1 -0
  102. package/dist/components/shared/data-table-pagination.d.ts +11 -0
  103. package/dist/components/shared/data-table-pagination.d.ts.map +1 -0
  104. package/dist/components/shared/data-table-pagination.js +24 -0
  105. package/dist/components/shared/data-table-pagination.js.map +1 -0
  106. package/dist/components/shared/data-table-toolbar.d.ts +15 -0
  107. package/dist/components/shared/data-table-toolbar.d.ts.map +1 -0
  108. package/dist/components/shared/data-table-toolbar.js +14 -0
  109. package/dist/components/shared/data-table-toolbar.js.map +1 -0
  110. package/dist/components/shared/data-table.d.ts +49 -0
  111. package/dist/components/shared/data-table.d.ts.map +1 -0
  112. package/dist/components/shared/data-table.js +56 -0
  113. package/dist/components/shared/data-table.js.map +1 -0
  114. package/dist/components/shared/empty-state.d.ts +14 -0
  115. package/dist/components/shared/empty-state.d.ts.map +1 -0
  116. package/dist/components/shared/empty-state.js +7 -0
  117. package/dist/components/shared/empty-state.js.map +1 -0
  118. package/dist/components/shared/github-link.d.ts +16 -0
  119. package/dist/components/shared/github-link.d.ts.map +1 -0
  120. package/dist/components/shared/github-link.js +15 -0
  121. package/dist/components/shared/github-link.js.map +1 -0
  122. package/dist/components/shared/gradient-def.d.ts +23 -0
  123. package/dist/components/shared/gradient-def.d.ts.map +1 -0
  124. package/dist/components/shared/gradient-def.js +13 -0
  125. package/dist/components/shared/gradient-def.js.map +1 -0
  126. package/dist/components/shared/header-actions-menu.d.ts +12 -0
  127. package/dist/components/shared/header-actions-menu.d.ts.map +1 -0
  128. package/dist/components/shared/header-actions-menu.js +11 -0
  129. package/dist/components/shared/header-actions-menu.js.map +1 -0
  130. package/dist/components/shared/header-search.d.ts +12 -0
  131. package/dist/components/shared/header-search.d.ts.map +1 -0
  132. package/dist/components/shared/header-search.js +10 -0
  133. package/dist/components/shared/header-search.js.map +1 -0
  134. package/dist/components/shared/index.d.ts +23 -0
  135. package/dist/components/shared/index.d.ts.map +1 -0
  136. package/dist/components/shared/index.js +27 -0
  137. package/dist/components/shared/index.js.map +1 -0
  138. package/dist/components/shared/messages-menu.d.ts +16 -0
  139. package/dist/components/shared/messages-menu.d.ts.map +1 -0
  140. package/dist/components/shared/messages-menu.js +12 -0
  141. package/dist/components/shared/messages-menu.js.map +1 -0
  142. package/dist/components/shared/notifications-menu.d.ts +18 -0
  143. package/dist/components/shared/notifications-menu.d.ts.map +1 -0
  144. package/dist/components/shared/notifications-menu.js +12 -0
  145. package/dist/components/shared/notifications-menu.js.map +1 -0
  146. package/dist/components/shared/page-header.d.ts +25 -0
  147. package/dist/components/shared/page-header.d.ts.map +1 -0
  148. package/dist/components/shared/page-header.js +13 -0
  149. package/dist/components/shared/page-header.js.map +1 -0
  150. package/dist/components/shared/progress-bar.d.ts +16 -0
  151. package/dist/components/shared/progress-bar.d.ts.map +1 -0
  152. package/dist/components/shared/progress-bar.js +8 -0
  153. package/dist/components/shared/progress-bar.js.map +1 -0
  154. package/dist/components/shared/section-card.d.ts +18 -0
  155. package/dist/components/shared/section-card.d.ts.map +1 -0
  156. package/dist/components/shared/section-card.js +8 -0
  157. package/dist/components/shared/section-card.js.map +1 -0
  158. package/dist/components/shared/series-chart.d.ts +49 -0
  159. package/dist/components/shared/series-chart.d.ts.map +1 -0
  160. package/dist/components/shared/series-chart.js +29 -0
  161. package/dist/components/shared/series-chart.js.map +1 -0
  162. package/dist/components/shared/stat-card.d.ts +32 -0
  163. package/dist/components/shared/stat-card.d.ts.map +1 -0
  164. package/dist/components/shared/stat-card.js +18 -0
  165. package/dist/components/shared/stat-card.js.map +1 -0
  166. package/dist/components/shared/stats-grid.d.ts +21 -0
  167. package/dist/components/shared/stats-grid.d.ts.map +1 -0
  168. package/dist/components/shared/stats-grid.js +19 -0
  169. package/dist/components/shared/stats-grid.js.map +1 -0
  170. package/dist/components/shared/status-badge.d.ts +26 -0
  171. package/dist/components/shared/status-badge.d.ts.map +1 -0
  172. package/dist/components/shared/status-badge.js +95 -0
  173. package/dist/components/shared/status-badge.js.map +1 -0
  174. package/dist/components/ui/accordion.d.ts +8 -0
  175. package/dist/components/ui/accordion.d.ts.map +1 -0
  176. package/dist/components/ui/accordion.js +19 -0
  177. package/dist/components/ui/accordion.js.map +1 -0
  178. package/dist/components/ui/alert-dialog.d.ts +19 -0
  179. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  180. package/dist/components/ui/alert-dialog.js +43 -0
  181. package/dist/components/ui/alert-dialog.js.map +1 -0
  182. package/dist/components/ui/alert.d.ts +11 -0
  183. package/dist/components/ui/alert.d.ts.map +1 -0
  184. package/dist/components/ui/alert.js +28 -0
  185. package/dist/components/ui/alert.js.map +1 -0
  186. package/dist/components/ui/aspect-ratio.d.ts +4 -0
  187. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  188. package/dist/components/ui/aspect-ratio.js +8 -0
  189. package/dist/components/ui/aspect-ratio.js.map +1 -0
  190. package/dist/components/ui/avatar.d.ts +12 -0
  191. package/dist/components/ui/avatar.d.ts.map +1 -0
  192. package/dist/components/ui/avatar.js +24 -0
  193. package/dist/components/ui/avatar.js.map +1 -0
  194. package/dist/components/ui/badge.d.ts +10 -0
  195. package/dist/components/ui/badge.d.ts.map +1 -0
  196. package/dist/components/ui/badge.js +25 -0
  197. package/dist/components/ui/badge.js.map +1 -0
  198. package/dist/components/ui/breadcrumb.d.ts +12 -0
  199. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  200. package/dist/components/ui/breadcrumb.js +28 -0
  201. package/dist/components/ui/breadcrumb.js.map +1 -0
  202. package/dist/components/ui/button.d.ts +11 -0
  203. package/dist/components/ui/button.d.ts.map +1 -0
  204. package/dist/components/ui/button.js +36 -0
  205. package/dist/components/ui/button.js.map +1 -0
  206. package/dist/components/ui/calendar.d.ts +11 -0
  207. package/dist/components/ui/calendar.d.ts.map +1 -0
  208. package/dist/components/ui/calendar.js +77 -0
  209. package/dist/components/ui/calendar.js.map +1 -0
  210. package/dist/components/ui/card.d.ts +12 -0
  211. package/dist/components/ui/card.d.ts.map +1 -0
  212. package/dist/components/ui/card.js +25 -0
  213. package/dist/components/ui/card.js.map +1 -0
  214. package/dist/components/ui/carousel.d.ts +29 -0
  215. package/dist/components/ui/carousel.d.ts.map +1 -0
  216. package/dist/components/ui/carousel.js +92 -0
  217. package/dist/components/ui/carousel.js.map +1 -0
  218. package/dist/components/ui/chart.d.ts +45 -0
  219. package/dist/components/ui/chart.d.ts.map +1 -0
  220. package/dist/components/ui/chart.js +133 -0
  221. package/dist/components/ui/chart.js.map +1 -0
  222. package/dist/components/ui/checkbox.d.ts +5 -0
  223. package/dist/components/ui/checkbox.d.ts.map +1 -0
  224. package/dist/components/ui/checkbox.js +10 -0
  225. package/dist/components/ui/checkbox.js.map +1 -0
  226. package/dist/components/ui/collapsible.d.ts +6 -0
  227. package/dist/components/ui/collapsible.d.ts.map +1 -0
  228. package/dist/components/ui/collapsible.js +14 -0
  229. package/dist/components/ui/collapsible.js.map +1 -0
  230. package/dist/components/ui/command.d.ts +19 -0
  231. package/dist/components/ui/command.d.ts.map +1 -0
  232. package/dist/components/ui/command.js +36 -0
  233. package/dist/components/ui/command.js.map +1 -0
  234. package/dist/components/ui/context-menu.d.ts +32 -0
  235. package/dist/components/ui/context-menu.d.ts.map +1 -0
  236. package/dist/components/ui/context-menu.js +52 -0
  237. package/dist/components/ui/context-menu.js.map +1 -0
  238. package/dist/components/ui/dialog.d.ts +18 -0
  239. package/dist/components/ui/dialog.d.ts.map +1 -0
  240. package/dist/components/ui/dialog.js +38 -0
  241. package/dist/components/ui/dialog.js.map +1 -0
  242. package/dist/components/ui/drawer.d.ts +14 -0
  243. package/dist/components/ui/drawer.d.ts.map +1 -0
  244. package/dist/components/ui/drawer.js +36 -0
  245. package/dist/components/ui/drawer.js.map +1 -0
  246. package/dist/components/ui/dropdown-menu.d.ts +30 -0
  247. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  248. package/dist/components/ui/dropdown-menu.js +52 -0
  249. package/dist/components/ui/dropdown-menu.js.map +1 -0
  250. package/dist/components/ui/form.d.ts +25 -0
  251. package/dist/components/ui/form.d.ts.map +1 -0
  252. package/dist/components/ui/form.js +60 -0
  253. package/dist/components/ui/form.js.map +1 -0
  254. package/dist/components/ui/hover-card.d.ts +7 -0
  255. package/dist/components/ui/hover-card.d.ts.map +1 -0
  256. package/dist/components/ui/hover-card.js +15 -0
  257. package/dist/components/ui/hover-card.js.map +1 -0
  258. package/dist/components/ui/input-group.d.ts +17 -0
  259. package/dist/components/ui/input-group.d.ts.map +1 -0
  260. package/dist/components/ui/input-group.js +58 -0
  261. package/dist/components/ui/input-group.js.map +1 -0
  262. package/dist/components/ui/input-otp.d.ts +12 -0
  263. package/dist/components/ui/input-otp.d.ts.map +1 -0
  264. package/dist/components/ui/input-otp.js +22 -0
  265. package/dist/components/ui/input-otp.js.map +1 -0
  266. package/dist/components/ui/input.d.ts +4 -0
  267. package/dist/components/ui/input.d.ts.map +1 -0
  268. package/dist/components/ui/input.js +7 -0
  269. package/dist/components/ui/input.js.map +1 -0
  270. package/dist/components/ui/kbd.d.ts +4 -0
  271. package/dist/components/ui/kbd.d.ts.map +1 -0
  272. package/dist/components/ui/kbd.js +10 -0
  273. package/dist/components/ui/kbd.js.map +1 -0
  274. package/dist/components/ui/label.d.ts +5 -0
  275. package/dist/components/ui/label.d.ts.map +1 -0
  276. package/dist/components/ui/label.js +9 -0
  277. package/dist/components/ui/label.js.map +1 -0
  278. package/dist/components/ui/menubar.d.ts +31 -0
  279. package/dist/components/ui/menubar.d.ts.map +1 -0
  280. package/dist/components/ui/menubar.js +55 -0
  281. package/dist/components/ui/menubar.js.map +1 -0
  282. package/dist/components/ui/navigation-menu.d.ts +15 -0
  283. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  284. package/dist/components/ui/navigation-menu.js +32 -0
  285. package/dist/components/ui/navigation-menu.js.map +1 -0
  286. package/dist/components/ui/pagination.d.ts +18 -0
  287. package/dist/components/ui/pagination.d.ts.map +1 -0
  288. package/dist/components/ui/pagination.js +27 -0
  289. package/dist/components/ui/pagination.js.map +1 -0
  290. package/dist/components/ui/popover.d.ts +11 -0
  291. package/dist/components/ui/popover.d.ts.map +1 -0
  292. package/dist/components/ui/popover.js +27 -0
  293. package/dist/components/ui/popover.js.map +1 -0
  294. package/dist/components/ui/progress.d.ts +5 -0
  295. package/dist/components/ui/progress.d.ts.map +1 -0
  296. package/dist/components/ui/progress.js +9 -0
  297. package/dist/components/ui/progress.js.map +1 -0
  298. package/dist/components/ui/radio-group.d.ts +6 -0
  299. package/dist/components/ui/radio-group.d.ts.map +1 -0
  300. package/dist/components/ui/radio-group.js +12 -0
  301. package/dist/components/ui/radio-group.js.map +1 -0
  302. package/dist/components/ui/resizable.d.ts +8 -0
  303. package/dist/components/ui/resizable.d.ts.map +1 -0
  304. package/dist/components/ui/resizable.js +15 -0
  305. package/dist/components/ui/resizable.js.map +1 -0
  306. package/dist/components/ui/scroll-area.d.ts +6 -0
  307. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  308. package/dist/components/ui/scroll-area.js +12 -0
  309. package/dist/components/ui/scroll-area.js.map +1 -0
  310. package/dist/components/ui/select.d.ts +16 -0
  311. package/dist/components/ui/select.d.ts.map +1 -0
  312. package/dist/components/ui/select.js +37 -0
  313. package/dist/components/ui/select.js.map +1 -0
  314. package/dist/components/ui/separator.d.ts +5 -0
  315. package/dist/components/ui/separator.d.ts.map +1 -0
  316. package/dist/components/ui/separator.js +9 -0
  317. package/dist/components/ui/separator.js.map +1 -0
  318. package/dist/components/ui/sheet.d.ts +15 -0
  319. package/dist/components/ui/sheet.d.ts.map +1 -0
  320. package/dist/components/ui/sheet.js +38 -0
  321. package/dist/components/ui/sheet.js.map +1 -0
  322. package/dist/components/ui/sidebar.d.ts +70 -0
  323. package/dist/components/ui/sidebar.d.ts.map +1 -0
  324. package/dist/components/ui/sidebar.js +207 -0
  325. package/dist/components/ui/sidebar.js.map +1 -0
  326. package/dist/components/ui/skeleton.d.ts +3 -0
  327. package/dist/components/ui/skeleton.d.ts.map +1 -0
  328. package/dist/components/ui/skeleton.js +7 -0
  329. package/dist/components/ui/skeleton.js.map +1 -0
  330. package/dist/components/ui/slider.d.ts +5 -0
  331. package/dist/components/ui/slider.d.ts.map +1 -0
  332. package/dist/components/ui/slider.js +15 -0
  333. package/dist/components/ui/slider.js.map +1 -0
  334. package/dist/components/ui/sonner.d.ts +4 -0
  335. package/dist/components/ui/sonner.d.ts.map +1 -0
  336. package/dist/components/ui/sonner.js +26 -0
  337. package/dist/components/ui/sonner.js.map +1 -0
  338. package/dist/components/ui/switch.d.ts +7 -0
  339. package/dist/components/ui/switch.d.ts.map +1 -0
  340. package/dist/components/ui/switch.js +9 -0
  341. package/dist/components/ui/switch.js.map +1 -0
  342. package/dist/components/ui/table.d.ts +11 -0
  343. package/dist/components/ui/table.d.ts.map +1 -0
  344. package/dist/components/ui/table.js +29 -0
  345. package/dist/components/ui/table.js.map +1 -0
  346. package/dist/components/ui/tabs.d.ts +12 -0
  347. package/dist/components/ui/tabs.d.ts.map +1 -0
  348. package/dist/components/ui/tabs.js +30 -0
  349. package/dist/components/ui/tabs.js.map +1 -0
  350. package/dist/components/ui/textarea.d.ts +4 -0
  351. package/dist/components/ui/textarea.d.ts.map +1 -0
  352. package/dist/components/ui/textarea.js +7 -0
  353. package/dist/components/ui/textarea.js.map +1 -0
  354. package/dist/components/ui/toggle-group.d.ts +11 -0
  355. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  356. package/dist/components/ui/toggle-group.js +24 -0
  357. package/dist/components/ui/toggle-group.js.map +1 -0
  358. package/dist/components/ui/toggle.d.ts +10 -0
  359. package/dist/components/ui/toggle.d.ts.map +1 -0
  360. package/dist/components/ui/toggle.js +27 -0
  361. package/dist/components/ui/toggle.js.map +1 -0
  362. package/dist/components/ui/tooltip.d.ts +8 -0
  363. package/dist/components/ui/tooltip.d.ts.map +1 -0
  364. package/dist/components/ui/tooltip.js +18 -0
  365. package/dist/components/ui/tooltip.js.map +1 -0
  366. package/dist/hooks/use-mobile.d.ts +2 -0
  367. package/dist/hooks/use-mobile.d.ts.map +1 -0
  368. package/dist/hooks/use-mobile.js +16 -0
  369. package/dist/hooks/use-mobile.js.map +1 -0
  370. package/dist/index.d.ts +53 -0
  371. package/dist/index.d.ts.map +1 -0
  372. package/dist/index.js +57 -0
  373. package/dist/index.js.map +1 -0
  374. package/dist/lib/utils.d.ts +3 -0
  375. package/dist/lib/utils.d.ts.map +1 -0
  376. package/dist/lib/utils.js +6 -0
  377. package/dist/lib/utils.js.map +1 -0
  378. package/dist/styles.css +240 -0
  379. package/package.json +67 -0
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+ import { type ChartSeries, type SeriesChartType } from "../../components/shared/index.js";
3
+ export interface TrendChartCardProps {
4
+ title?: React.ReactNode;
5
+ icon?: React.ElementType;
6
+ actions?: React.ReactNode;
7
+ /** Chart rows. */
8
+ data: Array<Record<string, unknown>>;
9
+ /** One or more series to plot. */
10
+ series: ChartSeries[];
11
+ /** Category (x) key in `data`. */
12
+ xKey: string;
13
+ type?: SeriesChartType;
14
+ /** Optional headline value above the chart. */
15
+ total?: React.ReactNode;
16
+ change?: string;
17
+ trend?: "up" | "down";
18
+ caption?: string;
19
+ showGrid?: boolean;
20
+ smooth?: boolean;
21
+ showYAxis?: boolean;
22
+ /** Chart box height utility (default `h-[240px]`). */
23
+ height?: string;
24
+ xTickFormatter?: (value: unknown, index: number) => string;
25
+ yTickFormatter?: (value: unknown, index: number) => string;
26
+ className?: string;
27
+ }
28
+ /**
29
+ * A titled chart card (area / bar / line) with an optional total + change
30
+ * headline. Wraps {@link SeriesChart}; colors come from each series.
31
+ */
32
+ export declare function TrendChartCard({ title, icon, actions, data, series, xKey, type, total, change, trend, caption, showGrid, smooth, showYAxis, height, xTickFormatter, yTickFormatter, className, }: TrendChartCardProps): React.JSX.Element;
33
+ //# sourceMappingURL=trend-chart-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-chart-card.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/trend-chart-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG1F,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB;IAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,kCAAkC;IAClC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAa,EACb,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAe,EACf,MAAa,EACb,SAAiB,EACjB,MAAoB,EACpB,cAAc,EACd,cAAc,EACd,SAAS,GACV,EAAE,mBAAmB,qBA+BrB"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../lib/utils.js";
4
+ import { SeriesChart } from "../../components/shared/index.js";
5
+ import { BlockCard, MetricHeadline } from "./block-card.js";
6
+ /**
7
+ * A titled chart card (area / bar / line) with an optional total + change
8
+ * headline. Wraps {@link SeriesChart}; colors come from each series.
9
+ */
10
+ export function TrendChartCard({ title, icon, actions, data, series, xKey, type = "area", total, change, trend, caption, showGrid = true, smooth = true, showYAxis = false, height = "h-[240px]", xTickFormatter, yTickFormatter, className, }) {
11
+ return (_jsxs(BlockCard, { title: title, icon: icon, actions: actions, className: className, bodyClassName: total != null ? "space-y-6" : undefined, children: [total != null && (_jsx(MetricHeadline, { value: total, change: change, trend: trend, caption: caption })), _jsx(SeriesChart, { type: type, data: data, series: series, xKey: xKey, showGrid: showGrid, smooth: smooth, showYAxis: showYAxis, xTickFormatter: xTickFormatter, yTickFormatter: yTickFormatter, className: cn(height) })] }));
12
+ }
13
+ //# sourceMappingURL=trend-chart-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trend-chart-card.js","sourceRoot":"","sources":["../../../src/components/blocks/trend-chart-card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAA0C,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4BzD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,IAAI,GAAG,MAAM,EACb,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,IAAI,EACb,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,WAAW,EACpB,cAAc,EACd,cAAc,EACd,SAAS,GACW;IACpB,OAAO,CACL,MAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,aAErD,KAAK,IAAI,IAAI,IAAI,CAChB,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAChB,CACH,EACD,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,GACrB,IACQ,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface AvatarStackItem {
2
+ name?: string;
3
+ src?: string;
4
+ fallback?: string;
5
+ }
6
+ interface AvatarStackProps {
7
+ avatars: AvatarStackItem[];
8
+ /** Show at most N avatars, collapsing the rest into a +N chip. */
9
+ max?: number;
10
+ className?: string;
11
+ /** Per-avatar class (size + border style). */
12
+ avatarClassName?: string;
13
+ }
14
+ /** Overlapping avatar group (the `-space-x-2` stacks used in headers/panels). */
15
+ export declare function AvatarStack({ avatars, max, className, avatarClassName, }: AvatarStackProps): import("react").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=avatar-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-stack.d.ts","sourceRoot":"","sources":["../../../src/components/shared/avatar-stack.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,SAAS,EACT,eAA+C,GAChD,EAAE,gBAAgB,+BA0BlB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ /** Overlapping avatar group (the `-space-x-2` stacks used in headers/panels). */
5
+ export function AvatarStack({ avatars, max, className, avatarClassName = "size-7 border-2 border-card", }) {
6
+ const visible = max ? avatars.slice(0, max) : avatars;
7
+ const overflow = max ? avatars.length - visible.length : 0;
8
+ return (_jsxs("div", { className: cn("flex -space-x-2", className), children: [visible.map((a, i) => (_jsxs(Avatar, { className: avatarClassName, children: [a.src && _jsx(AvatarImage, { src: a.src, alt: a.name ?? "" }), _jsx(AvatarFallback, { children: a.fallback ?? a.name?.charAt(0) ?? "?" })] }, a.name ?? i))), overflow > 0 && (_jsxs("div", { className: cn("flex items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground", avatarClassName), children: ["+", overflow] }))] }));
9
+ }
10
+ //# sourceMappingURL=avatar-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-stack.js","sourceRoot":"","sources":["../../../src/components/shared/avatar-stack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAiBjC,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,SAAS,EACT,eAAe,GAAG,6BAA6B,GAC9B;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,MAAM,IAAmB,SAAS,EAAE,eAAe,aACjD,CAAC,CAAC,GAAG,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,GAAI,EACxD,KAAC,cAAc,cACZ,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,GACxB,KAJN,CAAC,CAAC,IAAI,IAAI,CAAC,CAKf,CACV,CAAC,EACD,QAAQ,GAAG,CAAC,IAAI,CACf,eACE,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,eAAe,CAChB,kBAEC,QAAQ,IACN,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ interface AvatarWithNameProps {
3
+ name: string;
4
+ avatar?: string;
5
+ /** Optional second line (email, role, …). */
6
+ subtitle?: React.ReactNode;
7
+ fallback?: string;
8
+ className?: string;
9
+ avatarClassName?: string;
10
+ nameClassName?: string;
11
+ }
12
+ /** Inline avatar + name (+ optional subtitle) cell used across tables and lists. */
13
+ export declare function AvatarWithName({ name, avatar, subtitle, fallback, className, avatarClassName, nameClassName, }: AvatarWithNameProps): React.JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=avatar-with-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-with-name.d.ts","sourceRoot":"","sources":["../../../src/components/shared/avatar-with-name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAA0B,EAC1B,aAAa,GACd,EAAE,mBAAmB,qBAuBrB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ /** Inline avatar + name (+ optional subtitle) cell used across tables and lists. */
5
+ export function AvatarWithName({ name, avatar, subtitle, fallback, className, avatarClassName = "size-6", nameClassName, }) {
6
+ return (_jsxs("div", { className: cn("flex items-center gap-2.5", className), children: [_jsxs(Avatar, { className: avatarClassName, children: [avatar && _jsx(AvatarImage, { src: avatar, alt: name }), _jsx(AvatarFallback, { className: "bg-muted text-xs", children: fallback ?? name.charAt(0) })] }), _jsxs("div", { className: "min-w-0", children: [_jsx("span", { className: cn("block truncate text-sm font-medium", nameClassName), children: name }), subtitle && (_jsx("span", { className: "block truncate text-xs text-muted-foreground", children: subtitle }))] })] }));
7
+ }
8
+ //# sourceMappingURL=avatar-with-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-with-name.js","sourceRoot":"","sources":["../../../src/components/shared/avatar-with-name.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAajC,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,eAAe,GAAG,QAAQ,EAC1B,aAAa,GACO;IACpB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,aACxD,MAAC,MAAM,IAAC,SAAS,EAAE,eAAe,aAC/B,MAAM,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAI,EAClD,KAAC,cAAc,IAAC,SAAS,EAAC,kBAAkB,YACzC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GACZ,IACV,EACT,eAAK,SAAS,EAAC,SAAS,aACtB,eACE,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,aAAa,CAAC,YAEjE,IAAI,GACA,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,8CAA8C,YAC3D,QAAQ,GACJ,CACR,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ interface ChartCardProps {
3
+ title?: React.ReactNode;
4
+ /** Leading icon component, or any custom node (icon button, etc.). */
5
+ icon?: React.ElementType;
6
+ iconNode?: React.ReactNode;
7
+ /** Right-side header content (more menu, period selector, legend…). */
8
+ actions?: React.ReactNode;
9
+ /** Optional secondary header content under the title (legend dots, totals). */
10
+ subheader?: React.ReactNode;
11
+ children: React.ReactNode;
12
+ className?: string;
13
+ headerClassName?: string;
14
+ bodyClassName?: string;
15
+ divided?: boolean;
16
+ }
17
+ /** Card shell for charts: rounded card + header (icon + title + actions) + body. */
18
+ export declare function ChartCard({ title, icon: Icon, iconNode, actions, subheader, children, className, headerClassName, bodyClassName, divided, }: ChartCardProps): React.JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=chart-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-card.d.ts","sourceRoot":"","sources":["../../../src/components/shared/chart-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sEAAsE;IACtE,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uEAAuE;IACvE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAe,GAChB,EAAE,cAAc,qBAiChB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ /** Card shell for charts: rounded card + header (icon + title + actions) + body. */
4
+ export function ChartCard({ title, icon: Icon, iconNode, actions, subheader, children, className, headerClassName, bodyClassName, divided = false, }) {
5
+ const hasHeader = title || actions || iconNode || Icon || subheader;
6
+ return (_jsxs("div", { className: cn("flex flex-col rounded-xl border border-border bg-card", className), children: [hasHeader && (_jsxs("div", { className: cn("flex items-center justify-between gap-4 p-4 sm:p-6", divided && "border-b border-border", headerClassName), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [iconNode, Icon && _jsx(Icon, { className: "size-4 shrink-0 text-muted-foreground" }), title && (_jsx("span", { className: "truncate font-medium", children: title })), subheader] }), actions] })), _jsx("div", { className: cn("p-4 pt-0 sm:p-6 sm:pt-0", bodyClassName), children: children })] }));
7
+ }
8
+ //# sourceMappingURL=chart-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-card.js","sourceRoot":"","sources":["../../../src/components/shared/chart-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAkBjC,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAO,GAAG,KAAK,GACA;IACf,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC;IACpE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,SAAS,CACV,aAEA,SAAS,IAAI,CACZ,eACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,OAAO,IAAI,wBAAwB,EACnC,eAAe,CAChB,aAED,eAAK,SAAS,EAAC,iCAAiC,aAC7C,QAAQ,EACR,IAAI,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,GAAG,EAClE,KAAK,IAAI,CACR,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,CACtD,EACA,SAAS,IACN,EACL,OAAO,IACJ,CACP,EACD,cAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,aAAa,CAAC,YACzD,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ import * as React from "react";
2
+ import { type ColumnDef } from "@tanstack/react-table";
3
+ /** Row-selection column (checkbox header + per-row checkbox). */
4
+ export declare function selectColumn<T>(): ColumnDef<T>;
5
+ export interface RowAction {
6
+ label: React.ReactNode;
7
+ onSelect?: () => void;
8
+ /** Insert a separator before this item. */
9
+ separatorBefore?: boolean;
10
+ }
11
+ /** The "⋯" row-actions dropdown used at the end of table rows. */
12
+ export declare function RowActions({ actions, label, }: {
13
+ actions: RowAction[];
14
+ label?: React.ReactNode;
15
+ }): React.JSX.Element;
16
+ /** Currency value, right-aligned tabular numerals. */
17
+ export declare function CurrencyCell({ value, currency, className, }: {
18
+ value: number;
19
+ currency?: string;
20
+ className?: string;
21
+ }): React.JSX.Element;
22
+ /** Muted text cell (dates, ids, secondary values). */
23
+ export declare function MutedCell({ children, className, }: {
24
+ children: React.ReactNode;
25
+ className?: string;
26
+ }): React.JSX.Element;
27
+ /** Progress bar + percentage label. */
28
+ export declare function ProgressCell({ value, color, label, className, barClassName, }: {
29
+ value: number;
30
+ color?: string;
31
+ label?: React.ReactNode;
32
+ className?: string;
33
+ barClassName?: string;
34
+ }): React.JSX.Element;
35
+ //# sourceMappingURL=data-table-cells.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-cells.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-cells.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAevD,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAuB9C;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAiB,GAClB,EAAE;IACD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,qBAoBA;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAc,EACd,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAOA;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAMA;AAED,uCAAuC;AACvC,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAS,EACT,YAAqB,GACtB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,qBASA"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { MoreHorizontal } from "lucide-react";
5
+ import { Button } from "../../components/ui/button.js";
6
+ import { Checkbox } from "../../components/ui/checkbox.js";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
8
+ import { cn } from "../../lib/utils.js";
9
+ import { ProgressBar } from "./progress-bar.js";
10
+ /** Row-selection column (checkbox header + per-row checkbox). */
11
+ export function selectColumn() {
12
+ return {
13
+ id: "select",
14
+ header: ({ table }) => (_jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() ||
15
+ (table.getIsSomePageRowsSelected() && "indeterminate"), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value), "aria-label": "Select all" })),
16
+ cell: ({ row }) => (_jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": "Select row" })),
17
+ enableSorting: false,
18
+ enableHiding: false,
19
+ };
20
+ }
21
+ /** The "⋯" row-actions dropdown used at the end of table rows. */
22
+ export function RowActions({ actions, label = "Actions", }) {
23
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", className: "h-8 w-8 p-0", children: [_jsx("span", { className: "sr-only", children: "Open menu" }), _jsx(MoreHorizontal, { className: "h-4 w-4" })] }) }), _jsxs(DropdownMenuContent, { align: "end", children: [label && _jsx(DropdownMenuLabel, { children: label }), actions.map((a, i) => (_jsxs(React.Fragment, { children: [a.separatorBefore && _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { onClick: a.onSelect, children: a.label })] }, i)))] })] }));
24
+ }
25
+ /** Currency value, right-aligned tabular numerals. */
26
+ export function CurrencyCell({ value, currency = "$", className, }) {
27
+ return (_jsxs("span", { className: cn("text-sm tabular-nums", className), children: [currency, value.toLocaleString()] }));
28
+ }
29
+ /** Muted text cell (dates, ids, secondary values). */
30
+ export function MutedCell({ children, className, }) {
31
+ return (_jsx("span", { className: cn("text-sm text-muted-foreground", className), children: children }));
32
+ }
33
+ /** Progress bar + percentage label. */
34
+ export function ProgressCell({ value, color, label, className, barClassName = "w-20", }) {
35
+ return (_jsxs("div", { className: cn("flex items-center gap-2", className), children: [_jsx(ProgressBar, { value: value, color: color, className: barClassName }), _jsx("span", { className: "text-sm tabular-nums text-muted-foreground", children: label ?? `${Math.round(value)}%` })] }));
36
+ }
37
+ //# sourceMappingURL=data-table-cells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-cells.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-cells.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ import type { Table as TanstackTable } from "@tanstack/react-table";
3
+ interface DataTableColumnManagerProps<TData> {
4
+ table: TanstackTable<TData>;
5
+ /** Friendly labels per column id (falls back to the column id). */
6
+ labels?: Record<string, string>;
7
+ triggerLabel?: React.ReactNode;
8
+ title?: React.ReactNode;
9
+ description?: React.ReactNode;
10
+ resetLabel?: React.ReactNode;
11
+ cancelLabel?: React.ReactNode;
12
+ applyLabel?: React.ReactNode;
13
+ /** Renders the "N of M visible" line. */
14
+ countLabel?: (visible: number, total: number) => React.ReactNode;
15
+ className?: string;
16
+ }
17
+ /**
18
+ * "Manage columns" dialog: drag to reorder + toggle to show/hide, with
19
+ * Reset / Cancel / Apply. Changes are staged and only committed on Apply.
20
+ * Non-hideable columns (e.g. a selection checkbox or a sticky actions column)
21
+ * stay pinned to their positions and are not listed.
22
+ */
23
+ export declare function DataTableColumnManager<TData>({ table, labels, triggerLabel, title, description, resetLabel, cancelLabel, applyLabel, countLabel, className, }: DataTableColumnManagerProps<TData>): React.JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=data-table-column-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-column-manager.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-column-manager.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAepE,UAAU,2BAA2B,CAAC,KAAK;IACzC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,EAC5C,KAAK,EACL,MAAW,EACX,YAAwB,EACxB,KAA2B,EAC3B,WAA+E,EAC/E,UAAwB,EACxB,WAAwB,EACxB,UAAsB,EACtB,UAAkE,EAClE,SAAS,GACV,EAAE,2BAA2B,CAAC,KAAK,CAAC,qBAuJpC"}
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Columns3, GripVertical, RotateCcw } from "lucide-react";
5
+ import { Button } from "../../components/ui/button.js";
6
+ import { Switch } from "../../components/ui/switch.js";
7
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "../../components/ui/dialog.js";
8
+ import { cn } from "../../lib/utils.js";
9
+ /**
10
+ * "Manage columns" dialog: drag to reorder + toggle to show/hide, with
11
+ * Reset / Cancel / Apply. Changes are staged and only committed on Apply.
12
+ * Non-hideable columns (e.g. a selection checkbox or a sticky actions column)
13
+ * stay pinned to their positions and are not listed.
14
+ */
15
+ export function DataTableColumnManager({ table, labels = {}, triggerLabel = "Colunas", title = "Gerenciar colunas", description = "Arraste para reordenar, ative/desative para mostrar ou ocultar.", resetLabel = "Redefinir", cancelLabel = "Cancelar", applyLabel = "Aplicar", countLabel = (visible, total) => `${visible} de ${total} visíveis`, className, }) {
16
+ const [open, setOpen] = React.useState(false);
17
+ const [order, setOrder] = React.useState([]);
18
+ const [visible, setVisible] = React.useState({});
19
+ const [dragId, setDragId] = React.useState(null);
20
+ // Manageable (hideable) columns in their definition order; the pinned
21
+ // (non-hideable) columns keep their slots and are excluded from the list.
22
+ const managedDefault = React.useMemo(() => table
23
+ .getAllLeafColumns()
24
+ .filter((c) => c.getCanHide())
25
+ .map((c) => c.id), [table]);
26
+ const pinnedCount = table.getAllLeafColumns().length - managedDefault.length;
27
+ const totalCount = table.getAllLeafColumns().length;
28
+ function currentFullOrder() {
29
+ const stateOrder = table.getState().columnOrder;
30
+ return stateOrder.length
31
+ ? stateOrder
32
+ : table.getAllLeafColumns().map((c) => c.id);
33
+ }
34
+ function initDraft() {
35
+ const managed = currentFullOrder().filter((id) => managedDefault.includes(id));
36
+ for (const id of managedDefault)
37
+ if (!managed.includes(id))
38
+ managed.push(id);
39
+ setOrder(managed);
40
+ setVisible(Object.fromEntries(managed.map((id) => [id, table.getColumn(id)?.getIsVisible() ?? true])));
41
+ }
42
+ function onOpenChange(next) {
43
+ if (next)
44
+ initDraft();
45
+ setOpen(next);
46
+ }
47
+ function reorder(overId) {
48
+ if (!dragId || dragId === overId)
49
+ return;
50
+ setOrder((prev) => {
51
+ const from = prev.indexOf(dragId);
52
+ const to = prev.indexOf(overId);
53
+ if (from === -1 || to === -1)
54
+ return prev;
55
+ const next = [...prev];
56
+ next.splice(from, 1);
57
+ next.splice(to, 0, dragId);
58
+ return next;
59
+ });
60
+ }
61
+ function reset() {
62
+ setOrder(managedDefault);
63
+ setVisible(Object.fromEntries(managedDefault.map((id) => [id, true])));
64
+ }
65
+ function apply() {
66
+ // Preserve pinned columns in their existing slots; fill the rest with the
67
+ // staged order.
68
+ let mi = 0;
69
+ const next = currentFullOrder().map((id) => managedDefault.includes(id) ? order[mi++] : id);
70
+ table.setColumnOrder(next);
71
+ table.setColumnVisibility(visible);
72
+ setOpen(false);
73
+ }
74
+ const visibleCount = pinnedCount + order.filter((id) => visible[id]).length;
75
+ return (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [_jsx(DialogTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "sm", className: className, children: [_jsx(Columns3, { className: "mr-1 size-4" }), triggerLabel] }) }), _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsxs(DialogTitle, { className: "flex items-center gap-2", children: [_jsx(Columns3, { className: "size-5" }), title] }), description && _jsx(DialogDescription, { children: description })] }), _jsx("div", { className: "-mx-1 max-h-[55vh] space-y-2 overflow-y-auto px-1 py-1", children: order.map((id) => {
76
+ const col = table.getColumn(id);
77
+ if (!col)
78
+ return null;
79
+ const isDragging = dragId === id;
80
+ return (_jsxs("div", { draggable: true, onDragStart: () => setDragId(id), onDragOver: (e) => {
81
+ e.preventDefault();
82
+ reorder(id);
83
+ }, onDragEnd: () => setDragId(null), className: cn("flex items-center gap-3 rounded-lg border bg-card px-3 py-2.5 transition-colors", isDragging
84
+ ? "border-primary/50 opacity-60"
85
+ : "hover:bg-muted/40"), children: [_jsx(GripVertical, { className: "size-4 shrink-0 cursor-grab text-muted-foreground active:cursor-grabbing" }), _jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium", children: labels[id] ?? id }), _jsx(Switch, { checked: visible[id] ?? true, onCheckedChange: (v) => setVisible((p) => ({ ...p, [id]: v })) })] }, id));
86
+ }) }), _jsxs(DialogFooter, { className: "flex-row items-center justify-between gap-2 sm:justify-between", children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: reset, children: [_jsx(RotateCcw, { className: "mr-1 size-3.5" }), resetLabel] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: countLabel(visibleCount, totalCount) }), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => setOpen(false), children: cancelLabel }), _jsx(Button, { size: "sm", onClick: apply, children: applyLabel })] })] })] })] }));
87
+ }
88
+ //# sourceMappingURL=data-table-column-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-column-manager.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-column-manager.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type Table } from "@tanstack/react-table";
2
+ interface DataTablePaginationProps<TData> {
3
+ table: Table<TData>;
4
+ variant?: "full" | "simple";
5
+ pageSizeOptions?: number[];
6
+ className?: string;
7
+ }
8
+ /** Table footer: page navigation + "Showing X to Y of Z" + page-size picker. */
9
+ export declare function DataTablePagination<TData>({ table, variant, pageSizeOptions, className, }: DataTablePaginationProps<TData>): import("react").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=data-table-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-pagination.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAiBnD,UAAU,wBAAwB,CAAC,KAAK;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,OAAgB,EAChB,eAAoC,EACpC,SAAS,GACV,EAAE,wBAAwB,CAAC,KAAK,CAAC,+BA6IjC"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { ChevronDown, ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, } from "lucide-react";
4
+ import { Button } from "../../components/ui/button.js";
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
6
+ import { cn } from "../../lib/utils.js";
7
+ /** Table footer: page navigation + "Showing X to Y of Z" + page-size picker. */
8
+ export function DataTablePagination({ table, variant = "full", pageSizeOptions = [5, 8, 10, 20, 50], className, }) {
9
+ const { pageIndex, pageSize } = table.getState().pagination;
10
+ const totalRows = table.getFilteredRowModel().rows.length;
11
+ const pageCount = table.getPageCount();
12
+ const from = totalRows === 0 ? 0 : pageIndex * pageSize + 1;
13
+ const to = Math.min((pageIndex + 1) * pageSize, totalRows);
14
+ if (variant === "simple") {
15
+ return (_jsxs("div", { className: cn("flex items-center justify-between gap-4 border-t border-border p-4", className), children: [_jsxs("span", { className: "text-sm text-muted-foreground", children: [from, "\u2013", to, " of ", totalRows] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: "Previous" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: "Next" })] })] }));
16
+ }
17
+ return (_jsxs("div", { className: cn("flex flex-col items-center justify-between gap-4 border-t border-border p-4 sm:flex-row", className), children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronsLeft, { className: "size-4" }) }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronLeft, { className: "size-4" }) }), _jsxs("div", { className: "flex items-center gap-1", children: [Array.from({ length: Math.min(5, pageCount) }, (_, i) => {
18
+ const isActive = pageIndex === i;
19
+ return (_jsx("button", { onClick: () => table.setPageIndex(i), className: cn("size-8 rounded-lg text-sm font-semibold", isActive
20
+ ? "bg-muted text-foreground"
21
+ : "text-foreground hover:bg-muted"), children: i + 1 }, i));
22
+ }), pageCount > 5 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "px-2 text-muted-foreground", children: "..." }), _jsx("button", { onClick: () => table.setPageIndex(pageCount - 1), className: "size-8 rounded-lg text-sm font-semibold text-foreground hover:bg-muted", children: pageCount })] }))] }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: _jsx(ChevronRight, { className: "size-4" }) }), _jsx(Button, { variant: "outline", size: "icon", className: "size-8", onClick: () => table.setPageIndex(pageCount - 1), disabled: !table.getCanNextPage(), children: _jsx(ChevronsRight, { className: "size-4" }) })] }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("span", { className: "text-sm text-muted-foreground", children: ["Showing ", from, " to ", to, " of ", totalRows, " entries"] }), _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "sm", className: "h-8 gap-2", children: ["Show ", pageSize, _jsx(ChevronDown, { className: "size-4" })] }) }), _jsx(DropdownMenuContent, { align: "end", children: pageSizeOptions.map((size) => (_jsxs(DropdownMenuItem, { onClick: () => table.setPageSize(size), children: ["Show ", size] }, size))) })] })] })] }));
23
+ }
24
+ //# sourceMappingURL=data-table-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-pagination.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ /** Bordered toolbar band above a table (filters left, actions right). */
3
+ export declare function TableToolbar({ children, className, }: {
4
+ children: React.ReactNode;
5
+ className?: string;
6
+ }): React.JSX.Element;
7
+ /** Compact search input (icon + field) used inside table toolbars. */
8
+ export declare function TableSearch({ value, onChange, placeholder, className, inputClassName, }: {
9
+ value?: string;
10
+ onChange?: (value: string) => void;
11
+ placeholder?: string;
12
+ className?: string;
13
+ inputClassName?: string;
14
+ }): React.JSX.Element;
15
+ //# sourceMappingURL=data-table-toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table-toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,qBAWA;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAyB,EACzB,SAAS,EACT,cAAc,GACf,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,qBAYA"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Search } from "lucide-react";
4
+ import { Input } from "../../components/ui/input.js";
5
+ import { cn } from "../../lib/utils.js";
6
+ /** Bordered toolbar band above a table (filters left, actions right). */
7
+ export function TableToolbar({ children, className, }) {
8
+ return (_jsx("div", { className: cn("flex flex-col items-stretch justify-between gap-3 border-b border-border p-4 md:flex-row md:items-center", className), children: children }));
9
+ }
10
+ /** Compact search input (icon + field) used inside table toolbars. */
11
+ export function TableSearch({ value, onChange, placeholder = "Search...", className, inputClassName, }) {
12
+ return (_jsxs("div", { className: cn("relative w-full md:w-auto", className), children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { value: value, onChange: onChange ? (e) => onChange(e.target.value) : undefined, placeholder: placeholder, className: cn("h-9 w-full pl-8 md:w-[200px]", inputClassName) })] }));
13
+ }
14
+ //# sourceMappingURL=data-table-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-toolbar.js","sourceRoot":"","sources":["../../../src/components/shared/data-table-toolbar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,SAAS,GAIV;IACC,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,0GAA0G,EAC1G,SAAS,CACV,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAW,GAAG,WAAW,EACzB,SAAS,EACT,cAAc,GAOf;IACC,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,aACxD,KAAC,MAAM,IAAC,SAAS,EAAC,yEAAyE,GAAG,EAC9F,KAAC,KAAK,IACJ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAChE,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,cAAc,CAAC,GAC7D,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import * as React from "react";
2
+ import { type ColumnDef, type RowSelectionState, type RowData, type Table as TanstackTable, type VisibilityState } from "@tanstack/react-table";
3
+ declare module "@tanstack/react-table" {
4
+ interface ColumnMeta<TData extends RowData, TValue> {
5
+ headerClassName?: string;
6
+ cellClassName?: string;
7
+ }
8
+ }
9
+ interface DataTableProps<TData, TValue> {
10
+ columns: ColumnDef<TData, TValue>[];
11
+ data: TData[];
12
+ /** Toolbar rendered above the table; receives the table instance. */
13
+ toolbar?: (table: TanstackTable<TData>) => React.ReactNode;
14
+ /** Custom footer (replaces the built-in pagination); receives the table. */
15
+ footer?: (table: TanstackTable<TData>) => React.ReactNode;
16
+ enablePagination?: boolean;
17
+ paginationVariant?: "full" | "simple";
18
+ pageSize?: number;
19
+ pageSizeOptions?: number[];
20
+ initialColumnVisibility?: VisibilityState;
21
+ emptyMessage?: React.ReactNode;
22
+ getRowId?: (row: TData, index: number) => string;
23
+ /** Outer card wrapper class. */
24
+ className?: string;
25
+ tableClassName?: string;
26
+ /** Class for the header <TableRow> (defaults to a muted band). */
27
+ headerRowClassName?: string;
28
+ /** Class for each header <TableHead>. */
29
+ headerCellClassName?: string;
30
+ /** Notified when the row-selection set changes. */
31
+ onRowSelectionChange?: (selection: RowSelectionState) => void;
32
+ /**
33
+ * Clique na linha inteira (restaura o comportamento do DataTable legado).
34
+ * Não dispara quando o alvo do clique é um elemento interativo (botão, link,
35
+ * input, checkbox, item de menu) nem quando tem `[data-no-row-click]`.
36
+ */
37
+ onRowClick?: (row: TData) => void;
38
+ }
39
+ /**
40
+ * Generic TanStack-powered table: owns sorting / filtering / visibility /
41
+ * selection / pagination internally and renders the shadcn table shell +
42
+ * pagination. Pass pre-filtered `data` (e.g. from a store) and `columns`
43
+ * built with the shared cell helpers. Per-column `meta.headerClassName` /
44
+ * `meta.cellClassName` preserve widths and responsive hiding. Provide
45
+ * `footer` to swap the built-in pagination for a bespoke one.
46
+ */
47
+ export declare function DataTable<TData, TValue>({ columns, data, toolbar, footer, enablePagination, paginationVariant, pageSize, pageSizeOptions, initialColumnVisibility, emptyMessage, getRowId, className, tableClassName, headerRowClassName, headerCellClassName, onRowSelectionChange, onRowClick, }: DataTableProps<TData, TValue>): React.JSX.Element;
48
+ export {};
49
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/components/shared/data-table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,iBAAiB,EAEtB,KAAK,OAAO,EACZ,KAAK,KAAK,IAAI,aAAa,EAC3B,KAAK,eAAe,EAOrB,MAAM,uBAAuB,CAAC;AAc/B,OAAO,QAAQ,uBAAuB,CAAC;IAErC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAChD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CACF;AAED,UAAU,cAAc,CAAC,KAAK,EAAE,MAAM;IACpC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3D,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,eAAe,CAAC;IAC1C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9D;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EACvC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,MAAM,EACN,gBAAuB,EACvB,iBAA0B,EAC1B,QAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAA4B,EAC5B,QAAQ,EACR,SAAS,EACT,cAAc,EACd,kBAAkC,EAClC,mBAAyD,EACzD,oBAAoB,EACpB,UAAU,GACX,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,qBA2H/B"}