@iclips/ui 1.4.13 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION-v2.md +214 -0
  3. package/README.md +106 -0
  4. package/dist/alert-theme.css +94 -0
  5. package/dist/assets/illustrations/announcements.png.cjs +2 -0
  6. package/dist/assets/illustrations/announcements.png.cjs.map +1 -0
  7. package/dist/assets/illustrations/announcements.png.js +5 -0
  8. package/dist/assets/illustrations/announcements.png.js.map +1 -0
  9. package/dist/assets/illustrations/checklist-approved.png.cjs +2 -0
  10. package/dist/assets/illustrations/checklist-approved.png.cjs.map +1 -0
  11. package/dist/assets/illustrations/checklist-approved.png.js +5 -0
  12. package/dist/assets/illustrations/checklist-approved.png.js.map +1 -0
  13. package/dist/assets/illustrations/client-profile.png.cjs +2 -0
  14. package/dist/assets/illustrations/client-profile.png.cjs.map +1 -0
  15. package/dist/assets/illustrations/client-profile.png.js +5 -0
  16. package/dist/assets/illustrations/client-profile.png.js.map +1 -0
  17. package/dist/assets/illustrations/contract-agreement.png.cjs +2 -0
  18. package/dist/assets/illustrations/contract-agreement.png.cjs.map +1 -0
  19. package/dist/assets/illustrations/contract-agreement.png.js +5 -0
  20. package/dist/assets/illustrations/contract-agreement.png.js.map +1 -0
  21. package/dist/assets/illustrations/create-record.png.cjs +2 -0
  22. package/dist/assets/illustrations/create-record.png.cjs.map +1 -0
  23. package/dist/assets/illustrations/create-record.png.js +5 -0
  24. package/dist/assets/illustrations/create-record.png.js.map +1 -0
  25. package/dist/assets/illustrations/cta-action.png.cjs +2 -0
  26. package/dist/assets/illustrations/cta-action.png.cjs.map +1 -0
  27. package/dist/assets/illustrations/cta-action.png.js +5 -0
  28. package/dist/assets/illustrations/cta-action.png.js.map +1 -0
  29. package/dist/assets/illustrations/draft-document.png.cjs +2 -0
  30. package/dist/assets/illustrations/draft-document.png.cjs.map +1 -0
  31. package/dist/assets/illustrations/draft-document.png.js +5 -0
  32. package/dist/assets/illustrations/draft-document.png.js.map +1 -0
  33. package/dist/assets/illustrations/edit-company.png.cjs +2 -0
  34. package/dist/assets/illustrations/edit-company.png.cjs.map +1 -0
  35. package/dist/assets/illustrations/edit-company.png.js +5 -0
  36. package/dist/assets/illustrations/edit-company.png.js.map +1 -0
  37. package/dist/assets/illustrations/edit-document.png.cjs +2 -0
  38. package/dist/assets/illustrations/edit-document.png.cjs.map +1 -0
  39. package/dist/assets/illustrations/edit-document.png.js +5 -0
  40. package/dist/assets/illustrations/edit-document.png.js.map +1 -0
  41. package/dist/assets/illustrations/empty-no-results.png.cjs +2 -0
  42. package/dist/assets/illustrations/empty-no-results.png.cjs.map +1 -0
  43. package/dist/assets/illustrations/empty-no-results.png.js +5 -0
  44. package/dist/assets/illustrations/empty-no-results.png.js.map +1 -0
  45. package/dist/assets/illustrations/empty-not-found.png.cjs +2 -0
  46. package/dist/assets/illustrations/empty-not-found.png.cjs.map +1 -0
  47. package/dist/assets/illustrations/empty-not-found.png.js +5 -0
  48. package/dist/assets/illustrations/empty-not-found.png.js.map +1 -0
  49. package/dist/assets/illustrations/empty-task-approved.png.cjs +2 -0
  50. package/dist/assets/illustrations/empty-task-approved.png.cjs.map +1 -0
  51. package/dist/assets/illustrations/empty-task-approved.png.js +5 -0
  52. package/dist/assets/illustrations/empty-task-approved.png.js.map +1 -0
  53. package/dist/assets/illustrations/empty-workflow-status.png.cjs +2 -0
  54. package/dist/assets/illustrations/empty-workflow-status.png.cjs.map +1 -0
  55. package/dist/assets/illustrations/empty-workflow-status.png.js +5 -0
  56. package/dist/assets/illustrations/empty-workflow-status.png.js.map +1 -0
  57. package/dist/assets/illustrations/integrations.png.cjs +2 -0
  58. package/dist/assets/illustrations/integrations.png.cjs.map +1 -0
  59. package/dist/assets/illustrations/integrations.png.js +5 -0
  60. package/dist/assets/illustrations/integrations.png.js.map +1 -0
  61. package/dist/assets/illustrations/onboarding-tips.png.cjs +2 -0
  62. package/dist/assets/illustrations/onboarding-tips.png.cjs.map +1 -0
  63. package/dist/assets/illustrations/onboarding-tips.png.js +5 -0
  64. package/dist/assets/illustrations/onboarding-tips.png.js.map +1 -0
  65. package/dist/assets/illustrations/scheduled-tasks.png.cjs +2 -0
  66. package/dist/assets/illustrations/scheduled-tasks.png.cjs.map +1 -0
  67. package/dist/assets/illustrations/scheduled-tasks.png.js +5 -0
  68. package/dist/assets/illustrations/scheduled-tasks.png.js.map +1 -0
  69. package/dist/assets/illustrations/search-documents.png.cjs +2 -0
  70. package/dist/assets/illustrations/search-documents.png.cjs.map +1 -0
  71. package/dist/assets/illustrations/search-documents.png.js +5 -0
  72. package/dist/assets/illustrations/search-documents.png.js.map +1 -0
  73. package/dist/assets/illustrations/success-checkmark.png.cjs +2 -0
  74. package/dist/assets/illustrations/success-checkmark.png.cjs.map +1 -0
  75. package/dist/assets/illustrations/success-checkmark.png.js +5 -0
  76. package/dist/assets/illustrations/success-checkmark.png.js.map +1 -0
  77. package/dist/components/ui/brand-colors.cjs +2 -0
  78. package/dist/components/ui/brand-colors.cjs.map +1 -0
  79. package/dist/components/ui/brand-colors.js +8 -0
  80. package/dist/components/ui/brand-colors.js.map +1 -0
  81. package/dist/components/ui/charts/chart.cjs +8 -0
  82. package/dist/components/ui/charts/chart.cjs.map +1 -0
  83. package/dist/components/ui/charts/chart.js +214 -0
  84. package/dist/components/ui/charts/chart.js.map +1 -0
  85. package/dist/components/ui/charts/donut-chart.cjs +2 -0
  86. package/dist/components/ui/charts/donut-chart.cjs.map +1 -0
  87. package/dist/components/ui/charts/donut-chart.js +285 -0
  88. package/dist/components/ui/charts/donut-chart.js.map +1 -0
  89. package/dist/components/ui/charts/kpi-card.cjs +2 -0
  90. package/dist/components/ui/charts/kpi-card.cjs.map +1 -0
  91. package/dist/components/ui/charts/kpi-card.js +75 -0
  92. package/dist/components/ui/charts/kpi-card.js.map +1 -0
  93. package/dist/components/ui/data/advanced-data-table.cjs +2 -0
  94. package/dist/components/ui/data/advanced-data-table.cjs.map +1 -0
  95. package/dist/components/ui/data/advanced-data-table.js +69 -0
  96. package/dist/components/ui/data/advanced-data-table.js.map +1 -0
  97. package/dist/components/ui/data/comment-system.cjs +2 -0
  98. package/dist/components/ui/data/comment-system.cjs.map +1 -0
  99. package/dist/components/ui/data/comment-system.js +492 -0
  100. package/dist/components/ui/data/comment-system.js.map +1 -0
  101. package/dist/components/ui/data/data-table-empty-state.cjs +2 -0
  102. package/dist/components/ui/data/data-table-empty-state.cjs.map +1 -0
  103. package/dist/components/ui/data/data-table-empty-state.js +40 -0
  104. package/dist/components/ui/data/data-table-empty-state.js.map +1 -0
  105. package/dist/components/ui/data/data-table-toolbar.cjs +2 -0
  106. package/dist/components/ui/data/data-table-toolbar.cjs.map +1 -0
  107. package/dist/components/ui/data/data-table-toolbar.js +85 -0
  108. package/dist/components/ui/data/data-table-toolbar.js.map +1 -0
  109. package/dist/components/ui/data/data-table.cjs +2 -0
  110. package/dist/components/ui/data/data-table.cjs.map +1 -0
  111. package/dist/components/ui/data/data-table.js +181 -0
  112. package/dist/components/ui/data/data-table.js.map +1 -0
  113. package/dist/components/ui/data/document-editor.cjs +2 -0
  114. package/dist/components/ui/data/document-editor.cjs.map +1 -0
  115. package/dist/components/ui/data/document-editor.js +158 -0
  116. package/dist/components/ui/data/document-editor.js.map +1 -0
  117. package/dist/components/ui/data/editorial-calendar.cjs +2 -0
  118. package/dist/components/ui/data/editorial-calendar.cjs.map +1 -0
  119. package/dist/components/ui/data/editorial-calendar.js +840 -0
  120. package/dist/components/ui/data/editorial-calendar.js.map +1 -0
  121. package/dist/components/ui/data/filter-bar.cjs +2 -0
  122. package/dist/components/ui/data/filter-bar.cjs.map +1 -0
  123. package/dist/components/ui/data/filter-bar.js +60 -0
  124. package/dist/components/ui/data/filter-bar.js.map +1 -0
  125. package/dist/components/ui/data/filter-builder.cjs +2 -0
  126. package/dist/components/ui/data/filter-builder.cjs.map +1 -0
  127. package/dist/components/ui/data/filter-builder.js +378 -0
  128. package/dist/components/ui/data/filter-builder.js.map +1 -0
  129. package/dist/components/ui/data/filter-chip.cjs +2 -0
  130. package/dist/components/ui/data/filter-chip.cjs.map +1 -0
  131. package/dist/components/ui/data/filter-chip.js +39 -0
  132. package/dist/components/ui/data/filter-chip.js.map +1 -0
  133. package/dist/components/ui/data/mention-list.cjs +2 -0
  134. package/dist/components/ui/data/mention-list.cjs.map +1 -0
  135. package/dist/components/ui/data/mention-list.js +46 -0
  136. package/dist/components/ui/data/mention-list.js.map +1 -0
  137. package/dist/components/ui/data/table-pagination.cjs +2 -0
  138. package/dist/components/ui/data/table-pagination.cjs.map +1 -0
  139. package/dist/components/ui/data/table-pagination.js +176 -0
  140. package/dist/components/ui/data/table-pagination.js.map +1 -0
  141. package/dist/components/ui/data/table-types.cjs +2 -0
  142. package/dist/components/ui/data/table-types.cjs.map +1 -0
  143. package/dist/components/ui/data/table-types.js +14 -0
  144. package/dist/components/ui/data/table-types.js.map +1 -0
  145. package/dist/components/ui/data/table.cjs +2 -0
  146. package/dist/components/ui/data/table.cjs.map +1 -0
  147. package/dist/components/ui/data/table.js +130 -0
  148. package/dist/components/ui/data/table.js.map +1 -0
  149. package/dist/components/ui/feedback/alert.cjs +2 -0
  150. package/dist/components/ui/feedback/alert.cjs.map +1 -0
  151. package/dist/components/ui/feedback/alert.js +67 -0
  152. package/dist/components/ui/feedback/alert.js.map +1 -0
  153. package/dist/components/ui/feedback/empty-state.cjs +2 -0
  154. package/dist/components/ui/feedback/empty-state.cjs.map +1 -0
  155. package/dist/components/ui/feedback/empty-state.js +78 -0
  156. package/dist/components/ui/feedback/empty-state.js.map +1 -0
  157. package/dist/components/ui/feedback/illustrations.cjs +2 -0
  158. package/dist/components/ui/feedback/illustrations.cjs.map +1 -0
  159. package/dist/components/ui/feedback/illustrations.js +157 -0
  160. package/dist/components/ui/feedback/illustrations.js.map +1 -0
  161. package/dist/components/ui/feedback/toast.cjs +2 -0
  162. package/dist/components/ui/feedback/toast.cjs.map +1 -0
  163. package/dist/components/ui/feedback/toast.js +38 -0
  164. package/dist/components/ui/feedback/toast.js.map +1 -0
  165. package/dist/components/ui/forms/calendar.cjs +2 -0
  166. package/dist/components/ui/forms/calendar.cjs.map +1 -0
  167. package/dist/components/ui/forms/calendar.js +65 -0
  168. package/dist/components/ui/forms/calendar.js.map +1 -0
  169. package/dist/components/ui/forms/checkbox.cjs +2 -0
  170. package/dist/components/ui/forms/checkbox.cjs.map +1 -0
  171. package/dist/components/ui/forms/checkbox.js +31 -0
  172. package/dist/components/ui/forms/checkbox.js.map +1 -0
  173. package/dist/components/ui/forms/color-picker.cjs +2 -0
  174. package/dist/components/ui/forms/color-picker.cjs.map +1 -0
  175. package/dist/components/ui/forms/color-picker.js +151 -0
  176. package/dist/components/ui/forms/color-picker.js.map +1 -0
  177. package/dist/components/ui/forms/combobox.cjs +2 -0
  178. package/dist/components/ui/forms/combobox.cjs.map +1 -0
  179. package/dist/components/ui/forms/combobox.js +208 -0
  180. package/dist/components/ui/forms/combobox.js.map +1 -0
  181. package/dist/components/ui/forms/currency-input.cjs +2 -0
  182. package/dist/components/ui/forms/currency-input.cjs.map +1 -0
  183. package/dist/components/ui/forms/currency-input.js +81 -0
  184. package/dist/components/ui/forms/currency-input.js.map +1 -0
  185. package/dist/components/ui/forms/date-picker.cjs +2 -0
  186. package/dist/components/ui/forms/date-picker.cjs.map +1 -0
  187. package/dist/components/ui/forms/date-picker.js +199 -0
  188. package/dist/components/ui/forms/date-picker.js.map +1 -0
  189. package/dist/components/ui/forms/date-range-picker.cjs +2 -0
  190. package/dist/components/ui/forms/date-range-picker.cjs.map +1 -0
  191. package/dist/components/ui/forms/date-range-picker.js +305 -0
  192. package/dist/components/ui/forms/date-range-picker.js.map +1 -0
  193. package/dist/components/ui/forms/editable-badge.cjs +2 -0
  194. package/dist/components/ui/forms/editable-badge.cjs.map +1 -0
  195. package/dist/components/ui/forms/editable-badge.js +137 -0
  196. package/dist/components/ui/forms/editable-badge.js.map +1 -0
  197. package/dist/components/ui/forms/file-attachment-list.cjs +2 -0
  198. package/dist/components/ui/forms/file-attachment-list.cjs.map +1 -0
  199. package/dist/components/ui/forms/file-attachment-list.js +235 -0
  200. package/dist/components/ui/forms/file-attachment-list.js.map +1 -0
  201. package/dist/components/ui/forms/file-upload-zone.cjs +3 -0
  202. package/dist/components/ui/forms/file-upload-zone.cjs.map +1 -0
  203. package/dist/components/ui/forms/file-upload-zone.js +142 -0
  204. package/dist/components/ui/forms/file-upload-zone.js.map +1 -0
  205. package/dist/components/ui/forms/form.cjs +2 -0
  206. package/dist/components/ui/forms/form.cjs.map +1 -0
  207. package/dist/components/ui/forms/form.js +109 -0
  208. package/dist/components/ui/forms/form.js.map +1 -0
  209. package/dist/components/ui/forms/input-group.cjs +2 -0
  210. package/dist/components/ui/forms/input-group.cjs.map +1 -0
  211. package/dist/components/ui/forms/input-group.js +131 -0
  212. package/dist/components/ui/forms/input-group.js.map +1 -0
  213. package/dist/components/ui/forms/input-otp.cjs +2 -0
  214. package/dist/components/ui/forms/input-otp.cjs.map +1 -0
  215. package/dist/components/ui/forms/input-otp.js +63 -0
  216. package/dist/components/ui/forms/input-otp.js.map +1 -0
  217. package/dist/components/ui/forms/input-validation.cjs +2 -0
  218. package/dist/components/ui/forms/input-validation.cjs.map +1 -0
  219. package/dist/components/ui/forms/input-validation.js +55 -0
  220. package/dist/components/ui/forms/input-validation.js.map +1 -0
  221. package/dist/components/ui/forms/input.cjs +2 -0
  222. package/dist/components/ui/forms/input.cjs.map +1 -0
  223. package/dist/components/ui/forms/input.js +26 -0
  224. package/dist/components/ui/forms/input.js.map +1 -0
  225. package/dist/components/ui/forms/month-range-picker.cjs +2 -0
  226. package/dist/components/ui/forms/month-range-picker.cjs.map +1 -0
  227. package/dist/components/ui/forms/month-range-picker.js +263 -0
  228. package/dist/components/ui/forms/month-range-picker.js.map +1 -0
  229. package/dist/components/ui/forms/multi-select.cjs +2 -0
  230. package/dist/components/ui/forms/multi-select.cjs.map +1 -0
  231. package/dist/components/ui/forms/multi-select.js +251 -0
  232. package/dist/components/ui/forms/multi-select.js.map +1 -0
  233. package/dist/components/ui/forms/number-input.cjs +2 -0
  234. package/dist/components/ui/forms/number-input.cjs.map +1 -0
  235. package/dist/components/ui/forms/number-input.js +220 -0
  236. package/dist/components/ui/forms/number-input.js.map +1 -0
  237. package/dist/components/ui/forms/password-input.cjs +2 -0
  238. package/dist/components/ui/forms/password-input.cjs.map +1 -0
  239. package/dist/components/ui/forms/password-input.js +43 -0
  240. package/dist/components/ui/forms/password-input.js.map +1 -0
  241. package/dist/components/ui/forms/radio-group.cjs +2 -0
  242. package/dist/components/ui/forms/radio-group.cjs.map +1 -0
  243. package/dist/components/ui/forms/radio-group.js +41 -0
  244. package/dist/components/ui/forms/radio-group.js.map +1 -0
  245. package/dist/components/ui/forms/select.cjs +2 -0
  246. package/dist/components/ui/forms/select.cjs.map +1 -0
  247. package/dist/components/ui/forms/select.js +140 -0
  248. package/dist/components/ui/forms/select.js.map +1 -0
  249. package/dist/components/ui/forms/slider.cjs +2 -0
  250. package/dist/components/ui/forms/slider.cjs.map +1 -0
  251. package/dist/components/ui/forms/slider.js +62 -0
  252. package/dist/components/ui/forms/slider.js.map +1 -0
  253. package/dist/components/ui/forms/social-button.cjs +2 -0
  254. package/dist/components/ui/forms/social-button.cjs.map +1 -0
  255. package/dist/components/ui/forms/social-button.js +86 -0
  256. package/dist/components/ui/forms/social-button.js.map +1 -0
  257. package/dist/components/ui/forms/switch.cjs +2 -0
  258. package/dist/components/ui/forms/switch.cjs.map +1 -0
  259. package/dist/components/ui/forms/switch.js +31 -0
  260. package/dist/components/ui/forms/switch.js.map +1 -0
  261. package/dist/components/ui/forms/textarea.cjs +2 -0
  262. package/dist/components/ui/forms/textarea.cjs.map +1 -0
  263. package/dist/components/ui/forms/textarea.js +22 -0
  264. package/dist/components/ui/forms/textarea.js.map +1 -0
  265. package/dist/components/ui/forms/time-picker.cjs +2 -0
  266. package/dist/components/ui/forms/time-picker.cjs.map +1 -0
  267. package/dist/components/ui/forms/time-picker.js +195 -0
  268. package/dist/components/ui/forms/time-picker.js.map +1 -0
  269. package/dist/components/ui/forms/toggle-group.cjs +2 -0
  270. package/dist/components/ui/forms/toggle-group.cjs.map +1 -0
  271. package/dist/components/ui/forms/toggle-group.js +53 -0
  272. package/dist/components/ui/forms/toggle-group.js.map +1 -0
  273. package/dist/components/ui/forms/toggle.cjs +2 -0
  274. package/dist/components/ui/forms/toggle.cjs.map +1 -0
  275. package/dist/components/ui/forms/toggle.js +40 -0
  276. package/dist/components/ui/forms/toggle.js.map +1 -0
  277. package/dist/components/ui/layout/accordion.cjs +2 -0
  278. package/dist/components/ui/layout/accordion.cjs.map +1 -0
  279. package/dist/components/ui/layout/accordion.js +53 -0
  280. package/dist/components/ui/layout/accordion.js.map +1 -0
  281. package/dist/components/ui/layout/auth-layout.cjs +2 -0
  282. package/dist/components/ui/layout/auth-layout.cjs.map +1 -0
  283. package/dist/components/ui/layout/auth-layout.js +74 -0
  284. package/dist/components/ui/layout/auth-layout.js.map +1 -0
  285. package/dist/components/ui/layout/card.cjs +2 -0
  286. package/dist/components/ui/layout/card.cjs.map +1 -0
  287. package/dist/components/ui/layout/card.js +104 -0
  288. package/dist/components/ui/layout/card.js.map +1 -0
  289. package/dist/components/ui/layout/carousel.cjs +2 -0
  290. package/dist/components/ui/layout/carousel.cjs.map +1 -0
  291. package/dist/components/ui/layout/carousel.js +189 -0
  292. package/dist/components/ui/layout/carousel.js.map +1 -0
  293. package/dist/components/ui/layout/collapsible.cjs +2 -0
  294. package/dist/components/ui/layout/collapsible.cjs.map +1 -0
  295. package/dist/components/ui/layout/collapsible.js +30 -0
  296. package/dist/components/ui/layout/collapsible.js.map +1 -0
  297. package/dist/components/ui/layout/page-header.cjs +2 -0
  298. package/dist/components/ui/layout/page-header.cjs.map +1 -0
  299. package/dist/components/ui/layout/page-header.js +81 -0
  300. package/dist/components/ui/layout/page-header.js.map +1 -0
  301. package/dist/components/ui/layout/resizable.cjs +2 -0
  302. package/dist/components/ui/layout/resizable.cjs.map +1 -0
  303. package/dist/components/ui/layout/resizable.js +45 -0
  304. package/dist/components/ui/layout/resizable.js.map +1 -0
  305. package/dist/components/ui/layout/scroll-area.cjs +2 -0
  306. package/dist/components/ui/layout/scroll-area.cjs.map +1 -0
  307. package/dist/components/ui/layout/scroll-area.js +56 -0
  308. package/dist/components/ui/layout/scroll-area.js.map +1 -0
  309. package/dist/components/ui/navigation/breadcrumb.cjs +2 -0
  310. package/dist/components/ui/navigation/breadcrumb.cjs.map +1 -0
  311. package/dist/components/ui/navigation/breadcrumb.js +94 -0
  312. package/dist/components/ui/navigation/breadcrumb.js.map +1 -0
  313. package/dist/components/ui/navigation/navigation-menu.cjs +2 -0
  314. package/dist/components/ui/navigation/navigation-menu.cjs.map +1 -0
  315. package/dist/components/ui/navigation/navigation-menu.js +144 -0
  316. package/dist/components/ui/navigation/navigation-menu.js.map +1 -0
  317. package/dist/components/ui/navigation/pagination.cjs +2 -0
  318. package/dist/components/ui/navigation/pagination.cjs.map +1 -0
  319. package/dist/components/ui/navigation/pagination.js +106 -0
  320. package/dist/components/ui/navigation/pagination.js.map +1 -0
  321. package/dist/components/ui/navigation/sidebar.cjs +2 -0
  322. package/dist/components/ui/navigation/sidebar.cjs.map +1 -0
  323. package/dist/components/ui/navigation/sidebar.js +579 -0
  324. package/dist/components/ui/navigation/sidebar.js.map +1 -0
  325. package/dist/components/ui/navigation/tabs.cjs +2 -0
  326. package/dist/components/ui/navigation/tabs.cjs.map +1 -0
  327. package/dist/components/ui/navigation/tabs.js +58 -0
  328. package/dist/components/ui/navigation/tabs.js.map +1 -0
  329. package/dist/components/ui/navigation/underline-tabs.cjs +2 -0
  330. package/dist/components/ui/navigation/underline-tabs.cjs.map +1 -0
  331. package/dist/components/ui/navigation/underline-tabs.js +109 -0
  332. package/dist/components/ui/navigation/underline-tabs.js.map +1 -0
  333. package/dist/components/ui/overlays/alert-dialog.cjs +2 -0
  334. package/dist/components/ui/overlays/alert-dialog.cjs.map +1 -0
  335. package/dist/components/ui/overlays/alert-dialog.js +135 -0
  336. package/dist/components/ui/overlays/alert-dialog.js.map +1 -0
  337. package/dist/components/ui/overlays/command.cjs +2 -0
  338. package/dist/components/ui/overlays/command.cjs.map +1 -0
  339. package/dist/components/ui/overlays/command.js +143 -0
  340. package/dist/components/ui/overlays/command.js.map +1 -0
  341. package/dist/components/ui/overlays/context-menu.cjs +2 -0
  342. package/dist/components/ui/overlays/context-menu.cjs.map +1 -0
  343. package/dist/components/ui/overlays/context-menu.js +197 -0
  344. package/dist/components/ui/overlays/context-menu.js.map +1 -0
  345. package/dist/components/ui/overlays/dialog.cjs +2 -0
  346. package/dist/components/ui/overlays/dialog.cjs.map +1 -0
  347. package/dist/components/ui/overlays/dialog.js +112 -0
  348. package/dist/components/ui/overlays/dialog.js.map +1 -0
  349. package/dist/components/ui/overlays/drawer.cjs +2 -0
  350. package/dist/components/ui/overlays/drawer.cjs.map +1 -0
  351. package/dist/components/ui/overlays/drawer.js +109 -0
  352. package/dist/components/ui/overlays/drawer.js.map +1 -0
  353. package/dist/components/ui/overlays/dropdown-menu.cjs +2 -0
  354. package/dist/components/ui/overlays/dropdown-menu.cjs.map +1 -0
  355. package/dist/components/ui/overlays/dropdown-menu.js +198 -0
  356. package/dist/components/ui/overlays/dropdown-menu.js.map +1 -0
  357. package/dist/components/ui/overlays/hover-card.cjs +2 -0
  358. package/dist/components/ui/overlays/hover-card.cjs.map +1 -0
  359. package/dist/components/ui/overlays/hover-card.js +40 -0
  360. package/dist/components/ui/overlays/hover-card.js.map +1 -0
  361. package/dist/components/ui/overlays/menubar.cjs +2 -0
  362. package/dist/components/ui/overlays/menubar.cjs.map +1 -0
  363. package/dist/components/ui/overlays/menubar.js +213 -0
  364. package/dist/components/ui/overlays/menubar.js.map +1 -0
  365. package/dist/components/ui/overlays/popover.cjs +2 -0
  366. package/dist/components/ui/overlays/popover.cjs.map +1 -0
  367. package/dist/components/ui/overlays/popover.js +36 -0
  368. package/dist/components/ui/overlays/popover.js.map +1 -0
  369. package/dist/components/ui/overlays/sheet.cjs +2 -0
  370. package/dist/components/ui/overlays/sheet.cjs.map +1 -0
  371. package/dist/components/ui/overlays/sheet.js +109 -0
  372. package/dist/components/ui/overlays/sheet.js.map +1 -0
  373. package/dist/components/ui/overlays/side-panel.cjs +16 -0
  374. package/dist/components/ui/overlays/side-panel.cjs.map +1 -0
  375. package/dist/components/ui/overlays/side-panel.js +117 -0
  376. package/dist/components/ui/overlays/side-panel.js.map +1 -0
  377. package/dist/components/ui/overlays/tooltip.cjs +2 -0
  378. package/dist/components/ui/overlays/tooltip.cjs.map +1 -0
  379. package/dist/components/ui/overlays/tooltip.js +50 -0
  380. package/dist/components/ui/overlays/tooltip.js.map +1 -0
  381. package/dist/components/ui/primitives/aspect-ratio.cjs +2 -0
  382. package/dist/components/ui/primitives/aspect-ratio.cjs.map +1 -0
  383. package/dist/components/ui/primitives/aspect-ratio.js +10 -0
  384. package/dist/components/ui/primitives/aspect-ratio.js.map +1 -0
  385. package/dist/components/ui/primitives/avatar.cjs +2 -0
  386. package/dist/components/ui/primitives/avatar.cjs.map +1 -0
  387. package/dist/components/ui/primitives/avatar.js +63 -0
  388. package/dist/components/ui/primitives/avatar.js.map +1 -0
  389. package/dist/components/ui/primitives/badge.cjs +2 -0
  390. package/dist/components/ui/primitives/badge.cjs.map +1 -0
  391. package/dist/components/ui/primitives/badge.js +50 -0
  392. package/dist/components/ui/primitives/badge.js.map +1 -0
  393. package/dist/components/ui/primitives/brand-logo.cjs +2 -0
  394. package/dist/components/ui/primitives/brand-logo.cjs.map +1 -0
  395. package/dist/components/ui/primitives/brand-logo.js +74 -0
  396. package/dist/components/ui/primitives/brand-logo.js.map +1 -0
  397. package/dist/components/ui/primitives/brand-logo.negative-paths.cjs +2 -0
  398. package/dist/components/ui/primitives/brand-logo.negative-paths.cjs.map +1 -0
  399. package/dist/components/ui/primitives/brand-logo.negative-paths.js +15 -0
  400. package/dist/components/ui/primitives/brand-logo.negative-paths.js.map +1 -0
  401. package/dist/components/ui/primitives/brand-logo.positive-paths.cjs +2 -0
  402. package/dist/components/ui/primitives/brand-logo.positive-paths.cjs.map +1 -0
  403. package/dist/components/ui/primitives/brand-logo.positive-paths.js +15 -0
  404. package/dist/components/ui/primitives/brand-logo.positive-paths.js.map +1 -0
  405. package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs +2 -0
  406. package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs.map +1 -0
  407. package/dist/components/ui/primitives/brand-logo.symbol-paths.js +8 -0
  408. package/dist/components/ui/primitives/brand-logo.symbol-paths.js.map +1 -0
  409. package/dist/components/ui/primitives/button.cjs +2 -0
  410. package/dist/components/ui/primitives/button.cjs.map +1 -0
  411. package/dist/components/ui/primitives/button.js +52 -0
  412. package/dist/components/ui/primitives/button.js.map +1 -0
  413. package/dist/components/ui/primitives/label.cjs +2 -0
  414. package/dist/components/ui/primitives/label.cjs.map +1 -0
  415. package/dist/components/ui/primitives/label.js +22 -0
  416. package/dist/components/ui/primitives/label.js.map +1 -0
  417. package/dist/components/ui/primitives/progress.cjs +2 -0
  418. package/dist/components/ui/primitives/progress.cjs.map +1 -0
  419. package/dist/components/ui/primitives/progress.js +30 -0
  420. package/dist/components/ui/primitives/progress.js.map +1 -0
  421. package/dist/components/ui/primitives/separator.cjs +2 -0
  422. package/dist/components/ui/primitives/separator.cjs.map +1 -0
  423. package/dist/components/ui/primitives/separator.js +26 -0
  424. package/dist/components/ui/primitives/separator.js.map +1 -0
  425. package/dist/components/ui/primitives/skeleton.cjs +2 -0
  426. package/dist/components/ui/primitives/skeleton.cjs.map +1 -0
  427. package/dist/components/ui/primitives/skeleton.js +31 -0
  428. package/dist/components/ui/primitives/skeleton.js.map +1 -0
  429. package/dist/components/ui/use-controllable-value.cjs +2 -0
  430. package/dist/components/ui/use-controllable-value.cjs.map +1 -0
  431. package/dist/components/ui/use-controllable-value.js +14 -0
  432. package/dist/components/ui/use-controllable-value.js.map +1 -0
  433. package/dist/components/ui/utils.cjs +2 -0
  434. package/dist/components/ui/utils.cjs.map +1 -0
  435. package/dist/components/ui/utils.js +20 -0
  436. package/dist/components/ui/utils.js.map +1 -0
  437. package/dist/editor.cjs +2 -0
  438. package/dist/editor.cjs.map +1 -0
  439. package/dist/editor.d.cts +114 -0
  440. package/dist/editor.d.ts +114 -0
  441. package/dist/editor.js +12 -0
  442. package/dist/editor.js.map +1 -0
  443. package/dist/hooks/use-data-table-filters.cjs +2 -0
  444. package/dist/hooks/use-data-table-filters.cjs.map +1 -0
  445. package/dist/hooks/use-data-table-filters.js +118 -0
  446. package/dist/hooks/use-data-table-filters.js.map +1 -0
  447. package/dist/hooks/use-data-table.cjs +2 -0
  448. package/dist/hooks/use-data-table.cjs.map +1 -0
  449. package/dist/hooks/use-data-table.js +84 -0
  450. package/dist/hooks/use-data-table.js.map +1 -0
  451. package/dist/hooks/use-mobile.cjs +2 -0
  452. package/dist/hooks/use-mobile.cjs.map +1 -0
  453. package/dist/hooks/use-mobile.js +17 -0
  454. package/dist/hooks/use-mobile.js.map +1 -0
  455. package/dist/hooks/use-table-pagination.cjs +2 -0
  456. package/dist/hooks/use-table-pagination.cjs.map +1 -0
  457. package/dist/hooks/use-table-pagination.js +44 -0
  458. package/dist/hooks/use-table-pagination.js.map +1 -0
  459. package/dist/index.cjs +1 -242
  460. package/dist/index.cjs.map +1 -1
  461. package/dist/index.css +1 -1
  462. package/dist/index.d.cts +2939 -0
  463. package/dist/index.d.ts +2939 -149
  464. package/dist/index.js +375 -63715
  465. package/dist/index.js.map +1 -1
  466. package/dist/preset.css +352 -0
  467. package/dist/toast-theme.css +100 -0
  468. package/dist/tokens.css +471 -0
  469. package/package.json +144 -45
  470. package/scripts/codemod-v2-renames.mjs +101 -0
  471. package/scripts/codemod-v2-toast.mjs +84 -0
  472. package/dist/components/figma/ImageWithFallback.d.ts +0 -3
  473. package/dist/components/figma/ImageWithFallback.d.ts.map +0 -1
  474. package/dist/components/print-templates/ContractTemplate.d.ts +0 -89
  475. package/dist/components/print-templates/ContractTemplate.d.ts.map +0 -1
  476. package/dist/components/print-templates/ProposalTemplate.d.ts +0 -41
  477. package/dist/components/print-templates/ProposalTemplate.d.ts.map +0 -1
  478. package/dist/components/print-templates/index.d.ts +0 -22
  479. package/dist/components/print-templates/index.d.ts.map +0 -1
  480. package/dist/components/print-templates/shared/PrintFooter.d.ts +0 -21
  481. package/dist/components/print-templates/shared/PrintFooter.d.ts.map +0 -1
  482. package/dist/components/print-templates/shared/PrintHeader.d.ts +0 -38
  483. package/dist/components/print-templates/shared/PrintHeader.d.ts.map +0 -1
  484. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts +0 -22
  485. package/dist/components/print-templates/shared/PrintInfoGrid.d.ts.map +0 -1
  486. package/dist/components/print-templates/shared/PrintSection.d.ts +0 -29
  487. package/dist/components/print-templates/shared/PrintSection.d.ts.map +0 -1
  488. package/dist/components/print-templates/shared/PrintSignature.d.ts +0 -27
  489. package/dist/components/print-templates/shared/PrintSignature.d.ts.map +0 -1
  490. package/dist/components/print-templates/shared/PrintTable.d.ts +0 -44
  491. package/dist/components/print-templates/shared/PrintTable.d.ts.map +0 -1
  492. package/dist/components/timeline-demo.d.ts +0 -3
  493. package/dist/components/timeline-demo.d.ts.map +0 -1
  494. package/dist/components/ui/accordion.d.ts +0 -8
  495. package/dist/components/ui/accordion.d.ts.map +0 -1
  496. package/dist/components/ui/advanced-data-table.d.ts +0 -100
  497. package/dist/components/ui/advanced-data-table.d.ts.map +0 -1
  498. package/dist/components/ui/alert-dialog.d.ts +0 -15
  499. package/dist/components/ui/alert-dialog.d.ts.map +0 -1
  500. package/dist/components/ui/alert-toast.d.ts +0 -11
  501. package/dist/components/ui/alert-toast.d.ts.map +0 -1
  502. package/dist/components/ui/alert.d.ts +0 -10
  503. package/dist/components/ui/alert.d.ts.map +0 -1
  504. package/dist/components/ui/app-layout-primary-nav.d.ts +0 -30
  505. package/dist/components/ui/app-layout-primary-nav.d.ts.map +0 -1
  506. package/dist/components/ui/app-layout-secondary-nav.d.ts +0 -34
  507. package/dist/components/ui/app-layout-secondary-nav.d.ts.map +0 -1
  508. package/dist/components/ui/app-layout-user-menu.d.ts +0 -28
  509. package/dist/components/ui/app-layout-user-menu.d.ts.map +0 -1
  510. package/dist/components/ui/aspect-ratio.d.ts +0 -4
  511. package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
  512. package/dist/components/ui/auth-layout.d.ts +0 -28
  513. package/dist/components/ui/auth-layout.d.ts.map +0 -1
  514. package/dist/components/ui/avatar.d.ts +0 -21
  515. package/dist/components/ui/avatar.d.ts.map +0 -1
  516. package/dist/components/ui/badge.d.ts +0 -18
  517. package/dist/components/ui/badge.d.ts.map +0 -1
  518. package/dist/components/ui/brand-logo.d.ts +0 -7
  519. package/dist/components/ui/brand-logo.d.ts.map +0 -1
  520. package/dist/components/ui/breadcrumb.d.ts +0 -12
  521. package/dist/components/ui/breadcrumb.d.ts.map +0 -1
  522. package/dist/components/ui/button.d.ts +0 -15
  523. package/dist/components/ui/button.d.ts.map +0 -1
  524. package/dist/components/ui/calendar.d.ts +0 -31
  525. package/dist/components/ui/calendar.d.ts.map +0 -1
  526. package/dist/components/ui/card.d.ts +0 -10
  527. package/dist/components/ui/card.d.ts.map +0 -1
  528. package/dist/components/ui/carousel.d.ts +0 -20
  529. package/dist/components/ui/carousel.d.ts.map +0 -1
  530. package/dist/components/ui/chart.d.ts +0 -45
  531. package/dist/components/ui/chart.d.ts.map +0 -1
  532. package/dist/components/ui/checkbox.d.ts +0 -5
  533. package/dist/components/ui/checkbox.d.ts.map +0 -1
  534. package/dist/components/ui/collapsible.d.ts +0 -6
  535. package/dist/components/ui/collapsible.d.ts.map +0 -1
  536. package/dist/components/ui/color-picker.d.ts +0 -13
  537. package/dist/components/ui/color-picker.d.ts.map +0 -1
  538. package/dist/components/ui/combobox.d.ts +0 -118
  539. package/dist/components/ui/combobox.d.ts.map +0 -1
  540. package/dist/components/ui/command.d.ts +0 -17
  541. package/dist/components/ui/command.d.ts.map +0 -1
  542. package/dist/components/ui/comment-system.d.ts +0 -43
  543. package/dist/components/ui/comment-system.d.ts.map +0 -1
  544. package/dist/components/ui/context-menu.d.ts +0 -26
  545. package/dist/components/ui/context-menu.d.ts.map +0 -1
  546. package/dist/components/ui/contract-print.d.ts +0 -82
  547. package/dist/components/ui/contract-print.d.ts.map +0 -1
  548. package/dist/components/ui/currency-input.d.ts +0 -11
  549. package/dist/components/ui/currency-input.d.ts.map +0 -1
  550. package/dist/components/ui/data-table.d.ts +0 -30
  551. package/dist/components/ui/data-table.d.ts.map +0 -1
  552. package/dist/components/ui/date-picker.d.ts +0 -111
  553. package/dist/components/ui/date-picker.d.ts.map +0 -1
  554. package/dist/components/ui/date-range-picker.d.ts +0 -128
  555. package/dist/components/ui/date-range-picker.d.ts.map +0 -1
  556. package/dist/components/ui/dialog.d.ts +0 -14
  557. package/dist/components/ui/dialog.d.ts.map +0 -1
  558. package/dist/components/ui/document-editor.d.ts +0 -14
  559. package/dist/components/ui/document-editor.d.ts.map +0 -1
  560. package/dist/components/ui/donut-chart.d.ts +0 -32
  561. package/dist/components/ui/donut-chart.d.ts.map +0 -1
  562. package/dist/components/ui/drawer.d.ts +0 -14
  563. package/dist/components/ui/drawer.d.ts.map +0 -1
  564. package/dist/components/ui/dropdown-menu.d.ts +0 -26
  565. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  566. package/dist/components/ui/editable-badge.d.ts +0 -98
  567. package/dist/components/ui/editable-badge.d.ts.map +0 -1
  568. package/dist/components/ui/editorial-calendar.d.ts +0 -22
  569. package/dist/components/ui/editorial-calendar.d.ts.map +0 -1
  570. package/dist/components/ui/empty-state.d.ts +0 -59
  571. package/dist/components/ui/empty-state.d.ts.map +0 -1
  572. package/dist/components/ui/filter-bar.d.ts +0 -16
  573. package/dist/components/ui/filter-bar.d.ts.map +0 -1
  574. package/dist/components/ui/filter-builder.d.ts +0 -39
  575. package/dist/components/ui/filter-builder.d.ts.map +0 -1
  576. package/dist/components/ui/filter-chip.d.ts +0 -8
  577. package/dist/components/ui/filter-chip.d.ts.map +0 -1
  578. package/dist/components/ui/form.d.ts +0 -25
  579. package/dist/components/ui/form.d.ts.map +0 -1
  580. package/dist/components/ui/gantt-chart.d.ts +0 -28
  581. package/dist/components/ui/gantt-chart.d.ts.map +0 -1
  582. package/dist/components/ui/hover-card.d.ts +0 -7
  583. package/dist/components/ui/hover-card.d.ts.map +0 -1
  584. package/dist/components/ui/illustrations.d.ts +0 -76
  585. package/dist/components/ui/illustrations.d.ts.map +0 -1
  586. package/dist/components/ui/index.d.ts +0 -91
  587. package/dist/components/ui/index.d.ts.map +0 -1
  588. package/dist/components/ui/input-group.d.ts +0 -19
  589. package/dist/components/ui/input-group.d.ts.map +0 -1
  590. package/dist/components/ui/input-otp.d.ts +0 -12
  591. package/dist/components/ui/input-otp.d.ts.map +0 -1
  592. package/dist/components/ui/input-validation.d.ts +0 -35
  593. package/dist/components/ui/input-validation.d.ts.map +0 -1
  594. package/dist/components/ui/input.d.ts +0 -4
  595. package/dist/components/ui/input.d.ts.map +0 -1
  596. package/dist/components/ui/kanban-card.d.ts +0 -59
  597. package/dist/components/ui/kanban-card.d.ts.map +0 -1
  598. package/dist/components/ui/kanban-generic-card.d.ts +0 -43
  599. package/dist/components/ui/kanban-generic-card.d.ts.map +0 -1
  600. package/dist/components/ui/kpi-card.d.ts +0 -45
  601. package/dist/components/ui/kpi-card.d.ts.map +0 -1
  602. package/dist/components/ui/label.d.ts +0 -5
  603. package/dist/components/ui/label.d.ts.map +0 -1
  604. package/dist/components/ui/lista-anexos-arquivo.d.ts +0 -47
  605. package/dist/components/ui/lista-anexos-arquivo.d.ts.map +0 -1
  606. package/dist/components/ui/mention-list.d.ts +0 -7
  607. package/dist/components/ui/mention-list.d.ts.map +0 -1
  608. package/dist/components/ui/menubar.d.ts +0 -27
  609. package/dist/components/ui/menubar.d.ts.map +0 -1
  610. package/dist/components/ui/month-range-picker.d.ts +0 -71
  611. package/dist/components/ui/month-range-picker.d.ts.map +0 -1
  612. package/dist/components/ui/multi-select.d.ts +0 -98
  613. package/dist/components/ui/multi-select.d.ts.map +0 -1
  614. package/dist/components/ui/navigation-menu.d.ts +0 -15
  615. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  616. package/dist/components/ui/number-input.d.ts +0 -83
  617. package/dist/components/ui/number-input.d.ts.map +0 -1
  618. package/dist/components/ui/page-header.d.ts +0 -32
  619. package/dist/components/ui/page-header.d.ts.map +0 -1
  620. package/dist/components/ui/pagination.d.ts +0 -14
  621. package/dist/components/ui/pagination.d.ts.map +0 -1
  622. package/dist/components/ui/password-input.d.ts +0 -7
  623. package/dist/components/ui/password-input.d.ts.map +0 -1
  624. package/dist/components/ui/popover.d.ts +0 -8
  625. package/dist/components/ui/popover.d.ts.map +0 -1
  626. package/dist/components/ui/progress-timeline.d.ts +0 -42
  627. package/dist/components/ui/progress-timeline.d.ts.map +0 -1
  628. package/dist/components/ui/progress.d.ts +0 -7
  629. package/dist/components/ui/progress.d.ts.map +0 -1
  630. package/dist/components/ui/radio-group.d.ts +0 -6
  631. package/dist/components/ui/radio-group.d.ts.map +0 -1
  632. package/dist/components/ui/resizable.d.ts +0 -9
  633. package/dist/components/ui/resizable.d.ts.map +0 -1
  634. package/dist/components/ui/saved-filters.d.ts +0 -16
  635. package/dist/components/ui/saved-filters.d.ts.map +0 -1
  636. package/dist/components/ui/scroll-area.d.ts +0 -8
  637. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  638. package/dist/components/ui/select.d.ts +0 -16
  639. package/dist/components/ui/select.d.ts.map +0 -1
  640. package/dist/components/ui/separator.d.ts +0 -5
  641. package/dist/components/ui/separator.d.ts.map +0 -1
  642. package/dist/components/ui/sheet.d.ts +0 -14
  643. package/dist/components/ui/sheet.d.ts.map +0 -1
  644. package/dist/components/ui/side-panel.d.ts +0 -40
  645. package/dist/components/ui/side-panel.d.ts.map +0 -1
  646. package/dist/components/ui/sidebar.d.ts +0 -70
  647. package/dist/components/ui/sidebar.d.ts.map +0 -1
  648. package/dist/components/ui/skeleton.d.ts +0 -8
  649. package/dist/components/ui/skeleton.d.ts.map +0 -1
  650. package/dist/components/ui/slider.d.ts +0 -5
  651. package/dist/components/ui/slider.d.ts.map +0 -1
  652. package/dist/components/ui/social-button.d.ts +0 -13
  653. package/dist/components/ui/social-button.d.ts.map +0 -1
  654. package/dist/components/ui/switch.d.ts +0 -5
  655. package/dist/components/ui/switch.d.ts.map +0 -1
  656. package/dist/components/ui/table-pagination.d.ts +0 -131
  657. package/dist/components/ui/table-pagination.d.ts.map +0 -1
  658. package/dist/components/ui/table-types.d.ts +0 -320
  659. package/dist/components/ui/table-types.d.ts.map +0 -1
  660. package/dist/components/ui/table.d.ts +0 -34
  661. package/dist/components/ui/table.d.ts.map +0 -1
  662. package/dist/components/ui/tabs.d.ts +0 -8
  663. package/dist/components/ui/tabs.d.ts.map +0 -1
  664. package/dist/components/ui/task-edit-dialog.d.ts +0 -15
  665. package/dist/components/ui/task-edit-dialog.d.ts.map +0 -1
  666. package/dist/components/ui/textarea.d.ts +0 -4
  667. package/dist/components/ui/textarea.d.ts.map +0 -1
  668. package/dist/components/ui/time-picker.d.ts +0 -85
  669. package/dist/components/ui/time-picker.d.ts.map +0 -1
  670. package/dist/components/ui/timeline.d.ts +0 -63
  671. package/dist/components/ui/timeline.d.ts.map +0 -1
  672. package/dist/components/ui/toast.d.ts +0 -5
  673. package/dist/components/ui/toast.d.ts.map +0 -1
  674. package/dist/components/ui/toggle-group.d.ts +0 -8
  675. package/dist/components/ui/toggle-group.d.ts.map +0 -1
  676. package/dist/components/ui/toggle.d.ts +0 -10
  677. package/dist/components/ui/toggle.d.ts.map +0 -1
  678. package/dist/components/ui/tooltip.d.ts +0 -8
  679. package/dist/components/ui/tooltip.d.ts.map +0 -1
  680. package/dist/components/ui/underline-tabs.d.ts +0 -29
  681. package/dist/components/ui/underline-tabs.d.ts.map +0 -1
  682. package/dist/components/ui/use-mobile.d.ts +0 -2
  683. package/dist/components/ui/use-mobile.d.ts.map +0 -1
  684. package/dist/components/ui/use-print-contract.d.ts +0 -37
  685. package/dist/components/ui/use-print-contract.d.ts.map +0 -1
  686. package/dist/components/ui/utils.d.ts +0 -3
  687. package/dist/components/ui/utils.d.ts.map +0 -1
  688. package/dist/components/ui/zona-upload-arquivo.d.ts +0 -34
  689. package/dist/components/ui/zona-upload-arquivo.d.ts.map +0 -1
  690. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.cjs","sources":["../../../../src/components/ui/forms/date-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport { format, isValid, parse, type Locale } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Calendar } from \"./calendar\";\nimport { Input } from \"./input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\nimport { TimePicker } from \"./time-picker\";\nimport { useControllableValue } from \"../use-controllable-value\";\nimport { cn } from \"../utils\";\n\nexport interface DatePickerProps {\n /**\n * Data selecionada (modo controlado). Omita para o modo não-controlado.\n */\n value?: Date;\n /**\n * Valor inicial no modo não-controlado (quando `value` não é passado).\n */\n defaultValue?: Date;\n /**\n * Callback quando a data muda. Chamado nos dois modos.\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione uma data\"\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\" ou \"dd/MM/yyyy HH:mm\" se showTime\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 * 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 5\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Horário padrão quando showTime=true e uma data é selecionada\n * @default \"09:00\"\n */\n defaultTime?: string;\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/**\n * DatePicker - Campo de seleção de data com hora opcional\n *\n * @example\n * // Apenas data\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * placeholder=\"Data de nascimento\"\n * />\n *\n * @example\n * // Data e hora\n * <DatePicker\n * value={appointmentDate}\n * onChange={setAppointmentDate}\n * placeholder=\"Data e hora da reunião\"\n * showTime\n * minuteStep={15}\n * />\n *\n * @example\n * // Com limites\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * minDate={new Date()}\n * maxDate={addMonths(new Date(), 3)}\n * />\n */\nconst DatePicker = React.forwardRef<\n React.ElementRef<typeof Input>,\n DatePickerProps\n>(({\n value: valueProp,\n defaultValue,\n onChange,\n placeholder = \"Selecione uma data\",\n disabled = false,\n minDate,\n maxDate,\n dateFormat,\n locale = ptBR,\n className,\n error = false,\n showTime = false,\n timeFormat = \"24h\",\n minuteStep = 5,\n defaultTime = \"09:00\",\n id,\n name,\n}, ref) => {\n const [value, setValue] = useControllableValue<Date>(valueProp, defaultValue, onChange);\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const [isInvalid, setIsInvalid] = React.useState(false);\n\n // Formato padrão baseado em showTime\n const displayFormat = dateFormat || (showTime ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\");\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/yyyy HH:mm:ss\",\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 \"ddMMyyyy\",\n \"ddMMyy\",\n ];\n }, [showTime]);\n\n // Sincroniza inputValue com value\n React.useEffect(() => {\n if (value) {\n setInputValue(format(value, displayFormat, { locale }));\n setIsInvalid(false);\n } else {\n setInputValue(\"\");\n setIsInvalid(false);\n }\n }, [value, displayFormat, locale]);\n\n // Extrai hora/minuto do valor atual\n const currentTime = React.useMemo(() => {\n if (!value) return defaultTime;\n const hours = value.getHours().toString().padStart(2, \"0\");\n const minutes = value.getMinutes().toString().padStart(2, \"0\");\n return `${hours}:${minutes}`;\n }, [value, defaultTime]);\n\n // Handler para seleção de data\n const handleDateSelect = (date: Date | undefined) => {\n if (disabled) return;\n if (!date) {\n setValue(undefined);\n return;\n }\n\n if (showTime) {\n // Preserva o horário atual ou usa o padrão\n const [hours, minutes] = currentTime.split(\":\").map(Number);\n date.setHours(hours, minutes, 0, 0);\n } else {\n // Sem hora, zera o horário\n date.setHours(0, 0, 0, 0);\n }\n\n setValue(date);\n\n // Fecha o popover se não tiver seleção de hora\n if (!showTime) {\n setOpen(false);\n }\n };\n\n // Handler para mudança de hora\n const handleTimeChange = (time: string) => {\n if (!value) {\n // Se não tem data, cria uma nova com a data de hoje\n const today = new Date();\n const [hours, minutes] = time.split(\":\").map(Number);\n today.setHours(hours, minutes, 0, 0);\n setValue(today);\n } else {\n // Atualiza apenas o horário\n const newDate = new Date(value);\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes, 0, 0);\n setValue(newDate);\n }\n };\n\n // Parse da data digitada\n const parseInputDate = (input: string): Date | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n // Tenta cada formato\n for (const fmt of parseFormats) {\n try {\n const parsed = parse(trimmed, fmt, new Date());\n if (isValid(parsed)) {\n // Valida limites\n if (minDate && parsed < minDate) continue;\n if (maxDate && parsed > maxDate) continue;\n return parsed;\n }\n } catch {\n continue;\n }\n }\n\n return null;\n };\n\n // Handler para input digitado\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n // Campo de data: só aceita dígitos, separadores de data e de hora.\n const newValue = e.target.value.replace(/[^\\d/:\\s]/g, \"\");\n setInputValue(newValue);\n setIsInvalid(false);\n };\n\n // Handler para blur do input (valida quando sai do campo)\n const handleInputBlur = () => {\n if (disabled) return;\n if (!inputValue.trim()) {\n setValue(undefined);\n setIsInvalid(false);\n return;\n }\n\n const parsed = parseInputDate(inputValue);\n if (parsed) {\n setValue(parsed);\n setIsInvalid(false);\n } else {\n setIsInvalid(true);\n // Mantém o inputValue para que o usuário possa corrigir\n }\n };\n\n // Handler para Enter no input\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleInputBlur();\n if (!isInvalid) {\n setOpen(true); // Abre o calendário após validar\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n // Restaura o valor original\n if (value) {\n setInputValue(format(value, displayFormat, { locale }));\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 setValue(undefined);\n setInputValue(\"\");\n setIsInvalid(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={(o) => { if (!disabled) setOpen(o); }}>\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 <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleDateSelect}\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 defaultMonth={value || undefined}\n />\n\n {showTime && (\n <div className=\"border-t p-3\">\n <TimePicker\n value={currentTime}\n onChange={handleTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"inline\"\n showIcon\n />\n </div>\n )}\n\n {showTime && (\n <div className=\"border-t p-3 flex justify-end\">\n <Button\n size=\"sm\"\n onClick={() => setOpen(false)}\n >\n Confirmar\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n\n"],"names":["DatePicker","React","valueProp","defaultValue","onChange","placeholder","disabled","minDate","maxDate","dateFormat","locale","ptBR","className","error","showTime","timeFormat","minuteStep","defaultTime","id","name","ref","value","setValue","useControllableValue","open","setOpen","inputValue","setInputValue","isInvalid","setIsInvalid","displayFormat","parseFormats","format","currentTime","hours","minutes","handleDateSelect","date","handleTimeChange","time","newDate","today","parseInputDate","input","trimmed","fmt","parsed","parse","isValid","handleInputChange","newValue","handleInputBlur","handleInputKeyDown","handleClear","jsxs","Popover","o","jsx","Input","cn","Button","X","PopoverTrigger","CalendarIcon","PopoverContent","Calendar","TimePicker"],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ "use client";
