@iclips/ui 1.4.13 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (686) 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 +71 -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 +197 -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 +303 -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 +261 -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/utils.cjs +2 -0
  430. package/dist/components/ui/utils.cjs.map +1 -0
  431. package/dist/components/ui/utils.js +20 -0
  432. package/dist/components/ui/utils.js.map +1 -0
  433. package/dist/editor.cjs +2 -0
  434. package/dist/editor.cjs.map +1 -0
  435. package/dist/editor.d.cts +114 -0
  436. package/dist/editor.d.ts +114 -0
  437. package/dist/editor.js +12 -0
  438. package/dist/editor.js.map +1 -0
  439. package/dist/hooks/use-data-table-filters.cjs +2 -0
  440. package/dist/hooks/use-data-table-filters.cjs.map +1 -0
  441. package/dist/hooks/use-data-table-filters.js +118 -0
  442. package/dist/hooks/use-data-table-filters.js.map +1 -0
  443. package/dist/hooks/use-data-table.cjs +2 -0
  444. package/dist/hooks/use-data-table.cjs.map +1 -0
  445. package/dist/hooks/use-data-table.js +84 -0
  446. package/dist/hooks/use-data-table.js.map +1 -0
  447. package/dist/hooks/use-mobile.cjs +2 -0
  448. package/dist/hooks/use-mobile.cjs.map +1 -0
  449. package/dist/hooks/use-mobile.js +17 -0
  450. package/dist/hooks/use-mobile.js.map +1 -0
  451. package/dist/hooks/use-table-pagination.cjs +2 -0
  452. package/dist/hooks/use-table-pagination.cjs.map +1 -0
  453. package/dist/hooks/use-table-pagination.js +44 -0
  454. package/dist/hooks/use-table-pagination.js.map +1 -0
  455. package/dist/index.cjs +1 -242
  456. package/dist/index.cjs.map +1 -1
  457. package/dist/index.css +1 -1
  458. package/dist/index.d.cts +2918 -0
  459. package/dist/index.d.ts +2918 -149
  460. package/dist/index.js +375 -63715
  461. package/dist/index.js.map +1 -1
  462. package/dist/preset.css +352 -0
  463. package/dist/toast-theme.css +100 -0
  464. package/dist/tokens.css +471 -0
  465. package/package.json +144 -45
  466. package/scripts/codemod-v2-renames.mjs +101 -0
  467. package/scripts/codemod-v2-toast.mjs +84 -0
  468. package/dist/components/figma/ImageWithFallback.d.ts +0 -3
  469. package/dist/components/figma/ImageWithFallback.d.ts.map +0 -1
  470. package/dist/components/print-templates/ContractTemplate.d.ts +0 -89
  471. package/dist/components/print-templates/ContractTemplate.d.ts.map +0 -1
  472. package/dist/components/print-templates/ProposalTemplate.d.ts +0 -41
  473. package/dist/components/print-templates/ProposalTemplate.d.ts.map +0 -1
  474. package/dist/components/print-templates/index.d.ts +0 -22
  475. package/dist/components/print-templates/index.d.ts.map +0 -1
  476. package/dist/components/print-templates/shared/PrintFooter.d.ts +0 -21
  477. package/dist/components/print-templates/shared/PrintFooter.d.ts.map +0 -1
  478. package/dist/components/print-templates/shared/PrintHeader.d.ts +0 -38
  479. package/dist/components/print-templates/shared/PrintHeader.d.ts.map +0 -1
  480. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts +0 -22
  481. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts.map +0 -1
  482. package/dist/components/print-templates/shared/PrintSection.d.ts +0 -29
  483. package/dist/components/print-templates/shared/PrintSection.d.ts.map +0 -1
  484. package/dist/components/print-templates/shared/PrintSignature.d.ts +0 -27
  485. package/dist/components/print-templates/shared/PrintSignature.d.ts.map +0 -1
  486. package/dist/components/print-templates/shared/PrintTable.d.ts +0 -44
  487. package/dist/components/print-templates/shared/PrintTable.d.ts.map +0 -1
  488. package/dist/components/timeline-demo.d.ts +0 -3
  489. package/dist/components/timeline-demo.d.ts.map +0 -1
  490. package/dist/components/ui/accordion.d.ts +0 -8
  491. package/dist/components/ui/accordion.d.ts.map +0 -1
  492. package/dist/components/ui/advanced-data-table.d.ts +0 -100
  493. package/dist/components/ui/advanced-data-table.d.ts.map +0 -1
  494. package/dist/components/ui/alert-dialog.d.ts +0 -15
  495. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  496. package/dist/components/ui/alert-toast.d.ts +0 -11
  497. package/dist/components/ui/alert-toast.d.ts.map +0 -1
  498. package/dist/components/ui/alert.d.ts +0 -10
  499. package/dist/components/ui/alert.d.ts.map +0 -1
  500. package/dist/components/ui/app-layout-primary-nav.d.ts +0 -30
  501. package/dist/components/ui/app-layout-primary-nav.d.ts.map +0 -1
  502. package/dist/components/ui/app-layout-secondary-nav.d.ts +0 -34
  503. package/dist/components/ui/app-layout-secondary-nav.d.ts.map +0 -1
  504. package/dist/components/ui/app-layout-user-menu.d.ts +0 -28
  505. package/dist/components/ui/app-layout-user-menu.d.ts.map +0 -1
  506. package/dist/components/ui/aspect-ratio.d.ts +0 -4
  507. package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
  508. package/dist/components/ui/auth-layout.d.ts +0 -28
  509. package/dist/components/ui/auth-layout.d.ts.map +0 -1
  510. package/dist/components/ui/avatar.d.ts +0 -21
  511. package/dist/components/ui/avatar.d.ts.map +0 -1
  512. package/dist/components/ui/badge.d.ts +0 -18
  513. package/dist/components/ui/badge.d.ts.map +0 -1
  514. package/dist/components/ui/brand-logo.d.ts +0 -7
  515. package/dist/components/ui/brand-logo.d.ts.map +0 -1
  516. package/dist/components/ui/breadcrumb.d.ts +0 -12
  517. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  518. package/dist/components/ui/button.d.ts +0 -15
  519. package/dist/components/ui/button.d.ts.map +0 -1
  520. package/dist/components/ui/calendar.d.ts +0 -31
  521. package/dist/components/ui/calendar.d.ts.map +0 -1
  522. package/dist/components/ui/card.d.ts +0 -10
  523. package/dist/components/ui/card.d.ts.map +0 -1
  524. package/dist/components/ui/carousel.d.ts +0 -20
  525. package/dist/components/ui/carousel.d.ts.map +0 -1
  526. package/dist/components/ui/chart.d.ts +0 -45
  527. package/dist/components/ui/chart.d.ts.map +0 -1
  528. package/dist/components/ui/checkbox.d.ts +0 -5
  529. package/dist/components/ui/checkbox.d.ts.map +0 -1
  530. package/dist/components/ui/collapsible.d.ts +0 -6
  531. package/dist/components/ui/collapsible.d.ts.map +0 -1
  532. package/dist/components/ui/color-picker.d.ts +0 -13
  533. package/dist/components/ui/color-picker.d.ts.map +0 -1
  534. package/dist/components/ui/combobox.d.ts +0 -118
  535. package/dist/components/ui/combobox.d.ts.map +0 -1
  536. package/dist/components/ui/command.d.ts +0 -17
  537. package/dist/components/ui/command.d.ts.map +0 -1
  538. package/dist/components/ui/comment-system.d.ts +0 -43
  539. package/dist/components/ui/comment-system.d.ts.map +0 -1
  540. package/dist/components/ui/context-menu.d.ts +0 -26
  541. package/dist/components/ui/context-menu.d.ts.map +0 -1
  542. package/dist/components/ui/contract-print.d.ts +0 -82
  543. package/dist/components/ui/contract-print.d.ts.map +0 -1
  544. package/dist/components/ui/currency-input.d.ts +0 -11
  545. package/dist/components/ui/currency-input.d.ts.map +0 -1
  546. package/dist/components/ui/data-table.d.ts +0 -30
  547. package/dist/components/ui/data-table.d.ts.map +0 -1
  548. package/dist/components/ui/date-picker.d.ts +0 -111
  549. package/dist/components/ui/date-picker.d.ts.map +0 -1
  550. package/dist/components/ui/date-range-picker.d.ts +0 -128
  551. package/dist/components/ui/date-range-picker.d.ts.map +0 -1
  552. package/dist/components/ui/dialog.d.ts +0 -14
  553. package/dist/components/ui/dialog.d.ts.map +0 -1
  554. package/dist/components/ui/document-editor.d.ts +0 -14
  555. package/dist/components/ui/document-editor.d.ts.map +0 -1
  556. package/dist/components/ui/donut-chart.d.ts +0 -32
  557. package/dist/components/ui/donut-chart.d.ts.map +0 -1
  558. package/dist/components/ui/drawer.d.ts +0 -14
  559. package/dist/components/ui/drawer.d.ts.map +0 -1
  560. package/dist/components/ui/dropdown-menu.d.ts +0 -26
  561. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  562. package/dist/components/ui/editable-badge.d.ts +0 -98
  563. package/dist/components/ui/editable-badge.d.ts.map +0 -1
  564. package/dist/components/ui/editorial-calendar.d.ts +0 -22
  565. package/dist/components/ui/editorial-calendar.d.ts.map +0 -1
  566. package/dist/components/ui/empty-state.d.ts +0 -59
  567. package/dist/components/ui/empty-state.d.ts.map +0 -1
  568. package/dist/components/ui/filter-bar.d.ts +0 -16
  569. package/dist/components/ui/filter-bar.d.ts.map +0 -1
  570. package/dist/components/ui/filter-builder.d.ts +0 -39
  571. package/dist/components/ui/filter-builder.d.ts.map +0 -1
  572. package/dist/components/ui/filter-chip.d.ts +0 -8
  573. package/dist/components/ui/filter-chip.d.ts.map +0 -1
  574. package/dist/components/ui/form.d.ts +0 -25
  575. package/dist/components/ui/form.d.ts.map +0 -1
  576. package/dist/components/ui/gantt-chart.d.ts +0 -28
  577. package/dist/components/ui/gantt-chart.d.ts.map +0 -1
  578. package/dist/components/ui/hover-card.d.ts +0 -7
  579. package/dist/components/ui/hover-card.d.ts.map +0 -1
  580. package/dist/components/ui/illustrations.d.ts +0 -76
  581. package/dist/components/ui/illustrations.d.ts.map +0 -1
  582. package/dist/components/ui/index.d.ts +0 -91
  583. package/dist/components/ui/index.d.ts.map +0 -1
  584. package/dist/components/ui/input-group.d.ts +0 -19
  585. package/dist/components/ui/input-group.d.ts.map +0 -1
  586. package/dist/components/ui/input-otp.d.ts +0 -12
  587. package/dist/components/ui/input-otp.d.ts.map +0 -1
  588. package/dist/components/ui/input-validation.d.ts +0 -35
  589. package/dist/components/ui/input-validation.d.ts.map +0 -1
  590. package/dist/components/ui/input.d.ts +0 -4
  591. package/dist/components/ui/input.d.ts.map +0 -1
  592. package/dist/components/ui/kanban-card.d.ts +0 -59
  593. package/dist/components/ui/kanban-card.d.ts.map +0 -1
  594. package/dist/components/ui/kanban-generic-card.d.ts +0 -43
  595. package/dist/components/ui/kanban-generic-card.d.ts.map +0 -1
  596. package/dist/components/ui/kpi-card.d.ts +0 -45
  597. package/dist/components/ui/kpi-card.d.ts.map +0 -1
  598. package/dist/components/ui/label.d.ts +0 -5
  599. package/dist/components/ui/label.d.ts.map +0 -1
  600. package/dist/components/ui/lista-anexos-arquivo.d.ts +0 -47
  601. package/dist/components/ui/lista-anexos-arquivo.d.ts.map +0 -1
  602. package/dist/components/ui/mention-list.d.ts +0 -7
  603. package/dist/components/ui/mention-list.d.ts.map +0 -1
  604. package/dist/components/ui/menubar.d.ts +0 -27
  605. package/dist/components/ui/menubar.d.ts.map +0 -1
  606. package/dist/components/ui/month-range-picker.d.ts +0 -71
  607. package/dist/components/ui/month-range-picker.d.ts.map +0 -1
  608. package/dist/components/ui/multi-select.d.ts +0 -98
  609. package/dist/components/ui/multi-select.d.ts.map +0 -1
  610. package/dist/components/ui/navigation-menu.d.ts +0 -15
  611. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  612. package/dist/components/ui/number-input.d.ts +0 -83
  613. package/dist/components/ui/number-input.d.ts.map +0 -1
  614. package/dist/components/ui/page-header.d.ts +0 -32
  615. package/dist/components/ui/page-header.d.ts.map +0 -1
  616. package/dist/components/ui/pagination.d.ts +0 -14
  617. package/dist/components/ui/pagination.d.ts.map +0 -1
  618. package/dist/components/ui/password-input.d.ts +0 -7
  619. package/dist/components/ui/password-input.d.ts.map +0 -1
  620. package/dist/components/ui/popover.d.ts +0 -8
  621. package/dist/components/ui/popover.d.ts.map +0 -1
  622. package/dist/components/ui/progress-timeline.d.ts +0 -42
  623. package/dist/components/ui/progress-timeline.d.ts.map +0 -1
  624. package/dist/components/ui/progress.d.ts +0 -7
  625. package/dist/components/ui/progress.d.ts.map +0 -1
  626. package/dist/components/ui/radio-group.d.ts +0 -6
  627. package/dist/components/ui/radio-group.d.ts.map +0 -1
  628. package/dist/components/ui/resizable.d.ts +0 -9
  629. package/dist/components/ui/resizable.d.ts.map +0 -1
  630. package/dist/components/ui/saved-filters.d.ts +0 -16
  631. package/dist/components/ui/saved-filters.d.ts.map +0 -1
  632. package/dist/components/ui/scroll-area.d.ts +0 -8
  633. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  634. package/dist/components/ui/select.d.ts +0 -16
  635. package/dist/components/ui/select.d.ts.map +0 -1
  636. package/dist/components/ui/separator.d.ts +0 -5
  637. package/dist/components/ui/separator.d.ts.map +0 -1
  638. package/dist/components/ui/sheet.d.ts +0 -14
  639. package/dist/components/ui/sheet.d.ts.map +0 -1
  640. package/dist/components/ui/side-panel.d.ts +0 -40
  641. package/dist/components/ui/side-panel.d.ts.map +0 -1
  642. package/dist/components/ui/sidebar.d.ts +0 -70
  643. package/dist/components/ui/sidebar.d.ts.map +0 -1
  644. package/dist/components/ui/skeleton.d.ts +0 -8
  645. package/dist/components/ui/skeleton.d.ts.map +0 -1
  646. package/dist/components/ui/slider.d.ts +0 -5
  647. package/dist/components/ui/slider.d.ts.map +0 -1
  648. package/dist/components/ui/social-button.d.ts +0 -13
  649. package/dist/components/ui/social-button.d.ts.map +0 -1
  650. package/dist/components/ui/switch.d.ts +0 -5
  651. package/dist/components/ui/switch.d.ts.map +0 -1
  652. package/dist/components/ui/table-pagination.d.ts +0 -131
  653. package/dist/components/ui/table-pagination.d.ts.map +0 -1
  654. package/dist/components/ui/table-types.d.ts +0 -320
  655. package/dist/components/ui/table-types.d.ts.map +0 -1
  656. package/dist/components/ui/table.d.ts +0 -34
  657. package/dist/components/ui/table.d.ts.map +0 -1
  658. package/dist/components/ui/tabs.d.ts +0 -8
  659. package/dist/components/ui/tabs.d.ts.map +0 -1
  660. package/dist/components/ui/task-edit-dialog.d.ts +0 -15
  661. package/dist/components/ui/task-edit-dialog.d.ts.map +0 -1
  662. package/dist/components/ui/textarea.d.ts +0 -4
  663. package/dist/components/ui/textarea.d.ts.map +0 -1
  664. package/dist/components/ui/time-picker.d.ts +0 -85
  665. package/dist/components/ui/time-picker.d.ts.map +0 -1
  666. package/dist/components/ui/timeline.d.ts +0 -63
  667. package/dist/components/ui/timeline.d.ts.map +0 -1
  668. package/dist/components/ui/toast.d.ts +0 -5
  669. package/dist/components/ui/toast.d.ts.map +0 -1
  670. package/dist/components/ui/toggle-group.d.ts +0 -8
  671. package/dist/components/ui/toggle-group.d.ts.map +0 -1
  672. package/dist/components/ui/toggle.d.ts +0 -10
  673. package/dist/components/ui/toggle.d.ts.map +0 -1
  674. package/dist/components/ui/tooltip.d.ts +0 -8
  675. package/dist/components/ui/tooltip.d.ts.map +0 -1
  676. package/dist/components/ui/underline-tabs.d.ts +0 -29
  677. package/dist/components/ui/underline-tabs.d.ts.map +0 -1
  678. package/dist/components/ui/use-mobile.d.ts +0 -2
  679. package/dist/components/ui/use-mobile.d.ts.map +0 -1
  680. package/dist/components/ui/use-print-contract.d.ts +0 -37
  681. package/dist/components/ui/use-print-contract.d.ts.map +0 -1
  682. package/dist/components/ui/utils.d.ts +0 -3
  683. package/dist/components/ui/utils.d.ts.map +0 -1
  684. package/dist/components/ui/zona-upload-arquivo.d.ts +0 -34
  685. package/dist/components/ui/zona-upload-arquivo.d.ts.map +0 -1
  686. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1,303 @@
