@iclips/ui 1.4.12 → 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 -63146
  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 @@
1
+ {"version":3,"file":"editorial-calendar.js","sources":["../../../../src/components/ui/data/editorial-calendar.tsx"],"sourcesContent":["import React, { useState, useMemo } from \"react\";\nimport { \n format, \n addMonths, \n subMonths, \n startOfMonth, \n endOfMonth, \n startOfWeek, \n endOfWeek, \n eachDayOfInterval, \n isSameMonth, \n isSameDay, \n isToday,\n addDays,\n setHours,\n getHours,\n getMinutes,\n differenceInMinutes,\n addHours,\n} from \"date-fns\";\nimport { \n ChevronLeft, \n ChevronRight, \n Plus, \n GripVertical,\n Instagram,\n Linkedin,\n Facebook,\n Twitter,\n Youtube,\n Calendar as CalendarIcon,\n Clock,\n PanelLeftClose,\n PanelLeftOpen,\n\n} from \"lucide-react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../primitives/avatar\";\nimport { Badge } from \"../primitives/badge\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../overlays/dialog\";\nimport { ToggleGroup, ToggleGroupItem } from \"../forms/toggle-group\";\nimport { ScrollArea } from \"../layout/scroll-area\";\nimport { DndProvider, useDrag, useDrop } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\n\n// --- Tipos ---\n\nexport type SocialChannel = \"instagram\" | \"linkedin\" | \"facebook\" | \"twitter\" | \"youtube\" | \"blog\" | \"other\";\nexport type TaskStatus = \"idea\" | \"planned\" | \"in-progress\" | \"approval\" | \"scheduled\" | \"published\";\nexport type CalendarMode = \"editorial\" | \"execution\";\n\nexport interface CalendarTask {\n id: string;\n title: string;\n date?: Date | string; // Data de início\n endDate?: Date | string; // Data de término (opcional)\n channel?: SocialChannel;\n status: TaskStatus;\n imageUrl?: string;\n description?: string;\n assignees?: {\n name: string;\n avatar?: string;\n }[];\n color?: string; // Cor customizada opcional\n}\n\ninterface BaseCalendarProps {\n tasks: CalendarTask[];\n onTaskUpdate: (updatedTask: CalendarTask) => void;\n onTaskCreate?: (newTask: Partial<CalendarTask>) => void;\n className?: string;\n}\n\ntype CalendarView = \"month\" | \"week\" | \"day\";\n\n/** Props compartilhadas pelas views de topo (recebem o grid inteiro de dias). */\ninterface CalendarViewProps {\n days: Date[];\n tasks: CalendarTask[];\n onDropTask: (taskId: string, date: Date) => void;\n onTaskClick: (task: CalendarTask) => void;\n onAddClick: (date?: Date) => void;\n}\n\n/** Props compartilhadas pelas colunas/células internas (já recebem um único dia). */\ninterface CalendarColumnProps {\n tasks: CalendarTask[];\n onDropTask: (taskId: string, date: Date) => void;\n onTaskClick: (task: CalendarTask) => void;\n onAddClick: (date: Date) => void;\n}\n\n// --- Constantes e Auxiliares ---\n\nconst ItemTypes = {\n TASK: 'task',\n};\n\nconst ChannelIcons: Record<SocialChannel, React.ElementType> = {\n instagram: Instagram,\n linkedin: Linkedin,\n facebook: Facebook,\n twitter: Twitter,\n youtube: Youtube,\n blog: CalendarIcon,\n other: CalendarIcon,\n};\n\n// Ícones de canal são monocromáticos — a forma do ícone carrega a identidade,\n// a cor fica no token neutro. Se o time quiser cores por canal no futuro, a\n// paleta de marca de terceiros entra como tokens `--brand-*` em tokens.css.\n\nconst StatusColors: Record<TaskStatus, string> = {\n idea: \"bg-muted text-muted-foreground border-border\",\n planned: \"bg-info/10 text-info-emphasis border-info/20\",\n \"in-progress\": \"bg-warning/10 text-warning-emphasis border-warning/20\",\n approval: \"bg-accent text-accent-foreground border-border\",\n scheduled: \"bg-success/10 text-success-emphasis border-success/20\",\n published: \"bg-foreground text-background border-foreground\",\n};\n\n// Rotating chart tokens for Execution mode cards (flip in dark mode)\nconst PastelColors = [\n \"bg-chart-2/15 border-chart-2/30 text-chart-2\",\n \"bg-chart-3/15 border-chart-3/30 text-chart-3\",\n \"bg-chart-1/15 border-chart-1/30 text-chart-1\",\n \"bg-chart-4/15 border-chart-4/30 text-chart-4\",\n \"bg-chart-5/15 border-chart-5/30 text-chart-5\",\n \"bg-chart-8/15 border-chart-8/30 text-chart-8\",\n];\n\nconst getRandomColor = (id: string) => {\n const index = id.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return PastelColors[index % PastelColors.length];\n};\n\n// --- Draggable Card Component ---\n\nfunction DraggableTaskCard({ \n task, \n view = \"month\", \n mode = \"editorial\",\n onClick, \n style \n}: { \n task: CalendarTask; \n view?: \"month\" | \"week\" | \"day\" | \"4day\" | \"backlog\" | \"list\"; \n mode?: CalendarMode;\n onClick: () => void;\n style?: React.CSSProperties;\n}) {\n const [{ isDragging }, drag] = useDrag(() => ({\n type: ItemTypes.TASK,\n item: { id: task.id, type: ItemTypes.TASK },\n collect: (monitor) => ({\n isDragging: !!monitor.isDragging(),\n }),\n }), [task.id]);\n\n const ChannelIcon = task.channel ? ChannelIcons[task.channel] : CalendarIcon;\n \n const startDate = task.date ? new Date(task.date) : null;\n const endDate = task.endDate ? new Date(task.endDate) : (startDate ? addHours(startDate, 1) : null);\n \n const timeString = startDate ? format(startDate, \"HH:mm\") : null;\n const durationString = startDate && endDate \n ? `${format(startDate, \"HH:mm\")} - ${format(endDate, \"HH:mm\")}`\n : timeString;\n\n // ---- STYLES ----\n \n // 1. EDITORIAL - WEEK / DAY (Feed Style)\n if (mode === \"editorial\" && (view === \"week\" || view === \"day\")) {\n return (\n <div\n ref={drag as unknown as React.Ref<HTMLDivElement>}\n onClick={onClick}\n className={cn(\n \"relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-3 overflow-hidden\",\n isDragging ? \"opacity-50\" : \"opacity-100\",\n task.status === \"published\" ? \"border-l-2 border-l-foreground\" : \"border-l-2 border-l-primary\"\n )}\n >\n {/* Header: Time & Channel */}\n <div className=\"flex items-center justify-between px-3 py-2 border-b bg-muted/50\">\n <div className=\"flex items-center gap-2\">\n <ChannelIcon size={14} className=\"text-muted-foreground\" />\n {timeString && <span className=\"text-xs font-medium text-muted-foreground\">{timeString}</span>}\n </div>\n <div className=\"opacity-0 group-hover:opacity-100 text-muted-foreground cursor-grab\">\n <GripVertical size={14} />\n </div>\n </div>\n\n {/* Image (Large) */}\n {task.imageUrl && (\n <div className=\"w-full aspect-video bg-muted relative border-b\">\n <img src={task.imageUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n </div>\n )}\n\n {/* Content */}\n <div className=\"p-3\">\n <h4 className=\"text-sm font-medium text-foreground line-clamp-2 mb-2 leading-snug\">\n {task.title}\n </h4>\n <div className=\"flex items-center justify-between\">\n <Badge variant=\"outline\" className={cn(\"px-1.5 py-0 text-[10px] h-5 font-normal uppercase tracking-wide\", StatusColors[task.status])}>\n {task.status}\n </Badge>\n {task.assignees && task.assignees.length > 0 && (\n <div className=\"flex -space-x-2\">\n {task.assignees.slice(0,2).map((a, i) => (\n <Avatar key={i} className=\"w-5 h-5 border border-background\">\n <AvatarImage src={a.avatar} />\n <AvatarFallback className=\"text-[8px]\">{a.name[0]}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n }\n\n // 2. EDITORIAL - MONTH (Compact Grid)\n if (mode === \"editorial\" && view === \"month\") {\n return (\n <div\n ref={drag as unknown as React.Ref<HTMLDivElement>}\n onClick={onClick}\n className={cn(\n \"relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-1 overflow-hidden flex items-center gap-2 p-1.5\",\n isDragging ? \"opacity-50\" : \"opacity-100\",\n task.status === \"published\" ? \"border-l-2 border-l-foreground\" : \"border-l-2 border-l-primary\"\n )}\n >\n {task.imageUrl && (\n <div className=\"w-8 h-8 flex-shrink-0 bg-muted rounded overflow-hidden\">\n <img src={task.imageUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-1.5\">\n <ChannelIcon size={12} className=\"text-muted-foreground\" />\n <span className=\"truncate font-medium text-xs\">{task.title}</span>\n </div>\n </div>\n </div>\n );\n }\n\n // 3. EXECUTION - TIMELINE (Week / Day)\n if (mode === \"execution\" && (view === \"week\" || view === \"day\")) {\n return (\n <div\n ref={drag as unknown as React.Ref<HTMLDivElement>}\n onClick={onClick}\n style={style}\n className={cn(\n \"absolute z-10 rounded-md border shadow-sm p-1.5 text-xs flex flex-col overflow-hidden hover:overflow-visible hover:h-auto! hover:min-h-[min-content] hover:z-50 transition-all cursor-pointer group\",\n isDragging ? \"opacity-50\" : \"opacity-100\",\n task.color || getRandomColor(task.id)\n )}\n >\n <div className=\"flex items-center gap-1 mb-0.5 font-semibold opacity-75 text-[10px] leading-none\">\n <Clock size={10} />\n <span className=\"truncate\">{durationString}</span>\n </div>\n \n <div className=\"font-bold leading-tight mb-1 line-clamp-2 text-[11px]\">{task.title}</div>\n \n <div className=\"mt-auto flex items-center justify-between pt-1\">\n <div className=\"flex -space-x-1.5\">\n {task.assignees?.map((a, i) => (\n <Avatar key={i} className=\"w-4 h-4 border border-background\">\n <AvatarImage src={a.avatar} />\n <AvatarFallback className=\"text-[8px]\">{a.name[0]}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n {task.status !== 'published' && (\n <div className={cn(\"w-2 h-2 rounded-full\", StatusColors[task.status].split(\" \")[1].replace(\"text-\", \"bg-\"))} />\n )}\n </div>\n </div>\n );\n }\n \n // 4. EXECUTION - MONTH\n if (mode === \"execution\" && view === \"month\") {\n return (\n <div\n ref={drag as unknown as React.Ref<HTMLDivElement>}\n onClick={onClick}\n className={cn(\n \"relative group cursor-pointer rounded px-2 py-1 mb-1 text-xs truncate font-medium transition-all\",\n isDragging ? \"opacity-50\" : \"opacity-100\",\n task.color || getRandomColor(task.id).replace(\"bg-\", \"bg-opacity-20 bg-\") // lighter background\n )}\n >\n {timeString} {task.title}\n </div>\n );\n }\n\n // 5. BACKLOG (Generic)\n return (\n <div\n ref={drag as unknown as React.Ref<HTMLDivElement>}\n onClick={onClick}\n className={cn(\n \"relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-2 p-2 flex items-start gap-3\",\n isDragging ? \"opacity-50\" : \"opacity-100\",\n mode === 'editorial' && (task.status === \"published\" ? \"border-l-2 border-l-foreground\" : \"border-l-2 border-l-primary\")\n )}\n >\n {mode === 'editorial' && task.imageUrl && (\n <div className=\"w-10 h-10 flex-shrink-0 bg-muted rounded overflow-hidden\">\n <img src={task.imageUrl} alt=\"\" className=\"w-full h-full object-cover\" />\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-1.5 mb-1\">\n {mode === 'editorial' && <ChannelIcon size={12} className=\"text-muted-foreground\" />}\n <span className=\"truncate font-medium text-sm\">{task.title}</span>\n </div>\n <Badge variant=\"secondary\" className=\"text-[10px] h-4 px-1 py-0\">{task.status}</Badge>\n </div>\n </div>\n );\n}\n\n// --- Layout Views ---\n\n// 1. EDITORIAL WEEK/DAY VIEW (Columnar, NOT Timeline)\nfunction EditorialColumnView({\n days,\n tasks,\n onDropTask,\n onTaskClick,\n onAddClick,\n view\n}: CalendarViewProps & { view: CalendarView }) {\n return (\n <div className={cn(\n \"grid h-full min-h-[calc(100vh-200px)] bg-muted/30\",\n view === 'week' ? \"grid-cols-7 divide-x\" : \"grid-cols-1 border-x\"\n )}>\n {days.map((day: Date) => {\n const dayTasks = tasks\n .filter((t: CalendarTask) => t.date && isSameDay(new Date(t.date), day))\n .sort((a: CalendarTask, b: CalendarTask) => {\n // Sort by time if available\n if (a.date && b.date) {\n return new Date(a.date).getTime() - new Date(b.date).getTime();\n }\n return 0;\n });\n\n return (\n <EditorialColumn \n key={day.toISOString()}\n day={day}\n tasks={dayTasks}\n onDropTask={onDropTask}\n onTaskClick={onTaskClick}\n onAddClick={onAddClick}\n isToday={isToday(day)}\n />\n )\n })}\n </div>\n );\n}\n\nfunction EditorialColumn({ day, tasks, onDropTask, onTaskClick, onAddClick, isToday }: CalendarColumnProps & { day: Date; isToday: boolean }) {\n const [{ isOver }, drop] = useDrop(() => ({\n accept: ItemTypes.TASK,\n drop: (item: { id: string }) => onDropTask(item.id, day),\n collect: (monitor) => ({\n isOver: !!monitor.isOver(),\n }),\n }), [day, onDropTask]);\n\n return (\n <div \n ref={drop as unknown as React.Ref<HTMLDivElement>}\n className={cn(\n \"flex flex-col h-full min-h-0 transition-colors\",\n isOver && \"bg-accent ring-inset ring-2 ring-ring\"\n )}\n >\n {/* Sticky Header */}\n <div className={cn(\n \"p-2 text-center border-b bg-card sticky top-0 z-10\",\n isToday && \"bg-accent/50\"\n )}>\n <div className=\"text-xs font-semibold uppercase text-muted-foreground mb-1\">{format(day, 'EEE')}</div>\n <div className={cn(\n \"w-8 h-8 rounded-full flex items-center justify-center mx-auto text-sm font-medium\",\n isToday ? \"bg-primary text-primary-foreground\" : \"text-foreground bg-muted\"\n )}>\n {format(day, 'd')}\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 p-2 space-y-3 overflow-y-auto\">\n <Button \n variant=\"outline\" \n size=\"sm\" \n className=\"w-full mb-2 justify-center px-1\"\n onClick={() => onAddClick(day)}\n >\n <Plus size={12} className=\"flex-shrink-0\" /> \n <span className=\"truncate ml-1.5 hidden xl:inline\">Add Post</span>\n <span className=\"truncate ml-1.5 inline xl:hidden\">Add</span>\n </Button>\n\n {tasks.map((task: CalendarTask) => (\n <DraggableTaskCard \n key={task.id}\n task={task}\n view=\"week\" // Triggers the Editorial Feed Card style\n mode=\"editorial\"\n onClick={() => onTaskClick(task)}\n />\n ))}\n </div>\n </div>\n );\n}\n\n// 2. EXECUTION TIMELINE VIEW (Gantt/Agenda Style)\nfunction ExecutionTimelineView({ \n days,\n tasks, \n onDropTask, \n onTaskClick, \n onAddClick\n}: { \n days: Date[];\n tasks: CalendarTask[]; \n onDropTask: (taskId: string, date: Date) => void; \n onTaskClick: (task: CalendarTask) => void;\n onAddClick: (date: Date) => void;\n}) {\n \n const HOURS = Array.from({ length: 24 }, (_, i) => i);\n\n return (\n <div className=\"flex h-full relative overflow-y-auto bg-card select-none\">\n {/* Time Axis */}\n <div className=\"w-14 flex-shrink-0 border-r bg-card sticky left-0 z-30\">\n <div className=\"h-10 border-b bg-card sticky top-0 z-40 flex-shrink-0\" /> {/* Fixed height header match */}\n {HOURS.map(hour => (\n <div key={hour} className=\"h-24 border-b text-right pr-2 pt-2 text-xs text-muted-foreground font-medium relative\">\n <span className=\"-top-2.5 relative\">{format(setHours(new Date(), hour), \"ha\")}</span>\n </div>\n ))}\n </div>\n\n {/* Columns Container */}\n <div className=\"flex flex-1 min-w-0 relative\">\n {days.map((day, dayIndex) => {\n const dayTasks = tasks.filter(t => t.date && isSameDay(new Date(t.date), day));\n \n return (\n <ExecutionTimelineColumn \n key={day.toISOString()}\n day={day}\n tasks={dayTasks}\n onDropTask={onDropTask}\n onTaskClick={onTaskClick}\n onAddClick={onAddClick}\n isLast={dayIndex === days.length - 1}\n HOURS={HOURS}\n />\n );\n })}\n \n {/* Horizontal Grid Lines (Background) */}\n <div className=\"absolute inset-0 pointer-events-none z-0\">\n <div className=\"h-10 border-b bg-transparent\" /> {/* Header Spacer in grid */}\n {HOURS.map(hour => (\n <div key={hour} className=\"h-24 border-b border-dashed border-border w-full\" />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction ExecutionTimelineColumn({\n day,\n tasks,\n onDropTask,\n onTaskClick,\n onAddClick,\n isLast,\n HOURS\n}: CalendarColumnProps & { day: Date; isLast: boolean; HOURS: number[] }) {\n const [{ isOver }, drop] = useDrop(() => ({\n accept: ItemTypes.TASK,\n drop: (item: { id: string }) => {\n onDropTask(item.id, day);\n },\n collect: (monitor) => ({\n isOver: !!monitor.isOver(),\n }),\n }), [day, onDropTask]);\n\n return (\n <div \n ref={drop as unknown as React.Ref<HTMLDivElement>}\n className={cn(\n \"flex-1 relative min-w-[150px]\", \n !isLast && \"border-r\",\n isOver && \"bg-accent/50\"\n )}\n >\n {/* Header (Only for timeline view within scroll area) */}\n <div className=\"sticky top-0 z-20 bg-card border-b h-10 flex items-center justify-center shadow-sm\">\n <div className=\"text-xs font-bold text-muted-foreground\">{format(day, 'EEE')} <span className={cn(\"ml-1\", isToday(day) && \"text-primary\")}>{format(day, 'd')}</span></div>\n </div>\n\n {/* Clickable areas for adding tasks */}\n {HOURS.map((hour: number) => (\n <div \n key={hour} \n className=\"h-24 w-full absolute hover:bg-muted/50 transition-colors cursor-pointer z-10\"\n style={{ top: `${hour * 96 + 40}px` }} \n onClick={(e) => {\n e.stopPropagation();\n const d = new Date(day);\n d.setHours(hour, 0);\n onAddClick(d);\n }}\n />\n ))}\n\n {/* Render Tasks */}\n {tasks.map((task: CalendarTask) => {\n const taskStart = task.date ? new Date(task.date) : new Date();\n const taskEnd = task.endDate ? new Date(task.endDate) : addHours(taskStart, 1);\n \n const startHour = getHours(taskStart);\n const startMin = getMinutes(taskStart);\n \n // Calculate duration in minutes for height\n let durationMins = differenceInMinutes(taskEnd, taskStart);\n if (durationMins < 30) durationMins = 30; // Min height\n\n const topPosition = (startHour * 96) + ((startMin / 60) * 96) + 40; // +40 for header offset\n const height = (durationMins / 60) * 96;\n\n return (\n <DraggableTaskCard \n key={task.id} \n task={task} \n view=\"week\" // Logic handled inside card based on 'mode' prop\n mode=\"execution\"\n onClick={() => onTaskClick(task)}\n style={{ \n top: `${topPosition}px`, \n height: `${height}px`, \n left: '4px',\n right: '4px',\n position: 'absolute'\n }}\n />\n );\n })}\n </div>\n );\n}\n\n// 3. MONTH VIEW\nfunction MonthView({\n days,\n tasks,\n currentDate,\n onDropTask,\n onTaskClick,\n onAddClick,\n mode\n}: CalendarViewProps & { currentDate: Date; mode: CalendarMode }) {\n return (\n <div className=\"grid grid-cols-7 auto-rows-fr min-h-[800px]\">\n {days.map((day: Date) => {\n const dayTasks = tasks.filter((t: CalendarTask) => \n t.date && isSameDay(new Date(t.date), day)\n );\n\n return (\n <DroppableMonthCell\n key={day.toISOString()}\n date={day}\n tasks={dayTasks}\n isCurrentMonth={isSameMonth(day, currentDate)}\n onDropTask={onDropTask}\n onTaskClick={onTaskClick}\n onAddClick={onAddClick}\n mode={mode}\n />\n );\n })}\n </div>\n )\n}\n\nfunction DroppableMonthCell({\n date,\n tasks,\n isCurrentMonth,\n onDropTask,\n onTaskClick,\n onAddClick,\n mode\n}: CalendarColumnProps & { date: Date; isCurrentMonth: boolean; mode: CalendarMode }) {\n const [{ isOver }, drop] = useDrop(() => ({\n accept: ItemTypes.TASK,\n drop: (item: { id: string }) => onDropTask(item.id, date),\n collect: (monitor) => ({\n isOver: !!monitor.isOver(),\n }),\n }), [date, onDropTask]);\n\n const isTodayDate = isToday(date);\n\n return (\n <div\n ref={drop as unknown as React.Ref<HTMLDivElement>}\n className={cn(\n \"min-h-[120px] border-b border-r p-2 relative transition-colors group flex flex-col\",\n !isCurrentMonth && \"bg-muted/50 text-muted-foreground\",\n isOver && \"bg-accent ring-2 ring-inset ring-ring\",\n isTodayDate && \"bg-accent/30\"\n )}\n >\n <div className=\"flex justify-between items-start mb-2\">\n <span className={cn(\n \"text-sm font-medium rounded-full w-7 h-7 flex items-center justify-center\",\n isTodayDate ? \"bg-primary text-primary-foreground\" : \"text-foreground\"\n )}>\n {format(date, \"d\")}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={() => onAddClick(date)}\n aria-label={`Agendar publicação em ${format(date, \"d/MM\")}`}\n >\n <Plus size={14} />\n </Button>\n </div>\n\n <div className=\"flex-1 flex flex-col gap-1\">\n {tasks.map((task: CalendarTask) => (\n <DraggableTaskCard \n key={task.id}\n task={task}\n view=\"month\"\n mode={mode}\n onClick={() => onTaskClick(task)}\n />\n ))}\n </div>\n </div>\n )\n}\n\n// --- Task Modal (Shared) ---\n\nfunction TaskModal({ \n isOpen, \n onClose, \n task, \n onSave, \n isNew = false \n}: { \n isOpen: boolean; \n onClose: () => void; \n task?: Partial<CalendarTask>; \n onSave: (task: Partial<CalendarTask>) => void;\n isNew?: boolean;\n}) {\n const [editedTask, setEditedTask] = useState<Partial<CalendarTask>>(task || {});\n\n // Reset state when task changes\n useMemo(() => {\n setEditedTask(task || {});\n }, [task]);\n\n const handleSave = () => {\n onSave(editedTask);\n onClose();\n };\n\n return (\n <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>\n <DialogContent className=\"sm:max-w-[600px]\">\n <DialogHeader>\n <DialogTitle>{isNew ? \"Create New Task\" : \"Edit Task\"}</DialogTitle>\n <DialogDescription>\n {isNew ? \"Enter the details for the new task below.\" : \"Modify the details of the selected task.\"}\n </DialogDescription>\n </DialogHeader>\n \n <div className=\"grid gap-6 py-4\">\n <div className=\"grid grid-cols-4 items-center gap-4\">\n <label htmlFor=\"title\" className=\"text-right text-sm font-medium\">\n Title\n </label>\n <input\n id=\"title\"\n className=\"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={editedTask.title || \"\"}\n onChange={(e) => setEditedTask({ ...editedTask, title: e.target.value })}\n placeholder=\"e.g. New Feature Announcement\"\n />\n </div>\n\n <div className=\"grid grid-cols-4 items-center gap-4\">\n <label className=\"text-right text-sm font-medium\">\n Time\n </label>\n <div className=\"col-span-3 flex gap-2 items-center\">\n <input\n type=\"date\"\n className=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm\"\n value={editedTask.date instanceof Date ? format(editedTask.date, 'yyyy-MM-dd') : (typeof editedTask.date === 'string' ? editedTask.date.split('T')[0] : '')}\n onChange={(e) => {\n const newDateStr = e.target.value;\n const current = editedTask.date instanceof Date ? editedTask.date : new Date();\n const newDate = new Date(`${newDateStr}T${format(current, 'HH:mm')}`);\n setEditedTask({ ...editedTask, date: newDate })\n }}\n />\n <span className=\"text-sm text-muted-foreground\">at</span>\n <input \n type=\"time\"\n className=\"w-32 flex h-9 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm\"\n value={editedTask.date instanceof Date ? format(editedTask.date, 'HH:mm') : '09:00'}\n onChange={(e) => {\n const timeStr = e.target.value;\n const dateStr = editedTask.date instanceof Date ? format(editedTask.date, 'yyyy-MM-dd') : format(new Date(), 'yyyy-MM-dd');\n setEditedTask({ ...editedTask, date: new Date(`${dateStr}T${timeStr}`) })\n }}\n />\n </div>\n </div>\n \n <div className=\"grid grid-cols-4 items-center gap-4\">\n <label htmlFor=\"channel\" className=\"text-right text-sm font-medium\">\n Channel / Category\n </label>\n <select\n id=\"channel\"\n className=\"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm\"\n value={editedTask.channel || \"instagram\"}\n onChange={(e) => setEditedTask({ ...editedTask, channel: e.target.value as SocialChannel })}\n >\n {Object.keys(ChannelIcons).map((channel) => (\n <option key={channel} value={channel}>{channel.charAt(0).toUpperCase() + channel.slice(1)}</option>\n ))}\n </select>\n </div>\n\n <div className=\"grid grid-cols-4 items-center gap-4\">\n <label htmlFor=\"status\" className=\"text-right text-sm font-medium\">\n Status\n </label>\n <select\n id=\"status\"\n className=\"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm\"\n value={editedTask.status || \"idea\"}\n onChange={(e) => setEditedTask({ ...editedTask, status: e.target.value as TaskStatus })}\n >\n {Object.keys(StatusColors).map((status) => (\n <option key={status} value={status}>{status.charAt(0).toUpperCase() + status.slice(1)}</option>\n ))}\n </select>\n </div>\n\n <div className=\"grid grid-cols-4 items-start gap-4\">\n <label htmlFor=\"description\" className=\"text-right text-sm font-medium pt-2\">\n Description\n </label>\n <textarea\n id=\"description\"\n className=\"col-span-3 flex min-h-[80px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={editedTask.description || \"\"}\n onChange={(e) => setEditedTask({ ...editedTask, description: e.target.value })}\n placeholder=\"Details about this post...\"\n />\n </div>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={onClose}>Cancel</Button>\n <Button onClick={handleSave}>Save Changes</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\n// --- Shared Controller Logic ---\n\nfunction useCalendarController({\n tasks: initialTasks,\n onTaskUpdate,\n onTaskCreate,\n defaultView = \"month\"\n}: BaseCalendarProps & { defaultView?: \"month\" | \"week\" | \"day\" }) {\n const [currentDate, setCurrentDate] = useState(new Date());\n const [view, setView] = useState<\"month\" | \"week\" | \"day\">(defaultView);\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n \n // Modal state\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [editingTask, setEditingTask] = useState<Partial<CalendarTask> | null>(null);\n const [isNewTask, setIsNewTask] = useState(false);\n\n // Calendar Grid Generation\n const calendarDays = useMemo(() => {\n let startDate, endDate;\n\n if (view === 'month') {\n const monthStart = startOfMonth(currentDate);\n const monthEnd = endOfMonth(monthStart);\n startDate = startOfWeek(monthStart);\n endDate = endOfWeek(monthEnd);\n } else if (view === 'week') {\n startDate = startOfWeek(currentDate);\n endDate = endOfWeek(currentDate);\n } else {\n // Day view\n startDate = currentDate;\n endDate = currentDate;\n }\n\n return eachDayOfInterval({ start: startDate, end: endDate });\n }, [currentDate, view]);\n\n // Derived State\n const unplannedTasks = initialTasks.filter(t => !t.date);\n const scheduledTasks = initialTasks.filter(t => t.date);\n\n const handlePrev = () => {\n if (view === 'month') setCurrentDate(subMonths(currentDate, 1));\n else if (view === 'week') setCurrentDate(addDays(currentDate, -7));\n else setCurrentDate(addDays(currentDate, -1));\n };\n\n const handleNext = () => {\n if (view === 'month') setCurrentDate(addMonths(currentDate, 1));\n else if (view === 'week') setCurrentDate(addDays(currentDate, 7));\n else setCurrentDate(addDays(currentDate, 1));\n };\n\n const handleToday = () => setCurrentDate(new Date());\n\n const handleDropTask = (taskId: string, targetDate: Date, mode: CalendarMode) => {\n const task = initialTasks.find(t => t.id === taskId);\n if (task) {\n let newDate = new Date(targetDate);\n \n if (view === 'month' || mode === 'editorial') {\n if (task.date) {\n const oldDate = new Date(task.date);\n newDate.setHours(oldDate.getHours(), oldDate.getMinutes());\n } else {\n newDate.setHours(9, 0);\n }\n } \n \n const updatedTask = { ...task, date: newDate };\n onTaskUpdate(updatedTask);\n }\n };\n\n const handleTaskClick = (task: CalendarTask) => {\n setEditingTask(task);\n setIsNewTask(false);\n setIsModalOpen(true);\n };\n\n const handleAddClick = (date?: Date) => {\n const d = date || new Date();\n if (getHours(d) === 0 && getMinutes(d) === 0) {\n d.setHours(9, 0);\n }\n setEditingTask({\n date: d,\n status: \"idea\",\n channel: \"instagram\"\n });\n setIsNewTask(true);\n setIsModalOpen(true);\n };\n\n const handleModalSave = (task: Partial<CalendarTask>) => {\n if (isNewTask) {\n if (onTaskCreate) {\n onTaskCreate(task);\n }\n } else {\n if (task.id) {\n onTaskUpdate(task as CalendarTask);\n }\n }\n setIsModalOpen(false);\n };\n\n return {\n currentDate,\n view,\n setView,\n isSidebarOpen,\n setIsSidebarOpen,\n isModalOpen,\n setIsModalOpen,\n editingTask,\n isNewTask,\n calendarDays,\n unplannedTasks,\n scheduledTasks,\n handlePrev,\n handleNext,\n handleToday,\n handleDropTask,\n handleTaskClick,\n handleAddClick,\n handleModalSave\n };\n}\n\n// --- Helper Components ---\n\nfunction CalendarSidebar({ isOpen, setIsOpen, tasks, onAddClick, onTaskClick, mode }: {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n tasks: CalendarTask[];\n onAddClick: () => void;\n onTaskClick: (task: CalendarTask) => void;\n mode: CalendarMode;\n}) {\n if (!isOpen) {\n return (\n <div className=\"border-r bg-card flex flex-col items-center py-4 w-12 flex-shrink-0 cursor-pointer hover:bg-muted transition-colors\" onClick={() => setIsOpen(true)}>\n <PanelLeftOpen className=\"text-muted-foreground mb-4\" size={20} />\n <div className=\"flex-1 flex items-center justify-center min-h-0\">\n <div className=\"whitespace-nowrap text-xs font-medium text-muted-foreground -rotate-90 transform\">BACKLOG</div>\n </div>\n <Badge className=\"mt-2 h-5 w-5 p-0 flex items-center justify-center rounded-full bg-primary text-[10px]\">{tasks.length}</Badge>\n </div>\n );\n }\n\n return (\n <div className=\"w-72 border-r bg-muted/50 flex flex-col transition-all duration-300 flex-shrink-0\">\n <div className=\"p-4 border-b bg-card flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-semibold text-sm text-foreground\">Backlog</h3>\n <Badge variant=\"secondary\" className=\"bg-muted text-xs\">{tasks.length}</Badge>\n </div>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\" onClick={() => setIsOpen(false)} aria-label=\"Recolher backlog\">\n <PanelLeftClose size={16} />\n </Button>\n </div>\n <div className=\"px-4 pt-3 bg-card pb-3 border-b space-y-2\">\n <Button \n onClick={onAddClick} \n variant=\"outline\" \n size=\"sm\" \n className=\"w-full justify-start pl-2\"\n >\n <Plus size={12} className=\"mr-1.5\" /> New Task\n </Button>\n </div>\n \n <ScrollArea className=\"flex-1 p-3\">\n <div className=\"space-y-2\">\n {tasks.length === 0 ? (\n <div className=\"text-center py-10 px-4 border-2 border-dashed border-border rounded-lg\">\n <p className=\"text-xs text-foreground/70\">Nenhum item sem agenda</p>\n </div>\n ) : (\n tasks.map((task: CalendarTask) => (\n <DraggableTaskCard \n key={task.id} \n task={task} \n view=\"backlog\"\n mode={mode}\n onClick={() => onTaskClick(task)} \n />\n ))\n )}\n </div>\n </ScrollArea>\n </div>\n );\n}\n\nfunction CalendarHeader({ title, onPrev, onNext, onToday, onAdd, view, setView }: {\n title: string;\n onPrev: () => void;\n onNext: () => void;\n onToday: () => void;\n onAdd: () => void;\n view: CalendarView;\n setView: (view: CalendarView) => void;\n mode?: CalendarMode;\n}) {\n return (\n <div className=\"flex flex-col xl:flex-row items-center justify-between p-4 border-b gap-4 flex-shrink-0 bg-card\">\n <div className=\"flex items-center gap-4 w-full xl:w-auto justify-between xl:justify-start\">\n <div className=\"flex items-center border rounded-md bg-card shadow-sm\">\n <Button variant=\"ghost\" size=\"icon\" onClick={onPrev} className=\"h-8 w-8 rounded-r-none\" aria-label=\"Anterior\">\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" onClick={onToday} className=\"h-8 px-3 rounded-none border-x text-sm font-medium hover:bg-muted\">\n Hoje\n </Button>\n <Button variant=\"ghost\" size=\"icon\" onClick={onNext} className=\"h-8 w-8 rounded-l-none\" aria-label=\"Próximo\">\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <h2 className=\"text-lg font-bold text-foreground whitespace-nowrap\">\n {title}\n </h2>\n </div>\n\n <div className=\"flex items-center gap-3 w-full xl:w-auto overflow-x-auto pb-1 xl:pb-0 justify-end\">\n <ToggleGroup\n type=\"single\"\n value={view}\n onValueChange={(v) => v && setView(v as CalendarView)}\n className=\"flex-shrink-0\"\n aria-label=\"Visualização do calendário\"\n >\n <ToggleGroupItem value=\"month\" className=\"text-xs\">Mês</ToggleGroupItem>\n <ToggleGroupItem value=\"week\" className=\"text-xs\">Semana</ToggleGroupItem>\n <ToggleGroupItem value=\"day\" className=\"text-xs\">Dia</ToggleGroupItem>\n </ToggleGroup>\n\n <Button\n variant=\"default\"\n className=\"h-9 px-4 flex-shrink-0\"\n onClick={onAdd}\n >\n <Plus className=\"mr-2 h-4 w-4\" /> Criar\n </Button>\n </div>\n </div>\n );\n}\n\nfunction MonthHeader({ days }: { days: Date[] }) {\n return (\n <div className=\"grid grid-cols-7 border-b bg-muted/50 flex-shrink-0 divide-x\">\n {days.slice(0, 7).map((day, index) => (\n <div key={index} className=\"py-2 text-center group\">\n <div className={cn(\"text-xs font-semibold uppercase tracking-wider\", isToday(day) ? \"text-primary\" : \"text-foreground/70\")}>\n {format(day, 'EEE')}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// --- EXPORTED COMPONENTS ---\n\nexport function EditorialCalendar(props: BaseCalendarProps) {\n const ctrl = useCalendarController({ ...props, defaultView: \"month\" });\n \n return (\n <DndProvider backend={HTML5Backend}>\n <div className={cn(\"flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm\", props.className)}>\n <CalendarSidebar \n isOpen={ctrl.isSidebarOpen} \n setIsOpen={ctrl.setIsSidebarOpen} \n tasks={ctrl.unplannedTasks} \n onAddClick={() => ctrl.handleAddClick()}\n onTaskClick={ctrl.handleTaskClick}\n mode=\"editorial\"\n />\n \n <div className=\"flex-1 flex flex-col min-w-0 bg-card\">\n <CalendarHeader \n title={ctrl.view === 'day' ? format(ctrl.currentDate, \"MMM d, yyyy\") : format(ctrl.currentDate, \"MMMM yyyy\")}\n onPrev={ctrl.handlePrev}\n onNext={ctrl.handleNext}\n onToday={ctrl.handleToday}\n onAdd={() => ctrl.handleAddClick(ctrl.currentDate)}\n view={ctrl.view}\n setView={ctrl.setView}\n mode=\"editorial\"\n />\n\n {ctrl.view === 'month' && <MonthHeader days={ctrl.calendarDays} />}\n \n <div className=\"flex-1 overflow-hidden flex flex-col relative\">\n {ctrl.view === 'month' ? (\n <MonthView \n days={ctrl.calendarDays}\n tasks={ctrl.scheduledTasks}\n currentDate={ctrl.currentDate}\n onDropTask={(id: string, d: Date) => ctrl.handleDropTask(id, d, \"editorial\")}\n onTaskClick={ctrl.handleTaskClick}\n onAddClick={ctrl.handleAddClick}\n mode=\"editorial\"\n />\n ) : (\n <EditorialColumnView \n days={ctrl.calendarDays}\n tasks={ctrl.scheduledTasks}\n onDropTask={(id: string, d: Date) => ctrl.handleDropTask(id, d, \"editorial\")}\n onTaskClick={ctrl.handleTaskClick}\n onAddClick={ctrl.handleAddClick}\n view={ctrl.view}\n />\n )}\n </div>\n </div>\n\n {ctrl.isModalOpen && (\n <TaskModal\n isOpen={ctrl.isModalOpen}\n onClose={() => ctrl.setIsModalOpen(false)}\n task={ctrl.editingTask || {}}\n onSave={ctrl.handleModalSave}\n isNew={ctrl.isNewTask}\n />\n )}\n </div>\n </DndProvider>\n );\n}\n\nexport function TaskCalendar(props: BaseCalendarProps) {\n const ctrl = useCalendarController({ ...props, defaultView: \"week\" });\n\n return (\n <DndProvider backend={HTML5Backend}>\n <div className={cn(\"flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm\", props.className)}>\n <CalendarSidebar \n isOpen={ctrl.isSidebarOpen} \n setIsOpen={ctrl.setIsSidebarOpen} \n tasks={ctrl.unplannedTasks} \n onAddClick={() => ctrl.handleAddClick()}\n onTaskClick={ctrl.handleTaskClick}\n mode=\"execution\"\n />\n \n <div className=\"flex-1 flex flex-col min-w-0 bg-card\">\n <CalendarHeader \n title={ctrl.view === 'day' ? format(ctrl.currentDate, \"MMM d, yyyy\") : format(ctrl.currentDate, \"MMMM yyyy\")}\n onPrev={ctrl.handlePrev}\n onNext={ctrl.handleNext}\n onToday={ctrl.handleToday}\n onAdd={() => ctrl.handleAddClick(ctrl.currentDate)}\n view={ctrl.view}\n setView={ctrl.setView}\n mode=\"execution\"\n />\n \n {ctrl.view === 'month' && <MonthHeader days={ctrl.calendarDays} />}\n\n <div className=\"flex-1 overflow-hidden flex flex-col relative\">\n {ctrl.view === 'month' ? (\n <MonthView \n days={ctrl.calendarDays}\n tasks={ctrl.scheduledTasks}\n currentDate={ctrl.currentDate}\n onDropTask={(id: string, d: Date) => ctrl.handleDropTask(id, d, \"execution\")}\n onTaskClick={ctrl.handleTaskClick}\n onAddClick={ctrl.handleAddClick}\n mode=\"execution\"\n />\n ) : (\n <ExecutionTimelineView \n days={ctrl.calendarDays}\n tasks={ctrl.scheduledTasks}\n onDropTask={(id: string, d: Date) => ctrl.handleDropTask(id, d, \"execution\")}\n onTaskClick={ctrl.handleTaskClick}\n onAddClick={ctrl.handleAddClick}\n />\n )}\n </div>\n </div>\n\n {ctrl.isModalOpen && (\n <TaskModal\n isOpen={ctrl.isModalOpen}\n onClose={() => ctrl.setIsModalOpen(false)}\n task={ctrl.editingTask || {}}\n onSave={ctrl.handleModalSave}\n isNew={ctrl.isNewTask}\n />\n )}\n </div>\n </DndProvider>\n );\n}\n"],"names":["ItemTypes","ChannelIcons","Instagram","Linkedin","Facebook","Twitter","Youtube","CalendarIcon","StatusColors","PastelColors","getRandomColor","id","index","acc","char","DraggableTaskCard","task","view","mode","onClick","style","isDragging","drag","useDrag","monitor","ChannelIcon","startDate","endDate","addHours","timeString","format","durationString","jsxs","cn","jsx","GripVertical","Badge","a","i","Avatar","AvatarImage","AvatarFallback","Clock","_a","EditorialColumnView","days","tasks","onDropTask","onTaskClick","onAddClick","day","dayTasks","t","isSameDay","b","EditorialColumn","isToday","isOver","drop","useDrop","item","Button","Plus","ExecutionTimelineView","HOURS","_","hour","setHours","dayIndex","ExecutionTimelineColumn","isLast","e","d","taskStart","taskEnd","startHour","getHours","startMin","getMinutes","durationMins","differenceInMinutes","topPosition","height","MonthView","currentDate","DroppableMonthCell","isSameMonth","date","isCurrentMonth","isTodayDate","TaskModal","isOpen","onClose","onSave","isNew","editedTask","setEditedTask","useState","useMemo","handleSave","Dialog","open","DialogContent","DialogHeader","DialogTitle","DialogDescription","newDateStr","current","newDate","timeStr","dateStr","channel","status","DialogFooter","useCalendarController","initialTasks","onTaskUpdate","onTaskCreate","defaultView","setCurrentDate","setView","isSidebarOpen","setIsSidebarOpen","isModalOpen","setIsModalOpen","editingTask","setEditingTask","isNewTask","setIsNewTask","calendarDays","monthStart","startOfMonth","monthEnd","endOfMonth","startOfWeek","endOfWeek","eachDayOfInterval","unplannedTasks","scheduledTasks","subMonths","addDays","addMonths","taskId","targetDate","oldDate","updatedTask","CalendarSidebar","setIsOpen","PanelLeftClose","ScrollArea","PanelLeftOpen","CalendarHeader","title","onPrev","onNext","onToday","onAdd","ChevronLeft","ChevronRight","ToggleGroup","v","ToggleGroupItem","MonthHeader","EditorialCalendar","props","ctrl","DndProvider","HTML5Backend","TaskCalendar"],"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"),u=require("../utils.cjs"),n=require("../primitives/button.cjs"),a=require("lucide-react"),m=require("./filter-chip.cjs");function x({activeFilters:r=[],onClearAll:l,onOpenFilters:i,className:o,children:c}){const t=r.length>0;return e.jsxs("div",{className:u.cn("flex items-center gap-2 flex-wrap",o),children:[e.jsxs(n.Button,{variant:"outline",size:"sm",onClick:i,className:"gap-2",children:[e.jsx(a.Filter,{className:"h-4 w-4"}),"Filtros",t&&e.jsx("span",{className:"ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center",children:r.length})]}),t&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-4 w-px bg-border"}),r.map(s=>e.jsx(m.FilterChip,{label:s.label,value:s.value,onRemove:s.onRemove},s.id)),e.jsxs(n.Button,{variant:"ghost",size:"sm",onClick:l,className:"gap-1 h-7 px-2",children:[e.jsx(a.X,{className:"h-3 w-3"}),"Limpar tudo"]})]}),c]})}exports.FilterBar=x;
2
+ //# sourceMappingURL=filter-bar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-bar.cjs","sources":["../../../../src/components/ui/data/filter-bar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Filter, X } from \"lucide-react\";\nimport { FilterChip } from \"./filter-chip\";\n\nexport interface ActiveFilter {\n id: string;\n label: string;\n value?: string;\n onRemove?: () => void;\n}\n\nexport interface FilterBarProps {\n activeFilters?: ActiveFilter[];\n onClearAll?: () => void;\n onOpenFilters?: () => void;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function FilterBar({\n activeFilters = [],\n onClearAll,\n onOpenFilters,\n className,\n children,\n}: FilterBarProps) {\n const hasFilters = activeFilters.length > 0;\n\n return (\n <div className={cn(\"flex items-center gap-2 flex-wrap\", className)}>\n {/* Filter Button */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onOpenFilters}\n className=\"gap-2\"\n >\n <Filter className=\"h-4 w-4\" />\n Filtros\n {hasFilters && (\n <span className=\"ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center\">\n {activeFilters.length}\n </span>\n )}\n </Button>\n\n {/* Active Filters */}\n {hasFilters && (\n <>\n <div className=\"h-4 w-px bg-border\" />\n {activeFilters.map((filter) => (\n <FilterChip\n key={filter.id}\n label={filter.label}\n value={filter.value}\n onRemove={filter.onRemove}\n />\n ))}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClearAll}\n className=\"gap-1 h-7 px-2\"\n >\n <X className=\"h-3 w-3\" />\n Limpar tudo\n </Button>\n </>\n )}\n\n {/* Additional Content */}\n {children}\n </div>\n );\n}"],"names":["FilterBar","activeFilters","onClearAll","onOpenFilters","className","children","hasFilters","cn","jsxs","Button","jsx","Filter","Fragment","filter","FilterChip","X"],"mappings":"8OAqBO,SAASA,EAAU,CACxB,cAAAC,EAAgB,CAAA,EAChB,WAAAC,EACA,cAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAAmB,CACjB,MAAMC,EAAaL,EAAc,OAAS,EAE1C,cACG,MAAA,CAAI,UAAWM,EAAAA,GAAG,oCAAqCH,CAAS,EAE/D,SAAA,CAAAI,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,UACR,KAAK,KACL,QAASN,EACT,UAAU,QAEV,SAAA,CAAAO,EAAAA,IAACC,EAAAA,OAAA,CAAO,UAAU,SAAA,CAAU,EAAE,UAE7BL,GACCI,EAAAA,IAAC,OAAA,CAAK,UAAU,wGACb,WAAc,MAAA,CACjB,CAAA,CAAA,CAAA,EAKHJ,GACCE,EAAAA,KAAAI,WAAA,CACE,SAAA,CAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,oBAAA,CAAqB,EACnCT,EAAc,IAAKY,GAClBH,EAAAA,IAACI,EAAAA,WAAA,CAEC,MAAOD,EAAO,MACd,MAAOA,EAAO,MACd,SAAUA,EAAO,QAAA,EAHZA,EAAO,EAAA,CAKf,EACDL,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,QAASP,EACT,UAAU,iBAEV,SAAA,CAAAQ,EAAAA,IAACK,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,EAAE,aAAA,CAAA,CAAA,CAE3B,EACF,EAIDV,CAAA,EACH,CAEJ"}
@@ -0,0 +1,60 @@
1
+ import { jsxs as a, jsx as e, Fragment as c } from "react/jsx-runtime";
2
+ import { cn as p } from "../utils.js";
3
+ import { Button as s } from "../primitives/button.js";
4
+ import { Filter as h, X as d } from "lucide-react";
5
+ import { FilterChip as u } from "./filter-chip.js";
6
+ function b({
7
+ activeFilters: l = [],
8
+ onClearAll: o,
9
+ onOpenFilters: n,
10
+ className: t,
11
+ children: i
12
+ }) {
13
+ const m = l.length > 0;
14
+ return /* @__PURE__ */ a("div", { className: p("flex items-center gap-2 flex-wrap", t), children: [
15
+ /* @__PURE__ */ a(
16
+ s,
17
+ {
18
+ variant: "outline",
19
+ size: "sm",
20
+ onClick: n,
21
+ className: "gap-2",
22
+ children: [
23
+ /* @__PURE__ */ e(h, { className: "h-4 w-4" }),
24
+ "Filtros",
25
+ m && /* @__PURE__ */ e("span", { className: "ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center", children: l.length })
26
+ ]
27
+ }
28
+ ),
29
+ m && /* @__PURE__ */ a(c, { children: [
30
+ /* @__PURE__ */ e("div", { className: "h-4 w-px bg-border" }),
31
+ l.map((r) => /* @__PURE__ */ e(
32
+ u,
33
+ {
34
+ label: r.label,
35
+ value: r.value,
36
+ onRemove: r.onRemove
37
+ },
38
+ r.id
39
+ )),
40
+ /* @__PURE__ */ a(
41
+ s,
42
+ {
43
+ variant: "ghost",
44
+ size: "sm",
45
+ onClick: o,
46
+ className: "gap-1 h-7 px-2",
47
+ children: [
48
+ /* @__PURE__ */ e(d, { className: "h-3 w-3" }),
49
+ "Limpar tudo"
50
+ ]
51
+ }
52
+ )
53
+ ] }),
54
+ i
55
+ ] });
56
+ }
57
+ export {
58
+ b as FilterBar
59
+ };
60
+ //# sourceMappingURL=filter-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-bar.js","sources":["../../../../src/components/ui/data/filter-bar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Filter, X } from \"lucide-react\";\nimport { FilterChip } from \"./filter-chip\";\n\nexport interface ActiveFilter {\n id: string;\n label: string;\n value?: string;\n onRemove?: () => void;\n}\n\nexport interface FilterBarProps {\n activeFilters?: ActiveFilter[];\n onClearAll?: () => void;\n onOpenFilters?: () => void;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function FilterBar({\n activeFilters = [],\n onClearAll,\n onOpenFilters,\n className,\n children,\n}: FilterBarProps) {\n const hasFilters = activeFilters.length > 0;\n\n return (\n <div className={cn(\"flex items-center gap-2 flex-wrap\", className)}>\n {/* Filter Button */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onOpenFilters}\n className=\"gap-2\"\n >\n <Filter className=\"h-4 w-4\" />\n Filtros\n {hasFilters && (\n <span className=\"ml-1 rounded-full bg-primary text-primary-foreground w-5 h-5 text-xs flex items-center justify-center\">\n {activeFilters.length}\n </span>\n )}\n </Button>\n\n {/* Active Filters */}\n {hasFilters && (\n <>\n <div className=\"h-4 w-px bg-border\" />\n {activeFilters.map((filter) => (\n <FilterChip\n key={filter.id}\n label={filter.label}\n value={filter.value}\n onRemove={filter.onRemove}\n />\n ))}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onClearAll}\n className=\"gap-1 h-7 px-2\"\n >\n <X className=\"h-3 w-3\" />\n Limpar tudo\n </Button>\n </>\n )}\n\n {/* Additional Content */}\n {children}\n </div>\n );\n}"],"names":["FilterBar","activeFilters","onClearAll","onOpenFilters","className","children","hasFilters","cn","jsxs","Button","jsx","Filter","Fragment","filter","FilterChip","X"],"mappings":";;;;;AAqBO,SAASA,EAAU;AAAA,EACxB,eAAAC,IAAgB,CAAA;AAAA,EAChB,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,GAAmB;AACjB,QAAMC,IAAaL,EAAc,SAAS;AAE1C,2BACG,OAAA,EAAI,WAAWM,EAAG,qCAAqCH,CAAS,GAE/D,UAAA;AAAA,IAAA,gBAAAI;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,SAASN;AAAA,QACT,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,gBAAAO,EAACC,GAAA,EAAO,WAAU,UAAA,CAAU;AAAA,UAAE;AAAA,UAE7BL,KACC,gBAAAI,EAAC,QAAA,EAAK,WAAU,yGACb,YAAc,OAAA,CACjB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAKHJ,KACC,gBAAAE,EAAAI,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAF,EAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,MACnCT,EAAc,IAAI,CAACY,MAClB,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UAEC,OAAOD,EAAO;AAAA,UACd,OAAOA,EAAO;AAAA,UACd,UAAUA,EAAO;AAAA,QAAA;AAAA,QAHZA,EAAO;AAAA,MAAA,CAKf;AAAA,MACD,gBAAAL;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAASP;AAAA,UACT,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAQ,EAACK,GAAA,EAAE,WAAU,UAAA,CAAU;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAE3B,GACF;AAAA,IAIDV;AAAA,EAAA,GACH;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),w=require("react"),f=require("../utils.cjs"),v=require("../primitives/button.cjs"),N=require("lucide-react"),u=require("../overlays/popover.cjs"),T=require("../primitives/badge.cjs"),P=require("../forms/input.cjs"),R=require("../forms/checkbox.cjs"),k=require("../primitives/label.cjs"),H=require("../forms/date-picker.cjs"),B=[{value:"is",label:"é",multiSelect:!1},{value:"is_not",label:"não é",multiSelect:!1},{value:"is_any_of",label:"é qualquer um de",multiSelect:!0},{value:"is_none_of",label:"não é nenhum de",multiSelect:!0},{value:"contains",label:"contém",multiSelect:!1},{value:"does_not_contain",label:"não contém",multiSelect:!1},{value:"greater_than",label:"maior que",multiSelect:!1},{value:"greater_than_or_equal",label:"maior ou igual a",multiSelect:!1},{value:"less_than",label:"menor que",multiSelect:!1},{value:"less_than_or_equal",label:"menor ou igual a",multiSelect:!1},{value:"is_empty",label:"está vazio",multiSelect:!1},{value:"is_not_empty",label:"não está vazio",multiSelect:!1}];function L({conditions:s,onConditionsChange:d,fields:b,className:n}){const y=()=>{var o;const t={id:Math.random().toString(36).substr(2,9),field:((o=b[0])==null?void 0:o.value)||"",operator:"is",value:""};d([...s,t])},l=t=>{d(s.filter(o=>o.id!==t))},h=(t,o)=>{d(s.map(c=>c.id===t?{...c,...o}:c))};return a.jsxs("div",{className:f.cn("space-y-3",n),children:[s.length===0?a.jsx("div",{className:"text-center py-8 text-muted-foreground text-sm",children:'Nenhuma condição de filtro. Clique em "Adicionar condição" para começar.'}):s.map((t,o)=>a.jsx(I,{condition:t,fields:b,index:o,onUpdate:c=>h(t.id,c),onRemove:()=>l(t.id)},t.id)),a.jsxs(v.Button,{type:"button",variant:"outline",size:"sm",onClick:y,className:"gap-2",children:[a.jsx(N.Plus,{className:"h-4 w-4"}),"Adicionar condição"]})]})}function I({condition:s,fields:d,index:b,onUpdate:n,onRemove:y}){var q;const l=d.find(e=>e.value===s.field),h=B.find(e=>e.value===s.operator),t=(l==null?void 0:l.multiSelect)||(h==null?void 0:h.multiSelect)||!1,o=!["is_empty","is_not_empty"].includes(s.operator),[c,C]=w.useState(""),p=w.useMemo(()=>l!=null&&l.groups?l.groups.flatMap(e=>[{value:e.value??`__label__${e.label}`,label:e.label,isHeader:!0,selecionavel:!!e.value},...e.options.map(r=>({value:r.value,label:r.label,isHeader:!1,selecionavel:!0,isFilho:!0}))]):((l==null?void 0:l.options)??[]).map(e=>({value:e.value,label:e.label,isHeader:!1,selecionavel:!0})),[l==null?void 0:l.options,l==null?void 0:l.groups]),_=w.useMemo(()=>{if(!c)return p;const e=c.toLowerCase(),r=m=>m.label.toLowerCase().includes(e)||m.value.toLowerCase().includes(e);if(!(l!=null&&l.groups))return p.filter(r);const i=[];let x=null,S=!1,j=!1;for(const m of p){if(m.isHeader){x=m,S=r(m),j=!1,S&&(i.push(m),j=!0);continue}(S||r(m))&&(!j&&x&&(i.push(x),j=!0),i.push(m))}return i},[p,c,l==null?void 0:l.groups]),g=Array.isArray(s.value)?s.value:s.value?[s.value]:[],A=e=>{if(!t){n({value:e});return}const r=Array.isArray(s.value)?s.value:[],i=r.includes(e)?r.filter(x=>x!==e):[...r,e];n({value:i})},z=e=>{if(!t)return;const r=Array.isArray(s.value)?s.value:[];n({value:r.filter(i=>i!==e)})};return a.jsxs("div",{className:"flex items-start gap-2 group",children:[a.jsx("div",{className:"flex items-center h-9 px-2 text-sm text-muted-foreground",children:b===0?"Onde":"E"}),a.jsxs("div",{className:"flex-1 flex items-center gap-2 flex-wrap p-2 border rounded-lg bg-background",children:[a.jsxs(u.Popover,{children:[a.jsx(u.PopoverTrigger,{asChild:!0,children:a.jsx(v.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 font-normal hover:bg-muted",children:(l==null?void 0:l.label)||"Selecionar campo"})}),a.jsx(u.PopoverContent,{className:"w-[200px] p-2",align:"start",children:a.jsx("div",{className:"space-y-1",children:d.map(e=>a.jsx(v.Button,{variant:"ghost",size:"sm",className:f.cn("w-full justify-start",s.field===e.value&&"bg-muted"),onClick:()=>n({field:e.value,value:e.multiSelect?[]:""}),children:e.label},e.value))})})]}),a.jsxs(u.Popover,{children:[a.jsx(u.PopoverTrigger,{asChild:!0,children:a.jsx(v.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 font-normal hover:bg-muted text-muted-foreground",children:(h==null?void 0:h.label)||"is"})}),a.jsx(u.PopoverContent,{className:"w-[200px] p-2",align:"start",children:a.jsx("div",{className:"space-y-1",children:B.map(e=>a.jsx(v.Button,{variant:"ghost",size:"sm",className:f.cn("w-full justify-start",s.operator===e.value&&"bg-muted"),onClick:()=>n({operator:e.value,value:e.multiSelect?[]:""}),children:e.label},e.value))})})]}),o&&a.jsxs(a.Fragment,{children:[l!=null&&l.options||l!=null&&l.groups?a.jsxs(u.Popover,{onOpenChange:e=>!e&&C(""),children:[a.jsx(u.PopoverTrigger,{asChild:!0,children:a.jsx(v.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 font-normal hover:bg-muted",children:t&&g.length>0?a.jsxs("span",{className:"flex items-center gap-1",children:[g.length," selecionado",g.length>1?"s":""]}):!t&&s.value&&((q=p.find(e=>e.value===s.value))==null?void 0:q.label)||"Selecionar valor"})}),a.jsx(u.PopoverContent,{className:"w-80 max-w-[calc(100vw-2rem)] p-3",align:"start",collisionPadding:8,children:a.jsxs("div",{className:"space-y-2",children:[a.jsx(k.Label,{className:"text-xs text-muted-foreground",children:t?"Selecionar valores":"Selecionar valor"}),a.jsxs("div",{className:"relative",children:[a.jsx(N.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),a.jsx(P.Input,{type:"text",placeholder:"Buscar...",value:c,onChange:e=>C(e.target.value),className:"h-9 pl-8",autoFocus:!0})]}),a.jsx("div",{className:"space-y-2 max-h-[320px] overflow-y-auto overflow-x-hidden",children:_.length===0?a.jsx("div",{className:"text-sm text-muted-foreground text-center py-4",children:"Nenhum resultado encontrado"}):_.map(e=>{if(e.isHeader&&!e.selecionavel)return a.jsx("div",{title:e.label,className:"truncate pt-1 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e.label},e.value);const r=t?g.includes(e.value):s.value===e.value;return a.jsx("div",{className:f.cn("flex min-w-0 items-center space-x-2",e.isFilho&&"pl-4"),children:t?a.jsxs(a.Fragment,{children:[a.jsx(R.Checkbox,{id:`${s.id}-${e.value}`,checked:r,onCheckedChange:()=>A(e.value)}),a.jsx("label",{htmlFor:`${s.id}-${e.value}`,title:e.label,className:f.cn("min-w-0 flex-1 cursor-pointer truncate text-sm",e.isHeader&&"font-semibold uppercase tracking-wide"),children:e.label})]}):a.jsx(v.Button,{variant:"ghost",size:"sm",title:e.label,className:f.cn("w-full min-w-0 justify-start",e.isHeader&&"font-semibold uppercase tracking-wide",r&&"bg-muted"),onClick:()=>n({value:e.value}),children:a.jsx("span",{className:"truncate",children:e.label})})},e.value)})})]})})]}):(l==null?void 0:l.type)==="date"?a.jsx(H.DatePicker,{value:s.value?new Date(s.value+"T00:00:00"):void 0,onChange:e=>{if(e){const r=e.toISOString().split("T")[0];n({value:r})}else n({value:""})},placeholder:"Selecionar data",className:"h-7 text-sm"}):a.jsxs(u.Popover,{children:[a.jsx(u.PopoverTrigger,{asChild:!0,children:a.jsx(v.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 font-normal hover:bg-muted max-w-[200px] truncate",children:s.value||"Inserir valor"})}),a.jsx(u.PopoverContent,{className:"w-[240px] p-3",align:"start",children:a.jsxs("div",{className:"space-y-2",children:[a.jsx(k.Label,{className:"text-xs text-muted-foreground",children:"Inserir valor"}),a.jsx(P.Input,{type:(l==null?void 0:l.type)==="number"?"number":"text",value:Array.isArray(s.value)?"":s.value,onChange:e=>n({value:e.target.value}),placeholder:"Digite o valor...",autoFocus:!0})]})})]}),t&&g.length>0&&a.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:g.map(e=>{var i;const r=((i=p.find(x=>x.value===e))==null?void 0:i.label)||e;return a.jsxs(T.Badge,{variant:"secondary",className:"gap-1 h-6 text-xs",children:[r,a.jsx("button",{type:"button",onClick:()=>z(e),className:"ml-1 rounded-sm hover:bg-muted p-0.5 transition-colors","aria-label":`Remover ${r}`,children:a.jsx(N.X,{className:"h-3 w-3"})})]},e)})})]})]}),a.jsx(v.Button,{type:"button",variant:"ghost",size:"sm",onClick:y,className:"h-9 w-9 p-0 opacity-0 group-hover:opacity-100 transition-opacity","aria-label":"Remover condição",children:a.jsx(N.X,{className:"h-4 w-4"})})]})}exports.FilterBuilder=L;
2
+ //# sourceMappingURL=filter-builder.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-builder.cjs","sources":["../../../../src/components/ui/data/filter-builder.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Plus, X, Search } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\nimport { Badge } from \"../primitives/badge\";\nimport { Input } from \"../forms/input\";\nimport { Checkbox } from \"../forms/checkbox\";\nimport { Label } from \"../primitives/label\";\nimport { DatePicker } from \"../forms/date-picker\";\n\nexport interface FilterCondition {\n id: string;\n field: string;\n operator: string;\n value: string | string[]; // Suporta multi-seleção\n}\n\n/** Item já achatado da lista de valores, com a marcação de hierarquia preservada */\ninterface ListItem {\n value: string;\n label: string;\n isHeader: boolean;\n selecionavel: boolean;\n isFilho?: boolean;\n}\n\nexport interface FilterOptionGroup {\n label: string;\n /** Quando presente, o cabeçalho do grupo também é selecionável */\n value?: string;\n options: { value: string; label: string }[];\n}\n\nexport interface FilterField {\n value: string;\n label: string;\n type?: \"text\" | \"number\" | \"select\" | \"date\";\n options?: { value: string; label: string }[]; // Para campos select\n /**\n * Opções agrupadas hierarquicamente — mesma forma usada por Combobox e MultiSelect.\n * Use `options` OU `groups`. O cabeçalho só é selecionável quando tem `value`.\n */\n groups?: FilterOptionGroup[];\n multiSelect?: boolean; // Habilitar multi-seleção para este campo\n}\n\nexport interface FilterBuilderProps {\n conditions: FilterCondition[];\n onConditionsChange: (conditions: FilterCondition[]) => void;\n fields: FilterField[];\n className?: string;\n}\n\n// Definições de operadores com suporte a multi-seleção\nconst OPERATORS = [\n { value: \"is\", label: \"é\", multiSelect: false },\n { value: \"is_not\", label: \"não é\", multiSelect: false },\n { value: \"is_any_of\", label: \"é qualquer um de\", multiSelect: true },\n { value: \"is_none_of\", label: \"não é nenhum de\", multiSelect: true },\n { value: \"contains\", label: \"contém\", multiSelect: false },\n { value: \"does_not_contain\", label: \"não contém\", multiSelect: false },\n { value: \"greater_than\", label: \"maior que\", multiSelect: false },\n { value: \"greater_than_or_equal\", label: \"maior ou igual a\", multiSelect: false },\n { value: \"less_than\", label: \"menor que\", multiSelect: false },\n { value: \"less_than_or_equal\", label: \"menor ou igual a\", multiSelect: false },\n { value: \"is_empty\", label: \"está vazio\", multiSelect: false },\n { value: \"is_not_empty\", label: \"não está vazio\", multiSelect: false },\n];\n\nexport function FilterBuilder({\n conditions,\n onConditionsChange,\n fields,\n className,\n}: FilterBuilderProps) {\n const addCondition = () => {\n const newCondition: FilterCondition = {\n id: Math.random().toString(36).substr(2, 9),\n field: fields[0]?.value || \"\",\n operator: \"is\",\n value: \"\",\n };\n onConditionsChange([...conditions, newCondition]);\n };\n\n const removeCondition = (id: string) => {\n onConditionsChange(conditions.filter((c) => c.id !== id));\n };\n\n const updateCondition = (id: string, updates: Partial<FilterCondition>) => {\n onConditionsChange(\n conditions.map((c) => (c.id === id ? { ...c, ...updates } : c))\n );\n };\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Conditions */}\n {conditions.length === 0 ? (\n <div className=\"text-center py-8 text-muted-foreground text-sm\">\n Nenhuma condição de filtro. Clique em \"Adicionar condição\" para começar.\n </div>\n ) : (\n conditions.map((condition, index) => (\n <ConditionRow\n key={condition.id}\n condition={condition}\n fields={fields}\n index={index}\n onUpdate={(updates) => updateCondition(condition.id, updates)}\n onRemove={() => removeCondition(condition.id)}\n />\n ))\n )}\n\n {/* Add Condition Button */}\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addCondition}\n className=\"gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Adicionar condição\n </Button>\n </div>\n );\n}\n\ninterface ConditionRowProps {\n condition: FilterCondition;\n fields: FilterField[];\n index: number;\n onUpdate: (updates: Partial<FilterCondition>) => void;\n onRemove: () => void;\n}\n\nfunction ConditionRow({\n condition,\n fields,\n index,\n onUpdate,\n onRemove,\n}: ConditionRowProps) {\n const selectedField = fields.find((f) => f.value === condition.field);\n const selectedOperator = OPERATORS.find((op) => op.value === condition.operator);\n \n // Multi-select enabled if field has multiSelect: true OR operator requires it\n const isMultiSelect = selectedField?.multiSelect || selectedOperator?.multiSelect || false;\n const needsValue = ![\"is_empty\", \"is_not_empty\"].includes(condition.operator);\n\n // Search state for filtering options\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n\n // Lista achatada com metadados de hierarquia — unifica `options` e `groups` num único\n // fluxo de renderização, preservando a marcação de cabeçalho e de filho.\n const itensLista = React.useMemo<ListItem[]>(() => {\n if (selectedField?.groups) {\n return selectedField.groups.flatMap((group) => [\n {\n value: group.value ?? `__label__${group.label}`,\n label: group.label,\n isHeader: true,\n selecionavel: Boolean(group.value),\n },\n ...group.options.map((o) => ({\n value: o.value,\n label: o.label,\n isHeader: false,\n selecionavel: true,\n isFilho: true,\n })),\n ]);\n }\n return (selectedField?.options ?? []).map((o) => ({\n value: o.value,\n label: o.label,\n isHeader: false,\n selecionavel: true,\n }));\n }, [selectedField?.options, selectedField?.groups]);\n\n // Busca preservando a hierarquia: casar o cabeçalho mantém todos os seus filhos;\n // casar um filho mantém o cabeçalho como contexto.\n const itensFiltrados = React.useMemo(() => {\n if (!searchTerm) return itensLista;\n\n const termo = searchTerm.toLowerCase();\n const casa = (i: ListItem) =>\n i.label.toLowerCase().includes(termo) || i.value.toLowerCase().includes(termo);\n\n if (!selectedField?.groups) return itensLista.filter(casa);\n\n const resultado: ListItem[] = [];\n let header: ListItem | null = null;\n let headerCasou = false;\n let headerIncluido = false;\n\n for (const item of itensLista) {\n if (item.isHeader) {\n header = item;\n headerCasou = casa(item);\n headerIncluido = false;\n if (headerCasou) {\n resultado.push(item);\n headerIncluido = true;\n }\n continue;\n }\n if (headerCasou || casa(item)) {\n if (!headerIncluido && header) {\n resultado.push(header);\n headerIncluido = true;\n }\n resultado.push(item);\n }\n }\n return resultado;\n }, [itensLista, searchTerm, selectedField?.groups]);\n\n // Convert value to array for multi-select\n const valueAsArray = Array.isArray(condition.value)\n ? condition.value\n : condition.value\n ? [condition.value]\n : [];\n\n const toggleValue = (val: string) => {\n if (!isMultiSelect) {\n onUpdate({ value: val });\n return;\n }\n\n const currentValues = Array.isArray(condition.value) ? condition.value : [];\n const newValues = currentValues.includes(val)\n ? currentValues.filter((v) => v !== val)\n : [...currentValues, val];\n onUpdate({ value: newValues });\n };\n\n const removeValue = (val: string) => {\n if (!isMultiSelect) return;\n const currentValues = Array.isArray(condition.value) ? condition.value : [];\n onUpdate({ value: currentValues.filter((v) => v !== val) });\n };\n\n return (\n <div className=\"flex items-start gap-2 group\">\n {/* Index */}\n <div className=\"flex items-center h-9 px-2 text-sm text-muted-foreground\">\n {index === 0 ? \"Onde\" : \"E\"}\n </div>\n\n {/* Condition Display */}\n <div className=\"flex-1 flex items-center gap-2 flex-wrap p-2 border rounded-lg bg-background\">\n {/* Field Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted\"\n >\n {selectedField?.label || \"Selecionar campo\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-2\" align=\"start\">\n <div className=\"space-y-1\">\n {fields.map((field) => (\n <Button\n key={field.value}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"w-full justify-start\",\n condition.field === field.value && \"bg-muted\"\n )}\n onClick={() => \n onUpdate({ \n field: field.value, \n value: field.multiSelect ? [] : \"\" \n })\n }\n >\n {field.label}\n </Button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Operator Selector */}\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted text-muted-foreground\"\n >\n {selectedOperator?.label || \"is\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-2\" align=\"start\">\n <div className=\"space-y-1\">\n {OPERATORS.map((op) => (\n <Button\n key={op.value}\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"w-full justify-start\",\n condition.operator === op.value && \"bg-muted\"\n )}\n onClick={() =>\n onUpdate({\n operator: op.value,\n value: op.multiSelect ? [] : \"\",\n })\n }\n >\n {op.label}\n </Button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n\n {/* Value Selector/Input */}\n {needsValue && (\n <>\n {selectedField?.options || selectedField?.groups ? (\n // Select field with options\n <Popover onOpenChange={(open) => !open && setSearchTerm(\"\")}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted\"\n >\n {isMultiSelect && valueAsArray.length > 0 ? (\n <span className=\"flex items-center gap-1\">\n {valueAsArray.length} selecionado{valueAsArray.length > 1 ? 's' : ''}\n </span>\n ) : !isMultiSelect && condition.value ? (\n itensLista.find((opt) => opt.value === condition.value)?.label ||\n \"Selecionar valor\"\n ) : (\n \"Selecionar valor\"\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-80 max-w-[calc(100vw-2rem)] p-3\"\n align=\"start\"\n collisionPadding={8}\n >\n <div className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n {isMultiSelect ? \"Selecionar valores\" : \"Selecionar valor\"}\n </Label>\n \n {/* Search Input */}\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n type=\"text\"\n placeholder=\"Buscar...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n className=\"h-9 pl-8\"\n autoFocus\n />\n </div>\n \n {/* Filtered Options */}\n <div className=\"space-y-2 max-h-[320px] overflow-y-auto overflow-x-hidden\">\n {(() => {\n if (itensFiltrados.length === 0) {\n return (\n <div className=\"text-sm text-muted-foreground text-center py-4\">\n Nenhum resultado encontrado\n </div>\n );\n }\n\n return itensFiltrados.map((option) => {\n // Cabeçalho de grupo sem `value` — apenas rótulo visual\n if (option.isHeader && !option.selecionavel) {\n return (\n <div\n key={option.value}\n title={option.label}\n className=\"truncate pt-1 text-xs font-semibold uppercase tracking-wide text-muted-foreground\"\n >\n {option.label}\n </div>\n );\n }\n\n const isSelected = isMultiSelect\n ? valueAsArray.includes(option.value)\n : condition.value === option.value;\n\n return (\n <div\n key={option.value}\n className={cn(\n \"flex min-w-0 items-center space-x-2\",\n option.isFilho && \"pl-4\"\n )}\n >\n {isMultiSelect ? (\n <>\n <Checkbox\n id={`${condition.id}-${option.value}`}\n checked={isSelected}\n onCheckedChange={() =>\n toggleValue(option.value)\n }\n />\n <label\n htmlFor={`${condition.id}-${option.value}`}\n title={option.label}\n className={cn(\n \"min-w-0 flex-1 cursor-pointer truncate text-sm\",\n option.isHeader && \"font-semibold uppercase tracking-wide\"\n )}\n >\n {option.label}\n </label>\n </>\n ) : (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n title={option.label}\n className={cn(\n \"w-full min-w-0 justify-start\",\n option.isHeader && \"font-semibold uppercase tracking-wide\",\n isSelected && \"bg-muted\"\n )}\n onClick={() => onUpdate({ value: option.value })}\n >\n <span className=\"truncate\">{option.label}</span>\n </Button>\n )}\n </div>\n );\n });\n })()}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n ) : selectedField?.type === \"date\" ? (\n // Date picker\n <DatePicker\n value={condition.value ? new Date(condition.value + 'T00:00:00') : undefined}\n onChange={(date) => {\n if (date) {\n // Formato ISO (YYYY-MM-DD)\n const isoDate = date.toISOString().split('T')[0];\n onUpdate({ value: isoDate });\n } else {\n onUpdate({ value: '' });\n }\n }}\n placeholder=\"Selecionar data\"\n className=\"h-7 text-sm\"\n />\n ) : (\n // Text/Number input\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 px-2 font-normal hover:bg-muted max-w-[200px] truncate\"\n >\n {condition.value || \"Inserir valor\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[240px] p-3\" align=\"start\">\n <div className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n Inserir valor\n </Label>\n <Input\n type={selectedField?.type === \"number\" ? \"number\" : \"text\"}\n value={\n Array.isArray(condition.value) ? \"\" : condition.value\n }\n onChange={(e) => onUpdate({ value: e.target.value })}\n placeholder=\"Digite o valor...\"\n autoFocus\n />\n </div>\n </PopoverContent>\n </Popover>\n )}\n\n {/* Multi-select chips */}\n {isMultiSelect && valueAsArray.length > 0 && (\n <div className=\"flex items-center gap-1 flex-wrap\">\n {valueAsArray.map((val) => {\n // itensLista ja cobre `options` e `groups` (inclusive o cabecalho\n // selecionavel do grupo). Buscar so em `options` fazia o badge de um campo\n // hierarquico exibir o value cru — \"g-2\" no lugar do nome do grupo.\n const optionLabel =\n itensLista.find((item) => item.value === val)?.label || val;\n return (\n <Badge\n key={val}\n variant=\"secondary\"\n className=\"gap-1 h-6 text-xs\"\n >\n {optionLabel}\n <button\n type=\"button\"\n onClick={() => removeValue(val)}\n className=\"ml-1 rounded-sm hover:bg-muted p-0.5 transition-colors\"\n aria-label={`Remover ${optionLabel}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n );\n })}\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Remove Button */}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={onRemove}\n className=\"h-9 w-9 p-0 opacity-0 group-hover:opacity-100 transition-opacity\"\n aria-label=\"Remover condição\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}"],"names":["OPERATORS","FilterBuilder","conditions","onConditionsChange","fields","className","addCondition","newCondition","_a","removeCondition","id","c","updateCondition","updates","cn","jsx","condition","index","ConditionRow","jsxs","Button","Plus","onUpdate","onRemove","selectedField","f","selectedOperator","op","isMultiSelect","needsValue","searchTerm","setSearchTerm","React","itensLista","group","o","itensFiltrados","termo","casa","i","resultado","header","headerCasou","headerIncluido","item","valueAsArray","toggleValue","val","currentValues","newValues","v","removeValue","Popover","PopoverTrigger","PopoverContent","field","Fragment","open","opt","Label","Search","Input","option","isSelected","Checkbox","DatePicker","date","isoDate","optionLabel","Badge","X"],"mappings":"0bAuDMA,EAAY,CAChB,CAAE,MAAO,KAAM,MAAO,IAAK,YAAa,EAAA,EACxC,CAAE,MAAO,SAAU,MAAO,QAAS,YAAa,EAAA,EAChD,CAAE,MAAO,YAAa,MAAO,mBAAoB,YAAa,EAAA,EAC9D,CAAE,MAAO,aAAc,MAAO,kBAAmB,YAAa,EAAA,EAC9D,CAAE,MAAO,WAAY,MAAO,SAAU,YAAa,EAAA,EACnD,CAAE,MAAO,mBAAoB,MAAO,aAAc,YAAa,EAAA,EAC/D,CAAE,MAAO,eAAgB,MAAO,YAAa,YAAa,EAAA,EAC1D,CAAE,MAAO,wBAAyB,MAAO,mBAAoB,YAAa,EAAA,EAC1E,CAAE,MAAO,YAAa,MAAO,YAAa,YAAa,EAAA,EACvD,CAAE,MAAO,qBAAsB,MAAO,mBAAoB,YAAa,EAAA,EACvE,CAAE,MAAO,WAAY,MAAO,aAAc,YAAa,EAAA,EACvD,CAAE,MAAO,eAAgB,MAAO,iBAAkB,YAAa,EAAA,CACjE,EAEO,SAASC,EAAc,CAC5B,WAAAC,EACA,mBAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAuB,CACrB,MAAMC,EAAe,IAAM,OACzB,MAAMC,EAAgC,CACpC,GAAI,KAAK,SAAS,SAAS,EAAE,EAAE,OAAO,EAAG,CAAC,EAC1C,QAAOC,EAAAJ,EAAO,CAAC,IAAR,YAAAI,EAAW,QAAS,GAC3B,SAAU,KACV,MAAO,EAAA,EAETL,EAAmB,CAAC,GAAGD,EAAYK,CAAY,CAAC,CAClD,EAEME,EAAmBC,GAAe,CACtCP,EAAmBD,EAAW,OAAQS,GAAMA,EAAE,KAAOD,CAAE,CAAC,CAC1D,EAEME,EAAkB,CAACF,EAAYG,IAAsC,CACzEV,EACED,EAAW,IAAK,GAAO,EAAE,KAAOQ,EAAK,CAAE,GAAG,EAAG,GAAGG,CAAA,EAAY,CAAE,CAAA,CAElE,EAEA,cACG,MAAA,CAAI,UAAWC,EAAAA,GAAG,YAAaT,CAAS,EAEtC,SAAA,CAAAH,EAAW,SAAW,EACrBa,EAAAA,IAAC,MAAA,CAAI,UAAU,iDAAiD,SAAA,0EAAA,CAEhE,EAEAb,EAAW,IAAI,CAACc,EAAWC,IACzBF,EAAAA,IAACG,EAAA,CAEC,UAAAF,EACA,OAAAZ,EACA,MAAAa,EACA,SAAWJ,GAAYD,EAAgBI,EAAU,GAAIH,CAAO,EAC5D,SAAU,IAAMJ,EAAgBO,EAAU,EAAE,CAAA,EALvCA,EAAU,EAAA,CAOlB,EAIHG,EAAAA,KAACC,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,UACR,KAAK,KACL,QAASd,EACT,UAAU,QAEV,SAAA,CAAAS,EAAAA,IAACM,EAAAA,KAAA,CAAK,UAAU,SAAA,CAAU,EAAE,oBAAA,CAAA,CAAA,CAE9B,EACF,CAEJ,CAUA,SAASH,EAAa,CACpB,UAAAF,EACA,OAAAZ,EACA,MAAAa,EACA,SAAAK,EACA,SAAAC,CACF,EAAsB,OACpB,MAAMC,EAAgBpB,EAAO,KAAMqB,GAAMA,EAAE,QAAUT,EAAU,KAAK,EAC9DU,EAAmB1B,EAAU,KAAM2B,GAAOA,EAAG,QAAUX,EAAU,QAAQ,EAGzEY,GAAgBJ,GAAA,YAAAA,EAAe,eAAeE,GAAA,YAAAA,EAAkB,cAAe,GAC/EG,EAAa,CAAC,CAAC,WAAY,cAAc,EAAE,SAASb,EAAU,QAAQ,EAGtE,CAACc,EAAYC,CAAa,EAAIC,EAAM,SAAS,EAAE,EAI/CC,EAAaD,EAAM,QAAoB,IACvCR,GAAA,MAAAA,EAAe,OACVA,EAAc,OAAO,QAASU,GAAU,CAC7C,CACE,MAAOA,EAAM,OAAS,YAAYA,EAAM,KAAK,GAC7C,MAAOA,EAAM,MACb,SAAU,GACV,aAAc,EAAQA,EAAM,KAAK,EAEnC,GAAGA,EAAM,QAAQ,IAAKC,IAAO,CAC3B,MAAOA,EAAE,MACT,MAAOA,EAAE,MACT,SAAU,GACV,aAAc,GACd,QAAS,EAAA,EACT,CAAA,CACH,IAEKX,GAAA,YAAAA,EAAe,UAAW,CAAA,GAAI,IAAKW,IAAO,CAChD,MAAOA,EAAE,MACT,MAAOA,EAAE,MACT,SAAU,GACV,aAAc,EAAA,EACd,EACD,CAACX,GAAA,YAAAA,EAAe,QAASA,GAAA,YAAAA,EAAe,MAAM,CAAC,EAI5CY,EAAiBJ,EAAM,QAAQ,IAAM,CACzC,GAAI,CAACF,EAAY,OAAOG,EAExB,MAAMI,EAAQP,EAAW,YAAA,EACnBQ,EAAQC,GACZA,EAAE,MAAM,YAAA,EAAc,SAASF,CAAK,GAAKE,EAAE,MAAM,YAAA,EAAc,SAASF,CAAK,EAE/E,GAAI,EAACb,GAAA,MAAAA,EAAe,QAAQ,OAAOS,EAAW,OAAOK,CAAI,EAEzD,MAAME,EAAwB,CAAA,EAC9B,IAAIC,EAA0B,KAC1BC,EAAc,GACdC,EAAiB,GAErB,UAAWC,KAAQX,EAAY,CAC7B,GAAIW,EAAK,SAAU,CACjBH,EAASG,EACTF,EAAcJ,EAAKM,CAAI,EACvBD,EAAiB,GACbD,IACFF,EAAU,KAAKI,CAAI,EACnBD,EAAiB,IAEnB,QACF,EACID,GAAeJ,EAAKM,CAAI,KACtB,CAACD,GAAkBF,IACrBD,EAAU,KAAKC,CAAM,EACrBE,EAAiB,IAEnBH,EAAU,KAAKI,CAAI,EAEvB,CACA,OAAOJ,CACT,EAAG,CAACP,EAAYH,EAAYN,GAAA,YAAAA,EAAe,MAAM,CAAC,EAG5CqB,EAAe,MAAM,QAAQ7B,EAAU,KAAK,EAC9CA,EAAU,MACVA,EAAU,MACV,CAACA,EAAU,KAAK,EAChB,CAAA,EAEE8B,EAAeC,GAAgB,CACnC,GAAI,CAACnB,EAAe,CAClBN,EAAS,CAAE,MAAOyB,EAAK,EACvB,MACF,CAEA,MAAMC,EAAgB,MAAM,QAAQhC,EAAU,KAAK,EAAIA,EAAU,MAAQ,CAAA,EACnEiC,EAAYD,EAAc,SAASD,CAAG,EACxCC,EAAc,OAAQE,GAAMA,IAAMH,CAAG,EACrC,CAAC,GAAGC,EAAeD,CAAG,EAC1BzB,EAAS,CAAE,MAAO2B,EAAW,CAC/B,EAEME,EAAeJ,GAAgB,CACnC,GAAI,CAACnB,EAAe,OACpB,MAAMoB,EAAgB,MAAM,QAAQhC,EAAU,KAAK,EAAIA,EAAU,MAAQ,CAAA,EACzEM,EAAS,CAAE,MAAO0B,EAAc,OAAQE,GAAMA,IAAMH,CAAG,EAAG,CAC5D,EAEA,OACE5B,EAAAA,KAAC,MAAA,CAAI,UAAU,+BAEb,SAAA,CAAAJ,MAAC,OAAI,UAAU,2DACZ,SAAAE,IAAU,EAAI,OAAS,IAC1B,EAGAE,EAAAA,KAAC,MAAA,CAAI,UAAU,+EAEb,SAAA,CAAAA,OAACiC,EAAAA,QAAA,CACC,SAAA,CAAArC,EAAAA,IAACsC,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAtC,EAAAA,IAACK,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,UAAU,sCAET,2BAAe,QAAS,kBAAA,CAAA,EAE7B,EACAL,EAAAA,IAACuC,EAAAA,eAAA,CAAe,UAAU,gBAAgB,MAAM,QAC9C,SAAAvC,EAAAA,IAAC,MAAA,CAAI,UAAU,YACZ,SAAAX,EAAO,IAAKmD,GACXxC,EAAAA,IAACK,EAAAA,OAAA,CAEC,QAAQ,QACR,KAAK,KACL,UAAWN,EAAAA,GACT,uBACAE,EAAU,QAAUuC,EAAM,OAAS,UAAA,EAErC,QAAS,IACPjC,EAAS,CACP,MAAOiC,EAAM,MACb,MAAOA,EAAM,YAAc,GAAK,EAAA,CACjC,EAGF,SAAAA,EAAM,KAAA,EAdFA,EAAM,KAAA,CAgBd,EACH,CAAA,CACF,CAAA,EACF,SAGCH,EAAAA,QAAA,CACC,SAAA,CAAArC,EAAAA,IAACsC,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAtC,EAAAA,IAACK,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,UAAU,4DAET,2BAAkB,QAAS,IAAA,CAAA,EAEhC,EACAL,EAAAA,IAACuC,EAAAA,eAAA,CAAe,UAAU,gBAAgB,MAAM,QAC9C,SAAAvC,EAAAA,IAAC,MAAA,CAAI,UAAU,YACZ,SAAAf,EAAU,IAAK2B,GACdZ,EAAAA,IAACK,EAAAA,OAAA,CAEC,QAAQ,QACR,KAAK,KACL,UAAWN,EAAAA,GACT,uBACAE,EAAU,WAAaW,EAAG,OAAS,UAAA,EAErC,QAAS,IACPL,EAAS,CACP,SAAUK,EAAG,MACb,MAAOA,EAAG,YAAc,GAAK,EAAA,CAC9B,EAGF,SAAAA,EAAG,KAAA,EAdCA,EAAG,KAAA,CAgBX,EACH,CAAA,CACF,CAAA,EACF,EAGCE,GACCV,EAAAA,KAAAqC,WAAA,CACG,SAAA,CAAAhC,GAAA,MAAAA,EAAe,SAAWA,GAAA,MAAAA,EAAe,OAExCL,OAACiC,EAAAA,SAAQ,aAAeK,GAAS,CAACA,GAAQ1B,EAAc,EAAE,EACxD,SAAA,CAAAhB,EAAAA,IAACsC,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAtC,EAAAA,IAACK,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,UAAU,sCAET,YAAiByB,EAAa,OAAS,EACtC1B,OAAC,OAAA,CAAK,UAAU,0BACb,SAAA,CAAA0B,EAAa,OAAO,eAAaA,EAAa,OAAS,EAAI,IAAM,EAAA,CAAA,CACpE,EACE,CAACjB,GAAiBZ,EAAU,SAC9BR,EAAAyB,EAAW,KAAMyB,GAAQA,EAAI,QAAU1C,EAAU,KAAK,IAAtD,YAAAR,EAAyD,QACzD,kBAEA,CAAA,EAGN,EACAO,EAAAA,IAACuC,EAAAA,eAAA,CACC,UAAU,oCACV,MAAM,QACN,iBAAkB,EAElB,SAAAnC,EAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAJ,MAAC4C,EAAAA,MAAA,CAAM,UAAU,gCACd,SAAA/B,EAAgB,qBAAuB,mBAC1C,EAGAT,EAAAA,KAAC,MAAA,CAAI,UAAU,WACb,SAAA,CAAAJ,EAAAA,IAAC6C,EAAAA,OAAA,CAAO,UAAU,uDAAA,CAAwD,EAC1E7C,EAAAA,IAAC8C,EAAAA,MAAA,CACC,KAAK,OACL,YAAY,YACZ,MAAO/B,EACP,SAAW,GAAMC,EAAc,EAAE,OAAO,KAAK,EAC7C,UAAU,WACV,UAAS,EAAA,CAAA,CACX,EACF,EAGAhB,EAAAA,IAAC,MAAA,CAAI,UAAU,4DACX,SACIqB,EAAe,SAAW,EAE1BrB,EAAAA,IAAC,MAAA,CAAI,UAAU,iDAAiD,SAAA,8BAEhE,EAIGqB,EAAe,IAAK0B,GAAW,CAEpC,GAAIA,EAAO,UAAY,CAACA,EAAO,aAC7B,OACE/C,EAAAA,IAAC,MAAA,CAEC,MAAO+C,EAAO,MACd,UAAU,oFAET,SAAAA,EAAO,KAAA,EAJHA,EAAO,KAAA,EASlB,MAAMC,EAAanC,EACfiB,EAAa,SAASiB,EAAO,KAAK,EAClC9C,EAAU,QAAU8C,EAAO,MAE/B,OACE/C,EAAAA,IAAC,MAAA,CAEC,UAAWD,EAAAA,GACT,sCACAgD,EAAO,SAAW,MAAA,EAGnB,WACC3C,EAAAA,KAAAqC,EAAAA,SAAA,CACE,SAAA,CAAAzC,EAAAA,IAACiD,EAAAA,SAAA,CACC,GAAI,GAAGhD,EAAU,EAAE,IAAI8C,EAAO,KAAK,GACnC,QAASC,EACT,gBAAiB,IACfjB,EAAYgB,EAAO,KAAK,CAAA,CAAA,EAG5B/C,EAAAA,IAAC,QAAA,CACC,QAAS,GAAGC,EAAU,EAAE,IAAI8C,EAAO,KAAK,GACxC,MAAOA,EAAO,MACd,UAAWhD,EAAAA,GACT,iDACAgD,EAAO,UAAY,uCAAA,EAGpB,SAAAA,EAAO,KAAA,CAAA,CACV,CAAA,CACF,EAEA/C,EAAAA,IAACK,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,MAAO0C,EAAO,MACd,UAAWhD,EAAAA,GACT,+BACAgD,EAAO,UAAY,wCACnBC,GAAc,UAAA,EAEhB,QAAS,IAAMzC,EAAS,CAAE,MAAOwC,EAAO,MAAO,EAE/C,SAAA/C,EAAAA,IAAC,OAAA,CAAK,UAAU,WAAY,WAAO,KAAA,CAAM,CAAA,CAAA,CAC3C,EAvCG+C,EAAO,KAAA,CA2ClB,CAAC,CACA,CACL,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,GACEtC,GAAA,YAAAA,EAAe,QAAS,OAE1BT,EAAAA,IAACkD,EAAAA,WAAA,CACC,MAAOjD,EAAU,MAAQ,IAAI,KAAKA,EAAU,MAAQ,WAAW,EAAI,OACnE,SAAWkD,GAAS,CAClB,GAAIA,EAAM,CAER,MAAMC,EAAUD,EAAK,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC,EAC/C5C,EAAS,CAAE,MAAO6C,EAAS,CAC7B,MACE7C,EAAS,CAAE,MAAO,GAAI,CAE1B,EACA,YAAY,kBACZ,UAAU,aAAA,CAAA,SAIX8B,EAAAA,QAAA,CACC,SAAA,CAAArC,EAAAA,IAACsC,EAAAA,eAAA,CAAe,QAAO,GACrB,SAAAtC,EAAAA,IAACK,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,KACL,UAAU,6DAET,WAAU,OAAS,eAAA,CAAA,EAExB,EACAL,EAAAA,IAACuC,EAAAA,gBAAe,UAAU,gBAAgB,MAAM,QAC9C,SAAAnC,EAAAA,KAAC,MAAA,CAAI,UAAU,YACb,SAAA,CAAAJ,EAAAA,IAAC4C,EAAAA,MAAA,CAAM,UAAU,gCAAgC,SAAA,gBAEjD,EACA5C,EAAAA,IAAC8C,EAAAA,MAAA,CACC,MAAMrC,GAAA,YAAAA,EAAe,QAAS,SAAW,SAAW,OACpD,MACE,MAAM,QAAQR,EAAU,KAAK,EAAI,GAAKA,EAAU,MAElD,SAAW,GAAMM,EAAS,CAAE,MAAO,EAAE,OAAO,MAAO,EACnD,YAAY,oBACZ,UAAS,EAAA,CAAA,CACX,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,EAIDM,GAAiBiB,EAAa,OAAS,GACtC9B,EAAAA,IAAC,MAAA,CAAI,UAAU,oCACZ,SAAA8B,EAAa,IAAKE,GAAQ,OAIzB,MAAMqB,IACJ5D,EAAAyB,EAAW,KAAMW,GAASA,EAAK,QAAUG,CAAG,IAA5C,YAAAvC,EAA+C,QAASuC,EAC1D,OACE5B,EAAAA,KAACkD,EAAAA,MAAA,CAEC,QAAQ,YACR,UAAU,oBAET,SAAA,CAAAD,EACDrD,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMoC,EAAYJ,CAAG,EAC9B,UAAU,yDACV,aAAY,WAAWqB,CAAW,GAElC,SAAArD,EAAAA,IAACuD,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,CAAA,CAAA,CACzB,CAAA,EAZKvB,CAAA,CAeX,CAAC,CAAA,CACH,CAAA,CAAA,CAEJ,CAAA,EAEJ,EAGAhC,EAAAA,IAACK,EAAAA,OAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,KACL,QAASG,EACT,UAAU,mEACV,aAAW,mBAEX,SAAAR,EAAAA,IAACuD,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,CAAA,CAAA,CACzB,EACF,CAEJ"}