@iclips/ui 1.4.13 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/MIGRATION-v2.md +214 -0
- package/README.md +106 -0
- package/dist/alert-theme.css +94 -0
- package/dist/assets/illustrations/announcements.png.cjs +2 -0
- package/dist/assets/illustrations/announcements.png.cjs.map +1 -0
- package/dist/assets/illustrations/announcements.png.js +5 -0
- package/dist/assets/illustrations/announcements.png.js.map +1 -0
- package/dist/assets/illustrations/checklist-approved.png.cjs +2 -0
- package/dist/assets/illustrations/checklist-approved.png.cjs.map +1 -0
- package/dist/assets/illustrations/checklist-approved.png.js +5 -0
- package/dist/assets/illustrations/checklist-approved.png.js.map +1 -0
- package/dist/assets/illustrations/client-profile.png.cjs +2 -0
- package/dist/assets/illustrations/client-profile.png.cjs.map +1 -0
- package/dist/assets/illustrations/client-profile.png.js +5 -0
- package/dist/assets/illustrations/client-profile.png.js.map +1 -0
- package/dist/assets/illustrations/contract-agreement.png.cjs +2 -0
- package/dist/assets/illustrations/contract-agreement.png.cjs.map +1 -0
- package/dist/assets/illustrations/contract-agreement.png.js +5 -0
- package/dist/assets/illustrations/contract-agreement.png.js.map +1 -0
- package/dist/assets/illustrations/create-record.png.cjs +2 -0
- package/dist/assets/illustrations/create-record.png.cjs.map +1 -0
- package/dist/assets/illustrations/create-record.png.js +5 -0
- package/dist/assets/illustrations/create-record.png.js.map +1 -0
- package/dist/assets/illustrations/cta-action.png.cjs +2 -0
- package/dist/assets/illustrations/cta-action.png.cjs.map +1 -0
- package/dist/assets/illustrations/cta-action.png.js +5 -0
- package/dist/assets/illustrations/cta-action.png.js.map +1 -0
- package/dist/assets/illustrations/draft-document.png.cjs +2 -0
- package/dist/assets/illustrations/draft-document.png.cjs.map +1 -0
- package/dist/assets/illustrations/draft-document.png.js +5 -0
- package/dist/assets/illustrations/draft-document.png.js.map +1 -0
- package/dist/assets/illustrations/edit-company.png.cjs +2 -0
- package/dist/assets/illustrations/edit-company.png.cjs.map +1 -0
- package/dist/assets/illustrations/edit-company.png.js +5 -0
- package/dist/assets/illustrations/edit-company.png.js.map +1 -0
- package/dist/assets/illustrations/edit-document.png.cjs +2 -0
- package/dist/assets/illustrations/edit-document.png.cjs.map +1 -0
- package/dist/assets/illustrations/edit-document.png.js +5 -0
- package/dist/assets/illustrations/edit-document.png.js.map +1 -0
- package/dist/assets/illustrations/empty-no-results.png.cjs +2 -0
- package/dist/assets/illustrations/empty-no-results.png.cjs.map +1 -0
- package/dist/assets/illustrations/empty-no-results.png.js +5 -0
- package/dist/assets/illustrations/empty-no-results.png.js.map +1 -0
- package/dist/assets/illustrations/empty-not-found.png.cjs +2 -0
- package/dist/assets/illustrations/empty-not-found.png.cjs.map +1 -0
- package/dist/assets/illustrations/empty-not-found.png.js +5 -0
- package/dist/assets/illustrations/empty-not-found.png.js.map +1 -0
- package/dist/assets/illustrations/empty-task-approved.png.cjs +2 -0
- package/dist/assets/illustrations/empty-task-approved.png.cjs.map +1 -0
- package/dist/assets/illustrations/empty-task-approved.png.js +5 -0
- package/dist/assets/illustrations/empty-task-approved.png.js.map +1 -0
- package/dist/assets/illustrations/empty-workflow-status.png.cjs +2 -0
- package/dist/assets/illustrations/empty-workflow-status.png.cjs.map +1 -0
- package/dist/assets/illustrations/empty-workflow-status.png.js +5 -0
- package/dist/assets/illustrations/empty-workflow-status.png.js.map +1 -0
- package/dist/assets/illustrations/integrations.png.cjs +2 -0
- package/dist/assets/illustrations/integrations.png.cjs.map +1 -0
- package/dist/assets/illustrations/integrations.png.js +5 -0
- package/dist/assets/illustrations/integrations.png.js.map +1 -0
- package/dist/assets/illustrations/onboarding-tips.png.cjs +2 -0
- package/dist/assets/illustrations/onboarding-tips.png.cjs.map +1 -0
- package/dist/assets/illustrations/onboarding-tips.png.js +5 -0
- package/dist/assets/illustrations/onboarding-tips.png.js.map +1 -0
- package/dist/assets/illustrations/scheduled-tasks.png.cjs +2 -0
- package/dist/assets/illustrations/scheduled-tasks.png.cjs.map +1 -0
- package/dist/assets/illustrations/scheduled-tasks.png.js +5 -0
- package/dist/assets/illustrations/scheduled-tasks.png.js.map +1 -0
- package/dist/assets/illustrations/search-documents.png.cjs +2 -0
- package/dist/assets/illustrations/search-documents.png.cjs.map +1 -0
- package/dist/assets/illustrations/search-documents.png.js +5 -0
- package/dist/assets/illustrations/search-documents.png.js.map +1 -0
- package/dist/assets/illustrations/success-checkmark.png.cjs +2 -0
- package/dist/assets/illustrations/success-checkmark.png.cjs.map +1 -0
- package/dist/assets/illustrations/success-checkmark.png.js +5 -0
- package/dist/assets/illustrations/success-checkmark.png.js.map +1 -0
- package/dist/components/ui/brand-colors.cjs +2 -0
- package/dist/components/ui/brand-colors.cjs.map +1 -0
- package/dist/components/ui/brand-colors.js +8 -0
- package/dist/components/ui/brand-colors.js.map +1 -0
- package/dist/components/ui/charts/chart.cjs +8 -0
- package/dist/components/ui/charts/chart.cjs.map +1 -0
- package/dist/components/ui/charts/chart.js +214 -0
- package/dist/components/ui/charts/chart.js.map +1 -0
- package/dist/components/ui/charts/donut-chart.cjs +2 -0
- package/dist/components/ui/charts/donut-chart.cjs.map +1 -0
- package/dist/components/ui/charts/donut-chart.js +285 -0
- package/dist/components/ui/charts/donut-chart.js.map +1 -0
- package/dist/components/ui/charts/kpi-card.cjs +2 -0
- package/dist/components/ui/charts/kpi-card.cjs.map +1 -0
- package/dist/components/ui/charts/kpi-card.js +75 -0
- package/dist/components/ui/charts/kpi-card.js.map +1 -0
- package/dist/components/ui/data/advanced-data-table.cjs +2 -0
- package/dist/components/ui/data/advanced-data-table.cjs.map +1 -0
- package/dist/components/ui/data/advanced-data-table.js +69 -0
- package/dist/components/ui/data/advanced-data-table.js.map +1 -0
- package/dist/components/ui/data/comment-system.cjs +2 -0
- package/dist/components/ui/data/comment-system.cjs.map +1 -0
- package/dist/components/ui/data/comment-system.js +492 -0
- package/dist/components/ui/data/comment-system.js.map +1 -0
- package/dist/components/ui/data/data-table-empty-state.cjs +2 -0
- package/dist/components/ui/data/data-table-empty-state.cjs.map +1 -0
- package/dist/components/ui/data/data-table-empty-state.js +40 -0
- package/dist/components/ui/data/data-table-empty-state.js.map +1 -0
- package/dist/components/ui/data/data-table-toolbar.cjs +2 -0
- package/dist/components/ui/data/data-table-toolbar.cjs.map +1 -0
- package/dist/components/ui/data/data-table-toolbar.js +85 -0
- package/dist/components/ui/data/data-table-toolbar.js.map +1 -0
- package/dist/components/ui/data/data-table.cjs +2 -0
- package/dist/components/ui/data/data-table.cjs.map +1 -0
- package/dist/components/ui/data/data-table.js +181 -0
- package/dist/components/ui/data/data-table.js.map +1 -0
- package/dist/components/ui/data/document-editor.cjs +2 -0
- package/dist/components/ui/data/document-editor.cjs.map +1 -0
- package/dist/components/ui/data/document-editor.js +158 -0
- package/dist/components/ui/data/document-editor.js.map +1 -0
- package/dist/components/ui/data/editorial-calendar.cjs +2 -0
- package/dist/components/ui/data/editorial-calendar.cjs.map +1 -0
- package/dist/components/ui/data/editorial-calendar.js +840 -0
- package/dist/components/ui/data/editorial-calendar.js.map +1 -0
- package/dist/components/ui/data/filter-bar.cjs +2 -0
- package/dist/components/ui/data/filter-bar.cjs.map +1 -0
- package/dist/components/ui/data/filter-bar.js +60 -0
- package/dist/components/ui/data/filter-bar.js.map +1 -0
- package/dist/components/ui/data/filter-builder.cjs +2 -0
- package/dist/components/ui/data/filter-builder.cjs.map +1 -0
- package/dist/components/ui/data/filter-builder.js +378 -0
- package/dist/components/ui/data/filter-builder.js.map +1 -0
- package/dist/components/ui/data/filter-chip.cjs +2 -0
- package/dist/components/ui/data/filter-chip.cjs.map +1 -0
- package/dist/components/ui/data/filter-chip.js +39 -0
- package/dist/components/ui/data/filter-chip.js.map +1 -0
- package/dist/components/ui/data/mention-list.cjs +2 -0
- package/dist/components/ui/data/mention-list.cjs.map +1 -0
- package/dist/components/ui/data/mention-list.js +46 -0
- package/dist/components/ui/data/mention-list.js.map +1 -0
- package/dist/components/ui/data/table-pagination.cjs +2 -0
- package/dist/components/ui/data/table-pagination.cjs.map +1 -0
- package/dist/components/ui/data/table-pagination.js +176 -0
- package/dist/components/ui/data/table-pagination.js.map +1 -0
- package/dist/components/ui/data/table-types.cjs +2 -0
- package/dist/components/ui/data/table-types.cjs.map +1 -0
- package/dist/components/ui/data/table-types.js +14 -0
- package/dist/components/ui/data/table-types.js.map +1 -0
- package/dist/components/ui/data/table.cjs +2 -0
- package/dist/components/ui/data/table.cjs.map +1 -0
- package/dist/components/ui/data/table.js +130 -0
- package/dist/components/ui/data/table.js.map +1 -0
- package/dist/components/ui/feedback/alert.cjs +2 -0
- package/dist/components/ui/feedback/alert.cjs.map +1 -0
- package/dist/components/ui/feedback/alert.js +67 -0
- package/dist/components/ui/feedback/alert.js.map +1 -0
- package/dist/components/ui/feedback/empty-state.cjs +2 -0
- package/dist/components/ui/feedback/empty-state.cjs.map +1 -0
- package/dist/components/ui/feedback/empty-state.js +78 -0
- package/dist/components/ui/feedback/empty-state.js.map +1 -0
- package/dist/components/ui/feedback/illustrations.cjs +2 -0
- package/dist/components/ui/feedback/illustrations.cjs.map +1 -0
- package/dist/components/ui/feedback/illustrations.js +157 -0
- package/dist/components/ui/feedback/illustrations.js.map +1 -0
- package/dist/components/ui/feedback/toast.cjs +2 -0
- package/dist/components/ui/feedback/toast.cjs.map +1 -0
- package/dist/components/ui/feedback/toast.js +38 -0
- package/dist/components/ui/feedback/toast.js.map +1 -0
- package/dist/components/ui/forms/calendar.cjs +2 -0
- package/dist/components/ui/forms/calendar.cjs.map +1 -0
- package/dist/components/ui/forms/calendar.js +65 -0
- package/dist/components/ui/forms/calendar.js.map +1 -0
- package/dist/components/ui/forms/checkbox.cjs +2 -0
- package/dist/components/ui/forms/checkbox.cjs.map +1 -0
- package/dist/components/ui/forms/checkbox.js +31 -0
- package/dist/components/ui/forms/checkbox.js.map +1 -0
- package/dist/components/ui/forms/color-picker.cjs +2 -0
- package/dist/components/ui/forms/color-picker.cjs.map +1 -0
- package/dist/components/ui/forms/color-picker.js +151 -0
- package/dist/components/ui/forms/color-picker.js.map +1 -0
- package/dist/components/ui/forms/combobox.cjs +2 -0
- package/dist/components/ui/forms/combobox.cjs.map +1 -0
- package/dist/components/ui/forms/combobox.js +208 -0
- package/dist/components/ui/forms/combobox.js.map +1 -0
- package/dist/components/ui/forms/currency-input.cjs +2 -0
- package/dist/components/ui/forms/currency-input.cjs.map +1 -0
- package/dist/components/ui/forms/currency-input.js +81 -0
- package/dist/components/ui/forms/currency-input.js.map +1 -0
- package/dist/components/ui/forms/date-picker.cjs +2 -0
- package/dist/components/ui/forms/date-picker.cjs.map +1 -0
- package/dist/components/ui/forms/date-picker.js +199 -0
- package/dist/components/ui/forms/date-picker.js.map +1 -0
- package/dist/components/ui/forms/date-range-picker.cjs +2 -0
- package/dist/components/ui/forms/date-range-picker.cjs.map +1 -0
- package/dist/components/ui/forms/date-range-picker.js +305 -0
- package/dist/components/ui/forms/date-range-picker.js.map +1 -0
- package/dist/components/ui/forms/editable-badge.cjs +2 -0
- package/dist/components/ui/forms/editable-badge.cjs.map +1 -0
- package/dist/components/ui/forms/editable-badge.js +137 -0
- package/dist/components/ui/forms/editable-badge.js.map +1 -0
- package/dist/components/ui/forms/file-attachment-list.cjs +2 -0
- package/dist/components/ui/forms/file-attachment-list.cjs.map +1 -0
- package/dist/components/ui/forms/file-attachment-list.js +235 -0
- package/dist/components/ui/forms/file-attachment-list.js.map +1 -0
- package/dist/components/ui/forms/file-upload-zone.cjs +3 -0
- package/dist/components/ui/forms/file-upload-zone.cjs.map +1 -0
- package/dist/components/ui/forms/file-upload-zone.js +142 -0
- package/dist/components/ui/forms/file-upload-zone.js.map +1 -0
- package/dist/components/ui/forms/form.cjs +2 -0
- package/dist/components/ui/forms/form.cjs.map +1 -0
- package/dist/components/ui/forms/form.js +109 -0
- package/dist/components/ui/forms/form.js.map +1 -0
- package/dist/components/ui/forms/input-group.cjs +2 -0
- package/dist/components/ui/forms/input-group.cjs.map +1 -0
- package/dist/components/ui/forms/input-group.js +131 -0
- package/dist/components/ui/forms/input-group.js.map +1 -0
- package/dist/components/ui/forms/input-otp.cjs +2 -0
- package/dist/components/ui/forms/input-otp.cjs.map +1 -0
- package/dist/components/ui/forms/input-otp.js +63 -0
- package/dist/components/ui/forms/input-otp.js.map +1 -0
- package/dist/components/ui/forms/input-validation.cjs +2 -0
- package/dist/components/ui/forms/input-validation.cjs.map +1 -0
- package/dist/components/ui/forms/input-validation.js +55 -0
- package/dist/components/ui/forms/input-validation.js.map +1 -0
- package/dist/components/ui/forms/input.cjs +2 -0
- package/dist/components/ui/forms/input.cjs.map +1 -0
- package/dist/components/ui/forms/input.js +26 -0
- package/dist/components/ui/forms/input.js.map +1 -0
- package/dist/components/ui/forms/month-range-picker.cjs +2 -0
- package/dist/components/ui/forms/month-range-picker.cjs.map +1 -0
- package/dist/components/ui/forms/month-range-picker.js +263 -0
- package/dist/components/ui/forms/month-range-picker.js.map +1 -0
- package/dist/components/ui/forms/multi-select.cjs +2 -0
- package/dist/components/ui/forms/multi-select.cjs.map +1 -0
- package/dist/components/ui/forms/multi-select.js +251 -0
- package/dist/components/ui/forms/multi-select.js.map +1 -0
- package/dist/components/ui/forms/number-input.cjs +2 -0
- package/dist/components/ui/forms/number-input.cjs.map +1 -0
- package/dist/components/ui/forms/number-input.js +220 -0
- package/dist/components/ui/forms/number-input.js.map +1 -0
- package/dist/components/ui/forms/password-input.cjs +2 -0
- package/dist/components/ui/forms/password-input.cjs.map +1 -0
- package/dist/components/ui/forms/password-input.js +43 -0
- package/dist/components/ui/forms/password-input.js.map +1 -0
- package/dist/components/ui/forms/radio-group.cjs +2 -0
- package/dist/components/ui/forms/radio-group.cjs.map +1 -0
- package/dist/components/ui/forms/radio-group.js +41 -0
- package/dist/components/ui/forms/radio-group.js.map +1 -0
- package/dist/components/ui/forms/select.cjs +2 -0
- package/dist/components/ui/forms/select.cjs.map +1 -0
- package/dist/components/ui/forms/select.js +140 -0
- package/dist/components/ui/forms/select.js.map +1 -0
- package/dist/components/ui/forms/slider.cjs +2 -0
- package/dist/components/ui/forms/slider.cjs.map +1 -0
- package/dist/components/ui/forms/slider.js +62 -0
- package/dist/components/ui/forms/slider.js.map +1 -0
- package/dist/components/ui/forms/social-button.cjs +2 -0
- package/dist/components/ui/forms/social-button.cjs.map +1 -0
- package/dist/components/ui/forms/social-button.js +86 -0
- package/dist/components/ui/forms/social-button.js.map +1 -0
- package/dist/components/ui/forms/switch.cjs +2 -0
- package/dist/components/ui/forms/switch.cjs.map +1 -0
- package/dist/components/ui/forms/switch.js +31 -0
- package/dist/components/ui/forms/switch.js.map +1 -0
- package/dist/components/ui/forms/textarea.cjs +2 -0
- package/dist/components/ui/forms/textarea.cjs.map +1 -0
- package/dist/components/ui/forms/textarea.js +22 -0
- package/dist/components/ui/forms/textarea.js.map +1 -0
- package/dist/components/ui/forms/time-picker.cjs +2 -0
- package/dist/components/ui/forms/time-picker.cjs.map +1 -0
- package/dist/components/ui/forms/time-picker.js +195 -0
- package/dist/components/ui/forms/time-picker.js.map +1 -0
- package/dist/components/ui/forms/toggle-group.cjs +2 -0
- package/dist/components/ui/forms/toggle-group.cjs.map +1 -0
- package/dist/components/ui/forms/toggle-group.js +53 -0
- package/dist/components/ui/forms/toggle-group.js.map +1 -0
- package/dist/components/ui/forms/toggle.cjs +2 -0
- package/dist/components/ui/forms/toggle.cjs.map +1 -0
- package/dist/components/ui/forms/toggle.js +40 -0
- package/dist/components/ui/forms/toggle.js.map +1 -0
- package/dist/components/ui/layout/accordion.cjs +2 -0
- package/dist/components/ui/layout/accordion.cjs.map +1 -0
- package/dist/components/ui/layout/accordion.js +53 -0
- package/dist/components/ui/layout/accordion.js.map +1 -0
- package/dist/components/ui/layout/auth-layout.cjs +2 -0
- package/dist/components/ui/layout/auth-layout.cjs.map +1 -0
- package/dist/components/ui/layout/auth-layout.js +74 -0
- package/dist/components/ui/layout/auth-layout.js.map +1 -0
- package/dist/components/ui/layout/card.cjs +2 -0
- package/dist/components/ui/layout/card.cjs.map +1 -0
- package/dist/components/ui/layout/card.js +104 -0
- package/dist/components/ui/layout/card.js.map +1 -0
- package/dist/components/ui/layout/carousel.cjs +2 -0
- package/dist/components/ui/layout/carousel.cjs.map +1 -0
- package/dist/components/ui/layout/carousel.js +189 -0
- package/dist/components/ui/layout/carousel.js.map +1 -0
- package/dist/components/ui/layout/collapsible.cjs +2 -0
- package/dist/components/ui/layout/collapsible.cjs.map +1 -0
- package/dist/components/ui/layout/collapsible.js +30 -0
- package/dist/components/ui/layout/collapsible.js.map +1 -0
- package/dist/components/ui/layout/page-header.cjs +2 -0
- package/dist/components/ui/layout/page-header.cjs.map +1 -0
- package/dist/components/ui/layout/page-header.js +81 -0
- package/dist/components/ui/layout/page-header.js.map +1 -0
- package/dist/components/ui/layout/resizable.cjs +2 -0
- package/dist/components/ui/layout/resizable.cjs.map +1 -0
- package/dist/components/ui/layout/resizable.js +45 -0
- package/dist/components/ui/layout/resizable.js.map +1 -0
- package/dist/components/ui/layout/scroll-area.cjs +2 -0
- package/dist/components/ui/layout/scroll-area.cjs.map +1 -0
- package/dist/components/ui/layout/scroll-area.js +56 -0
- package/dist/components/ui/layout/scroll-area.js.map +1 -0
- package/dist/components/ui/navigation/breadcrumb.cjs +2 -0
- package/dist/components/ui/navigation/breadcrumb.cjs.map +1 -0
- package/dist/components/ui/navigation/breadcrumb.js +94 -0
- package/dist/components/ui/navigation/breadcrumb.js.map +1 -0
- package/dist/components/ui/navigation/navigation-menu.cjs +2 -0
- package/dist/components/ui/navigation/navigation-menu.cjs.map +1 -0
- package/dist/components/ui/navigation/navigation-menu.js +144 -0
- package/dist/components/ui/navigation/navigation-menu.js.map +1 -0
- package/dist/components/ui/navigation/pagination.cjs +2 -0
- package/dist/components/ui/navigation/pagination.cjs.map +1 -0
- package/dist/components/ui/navigation/pagination.js +106 -0
- package/dist/components/ui/navigation/pagination.js.map +1 -0
- package/dist/components/ui/navigation/sidebar.cjs +2 -0
- package/dist/components/ui/navigation/sidebar.cjs.map +1 -0
- package/dist/components/ui/navigation/sidebar.js +579 -0
- package/dist/components/ui/navigation/sidebar.js.map +1 -0
- package/dist/components/ui/navigation/tabs.cjs +2 -0
- package/dist/components/ui/navigation/tabs.cjs.map +1 -0
- package/dist/components/ui/navigation/tabs.js +58 -0
- package/dist/components/ui/navigation/tabs.js.map +1 -0
- package/dist/components/ui/navigation/underline-tabs.cjs +2 -0
- package/dist/components/ui/navigation/underline-tabs.cjs.map +1 -0
- package/dist/components/ui/navigation/underline-tabs.js +109 -0
- package/dist/components/ui/navigation/underline-tabs.js.map +1 -0
- package/dist/components/ui/overlays/alert-dialog.cjs +2 -0
- package/dist/components/ui/overlays/alert-dialog.cjs.map +1 -0
- package/dist/components/ui/overlays/alert-dialog.js +135 -0
- package/dist/components/ui/overlays/alert-dialog.js.map +1 -0
- package/dist/components/ui/overlays/command.cjs +2 -0
- package/dist/components/ui/overlays/command.cjs.map +1 -0
- package/dist/components/ui/overlays/command.js +143 -0
- package/dist/components/ui/overlays/command.js.map +1 -0
- package/dist/components/ui/overlays/context-menu.cjs +2 -0
- package/dist/components/ui/overlays/context-menu.cjs.map +1 -0
- package/dist/components/ui/overlays/context-menu.js +197 -0
- package/dist/components/ui/overlays/context-menu.js.map +1 -0
- package/dist/components/ui/overlays/dialog.cjs +2 -0
- package/dist/components/ui/overlays/dialog.cjs.map +1 -0
- package/dist/components/ui/overlays/dialog.js +112 -0
- package/dist/components/ui/overlays/dialog.js.map +1 -0
- package/dist/components/ui/overlays/drawer.cjs +2 -0
- package/dist/components/ui/overlays/drawer.cjs.map +1 -0
- package/dist/components/ui/overlays/drawer.js +109 -0
- package/dist/components/ui/overlays/drawer.js.map +1 -0
- package/dist/components/ui/overlays/dropdown-menu.cjs +2 -0
- package/dist/components/ui/overlays/dropdown-menu.cjs.map +1 -0
- package/dist/components/ui/overlays/dropdown-menu.js +198 -0
- package/dist/components/ui/overlays/dropdown-menu.js.map +1 -0
- package/dist/components/ui/overlays/hover-card.cjs +2 -0
- package/dist/components/ui/overlays/hover-card.cjs.map +1 -0
- package/dist/components/ui/overlays/hover-card.js +40 -0
- package/dist/components/ui/overlays/hover-card.js.map +1 -0
- package/dist/components/ui/overlays/menubar.cjs +2 -0
- package/dist/components/ui/overlays/menubar.cjs.map +1 -0
- package/dist/components/ui/overlays/menubar.js +213 -0
- package/dist/components/ui/overlays/menubar.js.map +1 -0
- package/dist/components/ui/overlays/popover.cjs +2 -0
- package/dist/components/ui/overlays/popover.cjs.map +1 -0
- package/dist/components/ui/overlays/popover.js +36 -0
- package/dist/components/ui/overlays/popover.js.map +1 -0
- package/dist/components/ui/overlays/sheet.cjs +2 -0
- package/dist/components/ui/overlays/sheet.cjs.map +1 -0
- package/dist/components/ui/overlays/sheet.js +109 -0
- package/dist/components/ui/overlays/sheet.js.map +1 -0
- package/dist/components/ui/overlays/side-panel.cjs +16 -0
- package/dist/components/ui/overlays/side-panel.cjs.map +1 -0
- package/dist/components/ui/overlays/side-panel.js +117 -0
- package/dist/components/ui/overlays/side-panel.js.map +1 -0
- package/dist/components/ui/overlays/tooltip.cjs +2 -0
- package/dist/components/ui/overlays/tooltip.cjs.map +1 -0
- package/dist/components/ui/overlays/tooltip.js +50 -0
- package/dist/components/ui/overlays/tooltip.js.map +1 -0
- package/dist/components/ui/primitives/aspect-ratio.cjs +2 -0
- package/dist/components/ui/primitives/aspect-ratio.cjs.map +1 -0
- package/dist/components/ui/primitives/aspect-ratio.js +10 -0
- package/dist/components/ui/primitives/aspect-ratio.js.map +1 -0
- package/dist/components/ui/primitives/avatar.cjs +2 -0
- package/dist/components/ui/primitives/avatar.cjs.map +1 -0
- package/dist/components/ui/primitives/avatar.js +63 -0
- package/dist/components/ui/primitives/avatar.js.map +1 -0
- package/dist/components/ui/primitives/badge.cjs +2 -0
- package/dist/components/ui/primitives/badge.cjs.map +1 -0
- package/dist/components/ui/primitives/badge.js +50 -0
- package/dist/components/ui/primitives/badge.js.map +1 -0
- package/dist/components/ui/primitives/brand-logo.cjs +2 -0
- package/dist/components/ui/primitives/brand-logo.cjs.map +1 -0
- package/dist/components/ui/primitives/brand-logo.js +74 -0
- package/dist/components/ui/primitives/brand-logo.js.map +1 -0
- package/dist/components/ui/primitives/brand-logo.negative-paths.cjs +2 -0
- package/dist/components/ui/primitives/brand-logo.negative-paths.cjs.map +1 -0
- package/dist/components/ui/primitives/brand-logo.negative-paths.js +15 -0
- package/dist/components/ui/primitives/brand-logo.negative-paths.js.map +1 -0
- package/dist/components/ui/primitives/brand-logo.positive-paths.cjs +2 -0
- package/dist/components/ui/primitives/brand-logo.positive-paths.cjs.map +1 -0
- package/dist/components/ui/primitives/brand-logo.positive-paths.js +15 -0
- package/dist/components/ui/primitives/brand-logo.positive-paths.js.map +1 -0
- package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs +2 -0
- package/dist/components/ui/primitives/brand-logo.symbol-paths.cjs.map +1 -0
- package/dist/components/ui/primitives/brand-logo.symbol-paths.js +8 -0
- package/dist/components/ui/primitives/brand-logo.symbol-paths.js.map +1 -0
- package/dist/components/ui/primitives/button.cjs +2 -0
- package/dist/components/ui/primitives/button.cjs.map +1 -0
- package/dist/components/ui/primitives/button.js +52 -0
- package/dist/components/ui/primitives/button.js.map +1 -0
- package/dist/components/ui/primitives/label.cjs +2 -0
- package/dist/components/ui/primitives/label.cjs.map +1 -0
- package/dist/components/ui/primitives/label.js +22 -0
- package/dist/components/ui/primitives/label.js.map +1 -0
- package/dist/components/ui/primitives/progress.cjs +2 -0
- package/dist/components/ui/primitives/progress.cjs.map +1 -0
- package/dist/components/ui/primitives/progress.js +30 -0
- package/dist/components/ui/primitives/progress.js.map +1 -0
- package/dist/components/ui/primitives/separator.cjs +2 -0
- package/dist/components/ui/primitives/separator.cjs.map +1 -0
- package/dist/components/ui/primitives/separator.js +26 -0
- package/dist/components/ui/primitives/separator.js.map +1 -0
- package/dist/components/ui/primitives/skeleton.cjs +2 -0
- package/dist/components/ui/primitives/skeleton.cjs.map +1 -0
- package/dist/components/ui/primitives/skeleton.js +31 -0
- package/dist/components/ui/primitives/skeleton.js.map +1 -0
- package/dist/components/ui/use-controllable-value.cjs +2 -0
- package/dist/components/ui/use-controllable-value.cjs.map +1 -0
- package/dist/components/ui/use-controllable-value.js +14 -0
- package/dist/components/ui/use-controllable-value.js.map +1 -0
- package/dist/components/ui/utils.cjs +2 -0
- package/dist/components/ui/utils.cjs.map +1 -0
- package/dist/components/ui/utils.js +20 -0
- package/dist/components/ui/utils.js.map +1 -0
- package/dist/editor.cjs +2 -0
- package/dist/editor.cjs.map +1 -0
- package/dist/editor.d.cts +114 -0
- package/dist/editor.d.ts +114 -0
- package/dist/editor.js +12 -0
- package/dist/editor.js.map +1 -0
- package/dist/hooks/use-data-table-filters.cjs +2 -0
- package/dist/hooks/use-data-table-filters.cjs.map +1 -0
- package/dist/hooks/use-data-table-filters.js +118 -0
- package/dist/hooks/use-data-table-filters.js.map +1 -0
- package/dist/hooks/use-data-table.cjs +2 -0
- package/dist/hooks/use-data-table.cjs.map +1 -0
- package/dist/hooks/use-data-table.js +84 -0
- package/dist/hooks/use-data-table.js.map +1 -0
- package/dist/hooks/use-mobile.cjs +2 -0
- package/dist/hooks/use-mobile.cjs.map +1 -0
- package/dist/hooks/use-mobile.js +17 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-table-pagination.cjs +2 -0
- package/dist/hooks/use-table-pagination.cjs.map +1 -0
- package/dist/hooks/use-table-pagination.js +44 -0
- package/dist/hooks/use-table-pagination.js.map +1 -0
- package/dist/index.cjs +1 -242
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.cts +2939 -0
- package/dist/index.d.ts +2939 -149
- package/dist/index.js +375 -63715
- package/dist/index.js.map +1 -1
- package/dist/preset.css +352 -0
- package/dist/toast-theme.css +100 -0
- package/dist/tokens.css +471 -0
- package/package.json +144 -45
- package/scripts/codemod-v2-renames.mjs +101 -0
- package/scripts/codemod-v2-toast.mjs +84 -0
- package/dist/components/figma/ImageWithFallback.d.ts +0 -3
- package/dist/components/figma/ImageWithFallback.d.ts.map +0 -1
- package/dist/components/print-templates/ContractTemplate.d.ts +0 -89
- package/dist/components/print-templates/ContractTemplate.d.ts.map +0 -1
- package/dist/components/print-templates/ProposalTemplate.d.ts +0 -41
- package/dist/components/print-templates/ProposalTemplate.d.ts.map +0 -1
- package/dist/components/print-templates/index.d.ts +0 -22
- package/dist/components/print-templates/index.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintFooter.d.ts +0 -21
- package/dist/components/print-templates/shared/PrintFooter.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintHeader.d.ts +0 -38
- package/dist/components/print-templates/shared/PrintHeader.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintInfoGrid.d.ts +0 -22
- package/dist/components/print-templates/shared/PrintInfoGrid.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintSection.d.ts +0 -29
- package/dist/components/print-templates/shared/PrintSection.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintSignature.d.ts +0 -27
- package/dist/components/print-templates/shared/PrintSignature.d.ts.map +0 -1
- package/dist/components/print-templates/shared/PrintTable.d.ts +0 -44
- package/dist/components/print-templates/shared/PrintTable.d.ts.map +0 -1
- package/dist/components/timeline-demo.d.ts +0 -3
- package/dist/components/timeline-demo.d.ts.map +0 -1
- package/dist/components/ui/accordion.d.ts +0 -8
- package/dist/components/ui/accordion.d.ts.map +0 -1
- package/dist/components/ui/advanced-data-table.d.ts +0 -100
- package/dist/components/ui/advanced-data-table.d.ts.map +0 -1
- package/dist/components/ui/alert-dialog.d.ts +0 -15
- package/dist/components/ui/alert-dialog.d.ts.map +0 -1
- package/dist/components/ui/alert-toast.d.ts +0 -11
- package/dist/components/ui/alert-toast.d.ts.map +0 -1
- package/dist/components/ui/alert.d.ts +0 -10
- package/dist/components/ui/alert.d.ts.map +0 -1
- package/dist/components/ui/app-layout-primary-nav.d.ts +0 -30
- package/dist/components/ui/app-layout-primary-nav.d.ts.map +0 -1
- package/dist/components/ui/app-layout-secondary-nav.d.ts +0 -34
- package/dist/components/ui/app-layout-secondary-nav.d.ts.map +0 -1
- package/dist/components/ui/app-layout-user-menu.d.ts +0 -28
- package/dist/components/ui/app-layout-user-menu.d.ts.map +0 -1
- package/dist/components/ui/aspect-ratio.d.ts +0 -4
- package/dist/components/ui/aspect-ratio.d.ts.map +0 -1
- package/dist/components/ui/auth-layout.d.ts +0 -28
- package/dist/components/ui/auth-layout.d.ts.map +0 -1
- package/dist/components/ui/avatar.d.ts +0 -21
- package/dist/components/ui/avatar.d.ts.map +0 -1
- package/dist/components/ui/badge.d.ts +0 -18
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/brand-logo.d.ts +0 -7
- package/dist/components/ui/brand-logo.d.ts.map +0 -1
- package/dist/components/ui/breadcrumb.d.ts +0 -12
- package/dist/components/ui/breadcrumb.d.ts.map +0 -1
- package/dist/components/ui/button.d.ts +0 -15
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/calendar.d.ts +0 -31
- package/dist/components/ui/calendar.d.ts.map +0 -1
- package/dist/components/ui/card.d.ts +0 -10
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/carousel.d.ts +0 -20
- package/dist/components/ui/carousel.d.ts.map +0 -1
- package/dist/components/ui/chart.d.ts +0 -45
- package/dist/components/ui/chart.d.ts.map +0 -1
- package/dist/components/ui/checkbox.d.ts +0 -5
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/collapsible.d.ts +0 -6
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/color-picker.d.ts +0 -13
- package/dist/components/ui/color-picker.d.ts.map +0 -1
- package/dist/components/ui/combobox.d.ts +0 -118
- package/dist/components/ui/combobox.d.ts.map +0 -1
- package/dist/components/ui/command.d.ts +0 -17
- package/dist/components/ui/command.d.ts.map +0 -1
- package/dist/components/ui/comment-system.d.ts +0 -43
- package/dist/components/ui/comment-system.d.ts.map +0 -1
- package/dist/components/ui/context-menu.d.ts +0 -26
- package/dist/components/ui/context-menu.d.ts.map +0 -1
- package/dist/components/ui/contract-print.d.ts +0 -82
- package/dist/components/ui/contract-print.d.ts.map +0 -1
- package/dist/components/ui/currency-input.d.ts +0 -11
- package/dist/components/ui/currency-input.d.ts.map +0 -1
- package/dist/components/ui/data-table.d.ts +0 -30
- package/dist/components/ui/data-table.d.ts.map +0 -1
- package/dist/components/ui/date-picker.d.ts +0 -111
- package/dist/components/ui/date-picker.d.ts.map +0 -1
- package/dist/components/ui/date-range-picker.d.ts +0 -128
- package/dist/components/ui/date-range-picker.d.ts.map +0 -1
- package/dist/components/ui/dialog.d.ts +0 -14
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/document-editor.d.ts +0 -14
- package/dist/components/ui/document-editor.d.ts.map +0 -1
- package/dist/components/ui/donut-chart.d.ts +0 -32
- package/dist/components/ui/donut-chart.d.ts.map +0 -1
- package/dist/components/ui/drawer.d.ts +0 -14
- package/dist/components/ui/drawer.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.d.ts +0 -26
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/editable-badge.d.ts +0 -98
- package/dist/components/ui/editable-badge.d.ts.map +0 -1
- package/dist/components/ui/editorial-calendar.d.ts +0 -22
- package/dist/components/ui/editorial-calendar.d.ts.map +0 -1
- package/dist/components/ui/empty-state.d.ts +0 -59
- package/dist/components/ui/empty-state.d.ts.map +0 -1
- package/dist/components/ui/filter-bar.d.ts +0 -16
- package/dist/components/ui/filter-bar.d.ts.map +0 -1
- package/dist/components/ui/filter-builder.d.ts +0 -39
- package/dist/components/ui/filter-builder.d.ts.map +0 -1
- package/dist/components/ui/filter-chip.d.ts +0 -8
- package/dist/components/ui/filter-chip.d.ts.map +0 -1
- package/dist/components/ui/form.d.ts +0 -25
- package/dist/components/ui/form.d.ts.map +0 -1
- package/dist/components/ui/gantt-chart.d.ts +0 -28
- package/dist/components/ui/gantt-chart.d.ts.map +0 -1
- package/dist/components/ui/hover-card.d.ts +0 -7
- package/dist/components/ui/hover-card.d.ts.map +0 -1
- package/dist/components/ui/illustrations.d.ts +0 -76
- package/dist/components/ui/illustrations.d.ts.map +0 -1
- package/dist/components/ui/index.d.ts +0 -91
- package/dist/components/ui/index.d.ts.map +0 -1
- package/dist/components/ui/input-group.d.ts +0 -19
- package/dist/components/ui/input-group.d.ts.map +0 -1
- package/dist/components/ui/input-otp.d.ts +0 -12
- package/dist/components/ui/input-otp.d.ts.map +0 -1
- package/dist/components/ui/input-validation.d.ts +0 -35
- package/dist/components/ui/input-validation.d.ts.map +0 -1
- package/dist/components/ui/input.d.ts +0 -4
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/kanban-card.d.ts +0 -59
- package/dist/components/ui/kanban-card.d.ts.map +0 -1
- package/dist/components/ui/kanban-generic-card.d.ts +0 -43
- package/dist/components/ui/kanban-generic-card.d.ts.map +0 -1
- package/dist/components/ui/kpi-card.d.ts +0 -45
- package/dist/components/ui/kpi-card.d.ts.map +0 -1
- package/dist/components/ui/label.d.ts +0 -5
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/lista-anexos-arquivo.d.ts +0 -47
- package/dist/components/ui/lista-anexos-arquivo.d.ts.map +0 -1
- package/dist/components/ui/mention-list.d.ts +0 -7
- package/dist/components/ui/mention-list.d.ts.map +0 -1
- package/dist/components/ui/menubar.d.ts +0 -27
- package/dist/components/ui/menubar.d.ts.map +0 -1
- package/dist/components/ui/month-range-picker.d.ts +0 -71
- package/dist/components/ui/month-range-picker.d.ts.map +0 -1
- package/dist/components/ui/multi-select.d.ts +0 -98
- package/dist/components/ui/multi-select.d.ts.map +0 -1
- package/dist/components/ui/navigation-menu.d.ts +0 -15
- package/dist/components/ui/navigation-menu.d.ts.map +0 -1
- package/dist/components/ui/number-input.d.ts +0 -83
- package/dist/components/ui/number-input.d.ts.map +0 -1
- package/dist/components/ui/page-header.d.ts +0 -32
- package/dist/components/ui/page-header.d.ts.map +0 -1
- package/dist/components/ui/pagination.d.ts +0 -14
- package/dist/components/ui/pagination.d.ts.map +0 -1
- package/dist/components/ui/password-input.d.ts +0 -7
- package/dist/components/ui/password-input.d.ts.map +0 -1
- package/dist/components/ui/popover.d.ts +0 -8
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/progress-timeline.d.ts +0 -42
- package/dist/components/ui/progress-timeline.d.ts.map +0 -1
- package/dist/components/ui/progress.d.ts +0 -7
- package/dist/components/ui/progress.d.ts.map +0 -1
- package/dist/components/ui/radio-group.d.ts +0 -6
- package/dist/components/ui/radio-group.d.ts.map +0 -1
- package/dist/components/ui/resizable.d.ts +0 -9
- package/dist/components/ui/resizable.d.ts.map +0 -1
- package/dist/components/ui/saved-filters.d.ts +0 -16
- package/dist/components/ui/saved-filters.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.d.ts +0 -8
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/select.d.ts +0 -16
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/separator.d.ts +0 -5
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/sheet.d.ts +0 -14
- package/dist/components/ui/sheet.d.ts.map +0 -1
- package/dist/components/ui/side-panel.d.ts +0 -40
- package/dist/components/ui/side-panel.d.ts.map +0 -1
- package/dist/components/ui/sidebar.d.ts +0 -70
- package/dist/components/ui/sidebar.d.ts.map +0 -1
- package/dist/components/ui/skeleton.d.ts +0 -8
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/slider.d.ts +0 -5
- package/dist/components/ui/slider.d.ts.map +0 -1
- package/dist/components/ui/social-button.d.ts +0 -13
- package/dist/components/ui/social-button.d.ts.map +0 -1
- package/dist/components/ui/switch.d.ts +0 -5
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/table-pagination.d.ts +0 -131
- package/dist/components/ui/table-pagination.d.ts.map +0 -1
- package/dist/components/ui/table-types.d.ts +0 -320
- package/dist/components/ui/table-types.d.ts.map +0 -1
- package/dist/components/ui/table.d.ts +0 -34
- package/dist/components/ui/table.d.ts.map +0 -1
- package/dist/components/ui/tabs.d.ts +0 -8
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/task-edit-dialog.d.ts +0 -15
- package/dist/components/ui/task-edit-dialog.d.ts.map +0 -1
- package/dist/components/ui/textarea.d.ts +0 -4
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/time-picker.d.ts +0 -85
- package/dist/components/ui/time-picker.d.ts.map +0 -1
- package/dist/components/ui/timeline.d.ts +0 -63
- package/dist/components/ui/timeline.d.ts.map +0 -1
- package/dist/components/ui/toast.d.ts +0 -5
- package/dist/components/ui/toast.d.ts.map +0 -1
- package/dist/components/ui/toggle-group.d.ts +0 -8
- package/dist/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/components/ui/toggle.d.ts +0 -10
- package/dist/components/ui/toggle.d.ts.map +0 -1
- package/dist/components/ui/tooltip.d.ts +0 -8
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components/ui/underline-tabs.d.ts +0 -29
- package/dist/components/ui/underline-tabs.d.ts.map +0 -1
- package/dist/components/ui/use-mobile.d.ts +0 -2
- package/dist/components/ui/use-mobile.d.ts.map +0 -1
- package/dist/components/ui/use-print-contract.d.ts +0 -37
- package/dist/components/ui/use-print-contract.d.ts.map +0 -1
- package/dist/components/ui/utils.d.ts +0 -3
- package/dist/components/ui/utils.d.ts.map +0 -1
- package/dist/components/ui/zona-upload-arquivo.d.ts +0 -34
- package/dist/components/ui/zona-upload-arquivo.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comment-system.cjs","sources":["../../../../src/components/ui/data/comment-system.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { cn } from \"../utils\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../primitives/avatar\";\nimport { Button } from \"../primitives/button\";\nimport { Badge } from \"../primitives/badge\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../overlays/tooltip\";\nimport { Separator } from \"../primitives/separator\";\nimport { \n Bold, \n Italic, \n Underline as UnderlineIcon, \n List, \n ListOrdered, \n Link as LinkIcon,\n Send,\n Paperclip,\n AlertCircle,\n MoreHorizontal,\n Trash2,\n Type,\n X,\n Smile,\n Plus\n} from \"lucide-react\";\n\n// Tiptap Imports\nimport { useEditor, EditorContent, Editor, ReactRenderer } from '@tiptap/react';\nimport type { Instance as TippyInstance } from 'tippy.js';\nimport StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport Link from '@tiptap/extension-link';\nimport TiptapImage from '@tiptap/extension-image';\nimport Mention from '@tiptap/extension-mention';\nimport tippy from 'tippy.js';\nimport { MentionList } from './mention-list';\nimport Picker from 'emoji-picker-react';\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\n\n// ==========================================\n// TIPOS\n// ==========================================\n\nexport type UserRole = 'internal' | 'client' | 'freelancer';\n\nexport interface CommentUser {\n id: string;\n name: string;\n avatar?: string;\n role: UserRole;\n}\n\nexport interface CommentReaction {\n emoji: string;\n users: string[]; // Array de IDs de usuários que reagiram\n}\n\nexport interface CommentAttachment {\n id: string;\n url: string;\n name: string;\n type: 'image' | 'file';\n}\n\nexport interface Comment {\n id: string;\n content: string; // Conteúdo HTML\n user: CommentUser;\n createdAt: Date;\n isRevisionRequest?: boolean;\n attachments?: CommentAttachment[];\n reactions?: CommentReaction[];\n}\n\nexport interface CommentSystemProps {\n comments: Comment[];\n currentUser: CommentUser;\n users?: CommentUser[]; // Lista de usuários mencionáveis\n onAddComment: (comment: Omit<Comment, \"id\" | \"createdAt\">) => void;\n onDeleteComment?: (id: string) => void;\n onReact?: (commentId: string, emoji: string) => void;\n className?: string;\n}\n\n// ==========================================\n// COMPONENTES AUXILIARES\n// ==========================================\n\nconst RoleBadge = ({ role }: { role: UserRole }) => {\n const config = {\n internal: { label: \"Equipe iClips\", className: \"bg-primary/10 text-primary hover:bg-primary/20 border-primary/20\" },\n client: { label: \"Cliente\", className: \"bg-info/10 text-info-emphasis hover:bg-info/20 border-info/20\" },\n freelancer: { label: \"Freelancer\", className: \"bg-warning/10 text-warning-emphasis hover:bg-warning/20 border-warning/20\" },\n };\n\n const { label, className } = config[role];\n\n return (\n <Badge variant=\"outline\" className={cn(\"text-[10px] h-5 px-1.5 font-medium border-0\", className)}>\n {label}\n </Badge>\n );\n};\n\n// ==========================================\n// EDITOR TOOLBAR\n// ==========================================\n\nconst EditorToolbar = ({ editor, visible }: { editor: Editor | null, visible: boolean }) => {\n if (!editor) return null;\n\n if (!visible) return null;\n\n return (\n <div className=\"flex items-center gap-1 border-b p-1 bg-muted/20 animate-in slide-in-from-bottom-2 duration-200\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('bold') && \"bg-muted text-primary\")}\n onClick={() => editor.chain().focus().toggleBold().run()}\n title=\"Negrito (Ctrl+B)\"\n aria-label=\"Negrito\"\n >\n <Bold className=\"h-3.5 w-3.5\" />\n </Button>\n \n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('italic') && \"bg-muted text-primary\")}\n onClick={() => editor.chain().focus().toggleItalic().run()}\n title=\"Itálico (Ctrl+I)\"\n aria-label=\"Itálico\"\n >\n <Italic className=\"h-3.5 w-3.5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('underline') && \"bg-muted text-primary\")}\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n title=\"Sublinhado (Ctrl+U)\"\n aria-label=\"Sublinhado\"\n >\n <UnderlineIcon className=\"h-3.5 w-3.5\" />\n </Button>\n\n <Separator orientation=\"vertical\" className=\"h-4 mx-1\" />\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('bulletList') && \"bg-muted text-primary\")}\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n aria-label=\"Lista com marcadores\"\n >\n <List className=\"h-3.5 w-3.5\" />\n </Button>\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('orderedList') && \"bg-muted text-primary\")}\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n aria-label=\"Lista numerada\"\n >\n <ListOrdered className=\"h-3.5 w-3.5\" />\n </Button>\n\n <Separator orientation=\"vertical\" className=\"h-4 mx-1\" />\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", editor.isActive('link') && \"bg-muted text-primary\")}\n aria-label=\"Inserir link\"\n onClick={() => {\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 <LinkIcon className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n );\n};\n\n// ==========================================\n// COMMENT EDITOR AREA\n// ==========================================\n\nconst CommentEditor = ({ \n currentUser, \n onSubmit,\n users = []\n}: { \n currentUser: CommentUser;\n onSubmit: (data: { content: string; isRevisionRequest: boolean; attachments: CommentAttachment[] }) => void;\n users?: CommentUser[];\n}) => {\n const [isRevision, setIsRevision] = React.useState(false);\n const [showToolbar, setShowToolbar] = React.useState(false);\n const [attachments, setAttachments] = React.useState<CommentAttachment[]>([]);\n const [isEditorEmpty, setIsEditorEmpty] = React.useState(true);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n const extensions = React.useMemo(() => [\n StarterKit.configure({\n // @ts-ignore\n link: false,\n // @ts-ignore\n underline: false,\n }),\n Underline,\n Link.configure({\n openOnClick: false,\n }),\n TiptapImage,\n Mention.configure({\n HTMLAttributes: {\n class: 'bg-accent text-accent-foreground rounded-sm px-1 py-0.5 font-medium decoration-clone',\n },\n suggestion: {\n items: ({ query }: { query: string }) => {\n return users\n .filter(item => item.name.toLowerCase().startsWith(query.toLowerCase()))\n .slice(0, 5);\n },\n render: () => {\n // Formato mínimo dos props do ciclo de vida do suggestion do tiptap\n // (o tipo completo `SuggestionProps` vive em `@tiptap/suggestion`, dep\n // transitiva sem entrada direta no package.json).\n type MentionRenderProps = {\n editor: Editor;\n clientRect?: (() => DOMRect | null) | null;\n event?: KeyboardEvent;\n };\n let component: ReactRenderer | null = null;\n let popup: TippyInstance[] | null = null;\n\n return {\n onStart: (props: MentionRenderProps) => {\n component = new ReactRenderer(MentionList, {\n props,\n editor: props.editor,\n });\n\n if (!props.clientRect) {\n return;\n }\n\n popup = tippy('body', {\n // tiptap tipa como `() => DOMRect | null`; tippy exige não-nulo.\n getReferenceClientRect: props.clientRect as () => DOMRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start',\n });\n },\n onUpdate(props: MentionRenderProps) {\n component?.updateProps(props);\n\n if (!props.clientRect) {\n return;\n }\n\n popup?.[0].setProps({\n getReferenceClientRect: props.clientRect as () => DOMRect,\n });\n },\n onKeyDown(props: { event: KeyboardEvent }) {\n if (props.event.key === 'Escape') {\n popup?.[0].hide();\n\n return true;\n }\n\n return Boolean(\n (component?.ref as { onKeyDown?: (p: { event: KeyboardEvent }) => boolean } | undefined)?.onKeyDown?.(props),\n );\n },\n onExit() {\n popup?.[0].destroy();\n component?.destroy();\n },\n };\n },\n },\n }),\n ], [users]);\n\n const editor = useEditor({\n extensions,\n content: '',\n onUpdate: ({ editor }) => {\n setIsEditorEmpty(editor.isEmpty);\n },\n editorProps: {\n attributes: {\n class: 'prose prose-sm dark:prose-invert max-w-none focus:outline-none min-h-[80px] px-3 py-2 text-sm',\n },\n },\n });\n\n const handleAttach = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files[0]) {\n const file = e.target.files[0];\n const url = URL.createObjectURL(file);\n \n const newAttachment: CommentAttachment = {\n id: Math.random().toString(36).substr(2, 9),\n name: file.name,\n url,\n type: file.type.startsWith('image/') ? 'image' : 'file'\n };\n \n setAttachments([...attachments, newAttachment]);\n // Reset input\n e.target.value = '';\n }\n };\n\n const removeAttachment = (id: string) => {\n setAttachments(attachments.filter(a => a.id !== id));\n };\n\n const handleSubmit = () => {\n if (!editor || (editor.isEmpty && attachments.length === 0)) return;\n \n onSubmit({\n content: editor.getHTML(),\n isRevisionRequest: isRevision,\n attachments\n });\n\n editor.commands.clearContent();\n setAttachments([]);\n setIsRevision(false);\n // Manually reset empty state since clearContent triggers update but we want to be sure\n setIsEditorEmpty(true);\n };\n\n return (\n <div className=\"flex gap-3 items-start\">\n <Avatar className=\"h-8 w-8 mt-1 border\">\n <AvatarImage src={currentUser.avatar} />\n <AvatarFallback>{currentUser.name.substring(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n\n <div className={cn(\n \"flex-1 rounded-xl border bg-background shadow-sm overflow-hidden transition-colors\",\n isRevision && \"border-destructive/40 ring-1 ring-destructive/20\"\n )}>\n <EditorToolbar editor={editor} visible={showToolbar} />\n \n <EditorContent editor={editor} />\n\n {/* Attachments Preview Area */}\n {attachments.length > 0 && (\n <div className=\"px-3 pb-2 flex flex-wrap gap-2\">\n {attachments.map(att => (\n <div key={att.id} className=\"relative group\">\n {att.type === 'image' ? (\n <div className=\"h-16 w-16 rounded-md border overflow-hidden relative\">\n <img src={att.url} alt={att.name} className=\"h-full w-full object-cover\" />\n </div>\n ) : (\n <div className=\"h-16 w-16 rounded-md border bg-muted flex items-center justify-center\">\n <Paperclip className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n )}\n <button \n onClick={() => removeAttachment(att.id)}\n className=\"absolute -top-1.5 -right-1.5 bg-destructive text-destructive-foreground rounded-full p-0.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-sm\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n <div className=\"flex items-center justify-between p-2 bg-muted/10 border-t\">\n <div className=\"flex items-center gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className={cn(\n \"h-8 w-8 transition-colors\",\n showToolbar ? \"bg-muted text-foreground\" : \"text-muted-foreground hover:text-foreground\"\n )}\n onClick={() => setShowToolbar(!showToolbar)}\n aria-label=\"Opções de formatação\"\n >\n <Type className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Opções de formatação</TooltipContent>\n </Tooltip>\n\n <div className=\"w-px h-4 bg-border mx-1\" />\n\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n aria-label=\"Inserir emoji\"\n >\n <Smile className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 border-none\" align=\"start\" side=\"top\">\n <Picker \n onEmojiClick={(emojiData) => editor?.chain().focus().insertContent(emojiData.emoji).run()}\n width={300}\n height={350}\n />\n </PopoverContent>\n </Popover>\n\n <input \n type=\"file\" \n className=\"hidden\" \n ref={fileInputRef}\n onChange={handleAttach}\n accept=\"image/*,.pdf,.doc,.docx\"\n />\n <Tooltip>\n <TooltipTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-8 w-8 text-muted-foreground hover:text-foreground\"\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Anexar arquivo\"\n >\n <Paperclip className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Anexar arquivo</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"sm\" \n className={cn(\n \"h-8 gap-2 px-2 transition-colors\",\n isRevision\n ? \"bg-destructive/10 text-destructive-emphasis hover:bg-destructive/20\"\n : \"text-muted-foreground hover:text-foreground\"\n )}\n onClick={() => setIsRevision(!isRevision)}\n >\n <AlertCircle className=\"h-4 w-4\" />\n <span className=\"text-xs font-medium\">Solicitar Refação</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Marca este comentário como um pedido de alteração</TooltipContent>\n </Tooltip>\n </div>\n\n <Button\n size=\"sm\"\n onClick={handleSubmit}\n disabled={isEditorEmpty && attachments.length === 0}\n >\n Enviar <Send className=\"h-3.5 w-3.5 ml-2\" />\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\n// ==========================================\n// SINGLE COMMENT ITEM\n// ==========================================\n\nconst CommentItem = ({ \n comment, \n currentUserId,\n onDelete, \n onReact \n}: { \n comment: Comment; \n currentUserId: string;\n onDelete?: (id: string) => void;\n onReact?: (commentId: string, emoji: string) => void;\n}) => {\n const isRevision = comment.isRevisionRequest;\n\n return (\n <div className={cn(\n \"group flex gap-3 p-4 rounded-lg transition-colors\",\n isRevision ? \"bg-destructive/5 border border-destructive/20\" : \"hover:bg-muted/20\"\n )}>\n <Avatar className=\"h-8 w-8 mt-0.5 border\">\n <AvatarImage src={comment.user.avatar} />\n <AvatarFallback>{comment.user.name.substring(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n\n <div className=\"flex-1 min-w-0\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-1.5\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-semibold text-sm text-foreground\">{comment.user.name}</span>\n <RoleBadge role={comment.user.role} />\n <span className=\"text-xs text-foreground/65\">\n {format(comment.createdAt, \"dd MMM 'às' HH:mm\", { locale: ptBR })}\n </span>\n </div>\n \n <div className=\"flex items-center gap-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 text-muted-foreground hover:text-foreground\"\n aria-label=\"Reagir com emoji\"\n >\n <Smile className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 border-none\" align=\"end\">\n <Picker \n onEmojiClick={(emojiData) => onReact?.(comment.id, emojiData.emoji)}\n width={300}\n height={350}\n />\n </PopoverContent>\n </Popover>\n\n {onDelete && (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-6 w-6 text-muted-foreground hover:text-destructive\"\n onClick={() => onDelete(comment.id)}\n aria-label=\"Excluir comentário\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </Button>\n )}\n </div>\n </div>\n\n {/* Revision Badge */}\n {isRevision && (\n <div className=\"inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-destructive/10 text-destructive-emphasis text-xs font-medium mb-2\">\n <AlertCircle className=\"h-3.5 w-3.5\" />\n Solicitação de Refação\n </div>\n )}\n\n {/* Content */}\n <div \n className=\"prose prose-sm dark:prose-invert max-w-none text-sm text-foreground/90 leading-relaxed break-words [&_p]:mb-2 [&_p:last-child]:mb-0\"\n dangerouslySetInnerHTML={{ __html: comment.content }}\n />\n\n {/* Attachments Display */}\n {comment.attachments && comment.attachments.length > 0 && (\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {comment.attachments.map(att => (\n <div \n key={att.id} \n className=\"group/att relative rounded-lg border overflow-hidden bg-background hover:shadow-sm transition-all cursor-pointer\"\n onClick={() => window.open(att.url, '_blank')}\n >\n {att.type === 'image' ? (\n <div className=\"h-32 aspect-[4/3]\">\n <img src={att.url} alt={att.name} className=\"h-full w-full object-cover\" />\n <div className=\"absolute inset-0 bg-foreground/0 group-hover/att:bg-foreground/10 transition-colors\" />\n </div>\n ) : (\n <div className=\"h-12 px-3 flex items-center gap-2 bg-muted/30\">\n <Paperclip className=\"h-4 w-4 text-muted-foreground\" />\n <span className=\"text-xs font-medium truncate max-w-[150px]\">{att.name}</span>\n </div>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Reactions */}\n <div className=\"mt-3 flex flex-wrap gap-2 items-center\">\n {comment.reactions?.map((reaction) => (\n <button\n key={reaction.emoji}\n onClick={() => onReact?.(comment.id, reaction.emoji)}\n className={cn(\n \"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium border transition-colors\",\n reaction.users.includes(currentUserId)\n ? \"bg-accent border-accent text-accent-foreground\"\n : \"bg-muted/30 border-transparent hover:bg-muted/50 text-muted-foreground\"\n )}\n >\n <span>{reaction.emoji}</span>\n <span>{reaction.users.length}</span>\n </button>\n ))}\n \n {onReact && (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6 rounded-full text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n aria-label=\"Adicionar reação\"\n >\n <Plus className=\"h-3.5 w-3.5\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 border-none\" align=\"start\">\n <Picker \n onEmojiClick={(emojiData) => onReact(comment.id, emojiData.emoji)}\n width={300}\n height={350}\n />\n </PopoverContent>\n </Popover>\n )}\n </div>\n </div>\n </div>\n );\n};\n\n// ==========================================\n// MAIN COMPONENT\n// ==========================================\n\nexport const CommentSystem = ({ \n comments, \n currentUser, \n users = [],\n onAddComment, \n onDeleteComment,\n onReact,\n className \n}: CommentSystemProps) => {\n \n const handleSubmit = (data: { content: string; isRevisionRequest: boolean; attachments: CommentAttachment[] }) => {\n onAddComment({\n content: data.content,\n user: currentUser,\n isRevisionRequest: data.isRevisionRequest,\n attachments: data.attachments\n });\n };\n\n return (\n <div className={cn(\"flex flex-col h-full\", className)}>\n {/* Header */}\n <div className=\"px-4 py-3 border-b flex items-center justify-between bg-card\">\n <h3 className=\"font-semibold text-base\">Comentários da Atividade</h3>\n <Badge variant=\"secondary\" className=\"bg-muted text-muted-foreground hover:bg-muted\">\n {comments.length}\n </Badge>\n </div>\n\n {/* Scrollable List */}\n <div className=\"flex-1 overflow-y-auto p-4 space-y-2 bg-muted/5\">\n {comments.length === 0 ? (\n <div className=\"h-full flex flex-col items-center justify-center text-muted-foreground min-h-[200px]\">\n <div className=\"bg-muted rounded-full p-3 mb-3\">\n <MoreHorizontal className=\"h-6 w-6\" aria-hidden=\"true\" />\n </div>\n <p className=\"text-sm font-medium text-foreground/70\">Nenhum comentário ainda</p>\n <p className=\"text-xs\">Inicie a conversa sobre esta tarefa</p>\n </div>\n ) : (\n comments.map((comment) => (\n <CommentItem \n key={comment.id} \n comment={comment} \n currentUserId={currentUser.id}\n onDelete={onDeleteComment} \n onReact={onReact}\n />\n ))\n )}\n </div>\n\n {/* Input Area */}\n <div className=\"p-4 border-t bg-card\">\n <CommentEditor \n currentUser={currentUser} \n onSubmit={handleSubmit}\n users={users}\n />\n </div>\n </div>\n );\n};\n\nexport default CommentSystem;"],"names":["RoleBadge","role","config","label","className","jsx","Badge","cn","EditorToolbar","editor","visible","jsxs","Button","Bold","Italic","UnderlineIcon","Separator","List","ListOrdered","previousUrl","url","LinkIcon","CommentEditor","currentUser","onSubmit","users","isRevision","setIsRevision","React","showToolbar","setShowToolbar","attachments","setAttachments","isEditorEmpty","setIsEditorEmpty","fileInputRef","extensions","StarterKit","Underline","Link","TiptapImage","Mention","query","item","component","popup","props","ReactRenderer","MentionList","tippy","_b","_a","useEditor","handleAttach","e","file","newAttachment","removeAttachment","id","handleSubmit","Avatar","AvatarImage","AvatarFallback","EditorContent","att","Paperclip","X","Tooltip","TooltipTrigger","Type","TooltipContent","Popover","PopoverTrigger","Smile","PopoverContent","Picker","emojiData","AlertCircle","Send","CommentItem","comment","currentUserId","onDelete","onReact","format","ptBR","Trash2","reaction","Plus","CommentSystem","comments","onAddComment","onDeleteComment","data","MoreHorizontal"],"mappings":"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"}
|
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import * as v from "react";
|
|
3
|
+
import { format as K } from "date-fns";
|
|
4
|
+
import { ptBR as D } from "date-fns/locale";
|
|
5
|
+
import { cn as c } from "../utils.js";
|
|
6
|
+
import { Avatar as I, AvatarImage as z, AvatarFallback as T } from "../primitives/avatar.js";
|
|
7
|
+
import { Button as l } from "../primitives/button.js";
|
|
8
|
+
import { Badge as M } from "../primitives/badge.js";
|
|
9
|
+
import { Tooltip as x, TooltipTrigger as N, TooltipContent as w } from "../overlays/tooltip.js";
|
|
10
|
+
import { Separator as E } from "../primitives/separator.js";
|
|
11
|
+
import { MoreHorizontal as F, Smile as U, Trash2 as W, AlertCircle as B, Paperclip as y, Plus as $, X, Type as G, Send as J, Bold as Q, Italic as V, Underline as Y, List as Z, ListOrdered as ee, Link as te } from "lucide-react";
|
|
12
|
+
import { ReactRenderer as re, useEditor as ie, EditorContent as ae } from "@tiptap/react";
|
|
13
|
+
import ne from "@tiptap/starter-kit";
|
|
14
|
+
import se from "@tiptap/extension-underline";
|
|
15
|
+
import le from "@tiptap/extension-link";
|
|
16
|
+
import oe from "@tiptap/extension-image";
|
|
17
|
+
import ce from "@tiptap/extension-mention";
|
|
18
|
+
import de from "tippy.js";
|
|
19
|
+
import { MentionList as me } from "./mention-list.js";
|
|
20
|
+
import C from "emoji-picker-react";
|
|
21
|
+
import { Popover as k, PopoverTrigger as R, PopoverContent as L } from "../overlays/popover.js";
|
|
22
|
+
const ue = ({ role: t }) => {
|
|
23
|
+
const d = {
|
|
24
|
+
internal: { label: "Equipe iClips", className: "bg-primary/10 text-primary hover:bg-primary/20 border-primary/20" },
|
|
25
|
+
client: { label: "Cliente", className: "bg-info/10 text-info-emphasis hover:bg-info/20 border-info/20" },
|
|
26
|
+
freelancer: { label: "Freelancer", className: "bg-warning/10 text-warning-emphasis hover:bg-warning/20 border-warning/20" }
|
|
27
|
+
}, { label: m, className: a } = d[t];
|
|
28
|
+
return /* @__PURE__ */ e(M, { variant: "outline", className: c("text-[10px] h-5 px-1.5 font-medium border-0", a), children: m });
|
|
29
|
+
}, he = ({ editor: t, visible: d }) => !t || !d ? null : /* @__PURE__ */ i("div", { className: "flex items-center gap-1 border-b p-1 bg-muted/20 animate-in slide-in-from-bottom-2 duration-200", children: [
|
|
30
|
+
/* @__PURE__ */ e(
|
|
31
|
+
l,
|
|
32
|
+
{
|
|
33
|
+
variant: "ghost",
|
|
34
|
+
size: "icon",
|
|
35
|
+
className: c("h-7 w-7", t.isActive("bold") && "bg-muted text-primary"),
|
|
36
|
+
onClick: () => t.chain().focus().toggleBold().run(),
|
|
37
|
+
title: "Negrito (Ctrl+B)",
|
|
38
|
+
"aria-label": "Negrito",
|
|
39
|
+
children: /* @__PURE__ */ e(Q, { className: "h-3.5 w-3.5" })
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ e(
|
|
43
|
+
l,
|
|
44
|
+
{
|
|
45
|
+
variant: "ghost",
|
|
46
|
+
size: "icon",
|
|
47
|
+
className: c("h-7 w-7", t.isActive("italic") && "bg-muted text-primary"),
|
|
48
|
+
onClick: () => t.chain().focus().toggleItalic().run(),
|
|
49
|
+
title: "Itálico (Ctrl+I)",
|
|
50
|
+
"aria-label": "Itálico",
|
|
51
|
+
children: /* @__PURE__ */ e(V, { className: "h-3.5 w-3.5" })
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
/* @__PURE__ */ e(
|
|
55
|
+
l,
|
|
56
|
+
{
|
|
57
|
+
variant: "ghost",
|
|
58
|
+
size: "icon",
|
|
59
|
+
className: c("h-7 w-7", t.isActive("underline") && "bg-muted text-primary"),
|
|
60
|
+
onClick: () => t.chain().focus().toggleUnderline().run(),
|
|
61
|
+
title: "Sublinhado (Ctrl+U)",
|
|
62
|
+
"aria-label": "Sublinhado",
|
|
63
|
+
children: /* @__PURE__ */ e(Y, { className: "h-3.5 w-3.5" })
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ e(E, { orientation: "vertical", className: "h-4 mx-1" }),
|
|
67
|
+
/* @__PURE__ */ e(
|
|
68
|
+
l,
|
|
69
|
+
{
|
|
70
|
+
variant: "ghost",
|
|
71
|
+
size: "icon",
|
|
72
|
+
className: c("h-7 w-7", t.isActive("bulletList") && "bg-muted text-primary"),
|
|
73
|
+
onClick: () => t.chain().focus().toggleBulletList().run(),
|
|
74
|
+
"aria-label": "Lista com marcadores",
|
|
75
|
+
children: /* @__PURE__ */ e(Z, { className: "h-3.5 w-3.5" })
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
/* @__PURE__ */ e(
|
|
79
|
+
l,
|
|
80
|
+
{
|
|
81
|
+
variant: "ghost",
|
|
82
|
+
size: "icon",
|
|
83
|
+
className: c("h-7 w-7", t.isActive("orderedList") && "bg-muted text-primary"),
|
|
84
|
+
onClick: () => t.chain().focus().toggleOrderedList().run(),
|
|
85
|
+
"aria-label": "Lista numerada",
|
|
86
|
+
children: /* @__PURE__ */ e(ee, { className: "h-3.5 w-3.5" })
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ e(E, { orientation: "vertical", className: "h-4 mx-1" }),
|
|
90
|
+
/* @__PURE__ */ e(
|
|
91
|
+
l,
|
|
92
|
+
{
|
|
93
|
+
variant: "ghost",
|
|
94
|
+
size: "icon",
|
|
95
|
+
className: c("h-7 w-7", t.isActive("link") && "bg-muted text-primary"),
|
|
96
|
+
"aria-label": "Inserir link",
|
|
97
|
+
onClick: () => {
|
|
98
|
+
const m = t.getAttributes("link").href, a = window.prompt("URL", m);
|
|
99
|
+
if (a !== null) {
|
|
100
|
+
if (a === "") {
|
|
101
|
+
t.chain().focus().extendMarkRange("link").unsetLink().run();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
t.chain().focus().extendMarkRange("link").setLink({ href: a }).run();
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
children: /* @__PURE__ */ e(te, { className: "h-3.5 w-3.5" })
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
] }), ge = ({
|
|
111
|
+
currentUser: t,
|
|
112
|
+
onSubmit: d,
|
|
113
|
+
users: m = []
|
|
114
|
+
}) => {
|
|
115
|
+
const [a, p] = v.useState(!1), [f, n] = v.useState(!1), [h, u] = v.useState([]), [P, j] = v.useState(!0), A = v.useRef(null), q = v.useMemo(() => [
|
|
116
|
+
ne.configure({
|
|
117
|
+
// @ts-ignore
|
|
118
|
+
link: !1,
|
|
119
|
+
// @ts-ignore
|
|
120
|
+
underline: !1
|
|
121
|
+
}),
|
|
122
|
+
se,
|
|
123
|
+
le.configure({
|
|
124
|
+
openOnClick: !1
|
|
125
|
+
}),
|
|
126
|
+
oe,
|
|
127
|
+
ce.configure({
|
|
128
|
+
HTMLAttributes: {
|
|
129
|
+
class: "bg-accent text-accent-foreground rounded-sm px-1 py-0.5 font-medium decoration-clone"
|
|
130
|
+
},
|
|
131
|
+
suggestion: {
|
|
132
|
+
items: ({ query: r }) => m.filter((s) => s.name.toLowerCase().startsWith(r.toLowerCase())).slice(0, 5),
|
|
133
|
+
render: () => {
|
|
134
|
+
let r = null, s = null;
|
|
135
|
+
return {
|
|
136
|
+
onStart: (o) => {
|
|
137
|
+
r = new re(me, {
|
|
138
|
+
props: o,
|
|
139
|
+
editor: o.editor
|
|
140
|
+
}), o.clientRect && (s = de("body", {
|
|
141
|
+
// tiptap tipa como `() => DOMRect | null`; tippy exige não-nulo.
|
|
142
|
+
getReferenceClientRect: o.clientRect,
|
|
143
|
+
appendTo: () => document.body,
|
|
144
|
+
content: r.element,
|
|
145
|
+
showOnCreate: !0,
|
|
146
|
+
interactive: !0,
|
|
147
|
+
trigger: "manual",
|
|
148
|
+
placement: "bottom-start"
|
|
149
|
+
}));
|
|
150
|
+
},
|
|
151
|
+
onUpdate(o) {
|
|
152
|
+
r == null || r.updateProps(o), o.clientRect && (s == null || s[0].setProps({
|
|
153
|
+
getReferenceClientRect: o.clientRect
|
|
154
|
+
}));
|
|
155
|
+
},
|
|
156
|
+
onKeyDown(o) {
|
|
157
|
+
var b, S;
|
|
158
|
+
return o.event.key === "Escape" ? (s == null || s[0].hide(), !0) : !!((S = (b = r == null ? void 0 : r.ref) == null ? void 0 : b.onKeyDown) != null && S.call(b, o));
|
|
159
|
+
},
|
|
160
|
+
onExit() {
|
|
161
|
+
s == null || s[0].destroy(), r == null || r.destroy();
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
], [m]), g = ie({
|
|
168
|
+
extensions: q,
|
|
169
|
+
content: "",
|
|
170
|
+
onUpdate: ({ editor: r }) => {
|
|
171
|
+
j(r.isEmpty);
|
|
172
|
+
},
|
|
173
|
+
editorProps: {
|
|
174
|
+
attributes: {
|
|
175
|
+
class: "prose prose-sm dark:prose-invert max-w-none focus:outline-none min-h-[80px] px-3 py-2 text-sm"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}), O = (r) => {
|
|
179
|
+
if (r.target.files && r.target.files[0]) {
|
|
180
|
+
const s = r.target.files[0], o = URL.createObjectURL(s), b = {
|
|
181
|
+
id: Math.random().toString(36).substr(2, 9),
|
|
182
|
+
name: s.name,
|
|
183
|
+
url: o,
|
|
184
|
+
type: s.type.startsWith("image/") ? "image" : "file"
|
|
185
|
+
};
|
|
186
|
+
u([...h, b]), r.target.value = "";
|
|
187
|
+
}
|
|
188
|
+
}, H = (r) => {
|
|
189
|
+
u(h.filter((s) => s.id !== r));
|
|
190
|
+
}, _ = () => {
|
|
191
|
+
!g || g.isEmpty && h.length === 0 || (d({
|
|
192
|
+
content: g.getHTML(),
|
|
193
|
+
isRevisionRequest: a,
|
|
194
|
+
attachments: h
|
|
195
|
+
}), g.commands.clearContent(), u([]), p(!1), j(!0));
|
|
196
|
+
};
|
|
197
|
+
return /* @__PURE__ */ i("div", { className: "flex gap-3 items-start", children: [
|
|
198
|
+
/* @__PURE__ */ i(I, { className: "h-8 w-8 mt-1 border", children: [
|
|
199
|
+
/* @__PURE__ */ e(z, { src: t.avatar }),
|
|
200
|
+
/* @__PURE__ */ e(T, { children: t.name.substring(0, 2).toUpperCase() })
|
|
201
|
+
] }),
|
|
202
|
+
/* @__PURE__ */ i("div", { className: c(
|
|
203
|
+
"flex-1 rounded-xl border bg-background shadow-sm overflow-hidden transition-colors",
|
|
204
|
+
a && "border-destructive/40 ring-1 ring-destructive/20"
|
|
205
|
+
), children: [
|
|
206
|
+
/* @__PURE__ */ e(he, { editor: g, visible: f }),
|
|
207
|
+
/* @__PURE__ */ e(ae, { editor: g }),
|
|
208
|
+
h.length > 0 && /* @__PURE__ */ e("div", { className: "px-3 pb-2 flex flex-wrap gap-2", children: h.map((r) => /* @__PURE__ */ i("div", { className: "relative group", children: [
|
|
209
|
+
r.type === "image" ? /* @__PURE__ */ e("div", { className: "h-16 w-16 rounded-md border overflow-hidden relative", children: /* @__PURE__ */ e("img", { src: r.url, alt: r.name, className: "h-full w-full object-cover" }) }) : /* @__PURE__ */ e("div", { className: "h-16 w-16 rounded-md border bg-muted flex items-center justify-center", children: /* @__PURE__ */ e(y, { className: "h-6 w-6 text-muted-foreground" }) }),
|
|
210
|
+
/* @__PURE__ */ e(
|
|
211
|
+
"button",
|
|
212
|
+
{
|
|
213
|
+
onClick: () => H(r.id),
|
|
214
|
+
className: "absolute -top-1.5 -right-1.5 bg-destructive text-destructive-foreground rounded-full p-0.5 opacity-0 group-hover:opacity-100 transition-opacity shadow-sm",
|
|
215
|
+
children: /* @__PURE__ */ e(X, { className: "h-3 w-3" })
|
|
216
|
+
}
|
|
217
|
+
)
|
|
218
|
+
] }, r.id)) }),
|
|
219
|
+
/* @__PURE__ */ i("div", { className: "flex items-center justify-between p-2 bg-muted/10 border-t", children: [
|
|
220
|
+
/* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
|
|
221
|
+
/* @__PURE__ */ i(x, { children: [
|
|
222
|
+
/* @__PURE__ */ e(N, { asChild: !0, children: /* @__PURE__ */ e(
|
|
223
|
+
l,
|
|
224
|
+
{
|
|
225
|
+
variant: "ghost",
|
|
226
|
+
size: "icon",
|
|
227
|
+
className: c(
|
|
228
|
+
"h-8 w-8 transition-colors",
|
|
229
|
+
f ? "bg-muted text-foreground" : "text-muted-foreground hover:text-foreground"
|
|
230
|
+
),
|
|
231
|
+
onClick: () => n(!f),
|
|
232
|
+
"aria-label": "Opções de formatação",
|
|
233
|
+
children: /* @__PURE__ */ e(G, { className: "h-4 w-4" })
|
|
234
|
+
}
|
|
235
|
+
) }),
|
|
236
|
+
/* @__PURE__ */ e(w, { children: "Opções de formatação" })
|
|
237
|
+
] }),
|
|
238
|
+
/* @__PURE__ */ e("div", { className: "w-px h-4 bg-border mx-1" }),
|
|
239
|
+
/* @__PURE__ */ i(k, { children: [
|
|
240
|
+
/* @__PURE__ */ e(R, { asChild: !0, children: /* @__PURE__ */ e(
|
|
241
|
+
l,
|
|
242
|
+
{
|
|
243
|
+
variant: "ghost",
|
|
244
|
+
size: "icon",
|
|
245
|
+
className: "h-8 w-8 text-muted-foreground hover:text-foreground",
|
|
246
|
+
"aria-label": "Inserir emoji",
|
|
247
|
+
children: /* @__PURE__ */ e(U, { className: "h-4 w-4" })
|
|
248
|
+
}
|
|
249
|
+
) }),
|
|
250
|
+
/* @__PURE__ */ e(L, { className: "w-auto p-0 border-none", align: "start", side: "top", children: /* @__PURE__ */ e(
|
|
251
|
+
C,
|
|
252
|
+
{
|
|
253
|
+
onEmojiClick: (r) => g == null ? void 0 : g.chain().focus().insertContent(r.emoji).run(),
|
|
254
|
+
width: 300,
|
|
255
|
+
height: 350
|
|
256
|
+
}
|
|
257
|
+
) })
|
|
258
|
+
] }),
|
|
259
|
+
/* @__PURE__ */ e(
|
|
260
|
+
"input",
|
|
261
|
+
{
|
|
262
|
+
type: "file",
|
|
263
|
+
className: "hidden",
|
|
264
|
+
ref: A,
|
|
265
|
+
onChange: O,
|
|
266
|
+
accept: "image/*,.pdf,.doc,.docx"
|
|
267
|
+
}
|
|
268
|
+
),
|
|
269
|
+
/* @__PURE__ */ i(x, { children: [
|
|
270
|
+
/* @__PURE__ */ e(N, { asChild: !0, children: /* @__PURE__ */ e(
|
|
271
|
+
l,
|
|
272
|
+
{
|
|
273
|
+
variant: "ghost",
|
|
274
|
+
size: "icon",
|
|
275
|
+
className: "h-8 w-8 text-muted-foreground hover:text-foreground",
|
|
276
|
+
onClick: () => {
|
|
277
|
+
var r;
|
|
278
|
+
return (r = A.current) == null ? void 0 : r.click();
|
|
279
|
+
},
|
|
280
|
+
"aria-label": "Anexar arquivo",
|
|
281
|
+
children: /* @__PURE__ */ e(y, { className: "h-4 w-4" })
|
|
282
|
+
}
|
|
283
|
+
) }),
|
|
284
|
+
/* @__PURE__ */ e(w, { children: "Anexar arquivo" })
|
|
285
|
+
] }),
|
|
286
|
+
/* @__PURE__ */ i(x, { children: [
|
|
287
|
+
/* @__PURE__ */ e(N, { asChild: !0, children: /* @__PURE__ */ i(
|
|
288
|
+
l,
|
|
289
|
+
{
|
|
290
|
+
variant: "ghost",
|
|
291
|
+
size: "sm",
|
|
292
|
+
className: c(
|
|
293
|
+
"h-8 gap-2 px-2 transition-colors",
|
|
294
|
+
a ? "bg-destructive/10 text-destructive-emphasis hover:bg-destructive/20" : "text-muted-foreground hover:text-foreground"
|
|
295
|
+
),
|
|
296
|
+
onClick: () => p(!a),
|
|
297
|
+
children: [
|
|
298
|
+
/* @__PURE__ */ e(B, { className: "h-4 w-4" }),
|
|
299
|
+
/* @__PURE__ */ e("span", { className: "text-xs font-medium", children: "Solicitar Refação" })
|
|
300
|
+
]
|
|
301
|
+
}
|
|
302
|
+
) }),
|
|
303
|
+
/* @__PURE__ */ e(w, { children: "Marca este comentário como um pedido de alteração" })
|
|
304
|
+
] })
|
|
305
|
+
] }),
|
|
306
|
+
/* @__PURE__ */ i(
|
|
307
|
+
l,
|
|
308
|
+
{
|
|
309
|
+
size: "sm",
|
|
310
|
+
onClick: _,
|
|
311
|
+
disabled: P && h.length === 0,
|
|
312
|
+
children: [
|
|
313
|
+
"Enviar ",
|
|
314
|
+
/* @__PURE__ */ e(J, { className: "h-3.5 w-3.5 ml-2" })
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
)
|
|
318
|
+
] })
|
|
319
|
+
] })
|
|
320
|
+
] });
|
|
321
|
+
}, fe = ({
|
|
322
|
+
comment: t,
|
|
323
|
+
currentUserId: d,
|
|
324
|
+
onDelete: m,
|
|
325
|
+
onReact: a
|
|
326
|
+
}) => {
|
|
327
|
+
var f;
|
|
328
|
+
const p = t.isRevisionRequest;
|
|
329
|
+
return /* @__PURE__ */ i("div", { className: c(
|
|
330
|
+
"group flex gap-3 p-4 rounded-lg transition-colors",
|
|
331
|
+
p ? "bg-destructive/5 border border-destructive/20" : "hover:bg-muted/20"
|
|
332
|
+
), children: [
|
|
333
|
+
/* @__PURE__ */ i(I, { className: "h-8 w-8 mt-0.5 border", children: [
|
|
334
|
+
/* @__PURE__ */ e(z, { src: t.user.avatar }),
|
|
335
|
+
/* @__PURE__ */ e(T, { children: t.user.name.substring(0, 2).toUpperCase() })
|
|
336
|
+
] }),
|
|
337
|
+
/* @__PURE__ */ i("div", { className: "flex-1 min-w-0", children: [
|
|
338
|
+
/* @__PURE__ */ i("div", { className: "flex items-center justify-between mb-1.5", children: [
|
|
339
|
+
/* @__PURE__ */ i("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
340
|
+
/* @__PURE__ */ e("span", { className: "font-semibold text-sm text-foreground", children: t.user.name }),
|
|
341
|
+
/* @__PURE__ */ e(ue, { role: t.user.role }),
|
|
342
|
+
/* @__PURE__ */ e("span", { className: "text-xs text-foreground/65", children: K(t.createdAt, "dd MMM 'às' HH:mm", { locale: D }) })
|
|
343
|
+
] }),
|
|
344
|
+
/* @__PURE__ */ i("div", { className: "flex items-center gap-2 opacity-0 group-hover:opacity-100 transition-opacity", children: [
|
|
345
|
+
/* @__PURE__ */ i(k, { children: [
|
|
346
|
+
/* @__PURE__ */ e(R, { asChild: !0, children: /* @__PURE__ */ e(
|
|
347
|
+
l,
|
|
348
|
+
{
|
|
349
|
+
variant: "ghost",
|
|
350
|
+
size: "icon",
|
|
351
|
+
className: "h-6 w-6 text-muted-foreground hover:text-foreground",
|
|
352
|
+
"aria-label": "Reagir com emoji",
|
|
353
|
+
children: /* @__PURE__ */ e(U, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
|
|
354
|
+
}
|
|
355
|
+
) }),
|
|
356
|
+
/* @__PURE__ */ e(L, { className: "w-auto p-0 border-none", align: "end", children: /* @__PURE__ */ e(
|
|
357
|
+
C,
|
|
358
|
+
{
|
|
359
|
+
onEmojiClick: (n) => a == null ? void 0 : a(t.id, n.emoji),
|
|
360
|
+
width: 300,
|
|
361
|
+
height: 350
|
|
362
|
+
}
|
|
363
|
+
) })
|
|
364
|
+
] }),
|
|
365
|
+
m && /* @__PURE__ */ e(
|
|
366
|
+
l,
|
|
367
|
+
{
|
|
368
|
+
variant: "ghost",
|
|
369
|
+
size: "icon",
|
|
370
|
+
className: "h-6 w-6 text-muted-foreground hover:text-destructive",
|
|
371
|
+
onClick: () => m(t.id),
|
|
372
|
+
"aria-label": "Excluir comentário",
|
|
373
|
+
children: /* @__PURE__ */ e(W, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
|
|
374
|
+
}
|
|
375
|
+
)
|
|
376
|
+
] })
|
|
377
|
+
] }),
|
|
378
|
+
p && /* @__PURE__ */ i("div", { className: "inline-flex items-center gap-1.5 px-2 py-1 rounded-md bg-destructive/10 text-destructive-emphasis text-xs font-medium mb-2", children: [
|
|
379
|
+
/* @__PURE__ */ e(B, { className: "h-3.5 w-3.5" }),
|
|
380
|
+
"Solicitação de Refação"
|
|
381
|
+
] }),
|
|
382
|
+
/* @__PURE__ */ e(
|
|
383
|
+
"div",
|
|
384
|
+
{
|
|
385
|
+
className: "prose prose-sm dark:prose-invert max-w-none text-sm text-foreground/90 leading-relaxed break-words [&_p]:mb-2 [&_p:last-child]:mb-0",
|
|
386
|
+
dangerouslySetInnerHTML: { __html: t.content }
|
|
387
|
+
}
|
|
388
|
+
),
|
|
389
|
+
t.attachments && t.attachments.length > 0 && /* @__PURE__ */ e("div", { className: "mt-3 flex flex-wrap gap-2", children: t.attachments.map((n) => /* @__PURE__ */ e(
|
|
390
|
+
"div",
|
|
391
|
+
{
|
|
392
|
+
className: "group/att relative rounded-lg border overflow-hidden bg-background hover:shadow-sm transition-all cursor-pointer",
|
|
393
|
+
onClick: () => window.open(n.url, "_blank"),
|
|
394
|
+
children: n.type === "image" ? /* @__PURE__ */ i("div", { className: "h-32 aspect-[4/3]", children: [
|
|
395
|
+
/* @__PURE__ */ e("img", { src: n.url, alt: n.name, className: "h-full w-full object-cover" }),
|
|
396
|
+
/* @__PURE__ */ e("div", { className: "absolute inset-0 bg-foreground/0 group-hover/att:bg-foreground/10 transition-colors" })
|
|
397
|
+
] }) : /* @__PURE__ */ i("div", { className: "h-12 px-3 flex items-center gap-2 bg-muted/30", children: [
|
|
398
|
+
/* @__PURE__ */ e(y, { className: "h-4 w-4 text-muted-foreground" }),
|
|
399
|
+
/* @__PURE__ */ e("span", { className: "text-xs font-medium truncate max-w-[150px]", children: n.name })
|
|
400
|
+
] })
|
|
401
|
+
},
|
|
402
|
+
n.id
|
|
403
|
+
)) }),
|
|
404
|
+
/* @__PURE__ */ i("div", { className: "mt-3 flex flex-wrap gap-2 items-center", children: [
|
|
405
|
+
(f = t.reactions) == null ? void 0 : f.map((n) => /* @__PURE__ */ i(
|
|
406
|
+
"button",
|
|
407
|
+
{
|
|
408
|
+
onClick: () => a == null ? void 0 : a(t.id, n.emoji),
|
|
409
|
+
className: c(
|
|
410
|
+
"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium border transition-colors",
|
|
411
|
+
n.users.includes(d) ? "bg-accent border-accent text-accent-foreground" : "bg-muted/30 border-transparent hover:bg-muted/50 text-muted-foreground"
|
|
412
|
+
),
|
|
413
|
+
children: [
|
|
414
|
+
/* @__PURE__ */ e("span", { children: n.emoji }),
|
|
415
|
+
/* @__PURE__ */ e("span", { children: n.users.length })
|
|
416
|
+
]
|
|
417
|
+
},
|
|
418
|
+
n.emoji
|
|
419
|
+
)),
|
|
420
|
+
a && /* @__PURE__ */ i(k, { children: [
|
|
421
|
+
/* @__PURE__ */ e(R, { asChild: !0, children: /* @__PURE__ */ e(
|
|
422
|
+
l,
|
|
423
|
+
{
|
|
424
|
+
variant: "ghost",
|
|
425
|
+
size: "icon",
|
|
426
|
+
className: "h-6 w-6 rounded-full text-muted-foreground hover:text-foreground hover:bg-muted/50",
|
|
427
|
+
"aria-label": "Adicionar reação",
|
|
428
|
+
children: /* @__PURE__ */ e($, { className: "h-3.5 w-3.5" })
|
|
429
|
+
}
|
|
430
|
+
) }),
|
|
431
|
+
/* @__PURE__ */ e(L, { className: "w-auto p-0 border-none", align: "start", children: /* @__PURE__ */ e(
|
|
432
|
+
C,
|
|
433
|
+
{
|
|
434
|
+
onEmojiClick: (n) => a(t.id, n.emoji),
|
|
435
|
+
width: 300,
|
|
436
|
+
height: 350
|
|
437
|
+
}
|
|
438
|
+
) })
|
|
439
|
+
] })
|
|
440
|
+
] })
|
|
441
|
+
] })
|
|
442
|
+
] });
|
|
443
|
+
}, Be = ({
|
|
444
|
+
comments: t,
|
|
445
|
+
currentUser: d,
|
|
446
|
+
users: m = [],
|
|
447
|
+
onAddComment: a,
|
|
448
|
+
onDeleteComment: p,
|
|
449
|
+
onReact: f,
|
|
450
|
+
className: n
|
|
451
|
+
}) => {
|
|
452
|
+
const h = (u) => {
|
|
453
|
+
a({
|
|
454
|
+
content: u.content,
|
|
455
|
+
user: d,
|
|
456
|
+
isRevisionRequest: u.isRevisionRequest,
|
|
457
|
+
attachments: u.attachments
|
|
458
|
+
});
|
|
459
|
+
};
|
|
460
|
+
return /* @__PURE__ */ i("div", { className: c("flex flex-col h-full", n), children: [
|
|
461
|
+
/* @__PURE__ */ i("div", { className: "px-4 py-3 border-b flex items-center justify-between bg-card", children: [
|
|
462
|
+
/* @__PURE__ */ e("h3", { className: "font-semibold text-base", children: "Comentários da Atividade" }),
|
|
463
|
+
/* @__PURE__ */ e(M, { variant: "secondary", className: "bg-muted text-muted-foreground hover:bg-muted", children: t.length })
|
|
464
|
+
] }),
|
|
465
|
+
/* @__PURE__ */ e("div", { className: "flex-1 overflow-y-auto p-4 space-y-2 bg-muted/5", children: t.length === 0 ? /* @__PURE__ */ i("div", { className: "h-full flex flex-col items-center justify-center text-muted-foreground min-h-[200px]", children: [
|
|
466
|
+
/* @__PURE__ */ e("div", { className: "bg-muted rounded-full p-3 mb-3", children: /* @__PURE__ */ e(F, { className: "h-6 w-6", "aria-hidden": "true" }) }),
|
|
467
|
+
/* @__PURE__ */ e("p", { className: "text-sm font-medium text-foreground/70", children: "Nenhum comentário ainda" }),
|
|
468
|
+
/* @__PURE__ */ e("p", { className: "text-xs", children: "Inicie a conversa sobre esta tarefa" })
|
|
469
|
+
] }) : t.map((u) => /* @__PURE__ */ e(
|
|
470
|
+
fe,
|
|
471
|
+
{
|
|
472
|
+
comment: u,
|
|
473
|
+
currentUserId: d.id,
|
|
474
|
+
onDelete: p,
|
|
475
|
+
onReact: f
|
|
476
|
+
},
|
|
477
|
+
u.id
|
|
478
|
+
)) }),
|
|
479
|
+
/* @__PURE__ */ e("div", { className: "p-4 border-t bg-card", children: /* @__PURE__ */ e(
|
|
480
|
+
ge,
|
|
481
|
+
{
|
|
482
|
+
currentUser: d,
|
|
483
|
+
onSubmit: h,
|
|
484
|
+
users: m
|
|
485
|
+
}
|
|
486
|
+
) })
|
|
487
|
+
] });
|
|
488
|
+
};
|
|
489
|
+
export {
|
|
490
|
+
Be as CommentSystem
|
|
491
|
+
};
|
|
492
|
+
//# sourceMappingURL=comment-system.js.map
|