@iclips/ui 1.4.13 → 2.0.1

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 (690) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION-v2.md +214 -0
  3. package/README.md +106 -0
  4. package/dist/alert-theme.css +94 -0
  5. package/dist/assets/illustrations/announcements.png.cjs +2 -0
  6. package/dist/assets/illustrations/announcements.png.cjs.map +1 -0
  7. package/dist/assets/illustrations/announcements.png.js +5 -0
  8. package/dist/assets/illustrations/announcements.png.js.map +1 -0
  9. package/dist/assets/illustrations/checklist-approved.png.cjs +2 -0
  10. package/dist/assets/illustrations/checklist-approved.png.cjs.map +1 -0
  11. package/dist/assets/illustrations/checklist-approved.png.js +5 -0
  12. package/dist/assets/illustrations/checklist-approved.png.js.map +1 -0
  13. package/dist/assets/illustrations/client-profile.png.cjs +2 -0
  14. package/dist/assets/illustrations/client-profile.png.cjs.map +1 -0
  15. package/dist/assets/illustrations/client-profile.png.js +5 -0
  16. package/dist/assets/illustrations/client-profile.png.js.map +1 -0
  17. package/dist/assets/illustrations/contract-agreement.png.cjs +2 -0
  18. package/dist/assets/illustrations/contract-agreement.png.cjs.map +1 -0
  19. package/dist/assets/illustrations/contract-agreement.png.js +5 -0
  20. package/dist/assets/illustrations/contract-agreement.png.js.map +1 -0
  21. package/dist/assets/illustrations/create-record.png.cjs +2 -0
  22. package/dist/assets/illustrations/create-record.png.cjs.map +1 -0
  23. package/dist/assets/illustrations/create-record.png.js +5 -0
  24. package/dist/assets/illustrations/create-record.png.js.map +1 -0
  25. package/dist/assets/illustrations/cta-action.png.cjs +2 -0
  26. package/dist/assets/illustrations/cta-action.png.cjs.map +1 -0
  27. package/dist/assets/illustrations/cta-action.png.js +5 -0
  28. package/dist/assets/illustrations/cta-action.png.js.map +1 -0
  29. package/dist/assets/illustrations/draft-document.png.cjs +2 -0
  30. package/dist/assets/illustrations/draft-document.png.cjs.map +1 -0
  31. package/dist/assets/illustrations/draft-document.png.js +5 -0
  32. package/dist/assets/illustrations/draft-document.png.js.map +1 -0
  33. package/dist/assets/illustrations/edit-company.png.cjs +2 -0
  34. package/dist/assets/illustrations/edit-company.png.cjs.map +1 -0
  35. package/dist/assets/illustrations/edit-company.png.js +5 -0
  36. package/dist/assets/illustrations/edit-company.png.js.map +1 -0
  37. package/dist/assets/illustrations/edit-document.png.cjs +2 -0
  38. package/dist/assets/illustrations/edit-document.png.cjs.map +1 -0
  39. package/dist/assets/illustrations/edit-document.png.js +5 -0
  40. package/dist/assets/illustrations/edit-document.png.js.map +1 -0
  41. package/dist/assets/illustrations/empty-no-results.png.cjs +2 -0
  42. package/dist/assets/illustrations/empty-no-results.png.cjs.map +1 -0
  43. package/dist/assets/illustrations/empty-no-results.png.js +5 -0
  44. package/dist/assets/illustrations/empty-no-results.png.js.map +1 -0
  45. package/dist/assets/illustrations/empty-not-found.png.cjs +2 -0
  46. package/dist/assets/illustrations/empty-not-found.png.cjs.map +1 -0
  47. package/dist/assets/illustrations/empty-not-found.png.js +5 -0
  48. package/dist/assets/illustrations/empty-not-found.png.js.map +1 -0
  49. package/dist/assets/illustrations/empty-task-approved.png.cjs +2 -0
  50. package/dist/assets/illustrations/empty-task-approved.png.cjs.map +1 -0
  51. package/dist/assets/illustrations/empty-task-approved.png.js +5 -0
  52. package/dist/assets/illustrations/empty-task-approved.png.js.map +1 -0
  53. package/dist/assets/illustrations/empty-workflow-status.png.cjs +2 -0
  54. package/dist/assets/illustrations/empty-workflow-status.png.cjs.map +1 -0
  55. package/dist/assets/illustrations/empty-workflow-status.png.js +5 -0
  56. package/dist/assets/illustrations/empty-workflow-status.png.js.map +1 -0
  57. package/dist/assets/illustrations/integrations.png.cjs +2 -0
  58. package/dist/assets/illustrations/integrations.png.cjs.map +1 -0
  59. package/dist/assets/illustrations/integrations.png.js +5 -0
  60. package/dist/assets/illustrations/integrations.png.js.map +1 -0
  61. package/dist/assets/illustrations/onboarding-tips.png.cjs +2 -0
  62. package/dist/assets/illustrations/onboarding-tips.png.cjs.map +1 -0
  63. package/dist/assets/illustrations/onboarding-tips.png.js +5 -0
  64. package/dist/assets/illustrations/onboarding-tips.png.js.map +1 -0
  65. package/dist/assets/illustrations/scheduled-tasks.png.cjs +2 -0
  66. package/dist/assets/illustrations/scheduled-tasks.png.cjs.map +1 -0
  67. package/dist/assets/illustrations/scheduled-tasks.png.js +5 -0
  68. package/dist/assets/illustrations/scheduled-tasks.png.js.map +1 -0
  69. package/dist/assets/illustrations/search-documents.png.cjs +2 -0
  70. package/dist/assets/illustrations/search-documents.png.cjs.map +1 -0
  71. package/dist/assets/illustrations/search-documents.png.js +5 -0
  72. package/dist/assets/illustrations/search-documents.png.js.map +1 -0
  73. package/dist/assets/illustrations/success-checkmark.png.cjs +2 -0
  74. package/dist/assets/illustrations/success-checkmark.png.cjs.map +1 -0
  75. package/dist/assets/illustrations/success-checkmark.png.js +5 -0
  76. package/dist/assets/illustrations/success-checkmark.png.js.map +1 -0
  77. package/dist/components/ui/brand-colors.cjs +2 -0
  78. package/dist/components/ui/brand-colors.cjs.map +1 -0
  79. package/dist/components/ui/brand-colors.js +8 -0
  80. package/dist/components/ui/brand-colors.js.map +1 -0
  81. package/dist/components/ui/charts/chart.cjs +8 -0
  82. package/dist/components/ui/charts/chart.cjs.map +1 -0
  83. package/dist/components/ui/charts/chart.js +214 -0
  84. package/dist/components/ui/charts/chart.js.map +1 -0
  85. package/dist/components/ui/charts/donut-chart.cjs +2 -0
  86. package/dist/components/ui/charts/donut-chart.cjs.map +1 -0
  87. package/dist/components/ui/charts/donut-chart.js +285 -0
  88. package/dist/components/ui/charts/donut-chart.js.map +1 -0
  89. package/dist/components/ui/charts/kpi-card.cjs +2 -0
  90. package/dist/components/ui/charts/kpi-card.cjs.map +1 -0
  91. package/dist/components/ui/charts/kpi-card.js +75 -0
  92. package/dist/components/ui/charts/kpi-card.js.map +1 -0
  93. package/dist/components/ui/data/advanced-data-table.cjs +2 -0
  94. package/dist/components/ui/data/advanced-data-table.cjs.map +1 -0
  95. package/dist/components/ui/data/advanced-data-table.js +69 -0
  96. package/dist/components/ui/data/advanced-data-table.js.map +1 -0
  97. package/dist/components/ui/data/comment-system.cjs +2 -0
  98. package/dist/components/ui/data/comment-system.cjs.map +1 -0
  99. package/dist/components/ui/data/comment-system.js +492 -0
  100. package/dist/components/ui/data/comment-system.js.map +1 -0
  101. package/dist/components/ui/data/data-table-empty-state.cjs +2 -0
  102. package/dist/components/ui/data/data-table-empty-state.cjs.map +1 -0
  103. package/dist/components/ui/data/data-table-empty-state.js +40 -0
  104. package/dist/components/ui/data/data-table-empty-state.js.map +1 -0
  105. package/dist/components/ui/data/data-table-toolbar.cjs +2 -0
  106. package/dist/components/ui/data/data-table-toolbar.cjs.map +1 -0
  107. package/dist/components/ui/data/data-table-toolbar.js +85 -0
  108. package/dist/components/ui/data/data-table-toolbar.js.map +1 -0
  109. package/dist/components/ui/data/data-table.cjs +2 -0
  110. package/dist/components/ui/data/data-table.cjs.map +1 -0
  111. package/dist/components/ui/data/data-table.js +181 -0
  112. package/dist/components/ui/data/data-table.js.map +1 -0
  113. package/dist/components/ui/data/document-editor.cjs +2 -0
  114. package/dist/components/ui/data/document-editor.cjs.map +1 -0
  115. package/dist/components/ui/data/document-editor.js +158 -0
  116. package/dist/components/ui/data/document-editor.js.map +1 -0
  117. package/dist/components/ui/data/editorial-calendar.cjs +2 -0
  118. package/dist/components/ui/data/editorial-calendar.cjs.map +1 -0
  119. package/dist/components/ui/data/editorial-calendar.js +840 -0
  120. package/dist/components/ui/data/editorial-calendar.js.map +1 -0
  121. package/dist/components/ui/data/filter-bar.cjs +2 -0
  122. package/dist/components/ui/data/filter-bar.cjs.map +1 -0
  123. package/dist/components/ui/data/filter-bar.js +60 -0
  124. package/dist/components/ui/data/filter-bar.js.map +1 -0
  125. package/dist/components/ui/data/filter-builder.cjs +2 -0
  126. package/dist/components/ui/data/filter-builder.cjs.map +1 -0
  127. package/dist/components/ui/data/filter-builder.js +378 -0
  128. package/dist/components/ui/data/filter-builder.js.map +1 -0
  129. package/dist/components/ui/data/filter-chip.cjs +2 -0
  130. package/dist/components/ui/data/filter-chip.cjs.map +1 -0
  131. package/dist/components/ui/data/filter-chip.js +39 -0
  132. package/dist/components/ui/data/filter-chip.js.map +1 -0
  133. package/dist/components/ui/data/mention-list.cjs +2 -0
  134. package/dist/components/ui/data/mention-list.cjs.map +1 -0
  135. package/dist/components/ui/data/mention-list.js +46 -0
  136. package/dist/components/ui/data/mention-list.js.map +1 -0
  137. package/dist/components/ui/data/table-pagination.cjs +2 -0
  138. package/dist/components/ui/data/table-pagination.cjs.map +1 -0
  139. package/dist/components/ui/data/table-pagination.js +176 -0
  140. package/dist/components/ui/data/table-pagination.js.map +1 -0
  141. package/dist/components/ui/data/table-types.cjs +2 -0
  142. package/dist/components/ui/data/table-types.cjs.map +1 -0
  143. package/dist/components/ui/data/table-types.js +14 -0
  144. package/dist/components/ui/data/table-types.js.map +1 -0
  145. package/dist/components/ui/data/table.cjs +2 -0
  146. package/dist/components/ui/data/table.cjs.map +1 -0
  147. package/dist/components/ui/data/table.js +130 -0
  148. package/dist/components/ui/data/table.js.map +1 -0
  149. package/dist/components/ui/feedback/alert.cjs +2 -0
  150. package/dist/components/ui/feedback/alert.cjs.map +1 -0
  151. package/dist/components/ui/feedback/alert.js +67 -0
  152. package/dist/components/ui/feedback/alert.js.map +1 -0
  153. package/dist/components/ui/feedback/empty-state.cjs +2 -0
  154. package/dist/components/ui/feedback/empty-state.cjs.map +1 -0
  155. package/dist/components/ui/feedback/empty-state.js +78 -0
  156. package/dist/components/ui/feedback/empty-state.js.map +1 -0
  157. package/dist/components/ui/feedback/illustrations.cjs +2 -0
  158. package/dist/components/ui/feedback/illustrations.cjs.map +1 -0
  159. package/dist/components/ui/feedback/illustrations.js +157 -0
  160. package/dist/components/ui/feedback/illustrations.js.map +1 -0
  161. package/dist/components/ui/feedback/toast.cjs +2 -0
  162. package/dist/components/ui/feedback/toast.cjs.map +1 -0
  163. package/dist/components/ui/feedback/toast.js +38 -0
  164. package/dist/components/ui/feedback/toast.js.map +1 -0
  165. package/dist/components/ui/forms/calendar.cjs +2 -0
  166. package/dist/components/ui/forms/calendar.cjs.map +1 -0
  167. package/dist/components/ui/forms/calendar.js +65 -0
  168. package/dist/components/ui/forms/calendar.js.map +1 -0
  169. package/dist/components/ui/forms/checkbox.cjs +2 -0
  170. package/dist/components/ui/forms/checkbox.cjs.map +1 -0
  171. package/dist/components/ui/forms/checkbox.js +31 -0
  172. package/dist/components/ui/forms/checkbox.js.map +1 -0
  173. package/dist/components/ui/forms/color-picker.cjs +2 -0
  174. package/dist/components/ui/forms/color-picker.cjs.map +1 -0
  175. package/dist/components/ui/forms/color-picker.js +151 -0
  176. package/dist/components/ui/forms/color-picker.js.map +1 -0
  177. package/dist/components/ui/forms/combobox.cjs +2 -0
  178. package/dist/components/ui/forms/combobox.cjs.map +1 -0
  179. package/dist/components/ui/forms/combobox.js +208 -0
  180. package/dist/components/ui/forms/combobox.js.map +1 -0
  181. package/dist/components/ui/forms/currency-input.cjs +2 -0
  182. package/dist/components/ui/forms/currency-input.cjs.map +1 -0
  183. package/dist/components/ui/forms/currency-input.js +81 -0
  184. package/dist/components/ui/forms/currency-input.js.map +1 -0
  185. package/dist/components/ui/forms/date-picker.cjs +2 -0
  186. package/dist/components/ui/forms/date-picker.cjs.map +1 -0
  187. package/dist/components/ui/forms/date-picker.js +199 -0
  188. package/dist/components/ui/forms/date-picker.js.map +1 -0
  189. package/dist/components/ui/forms/date-range-picker.cjs +2 -0
  190. package/dist/components/ui/forms/date-range-picker.cjs.map +1 -0
  191. package/dist/components/ui/forms/date-range-picker.js +305 -0
  192. package/dist/components/ui/forms/date-range-picker.js.map +1 -0
  193. package/dist/components/ui/forms/editable-badge.cjs +2 -0
  194. package/dist/components/ui/forms/editable-badge.cjs.map +1 -0
  195. package/dist/components/ui/forms/editable-badge.js +137 -0
  196. package/dist/components/ui/forms/editable-badge.js.map +1 -0
  197. package/dist/components/ui/forms/file-attachment-list.cjs +2 -0
  198. package/dist/components/ui/forms/file-attachment-list.cjs.map +1 -0
  199. package/dist/components/ui/forms/file-attachment-list.js +235 -0
  200. package/dist/components/ui/forms/file-attachment-list.js.map +1 -0
  201. package/dist/components/ui/forms/file-upload-zone.cjs +3 -0
  202. package/dist/components/ui/forms/file-upload-zone.cjs.map +1 -0
  203. package/dist/components/ui/forms/file-upload-zone.js +142 -0
  204. package/dist/components/ui/forms/file-upload-zone.js.map +1 -0
  205. package/dist/components/ui/forms/form.cjs +2 -0
  206. package/dist/components/ui/forms/form.cjs.map +1 -0
  207. package/dist/components/ui/forms/form.js +109 -0
  208. package/dist/components/ui/forms/form.js.map +1 -0
  209. package/dist/components/ui/forms/input-group.cjs +2 -0
  210. package/dist/components/ui/forms/input-group.cjs.map +1 -0
  211. package/dist/components/ui/forms/input-group.js +131 -0
  212. package/dist/components/ui/forms/input-group.js.map +1 -0
  213. package/dist/components/ui/forms/input-otp.cjs +2 -0
  214. package/dist/components/ui/forms/input-otp.cjs.map +1 -0
  215. package/dist/components/ui/forms/input-otp.js +63 -0
  216. package/dist/components/ui/forms/input-otp.js.map +1 -0
  217. package/dist/components/ui/forms/input-validation.cjs +2 -0
  218. package/dist/components/ui/forms/input-validation.cjs.map +1 -0
  219. package/dist/components/ui/forms/input-validation.js +55 -0
  220. package/dist/components/ui/forms/input-validation.js.map +1 -0
  221. package/dist/components/ui/forms/input.cjs +2 -0
  222. package/dist/components/ui/forms/input.cjs.map +1 -0
  223. package/dist/components/ui/forms/input.js +26 -0
  224. package/dist/components/ui/forms/input.js.map +1 -0
  225. package/dist/components/ui/forms/month-range-picker.cjs +2 -0
  226. package/dist/components/ui/forms/month-range-picker.cjs.map +1 -0
  227. package/dist/components/ui/forms/month-range-picker.js +263 -0
  228. package/dist/components/ui/forms/month-range-picker.js.map +1 -0
  229. package/dist/components/ui/forms/multi-select.cjs +2 -0
  230. package/dist/components/ui/forms/multi-select.cjs.map +1 -0
  231. package/dist/components/ui/forms/multi-select.js +251 -0
  232. package/dist/components/ui/forms/multi-select.js.map +1 -0
  233. package/dist/components/ui/forms/number-input.cjs +2 -0
  234. package/dist/components/ui/forms/number-input.cjs.map +1 -0
  235. package/dist/components/ui/forms/number-input.js +220 -0
  236. package/dist/components/ui/forms/number-input.js.map +1 -0
  237. package/dist/components/ui/forms/password-input.cjs +2 -0
  238. package/dist/components/ui/forms/password-input.cjs.map +1 -0
  239. package/dist/components/ui/forms/password-input.js +43 -0
  240. package/dist/components/ui/forms/password-input.js.map +1 -0
  241. package/dist/components/ui/forms/radio-group.cjs +2 -0
  242. package/dist/components/ui/forms/radio-group.cjs.map +1 -0
  243. package/dist/components/ui/forms/radio-group.js +41 -0
  244. package/dist/components/ui/forms/radio-group.js.map +1 -0
  245. package/dist/components/ui/forms/select.cjs +2 -0
  246. package/dist/components/ui/forms/select.cjs.map +1 -0
  247. package/dist/components/ui/forms/select.js +140 -0
  248. package/dist/components/ui/forms/select.js.map +1 -0
  249. package/dist/components/ui/forms/slider.cjs +2 -0
  250. package/dist/components/ui/forms/slider.cjs.map +1 -0
  251. package/dist/components/ui/forms/slider.js +62 -0
  252. package/dist/components/ui/forms/slider.js.map +1 -0
  253. package/dist/components/ui/forms/social-button.cjs +2 -0
  254. package/dist/components/ui/forms/social-button.cjs.map +1 -0
  255. package/dist/components/ui/forms/social-button.js +86 -0
  256. package/dist/components/ui/forms/social-button.js.map +1 -0
  257. package/dist/components/ui/forms/switch.cjs +2 -0
  258. package/dist/components/ui/forms/switch.cjs.map +1 -0
  259. package/dist/components/ui/forms/switch.js +31 -0
  260. package/dist/components/ui/forms/switch.js.map +1 -0
  261. package/dist/components/ui/forms/textarea.cjs +2 -0
  262. package/dist/components/ui/forms/textarea.cjs.map +1 -0
  263. package/dist/components/ui/forms/textarea.js +22 -0
  264. package/dist/components/ui/forms/textarea.js.map +1 -0
  265. package/dist/components/ui/forms/time-picker.cjs +2 -0
  266. package/dist/components/ui/forms/time-picker.cjs.map +1 -0
  267. package/dist/components/ui/forms/time-picker.js +195 -0
  268. package/dist/components/ui/forms/time-picker.js.map +1 -0
  269. package/dist/components/ui/forms/toggle-group.cjs +2 -0
  270. package/dist/components/ui/forms/toggle-group.cjs.map +1 -0
  271. package/dist/components/ui/forms/toggle-group.js +53 -0
  272. package/dist/components/ui/forms/toggle-group.js.map +1 -0
  273. package/dist/components/ui/forms/toggle.cjs +2 -0
  274. package/dist/components/ui/forms/toggle.cjs.map +1 -0
  275. package/dist/components/ui/forms/toggle.js +40 -0
  276. package/dist/components/ui/forms/toggle.js.map +1 -0
  277. package/dist/components/ui/layout/accordion.cjs +2 -0
  278. package/dist/components/ui/layout/accordion.cjs.map +1 -0
  279. package/dist/components/ui/layout/accordion.js +53 -0
  280. package/dist/components/ui/layout/accordion.js.map +1 -0
  281. package/dist/components/ui/layout/auth-layout.cjs +2 -0
  282. package/dist/components/ui/layout/auth-layout.cjs.map +1 -0
  283. package/dist/components/ui/layout/auth-layout.js +74 -0
  284. package/dist/components/ui/layout/auth-layout.js.map +1 -0
  285. package/dist/components/ui/layout/card.cjs +2 -0
  286. package/dist/components/ui/layout/card.cjs.map +1 -0
  287. package/dist/components/ui/layout/card.js +104 -0
  288. package/dist/components/ui/layout/card.js.map +1 -0
  289. package/dist/components/ui/layout/carousel.cjs +2 -0
  290. package/dist/components/ui/layout/carousel.cjs.map +1 -0
  291. package/dist/components/ui/layout/carousel.js +189 -0
  292. package/dist/components/ui/layout/carousel.js.map +1 -0
  293. package/dist/components/ui/layout/collapsible.cjs +2 -0
  294. package/dist/components/ui/layout/collapsible.cjs.map +1 -0
  295. package/dist/components/ui/layout/collapsible.js +30 -0
  296. package/dist/components/ui/layout/collapsible.js.map +1 -0
  297. package/dist/components/ui/layout/page-header.cjs +2 -0
  298. package/dist/components/ui/layout/page-header.cjs.map +1 -0
  299. package/dist/components/ui/layout/page-header.js +81 -0
  300. package/dist/components/ui/layout/page-header.js.map +1 -0
  301. package/dist/components/ui/layout/resizable.cjs +2 -0
  302. package/dist/components/ui/layout/resizable.cjs.map +1 -0
  303. package/dist/components/ui/layout/resizable.js +45 -0
  304. package/dist/components/ui/layout/resizable.js.map +1 -0
  305. package/dist/components/ui/layout/scroll-area.cjs +2 -0
  306. package/dist/components/ui/layout/scroll-area.cjs.map +1 -0
  307. package/dist/components/ui/layout/scroll-area.js +56 -0
  308. package/dist/components/ui/layout/scroll-area.js.map +1 -0
  309. package/dist/components/ui/navigation/breadcrumb.cjs +2 -0
  310. package/dist/components/ui/navigation/breadcrumb.cjs.map +1 -0
  311. package/dist/components/ui/navigation/breadcrumb.js +94 -0
  312. package/dist/components/ui/navigation/breadcrumb.js.map +1 -0
  313. package/dist/components/ui/navigation/navigation-menu.cjs +2 -0
  314. package/dist/components/ui/navigation/navigation-menu.cjs.map +1 -0
  315. package/dist/components/ui/navigation/navigation-menu.js +144 -0
  316. package/dist/components/ui/navigation/navigation-menu.js.map +1 -0
  317. package/dist/components/ui/navigation/pagination.cjs +2 -0
  318. package/dist/components/ui/navigation/pagination.cjs.map +1 -0
  319. package/dist/components/ui/navigation/pagination.js +106 -0
  320. package/dist/components/ui/navigation/pagination.js.map +1 -0
  321. package/dist/components/ui/navigation/sidebar.cjs +2 -0
  322. package/dist/components/ui/navigation/sidebar.cjs.map +1 -0
  323. package/dist/components/ui/navigation/sidebar.js +579 -0
  324. package/dist/components/ui/navigation/sidebar.js.map +1 -0
  325. package/dist/components/ui/navigation/tabs.cjs +2 -0
  326. package/dist/components/ui/navigation/tabs.cjs.map +1 -0
  327. package/dist/components/ui/navigation/tabs.js +58 -0
  328. package/dist/components/ui/navigation/tabs.js.map +1 -0
  329. package/dist/components/ui/navigation/underline-tabs.cjs +2 -0
  330. package/dist/components/ui/navigation/underline-tabs.cjs.map +1 -0
  331. package/dist/components/ui/navigation/underline-tabs.js +109 -0
  332. package/dist/components/ui/navigation/underline-tabs.js.map +1 -0
  333. package/dist/components/ui/overlays/alert-dialog.cjs +2 -0
  334. package/dist/components/ui/overlays/alert-dialog.cjs.map +1 -0
  335. package/dist/components/ui/overlays/alert-dialog.js +135 -0
  336. package/dist/components/ui/overlays/alert-dialog.js.map +1 -0
  337. package/dist/components/ui/overlays/command.cjs +2 -0
  338. package/dist/components/ui/overlays/command.cjs.map +1 -0
  339. package/dist/components/ui/overlays/command.js +143 -0
  340. package/dist/components/ui/overlays/command.js.map +1 -0
  341. package/dist/components/ui/overlays/context-menu.cjs +2 -0
  342. package/dist/components/ui/overlays/context-menu.cjs.map +1 -0
  343. package/dist/components/ui/overlays/context-menu.js +197 -0
  344. package/dist/components/ui/overlays/context-menu.js.map +1 -0
  345. package/dist/components/ui/overlays/dialog.cjs +2 -0
  346. package/dist/components/ui/overlays/dialog.cjs.map +1 -0
  347. package/dist/components/ui/overlays/dialog.js +112 -0
  348. package/dist/components/ui/overlays/dialog.js.map +1 -0
  349. package/dist/components/ui/overlays/drawer.cjs +2 -0
  350. package/dist/components/ui/overlays/drawer.cjs.map +1 -0
  351. package/dist/components/ui/overlays/drawer.js +109 -0
  352. package/dist/components/ui/overlays/drawer.js.map +1 -0
  353. package/dist/components/ui/overlays/dropdown-menu.cjs +2 -0
  354. package/dist/components/ui/overlays/dropdown-menu.cjs.map +1 -0
  355. package/dist/components/ui/overlays/dropdown-menu.js +198 -0
  356. package/dist/components/ui/overlays/dropdown-menu.js.map +1 -0
  357. package/dist/components/ui/overlays/hover-card.cjs +2 -0
  358. package/dist/components/ui/overlays/hover-card.cjs.map +1 -0
  359. package/dist/components/ui/overlays/hover-card.js +40 -0
  360. package/dist/components/ui/overlays/hover-card.js.map +1 -0
  361. package/dist/components/ui/overlays/menubar.cjs +2 -0
  362. package/dist/components/ui/overlays/menubar.cjs.map +1 -0
  363. package/dist/components/ui/overlays/menubar.js +213 -0
  364. package/dist/components/ui/overlays/menubar.js.map +1 -0
  365. package/dist/components/ui/overlays/popover.cjs +2 -0
  366. package/dist/components/ui/overlays/popover.cjs.map +1 -0
  367. package/dist/components/ui/overlays/popover.js +36 -0
  368. package/dist/components/ui/overlays/popover.js.map +1 -0
  369. package/dist/components/ui/overlays/sheet.cjs +2 -0
  370. package/dist/components/ui/overlays/sheet.cjs.map +1 -0
  371. package/dist/components/ui/overlays/sheet.js +109 -0
  372. package/dist/components/ui/overlays/sheet.js.map +1 -0
  373. package/dist/components/ui/overlays/side-panel.cjs +16 -0
  374. package/dist/components/ui/overlays/side-panel.cjs.map +1 -0
  375. package/dist/components/ui/overlays/side-panel.js +117 -0
  376. package/dist/components/ui/overlays/side-panel.js.map +1 -0
  377. package/dist/components/ui/overlays/tooltip.cjs +2 -0
  378. package/dist/components/ui/overlays/tooltip.cjs.map +1 -0
  379. package/dist/components/ui/overlays/tooltip.js +50 -0
  380. package/dist/components/ui/overlays/tooltip.js.map +1 -0
  381. package/dist/components/ui/primitives/aspect-ratio.cjs +2 -0
  382. package/dist/components/ui/primitives/aspect-ratio.cjs.map +1 -0
  383. package/dist/components/ui/primitives/aspect-ratio.js +10 -0
  384. package/dist/components/ui/primitives/aspect-ratio.js.map +1 -0
  385. package/dist/components/ui/primitives/avatar.cjs +2 -0
  386. package/dist/components/ui/primitives/avatar.cjs.map +1 -0
  387. package/dist/components/ui/primitives/avatar.js +63 -0
  388. package/dist/components/ui/primitives/avatar.js.map +1 -0
  389. package/dist/components/ui/primitives/badge.cjs +2 -0
  390. package/dist/components/ui/primitives/badge.cjs.map +1 -0
  391. package/dist/components/ui/primitives/badge.js +50 -0
  392. package/dist/components/ui/primitives/badge.js.map +1 -0
  393. package/dist/components/ui/primitives/brand-logo.cjs +2 -0
  394. package/dist/components/ui/primitives/brand-logo.cjs.map +1 -0
  395. package/dist/components/ui/primitives/brand-logo.js +74 -0
  396. package/dist/components/ui/primitives/brand-logo.js.map +1 -0
  397. package/dist/components/ui/primitives/brand-logo.negative-paths.cjs +2 -0
  398. package/dist/components/ui/primitives/brand-logo.negative-paths.cjs.map +1 -0
  399. package/dist/components/ui/primitives/brand-logo.negative-paths.js +15 -0
  400. package/dist/components/ui/primitives/brand-logo.negative-paths.js.map +1 -0
  401. package/dist/components/ui/primitives/brand-logo.positive-paths.cjs +2 -0
  402. package/dist/components/ui/primitives/brand-logo.positive-paths.cjs.map +1 -0
  403. package/dist/components/ui/primitives/brand-logo.positive-paths.js +15 -0
  404. package/dist/components/ui/primitives/brand-logo.positive-paths.js.map +1 -0
  405. package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs +2 -0
  406. package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs.map +1 -0
  407. package/dist/components/ui/primitives/brand-logo.symbol-paths.js +8 -0
  408. package/dist/components/ui/primitives/brand-logo.symbol-paths.js.map +1 -0
  409. package/dist/components/ui/primitives/button.cjs +2 -0
  410. package/dist/components/ui/primitives/button.cjs.map +1 -0
  411. package/dist/components/ui/primitives/button.js +52 -0
  412. package/dist/components/ui/primitives/button.js.map +1 -0
  413. package/dist/components/ui/primitives/label.cjs +2 -0
  414. package/dist/components/ui/primitives/label.cjs.map +1 -0
  415. package/dist/components/ui/primitives/label.js +22 -0
  416. package/dist/components/ui/primitives/label.js.map +1 -0
  417. package/dist/components/ui/primitives/progress.cjs +2 -0
  418. package/dist/components/ui/primitives/progress.cjs.map +1 -0
  419. package/dist/components/ui/primitives/progress.js +30 -0
  420. package/dist/components/ui/primitives/progress.js.map +1 -0
  421. package/dist/components/ui/primitives/separator.cjs +2 -0
  422. package/dist/components/ui/primitives/separator.cjs.map +1 -0
  423. package/dist/components/ui/primitives/separator.js +26 -0
  424. package/dist/components/ui/primitives/separator.js.map +1 -0
  425. package/dist/components/ui/primitives/skeleton.cjs +2 -0
  426. package/dist/components/ui/primitives/skeleton.cjs.map +1 -0
  427. package/dist/components/ui/primitives/skeleton.js +31 -0
  428. package/dist/components/ui/primitives/skeleton.js.map +1 -0
  429. package/dist/components/ui/use-controllable-value.cjs +2 -0
  430. package/dist/components/ui/use-controllable-value.cjs.map +1 -0
  431. package/dist/components/ui/use-controllable-value.js +14 -0
  432. package/dist/components/ui/use-controllable-value.js.map +1 -0
  433. package/dist/components/ui/utils.cjs +2 -0
  434. package/dist/components/ui/utils.cjs.map +1 -0
  435. package/dist/components/ui/utils.js +20 -0
  436. package/dist/components/ui/utils.js.map +1 -0
  437. package/dist/editor.cjs +2 -0
  438. package/dist/editor.cjs.map +1 -0
  439. package/dist/editor.d.cts +114 -0
  440. package/dist/editor.d.ts +114 -0
  441. package/dist/editor.js +12 -0
  442. package/dist/editor.js.map +1 -0
  443. package/dist/hooks/use-data-table-filters.cjs +2 -0
  444. package/dist/hooks/use-data-table-filters.cjs.map +1 -0
  445. package/dist/hooks/use-data-table-filters.js +118 -0
  446. package/dist/hooks/use-data-table-filters.js.map +1 -0
  447. package/dist/hooks/use-data-table.cjs +2 -0
  448. package/dist/hooks/use-data-table.cjs.map +1 -0
  449. package/dist/hooks/use-data-table.js +84 -0
  450. package/dist/hooks/use-data-table.js.map +1 -0
  451. package/dist/hooks/use-mobile.cjs +2 -0
  452. package/dist/hooks/use-mobile.cjs.map +1 -0
  453. package/dist/hooks/use-mobile.js +17 -0
  454. package/dist/hooks/use-mobile.js.map +1 -0
  455. package/dist/hooks/use-table-pagination.cjs +2 -0
  456. package/dist/hooks/use-table-pagination.cjs.map +1 -0
  457. package/dist/hooks/use-table-pagination.js +44 -0
  458. package/dist/hooks/use-table-pagination.js.map +1 -0
  459. package/dist/index.cjs +1 -242
  460. package/dist/index.cjs.map +1 -1
  461. package/dist/index.css +1 -1
  462. package/dist/index.d.cts +2939 -0
  463. package/dist/index.d.ts +2939 -149
  464. package/dist/index.js +375 -63715
  465. package/dist/index.js.map +1 -1
  466. package/dist/preset.css +352 -0
  467. package/dist/toast-theme.css +100 -0
  468. package/dist/tokens.css +471 -0
  469. package/package.json +144 -45
  470. package/scripts/codemod-v2-renames.mjs +101 -0
  471. package/scripts/codemod-v2-toast.mjs +84 -0
  472. package/dist/components/figma/ImageWithFallback.d.ts +0 -3
  473. package/dist/components/figma/ImageWithFallback.d.ts.map +0 -1
  474. package/dist/components/print-templates/ContractTemplate.d.ts +0 -89
  475. package/dist/components/print-templates/ContractTemplate.d.ts.map +0 -1
  476. package/dist/components/print-templates/ProposalTemplate.d.ts +0 -41
  477. package/dist/components/print-templates/ProposalTemplate.d.ts.map +0 -1
  478. package/dist/components/print-templates/index.d.ts +0 -22
  479. package/dist/components/print-templates/index.d.ts.map +0 -1
  480. package/dist/components/print-templates/shared/PrintFooter.d.ts +0 -21
  481. package/dist/components/print-templates/shared/PrintFooter.d.ts.map +0 -1
  482. package/dist/components/print-templates/shared/PrintHeader.d.ts +0 -38
  483. package/dist/components/print-templates/shared/PrintHeader.d.ts.map +0 -1
  484. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts +0 -22
  485. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts.map +0 -1
  486. package/dist/components/print-templates/shared/PrintSection.d.ts +0 -29
  487. package/dist/components/print-templates/shared/PrintSection.d.ts.map +0 -1
  488. package/dist/components/print-templates/shared/PrintSignature.d.ts +0 -27
  489. package/dist/components/print-templates/shared/PrintSignature.d.ts.map +0 -1
  490. package/dist/components/print-templates/shared/PrintTable.d.ts +0 -44
  491. package/dist/components/print-templates/shared/PrintTable.d.ts.map +0 -1
  492. package/dist/components/timeline-demo.d.ts +0 -3
  493. package/dist/components/timeline-demo.d.ts.map +0 -1
  494. package/dist/components/ui/accordion.d.ts +0 -8
  495. package/dist/components/ui/accordion.d.ts.map +0 -1
  496. package/dist/components/ui/advanced-data-table.d.ts +0 -100
  497. package/dist/components/ui/advanced-data-table.d.ts.map +0 -1
  498. package/dist/components/ui/alert-dialog.d.ts +0 -15
  499. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  500. package/dist/components/ui/alert-toast.d.ts +0 -11
  501. package/dist/components/ui/alert-toast.d.ts.map +0 -1
  502. package/dist/components/ui/alert.d.ts +0 -10
  503. package/dist/components/ui/alert.d.ts.map +0 -1
  504. package/dist/components/ui/app-layout-primary-nav.d.ts +0 -30
  505. package/dist/components/ui/app-layout-primary-nav.d.ts.map +0 -1
  506. package/dist/components/ui/app-layout-secondary-nav.d.ts +0 -34
  507. package/dist/components/ui/app-layout-secondary-nav.d.ts.map +0 -1
  508. package/dist/components/ui/app-layout-user-menu.d.ts +0 -28
  509. package/dist/components/ui/app-layout-user-menu.d.ts.map +0 -1
  510. package/dist/components/ui/aspect-ratio.d.ts +0 -4
  511. package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
  512. package/dist/components/ui/auth-layout.d.ts +0 -28
  513. package/dist/components/ui/auth-layout.d.ts.map +0 -1
  514. package/dist/components/ui/avatar.d.ts +0 -21
  515. package/dist/components/ui/avatar.d.ts.map +0 -1
  516. package/dist/components/ui/badge.d.ts +0 -18
  517. package/dist/components/ui/badge.d.ts.map +0 -1
  518. package/dist/components/ui/brand-logo.d.ts +0 -7
  519. package/dist/components/ui/brand-logo.d.ts.map +0 -1
  520. package/dist/components/ui/breadcrumb.d.ts +0 -12
  521. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  522. package/dist/components/ui/button.d.ts +0 -15
  523. package/dist/components/ui/button.d.ts.map +0 -1
  524. package/dist/components/ui/calendar.d.ts +0 -31
  525. package/dist/components/ui/calendar.d.ts.map +0 -1
  526. package/dist/components/ui/card.d.ts +0 -10
  527. package/dist/components/ui/card.d.ts.map +0 -1
  528. package/dist/components/ui/carousel.d.ts +0 -20
  529. package/dist/components/ui/carousel.d.ts.map +0 -1
  530. package/dist/components/ui/chart.d.ts +0 -45
  531. package/dist/components/ui/chart.d.ts.map +0 -1
  532. package/dist/components/ui/checkbox.d.ts +0 -5
  533. package/dist/components/ui/checkbox.d.ts.map +0 -1
  534. package/dist/components/ui/collapsible.d.ts +0 -6
  535. package/dist/components/ui/collapsible.d.ts.map +0 -1
  536. package/dist/components/ui/color-picker.d.ts +0 -13
  537. package/dist/components/ui/color-picker.d.ts.map +0 -1
  538. package/dist/components/ui/combobox.d.ts +0 -118
  539. package/dist/components/ui/combobox.d.ts.map +0 -1
  540. package/dist/components/ui/command.d.ts +0 -17
  541. package/dist/components/ui/command.d.ts.map +0 -1
  542. package/dist/components/ui/comment-system.d.ts +0 -43
  543. package/dist/components/ui/comment-system.d.ts.map +0 -1
  544. package/dist/components/ui/context-menu.d.ts +0 -26
  545. package/dist/components/ui/context-menu.d.ts.map +0 -1
  546. package/dist/components/ui/contract-print.d.ts +0 -82
  547. package/dist/components/ui/contract-print.d.ts.map +0 -1
  548. package/dist/components/ui/currency-input.d.ts +0 -11
  549. package/dist/components/ui/currency-input.d.ts.map +0 -1
  550. package/dist/components/ui/data-table.d.ts +0 -30
  551. package/dist/components/ui/data-table.d.ts.map +0 -1
  552. package/dist/components/ui/date-picker.d.ts +0 -111
  553. package/dist/components/ui/date-picker.d.ts.map +0 -1
  554. package/dist/components/ui/date-range-picker.d.ts +0 -128
  555. package/dist/components/ui/date-range-picker.d.ts.map +0 -1
  556. package/dist/components/ui/dialog.d.ts +0 -14
  557. package/dist/components/ui/dialog.d.ts.map +0 -1
  558. package/dist/components/ui/document-editor.d.ts +0 -14
  559. package/dist/components/ui/document-editor.d.ts.map +0 -1
  560. package/dist/components/ui/donut-chart.d.ts +0 -32
  561. package/dist/components/ui/donut-chart.d.ts.map +0 -1
  562. package/dist/components/ui/drawer.d.ts +0 -14
  563. package/dist/components/ui/drawer.d.ts.map +0 -1
  564. package/dist/components/ui/dropdown-menu.d.ts +0 -26
  565. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  566. package/dist/components/ui/editable-badge.d.ts +0 -98
  567. package/dist/components/ui/editable-badge.d.ts.map +0 -1
  568. package/dist/components/ui/editorial-calendar.d.ts +0 -22
  569. package/dist/components/ui/editorial-calendar.d.ts.map +0 -1
  570. package/dist/components/ui/empty-state.d.ts +0 -59
  571. package/dist/components/ui/empty-state.d.ts.map +0 -1
  572. package/dist/components/ui/filter-bar.d.ts +0 -16
  573. package/dist/components/ui/filter-bar.d.ts.map +0 -1
  574. package/dist/components/ui/filter-builder.d.ts +0 -39
  575. package/dist/components/ui/filter-builder.d.ts.map +0 -1
  576. package/dist/components/ui/filter-chip.d.ts +0 -8
  577. package/dist/components/ui/filter-chip.d.ts.map +0 -1
  578. package/dist/components/ui/form.d.ts +0 -25
  579. package/dist/components/ui/form.d.ts.map +0 -1
  580. package/dist/components/ui/gantt-chart.d.ts +0 -28
  581. package/dist/components/ui/gantt-chart.d.ts.map +0 -1
  582. package/dist/components/ui/hover-card.d.ts +0 -7
  583. package/dist/components/ui/hover-card.d.ts.map +0 -1
  584. package/dist/components/ui/illustrations.d.ts +0 -76
  585. package/dist/components/ui/illustrations.d.ts.map +0 -1
  586. package/dist/components/ui/index.d.ts +0 -91
  587. package/dist/components/ui/index.d.ts.map +0 -1
  588. package/dist/components/ui/input-group.d.ts +0 -19
  589. package/dist/components/ui/input-group.d.ts.map +0 -1
  590. package/dist/components/ui/input-otp.d.ts +0 -12
  591. package/dist/components/ui/input-otp.d.ts.map +0 -1
  592. package/dist/components/ui/input-validation.d.ts +0 -35
  593. package/dist/components/ui/input-validation.d.ts.map +0 -1
  594. package/dist/components/ui/input.d.ts +0 -4
  595. package/dist/components/ui/input.d.ts.map +0 -1
  596. package/dist/components/ui/kanban-card.d.ts +0 -59
  597. package/dist/components/ui/kanban-card.d.ts.map +0 -1
  598. package/dist/components/ui/kanban-generic-card.d.ts +0 -43
  599. package/dist/components/ui/kanban-generic-card.d.ts.map +0 -1
  600. package/dist/components/ui/kpi-card.d.ts +0 -45
  601. package/dist/components/ui/kpi-card.d.ts.map +0 -1
  602. package/dist/components/ui/label.d.ts +0 -5
  603. package/dist/components/ui/label.d.ts.map +0 -1
  604. package/dist/components/ui/lista-anexos-arquivo.d.ts +0 -47
  605. package/dist/components/ui/lista-anexos-arquivo.d.ts.map +0 -1
  606. package/dist/components/ui/mention-list.d.ts +0 -7
  607. package/dist/components/ui/mention-list.d.ts.map +0 -1
  608. package/dist/components/ui/menubar.d.ts +0 -27
  609. package/dist/components/ui/menubar.d.ts.map +0 -1
  610. package/dist/components/ui/month-range-picker.d.ts +0 -71
  611. package/dist/components/ui/month-range-picker.d.ts.map +0 -1
  612. package/dist/components/ui/multi-select.d.ts +0 -98
  613. package/dist/components/ui/multi-select.d.ts.map +0 -1
  614. package/dist/components/ui/navigation-menu.d.ts +0 -15
  615. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  616. package/dist/components/ui/number-input.d.ts +0 -83
  617. package/dist/components/ui/number-input.d.ts.map +0 -1
  618. package/dist/components/ui/page-header.d.ts +0 -32
  619. package/dist/components/ui/page-header.d.ts.map +0 -1
  620. package/dist/components/ui/pagination.d.ts +0 -14
  621. package/dist/components/ui/pagination.d.ts.map +0 -1
  622. package/dist/components/ui/password-input.d.ts +0 -7
  623. package/dist/components/ui/password-input.d.ts.map +0 -1
  624. package/dist/components/ui/popover.d.ts +0 -8
  625. package/dist/components/ui/popover.d.ts.map +0 -1
  626. package/dist/components/ui/progress-timeline.d.ts +0 -42
  627. package/dist/components/ui/progress-timeline.d.ts.map +0 -1
  628. package/dist/components/ui/progress.d.ts +0 -7
  629. package/dist/components/ui/progress.d.ts.map +0 -1
  630. package/dist/components/ui/radio-group.d.ts +0 -6
  631. package/dist/components/ui/radio-group.d.ts.map +0 -1
  632. package/dist/components/ui/resizable.d.ts +0 -9
  633. package/dist/components/ui/resizable.d.ts.map +0 -1
  634. package/dist/components/ui/saved-filters.d.ts +0 -16
  635. package/dist/components/ui/saved-filters.d.ts.map +0 -1
  636. package/dist/components/ui/scroll-area.d.ts +0 -8
  637. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  638. package/dist/components/ui/select.d.ts +0 -16
  639. package/dist/components/ui/select.d.ts.map +0 -1
  640. package/dist/components/ui/separator.d.ts +0 -5
  641. package/dist/components/ui/separator.d.ts.map +0 -1
  642. package/dist/components/ui/sheet.d.ts +0 -14
  643. package/dist/components/ui/sheet.d.ts.map +0 -1
  644. package/dist/components/ui/side-panel.d.ts +0 -40
  645. package/dist/components/ui/side-panel.d.ts.map +0 -1
  646. package/dist/components/ui/sidebar.d.ts +0 -70
  647. package/dist/components/ui/sidebar.d.ts.map +0 -1
  648. package/dist/components/ui/skeleton.d.ts +0 -8
  649. package/dist/components/ui/skeleton.d.ts.map +0 -1
  650. package/dist/components/ui/slider.d.ts +0 -5
  651. package/dist/components/ui/slider.d.ts.map +0 -1
  652. package/dist/components/ui/social-button.d.ts +0 -13
  653. package/dist/components/ui/social-button.d.ts.map +0 -1
  654. package/dist/components/ui/switch.d.ts +0 -5
  655. package/dist/components/ui/switch.d.ts.map +0 -1
  656. package/dist/components/ui/table-pagination.d.ts +0 -131
  657. package/dist/components/ui/table-pagination.d.ts.map +0 -1
  658. package/dist/components/ui/table-types.d.ts +0 -320
  659. package/dist/components/ui/table-types.d.ts.map +0 -1
  660. package/dist/components/ui/table.d.ts +0 -34
  661. package/dist/components/ui/table.d.ts.map +0 -1
  662. package/dist/components/ui/tabs.d.ts +0 -8
  663. package/dist/components/ui/tabs.d.ts.map +0 -1
  664. package/dist/components/ui/task-edit-dialog.d.ts +0 -15
  665. package/dist/components/ui/task-edit-dialog.d.ts.map +0 -1
  666. package/dist/components/ui/textarea.d.ts +0 -4
  667. package/dist/components/ui/textarea.d.ts.map +0 -1
  668. package/dist/components/ui/time-picker.d.ts +0 -85
  669. package/dist/components/ui/time-picker.d.ts.map +0 -1
  670. package/dist/components/ui/timeline.d.ts +0 -63
  671. package/dist/components/ui/timeline.d.ts.map +0 -1
  672. package/dist/components/ui/toast.d.ts +0 -5
  673. package/dist/components/ui/toast.d.ts.map +0 -1
  674. package/dist/components/ui/toggle-group.d.ts +0 -8
  675. package/dist/components/ui/toggle-group.d.ts.map +0 -1
  676. package/dist/components/ui/toggle.d.ts +0 -10
  677. package/dist/components/ui/toggle.d.ts.map +0 -1
  678. package/dist/components/ui/tooltip.d.ts +0 -8
  679. package/dist/components/ui/tooltip.d.ts.map +0 -1
  680. package/dist/components/ui/underline-tabs.d.ts +0 -29
  681. package/dist/components/ui/underline-tabs.d.ts.map +0 -1
  682. package/dist/components/ui/use-mobile.d.ts +0 -2
  683. package/dist/components/ui/use-mobile.d.ts.map +0 -1
  684. package/dist/components/ui/use-print-contract.d.ts +0 -37
  685. package/dist/components/ui/use-print-contract.d.ts.map +0 -1
  686. package/dist/components/ui/utils.d.ts +0 -3
  687. package/dist/components/ui/utils.d.ts.map +0 -1
  688. package/dist/components/ui/zona-upload-arquivo.d.ts +0 -34
  689. package/dist/components/ui/zona-upload-arquivo.d.ts.map +0 -1
  690. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1,118 @@
