@schandlergarcia/sf-web-components 1.9.28 → 1.9.30
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/.a4drules/features/command-center-dashboard-rule.md +6 -10
- package/.a4drules/skills/command-center-builder/SKILL.md +29 -629
- package/.a4drules/skills/command-center-builder/charts-visualization.md +136 -0
- package/.a4drules/skills/command-center-builder/completion-checklist.md +87 -0
- package/.a4drules/skills/command-center-builder/components-styling.md +97 -0
- package/.a4drules/skills/command-center-builder/data-forms-ai.md +43 -0
- package/.a4drules/skills/command-center-builder/getting-started.md +127 -0
- package/.a4drules/skills/command-center-builder/page-layout.md +143 -0
- package/.a4drules/skills/command-center-guide/SKILL.md +217 -0
- package/.a4drules/skills/command-center-project/SKILL.md +4 -4
- package/.a4drules/skills/component-library/SKILL.md +27 -1000
- package/.a4drules/skills/component-library/card-components.md +253 -0
- package/.a4drules/skills/component-library/charts.md +64 -0
- package/.a4drules/skills/component-library/chat-data.md +184 -0
- package/.a4drules/skills/component-library/common-mistakes.md +25 -0
- package/.a4drules/skills/component-library/forms-filters.md +130 -0
- package/.a4drules/skills/component-library/hero-ui.md +211 -0
- package/.a4drules/skills/component-library/ui-primitives.md +92 -0
- package/.a4drules/skills/component-library/when-to-use.md +39 -0
- package/README.md +80 -507
- package/dist/components/library/cards/ActionList.d.ts +10 -10
- package/dist/components/library/cards/ActionList.js +4 -3
- package/dist/components/library/cards/ActionList.js.map +1 -1
- package/dist/components/library/cards/ActivityCard.d.ts +5 -18
- package/dist/components/library/cards/ActivityCard.js +4 -3
- package/dist/components/library/cards/ActivityCard.js.map +1 -1
- package/dist/components/library/cards/BaseCard.d.ts +24 -30
- package/dist/components/library/cards/BaseCard.js +3 -2
- package/dist/components/library/cards/BaseCard.js.map +1 -1
- package/dist/components/library/cards/CalloutCard.d.ts +9 -11
- package/dist/components/library/cards/CalloutCard.js +3 -2
- package/dist/components/library/cards/CalloutCard.js.map +1 -1
- package/dist/components/library/cards/ChartCard.d.ts +17 -29
- package/dist/components/library/cards/ChartCard.js +14 -13
- package/dist/components/library/cards/ChartCard.js.map +1 -1
- package/dist/components/library/cards/FeedPanel.d.ts +11 -12
- package/dist/components/library/cards/FeedPanel.js +4 -3
- package/dist/components/library/cards/FeedPanel.js.map +1 -1
- package/dist/components/library/cards/ListCard.d.ts +20 -33
- package/dist/components/library/cards/ListCard.js +38 -38
- package/dist/components/library/cards/ListCard.js.map +1 -1
- package/dist/components/library/cards/MetricCard.d.ts +17 -23
- package/dist/components/library/cards/MetricCard.js +11 -10
- package/dist/components/library/cards/MetricCard.js.map +1 -1
- package/dist/components/library/cards/MetricsStrip.d.ts +11 -11
- package/dist/components/library/cards/MetricsStrip.js +1 -1
- package/dist/components/library/cards/MetricsStrip.js.map +1 -1
- package/dist/components/library/cards/SectionCard.d.ts +12 -17
- package/dist/components/library/cards/SectionCard.js +19 -18
- package/dist/components/library/cards/SectionCard.js.map +1 -1
- package/dist/components/library/cards/SemanticMetricCard.d.ts +20 -15
- package/dist/components/library/cards/SemanticMetricCardWithLoading.d.ts +7 -8
- package/dist/components/library/cards/SemanticTableCard.d.ts +18 -13
- package/dist/components/library/cards/SemanticTableCardWithLoading.d.ts +7 -8
- package/dist/components/library/cards/StatusCard.d.ts +15 -29
- package/dist/components/library/cards/StatusCard.js +17 -16
- package/dist/components/library/cards/StatusCard.js.map +1 -1
- package/dist/components/library/cards/TableCard.d.ts +23 -40
- package/dist/components/library/cards/TableCard.js +56 -56
- package/dist/components/library/cards/TableCard.js.map +1 -1
- package/dist/components/library/cards/WidgetCard.d.ts +11 -19
- package/dist/components/library/cards/WidgetCard.js +4 -4
- package/dist/components/library/cards/WidgetCard.js.map +1 -1
- package/dist/components/library/charts/D3Chart.d.ts +16 -23
- package/dist/components/library/charts/D3Chart.js.map +1 -1
- package/dist/components/library/charts/D3ChartTemplates.d.ts +3 -33
- package/dist/components/library/charts/D3ChartTemplates.js +7 -7
- package/dist/components/library/charts/D3ChartTemplates.js.map +1 -1
- package/dist/components/library/charts/GeoMap.d.ts +18 -81
- package/dist/components/library/charts/GeoMap.js +26 -28
- package/dist/components/library/charts/GeoMap.js.map +1 -1
- package/dist/components/library/chat/ChatBar.d.ts +11 -14
- package/dist/components/library/chat/ChatBar.js +3 -2
- package/dist/components/library/chat/ChatBar.js.map +1 -1
- package/dist/components/library/chat/ChatInput.d.ts +8 -9
- package/dist/components/library/chat/ChatInput.js.map +1 -1
- package/dist/components/library/chat/ChatMessage.d.ts +4 -18
- package/dist/components/library/chat/ChatMessage.js.map +1 -1
- package/dist/components/library/chat/ChatMessageList.d.ts +8 -11
- package/dist/components/library/chat/ChatMessageList.js.map +1 -1
- package/dist/components/library/chat/ChatPanel.d.ts +12 -16
- package/dist/components/library/chat/ChatPanel.js +9 -8
- package/dist/components/library/chat/ChatPanel.js.map +1 -1
- package/dist/components/library/chat/ChatSuggestions.d.ts +4 -5
- package/dist/components/library/chat/ChatSuggestions.js +3 -2
- package/dist/components/library/chat/ChatSuggestions.js.map +1 -1
- package/dist/components/library/chat/ChatToolCall.d.ts +3 -11
- package/dist/components/library/chat/ChatToolCall.js.map +1 -1
- package/dist/components/library/chat/ChatTypingIndicator.d.ts +3 -4
- package/dist/components/library/chat/ChatTypingIndicator.js +3 -2
- package/dist/components/library/chat/ChatTypingIndicator.js.map +1 -1
- package/dist/components/library/chat/ChatWelcome.d.ts +7 -9
- package/dist/components/library/chat/ChatWelcome.js +7 -6
- package/dist/components/library/chat/ChatWelcome.js.map +1 -1
- package/dist/components/library/chat/index.d.ts +0 -10
- package/dist/components/library/chat/useChatState.d.ts +11 -37
- package/dist/components/library/chat/useChatState.js +46 -63
- package/dist/components/library/chat/useChatState.js.map +1 -1
- package/dist/components/library/data/DataModeProvider.d.ts +11 -15
- package/dist/components/library/data/DataModeProvider.js +9 -9
- package/dist/components/library/data/DataModeProvider.js.map +1 -1
- package/dist/components/library/data/DataModeToggle.d.ts +3 -4
- package/dist/components/library/data/DataModeToggle.js +5 -4
- package/dist/components/library/data/DataModeToggle.js.map +1 -1
- package/dist/components/library/data/chartDataProvider.d.ts +3 -41
- package/dist/components/library/data/filterUtils.d.ts +9 -38
- package/dist/components/library/data/filterUtils.js.map +1 -1
- package/dist/components/library/data/useDataSource.d.ts +4 -6
- package/dist/components/library/data/useDataSource.js.map +1 -1
- package/dist/components/library/data/usePageFilters.d.ts +5 -31
- package/dist/components/library/data/usePageFilters.js +2 -6
- package/dist/components/library/data/usePageFilters.js.map +1 -1
- package/dist/components/library/filters/FilterBar.d.ts +8 -18
- package/dist/components/library/filters/FilterBar.js +3 -2
- package/dist/components/library/filters/FilterBar.js.map +1 -1
- package/dist/components/library/filters/SearchFilter.d.ts +6 -7
- package/dist/components/library/filters/SearchFilter.js +3 -2
- package/dist/components/library/filters/SearchFilter.js.map +1 -1
- package/dist/components/library/filters/SelectFilter.d.ts +7 -13
- package/dist/components/library/filters/SelectFilter.js +3 -2
- package/dist/components/library/filters/SelectFilter.js.map +1 -1
- package/dist/components/library/filters/ToggleFilter.d.ts +5 -7
- package/dist/components/library/filters/ToggleFilter.js +3 -2
- package/dist/components/library/filters/ToggleFilter.js.map +1 -1
- package/dist/components/library/forms/FormField.d.ts +8 -10
- package/dist/components/library/forms/FormField.js +4 -3
- package/dist/components/library/forms/FormField.js.map +1 -1
- package/dist/components/library/forms/FormModal.d.ts +14 -23
- package/dist/components/library/forms/FormModal.js.map +1 -1
- package/dist/components/library/forms/FormRenderer.d.ts +9 -29
- package/dist/components/library/forms/FormRenderer.js +7 -6
- package/dist/components/library/forms/FormRenderer.js.map +1 -1
- package/dist/components/library/forms/FormSection.d.ts +8 -10
- package/dist/components/library/forms/FormSection.js +3 -2
- package/dist/components/library/forms/FormSection.js.map +1 -1
- package/dist/components/library/forms/index.d.ts +0 -5
- package/dist/components/library/forms/useFormState.d.ts +15 -23
- package/dist/components/library/forms/useFormState.js +47 -53
- package/dist/components/library/forms/useFormState.js.map +1 -1
- package/dist/components/library/heroui/Accordion.d.ts +5 -6
- package/dist/components/library/heroui/Accordion.js +8 -7
- package/dist/components/library/heroui/Accordion.js.map +1 -1
- package/dist/components/library/heroui/Alert.d.ts +5 -6
- package/dist/components/library/heroui/Alert.js +8 -7
- package/dist/components/library/heroui/Alert.js.map +1 -1
- package/dist/components/library/heroui/Badge.d.ts +5 -8
- package/dist/components/library/heroui/Badge.js +3 -2
- package/dist/components/library/heroui/Badge.js.map +1 -1
- package/dist/components/library/heroui/Breadcrumbs.d.ts +2 -5
- package/dist/components/library/heroui/Breadcrumbs.js +5 -4
- package/dist/components/library/heroui/Breadcrumbs.js.map +1 -1
- package/dist/components/library/heroui/Button.d.ts +26 -16
- package/dist/components/library/heroui/Button.js +22 -21
- package/dist/components/library/heroui/Button.js.map +1 -1
- package/dist/components/library/heroui/Card.d.ts +5 -8
- package/dist/components/library/heroui/Card.js +7 -6
- package/dist/components/library/heroui/Card.js.map +1 -1
- package/dist/components/library/heroui/Collapsible.d.ts +30 -19
- package/dist/components/library/heroui/Collapsible.js +17 -13
- package/dist/components/library/heroui/Collapsible.js.map +1 -1
- package/dist/components/library/heroui/DatePicker.d.ts +52 -24
- package/dist/components/library/heroui/DatePicker.js +6 -5
- package/dist/components/library/heroui/DatePicker.js.map +1 -1
- package/dist/components/library/heroui/Dialog.d.ts +32 -18
- package/dist/components/library/heroui/Dialog.js +7 -6
- package/dist/components/library/heroui/Dialog.js.map +1 -1
- package/dist/components/library/heroui/Drawer.d.ts +2 -6
- package/dist/components/library/heroui/Drawer.js +3 -2
- package/dist/components/library/heroui/Drawer.js.map +1 -1
- package/dist/components/library/heroui/Dropdown.d.ts +2 -6
- package/dist/components/library/heroui/Dropdown.js +3 -2
- package/dist/components/library/heroui/Dropdown.js.map +1 -1
- package/dist/components/library/heroui/Field.d.ts +38 -19
- package/dist/components/library/heroui/Field.js +10 -9
- package/dist/components/library/heroui/Field.js.map +1 -1
- package/dist/components/library/heroui/Input.d.ts +1 -5
- package/dist/components/library/heroui/Input.js +1 -0
- package/dist/components/library/heroui/Input.js.map +1 -1
- package/dist/components/library/heroui/Kbd.d.ts +5 -6
- package/dist/components/library/heroui/Kbd.js +5 -4
- package/dist/components/library/heroui/Kbd.js.map +1 -1
- package/dist/components/library/heroui/Meter.d.ts +5 -7
- package/dist/components/library/heroui/Meter.js +5 -4
- package/dist/components/library/heroui/Meter.js.map +1 -1
- package/dist/components/library/heroui/Modal.d.ts +2 -6
- package/dist/components/library/heroui/Modal.js +3 -2
- package/dist/components/library/heroui/Modal.js.map +1 -1
- package/dist/components/library/heroui/Pagination.d.ts +2 -6
- package/dist/components/library/heroui/Pagination.js +5 -4
- package/dist/components/library/heroui/Pagination.js.map +1 -1
- package/dist/components/library/heroui/Popover.d.ts +40 -23
- package/dist/components/library/heroui/Popover.js +20 -20
- package/dist/components/library/heroui/Popover.js.map +1 -1
- package/dist/components/library/heroui/ProgressBar.d.ts +5 -8
- package/dist/components/library/heroui/ProgressBar.js +1 -0
- package/dist/components/library/heroui/ProgressBar.js.map +1 -1
- package/dist/components/library/heroui/ProgressCircle.d.ts +5 -8
- package/dist/components/library/heroui/ProgressCircle.js +1 -0
- package/dist/components/library/heroui/ProgressCircle.js.map +1 -1
- package/dist/components/library/heroui/ScrollShadow.d.ts +5 -8
- package/dist/components/library/heroui/ScrollShadow.js +4 -3
- package/dist/components/library/heroui/ScrollShadow.js.map +1 -1
- package/dist/components/library/heroui/Select.d.ts +37 -31
- package/dist/components/library/heroui/Select.js +11 -8
- package/dist/components/library/heroui/Select.js.map +1 -1
- package/dist/components/library/heroui/Separator.d.ts +2 -6
- package/dist/components/library/heroui/Separator.js +5 -4
- package/dist/components/library/heroui/Separator.js.map +1 -1
- package/dist/components/library/heroui/Skeleton.d.ts +5 -8
- package/dist/components/library/heroui/Skeleton.js +5 -4
- package/dist/components/library/heroui/Skeleton.js.map +1 -1
- package/dist/components/library/heroui/Tabs.d.ts +5 -6
- package/dist/components/library/heroui/Tabs.js +8 -7
- package/dist/components/library/heroui/Tabs.js.map +1 -1
- package/dist/components/library/heroui/Toast.d.ts +3 -6
- package/dist/components/library/heroui/Toast.js +4 -3
- package/dist/components/library/heroui/Toast.js.map +1 -1
- package/dist/components/library/heroui/Toggle.d.ts +4 -5
- package/dist/components/library/heroui/Toggle.js +6 -5
- package/dist/components/library/heroui/Toggle.js.map +1 -1
- package/dist/components/library/heroui/Tooltip.d.ts +2 -6
- package/dist/components/library/heroui/Tooltip.js +3 -2
- package/dist/components/library/heroui/Tooltip.js.map +1 -1
- package/dist/components/library/index.d.ts +98 -129
- package/dist/components/library/index.js +57 -41
- package/dist/components/library/index.js.map +1 -1
- package/dist/components/library/layout/PageContainer.d.ts +4 -6
- package/dist/components/library/layout/PageContainer.js +5 -4
- package/dist/components/library/layout/PageContainer.js.map +1 -1
- package/dist/components/library/skeletons/CardSkeleton.d.ts +4 -5
- package/dist/components/library/skeletons/CardSkeleton.js +3 -2
- package/dist/components/library/skeletons/CardSkeleton.js.map +1 -1
- package/dist/components/library/theme/AppThemeProvider.d.ts +50 -13
- package/dist/components/library/theme/AppThemeProvider.js +4 -4
- package/dist/components/library/theme/AppThemeProvider.js.map +1 -1
- package/dist/components/library/theme/tokens.d.ts +44 -45
- package/dist/components/library/theme/tokens.js.map +1 -1
- package/dist/components/library/ui/Alert.d.ts +21 -0
- package/dist/components/library/ui/{alert.js → Alert.js} +14 -13
- package/dist/components/library/ui/Alert.js.map +1 -0
- package/dist/components/library/ui/Avatar.d.ts +10 -22
- package/dist/components/library/ui/Avatar.js +16 -39
- package/dist/components/library/ui/Avatar.js.map +1 -1
- package/dist/components/library/ui/BreadcrumbExtras.d.ts +2 -1
- package/dist/components/library/ui/Button.d.ts +10 -9
- package/dist/components/library/ui/{UIButton.js → Button.js} +31 -26
- package/dist/components/library/ui/Button.js.map +1 -0
- package/dist/components/library/ui/Card.d.ts +37 -23
- package/dist/components/library/ui/{card.js → Card.js} +26 -24
- package/dist/components/library/ui/Card.js.map +1 -0
- package/dist/components/library/ui/Checkbox.d.ts +4 -0
- package/dist/components/library/ui/{checkbox.js → Checkbox.js} +5 -4
- package/dist/components/library/ui/Checkbox.js.map +1 -0
- package/dist/components/library/ui/Chip.d.ts +7 -18
- package/dist/components/library/ui/Chip.js +12 -11
- package/dist/components/library/ui/Chip.js.map +1 -1
- package/dist/components/library/ui/{collapsible.d.ts → Collapsible.d.ts} +1 -1
- package/dist/components/library/ui/Container.d.ts +13 -12
- package/dist/components/library/ui/Container.js +17 -16
- package/dist/components/library/ui/Container.js.map +1 -1
- package/dist/components/library/ui/{dialog.d.ts → Dialog.d.ts} +1 -1
- package/dist/components/library/ui/EmptyState.d.ts +7 -34
- package/dist/components/library/ui/EmptyState.js +6 -5
- package/dist/components/library/ui/EmptyState.js.map +1 -1
- package/dist/components/library/ui/FieldGroup.d.ts +5 -4
- package/dist/components/library/ui/FieldGroup.js +5 -4
- package/dist/components/library/ui/FieldGroup.js.map +1 -1
- package/dist/components/library/ui/Input.d.ts +5 -3
- package/dist/components/library/ui/{UIInput.js → Input.js} +7 -6
- package/dist/components/library/ui/Input.js.map +1 -0
- package/dist/components/library/ui/Label.d.ts +7 -0
- package/dist/components/library/ui/Label.js +23 -0
- package/dist/components/library/ui/Label.js.map +1 -0
- package/dist/components/library/ui/PaginationExtras.d.ts +2 -1
- package/dist/components/library/ui/{popover.d.ts → Popover.d.ts} +1 -1
- package/dist/components/library/ui/{select.d.ts → Select.d.ts} +1 -1
- package/dist/components/library/ui/Spinner.d.ts +5 -21
- package/dist/components/library/ui/{spinner.js → Spinner.js} +17 -16
- package/dist/components/library/ui/Spinner.js.map +1 -0
- package/dist/components/library/ui/Text.d.ts +10 -24
- package/dist/components/library/ui/Text.js +23 -20
- package/dist/components/library/ui/Text.js.map +1 -1
- package/dist/components/library/ui/Toggle.d.ts +5 -0
- package/dist/components/library/ui/Toggle.js +47 -0
- package/dist/components/library/ui/Toggle.js.map +1 -0
- package/dist/components/workspace/ComponentRegistry.d.ts +140 -116
- package/dist/components/workspace/ComponentRegistry.js +46 -46
- package/dist/components/workspace/ComponentRegistry.js.map +1 -1
- package/dist/index.js +241 -229
- package/dist/index.js.map +1 -1
- package/dist/styles/base.css +0 -8
- package/package.json +14 -21
- package/scripts/reset-command-center.sh +181 -202
- package/scripts/validate-dashboard.sh +21 -30
- package/INSTALL.md +0 -200
- package/dist/components/library/ui/BreadcrumbExtras.js +0 -109
- package/dist/components/library/ui/BreadcrumbExtras.js.map +0 -1
- package/dist/components/library/ui/PaginationExtras.js +0 -138
- package/dist/components/library/ui/PaginationExtras.js.map +0 -1
- package/dist/components/library/ui/UIButton.d.ts +0 -22
- package/dist/components/library/ui/UIButton.js.map +0 -1
- package/dist/components/library/ui/UIInput.d.ts +0 -4
- package/dist/components/library/ui/UIInput.js.map +0 -1
- package/dist/components/library/ui/alert.d.ts +0 -23
- package/dist/components/library/ui/alert.js.map +0 -1
- package/dist/components/library/ui/badge.d.ts +0 -9
- package/dist/components/library/ui/badge.js +0 -43
- package/dist/components/library/ui/badge.js.map +0 -1
- package/dist/components/library/ui/breadcrumb.d.ts +0 -11
- package/dist/components/library/ui/breadcrumb.js +0 -103
- package/dist/components/library/ui/breadcrumb.js.map +0 -1
- package/dist/components/library/ui/button.js +0 -56
- package/dist/components/library/ui/button.js.map +0 -1
- package/dist/components/library/ui/calendar.d.ts +0 -10
- package/dist/components/library/ui/calendar.js +0 -187
- package/dist/components/library/ui/calendar.js.map +0 -1
- package/dist/components/library/ui/card.js.map +0 -1
- package/dist/components/library/ui/checkbox.d.ts +0 -4
- package/dist/components/library/ui/checkbox.js.map +0 -1
- package/dist/components/library/ui/collapsible.js +0 -29
- package/dist/components/library/ui/collapsible.js.map +0 -1
- package/dist/components/library/ui/datePicker.js +0 -25
- package/dist/components/library/ui/datePicker.js.map +0 -1
- package/dist/components/library/ui/dialog.js +0 -137
- package/dist/components/library/ui/dialog.js.map +0 -1
- package/dist/components/library/ui/field.js +0 -78
- package/dist/components/library/ui/field.js.map +0 -1
- package/dist/components/library/ui/input.js +0 -20
- package/dist/components/library/ui/input.js.map +0 -1
- package/dist/components/library/ui/label.d.ts +0 -5
- package/dist/components/library/ui/label.js +0 -22
- package/dist/components/library/ui/label.js.map +0 -1
- package/dist/components/library/ui/pagination.d.ts +0 -17
- package/dist/components/library/ui/pagination.js +0 -126
- package/dist/components/library/ui/pagination.js.map +0 -1
- package/dist/components/library/ui/popover.js +0 -35
- package/dist/components/library/ui/popover.js.map +0 -1
- package/dist/components/library/ui/select.js +0 -106
- package/dist/components/library/ui/select.js.map +0 -1
- package/dist/components/library/ui/separator.d.ts +0 -4
- package/dist/components/library/ui/separator.js +0 -27
- package/dist/components/library/ui/separator.js.map +0 -1
- package/dist/components/library/ui/shadcn-exports.d.ts +0 -22
- package/dist/components/library/ui/skeleton.d.ts +0 -3
- package/dist/components/library/ui/skeleton.js +0 -16
- package/dist/components/library/ui/skeleton.js.map +0 -1
- package/dist/components/library/ui/sonner.d.ts +0 -15
- package/dist/components/library/ui/sonner.js +0 -11
- package/dist/components/library/ui/sonner.js.map +0 -1
- package/dist/components/library/ui/spinner.js.map +0 -1
- package/dist/components/library/ui/table.d.ts +0 -10
- package/dist/components/library/ui/table.js +0 -115
- package/dist/components/library/ui/table.js.map +0 -1
- package/dist/components/library/ui/tabs.d.ts +0 -11
- package/dist/components/library/ui/tabs.js +0 -91
- package/dist/components/library/ui/tabs.js.map +0 -1
- package/dist/node_modules/@date-fns/tz/date/index.js +0 -62
- package/dist/node_modules/@date-fns/tz/date/index.js.map +0 -1
- package/dist/node_modules/@date-fns/tz/date/mini.js +0 -70
- package/dist/node_modules/@date-fns/tz/date/mini.js.map +0 -1
- package/dist/node_modules/@date-fns/tz/tzName/index.js +0 -12
- package/dist/node_modules/@date-fns/tz/tzName/index.js.map +0 -1
- package/dist/node_modules/@date-fns/tz/tzOffset/index.js +0 -23
- package/dist/node_modules/@date-fns/tz/tzOffset/index.js.map +0 -1
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +0 -533
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +0 -1
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +0 -404
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +0 -233
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +0 -137
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +0 -1
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +0 -129
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +0 -1
- package/dist/node_modules/@radix-ui/number/dist/index.js +0 -7
- package/dist/node_modules/@radix-ui/number/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/primitive/dist/index.js +0 -10
- package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +0 -25
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js +0 -252
- package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +0 -120
- package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collection/dist/index.js +0 -51
- package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +0 -30
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +0 -258
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.js +0 -69
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-direction/dist/index.js +0 -11
- package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +0 -128
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.js +0 -37
- package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +0 -18
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +0 -137
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-id/dist/index.js +0 -14
- package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-label/dist/index.js +0 -20
- package/dist/node_modules/@radix-ui/react-label/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/dist/index.js +0 -240
- package/dist/node_modules/@radix-ui/react-popover/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popper/dist/index.js +0 -220
- package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-portal/dist/index.js +0 -16
- package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-presence/dist/index.js +0 -71
- package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +0 -184
- package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-select/dist/index.js +0 -844
- package/dist/node_modules/@radix-ui/react-select/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-separator/dist/index.js +0 -25
- package/dist/node_modules/@radix-ui/react-separator/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-tabs/dist/index.js +0 -164
- package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context/dist/index.js +0 -54
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +0 -11
- package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +0 -53
- package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +0 -15
- package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +0 -7
- package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +0 -9
- package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +0 -28
- package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +0 -31
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive/dist/index.js +0 -33
- package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -1
- package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot/dist/index.js +0 -50
- package/dist/node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/aria-hidden/dist/es2015/index.js +0 -53
- package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +0 -1
- package/dist/node_modules/class-variance-authority/dist/index.js +0 -36
- package/dist/node_modules/class-variance-authority/dist/index.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +0 -8
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/defaultOptions.js +0 -8
- package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/format/formatters.js +0 -549
- package/dist/node_modules/date-fns/_lib/format/formatters.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +0 -59
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js +0 -50
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +0 -19
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/normalizeDates.js +0 -12
- package/dist/node_modules/date-fns/_lib/normalizeDates.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/normalizeInterval.js +0 -9
- package/dist/node_modules/date-fns/_lib/normalizeInterval.js.map +0 -1
- package/dist/node_modules/date-fns/_lib/protectedTokens.js +0 -21
- package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +0 -1
- package/dist/node_modules/date-fns/addDays.js +0 -10
- package/dist/node_modules/date-fns/addDays.js.map +0 -1
- package/dist/node_modules/date-fns/addMonths.js +0 -20
- package/dist/node_modules/date-fns/addMonths.js.map +0 -1
- package/dist/node_modules/date-fns/addWeeks.js +0 -8
- package/dist/node_modules/date-fns/addWeeks.js.map +0 -1
- package/dist/node_modules/date-fns/addYears.js +0 -8
- package/dist/node_modules/date-fns/addYears.js.map +0 -1
- package/dist/node_modules/date-fns/constants.js +0 -7
- package/dist/node_modules/date-fns/constants.js.map +0 -1
- package/dist/node_modules/date-fns/constructFrom.js +0 -8
- package/dist/node_modules/date-fns/constructFrom.js.map +0 -1
- package/dist/node_modules/date-fns/differenceInCalendarDays.js +0 -16
- package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +0 -1
- package/dist/node_modules/date-fns/differenceInCalendarMonths.js +0 -13
- package/dist/node_modules/date-fns/differenceInCalendarMonths.js.map +0 -1
- package/dist/node_modules/date-fns/eachMonthOfInterval.js +0 -17
- package/dist/node_modules/date-fns/eachMonthOfInterval.js.map +0 -1
- package/dist/node_modules/date-fns/eachYearOfInterval.js +0 -17
- package/dist/node_modules/date-fns/eachYearOfInterval.js.map +0 -1
- package/dist/node_modules/date-fns/endOfISOWeek.js +0 -8
- package/dist/node_modules/date-fns/endOfISOWeek.js.map +0 -1
- package/dist/node_modules/date-fns/endOfMonth.js +0 -9
- package/dist/node_modules/date-fns/endOfMonth.js.map +0 -1
- package/dist/node_modules/date-fns/endOfWeek.js +0 -10
- package/dist/node_modules/date-fns/endOfWeek.js.map +0 -1
- package/dist/node_modules/date-fns/endOfYear.js +0 -9
- package/dist/node_modules/date-fns/endOfYear.js.map +0 -1
- package/dist/node_modules/date-fns/format.js +0 -58
- package/dist/node_modules/date-fns/format.js.map +0 -1
- package/dist/node_modules/date-fns/getDayOfYear.js +0 -11
- package/dist/node_modules/date-fns/getDayOfYear.js.map +0 -1
- package/dist/node_modules/date-fns/getDaysInMonth.js +0 -10
- package/dist/node_modules/date-fns/getDaysInMonth.js.map +0 -1
- package/dist/node_modules/date-fns/getISOWeek.js +0 -12
- package/dist/node_modules/date-fns/getISOWeek.js.map +0 -1
- package/dist/node_modules/date-fns/getISOWeekYear.js +0 -15
- package/dist/node_modules/date-fns/getISOWeekYear.js.map +0 -1
- package/dist/node_modules/date-fns/getMonth.js +0 -8
- package/dist/node_modules/date-fns/getMonth.js.map +0 -1
- package/dist/node_modules/date-fns/getWeek.js +0 -12
- package/dist/node_modules/date-fns/getWeek.js.map +0 -1
- package/dist/node_modules/date-fns/getWeekYear.js +0 -16
- package/dist/node_modules/date-fns/getWeekYear.js.map +0 -1
- package/dist/node_modules/date-fns/getYear.js +0 -8
- package/dist/node_modules/date-fns/getYear.js.map +0 -1
- package/dist/node_modules/date-fns/isAfter.js +0 -8
- package/dist/node_modules/date-fns/isAfter.js.map +0 -1
- package/dist/node_modules/date-fns/isBefore.js +0 -8
- package/dist/node_modules/date-fns/isBefore.js.map +0 -1
- package/dist/node_modules/date-fns/isDate.js +0 -7
- package/dist/node_modules/date-fns/isDate.js.map +0 -1
- package/dist/node_modules/date-fns/isSameDay.js +0 -14
- package/dist/node_modules/date-fns/isSameDay.js.map +0 -1
- package/dist/node_modules/date-fns/isSameMonth.js +0 -13
- package/dist/node_modules/date-fns/isSameMonth.js.map +0 -1
- package/dist/node_modules/date-fns/isSameYear.js +0 -13
- package/dist/node_modules/date-fns/isSameYear.js.map +0 -1
- package/dist/node_modules/date-fns/isValid.js +0 -9
- package/dist/node_modules/date-fns/isValid.js.map +0 -1
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -10
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -19
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -32
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -16
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -71
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -34
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -12
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -156
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +0 -111
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
- package/dist/node_modules/date-fns/locale/en-US.js +0 -21
- package/dist/node_modules/date-fns/locale/en-US.js.map +0 -1
- package/dist/node_modules/date-fns/max.js +0 -14
- package/dist/node_modules/date-fns/max.js.map +0 -1
- package/dist/node_modules/date-fns/min.js +0 -14
- package/dist/node_modules/date-fns/min.js.map +0 -1
- package/dist/node_modules/date-fns/setMonth.js +0 -13
- package/dist/node_modules/date-fns/setMonth.js.map +0 -1
- package/dist/node_modules/date-fns/setYear.js +0 -10
- package/dist/node_modules/date-fns/setYear.js.map +0 -1
- package/dist/node_modules/date-fns/startOfDay.js +0 -9
- package/dist/node_modules/date-fns/startOfDay.js.map +0 -1
- package/dist/node_modules/date-fns/startOfISOWeek.js +0 -8
- package/dist/node_modules/date-fns/startOfISOWeek.js.map +0 -1
- package/dist/node_modules/date-fns/startOfISOWeekYear.js +0 -11
- package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +0 -1
- package/dist/node_modules/date-fns/startOfMonth.js +0 -9
- package/dist/node_modules/date-fns/startOfMonth.js.map +0 -1
- package/dist/node_modules/date-fns/startOfWeek.js +0 -10
- package/dist/node_modules/date-fns/startOfWeek.js.map +0 -1
- package/dist/node_modules/date-fns/startOfWeekYear.js +0 -12
- package/dist/node_modules/date-fns/startOfWeekYear.js.map +0 -1
- package/dist/node_modules/date-fns/startOfYear.js +0 -9
- package/dist/node_modules/date-fns/startOfYear.js.map +0 -1
- package/dist/node_modules/date-fns/toDate.js +0 -8
- package/dist/node_modules/date-fns/toDate.js.map +0 -1
- package/dist/node_modules/get-nonce/dist/es2015/index.js +0 -8
- package/dist/node_modules/get-nonce/dist/es2015/index.js.map +0 -1
- package/dist/node_modules/radix-ui/node_modules/@radix-ui/react-slot/dist/index.js +0 -53
- package/dist/node_modules/radix-ui/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js +0 -235
- package/dist/node_modules/react-day-picker/dist/esm/DayPicker.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/UI.js +0 -23
- package/dist/node_modules/react-day-picker/dist/esm/UI.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js +0 -20
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarDay.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js +0 -149
- package/dist/node_modules/react-day-picker/dist/esm/classes/DateLib.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Button.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Button.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/CaptionLabel.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js +0 -19
- package/dist/node_modules/react-day-picker/dist/esm/components/Chevron.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Day.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/Day.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js +0 -11
- package/dist/node_modules/react-day-picker/dist/esm/components/DayButton.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js +0 -20
- package/dist/node_modules/react-day-picker/dist/esm/components/Dropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/DropdownNav.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Footer.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Month.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/Month.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthCaption.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthGrid.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Months.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Months.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js +0 -28
- package/dist/node_modules/react-day-picker/dist/esm/components/Nav.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/components/NextMonthButton.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Option.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Option.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Root.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/Root.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Select.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Select.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Week.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/Week.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumber.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Weekday.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js +0 -12
- package/dist/node_modules/react-day-picker/dist/esm/components/Weekdays.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/components/Weeks.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/components/YearsDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js +0 -55
- package/dist/node_modules/react-day-picker/dist/esm/components/custom-components.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatCaption.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatDay.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js +0 -19
- package/dist/node_modules/react-day-picker/dist/esm/formatters/index.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js +0 -20
- package/dist/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js +0 -43
- package/dist/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js +0 -11
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getComponents.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js +0 -17
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js +0 -20
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDates.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js +0 -11
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDays.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js +0 -17
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js +0 -14
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js +0 -16
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js +0 -11
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getFormatters.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js +0 -14
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js +0 -35
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getLabels.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js +0 -14
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js +0 -25
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getMonths.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js +0 -14
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js +0 -13
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js +0 -13
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js +0 -13
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js +0 -14
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js +0 -12
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getWeeks.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js +0 -17
- package/dist/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/index.js +0 -27
- package/dist/node_modules/react-day-picker/dist/esm/labels/index.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js +0 -11
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelDayButton.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelGrid.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelGridcell.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelNav.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelNext.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelPrevious.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js +0 -8
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelWeekday.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js +0 -7
- package/dist/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js +0 -38
- package/dist/node_modules/react-day-picker/dist/esm/locale/en-US.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js +0 -105
- package/dist/node_modules/react-day-picker/dist/esm/noonDateLib.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js +0 -22
- package/dist/node_modules/react-day-picker/dist/esm/selection/useMulti.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js +0 -24
- package/dist/node_modules/react-day-picker/dist/esm/selection/useRange.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js +0 -16
- package/dist/node_modules/react-day-picker/dist/esm/selection/useSingle.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js +0 -57
- package/dist/node_modules/react-day-picker/dist/esm/useAnimation.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js +0 -76
- package/dist/node_modules/react-day-picker/dist/esm/useCalendar.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js +0 -13
- package/dist/node_modules/react-day-picker/dist/esm/useDayPicker.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/useFocus.js +0 -24
- package/dist/node_modules/react-day-picker/dist/esm/useFocus.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/useSelection.js +0 -20
- package/dist/node_modules/react-day-picker/dist/esm/useSelection.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js +0 -33
- package/dist/node_modules/react-day-picker/dist/esm/utils/addToRange.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js +0 -27
- package/dist/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js +0 -27
- package/dist/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js +0 -16
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js +0 -29
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js +0 -10
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js +0 -9
- package/dist/node_modules/react-day-picker/dist/esm/utils/toTimeZone.js.map +0 -1
- package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js +0 -27
- package/dist/node_modules/react-day-picker/dist/esm/utils/typeguards.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +0 -12
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +0 -116
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +0 -32
- package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +0 -17
- package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +0 -69
- package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +0 -6
- package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +0 -1
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +0 -8
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +0 -1
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +0 -72
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +0 -1
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +0 -8
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +0 -1
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +0 -26
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +0 -1
- package/dist/node_modules/react-style-singleton/dist/es2015/component.js +0 -12
- package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +0 -1
- package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +0 -16
- package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +0 -1
- package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +0 -31
- package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +0 -1
- package/dist/node_modules/sonner/dist/index.js +0 -265
- package/dist/node_modules/sonner/dist/index.js.map +0 -1
- package/dist/node_modules/tslib/tslib.es6.js +0 -28
- package/dist/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +0 -7
- package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +0 -1
- package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +0 -27
- package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +0 -1
- package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +0 -26
- package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +0 -1
- package/dist/node_modules/use-sidecar/dist/es2015/exports.js +0 -19
- package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +0 -1
- package/dist/node_modules/use-sidecar/dist/es2015/medium.js +0 -68
- package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +0 -1
- package/dist/types/conversation.d.ts +0 -44
- package/scripts/convert-to-typescript.sh +0 -52
- package/scripts/postinstall.mjs +0 -368
- package/scripts/remove-local-components.mjs +0 -78
- package/src/components/library/cards/ActionList.tsx +0 -42
- package/src/components/library/cards/ActivityCard.tsx +0 -85
- package/src/components/library/cards/BaseCard.tsx +0 -136
- package/src/components/library/cards/CalloutCard.tsx +0 -39
- package/src/components/library/cards/ChartCard.tsx +0 -131
- package/src/components/library/cards/FeedPanel.tsx +0 -50
- package/src/components/library/cards/ListCard.tsx +0 -229
- package/src/components/library/cards/MetricCard.tsx +0 -128
- package/src/components/library/cards/MetricsStrip.tsx +0 -88
- package/src/components/library/cards/SectionCard.tsx +0 -102
- package/src/components/library/cards/SemanticMetricCard.tsx +0 -64
- package/src/components/library/cards/SemanticMetricCardWithLoading.tsx +0 -29
- package/src/components/library/cards/SemanticTableCard.tsx +0 -59
- package/src/components/library/cards/SemanticTableCardWithLoading.tsx +0 -26
- package/src/components/library/cards/StatusCard.tsx +0 -269
- package/src/components/library/cards/TableCard.tsx +0 -376
- package/src/components/library/cards/WidgetCard.tsx +0 -113
- package/src/components/library/charts/D3Chart.tsx +0 -129
- package/src/components/library/charts/D3ChartTemplates.tsx +0 -158
- package/src/components/library/charts/GeoMap.tsx +0 -382
- package/src/components/library/chat/ChatBar.tsx +0 -267
- package/src/components/library/chat/ChatInput.tsx +0 -91
- package/src/components/library/chat/ChatMessage.tsx +0 -191
- package/src/components/library/chat/ChatMessageList.tsx +0 -75
- package/src/components/library/chat/ChatPanel.tsx +0 -100
- package/src/components/library/chat/ChatSuggestions.tsx +0 -29
- package/src/components/library/chat/ChatToolCall.tsx +0 -110
- package/src/components/library/chat/ChatTypingIndicator.tsx +0 -26
- package/src/components/library/chat/ChatWelcome.tsx +0 -45
- package/src/components/library/chat/index.tsx +0 -26
- package/src/components/library/chat/useChatState.tsx +0 -182
- package/src/components/library/data/DataModeProvider.tsx +0 -84
- package/src/components/library/data/DataModeToggle.tsx +0 -39
- package/src/components/library/data/chartDataProvider.tsx +0 -105
- package/src/components/library/data/filterUtils.tsx +0 -187
- package/src/components/library/data/useDataSource.tsx +0 -40
- package/src/components/library/data/usePageFilters.tsx +0 -139
- package/src/components/library/filters/FilterBar.tsx +0 -105
- package/src/components/library/filters/SearchFilter.tsx +0 -42
- package/src/components/library/filters/SelectFilter.tsx +0 -62
- package/src/components/library/filters/ToggleFilter.tsx +0 -53
- package/src/components/library/filters/index.ts +0 -4
- package/src/components/library/forms/FormField.tsx +0 -337
- package/src/components/library/forms/FormModal.tsx +0 -202
- package/src/components/library/forms/FormRenderer.tsx +0 -68
- package/src/components/library/forms/FormSection.tsx +0 -75
- package/src/components/library/forms/index.tsx +0 -11
- package/src/components/library/forms/useFormState.tsx +0 -185
- package/src/components/library/heroui/Accordion.tsx +0 -31
- package/src/components/library/heroui/Alert.tsx +0 -13
- package/src/components/library/heroui/Badge.tsx +0 -14
- package/src/components/library/heroui/Breadcrumbs.tsx +0 -25
- package/src/components/library/heroui/Button.tsx +0 -76
- package/src/components/library/heroui/Card.tsx +0 -14
- package/src/components/library/heroui/Collapsible.tsx +0 -62
- package/src/components/library/heroui/DatePicker.tsx +0 -58
- package/src/components/library/heroui/Dialog.tsx +0 -43
- package/src/components/library/heroui/Drawer.tsx +0 -36
- package/src/components/library/heroui/Dropdown.tsx +0 -32
- package/src/components/library/heroui/Field.tsx +0 -68
- package/src/components/library/heroui/Input.tsx +0 -10
- package/src/components/library/heroui/Kbd.tsx +0 -11
- package/src/components/library/heroui/Meter.tsx +0 -13
- package/src/components/library/heroui/Modal.tsx +0 -35
- package/src/components/library/heroui/Pagination.tsx +0 -11
- package/src/components/library/heroui/Popover.tsx +0 -95
- package/src/components/library/heroui/ProgressBar.tsx +0 -14
- package/src/components/library/heroui/ProgressCircle.tsx +0 -14
- package/src/components/library/heroui/ScrollShadow.tsx +0 -14
- package/src/components/library/heroui/Select.tsx +0 -73
- package/src/components/library/heroui/Separator.tsx +0 -11
- package/src/components/library/heroui/Skeleton.tsx +0 -14
- package/src/components/library/heroui/Tabs.tsx +0 -31
- package/src/components/library/heroui/Toast.tsx +0 -28
- package/src/components/library/heroui/Toggle.tsx +0 -18
- package/src/components/library/heroui/Tooltip.tsx +0 -24
- package/src/components/library/index.ts +0 -147
- package/src/components/library/layout/PageContainer.tsx +0 -14
- package/src/components/library/skeletons/CardSkeleton.tsx +0 -31
- package/src/components/library/theme/AppThemeProvider.tsx +0 -80
- package/src/components/library/theme/tokens.tsx +0 -106
- package/src/components/library/ui/Alert.tsx +0 -90
- package/src/components/library/ui/Avatar.tsx +0 -68
- package/src/components/library/ui/BreadcrumbExtras.tsx +0 -119
- package/src/components/library/ui/Card.tsx +0 -131
- package/src/components/library/ui/Checkbox.tsx +0 -19
- package/src/components/library/ui/Chip.tsx +0 -42
- package/src/components/library/ui/Collapsible.tsx +0 -31
- package/src/components/library/ui/Container.tsx +0 -65
- package/src/components/library/ui/DatePicker.tsx +0 -34
- package/src/components/library/ui/Dialog.tsx +0 -141
- package/src/components/library/ui/EmptyState.tsx +0 -49
- package/src/components/library/ui/Field.tsx +0 -82
- package/src/components/library/ui/FieldGroup.tsx +0 -19
- package/src/components/library/ui/Label.tsx +0 -23
- package/src/components/library/ui/PaginationExtras.tsx +0 -143
- package/src/components/library/ui/Popover.tsx +0 -39
- package/src/components/library/ui/Select.tsx +0 -113
- package/src/components/library/ui/Spinner.tsx +0 -66
- package/src/components/library/ui/Text.tsx +0 -53
- package/src/components/library/ui/UIButton.tsx +0 -62
- package/src/components/library/ui/UIInput.tsx +0 -21
- package/src/components/workspace/ComponentRegistry.tsx +0 -402
- package/src/lib/index.ts +0 -1
- package/src/lib/utils.ts +0 -6
- package/src/templates/config/routes.tsx.template +0 -33
- package/src/templates/pages/BlankDashboard.tsx.template +0 -15
- package/src/templates/pages/Home.tsx.template +0 -58
- package/src/templates/pages/NotFound.tsx.template +0 -19
- package/src/templates/pages/Search.tsx.template +0 -13
- package/src/templates/workspace/CommandCenter.tsx.template +0 -15
- package/src/types/conversation.ts +0 -48
- /package/dist/components/library/ui/{datePicker.d.ts → DatePicker.d.ts} +0 -0
- /package/dist/components/library/ui/{field.d.ts → Field.d.ts} +0 -0
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
export interface SelectOption {
|
|
2
|
-
value: string;
|
|
3
|
-
label: string;
|
|
4
|
-
}
|
|
5
|
-
export interface SelectFilterProps {
|
|
6
|
-
value?: string;
|
|
7
|
-
onChange?: (value: string) => void;
|
|
8
|
-
options?: (string | SelectOption)[];
|
|
9
|
-
label?: string;
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
className?: string;
|
|
12
|
-
}
|
|
13
1
|
/**
|
|
14
2
|
* Dropdown select filter.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} value — current selected value
|
|
5
|
+
* @param {Function} onChange — (value) => void
|
|
6
|
+
* @param {Array} options — [{ value, label }] or ["string", ...]
|
|
7
|
+
* @param {string} label — visible label
|
|
8
|
+
* @param {string} placeholder — placeholder when no value selected
|
|
15
9
|
*/
|
|
16
|
-
export default function SelectFilter({ value, onChange, options, label, placeholder, className, }:
|
|
10
|
+
export default function SelectFilter({ value, onChange, options, label, placeholder, className, }: string): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs as n, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
2
3
|
import { ChevronDownIcon as u } from "@heroicons/react/24/outline";
|
|
3
|
-
function
|
|
4
|
+
function h({
|
|
4
5
|
value: r = "all",
|
|
5
6
|
onChange: s,
|
|
6
7
|
options: i = [],
|
|
@@ -38,6 +39,6 @@ function f({
|
|
|
38
39
|
] });
|
|
39
40
|
}
|
|
40
41
|
export {
|
|
41
|
-
|
|
42
|
+
h as default
|
|
42
43
|
};
|
|
43
44
|
//# sourceMappingURL=SelectFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectFilter.js","sources":["../../../../src/components/library/filters/SelectFilter.
|
|
1
|
+
{"version":3,"file":"SelectFilter.js","sources":["../../../../src/components/library/filters/SelectFilter.jsx"],"sourcesContent":["import React from \"react\";\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\";\n\n/**\n * Dropdown select filter.\n *\n * @param {string} value — current selected value\n * @param {Function} onChange — (value) => void\n * @param {Array} options — [{ value, label }] or [\"string\", ...]\n * @param {string} label — visible label\n * @param {string} placeholder — placeholder when no value selected\n */\nexport default function SelectFilter({\n value = \"all\",\n onChange,\n options = [],\n label,\n placeholder,\n className = \"\",\n}) {\n const normalizedOptions = options.map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n\n return (\n <div className={[\"relative inline-flex items-center gap-2\", className].filter(Boolean).join(\" \")}>\n {label ? (\n <span className=\"shrink-0 text-xs font-medium text-slate-500 dark:text-slate-400\">\n {label}\n </span>\n ) : null}\n <div className=\"relative\">\n <select\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n className=\"h-9 appearance-none rounded-lg border border-slate-200 bg-white py-0 pl-3 pr-8 text-sm font-medium text-slate-700 shadow-sm focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-200 dark:focus:ring-offset-slate-950\"\n aria-label={label ?? placeholder ?? \"Filter\"}\n >\n {placeholder ? (\n <option value=\"all\">{placeholder}</option>\n ) : null}\n {normalizedOptions.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n <ChevronDownIcon\n className=\"pointer-events-none absolute right-2 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400 dark:text-slate-500\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n );\n}\n"],"names":["SelectFilter","value","onChange","options","label","placeholder","className","normalizedOptions","opt","jsxs","jsx","ChevronDownIcon"],"mappings":";;;AAYA,SAAwBA,EAAa;AAAA,EACnC,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,SAAAC,IAAU,CAAA;AAAA,EACV,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAG;AACD,QAAMC,IAAoBJ,EAAQ;AAAA,IAAI,CAACK,MACrC,OAAOA,KAAQ,WAAW,EAAE,OAAOA,GAAK,OAAOA,MAAQA;AAAA,EAAA;AAGzD,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAW,CAAC,2CAA2CH,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC5F,UAAA;AAAA,IAAAF,IACC,gBAAAM,EAAC,QAAA,EAAK,WAAU,mEACb,aACH,IACE;AAAA,IACJ,gBAAAD,EAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,MAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAAR;AAAA,UACA,UAAU,CAAC,MAAMC,IAAW,EAAE,OAAO,KAAK;AAAA,UAC1C,WAAU;AAAA,UACV,cAAYE,KAASC,KAAe;AAAA,UAEnC,UAAA;AAAA,YAAAA,IACC,gBAAAK,EAAC,UAAA,EAAO,OAAM,OAAO,aAAY,IAC/B;AAAA,YACHH,EAAkB,IAAI,CAACC,MACtB,gBAAAE,EAAC,UAAA,EAAuB,OAAOF,EAAI,OAChC,UAAAA,EAAI,MAAA,GADMA,EAAI,KAEjB,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAE;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IACd,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
export interface ToggleFilterProps {
|
|
2
|
-
value?: boolean;
|
|
3
|
-
onChange?: (value: boolean) => void;
|
|
4
|
-
label?: string;
|
|
5
|
-
className?: string;
|
|
6
|
-
}
|
|
7
1
|
/**
|
|
8
2
|
* Toggle switch filter.
|
|
3
|
+
*
|
|
4
|
+
* @param {boolean} value — current on/off state
|
|
5
|
+
* @param {Function} onChange — (boolean) => void
|
|
6
|
+
* @param {string} label — visible label
|
|
9
7
|
*/
|
|
10
|
-
export default function ToggleFilter({ value, onChange, label, className, }:
|
|
8
|
+
export default function ToggleFilter({ value, onChange, label, className, }: boolean): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs as o, jsx as n } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import "react";
|
|
3
|
+
function l({
|
|
3
4
|
value: e = !1,
|
|
4
5
|
onChange: r,
|
|
5
6
|
label: t,
|
|
@@ -42,6 +43,6 @@ function a({
|
|
|
42
43
|
);
|
|
43
44
|
}
|
|
44
45
|
export {
|
|
45
|
-
|
|
46
|
+
l as default
|
|
46
47
|
};
|
|
47
48
|
//# sourceMappingURL=ToggleFilter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleFilter.js","sources":["../../../../src/components/library/filters/ToggleFilter.
|
|
1
|
+
{"version":3,"file":"ToggleFilter.js","sources":["../../../../src/components/library/filters/ToggleFilter.jsx"],"sourcesContent":["import React from \"react\";\n\n/**\n * Toggle switch filter.\n *\n * @param {boolean} value — current on/off state\n * @param {Function} onChange — (boolean) => void\n * @param {string} label — visible label\n */\nexport default function ToggleFilter({\n value = false,\n onChange,\n label,\n className = \"\",\n}) {\n return (\n <label\n className={[\n \"inline-flex cursor-pointer items-center gap-2\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={value}\n onClick={() => onChange?.(!value)}\n className={[\n \"relative inline-flex h-5 w-9 shrink-0 rounded-full border-2 border-transparent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:focus:ring-offset-slate-950\",\n value\n ? \"bg-brand-500\"\n : \"bg-slate-200 dark:bg-slate-700\",\n ].join(\" \")}\n >\n <span\n aria-hidden=\"true\"\n className={[\n \"pointer-events-none inline-block h-4 w-4 rounded-full bg-white shadow ring-0 transition-transform\",\n value ? \"translate-x-4\" : \"translate-x-0\",\n ].join(\" \")}\n />\n </button>\n {label ? (\n <span className=\"text-sm font-medium text-slate-700 dark:text-slate-200\">\n {label}\n </span>\n ) : null}\n </label>\n );\n}\n"],"names":["ToggleFilter","value","onChange","label","className","jsxs","jsx"],"mappings":";;AASA,SAAwBA,EAAa;AAAA,EACnC,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACAD;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAK;AAAA,YACL,gBAAcL;AAAA,YACd,SAAS,MAAMC,IAAW,CAACD,CAAK;AAAA,YAChC,WAAW;AAAA,cACT;AAAA,cACAA,IACI,iBACA;AAAA,YAAA,EACJ,KAAK,GAAG;AAAA,YAEV,UAAA,gBAAAK;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,WAAW;AAAA,kBACT;AAAA,kBACAL,IAAQ,kBAAkB;AAAA,gBAAA,EAC1B,KAAK,GAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAEDE,IACC,gBAAAG,EAAC,QAAA,EAAK,WAAU,0DACb,aACH,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import type { FormField as FormFieldType } from "./FormRenderer";
|
|
2
|
-
export interface FormFieldProps {
|
|
3
|
-
field: FormFieldType & Record<string, unknown>;
|
|
4
|
-
value: unknown;
|
|
5
|
-
error?: string;
|
|
6
|
-
touched?: boolean;
|
|
7
|
-
onChange: (value: unknown) => void;
|
|
8
|
-
onBlur: () => void;
|
|
9
|
-
}
|
|
10
1
|
/**
|
|
11
2
|
* Renders a single form field with label, description, error message,
|
|
12
3
|
* and the appropriate input type.
|
|
13
4
|
*/
|
|
14
|
-
export default function FormField({ field, value, error, touched, onChange, onBlur }:
|
|
5
|
+
export default function FormField({ field, value, error, touched, onChange, onBlur }: {
|
|
6
|
+
field: any;
|
|
7
|
+
value: any;
|
|
8
|
+
error: any;
|
|
9
|
+
touched: any;
|
|
10
|
+
onChange: any;
|
|
11
|
+
onBlur: any;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsxs as c, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
2
3
|
import { ChevronDownIcon as m } from "@heroicons/react/24/outline";
|
|
3
4
|
const p = "h-10 w-full rounded-lg border border-slate-200 bg-white px-3 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50 dark:placeholder:text-slate-500 dark:focus:ring-offset-slate-950", x = "border-red-300 focus:ring-red-500 dark:border-red-700 dark:focus:ring-red-500";
|
|
4
5
|
function i(...e) {
|
|
@@ -228,7 +229,7 @@ const E = {
|
|
|
228
229
|
checkboxGroup: F,
|
|
229
230
|
toggle: C
|
|
230
231
|
};
|
|
231
|
-
function
|
|
232
|
+
function O({ field: e, value: n, error: s, touched: a, onChange: d, onBlur: t }) {
|
|
232
233
|
const o = E[e.type];
|
|
233
234
|
if (!o) return null;
|
|
234
235
|
const l = s && a, b = e.type === "checkbox";
|
|
@@ -242,7 +243,7 @@ function L({ field: e, value: n, error: s, touched: a, onChange: d, onBlur: t })
|
|
|
242
243
|
value: n,
|
|
243
244
|
onChange: d,
|
|
244
245
|
onBlur: t,
|
|
245
|
-
error:
|
|
246
|
+
error: l
|
|
246
247
|
}
|
|
247
248
|
),
|
|
248
249
|
e.type === "toggle" && e.description ? /* @__PURE__ */ r(g, { description: e.description }) : null,
|
|
@@ -250,6 +251,6 @@ function L({ field: e, value: n, error: s, touched: a, onChange: d, onBlur: t })
|
|
|
250
251
|
] });
|
|
251
252
|
}
|
|
252
253
|
export {
|
|
253
|
-
|
|
254
|
+
O as default
|
|
254
255
|
};
|
|
255
256
|
//# sourceMappingURL=FormField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormField.js","sources":["../../../../src/components/library/forms/FormField.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\";\nimport type { FormField as FormFieldType } from \"./FormRenderer\";\n\nconst INPUT_BASE =\n \"h-10 w-full rounded-lg border border-slate-200 bg-white px-3 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50 dark:placeholder:text-slate-500 dark:focus:ring-offset-slate-950\";\n\nconst INPUT_ERROR =\n \"border-red-300 focus:ring-red-500 dark:border-red-700 dark:focus:ring-red-500\";\n\nfunction cx(...classes: (string | boolean | undefined)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n\ninterface FieldLabelProps {\n label?: string;\n required?: boolean;\n htmlFor: string;\n}\n\nfunction FieldLabel({ label, required, htmlFor }: FieldLabelProps) {\n if (!label) return null;\n return (\n <label htmlFor={htmlFor} className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {label}\n {required ? <span className=\"ml-0.5 text-red-500\">*</span> : null}\n </label>\n );\n}\n\ninterface FieldErrorProps {\n error?: string;\n}\n\nfunction FieldError({ error }: FieldErrorProps) {\n if (!error) return null;\n return <p className=\"text-xs text-red-600 dark:text-red-400\">{error}</p>;\n}\n\ninterface FieldDescriptionProps {\n description?: string;\n}\n\nfunction FieldDescription({ description }: FieldDescriptionProps) {\n if (!description) return null;\n return <p className=\"text-xs text-slate-500 dark:text-slate-400\">{description}</p>;\n}\n\n// ─── Individual field renderers ───\n\ninterface FieldRendererProps {\n field: FormFieldType & Record<string, unknown>;\n value: unknown;\n onChange: (value: unknown) => void;\n onBlur: () => void;\n error?: boolean;\n}\n\nfunction TextField({ field, value, onChange, onBlur, error }: FieldRendererProps) {\n const inputType = (field.inputType as string | undefined) ?? field.type;\n const type = { text: \"text\", email: \"email\", url: \"url\", number: \"number\", date: \"date\" }[inputType] ?? \"text\";\n\n return (\n <input\n id={field.id}\n name={field.id}\n type={type}\n value={(value as string | number) ?? \"\"}\n onChange={(e) => onChange(field.type === \"number\" ? e.target.value : e.target.value)}\n onBlur={onBlur}\n placeholder={field.placeholder as string | undefined}\n disabled={field.disabled as boolean | undefined}\n readOnly={field.readOnly as boolean | undefined}\n min={field.min as number | undefined}\n max={field.max as number | undefined}\n step={field.step as number | undefined}\n className={cx(INPUT_BASE, error && INPUT_ERROR)}\n />\n );\n}\n\nfunction TextareaField({ field, value, onChange, onBlur, error }: FieldRendererProps) {\n return (\n <textarea\n id={field.id}\n name={field.id}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n placeholder={field.placeholder as string | undefined}\n disabled={field.disabled as boolean | undefined}\n readOnly={field.readOnly as boolean | undefined}\n rows={(field.rows as number | undefined) ?? 3}\n className={cx(\n \"w-full rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50 dark:placeholder:text-slate-500 dark:focus:ring-offset-slate-950\",\n error && INPUT_ERROR\n )}\n />\n );\n}\n\ninterface SelectOption {\n value: string;\n label: string;\n}\n\nfunction SelectField({ field, value, onChange, onBlur, error }: FieldRendererProps) {\n const options = ((field.options as (string | SelectOption)[] | undefined) ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n\n return (\n <div className=\"relative\">\n <select\n id={field.id}\n name={field.id}\n value={(value as string) ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n disabled={field.disabled as boolean | undefined}\n className={cx(\n \"h-10 w-full appearance-none rounded-lg border border-slate-200 bg-white py-0 pl-3 pr-9 text-sm font-medium text-slate-700 shadow-sm focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-200 dark:focus:ring-offset-slate-950\",\n error && INPUT_ERROR\n )}\n >\n {field.placeholder ? (\n <option value=\"\">{field.placeholder as string}</option>\n ) : null}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n <ChevronDownIcon\n className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400 dark:text-slate-500\"\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n\ninterface RadioOption extends SelectOption {\n description?: string;\n disabled?: boolean;\n}\n\nfunction RadioField({ field, value, onChange }: FieldRendererProps) {\n const options = ((field.options as (string | RadioOption)[] | undefined) ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n const layout = (field.layout as string | undefined) ?? (options.length <= 4 ? \"horizontal\" : \"vertical\");\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n layout === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\"\n )}\n role=\"radiogroup\"\n aria-labelledby={`${field.id}-label`}\n >\n {options.map((opt) => (\n <label\n key={opt.value}\n className=\"inline-flex cursor-pointer items-center gap-2 text-sm text-slate-700 dark:text-slate-200\"\n >\n <input\n type=\"radio\"\n name={field.id}\n value={opt.value}\n checked={value === opt.value}\n onChange={() => onChange(opt.value)}\n disabled={(field.disabled as boolean | undefined) || opt.disabled}\n className=\"h-4 w-4 border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {opt.label}\n {opt.description ? (\n <span className=\"text-xs text-slate-400 dark:text-slate-500\">{opt.description}</span>\n ) : null}\n </label>\n ))}\n </div>\n );\n}\n\nfunction CheckboxField({ field, value, onChange }: FieldRendererProps) {\n return (\n <label className=\"inline-flex cursor-pointer items-center gap-2.5 text-sm text-slate-700 dark:text-slate-200\">\n <input\n type=\"checkbox\"\n id={field.id}\n name={field.id}\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n disabled={field.disabled as boolean | undefined}\n className=\"h-4 w-4 rounded border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {(field.checkboxLabel as string | undefined) ?? field.label}\n </label>\n );\n}\n\ninterface CheckboxOption extends SelectOption {\n disabled?: boolean;\n}\n\nfunction CheckboxGroupField({ field, value, onChange }: FieldRendererProps) {\n const selected = Array.isArray(value) ? value : [];\n const options = ((field.options as (string | CheckboxOption)[] | undefined) ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n const layout = (field.layout as string | undefined) ?? (options.length <= 4 ? \"horizontal\" : \"vertical\");\n\n function toggleValue(optValue: string) {\n const next = selected.includes(optValue)\n ? selected.filter((v) => v !== optValue)\n : [...selected, optValue];\n onChange(next);\n }\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n layout === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\"\n )}\n >\n {options.map((opt) => (\n <label\n key={opt.value}\n className=\"inline-flex cursor-pointer items-center gap-2 text-sm text-slate-700 dark:text-slate-200\"\n >\n <input\n type=\"checkbox\"\n checked={selected.includes(opt.value)}\n onChange={() => toggleValue(opt.value)}\n disabled={(field.disabled as boolean | undefined) || opt.disabled}\n className=\"h-4 w-4 rounded border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {opt.label}\n </label>\n ))}\n </div>\n );\n}\n\nfunction ToggleField({ field, value, onChange }: FieldRendererProps) {\n const checked = Boolean(value);\n\n return (\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n onClick={() => onChange(!checked)}\n disabled={field.disabled as boolean | undefined}\n className={cx(\n \"relative inline-flex h-6 w-11 shrink-0 rounded-full border-2 border-transparent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:focus:ring-offset-slate-950\",\n checked ? \"bg-brand-500\" : \"bg-slate-200 dark:bg-slate-700\",\n field.disabled && \"cursor-not-allowed opacity-60\"\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cx(\n \"pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition-transform\",\n checked ? \"translate-x-5\" : \"translate-x-0\"\n )}\n />\n </button>\n {field.toggleLabel ? (\n <span className=\"text-sm text-slate-700 dark:text-slate-200\">{field.toggleLabel as string}</span>\n ) : null}\n </div>\n );\n}\n\n// ─── Main FormField ───\n\nconst FIELD_RENDERERS: Record<string, React.ComponentType<FieldRendererProps>> = {\n text: TextField,\n email: TextField,\n url: TextField,\n number: TextField,\n date: TextField,\n textarea: TextareaField,\n select: SelectField,\n radio: RadioField,\n checkbox: CheckboxField,\n checkboxGroup: CheckboxGroupField,\n toggle: ToggleField,\n};\n\nexport interface FormFieldProps {\n field: FormFieldType & Record<string, unknown>;\n value: unknown;\n error?: string;\n touched?: boolean;\n onChange: (value: unknown) => void;\n onBlur: () => void;\n}\n\n/**\n * Renders a single form field with label, description, error message,\n * and the appropriate input type.\n */\nexport default function FormField({ field, value, error, touched, onChange, onBlur }: FormFieldProps) {\n const Renderer = FIELD_RENDERERS[field.type];\n if (!Renderer) return null;\n\n const showError = error && touched;\n const noLabel = field.type === \"checkbox\";\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n {!noLabel ? (\n <FieldLabel label={field.label} required={field.required} htmlFor={field.id} />\n ) : null}\n {field.description && field.type !== \"toggle\" ? (\n <FieldDescription description={field.description as string} />\n ) : null}\n <Renderer\n field={field}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n error={Boolean(showError)}\n />\n {field.type === \"toggle\" && field.description ? (\n <FieldDescription description={field.description as string} />\n ) : null}\n {showError ? <FieldError error={error} /> : null}\n </div>\n );\n}\n"],"names":["INPUT_BASE","INPUT_ERROR","cx","classes","FieldLabel","label","required","htmlFor","jsxs","jsx","FieldError","error","FieldDescription","description","TextField","field","value","onChange","onBlur","inputType","type","e","TextareaField","SelectField","options","opt","ChevronDownIcon","RadioField","layout","CheckboxField","CheckboxGroupField","selected","toggleValue","optValue","next","v","ToggleField","checked","FIELD_RENDERERS","FormField","touched","Renderer","showError","noLabel"],"mappings":";;AAIA,MAAMA,IACJ,iUAEIC,IACJ;AAEF,SAASC,KAAMC,GAAmD;AAChE,SAAOA,EAAQ,OAAO,OAAO,EAAE,KAAK,GAAG;AACzC;AAQA,SAASC,EAAW,EAAE,OAAAC,GAAO,UAAAC,GAAU,SAAAC,KAA4B;AACjE,SAAKF,IAEH,gBAAAG,EAAC,SAAA,EAAM,SAAAD,GAAkB,WAAU,gEAChC,UAAA;AAAA,IAAAF;AAAA,IACAC,IAAW,gBAAAG,EAAC,QAAA,EAAK,WAAU,uBAAsB,eAAC,IAAU;AAAA,EAAA,GAC/D,IALiB;AAOrB;AAMA,SAASC,EAAW,EAAE,OAAAC,KAA0B;AAC9C,SAAKA,IACE,gBAAAF,EAAC,KAAA,EAAE,WAAU,0CAA0C,UAAAE,GAAM,IADjD;AAErB;AAMA,SAASC,EAAiB,EAAE,aAAAC,KAAsC;AAChE,SAAKA,IACE,gBAAAJ,EAAC,KAAA,EAAE,WAAU,8CAA8C,UAAAI,GAAY,IADrD;AAE3B;AAYA,SAASC,EAAU,EAAE,OAAAC,GAAO,OAAAC,GAAO,UAAAC,GAAU,QAAAC,GAAQ,OAAAP,KAA6B;AAChF,QAAMQ,IAAaJ,EAAM,aAAoCA,EAAM,MAC7DK,IAAO,EAAE,MAAM,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ,UAAU,MAAM,OAAA,EAASD,CAAS,KAAK;AAExG,SACE,gBAAAV;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAIM,EAAM;AAAA,MACV,MAAMA,EAAM;AAAA,MACZ,MAAAK;AAAA,MACA,OAAQJ,KAA6B;AAAA,MACrC,UAAU,CAACK,MAAMJ,GAASF,EAAM,SAAS,UAAWM,EAAE,OAAO,MAAsB;AAAA,MACnF,QAAAH;AAAA,MACA,aAAaH,EAAM;AAAA,MACnB,UAAUA,EAAM;AAAA,MAChB,UAAUA,EAAM;AAAA,MAChB,KAAKA,EAAM;AAAA,MACX,KAAKA,EAAM;AAAA,MACX,MAAMA,EAAM;AAAA,MACZ,WAAWb,EAAGF,GAAYW,KAASV,CAAW;AAAA,IAAA;AAAA,EAAA;AAGpD;AAEA,SAASqB,EAAc,EAAE,OAAAP,GAAO,OAAAC,GAAO,UAAAC,GAAU,QAAAC,GAAQ,OAAAP,KAA6B;AACpF,SACE,gBAAAF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAIM,EAAM;AAAA,MACV,MAAMA,EAAM;AAAA,MACZ,OAAQC,KAAoB;AAAA,MAC5B,UAAU,CAACK,MAAMJ,EAASI,EAAE,OAAO,KAAK;AAAA,MACxC,QAAAH;AAAA,MACA,aAAaH,EAAM;AAAA,MACnB,UAAUA,EAAM;AAAA,MAChB,UAAUA,EAAM;AAAA,MAChB,MAAOA,EAAM,QAA+B;AAAA,MAC5C,WAAWb;AAAA,QACT;AAAA,QACAS,KAASV;AAAA,MAAA;AAAA,IACX;AAAA,EAAA;AAGN;AAOA,SAASsB,EAAY,EAAE,OAAAR,GAAO,OAAAC,GAAO,UAAAC,GAAU,QAAAC,GAAQ,OAAAP,KAA6B;AAClF,QAAMa,KAAYT,EAAM,WAAqD,CAAA,GAAI;AAAA,IAAI,CAACU,MACpF,OAAOA,KAAQ,WAAW,EAAE,OAAOA,GAAK,OAAOA,MAAQA;AAAA,EAAA;AAGzD,SACE,gBAAAjB,EAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,IAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIO,EAAM;AAAA,QACV,MAAMA,EAAM;AAAA,QACZ,OAAQC,KAAoB;AAAA,QAC5B,UAAU,CAACK,MAAMJ,EAASI,EAAE,OAAO,KAAK;AAAA,QACxC,QAAAH;AAAA,QACA,UAAUH,EAAM;AAAA,QAChB,WAAWb;AAAA,UACT;AAAA,UACAS,KAASV;AAAA,QAAA;AAAA,QAGV,UAAA;AAAA,UAAAc,EAAM,cACL,gBAAAN,EAAC,UAAA,EAAO,OAAM,IAAI,UAAAM,EAAM,aAAsB,IAC5C;AAAA,UACHS,EAAQ,IAAI,CAACC,MACZ,gBAAAhB,EAAC,UAAA,EAAuB,OAAOgB,EAAI,OAChC,UAAAA,EAAI,MAAA,GADMA,EAAI,KAEjB,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH,gBAAAhB;AAAA,MAACiB;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;AAOA,SAASC,EAAW,EAAE,OAAAZ,GAAO,OAAAC,GAAO,UAAAC,KAAgC;AAClE,QAAMO,KAAYT,EAAM,WAAoD,CAAA,GAAI;AAAA,IAAI,CAACU,MACnF,OAAOA,KAAQ,WAAW,EAAE,OAAOA,GAAK,OAAOA,MAAQA;AAAA,EAAA,GAEnDG,IAAUb,EAAM,WAAkCS,EAAQ,UAAU,IAAI,eAAe;AAE7F,SACE,gBAAAf;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWP;AAAA,QACT;AAAA,QACA0B,MAAW,aAAa,aAAa;AAAA,MAAA;AAAA,MAEvC,MAAK;AAAA,MACL,mBAAiB,GAAGb,EAAM,EAAE;AAAA,MAE3B,UAAAS,EAAQ,IAAI,CAACC,MACZ,gBAAAjB;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,MAAMM,EAAM;AAAA,gBACZ,OAAOU,EAAI;AAAA,gBACX,SAAST,MAAUS,EAAI;AAAA,gBACvB,UAAU,MAAMR,EAASQ,EAAI,KAAK;AAAA,gBAClC,UAAWV,EAAM,YAAoCU,EAAI;AAAA,gBACzD,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEXA,EAAI;AAAA,YACJA,EAAI,cACH,gBAAAhB,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAgB,EAAI,aAAY,IAC5E;AAAA,UAAA;AAAA,QAAA;AAAA,QAfCA,EAAI;AAAA,MAAA,CAiBZ;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASI,EAAc,EAAE,OAAAd,GAAO,OAAAC,GAAO,UAAAC,KAAgC;AACrE,SACE,gBAAAT,EAAC,SAAA,EAAM,WAAU,8FACf,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAIM,EAAM;AAAA,QACV,MAAMA,EAAM;AAAA,QACZ,SAAS,EAAQC;AAAA,QACjB,UAAU,CAACK,MAAMJ,EAASI,EAAE,OAAO,OAAO;AAAA,QAC1C,UAAUN,EAAM;AAAA,QAChB,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEVA,EAAM,iBAAwCA,EAAM;AAAA,EAAA,GACxD;AAEJ;AAMA,SAASe,EAAmB,EAAE,OAAAf,GAAO,OAAAC,GAAO,UAAAC,KAAgC;AAC1E,QAAMc,IAAW,MAAM,QAAQf,CAAK,IAAIA,IAAQ,CAAA,GAC1CQ,KAAYT,EAAM,WAAuD,CAAA,GAAI;AAAA,IAAI,CAACU,MACtF,OAAOA,KAAQ,WAAW,EAAE,OAAOA,GAAK,OAAOA,MAAQA;AAAA,EAAA,GAEnDG,IAAUb,EAAM,WAAkCS,EAAQ,UAAU,IAAI,eAAe;AAE7F,WAASQ,EAAYC,GAAkB;AACrC,UAAMC,IAAOH,EAAS,SAASE,CAAQ,IACnCF,EAAS,OAAO,CAACI,MAAMA,MAAMF,CAAQ,IACrC,CAAC,GAAGF,GAAUE,CAAQ;AAC1B,IAAAhB,EAASiB,CAAI;AAAA,EACf;AAEA,SACE,gBAAAzB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWP;AAAA,QACT;AAAA,QACA0B,MAAW,aAAa,aAAa;AAAA,MAAA;AAAA,MAGtC,UAAAJ,EAAQ,IAAI,CAACC,MACZ,gBAAAjB;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAASsB,EAAS,SAASN,EAAI,KAAK;AAAA,gBACpC,UAAU,MAAMO,EAAYP,EAAI,KAAK;AAAA,gBACrC,UAAWV,EAAM,YAAoCU,EAAI;AAAA,gBACzD,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEXA,EAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAVAA,EAAI;AAAA,MAAA,CAYZ;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASW,EAAY,EAAE,OAAArB,GAAO,OAAAC,GAAO,UAAAC,KAAgC;AACnE,QAAMoB,IAAU,EAAQrB;AAExB,SACE,gBAAAR,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,gBAAc4B;AAAA,QACd,SAAS,MAAMpB,EAAS,CAACoB,CAAO;AAAA,QAChC,UAAUtB,EAAM;AAAA,QAChB,WAAWb;AAAA,UACT;AAAA,UACAmC,IAAU,iBAAiB;AAAA,UAC3BtB,EAAM,YAAY;AAAA,QAAA;AAAA,QAGpB,UAAA,gBAAAN;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAWP;AAAA,cACT;AAAA,cACAmC,IAAU,kBAAkB;AAAA,YAAA;AAAA,UAC9B;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAEDtB,EAAM,cACL,gBAAAN,EAAC,QAAA,EAAK,WAAU,8CAA8C,UAAAM,EAAM,aAAsB,IACxF;AAAA,EAAA,GACN;AAEJ;AAIA,MAAMuB,IAA2E;AAAA,EAC/E,MAAMxB;AAAA,EACN,OAAOA;AAAA,EACP,KAAKA;AAAA,EACL,QAAQA;AAAA,EACR,MAAMA;AAAA,EACN,UAAUQ;AAAA,EACV,QAAQC;AAAA,EACR,OAAOI;AAAA,EACP,UAAUE;AAAA,EACV,eAAeC;AAAA,EACf,QAAQM;AACV;AAeA,SAAwBG,EAAU,EAAE,OAAAxB,GAAO,OAAAC,GAAO,OAAAL,GAAO,SAAA6B,GAAS,UAAAvB,GAAU,QAAAC,KAA0B;AACpG,QAAMuB,IAAWH,EAAgBvB,EAAM,IAAI;AAC3C,MAAI,CAAC0B,EAAU,QAAO;AAEtB,QAAMC,IAAY/B,KAAS6B,GACrBG,IAAU5B,EAAM,SAAS;AAE/B,SACE,gBAAAP,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAA;AAAA,IAACmC,IAEE,OADF,gBAAAlC,EAACL,GAAA,EAAW,OAAOW,EAAM,OAAO,UAAUA,EAAM,UAAU,SAASA,EAAM,GAAA,CAAI;AAAA,IAE9EA,EAAM,eAAeA,EAAM,SAAS,6BAClCH,GAAA,EAAiB,aAAaG,EAAM,YAAA,CAAuB,IAC1D;AAAA,IACJ,gBAAAN;AAAA,MAACgC;AAAA,MAAA;AAAA,QACC,OAAA1B;AAAA,QACA,OAAAC;AAAA,QACA,UAAAC;AAAA,QACA,QAAAC;AAAA,QACA,OAAO,EAAQwB;AAAA,MAAS;AAAA,IAAA;AAAA,IAEzB3B,EAAM,SAAS,YAAYA,EAAM,gCAC/BH,GAAA,EAAiB,aAAaG,EAAM,YAAA,CAAuB,IAC1D;AAAA,IACH2B,IAAY,gBAAAjC,EAACC,GAAA,EAAW,OAAAC,EAAA,CAAc,IAAK;AAAA,EAAA,GAC9C;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"FormField.js","sources":["../../../../src/components/library/forms/FormField.jsx"],"sourcesContent":["import React from \"react\";\nimport { ChevronDownIcon } from \"@heroicons/react/24/outline\";\n\nconst INPUT_BASE =\n \"h-10 w-full rounded-lg border border-slate-200 bg-white px-3 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50 dark:placeholder:text-slate-500 dark:focus:ring-offset-slate-950\";\n\nconst INPUT_ERROR =\n \"border-red-300 focus:ring-red-500 dark:border-red-700 dark:focus:ring-red-500\";\n\nfunction cx(...classes) {\n return classes.filter(Boolean).join(\" \");\n}\n\nfunction FieldLabel({ label, required, htmlFor }) {\n if (!label) return null;\n return (\n <label htmlFor={htmlFor} className=\"block text-sm font-medium text-slate-700 dark:text-slate-200\">\n {label}\n {required ? <span className=\"ml-0.5 text-red-500\">*</span> : null}\n </label>\n );\n}\n\nfunction FieldError({ error }) {\n if (!error) return null;\n return <p className=\"text-xs text-red-600 dark:text-red-400\">{error}</p>;\n}\n\nfunction FieldDescription({ description }) {\n if (!description) return null;\n return <p className=\"text-xs text-slate-500 dark:text-slate-400\">{description}</p>;\n}\n\n// ─── Individual field renderers ───\n\nfunction TextField({ field, value, onChange, onBlur, error }) {\n const inputType = field.inputType ?? field.type;\n const type = { text: \"text\", email: \"email\", url: \"url\", number: \"number\", date: \"date\" }[inputType] ?? \"text\";\n\n return (\n <input\n id={field.id}\n name={field.id}\n type={type}\n value={value ?? \"\"}\n onChange={(e) => onChange(field.type === \"number\" ? e.target.value : e.target.value)}\n onBlur={onBlur}\n placeholder={field.placeholder}\n disabled={field.disabled}\n readOnly={field.readOnly}\n min={field.min}\n max={field.max}\n step={field.step}\n className={cx(INPUT_BASE, error && INPUT_ERROR)}\n />\n );\n}\n\nfunction TextareaField({ field, value, onChange, onBlur, error }) {\n return (\n <textarea\n id={field.id}\n name={field.id}\n value={value ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n placeholder={field.placeholder}\n disabled={field.disabled}\n readOnly={field.readOnly}\n rows={field.rows ?? 3}\n className={cx(\n \"w-full rounded-lg border border-slate-200 bg-white px-3 py-2 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-50 dark:placeholder:text-slate-500 dark:focus:ring-offset-slate-950\",\n error && INPUT_ERROR\n )}\n />\n );\n}\n\nfunction SelectField({ field, value, onChange, onBlur, error }) {\n const options = (field.options ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n\n return (\n <div className=\"relative\">\n <select\n id={field.id}\n name={field.id}\n value={value ?? \"\"}\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n disabled={field.disabled}\n className={cx(\n \"h-10 w-full appearance-none rounded-lg border border-slate-200 bg-white py-0 pl-3 pr-9 text-sm font-medium text-slate-700 shadow-sm focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:border-slate-800 dark:bg-slate-900 dark:text-slate-200 dark:focus:ring-offset-slate-950\",\n error && INPUT_ERROR\n )}\n >\n {field.placeholder ? (\n <option value=\"\">{field.placeholder}</option>\n ) : null}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n <ChevronDownIcon\n className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400 dark:text-slate-500\"\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n\nfunction RadioField({ field, value, onChange }) {\n const options = (field.options ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n const layout = field.layout ?? (options.length <= 4 ? \"horizontal\" : \"vertical\");\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n layout === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\"\n )}\n role=\"radiogroup\"\n aria-labelledby={`${field.id}-label`}\n >\n {options.map((opt) => (\n <label\n key={opt.value}\n className=\"inline-flex cursor-pointer items-center gap-2 text-sm text-slate-700 dark:text-slate-200\"\n >\n <input\n type=\"radio\"\n name={field.id}\n value={opt.value}\n checked={value === opt.value}\n onChange={() => onChange(opt.value)}\n disabled={field.disabled || opt.disabled}\n className=\"h-4 w-4 border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {opt.label}\n {opt.description ? (\n <span className=\"text-xs text-slate-400 dark:text-slate-500\">{opt.description}</span>\n ) : null}\n </label>\n ))}\n </div>\n );\n}\n\nfunction CheckboxField({ field, value, onChange }) {\n return (\n <label className=\"inline-flex cursor-pointer items-center gap-2.5 text-sm text-slate-700 dark:text-slate-200\">\n <input\n type=\"checkbox\"\n id={field.id}\n name={field.id}\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n disabled={field.disabled}\n className=\"h-4 w-4 rounded border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {field.checkboxLabel ?? field.label}\n </label>\n );\n}\n\nfunction CheckboxGroupField({ field, value, onChange }) {\n const selected = Array.isArray(value) ? value : [];\n const options = (field.options ?? []).map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt\n );\n const layout = field.layout ?? (options.length <= 4 ? \"horizontal\" : \"vertical\");\n\n function toggleValue(optValue) {\n const next = selected.includes(optValue)\n ? selected.filter((v) => v !== optValue)\n : [...selected, optValue];\n onChange(next);\n }\n\n return (\n <div\n className={cx(\n \"flex gap-3\",\n layout === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\"\n )}\n >\n {options.map((opt) => (\n <label\n key={opt.value}\n className=\"inline-flex cursor-pointer items-center gap-2 text-sm text-slate-700 dark:text-slate-200\"\n >\n <input\n type=\"checkbox\"\n checked={selected.includes(opt.value)}\n onChange={() => toggleValue(opt.value)}\n disabled={field.disabled || opt.disabled}\n className=\"h-4 w-4 rounded border-slate-300 text-brand-600 focus:ring-brand-500 dark:border-slate-600 dark:bg-slate-800\"\n />\n {opt.label}\n </label>\n ))}\n </div>\n );\n}\n\nfunction ToggleField({ field, value, onChange }) {\n const checked = Boolean(value);\n\n return (\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n onClick={() => onChange(!checked)}\n disabled={field.disabled}\n className={cx(\n \"relative inline-flex h-6 w-11 shrink-0 rounded-full border-2 border-transparent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-500 focus:ring-offset-2 dark:focus:ring-offset-slate-950\",\n checked ? \"bg-brand-500\" : \"bg-slate-200 dark:bg-slate-700\",\n field.disabled && \"cursor-not-allowed opacity-60\"\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cx(\n \"pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow ring-0 transition-transform\",\n checked ? \"translate-x-5\" : \"translate-x-0\"\n )}\n />\n </button>\n {field.toggleLabel ? (\n <span className=\"text-sm text-slate-700 dark:text-slate-200\">{field.toggleLabel}</span>\n ) : null}\n </div>\n );\n}\n\n// ─── Main FormField ───\n\nconst FIELD_RENDERERS = {\n text: TextField,\n email: TextField,\n url: TextField,\n number: TextField,\n date: TextField,\n textarea: TextareaField,\n select: SelectField,\n radio: RadioField,\n checkbox: CheckboxField,\n checkboxGroup: CheckboxGroupField,\n toggle: ToggleField,\n};\n\n/**\n * Renders a single form field with label, description, error message,\n * and the appropriate input type.\n */\nexport default function FormField({ field, value, error, touched, onChange, onBlur }) {\n const Renderer = FIELD_RENDERERS[field.type];\n if (!Renderer) return null;\n\n const showError = error && touched;\n const noLabel = field.type === \"checkbox\";\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n {!noLabel ? (\n <FieldLabel label={field.label} required={field.required} htmlFor={field.id} />\n ) : null}\n {field.description && field.type !== \"toggle\" ? (\n <FieldDescription description={field.description} />\n ) : null}\n <Renderer\n field={field}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n error={showError}\n />\n {field.type === \"toggle\" && field.description ? (\n <FieldDescription description={field.description} />\n ) : null}\n {showError ? <FieldError error={error} /> : null}\n </div>\n );\n}\n"],"names":["INPUT_BASE","INPUT_ERROR","cx","classes","FieldLabel","label","required","htmlFor","jsxs","jsx","FieldError","error","FieldDescription","description","TextField","field","value","onChange","onBlur","inputType","type","e","TextareaField","SelectField","options","opt","ChevronDownIcon","RadioField","layout","CheckboxField","CheckboxGroupField","selected","toggleValue","optValue","next","v","ToggleField","checked","FIELD_RENDERERS","FormField","touched","Renderer","showError","noLabel"],"mappings":"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"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
|
-
import type { FormSection } from "./FormRenderer";
|
|
2
|
-
declare const SIZE_CLASSES: {
|
|
3
|
-
readonly sm: "max-w-md";
|
|
4
|
-
readonly md: "max-w-xl";
|
|
5
|
-
readonly lg: "max-w-2xl";
|
|
6
|
-
readonly xl: "max-w-4xl";
|
|
7
|
-
};
|
|
8
|
-
export interface FormModalProps {
|
|
9
|
-
isOpen?: boolean;
|
|
10
|
-
onClose?: () => void;
|
|
11
|
-
title: string;
|
|
12
|
-
subtitle?: string;
|
|
13
|
-
sections?: FormSection[];
|
|
14
|
-
initialValues?: Record<string, unknown>;
|
|
15
|
-
onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
|
|
16
|
-
submitLabel?: string;
|
|
17
|
-
cancelLabel?: string;
|
|
18
|
-
size?: keyof typeof SIZE_CLASSES;
|
|
19
|
-
destructive?: boolean;
|
|
20
|
-
minSubmitMs?: number;
|
|
21
|
-
}
|
|
22
1
|
/**
|
|
23
2
|
* Modal dialog for creating or editing records.
|
|
24
3
|
* Wraps FormRenderer + useFormState in an animated overlay.
|
|
4
|
+
*
|
|
5
|
+
* @param {boolean} isOpen — whether the modal is visible
|
|
6
|
+
* @param {Function} onClose — close handler
|
|
7
|
+
* @param {string} title — modal title (e.g. "Edit Service", "New Incident")
|
|
8
|
+
* @param {string} subtitle — optional subtitle
|
|
9
|
+
* @param {Array} sections — form schema sections
|
|
10
|
+
* @param {Object} initialValues — prefill for editing (empty = create mode)
|
|
11
|
+
* @param {Function} onSubmit — async (values) => void, called on valid submit
|
|
12
|
+
* @param {string} submitLabel — submit button text (default: "Save")
|
|
13
|
+
* @param {string} cancelLabel — cancel button text (default: "Cancel")
|
|
14
|
+
* @param {string} size — "sm" | "md" | "lg" | "xl" (default: "lg")
|
|
15
|
+
* @param {boolean} destructive — if true, submit button is red (for delete confirmations)
|
|
25
16
|
*/
|
|
26
|
-
export default function FormModal({ isOpen, onClose, title, subtitle, sections, initialValues, onSubmit, submitLabel, cancelLabel, size, destructive, minSubmitMs, }:
|
|
27
|
-
|
|
17
|
+
export default function FormModal({ isOpen, onClose, title, subtitle, sections, initialValues, onSubmit, submitLabel, cancelLabel, size, destructive, minSubmitMs, }: boolean): React.ReactPortal | null;
|
|
18
|
+
import React from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormModal.js","sources":["../../../../src/components/library/forms/FormModal.tsx"],"sourcesContent":["import { useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { XMarkIcon } from \"@heroicons/react/24/outline\";\nimport Spinner from \"../ui/Spinner\";\nimport FormRenderer from \"./FormRenderer\";\nimport useFormState from \"./useFormState\";\nimport type { FormSection } from \"./FormRenderer\";\n\nconst OVERLAY_VARIANTS = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n};\n\nconst PANEL_VARIANTS = {\n hidden: { opacity: 0, y: 24, scale: 0.97 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: \"spring\" as const, damping: 25, stiffness: 350 } },\n exit: { opacity: 0, y: 16, scale: 0.97, transition: { duration: 0.15 } },\n};\n\nconst SIZE_CLASSES = {\n sm: \"max-w-md\",\n md: \"max-w-xl\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n} as const;\n\nexport interface FormModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n title: string;\n subtitle?: string;\n sections?: FormSection[];\n initialValues?: Record<string, unknown>;\n onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;\n submitLabel?: string;\n cancelLabel?: string;\n size?: keyof typeof SIZE_CLASSES;\n destructive?: boolean;\n minSubmitMs?: number;\n}\n\n/**\n * Modal dialog for creating or editing records.\n * Wraps FormRenderer + useFormState in an animated overlay.\n */\nexport default function FormModal({\n isOpen = false,\n onClose,\n title,\n subtitle,\n sections = [],\n initialValues = {},\n onSubmit,\n submitLabel = \"Save\",\n cancelLabel = \"Cancel\",\n size = \"lg\",\n destructive = false,\n minSubmitMs,\n}: FormModalProps) {\n const form = useFormState({\n initialValues,\n sections,\n minSubmitMs,\n onSubmit: async (vals) => {\n await onSubmit?.(vals);\n onClose?.();\n },\n });\n\n useEffect(() => {\n if (isOpen) form.reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose?.();\n },\n [onClose]\n );\n\n useEffect(() => {\n if (!isOpen) return;\n document.addEventListener(\"keydown\", onKeyDown);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [isOpen, onKeyDown]);\n\n if (typeof document === \"undefined\") return null;\n\n return createPortal(\n <AnimatePresence>\n {isOpen ? (\n <div className=\"fixed inset-0 z-50 flex items-start justify-center px-4 pt-[10vh] sm:pt-[12vh]\">\n {/* Backdrop */}\n <motion.div\n key=\"overlay\"\n className=\"fixed inset-0 bg-black/40 backdrop-blur-sm\"\n variants={OVERLAY_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"hidden\"\n transition={{ duration: 0.2 }}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n\n {/* Panel */}\n <motion.div\n key=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n variants={PANEL_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={[\n \"relative z-10 flex w-full flex-col rounded-xl border border-slate-200 bg-white shadow-xl dark:border-slate-800 dark:bg-slate-900\",\n SIZE_CLASSES[size] ?? SIZE_CLASSES.lg,\n \"max-h-[80vh]\",\n ].join(\" \")}\n >\n {/* Header */}\n <div className=\"flex items-start justify-between border-b border-slate-100 px-6 py-4 dark:border-slate-800\">\n <div>\n <h2 className=\"text-base font-semibold text-slate-900 dark:text-slate-50\">\n {title}\n </h2>\n {subtitle ? (\n <p className=\"mt-0.5 text-sm text-slate-500 dark:text-slate-400\">{subtitle}</p>\n ) : null}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"rounded-lg p-1.5 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Body — scrollable */}\n <div className=\"flex-1 overflow-y-auto px-6 py-5\">\n <FormRenderer\n sections={sections}\n values={form.values}\n errors={form.errors}\n touched={form.touched}\n onFieldChange={form.setValue}\n onFieldBlur={form.setTouched}\n formError={form.errors._form}\n />\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center justify-between border-t border-slate-100 px-6 py-4 dark:border-slate-800\">\n <div className=\"text-xs text-slate-400 dark:text-slate-500\">\n {form.isDirty ? \"Unsaved changes\" : \"\\u00A0\"}\n </div>\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-9 items-center rounded-lg border border-slate-200 bg-white px-4 text-sm font-medium text-slate-700 shadow-sm transition hover:bg-slate-50 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700\"\n >\n {cancelLabel}\n </button>\n <button\n type=\"button\"\n onClick={form.handleSubmit}\n disabled={form.isSubmitting}\n className={[\n \"inline-flex h-9 items-center gap-2 rounded-lg border border-transparent px-4 text-sm font-medium text-white shadow-sm transition\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900\",\n \"disabled:cursor-not-allowed disabled:opacity-60\",\n destructive\n ? \"bg-red-600 hover:bg-red-500 focus-visible:ring-red-500 dark:bg-red-600 dark:hover:bg-red-500\"\n : \"bg-brand-600 hover:bg-brand-500 focus-visible:ring-brand-500 dark:bg-brand-500 dark:hover:bg-brand-400\",\n ].join(\" \")}\n >\n {form.isSubmitting ? (\n <>\n <Spinner size=\"sm\" tone=\"white\" label=\"Submitting\" />\n Saving…\n </>\n ) : submitLabel}\n </button>\n </div>\n </div>\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n document.body\n );\n}\n"],"names":["OVERLAY_VARIANTS","PANEL_VARIANTS","SIZE_CLASSES","FormModal","isOpen","onClose","title","subtitle","sections","initialValues","onSubmit","submitLabel","cancelLabel","size","destructive","minSubmitMs","form","useFormState","vals","useEffect","onKeyDown","useCallback","e","createPortal","AnimatePresence","jsxs","jsx","motion","XMarkIcon","FormRenderer","Fragment","Spinner"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormModal.js","sources":["../../../../src/components/library/forms/FormModal.jsx"],"sourcesContent":["import React, { useEffect, useCallback } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { XMarkIcon } from \"@heroicons/react/24/outline\";\nimport Spinner from \"../ui/Spinner\";\nimport FormRenderer from \"./FormRenderer\";\nimport useFormState from \"./useFormState\";\n\nconst OVERLAY_VARIANTS = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n};\n\nconst PANEL_VARIANTS = {\n hidden: { opacity: 0, y: 24, scale: 0.97 },\n visible: { opacity: 1, y: 0, scale: 1, transition: { type: \"spring\", damping: 25, stiffness: 350 } },\n exit: { opacity: 0, y: 16, scale: 0.97, transition: { duration: 0.15 } },\n};\n\n/**\n * Size → max-width mapping.\n */\nconst SIZE_CLASSES = {\n sm: \"max-w-md\",\n md: \"max-w-xl\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n};\n\n/**\n * Modal dialog for creating or editing records.\n * Wraps FormRenderer + useFormState in an animated overlay.\n *\n * @param {boolean} isOpen — whether the modal is visible\n * @param {Function} onClose — close handler\n * @param {string} title — modal title (e.g. \"Edit Service\", \"New Incident\")\n * @param {string} subtitle — optional subtitle\n * @param {Array} sections — form schema sections\n * @param {Object} initialValues — prefill for editing (empty = create mode)\n * @param {Function} onSubmit — async (values) => void, called on valid submit\n * @param {string} submitLabel — submit button text (default: \"Save\")\n * @param {string} cancelLabel — cancel button text (default: \"Cancel\")\n * @param {string} size — \"sm\" | \"md\" | \"lg\" | \"xl\" (default: \"lg\")\n * @param {boolean} destructive — if true, submit button is red (for delete confirmations)\n */\nexport default function FormModal({\n isOpen = false,\n onClose,\n title,\n subtitle,\n sections = [],\n initialValues = {},\n onSubmit,\n submitLabel = \"Save\",\n cancelLabel = \"Cancel\",\n size = \"lg\",\n destructive = false,\n minSubmitMs,\n}) {\n const form = useFormState({\n initialValues,\n sections,\n minSubmitMs,\n onSubmit: async (vals) => {\n await onSubmit?.(vals);\n onClose?.();\n },\n });\n\n useEffect(() => {\n if (isOpen) form.reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const onKeyDown = useCallback(\n (e) => {\n if (e.key === \"Escape\") onClose?.();\n },\n [onClose]\n );\n\n useEffect(() => {\n if (!isOpen) return;\n document.addEventListener(\"keydown\", onKeyDown);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [isOpen, onKeyDown]);\n\n if (typeof document === \"undefined\") return null;\n\n return createPortal(\n <AnimatePresence>\n {isOpen ? (\n <div className=\"fixed inset-0 z-50 flex items-start justify-center px-4 pt-[10vh] sm:pt-[12vh]\">\n {/* Backdrop */}\n <motion.div\n key=\"overlay\"\n className=\"fixed inset-0 bg-black/40 backdrop-blur-sm\"\n variants={OVERLAY_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"hidden\"\n transition={{ duration: 0.2 }}\n onClick={onClose}\n aria-hidden=\"true\"\n />\n\n {/* Panel */}\n <motion.div\n key=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n variants={PANEL_VARIANTS}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n className={[\n \"relative z-10 flex w-full flex-col rounded-xl border border-slate-200 bg-white shadow-xl dark:border-slate-800 dark:bg-slate-900\",\n SIZE_CLASSES[size] ?? SIZE_CLASSES.lg,\n \"max-h-[80vh]\",\n ].join(\" \")}\n >\n {/* Header */}\n <div className=\"flex items-start justify-between border-b border-slate-100 px-6 py-4 dark:border-slate-800\">\n <div>\n <h2 className=\"text-base font-semibold text-slate-900 dark:text-slate-50\">\n {title}\n </h2>\n {subtitle ? (\n <p className=\"mt-0.5 text-sm text-slate-500 dark:text-slate-400\">{subtitle}</p>\n ) : null}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"rounded-lg p-1.5 text-slate-400 transition hover:bg-slate-100 hover:text-slate-600 dark:text-slate-500 dark:hover:bg-slate-800 dark:hover:text-slate-300\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Body — scrollable */}\n <div className=\"flex-1 overflow-y-auto px-6 py-5\">\n <FormRenderer\n sections={sections}\n values={form.values}\n errors={form.errors}\n touched={form.touched}\n onFieldChange={form.setValue}\n onFieldBlur={form.setTouched}\n formError={form.errors._form}\n />\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center justify-between border-t border-slate-100 px-6 py-4 dark:border-slate-800\">\n <div className=\"text-xs text-slate-400 dark:text-slate-500\">\n {form.isDirty ? \"Unsaved changes\" : \"\\u00A0\"}\n </div>\n <div className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-9 items-center rounded-lg border border-slate-200 bg-white px-4 text-sm font-medium text-slate-700 shadow-sm transition hover:bg-slate-50 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700\"\n >\n {cancelLabel}\n </button>\n <button\n type=\"button\"\n onClick={form.handleSubmit}\n disabled={form.isSubmitting}\n className={[\n \"inline-flex h-9 items-center gap-2 rounded-lg border border-transparent px-4 text-sm font-medium text-white shadow-sm transition\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900\",\n \"disabled:cursor-not-allowed disabled:opacity-60\",\n destructive\n ? \"bg-red-600 hover:bg-red-500 focus-visible:ring-red-500 dark:bg-red-600 dark:hover:bg-red-500\"\n : \"bg-brand-600 hover:bg-brand-500 focus-visible:ring-brand-500 dark:bg-brand-500 dark:hover:bg-brand-400\",\n ].join(\" \")}\n >\n {form.isSubmitting ? (\n <>\n <Spinner size=\"sm\" tone=\"white\" label=\"Submitting\" />\n Saving…\n </>\n ) : submitLabel}\n </button>\n </div>\n </div>\n </motion.div>\n </div>\n ) : null}\n </AnimatePresence>,\n document.body\n );\n}\n"],"names":["OVERLAY_VARIANTS","PANEL_VARIANTS","SIZE_CLASSES","FormModal","isOpen","onClose","title","subtitle","sections","initialValues","onSubmit","submitLabel","cancelLabel","size","destructive","minSubmitMs","form","useFormState","vals","useEffect","onKeyDown","useCallback","e","createPortal","AnimatePresence","jsxs","jsx","motion","XMarkIcon","FormRenderer","Fragment","Spinner"],"mappings":"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"}
|
|
@@ -1,33 +1,13 @@
|
|
|
1
|
-
export interface FormSection {
|
|
2
|
-
id?: string;
|
|
3
|
-
title?: string;
|
|
4
|
-
description?: string;
|
|
5
|
-
fields: FormField[];
|
|
6
|
-
}
|
|
7
|
-
export interface FormField {
|
|
8
|
-
id: string;
|
|
9
|
-
type: string;
|
|
10
|
-
label?: string;
|
|
11
|
-
placeholder?: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
required?: boolean;
|
|
14
|
-
requiredMessage?: string;
|
|
15
|
-
disabled?: boolean;
|
|
16
|
-
readOnly?: boolean;
|
|
17
|
-
validate?: (value: unknown, values: Record<string, unknown>) => string | undefined;
|
|
18
|
-
[key: string]: unknown;
|
|
19
|
-
}
|
|
20
|
-
export interface FormRendererProps {
|
|
21
|
-
sections?: FormSection[];
|
|
22
|
-
values?: Record<string, unknown>;
|
|
23
|
-
errors?: Record<string, string>;
|
|
24
|
-
touched?: Record<string, boolean>;
|
|
25
|
-
onFieldChange: (fieldId: string, value: unknown) => void;
|
|
26
|
-
onFieldBlur: (fieldId: string) => void;
|
|
27
|
-
formError?: string;
|
|
28
|
-
}
|
|
29
1
|
/**
|
|
30
2
|
* Renders a complete form from a schema definition.
|
|
31
3
|
* Pairs with useFormState for state management.
|
|
4
|
+
*
|
|
5
|
+
* @param {Array} sections — form schema sections
|
|
6
|
+
* @param {Object} values — current form values
|
|
7
|
+
* @param {Object} errors — current validation errors
|
|
8
|
+
* @param {Object} touched — which fields have been touched
|
|
9
|
+
* @param {Function} onFieldChange — (fieldId, value) => void
|
|
10
|
+
* @param {Function} onFieldBlur — (fieldId) => void
|
|
11
|
+
* @param {string} formError — top-level form error (e.g. submission failure)
|
|
32
12
|
*/
|
|
33
|
-
export default function FormRenderer({ sections, values, errors, touched, onFieldChange, onFieldBlur, formError, }:
|
|
13
|
+
export default function FormRenderer({ sections, values, errors, touched, onFieldChange, onFieldBlur, formError, }: any[]): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsxs as n, jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
2
3
|
import p from "./FormSection.js";
|
|
3
|
-
function
|
|
4
|
+
function u({
|
|
4
5
|
sections: t = [],
|
|
5
6
|
values: a = {},
|
|
6
7
|
errors: o = {},
|
|
7
8
|
touched: m = {},
|
|
8
|
-
onFieldChange:
|
|
9
|
-
onFieldBlur:
|
|
9
|
+
onFieldChange: i,
|
|
10
|
+
onFieldBlur: s,
|
|
10
11
|
formError: r
|
|
11
12
|
}) {
|
|
12
13
|
return /* @__PURE__ */ n("div", { className: "space-y-8", children: [
|
|
@@ -18,14 +19,14 @@ function b({
|
|
|
18
19
|
values: a,
|
|
19
20
|
errors: o,
|
|
20
21
|
touched: m,
|
|
21
|
-
onFieldChange:
|
|
22
|
-
onFieldBlur:
|
|
22
|
+
onFieldChange: i,
|
|
23
|
+
onFieldBlur: s
|
|
23
24
|
},
|
|
24
25
|
e.id ?? l
|
|
25
26
|
))
|
|
26
27
|
] });
|
|
27
28
|
}
|
|
28
29
|
export {
|
|
29
|
-
|
|
30
|
+
u as default
|
|
30
31
|
};
|
|
31
32
|
//# sourceMappingURL=FormRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormRenderer.js","sources":["../../../../src/components/library/forms/FormRenderer.
|
|
1
|
+
{"version":3,"file":"FormRenderer.js","sources":["../../../../src/components/library/forms/FormRenderer.jsx"],"sourcesContent":["import React from \"react\";\nimport FormSection from \"./FormSection\";\n\n/**\n * Renders a complete form from a schema definition.\n * Pairs with useFormState for state management.\n *\n * @param {Array} sections — form schema sections\n * @param {Object} values — current form values\n * @param {Object} errors — current validation errors\n * @param {Object} touched — which fields have been touched\n * @param {Function} onFieldChange — (fieldId, value) => void\n * @param {Function} onFieldBlur — (fieldId) => void\n * @param {string} formError — top-level form error (e.g. submission failure)\n */\nexport default function FormRenderer({\n sections = [],\n values = {},\n errors = {},\n touched = {},\n onFieldChange,\n onFieldBlur,\n formError,\n}) {\n return (\n <div className=\"space-y-8\">\n {formError ? (\n <div className=\"rounded-lg border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700 dark:border-red-800 dark:bg-red-950/30 dark:text-red-300\">\n {formError}\n </div>\n ) : null}\n\n {sections.map((section, idx) => (\n <FormSection\n key={section.id ?? idx}\n section={section}\n values={values}\n errors={errors}\n touched={touched}\n onFieldChange={onFieldChange}\n onFieldBlur={onFieldBlur}\n />\n ))}\n </div>\n );\n}\n"],"names":["FormRenderer","sections","values","errors","touched","onFieldChange","onFieldBlur","formError","jsxs","jsx","section","idx","FormSection"],"mappings":";;;AAeA,SAAwBA,EAAa;AAAA,EACnC,UAAAC,IAAW,CAAA;AAAA,EACX,QAAAC,IAAS,CAAA;AAAA,EACT,QAAAC,IAAS,CAAA;AAAA,EACT,SAAAC,IAAU,CAAA;AAAA,EACV,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AACF,GAAG;AACD,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,IAAAD,IACC,gBAAAE,EAAC,OAAA,EAAI,WAAU,sIACZ,aACH,IACE;AAAA,IAEHR,EAAS,IAAI,CAACS,GAASC,MACtB,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QAEC,SAAAF;AAAA,QACA,QAAAR;AAAA,QACA,QAAAC;AAAA,QACA,SAAAC;AAAA,QACA,eAAAC;AAAA,QACA,aAAAC;AAAA,MAAA;AAAA,MANKI,EAAQ,MAAMC;AAAA,IAAA,CAQtB;AAAA,EAAA,GACH;AAEJ;"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import type { FormSection as FormSectionType } from "./FormRenderer";
|
|
2
|
-
export interface FormSectionProps {
|
|
3
|
-
section: FormSectionType;
|
|
4
|
-
values: Record<string, unknown>;
|
|
5
|
-
errors: Record<string, string>;
|
|
6
|
-
touched: Record<string, boolean>;
|
|
7
|
-
onFieldChange: (fieldId: string, value: unknown) => void;
|
|
8
|
-
onFieldBlur: (fieldId: string) => void;
|
|
9
|
-
}
|
|
10
1
|
/**
|
|
11
2
|
* A titled section of a form with a 2-column grid layout.
|
|
12
3
|
* Fields default to 1-column (half width) unless the type is naturally
|
|
13
4
|
* full-width or the field specifies `colSpan: 2`.
|
|
14
5
|
*/
|
|
15
|
-
export default function FormSection({ section, values, errors, touched, onFieldChange, onFieldBlur, }:
|
|
6
|
+
export default function FormSection({ section, values, errors, touched, onFieldChange, onFieldBlur, }: {
|
|
7
|
+
section: any;
|
|
8
|
+
values: any;
|
|
9
|
+
errors: any;
|
|
10
|
+
touched: any;
|
|
11
|
+
onFieldChange: any;
|
|
12
|
+
onFieldBlur: any;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
2
3
|
import p from "./FormField.js";
|
|
3
4
|
const x = /* @__PURE__ */ new Set([
|
|
4
5
|
"textarea",
|
|
5
6
|
"radio",
|
|
6
7
|
"checkboxGroup"
|
|
7
8
|
]);
|
|
8
|
-
function
|
|
9
|
+
function b({
|
|
9
10
|
section: t,
|
|
10
11
|
values: l,
|
|
11
12
|
errors: d,
|
|
@@ -43,6 +44,6 @@ function g({
|
|
|
43
44
|
] }) : null;
|
|
44
45
|
}
|
|
45
46
|
export {
|
|
46
|
-
|
|
47
|
+
b as default
|
|
47
48
|
};
|
|
48
49
|
//# sourceMappingURL=FormSection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormSection.js","sources":["../../../../src/components/library/forms/FormSection.
|
|
1
|
+
{"version":3,"file":"FormSection.js","sources":["../../../../src/components/library/forms/FormSection.jsx"],"sourcesContent":["import React from \"react\";\nimport FormField from \"./FormField\";\n\n/**\n * Fields that naturally span full width by default.\n */\nconst FULL_WIDTH_TYPES = new Set([\n \"textarea\",\n \"radio\",\n \"checkboxGroup\",\n]);\n\n/**\n * A titled section of a form with a 2-column grid layout.\n * Fields default to 1-column (half width) unless the type is naturally\n * full-width or the field specifies `colSpan: 2`.\n */\nexport default function FormSection({\n section,\n values,\n errors,\n touched,\n onFieldChange,\n onFieldBlur,\n}) {\n const fields = section.fields ?? [];\n if (!fields.length) return null;\n\n return (\n <fieldset className=\"space-y-4\">\n {section.title ? (\n <div className=\"border-b border-slate-100 pb-3 dark:border-slate-800\">\n <legend className=\"text-sm font-semibold text-slate-900 dark:text-slate-50\">\n {section.title}\n </legend>\n {section.description ? (\n <p className=\"mt-0.5 text-xs text-slate-500 dark:text-slate-400\">\n {section.description}\n </p>\n ) : null}\n </div>\n ) : null}\n\n <div className=\"grid grid-cols-1 gap-x-4 gap-y-5 sm:grid-cols-2\">\n {fields.map((field) => {\n const span =\n field.colSpan ??\n (FULL_WIDTH_TYPES.has(field.type) ? 2 : 1);\n\n return (\n <div\n key={field.id}\n className={span === 2 ? \"sm:col-span-2\" : undefined}\n >\n <FormField\n field={field}\n value={values[field.id]}\n error={errors[field.id]}\n touched={touched[field.id]}\n onChange={(val) => onFieldChange(field.id, val)}\n onBlur={() => onFieldBlur(field.id)}\n />\n </div>\n );\n })}\n </div>\n </fieldset>\n );\n}\n"],"names":["FULL_WIDTH_TYPES","FormSection","section","values","errors","touched","onFieldChange","onFieldBlur","fields","jsxs","jsx","field","span","FormField","val"],"mappings":";;;AAMA,MAAMA,wBAAuB,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOD,SAAwBC,EAAY;AAAA,EAClC,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AACF,GAAG;AACD,QAAMC,IAASN,EAAQ,UAAU,CAAA;AACjC,SAAKM,EAAO,SAGV,gBAAAC,EAAC,YAAA,EAAS,WAAU,aACjB,UAAA;AAAA,IAAAP,EAAQ,QACP,gBAAAO,EAAC,OAAA,EAAI,WAAU,wDACb,UAAA;AAAA,MAAA,gBAAAC,EAAC,UAAA,EAAO,WAAU,2DACf,UAAAR,EAAQ,OACX;AAAA,MACCA,EAAQ,cACP,gBAAAQ,EAAC,KAAA,EAAE,WAAU,qDACV,UAAAR,EAAQ,aACX,IACE;AAAA,IAAA,EAAA,CACN,IACE;AAAA,sBAEH,OAAA,EAAI,WAAU,mDACZ,UAAAM,EAAO,IAAI,CAACG,MAAU;AACrB,YAAMC,IACJD,EAAM,YACLX,EAAiB,IAAIW,EAAM,IAAI,IAAI,IAAI;AAE1C,aACE,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWE,MAAS,IAAI,kBAAkB;AAAA,UAE1C,UAAA,gBAAAF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,OAAAF;AAAA,cACA,OAAOR,EAAOQ,EAAM,EAAE;AAAA,cACtB,OAAOP,EAAOO,EAAM,EAAE;AAAA,cACtB,SAASN,EAAQM,EAAM,EAAE;AAAA,cACzB,UAAU,CAACG,MAAQR,EAAcK,EAAM,IAAIG,CAAG;AAAA,cAC9C,QAAQ,MAAMP,EAAYI,EAAM,EAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QACpC;AAAA,QAVKA,EAAM;AAAA,MAAA;AAAA,IAajB,CAAC,EAAA,CACH;AAAA,EAAA,GACF,IAxCyB;AA0C7B;"}
|
|
@@ -3,8 +3,3 @@ export { default as FormRenderer } from "./FormRenderer";
|
|
|
3
3
|
export { default as FormSection } from "./FormSection";
|
|
4
4
|
export { default as FormField } from "./FormField";
|
|
5
5
|
export { default as useFormState } from "./useFormState";
|
|
6
|
-
export type { FormModalProps } from "./FormModal";
|
|
7
|
-
export type { FormRendererProps } from "./FormRenderer";
|
|
8
|
-
export type { FormSection as FormSectionType, FormField as FormFieldType } from "./FormRenderer";
|
|
9
|
-
export type { FormSectionProps } from "./FormSection";
|
|
10
|
-
export type { FormFieldProps } from "./FormField";
|
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
import type { FormSection } from "./FormRenderer";
|
|
2
|
-
interface UseFormStateOptions {
|
|
3
|
-
initialValues?: Record<string, unknown>;
|
|
4
|
-
sections?: FormSection[];
|
|
5
|
-
onSubmit?: (values: Record<string, unknown>) => void | Promise<void>;
|
|
6
|
-
minSubmitMs?: number;
|
|
7
|
-
}
|
|
8
|
-
interface UseFormStateReturn {
|
|
9
|
-
values: Record<string, unknown>;
|
|
10
|
-
errors: Record<string, string>;
|
|
11
|
-
touched: Record<string, boolean>;
|
|
12
|
-
isDirty: boolean;
|
|
13
|
-
isValid: boolean;
|
|
14
|
-
isSubmitting: boolean;
|
|
15
|
-
setValue: (id: string, value: unknown) => void;
|
|
16
|
-
setValues: (vals: Record<string, unknown>) => void;
|
|
17
|
-
setTouched: (id: string) => void;
|
|
18
|
-
validate: () => boolean;
|
|
19
|
-
reset: () => void;
|
|
20
|
-
handleSubmit: (e?: React.FormEvent) => Promise<boolean>;
|
|
21
|
-
}
|
|
22
1
|
/**
|
|
23
2
|
* Form state management hook.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} options
|
|
5
|
+
* @param {Object} options.initialValues — prefill for editing (merged over field defaults)
|
|
6
|
+
* @param {Array} options.sections — form schema sections (used for defaults + validation)
|
|
7
|
+
* @param {Function} options.onSubmit — called with (values) when form is valid
|
|
8
|
+
* @param {number} options.minSubmitMs — minimum time the submit spinner shows (default 4000ms, set 0 to disable)
|
|
9
|
+
*
|
|
10
|
+
* @returns {Object} { values, errors, touched, isDirty, isValid, isSubmitting,
|
|
11
|
+
* setValue, setValues, setTouched, validate, reset, handleSubmit }
|
|
24
12
|
*/
|
|
25
|
-
export default function useFormState({ initialValues, sections, onSubmit, minSubmitMs }?:
|
|
26
|
-
|
|
13
|
+
export default function useFormState({ initialValues, sections, onSubmit, minSubmitMs }?: {
|
|
14
|
+
initialValues: Object;
|
|
15
|
+
sections: any[];
|
|
16
|
+
onSubmit: Function;
|
|
17
|
+
minSubmitMs: number;
|
|
18
|
+
}): Object;
|