@iclips/ui 1.4.13 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +71 -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 +197 -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 +303 -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 +261 -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/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 +2918 -0
- package/dist/index.d.ts +2918 -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,109 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import * as m from "react";
|
|
4
|
+
import { Slot as f } from "@radix-ui/react-slot";
|
|
5
|
+
import { FormProvider as F, Controller as u, useFormContext as p, useFormState as x } from "react-hook-form";
|
|
6
|
+
import { cn as i } from "../utils.js";
|
|
7
|
+
import { Label as I } from "../primitives/label.js";
|
|
8
|
+
const $ = F, c = m.createContext(
|
|
9
|
+
{}
|
|
10
|
+
), D = ({
|
|
11
|
+
...e
|
|
12
|
+
}) => /* @__PURE__ */ n(c.Provider, { value: { name: e.name }, children: /* @__PURE__ */ n(u, { ...e }) }), d = () => {
|
|
13
|
+
const e = m.useContext(c), t = m.useContext(l), { getFieldState: o } = p(), r = x({ name: e.name }), a = o(e.name, r);
|
|
14
|
+
if (!e)
|
|
15
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
16
|
+
const { id: s } = t;
|
|
17
|
+
return {
|
|
18
|
+
id: s,
|
|
19
|
+
name: e.name,
|
|
20
|
+
formItemId: `${s}-form-item`,
|
|
21
|
+
formDescriptionId: `${s}-form-item-description`,
|
|
22
|
+
formMessageId: `${s}-form-item-message`,
|
|
23
|
+
...a
|
|
24
|
+
};
|
|
25
|
+
}, l = m.createContext(
|
|
26
|
+
{}
|
|
27
|
+
), g = m.forwardRef(({ className: e, ...t }, o) => {
|
|
28
|
+
const r = m.useId();
|
|
29
|
+
return /* @__PURE__ */ n(l.Provider, { value: { id: r }, children: /* @__PURE__ */ n(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
ref: o,
|
|
33
|
+
"data-slot": "form-item",
|
|
34
|
+
className: i("grid gap-2", e),
|
|
35
|
+
...t
|
|
36
|
+
}
|
|
37
|
+
) });
|
|
38
|
+
});
|
|
39
|
+
g.displayName = "FormItem";
|
|
40
|
+
const C = m.forwardRef(({ className: e, ...t }, o) => {
|
|
41
|
+
const { error: r, formItemId: a } = d();
|
|
42
|
+
return /* @__PURE__ */ n(
|
|
43
|
+
I,
|
|
44
|
+
{
|
|
45
|
+
ref: o,
|
|
46
|
+
"data-slot": "form-label",
|
|
47
|
+
"data-error": !!r,
|
|
48
|
+
className: i("data-[error=true]:text-destructive", e),
|
|
49
|
+
htmlFor: a,
|
|
50
|
+
...t
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
C.displayName = "FormLabel";
|
|
55
|
+
const v = m.forwardRef(({ ...e }, t) => {
|
|
56
|
+
const { error: o, formItemId: r, formDescriptionId: a, formMessageId: s } = d();
|
|
57
|
+
return /* @__PURE__ */ n(
|
|
58
|
+
f,
|
|
59
|
+
{
|
|
60
|
+
ref: t,
|
|
61
|
+
"data-slot": "form-control",
|
|
62
|
+
id: r,
|
|
63
|
+
"aria-describedby": o ? `${a} ${s}` : `${a}`,
|
|
64
|
+
"aria-invalid": !!o,
|
|
65
|
+
...e
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
v.displayName = "FormControl";
|
|
70
|
+
const N = m.forwardRef(({ className: e, ...t }, o) => {
|
|
71
|
+
const { formDescriptionId: r } = d();
|
|
72
|
+
return /* @__PURE__ */ n(
|
|
73
|
+
"p",
|
|
74
|
+
{
|
|
75
|
+
ref: o,
|
|
76
|
+
"data-slot": "form-description",
|
|
77
|
+
id: r,
|
|
78
|
+
className: i("text-muted-foreground text-sm", e),
|
|
79
|
+
...t
|
|
80
|
+
}
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
N.displayName = "FormDescription";
|
|
84
|
+
const b = m.forwardRef(({ className: e, ...t }, o) => {
|
|
85
|
+
const { error: r, formMessageId: a } = d(), s = r ? String((r == null ? void 0 : r.message) ?? "") : t.children;
|
|
86
|
+
return s ? /* @__PURE__ */ n(
|
|
87
|
+
"p",
|
|
88
|
+
{
|
|
89
|
+
ref: o,
|
|
90
|
+
"data-slot": "form-message",
|
|
91
|
+
id: a,
|
|
92
|
+
className: i("text-destructive text-sm", e),
|
|
93
|
+
...t,
|
|
94
|
+
children: s
|
|
95
|
+
}
|
|
96
|
+
) : null;
|
|
97
|
+
});
|
|
98
|
+
b.displayName = "FormMessage";
|
|
99
|
+
export {
|
|
100
|
+
$ as Form,
|
|
101
|
+
v as FormControl,
|
|
102
|
+
N as FormDescription,
|
|
103
|
+
D as FormField,
|
|
104
|
+
g as FormItem,
|
|
105
|
+
C as FormLabel,
|
|
106
|
+
b as FormMessage,
|
|
107
|
+
d as useFormField
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.js","sources":["../../../../src/components/ui/forms/form.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"../utils\";\nimport { Label } from \"../primitives/label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof Label>,\n React.ComponentPropsWithoutRef<typeof Label>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<\"p\">\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.ComponentProps<\"p\">\n>(({ className, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","jsx","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","className","ref","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),d=require("react"),s=require("class-variance-authority"),o=require("../utils.cjs"),f=require("../primitives/button.cjs"),g=require("./input.cjs"),x=require("./textarea.cjs");function m(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const p=m(d);function I({className:t,...n}){return u.jsx("div",{"data-slot":"input-group",role:"group",className:o.cn("group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",t),...n})}const b=s.cva("cn-input-group-addon flex cursor-text items-center justify-center select-none",{variants:{align:{"inline-start":"cn-input-group-addon-align-inline-start order-first","inline-end":"cn-input-group-addon-align-inline-end order-last","block-start":"cn-input-group-addon-align-block-start order-first w-full justify-start","block-end":"cn-input-group-addon-align-block-end order-last w-full justify-start"}},defaultVariants:{align:"inline-start"}});function G({className:t,align:n="inline-start",...e}){return u.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":n,className:o.cn(b({align:n}),t),onClick:r=>{var a,i;r.target.closest("button")||(i=(a=r.currentTarget.parentElement)==null?void 0:a.querySelector("input"))==null||i.focus()},...e})}const j=s.cva("flex items-center gap-2 text-sm shadow-none",{variants:{size:{default:"h-7",sm:"h-6",xs:"h-5","icon-xs":"size-5"}},defaultVariants:{size:"default"}});function y({className:t,size:n,variant:e="ghost",type:r="button",...a}){return u.jsx(f.Button,{"data-slot":"input-group-button",type:r,variant:e,className:o.cn(j({size:n}),t),...a})}function v({className:t,...n}){return u.jsx("span",{"data-slot":"input-group-text",className:o.cn("text-muted-foreground text-sm",t),...n})}const c=p.forwardRef(({className:t,...n},e)=>u.jsx(g.Input,{ref:e,"data-slot":"input-group-control",className:o.cn("cn-input-group-input flex-1",t),...n}));c.displayName="InputGroupInput";const l=p.forwardRef(({className:t,...n},e)=>u.jsx(x.Textarea,{ref:e,"data-slot":"input-group-control",className:o.cn("cn-input-group-textarea flex-1 resize-none",t),...n}));l.displayName="InputGroupTextarea";exports.InputGroup=I;exports.InputGroupAddon=G;exports.InputGroupButton=y;exports.InputGroupInput=c;exports.InputGroupText=v;exports.InputGroupTextarea=l;
|
|
2
|
+
//# sourceMappingURL=input-group.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-group.cjs","sources":["../../../../src/components/ui/forms/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"./input\";\nimport { Textarea } from \"./textarea\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n className\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"cn-input-group-addon flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"cn-input-group-addon-align-inline-start order-first\",\n \"inline-end\": \"cn-input-group-addon-align-inline-end order-last\",\n \"block-start\":\n \"cn-input-group-addon-align-block-start order-first w-full justify-start\",\n \"block-end\":\n \"cn-input-group-addon-align-block-end order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n default: \"h-7\",\n sm: \"h-6\",\n xs: \"h-5\",\n \"icon-xs\": \"size-5\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nfunction InputGroupButton({\n className,\n size,\n variant = \"ghost\",\n type = \"button\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\";\n }) {\n return (\n <Button\n data-slot=\"input-group-button\"\n type={type}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"input-group-text\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentPropsWithoutRef<typeof Input>\n>(({ className, ...props }, ref) => (\n <Input\n ref={ref}\n data-slot=\"input-group-control\"\n className={cn(\"cn-input-group-input flex-1\", className)}\n {...props}\n />\n));\nInputGroupInput.displayName = \"InputGroupInput\";\n\nconst InputGroupTextarea = React.forwardRef<\n React.ElementRef<typeof Textarea>,\n React.ComponentPropsWithoutRef<typeof Textarea>\n>(({ className, ...props }, ref) => (\n <Textarea\n ref={ref}\n data-slot=\"input-group-control\"\n className={cn(\"cn-input-group-textarea flex-1 resize-none\", className)}\n {...props}\n />\n));\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","_b","_a","inputGroupButtonVariants","InputGroupButton","size","variant","type","Button","InputGroupText","InputGroupInput","React","ref","Input","InputGroupTextarea","Textarea"],"mappings":"0kBAUA,SAASA,EAAW,CAAE,UAAAC,EAAW,GAAGC,GAAsC,CACxE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,KAAK,QACL,UAAWC,EAAAA,GACT,iHACAH,CAAA,EAED,GAAGC,CAAA,CAAA,CAGV,CAEA,MAAMG,EAA0BC,EAAAA,IAC9B,gFACA,CACE,SAAU,CACR,MAAO,CACL,eAAgB,sDAChB,aAAc,mDACd,cACE,0EACF,YACE,sEAAA,CACJ,EAEF,gBAAiB,CACf,MAAO,cAAA,CACT,CAEJ,EAEA,SAASC,EAAgB,CACvB,UAAAN,EACA,MAAAO,EAAQ,eACR,GAAGN,CACL,EAA+E,CAC7E,OACEC,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,YAAU,oBACV,aAAYK,EACZ,UAAWJ,EAAAA,GAAGC,EAAwB,CAAE,MAAAG,CAAA,CAAO,EAAGP,CAAS,EAC3D,QAAUQ,GAAM,SACTA,EAAE,OAAuB,QAAQ,QAAQ,IAG9CC,GAAAC,EAAAF,EAAE,cAAc,gBAAhB,YAAAE,EAA+B,cAAc,WAA7C,MAAAD,EAAuD,OACzD,EACC,GAAGR,CAAA,CAAA,CAGV,CAEA,MAAMU,EAA2BN,EAAAA,IAC/B,8CACA,CACE,SAAU,CACR,KAAM,CACJ,QAAS,MACT,GAAI,MACJ,GAAI,MACJ,UAAW,QAAA,CACb,EAEF,gBAAiB,CACf,KAAM,SAAA,CACR,CAEJ,EAEA,SAASO,EAAiB,CACxB,UAAAZ,EACA,KAAAa,EACA,QAAAC,EAAU,QACV,KAAAC,EAAO,SACP,GAAGd,CACL,EAGK,CACH,OACEC,EAAAA,IAACc,EAAAA,OAAA,CACC,YAAU,qBACV,KAAAD,EACA,QAAAD,EACA,UAAWX,EAAAA,GAAGQ,EAAyB,CAAE,KAAAE,CAAA,CAAM,EAAGb,CAAS,EAC1D,GAAGC,CAAA,CAAA,CAGV,CAEA,SAASgB,EAAe,CAAE,UAAAjB,EAAW,GAAGC,GAAuC,CAC7E,OACEC,EAAAA,IAAC,OAAA,CACC,YAAU,mBACV,UAAWC,EAAAA,GAAG,gCAAiCH,CAAS,EACvD,GAAGC,CAAA,CAAA,CAGV,CAEA,MAAMiB,EAAkBC,EAAM,WAG5B,CAAC,CAAE,UAAAnB,EAAW,GAAGC,CAAA,EAASmB,IAC1BlB,EAAAA,IAACmB,EAAAA,MAAA,CACC,IAAAD,EACA,YAAU,sBACV,UAAWjB,EAAAA,GAAG,8BAA+BH,CAAS,EACrD,GAAGC,CAAA,CACN,CACD,EACDiB,EAAgB,YAAc,kBAE9B,MAAMI,EAAqBH,EAAM,WAG/B,CAAC,CAAE,UAAAnB,EAAW,GAAGC,CAAA,EAASmB,IAC1BlB,EAAAA,IAACqB,EAAAA,SAAA,CACC,IAAAH,EACA,YAAU,sBACV,UAAWjB,EAAAA,GAAG,6CAA8CH,CAAS,EACpE,GAAGC,CAAA,CACN,CACD,EACDqB,EAAmB,YAAc"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import * as p from "react";
|
|
4
|
+
import { cva as s } from "class-variance-authority";
|
|
5
|
+
import { cn as e } from "../utils.js";
|
|
6
|
+
import { Button as l } from "../primitives/button.js";
|
|
7
|
+
import { Input as c } from "./input.js";
|
|
8
|
+
import { Textarea as d } from "./textarea.js";
|
|
9
|
+
function v({ className: n, ...t }) {
|
|
10
|
+
return /* @__PURE__ */ o(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
"data-slot": "input-group",
|
|
14
|
+
role: "group",
|
|
15
|
+
className: e(
|
|
16
|
+
"group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",
|
|
17
|
+
n
|
|
18
|
+
),
|
|
19
|
+
...t
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
const f = s(
|
|
24
|
+
"cn-input-group-addon flex cursor-text items-center justify-center select-none",
|
|
25
|
+
{
|
|
26
|
+
variants: {
|
|
27
|
+
align: {
|
|
28
|
+
"inline-start": "cn-input-group-addon-align-inline-start order-first",
|
|
29
|
+
"inline-end": "cn-input-group-addon-align-inline-end order-last",
|
|
30
|
+
"block-start": "cn-input-group-addon-align-block-start order-first w-full justify-start",
|
|
31
|
+
"block-end": "cn-input-group-addon-align-block-end order-last w-full justify-start"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
align: "inline-start"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
function y({
|
|
40
|
+
className: n,
|
|
41
|
+
align: t = "inline-start",
|
|
42
|
+
...r
|
|
43
|
+
}) {
|
|
44
|
+
return /* @__PURE__ */ o(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
role: "group",
|
|
48
|
+
"data-slot": "input-group-addon",
|
|
49
|
+
"data-align": t,
|
|
50
|
+
className: e(f({ align: t }), n),
|
|
51
|
+
onClick: (a) => {
|
|
52
|
+
var u, i;
|
|
53
|
+
a.target.closest("button") || (i = (u = a.currentTarget.parentElement) == null ? void 0 : u.querySelector("input")) == null || i.focus();
|
|
54
|
+
},
|
|
55
|
+
...r
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
const m = s(
|
|
60
|
+
"flex items-center gap-2 text-sm shadow-none",
|
|
61
|
+
{
|
|
62
|
+
variants: {
|
|
63
|
+
size: {
|
|
64
|
+
default: "h-7",
|
|
65
|
+
sm: "h-6",
|
|
66
|
+
xs: "h-5",
|
|
67
|
+
"icon-xs": "size-5"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
defaultVariants: {
|
|
71
|
+
size: "default"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
function k({
|
|
76
|
+
className: n,
|
|
77
|
+
size: t,
|
|
78
|
+
variant: r = "ghost",
|
|
79
|
+
type: a = "button",
|
|
80
|
+
...u
|
|
81
|
+
}) {
|
|
82
|
+
return /* @__PURE__ */ o(
|
|
83
|
+
l,
|
|
84
|
+
{
|
|
85
|
+
"data-slot": "input-group-button",
|
|
86
|
+
type: a,
|
|
87
|
+
variant: r,
|
|
88
|
+
className: e(m({ size: t }), n),
|
|
89
|
+
...u
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
function T({ className: n, ...t }) {
|
|
94
|
+
return /* @__PURE__ */ o(
|
|
95
|
+
"span",
|
|
96
|
+
{
|
|
97
|
+
"data-slot": "input-group-text",
|
|
98
|
+
className: e("text-muted-foreground text-sm", n),
|
|
99
|
+
...t
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
const g = p.forwardRef(({ className: n, ...t }, r) => /* @__PURE__ */ o(
|
|
104
|
+
c,
|
|
105
|
+
{
|
|
106
|
+
ref: r,
|
|
107
|
+
"data-slot": "input-group-control",
|
|
108
|
+
className: e("cn-input-group-input flex-1", n),
|
|
109
|
+
...t
|
|
110
|
+
}
|
|
111
|
+
));
|
|
112
|
+
g.displayName = "InputGroupInput";
|
|
113
|
+
const x = p.forwardRef(({ className: n, ...t }, r) => /* @__PURE__ */ o(
|
|
114
|
+
d,
|
|
115
|
+
{
|
|
116
|
+
ref: r,
|
|
117
|
+
"data-slot": "input-group-control",
|
|
118
|
+
className: e("cn-input-group-textarea flex-1 resize-none", n),
|
|
119
|
+
...t
|
|
120
|
+
}
|
|
121
|
+
));
|
|
122
|
+
x.displayName = "InputGroupTextarea";
|
|
123
|
+
export {
|
|
124
|
+
v as InputGroup,
|
|
125
|
+
y as InputGroupAddon,
|
|
126
|
+
k as InputGroupButton,
|
|
127
|
+
g as InputGroupInput,
|
|
128
|
+
T as InputGroupText,
|
|
129
|
+
x as InputGroupTextarea
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=input-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-group.js","sources":["../../../../src/components/ui/forms/input-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../utils\";\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"./input\";\nimport { Textarea } from \"./textarea\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group cn-input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto\",\n className\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"cn-input-group-addon flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n \"inline-start\": \"cn-input-group-addon-align-inline-start order-first\",\n \"inline-end\": \"cn-input-group-addon-align-inline-end order-last\",\n \"block-start\":\n \"cn-input-group-addon-align-block-start order-first w-full justify-start\",\n \"block-end\":\n \"cn-input-group-addon-align-block-end order-last w-full justify-start\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n default: \"h-7\",\n sm: \"h-6\",\n xs: \"h-5\",\n \"icon-xs\": \"size-5\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n);\n\nfunction InputGroupButton({\n className,\n size,\n variant = \"ghost\",\n type = \"button\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\";\n }) {\n return (\n <Button\n data-slot=\"input-group-button\"\n type={type}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"input-group-text\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nconst InputGroupInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentPropsWithoutRef<typeof Input>\n>(({ className, ...props }, ref) => (\n <Input\n ref={ref}\n data-slot=\"input-group-control\"\n className={cn(\"cn-input-group-input flex-1\", className)}\n {...props}\n />\n));\nInputGroupInput.displayName = \"InputGroupInput\";\n\nconst InputGroupTextarea = React.forwardRef<\n React.ElementRef<typeof Textarea>,\n React.ComponentPropsWithoutRef<typeof Textarea>\n>(({ className, ...props }, ref) => (\n <Textarea\n ref={ref}\n data-slot=\"input-group-control\"\n className={cn(\"cn-input-group-textarea flex-1 resize-none\", className)}\n {...props}\n />\n));\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","_b","_a","inputGroupButtonVariants","InputGroupButton","size","variant","type","Button","InputGroupText","InputGroupInput","React","ref","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;;;AAUA,SAASA,EAAW,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMG,IAA0BC;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,OAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,eACE;AAAA,QACF,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ;AAEA,SAASC,EAAgB;AAAA,EACvB,WAAAN;AAAA,EACA,OAAAO,IAAQ;AAAA,EACR,GAAGN;AACL,GAA+E;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYK;AAAA,MACZ,WAAWJ,EAAGC,EAAwB,EAAE,OAAAG,EAAA,CAAO,GAAGP,CAAS;AAAA,MAC3D,SAAS,CAACQ,MAAM;;AACd,QAAKA,EAAE,OAAuB,QAAQ,QAAQ,MAG9CC,KAAAC,IAAAF,EAAE,cAAc,kBAAhB,gBAAAE,EAA+B,cAAc,aAA7C,QAAAD,EAAuD;AAAA,MACzD;AAAA,MACC,GAAGR;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMU,IAA2BN;AAAA,EAC/B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAASO,EAAiB;AAAA,EACxB,WAAAZ;AAAA,EACA,MAAAa;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,GAAGd;AACL,GAGK;AACH,SACE,gBAAAC;AAAA,IAACc;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAAD;AAAA,MACA,SAAAD;AAAA,MACA,WAAWX,EAAGQ,EAAyB,EAAE,MAAAE,EAAA,CAAM,GAAGb,CAAS;AAAA,MAC1D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASgB,EAAe,EAAE,WAAAjB,GAAW,GAAGC,KAAuC;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,iCAAiCH,CAAS;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMiB,IAAkBC,EAAM,WAG5B,CAAC,EAAE,WAAAnB,GAAW,GAAGC,EAAA,GAASmB,MAC1B,gBAAAlB;AAAA,EAACmB;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWjB,EAAG,+BAA+BH,CAAS;AAAA,IACrD,GAAGC;AAAA,EAAA;AACN,CACD;AACDiB,EAAgB,cAAc;AAE9B,MAAMI,IAAqBH,EAAM,WAG/B,CAAC,EAAE,WAAAnB,GAAW,GAAGC,EAAA,GAASmB,MAC1B,gBAAAlB;AAAA,EAACqB;AAAA,EAAA;AAAA,IACC,KAAAH;AAAA,IACA,aAAU;AAAA,IACV,WAAWjB,EAAG,8CAA8CH,CAAS;AAAA,IACpE,GAAGC;AAAA,EAAA;AACN,CACD;AACDqB,EAAmB,cAAc;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("react"),s=require("input-otp"),v=require("lucide-react"),i=require("../utils.cjs");function f(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const o=f(p),u=o.forwardRef(({className:t,containerClassName:e,...r},a)=>n.jsx(s.OTPInput,{ref:a,"data-slot":"input-otp",containerClassName:i.cn("flex items-center gap-2 has-disabled:opacity-50",e),className:i.cn("disabled:cursor-not-allowed",t),...r}));u.displayName="InputOTP";function b({className:t,...e}){return n.jsx("div",{"data-slot":"input-otp-group",className:i.cn("flex items-center gap-1",t),...e})}function m({index:t,className:e,...r}){const a=o.useContext(s.OTPInputContext),{char:c,hasFakeCaret:d,isActive:l}=(a==null?void 0:a.slots[t])??{};return n.jsxs("div",{"data-slot":"input-otp-slot","data-active":l,className:i.cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",e),...r,children:[c,d&&n.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:n.jsx("div",{className:"animate-caret-blink bg-foreground h-4 w-px duration-1000"})})]})}function g({...t}){return n.jsx("div",{"data-slot":"input-otp-separator",role:"separator",...t,children:n.jsx(v.MinusIcon,{})})}exports.InputOTP=u;exports.InputOTPGroup=b;exports.InputOTPSeparator=g;exports.InputOTPSlot=m;
|
|
2
|
+
//# sourceMappingURL=input-otp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-otp.cjs","sources":["../../../../src/components/ui/forms/input-otp.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"../utils\";\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput> & {\n containerClassName?: string;\n }\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"names":["InputOTP","React","className","containerClassName","props","ref","jsx","OTPInput","cn","InputOTPGroup","InputOTPSlot","index","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","jsxs","InputOTPSeparator","MinusIcon"],"mappings":"0fAQMA,EAAWC,EAAM,WAKrB,CAAC,CAAE,UAAAC,EAAW,mBAAAC,EAAoB,GAAGC,GAASC,IAC9CC,EAAAA,IAACC,EAAAA,SAAA,CACC,IAAAF,EACA,YAAU,YACV,mBAAoBG,EAAAA,GAClB,kDACAL,CAAA,EAEF,UAAWK,EAAAA,GAAG,8BAA+BN,CAAS,EACrD,GAAGE,CAAA,CACN,CACD,EACDJ,EAAS,YAAc,WAEvB,SAASS,EAAc,CAAE,UAAAP,EAAW,GAAGE,GAAsC,CAC3E,OACEE,EAAAA,IAAC,MAAA,CACC,YAAU,kBACV,UAAWE,EAAAA,GAAG,0BAA2BN,CAAS,EACjD,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASM,EAAa,CACpB,MAAAC,EACA,UAAAT,EACA,GAAGE,CACL,EAEG,CACD,MAAMQ,EAAkBX,EAAM,WAAWY,iBAAe,EAClD,CAAE,KAAAC,EAAM,aAAAC,EAAc,SAAAC,CAAA,GAAaJ,GAAA,YAAAA,EAAiB,MAAMD,KAAU,CAAA,EAE1E,OACEM,EAAAA,KAAC,MAAA,CACC,YAAU,iBACV,cAAaD,EACb,UAAWR,EAAAA,GACT,ofACAN,CAAA,EAED,GAAGE,EAEH,SAAA,CAAAU,EACAC,SACE,MAAA,CAAI,UAAU,wEACb,SAAAT,EAAAA,IAAC,MAAA,CAAI,UAAU,0DAAA,CAA2D,CAAA,CAC5E,CAAA,CAAA,CAAA,CAIR,CAEA,SAASY,EAAkB,CAAE,GAAGd,GAAsC,CACpE,OACEE,EAAAA,IAAC,MAAA,CAAI,YAAU,sBAAsB,KAAK,YAAa,GAAGF,EACxD,SAAAE,EAAAA,IAACa,EAAAA,UAAA,CAAA,CAAU,CAAA,CACb,CAEJ"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
3
|
+
import * as o from "react";
|
|
4
|
+
import { OTPInput as l, OTPInputContext as p } from "input-otp";
|
|
5
|
+
import { MinusIcon as m } from "lucide-react";
|
|
6
|
+
import { cn as i } from "../utils.js";
|
|
7
|
+
const v = o.forwardRef(({ className: t, containerClassName: r, ...n }, a) => /* @__PURE__ */ e(
|
|
8
|
+
l,
|
|
9
|
+
{
|
|
10
|
+
ref: a,
|
|
11
|
+
"data-slot": "input-otp",
|
|
12
|
+
containerClassName: i(
|
|
13
|
+
"flex items-center gap-2 has-disabled:opacity-50",
|
|
14
|
+
r
|
|
15
|
+
),
|
|
16
|
+
className: i("disabled:cursor-not-allowed", t),
|
|
17
|
+
...n
|
|
18
|
+
}
|
|
19
|
+
));
|
|
20
|
+
v.displayName = "InputOTP";
|
|
21
|
+
function h({ className: t, ...r }) {
|
|
22
|
+
return /* @__PURE__ */ e(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
"data-slot": "input-otp-group",
|
|
26
|
+
className: i("flex items-center gap-1", t),
|
|
27
|
+
...r
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function I({
|
|
32
|
+
index: t,
|
|
33
|
+
className: r,
|
|
34
|
+
...n
|
|
35
|
+
}) {
|
|
36
|
+
const a = o.useContext(p), { char: s, hasFakeCaret: d, isActive: u } = (a == null ? void 0 : a.slots[t]) ?? {};
|
|
37
|
+
return /* @__PURE__ */ c(
|
|
38
|
+
"div",
|
|
39
|
+
{
|
|
40
|
+
"data-slot": "input-otp-slot",
|
|
41
|
+
"data-active": u,
|
|
42
|
+
className: i(
|
|
43
|
+
"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
|
|
44
|
+
r
|
|
45
|
+
),
|
|
46
|
+
...n,
|
|
47
|
+
children: [
|
|
48
|
+
s,
|
|
49
|
+
d && /* @__PURE__ */ e("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ e("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
function N({ ...t }) {
|
|
55
|
+
return /* @__PURE__ */ e("div", { "data-slot": "input-otp-separator", role: "separator", ...t, children: /* @__PURE__ */ e(m, {}) });
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
v as InputOTP,
|
|
59
|
+
h as InputOTPGroup,
|
|
60
|
+
N as InputOTPSeparator,
|
|
61
|
+
I as InputOTPSlot
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=input-otp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-otp.js","sources":["../../../../src/components/ui/forms/input-otp.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { MinusIcon } from \"lucide-react\";\n\nimport { cn } from \"../utils\";\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput> & {\n containerClassName?: string;\n }\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n data-slot=\"input-otp\"\n containerClassName={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n containerClassName,\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\"flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm bg-input-background transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n"],"names":["InputOTP","React","className","containerClassName","props","ref","jsx","OTPInput","cn","InputOTPGroup","InputOTPSlot","index","inputOTPContext","OTPInputContext","char","hasFakeCaret","isActive","jsxs","InputOTPSeparator","MinusIcon"],"mappings":";;;;;;AAQA,MAAMA,IAAWC,EAAM,WAKrB,CAAC,EAAE,WAAAC,GAAW,oBAAAC,GAAoB,GAAGC,KAASC,MAC9C,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,aAAU;AAAA,IACV,oBAAoBG;AAAA,MAClB;AAAA,MACAL;AAAA,IAAA;AAAA,IAEF,WAAWK,EAAG,+BAA+BN,CAAS;AAAA,IACrD,GAAGE;AAAA,EAAA;AACN,CACD;AACDJ,EAAS,cAAc;AAEvB,SAASS,EAAc,EAAE,WAAAP,GAAW,GAAGE,KAAsC;AAC3E,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWE,EAAG,2BAA2BN,CAAS;AAAA,MACjD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAa;AAAA,EACpB,OAAAC;AAAA,EACA,WAAAT;AAAA,EACA,GAAGE;AACL,GAEG;AACD,QAAMQ,IAAkBX,EAAM,WAAWY,CAAe,GAClD,EAAE,MAAAC,GAAM,cAAAC,GAAc,UAAAC,EAAA,KAAaJ,KAAA,gBAAAA,EAAiB,MAAMD,OAAU,CAAA;AAE1E,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAaD;AAAA,MACb,WAAWR;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAU;AAAA,QACAC,uBACE,OAAA,EAAI,WAAU,yEACb,UAAA,gBAAAT,EAAC,OAAA,EAAI,WAAU,2DAAA,CAA2D,EAAA,CAC5E;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAASY,EAAkB,EAAE,GAAGd,KAAsC;AACpE,SACE,gBAAAE,EAAC,OAAA,EAAI,aAAU,uBAAsB,MAAK,aAAa,GAAGF,GACxD,UAAA,gBAAAE,EAACa,GAAA,CAAA,CAAU,EAAA,CACb;AAEJ;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),b=require("react"),u=require("lucide-react"),j=require("./input.cjs"),g=require("../utils.cjs");function x(e){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(i,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return i.default=e,Object.freeze(i)}const o=x(b),d=o.forwardRef(({validationState:e,validate:i,onChange:t,className:n,...f},p)=>{const[v,s]=o.useState("idle"),a=e??v;function m(l){if(e===void 0&&i){const c=i(l.target.value);s(c===null?"idle":c?"valid":"invalid")}t==null||t(l)}return r.jsxs("div",{className:"relative flex items-center",children:[r.jsx(j.Input,{ref:p,className:g.cn(a!=="idle"&&"pr-9",n),"aria-invalid":a==="invalid"||void 0,onChange:m,...f}),a==="valid"&&r.jsx(u.CheckCircle2,{className:"absolute right-3 size-4 text-green-600 pointer-events-none","aria-hidden":"true"}),a==="invalid"&&r.jsx(u.XCircle,{className:"absolute right-3 size-4 text-destructive pointer-events-none","aria-hidden":"true"})]})});d.displayName="InputValidation";exports.InputValidation=d;
|
|
2
|
+
//# sourceMappingURL=input-validation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.cjs","sources":["../../../../src/components/ui/forms/input-validation.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CheckCircle2, XCircle } from \"lucide-react\";\n\nimport { Input } from \"./input\";\nimport { cn } from \"../utils\";\n\nexport type ValidationState = \"idle\" | \"valid\" | \"invalid\";\n\nexport interface InputValidationProps extends React.ComponentProps<\"input\"> {\n /**\n * Estado de validação controlado externamente.\n * Use \"idle\" antes da primeira interação, \"valid\" para sucesso e \"invalid\" para erro.\n */\n validationState?: ValidationState;\n /**\n * Função de validação automática disparada no onChange.\n * Retorna true para válido, false para inválido, null para idle.\n * Só é usada se `validationState` não for fornecido.\n */\n validate?: (value: string) => boolean | null;\n}\n\n/**\n * InputValidation — Input com feedback visual de validação em tempo real (Inline Validation).\n *\n * Exibe um ícone de CheckCircle (verde) para entradas válidas e XCircle (vermelho)\n * para entradas inválidas, comunicando o resultado imediatamente ao usuário — sem\n * esperar pelo submit do formulário.\n *\n * Arquétipo Governante: previne o erro antes que ele aconteça.\n * Arquétipo Herói: reduz a fricção com feedback imediato e encorajador.\n *\n * @example\n * // Modo controlado (recomendado com react-hook-form)\n * <InputValidation validationState={errors.email ? \"invalid\" : value ? \"valid\" : \"idle\"} />\n *\n * @example\n * // Modo com validate automático\n * <InputValidation validate={(v) => v.includes(\"@\") ? true : v.length > 0 ? false : null} />\n */\nexport const InputValidation = React.forwardRef<\n React.ElementRef<typeof Input>,\n InputValidationProps\n>(({\n validationState: controlledState,\n validate,\n onChange,\n className,\n ...props\n}, ref) => {\n const [internalState, setInternalState] = React.useState<ValidationState>(\"idle\");\n\n const state = controlledState ?? internalState;\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (controlledState === undefined && validate) {\n const result = validate(e.target.value);\n if (result === null) setInternalState(\"idle\");\n else setInternalState(result ? \"valid\" : \"invalid\");\n }\n onChange?.(e);\n }\n\n return (\n <div className=\"relative flex items-center\">\n <Input\n ref={ref}\n className={cn(\n state !== \"idle\" && \"pr-9\",\n className,\n )}\n aria-invalid={state === \"invalid\" || undefined}\n onChange={handleChange}\n {...props}\n />\n {state === \"valid\" && (\n <CheckCircle2\n className=\"absolute right-3 size-4 text-green-600 pointer-events-none\"\n aria-hidden=\"true\"\n />\n )}\n {state === \"invalid\" && (\n <XCircle\n className=\"absolute right-3 size-4 text-destructive pointer-events-none\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n});\nInputValidation.displayName = \"InputValidation\";\n"],"names":["InputValidation","React","controlledState","validate","onChange","className","props","ref","internalState","setInternalState","state","handleChange","e","result","jsxs","jsx","Input","cn","CheckCircle2","XCircle"],"mappings":"+eAwCaA,EAAkBC,EAAM,WAGnC,CAAC,CACD,gBAAiBC,EACjB,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAGC,IAAQ,CACT,KAAM,CAACC,EAAeC,CAAgB,EAAIR,EAAM,SAA0B,MAAM,EAE1ES,EAAQR,GAAmBM,EAEjC,SAASG,EAAaC,EAAwC,CAC5D,GAAIV,IAAoB,QAAaC,EAAU,CAC7C,MAAMU,EAASV,EAASS,EAAE,OAAO,KAAK,EACjBH,EAAjBI,IAAW,KAAuB,OAChBA,EAAS,QAAU,SADG,CAE9C,CACAT,GAAA,MAAAA,EAAWQ,EACb,CAEA,OACEE,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAACC,EAAAA,MAAA,CACC,IAAAT,EACA,UAAWU,EAAAA,GACTP,IAAU,QAAU,OACpBL,CAAA,EAEF,eAAcK,IAAU,WAAa,OACrC,SAAUC,EACT,GAAGL,CAAA,CAAA,EAELI,IAAU,SACTK,EAAAA,IAACG,EAAAA,aAAA,CACC,UAAU,6DACV,cAAY,MAAA,CAAA,EAGfR,IAAU,WACTK,EAAAA,IAACI,EAAAA,QAAA,CACC,UAAU,+DACV,cAAY,MAAA,CAAA,CACd,EAEJ,CAEJ,CAAC,EACDnB,EAAgB,YAAc"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as p, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import * as o from "react";
|
|
3
|
+
import { CheckCircle2 as f, XCircle as x } from "lucide-react";
|
|
4
|
+
import { Input as h } from "./input.js";
|
|
5
|
+
import { cn as N } from "../utils.js";
|
|
6
|
+
const I = o.forwardRef(({
|
|
7
|
+
validationState: a,
|
|
8
|
+
validate: r,
|
|
9
|
+
onChange: t,
|
|
10
|
+
className: d,
|
|
11
|
+
...c
|
|
12
|
+
}, m) => {
|
|
13
|
+
const [u, n] = o.useState("idle"), e = a ?? u;
|
|
14
|
+
function v(s) {
|
|
15
|
+
if (a === void 0 && r) {
|
|
16
|
+
const l = r(s.target.value);
|
|
17
|
+
n(l === null ? "idle" : l ? "valid" : "invalid");
|
|
18
|
+
}
|
|
19
|
+
t == null || t(s);
|
|
20
|
+
}
|
|
21
|
+
return /* @__PURE__ */ p("div", { className: "relative flex items-center", children: [
|
|
22
|
+
/* @__PURE__ */ i(
|
|
23
|
+
h,
|
|
24
|
+
{
|
|
25
|
+
ref: m,
|
|
26
|
+
className: N(
|
|
27
|
+
e !== "idle" && "pr-9",
|
|
28
|
+
d
|
|
29
|
+
),
|
|
30
|
+
"aria-invalid": e === "invalid" || void 0,
|
|
31
|
+
onChange: v,
|
|
32
|
+
...c
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
e === "valid" && /* @__PURE__ */ i(
|
|
36
|
+
f,
|
|
37
|
+
{
|
|
38
|
+
className: "absolute right-3 size-4 text-green-600 pointer-events-none",
|
|
39
|
+
"aria-hidden": "true"
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
e === "invalid" && /* @__PURE__ */ i(
|
|
43
|
+
x,
|
|
44
|
+
{
|
|
45
|
+
className: "absolute right-3 size-4 text-destructive pointer-events-none",
|
|
46
|
+
"aria-hidden": "true"
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
] });
|
|
50
|
+
});
|
|
51
|
+
I.displayName = "InputValidation";
|
|
52
|
+
export {
|
|
53
|
+
I as InputValidation
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=input-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.js","sources":["../../../../src/components/ui/forms/input-validation.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { CheckCircle2, XCircle } from \"lucide-react\";\n\nimport { Input } from \"./input\";\nimport { cn } from \"../utils\";\n\nexport type ValidationState = \"idle\" | \"valid\" | \"invalid\";\n\nexport interface InputValidationProps extends React.ComponentProps<\"input\"> {\n /**\n * Estado de validação controlado externamente.\n * Use \"idle\" antes da primeira interação, \"valid\" para sucesso e \"invalid\" para erro.\n */\n validationState?: ValidationState;\n /**\n * Função de validação automática disparada no onChange.\n * Retorna true para válido, false para inválido, null para idle.\n * Só é usada se `validationState` não for fornecido.\n */\n validate?: (value: string) => boolean | null;\n}\n\n/**\n * InputValidation — Input com feedback visual de validação em tempo real (Inline Validation).\n *\n * Exibe um ícone de CheckCircle (verde) para entradas válidas e XCircle (vermelho)\n * para entradas inválidas, comunicando o resultado imediatamente ao usuário — sem\n * esperar pelo submit do formulário.\n *\n * Arquétipo Governante: previne o erro antes que ele aconteça.\n * Arquétipo Herói: reduz a fricção com feedback imediato e encorajador.\n *\n * @example\n * // Modo controlado (recomendado com react-hook-form)\n * <InputValidation validationState={errors.email ? \"invalid\" : value ? \"valid\" : \"idle\"} />\n *\n * @example\n * // Modo com validate automático\n * <InputValidation validate={(v) => v.includes(\"@\") ? true : v.length > 0 ? false : null} />\n */\nexport const InputValidation = React.forwardRef<\n React.ElementRef<typeof Input>,\n InputValidationProps\n>(({\n validationState: controlledState,\n validate,\n onChange,\n className,\n ...props\n}, ref) => {\n const [internalState, setInternalState] = React.useState<ValidationState>(\"idle\");\n\n const state = controlledState ?? internalState;\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (controlledState === undefined && validate) {\n const result = validate(e.target.value);\n if (result === null) setInternalState(\"idle\");\n else setInternalState(result ? \"valid\" : \"invalid\");\n }\n onChange?.(e);\n }\n\n return (\n <div className=\"relative flex items-center\">\n <Input\n ref={ref}\n className={cn(\n state !== \"idle\" && \"pr-9\",\n className,\n )}\n aria-invalid={state === \"invalid\" || undefined}\n onChange={handleChange}\n {...props}\n />\n {state === \"valid\" && (\n <CheckCircle2\n className=\"absolute right-3 size-4 text-green-600 pointer-events-none\"\n aria-hidden=\"true\"\n />\n )}\n {state === \"invalid\" && (\n <XCircle\n className=\"absolute right-3 size-4 text-destructive pointer-events-none\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n});\nInputValidation.displayName = \"InputValidation\";\n"],"names":["InputValidation","React","controlledState","validate","onChange","className","props","ref","internalState","setInternalState","state","handleChange","e","result","jsxs","jsx","Input","cn","CheckCircle2","XCircle"],"mappings":";;;;;AAwCO,MAAMA,IAAkBC,EAAM,WAGnC,CAAC;AAAA,EACD,iBAAiBC;AAAA,EACjB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAQ;AACT,QAAM,CAACC,GAAeC,CAAgB,IAAIR,EAAM,SAA0B,MAAM,GAE1ES,IAAQR,KAAmBM;AAEjC,WAASG,EAAaC,GAAwC;AAC5D,QAAIV,MAAoB,UAAaC,GAAU;AAC7C,YAAMU,IAASV,EAASS,EAAE,OAAO,KAAK;AACtC,MAAqBH,EAAjBI,MAAW,OAAuB,SAChBA,IAAS,UAAU,SADG;AAAA,IAE9C;AACA,IAAAT,KAAA,QAAAA,EAAWQ;AAAA,EACb;AAEA,SACE,gBAAAE,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAAT;AAAA,QACA,WAAWU;AAAA,UACTP,MAAU,UAAU;AAAA,UACpBL;AAAA,QAAA;AAAA,QAEF,gBAAcK,MAAU,aAAa;AAAA,QACrC,UAAUC;AAAA,QACT,GAAGL;AAAA,MAAA;AAAA,IAAA;AAAA,IAELI,MAAU,WACT,gBAAAK;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAGfR,MAAU,aACT,gBAAAK;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GAEJ;AAEJ,CAAC;AACDnB,EAAgB,cAAc;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),a=require("react"),l=require("../utils.cjs");function d(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const s=d(a),n=s.forwardRef(({className:e,type:t,...r},i)=>o.jsx("input",{ref:i,type:t,"data-slot":"input",className:l.cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","hover:border-ring/50","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r}));n.displayName="Input";exports.Input=n;
|
|
2
|
+
//# sourceMappingURL=input.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.cjs","sources":["../../../../src/components/ui/forms/input.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"hover:border-ring/50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Input","React","className","type","props","ref","jsx","cn"],"mappings":"4bAIMA,EAAQC,EAAM,WAClB,CAAC,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,CAAA,EAASC,IAE5BC,EAAAA,IAAC,QAAA,CACC,IAAAD,EACA,KAAAF,EACA,YAAU,QACV,UAAWI,EAAAA,GACT,ybACA,uBACA,gFACA,yGACAL,CAAA,EAED,GAAGE,CAAA,CAAA,CAIZ,EACAJ,EAAM,YAAc"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import * as n from "react";
|
|
3
|
+
import { cn as d } from "../utils.js";
|
|
4
|
+
const a = n.forwardRef(
|
|
5
|
+
({ className: e, type: r, ...i }, o) => /* @__PURE__ */ t(
|
|
6
|
+
"input",
|
|
7
|
+
{
|
|
8
|
+
ref: o,
|
|
9
|
+
type: r,
|
|
10
|
+
"data-slot": "input",
|
|
11
|
+
className: d(
|
|
12
|
+
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
13
|
+
"hover:border-ring/50",
|
|
14
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
15
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
16
|
+
e
|
|
17
|
+
),
|
|
18
|
+
...i
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
);
|
|
22
|
+
a.displayName = "Input";
|
|
23
|
+
export {
|
|
24
|
+
a as Input
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sources":["../../../../src/components/ui/forms/input.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"hover:border-ring/50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Input","React","className","type","props","ref","jsx","cn"],"mappings":";;;AAIA,MAAMA,IAAQC,EAAM;AAAA,EAClB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAE5B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,MAAAF;AAAA,MACA,aAAU;AAAA,MACV,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAJ,EAAM,cAAc;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),U=require("react"),I=require("lucide-react"),W=require("../utils.cjs"),J=require("./input.cjs"),d=require("../primitives/button.cjs"),Y=require("../overlays/popover.cjs");function v(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(s,i,n.get?n:{enumerable:!0,get:()=>t[i]})}}return s.default=t,Object.freeze(s)}const u=v(U),D=["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"];function b(t,s){return t*12+s}function S(t){return`${D[t.getMonth()]}/${t.getFullYear()}`}function E(t){const s=t.trim().match(/^([A-Za-zÀ-ÿ]{3,}|\d{1,2})\/(\d{4})$/);if(!s)return null;const[,i,n]=s,l=Number(n);if(Number.isNaN(l))return null;let c;if(/^\d+$/.test(i))c=Number(i);else{const a=D.findIndex(f=>f.toLowerCase()===i.toLowerCase().slice(0,3));if(a===-1)return null;c=a+1}return c<1||c>12?null:new Date(l,c-1,1)}function tt(t){const s=t.trim();if(!s)return null;const i=["→","-","até","a"];for(const n of i){if(!s.includes(n))continue;const l=s.split(n).map(f=>f.trim());if(l.length!==2)continue;const c=E(l[0]),a=E(l[1]);if(c&&a)return b(c.getFullYear(),c.getMonth()+1)>b(a.getFullYear(),a.getMonth()+1)?null:{from:c,to:a}}return null}function L({titulo:t,year:s,onYearChange:i,minYear:n,maxYear:l,selectedMonth:c,selectedYear:a,onSelect:f,isMonthDisabled:g}){return r.jsxs("div",{className:"p-3 w-56",children:[r.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:t}),r.jsxs("div",{className:"flex items-center justify-center mb-2 gap-1",children:[r.jsx(d.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>i(Math.max(n,s-1)),disabled:s<=n,children:r.jsx(I.ChevronLeft,{className:"h-4 w-4"})}),r.jsx(J.Input,{type:"number",className:"w-20 text-center h-8",value:s,min:n,max:l,onChange:p=>{const h=Number(p.target.value);Number.isNaN(h)||i(h)}}),r.jsx(d.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>i(Math.min(l,s+1)),disabled:s>=l,children:r.jsx(I.ChevronRight,{className:"h-4 w-4"})})]}),r.jsx("div",{className:"grid grid-cols-3 gap-1",children:D.map((p,h)=>{const w=h+1,y=(g==null?void 0:g(s,w))??!1,e=s===a&&w===c;return r.jsx(d.Button,{type:"button",variant:e?"default":"ghost",size:"sm",className:"px-0",disabled:y,onClick:()=>f(s,w),children:p},p)})})]})}const K=u.forwardRef(({value:t,onChange:s,placeholder:i="Selecione um período",disabled:n=!1,minYear:l=2020,maxYear:c=new Date().getFullYear()+5,className:a,error:f=!1,id:g,name:p},h)=>{var O,$,q,A;const[w,y]=u.useState(!1),[e,x]=u.useState(t),[M,j]=u.useState(""),[k,m]=u.useState(!1),[T,P]=u.useState(()=>((t==null?void 0:t.from)??new Date).getFullYear()),[_,R]=u.useState(()=>((t==null?void 0:t.to)??new Date).getFullYear());u.useEffect(()=>{x(t),t!=null&&t.from&&P(t.from.getFullYear()),t!=null&&t.to&&R(t.to.getFullYear()),t!=null&&t.from&&(t!=null&&t.to)?j(`${S(t.from)} → ${S(t.to)}`):j(""),m(!1)},[t]);const V=(o,N)=>{const F=new Date(o,N-1,1),Q=e!=null&&e.to&&b(e.to.getFullYear(),e.to.getMonth()+1)>=b(o,N)?e.to:F;x({from:F,to:Q})},C=(o,N)=>{if(!(e!=null&&e.from))return;const F=new Date(o,N-1,1);x({from:e.from,to:F})},X=(o,N)=>e!=null&&e.from?b(o,N)<b(e.from.getFullYear(),e.from.getMonth()+1):!1,Z=()=>{s==null||s(e),y(!1)},z=o=>{o.stopPropagation(),x(void 0),j(""),m(!1),s==null||s(void 0)},G=o=>{n||(j(o.target.value),m(!1))},B=()=>{if(n)return;if(!M.trim()){x(void 0),s==null||s(void 0),m(!1);return}const o=tt(M);o?(x(o),P(o.from.getFullYear()),R(o.to.getFullYear()),s==null||s(o),m(!1)):m(!0)},H=o=>{o.key==="Enter"?(o.preventDefault(),B(),k||y(!0)):o.key==="Escape"&&(o.preventDefault(),t!=null&&t.from&&(t!=null&&t.to)?j(`${S(t.from)} → ${S(t.to)}`):j(""),m(!1))};return r.jsxs(Y.Popover,{open:!n&&w,onOpenChange:o=>{n||y(o)},children:[r.jsxs("div",{className:"relative w-full",children:[r.jsx(J.Input,{ref:h,id:g,name:p,value:M,onChange:G,onBlur:B,onKeyDown:H,placeholder:i,disabled:n,"aria-invalid":f||k,className:W.cn("pr-20",(f||k)&&"border-destructive focus-visible:ring-destructive/20",a)}),r.jsxs("div",{className:"absolute inset-y-0 right-0 flex items-center gap-1 pr-1",children:[M&&!n&&r.jsxs(d.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0 hover:bg-transparent",onClick:z,tabIndex:-1,children:[r.jsx(I.X,{className:"h-4 w-4 text-muted-foreground hover:text-foreground"}),r.jsx("span",{className:"sr-only",children:"Limpar"})]}),r.jsx(Y.PopoverTrigger,{asChild:!0,children:r.jsx(d.Button,{type:"button",variant:"ghost",size:"sm",className:"h-7 w-7 p-0 hover:bg-transparent",disabled:n,"aria-label":"Abrir calendário",children:r.jsx(I.CalendarIcon,{className:"h-4 w-4 text-muted-foreground"})})})]})]}),r.jsxs(Y.PopoverContent,{align:"start",className:"w-auto p-0 max-w-[calc(100vw-2rem)]",children:[r.jsxs("div",{className:"flex flex-col sm:flex-row divide-y sm:divide-y-0 sm:divide-x",children:[r.jsx(L,{titulo:"Mês inicial",year:T,onYearChange:P,minYear:l,maxYear:c,selectedYear:((O=e==null?void 0:e.from)==null?void 0:O.getFullYear())??-1,selectedMonth:((($=e==null?void 0:e.from)==null?void 0:$.getMonth())??-2)+1,onSelect:V}),r.jsx(L,{titulo:"Mês final",year:_,onYearChange:R,minYear:l,maxYear:c,selectedYear:((q=e==null?void 0:e.to)==null?void 0:q.getFullYear())??-1,selectedMonth:(((A=e==null?void 0:e.to)==null?void 0:A.getMonth())??-2)+1,onSelect:C,isMonthDisabled:X})]}),r.jsxs("div",{className:"border-t p-3 flex justify-end gap-2",children:[r.jsx(d.Button,{type:"button",variant:"outline",size:"sm",onClick:z,children:"Limpar"}),r.jsx(d.Button,{type:"button",size:"sm",disabled:!(e!=null&&e.from)||!(e!=null&&e.to),onClick:Z,children:"Confirmar"})]})]})]})});K.displayName="MonthRangePicker";exports.MonthRangePicker=K;
|
|
2
|
+
//# sourceMappingURL=month-range-picker.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-range-picker.cjs","sources":["../../../../src/components/ui/forms/month-range-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon, ChevronLeft, ChevronRight, X } from \"lucide-react\";\n\nimport { cn } from \"../utils\";\nimport { Input } from \"./input\";\nimport { Button } from \"../primitives/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../overlays/popover\";\n\nconst MESES = [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"];\n\nexport interface MonthYearRange {\n from: Date;\n to: Date;\n}\n\nexport interface MonthRangePickerProps {\n /**\n * Intervalo de meses selecionado. `from`/`to` representam o 1º dia do mês.\n */\n value?: MonthYearRange;\n /**\n * Callback quando o intervalo muda\n */\n onChange?: (range: MonthYearRange | undefined) => void;\n /**\n * Placeholder do campo\n * @default \"Selecione um período\"\n */\n placeholder?: string;\n /**\n * Desabilita o componente\n */\n disabled?: boolean;\n /**\n * Ano mínimo navegável\n * @default 2020\n */\n minYear?: number;\n /**\n * Ano máximo navegável\n * @default anoAtual + 5\n */\n maxYear?: number;\n /**\n * Classes CSS adicionais para o trigger\n */\n className?: string;\n /**\n * Estado de erro\n */\n error?: boolean;\n /**\n * ID do campo para acessibilidade\n */\n id?: string;\n /**\n * Nome do campo para formulários\n */\n name?: string;\n}\n\nfunction monthKey(year: number, month: number) {\n return year * 12 + month;\n}\n\nfunction formatMesAno(date: Date) {\n return `${MESES[date.getMonth()]}/${date.getFullYear()}`;\n}\n\nfunction parseMesAno(input: string): Date | null {\n const match = input.trim().match(/^([A-Za-zÀ-ÿ]{3,}|\\d{1,2})\\/(\\d{4})$/);\n if (!match) return null;\n\n const [, monthRaw, yearRaw] = match;\n const year = Number(yearRaw);\n if (Number.isNaN(year)) return null;\n\n let month: number;\n if (/^\\d+$/.test(monthRaw)) {\n month = Number(monthRaw);\n } else {\n const idx = MESES.findIndex((m) => m.toLowerCase() === monthRaw.toLowerCase().slice(0, 3));\n if (idx === -1) return null;\n month = idx + 1;\n }\n if (month < 1 || month > 12) return null;\n\n return new Date(year, month - 1, 1);\n}\n\nfunction parseInputRange(input: string): MonthYearRange | null {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n const separators = [\"→\", \"-\", \"até\", \"a\"];\n for (const sep of separators) {\n if (!trimmed.includes(sep)) continue;\n const parts = trimmed.split(sep).map((p) => p.trim());\n if (parts.length !== 2) continue;\n\n const from = parseMesAno(parts[0]);\n const to = parseMesAno(parts[1]);\n if (from && to) {\n // Mês final anterior ao inicial é inválido (não é corrigido silenciosamente) — dispara estado de erro no input\n if (monthKey(from.getFullYear(), from.getMonth() + 1) > monthKey(to.getFullYear(), to.getMonth() + 1)) {\n return null;\n }\n return { from, to };\n }\n }\n\n return null;\n}\n\ninterface MonthPanelProps {\n titulo: string;\n year: number;\n onYearChange: (year: number) => void;\n minYear: number;\n maxYear: number;\n selectedMonth: number;\n selectedYear: number;\n onSelect: (year: number, month: number) => void;\n isMonthDisabled?: (year: number, month: number) => boolean;\n}\n\nfunction PainelMes({\n titulo,\n year,\n onYearChange,\n minYear,\n maxYear,\n selectedMonth,\n selectedYear,\n onSelect,\n isMonthDisabled,\n}: MonthPanelProps) {\n return (\n <div className=\"p-3 w-56\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">{titulo}</p>\n <div className=\"flex items-center justify-center mb-2 gap-1\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n onClick={() => onYearChange(Math.max(minYear, year - 1))}\n disabled={year <= minYear}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Input\n type=\"number\"\n className=\"w-20 text-center h-8\"\n value={year}\n min={minYear}\n max={maxYear}\n onChange={(e) => {\n const parsed = Number(e.target.value);\n if (!Number.isNaN(parsed)) onYearChange(parsed);\n }}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0\"\n onClick={() => onYearChange(Math.min(maxYear, year + 1))}\n disabled={year >= maxYear}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-1\">\n {MESES.map((label, idx) => {\n const month = idx + 1;\n const disabled = isMonthDisabled?.(year, month) ?? false;\n const selected = year === selectedYear && month === selectedMonth;\n return (\n <Button\n key={label}\n type=\"button\"\n variant={selected ? \"default\" : \"ghost\"}\n size=\"sm\"\n className=\"px-0\"\n disabled={disabled}\n onClick={() => onSelect(year, month)}\n >\n {label}\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n\n/**\n * MonthRangePicker - Seleção de intervalo de meses (Mês/Ano Início + Mês/Ano Fim)\n *\n * @example\n * <MonthRangePicker\n * value={periodo}\n * onChange={setPeriodo}\n * placeholder=\"Selecione o período\"\n * />\n *\n * @example\n * // Digitação direta\n * // Set/2025 → Mar/2026\n * // 09/2025 - 03/2026\n */\nconst MonthRangePicker = React.forwardRef<\n React.ElementRef<typeof Input>,\n MonthRangePickerProps\n>(({\n value,\n onChange,\n placeholder = \"Selecione um período\",\n disabled = false,\n minYear = 2020,\n maxYear = new Date().getFullYear() + 5,\n className,\n error = false,\n id,\n name,\n}, ref) => {\n const [open, setOpen] = React.useState(false);\n const [pending, setPending] = React.useState<MonthYearRange | undefined>(value);\n const [inputValue, setInputValue] = React.useState(\"\");\n const [isInvalid, setIsInvalid] = React.useState(false);\n const [yearInicio, setYearInicio] = React.useState(() => (value?.from ?? new Date()).getFullYear());\n const [yearFim, setYearFim] = React.useState(() => (value?.to ?? new Date()).getFullYear());\n\n React.useEffect(() => {\n setPending(value);\n if (value?.from) setYearInicio(value.from.getFullYear());\n if (value?.to) setYearFim(value.to.getFullYear());\n\n if (value?.from && value?.to) {\n setInputValue(`${formatMesAno(value.from)} → ${formatMesAno(value.to)}`);\n } else {\n setInputValue(\"\");\n }\n setIsInvalid(false);\n }, [value]);\n\n const handleSelectInicio = (year: number, month: number) => {\n const from = new Date(year, month - 1, 1);\n const to = pending?.to && monthKey(pending.to.getFullYear(), pending.to.getMonth() + 1) >= monthKey(year, month)\n ? pending.to\n : from;\n setPending({ from, to });\n };\n\n const handleSelectFim = (year: number, month: number) => {\n if (!pending?.from) return;\n const to = new Date(year, month - 1, 1);\n setPending({ from: pending.from, to });\n };\n\n const isFimDisabled = (year: number, month: number) => {\n if (!pending?.from) return false;\n return monthKey(year, month) < monthKey(pending.from.getFullYear(), pending.from.getMonth() + 1);\n };\n\n const handleConfirm = () => {\n onChange?.(pending);\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setPending(undefined);\n setInputValue(\"\");\n setIsInvalid(false);\n onChange?.(undefined);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n setInputValue(e.target.value);\n setIsInvalid(false);\n };\n\n const handleInputBlur = () => {\n if (disabled) return;\n if (!inputValue.trim()) {\n setPending(undefined);\n onChange?.(undefined);\n setIsInvalid(false);\n return;\n }\n\n const parsed = parseInputRange(inputValue);\n if (parsed) {\n setPending(parsed);\n setYearInicio(parsed.from.getFullYear());\n setYearFim(parsed.to.getFullYear());\n onChange?.(parsed);\n setIsInvalid(false);\n } else {\n setIsInvalid(true);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleInputBlur();\n if (!isInvalid) setOpen(true);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n if (value?.from && value?.to) {\n setInputValue(`${formatMesAno(value.from)} → ${formatMesAno(value.to)}`);\n } else {\n setInputValue(\"\");\n }\n setIsInvalid(false);\n }\n };\n\n return (\n <Popover open={!disabled && open} onOpenChange={(o) => { if (!disabled) setOpen(o); }}>\n <div className=\"relative w-full\">\n <Input\n ref={ref}\n id={id}\n name={name}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n aria-invalid={error || isInvalid}\n className={cn(\n \"pr-20\",\n (error || isInvalid) && \"border-destructive focus-visible:ring-destructive/20\",\n className,\n )}\n />\n <div className=\"absolute inset-y-0 right-0 flex items-center gap-1 pr-1\">\n {inputValue && !disabled && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 hover:bg-transparent\"\n onClick={handleClear}\n tabIndex={-1}\n >\n <X className=\"h-4 w-4 text-muted-foreground hover:text-foreground\" />\n <span className=\"sr-only\">Limpar</span>\n </Button>\n )}\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-7 w-7 p-0 hover:bg-transparent\"\n disabled={disabled}\n aria-label=\"Abrir calendário\"\n >\n <CalendarIcon className=\"h-4 w-4 text-muted-foreground\" />\n </Button>\n </PopoverTrigger>\n </div>\n </div>\n <PopoverContent align=\"start\" className=\"w-auto p-0 max-w-[calc(100vw-2rem)]\">\n <div className=\"flex flex-col sm:flex-row divide-y sm:divide-y-0 sm:divide-x\">\n <PainelMes\n titulo=\"Mês inicial\"\n year={yearInicio}\n onYearChange={setYearInicio}\n minYear={minYear}\n maxYear={maxYear}\n selectedYear={pending?.from?.getFullYear() ?? -1}\n selectedMonth={(pending?.from?.getMonth() ?? -2) + 1}\n onSelect={handleSelectInicio}\n />\n <PainelMes\n titulo=\"Mês final\"\n year={yearFim}\n onYearChange={setYearFim}\n minYear={minYear}\n maxYear={maxYear}\n selectedYear={pending?.to?.getFullYear() ?? -1}\n selectedMonth={(pending?.to?.getMonth() ?? -2) + 1}\n onSelect={handleSelectFim}\n isMonthDisabled={isFimDisabled}\n />\n </div>\n <div className=\"border-t p-3 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={handleClear}>\n Limpar\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n disabled={!pending?.from || !pending?.to}\n onClick={handleConfirm}\n >\n Confirmar\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n});\n\nMonthRangePicker.displayName = \"MonthRangePicker\";\n\nexport { MonthRangePicker };\n"],"names":["MESES","monthKey","year","month","formatMesAno","date","parseMesAno","input","match","monthRaw","yearRaw","idx","m","parseInputRange","trimmed","separators","sep","parts","p","from","to","PainelMes","titulo","onYearChange","minYear","maxYear","selectedMonth","selectedYear","onSelect","isMonthDisabled","jsxs","jsx","Button","ChevronLeft","Input","e","parsed","ChevronRight","label","disabled","selected","MonthRangePicker","React","value","onChange","placeholder","className","error","id","name","ref","open","setOpen","pending","setPending","inputValue","setInputValue","isInvalid","setIsInvalid","yearInicio","setYearInicio","yearFim","setYearFim","handleSelectInicio","handleSelectFim","isFimDisabled","handleConfirm","handleClear","handleInputChange","handleInputBlur","handleInputKeyDown","Popover","cn","X","PopoverTrigger","CalendarIcon","PopoverContent","_a","_b","_c","_d"],"mappings":"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"}
|