1
+ import { useState as F, useCallback as O, useEffect as j } from "react";
2
+ function B({
3
+ initialFilters: c,
4
+ filterFields: T,
5
+ isServerMode: l,
6
+ serverConfig: e,
7
+ handlers: n,
8
+ defaultSearchColumn: u
9
+ }) {
10
+ const [s, m] = F(""), [D, q] = F(!1), [r, _] = F(c), y = (t) => {
11
+ switch (t) {
12
+ case "is":
13
+ return "equals";
14
+ case "equals":
15
+ return "equals";
16
+ case "contains":
17
+ return "contains";
18
+ case "contem":
19
+ return "contains";
20
+ case "starts_with":
21
+ return "startsWith";
22
+ case "greater_than":
23
+ return "greaterThan";
24
+ case "greater_than_or_equal":
25
+ return "greaterThanOrEqual";
26
+ case "less_than":
27
+ return "lessThan";
28
+ case "less_than_or_equal":
29
+ return "lessThanOrEqual";
30
+ case "entre":
31
+ return "equals";
32
+ // Para datas entre, precisa processar diferente
33
+ default:
34
+ return "contains";
35
+ }
36
+ }, b = O(async (t) => {
37
+ l && (e != null && e.onFilterChange) ? await e.onFilterChange(t, s) : (n.clearFilters(), s && n.setFilter(u, s, "contains"), t.forEach((a) => {
38
+ const p = y(a.operator);
39
+ n.setFilter(a.field, a.value, p);
40
+ }));
41
+ }, [l, e, s, n, u]);
42
+ j(() => {
43
+ c && (_(c), c.length > 0 && (l && (e != null && e.onFilterChange) ? e.onFilterChange(c, s) : (n.clearFilters(), s && n.setFilter(u, s, "contains"), c.forEach((t) => {
44
+ const a = y(t.operator);
45
+ n.setFilter(t.field, t.value, a);
46
+ }))));
47
+ }, [JSON.stringify(c)]);
48
+ const E = O(async (t) => {
49
+ m(t), l && (e != null && e.onFilterChange) ? await e.onFilterChange(r, t) : n.setFilter(u, t, "contains");
50
+ }, [l, e, r, n, u]), L = (t) => {
51
+ if (/^\d{4}-\d{2}-\d{2}/.test(t)) {
52
+ const a = /* @__PURE__ */ new Date(t + "T00:00:00");
53
+ if (!isNaN(a.getTime()))
54
+ return a.toLocaleDateString("pt-BR");
55
+ }
56
+ return t;
57
+ }, N = (t) => ({
58
+ is: "é",
59
+ is_not: "não é",
60
+ is_any_of: "é qualquer um de",
61
+ is_none_of: "não é nenhum de",
62
+ equals: "igual a",
63
+ not_equals: "diferente de",
64
+ contains: "contém",
65
+ contem: "contém",
66
+ does_not_contain: "não contém",
67
+ starts_with: "começa com",
68
+ ends_with: "termina com",
69
+ greater_than: "maior que",
70
+ greater_than_or_equal: "maior ou igual a",
71
+ less_than: "menor que",
72
+ less_than_or_equal: "menor ou igual a",
73
+ is_empty: "está vazio",
74
+ is_not_empty: "não está vazio",
75
+ entre: "entre"
76
+ })[t] || t, z = (t) => t ? t.groups ? t.groups.flatMap((a) => [
77
+ ...a.value ? [{ value: a.value, label: a.label }] : [],
78
+ ...a.options
79
+ ]) : t.options ?? [] : [], Q = r.map((t) => {
80
+ var w;
81
+ const a = T.find((o) => o.value === t.field), p = N(t.operator), A = z(a);
82
+ let i;
83
+ return Array.isArray(t.value) ? i = t.value.map((o) => {
84
+ var h;
85
+ return ((h = A.find(($) => $.value === o)) == null ? void 0 : h.label) || o;
86
+ }).join(", ") : (a == null ? void 0 : a.type) === "date" ? i = L(t.value) : i = ((w = A.find((o) => o.value === t.value)) == null ? void 0 : w.label) || t.value, {
87
+ id: t.id,
88
+ label: (a == null ? void 0 : a.label) || t.field,
89
+ value: p ? `${p} ${i}` : i,
90
+ onRemove: () => {
91
+ const o = r.filter((h) => h.id !== t.id);
92
+ _(o), b(o);
93
+ }
94
+ };
95
+ }), R = () => {
96
+ b(r), q(!1);
97
+ }, d = () => {
98
+ _([]), l && (e != null && e.onFilterChange) ? e.onFilterChange([], s) : (n.clearFilters(), s && n.setFilter(u, s, "contains"));
99
+ };
100
+ return {
101
+ searchQuery: s,
102
+ handleSearchChange: E,
103
+ advancedFilters: r,
104
+ setAdvancedFilters: _,
105
+ filterDialogOpen: D,
106
+ setFilterDialogOpen: q,
107
+ activeFilterChips: Q,
108
+ handleApplyFilters: R,
109
+ handleClearAllFilters: d,
110
+ clearSearchAndFilters: () => {
111
+ m(""), d();
112
+ }
113
+ };
114
+ }
115
+ export {
116
+ B as useDataTableFilters
117
+ };
118
+ //# sourceMappingURL=use-data-table-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table-filters.js","sources":["../../src/hooks/use-data-table-filters.ts"],"sourcesContent":["import { useState, useCallback, useEffect, Dispatch, SetStateAction } from \"react\";\nimport { ServerSideConfig, FilterOperator } from \"../components/ui/data/table-types\";\nimport { ActiveFilter } from \"../components/ui/data/filter-bar\";\nimport { FilterCondition, FilterField } from \"../components/ui/data/filter-builder\";\nimport { useDataTable } from \"./use-data-table\";\n\ninterface UseDataTableFiltersOptions<T extends object> {\n initialFilters: FilterCondition[];\n filterFields: FilterField[];\n isServerMode: boolean;\n serverConfig?: ServerSideConfig<T>;\n handlers: ReturnType<typeof useDataTable<T>>[\"handlers\"];\n defaultSearchColumn: keyof T | undefined;\n}\n\ninterface UseDataTableFiltersReturn {\n searchQuery: string;\n handleSearchChange: (value: string) => Promise<void>;\n advancedFilters: FilterCondition[];\n setAdvancedFilters: Dispatch<SetStateAction<FilterCondition[]>>;\n filterDialogOpen: boolean;\n setFilterDialogOpen: Dispatch<SetStateAction<boolean>>;\n activeFilterChips: ActiveFilter[];\n handleApplyFilters: () => void;\n handleClearAllFilters: () => void;\n /**\n * Ação composta usada pelo empty state: limpa a busca de texto e todos os filtros\n * avançados juntos. Existia inline em data-table.tsx como `setSearchQuery(\"\");\n * handleClearAllFilters();` — movida para cá (em vez de expor o setter cru de\n * searchQuery) para manter a interface pública do hook enxuta, já que\n * `setSearchQuery` não tem nenhum outro consumidor fora deste hook. Preserva\n * exatamente a mesma sequência/timing do código original, incluindo o fato de\n * `handleClearAllFilters` ainda ler o valor antigo de `searchQuery` nesta mesma\n * passada de execução (o setState acima é assíncrono).\n */\n clearSearchAndFilters: () => void;\n}\n\n/**\n * Owns DataTable's search + advanced-filter state and derived data: search query,\n * advanced filter conditions, the filter dialog's open state, PT-BR operator/label\n * translation, and the active-filter-chip list consumed by `FilterBar`.\n *\n * Pure extraction from `data-table.tsx` — every function body below is unchanged\n * from its previous inline form.\n */\nexport function useDataTableFilters<T extends object>({\n initialFilters,\n filterFields,\n isServerMode,\n serverConfig,\n handlers,\n defaultSearchColumn,\n}: UseDataTableFiltersOptions<T>): UseDataTableFiltersReturn {\n // Search state - separate from filters\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n // Estado de filtro avançado\n const [filterDialogOpen, setFilterDialogOpen] = useState(false);\n const [advancedFilters, setAdvancedFilters] = useState<FilterCondition[]>(initialFilters);\n\n // Map FilterBuilder operators to table FilterOperator\n const mapFilterOperator = (operator: string): FilterOperator => {\n switch (operator) {\n case \"is\": return \"equals\";\n case \"equals\": return \"equals\";\n case \"contains\": return \"contains\";\n case \"contem\": return \"contains\";\n case \"starts_with\": return \"startsWith\";\n case \"greater_than\": return \"greaterThan\";\n case \"greater_than_or_equal\": return \"greaterThanOrEqual\";\n case \"less_than\": return \"lessThan\";\n case \"less_than_or_equal\": return \"lessThanOrEqual\";\n case \"entre\": return \"equals\"; // Para datas entre, precisa processar diferente\n default: return \"contains\";\n }\n };\n\n // Apply advanced filters - server-side aware\n const applyAdvancedFilters = useCallback(async (filters: FilterCondition[]) => {\n if (isServerMode && serverConfig?.onFilterChange) {\n await serverConfig.onFilterChange(filters, searchQuery);\n } else {\n handlers.clearFilters();\n if (searchQuery) {\n handlers.setFilter(defaultSearchColumn!, searchQuery, \"contains\");\n }\n\n filters.forEach(filter => {\n const operator = mapFilterOperator(filter.operator);\n handlers.setFilter(filter.field as keyof T, filter.value, operator);\n });\n }\n }, [isServerMode, serverConfig, searchQuery, handlers, defaultSearchColumn]);\n\n // Sync external filters with internal state\n useEffect(() => {\n if (initialFilters) {\n // Sincroniza sempre que initialFilters mudar (incluindo quando ficar vazio)\n setAdvancedFilters(initialFilters);\n if (initialFilters.length > 0) {\n // Não inclui applyAdvancedFilters nas dependências para evitar loops\n // Aplica os filtros diretamente\n if (isServerMode && serverConfig?.onFilterChange) {\n serverConfig.onFilterChange(initialFilters, searchQuery);\n } else {\n handlers.clearFilters();\n if (searchQuery) {\n handlers.setFilter(defaultSearchColumn!, searchQuery, \"contains\");\n }\n initialFilters.forEach(filter => {\n const operator = mapFilterOperator(filter.operator);\n handlers.setFilter(filter.field as keyof T, filter.value, operator);\n });\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(initialFilters)]);\n\n // Handle search - server-side aware\n const handleSearchChange = useCallback(async (value: string) => {\n setSearchQuery(value);\n\n if (isServerMode && serverConfig?.onFilterChange) {\n await serverConfig.onFilterChange(advancedFilters, value);\n } else {\n handlers.setFilter(defaultSearchColumn!, value, \"contains\");\n }\n }, [isServerMode, serverConfig, advancedFilters, handlers, defaultSearchColumn]);\n\n // Helper para formatar datas para pt-BR\n const formatDateValue = (value: string): string => {\n // Tenta parsear como data ISO (YYYY-MM-DD)\n if (/^\\d{4}-\\d{2}-\\d{2}/.test(value)) {\n const date = new Date(value + 'T00:00:00');\n if (!isNaN(date.getTime())) {\n return date.toLocaleDateString('pt-BR');\n }\n }\n return value;\n };\n\n // Helper para traduzir operadores para português\n const translateOperator = (operator: string): string => {\n const translations: Record<string, string> = {\n \"is\": \"é\",\n \"is_not\": \"não é\",\n \"is_any_of\": \"é qualquer um de\",\n \"is_none_of\": \"não é nenhum de\",\n \"equals\": \"igual a\",\n \"not_equals\": \"diferente de\",\n \"contains\": \"contém\",\n \"contem\": \"contém\",\n \"does_not_contain\": \"não contém\",\n \"starts_with\": \"começa com\",\n \"ends_with\": \"termina com\",\n \"greater_than\": \"maior que\",\n \"greater_than_or_equal\": \"maior ou igual a\",\n \"less_than\": \"menor que\",\n \"less_than_or_equal\": \"menor ou igual a\",\n \"is_empty\": \"está vazio\",\n \"is_not_empty\": \"não está vazio\",\n \"entre\": \"entre\",\n };\n return translations[operator] || operator;\n };\n\n // Opções selecionáveis de um campo, cobrindo tanto `options` quanto `groups`. Num campo\n // hierárquico o cabeçalho do grupo também é selecionável, e olhar só `options` fazia o\n // chip cair no value cru — \"Cliente / Grupo: é qualquer um de g-2\" em vez do nome.\n const opcoesSelecionaveis = (field?: FilterField) => {\n if (!field) return [];\n if (field.groups) {\n return field.groups.flatMap(group => [\n ...(group.value ? [{ value: group.value, label: group.label }] : []),\n ...group.options,\n ]);\n }\n return field.options ?? [];\n };\n\n // Convert advanced filters to active filter chips\n const activeFilterChips: ActiveFilter[] = advancedFilters.map((filter) => {\n const field = filterFields.find(f => f.value === filter.field);\n const operatorLabel = translateOperator(filter.operator);\n const opcoes = opcoesSelecionaveis(field);\n\n // Para campos com options (select), buscar o label correspondente ao value\n let valueLabel: string;\n if (Array.isArray(filter.value)) {\n // Multi-select: mapear cada value para seu label\n valueLabel = filter.value\n .map(val => opcoes.find(opt => opt.value === val)?.label || val)\n .join(\", \");\n } else {\n // Single value: buscar label ou usar o value\n // Se for campo de data, formatar para pt-BR\n if (field?.type === 'date') {\n valueLabel = formatDateValue(filter.value);\n } else {\n valueLabel = opcoes.find(opt => opt.value === filter.value)?.label || filter.value;\n }\n }\n\n return {\n id: filter.id,\n label: field?.label || filter.field,\n value: operatorLabel ? `${operatorLabel} ${valueLabel}` : valueLabel,\n onRemove: () => {\n const updated = advancedFilters.filter(f => f.id !== filter.id);\n setAdvancedFilters(updated);\n applyAdvancedFilters(updated);\n }\n };\n });\n\n const handleApplyFilters = () => {\n applyAdvancedFilters(advancedFilters);\n setFilterDialogOpen(false);\n };\n\n const handleClearAllFilters = () => {\n setAdvancedFilters([]);\n if (isServerMode && serverConfig?.onFilterChange) {\n serverConfig.onFilterChange([], searchQuery);\n } else {\n handlers.clearFilters();\n if (searchQuery) {\n handlers.setFilter(defaultSearchColumn!, searchQuery, \"contains\");\n }\n }\n };\n\n const clearSearchAndFilters = () => {\n setSearchQuery(\"\");\n handleClearAllFilters();\n };\n\n return {\n searchQuery,\n handleSearchChange,\n advancedFilters,\n setAdvancedFilters,\n filterDialogOpen,\n setFilterDialogOpen,\n activeFilterChips,\n handleApplyFilters,\n handleClearAllFilters,\n clearSearchAndFilters,\n };\n}\n"],"names":["useDataTableFilters","initialFilters","filterFields","isServerMode","serverConfig","handlers","defaultSearchColumn","searchQuery","setSearchQuery","useState","filterDialogOpen","setFilterDialogOpen","advancedFilters","setAdvancedFilters","mapFilterOperator","operator","applyAdvancedFilters","useCallback","filters","filter","useEffect","handleSearchChange","value","formatDateValue","date","translateOperator","opcoesSelecionaveis","field","group","activeFilterChips","f","operatorLabel","opcoes","valueLabel","val","_a","opt","updated","handleApplyFilters","handleClearAllFilters"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),C=require("./use-table-pagination.cjs");function I({data:c,initialSort:p={column:null,direction:null},initialPageSize:S=10,enablePagination:T=!0,serverMode:a=!1,totalItems:D,serverCurrentPage:u,serverCurrentPageSize:s}){const[o,b]=l.useState(p),[r,d]=l.useState([]),g=l.useMemo(()=>a||r.length===0?c:c.filter(n=>r.every(t=>{const i=n[t.column];switch(t.operator){case"equals":return i==t.value;case"contains":return String(i).toLowerCase().includes(String(t.value).toLowerCase());case"startsWith":return String(i).toLowerCase().startsWith(String(t.value).toLowerCase());case"greaterThan":return i>t.value;case"greaterThanOrEqual":return i>=t.value;case"lessThan":return i<t.value;case"lessThanOrEqual":return i<=t.value;default:return!0}})),[c,r,a]),m=l.useMemo(()=>a||!o.column||!o.direction?g:[...g].sort((n,t)=>{const i=n[o.column],f=t[o.column];return i<f?o.direction==="asc"?-1:1:i>f?o.direction==="asc"?1:-1:0}),[g,o,a]),q=a?D??c.length:m.length,e=C.useTablePagination({data:a?c:m,initialPageSize:S,resetOnDataChange:!0,serverSideTotalItems:a?q:void 0});l.useEffect(()=>{a&&(u!==void 0&&u!==e.currentPage&&e.goToPage(u),s!==void 0&&s!==e.pageSize&&e.setPageSize(s))},[a,u,s,e]);const w=n=>{b(t=>{if(t.column===n){if(t.direction==="asc")return{column:n,direction:"desc"};if(t.direction==="desc")return{column:null,direction:null}}return{column:n,direction:"asc"}})},F=(n,t,i="contains")=>{d(f=>{const h=f.filter(V=>V.column!==n);return t===""||t===null||t===void 0?h:[...h,{column:n,operator:i,value:t}]})},L=n=>{d(t=>t.filter(i=>i.column!==n))},O=n=>o.column===n?o.direction:null,y=a?c:T?e.paginatedData:m,E=a&&(u!==void 0||s!==void 0)?{...e.paginationConfig,currentPage:u??e.paginationConfig.currentPage,pageSize:s??e.paginationConfig.pageSize}:e.paginationConfig;return{data:y,state:{sort:o,filters:r,pagination:E},handlers:{onSort:w,setFilter:F,removeFilter:L,clearFilters:()=>d([])},getSortDirection:O}}exports.useDataTable=I;
2
+ //# sourceMappingURL=use-data-table.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table.cjs","sources":["../../src/hooks/use-data-table.ts"],"sourcesContent":["import { useState, useMemo, useEffect } from \"react\";\nimport {\n SortConfig,\n SortDirection,\n FilterConfig,\n FilterOperator\n} from \"../components/ui/data/table-types\";\nimport { useTablePagination } from \"./use-table-pagination\";\n\ninterface UseDataTableProps<T> {\n data: T[];\n initialSort?: SortConfig<T>;\n initialPageSize?: number;\n enablePagination?: boolean;\n\n // Server-side mode\n serverMode?: boolean;\n totalItems?: number;\n serverCurrentPage?: number; // Página atual do servidor (1-indexed)\n serverCurrentPageSize?: number; // Tamanho da página do servidor\n}\n\ninterface UseDataTableReturn<T> {\n /** The processed data to be displayed (filtered, sorted, and optionally paginated) */\n data: T[];\n /** State helpers */\n state: {\n sort: SortConfig<T>;\n filters: FilterConfig<T>[];\n pagination: ReturnType<typeof useTablePagination>[\"paginationConfig\"];\n };\n /** Handlers */\n handlers: {\n /** Toggle sort for a column. Cycles through: asc -> desc -> null (or reset) */\n onSort: (column: keyof T) => void;\n /** Apply a filter */\n setFilter: (column: keyof T, value: unknown, operator?: FilterOperator) => void;\n /** Remove a filter */\n removeFilter: (column: keyof T) => void;\n /** Clear all filters */\n clearFilters: () => void;\n };\n /** Helper to get aria-sort attribute for a column */\n getSortDirection: (column: keyof T) => SortDirection;\n}\n\n/**\n * Composite hook that manages Sorting, Filtering and Pagination for a Data Table.\n */\nexport function useDataTable<T>({\n data,\n initialSort = { column: null, direction: null },\n initialPageSize = 10,\n enablePagination = true,\n serverMode = false,\n totalItems,\n serverCurrentPage,\n serverCurrentPageSize\n}: UseDataTableProps<T>): UseDataTableReturn<T> {\n\n // --- Sorting State ---\n const [sortConfig, setSortConfig] = useState<SortConfig<T>>(initialSort);\n\n // --- Filtering State ---\n const [filters, setFilters] = useState<FilterConfig<T>[]>([]);\n\n // --- 1. Filtering Logic ---\n // Skip se server-side (dados já vêm filtrados)\n const filteredData = useMemo(() => {\n if (serverMode) return data;\n if (filters.length === 0) return data;\n\n return data.filter(item => {\n return filters.every(filter => {\n const itemValue = item[filter.column];\n\n switch (filter.operator) {\n case \"equals\": return itemValue == filter.value;\n case \"contains\":\n return String(itemValue).toLowerCase().includes(String(filter.value).toLowerCase());\n case \"startsWith\":\n return String(itemValue).toLowerCase().startsWith(String(filter.value).toLowerCase());\n case \"greaterThan\": return itemValue > filter.value;\n case \"greaterThanOrEqual\": return itemValue >= filter.value;\n case \"lessThan\": return itemValue < filter.value;\n case \"lessThanOrEqual\": return itemValue <= filter.value;\n default: return true;\n }\n });\n });\n }, [data, filters, serverMode]);\n\n // --- 2. Sorting Logic ---\n // Skip se server-side (dados já vêm ordenados)\n const sortedData = useMemo(() => {\n if (serverMode) return filteredData;\n if (!sortConfig.column || !sortConfig.direction) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.column!];\n const bValue = b[sortConfig.column!];\n\n if (aValue < bValue) return sortConfig.direction === \"asc\" ? -1 : 1;\n if (aValue > bValue) return sortConfig.direction === \"asc\" ? 1 : -1;\n return 0;\n });\n }, [filteredData, sortConfig, serverMode]);\n\n // --- 3. Pagination Logic ---\n // Server-side: data já vem paginado, usar totalItems do servidor\n // Client-side: paginar dados processados localmente\n const realTotalItems = serverMode ? (totalItems ?? data.length) : sortedData.length;\n\n const pagination = useTablePagination({\n data: serverMode ? data : sortedData,\n initialPageSize,\n resetOnDataChange: true,\n serverSideTotalItems: serverMode ? realTotalItems : undefined\n });\n\n useEffect(() => {\n if (serverMode) {\n // Sincronizar página atual com servidor\n if (serverCurrentPage !== undefined && serverCurrentPage !== pagination.currentPage) {\n pagination.goToPage(serverCurrentPage);\n }\n \n // Sincronizar pageSize com servidor\n if (serverCurrentPageSize !== undefined && serverCurrentPageSize !== pagination.pageSize) {\n pagination.setPageSize(serverCurrentPageSize);\n }\n }\n }, [serverMode, serverCurrentPage, serverCurrentPageSize, pagination]);\n\n // --- Handlers ---\n const handleSort = (column: keyof T) => {\n setSortConfig(current => {\n if (current.column === column) {\n // Cycle: asc -> desc -> null\n if (current.direction === \"asc\") return { column, direction: \"desc\" };\n if (current.direction === \"desc\") return { column: null, direction: null };\n }\n return { column, direction: \"asc\" };\n });\n };\n\n const setFilter = (column: keyof T, value: unknown, operator: FilterOperator = \"contains\") => {\n setFilters(prev => {\n const existing = prev.filter(f => f.column !== column);\n if (value === \"\" || value === null || value === undefined) {\n return existing;\n }\n return [...existing, { column, operator, value }];\n });\n };\n\n const removeFilter = (column: keyof T) => {\n setFilters(prev => prev.filter(f => f.column !== column));\n };\n\n const getSortDirection = (column: keyof T): SortDirection => {\n return sortConfig.column === column ? sortConfig.direction : null;\n };\n\n // Server-side: dados já vêm paginados, retornar como vieram\n // Client-side: usar paginatedData do hook de paginação\n const finalData = serverMode\n ? data\n : (enablePagination ? pagination.paginatedData : sortedData);\n\n // Override paginationConfig com valores do servidor quando disponíveis\n const finalPaginationConfig = serverMode && (serverCurrentPage !== undefined || serverCurrentPageSize !== undefined)\n ? {\n ...pagination.paginationConfig,\n currentPage: serverCurrentPage ?? pagination.paginationConfig.currentPage,\n pageSize: serverCurrentPageSize ?? pagination.paginationConfig.pageSize\n }\n : pagination.paginationConfig;\n\n return {\n data: finalData,\n state: {\n sort: sortConfig,\n filters,\n pagination: finalPaginationConfig\n },\n handlers: {\n onSort: handleSort,\n setFilter,\n removeFilter,\n clearFilters: () => setFilters([])\n },\n getSortDirection\n };\n}\n"],"names":["useDataTable","data","initialSort","initialPageSize","enablePagination","serverMode","totalItems","serverCurrentPage","serverCurrentPageSize","sortConfig","setSortConfig","useState","filters","setFilters","filteredData","useMemo","item","filter","itemValue","sortedData","a","b","aValue","bValue","realTotalItems","pagination","useTablePagination","useEffect","handleSort","column","current","setFilter","value","operator","prev","existing","f","removeFilter","getSortDirection","finalData","finalPaginationConfig"],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { useState as h, useMemo as d, useEffect as I } from "react";
2
+ import { useTablePagination as W } from "./use-table-pagination.js";
3
+ function k({
4
+ data: e,
5
+ initialSort: S = { column: null, direction: null },
6
+ initialPageSize: T = 10,
7
+ enablePagination: D = !0,
8
+ serverMode: o = !1,
9
+ totalItems: w,
10
+ serverCurrentPage: s,
11
+ serverCurrentPageSize: u
12
+ }) {
13
+ const [a, F] = h(S), [l, f] = h([]), r = d(() => o || l.length === 0 ? e : e.filter((n) => l.every((t) => {
14
+ const i = n[t.column];
15
+ switch (t.operator) {
16
+ case "equals":
17
+ return i == t.value;
18
+ case "contains":
19
+ return String(i).toLowerCase().includes(String(t.value).toLowerCase());
20
+ case "startsWith":
21
+ return String(i).toLowerCase().startsWith(String(t.value).toLowerCase());
22
+ case "greaterThan":
23
+ return i > t.value;
24
+ case "greaterThanOrEqual":
25
+ return i >= t.value;
26
+ case "lessThan":
27
+ return i < t.value;
28
+ case "lessThanOrEqual":
29
+ return i <= t.value;
30
+ default:
31
+ return !0;
32
+ }
33
+ })), [e, l, o]), m = d(() => o || !a.column || !a.direction ? r : [...r].sort((n, t) => {
34
+ const i = n[a.column], g = t[a.column];
35
+ return i < g ? a.direction === "asc" ? -1 : 1 : i > g ? a.direction === "asc" ? 1 : -1 : 0;
36
+ }), [r, a, o]), L = o ? w ?? e.length : m.length, c = W({
37
+ data: o ? e : m,
38
+ initialPageSize: T,
39
+ resetOnDataChange: !0,
40
+ serverSideTotalItems: o ? L : void 0
41
+ });
42
+ I(() => {
43
+ o && (s !== void 0 && s !== c.currentPage && c.goToPage(s), u !== void 0 && u !== c.pageSize && c.setPageSize(u));
44
+ }, [o, s, u, c]);
45
+ const b = (n) => {
46
+ F((t) => {
47
+ if (t.column === n) {
48
+ if (t.direction === "asc") return { column: n, direction: "desc" };
49
+ if (t.direction === "desc") return { column: null, direction: null };
50
+ }
51
+ return { column: n, direction: "asc" };
52
+ });
53
+ }, q = (n, t, i = "contains") => {
54
+ f((g) => {
55
+ const p = g.filter((C) => C.column !== n);
56
+ return t === "" || t === null || t === void 0 ? p : [...p, { column: n, operator: i, value: t }];
57
+ });
58
+ }, E = (n) => {
59
+ f((t) => t.filter((i) => i.column !== n));
60
+ }, O = (n) => a.column === n ? a.direction : null, V = o ? e : D ? c.paginatedData : m, x = o && (s !== void 0 || u !== void 0) ? {
61
+ ...c.paginationConfig,
62
+ currentPage: s ?? c.paginationConfig.currentPage,
63
+ pageSize: u ?? c.paginationConfig.pageSize
64
+ } : c.paginationConfig;
65
+ return {
66
+ data: V,
67
+ state: {
68
+ sort: a,
69
+ filters: l,
70
+ pagination: x
71
+ },
72
+ handlers: {
73
+ onSort: b,
74
+ setFilter: q,
75
+ removeFilter: E,
76
+ clearFilters: () => f([])
77
+ },
78
+ getSortDirection: O
79
+ };
80
+ }
81
+ export {
82
+ k as useDataTable
83
+ };
84
+ //# sourceMappingURL=use-data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data-table.js","sources":["../../src/hooks/use-data-table.ts"],"sourcesContent":["import { useState, useMemo, useEffect } from \"react\";\nimport {\n SortConfig,\n SortDirection,\n FilterConfig,\n FilterOperator\n} from \"../components/ui/data/table-types\";\nimport { useTablePagination } from \"./use-table-pagination\";\n\ninterface UseDataTableProps<T> {\n data: T[];\n initialSort?: SortConfig<T>;\n initialPageSize?: number;\n enablePagination?: boolean;\n\n // Server-side mode\n serverMode?: boolean;\n totalItems?: number;\n serverCurrentPage?: number; // Página atual do servidor (1-indexed)\n serverCurrentPageSize?: number; // Tamanho da página do servidor\n}\n\ninterface UseDataTableReturn<T> {\n /** The processed data to be displayed (filtered, sorted, and optionally paginated) */\n data: T[];\n /** State helpers */\n state: {\n sort: SortConfig<T>;\n filters: FilterConfig<T>[];\n pagination: ReturnType<typeof useTablePagination>[\"paginationConfig\"];\n };\n /** Handlers */\n handlers: {\n /** Toggle sort for a column. Cycles through: asc -> desc -> null (or reset) */\n onSort: (column: keyof T) => void;\n /** Apply a filter */\n setFilter: (column: keyof T, value: unknown, operator?: FilterOperator) => void;\n /** Remove a filter */\n removeFilter: (column: keyof T) => void;\n /** Clear all filters */\n clearFilters: () => void;\n };\n /** Helper to get aria-sort attribute for a column */\n getSortDirection: (column: keyof T) => SortDirection;\n}\n\n/**\n * Composite hook that manages Sorting, Filtering and Pagination for a Data Table.\n */\nexport function useDataTable<T>({\n data,\n initialSort = { column: null, direction: null },\n initialPageSize = 10,\n enablePagination = true,\n serverMode = false,\n totalItems,\n serverCurrentPage,\n serverCurrentPageSize\n}: UseDataTableProps<T>): UseDataTableReturn<T> {\n\n // --- Sorting State ---\n const [sortConfig, setSortConfig] = useState<SortConfig<T>>(initialSort);\n\n // --- Filtering State ---\n const [filters, setFilters] = useState<FilterConfig<T>[]>([]);\n\n // --- 1. Filtering Logic ---\n // Skip se server-side (dados já vêm filtrados)\n const filteredData = useMemo(() => {\n if (serverMode) return data;\n if (filters.length === 0) return data;\n\n return data.filter(item => {\n return filters.every(filter => {\n const itemValue = item[filter.column];\n\n switch (filter.operator) {\n case \"equals\": return itemValue == filter.value;\n case \"contains\":\n return String(itemValue).toLowerCase().includes(String(filter.value).toLowerCase());\n case \"startsWith\":\n return String(itemValue).toLowerCase().startsWith(String(filter.value).toLowerCase());\n case \"greaterThan\": return itemValue > filter.value;\n case \"greaterThanOrEqual\": return itemValue >= filter.value;\n case \"lessThan\": return itemValue < filter.value;\n case \"lessThanOrEqual\": return itemValue <= filter.value;\n default: return true;\n }\n });\n });\n }, [data, filters, serverMode]);\n\n // --- 2. Sorting Logic ---\n // Skip se server-side (dados já vêm ordenados)\n const sortedData = useMemo(() => {\n if (serverMode) return filteredData;\n if (!sortConfig.column || !sortConfig.direction) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.column!];\n const bValue = b[sortConfig.column!];\n\n if (aValue < bValue) return sortConfig.direction === \"asc\" ? -1 : 1;\n if (aValue > bValue) return sortConfig.direction === \"asc\" ? 1 : -1;\n return 0;\n });\n }, [filteredData, sortConfig, serverMode]);\n\n // --- 3. Pagination Logic ---\n // Server-side: data já vem paginado, usar totalItems do servidor\n // Client-side: paginar dados processados localmente\n const realTotalItems = serverMode ? (totalItems ?? data.length) : sortedData.length;\n\n const pagination = useTablePagination({\n data: serverMode ? data : sortedData,\n initialPageSize,\n resetOnDataChange: true,\n serverSideTotalItems: serverMode ? realTotalItems : undefined\n });\n\n useEffect(() => {\n if (serverMode) {\n // Sincronizar página atual com servidor\n if (serverCurrentPage !== undefined && serverCurrentPage !== pagination.currentPage) {\n pagination.goToPage(serverCurrentPage);\n }\n \n // Sincronizar pageSize com servidor\n if (serverCurrentPageSize !== undefined && serverCurrentPageSize !== pagination.pageSize) {\n pagination.setPageSize(serverCurrentPageSize);\n }\n }\n }, [serverMode, serverCurrentPage, serverCurrentPageSize, pagination]);\n\n // --- Handlers ---\n const handleSort = (column: keyof T) => {\n setSortConfig(current => {\n if (current.column === column) {\n // Cycle: asc -> desc -> null\n if (current.direction === \"asc\") return { column, direction: \"desc\" };\n if (current.direction === \"desc\") return { column: null, direction: null };\n }\n return { column, direction: \"asc\" };\n });\n };\n\n const setFilter = (column: keyof T, value: unknown, operator: FilterOperator = \"contains\") => {\n setFilters(prev => {\n const existing = prev.filter(f => f.column !== column);\n if (value === \"\" || value === null || value === undefined) {\n return existing;\n }\n return [...existing, { column, operator, value }];\n });\n };\n\n const removeFilter = (column: keyof T) => {\n setFilters(prev => prev.filter(f => f.column !== column));\n };\n\n const getSortDirection = (column: keyof T): SortDirection => {\n return sortConfig.column === column ? sortConfig.direction : null;\n };\n\n // Server-side: dados já vêm paginados, retornar como vieram\n // Client-side: usar paginatedData do hook de paginação\n const finalData = serverMode\n ? data\n : (enablePagination ? pagination.paginatedData : sortedData);\n\n // Override paginationConfig com valores do servidor quando disponíveis\n const finalPaginationConfig = serverMode && (serverCurrentPage !== undefined || serverCurrentPageSize !== undefined)\n ? {\n ...pagination.paginationConfig,\n currentPage: serverCurrentPage ?? pagination.paginationConfig.currentPage,\n pageSize: serverCurrentPageSize ?? pagination.paginationConfig.pageSize\n }\n : pagination.paginationConfig;\n\n return {\n data: finalData,\n state: {\n sort: sortConfig,\n filters,\n pagination: finalPaginationConfig\n },\n handlers: {\n onSort: handleSort,\n setFilter,\n removeFilter,\n clearFilters: () => setFilters([])\n },\n getSortDirection\n };\n}\n"],"names":["useDataTable","data","initialSort","initialPageSize","enablePagination","serverMode","totalItems","serverCurrentPage","serverCurrentPageSize","sortConfig","setSortConfig","useState","filters","setFilters","filteredData","useMemo","item","filter","itemValue","sortedData","a","b","aValue","bValue","realTotalItems","pagination","useTablePagination","useEffect","handleSort","column","current","setFilter","value","operator","prev","existing","f","removeFilter","getSortDirection","finalData","finalPaginationConfig"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react");function s(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const r=s(c),i=768;function a(){const[e,n]=r.useState(void 0);return r.useEffect(()=>{const t=window.matchMedia(`(max-width: ${i-1}px)`),o=()=>{n(window.innerWidth<i)};return t.addEventListener("change",o),n(window.innerWidth<i),()=>t.removeEventListener("change",o)},[]),!!e}exports.useIsMobile=a;
2
+ //# sourceMappingURL=use-mobile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.cjs","sources":["../../src/hooks/use-mobile.ts"],"sourcesContent":["import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","React","mql","onChange"],"mappings":"mYAEMA,EAAoB,IAEnB,SAASC,GAAc,CAC5B,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAM,SACpC,MAAA,EAGFA,OAAAA,EAAM,UAAU,IAAM,CACpB,MAAMC,EAAM,OAAO,WAAW,eAAeL,EAAoB,CAAC,KAAK,EACjEM,EAAW,IAAM,CACrBH,EAAY,OAAO,WAAaH,CAAiB,CACnD,EACA,OAAAK,EAAI,iBAAiB,SAAUC,CAAQ,EACvCH,EAAY,OAAO,WAAaH,CAAiB,EAC1C,IAAMK,EAAI,oBAAoB,SAAUC,CAAQ,CACzD,EAAG,CAAA,CAAE,EAEE,CAAC,CAACJ,CACX"}
@@ -0,0 +1,17 @@
1
+ import * as o from "react";
2
+ const e = 768;
3
+ function r() {
4
+ const [s, n] = o.useState(
5
+ void 0
6
+ );
7
+ return o.useEffect(() => {
8
+ const t = window.matchMedia(`(max-width: ${e - 1}px)`), i = () => {
9
+ n(window.innerWidth < e);
10
+ };
11
+ return t.addEventListener("change", i), n(window.innerWidth < e), () => t.removeEventListener("change", i);
12
+ }, []), !!s;
13
+ }
14
+ export {
15
+ r as useIsMobile
16
+ };
17
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.js","sources":["../../src/hooks/use-mobile.ts"],"sourcesContent":["import * as React from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener(\"change\", onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener(\"change\", onChange);\n }, []);\n\n return !!isMobile;\n}\n"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","React","mql","onChange"],"mappings":";AAEA,MAAMA,IAAoB;AAEnB,SAASC,IAAc;AAC5B,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAM;AAAA,IACpC;AAAA,EAAA;AAGF,SAAAA,EAAM,UAAU,MAAM;AACpB,UAAMC,IAAM,OAAO,WAAW,eAAeL,IAAoB,CAAC,KAAK,GACjEM,IAAW,MAAM;AACrB,MAAAH,EAAY,OAAO,aAAaH,CAAiB;AAAA,IACnD;AACA,WAAAK,EAAI,iBAAiB,UAAUC,CAAQ,GACvCH,EAAY,OAAO,aAAaH,CAAiB,GAC1C,MAAMK,EAAI,oBAAoB,UAAUC,CAAQ;AAAA,EACzD,GAAG,CAAA,CAAE,GAEE,CAAC,CAACJ;AACX;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),y=require("../components/ui/data/table-types.cjs");function D({data:e,initialPageSize:m=10,resetOnDataChange:f=!0,serverSideTotalItems:P}){const[c,n]=g.useState(1),[a,p]=g.useState(m),i=P!==void 0,o=i?P:e.length,[x,b]=g.useState(e.length);f&&e.length!==x&&(b(e.length),n(1));const s=Math.ceil(o/a),r=Math.min(Math.max(1,c),Math.max(1,s)),u=(r-1)*a,h=Math.min(u+a,o),v=g.useMemo(()=>i?e:e.slice(u,h),[e,u,h,i]),l=t=>{const T=Math.max(1,Math.min(t,s));n(T)},z=()=>{c<s&&n(t=>t+1)},C=()=>{c>1&&n(t=>t-1)},M=t=>{p(t),n(1)},S={currentPage:r,pageSize:a,totalItems:o,onPageChange:l,onPageSizeChange:M},d=y.calculatePaginationMetadata(S);return{currentPage:r,pageSize:a,totalItems:o,totalPages:s,paginatedData:v,goToPage:l,nextPage:z,prevPage:C,setPageSize:M,paginationConfig:S,metadata:d}}exports.useTablePagination=D;
2
+ //# sourceMappingURL=use-table-pagination.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table-pagination.cjs","sources":["../../src/hooks/use-table-pagination.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { PaginationConfig, PaginationMetadata, calculatePaginationMetadata } from \"../components/ui/data/table-types\";\n\ninterface UseTablePaginationProps<T> {\n /** Array of items to be paginated */\n data: T[];\n /** Initial page size */\n initialPageSize?: number;\n /** Whether to reset to first page when data changes */\n resetOnDataChange?: boolean;\n /** Total items from server (for server-side pagination) */\n serverSideTotalItems?: number;\n}\n\ninterface UseTablePaginationReturn<T> {\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Current page size */\n pageSize: number;\n /** Total number of items in the data array */\n totalItems: number;\n /** Total number of pages */\n totalPages: number;\n /** The subset of data for the current page */\n paginatedData: T[];\n /** Go to specific page */\n goToPage: (page: number) => void;\n /** Go to next page if available */\n nextPage: () => void;\n /** Go to previous page if available */\n prevPage: () => void;\n /** Change page size and reset to first page */\n setPageSize: (size: number) => void;\n /** Computed metadata usually needed for TablePagination component */\n paginationConfig: PaginationConfig;\n /** Full metadata including hasNext/hasPrev */\n metadata: PaginationMetadata;\n}\n\n/**\n * Hook to manage pagination state and logic for tables.\n * \n * @example\n * ```tsx\n * const { paginatedData, paginationConfig, goToPage, setPageSize } = useTablePagination({\n * data: allUsers,\n * initialPageSize: 10\n * });\n * \n * return (\n * <>\n * <Table data={paginatedData} />\n * <TablePagination \n * {...paginationConfig} \n * onPageChange={goToPage}\n * onPageSizeChange={setPageSize}\n * />\n * </>\n * )\n * ```\n */\nexport function useTablePagination<T>({\n data,\n initialPageSize = 10,\n resetOnDataChange = true,\n serverSideTotalItems\n}: UseTablePaginationProps<T>): UseTablePaginationReturn<T> {\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n // Server-side mode: usa total do servidor, senão usa length local\n const isServerMode = serverSideTotalItems !== undefined;\n const totalItems = isServerMode ? serverSideTotalItems : data.length;\n\n // Volta para a primeira página quando a quantidade de itens muda (ex.: filtro aplicado).\n // Ajuste de estado durante o render (padrão \"You Might Not Need an Effect\") em vez de\n // um useEffect com `data.length` só no array de deps — que disparava o warning\n // react-hooks/exhaustive-deps por não usar `data` no corpo.\n const [prevDataLength, setPrevDataLength] = useState(data.length);\n if (resetOnDataChange && data.length !== prevDataLength) {\n setPrevDataLength(data.length);\n setCurrentPage(1);\n }\n\n const totalPages = Math.ceil(totalItems / pageSize);\n\n // Ensure current page is valid\n const safeCurrentPage = Math.min(Math.max(1, currentPage), Math.max(1, totalPages));\n\n // Calculate slice indices (apenas para client-side)\n const startIndex = (safeCurrentPage - 1) * pageSize;\n const endIndex = Math.min(startIndex + pageSize, totalItems);\n\n // Get current page data\n // Server-side: data já vem paginado, retornar como está\n // Client-side: fazer slice\n const paginatedData = useMemo(() => {\n return isServerMode ? data : data.slice(startIndex, endIndex);\n }, [data, startIndex, endIndex, isServerMode]);\n\n const goToPage = (page: number) => {\n const targetPage = Math.max(1, Math.min(page, totalPages));\n setCurrentPage(targetPage);\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(p => p + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(p => p - 1);\n }\n };\n\n const handleSetPageSize = (newSize: number) => {\n setPageSize(newSize);\n setCurrentPage(1); // Usually best UX to reset to page 1 on size change\n };\n\n const paginationConfig: PaginationConfig = {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n onPageChange: goToPage,\n onPageSizeChange: handleSetPageSize\n };\n\n const metadata = calculatePaginationMetadata(paginationConfig);\n\n return {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n totalPages,\n paginatedData,\n goToPage,\n nextPage,\n prevPage,\n setPageSize: handleSetPageSize,\n paginationConfig,\n metadata\n };\n}\n"],"names":["useTablePagination","data","initialPageSize","resetOnDataChange","serverSideTotalItems","currentPage","setCurrentPage","useState","pageSize","setPageSize","isServerMode","totalItems","prevDataLength","setPrevDataLength","totalPages","safeCurrentPage","startIndex","endIndex","paginatedData","useMemo","goToPage","page","targetPage","nextPage","p","prevPage","handleSetPageSize","newSize","paginationConfig","metadata","calculatePaginationMetadata"],"mappings":"4JA6DO,SAASA,EAAsB,CAClC,KAAAC,EACA,gBAAAC,EAAkB,GAClB,kBAAAC,EAAoB,GACpB,qBAAAC,CACJ,EAA4D,CACxD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,CAAC,EAC1C,CAACC,EAAUC,CAAW,EAAIF,EAAAA,SAASL,CAAe,EAGlDQ,EAAeN,IAAyB,OACxCO,EAAaD,EAAeN,EAAuBH,EAAK,OAMxD,CAACW,EAAgBC,CAAiB,EAAIN,EAAAA,SAASN,EAAK,MAAM,EAC5DE,GAAqBF,EAAK,SAAWW,IACrCC,EAAkBZ,EAAK,MAAM,EAC7BK,EAAe,CAAC,GAGpB,MAAMQ,EAAa,KAAK,KAAKH,EAAaH,CAAQ,EAG5CO,EAAkB,KAAK,IAAI,KAAK,IAAI,EAAGV,CAAW,EAAG,KAAK,IAAI,EAAGS,CAAU,CAAC,EAG5EE,GAAcD,EAAkB,GAAKP,EACrCS,EAAW,KAAK,IAAID,EAAaR,EAAUG,CAAU,EAKrDO,EAAgBC,EAAAA,QAAQ,IACnBT,EAAeT,EAAOA,EAAK,MAAMe,EAAYC,CAAQ,EAC7D,CAAChB,EAAMe,EAAYC,EAAUP,CAAY,CAAC,EAEvCU,EAAYC,GAAiB,CAC/B,MAAMC,EAAa,KAAK,IAAI,EAAG,KAAK,IAAID,EAAMP,CAAU,CAAC,EACzDR,EAAegB,CAAU,CAC7B,EAEMC,EAAW,IAAM,CACflB,EAAcS,GACdR,EAAekB,GAAKA,EAAI,CAAC,CAEjC,EAEMC,EAAW,IAAM,CACfpB,EAAc,GACdC,EAAekB,GAAKA,EAAI,CAAC,CAEjC,EAEME,EAAqBC,GAAoB,CAC3ClB,EAAYkB,CAAO,EACnBrB,EAAe,CAAC,CACpB,EAEMsB,EAAqC,CACvC,YAAab,EACb,SAAAP,EACA,WAAAG,EACA,aAAcS,EACd,iBAAkBM,CAAA,EAGhBG,EAAWC,EAAAA,4BAA4BF,CAAgB,EAE7D,MAAO,CACH,YAAab,EACb,SAAAP,EACA,WAAAG,EACA,WAAAG,EACA,cAAAI,EACA,SAAAE,EACA,SAAAG,EACA,SAAAE,EACA,YAAaC,EACb,iBAAAE,EACA,SAAAC,CAAA,CAER"}
@@ -0,0 +1,44 @@
1
+ import { useState as P, useMemo as L } from "react";
2
+ import { calculatePaginationMetadata as b } from "../components/ui/data/table-types.js";
3
+ function k({
4
+ data: e,
5
+ initialPageSize: f = 10,
6
+ resetOnDataChange: p = !0,
7
+ serverSideTotalItems: h
8
+ }) {
9
+ const [s, n] = P(1), [a, x] = P(f), c = h !== void 0, o = c ? h : e.length, [S, z] = P(e.length);
10
+ p && e.length !== S && (z(e.length), n(1));
11
+ const g = Math.ceil(o / a), i = Math.min(Math.max(1, s), Math.max(1, g)), r = (i - 1) * a, u = Math.min(r + a, o), C = L(() => c ? e : e.slice(r, u), [e, r, u, c]), m = (t) => {
12
+ const I = Math.max(1, Math.min(t, g));
13
+ n(I);
14
+ }, v = () => {
15
+ s < g && n((t) => t + 1);
16
+ }, D = () => {
17
+ s > 1 && n((t) => t - 1);
18
+ }, l = (t) => {
19
+ x(t), n(1);
20
+ }, M = {
21
+ currentPage: i,
22
+ pageSize: a,
23
+ totalItems: o,
24
+ onPageChange: m,
25
+ onPageSizeChange: l
26
+ }, d = b(M);
27
+ return {
28
+ currentPage: i,
29
+ pageSize: a,
30
+ totalItems: o,
31
+ totalPages: g,
32
+ paginatedData: C,
33
+ goToPage: m,
34
+ nextPage: v,
35
+ prevPage: D,
36
+ setPageSize: l,
37
+ paginationConfig: M,
38
+ metadata: d
39
+ };
40
+ }
41
+ export {
42
+ k as useTablePagination
43
+ };
44
+ //# sourceMappingURL=use-table-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-table-pagination.js","sources":["../../src/hooks/use-table-pagination.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { PaginationConfig, PaginationMetadata, calculatePaginationMetadata } from \"../components/ui/data/table-types\";\n\ninterface UseTablePaginationProps<T> {\n /** Array of items to be paginated */\n data: T[];\n /** Initial page size */\n initialPageSize?: number;\n /** Whether to reset to first page when data changes */\n resetOnDataChange?: boolean;\n /** Total items from server (for server-side pagination) */\n serverSideTotalItems?: number;\n}\n\ninterface UseTablePaginationReturn<T> {\n /** Current page number (1-indexed) */\n currentPage: number;\n /** Current page size */\n pageSize: number;\n /** Total number of items in the data array */\n totalItems: number;\n /** Total number of pages */\n totalPages: number;\n /** The subset of data for the current page */\n paginatedData: T[];\n /** Go to specific page */\n goToPage: (page: number) => void;\n /** Go to next page if available */\n nextPage: () => void;\n /** Go to previous page if available */\n prevPage: () => void;\n /** Change page size and reset to first page */\n setPageSize: (size: number) => void;\n /** Computed metadata usually needed for TablePagination component */\n paginationConfig: PaginationConfig;\n /** Full metadata including hasNext/hasPrev */\n metadata: PaginationMetadata;\n}\n\n/**\n * Hook to manage pagination state and logic for tables.\n * \n * @example\n * ```tsx\n * const { paginatedData, paginationConfig, goToPage, setPageSize } = useTablePagination({\n * data: allUsers,\n * initialPageSize: 10\n * });\n * \n * return (\n * <>\n * <Table data={paginatedData} />\n * <TablePagination \n * {...paginationConfig} \n * onPageChange={goToPage}\n * onPageSizeChange={setPageSize}\n * />\n * </>\n * )\n * ```\n */\nexport function useTablePagination<T>({\n data,\n initialPageSize = 10,\n resetOnDataChange = true,\n serverSideTotalItems\n}: UseTablePaginationProps<T>): UseTablePaginationReturn<T> {\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n // Server-side mode: usa total do servidor, senão usa length local\n const isServerMode = serverSideTotalItems !== undefined;\n const totalItems = isServerMode ? serverSideTotalItems : data.length;\n\n // Volta para a primeira página quando a quantidade de itens muda (ex.: filtro aplicado).\n // Ajuste de estado durante o render (padrão \"You Might Not Need an Effect\") em vez de\n // um useEffect com `data.length` só no array de deps — que disparava o warning\n // react-hooks/exhaustive-deps por não usar `data` no corpo.\n const [prevDataLength, setPrevDataLength] = useState(data.length);\n if (resetOnDataChange && data.length !== prevDataLength) {\n setPrevDataLength(data.length);\n setCurrentPage(1);\n }\n\n const totalPages = Math.ceil(totalItems / pageSize);\n\n // Ensure current page is valid\n const safeCurrentPage = Math.min(Math.max(1, currentPage), Math.max(1, totalPages));\n\n // Calculate slice indices (apenas para client-side)\n const startIndex = (safeCurrentPage - 1) * pageSize;\n const endIndex = Math.min(startIndex + pageSize, totalItems);\n\n // Get current page data\n // Server-side: data já vem paginado, retornar como está\n // Client-side: fazer slice\n const paginatedData = useMemo(() => {\n return isServerMode ? data : data.slice(startIndex, endIndex);\n }, [data, startIndex, endIndex, isServerMode]);\n\n const goToPage = (page: number) => {\n const targetPage = Math.max(1, Math.min(page, totalPages));\n setCurrentPage(targetPage);\n };\n\n const nextPage = () => {\n if (currentPage < totalPages) {\n setCurrentPage(p => p + 1);\n }\n };\n\n const prevPage = () => {\n if (currentPage > 1) {\n setCurrentPage(p => p - 1);\n }\n };\n\n const handleSetPageSize = (newSize: number) => {\n setPageSize(newSize);\n setCurrentPage(1); // Usually best UX to reset to page 1 on size change\n };\n\n const paginationConfig: PaginationConfig = {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n onPageChange: goToPage,\n onPageSizeChange: handleSetPageSize\n };\n\n const metadata = calculatePaginationMetadata(paginationConfig);\n\n return {\n currentPage: safeCurrentPage,\n pageSize,\n totalItems,\n totalPages,\n paginatedData,\n goToPage,\n nextPage,\n prevPage,\n setPageSize: handleSetPageSize,\n paginationConfig,\n metadata\n };\n}\n"],"names":["useTablePagination","data","initialPageSize","resetOnDataChange","serverSideTotalItems","currentPage","setCurrentPage","useState","pageSize","setPageSize","isServerMode","totalItems","prevDataLength","setPrevDataLength","totalPages","safeCurrentPage","startIndex","endIndex","paginatedData","useMemo","goToPage","page","targetPage","nextPage","p","prevPage","handleSetPageSize","newSize","paginationConfig","metadata","calculatePaginationMetadata"],"mappings":";;AA6DO,SAASA,EAAsB;AAAA,EAClC,MAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,mBAAAC,IAAoB;AAAA,EACpB,sBAAAC;AACJ,GAA4D;AACxD,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAS,CAAC,GAC1C,CAACC,GAAUC,CAAW,IAAIF,EAASL,CAAe,GAGlDQ,IAAeN,MAAyB,QACxCO,IAAaD,IAAeN,IAAuBH,EAAK,QAMxD,CAACW,GAAgBC,CAAiB,IAAIN,EAASN,EAAK,MAAM;AAChE,EAAIE,KAAqBF,EAAK,WAAWW,MACrCC,EAAkBZ,EAAK,MAAM,GAC7BK,EAAe,CAAC;AAGpB,QAAMQ,IAAa,KAAK,KAAKH,IAAaH,CAAQ,GAG5CO,IAAkB,KAAK,IAAI,KAAK,IAAI,GAAGV,CAAW,GAAG,KAAK,IAAI,GAAGS,CAAU,CAAC,GAG5EE,KAAcD,IAAkB,KAAKP,GACrCS,IAAW,KAAK,IAAID,IAAaR,GAAUG,CAAU,GAKrDO,IAAgBC,EAAQ,MACnBT,IAAeT,IAAOA,EAAK,MAAMe,GAAYC,CAAQ,GAC7D,CAAChB,GAAMe,GAAYC,GAAUP,CAAY,CAAC,GAEvCU,IAAW,CAACC,MAAiB;AAC/B,UAAMC,IAAa,KAAK,IAAI,GAAG,KAAK,IAAID,GAAMP,CAAU,CAAC;AACzD,IAAAR,EAAegB,CAAU;AAAA,EAC7B,GAEMC,IAAW,MAAM;AACnB,IAAIlB,IAAcS,KACdR,EAAe,CAAAkB,MAAKA,IAAI,CAAC;AAAA,EAEjC,GAEMC,IAAW,MAAM;AACnB,IAAIpB,IAAc,KACdC,EAAe,CAAAkB,MAAKA,IAAI,CAAC;AAAA,EAEjC,GAEME,IAAoB,CAACC,MAAoB;AAC3C,IAAAlB,EAAYkB,CAAO,GACnBrB,EAAe,CAAC;AAAA,EACpB,GAEMsB,IAAqC;AAAA,IACvC,aAAab;AAAA,IACb,UAAAP;AAAA,IACA,YAAAG;AAAA,IACA,cAAcS;AAAA,IACd,kBAAkBM;AAAA,EAAA,GAGhBG,IAAWC,EAA4BF,CAAgB;AAE7D,SAAO;AAAA,IACH,aAAab;AAAA,IACb,UAAAP;AAAA,IACA,YAAAG;AAAA,IACA,YAAAG;AAAA,IACA,eAAAI;AAAA,IACA,UAAAE;AAAA,IACA,UAAAG;AAAA,IACA,UAAAE;AAAA,IACA,aAAaC;AAAA,IACb,kBAAAE;AAAA,IACA,UAAAC;AAAA,EAAA;AAER;"}