@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,56 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from "@tanstack/react-table";
5
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "../../components/ui/table.js";
6
+ import { DataTablePagination } from "./data-table-pagination.js";
7
+ import { cn } from "../../lib/utils.js";
8
+ /**
9
+ * Generic TanStack-powered table: owns sorting / filtering / visibility /
10
+ * selection / pagination internally and renders the shadcn table shell +
11
+ * pagination. Pass pre-filtered `data` (e.g. from a store) and `columns`
12
+ * built with the shared cell helpers. Per-column `meta.headerClassName` /
13
+ * `meta.cellClassName` preserve widths and responsive hiding. Provide
14
+ * `footer` to swap the built-in pagination for a bespoke one.
15
+ */
16
+ export function DataTable({ columns, data, toolbar, footer, enablePagination = true, paginationVariant = "full", pageSize = 8, pageSizeOptions, initialColumnVisibility, emptyMessage = "No results.", getRowId, className, tableClassName, headerRowClassName = "bg-muted/50", headerCellClassName = "font-medium text-muted-foreground", onRowSelectionChange, onRowClick, }) {
17
+ const [sorting, setSorting] = React.useState([]);
18
+ const [columnFilters, setColumnFilters] = React.useState([]);
19
+ const [columnVisibility, setColumnVisibility] = React.useState(initialColumnVisibility ?? {});
20
+ const [rowSelection, setRowSelection] = React.useState({});
21
+ React.useEffect(() => {
22
+ onRowSelectionChange?.(rowSelection);
23
+ }, [rowSelection, onRowSelectionChange]);
24
+ const table = useReactTable({
25
+ data,
26
+ columns,
27
+ getRowId,
28
+ onSortingChange: setSorting,
29
+ onColumnFiltersChange: setColumnFilters,
30
+ onColumnVisibilityChange: setColumnVisibility,
31
+ onRowSelectionChange: setRowSelection,
32
+ getCoreRowModel: getCoreRowModel(),
33
+ getSortedRowModel: getSortedRowModel(),
34
+ getFilteredRowModel: getFilteredRowModel(),
35
+ getPaginationRowModel: enablePagination
36
+ ? getPaginationRowModel()
37
+ : undefined,
38
+ initialState: { pagination: { pageSize } },
39
+ state: { sorting, columnFilters, columnVisibility, rowSelection },
40
+ });
41
+ return (_jsxs("div", { className: cn("rounded-xl border border-border bg-card", className), children: [toolbar?.(table), _jsx("div", { className: "overflow-x-auto", children: _jsxs(Table, { className: tableClassName, children: [_jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClassName, children: headerGroup.headers.map((header) => (_jsx(TableHead, { className: cn(headerCellClassName, header.column.columnDef.meta?.headerClassName), children: header.isPlaceholder
42
+ ? null
43
+ : flexRender(header.column.columnDef.header, header.getContext()) }, header.id))) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows?.length ? (table.getRowModel().rows.map((row) => (_jsx(TableRow, { "data-state": row.getIsSelected() && "selected", className: cn(onRowClick && "cursor-pointer hover:bg-muted/50"), onClick: onRowClick
44
+ ? (e) => {
45
+ // Não abre quando o clique foi num elemento interativo
46
+ // (botão de ação, link, checkbox de seleção, menu…).
47
+ if (e.target.closest('button, a, input, label, [role="checkbox"], [role="menuitem"], [data-no-row-click]')) {
48
+ return;
49
+ }
50
+ onRowClick(row.original);
51
+ }
52
+ : undefined, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cell.column.columnDef.meta?.cellClassName, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: columns.length, className: "h-24 text-center", children: emptyMessage }) })) })] }) }), footer
53
+ ? footer(table)
54
+ : enablePagination && (_jsx(DataTablePagination, { table: table, variant: paginationVariant, pageSizeOptions: pageSizeOptions }))] }));
55
+ }
56
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../../src/components/shared/data-table.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAQL,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AA2CjC;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAgB,EACvC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,MAAM,EACN,gBAAgB,GAAG,IAAI,EACvB,iBAAiB,GAAG,MAAM,EAC1B,QAAQ,GAAG,CAAC,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,GAAG,aAAa,EAC5B,QAAQ,EACR,SAAS,EACT,cAAc,EACd,kBAAkB,GAAG,aAAa,EAClC,mBAAmB,GAAG,mCAAmC,EACzD,oBAAoB,EACpB,UAAU,GACoB;IAC9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAe,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtD,EAAE,CACH,CAAC;IACF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAC3C,KAAK,CAAC,QAAQ,CAAkB,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAoB,EAAE,CAAC,CAAC;IAE9E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,oBAAoB,EAAE,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,eAAe,EAAE,UAAU;QAC3B,qBAAqB,EAAE,gBAAgB;QACvC,wBAAwB,EAAE,mBAAmB;QAC7C,oBAAoB,EAAE,eAAe;QACrC,eAAe,EAAE,eAAe,EAAE;QAClC,iBAAiB,EAAE,iBAAiB,EAAE;QACtC,mBAAmB,EAAE,mBAAmB,EAAE;QAC1C,qBAAqB,EAAE,gBAAgB;YACrC,CAAC,CAAC,qBAAqB,EAAE;YACzB,CAAC,CAAC,SAAS;QACb,YAAY,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE;QAC1C,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE;KAClE,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,yCAAyC,EAAE,SAAS,CAAC,aACrE,OAAO,EAAE,CAAC,KAAK,CAAC,EAEjB,cAAK,SAAS,EAAC,iBAAiB,YAC9B,MAAC,KAAK,IAAC,SAAS,EAAE,cAAc,aAC9B,KAAC,WAAW,cACT,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,KAAC,QAAQ,IAAsB,SAAS,EAAE,kBAAkB,YACzD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAER,SAAS,EAAE,EAAE,CACX,mBAAmB,EACnB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,CAC9C,YAEA,MAAM,CAAC,aAAa;wCACnB,CAAC,CAAC,IAAI;wCACN,CAAC,CAAC,UAAU,CACR,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAC9B,MAAM,CAAC,UAAU,EAAE,CACpB,IAXA,MAAM,CAAC,EAAE,CAYJ,CACb,CAAC,IAhBW,WAAW,CAAC,EAAE,CAiBlB,CACZ,CAAC,GACU,EACd,KAAC,SAAS,cACP,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAClC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpC,KAAC,QAAQ,kBAEK,GAAG,CAAC,aAAa,EAAE,IAAI,UAAU,EAC7C,SAAS,EAAE,EAAE,CACX,UAAU,IAAI,kCAAkC,CACjD,EACD,OAAO,EACL,UAAU;oCACR,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;wCACJ,uDAAuD;wCACvD,qDAAqD;wCACrD,IACG,CAAC,CAAC,MAAsB,CAAC,OAAO,CAC/B,oFAAoF,CACrF,EACD,CAAC;4CACD,OAAO;wCACT,CAAC;wCACD,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oCAC3B,CAAC;oCACH,CAAC,CAAC,SAAS,YAGd,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAER,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,YAEnD,UAAU,CACT,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAC1B,IAAI,CAAC,UAAU,EAAE,CAClB,IANI,IAAI,CAAC,EAAE,CAOF,CACb,CAAC,IAhCG,GAAG,CAAC,EAAE,CAiCF,CACZ,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,cACP,KAAC,SAAS,IACR,OAAO,EAAE,OAAO,CAAC,MAAM,EACvB,SAAS,EAAC,kBAAkB,YAE3B,YAAY,GACH,GACH,CACZ,GACS,IACN,GACJ,EAEL,MAAM;gBACL,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACf,CAAC,CAAC,gBAAgB,IAAI,CAClB,KAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,eAAe,GAChC,CACH,IACD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ interface EmptyStateProps {
3
+ /** Lucide icon, or any element (e.g. an emoji span). */
4
+ icon?: React.ElementType;
5
+ emoji?: React.ReactNode;
6
+ title: React.ReactNode;
7
+ description?: React.ReactNode;
8
+ action?: React.ReactNode;
9
+ className?: string;
10
+ }
11
+ /** Centered "no data" block: icon/emoji + title + optional description + action. */
12
+ export declare function EmptyState({ icon: Icon, emoji, title, description, action, className, }: EmptyStateProps): React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../src/components/shared/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,eAAe;IACvB,wDAAwD;IACxD,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,eAAe,qBAwBjB"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ /** Centered "no data" block: icon/emoji + title + optional description + action. */
4
+ export function EmptyState({ icon: Icon, emoji, title, description, action, className, }) {
5
+ return (_jsxs("div", { className: cn("flex flex-col items-center justify-center gap-3 px-6 py-16 text-center", className), children: [emoji ? (_jsx("span", { className: "text-4xl", children: emoji })) : (Icon && (_jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground", children: _jsx(Icon, { className: "size-6" }) }))), _jsx("p", { className: "font-medium text-foreground", children: title }), description && (_jsx("p", { className: "max-w-sm text-sm text-muted-foreground", children: description })), action] }));
6
+ }
7
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../../../src/components/shared/empty-state.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAYjC,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,GACO;IAChB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,SAAS,CACV,aAEA,KAAK,CAAC,CAAC,CAAC,CACP,eAAM,SAAS,EAAC,UAAU,YAAE,KAAK,GAAQ,CAC1C,CAAC,CAAC,CAAC,CACF,IAAI,IAAI,CACN,cAAK,SAAS,EAAC,sFAAsF,YACnG,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG,GACvB,CACP,CACF,EACD,YAAG,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAK,EACrD,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,wCAAwC,YAAE,WAAW,GAAK,CACxE,EACA,MAAM,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** The Square UI GitHub mark, used across every template header. */
2
+ export declare function GithubIcon({ className }: {
3
+ className?: string;
4
+ }): import("react").JSX.Element;
5
+ interface GithubLinkProps {
6
+ /** Square UI template slug (appended to the templates URL). */
7
+ template?: string;
8
+ /** Full href override (takes precedence over `template`). */
9
+ href?: string;
10
+ className?: string;
11
+ iconClassName?: string;
12
+ }
13
+ /** Ghost icon button linking to the template's source on Square UI's GitHub. */
14
+ export declare function GithubLink({ template, href, className, iconClassName, }: GithubLinkProps): import("react").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=github-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-link.d.ts","sourceRoot":"","sources":["../../../src/components/shared/github-link.tsx"],"names":[],"mappings":"AAMA,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAY/D;AAED,UAAU,eAAe;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,aAAa,GACd,EAAE,eAAe,+BAiBjB"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from "../../components/ui/button.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ const SQUARE_UI_BASE = "https://github.com/ln-dev7/square-ui/tree/master/templates";
5
+ /** The Square UI GitHub mark, used across every template header. */
6
+ export function GithubIcon({ className }) {
7
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", className: className, "aria-hidden": "true", children: _jsx("path", { d: "M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" }) }));
8
+ }
9
+ /** Ghost icon button linking to the template's source on Square UI's GitHub. */
10
+ export function GithubLink({ template, href, className, iconClassName, }) {
11
+ const url = href ??
12
+ (template ? `${SQUARE_UI_BASE}/${template}` : "https://github.com/ln-dev7/square-ui");
13
+ return (_jsx(Button, { variant: "ghost", size: "icon", className: cn("hidden sm:flex", className), asChild: true, children: _jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer", children: _jsx(GithubIcon, { className: cn("size-5", iconClassName) }) }) }));
14
+ }
15
+ //# sourceMappingURL=github-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-link.js","sourceRoot":"","sources":["../../../src/components/shared/github-link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,cAAc,GAClB,4DAA4D,CAAC;AAE/D,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAA0B;IAC9D,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,SAAS,iBACR,MAAM,YAElB,eAAM,CAAC,EAAC,2sBAA2sB,GAAG,GACltB,CACP,CAAC;AACJ,CAAC;AAWD,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,aAAa,GACG;IAChB,MAAM,GAAG,GACP,IAAI;QACJ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAExF,OAAO,CACL,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC1C,OAAO,kBAEP,YAAG,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,YACrD,KAAC,UAAU,IAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAI,GACpD,GACG,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ interface GradientDefProps {
3
+ id: string;
4
+ color: string;
5
+ /** Top stop opacity (default 1). */
6
+ from?: number;
7
+ /** Bottom stop opacity (default 0.6). */
8
+ to?: number;
9
+ /** Override stop offsets if needed. */
10
+ fromOffset?: string;
11
+ toOffset?: string;
12
+ }
13
+ /**
14
+ * A vertical `<linearGradient>` for Recharts area/bar fills.
15
+ * Render inside a `<defs>` element and reference via `url(#id)`.
16
+ */
17
+ export declare function GradientDef({ id, color, from, to, fromOffset, toOffset, }: GradientDefProps): React.JSX.Element;
18
+ /** Convenience: a `<defs>` containing one {@link GradientDef} per entry. */
19
+ export declare function GradientDefs({ gradients, }: {
20
+ gradients: Array<GradientDefProps>;
21
+ }): React.JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=gradient-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-def.d.ts","sourceRoot":"","sources":["../../../src/components/shared/gradient-def.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,EAAE,EACF,KAAK,EACL,IAAQ,EACR,EAAQ,EACR,UAAiB,EACjB,QAAiB,GAClB,EAAE,gBAAgB,qBAOlB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,EAC3B,SAAS,GACV,EAAE;IACD,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CACpC,qBAQA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * A vertical `<linearGradient>` for Recharts area/bar fills.
4
+ * Render inside a `<defs>` element and reference via `url(#id)`.
5
+ */
6
+ export function GradientDef({ id, color, from = 1, to = 0.6, fromOffset = "0%", toOffset = "100%", }) {
7
+ return (_jsxs("linearGradient", { id: id, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: fromOffset, stopColor: color, stopOpacity: from }), _jsx("stop", { offset: toOffset, stopColor: color, stopOpacity: to })] }));
8
+ }
9
+ /** Convenience: a `<defs>` containing one {@link GradientDef} per entry. */
10
+ export function GradientDefs({ gradients, }) {
11
+ return (_jsx("defs", { children: gradients.map((g) => (_jsx(GradientDef, { ...g }, g.id))) }));
12
+ }
13
+ //# sourceMappingURL=gradient-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-def.js","sourceRoot":"","sources":["../../../src/components/shared/gradient-def.tsx"],"names":[],"mappings":";AAcA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,EAAE,EACF,KAAK,EACL,IAAI,GAAG,CAAC,EACR,EAAE,GAAG,GAAG,EACR,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,MAAM,GACA;IACjB,OAAO,CACL,0BAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aACjD,eAAM,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAI,EACjE,eAAM,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAI,IAC9C,CAClB,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,GAGV;IACC,OAAO,CACL,yBACG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,WAAW,OAAgB,CAAC,IAAX,CAAC,CAAC,EAAE,CAAW,CAClC,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as React from "react";
2
+ interface HeaderActionsMenuProps {
3
+ children: React.ReactNode;
4
+ /** Trigger visibility (defaults to mobile-only, matching the templates). */
5
+ className?: string;
6
+ contentClassName?: string;
7
+ align?: "start" | "center" | "end";
8
+ }
9
+ /** Mobile "⋯" overflow menu trigger used in template headers. */
10
+ export declare function HeaderActionsMenu({ children, className, contentClassName, align, }: HeaderActionsMenuProps): React.JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=header-actions-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions-menu.d.ts","sourceRoot":"","sources":["../../../src/components/shared/header-actions-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpC;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,KAAa,GACd,EAAE,sBAAsB,qBAiBxB"}
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { MoreVertical } from "lucide-react";
4
+ import { Button } from "../../components/ui/button.js";
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
6
+ import { cn } from "../../lib/utils.js";
7
+ /** Mobile "⋯" overflow menu trigger used in template headers. */
8
+ export function HeaderActionsMenu({ children, className, contentClassName, align = "end", }) {
9
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: cn("h-8 w-8 sm:hidden", className), children: _jsx(MoreVertical, { className: "size-4" }) }) }), _jsx(DropdownMenuContent, { align: align, className: cn("w-40", contentClassName), children: children })] }));
10
+ }
11
+ //# sourceMappingURL=header-actions-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-actions-menu.js","sourceRoot":"","sources":["../../../src/components/shared/header-actions-menu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAUjC,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,KAAK,GAAG,KAAK,GACU;IACvB,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,YAE7C,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,GAAG,GAC5B,GACW,EACtB,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,YACvE,QAAQ,GACW,IACT,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface HeaderSearchProps {
2
+ placeholder?: string;
3
+ value?: string;
4
+ onChange?: (value: string) => void;
5
+ /** Override the outer wrapper (visibility / width). */
6
+ className?: string;
7
+ inputClassName?: string;
8
+ }
9
+ /** The ⌘K search box used in template headers (search icon + input + kbd badge). */
10
+ export declare function HeaderSearch({ placeholder, value, onChange, className, inputClassName, }: HeaderSearchProps): import("react").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=header-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-search.d.ts","sourceRoot":"","sources":["../../../src/components/shared/header-search.tsx"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAC3B,WAAkC,EAClC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACf,EAAE,iBAAiB,+BAmBnB"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Search, Command } from "lucide-react";
4
+ import { Input } from "../../components/ui/input.js";
5
+ import { cn } from "../../lib/utils.js";
6
+ /** The ⌘K search box used in template headers (search icon + input + kbd badge). */
7
+ export function HeaderSearch({ placeholder = "Search Anything...", value, onChange, className, inputClassName, }) {
8
+ return (_jsxs("div", { className: cn("relative hidden md:block", className), children: [_jsx(Search, { className: "absolute left-3 top-1/2 size-5 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { placeholder: placeholder, value: value, onChange: onChange ? (e) => onChange(e.target.value) : undefined, className: cn("h-9 w-[180px] border bg-card pl-10 pr-14 lg:w-[220px]", inputClassName) }), _jsxs("div", { className: "absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-0.5 rounded bg-muted px-1 py-0.5 text-xs text-muted-foreground", children: [_jsx(Command, { className: "size-3" }), _jsx("span", { children: "K" })] })] }));
9
+ }
10
+ //# sourceMappingURL=header-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-search.js","sourceRoot":"","sources":["../../../src/components/shared/header-search.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAWjC,oFAAoF;AACpF,MAAM,UAAU,YAAY,CAAC,EAC3B,WAAW,GAAG,oBAAoB,EAClC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,GACI;IAClB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,aACvD,KAAC,MAAM,IAAC,SAAS,EAAC,uEAAuE,GAAG,EAC5F,KAAC,KAAK,IACJ,WAAW,EAAE,WAAW,EACxB,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,SAAS,EAAE,EAAE,CACX,uDAAuD,EACvD,cAAc,CACf,GACD,EACF,eAAK,SAAS,EAAC,gIAAgI,aAC7I,KAAC,OAAO,IAAC,SAAS,EAAC,QAAQ,GAAG,EAC9B,+BAAc,IACV,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ export { PageHeader } from "./page-header.js";
2
+ export { GithubLink, GithubIcon } from "./github-link.js";
3
+ export { HeaderSearch } from "./header-search.js";
4
+ export { HeaderActionsMenu } from "./header-actions-menu.js";
5
+ export { AvatarStack, type AvatarStackItem } from "./avatar-stack.js";
6
+ export { NotificationsMenu, type NotificationItem } from "./notifications-menu.js";
7
+ export { MessagesMenu, type MessageItem } from "./messages-menu.js";
8
+ export { StatCard, type StatData, type StatTrend } from "./stat-card.js";
9
+ export { StatsGrid } from "./stats-grid.js";
10
+ export { StatusBadge, toneSoft, toneBordered, type StatusTone, } from "./status-badge.js";
11
+ export { AvatarWithName } from "./avatar-with-name.js";
12
+ export { EmptyState } from "./empty-state.js";
13
+ export { ProgressBar } from "./progress-bar.js";
14
+ export { SectionCard } from "./section-card.js";
15
+ export { ChartCard } from "./chart-card.js";
16
+ export { GradientDef, GradientDefs } from "./gradient-def.js";
17
+ export { SeriesChart, type ChartSeries, type SeriesChartType, } from "./series-chart.js";
18
+ export { DataTable } from "./data-table.js";
19
+ export { DataTableColumnManager } from "./data-table-column-manager.js";
20
+ export { DataTablePagination } from "./data-table-pagination.js";
21
+ export { TableToolbar, TableSearch } from "./data-table-toolbar.js";
22
+ export { selectColumn, RowActions, CurrencyCell, MutedCell, ProgressCell, type RowAction, } from "./data-table-cells.js";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,KAAK,UAAU,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,27 @@
1
+ // Header / chrome
2
+ export { PageHeader } from "./page-header.js";
3
+ export { GithubLink, GithubIcon } from "./github-link.js";
4
+ export { HeaderSearch } from "./header-search.js";
5
+ export { HeaderActionsMenu } from "./header-actions-menu.js";
6
+ export { AvatarStack } from "./avatar-stack.js";
7
+ export { NotificationsMenu } from "./notifications-menu.js";
8
+ export { MessagesMenu } from "./messages-menu.js";
9
+ // Data display
10
+ export { StatCard } from "./stat-card.js";
11
+ export { StatsGrid } from "./stats-grid.js";
12
+ export { StatusBadge, toneSoft, toneBordered, } from "./status-badge.js";
13
+ export { AvatarWithName } from "./avatar-with-name.js";
14
+ export { EmptyState } from "./empty-state.js";
15
+ export { ProgressBar } from "./progress-bar.js";
16
+ export { SectionCard } from "./section-card.js";
17
+ // Charts
18
+ export { ChartCard } from "./chart-card.js";
19
+ export { GradientDef, GradientDefs } from "./gradient-def.js";
20
+ export { SeriesChart, } from "./series-chart.js";
21
+ // Tables
22
+ export { DataTable } from "./data-table.js";
23
+ export { DataTableColumnManager } from "./data-table-column-manager.js";
24
+ export { DataTablePagination } from "./data-table-pagination.js";
25
+ export { TableToolbar, TableSearch } from "./data-table-toolbar.js";
26
+ export { selectColumn, RowActions, CurrencyCell, MutedCell, ProgressCell, } from "./data-table-cells.js";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAwB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAEjE,eAAe;AACf,OAAO,EAAE,QAAQ,EAAiC,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,GAEb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,WAAW,GAGZ,MAAM,gBAAgB,CAAC;AAExB,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,GAEb,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface MessageItem {
2
+ name: string;
3
+ preview: string;
4
+ time: string;
5
+ avatar?: string;
6
+ fallback?: string;
7
+ unread?: boolean;
8
+ }
9
+ interface MessagesMenuProps {
10
+ items: MessageItem[];
11
+ className?: string;
12
+ }
13
+ /** Message trigger + messages dropdown (avatar + name + time + preview). */
14
+ export declare function MessagesMenu({ items, className }: MessagesMenuProps): import("react").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=messages-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-menu.d.ts","sourceRoot":"","sources":["../../../src/components/shared/messages-menu.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BA0DnE"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { MessageSquare, Settings } from "lucide-react";
4
+ import { Button } from "../../components/ui/button.js";
5
+ import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
6
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
7
+ import { cn } from "../../lib/utils.js";
8
+ /** Message trigger + messages dropdown (avatar + name + time + preview). */
9
+ export function MessagesMenu({ items, className }) {
10
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", size: "icon", className: cn("size-9", className), children: _jsx(MessageSquare, {}) }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-80", children: [_jsxs(DropdownMenuLabel, { className: "flex items-center justify-between", children: [_jsx("span", { children: "Messages" }), _jsxs(Button, { variant: "ghost", size: "sm", className: "h-auto p-0 text-xs text-muted-foreground hover:text-foreground", children: [_jsx(Settings, { className: "mr-1 size-3.5" }), "Settings"] })] }), _jsx(DropdownMenuSeparator, {}), items.map((m, i) => (_jsxs(DropdownMenuItem, { className: cn("flex cursor-pointer items-start gap-3 p-3", !m.unread && "opacity-60"), children: [_jsxs(Avatar, { className: "mt-0.5 size-8", children: [m.avatar && _jsx(AvatarImage, { src: m.avatar }), _jsx(AvatarFallback, { children: m.fallback ?? m.name.charAt(0) })] }), _jsxs("div", { className: "flex-1 space-y-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("p", { className: "text-sm font-medium", children: m.name }), _jsx("span", { className: "text-xs text-muted-foreground", children: m.time })] }), _jsx("p", { className: "line-clamp-2 text-xs text-muted-foreground", children: m.preview })] }), m.unread && (_jsx("span", { className: "mt-2 size-2 rounded-full bg-blue-500" }))] }, i))), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { className: "justify-center text-sm text-muted-foreground", children: "View all messages" })] })] }));
11
+ }
12
+ //# sourceMappingURL=messages-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-menu.js","sourceRoot":"","sources":["../../../src/components/shared/messages-menu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAgBjC,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAqB;IAClE,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,YAElC,KAAC,aAAa,KAAG,GACV,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,aAC/C,MAAC,iBAAiB,IAAC,SAAS,EAAC,mCAAmC,aAC9D,sCAAqB,EACrB,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,gEAAgE,aAE1E,KAAC,QAAQ,IAAC,SAAS,EAAC,eAAe,GAAG,gBAE/B,IACS,EACpB,KAAC,qBAAqB,KAAG,EACxB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,MAAC,gBAAgB,IAEf,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,CAC1B,aAED,MAAC,MAAM,IAAC,SAAS,EAAC,eAAe,aAC9B,CAAC,CAAC,MAAM,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAI,EAC3C,KAAC,cAAc,cAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAkB,IAC1D,EACT,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAK,SAAS,EAAC,mCAAmC,aAChD,YAAG,SAAS,EAAC,qBAAqB,YAAE,CAAC,CAAC,IAAI,GAAK,EAC/C,eAAM,SAAS,EAAC,+BAA+B,YAAE,CAAC,CAAC,IAAI,GAAQ,IAC3D,EACN,YAAG,SAAS,EAAC,4CAA4C,YACtD,CAAC,CAAC,OAAO,GACR,IACA,EACL,CAAC,CAAC,MAAM,IAAI,CACX,eAAM,SAAS,EAAC,sCAAsC,GAAG,CAC1D,KArBI,CAAC,CAsBW,CACpB,CAAC,EACF,KAAC,qBAAqB,KAAG,EACzB,KAAC,gBAAgB,IAAC,SAAS,EAAC,8CAA8C,kCAEvD,IACC,IACT,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface NotificationItem {
2
+ title: string;
3
+ description: string;
4
+ time: string;
5
+ avatar?: string;
6
+ fallback?: string;
7
+ unread?: boolean;
8
+ }
9
+ interface NotificationsMenuProps {
10
+ items: NotificationItem[];
11
+ className?: string;
12
+ /** Show the red unread dot on the trigger. */
13
+ hasUnread?: boolean;
14
+ }
15
+ /** Bell trigger + notifications dropdown (avatar + title + description + time). */
16
+ export declare function NotificationsMenu({ items, className, hasUnread, }: NotificationsMenuProps): import("react").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=notifications-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications-menu.d.ts","sourceRoot":"","sources":["../../../src/components/shared/notifications-menu.tsx"],"names":[],"mappings":"AAeA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,SAAgB,GACjB,EAAE,sBAAsB,+BAwDxB"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Bell } from "lucide-react";
4
+ import { Button } from "../../components/ui/button.js";
5
+ import { Avatar, AvatarFallback, AvatarImage } from "../../components/ui/avatar.js";
6
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "../../components/ui/dropdown-menu.js";
7
+ import { cn } from "../../lib/utils.js";
8
+ /** Bell trigger + notifications dropdown (avatar + title + description + time). */
9
+ export function NotificationsMenu({ items, className, hasUnread = true, }) {
10
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", size: "icon", className: cn("relative size-9", className), children: [_jsx(Bell, {}), hasUnread && (_jsx("span", { className: "absolute -right-0.5 -top-0.5 size-2.5 rounded-full border-2 border-card bg-rose-500" }))] }) }), _jsxs(DropdownMenuContent, { align: "end", className: "w-80", children: [_jsxs(DropdownMenuLabel, { className: "flex items-center justify-between", children: [_jsx("span", { children: "Notifications" }), _jsx(Button, { variant: "ghost", size: "sm", className: "h-auto p-0 text-xs text-muted-foreground hover:text-foreground", children: "Mark all as read" })] }), _jsx(DropdownMenuSeparator, {}), items.map((n, i) => (_jsxs(DropdownMenuItem, { className: cn("flex cursor-pointer items-start gap-3 p-3", !n.unread && "opacity-60"), children: [_jsxs(Avatar, { className: "mt-0.5 size-8", children: [n.avatar && _jsx(AvatarImage, { src: n.avatar }), _jsx(AvatarFallback, { children: n.fallback ?? n.title.charAt(0) })] }), _jsxs("div", { className: "flex-1 space-y-1", children: [_jsx("p", { className: "text-sm font-medium", children: n.title }), _jsx("p", { className: "text-xs text-muted-foreground", children: n.description }), _jsx("p", { className: "text-xs text-muted-foreground", children: n.time })] }), n.unread && (_jsx("span", { className: "mt-2 size-2 rounded-full bg-blue-500" }))] }, i))), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuItem, { className: "justify-center text-sm text-muted-foreground", children: "View all notifications" })] })] }));
11
+ }
12
+ //# sourceMappingURL=notifications-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications-menu.js","sourceRoot":"","sources":["../../../src/components/shared/notifications-menu.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAkBjC,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,SAAS,EACT,SAAS,GAAG,IAAI,GACO;IACvB,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,aAE3C,KAAC,IAAI,KAAG,EACP,SAAS,IAAI,CACZ,eAAM,SAAS,EAAC,qFAAqF,GAAG,CACzG,IACM,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,aAC/C,MAAC,iBAAiB,IAAC,SAAS,EAAC,mCAAmC,aAC9D,2CAA0B,EAC1B,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,gEAAgE,iCAGnE,IACS,EACpB,KAAC,qBAAqB,KAAG,EACxB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,MAAC,gBAAgB,IAEf,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,CAC1B,aAED,MAAC,MAAM,IAAC,SAAS,EAAC,eAAe,aAC9B,CAAC,CAAC,MAAM,IAAI,KAAC,WAAW,IAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAI,EAC3C,KAAC,cAAc,cAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAkB,IAC3D,EACT,eAAK,SAAS,EAAC,kBAAkB,aAC/B,YAAG,SAAS,EAAC,qBAAqB,YAAE,CAAC,CAAC,KAAK,GAAK,EAChD,YAAG,SAAS,EAAC,+BAA+B,YAAE,CAAC,CAAC,WAAW,GAAK,EAChE,YAAG,SAAS,EAAC,+BAA+B,YAAE,CAAC,CAAC,IAAI,GAAK,IACrD,EACL,CAAC,CAAC,MAAM,IAAI,CACX,eAAM,SAAS,EAAC,sCAAsC,GAAG,CAC1D,KAjBI,CAAC,CAkBW,CACpB,CAAC,EACF,KAAC,qBAAqB,KAAG,EACzB,KAAC,gBAAgB,IAAC,SAAS,EAAC,8CAA8C,uCAEvD,IACC,IACT,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ interface PageHeaderProps {
3
+ title?: React.ReactNode;
4
+ /** Leading icon (lucide or any component accepting className). */
5
+ icon?: React.ElementType;
6
+ /** Right-side actions (theme toggle, github link, dropdowns, …). */
7
+ children?: React.ReactNode;
8
+ /** Override the whole <header> class (padding / sticky / bg variations). */
9
+ className?: string;
10
+ iconClassName?: string;
11
+ titleClassName?: string;
12
+ triggerClassName?: string;
13
+ leftClassName?: string;
14
+ actionsClassName?: string;
15
+ /** Replace the default left block (icon + title) entirely. */
16
+ left?: React.ReactNode;
17
+ }
18
+ /**
19
+ * The shared page-header shell used by every template:
20
+ * SidebarTrigger + leading icon + title on the left, actions on the right.
21
+ * Defaults reproduce the most common Square UI header; override via class props.
22
+ */
23
+ export declare function PageHeader({ title, icon: Icon, children, className, iconClassName, titleClassName, triggerClassName, leftClassName, actionsClassName, left, }: PageHeaderProps): React.JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=page-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../../src/components/shared/page-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,kEAAkE;IAClE,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,IAAI,GACL,EAAE,eAAe,qBAwCjB"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SidebarTrigger } from "../../components/ui/sidebar.js";
3
+ import { cn } from "../../lib/utils.js";
4
+ const DEFAULT_HEADER = "flex items-center gap-2 sm:gap-3 px-3 sm:px-6 py-3 sm:py-4 border-b bg-card sticky top-0 z-10 w-full shrink-0";
5
+ /**
6
+ * The shared page-header shell used by every template:
7
+ * SidebarTrigger + leading icon + title on the left, actions on the right.
8
+ * Defaults reproduce the most common Square UI header; override via class props.
9
+ */
10
+ export function PageHeader({ title, icon: Icon, children, className, iconClassName, titleClassName, triggerClassName, leftClassName, actionsClassName, left, }) {
11
+ return (_jsxs("header", { className: cn(DEFAULT_HEADER, className), children: [_jsxs("div", { className: cn("flex min-w-0 flex-1 items-center gap-2 sm:gap-3", leftClassName), children: [_jsx(SidebarTrigger, { className: cn("-ml-1 sm:-ml-2", triggerClassName) }), left ?? (_jsxs(_Fragment, { children: [Icon && (_jsx(Icon, { className: cn("size-5 shrink-0 text-muted-foreground", iconClassName) })), title && (_jsx("h1", { className: cn("truncate text-base font-medium sm:text-lg", titleClassName), children: title }))] }))] }), children && (_jsx("div", { className: cn("flex items-center gap-2", actionsClassName), children: children }))] }));
12
+ }
13
+ //# sourceMappingURL=page-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.js","sourceRoot":"","sources":["../../../src/components/shared/page-header.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAmBjC,MAAM,cAAc,GAClB,+GAA+G,CAAC;AAElH;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,IAAI,GACY;IAChB,OAAO,CACL,kBAAQ,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC,aAC9C,eACE,SAAS,EAAE,EAAE,CACX,iDAAiD,EACjD,aAAa,CACd,aAED,KAAC,cAAc,IAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAI,EACpE,IAAI,IAAI,CACP,8BACG,IAAI,IAAI,CACP,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,aAAa,CACd,GACD,CACH,EACA,KAAK,IAAI,CACR,aACE,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,cAAc,CACf,YAEA,KAAK,GACH,CACN,IACA,CACJ,IACG,EACL,QAAQ,IAAI,CACX,cAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,YAC5D,QAAQ,GACL,CACP,IACM,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ interface ProgressBarProps {
3
+ /** 0–100 */
4
+ value: number;
5
+ /** Inline fill color (CSS color). Falls back to the primary token. */
6
+ color?: string;
7
+ /** Extra fill classes (e.g. a gradient) when not using `color`. */
8
+ fillClassName?: string;
9
+ className?: string;
10
+ /** Track height; defaults to a thin 1.5 bar. */
11
+ height?: string;
12
+ }
13
+ /** Lightweight track + fill progress bar (the inline bars used in tables/panels). */
14
+ export declare function ProgressBar({ value, color, fillClassName, className, height, }: ProgressBarProps): React.JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=progress-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/shared/progress-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,gBAAgB;IACxB,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAgB,GACjB,EAAE,gBAAgB,qBAoBlB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ /** Lightweight track + fill progress bar (the inline bars used in tables/panels). */
4
+ export function ProgressBar({ value, color, fillClassName, className, height = "h-1.5", }) {
5
+ const pct = Math.max(0, Math.min(100, value));
6
+ return (_jsx("div", { className: cn("w-full overflow-hidden rounded-full bg-muted", height, className), children: _jsx("div", { className: cn("h-full rounded-full transition-all", !color && !fillClassName && "bg-primary", fillClassName), style: { width: `${pct}%`, backgroundColor: color } }) }));
7
+ }
8
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.js","sourceRoot":"","sources":["../../../src/components/shared/progress-bar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAcjC,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAM,GAAG,OAAO,GACC;IACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,8CAA8C,EAC9C,MAAM,EACN,SAAS,CACV,YAED,cACE,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,YAAY,EACxC,aAAa,CACd,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GACnD,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ interface SectionCardProps {
3
+ title?: React.ReactNode;
4
+ description?: React.ReactNode;
5
+ icon?: React.ElementType;
6
+ /** Right-side header actions (menu, button, badge…). */
7
+ actions?: React.ReactNode;
8
+ children: React.ReactNode;
9
+ className?: string;
10
+ headerClassName?: string;
11
+ bodyClassName?: string;
12
+ /** Render the header divider. */
13
+ divided?: boolean;
14
+ }
15
+ /** A bordered card with an optional header row (icon + title + actions) and body. */
16
+ export declare function SectionCard({ title, description, icon: Icon, actions, children, className, headerClassName, bodyClassName, divided, }: SectionCardProps): React.JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=section-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-card.d.ts","sourceRoot":"","sources":["../../../src/components/shared/section-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,wDAAwD;IACxD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,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,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,IAAI,EAAE,IAAI,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAc,GACf,EAAE,gBAAgB,qBAsClB"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ /** A bordered card with an optional header row (icon + title + actions) and body. */
4
+ export function SectionCard({ title, description, icon: Icon, actions, children, className, headerClassName, bodyClassName, divided = true, }) {
5
+ const hasHeader = title || actions || description;
6
+ return (_jsxs("div", { className: cn("rounded-xl border bg-card text-card-foreground", className), children: [hasHeader && (_jsxs("div", { className: cn("flex items-center justify-between gap-3 p-4", divided && "border-b border-border/50", headerClassName), children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [Icon && _jsx(Icon, { className: "size-4 shrink-0 text-muted-foreground" }), _jsxs("div", { className: "min-w-0", children: [title && (_jsx("h3", { className: "truncate text-sm font-medium sm:text-base", children: title })), description && (_jsx("p", { className: "truncate text-xs text-muted-foreground", children: description }))] })] }), actions] })), _jsx("div", { className: cn("p-4", bodyClassName), children: children })] }));
7
+ }
8
+ //# sourceMappingURL=section-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section-card.js","sourceRoot":"","sources":["../../../src/components/shared/section-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAgBjC,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,IAAI,EAAE,IAAI,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,OAAO,GAAG,IAAI,GACG;IACjB,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,IAAI,WAAW,CAAC;IAClD,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,SAAS,CACV,aAEA,SAAS,IAAI,CACZ,eACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,OAAO,IAAI,2BAA2B,EACtC,eAAe,CAChB,aAED,eAAK,SAAS,EAAC,iCAAiC,aAC7C,IAAI,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,GAAG,EACnE,eAAK,SAAS,EAAC,SAAS,aACrB,KAAK,IAAI,CACR,aAAI,SAAS,EAAC,2CAA2C,YACtD,KAAK,GACH,CACN,EACA,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,wCAAwC,YAClD,WAAW,GACV,CACL,IACG,IACF,EACL,OAAO,IACJ,CACP,EACD,cAAK,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,YAAG,QAAQ,GAAO,IACtD,CACP,CAAC;AACJ,CAAC"}