2
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
3
+ import { format as S, parse as G, isValid as J } from "date-fns";
4
+ import { ptBR as Q } from "date-fns/locale";
5
+ import { X as U, CalendarIcon as W } from "lucide-react";
6
+ import * as c from "react";
7
+ import { Button as H } from "../primitives/button.js";
8
+ import { Calendar as Y } from "./calendar.js";
9
+ import { Input as Z } from "./input.js";
10
+ import { Popover as _, PopoverTrigger as T, PopoverContent as ee } from "../overlays/popover.js";
11
+ import { TimePicker as te } from "./time-picker.js";
12
+ import { useControllableValue as re } from "../use-controllable-value.js";
13
+ import { cn as ne } from "../utils.js";
14
+ const se = c.forwardRef(({
15
+ value: w,
16
+ defaultValue: k,
17
+ onChange: P,
18
+ placeholder: x = "Selecione uma data",
19
+ disabled: s = !1,
20
+ minDate: d,
21
+ maxDate: p,
22
+ dateFormat: D,
23
+ locale: y = Q,
24
+ className: V,
25
+ error: N = !1,
26
+ showTime: i = !1,
27
+ timeFormat: B = "24h",
28
+ minuteStep: j = 5,
29
+ defaultTime: C = "09:00",
30
+ id: z,
31
+ name: E
32
+ }, F) => {
33
+ const [r, l] = re(w, k, P), [R, h] = c.useState(!1), [v, f] = c.useState(""), [g, o] = c.useState(!1), M = D || (i ? "dd/MM/yyyy HH:mm" : "dd/MM/yyyy"), K = c.useMemo(() => i ? [
34
+ "dd/MM/yyyy HH:mm",
35
+ "dd/MM/yyyy HH:mm:ss",
36
+ "dd/MM/yy HH:mm",
37
+ "d/M/yyyy HH:mm",
38
+ "d/M/yy HH:mm"
39
+ ] : [
40
+ "dd/MM/yyyy",
41
+ "dd/MM/yy",
42
+ "d/M/yyyy",
43
+ "d/M/yy",
44
+ "ddMMyyyy",
45
+ "ddMMyy"
46
+ ], [i]);
47
+ c.useEffect(() => {
48
+ r ? (f(S(r, M, { locale: y })), o(!1)) : (f(""), o(!1));
49
+ }, [r, M, y]);
50
+ const I = c.useMemo(() => {
51
+ if (!r) return C;
52
+ const e = r.getHours().toString().padStart(2, "0"), t = r.getMinutes().toString().padStart(2, "0");
53
+ return `${e}:${t}`;
54
+ }, [r, C]), O = (e) => {
55
+ if (!s) {
56
+ if (!e) {
57
+ l(void 0);
58
+ return;
59
+ }
60
+ if (i) {
61
+ const [t, u] = I.split(":").map(Number);
62
+ e.setHours(t, u, 0, 0);
63
+ } else
64
+ e.setHours(0, 0, 0, 0);
65
+ l(e), i || h(!1);
66
+ }
67
+ }, $ = (e) => {
68
+ if (r) {
69
+ const t = new Date(r), [u, a] = e.split(":").map(Number);
70
+ t.setHours(u, a, 0, 0), l(t);
71
+ } else {
72
+ const t = /* @__PURE__ */ new Date(), [u, a] = e.split(":").map(Number);
73
+ t.setHours(u, a, 0, 0), l(t);
74
+ }
75
+ }, A = (e) => {
76
+ const t = e.trim();
77
+ if (!t) return null;
78
+ for (const u of K)
79
+ try {
80
+ const a = G(t, u, /* @__PURE__ */ new Date());
81
+ if (J(a)) {
82
+ if (d && a < d || p && a > p) continue;
83
+ return a;
84
+ }
85
+ } catch {
86
+ continue;
87
+ }
88
+ return null;
89
+ }, L = (e) => {
90
+ if (s) return;
91
+ const t = e.target.value.replace(/[^\d/:\s]/g, "");
92
+ f(t), o(!1);
93
+ }, b = () => {
94
+ if (s) return;
95
+ if (!v.trim()) {
96
+ l(void 0), o(!1);
97
+ return;
98
+ }
99
+ const e = A(v);
100
+ e ? (l(e), o(!1)) : o(!0);
101
+ }, X = (e) => {
102
+ e.key === "Enter" ? (e.preventDefault(), b(), g || h(!0)) : e.key === "Escape" && (e.preventDefault(), f(r ? S(r, M, { locale: y }) : ""), o(!1));
103
+ }, q = (e) => {
104
+ e.stopPropagation(), l(void 0), f(""), o(!1);
105
+ };
106
+ return /* @__PURE__ */ m(_, { open: !s && R, onOpenChange: (e) => {
107
+ s || h(e);
108
+ }, children: [
109
+ /* @__PURE__ */ m("div", { className: "relative w-full", children: [
110
+ /* @__PURE__ */ n(
111
+ Z,
112
+ {
113
+ ref: F,
114
+ id: z,
115
+ name: E,
116
+ value: v,
117
+ onChange: L,
118
+ onBlur: b,
119
+ onKeyDown: X,
120
+ placeholder: x,
121
+ disabled: s,
122
+ "aria-invalid": N || g,
123
+ className: ne(
124
+ "pr-20",
125
+ (N || g) && "border-destructive focus-visible:ring-destructive/20",
126
+ V
127
+ )
128
+ }
129
+ ),
130
+ /* @__PURE__ */ m("div", { className: "absolute inset-y-0 right-0 flex items-center gap-1 pr-1", children: [
131
+ v && !s && /* @__PURE__ */ m(
132
+ H,
133
+ {
134
+ type: "button",
135
+ variant: "ghost",
136
+ size: "sm",
137
+ className: "h-7 w-7 p-0 hover:bg-transparent",
138
+ onClick: q,
139
+ tabIndex: -1,
140
+ children: [
141
+ /* @__PURE__ */ n(U, { className: "h-4 w-4 text-muted-foreground hover:text-foreground" }),
142
+ /* @__PURE__ */ n("span", { className: "sr-only", children: "Limpar" })
143
+ ]
144
+ }
145
+ ),
146
+ /* @__PURE__ */ n(T, { asChild: !0, children: /* @__PURE__ */ n(
147
+ H,
148
+ {
149
+ type: "button",
150
+ variant: "ghost",
151
+ size: "sm",
152
+ className: "h-7 w-7 p-0 hover:bg-transparent",
153
+ disabled: s,
154
+ "aria-label": "Abrir calendário",
155
+ children: /* @__PURE__ */ n(W, { className: "h-4 w-4 text-muted-foreground" })
156
+ }
157
+ ) })
158
+ ] })
159
+ ] }),
160
+ /* @__PURE__ */ m(ee, { className: "w-auto p-0", align: "start", children: [
161
+ /* @__PURE__ */ n(
162
+ Y,
163
+ {
164
+ mode: "single",
165
+ selected: r,
166
+ onSelect: O,
167
+ disabled: (e) => !!(d && e < d || p && e > p),
168
+ locale: y,
169
+ autoFocus: !0,
170
+ defaultMonth: r || void 0
171
+ }
172
+ ),
173
+ i && /* @__PURE__ */ n("div", { className: "border-t p-3", children: /* @__PURE__ */ n(
174
+ te,
175
+ {
176
+ value: I,
177
+ onChange: $,
178
+ format: B,
179
+ minuteStep: j,
180
+ variant: "inline",
181
+ showIcon: !0
182
+ }
183
+ ) }),
184
+ i && /* @__PURE__ */ n("div", { className: "border-t p-3 flex justify-end", children: /* @__PURE__ */ n(
185
+ H,
186
+ {
187
+ size: "sm",
188
+ onClick: () => h(!1),
189
+ children: "Confirmar"
190
+ }
191
+ ) })
192
+ ] })
193
+ ] });
194
+ });
195
+ se.displayName = "DatePicker";
196
+ export {
197
+ se as DatePicker
198
+ };
199
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.js","sources":["../../../../src/components/ui/forms/date-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport { format, isValid, parse, type Locale } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Calendar } from \"./calendar\";\nimport { Input } from \"./input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\nimport { TimePicker } from \"./time-picker\";\nimport { useControllableValue } from \"../use-controllable-value\";\nimport { cn } from \"../utils\";\n\nexport interface DatePickerProps {\n /**\n * Data selecionada (modo controlado). Omita para o modo não-controlado.\n */\n value?: Date;\n /**\n * Valor inicial no modo não-controlado (quando `value` não é passado).\n */\n defaultValue?: Date;\n /**\n * Callback quando a data muda. Chamado nos dois modos.\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione uma data\"\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\" ou \"dd/MM/yyyy HH:mm\" se showTime\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 * 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 5\n */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /**\n * Horário padrão quando showTime=true e uma data é selecionada\n * @default \"09:00\"\n */\n defaultTime?: string;\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/**\n * DatePicker - Campo de seleção de data com hora opcional\n *\n * @example\n * // Apenas data\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * placeholder=\"Data de nascimento\"\n * />\n *\n * @example\n * // Data e hora\n * <DatePicker\n * value={appointmentDate}\n * onChange={setAppointmentDate}\n * placeholder=\"Data e hora da reunião\"\n * showTime\n * minuteStep={15}\n * />\n *\n * @example\n * // Com limites\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * minDate={new Date()}\n * maxDate={addMonths(new Date(), 3)}\n * />\n */\nconst DatePicker = React.forwardRef<\n React.ElementRef<typeof Input>,\n DatePickerProps\n>(({\n value: valueProp,\n defaultValue,\n onChange,\n placeholder = \"Selecione uma data\",\n disabled = false,\n minDate,\n maxDate,\n dateFormat,\n locale = ptBR,\n className,\n error = false,\n showTime = false,\n timeFormat = \"24h\",\n minuteStep = 5,\n defaultTime = \"09:00\",\n id,\n name,\n}, ref) => {\n const [value, setValue] = useControllableValue<Date>(valueProp, defaultValue, onChange);\n const [open, setOpen] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(\"\");\n const [isInvalid, setIsInvalid] = React.useState(false);\n\n // Formato padrão baseado em showTime\n const displayFormat = dateFormat || (showTime ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy\");\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/yyyy HH:mm:ss\",\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 \"ddMMyyyy\",\n \"ddMMyy\",\n ];\n }, [showTime]);\n\n // Sincroniza inputValue com value\n React.useEffect(() => {\n if (value) {\n setInputValue(format(value, displayFormat, { locale }));\n setIsInvalid(false);\n } else {\n setInputValue(\"\");\n setIsInvalid(false);\n }\n }, [value, displayFormat, locale]);\n\n // Extrai hora/minuto do valor atual\n const currentTime = React.useMemo(() => {\n if (!value) return defaultTime;\n const hours = value.getHours().toString().padStart(2, \"0\");\n const minutes = value.getMinutes().toString().padStart(2, \"0\");\n return `${hours}:${minutes}`;\n }, [value, defaultTime]);\n\n // Handler para seleção de data\n const handleDateSelect = (date: Date | undefined) => {\n if (disabled) return;\n if (!date) {\n setValue(undefined);\n return;\n }\n\n if (showTime) {\n // Preserva o horário atual ou usa o padrão\n const [hours, minutes] = currentTime.split(\":\").map(Number);\n date.setHours(hours, minutes, 0, 0);\n } else {\n // Sem hora, zera o horário\n date.setHours(0, 0, 0, 0);\n }\n\n setValue(date);\n\n // Fecha o popover se não tiver seleção de hora\n if (!showTime) {\n setOpen(false);\n }\n };\n\n // Handler para mudança de hora\n const handleTimeChange = (time: string) => {\n if (!value) {\n // Se não tem data, cria uma nova com a data de hoje\n const today = new Date();\n const [hours, minutes] = time.split(\":\").map(Number);\n today.setHours(hours, minutes, 0, 0);\n setValue(today);\n } else {\n // Atualiza apenas o horário\n const newDate = new Date(value);\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes, 0, 0);\n setValue(newDate);\n }\n };\n\n // Parse da data digitada\n const parseInputDate = (input: string): Date | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n // Tenta cada formato\n for (const fmt of parseFormats) {\n try {\n const parsed = parse(trimmed, fmt, new Date());\n if (isValid(parsed)) {\n // Valida limites\n if (minDate && parsed < minDate) continue;\n if (maxDate && parsed > maxDate) continue;\n return parsed;\n }\n } catch {\n continue;\n }\n }\n\n return null;\n };\n\n // Handler para input digitado\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n // Campo de data: só aceita dígitos, separadores de data e de hora.\n const newValue = e.target.value.replace(/[^\\d/:\\s]/g, \"\");\n setInputValue(newValue);\n setIsInvalid(false);\n };\n\n // Handler para blur do input (valida quando sai do campo)\n const handleInputBlur = () => {\n if (disabled) return;\n if (!inputValue.trim()) {\n setValue(undefined);\n setIsInvalid(false);\n return;\n }\n\n const parsed = parseInputDate(inputValue);\n if (parsed) {\n setValue(parsed);\n setIsInvalid(false);\n } else {\n setIsInvalid(true);\n // Mantém o inputValue para que o usuário possa corrigir\n }\n };\n\n // Handler para Enter no input\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleInputBlur();\n if (!isInvalid) {\n setOpen(true); // Abre o calendário após validar\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n // Restaura o valor original\n if (value) {\n setInputValue(format(value, displayFormat, { locale }));\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 setValue(undefined);\n setInputValue(\"\");\n setIsInvalid(false);\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={(o) => { if (!disabled) setOpen(o); }}>\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 <Calendar\n mode=\"single\"\n selected={value}\n onSelect={handleDateSelect}\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 defaultMonth={value || undefined}\n />\n\n {showTime && (\n <div className=\"border-t p-3\">\n <TimePicker\n value={currentTime}\n onChange={handleTimeChange}\n format={timeFormat}\n minuteStep={minuteStep}\n variant=\"inline\"\n showIcon\n />\n </div>\n )}\n\n {showTime && (\n <div className=\"border-t p-3 flex justify-end\">\n <Button\n size=\"sm\"\n onClick={() => setOpen(false)}\n >\n Confirmar\n </Button>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n});\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n\n"],"names":["DatePicker","React","valueProp","defaultValue","onChange","placeholder","disabled","minDate","maxDate","dateFormat","locale","ptBR","className","error","showTime","timeFormat","minuteStep","defaultTime","id","name","ref","value","setValue","useControllableValue","open","setOpen","inputValue","setInputValue","isInvalid","setIsInvalid","displayFormat","parseFormats","format","currentTime","hours","minutes","handleDateSelect","date","handleTimeChange","time","newDate","today","parseInputDate","input","trimmed","fmt","parsed","parse","isValid","handleInputChange","newValue","handleInputBlur","handleInputKeyDown","handleClear","jsxs","Popover","o","jsx","Input","cn","Button","X","PopoverTrigger","CalendarIcon","PopoverContent","Calendar","TimePicker"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),ne=require("react"),l=require("date-fns"),ae=require("date-fns/locale"),$=require("lucide-react"),le=require("../utils.cjs"),ie=require("../use-controllable-value.cjs"),ce=require("./input.cjs"),g=require("../primitives/button.cjs"),ue=require("./calendar.cjs"),F=require("./time-picker.cjs"),I=require("../overlays/popover.cjs");function fe(n){const y=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const m in n)if(m!=="default"){const b=Object.getOwnPropertyDescriptor(n,m);Object.defineProperty(y,m,b.get?b:{enumerable:!0,get:()=>n[m]})}}return y.default=n,Object.freeze(y)}const u=fe(ne),me=()=>{const n=new Date;return n.setHours(0,0,0,0),[{label:"Hoje",value:{from:n,to:n}},{label:"Últimos 7 dias",value:{from:l.subDays(n,6),to:n}},{label:"Últimos 30 dias",value:{from:l.subDays(n,29),to:n}},{label:"Este mês",value:{from:l.startOfMonth(n),to:n}},{label:"Mês passado",value:{from:l.startOfMonth(l.subMonths(n,1)),to:l.endOfMonth(l.subMonths(n,1))}}]},_=u.forwardRef(({value:n,defaultValue:y,onChange:m,placeholder:b="Selecione um período",disabled:H=!1,minDate:j,maxDate:v,dateFormat:q="dd/MM/yyyy",locale:d=ae.ptBR,className:A,error:O=!1,numberOfMonths:K=2,showTime:p=!1,timeFormat:R="24h",minuteStep:B=15,presets:V,showDefaultPresets:z=!0,id:L,name:X},G)=>{const[t,c]=ie.useControllableValue(n,y,m),[J,S]=u.useState(!1),[M,h]=u.useState(""),[w,f]=u.useState(!1),x=p?`${q} HH:mm`:q,Q=u.useMemo(()=>p?["dd/MM/yyyy HH:mm","dd/MM/yy HH:mm","d/M/yyyy HH:mm","d/M/yy HH:mm"]:["dd/MM/yyyy","dd/MM/yy","d/M/yyyy","d/M/yy"],[p]);u.useEffect(()=>{if(t!=null&&t.from){const e=l.format(t.from,x,{locale:d}),s=t.to?l.format(t.to,x,{locale:d}):"";h(s?`${e} → ${s}`:e),f(!1)}else h(""),f(!1)},[t,x,d]);const E=u.useMemo(()=>[...z?me():[],...V||[]],[V,z]),C=u.useMemo(()=>{if(!(t!=null&&t.from))return"00:00";const e=t.from.getHours().toString().padStart(2,"0"),s=t.from.getMinutes().toString().padStart(2,"0");return`${e}:${s}`},[t==null?void 0:t.from]),P=u.useMemo(()=>{if(!(t!=null&&t.to))return"23:59";const e=t.to.getHours().toString().padStart(2,"0"),s=t.to.getMinutes().toString().padStart(2,"0");return`${e}:${s}`},[t==null?void 0:t.to]),U=e=>{if(!e){c(void 0);return}if(p){if(e.from){const[s,a]=C.split(":").map(Number);e.from.setHours(s,a,0,0)}if(e.to){const[s,a]=P.split(":").map(Number);e.to.setHours(s,a,0,0)}}else e.from&&e.from.setHours(0,0,0,0),e.to&&e.to.setHours(23,59,59,999);c(e)},W=e=>{if(!(t!=null&&t.from))return;const s=new Date(t.from),[a,o]=e.split(":").map(Number);s.setHours(a,o,0,0),c({...t,from:s})},Y=e=>{if(!(t!=null&&t.to))return;const s=new Date(t.to),[a,o]=e.split(":").map(Number);s.setHours(a,o,0,0),c({...t,to:s})},Z=e=>{const s={from:new Date(e.value.from),to:new Date(e.value.to)};if(p){const[a,o]=C.split(":").map(Number),[i,N]=P.split(":").map(Number);s.from.setHours(a,o,0,0),s.to.setHours(i,N,0,0)}c(s)},k=e=>{const s=e.trim();if(!s)return null;for(const a of Q)try{const o=l.parse(s,a,new Date);if(l.isValid(o)){if(j&&o<j||v&&o>v)continue;return o}}catch{continue}return null},ee=e=>{const s=e.trim();if(!s)return null;const a=["→","-","até","a"];let o=null,i=null;for(const N of a)if(s.includes(N)){const D=s.split(N).map(oe=>oe.trim());if(D.length===2&&(o=k(D[0]),i=k(D[1]),o&&i))break}return o||(o=k(s),o&&(i=new Date(o))),!o||!i?null:(o>i&&([o,i]=[i,o]),{from:o,to:i})},te=e=>{const s=e.target.value.replace(/[^\d/:\s→-]/g,"");h(s),f(!1)},T=()=>{if(!M.trim()){c(void 0),f(!1);return}const e=ee(M);e?(c(e),f(!1)):f(!0)},se=e=>{if(e.key==="Enter")e.preventDefault(),T(),w||S(!0);else if(e.key==="Escape"){if(e.preventDefault(),t!=null&&t.from){const s=l.format(t.from,x,{locale:d}),a=t.to?l.format(t.to,x,{locale:d}):"";h(a?`${s} → ${a}`:s)}else h("");f(!1)}},re=e=>{e.stopPropagation(),c(void 0),h(""),f(!1)};return r.jsxs(I.Popover,{open:J,onOpenChange:S,children:[r.jsxs("div",{className:"relative w-full",children:[r.jsx(ce.Input,{ref:G,id:L,name:X,value:M,onChange:te,onBlur:T,onKeyDown:se,placeholder:b,disabled:H,"aria-invalid":O||w,className:le.cn("pr-20",(O||w)&&"border-destructive focus-visible:ring-destructive/20",A)}),r.jsxs("div",{className:"absolute inset-y-0 right-0 flex items-center gap-1 pr-1",children:[M&&!H&&r.jsxs(g.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0 hover:bg-transparent",onClick:re,tabIndex:-1,children:[r.jsx($.X,{className:"h-4 w-4 text-muted-foreground hover:text-foreground"}),r.jsx("span",{className:"sr-only",children:"Limpar"})]}),r.jsx(I.PopoverTrigger,{asChild:!0,children:r.jsx(g.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0 hover:bg-transparent",disabled:H,"aria-label":"Abrir calendário",children:r.jsx($.CalendarIcon,{className:"h-4 w-4 text-muted-foreground"})})})]})]}),r.jsx(I.PopoverContent,{className:"w-auto p-0",align:"start",children:r.jsxs("div",{className:"flex",children:[E.length>0&&r.jsxs("div",{className:"border-r p-3 space-y-1 w-32.5",children:[r.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Atalhos"}),E.map(e=>r.jsx(g.Button,{variant:"ghost",size:"sm",className:"w-full justify-start text-sm h-8 truncate",onClick:()=>Z(e),children:r.jsx("span",{className:"truncate",children:e.label})},e.label))]}),r.jsxs("div",{children:[r.jsx(ue.Calendar,{mode:"range",selected:t,onSelect:U,numberOfMonths:K,disabled:e=>!!(j&&e<j||v&&e>v),locale:d,autoFocus:!0}),p&&(t==null?void 0:t.from)&&(t==null?void 0:t.to)&&r.jsxs("div",{className:"border-t p-3 flex gap-6",children:[r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Hora início"}),r.jsx(F.TimePicker,{value:C,onChange:W,format:R,minuteStep:B,variant:"select",showIcon:!1})]}),r.jsxs("div",{className:"flex-1",children:[r.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:"Hora fim"}),r.jsx(F.TimePicker,{value:P,onChange:Y,format:R,minuteStep:B,variant:"select",showIcon:!1})]})]}),r.jsxs("div",{className:"border-t p-3 flex justify-end gap-2",children:[r.jsx(g.Button,{variant:"outline",size:"sm",onClick:()=>{c(void 0)},children:"Limpar"}),r.jsx(g.Button,{size:"sm",onClick:()=>S(!1),children:"Confirmar"})]})]})]})})]})});_.displayName="DateRangePicker";exports.DateRangePicker=_;
2
+ //# sourceMappingURL=date-range-picker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.cjs","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 { useControllableValue } from \"../use-controllable-value\";\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 (modo controlado). Omita para o modo não-controlado.\n */\n value?: DateRange;\n /**\n * Valor inicial no modo não-controlado (quando `value` não é passado).\n */\n defaultValue?: DateRange;\n /**\n * Callback quando o intervalo muda. Chamado nos dois modos.\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: valueProp,\n defaultValue,\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 [value, setValue] = useControllableValue<DateRange>(valueProp, defaultValue, onChange);\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 setValue(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 setValue(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 setValue({ ...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 setValue({ ...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 setValue(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 // Campo de data: só aceita dígitos, separadores de data/hora e o \"→\" do intervalo.\n const newValue = e.target.value.replace(/[^\\d/:\\s→-]/g, \"\");\n setInputValue(newValue);\n setIsInvalid(false);\n };\n\n // Handler para blur do input\n const handleInputBlur = () => {\n if (!inputValue.trim()) {\n setValue(undefined);\n setIsInvalid(false);\n return;\n }\n\n const parsed = parseInputRange(inputValue);\n if (parsed) {\n setValue(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 setValue(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 setValue(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","valueProp","defaultValue","onChange","placeholder","disabled","minDate","maxDate","dateFormat","locale","ptBR","className","error","numberOfMonths","showTime","timeFormat","minuteStep","presets","showDefaultPresets","id","name","ref","value","setValue","useControllableValue","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","newValue","handleInputBlur","handleInputKeyDown","handleClear","jsxs","Popover","jsx","Input","cn","Button","X","PopoverTrigger","CalendarIcon","PopoverContent","Calendar","date","TimePicker"],"mappings":"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"}