1
+ "use client";
2
+ import { jsxs as f, jsx as i } from "react/jsx-runtime";
3
+ import * as c from "react";
4
+ import { format as x, subDays as A, startOfMonth as F, endOfMonth as et, subMonths as K, parse as ot, isValid as it } from "date-fns";
5
+ import { ptBR as mt } from "date-fns/locale";
6
+ import { X as ft, CalendarIcon as nt } from "lucide-react";
7
+ import { cn as ct } from "../utils.js";
8
+ import { Input as dt } from "./input.js";
9
+ import { Button as y } from "../primitives/button.js";
10
+ import { Calendar as lt } from "./calendar.js";
11
+ import { TimePicker as L } from "./time-picker.js";
12
+ import { Popover as at, PopoverTrigger as pt, PopoverContent as ut } from "../overlays/popover.js";
13
+ const yt = () => {
14
+ const t = /* @__PURE__ */ new Date();
15
+ return t.setHours(0, 0, 0, 0), [
16
+ {
17
+ label: "Hoje",
18
+ value: { from: t, to: t }
19
+ },
20
+ {
21
+ label: "Últimos 7 dias",
22
+ value: { from: A(t, 6), to: t }
23
+ },
24
+ {
25
+ label: "Últimos 30 dias",
26
+ value: { from: A(t, 29), to: t }
27
+ },
28
+ {
29
+ label: "Este mês",
30
+ value: { from: F(t), to: t }
31
+ },
32
+ {
33
+ label: "Mês passado",
34
+ value: {
35
+ from: F(K(t, 1)),
36
+ to: et(K(t, 1))
37
+ }
38
+ }
39
+ ];
40
+ }, bt = c.forwardRef(({
41
+ value: t,
42
+ onChange: e,
43
+ placeholder: T = "Selecione um período",
44
+ disabled: S = !1,
45
+ minDate: b,
46
+ maxDate: N,
47
+ dateFormat: $ = "dd/MM/yyyy",
48
+ locale: l = mt,
49
+ className: X,
50
+ error: R = !1,
51
+ numberOfMonths: q = 2,
52
+ showTime: a = !1,
53
+ timeFormat: j = "24h",
54
+ minuteStep: z = 15,
55
+ presets: E,
56
+ showDefaultPresets: B = !0,
57
+ id: G,
58
+ name: J
59
+ }, Q) => {
60
+ const [U, h] = c.useState(!1), [H, p] = c.useState(""), [w, d] = c.useState(!1), u = a ? `${$} HH:mm` : $, W = c.useMemo(() => a ? [
61
+ "dd/MM/yyyy HH:mm",
62
+ "dd/MM/yy HH:mm",
63
+ "d/M/yyyy HH:mm",
64
+ "d/M/yy HH:mm"
65
+ ] : [
66
+ "dd/MM/yyyy",
67
+ "dd/MM/yy",
68
+ "d/M/yyyy",
69
+ "d/M/yy"
70
+ ], [a]);
71
+ c.useEffect(() => {
72
+ if (t != null && t.from) {
73
+ const r = x(t.from, u, { locale: l }), s = t.to ? x(t.to, u, { locale: l }) : "";
74
+ p(s ? `${r} → ${s}` : r), d(!1);
75
+ } else
76
+ p(""), d(!1);
77
+ }, [t, u, l]);
78
+ const O = c.useMemo(() => [...B ? yt() : [], ...E || []], [E, B]), I = c.useMemo(() => {
79
+ if (!(t != null && t.from)) return "00:00";
80
+ const r = t.from.getHours().toString().padStart(2, "0"), s = t.from.getMinutes().toString().padStart(2, "0");
81
+ return `${r}:${s}`;
82
+ }, [t == null ? void 0 : t.from]), k = c.useMemo(() => {
83
+ if (!(t != null && t.to)) return "23:59";
84
+ const r = t.to.getHours().toString().padStart(2, "0"), s = t.to.getMinutes().toString().padStart(2, "0");
85
+ return `${r}:${s}`;
86
+ }, [t == null ? void 0 : t.to]), Y = (r) => {
87
+ if (!r) {
88
+ e == null || e(void 0);
89
+ return;
90
+ }
91
+ if (a) {
92
+ if (r.from) {
93
+ const [s, m] = I.split(":").map(Number);
94
+ r.from.setHours(s, m, 0, 0);
95
+ }
96
+ if (r.to) {
97
+ const [s, m] = k.split(":").map(Number);
98
+ r.to.setHours(s, m, 0, 0);
99
+ }
100
+ } else
101
+ r.from && r.from.setHours(0, 0, 0, 0), r.to && r.to.setHours(23, 59, 59, 999);
102
+ e == null || e(r);
103
+ }, Z = (r) => {
104
+ if (!(t != null && t.from)) return;
105
+ const s = new Date(t.from), [m, o] = r.split(":").map(Number);
106
+ s.setHours(m, o, 0, 0), e == null || e({ ...t, from: s });
107
+ }, _ = (r) => {
108
+ if (!(t != null && t.to)) return;
109
+ const s = new Date(t.to), [m, o] = r.split(":").map(Number);
110
+ s.setHours(m, o, 0, 0), e == null || e({ ...t, to: s });
111
+ }, g = (r) => {
112
+ const s = {
113
+ from: new Date(r.value.from),
114
+ to: new Date(r.value.to)
115
+ };
116
+ if (a) {
117
+ const [m, o] = I.split(":").map(Number), [n, M] = k.split(":").map(Number);
118
+ s.from.setHours(m, o, 0, 0), s.to.setHours(n, M, 0, 0);
119
+ }
120
+ e == null || e(s);
121
+ }, D = (r) => {
122
+ const s = r.trim();
123
+ if (!s) return null;
124
+ for (const m of W)
125
+ try {
126
+ const o = ot(s, m, /* @__PURE__ */ new Date());
127
+ if (it(o)) {
128
+ if (b && o < b || N && o > N) continue;
129
+ return o;
130
+ }
131
+ } catch {
132
+ continue;
133
+ }
134
+ return null;
135
+ }, v = (r) => {
136
+ const s = r.trim();
137
+ if (!s) return null;
138
+ const m = ["→", "-", "até", "a"];
139
+ let o = null, n = null;
140
+ for (const M of m)
141
+ if (s.includes(M)) {
142
+ const P = s.split(M).map((st) => st.trim());
143
+ if (P.length === 2 && (o = D(P[0]), n = D(P[1]), o && n))
144
+ break;
145
+ }
146
+ return o || (o = D(s), o && (n = new Date(o))), !o || !n ? null : (o > n && ([o, n] = [n, o]), { from: o, to: n });
147
+ }, C = (r) => {
148
+ const s = r.target.value;
149
+ p(s), d(!1);
150
+ }, V = () => {
151
+ if (!H.trim()) {
152
+ e == null || e(void 0), d(!1);
153
+ return;
154
+ }
155
+ const r = v(H);
156
+ r ? (e == null || e(r), d(!1)) : d(!0);
157
+ }, tt = (r) => {
158
+ if (r.key === "Enter")
159
+ r.preventDefault(), V(), w || h(!0);
160
+ else if (r.key === "Escape") {
161
+ if (r.preventDefault(), t != null && t.from) {
162
+ const s = x(t.from, u, { locale: l }), m = t.to ? x(t.to, u, { locale: l }) : "";
163
+ p(m ? `${s} → ${m}` : s);
164
+ } else
165
+ p("");
166
+ d(!1);
167
+ }
168
+ }, rt = (r) => {
169
+ r.stopPropagation(), e == null || e(void 0), p(""), d(!1);
170
+ };
171
+ return /* @__PURE__ */ f(at, { open: U, onOpenChange: h, children: [
172
+ /* @__PURE__ */ f("div", { className: "relative w-full", children: [
173
+ /* @__PURE__ */ i(
174
+ dt,
175
+ {
176
+ ref: Q,
177
+ id: G,
178
+ name: J,
179
+ value: H,
180
+ onChange: C,
181
+ onBlur: V,
182
+ onKeyDown: tt,
183
+ placeholder: T,
184
+ disabled: S,
185
+ "aria-invalid": R || w,
186
+ className: ct(
187
+ "pr-20",
188
+ (R || w) && "border-destructive focus-visible:ring-destructive/20",
189
+ X
190
+ )
191
+ }
192
+ ),
193
+ /* @__PURE__ */ f("div", { className: "absolute inset-y-0 right-0 flex items-center gap-1 pr-1", children: [
194
+ H && !S && /* @__PURE__ */ f(
195
+ y,
196
+ {
197
+ type: "button",
198
+ variant: "ghost",
199
+ size: "sm",
200
+ className: "h-7 w-7 p-0 hover:bg-transparent",
201
+ onClick: rt,
202
+ tabIndex: -1,
203
+ children: [
204
+ /* @__PURE__ */ i(ft, { className: "h-4 w-4 text-muted-foreground hover:text-foreground" }),
205
+ /* @__PURE__ */ i("span", { className: "sr-only", children: "Limpar" })
206
+ ]
207
+ }
208
+ ),
209
+ /* @__PURE__ */ i(pt, { asChild: !0, children: /* @__PURE__ */ i(
210
+ y,
211
+ {
212
+ type: "button",
213
+ variant: "ghost",
214
+ size: "sm",
215
+ className: "h-7 w-7 p-0 hover:bg-transparent",
216
+ disabled: S,
217
+ "aria-label": "Abrir calendário",
218
+ children: /* @__PURE__ */ i(nt, { className: "h-4 w-4 text-muted-foreground" })
219
+ }
220
+ ) })
221
+ ] })
222
+ ] }),
223
+ /* @__PURE__ */ i(ut, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ f("div", { className: "flex", children: [
224
+ O.length > 0 && /* @__PURE__ */ f("div", { className: "border-r p-3 space-y-1 w-32.5", children: [
225
+ /* @__PURE__ */ i("p", { className: "text-xs font-medium text-muted-foreground mb-2", children: "Atalhos" }),
226
+ O.map((r) => /* @__PURE__ */ i(
227
+ y,
228
+ {
229
+ variant: "ghost",
230
+ size: "sm",
231
+ className: "w-full justify-start text-sm h-8 truncate",
232
+ onClick: () => g(r),
233
+ children: /* @__PURE__ */ i("span", { className: "truncate", children: r.label })
234
+ },
235
+ r.label
236
+ ))
237
+ ] }),
238
+ /* @__PURE__ */ f("div", { children: [
239
+ /* @__PURE__ */ i(
240
+ lt,
241
+ {
242
+ mode: "range",
243
+ selected: t,
244
+ onSelect: Y,
245
+ numberOfMonths: q,
246
+ disabled: (r) => !!(b && r < b || N && r > N),
247
+ locale: l,
248
+ autoFocus: !0
249
+ }
250
+ ),
251
+ a && (t == null ? void 0 : t.from) && (t == null ? void 0 : t.to) && /* @__PURE__ */ f("div", { className: "border-t p-3 flex gap-6", children: [
252
+ /* @__PURE__ */ f("div", { className: "flex-1", children: [
253
+ /* @__PURE__ */ i("p", { className: "text-xs font-medium text-muted-foreground mb-2", children: "Hora início" }),
254
+ /* @__PURE__ */ i(
255
+ L,
256
+ {
257
+ value: I,
258
+ onChange: Z,
259
+ format: j,
260
+ minuteStep: z,
261
+ variant: "select",
262
+ showIcon: !1
263
+ }
264
+ )
265
+ ] }),
266
+ /* @__PURE__ */ f("div", { className: "flex-1", children: [
267
+ /* @__PURE__ */ i("p", { className: "text-xs font-medium text-muted-foreground mb-2", children: "Hora fim" }),
268
+ /* @__PURE__ */ i(
269
+ L,
270
+ {
271
+ value: k,
272
+ onChange: _,
273
+ format: j,
274
+ minuteStep: z,
275
+ variant: "select",
276
+ showIcon: !1
277
+ }
278
+ )
279
+ ] })
280
+ ] }),
281
+ /* @__PURE__ */ f("div", { className: "border-t p-3 flex justify-end gap-2", children: [
282
+ /* @__PURE__ */ i(
283
+ y,
284
+ {
285
+ variant: "outline",
286
+ size: "sm",
287
+ onClick: () => {
288
+ e == null || e(void 0);
289
+ },
290
+ children: "Limpar"
291
+ }
292
+ ),
293
+ /* @__PURE__ */ i(y, { size: "sm", onClick: () => h(!1), children: "Confirmar" })
294
+ ] })
295
+ ] })
296
+ ] }) })
297
+ ] });
298
+ });
299
+ bt.displayName = "DateRangePicker";
300
+ export {
301
+ bt as DateRangePicker
302
+ };
303
+ //# sourceMappingURL=date-range-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.js","sources":["../../../../src/components/ui/forms/date-range-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { format, parse, isValid, subDays, startOfMonth, endOfMonth, subMonths, type Locale } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarIcon, X } from \"lucide-react\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\nimport { Button } from \"../primitives/button\";\nimport { Calendar } from \"./calendar\";\nimport { TimePicker } from \"./time-picker\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\n\nexport interface DateRangePreset {\n label: string;\n value: DateRange;\n}\n\nexport interface DateRangePickerProps {\n /**\n * Intervalo de datas selecionado\n */\n value?: DateRange;\n /**\n * Callback quando o intervalo muda\n */\n onChange?: (range: DateRange | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione um período\"\n */\n placeholder?: string;\n /**\n * Desabilita o componente\n */\n disabled?: boolean;\n /**\n * Data mínima permitida\n */\n minDate?: Date;\n /**\n * Data máxima permitida\n */\n maxDate?: Date;\n /**\n * Formato de exibição da data\n * @default \"dd/MM/yyyy\"\n */\n dateFormat?: string;\n /**\n * Locale para formatação\n * @default ptBR\n */\n locale?: Locale;\n /**\n * Classes CSS adicionais para o trigger\n */\n className?: string;\n /**\n * Estado de erro\n */\n error?: boolean;\n /**\n * Número de meses a exibir\n * @default 2\n */\n numberOfMonths?: 1 | 2;\n /**\n * Mostra seletor de hora\n * @default false\n */\n showTime?: boolean;\n /**\n * Formato de hora (12h ou 24h)\n * @default \"24h\"\n */\n timeFormat?: \"12h\" | \"24h\";\n /**\n * Incremento de minutos\n * @default 15\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Presets de intervalos rápidos\n */\n presets?: DateRangePreset[];\n /**\n * Mostra presets padrão (Hoje, Últimos 7 dias, etc.)\n * @default true\n */\n showDefaultPresets?: boolean;\n /**\n * ID do campo para acessibilidade\n */\n id?: string;\n /**\n * Nome do campo para formulários\n */\n name?: string;\n}\n\n// Presets padrão\nconst getDefaultPresets = (): DateRangePreset[] => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n return [\n {\n label: \"Hoje\",\n value: { from: today, to: today },\n },\n {\n label: \"Últimos 7 dias\",\n value: { from: subDays(today, 6), to: today },\n },\n {\n label: \"Últimos 30 dias\",\n value: { from: subDays(today, 29), to: today },\n },\n {\n label: \"Este mês\",\n value: { from: startOfMonth(today), to: today },\n },\n {\n label: \"Mês passado\",\n value: {\n from: startOfMonth(subMonths(today, 1)),\n to: endOfMonth(subMonths(today, 1)),\n },\n },\n ];\n};\n\n/**\n * DateRangePicker - Campo de seleção de intervalo de datas com hora opcional\n *\n * @example\n * // Básico\n * <DateRangePicker\n * value={dateRange}\n * onChange={setDateRange}\n * placeholder=\"Período do relatório\"\n * />\n *\n * @example\n * // Com hora\n * <DateRangePicker\n * value={booking}\n * onChange={setBooking}\n * placeholder=\"Reserva da sala\"\n * showTime\n * minuteStep={30}\n * />\n *\n * @example\n * // Com presets customizados\n * <DateRangePicker\n * value={period}\n * onChange={setPeriod}\n * presets={[\n * { label: \"Q1\", value: { from: q1Start, to: q1End } },\n * { label: \"Q2\", value: { from: q2Start, to: q2End } },\n * ]}\n * />\n */\nconst DateRangePicker = React.forwardRef<\n React.ElementRef<typeof Input>,\n DateRangePickerProps\n>(({\n value,\n onChange,\n placeholder = \"Selecione um período\",\n disabled = false,\n minDate,\n maxDate,\n dateFormat = \"dd/MM/yyyy\",\n locale = ptBR,\n className,\n error = false,\n numberOfMonths = 2,\n showTime = false,\n timeFormat = \"24h\",\n minuteStep = 15,\n presets,\n showDefaultPresets = true,\n id,\n name,\n}, ref) => {\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const [isInvalid, setIsInvalid] = React.useState(false);\n\n // Formato com hora se necessário\n const displayFormat = showTime ? `${dateFormat} HH:mm` : dateFormat;\n \n // Formatos aceitos para parsing\n const parseFormats = React.useMemo(() => {\n if (showTime) {\n return [\n \"dd/MM/yyyy HH:mm\",\n \"dd/MM/yy HH:mm\",\n \"d/M/yyyy HH:mm\",\n \"d/M/yy HH:mm\",\n ];\n }\n return [\n \"dd/MM/yyyy\",\n \"dd/MM/yy\",\n \"d/M/yyyy\",\n \"d/M/yy\",\n ];\n }, [showTime]);\n\n // Sincroniza inputValue com value\n React.useEffect(() => {\n if (value?.from) {\n const fromStr = format(value.from, displayFormat, { locale });\n const toStr = value.to ? format(value.to, displayFormat, { locale }) : \"\";\n setInputValue(toStr ? `${fromStr} → ${toStr}` : fromStr);\n setIsInvalid(false);\n } else {\n setInputValue(\"\");\n setIsInvalid(false);\n }\n }, [value, displayFormat, locale]);\n\n // Combina presets padrão com customizados\n const allPresets = React.useMemo(() => {\n const defaults = showDefaultPresets ? getDefaultPresets() : [];\n return [...defaults, ...(presets || [])];\n }, [presets, showDefaultPresets]);\n\n // Extrai hora do valor atual\n const startTime = React.useMemo(() => {\n if (!value?.from) return \"00:00\";\n const h = value.from.getHours().toString().padStart(2, \"0\");\n const m = value.from.getMinutes().toString().padStart(2, \"0\");\n return `${h}:${m}`;\n }, [value?.from]);\n\n const endTime = React.useMemo(() => {\n if (!value?.to) return \"23:59\";\n const h = value.to.getHours().toString().padStart(2, \"0\");\n const m = value.to.getMinutes().toString().padStart(2, \"0\");\n return `${h}:${m}`;\n }, [value?.to]);\n\n // Handler para seleção de data\n const handleDateSelect = (range: DateRange | undefined) => {\n if (!range) {\n onChange?.(undefined);\n return;\n }\n\n // Se showTime, preserva os horários existentes\n if (showTime) {\n if (range.from) {\n const [h, m] = startTime.split(\":\").map(Number);\n range.from.setHours(h, m, 0, 0);\n }\n if (range.to) {\n const [h, m] = endTime.split(\":\").map(Number);\n range.to.setHours(h, m, 0, 0);\n }\n } else {\n // Sem hora, usa início e fim do dia\n if (range.from) range.from.setHours(0, 0, 0, 0);\n if (range.to) range.to.setHours(23, 59, 59, 999);\n }\n\n onChange?.(range);\n };\n\n // Handler para mudança de hora início\n const handleStartTimeChange = (time: string) => {\n if (!value?.from) return;\n\n const newFrom = new Date(value.from);\n const [h, m] = time.split(\":\").map(Number);\n newFrom.setHours(h, m, 0, 0);\n\n onChange?.({ ...value, from: newFrom });\n };\n\n // Handler para mudança de hora fim\n const handleEndTimeChange = (time: string) => {\n if (!value?.to) return;\n\n const newTo = new Date(value.to);\n const [h, m] = time.split(\":\").map(Number);\n newTo.setHours(h, m, 0, 0);\n\n onChange?.({ ...value, to: newTo });\n };\n\n // Handler para presets\n const handlePresetSelect = (preset: DateRangePreset) => {\n const newRange = {\n from: new Date(preset.value.from!),\n to: new Date(preset.value.to!),\n };\n\n if (showTime) {\n const [sh, sm] = startTime.split(\":\").map(Number);\n const [eh, em] = endTime.split(\":\").map(Number);\n newRange.from.setHours(sh, sm, 0, 0);\n newRange.to.setHours(eh, em, 0, 0);\n }\n\n onChange?.(newRange);\n };\n\n // Parse de data individual\n const parseSingleDate = (input: string): Date | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n for (const fmt of parseFormats) {\n try {\n const parsed = parse(trimmed, fmt, new Date());\n if (isValid(parsed)) {\n if (minDate && parsed < minDate) continue;\n if (maxDate && parsed > maxDate) continue;\n return parsed;\n }\n } catch {\n continue;\n }\n }\n return null;\n };\n\n // Parse do intervalo digitado\n const parseInputRange = (input: string): DateRange | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n // Separa por → ou -\n const separators = [\"→\", \"-\", \"até\", \"a\"];\n let from: Date | null = null;\n let to: Date | null = null;\n\n for (const sep of separators) {\n if (trimmed.includes(sep)) {\n const parts = trimmed.split(sep).map(p => p.trim());\n if (parts.length === 2) {\n from = parseSingleDate(parts[0]);\n to = parseSingleDate(parts[1]);\n if (from && to) break;\n }\n }\n }\n\n // Se não encontrou separador, tenta parsear como data única\n if (!from) {\n from = parseSingleDate(trimmed);\n if (from) {\n to = new Date(from); // Mesmo dia\n }\n }\n\n if (!from || !to) return null;\n\n // Garante que from <= to\n if (from > to) {\n [from, to] = [to, from];\n }\n\n return { from, to };\n };\n\n // Handler para input digitado\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n setIsInvalid(false);\n };\n\n // Handler para blur do input\n const handleInputBlur = () => {\n if (!inputValue.trim()) {\n onChange?.(undefined);\n setIsInvalid(false);\n return;\n }\n\n const parsed = parseInputRange(inputValue);\n if (parsed) {\n onChange?.(parsed);\n setIsInvalid(false);\n } else {\n setIsInvalid(true);\n }\n };\n\n // Handler para Enter\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleInputBlur();\n if (!isInvalid) {\n setOpen(true);\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n if (value?.from) {\n const fromStr = format(value.from, displayFormat, { locale });\n const toStr = value.to ? format(value.to, displayFormat, { locale }) : \"\";\n setInputValue(toStr ? `${fromStr} → ${toStr}` : fromStr);\n } else {\n setInputValue(\"\");\n }\n setIsInvalid(false);\n }\n };\n\n // Handler para limpar\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(undefined);\n setInputValue(\"\");\n setIsInvalid(false);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <div className=\"relative w-full\">\n <Input\n ref={ref}\n id={id}\n name={name}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n aria-invalid={error || isInvalid}\n className={cn(\n \"pr-20\",\n (error || isInvalid) && \"border-destructive focus-visible:ring-destructive/20\",\n className\n )}\n />\n <div className=\"absolute inset-y-0 right-0 flex items-center gap-1 pr-1\">\n {inputValue && !disabled && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 hover:bg-transparent\"\n onClick={handleClear}\n tabIndex={-1}\n >\n <X className=\"h-4 w-4 text-muted-foreground hover:text-foreground\" />\n <span className=\"sr-only\">Limpar</span>\n </Button>\n )}\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 hover:bg-transparent\"\n disabled={disabled}\n aria-label=\"Abrir calendário\"\n >\n <CalendarIcon className=\"h-4 w-4 text-muted-foreground\" />\n </Button>\n </PopoverTrigger>\n </div>\n </div>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <div className=\"flex\">\n {/* Presets sidebar */}\n {allPresets.length > 0 && (\n <div className=\"border-r p-3 space-y-1 w-32.5\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Atalhos\n </p>\n {allPresets.map((preset) => (\n <Button\n key={preset.label}\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start text-sm h-8 truncate\"\n onClick={() => handlePresetSelect(preset)}\n >\n <span className=\"truncate\">{preset.label}</span>\n </Button>\n ))}\n </div>\n )}\n\n {/* Calendário */}\n <div>\n <Calendar\n mode=\"range\"\n selected={value}\n onSelect={handleDateSelect}\n numberOfMonths={numberOfMonths}\n disabled={(date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n }}\n locale={locale}\n autoFocus\n />\n\n {/* Time pickers */}\n {showTime && value?.from && value?.to && (\n <div className=\"border-t p-3 flex gap-6\">\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Hora início\n </p>\n <TimePicker\n value={startTime}\n onChange={handleStartTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"select\"\n showIcon={false}\n />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Hora fim\n </p>\n <TimePicker\n value={endTime}\n onChange={handleEndTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"select\"\n showIcon={false}\n />\n </div>\n </div>\n )}\n\n {/* Footer */}\n <div className=\"border-t p-3 flex justify-end gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n onChange?.(undefined);\n }}\n >\n Limpar\n </Button>\n <Button size=\"sm\" onClick={() => setOpen(false)}>\n Confirmar\n </Button>\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n});\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n"],"names":["getDefaultPresets","today","subDays","startOfMonth","subMonths","endOfMonth","DateRangePicker","React","value","onChange","placeholder","disabled","minDate","maxDate","dateFormat","locale","ptBR","className","error","numberOfMonths","showTime","timeFormat","minuteStep","presets","showDefaultPresets","id","name","ref","open","setOpen","inputValue","setInputValue","isInvalid","setIsInvalid","displayFormat","parseFormats","fromStr","format","toStr","allPresets","startTime","h","m","endTime","handleDateSelect","range","handleStartTimeChange","time","newFrom","handleEndTimeChange","newTo","handlePresetSelect","preset","newRange","sh","sm","eh","em","parseSingleDate","input","trimmed","fmt","parsed","parse","isValid","parseInputRange","separators","from","to","sep","parts","p","handleInputChange","e","newValue","handleInputBlur","handleInputKeyDown","handleClear","jsxs","Popover","jsx","Input","cn","Button","X","PopoverTrigger","CalendarIcon","PopoverContent","Calendar","date","TimePicker"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),K=require("react"),m=require("../primitives/badge.cjs"),f=require("../overlays/dropdown-menu.cjs"),d=require("../overlays/dialog.cjs"),E=require("../primitives/button.cjs"),p=require("../utils.cjs"),R=require("lucide-react");function O(l){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const r in l)if(r!=="default"){const c=Object.getOwnPropertyDescriptor(l,r);Object.defineProperty(t,r,c.get?c:{enumerable:!0,get:()=>l[r]})}}return t.default=l,Object.freeze(t)}const n=O(K);function Q({value:l,options:t,onValueChange:r,onCancel:c,disabled:I=!1,variant:g="default",confirmTitle:P="Confirmar alteração",confirmDescription:F="Tem certeza que deseja alterar este valor?",confirmButtonText:_="Confirmar",cancelButtonText:z="Cancelar",skipConfirmation:v=!1,isLoading:h=!1,renderValue:x,className:C,...y},w){const[i,j]=n.useState(null),[H,u]=n.useState(!1),[V,b]=n.useState(!1),[N,S]=n.useState(!1),a=n.useMemo(()=>t.find(s=>s.value===l),[t,l]),o=n.useMemo(()=>i!=null?t.find(s=>s.value===i):null,[t,i]),A=n.useCallback(s=>{if(s===l){b(!1);return}j(s),b(!1),v?B(s):u(!0)},[l,v]),B=n.useCallback(async s=>{const D=s??i;if(D!=null){S(!0);try{await r(D),u(!1),j(null)}catch(J){console.error("Error confirming value change:",J)}finally{S(!1)}}},[i,r]),G=n.useCallback(()=>{u(!1),j(null),c==null||c()},[c]),q=n.useCallback(()=>x&&a?x(l,a):a?e.jsxs(e.Fragment,{children:[a.icon,a.label]}):l,[x,l,a]),M=(a==null?void 0:a.variant)||g,k=a==null?void 0:a.className;return I?e.jsx("div",{ref:w,className:p.cn("inline-flex",C),...y,children:e.jsx(m.Badge,{variant:M,className:k,children:q()})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:w,className:p.cn("inline-flex",C),...y,children:e.jsxs(f.DropdownMenu,{open:V,onOpenChange:b,children:[e.jsx(f.DropdownMenuTrigger,{asChild:!0,disabled:h,children:e.jsxs("button",{type:"button",className:p.cn(m.badgeVariants({variant:M}),"cursor-pointer hover:opacity-80 transition-opacity gap-1.5",h&&"opacity-50 cursor-not-allowed",k),children:[q(),!h&&e.jsx(R.ChevronDown,{className:"h-3 w-3"})]})}),e.jsx(f.DropdownMenuContent,{align:"start",className:"w-48",children:t.map(s=>e.jsxs(f.DropdownMenuItem,{onClick:()=>A(s.value),className:"gap-2",children:[s.icon&&e.jsx("span",{className:"w-4 h-4",children:s.icon}),e.jsx("span",{className:"flex-1",children:s.label}),s.value===l&&e.jsx(R.Check,{className:"h-4 w-4 text-primary"})]},String(s.value)))})]})}),e.jsx(d.Dialog,{open:H,onOpenChange:u,children:e.jsxs(d.DialogContent,{children:[e.jsxs(d.DialogHeader,{children:[e.jsx(d.DialogTitle,{children:P}),e.jsx(d.DialogDescription,{children:F})]}),o&&e.jsxs("div",{className:"flex items-center gap-3 py-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"De:"}),e.jsxs(m.Badge,{variant:(a==null?void 0:a.variant)||g,className:a==null?void 0:a.className,children:[a==null?void 0:a.icon,(a==null?void 0:a.label)||l]})]}),e.jsx("span",{className:"text-muted-foreground",children:"→"}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Para:"}),e.jsxs(m.Badge,{variant:o.variant||g,className:o.className,children:[o.icon,o.label]})]})]}),e.jsxs(d.DialogFooter,{children:[e.jsx(E.Button,{variant:"outline",onClick:G,disabled:N,children:z}),e.jsx(E.Button,{onClick:()=>B(),disabled:N,children:N?"Confirmando...":_})]})]})})]})}const T=n.forwardRef(Q);T.displayName="EditableBadge";exports.EditableBadge=T;
2
+ //# sourceMappingURL=editable-badge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editable-badge.cjs","sources":["../../../../src/components/ui/forms/editable-badge.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Badge, badgeVariants } from \"../primitives/badge\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../overlays/dropdown-menu\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../overlays/dialog\";\nimport { Button } from \"../primitives/button\";\nimport { cn } from \"../utils\";\nimport { ChevronDown, Check } from \"lucide-react\";\nimport { type VariantProps } from \"class-variance-authority\";\n\n/**\n * Opção para o EmblemaEditavel\n */\nexport interface EditableBadgeOption<T extends string | number = string> {\n /**\n * Valor da opção\n */\n value: T;\n /**\n * Label exibido no dropdown\n */\n label: string;\n /**\n * Ícone opcional da opção\n */\n icon?: React.ReactNode;\n /**\n * Variante do badge para esta opção\n */\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n /**\n * Classes CSS customizadas para esta opção (ex: cores da guideline)\n */\n className?: string;\n}\n\n/**\n * Props do componente EmblemaEditavel\n */\nexport interface EditableBadgeProps<T extends string | number = string>\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * Valor atual do badge\n */\n value: T;\n\n /**\n * Opções disponíveis para seleção\n */\n options: EditableBadgeOption<T>[];\n\n /**\n * Callback quando o valor é confirmado\n * @param value - Novo valor selecionado\n */\n onValueChange: (value: T) => void | Promise<void>;\n\n /**\n * Callback quando a alteração é cancelada (opcional)\n */\n onCancel?: () => void;\n\n /**\n * Se true, o badge não é editável\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Variante padrão do badge\n * @default \"default\"\n */\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n\n /**\n * Título do dialog de confirmação\n * @default \"Confirmar alteração\"\n */\n confirmTitle?: string;\n\n /**\n * Descrição do dialog de confirmação\n * @default \"Tem certeza que deseja alterar este valor?\"\n */\n confirmDescription?: string;\n\n /**\n * Texto do botão de confirmação\n * @default \"Confirmar\"\n */\n confirmButtonText?: string;\n\n /**\n * Texto do botão de cancelar\n * @default \"Cancelar\"\n */\n cancelButtonText?: string;\n\n /**\n * Se true, não exibe o dialog de confirmação\n * @default false\n */\n skipConfirmation?: boolean;\n\n /**\n * Estado de loading durante a operação\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Renderizador customizado do valor no badge\n */\n renderValue?: (value: T, option?: EditableBadgeOption<T>) => React.ReactNode;\n}\n\nfunction EditableBadgeInner<T extends string | number = string>(\n {\n value,\n options,\n onValueChange,\n onCancel,\n disabled = false,\n variant = \"default\",\n confirmTitle = \"Confirmar alteração\",\n confirmDescription = \"Tem certeza que deseja alterar este valor?\",\n confirmButtonText = \"Confirmar\",\n cancelButtonText = \"Cancelar\",\n skipConfirmation = false,\n isLoading = false,\n renderValue,\n className,\n ...props\n }: EditableBadgeProps<T>,\n ref: React.Ref<HTMLDivElement>\n) {\n const [selectedValue, setSelectedValue] = React.useState<T | null>(null);\n const [showDialog, setShowDialog] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n const [isConfirming, setIsConfirming] = React.useState(false);\n\n // Encontrar a opção atual\n const currentOption = React.useMemo(\n () => options.find((opt) => opt.value === value),\n [options, value]\n );\n\n // Encontrar a opção selecionada\n const selectedOption = React.useMemo(\n () => (selectedValue !== null && selectedValue !== undefined ? options.find((opt) => opt.value === selectedValue) : null),\n [options, selectedValue]\n );\n\n // Handler para seleção de opção\n const handleSelect = React.useCallback(\n (newValue: T) => {\n if (newValue === value) {\n setIsOpen(false);\n return;\n }\n\n setSelectedValue(newValue);\n setIsOpen(false);\n\n if (skipConfirmation) {\n handleConfirm(newValue);\n } else {\n setShowDialog(true);\n }\n },\n [value, skipConfirmation]\n );\n\n // Handler de confirmação\n const handleConfirm = React.useCallback(\n async (valueToConfirm?: T) => {\n const finalValue = valueToConfirm ?? selectedValue;\n if (finalValue === null || finalValue === undefined) return;\n\n setIsConfirming(true);\n try {\n await onValueChange(finalValue);\n setShowDialog(false);\n setSelectedValue(null);\n } catch (error) {\n console.error(\"Error confirming value change:\", error);\n } finally {\n setIsConfirming(false);\n }\n },\n [selectedValue, onValueChange]\n );\n\n // Handler de cancelamento\n const handleCancel = React.useCallback(() => {\n setShowDialog(false);\n setSelectedValue(null);\n onCancel?.();\n }, [onCancel]);\n\n // Renderizar o valor do badge\n const renderBadgeValue = React.useCallback(() => {\n if (renderValue && currentOption) {\n return renderValue(value, currentOption);\n }\n if (currentOption) {\n return (\n <>\n {currentOption.icon}\n {currentOption.label}\n </>\n );\n }\n return value;\n }, [renderValue, value, currentOption]);\n\n // Badge variant e className (usa os da opção se disponível, senão os defaults)\n const badgeVariant = currentOption?.variant || variant;\n const badgeClassName = currentOption?.className;\n\n // Se disabled, renderiza apenas o badge\n if (disabled) {\n return (\n <div ref={ref} className={cn(\"inline-flex\", className)} {...props}>\n <Badge variant={badgeVariant} className={badgeClassName}>{renderBadgeValue()}</Badge>\n </div>\n );\n }\n\n return (\n <>\n <div ref={ref} className={cn(\"inline-flex\", className)} {...props}>\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={isLoading}>\n <button\n type=\"button\"\n className={cn(\n badgeVariants({ variant: badgeVariant }),\n \"cursor-pointer hover:opacity-80 transition-opacity gap-1.5\",\n isLoading && \"opacity-50 cursor-not-allowed\",\n badgeClassName\n )}\n >\n {renderBadgeValue()}\n {!isLoading && <ChevronDown className=\"h-3 w-3\" />}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {options.map((option) => (\n <DropdownMenuItem\n key={String(option.value)}\n onClick={() => handleSelect(option.value)}\n className=\"gap-2\"\n >\n {option.icon && <span className=\"w-4 h-4\">{option.icon}</span>}\n <span className=\"flex-1\">{option.label}</span>\n {option.value === value && <Check className=\"h-4 w-4 text-primary\" />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <Dialog open={showDialog} onOpenChange={setShowDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{confirmTitle}</DialogTitle>\n <DialogDescription>{confirmDescription}</DialogDescription>\n </DialogHeader>\n {selectedOption && (\n <div className=\"flex items-center gap-3 py-4\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">De:</span>\n <Badge variant={currentOption?.variant || variant} className={currentOption?.className}>\n {currentOption?.icon}\n {currentOption?.label || value}\n </Badge>\n </div>\n <span className=\"text-muted-foreground\">→</span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Para:</span>\n <Badge variant={selectedOption.variant || variant} className={selectedOption.className}>\n {selectedOption.icon}\n {selectedOption.label}\n </Badge>\n </div>\n </div>\n )}\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isConfirming}\n >\n {cancelButtonText}\n </Button>\n <Button onClick={() => handleConfirm()} disabled={isConfirming}>\n {isConfirming ? \"Confirmando...\" : confirmButtonText}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\nexport const EditableBadge = React.forwardRef(EditableBadgeInner) as (<\n T extends string | number = string\n>(\n props: EditableBadgeProps<T> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement) & { displayName?: string };\n\nEditableBadge.displayName = \"EditableBadge\";\n"],"names":["EditableBadgeInner","value","options","onValueChange","onCancel","disabled","variant","confirmTitle","confirmDescription","confirmButtonText","cancelButtonText","skipConfirmation","isLoading","renderValue","className","props","ref","selectedValue","setSelectedValue","React","showDialog","setShowDialog","isOpen","setIsOpen","isConfirming","setIsConfirming","currentOption","opt","selectedOption","handleSelect","newValue","handleConfirm","valueToConfirm","finalValue","error","handleCancel","renderBadgeValue","jsxs","Fragment","badgeVariant","badgeClassName","cn","jsx","Badge","DropdownMenu","DropdownMenuTrigger","badgeVariants","ChevronDown","DropdownMenuContent","option","DropdownMenuItem","Check","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button","EditableBadge"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { jsxs as s, Fragment as I, jsx as a } from "react/jsx-runtime";
3
+ import * as r from "react";
4
+ import { Badge as p, badgeVariants as J } from "../primitives/badge.js";
5
+ import { DropdownMenu as K, DropdownMenuTrigger as Q, DropdownMenuContent as U, DropdownMenuItem as W } from "../overlays/dropdown-menu.js";
6
+ import { Dialog as X, DialogContent as Y, DialogHeader as Z, DialogTitle as _, DialogDescription as $, DialogFooter as L } from "../overlays/dialog.js";
7
+ import { Button as j } from "../primitives/button.js";
8
+ import { cn as C } from "../utils.js";
9
+ import { ChevronDown as O, Check as ee } from "lucide-react";
10
+ function ae({
11
+ value: n,
12
+ options: t,
13
+ onValueChange: x,
14
+ onCancel: d,
15
+ disabled: T = !1,
16
+ variant: m = "default",
17
+ confirmTitle: F = "Confirmar alteração",
18
+ confirmDescription: R = "Tem certeza que deseja alterar este valor?",
19
+ confirmButtonText: q = "Confirmar",
20
+ cancelButtonText: z = "Cancelar",
21
+ skipConfirmation: D = !1,
22
+ isLoading: f = !1,
23
+ renderValue: h,
24
+ className: v,
25
+ ...w
26
+ }, y) {
27
+ const [i, g] = r.useState(null), [H, o] = r.useState(!1), [P, u] = r.useState(!1), [N, S] = r.useState(!1), e = r.useMemo(
28
+ () => t.find((l) => l.value === n),
29
+ [t, n]
30
+ ), c = r.useMemo(
31
+ () => i != null ? t.find((l) => l.value === i) : null,
32
+ [t, i]
33
+ ), V = r.useCallback(
34
+ (l) => {
35
+ if (l === n) {
36
+ u(!1);
37
+ return;
38
+ }
39
+ g(l), u(!1), D ? k(l) : o(!0);
40
+ },
41
+ [n, D]
42
+ ), k = r.useCallback(
43
+ async (l) => {
44
+ const b = l ?? i;
45
+ if (b != null) {
46
+ S(!0);
47
+ try {
48
+ await x(b), o(!1), g(null);
49
+ } catch (G) {
50
+ console.error("Error confirming value change:", G);
51
+ } finally {
52
+ S(!1);
53
+ }
54
+ }
55
+ },
56
+ [i, x]
57
+ ), A = r.useCallback(() => {
58
+ o(!1), g(null), d == null || d();
59
+ }, [d]), B = r.useCallback(() => h && e ? h(n, e) : e ? /* @__PURE__ */ s(I, { children: [
60
+ e.icon,
61
+ e.label
62
+ ] }) : n, [h, n, e]), M = (e == null ? void 0 : e.variant) || m, E = e == null ? void 0 : e.className;
63
+ return T ? /* @__PURE__ */ a("div", { ref: y, className: C("inline-flex", v), ...w, children: /* @__PURE__ */ a(p, { variant: M, className: E, children: B() }) }) : /* @__PURE__ */ s(I, { children: [
64
+ /* @__PURE__ */ a("div", { ref: y, className: C("inline-flex", v), ...w, children: /* @__PURE__ */ s(K, { open: P, onOpenChange: u, children: [
65
+ /* @__PURE__ */ a(Q, { asChild: !0, disabled: f, children: /* @__PURE__ */ s(
66
+ "button",
67
+ {
68
+ type: "button",
69
+ className: C(
70
+ J({ variant: M }),
71
+ "cursor-pointer hover:opacity-80 transition-opacity gap-1.5",
72
+ f && "opacity-50 cursor-not-allowed",
73
+ E
74
+ ),
75
+ children: [
76
+ B(),
77
+ !f && /* @__PURE__ */ a(O, { className: "h-3 w-3" })
78
+ ]
79
+ }
80
+ ) }),
81
+ /* @__PURE__ */ a(U, { align: "start", className: "w-48", children: t.map((l) => /* @__PURE__ */ s(
82
+ W,
83
+ {
84
+ onClick: () => V(l.value),
85
+ className: "gap-2",
86
+ children: [
87
+ l.icon && /* @__PURE__ */ a("span", { className: "w-4 h-4", children: l.icon }),
88
+ /* @__PURE__ */ a("span", { className: "flex-1", children: l.label }),
89
+ l.value === n && /* @__PURE__ */ a(ee, { className: "h-4 w-4 text-primary" })
90
+ ]
91
+ },
92
+ String(l.value)
93
+ )) })
94
+ ] }) }),
95
+ /* @__PURE__ */ a(X, { open: H, onOpenChange: o, children: /* @__PURE__ */ s(Y, { children: [
96
+ /* @__PURE__ */ s(Z, { children: [
97
+ /* @__PURE__ */ a(_, { children: F }),
98
+ /* @__PURE__ */ a($, { children: R })
99
+ ] }),
100
+ c && /* @__PURE__ */ s("div", { className: "flex items-center gap-3 py-4", children: [
101
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
102
+ /* @__PURE__ */ a("span", { className: "text-sm text-muted-foreground", children: "De:" }),
103
+ /* @__PURE__ */ s(p, { variant: (e == null ? void 0 : e.variant) || m, className: e == null ? void 0 : e.className, children: [
104
+ e == null ? void 0 : e.icon,
105
+ (e == null ? void 0 : e.label) || n
106
+ ] })
107
+ ] }),
108
+ /* @__PURE__ */ a("span", { className: "text-muted-foreground", children: "→" }),
109
+ /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
110
+ /* @__PURE__ */ a("span", { className: "text-sm text-muted-foreground", children: "Para:" }),
111
+ /* @__PURE__ */ s(p, { variant: c.variant || m, className: c.className, children: [
112
+ c.icon,
113
+ c.label
114
+ ] })
115
+ ] })
116
+ ] }),
117
+ /* @__PURE__ */ s(L, { children: [
118
+ /* @__PURE__ */ a(
119
+ j,
120
+ {
121
+ variant: "outline",
122
+ onClick: A,
123
+ disabled: N,
124
+ children: z
125
+ }
126
+ ),
127
+ /* @__PURE__ */ a(j, { onClick: () => k(), disabled: N, children: N ? "Confirmando..." : q })
128
+ ] })
129
+ ] }) })
130
+ ] });
131
+ }
132
+ const le = r.forwardRef(ae);
133
+ le.displayName = "EditableBadge";
134
+ export {
135
+ le as EditableBadge
136
+ };
137
+ //# sourceMappingURL=editable-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editable-badge.js","sources":["../../../../src/components/ui/forms/editable-badge.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Badge, badgeVariants } from \"../primitives/badge\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../overlays/dropdown-menu\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../overlays/dialog\";\nimport { Button } from \"../primitives/button\";\nimport { cn } from \"../utils\";\nimport { ChevronDown, Check } from \"lucide-react\";\nimport { type VariantProps } from \"class-variance-authority\";\n\n/**\n * Opção para o EmblemaEditavel\n */\nexport interface EditableBadgeOption<T extends string | number = string> {\n /**\n * Valor da opção\n */\n value: T;\n /**\n * Label exibido no dropdown\n */\n label: string;\n /**\n * Ícone opcional da opção\n */\n icon?: React.ReactNode;\n /**\n * Variante do badge para esta opção\n */\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n /**\n * Classes CSS customizadas para esta opção (ex: cores da guideline)\n */\n className?: string;\n}\n\n/**\n * Props do componente EmblemaEditavel\n */\nexport interface EditableBadgeProps<T extends string | number = string>\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * Valor atual do badge\n */\n value: T;\n\n /**\n * Opções disponíveis para seleção\n */\n options: EditableBadgeOption<T>[];\n\n /**\n * Callback quando o valor é confirmado\n * @param value - Novo valor selecionado\n */\n onValueChange: (value: T) => void | Promise<void>;\n\n /**\n * Callback quando a alteração é cancelada (opcional)\n */\n onCancel?: () => void;\n\n /**\n * Se true, o badge não é editável\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Variante padrão do badge\n * @default \"default\"\n */\n variant?: VariantProps<typeof badgeVariants>[\"variant\"];\n\n /**\n * Título do dialog de confirmação\n * @default \"Confirmar alteração\"\n */\n confirmTitle?: string;\n\n /**\n * Descrição do dialog de confirmação\n * @default \"Tem certeza que deseja alterar este valor?\"\n */\n confirmDescription?: string;\n\n /**\n * Texto do botão de confirmação\n * @default \"Confirmar\"\n */\n confirmButtonText?: string;\n\n /**\n * Texto do botão de cancelar\n * @default \"Cancelar\"\n */\n cancelButtonText?: string;\n\n /**\n * Se true, não exibe o dialog de confirmação\n * @default false\n */\n skipConfirmation?: boolean;\n\n /**\n * Estado de loading durante a operação\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Renderizador customizado do valor no badge\n */\n renderValue?: (value: T, option?: EditableBadgeOption<T>) => React.ReactNode;\n}\n\nfunction EditableBadgeInner<T extends string | number = string>(\n {\n value,\n options,\n onValueChange,\n onCancel,\n disabled = false,\n variant = \"default\",\n confirmTitle = \"Confirmar alteração\",\n confirmDescription = \"Tem certeza que deseja alterar este valor?\",\n confirmButtonText = \"Confirmar\",\n cancelButtonText = \"Cancelar\",\n skipConfirmation = false,\n isLoading = false,\n renderValue,\n className,\n ...props\n }: EditableBadgeProps<T>,\n ref: React.Ref<HTMLDivElement>\n) {\n const [selectedValue, setSelectedValue] = React.useState<T | null>(null);\n const [showDialog, setShowDialog] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n const [isConfirming, setIsConfirming] = React.useState(false);\n\n // Encontrar a opção atual\n const currentOption = React.useMemo(\n () => options.find((opt) => opt.value === value),\n [options, value]\n );\n\n // Encontrar a opção selecionada\n const selectedOption = React.useMemo(\n () => (selectedValue !== null && selectedValue !== undefined ? options.find((opt) => opt.value === selectedValue) : null),\n [options, selectedValue]\n );\n\n // Handler para seleção de opção\n const handleSelect = React.useCallback(\n (newValue: T) => {\n if (newValue === value) {\n setIsOpen(false);\n return;\n }\n\n setSelectedValue(newValue);\n setIsOpen(false);\n\n if (skipConfirmation) {\n handleConfirm(newValue);\n } else {\n setShowDialog(true);\n }\n },\n [value, skipConfirmation]\n );\n\n // Handler de confirmação\n const handleConfirm = React.useCallback(\n async (valueToConfirm?: T) => {\n const finalValue = valueToConfirm ?? selectedValue;\n if (finalValue === null || finalValue === undefined) return;\n\n setIsConfirming(true);\n try {\n await onValueChange(finalValue);\n setShowDialog(false);\n setSelectedValue(null);\n } catch (error) {\n console.error(\"Error confirming value change:\", error);\n } finally {\n setIsConfirming(false);\n }\n },\n [selectedValue, onValueChange]\n );\n\n // Handler de cancelamento\n const handleCancel = React.useCallback(() => {\n setShowDialog(false);\n setSelectedValue(null);\n onCancel?.();\n }, [onCancel]);\n\n // Renderizar o valor do badge\n const renderBadgeValue = React.useCallback(() => {\n if (renderValue && currentOption) {\n return renderValue(value, currentOption);\n }\n if (currentOption) {\n return (\n <>\n {currentOption.icon}\n {currentOption.label}\n </>\n );\n }\n return value;\n }, [renderValue, value, currentOption]);\n\n // Badge variant e className (usa os da opção se disponível, senão os defaults)\n const badgeVariant = currentOption?.variant || variant;\n const badgeClassName = currentOption?.className;\n\n // Se disabled, renderiza apenas o badge\n if (disabled) {\n return (\n <div ref={ref} className={cn(\"inline-flex\", className)} {...props}>\n <Badge variant={badgeVariant} className={badgeClassName}>{renderBadgeValue()}</Badge>\n </div>\n );\n }\n\n return (\n <>\n <div ref={ref} className={cn(\"inline-flex\", className)} {...props}>\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={isLoading}>\n <button\n type=\"button\"\n className={cn(\n badgeVariants({ variant: badgeVariant }),\n \"cursor-pointer hover:opacity-80 transition-opacity gap-1.5\",\n isLoading && \"opacity-50 cursor-not-allowed\",\n badgeClassName\n )}\n >\n {renderBadgeValue()}\n {!isLoading && <ChevronDown className=\"h-3 w-3\" />}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {options.map((option) => (\n <DropdownMenuItem\n key={String(option.value)}\n onClick={() => handleSelect(option.value)}\n className=\"gap-2\"\n >\n {option.icon && <span className=\"w-4 h-4\">{option.icon}</span>}\n <span className=\"flex-1\">{option.label}</span>\n {option.value === value && <Check className=\"h-4 w-4 text-primary\" />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <Dialog open={showDialog} onOpenChange={setShowDialog}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{confirmTitle}</DialogTitle>\n <DialogDescription>{confirmDescription}</DialogDescription>\n </DialogHeader>\n {selectedOption && (\n <div className=\"flex items-center gap-3 py-4\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">De:</span>\n <Badge variant={currentOption?.variant || variant} className={currentOption?.className}>\n {currentOption?.icon}\n {currentOption?.label || value}\n </Badge>\n </div>\n <span className=\"text-muted-foreground\">→</span>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">Para:</span>\n <Badge variant={selectedOption.variant || variant} className={selectedOption.className}>\n {selectedOption.icon}\n {selectedOption.label}\n </Badge>\n </div>\n </div>\n )}\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isConfirming}\n >\n {cancelButtonText}\n </Button>\n <Button onClick={() => handleConfirm()} disabled={isConfirming}>\n {isConfirming ? \"Confirmando...\" : confirmButtonText}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\nexport const EditableBadge = React.forwardRef(EditableBadgeInner) as (<\n T extends string | number = string\n>(\n props: EditableBadgeProps<T> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement) & { displayName?: string };\n\nEditableBadge.displayName = \"EditableBadge\";\n"],"names":["EditableBadgeInner","value","options","onValueChange","onCancel","disabled","variant","confirmTitle","confirmDescription","confirmButtonText","cancelButtonText","skipConfirmation","isLoading","renderValue","className","props","ref","selectedValue","setSelectedValue","React","showDialog","setShowDialog","isOpen","setIsOpen","isConfirming","setIsConfirming","currentOption","opt","selectedOption","handleSelect","newValue","handleConfirm","valueToConfirm","finalValue","error","handleCancel","renderBadgeValue","jsxs","Fragment","badgeVariant","badgeClassName","cn","jsx","Badge","DropdownMenu","DropdownMenuTrigger","badgeVariants","ChevronDown","DropdownMenuContent","option","DropdownMenuItem","Check","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","Button","EditableBadge"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("lucide-react"),P=require("react"),g=require("../primitives/badge.cjs"),d=require("../primitives/button.cjs"),k=require("../primitives/progress.cjs"),r=require("../overlays/tooltip.cjs"),h=require("../utils.cjs");function $(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:t<1024*1024*1024?`${(t/(1024*1024)).toFixed(1)} MB`:`${(t/(1024*1024*1024)).toFixed(1)} GB`:""}function z(t){if(!t)return"";try{const i=new Date(t);return isNaN(i.getTime())?t:i.toLocaleDateString("pt-BR",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}function E(t,i){if(t.length<=i)return t;const a=t.lastIndexOf(".");if(a===-1)return t.substring(0,i-3)+"...";const n=t.substring(a);return t.substring(0,a).substring(0,i-n.length-3)+"..."+n}function F({attachments:t,onDownload:i,onRemove:a,onView:n,showDownload:x=!0,showRemove:p=!1,showView:v=!1,maxFilenameLength:C=40,variant:w="compact",emptyMessage:B="Nenhum anexo",isLoading:O=!1,className:j}){const[y,T]=P.useState({}),m=async(s,f,o)=>{if(!o)return;const u=s.chave||s.nomeOriginal;T(c=>({...c,[u]:f}));try{await o(s)}finally{T(c=>({...c,[u]:null}))}};return O?e.jsx("div",{className:h.cn("space-y-2",j),children:[1,2,3].map(s=>e.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded bg-muted/30 animate-pulse",children:[e.jsx("div",{className:"h-4 w-4 bg-muted-foreground/20 rounded"}),e.jsx("div",{className:"h-4 flex-1 bg-muted-foreground/20 rounded"})]},s))}):t.length===0?e.jsx("div",{className:h.cn("text-center py-6 text-sm text-muted-foreground border rounded-lg bg-muted/20",j),children:B}):e.jsx("div",{className:h.cn("space-y-2",j),children:t.map((s,f)=>{const o=s.chave||s.id||`${s.nomeOriginal}-${f}`,u=y[s.chave||s.nomeOriginal],c=u==="download",N=u==="view",b=(()=>{switch(s.status){case"completed":return e.jsx(g.Badge,{variant:"outline",className:"bg-success/10 text-success-emphasis border-success/20 hover:bg-success/10",children:"✓ Enviado"});case"uploading":return e.jsx(g.Badge,{variant:"outline",className:"bg-info/10 text-info-emphasis border-info/20 hover:bg-info/10",children:"Enviando..."});case"failed":return e.jsx(g.Badge,{variant:"outline",className:"bg-destructive/10 text-destructive-emphasis border-destructive/20 hover:bg-destructive/10",children:"✗ Erro"});case"retrying":return e.jsx(g.Badge,{variant:"outline",className:"bg-warning/10 text-warning-emphasis border-warning/20 hover:bg-warning/10",children:"Tentando..."});default:return null}})();return w==="detailed"?e.jsx("div",{className:h.cn("p-4 border rounded-lg bg-card transition-colors",s.status==="failed"&&"border-destructive/30 bg-destructive/5"),children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1 min-w-0",children:[e.jsx(l.Paperclip,{className:"h-5 w-5 text-muted-foreground mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx("p",{className:"text-sm font-medium truncate",children:s.nomeOriginal})}),e.jsx(r.TooltipContent,{children:e.jsx("p",{className:"text-xs",children:s.nomeOriginal})})]})}),e.jsxs("div",{className:"flex items-center gap-2 mt-1 text-xs text-muted-foreground",children:[s.tamanhoBytes&&e.jsx("span",{children:$(s.tamanhoBytes)}),s.tamanhoBytes&&s.dataUpload&&e.jsx("span",{children:"•"}),s.dataUpload&&e.jsx("span",{children:z(s.dataUpload)})]}),s.status==="uploading"&&typeof s.progress=="number"&&e.jsx(k.Progress,{value:s.progress,className:"h-1 mt-2"}),s.status==="failed"&&s.erro&&e.jsxs("div",{className:"flex items-center gap-1 mt-2 text-xs text-destructive",children:[e.jsx(l.AlertCircle,{className:"h-3 w-3"}),e.jsx("span",{children:s.erro})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[b,s.status==="completed"&&e.jsxs(e.Fragment,{children:[v&&n&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>m(s,"view",n),disabled:N,"aria-label":`Visualizar ${s.nomeOriginal}`,children:e.jsx(l.Eye,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Visualizar"})]})}),x&&i&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>m(s,"download",i),disabled:c,"aria-label":`Baixar ${s.nomeOriginal}`,children:e.jsx(l.Download,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Baixar"})]})}),p&&a&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive hover:text-destructive",onClick:()=>a(s),"aria-label":`Remover ${s.nomeOriginal}`,children:e.jsx(l.Trash2,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Remover"})]})})]})]})]})},o):e.jsxs("div",{className:h.cn("flex items-center justify-between gap-2 p-3 border rounded-lg bg-muted/30 transition-colors",s.status==="failed"&&"border-destructive/30 bg-destructive/5"),children:[e.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[e.jsx(l.Paperclip,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx("span",{className:"text-sm truncate",children:E(s.nomeOriginal,C)})}),e.jsx(r.TooltipContent,{children:e.jsx("p",{className:"max-w-xs break-all",children:s.nomeOriginal})})]})}),s.status==="uploading"&&typeof s.progress=="number"&&e.jsxs("span",{className:"text-xs text-muted-foreground flex-shrink-0",children:[s.progress,"%"]}),b]}),s.status==="completed"&&e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[v&&n&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>m(s,"view",n),disabled:N,"aria-label":`Visualizar ${s.nomeOriginal}`,children:e.jsx(l.Eye,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Visualizar"})]})}),x&&i&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>m(s,"download",i),disabled:c,"aria-label":`Baixar ${s.nomeOriginal}`,children:e.jsx(l.Download,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Baixar"})]})}),p&&a&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive hover:text-destructive",onClick:()=>a(s),"aria-label":`Remover ${s.nomeOriginal}`,children:e.jsx(l.Trash2,{className:"h-4 w-4"})})}),e.jsx(r.TooltipContent,{children:"Remover"})]})})]}),s.status==="failed"&&s.erro&&e.jsx(r.TooltipProvider,{children:e.jsxs(r.Tooltip,{children:[e.jsx(r.TooltipTrigger,{asChild:!0,children:e.jsx(l.AlertCircle,{className:"h-4 w-4 text-destructive flex-shrink-0"})}),e.jsx(r.TooltipContent,{children:e.jsx("p",{className:"text-xs",children:s.erro})})]})})]},o)})})}exports.FileAttachmentList=F;
2
+ //# sourceMappingURL=file-attachment-list.cjs.map