@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,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("react"),m=require("@tiptap/react"),b=require("@tiptap/starter-kit"),k=require("@tiptap/extension-image"),A=require("@tiptap/extension-placeholder"),w=require("@tiptap/extension-text-align"),o=require("../utils.cjs"),p=require("../primitives/button.cjs"),g=require("../primitives/separator.cjs"),i=require("lucide-react"),N=require("../forms/toggle.cjs");function C(s){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const n in s)if(n!=="default"){const c=Object.getOwnPropertyDescriptor(s,n);Object.defineProperty(t,n,c.get?c:{enumerable:!0,get:()=>s[n]})}}return t.default=s,Object.freeze(t)}const q=C(v),l=({onClick:s,isActive:t=!1,disabled:n=!1,children:c,title:r})=>e.jsx(N.Toggle,{pressed:t,onPressedChange:s,disabled:n,size:"sm",className:"h-8 w-8 p-0",title:r,"aria-label":r,children:c}),L=({editor:s,variant:t})=>{if(!s)return null;const n=()=>{const r=s.getAttributes("link").href,a=window.prompt("URL",r);if(a!==null){if(a===""){s.chain().focus().extendMarkRange("link").unsetLink().run();return}s.chain().focus().extendMarkRange("link").setLink({href:a}).run()}},c=()=>{const r=window.prompt("URL da imagem");r&&s.chain().focus().setImage({src:r}).run()};return e.jsxs("div",{className:o.cn("flex flex-wrap items-center gap-1 p-2 border-b bg-muted/30 sticky top-0 z-10",t==="full"?"px-4 py-2":"px-2 py-1"),children:[e.jsxs("div",{className:"flex items-center gap-0.5 mr-2",children:[e.jsx(p.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>s.chain().focus().undo().run(),disabled:!s.can().undo(),"aria-label":"Desfazer",children:e.jsx(i.Undo,{className:"h-4 w-4"})}),e.jsx(p.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>s.chain().focus().redo().run(),disabled:!s.can().redo(),"aria-label":"Refazer",children:e.jsx(i.Redo,{className:"h-4 w-4"})})]}),e.jsx(g.Separator,{orientation:"vertical",className:"h-6 mx-1"}),t==="full"&&e.jsxs(e.Fragment,{children:[e.jsx(l,{onClick:()=>s.chain().focus().toggleHeading({level:1}).run(),isActive:s.isActive("heading",{level:1}),title:"Título 1",children:e.jsx(i.Heading1,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().toggleHeading({level:2}).run(),isActive:s.isActive("heading",{level:2}),title:"Título 2",children:e.jsx(i.Heading2,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().toggleHeading({level:3}).run(),isActive:s.isActive("heading",{level:3}),title:"Título 3",children:e.jsx(i.Heading3,{className:"h-4 w-4"})}),e.jsx(g.Separator,{orientation:"vertical",className:"h-6 mx-1"})]}),e.jsx(l,{onClick:()=>s.chain().focus().toggleBold().run(),isActive:s.isActive("bold"),title:"Negrito",children:e.jsx(i.Bold,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().toggleItalic().run(),isActive:s.isActive("italic"),title:"Itálico",children:e.jsx(i.Italic,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().toggleUnderline().run(),isActive:s.isActive("underline"),title:"Sublinhado",children:e.jsx(i.Underline,{className:"h-4 w-4"})}),t==="full"&&e.jsx(l,{onClick:()=>s.chain().focus().toggleStrike().run(),isActive:s.isActive("strike"),title:"Tachado",children:e.jsx(i.Strikethrough,{className:"h-4 w-4"})}),e.jsx(g.Separator,{orientation:"vertical",className:"h-6 mx-1"}),e.jsx(l,{onClick:()=>s.chain().focus().toggleBulletList().run(),isActive:s.isActive("bulletList"),title:"Lista com marcadores",children:e.jsx(i.List,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().toggleOrderedList().run(),isActive:s.isActive("orderedList"),title:"Lista numerada",children:e.jsx(i.ListOrdered,{className:"h-4 w-4"})}),t==="full"&&e.jsxs(e.Fragment,{children:[e.jsx(l,{onClick:()=>s.chain().focus().setTextAlign("left").run(),isActive:s.isActive({textAlign:"left"}),title:"Alinhar à esquerda",children:e.jsx(i.AlignLeft,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().setTextAlign("center").run(),isActive:s.isActive({textAlign:"center"}),title:"Centralizar",children:e.jsx(i.AlignCenter,{className:"h-4 w-4"})}),e.jsx(l,{onClick:()=>s.chain().focus().setTextAlign("right").run(),isActive:s.isActive({textAlign:"right"}),title:"Alinhar à direita",children:e.jsx(i.AlignRight,{className:"h-4 w-4"})})]}),e.jsx(g.Separator,{orientation:"vertical",className:"h-6 mx-1"}),e.jsx(l,{onClick:()=>s.chain().focus().toggleBlockquote().run(),isActive:s.isActive("blockquote"),title:"Citação",children:e.jsx(i.Quote,{className:"h-4 w-4"})}),e.jsx(l,{onClick:n,isActive:s.isActive("link"),title:"Link",children:e.jsx(i.Link,{className:"h-4 w-4"})}),t==="full"&&e.jsx(l,{onClick:c,title:"Imagem",children:e.jsx(i.Image,{className:"h-4 w-4"})})]})};function T({content:s="",onChange:t,placeholder:n="Comece a escrever...",variant:c="simple",className:r,readOnly:a=!1,label:d}){var h,x;const f=q.useMemo(()=>[b.configure({heading:{levels:[1,2,3]}}),k.configure({HTMLAttributes:{class:"rounded-lg border shadow-sm max-w-full"}}),A.configure({placeholder:n}),w.configure({types:["heading","paragraph"]})],[n]),u=m.useEditor({extensions:f,content:s,editable:!a,onUpdate:({editor:j})=>{t==null||t(j.getHTML())},editorProps:{attributes:{class:o.cn("prose prose-stone dark:prose-invert max-w-none focus:outline-none","prose-headings:font-semibold prose-headings:tracking-tight","prose-h1:text-3xl prose-h2:text-2xl prose-h3:text-xl","prose-p:leading-7 prose-p:my-3","prose-blockquote:border-l-4 prose-blockquote:border-primary/50 prose-blockquote:pl-4 prose-blockquote:italic","prose-ul:list-disc prose-ul:pl-6 prose-ol:list-decimal prose-ol:pl-6","prose-img:rounded-lg prose-img:shadow-md prose-img:my-6",c==="full"?"min-h-[400px] p-8":"min-h-[120px] px-3 py-2")}}});return u?e.jsxs("div",{className:o.cn("flex flex-col w-full",r),children:[d&&e.jsx("label",{className:"text-sm font-medium mb-1.5 block",children:d}),e.jsxs("div",{className:o.cn("border rounded-lg bg-background overflow-hidden transition-shadow focus-within:ring-2 focus-within:ring-primary/20",a&&"opacity-80 bg-muted/30 pointer-events-none border-transparent"),children:[!a&&e.jsx(L,{editor:u,variant:c}),e.jsx("div",{className:o.cn("bg-background relative",c==="full"?"bg-card":""),children:e.jsx(m.EditorContent,{editor:u})})]}),!a&&c==="full"&&e.jsxs("div",{className:"text-xs text-muted-foreground mt-1.5 text-right px-1",children:[((x=(h=u.storage.characterCount)==null?void 0:h.words)==null?void 0:x.call(h))||0," palavras"]})]}):null}exports.DocumentEditor=T;
2
+ //# sourceMappingURL=document-editor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-editor.cjs","sources":["../../../../src/components/ui/data/document-editor.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useEditor, EditorContent, Editor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Image from '@tiptap/extension-image';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Separator } from \"../primitives/separator\";\nimport { \n Bold, \n Italic, \n Underline as UnderlineIcon, \n Strikethrough,\n List, \n ListOrdered, \n Quote,\n Heading1,\n Heading2,\n Heading3,\n AlignLeft,\n AlignCenter,\n AlignRight,\n Link as LinkIcon,\n Image as ImageIcon,\n Undo,\n Redo\n} from \"lucide-react\";\nimport { Toggle } from \"../forms/toggle\";\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type EditorVariant = 'simple' | 'full';\n\nexport interface DocumentEditorProps {\n content?: string;\n onChange?: (content: string) => void;\n placeholder?: string;\n variant?: EditorVariant;\n className?: string;\n readOnly?: boolean;\n label?: string;\n}\n\n// ==========================================\n// TOOLBAR COMPONENT\n// ==========================================\n\nconst ToolbarButton = ({ \n onClick, \n isActive = false, \n disabled = false, \n children, \n title \n}: { \n onClick: () => void; \n isActive?: boolean; \n disabled?: boolean;\n children: React.ReactNode;\n title?: string;\n}) => (\n <Toggle\n pressed={isActive}\n onPressedChange={onClick}\n disabled={disabled}\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n title={title}\n aria-label={title}\n >\n {children}\n </Toggle>\n);\n\nconst EditorToolbar = ({ editor, variant }: { editor: Editor, variant: EditorVariant }) => {\n if (!editor) return null;\n\n const setLink = () => {\n const previousUrl = editor.getAttributes('link').href;\n const url = window.prompt('URL', previousUrl);\n if (url === null) return;\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n };\n\n const addImage = () => {\n const url = window.prompt('URL da imagem');\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n };\n\n return (\n <div className={cn(\n \"flex flex-wrap items-center gap-1 p-2 border-b bg-muted/30 sticky top-0 z-10\",\n variant === 'full' ? \"px-4 py-2\" : \"px-2 py-1\"\n )}>\n {/* History */}\n <div className=\"flex items-center gap-0.5 mr-2\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\" onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} aria-label=\"Desfazer\">\n <Undo className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\" onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} aria-label=\"Refazer\">\n <Redo className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Typography - Headings (Only full mode or via dropdown in simple) */}\n {variant === 'full' && (\n <>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={editor.isActive('heading', { level: 1 })} title=\"Título 1\">\n <Heading1 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={editor.isActive('heading', { level: 2 })} title=\"Título 2\">\n <Heading2 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={editor.isActive('heading', { level: 3 })} title=\"Título 3\">\n <Heading3 className=\"h-4 w-4\" />\n </ToolbarButton>\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n </>\n )}\n\n {/* Basic Formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={editor.isActive('bold')} title=\"Negrito\">\n <Bold className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={editor.isActive('italic')} title=\"Itálico\">\n <Italic className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={editor.isActive('underline')} title=\"Sublinhado\">\n <UnderlineIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n \n {variant === 'full' && (\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={editor.isActive('strike')} title=\"Tachado\">\n <Strikethrough className=\"h-4 w-4\" />\n </ToolbarButton>\n )}\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Lists & Alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={editor.isActive('bulletList')} title=\"Lista com marcadores\">\n <List className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={editor.isActive('orderedList')} title=\"Lista numerada\">\n <ListOrdered className=\"h-4 w-4\" />\n </ToolbarButton>\n\n {variant === 'full' && (\n <>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={editor.isActive({ textAlign: 'left' })} title=\"Alinhar à esquerda\">\n <AlignLeft className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={editor.isActive({ textAlign: 'center' })} title=\"Centralizar\">\n <AlignCenter className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={editor.isActive({ textAlign: 'right' })} title=\"Alinhar à direita\">\n <AlignRight className=\"h-4 w-4\" />\n </ToolbarButton>\n </>\n )}\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Inserts */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={editor.isActive('blockquote')} title=\"Citação\">\n <Quote className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={setLink} isActive={editor.isActive('link')} title=\"Link\">\n <LinkIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n \n {variant === 'full' && (\n <ToolbarButton onClick={addImage} title=\"Imagem\">\n <ImageIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n )}\n </div>\n );\n};\n\n// ==========================================\n// MAIN COMPONENT\n// ==========================================\n\nexport function DocumentEditor({\n content = '',\n onChange,\n placeholder = 'Comece a escrever...',\n variant = 'simple',\n className,\n readOnly = false,\n label\n}: DocumentEditorProps) {\n const extensions = React.useMemo(() => {\n return [\n StarterKit.configure({\n heading: {\n levels: [1, 2, 3],\n },\n }),\n // Removed explicit Underline and Link to avoid duplicate extension warning\n // If these features are missing, check if StarterKit includes them in your version\n // Underline,\n // Link.configure({\n // openOnClick: false,\n // HTMLAttributes: {\n // class: 'text-primary underline decoration-primary/30 hover:decoration-primary transition-colors cursor-pointer',\n // },\n // }),\n Image.configure({\n HTMLAttributes: {\n class: 'rounded-lg border shadow-sm max-w-full',\n },\n }),\n Placeholder.configure({\n placeholder,\n }),\n TextAlign.configure({\n types: ['heading', 'paragraph'],\n }),\n ];\n }, [placeholder]);\n\n const editor = useEditor({\n extensions,\n content,\n editable: !readOnly,\n onUpdate: ({ editor }) => {\n onChange?.(editor.getHTML());\n },\n editorProps: {\n attributes: {\n class: cn(\n \"prose prose-stone dark:prose-invert max-w-none focus:outline-none\",\n \"prose-headings:font-semibold prose-headings:tracking-tight\",\n \"prose-h1:text-3xl prose-h2:text-2xl prose-h3:text-xl\",\n \"prose-p:leading-7 prose-p:my-3\",\n \"prose-blockquote:border-l-4 prose-blockquote:border-primary/50 prose-blockquote:pl-4 prose-blockquote:italic\",\n \"prose-ul:list-disc prose-ul:pl-6 prose-ol:list-decimal prose-ol:pl-6\",\n \"prose-img:rounded-lg prose-img:shadow-md prose-img:my-6\",\n variant === 'full' ? \"min-h-[400px] p-8\" : \"min-h-[120px] px-3 py-2\"\n ),\n },\n },\n });\n\n if (!editor) return null;\n\n return (\n <div className={cn(\"flex flex-col w-full\", className)}>\n {label && <label className=\"text-sm font-medium mb-1.5 block\">{label}</label>}\n \n <div className={cn(\n \"border rounded-lg bg-background overflow-hidden transition-shadow focus-within:ring-2 focus-within:ring-primary/20\",\n readOnly && \"opacity-80 bg-muted/30 pointer-events-none border-transparent\"\n )}>\n {!readOnly && <EditorToolbar editor={editor} variant={variant} />}\n \n <div className={cn(\n \"bg-background relative\", \n variant === 'full' ? \"bg-card\" : \"\"\n )}>\n <EditorContent editor={editor} />\n </div>\n </div>\n \n {!readOnly && variant === 'full' && (\n <div className=\"text-xs text-muted-foreground mt-1.5 text-right px-1\">\n {editor.storage.characterCount?.words?.() || 0} palavras\n </div>\n )}\n </div>\n );\n}\n"],"names":["ToolbarButton","onClick","isActive","disabled","children","title","jsx","Toggle","EditorToolbar","editor","variant","setLink","previousUrl","url","addImage","jsxs","cn","Button","Undo","Redo","Separator","Fragment","Heading1","Heading2","Heading3","Bold","Italic","UnderlineIcon","Strikethrough","List","ListOrdered","AlignLeft","AlignCenter","AlignRight","Quote","LinkIcon","ImageIcon","DocumentEditor","content","onChange","placeholder","className","readOnly","label","extensions","React","StarterKit","Image","Placeholder","TextAlign","useEditor","EditorContent","_b","_a"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { jsxs as r, jsx as e, Fragment as p } from "react/jsx-runtime";
2
+ import * as A from "react";
3
+ import { useEditor as x, EditorContent as b } from "@tiptap/react";
4
+ import w from "@tiptap/starter-kit";
5
+ import N from "@tiptap/extension-image";
6
+ import C from "@tiptap/extension-placeholder";
7
+ import L from "@tiptap/extension-text-align";
8
+ import { cn as o } from "../utils.js";
9
+ import { Button as f } from "../primitives/button.js";
10
+ import { Separator as h } from "../primitives/separator.js";
11
+ import { Undo as T, Redo as H, Heading1 as I, Heading2 as R, Heading3 as q, Bold as y, Italic as z, Underline as U, Strikethrough as B, List as M, ListOrdered as S, AlignLeft as E, AlignCenter as P, AlignRight as j, Quote as D, Link as F, Image as K } from "lucide-react";
12
+ import { Toggle as Q } from "../forms/toggle.js";
13
+ const l = ({
14
+ onClick: i,
15
+ isActive: s = !1,
16
+ disabled: a = !1,
17
+ children: n,
18
+ title: t
19
+ }) => /* @__PURE__ */ e(
20
+ Q,
21
+ {
22
+ pressed: s,
23
+ onPressedChange: i,
24
+ disabled: a,
25
+ size: "sm",
26
+ className: "h-8 w-8 p-0",
27
+ title: t,
28
+ "aria-label": t,
29
+ children: n
30
+ }
31
+ ), G = ({ editor: i, variant: s }) => {
32
+ if (!i) return null;
33
+ const a = () => {
34
+ const t = i.getAttributes("link").href, c = window.prompt("URL", t);
35
+ if (c !== null) {
36
+ if (c === "") {
37
+ i.chain().focus().extendMarkRange("link").unsetLink().run();
38
+ return;
39
+ }
40
+ i.chain().focus().extendMarkRange("link").setLink({ href: c }).run();
41
+ }
42
+ }, n = () => {
43
+ const t = window.prompt("URL da imagem");
44
+ t && i.chain().focus().setImage({ src: t }).run();
45
+ };
46
+ return /* @__PURE__ */ r("div", { className: o(
47
+ "flex flex-wrap items-center gap-1 p-2 border-b bg-muted/30 sticky top-0 z-10",
48
+ s === "full" ? "px-4 py-2" : "px-2 py-1"
49
+ ), children: [
50
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-0.5 mr-2", children: [
51
+ /* @__PURE__ */ e(f, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => i.chain().focus().undo().run(), disabled: !i.can().undo(), "aria-label": "Desfazer", children: /* @__PURE__ */ e(T, { className: "h-4 w-4" }) }),
52
+ /* @__PURE__ */ e(f, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: () => i.chain().focus().redo().run(), disabled: !i.can().redo(), "aria-label": "Refazer", children: /* @__PURE__ */ e(H, { className: "h-4 w-4" }) })
53
+ ] }),
54
+ /* @__PURE__ */ e(h, { orientation: "vertical", className: "h-6 mx-1" }),
55
+ s === "full" && /* @__PURE__ */ r(p, { children: [
56
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleHeading({ level: 1 }).run(), isActive: i.isActive("heading", { level: 1 }), title: "Título 1", children: /* @__PURE__ */ e(I, { className: "h-4 w-4" }) }),
57
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleHeading({ level: 2 }).run(), isActive: i.isActive("heading", { level: 2 }), title: "Título 2", children: /* @__PURE__ */ e(R, { className: "h-4 w-4" }) }),
58
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleHeading({ level: 3 }).run(), isActive: i.isActive("heading", { level: 3 }), title: "Título 3", children: /* @__PURE__ */ e(q, { className: "h-4 w-4" }) }),
59
+ /* @__PURE__ */ e(h, { orientation: "vertical", className: "h-6 mx-1" })
60
+ ] }),
61
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleBold().run(), isActive: i.isActive("bold"), title: "Negrito", children: /* @__PURE__ */ e(y, { className: "h-4 w-4" }) }),
62
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleItalic().run(), isActive: i.isActive("italic"), title: "Itálico", children: /* @__PURE__ */ e(z, { className: "h-4 w-4" }) }),
63
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleUnderline().run(), isActive: i.isActive("underline"), title: "Sublinhado", children: /* @__PURE__ */ e(U, { className: "h-4 w-4" }) }),
64
+ s === "full" && /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleStrike().run(), isActive: i.isActive("strike"), title: "Tachado", children: /* @__PURE__ */ e(B, { className: "h-4 w-4" }) }),
65
+ /* @__PURE__ */ e(h, { orientation: "vertical", className: "h-6 mx-1" }),
66
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleBulletList().run(), isActive: i.isActive("bulletList"), title: "Lista com marcadores", children: /* @__PURE__ */ e(M, { className: "h-4 w-4" }) }),
67
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleOrderedList().run(), isActive: i.isActive("orderedList"), title: "Lista numerada", children: /* @__PURE__ */ e(S, { className: "h-4 w-4" }) }),
68
+ s === "full" && /* @__PURE__ */ r(p, { children: [
69
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().setTextAlign("left").run(), isActive: i.isActive({ textAlign: "left" }), title: "Alinhar à esquerda", children: /* @__PURE__ */ e(E, { className: "h-4 w-4" }) }),
70
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().setTextAlign("center").run(), isActive: i.isActive({ textAlign: "center" }), title: "Centralizar", children: /* @__PURE__ */ e(P, { className: "h-4 w-4" }) }),
71
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().setTextAlign("right").run(), isActive: i.isActive({ textAlign: "right" }), title: "Alinhar à direita", children: /* @__PURE__ */ e(j, { className: "h-4 w-4" }) })
72
+ ] }),
73
+ /* @__PURE__ */ e(h, { orientation: "vertical", className: "h-6 mx-1" }),
74
+ /* @__PURE__ */ e(l, { onClick: () => i.chain().focus().toggleBlockquote().run(), isActive: i.isActive("blockquote"), title: "Citação", children: /* @__PURE__ */ e(D, { className: "h-4 w-4" }) }),
75
+ /* @__PURE__ */ e(l, { onClick: a, isActive: i.isActive("link"), title: "Link", children: /* @__PURE__ */ e(F, { className: "h-4 w-4" }) }),
76
+ s === "full" && /* @__PURE__ */ e(l, { onClick: n, title: "Imagem", children: /* @__PURE__ */ e(K, { className: "h-4 w-4" }) })
77
+ ] });
78
+ };
79
+ function le({
80
+ content: i = "",
81
+ onChange: s,
82
+ placeholder: a = "Comece a escrever...",
83
+ variant: n = "simple",
84
+ className: t,
85
+ readOnly: c = !1,
86
+ label: g
87
+ }) {
88
+ var m, d;
89
+ const v = A.useMemo(() => [
90
+ w.configure({
91
+ heading: {
92
+ levels: [1, 2, 3]
93
+ }
94
+ }),
95
+ // Removed explicit Underline and Link to avoid duplicate extension warning
96
+ // If these features are missing, check if StarterKit includes them in your version
97
+ // Underline,
98
+ // Link.configure({
99
+ // openOnClick: false,
100
+ // HTMLAttributes: {
101
+ // class: 'text-primary underline decoration-primary/30 hover:decoration-primary transition-colors cursor-pointer',
102
+ // },
103
+ // }),
104
+ N.configure({
105
+ HTMLAttributes: {
106
+ class: "rounded-lg border shadow-sm max-w-full"
107
+ }
108
+ }),
109
+ C.configure({
110
+ placeholder: a
111
+ }),
112
+ L.configure({
113
+ types: ["heading", "paragraph"]
114
+ })
115
+ ], [a]), u = x({
116
+ extensions: v,
117
+ content: i,
118
+ editable: !c,
119
+ onUpdate: ({ editor: k }) => {
120
+ s == null || s(k.getHTML());
121
+ },
122
+ editorProps: {
123
+ attributes: {
124
+ class: o(
125
+ "prose prose-stone dark:prose-invert max-w-none focus:outline-none",
126
+ "prose-headings:font-semibold prose-headings:tracking-tight",
127
+ "prose-h1:text-3xl prose-h2:text-2xl prose-h3:text-xl",
128
+ "prose-p:leading-7 prose-p:my-3",
129
+ "prose-blockquote:border-l-4 prose-blockquote:border-primary/50 prose-blockquote:pl-4 prose-blockquote:italic",
130
+ "prose-ul:list-disc prose-ul:pl-6 prose-ol:list-decimal prose-ol:pl-6",
131
+ "prose-img:rounded-lg prose-img:shadow-md prose-img:my-6",
132
+ n === "full" ? "min-h-[400px] p-8" : "min-h-[120px] px-3 py-2"
133
+ )
134
+ }
135
+ }
136
+ });
137
+ return u ? /* @__PURE__ */ r("div", { className: o("flex flex-col w-full", t), children: [
138
+ g && /* @__PURE__ */ e("label", { className: "text-sm font-medium mb-1.5 block", children: g }),
139
+ /* @__PURE__ */ r("div", { className: o(
140
+ "border rounded-lg bg-background overflow-hidden transition-shadow focus-within:ring-2 focus-within:ring-primary/20",
141
+ c && "opacity-80 bg-muted/30 pointer-events-none border-transparent"
142
+ ), children: [
143
+ !c && /* @__PURE__ */ e(G, { editor: u, variant: n }),
144
+ /* @__PURE__ */ e("div", { className: o(
145
+ "bg-background relative",
146
+ n === "full" ? "bg-card" : ""
147
+ ), children: /* @__PURE__ */ e(b, { editor: u }) })
148
+ ] }),
149
+ !c && n === "full" && /* @__PURE__ */ r("div", { className: "text-xs text-muted-foreground mt-1.5 text-right px-1", children: [
150
+ ((d = (m = u.storage.characterCount) == null ? void 0 : m.words) == null ? void 0 : d.call(m)) || 0,
151
+ " palavras"
152
+ ] })
153
+ ] }) : null;
154
+ }
155
+ export {
156
+ le as DocumentEditor
157
+ };
158
+ //# sourceMappingURL=document-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-editor.js","sources":["../../../../src/components/ui/data/document-editor.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useEditor, EditorContent, Editor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Image from '@tiptap/extension-image';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Separator } from \"../primitives/separator\";\nimport { \n Bold, \n Italic, \n Underline as UnderlineIcon, \n Strikethrough,\n List, \n ListOrdered, \n Quote,\n Heading1,\n Heading2,\n Heading3,\n AlignLeft,\n AlignCenter,\n AlignRight,\n Link as LinkIcon,\n Image as ImageIcon,\n Undo,\n Redo\n} from \"lucide-react\";\nimport { Toggle } from \"../forms/toggle\";\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type EditorVariant = 'simple' | 'full';\n\nexport interface DocumentEditorProps {\n content?: string;\n onChange?: (content: string) => void;\n placeholder?: string;\n variant?: EditorVariant;\n className?: string;\n readOnly?: boolean;\n label?: string;\n}\n\n// ==========================================\n// TOOLBAR COMPONENT\n// ==========================================\n\nconst ToolbarButton = ({ \n onClick, \n isActive = false, \n disabled = false, \n children, \n title \n}: { \n onClick: () => void; \n isActive?: boolean; \n disabled?: boolean;\n children: React.ReactNode;\n title?: string;\n}) => (\n <Toggle\n pressed={isActive}\n onPressedChange={onClick}\n disabled={disabled}\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n title={title}\n aria-label={title}\n >\n {children}\n </Toggle>\n);\n\nconst EditorToolbar = ({ editor, variant }: { editor: Editor, variant: EditorVariant }) => {\n if (!editor) return null;\n\n const setLink = () => {\n const previousUrl = editor.getAttributes('link').href;\n const url = window.prompt('URL', previousUrl);\n if (url === null) return;\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n };\n\n const addImage = () => {\n const url = window.prompt('URL da imagem');\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n };\n\n return (\n <div className={cn(\n \"flex flex-wrap items-center gap-1 p-2 border-b bg-muted/30 sticky top-0 z-10\",\n variant === 'full' ? \"px-4 py-2\" : \"px-2 py-1\"\n )}>\n {/* History */}\n <div className=\"flex items-center gap-0.5 mr-2\">\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\" onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} aria-label=\"Desfazer\">\n <Undo className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\" onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} aria-label=\"Refazer\">\n <Redo className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Typography - Headings (Only full mode or via dropdown in simple) */}\n {variant === 'full' && (\n <>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 1 }).run()} isActive={editor.isActive('heading', { level: 1 })} title=\"Título 1\">\n <Heading1 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()} isActive={editor.isActive('heading', { level: 2 })} title=\"Título 2\">\n <Heading2 className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleHeading({ level: 3 }).run()} isActive={editor.isActive('heading', { level: 3 })} title=\"Título 3\">\n <Heading3 className=\"h-4 w-4\" />\n </ToolbarButton>\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n </>\n )}\n\n {/* Basic Formatting */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBold().run()} isActive={editor.isActive('bold')} title=\"Negrito\">\n <Bold className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleItalic().run()} isActive={editor.isActive('italic')} title=\"Itálico\">\n <Italic className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleUnderline().run()} isActive={editor.isActive('underline')} title=\"Sublinhado\">\n <UnderlineIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n \n {variant === 'full' && (\n <ToolbarButton onClick={() => editor.chain().focus().toggleStrike().run()} isActive={editor.isActive('strike')} title=\"Tachado\">\n <Strikethrough className=\"h-4 w-4\" />\n </ToolbarButton>\n )}\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Lists & Alignment */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBulletList().run()} isActive={editor.isActive('bulletList')} title=\"Lista com marcadores\">\n <List className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().toggleOrderedList().run()} isActive={editor.isActive('orderedList')} title=\"Lista numerada\">\n <ListOrdered className=\"h-4 w-4\" />\n </ToolbarButton>\n\n {variant === 'full' && (\n <>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('left').run()} isActive={editor.isActive({ textAlign: 'left' })} title=\"Alinhar à esquerda\">\n <AlignLeft className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('center').run()} isActive={editor.isActive({ textAlign: 'center' })} title=\"Centralizar\">\n <AlignCenter className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={() => editor.chain().focus().setTextAlign('right').run()} isActive={editor.isActive({ textAlign: 'right' })} title=\"Alinhar à direita\">\n <AlignRight className=\"h-4 w-4\" />\n </ToolbarButton>\n </>\n )}\n\n <Separator orientation=\"vertical\" className=\"h-6 mx-1\" />\n\n {/* Inserts */}\n <ToolbarButton onClick={() => editor.chain().focus().toggleBlockquote().run()} isActive={editor.isActive('blockquote')} title=\"Citação\">\n <Quote className=\"h-4 w-4\" />\n </ToolbarButton>\n <ToolbarButton onClick={setLink} isActive={editor.isActive('link')} title=\"Link\">\n <LinkIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n \n {variant === 'full' && (\n <ToolbarButton onClick={addImage} title=\"Imagem\">\n <ImageIcon className=\"h-4 w-4\" />\n </ToolbarButton>\n )}\n </div>\n );\n};\n\n// ==========================================\n// MAIN COMPONENT\n// ==========================================\n\nexport function DocumentEditor({\n content = '',\n onChange,\n placeholder = 'Comece a escrever...',\n variant = 'simple',\n className,\n readOnly = false,\n label\n}: DocumentEditorProps) {\n const extensions = React.useMemo(() => {\n return [\n StarterKit.configure({\n heading: {\n levels: [1, 2, 3],\n },\n }),\n // Removed explicit Underline and Link to avoid duplicate extension warning\n // If these features are missing, check if StarterKit includes them in your version\n // Underline,\n // Link.configure({\n // openOnClick: false,\n // HTMLAttributes: {\n // class: 'text-primary underline decoration-primary/30 hover:decoration-primary transition-colors cursor-pointer',\n // },\n // }),\n Image.configure({\n HTMLAttributes: {\n class: 'rounded-lg border shadow-sm max-w-full',\n },\n }),\n Placeholder.configure({\n placeholder,\n }),\n TextAlign.configure({\n types: ['heading', 'paragraph'],\n }),\n ];\n }, [placeholder]);\n\n const editor = useEditor({\n extensions,\n content,\n editable: !readOnly,\n onUpdate: ({ editor }) => {\n onChange?.(editor.getHTML());\n },\n editorProps: {\n attributes: {\n class: cn(\n \"prose prose-stone dark:prose-invert max-w-none focus:outline-none\",\n \"prose-headings:font-semibold prose-headings:tracking-tight\",\n \"prose-h1:text-3xl prose-h2:text-2xl prose-h3:text-xl\",\n \"prose-p:leading-7 prose-p:my-3\",\n \"prose-blockquote:border-l-4 prose-blockquote:border-primary/50 prose-blockquote:pl-4 prose-blockquote:italic\",\n \"prose-ul:list-disc prose-ul:pl-6 prose-ol:list-decimal prose-ol:pl-6\",\n \"prose-img:rounded-lg prose-img:shadow-md prose-img:my-6\",\n variant === 'full' ? \"min-h-[400px] p-8\" : \"min-h-[120px] px-3 py-2\"\n ),\n },\n },\n });\n\n if (!editor) return null;\n\n return (\n <div className={cn(\"flex flex-col w-full\", className)}>\n {label && <label className=\"text-sm font-medium mb-1.5 block\">{label}</label>}\n \n <div className={cn(\n \"border rounded-lg bg-background overflow-hidden transition-shadow focus-within:ring-2 focus-within:ring-primary/20\",\n readOnly && \"opacity-80 bg-muted/30 pointer-events-none border-transparent\"\n )}>\n {!readOnly && <EditorToolbar editor={editor} variant={variant} />}\n \n <div className={cn(\n \"bg-background relative\", \n variant === 'full' ? \"bg-card\" : \"\"\n )}>\n <EditorContent editor={editor} />\n </div>\n </div>\n \n {!readOnly && variant === 'full' && (\n <div className=\"text-xs text-muted-foreground mt-1.5 text-right px-1\">\n {editor.storage.characterCount?.words?.() || 0} palavras\n </div>\n )}\n </div>\n );\n}\n"],"names":["ToolbarButton","onClick","isActive","disabled","children","title","jsx","Toggle","EditorToolbar","editor","variant","setLink","previousUrl","url","addImage","jsxs","cn","Button","Undo","Redo","Separator","Fragment","Heading1","Heading2","Heading3","Bold","Italic","UnderlineIcon","Strikethrough","List","ListOrdered","AlignLeft","AlignCenter","AlignRight","Quote","LinkIcon","ImageIcon","DocumentEditor","content","onChange","placeholder","className","readOnly","label","extensions","React","StarterKit","Image","Placeholder","TextAlign","useEditor","EditorContent","_b","_a"],"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"),w=require("react"),i=require("date-fns"),h=require("lucide-react"),f=require("../utils.cjs"),j=require("../primitives/button.cjs"),k=require("../primitives/avatar.cjs"),H=require("../primitives/badge.cjs"),D=require("../overlays/dialog.cjs"),A=require("../forms/toggle-group.cjs"),J=require("../layout/scroll-area.cjs"),C=require("react-dnd"),V=require("react-dnd-html5-backend"),M={TASK:"task"},F={instagram:h.Instagram,linkedin:h.Linkedin,facebook:h.Facebook,twitter:h.Twitter,youtube:h.Youtube,blog:h.Calendar,other:h.Calendar},E={idea:"bg-muted text-muted-foreground border-border",planned:"bg-info/10 text-info-emphasis border-info/20","in-progress":"bg-warning/10 text-warning-emphasis border-warning/20",approval:"bg-accent text-accent-foreground border-border",scheduled:"bg-success/10 text-success-emphasis border-success/20",published:"bg-foreground text-background border-foreground"},B=["bg-chart-2/15 border-chart-2/30 text-chart-2","bg-chart-3/15 border-chart-3/30 text-chart-3","bg-chart-1/15 border-chart-1/30 text-chart-1","bg-chart-4/15 border-chart-4/30 text-chart-4","bg-chart-5/15 border-chart-5/30 text-chart-5","bg-chart-8/15 border-chart-8/30 text-chart-8"],q=t=>{const s=t.split("").reduce((l,d)=>l+d.charCodeAt(0),0);return B[s%B.length]};function z({task:t,view:s="month",mode:l="editorial",onClick:d,style:c}){var N;const[{isDragging:a},n]=C.useDrag(()=>({type:M.TASK,item:{id:t.id,type:M.TASK},collect:g=>({isDragging:!!g.isDragging()})}),[t.id]),m=t.channel?F[t.channel]:h.Calendar,r=t.date?new Date(t.date):null,o=t.endDate?new Date(t.endDate):r?i.addHours(r,1):null,x=r?i.format(r,"HH:mm"):null,p=r&&o?`${i.format(r,"HH:mm")} - ${i.format(o,"HH:mm")}`:x;return l==="editorial"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer bg-card border rounded-md shadow-sm hover:shadow-md transition-all mb-3 overflow-hidden",a?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-b bg-muted/50",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(m,{size:14,className:"text-muted-foreground"}),x&&e.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:x})]}),e.jsx("div",{className:"opacity-0 group-hover:opacity-100 text-muted-foreground cursor-grab",children:e.jsx(h.GripVertical,{size:14})})]}),t.imageUrl&&e.jsx("div",{className:"w-full aspect-video bg-muted relative border-b",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"p-3",children:[e.jsx("h4",{className:"text-sm font-medium text-foreground line-clamp-2 mb-2 leading-snug",children:t.title}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(H.Badge,{variant:"outline",className:f.cn("px-1.5 py-0 text-[10px] h-5 font-normal uppercase tracking-wide",E[t.status]),children:t.status}),t.assignees&&t.assignees.length>0&&e.jsx("div",{className:"flex -space-x-2",children:t.assignees.slice(0,2).map((g,v)=>e.jsxs(k.Avatar,{className:"w-5 h-5 border border-background",children:[e.jsx(k.AvatarImage,{src:g.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:g.name[0]})]},v))})]})]})]}):l==="editorial"&&s==="month"?e.jsxs("div",{ref:n,onClick:d,className:f.cn("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",a?"opacity-50":"opacity-100",t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary"),children:[t.imageUrl&&e.jsx("div",{className:"w-8 h-8 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-xs",children:t.title})]})})]}):l==="execution"&&(s==="week"||s==="day")?e.jsxs("div",{ref:n,onClick:d,style:c,className:f.cn("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",a?"opacity-50":"opacity-100",t.color||q(t.id)),children:[e.jsxs("div",{className:"flex items-center gap-1 mb-0.5 font-semibold opacity-75 text-[10px] leading-none",children:[e.jsx(h.Clock,{size:10}),e.jsx("span",{className:"truncate",children:p})]}),e.jsx("div",{className:"font-bold leading-tight mb-1 line-clamp-2 text-[11px]",children:t.title}),e.jsxs("div",{className:"mt-auto flex items-center justify-between pt-1",children:[e.jsx("div",{className:"flex -space-x-1.5",children:(N=t.assignees)==null?void 0:N.map((g,v)=>e.jsxs(k.Avatar,{className:"w-4 h-4 border border-background",children:[e.jsx(k.AvatarImage,{src:g.avatar}),e.jsx(k.AvatarFallback,{className:"text-[8px]",children:g.name[0]})]},v))}),t.status!=="published"&&e.jsx("div",{className:f.cn("w-2 h-2 rounded-full",E[t.status].split(" ")[1].replace("text-","bg-"))})]})]}):l==="execution"&&s==="month"?e.jsxs("div",{ref:n,onClick:d,className:f.cn("relative group cursor-pointer rounded px-2 py-1 mb-1 text-xs truncate font-medium transition-all",a?"opacity-50":"opacity-100",t.color||q(t.id).replace("bg-","bg-opacity-20 bg-")),children:[x," ",t.title]}):e.jsxs("div",{ref:n,onClick:d,className:f.cn("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",a?"opacity-50":"opacity-100",l==="editorial"&&(t.status==="published"?"border-l-2 border-l-foreground":"border-l-2 border-l-primary")),children:[l==="editorial"&&t.imageUrl&&e.jsx("div",{className:"w-10 h-10 flex-shrink-0 bg-muted rounded overflow-hidden",children:e.jsx("img",{src:t.imageUrl,alt:"",className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-1",children:[l==="editorial"&&e.jsx(m,{size:12,className:"text-muted-foreground"}),e.jsx("span",{className:"truncate font-medium text-sm",children:t.title})]}),e.jsx(H.Badge,{variant:"secondary",className:"text-[10px] h-4 px-1 py-0",children:t.status})]})]})}function Q({days:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,view:a}){return e.jsx("div",{className:f.cn("grid h-full min-h-[calc(100vh-200px)] bg-muted/30",a==="week"?"grid-cols-7 divide-x":"grid-cols-1 border-x"),children:t.map(n=>{const m=s.filter(r=>r.date&&i.isSameDay(new Date(r.date),n)).sort((r,o)=>r.date&&o.date?new Date(r.date).getTime()-new Date(o.date).getTime():0);return e.jsx(X,{day:n,tasks:m,onDropTask:l,onTaskClick:d,onAddClick:c,isToday:i.isToday(n)},n.toISOString())})})}function X({day:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,isToday:a}){const[{isOver:n},m]=C.useDrop(()=>({accept:M.TASK,drop:r=>l(r.id,t),collect:r=>({isOver:!!r.isOver()})}),[t,l]);return e.jsxs("div",{ref:m,className:f.cn("flex flex-col h-full min-h-0 transition-colors",n&&"bg-accent ring-inset ring-2 ring-ring"),children:[e.jsxs("div",{className:f.cn("p-2 text-center border-b bg-card sticky top-0 z-10",a&&"bg-accent/50"),children:[e.jsx("div",{className:"text-xs font-semibold uppercase text-muted-foreground mb-1",children:i.format(t,"EEE")}),e.jsx("div",{className:f.cn("w-8 h-8 rounded-full flex items-center justify-center mx-auto text-sm font-medium",a?"bg-primary text-primary-foreground":"text-foreground bg-muted"),children:i.format(t,"d")})]}),e.jsxs("div",{className:"flex-1 p-2 space-y-3 overflow-y-auto",children:[e.jsxs(j.Button,{variant:"outline",size:"sm",className:"w-full mb-2 justify-center px-1",onClick:()=>c(t),children:[e.jsx(h.Plus,{size:12,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate ml-1.5 hidden xl:inline",children:"Add Post"}),e.jsx("span",{className:"truncate ml-1.5 inline xl:hidden",children:"Add"})]}),s.map(r=>e.jsx(z,{task:r,view:"week",mode:"editorial",onClick:()=>d(r)},r.id))]})]})}function Z({days:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c}){const a=Array.from({length:24},(n,m)=>m);return e.jsxs("div",{className:"flex h-full relative overflow-y-auto bg-card select-none",children:[e.jsxs("div",{className:"w-14 flex-shrink-0 border-r bg-card sticky left-0 z-30",children:[e.jsx("div",{className:"h-10 border-b bg-card sticky top-0 z-40 flex-shrink-0"})," ",a.map(n=>e.jsx("div",{className:"h-24 border-b text-right pr-2 pt-2 text-xs text-muted-foreground font-medium relative",children:e.jsx("span",{className:"-top-2.5 relative",children:i.format(i.setHours(new Date,n),"ha")})},n))]}),e.jsxs("div",{className:"flex flex-1 min-w-0 relative",children:[t.map((n,m)=>{const r=s.filter(o=>o.date&&i.isSameDay(new Date(o.date),n));return e.jsx(ee,{day:n,tasks:r,onDropTask:l,onTaskClick:d,onAddClick:c,isLast:m===t.length-1,HOURS:a},n.toISOString())}),e.jsxs("div",{className:"absolute inset-0 pointer-events-none z-0",children:[e.jsx("div",{className:"h-10 border-b bg-transparent"})," ",a.map(n=>e.jsx("div",{className:"h-24 border-b border-dashed border-border w-full"},n))]})]})]})}function ee({day:t,tasks:s,onDropTask:l,onTaskClick:d,onAddClick:c,isLast:a,HOURS:n}){const[{isOver:m},r]=C.useDrop(()=>({accept:M.TASK,drop:o=>{l(o.id,t)},collect:o=>({isOver:!!o.isOver()})}),[t,l]);return e.jsxs("div",{ref:r,className:f.cn("flex-1 relative min-w-[150px]",!a&&"border-r",m&&"bg-accent/50"),children:[e.jsx("div",{className:"sticky top-0 z-20 bg-card border-b h-10 flex items-center justify-center shadow-sm",children:e.jsxs("div",{className:"text-xs font-bold text-muted-foreground",children:[i.format(t,"EEE")," ",e.jsx("span",{className:f.cn("ml-1",i.isToday(t)&&"text-primary"),children:i.format(t,"d")})]})}),n.map(o=>e.jsx("div",{className:"h-24 w-full absolute hover:bg-muted/50 transition-colors cursor-pointer z-10",style:{top:`${o*96+40}px`},onClick:x=>{x.stopPropagation();const p=new Date(t);p.setHours(o,0),c(p)}},o)),s.map(o=>{const x=o.date?new Date(o.date):new Date,p=o.endDate?new Date(o.endDate):i.addHours(x,1),N=i.getHours(x),g=i.getMinutes(x);let v=i.differenceInMinutes(p,x);v<30&&(v=30);const S=N*96+g/60*96+40,I=v/60*96;return e.jsx(z,{task:o,view:"week",mode:"execution",onClick:()=>d(o),style:{top:`${S}px`,height:`${I}px`,left:"4px",right:"4px",position:"absolute"}},o.id)})]})}function $({days:t,tasks:s,currentDate:l,onDropTask:d,onTaskClick:c,onAddClick:a,mode:n}){return e.jsx("div",{className:"grid grid-cols-7 auto-rows-fr min-h-[800px]",children:t.map(m=>{const r=s.filter(o=>o.date&&i.isSameDay(new Date(o.date),m));return e.jsx(se,{date:m,tasks:r,isCurrentMonth:i.isSameMonth(m,l),onDropTask:d,onTaskClick:c,onAddClick:a,mode:n},m.toISOString())})})}function se({date:t,tasks:s,isCurrentMonth:l,onDropTask:d,onTaskClick:c,onAddClick:a,mode:n}){const[{isOver:m},r]=C.useDrop(()=>({accept:M.TASK,drop:x=>d(x.id,t),collect:x=>({isOver:!!x.isOver()})}),[t,d]),o=i.isToday(t);return e.jsxs("div",{ref:r,className:f.cn("min-h-[120px] border-b border-r p-2 relative transition-colors group flex flex-col",!l&&"bg-muted/50 text-muted-foreground",m&&"bg-accent ring-2 ring-inset ring-ring",o&&"bg-accent/30"),children:[e.jsxs("div",{className:"flex justify-between items-start mb-2",children:[e.jsx("span",{className:f.cn("text-sm font-medium rounded-full w-7 h-7 flex items-center justify-center",o?"bg-primary text-primary-foreground":"text-foreground"),children:i.format(t,"d")}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>a(t),"aria-label":`Agendar publicação em ${i.format(t,"d/MM")}`,children:e.jsx(h.Plus,{size:14})})]}),e.jsx("div",{className:"flex-1 flex flex-col gap-1",children:s.map(x=>e.jsx(z,{task:x,view:"month",mode:n,onClick:()=>c(x)},x.id))})]})}function L({isOpen:t,onClose:s,task:l,onSave:d,isNew:c=!1}){const[a,n]=w.useState(l||{});w.useMemo(()=>{n(l||{})},[l]);const m=()=>{d(a),s()};return e.jsx(D.Dialog,{open:t,onOpenChange:r=>!r&&s(),children:e.jsxs(D.DialogContent,{className:"sm:max-w-[600px]",children:[e.jsxs(D.DialogHeader,{children:[e.jsx(D.DialogTitle,{children:c?"Create New Task":"Edit Task"}),e.jsx(D.DialogDescription,{children:c?"Enter the details for the new task below.":"Modify the details of the selected task."})]}),e.jsxs("div",{className:"grid gap-6 py-4",children:[e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"title",className:"text-right text-sm font-medium",children:"Title"}),e.jsx("input",{id:"title",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",value:a.title||"",onChange:r=>n({...a,title:r.target.value}),placeholder:"e.g. New Feature Announcement"})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{className:"text-right text-sm font-medium",children:"Time"}),e.jsxs("div",{className:"col-span-3 flex gap-2 items-center",children:[e.jsx("input",{type:"date",className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.date instanceof Date?i.format(a.date,"yyyy-MM-dd"):typeof a.date=="string"?a.date.split("T")[0]:"",onChange:r=>{const o=r.target.value,x=a.date instanceof Date?a.date:new Date,p=new Date(`${o}T${i.format(x,"HH:mm")}`);n({...a,date:p})}}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"at"}),e.jsx("input",{type:"time",className:"w-32 flex h-9 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.date instanceof Date?i.format(a.date,"HH:mm"):"09:00",onChange:r=>{const o=r.target.value,x=a.date instanceof Date?i.format(a.date,"yyyy-MM-dd"):i.format(new Date,"yyyy-MM-dd");n({...a,date:new Date(`${x}T${o}`)})}})]})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"channel",className:"text-right text-sm font-medium",children:"Channel / Category"}),e.jsx("select",{id:"channel",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.channel||"instagram",onChange:r=>n({...a,channel:r.target.value}),children:Object.keys(F).map(r=>e.jsx("option",{value:r,children:r.charAt(0).toUpperCase()+r.slice(1)},r))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-center gap-4",children:[e.jsx("label",{htmlFor:"status",className:"text-right text-sm font-medium",children:"Status"}),e.jsx("select",{id:"status",className:"col-span-3 flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",value:a.status||"idea",onChange:r=>n({...a,status:r.target.value}),children:Object.keys(E).map(r=>e.jsx("option",{value:r,children:r.charAt(0).toUpperCase()+r.slice(1)},r))})]}),e.jsxs("div",{className:"grid grid-cols-4 items-start gap-4",children:[e.jsx("label",{htmlFor:"description",className:"text-right text-sm font-medium pt-2",children:"Description"}),e.jsx("textarea",{id:"description",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",value:a.description||"",onChange:r=>n({...a,description:r.target.value}),placeholder:"Details about this post..."})]})]}),e.jsxs(D.DialogFooter,{children:[e.jsx(j.Button,{variant:"outline",onClick:s,children:"Cancel"}),e.jsx(j.Button,{onClick:m,children:"Save Changes"})]})]})})}function U({tasks:t,onTaskUpdate:s,onTaskCreate:l,defaultView:d="month"}){const[c,a]=w.useState(new Date),[n,m]=w.useState(d),[r,o]=w.useState(!0),[x,p]=w.useState(!1),[N,g]=w.useState(null),[v,S]=w.useState(!1),I=w.useMemo(()=>{let u,b;if(n==="month"){const O=i.startOfMonth(c),y=i.endOfMonth(O);u=i.startOfWeek(O),b=i.endOfWeek(y)}else n==="week"?(u=i.startOfWeek(c),b=i.endOfWeek(c)):(u=c,b=c);return i.eachDayOfInterval({start:u,end:b})},[c,n]),W=t.filter(u=>!u.date),Y=t.filter(u=>u.date);return{currentDate:c,view:n,setView:m,isSidebarOpen:r,setIsSidebarOpen:o,isModalOpen:x,setIsModalOpen:p,editingTask:N,isNewTask:v,calendarDays:I,unplannedTasks:W,scheduledTasks:Y,handlePrev:()=>{a(n==="month"?i.subMonths(c,1):n==="week"?i.addDays(c,-7):i.addDays(c,-1))},handleNext:()=>{a(n==="month"?i.addMonths(c,1):n==="week"?i.addDays(c,7):i.addDays(c,1))},handleToday:()=>a(new Date),handleDropTask:(u,b,O)=>{const y=t.find(T=>T.id===u);if(y){let T=new Date(b);if(n==="month"||O==="editorial")if(y.date){const P=new Date(y.date);T.setHours(P.getHours(),P.getMinutes())}else T.setHours(9,0);const _={...y,date:T};s(_)}},handleTaskClick:u=>{g(u),S(!1),p(!0)},handleAddClick:u=>{const b=u||new Date;i.getHours(b)===0&&i.getMinutes(b)===0&&b.setHours(9,0),g({date:b,status:"idea",channel:"instagram"}),S(!0),p(!0)},handleModalSave:u=>{v?l&&l(u):u.id&&s(u),p(!1)}}}function G({isOpen:t,setIsOpen:s,tasks:l,onAddClick:d,onTaskClick:c,mode:a}){return t?e.jsxs("div",{className:"w-72 border-r bg-muted/50 flex flex-col transition-all duration-300 flex-shrink-0",children:[e.jsxs("div",{className:"p-4 border-b bg-card flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold text-sm text-foreground",children:"Backlog"}),e.jsx(H.Badge,{variant:"secondary",className:"bg-muted text-xs",children:l.length})]}),e.jsx(j.Button,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>s(!1),"aria-label":"Recolher backlog",children:e.jsx(h.PanelLeftClose,{size:16})})]}),e.jsx("div",{className:"px-4 pt-3 bg-card pb-3 border-b space-y-2",children:e.jsxs(j.Button,{onClick:d,variant:"outline",size:"sm",className:"w-full justify-start pl-2",children:[e.jsx(h.Plus,{size:12,className:"mr-1.5"})," New Task"]})}),e.jsx(J.ScrollArea,{className:"flex-1 p-3",children:e.jsx("div",{className:"space-y-2",children:l.length===0?e.jsx("div",{className:"text-center py-10 px-4 border-2 border-dashed border-border rounded-lg",children:e.jsx("p",{className:"text-xs text-foreground/70",children:"Nenhum item sem agenda"})}):l.map(n=>e.jsx(z,{task:n,view:"backlog",mode:a,onClick:()=>c(n)},n.id))})})]}):e.jsxs("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:()=>s(!0),children:[e.jsx(h.PanelLeftOpen,{className:"text-muted-foreground mb-4",size:20}),e.jsx("div",{className:"flex-1 flex items-center justify-center min-h-0",children:e.jsx("div",{className:"whitespace-nowrap text-xs font-medium text-muted-foreground -rotate-90 transform",children:"BACKLOG"})}),e.jsx(H.Badge,{className:"mt-2 h-5 w-5 p-0 flex items-center justify-center rounded-full bg-primary text-[10px]",children:l.length})]})}function K({title:t,onPrev:s,onNext:l,onToday:d,onAdd:c,view:a,setView:n}){return e.jsxs("div",{className:"flex flex-col xl:flex-row items-center justify-between p-4 border-b gap-4 flex-shrink-0 bg-card",children:[e.jsxs("div",{className:"flex items-center gap-4 w-full xl:w-auto justify-between xl:justify-start",children:[e.jsxs("div",{className:"flex items-center border rounded-md bg-card shadow-sm",children:[e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:s,className:"h-8 w-8 rounded-r-none","aria-label":"Anterior",children:e.jsx(h.ChevronLeft,{className:"h-4 w-4"})}),e.jsx(j.Button,{variant:"ghost",onClick:d,className:"h-8 px-3 rounded-none border-x text-sm font-medium hover:bg-muted",children:"Hoje"}),e.jsx(j.Button,{variant:"ghost",size:"icon",onClick:l,className:"h-8 w-8 rounded-l-none","aria-label":"Próximo",children:e.jsx(h.ChevronRight,{className:"h-4 w-4"})})]}),e.jsx("h2",{className:"text-lg font-bold text-foreground whitespace-nowrap",children:t})]}),e.jsxs("div",{className:"flex items-center gap-3 w-full xl:w-auto overflow-x-auto pb-1 xl:pb-0 justify-end",children:[e.jsxs(A.ToggleGroup,{type:"single",value:a,onValueChange:m=>m&&n(m),className:"flex-shrink-0","aria-label":"Visualização do calendário",children:[e.jsx(A.ToggleGroupItem,{value:"month",className:"text-xs",children:"Mês"}),e.jsx(A.ToggleGroupItem,{value:"week",className:"text-xs",children:"Semana"}),e.jsx(A.ToggleGroupItem,{value:"day",className:"text-xs",children:"Dia"})]}),e.jsxs(j.Button,{variant:"default",className:"h-9 px-4 flex-shrink-0",onClick:c,children:[e.jsx(h.Plus,{className:"mr-2 h-4 w-4"})," Criar"]})]})]})}function R({days:t}){return e.jsx("div",{className:"grid grid-cols-7 border-b bg-muted/50 flex-shrink-0 divide-x",children:t.slice(0,7).map((s,l)=>e.jsx("div",{className:"py-2 text-center group",children:e.jsx("div",{className:f.cn("text-xs font-semibold uppercase tracking-wider",i.isToday(s)?"text-primary":"text-foreground/70"),children:i.format(s,"EEE")})},l))})}function te(t){const s=U({...t,defaultView:"month"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(G,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"editorial"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(K,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"editorial"}),s.view==="month"&&e.jsx(R,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,d)=>s.handleDropTask(l,d,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"editorial"}):e.jsx(Q,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,d)=>s.handleDropTask(l,d,"editorial"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,view:s.view})})]}),s.isModalOpen&&e.jsx(L,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}function ae(t){const s=U({...t,defaultView:"week"});return e.jsx(C.DndProvider,{backend:V.HTML5Backend,children:e.jsxs("div",{className:f.cn("flex h-[calc(100vh-100px)] bg-background border rounded-lg overflow-hidden shadow-sm",t.className),children:[e.jsx(G,{isOpen:s.isSidebarOpen,setIsOpen:s.setIsSidebarOpen,tasks:s.unplannedTasks,onAddClick:()=>s.handleAddClick(),onTaskClick:s.handleTaskClick,mode:"execution"}),e.jsxs("div",{className:"flex-1 flex flex-col min-w-0 bg-card",children:[e.jsx(K,{title:s.view==="day"?i.format(s.currentDate,"MMM d, yyyy"):i.format(s.currentDate,"MMMM yyyy"),onPrev:s.handlePrev,onNext:s.handleNext,onToday:s.handleToday,onAdd:()=>s.handleAddClick(s.currentDate),view:s.view,setView:s.setView,mode:"execution"}),s.view==="month"&&e.jsx(R,{days:s.calendarDays}),e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col relative",children:s.view==="month"?e.jsx($,{days:s.calendarDays,tasks:s.scheduledTasks,currentDate:s.currentDate,onDropTask:(l,d)=>s.handleDropTask(l,d,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick,mode:"execution"}):e.jsx(Z,{days:s.calendarDays,tasks:s.scheduledTasks,onDropTask:(l,d)=>s.handleDropTask(l,d,"execution"),onTaskClick:s.handleTaskClick,onAddClick:s.handleAddClick})})]}),s.isModalOpen&&e.jsx(L,{isOpen:s.isModalOpen,onClose:()=>s.setIsModalOpen(!1),task:s.editingTask||{},onSave:s.handleModalSave,isNew:s.isNewTask})]})})}exports.EditorialCalendar=te;exports.TaskCalendar=ae;
2
+ //# sourceMappingURL=editorial-calendar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorial-calendar.cjs","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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"}