@vritti/quantum-ui 0.2.10 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Alert.js +4 -32
- package/dist/Alert.js.map +1 -1
- package/dist/AppSelector.js +37 -0
- package/dist/AppSelector.js.map +1 -0
- package/dist/Avatar.js +6 -6
- package/dist/Avatar.js.map +1 -1
- package/dist/Badge2.js +3 -3
- package/dist/Breadcrumb.js +125 -0
- package/dist/Breadcrumb.js.map +1 -0
- package/dist/Button.js +9 -5
- package/dist/Button.js.map +1 -1
- package/dist/Button2.js +4 -4
- package/dist/Button2.js.map +1 -1
- package/dist/Card.js +1 -1
- package/dist/CardSkeleton.js +17 -0
- package/dist/CardSkeleton.js.map +1 -0
- package/dist/Chart.js +6196 -6402
- package/dist/Chart.js.map +1 -1
- package/dist/Checkbox2.js +7 -6
- package/dist/Checkbox2.js.map +1 -1
- package/dist/CheckboxGroup.js +74 -0
- package/dist/CheckboxGroup.js.map +1 -0
- package/dist/CloudProviderSelector.js +37 -0
- package/dist/CloudProviderSelector.js.map +1 -0
- package/dist/Collapsible.js +8 -0
- package/dist/Collapsible.js.map +1 -0
- package/dist/Combination.js +10 -2509
- package/dist/Combination.js.map +1 -1
- package/dist/ConfirmContext.js +75 -0
- package/dist/ConfirmContext.js.map +1 -0
- package/dist/CurrencySelector.js +194 -0
- package/dist/CurrencySelector.js.map +1 -0
- package/dist/DangerZoneSkeleton.js +52 -0
- package/dist/DangerZoneSkeleton.js.map +1 -0
- package/dist/DatePicker.js +36 -18
- package/dist/DatePicker.js.map +1 -1
- package/dist/DeploymentSelector.js +37 -0
- package/dist/DeploymentSelector.js.map +1 -0
- package/dist/Dialog.js +159 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/DropdownMenu.js +66 -1493
- package/dist/DropdownMenu.js.map +1 -1
- package/dist/Empty.js +49 -0
- package/dist/Empty.js.map +1 -0
- package/dist/ErrorBoundary.js +255 -0
- package/dist/ErrorBoundary.js.map +1 -0
- package/dist/FeatureSelector.js +37 -0
- package/dist/FeatureSelector.js.map +1 -0
- package/dist/FilePreview.js +194 -0
- package/dist/FilePreview.js.map +1 -0
- package/dist/Form.js +1922 -20
- package/dist/Form.js.map +1 -1
- package/dist/HierarchyGraph.js +10729 -0
- package/dist/HierarchyGraph.js.map +1 -0
- package/dist/IndustrySelector.js +37 -0
- package/dist/IndustrySelector.js.map +1 -0
- package/dist/Input.js +22 -0
- package/dist/Input.js.map +1 -0
- package/dist/Label.js +2 -22
- package/dist/Label.js.map +1 -1
- package/dist/LocaleSelector.js +111 -0
- package/dist/LocaleSelector.js.map +1 -0
- package/dist/MicrofrontendSelector.js +19 -0
- package/dist/MicrofrontendSelector.js.map +1 -0
- package/dist/OTPField.js +29 -27
- package/dist/OTPField.js.map +1 -1
- package/dist/PageHeaderSkeleton.js +35 -0
- package/dist/PageHeaderSkeleton.js.map +1 -0
- package/dist/PasswordField.js +2 -50
- package/dist/PasswordField.js.map +1 -1
- package/dist/PhoneField.js +9 -14
- package/dist/PhoneField.js.map +1 -1
- package/dist/PlanSelector.js +37 -0
- package/dist/PlanSelector.js.map +1 -0
- package/dist/Progress.js +5 -4
- package/dist/Progress.js.map +1 -1
- package/dist/RadioGroup.js +392 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RegionSelector.js +37 -0
- package/dist/RegionSelector.js.map +1 -0
- package/dist/Select.js +780 -0
- package/dist/Select.js.map +1 -0
- package/dist/SelectFilter.js +387 -0
- package/dist/SelectFilter.js.map +1 -0
- package/dist/Sidebar.js +616 -0
- package/dist/Sidebar.js.map +1 -0
- package/dist/SingleSelect.js +429 -0
- package/dist/SingleSelect.js.map +1 -0
- package/dist/Skeleton.js +1 -1
- package/dist/Sonner.js +2 -1134
- package/dist/Sonner.js.map +1 -1
- package/dist/Sortable.js +4517 -0
- package/dist/Sortable.js.map +1 -0
- package/dist/Spinner.js +1 -1
- package/dist/StepProgressIndicator.js +42 -0
- package/dist/StepProgressIndicator.js.map +1 -0
- package/dist/Switch.js +16 -16
- package/dist/Switch.js.map +1 -1
- package/dist/TabsSkeleton.js +188 -0
- package/dist/TabsSkeleton.js.map +1 -0
- package/dist/TextArea.js +17 -20
- package/dist/TextArea.js.map +1 -1
- package/dist/TextField.js +3 -19
- package/dist/TextField.js.map +1 -1
- package/dist/TimezoneSelector.js +144 -0
- package/dist/TimezoneSelector.js.map +1 -0
- package/dist/Toggle.js +3 -33
- package/dist/Toggle.js.map +1 -1
- package/dist/Typography.js +1 -1
- package/dist/UploadFile.js +232 -0
- package/dist/UploadFile.js.map +1 -0
- package/dist/ValueFilter.js +123 -0
- package/dist/ValueFilter.js.map +1 -0
- package/dist/ViewTabs.js +218 -0
- package/dist/ViewTabs.js.map +1 -0
- package/dist/_commonjsHelpers.js +3 -1
- package/dist/_commonjsHelpers.js.map +1 -1
- package/dist/assets/quantum-ui.css +808 -38
- package/dist/axios.js +4575 -0
- package/dist/axios.js.map +1 -0
- package/dist/circle-alert.js +19 -0
- package/dist/circle-alert.js.map +1 -0
- package/dist/circle-check.js +18 -0
- package/dist/circle-check.js.map +1 -0
- package/dist/collapsible2.js +154 -0
- package/dist/collapsible2.js.map +1 -0
- package/dist/components/Breadcrumb.js +2 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Card.js +1 -0
- package/dist/components/Card.js.map +1 -1
- package/dist/components/CheckboxGroup.js +2 -0
- package/dist/components/CheckboxGroup.js.map +1 -0
- package/dist/components/Collapsible.js +2 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/DangerZone.js +2 -0
- package/dist/components/DangerZone.js.map +1 -0
- package/dist/components/DataTable.js +1 -1
- package/dist/components/Dialog.js +2 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu.js +1 -1
- package/dist/components/Empty.js +2 -0
- package/dist/components/Empty.js.map +1 -0
- package/dist/components/ErrorBoundary.js +2 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/FilePreview.js +2 -0
- package/dist/components/FilePreview.js.map +1 -0
- package/dist/components/HierarchyGraph.js +2 -0
- package/dist/components/HierarchyGraph.js.map +1 -0
- package/dist/components/PageHeader.js +2 -0
- package/dist/components/PageHeader.js.map +1 -0
- package/dist/components/RadioGroup.js +2 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/RichTextEditor.js +4 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Select.js +6 -1356
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Sidebar.js +2 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/components/Sortable.js +2 -0
- package/dist/components/Sortable.js.map +1 -0
- package/dist/components/StepProgressIndicator.js +2 -0
- package/dist/components/StepProgressIndicator.js.map +1 -0
- package/dist/components/Tabs.js +2 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/UploadFile.js +2 -0
- package/dist/components/UploadFile.js.map +1 -0
- package/dist/components/ValueFilter.js +2 -0
- package/dist/components/ValueFilter.js.map +1 -0
- package/dist/components/ViewTabs.js +2 -0
- package/dist/components/ViewTabs.js.map +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/index.js.map +1 -1
- package/dist/dropdown-menu.js +1209 -0
- package/dist/dropdown-menu.js.map +1 -0
- package/dist/ellipsis.js +19 -0
- package/dist/ellipsis.js.map +1 -0
- package/dist/eye.js +52 -0
- package/dist/eye.js.map +1 -0
- package/dist/field.js +2 -2
- package/dist/file-text.js +27 -0
- package/dist/file-text.js.map +1 -0
- package/dist/grip-vertical.js +22 -0
- package/dist/grip-vertical.js.map +1 -0
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/image-component.js +614 -0
- package/dist/image-component.js.map +1 -0
- package/dist/index.js +48 -12
- package/dist/index.js.map +1 -1
- package/dist/index10.js +181 -11
- package/dist/index10.js.map +1 -1
- package/dist/index11.js +177 -4
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +17 -38
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +204 -188
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +124 -192
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +79 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.js +16 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.js +1137 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.js +41 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.js +314 -0
- package/dist/index19.js.map +1 -0
- package/dist/index2.js +54030 -59
- package/dist/index2.js.map +1 -1
- package/dist/index20.js +488 -0
- package/dist/index20.js.map +1 -0
- package/dist/index21.js +2540 -0
- package/dist/index21.js.map +1 -0
- package/dist/index22.js +36 -0
- package/dist/index22.js.map +1 -0
- package/dist/index23.js +13 -0
- package/dist/index23.js.map +1 -0
- package/dist/index24.js +8 -0
- package/dist/index24.js.map +1 -0
- package/dist/index25.js +35 -0
- package/dist/index25.js.map +1 -0
- package/dist/index26.js +65 -0
- package/dist/index26.js.map +1 -0
- package/dist/index27.js +16 -0
- package/dist/index27.js.map +1 -0
- package/dist/index28.js +41 -0
- package/dist/index28.js.map +1 -0
- package/dist/index29.js +84 -0
- package/dist/index29.js.map +1 -0
- package/dist/index3.js +41 -61
- package/dist/index3.js.map +1 -1
- package/dist/index30.js +199 -0
- package/dist/index30.js.map +1 -0
- package/dist/index4.js +290 -92
- package/dist/index4.js.map +1 -1
- package/dist/index5.js +102 -42
- package/dist/index5.js.map +1 -1
- package/dist/index6.js +35 -8
- package/dist/index6.js.map +1 -1
- package/dist/index7.js +1141 -110
- package/dist/index7.js.map +1 -1
- package/dist/index8.js +19 -34
- package/dist/index8.js.map +1 -1
- package/dist/index9.js +27 -4
- package/dist/index9.js.map +1 -1
- package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts +17 -0
- package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
- package/dist/lib/components/Breadcrumb/index.d.ts +4 -0
- package/dist/lib/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/lib/components/Button/Button.d.ts +3 -1
- package/dist/lib/components/Button/Button.d.ts.map +1 -1
- package/dist/lib/components/Card/CardSkeleton.d.ts +9 -0
- package/dist/lib/components/Card/CardSkeleton.d.ts.map +1 -0
- package/dist/lib/components/Card/index.d.ts +1 -0
- package/dist/lib/components/Card/index.d.ts.map +1 -1
- package/dist/lib/components/Chart/Chart.d.ts +1 -1
- package/dist/lib/components/Chart/Chart.d.ts.map +1 -1
- package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts +24 -0
- package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/lib/components/CheckboxGroup/index.d.ts +3 -0
- package/dist/lib/components/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/lib/components/Collapsible/Collapsible.d.ts +5 -0
- package/dist/lib/components/Collapsible/Collapsible.d.ts.map +1 -0
- package/dist/lib/components/Collapsible/index.d.ts +2 -0
- package/dist/lib/components/Collapsible/index.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/DangerZone.d.ts +13 -0
- package/dist/lib/components/DangerZone/DangerZone.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/DangerZoneSkeleton.d.ts +9 -0
- package/dist/lib/components/DangerZone/DangerZoneSkeleton.d.ts.map +1 -0
- package/dist/lib/components/DangerZone/index.d.ts +4 -0
- package/dist/lib/components/DangerZone/index.d.ts.map +1 -0
- package/dist/lib/components/DataTable/DataTable.d.ts +2 -11
- package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableColumnHeader.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableEmpty.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableFilters.d.ts +11 -0
- package/dist/lib/components/DataTable/components/DataTableFilters.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableImportDialog.d.ts +16 -0
- package/dist/lib/components/DataTable/components/DataTableImportDialog.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTablePagination.d.ts +1 -2
- package/dist/lib/components/DataTable/components/DataTablePagination.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableRowDensity.d.ts +11 -0
- package/dist/lib/components/DataTable/components/DataTableRowDensity.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableSearch.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableSearch.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableViewOptions.d.ts.map +1 -1
- package/dist/lib/components/DataTable/components/DataTableViewTabs.d.ts +7 -0
- package/dist/lib/components/DataTable/components/DataTableViewTabs.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/DataTableViewsMenu.d.ts +14 -0
- package/dist/lib/components/DataTable/components/DataTableViewsMenu.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/FilterWrapper.d.ts +21 -0
- package/dist/lib/components/DataTable/components/FilterWrapper.d.ts.map +1 -0
- package/dist/lib/components/DataTable/components/RowActions.d.ts +20 -0
- package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -0
- package/dist/lib/components/DataTable/hooks/useAutoUpsert.d.ts +3 -0
- package/dist/lib/components/DataTable/hooks/useAutoUpsert.d.ts.map +1 -0
- package/dist/lib/components/DataTable/hooks/useDataTable.d.ts +24 -2
- package/dist/lib/components/DataTable/hooks/useDataTable.d.ts.map +1 -1
- package/dist/lib/components/DataTable/index.d.ts +11 -3
- package/dist/lib/components/DataTable/index.d.ts.map +1 -1
- package/dist/lib/components/DataTable/store/store.d.ts +28 -0
- package/dist/lib/components/DataTable/store/store.d.ts.map +1 -0
- package/dist/lib/components/DataTable/store/useTableSlice.d.ts +18 -0
- package/dist/lib/components/DataTable/store/useTableSlice.d.ts.map +1 -0
- package/dist/lib/components/DataTable/types.d.ts +55 -56
- package/dist/lib/components/DataTable/types.d.ts.map +1 -1
- package/dist/lib/components/DataTable/utils.d.ts +8 -1
- package/dist/lib/components/DataTable/utils.d.ts.map +1 -1
- package/dist/lib/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/lib/components/Dialog/Dialog.d.ts +31 -0
- package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/lib/components/Dialog/index.d.ts +3 -0
- package/dist/lib/components/Dialog/index.d.ts.map +1 -0
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/lib/components/DropdownMenu/types.d.ts +10 -1
- package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -1
- package/dist/lib/components/Editor/context/editor-config-context.d.ts +9 -0
- package/dist/lib/components/Editor/context/editor-config-context.d.ts.map +1 -0
- package/dist/lib/components/Editor/context/toolbar-context.d.ts +18 -0
- package/dist/lib/components/Editor/context/toolbar-context.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-debounce.d.ts +2 -0
- package/dist/lib/components/Editor/editor-hooks/use-debounce.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-modal.d.ts +6 -0
- package/dist/lib/components/Editor/editor-hooks/use-modal.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-report.d.ts +2 -0
- package/dist/lib/components/Editor/editor-hooks/use-report.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-hooks/use-update-toolbar.d.ts +3 -0
- package/dist/lib/components/Editor/editor-hooks/use-update-toolbar.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/button-group.d.ts +12 -0
- package/dist/lib/components/Editor/editor-ui/button-group.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/button.d.ts +11 -0
- package/dist/lib/components/Editor/editor-ui/button.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/code-button.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/code-button.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/color-picker.d.ts +92 -0
- package/dist/lib/components/Editor/editor-ui/color-picker.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/command.d.ts +19 -0
- package/dist/lib/components/Editor/editor-ui/command.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/content-editable.d.ts +9 -0
- package/dist/lib/components/Editor/editor-ui/content-editable.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/dialog.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/dialog.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/image-component.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/image-component.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts +18 -0
- package/dist/lib/components/Editor/editor-ui/image-resizer.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/input.d.ts +4 -0
- package/dist/lib/components/Editor/editor-ui/input.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/label.d.ts +5 -0
- package/dist/lib/components/Editor/editor-ui/label.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/popover.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/popover.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts +6 -0
- package/dist/lib/components/Editor/editor-ui/scroll-area.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/select.d.ts +16 -0
- package/dist/lib/components/Editor/editor-ui/select.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/separator.d.ts +5 -0
- package/dist/lib/components/Editor/editor-ui/separator.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/tabs.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/tabs.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/toggle-group.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/toggle.d.ts +10 -0
- package/dist/lib/components/Editor/editor-ui/toggle.d.ts.map +1 -0
- package/dist/lib/components/Editor/editor-ui/tooltip.d.ts +8 -0
- package/dist/lib/components/Editor/editor-ui/tooltip.d.ts.map +1 -0
- package/dist/lib/components/Editor/index.d.ts +4 -0
- package/dist/lib/components/Editor/index.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts +19 -0
- package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts +22 -0
- package/dist/lib/components/Editor/nodes/embeds/tweet-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts +23 -0
- package/dist/lib/components/Editor/nodes/embeds/youtube-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/emoji-node.d.ts +18 -0
- package/dist/lib/components/Editor/nodes/emoji-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/image-node.d.ts +49 -0
- package/dist/lib/components/Editor/nodes/image-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/keyword-node.d.ts +15 -0
- package/dist/lib/components/Editor/nodes/keyword-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/layout-container-node.d.ts +23 -0
- package/dist/lib/components/Editor/nodes/layout-container-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/layout-item-node.d.ts +15 -0
- package/dist/lib/components/Editor/nodes/layout-item-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/mention-node.d.ts +21 -0
- package/dist/lib/components/Editor/nodes/mention-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes/nodes.d.ts +3 -0
- package/dist/lib/components/Editor/nodes/nodes.d.ts.map +1 -0
- package/dist/lib/components/Editor/nodes.d.ts +2 -0
- package/dist/lib/components/Editor/nodes.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/actions-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/actions/actions-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/actions/character-limit-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/clear-editor-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/clear-editor-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/actions/counter-character-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/edit-mode-toggle-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/edit-mode-toggle-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/import-export-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/import-export-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/markdown-toggle-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/actions/markdown-toggle-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/share-content-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/actions/share-content-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/speech-to-text-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/actions/speech-to-text-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/actions/tree-view-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/actions/tree-view-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/auto-link-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/auto-link-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/autocomplete-plugin.d.ts +11 -0
- package/dist/lib/components/Editor/plugins/autocomplete-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/code-action-menu-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/code-action-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/code-highlight-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/code-highlight-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts +9 -0
- package/dist/lib/components/Editor/plugins/component-picker-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/context-menu-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/context-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/drag-drop-paste-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/drag-drop-paste-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/draggable-block-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts +18 -0
- package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/embeds/twitter-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/emoji-picker-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/emoji-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts +7 -0
- package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/images-plugin.d.ts +25 -0
- package/dist/lib/components/Editor/plugins/images-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/layout-plugin.d.ts +13 -0
- package/dist/lib/components/Editor/plugins/layout-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/link-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/link-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/alignment-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/bulleted-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/bulleted-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/check-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/check-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/code-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/code-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/columns-layout-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/columns-layout-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-menu-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-menu-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts +17 -0
- package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/divider-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/divider-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/embeds-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/heading-picker-plugin.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/picker/heading-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/image-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/image-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/numbered-list-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/numbered-list-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/paragraph-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/paragraph-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/quote-picker-plugin.d.ts +3 -0
- package/dist/lib/components/Editor/plugins/picker/quote-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/picker/table-picker-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/plugins.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/plugins.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/table-plugin.d.ts +34 -0
- package/dist/lib/components/Editor/plugins/table-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/block-format-data.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/block-format-data.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-bulleted-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-bulleted-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-check-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-check-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-code-block.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-code-block.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-heading.d.ts +5 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-heading.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-numbered-list.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-numbered-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-paragraph.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-paragraph.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-quote.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format/format-quote.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-columns-layout.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-columns-layout.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-embeds.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-embeds.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-horizontal-rule.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-horizontal-rule.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-image.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-image.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-table.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert/insert-table.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/block-insert-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/code-language-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/code-language-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/element-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-background-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-background-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-color-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-color-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-family-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-family-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-format-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-format-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-size-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/font-size-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/history-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/history-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/horizontal-rule-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/horizontal-rule-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/image-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/image-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/toolbar/link-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/subsuper-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/subsuper-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/table-toolbar-plugin.d.ts +2 -0
- package/dist/lib/components/Editor/plugins/toolbar/table-toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts +6 -0
- package/dist/lib/components/Editor/plugins/toolbar/toolbar-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts +4 -0
- package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts.map +1 -0
- package/dist/lib/components/Editor/plugins.d.ts +2 -0
- package/dist/lib/components/Editor/plugins.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/can-use-dom.d.ts +2 -0
- package/dist/lib/components/Editor/shared/can-use-dom.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/caret-from-point.d.ts +5 -0
- package/dist/lib/components/Editor/shared/caret-from-point.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/environment.d.ts +18 -0
- package/dist/lib/components/Editor/shared/environment.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/invariant.d.ts +2 -0
- package/dist/lib/components/Editor/shared/invariant.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/normalize-class-names.d.ts +2 -0
- package/dist/lib/components/Editor/shared/normalize-class-names.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/react-patches.d.ts +2 -0
- package/dist/lib/components/Editor/shared/react-patches.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/react-test-utils.d.ts +3 -0
- package/dist/lib/components/Editor/shared/react-test-utils.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts +6 -0
- package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/use-layout-effect.d.ts +4 -0
- package/dist/lib/components/Editor/shared/use-layout-effect.d.ts.map +1 -0
- package/dist/lib/components/Editor/shared/warn-only-once.d.ts +2 -0
- package/dist/lib/components/Editor/shared/warn-only-once.d.ts.map +1 -0
- package/dist/lib/components/Editor/themes/editor-theme.d.ts +3 -0
- package/dist/lib/components/Editor/themes/editor-theme.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/index.d.ts +16 -0
- package/dist/lib/components/Editor/transformers/index.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-emoji-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-emoji-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-hr-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-hr-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-image-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-image-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/transformers/markdown-tweet-transformer.d.ts +3 -0
- package/dist/lib/components/Editor/transformers/markdown-tweet-transformer.d.ts.map +1 -0
- package/dist/lib/components/Editor/types.d.ts +23 -0
- package/dist/lib/components/Editor/types.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/can-use-dom.d.ts +2 -0
- package/dist/lib/components/Editor/utils/can-use-dom.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/collapsible.d.ts +3 -0
- package/dist/lib/components/Editor/utils/collapsible.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/doc-serialization.d.ts +4 -0
- package/dist/lib/components/Editor/utils/doc-serialization.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/emoji-list.d.ts +21 -0
- package/dist/lib/components/Editor/utils/emoji-list.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts +2 -0
- package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/get-selected-node.d.ts +3 -0
- package/dist/lib/components/Editor/utils/get-selected-node.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/guard.d.ts +2 -0
- package/dist/lib/components/Editor/utils/guard.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts +2 -0
- package/dist/lib/components/Editor/utils/is-mobile-width.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts +2 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts +2 -0
- package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/swipe.d.ts +5 -0
- package/dist/lib/components/Editor/utils/swipe.d.ts.map +1 -0
- package/dist/lib/components/Editor/utils/url.d.ts +3 -0
- package/dist/lib/components/Editor/utils/url.d.ts.map +1 -0
- package/dist/lib/components/Empty/Empty.d.ts +12 -0
- package/dist/lib/components/Empty/Empty.d.ts.map +1 -0
- package/dist/lib/components/Empty/index.d.ts +3 -0
- package/dist/lib/components/Empty/index.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/ErrorBoundary.d.ts +7 -0
- package/dist/lib/components/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/ErrorPage.d.ts +38 -0
- package/dist/lib/components/ErrorBoundary/ErrorPage.d.ts.map +1 -0
- package/dist/lib/components/ErrorBoundary/index.d.ts +3 -0
- package/dist/lib/components/ErrorBoundary/index.d.ts.map +1 -0
- package/dist/lib/components/FilePreview/FilePreview.d.ts +8 -0
- package/dist/lib/components/FilePreview/FilePreview.d.ts.map +1 -0
- package/dist/lib/components/FilePreview/index.d.ts +2 -0
- package/dist/lib/components/FilePreview/index.d.ts.map +1 -0
- package/dist/lib/components/Form/Form.d.ts +5 -3
- package/dist/lib/components/Form/Form.d.ts.map +1 -1
- package/dist/lib/components/HierarchyGraph/HierarchyGraph.d.ts +24 -0
- package/dist/lib/components/HierarchyGraph/HierarchyGraph.d.ts.map +1 -0
- package/dist/lib/components/HierarchyGraph/index.d.ts +5 -0
- package/dist/lib/components/HierarchyGraph/index.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/PageHeader.d.ts +8 -0
- package/dist/lib/components/PageHeader/PageHeader.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/PageHeaderSkeleton.d.ts +10 -0
- package/dist/lib/components/PageHeader/PageHeaderSkeleton.d.ts.map +1 -0
- package/dist/lib/components/PageHeader/index.d.ts +3 -0
- package/dist/lib/components/PageHeader/index.d.ts.map +1 -0
- package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
- package/dist/lib/components/RadioGroup/RadioGroup.d.ts +23 -0
- package/dist/lib/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/lib/components/RadioGroup/index.d.ts +3 -0
- package/dist/lib/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/lib/components/Select/Select.d.ts +8 -10
- package/dist/lib/components/Select/Select.d.ts.map +1 -1
- package/dist/lib/components/Select/SelectFilter.d.ts +20 -0
- package/dist/lib/components/Select/SelectFilter.d.ts.map +1 -0
- package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts +3 -1
- package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts +13 -6
- package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts.map +1 -1
- package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts +17 -1
- package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts.map +1 -1
- package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts +9 -2
- package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts.map +1 -1
- package/dist/lib/components/Select/hooks/useMultiSelect.d.ts +2 -1
- package/dist/lib/components/Select/hooks/useMultiSelect.d.ts.map +1 -1
- package/dist/lib/components/Select/hooks/useSelect.d.ts +3 -1
- package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -1
- package/dist/lib/components/Select/hooks/useSingleSelect.d.ts +2 -1
- package/dist/lib/components/Select/hooks/useSingleSelect.d.ts.map +1 -1
- package/dist/lib/components/Select/index.d.ts +4 -2
- package/dist/lib/components/Select/index.d.ts.map +1 -1
- package/dist/lib/components/Select/types.d.ts +8 -1
- package/dist/lib/components/Select/types.d.ts.map +1 -1
- package/dist/lib/components/Sidebar/Sidebar.d.ts +24 -0
- package/dist/lib/components/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/lib/components/Sidebar/index.d.ts +2 -0
- package/dist/lib/components/Sidebar/index.d.ts.map +1 -0
- package/dist/lib/components/Sortable/Sortable.d.ts +39 -0
- package/dist/lib/components/Sortable/Sortable.d.ts.map +1 -0
- package/dist/lib/components/Sortable/index.d.ts +3 -0
- package/dist/lib/components/Sortable/index.d.ts.map +1 -0
- package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts +12 -0
- package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts.map +1 -0
- package/dist/lib/components/StepProgressIndicator/index.d.ts +3 -0
- package/dist/lib/components/StepProgressIndicator/index.d.ts.map +1 -0
- package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
- package/dist/lib/components/Tabs/Tabs.d.ts +27 -0
- package/dist/lib/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/lib/components/Tabs/TabsSkeleton.d.ts +11 -0
- package/dist/lib/components/Tabs/TabsSkeleton.d.ts.map +1 -0
- package/dist/lib/components/Tabs/index.d.ts +3 -0
- package/dist/lib/components/Tabs/index.d.ts.map +1 -0
- package/dist/lib/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/lib/components/UploadFile/UploadFile.d.ts +26 -0
- package/dist/lib/components/UploadFile/UploadFile.d.ts.map +1 -0
- package/dist/lib/components/UploadFile/index.d.ts +2 -0
- package/dist/lib/components/UploadFile/index.d.ts.map +1 -0
- package/dist/lib/components/ValueFilter/ValueFilter.d.ts +11 -0
- package/dist/lib/components/ValueFilter/ValueFilter.d.ts.map +1 -0
- package/dist/lib/components/ValueFilter/index.d.ts +3 -0
- package/dist/lib/components/ValueFilter/index.d.ts.map +1 -0
- package/dist/lib/components/ViewTabs/ViewTabs.d.ts +23 -0
- package/dist/lib/components/ViewTabs/ViewTabs.d.ts.map +1 -0
- package/dist/lib/components/ViewTabs/index.d.ts +3 -0
- package/dist/lib/components/ViewTabs/index.d.ts.map +1 -0
- package/dist/lib/components/index.d.ts +19 -0
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/config/index.d.ts +6 -0
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/context/ConfirmContext.d.ts +21 -0
- package/dist/lib/context/ConfirmContext.d.ts.map +1 -0
- package/dist/lib/context/index.d.ts +1 -0
- package/dist/lib/context/index.d.ts.map +1 -1
- package/dist/lib/hooks/index.d.ts +5 -0
- package/dist/lib/hooks/index.d.ts.map +1 -1
- package/dist/lib/hooks/useConfirm.d.ts +4 -0
- package/dist/lib/hooks/useConfirm.d.ts.map +1 -0
- package/dist/lib/hooks/useDialog.d.ts +11 -0
- package/dist/lib/hooks/useDialog.d.ts.map +1 -0
- package/dist/lib/hooks/useIsMobile.d.ts +2 -0
- package/dist/lib/hooks/useIsMobile.d.ts.map +1 -0
- package/dist/lib/hooks/useSlugParams.d.ts +12 -0
- package/dist/lib/hooks/useSlugParams.d.ts.map +1 -0
- package/dist/lib/hooks/useTimer.d.ts +6 -0
- package/dist/lib/hooks/useTimer.d.ts.map +1 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/selects/app/AppFilter.d.ts +11 -0
- package/dist/lib/selects/app/AppFilter.d.ts.map +1 -0
- package/dist/lib/selects/app/AppSelector.d.ts +4 -0
- package/dist/lib/selects/app/AppSelector.d.ts.map +1 -0
- package/dist/lib/selects/app/index.d.ts +3 -0
- package/dist/lib/selects/app/index.d.ts.map +1 -0
- package/dist/lib/selects/app-code/AppCodeFilter.d.ts +11 -0
- package/dist/lib/selects/app-code/AppCodeFilter.d.ts.map +1 -0
- package/dist/lib/selects/app-code/AppCodeSelector.d.ts +4 -0
- package/dist/lib/selects/app-code/AppCodeSelector.d.ts.map +1 -0
- package/dist/lib/selects/app-code/index.d.ts +3 -0
- package/dist/lib/selects/app-code/index.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/CloudProviderFilter.d.ts +11 -0
- package/dist/lib/selects/cloud-provider/CloudProviderFilter.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/CloudProviderSelector.d.ts +4 -0
- package/dist/lib/selects/cloud-provider/CloudProviderSelector.d.ts.map +1 -0
- package/dist/lib/selects/cloud-provider/index.d.ts +3 -0
- package/dist/lib/selects/cloud-provider/index.d.ts.map +1 -0
- package/dist/lib/selects/currency/CurrencyFilter.d.ts +11 -0
- package/dist/lib/selects/currency/CurrencyFilter.d.ts.map +1 -0
- package/dist/lib/selects/currency/CurrencySelector.d.ts +4 -0
- package/dist/lib/selects/currency/CurrencySelector.d.ts.map +1 -0
- package/dist/lib/selects/currency/currencies.d.ts +3 -0
- package/dist/lib/selects/currency/currencies.d.ts.map +1 -0
- package/dist/lib/selects/currency/index.d.ts +3 -0
- package/dist/lib/selects/currency/index.d.ts.map +1 -0
- package/dist/lib/selects/deployment/DeploymentFilter.d.ts +11 -0
- package/dist/lib/selects/deployment/DeploymentFilter.d.ts.map +1 -0
- package/dist/lib/selects/deployment/DeploymentSelector.d.ts +4 -0
- package/dist/lib/selects/deployment/DeploymentSelector.d.ts.map +1 -0
- package/dist/lib/selects/deployment/index.d.ts +3 -0
- package/dist/lib/selects/deployment/index.d.ts.map +1 -0
- package/dist/lib/selects/feature/FeatureFilter.d.ts +11 -0
- package/dist/lib/selects/feature/FeatureFilter.d.ts.map +1 -0
- package/dist/lib/selects/feature/FeatureSelector.d.ts +4 -0
- package/dist/lib/selects/feature/FeatureSelector.d.ts.map +1 -0
- package/dist/lib/selects/feature/index.d.ts +3 -0
- package/dist/lib/selects/feature/index.d.ts.map +1 -0
- package/dist/lib/selects/index.d.ts +12 -0
- package/dist/lib/selects/index.d.ts.map +1 -0
- package/dist/lib/selects/industry/IndustryFilter.d.ts +11 -0
- package/dist/lib/selects/industry/IndustryFilter.d.ts.map +1 -0
- package/dist/lib/selects/industry/IndustrySelector.d.ts +4 -0
- package/dist/lib/selects/industry/IndustrySelector.d.ts.map +1 -0
- package/dist/lib/selects/industry/index.d.ts +3 -0
- package/dist/lib/selects/industry/index.d.ts.map +1 -0
- package/dist/lib/selects/locale/LocaleFilter.d.ts +11 -0
- package/dist/lib/selects/locale/LocaleFilter.d.ts.map +1 -0
- package/dist/lib/selects/locale/LocaleSelector.d.ts +4 -0
- package/dist/lib/selects/locale/LocaleSelector.d.ts.map +1 -0
- package/dist/lib/selects/locale/index.d.ts +3 -0
- package/dist/lib/selects/locale/index.d.ts.map +1 -0
- package/dist/lib/selects/locale/locales.d.ts +3 -0
- package/dist/lib/selects/locale/locales.d.ts.map +1 -0
- package/dist/lib/selects/microfrontend/MicrofrontendSelector.d.ts +4 -0
- package/dist/lib/selects/microfrontend/MicrofrontendSelector.d.ts.map +1 -0
- package/dist/lib/selects/microfrontend/index.d.ts +2 -0
- package/dist/lib/selects/microfrontend/index.d.ts.map +1 -0
- package/dist/lib/selects/plan/PlanFilter.d.ts +11 -0
- package/dist/lib/selects/plan/PlanFilter.d.ts.map +1 -0
- package/dist/lib/selects/plan/PlanSelector.d.ts +4 -0
- package/dist/lib/selects/plan/PlanSelector.d.ts.map +1 -0
- package/dist/lib/selects/plan/index.d.ts +3 -0
- package/dist/lib/selects/plan/index.d.ts.map +1 -0
- package/dist/lib/selects/region/RegionFilter.d.ts +11 -0
- package/dist/lib/selects/region/RegionFilter.d.ts.map +1 -0
- package/dist/lib/selects/region/RegionSelector.d.ts +4 -0
- package/dist/lib/selects/region/RegionSelector.d.ts.map +1 -0
- package/dist/lib/selects/region/index.d.ts +3 -0
- package/dist/lib/selects/region/index.d.ts.map +1 -0
- package/dist/lib/selects/timezone/TimezoneFilter.d.ts +11 -0
- package/dist/lib/selects/timezone/TimezoneFilter.d.ts.map +1 -0
- package/dist/lib/selects/timezone/TimezoneSelector.d.ts +4 -0
- package/dist/lib/selects/timezone/TimezoneSelector.d.ts.map +1 -0
- package/dist/lib/selects/timezone/index.d.ts +3 -0
- package/dist/lib/selects/timezone/index.d.ts.map +1 -0
- package/dist/lib/selects/timezone/timezones.d.ts +3 -0
- package/dist/lib/selects/timezone/timezones.d.ts.map +1 -0
- package/dist/lib/services/table-views.service.d.ts +25 -0
- package/dist/lib/services/table-views.service.d.ts.map +1 -0
- package/dist/lib/types/api-response.d.ts +21 -0
- package/dist/lib/types/api-response.d.ts.map +1 -0
- package/dist/lib/types/table-filter.d.ts +41 -0
- package/dist/lib/types/table-filter.d.ts.map +1 -0
- package/dist/lib/utils/axios.d.ts.map +1 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/motion.d.ts +2 -0
- package/dist/lib/utils/motion.d.ts.map +1 -0
- package/dist/lib/utils/slug.d.ts +7 -0
- package/dist/lib/utils/slug.d.ts.map +1 -0
- package/dist/plus.js +18 -0
- package/dist/plus.js.map +1 -0
- package/dist/popover.js +3 -299
- package/dist/popover.js.map +1 -1
- package/dist/proxy.js +11392 -0
- package/dist/proxy.js.map +1 -0
- package/dist/react-error-boundary.js +67 -0
- package/dist/react-error-boundary.js.map +1 -0
- package/dist/select2.js +116 -0
- package/dist/select2.js.map +1 -0
- package/dist/selects/app-code.js +37 -0
- package/dist/selects/app-code.js.map +1 -0
- package/dist/selects/app.js +2 -0
- package/dist/selects/app.js.map +1 -0
- package/dist/selects/cloud-provider.js +2 -0
- package/dist/selects/cloud-provider.js.map +1 -0
- package/dist/selects/currency.js +2 -0
- package/dist/selects/currency.js.map +1 -0
- package/dist/selects/deployment.js +2 -0
- package/dist/selects/deployment.js.map +1 -0
- package/dist/selects/feature.js +2 -0
- package/dist/selects/feature.js.map +1 -0
- package/dist/selects/industry.js +2 -0
- package/dist/selects/industry.js.map +1 -0
- package/dist/selects/locale.js +2 -0
- package/dist/selects/locale.js.map +1 -0
- package/dist/selects/microfrontend.js +2 -0
- package/dist/selects/microfrontend.js.map +1 -0
- package/dist/selects/plan.js +2 -0
- package/dist/selects/plan.js.map +1 -0
- package/dist/selects/region.js +2 -0
- package/dist/selects/region.js.map +1 -0
- package/dist/selects/timezone.js +2 -0
- package/dist/selects/timezone.js.map +1 -0
- package/dist/separator2.js +2 -28
- package/dist/separator2.js.map +1 -1
- package/dist/shadcn/index.d.ts +2 -0
- package/dist/shadcn/index.d.ts.map +1 -1
- package/dist/shadcn/shadcnBreadcrumb/breadcrumb.d.ts +18 -0
- package/dist/shadcn/shadcnBreadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/shadcn/shadcnBreadcrumb/index.d.ts +2 -0
- package/dist/shadcn/shadcnBreadcrumb/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnCalendar/calendar.d.ts +1 -1
- package/dist/shadcn/shadcnCalendar/calendar.d.ts.map +1 -1
- package/dist/shadcn/shadcnChart/Chart.d.ts +2 -2
- package/dist/shadcn/shadcnChart/Chart.d.ts.map +1 -1
- package/dist/shadcn/shadcnCollapsible/collapsible.d.ts +7 -0
- package/dist/shadcn/shadcnCollapsible/collapsible.d.ts.map +1 -0
- package/dist/shadcn/shadcnCollapsible/index.d.ts +2 -0
- package/dist/shadcn/shadcnCollapsible/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnDialog/dialog.d.ts +20 -0
- package/dist/shadcn/shadcnDialog/dialog.d.ts.map +1 -0
- package/dist/shadcn/shadcnDialog/index.d.ts +2 -0
- package/dist/shadcn/shadcnDialog/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts +1 -1
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts.map +1 -1
- package/dist/shadcn/shadcnForm/form.d.ts +1 -1
- package/dist/shadcn/shadcnForm/form.d.ts.map +1 -1
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts +1 -1
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts.map +1 -1
- package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts +1 -1
- package/dist/shadcn/shadcnMultiSelect/multi-select.d.ts.map +1 -1
- package/dist/shadcn/shadcnProgress/Progress.d.ts +1 -1
- package/dist/shadcn/shadcnProgress/Progress.d.ts.map +1 -1
- package/dist/shadcn/shadcnRadioGroup/RadioGroup.d.ts +6 -0
- package/dist/shadcn/shadcnRadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/shadcn/shadcnRadioGroup/index.d.ts +2 -0
- package/dist/shadcn/shadcnRadioGroup/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSheet/sheet.d.ts +1 -1
- package/dist/shadcn/shadcnSheet/sheet.d.ts.map +1 -1
- package/dist/shadcn/shadcnSidebar/index.d.ts +2 -0
- package/dist/shadcn/shadcnSidebar/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSidebar/sidebar.d.ts +86 -0
- package/dist/shadcn/shadcnSidebar/sidebar.d.ts.map +1 -0
- package/dist/shadcn/shadcnSingleSelect/single-select.d.ts +2 -1
- package/dist/shadcn/shadcnSingleSelect/single-select.d.ts.map +1 -1
- package/dist/shadcn/shadcnSwitch/Switch.d.ts.map +1 -1
- package/dist/shadcn/shadcnTable/table.d.ts +1 -1
- package/dist/shadcn/shadcnTable/table.d.ts.map +1 -1
- package/dist/shadcn/shadcnTabs/index.d.ts +2 -0
- package/dist/shadcn/shadcnTabs/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTabs/tabs.d.ts +8 -0
- package/dist/shadcn/shadcnTabs/tabs.d.ts.map +1 -0
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts +1 -1
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts.map +1 -1
- package/dist/share-2.js +42 -0
- package/dist/share-2.js.map +1 -0
- package/dist/text-align-justify.js +34 -0
- package/dist/text-align-justify.js.map +1 -0
- package/dist/trash-2.js +55 -0
- package/dist/trash-2.js.map +1 -0
- package/dist/types/api-response.js +2 -0
- package/dist/types/api-response.js.map +1 -0
- package/dist/types/table-filter.js +17 -0
- package/dist/types/table-filter.js.map +1 -0
- package/dist/upload.js +19 -0
- package/dist/upload.js.map +1 -0
- package/dist/useConfirm.js +37 -0
- package/dist/useConfirm.js.map +1 -0
- package/dist/useDataTable.js +26545 -0
- package/dist/useDataTable.js.map +1 -0
- package/dist/useIsMobile.js +19 -0
- package/dist/useIsMobile.js.map +1 -0
- package/dist/{useSSE.js → useTimer.js} +33 -3
- package/dist/useTimer.js.map +1 -0
- package/dist/utils/axios.js +2 -4167
- package/dist/utils/axios.js.map +1 -1
- package/dist/utils/motion.js +4425 -0
- package/dist/utils/motion.js.map +1 -0
- package/dist/utils/slug.js +15 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils.js +3137 -3750
- package/dist/utils.js.map +1 -1
- package/dist/value.js +820 -0
- package/dist/value.js.map +1 -0
- package/package.json +186 -3
- package/dist/lib/components/DataTable/components/DataTableToolbar.d.ts +0 -15
- package/dist/lib/components/DataTable/components/DataTableToolbar.d.ts.map +0 -1
- package/dist/useSSE.js.map +0 -1
- package/dist/utils2.js +0 -3042
- package/dist/utils2.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../shadcn/shadcnMultiSelect/multi-select.tsx","../lib/components/Select/hooks/useMultiSelect.ts","../lib/components/Select/components/MultiSelect/MultiSelect.tsx","../node_modules/.pnpm/react-intersection-observer@10.0.3_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/react-intersection-observer/dist/index.mjs","../lib/components/Select/hooks/useSelect.ts","../lib/components/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDownIcon, SearchIcon } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef, memo } from 'react';\n\nimport { Checkbox } from '../shadcnCheckbox';\nimport { Popover, PopoverContent, PopoverTrigger } from '../shadcnPopover';\nimport { cn } from '../utils';\n\n// MultiSelectRoot — wraps Radix Popover to provide open/close state\ninterface MultiSelectRootProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n children: React.ReactNode;\n}\n\nfunction MultiSelectRoot({ open, onOpenChange, disabled, children }: MultiSelectRootProps) {\n return (\n <Popover data-slot=\"multi-select\" open={disabled ? false : open} onOpenChange={disabled ? undefined : onOpenChange}>\n {children}\n </Popover>\n );\n}\n\n// MultiSelectTrigger — styled trigger button that mirrors SelectTrigger\ninterface MultiSelectTriggerProps extends React.ComponentProps<'button'> {\n className?: string;\n open?: boolean;\n listboxId?: string;\n}\n\nconst MultiSelectTrigger = forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n ({ className, children, disabled, open, listboxId, ...props }, ref) => {\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n data-slot=\"multi-select-trigger\"\n role=\"combobox\"\n aria-expanded={open ?? false}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n disabled={disabled}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n 'min-h-9',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nMultiSelectTrigger.displayName = 'MultiSelectTrigger';\n\n// MultiSelectContent — styled dropdown panel wrapping PopoverContent\ninterface MultiSelectContentProps extends React.ComponentProps<typeof PopoverContent> {\n className?: string;\n}\n\nfunction MultiSelectContent({ className, children, align = 'start', ...props }: MultiSelectContentProps) {\n return (\n <PopoverContent\n data-slot=\"multi-select-content\"\n align={align}\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', className)}\n {...props}\n >\n {children}\n </PopoverContent>\n );\n}\n\n// MultiSelectSearch — search input for filtering options (stateless)\ninterface MultiSelectSearchProps {\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n}\n\nfunction MultiSelectSearch({ value, onValueChange, placeholder = 'Search...', className }: MultiSelectSearchProps) {\n return (\n <div data-slot=\"multi-select-search\" className={cn('flex items-center gap-2 border-b px-3', className)}>\n <SearchIcon className=\"size-4 shrink-0 text-muted-foreground\" />\n <input\n type=\"text\"\n aria-label=\"Search options\"\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n placeholder={placeholder}\n className=\"flex h-9 w-full bg-transparent py-2 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </div>\n );\n}\n\n// MultiSelectActions — Select All / Clear action bar\ninterface MultiSelectActionsProps {\n onSelectAll: () => void;\n onClear: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nfunction MultiSelectActions({ onSelectAll, onClear, disabled, className }: MultiSelectActionsProps) {\n return (\n <div\n data-slot=\"multi-select-actions\"\n className={cn('flex items-center justify-between border-t px-3 py-1.5', className)}\n >\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-primary hover:text-primary/80 disabled:pointer-events-none disabled:opacity-50\"\n onClick={onSelectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n disabled={disabled}\n className=\"text-xs font-medium text-muted-foreground hover:text-foreground disabled:pointer-events-none disabled:opacity-50\"\n onClick={onClear}\n >\n Clear\n </button>\n </div>\n );\n}\n\n// MultiSelectList — scrollable listbox container for option rows\ninterface MultiSelectListProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectList({ className, children, ...props }: MultiSelectListProps) {\n return (\n <div\n data-slot=\"multi-select-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cn('max-h-60 overflow-y-auto p-1', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectRow — a single option row with a checkbox\ninterface MultiSelectRowProps {\n name: string;\n checked: boolean;\n onToggle: () => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiSelectRow = memo(function MultiSelectRow({\n name,\n checked,\n onToggle,\n disabled,\n className,\n}: MultiSelectRowProps) {\n function handleClick() {\n if (!disabled) {\n onToggle();\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onToggle();\n }\n }\n\n return (\n <div\n data-slot=\"multi-select-row\"\n role=\"option\"\n aria-selected={checked}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n data-disabled={disabled ? '' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n <Checkbox\n checked={checked}\n onCheckedChange={() => onToggle()}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n <span className=\"truncate\">{name}</span>\n </div>\n );\n});\n\n// MultiSelectGroup — wraps a group of rows with a role=\"group\" container\ninterface MultiSelectGroupProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroup({ className, children, ...props }: MultiSelectGroupProps) {\n return (\n <div data-slot=\"multi-select-group\" role=\"group\" className={cn(className)} {...props}>\n {children}\n </div>\n );\n}\n\n// MultiSelectGroupLabel — styled label for a group header\ninterface MultiSelectGroupLabelProps extends React.ComponentProps<'div'> {\n className?: string;\n}\n\nfunction MultiSelectGroupLabel({ className, children, ...props }: MultiSelectGroupLabelProps) {\n return (\n <div\n data-slot=\"multi-select-group-label\"\n className={cn('text-muted-foreground px-2 py-1.5 text-xs', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// MultiSelectEmpty — displayed when no options match a search filter\ninterface MultiSelectEmptyProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nfunction MultiSelectEmpty({ children, className }: MultiSelectEmptyProps) {\n return (\n <div\n data-slot=\"multi-select-empty\"\n className={cn('flex items-center justify-center py-6 text-sm text-muted-foreground', className)}\n >\n {children ?? 'No options found.'}\n </div>\n );\n}\n\nexport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n};\n\nexport type {\n MultiSelectActionsProps,\n MultiSelectContentProps,\n MultiSelectEmptyProps,\n MultiSelectGroupLabelProps,\n MultiSelectGroupProps,\n MultiSelectListProps,\n MultiSelectRootProps,\n MultiSelectRowProps,\n MultiSelectSearchProps,\n MultiSelectTriggerProps,\n};\n","import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { SelectGroup, SelectOption, SelectValue } from '../types';\n\ninterface UseMultiSelectStateProps {\n options: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n defaultValue?: SelectValue[];\n remoteSearch?: boolean;\n}\n\n// Manages controlled/uncontrolled multi-select state, search filtering, and grouping\nexport function useMultiSelect({\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch,\n}: UseMultiSelectStateProps) {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState<SelectValue[]>(defaultValue ?? []);\n const selectedValues = isControlled ? controlledValue : internalValue;\n const selectedSet = useMemo(() => new Set<SelectValue>(selectedValues), [selectedValues]);\n\n // Ref to latest selectedValues so callbacks stay reference-stable\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n const [open, setOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const listboxId = useId();\n\n const optionMap = useMemo(() => {\n const map = new Map<SelectValue, SelectOption>();\n for (const option of options) {\n map.set(option.value, option);\n }\n return map;\n }, [options]);\n\n const filteredOptions = useMemo(() => {\n if (remoteSearch || !searchQuery) return options;\n const lower = searchQuery.toLowerCase();\n return options.filter((option) => option.label.toLowerCase().includes(lower));\n }, [options, searchQuery, remoteSearch]);\n\n const updateSelection = useCallback(\n (nextValues: SelectValue[]) => {\n if (!isControlled) {\n setInternalValue(nextValues);\n }\n onChange?.(nextValues);\n },\n [isControlled, onChange],\n );\n\n // Toggle a single option on or off\n const toggleOption = useCallback(\n (optionValue: SelectValue) => {\n const option = optionMap.get(optionValue);\n if (option?.disabled) return;\n const current = selectedValuesRef.current;\n const nextValues = current.includes(optionValue)\n ? current.filter((v) => v !== optionValue)\n : [...current, optionValue];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n },\n [optionMap, updateSelection, onOptionsSelect],\n );\n\n // Preserve already-selected disabled options when selecting all\n const selectAll = useCallback(() => {\n const enabledValues = options.filter((o) => !o.disabled).map((o) => o.value);\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const nextValues = [...new Set([...currentDisabledValues, ...enabledValues])];\n const nextOptions = nextValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(nextOptions);\n updateSelection(nextValues);\n }, [options, optionMap, updateSelection, onOptionsSelect]);\n\n // Retain disabled options that are currently selected when clearing\n const clearAll = useCallback(() => {\n const currentDisabledValues = selectedValuesRef.current.filter((v) => optionMap.get(v)?.disabled);\n const remainingOptions = currentDisabledValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[];\n onOptionsSelect?.(remainingOptions);\n updateSelection(currentDisabledValues);\n }, [optionMap, updateSelection, onOptionsSelect]);\n\n // Reset search when popover closes\n useEffect(() => {\n if (!open) {\n setSearchQuery('');\n }\n }, [open]);\n\n // Map selected values to their option objects for display\n const selectedOptions = useMemo(\n () => selectedValues.map((v) => optionMap.get(v)).filter(Boolean) as SelectOption[],\n [selectedValues, optionMap],\n );\n\n // O(n + g) grouping — one pass over groups, one pass over options\n const grouped = useMemo(() => {\n if (!groups || groups.length === 0) return null;\n\n const buckets = new Map<string | number, SelectOption[]>();\n for (const g of groups) {\n buckets.set(g.id, []);\n }\n\n const ungrouped: SelectOption[] = [];\n for (const option of filteredOptions) {\n const bucket = option.groupId != null ? buckets.get(option.groupId) : undefined;\n if (bucket) {\n bucket.push(option);\n } else {\n ungrouped.push(option);\n }\n }\n\n const entries: Array<{ name: string; options: SelectOption[] }> = [];\n for (const g of groups) {\n const bucket = buckets.get(g.id);\n if (!bucket || bucket.length === 0) continue;\n entries.push({ name: g.name, options: bucket });\n }\n\n return { ungrouped, entries };\n }, [filteredOptions, groups]);\n\n return {\n selectedValues,\n selectedSet,\n selectedOptions,\n open,\n setOpen,\n searchQuery,\n setSearchQuery,\n listboxId,\n filteredOptions,\n grouped,\n toggleOption,\n selectAll,\n clearAll,\n };\n}\n","import { Loader2, X } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport { Badge } from '../../../../../shadcn/shadcnBadge';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n MultiSelectTrigger,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { Field, FieldDescription, FieldError, FieldLabel } from '../../../Field';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface MultiSelectProps {\n label?: string;\n description?: React.ReactNode;\n error?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue[];\n onChange?: (values: SelectValue[]) => void;\n onOptionsSelect?: (options: SelectOption[]) => void;\n onBlur?: () => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue[];\n maxDisplayedItems?: number;\n searchable?: boolean;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n // Called when the popover open state changes\n onOpenChange?: (open: boolean) => void;\n}\n\n// Multi-value select with checkbox options, search, and badge chips\nexport const MultiSelect = forwardRef<HTMLButtonElement, MultiSelectProps>(\n (\n {\n label,\n description,\n error,\n placeholder = 'Select options',\n options,\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n maxDisplayedItems = 3,\n searchable = false,\n searchPlaceholder = 'Search...',\n asyncState,\n onOpenChange,\n },\n ref,\n ) => {\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n onOptionsSelect,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Notifies parent (Select.tsx) of open state changes to gate async queries; clears async search on close\n function handleOpenChange(o: boolean) {\n state.setOpen(o);\n onOpenChange?.(o);\n if (!o) asyncState?.setSearchQuery('');\n }\n\n // Resolve search binding -- async delegates to parent, static uses local state\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n const showSearch = !!asyncState || searchable;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={option.label}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n // Renders badge chips, count summary, or placeholder inside the trigger\n function renderTriggerContent() {\n if (state.selectedOptions.length === 0) {\n return <span className=\"text-muted-foreground\">{placeholder}</span>;\n }\n\n if (state.selectedOptions.length > maxDisplayedItems) {\n return <span className=\"text-sm\">{state.selectedOptions.length} items selected</span>;\n }\n\n return (\n <span className=\"flex flex-wrap items-center gap-1\">\n {state.selectedOptions.map((option) => (\n <Badge key={String(option.value)} variant=\"secondary\" className=\"gap-1 pr-1\">\n {option.label}\n <button\n type=\"button\"\n aria-label={`Remove ${option.label}`}\n className=\"rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n state.toggleOption(option.value);\n }}\n >\n <X className=\"size-3 text-muted-foreground hover:text-foreground\" />\n </button>\n </Badge>\n ))}\n </span>\n );\n }\n\n return (\n <Field>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <MultiSelectRoot open={state.open} onOpenChange={handleOpenChange} disabled={disabled}>\n <MultiSelectTrigger\n ref={ref}\n id={id}\n open={state.open}\n listboxId={state.listboxId}\n aria-invalid={!!error}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={className}\n >\n <span className=\"flex flex-1 flex-wrap items-center gap-1 overflow-hidden\">{renderTriggerContent()}</span>\n </MultiSelectTrigger>\n\n <MultiSelectContent>\n {showSearch && (\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n )}\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n {error && <FieldError>{error}</FieldError>}\n </Field>\n );\n },\n);\n\nMultiSelect.displayName = 'MultiSelect';\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root) return \"0\";\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a2;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n [...(_a2 = elements.get(entry.target)) != null ? _a2 : []].forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"lastInView\");\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n this.lastInView = this.props.initialInView;\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n const previousInView = this.lastInView;\n this.lastInView = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n this.lastInView = props.initialInView;\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n if (this.lastInView === void 0) {\n this.lastInView = this.props.initialInView;\n }\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a2;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef(onChange);\n const lastInViewRef = React2.useRef(initialInView);\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (lastInViewRef.current === void 0) {\n lastInViewRef.current = initialInView;\n }\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-expect-error\n trackVisibility,\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a2 = state.entry) == null ? void 0 : _a2.target;\n const previousEntryTarget = React2.useRef(void 0);\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n lastInViewRef.current = initialInView;\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\n// src/useOnInView.tsx\nimport * as React3 from \"react\";\nvar _a, _b;\nvar useSyncEffect = (_b = (_a = \"useInsertionEffect\" in React3 ? React3.useInsertionEffect : void 0) != null ? _a : React3.useLayoutEffect) != null ? _b : React3.useEffect;\nvar useOnInView = (onIntersectionChange, {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n} = {}) => {\n const onIntersectionChangeRef = React3.useRef(onIntersectionChange);\n const observedElementRef = React3.useRef(null);\n const observerCleanupRef = React3.useRef(void 0);\n const lastInViewRef = React3.useRef(void 0);\n useSyncEffect(() => {\n onIntersectionChangeRef.current = onIntersectionChange;\n }, [onIntersectionChange]);\n return React3.useCallback(\n (element) => {\n const cleanupExisting = () => {\n if (observerCleanupRef.current) {\n const cleanup = observerCleanupRef.current;\n observerCleanupRef.current = void 0;\n cleanup();\n }\n };\n if (element === observedElementRef.current) {\n return observerCleanupRef.current;\n }\n if (!element || skip) {\n cleanupExisting();\n observedElementRef.current = null;\n lastInViewRef.current = void 0;\n return;\n }\n cleanupExisting();\n observedElementRef.current = element;\n let destroyed = false;\n const destroyObserver = observe(\n element,\n (inView, entry) => {\n const previousInView = lastInViewRef.current;\n lastInViewRef.current = inView;\n if (previousInView === void 0 && !inView) {\n return;\n }\n onIntersectionChangeRef.current(\n inView,\n entry\n );\n if (triggerOnce && inView) {\n stopObserving();\n }\n },\n {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay\n }\n );\n function stopObserving() {\n if (destroyed) return;\n destroyed = true;\n destroyObserver();\n observedElementRef.current = null;\n observerCleanupRef.current = void 0;\n lastInViewRef.current = void 0;\n }\n observerCleanupRef.current = stopObserving;\n return observerCleanupRef.current;\n },\n [\n Array.isArray(threshold) ? threshold.toString() : threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n triggerOnce,\n skip\n ]\n );\n};\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView,\n useOnInView\n};\n//# sourceMappingURL=index.mjs.map","import { keepPreviousData, useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { axios } from '../../../utils/axios';\nimport type { SelectFieldKeys, SelectGroup, SelectOption, SelectOptionsResponse, SelectValue } from '../types';\n\nexport interface UseSelectProps {\n options?: SelectOption[];\n groups?: SelectGroup[];\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n selectedValues?: SelectValue[];\n enabled?: boolean;\n}\n\nexport interface UseSelectReturn {\n options: SelectOption[];\n groups: SelectGroup[];\n loading: boolean;\n loadingMore: boolean;\n hasMore: boolean;\n searchQuery: string;\n setSearchQuery: (q: string) => void;\n sentinelRef: (node?: Element | null) => void;\n}\n\nconst NOOP_REF = () => {};\n\n// Stable JSON serialization for query keys (order-independent)\nexport function stableStringify(obj: object | undefined): string {\n if (!obj) return '';\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n// Manages async option fetching with debounced search, sentinel-based infinite scroll, and selected value resolution\nexport function useSelect({\n options: staticOptions,\n groups: staticGroups,\n optionsEndpoint,\n searchDebounceMs = 300,\n limit = 20,\n fieldKeys,\n params,\n selectedValues,\n enabled,\n}: UseSelectProps): UseSelectReturn {\n const isAsync = !!optionsEndpoint;\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedSearch, setDebouncedSearch] = useState('');\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Debounce search input\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n setDebouncedSearch(searchQuery);\n }, searchDebounceMs);\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [searchQuery, searchDebounceMs, isAsync]);\n\n // Serialize selected values to a comma-separated string of IDs (filters out booleans)\n const serializedValues = useMemo(\n () =>\n selectedValues && selectedValues.length > 0\n ? selectedValues.filter((v): v is string | number => typeof v !== 'boolean').join(',')\n : undefined,\n [selectedValues],\n );\n\n // Query 1: Resolve selected values to full option objects\n const { data: resolvedSelected } = useQuery({\n queryKey: [\n 'select-resolve',\n optionsEndpoint,\n stableStringify(fieldKeys),\n stableStringify(params),\n JSON.stringify(selectedValues),\n ],\n queryFn: () =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: { values: serializedValues, ...fieldKeys, ...params },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n enabled: isAsync && (selectedValues?.length ?? 0) > 0,\n staleTime: 5 * 60_000,\n placeholderData: keepPreviousData,\n });\n\n // Query 2: Paginated search results, excluding selected IDs\n const { data, isFetching, isFetchingNextPage, fetchNextPage, hasNextPage } = useInfiniteQuery({\n queryKey: ['select-search', optionsEndpoint, debouncedSearch, stableStringify(fieldKeys), stableStringify(params)],\n queryFn: ({ pageParam = 0 }) =>\n axios\n .get<SelectOptionsResponse>(optionsEndpoint ?? '', {\n params: {\n search: debouncedSearch || undefined,\n limit,\n offset: pageParam,\n excludeIds: serializedValues,\n ...fieldKeys,\n ...params,\n },\n showSuccessToast: false,\n showErrorToast: false,\n })\n .then((r) => r.data),\n getNextPageParam: (lastPage, _allPages, lastPageParam) => (lastPage.hasMore ? lastPageParam + limit : undefined),\n initialPageParam: 0,\n enabled: isAsync && (enabled !== false),\n placeholderData: keepPreviousData,\n });\n\n // Merge: resolved selected first, then search results (Set-based dedup)\n const fetchedOptions = useMemo(() => {\n const searchResults = data?.pages.flatMap((p) => p.options) ?? [];\n const selected = resolvedSelected?.options ?? [];\n if (selected.length === 0) return searchResults;\n\n const selectedIdSet = new Set(selected.map((o) => o.value));\n const dedupedSearch = searchResults.filter((o) => !selectedIdSet.has(o.value));\n return [...selected, ...dedupedSearch];\n }, [resolvedSelected, data]);\n\n const fetchedGroups = data?.pages[0]?.groups ?? staticGroups ?? [];\n\n // IntersectionObserver sentinel for infinite scroll\n const { ref: sentinelRef, inView } = useInView();\n useEffect(() => {\n if (inView && hasNextPage && !isFetchingNextPage) {\n fetchNextPage();\n }\n }, [inView, hasNextPage, isFetchingNextPage, fetchNextPage]);\n\n // Static mode\n if (!isAsync) {\n return {\n options: staticOptions ?? [],\n groups: staticGroups ?? [],\n loading: false,\n loadingMore: false,\n hasMore: false,\n searchQuery,\n setSearchQuery,\n sentinelRef: NOOP_REF,\n };\n }\n\n return {\n options: fetchedOptions,\n groups: fetchedGroups,\n loading: isFetching && !isFetchingNextPage,\n loadingMore: isFetchingNextPage,\n hasMore: hasNextPage ?? false,\n searchQuery,\n setSearchQuery,\n sentinelRef,\n };\n}\n","import type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { MultiSelect, type MultiSelectProps } from './components/MultiSelect/MultiSelect';\nimport { SingleSelect, type SingleSelectProps } from './components/SingleSelect/SingleSelect';\nimport { stableStringify, useSelect } from './hooks/useSelect';\nimport type { AsyncSelectState, SelectFieldKeys } from './types';\n\ninterface SelectBaseProps {\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n}\n\nexport interface SelectProps extends Omit<SingleSelectProps & MultiSelectProps, 'value' | 'onChange'>, SelectBaseProps {\n multiple?: boolean;\n value?: SingleSelectProps['value'] | MultiSelectProps['value'];\n onChange?: SingleSelectProps['onChange'] | MultiSelectProps['onChange'];\n}\n\nexport type SelectSingleProps = SelectProps;\nexport type SelectMultiProps = SelectProps;\n\n// Unified select field supporting single/multi selection and default/filter variants\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>((props, ref) => {\n const { multiple, optionsEndpoint, searchDebounceMs, limit, fieldKeys, params, ...rest } = props;\n\n // Params-keyed latch: enabled once opened for the current params, stays enabled until params change\n const [openedForParams, setOpenedForParams] = useState<string | null>(null);\n const currentParamsKey = stableStringify(params);\n const enabled = openedForParams === currentParamsKey;\n\n const selectData = useSelect({\n options: rest.options,\n groups: rest.groups,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n selectedValues: rest.value != null ? (Array.isArray(rest.value) ? rest.value : [rest.value]) : undefined,\n enabled,\n });\n\n const isAsync = !!optionsEndpoint;\n\n const asyncState: AsyncSelectState | undefined = isAsync\n ? {\n loading: selectData.loading,\n loadingMore: selectData.loadingMore,\n hasMore: selectData.hasMore,\n searchQuery: selectData.searchQuery,\n setSearchQuery: selectData.setSearchQuery,\n sentinelRef: selectData.sentinelRef,\n }\n : undefined;\n\n const childProps = {\n ...rest,\n options: selectData.options,\n groups: selectData.groups,\n asyncState,\n };\n\n // Latch open for current params on first open; params change resets enabled via derived state\n const handleOpenChange = (o: boolean) => {\n if (o && openedForParams !== currentParamsKey) setOpenedForParams(currentParamsKey);\n };\n\n if (multiple) {\n return <MultiSelect ref={ref} {...(childProps as MultiSelectProps)} onOpenChange={handleOpenChange} />;\n }\n return <SingleSelect ref={ref} {...(childProps as SingleSelectProps)} onOpenChange={handleOpenChange} />;\n}) as React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;\n\nSelect.displayName = 'Select';\n"],"names":["ChevronDownIcon","SearchIcon","MultiSelectRow","Loader2","React2"],"mappings":"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","x_google_ignoreList":[3]}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, useState } from 'react';
|
|
3
|
+
import { c as cn } from './utils.js';
|
|
4
|
+
import { k as useMultiSelect, g as MultiSelectRoot, b as MultiSelectContent, i as MultiSelectSearch, f as MultiSelectList, a as MultiSelectActions, c as MultiSelectEmpty, d as MultiSelectGroup, e as MultiSelectGroupLabel, h as MultiSelectRow, u as useSelect } from './Select.js';
|
|
5
|
+
import { a as PopoverTrigger } from './popover.js';
|
|
6
|
+
import { X } from './x.js';
|
|
7
|
+
import { C as ChevronDown } from './index4.js';
|
|
8
|
+
import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem } from './select2.js';
|
|
9
|
+
import { L as LoaderCircle } from './loader-circle.js';
|
|
10
|
+
import { u as useSingleSelect, g as SingleSelectRoot, b as SingleSelectContent, i as SingleSelectSearch, f as SingleSelectList, a as SingleSelectClear, c as SingleSelectEmpty, d as SingleSelectGroup, e as SingleSelectGroupLabel, h as SingleSelectRow } from './SingleSelect.js';
|
|
11
|
+
|
|
12
|
+
const DEFAULT_MULTI_OPERATORS = [
|
|
13
|
+
{ value: "isAnyOf", label: "is any of" },
|
|
14
|
+
{ value: "isNotAnyOf", label: "is not any of" }
|
|
15
|
+
];
|
|
16
|
+
const MultiSelectFilter = forwardRef(
|
|
17
|
+
({
|
|
18
|
+
label,
|
|
19
|
+
placeholder,
|
|
20
|
+
options,
|
|
21
|
+
groups,
|
|
22
|
+
value: controlledValue,
|
|
23
|
+
onChange,
|
|
24
|
+
operator: controlledOperator,
|
|
25
|
+
onOperatorChange,
|
|
26
|
+
operators = DEFAULT_MULTI_OPERATORS,
|
|
27
|
+
onBlur,
|
|
28
|
+
name,
|
|
29
|
+
disabled = false,
|
|
30
|
+
required,
|
|
31
|
+
className,
|
|
32
|
+
id,
|
|
33
|
+
defaultValue,
|
|
34
|
+
searchPlaceholder = "Search...",
|
|
35
|
+
asyncState
|
|
36
|
+
}, ref) => {
|
|
37
|
+
const [internalOperator, setInternalOperator] = useState(operators[0]?.value ?? "isAnyOf");
|
|
38
|
+
const activeOperator = controlledOperator ?? internalOperator;
|
|
39
|
+
function handleOperatorChange(value) {
|
|
40
|
+
setInternalOperator(value);
|
|
41
|
+
onOperatorChange?.(value);
|
|
42
|
+
}
|
|
43
|
+
const state = useMultiSelect({
|
|
44
|
+
options: options ?? [],
|
|
45
|
+
groups,
|
|
46
|
+
value: controlledValue,
|
|
47
|
+
onChange,
|
|
48
|
+
defaultValue,
|
|
49
|
+
remoteSearch: !!asyncState
|
|
50
|
+
});
|
|
51
|
+
const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;
|
|
52
|
+
const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;
|
|
53
|
+
function renderRow(option) {
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
MultiSelectRow,
|
|
56
|
+
{
|
|
57
|
+
name: option.label,
|
|
58
|
+
checked: state.selectedSet.has(option.value),
|
|
59
|
+
onToggle: () => {
|
|
60
|
+
state.toggleOption(option.value);
|
|
61
|
+
},
|
|
62
|
+
disabled: option.disabled
|
|
63
|
+
},
|
|
64
|
+
String(option.value)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function renderOptions() {
|
|
68
|
+
if (asyncState?.loading) {
|
|
69
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 py-6", children: [
|
|
70
|
+
/* @__PURE__ */ jsx(LoaderCircle, { className: "size-4 animate-spin text-muted-foreground" }),
|
|
71
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "Loading..." })
|
|
72
|
+
] });
|
|
73
|
+
}
|
|
74
|
+
if (state.filteredOptions.length === 0) {
|
|
75
|
+
return /* @__PURE__ */ jsx(MultiSelectEmpty, {});
|
|
76
|
+
}
|
|
77
|
+
if (!state.grouped) {
|
|
78
|
+
return state.filteredOptions.map(renderRow);
|
|
79
|
+
}
|
|
80
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
81
|
+
state.grouped.ungrouped.map(renderRow),
|
|
82
|
+
state.grouped.entries.map((entry) => /* @__PURE__ */ jsxs(MultiSelectGroup, { children: [
|
|
83
|
+
/* @__PURE__ */ jsx(MultiSelectGroupLabel, { children: entry.name }),
|
|
84
|
+
entry.options.map(renderRow)
|
|
85
|
+
] }, entry.name))
|
|
86
|
+
] });
|
|
87
|
+
}
|
|
88
|
+
if (!name) {
|
|
89
|
+
return /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-md border border-destructive bg-destructive/10 px-3 py-2 text-xs text-destructive", children: "Select: missing required `name` prop" });
|
|
90
|
+
}
|
|
91
|
+
const hasValues = state.selectedValues.length > 0;
|
|
92
|
+
const operatorLabel = operators.find((o) => o.value === activeOperator)?.label ?? activeOperator;
|
|
93
|
+
const triggerText = hasValues ? `${label}: ${operatorLabel} ${state.selectedValues.length} selected` : label ?? placeholder;
|
|
94
|
+
function handleInlineClear(e) {
|
|
95
|
+
e.stopPropagation();
|
|
96
|
+
state.clearAll();
|
|
97
|
+
}
|
|
98
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
99
|
+
/* @__PURE__ */ jsxs(MultiSelectRoot, { open: state.open, onOpenChange: state.setOpen, disabled, children: [
|
|
100
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
101
|
+
"button",
|
|
102
|
+
{
|
|
103
|
+
ref,
|
|
104
|
+
id,
|
|
105
|
+
type: "button",
|
|
106
|
+
role: "combobox",
|
|
107
|
+
"aria-expanded": state.open,
|
|
108
|
+
"aria-haspopup": "listbox",
|
|
109
|
+
"aria-controls": state.listboxId,
|
|
110
|
+
"aria-required": required,
|
|
111
|
+
disabled,
|
|
112
|
+
onBlur,
|
|
113
|
+
className: cn(
|
|
114
|
+
"inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50",
|
|
115
|
+
hasValues ? "bg-primary text-primary-foreground border-primary hover:bg-primary/90" : "border-input bg-transparent hover:bg-accent hover:text-accent-foreground",
|
|
116
|
+
className
|
|
117
|
+
),
|
|
118
|
+
children: [
|
|
119
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: triggerText }),
|
|
120
|
+
hasValues ? /* @__PURE__ */ jsx(X, { className: "size-3.5 shrink-0 opacity-70 hover:opacity-100", onClick: handleInlineClear }) : /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 shrink-0 opacity-50" })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
) }),
|
|
124
|
+
/* @__PURE__ */ jsxs(MultiSelectContent, { className: "w-[250px]", children: [
|
|
125
|
+
label && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b bg-muted/30 px-3 h-[42px] shrink-0", children: [
|
|
126
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: label }),
|
|
127
|
+
/* @__PURE__ */ jsxs(Select, { value: activeOperator, onValueChange: handleOperatorChange, children: [
|
|
128
|
+
/* @__PURE__ */ jsxs(SelectTrigger, { className: "h-auto w-auto gap-1 border-0 bg-transparent p-0 shadow-none text-sm font-medium text-foreground focus-visible:ring-0", children: [
|
|
129
|
+
/* @__PURE__ */ jsx(SelectValue, {}),
|
|
130
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "size-3.5 text-muted-foreground" })
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ jsx(SelectContent, { children: operators.map((op) => /* @__PURE__ */ jsx(SelectItem, { value: op.value, children: op.label }, op.value)) })
|
|
133
|
+
] })
|
|
134
|
+
] }),
|
|
135
|
+
/* @__PURE__ */ jsx(MultiSelectSearch, { value: searchValue, onValueChange: setSearchValue, placeholder: searchPlaceholder }),
|
|
136
|
+
/* @__PURE__ */ jsxs(MultiSelectList, { id: state.listboxId, children: [
|
|
137
|
+
renderOptions(),
|
|
138
|
+
asyncState?.hasMore && /* @__PURE__ */ jsx("div", { ref: asyncState.sentinelRef, className: "h-1" }),
|
|
139
|
+
asyncState?.loadingMore && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 py-2", children: [
|
|
140
|
+
/* @__PURE__ */ jsx(LoaderCircle, { className: "size-3 animate-spin text-muted-foreground" }),
|
|
141
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Loading more..." })
|
|
142
|
+
] })
|
|
143
|
+
] }),
|
|
144
|
+
/* @__PURE__ */ jsx(MultiSelectActions, { onSelectAll: state.selectAll, onClear: state.clearAll, disabled })
|
|
145
|
+
] })
|
|
146
|
+
] }),
|
|
147
|
+
name && state.selectedValues.map((v) => /* @__PURE__ */ jsx("input", { type: "hidden", name, value: String(v) }, String(v)))
|
|
148
|
+
] });
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
MultiSelectFilter.displayName = "MultiSelectFilter";
|
|
152
|
+
|
|
153
|
+
const DEFAULT_OPERATORS = [
|
|
154
|
+
{ value: "equals", label: "equals" },
|
|
155
|
+
{ value: "notEquals", label: "not equals" }
|
|
156
|
+
];
|
|
157
|
+
const SingleSelectFilter = forwardRef(
|
|
158
|
+
({
|
|
159
|
+
label,
|
|
160
|
+
placeholder,
|
|
161
|
+
options,
|
|
162
|
+
groups,
|
|
163
|
+
value: controlledValue,
|
|
164
|
+
onChange,
|
|
165
|
+
operator: controlledOperator,
|
|
166
|
+
onOperatorChange,
|
|
167
|
+
operators = DEFAULT_OPERATORS,
|
|
168
|
+
onBlur,
|
|
169
|
+
name,
|
|
170
|
+
disabled = false,
|
|
171
|
+
required,
|
|
172
|
+
className,
|
|
173
|
+
id,
|
|
174
|
+
defaultValue,
|
|
175
|
+
searchPlaceholder = "Search...",
|
|
176
|
+
asyncState
|
|
177
|
+
}, ref) => {
|
|
178
|
+
const [internalOperator, setInternalOperator] = useState(operators[0]?.value ?? "equals");
|
|
179
|
+
const operator = controlledOperator ?? internalOperator;
|
|
180
|
+
function handleOperatorChange(value) {
|
|
181
|
+
setInternalOperator(value);
|
|
182
|
+
onOperatorChange?.(value);
|
|
183
|
+
}
|
|
184
|
+
const state = useSingleSelect({
|
|
185
|
+
options: options ?? [],
|
|
186
|
+
groups,
|
|
187
|
+
value: controlledValue,
|
|
188
|
+
onChange,
|
|
189
|
+
defaultValue,
|
|
190
|
+
remoteSearch: !!asyncState
|
|
191
|
+
});
|
|
192
|
+
const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;
|
|
193
|
+
const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;
|
|
194
|
+
function renderRow(option) {
|
|
195
|
+
return /* @__PURE__ */ jsx(
|
|
196
|
+
SingleSelectRow,
|
|
197
|
+
{
|
|
198
|
+
name: option.label,
|
|
199
|
+
description: option.description,
|
|
200
|
+
selected: state.selectedValue === option.value,
|
|
201
|
+
onSelect: () => {
|
|
202
|
+
state.selectOption(option.value);
|
|
203
|
+
},
|
|
204
|
+
disabled: option.disabled
|
|
205
|
+
},
|
|
206
|
+
String(option.value)
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
function renderOptions() {
|
|
210
|
+
if (asyncState?.loading) {
|
|
211
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 py-6", children: [
|
|
212
|
+
/* @__PURE__ */ jsx(LoaderCircle, { className: "size-4 animate-spin text-muted-foreground" }),
|
|
213
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: "Loading..." })
|
|
214
|
+
] });
|
|
215
|
+
}
|
|
216
|
+
if (state.filteredOptions.length === 0) {
|
|
217
|
+
return /* @__PURE__ */ jsx(SingleSelectEmpty, {});
|
|
218
|
+
}
|
|
219
|
+
if (!state.grouped) {
|
|
220
|
+
return state.filteredOptions.map(renderRow);
|
|
221
|
+
}
|
|
222
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
223
|
+
state.grouped.ungrouped.map(renderRow),
|
|
224
|
+
state.grouped.entries.map((entry) => /* @__PURE__ */ jsxs(SingleSelectGroup, { children: [
|
|
225
|
+
/* @__PURE__ */ jsx(SingleSelectGroupLabel, { children: entry.name }),
|
|
226
|
+
entry.options.map(renderRow)
|
|
227
|
+
] }, entry.name))
|
|
228
|
+
] });
|
|
229
|
+
}
|
|
230
|
+
if (!name) {
|
|
231
|
+
return /* @__PURE__ */ jsx("span", { className: "inline-flex items-center rounded-md border border-destructive bg-destructive/10 px-3 py-2 text-xs text-destructive", children: "Select: missing required `name` prop" });
|
|
232
|
+
}
|
|
233
|
+
const operatorLabel = operators.find((o) => o.value === operator)?.label ?? operator;
|
|
234
|
+
const triggerText = state.selectedOption ? `${label}: ${operatorLabel} ${state.selectedOption.label}` : label ?? placeholder;
|
|
235
|
+
function handleInlineClear(e) {
|
|
236
|
+
e.stopPropagation();
|
|
237
|
+
state.clearSelection();
|
|
238
|
+
}
|
|
239
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
240
|
+
/* @__PURE__ */ jsxs(SingleSelectRoot, { open: state.open, onOpenChange: state.setOpen, disabled, children: [
|
|
241
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
242
|
+
"button",
|
|
243
|
+
{
|
|
244
|
+
ref,
|
|
245
|
+
id,
|
|
246
|
+
type: "button",
|
|
247
|
+
role: "combobox",
|
|
248
|
+
"aria-expanded": state.open,
|
|
249
|
+
"aria-haspopup": "listbox",
|
|
250
|
+
"aria-controls": state.listboxId,
|
|
251
|
+
"aria-required": required,
|
|
252
|
+
disabled,
|
|
253
|
+
onBlur,
|
|
254
|
+
className: cn(
|
|
255
|
+
"inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50",
|
|
256
|
+
state.selectedOption ? "bg-primary text-primary-foreground border-primary hover:bg-primary/90" : "border-input bg-transparent hover:bg-accent hover:text-accent-foreground",
|
|
257
|
+
className
|
|
258
|
+
),
|
|
259
|
+
children: [
|
|
260
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: triggerText }),
|
|
261
|
+
state.selectedOption ? /* @__PURE__ */ jsx(X, { className: "size-3.5 shrink-0 opacity-70 hover:opacity-100", onClick: handleInlineClear }) : /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 shrink-0 opacity-50" })
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
) }),
|
|
265
|
+
/* @__PURE__ */ jsxs(SingleSelectContent, { className: "w-[250px]", children: [
|
|
266
|
+
label && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 border-b bg-muted/30 px-3 h-[42px] shrink-0", children: [
|
|
267
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: label }),
|
|
268
|
+
/* @__PURE__ */ jsxs(Select, { value: operator, onValueChange: handleOperatorChange, children: [
|
|
269
|
+
/* @__PURE__ */ jsx(SelectTrigger, { className: "h-auto w-auto gap-1 border-0 bg-transparent p-0 shadow-none text-sm font-medium text-foreground focus-visible:ring-0", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
|
|
270
|
+
/* @__PURE__ */ jsx(SelectContent, { children: operators.map((op) => /* @__PURE__ */ jsx(SelectItem, { value: op.value, children: op.label }, op.value)) })
|
|
271
|
+
] })
|
|
272
|
+
] }),
|
|
273
|
+
/* @__PURE__ */ jsx(SingleSelectSearch, { value: searchValue, onValueChange: setSearchValue, placeholder: searchPlaceholder }),
|
|
274
|
+
/* @__PURE__ */ jsxs(SingleSelectList, { id: state.listboxId, children: [
|
|
275
|
+
renderOptions(),
|
|
276
|
+
asyncState?.hasMore && /* @__PURE__ */ jsx("div", { ref: asyncState.sentinelRef, className: "h-1" }),
|
|
277
|
+
asyncState?.loadingMore && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 py-2", children: [
|
|
278
|
+
/* @__PURE__ */ jsx(LoaderCircle, { className: "size-3 animate-spin text-muted-foreground" }),
|
|
279
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Loading more..." })
|
|
280
|
+
] })
|
|
281
|
+
] }),
|
|
282
|
+
/* @__PURE__ */ jsx(SingleSelectClear, { onClear: state.clearSelection, disabled: !state.selectedValue })
|
|
283
|
+
] })
|
|
284
|
+
] }),
|
|
285
|
+
name && state.selectedValue && /* @__PURE__ */ jsx("input", { type: "hidden", name, value: String(state.selectedValue) })
|
|
286
|
+
] });
|
|
287
|
+
}
|
|
288
|
+
);
|
|
289
|
+
SingleSelectFilter.displayName = "SingleSelectFilter";
|
|
290
|
+
|
|
291
|
+
function isFilterResult(v) {
|
|
292
|
+
return !!v && typeof v === "object" && !Array.isArray(v) && "field" in v && "operator" in v;
|
|
293
|
+
}
|
|
294
|
+
function extractRawValue(v) {
|
|
295
|
+
if (isFilterResult(v)) return v.value;
|
|
296
|
+
return v;
|
|
297
|
+
}
|
|
298
|
+
const SelectFilter = forwardRef((props, ref) => {
|
|
299
|
+
const {
|
|
300
|
+
multiple,
|
|
301
|
+
name,
|
|
302
|
+
optionsEndpoint,
|
|
303
|
+
searchDebounceMs,
|
|
304
|
+
limit,
|
|
305
|
+
fieldKeys,
|
|
306
|
+
params,
|
|
307
|
+
value,
|
|
308
|
+
onChange,
|
|
309
|
+
operator: controlledOperator,
|
|
310
|
+
onOperatorChange,
|
|
311
|
+
...rest
|
|
312
|
+
} = props;
|
|
313
|
+
const defaultOperator = multiple ? "isAnyOf" : "equals";
|
|
314
|
+
const [localOperator, setLocalOperator] = useState(controlledOperator ?? defaultOperator);
|
|
315
|
+
const currentOperator = isFilterResult(value) ? value.operator : controlledOperator ?? localOperator;
|
|
316
|
+
function handleOperatorChange(op) {
|
|
317
|
+
setLocalOperator(op);
|
|
318
|
+
onOperatorChange?.(op);
|
|
319
|
+
}
|
|
320
|
+
const rawValue = extractRawValue(value);
|
|
321
|
+
const selectData = useSelect({
|
|
322
|
+
options: rest.options,
|
|
323
|
+
groups: rest.groups,
|
|
324
|
+
optionsEndpoint,
|
|
325
|
+
searchDebounceMs,
|
|
326
|
+
limit,
|
|
327
|
+
fieldKeys,
|
|
328
|
+
params,
|
|
329
|
+
selectedValues: rawValue != null ? Array.isArray(rawValue) ? rawValue : [rawValue] : void 0
|
|
330
|
+
});
|
|
331
|
+
const isAsync = !!optionsEndpoint;
|
|
332
|
+
const asyncState = isAsync ? {
|
|
333
|
+
loading: selectData.loading,
|
|
334
|
+
loadingMore: selectData.loadingMore,
|
|
335
|
+
hasMore: selectData.hasMore,
|
|
336
|
+
searchQuery: selectData.searchQuery,
|
|
337
|
+
setSearchQuery: selectData.setSearchQuery,
|
|
338
|
+
sentinelRef: selectData.sentinelRef
|
|
339
|
+
} : void 0;
|
|
340
|
+
const sharedProps = {
|
|
341
|
+
...rest,
|
|
342
|
+
options: selectData.options,
|
|
343
|
+
groups: selectData.groups,
|
|
344
|
+
asyncState,
|
|
345
|
+
operator: currentOperator,
|
|
346
|
+
onOperatorChange: handleOperatorChange,
|
|
347
|
+
name
|
|
348
|
+
};
|
|
349
|
+
if (multiple) {
|
|
350
|
+
let handleMultiChange = function(rawValues) {
|
|
351
|
+
if (rawValues.length === 0) {
|
|
352
|
+
onChange?.(null);
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
onChange?.({ field: name, operator: currentOperator, value: rawValues.map(String) });
|
|
356
|
+
};
|
|
357
|
+
return /* @__PURE__ */ jsx(
|
|
358
|
+
MultiSelectFilter,
|
|
359
|
+
{
|
|
360
|
+
ref,
|
|
361
|
+
...sharedProps,
|
|
362
|
+
value: rawValue,
|
|
363
|
+
onChange: handleMultiChange
|
|
364
|
+
}
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
function handleSingleChange(rawVal) {
|
|
368
|
+
if (rawVal === "" || rawVal == null) {
|
|
369
|
+
onChange?.(null);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
onChange?.({ field: name, operator: currentOperator, value: rawVal });
|
|
373
|
+
}
|
|
374
|
+
return /* @__PURE__ */ jsx(
|
|
375
|
+
SingleSelectFilter,
|
|
376
|
+
{
|
|
377
|
+
ref,
|
|
378
|
+
...sharedProps,
|
|
379
|
+
value: rawValue,
|
|
380
|
+
onChange: handleSingleChange
|
|
381
|
+
}
|
|
382
|
+
);
|
|
383
|
+
});
|
|
384
|
+
SelectFilter.displayName = "SelectFilter";
|
|
385
|
+
|
|
386
|
+
export { MultiSelectFilter as M, SelectFilter as S, SingleSelectFilter as a };
|
|
387
|
+
//# sourceMappingURL=SelectFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectFilter.js","sources":["../lib/components/Select/components/MultiSelect/MultiSelectFilter.tsx","../lib/components/Select/components/SingleSelect/SingleSelectFilter.tsx","../lib/components/Select/SelectFilter.tsx"],"sourcesContent":["import { ChevronDownIcon, Loader2, X } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport {\n MultiSelectActions,\n MultiSelectContent,\n MultiSelectEmpty,\n MultiSelectGroup,\n MultiSelectGroupLabel,\n MultiSelectList,\n MultiSelectRoot,\n MultiSelectRow,\n MultiSelectSearch,\n} from '../../../../../shadcn/shadcnMultiSelect';\nimport { PopoverTrigger } from '../../../../../shadcn/shadcnPopover';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../../shadcn/shadcnSelect';\nimport { cn } from '../../../../../shadcn/utils';\nimport { useMultiSelect } from '../../hooks/useMultiSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue as SelectValueType } from '../../types';\n\nexport interface MultiSelectFilterOperator {\n value: string;\n label: string;\n}\n\nconst DEFAULT_MULTI_OPERATORS: MultiSelectFilterOperator[] = [\n { value: 'isAnyOf', label: 'is any of' },\n { value: 'isNotAnyOf', label: 'is not any of' },\n];\n\nexport interface MultiSelectFilterProps {\n label?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValueType[];\n onChange?: (values: SelectValueType[]) => void;\n operator?: string;\n onOperatorChange?: (operator: string) => void;\n operators?: MultiSelectFilterOperator[];\n onBlur?: () => void;\n name: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValueType[];\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n}\n\n// Compact multi-select filter trigger with count-based label display\nexport const MultiSelectFilter = forwardRef<HTMLButtonElement, MultiSelectFilterProps>(\n (\n {\n label,\n placeholder,\n options,\n groups,\n value: controlledValue,\n onChange,\n operator: controlledOperator,\n onOperatorChange,\n operators = DEFAULT_MULTI_OPERATORS,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n searchPlaceholder = 'Search...',\n asyncState,\n },\n ref,\n ) => {\n const [internalOperator, setInternalOperator] = useState(operators[0]?.value ?? 'isAnyOf');\n const activeOperator = controlledOperator ?? internalOperator;\n\n function handleOperatorChange(value: string) {\n setInternalOperator(value);\n onOperatorChange?.(value);\n }\n\n const state = useMultiSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, filter always shows search\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <MultiSelectRow\n key={String(option.value)}\n name={option.label}\n checked={state.selectedSet.has(option.value)}\n onToggle={() => {\n state.toggleOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <MultiSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <MultiSelectGroup key={entry.name}>\n <MultiSelectGroupLabel>{entry.name}</MultiSelectGroupLabel>\n {entry.options.map(renderRow)}\n </MultiSelectGroup>\n ))}\n </>\n );\n }\n\n if (!name) {\n return (\n <span className=\"inline-flex items-center rounded-md border border-destructive bg-destructive/10 px-3 py-2 text-xs text-destructive\">\n Select: missing required `name` prop\n </span>\n );\n }\n\n const hasValues = state.selectedValues.length > 0;\n\n const operatorLabel = operators.find((o) => o.value === activeOperator)?.label ?? activeOperator;\n const triggerText = hasValues\n ? `${label}: ${operatorLabel} ${state.selectedValues.length} selected`\n : (label ?? placeholder);\n\n // Clears inline from the chip without opening the popover\n function handleInlineClear(e: React.MouseEvent) {\n e.stopPropagation();\n state.clearAll();\n }\n\n return (\n <>\n <MultiSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={state.open}\n aria-haspopup=\"listbox\"\n aria-controls={state.listboxId}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50',\n hasValues\n ? 'bg-primary text-primary-foreground border-primary hover:bg-primary/90'\n : 'border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n className,\n )}\n >\n <span className=\"truncate\">{triggerText}</span>\n {hasValues ? (\n <X className=\"size-3.5 shrink-0 opacity-70 hover:opacity-100\" onClick={handleInlineClear} />\n ) : (\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n )}\n </button>\n </PopoverTrigger>\n\n <MultiSelectContent className=\"w-[250px]\">\n {label && (\n <div className=\"flex items-center gap-1.5 border-b bg-muted/30 px-3 h-[42px] shrink-0\">\n <span className=\"text-sm text-muted-foreground\">{label}</span>\n <Select value={activeOperator} onValueChange={handleOperatorChange}>\n <SelectTrigger className=\"h-auto w-auto gap-1 border-0 bg-transparent p-0 shadow-none text-sm font-medium text-foreground focus-visible:ring-0\">\n <SelectValue />\n <ChevronDownIcon className=\"size-3.5 text-muted-foreground\" />\n </SelectTrigger>\n <SelectContent>\n {operators.map((op) => (\n <SelectItem key={op.value} value={op.value}>\n {op.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n <MultiSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n\n <MultiSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </MultiSelectList>\n\n <MultiSelectActions onSelectAll={state.selectAll} onClear={state.clearAll} disabled={disabled} />\n </MultiSelectContent>\n </MultiSelectRoot>\n\n {name && state.selectedValues.map((v) => <input key={String(v)} type=\"hidden\" name={name} value={String(v)} />)}\n </>\n );\n },\n);\n\nMultiSelectFilter.displayName = 'MultiSelectFilter';\n","import { ChevronDownIcon, Loader2, X } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { PopoverTrigger } from '../../../../../shadcn/shadcnPopover';\nimport {\n Select as RadixSelect,\n SelectContent as RadixSelectContent,\n SelectItem as RadixSelectItem,\n SelectTrigger as RadixSelectTrigger,\n SelectValue as RadixSelectValue,\n} from '../../../../../shadcn/shadcnSelect';\nimport {\n SingleSelectClear,\n SingleSelectContent,\n SingleSelectEmpty,\n SingleSelectGroup,\n SingleSelectGroupLabel,\n SingleSelectList,\n SingleSelectRoot,\n SingleSelectRow,\n SingleSelectSearch,\n} from '../../../../../shadcn/shadcnSingleSelect';\nimport { cn } from '../../../../../shadcn/utils';\nimport { useSingleSelect } from '../../hooks/useSingleSelect';\nimport type { AsyncSelectState, SelectGroup, SelectOption, SelectValue } from '../../types';\n\nexport interface SelectFilterOperator {\n value: string;\n label: string;\n}\n\nconst DEFAULT_OPERATORS: SelectFilterOperator[] = [\n { value: 'equals', label: 'equals' },\n { value: 'notEquals', label: 'not equals' },\n];\n\nexport interface SingleSelectFilterProps {\n label?: string;\n placeholder?: string;\n options?: SelectOption[];\n groups?: SelectGroup[];\n value?: SelectValue;\n onChange?: (value: SelectValue) => void;\n operator?: string;\n onOperatorChange?: (operator: string) => void;\n operators?: SelectFilterOperator[];\n onBlur?: () => void;\n name: string;\n disabled?: boolean;\n required?: boolean;\n className?: string;\n id?: string;\n defaultValue?: SelectValue;\n searchPlaceholder?: string;\n asyncState?: AsyncSelectState;\n}\n\n// Compact single-select filter trigger with inline label display\nexport const SingleSelectFilter = forwardRef<HTMLButtonElement, SingleSelectFilterProps>(\n (\n {\n label,\n placeholder,\n options,\n groups,\n value: controlledValue,\n onChange,\n operator: controlledOperator,\n onOperatorChange,\n operators = DEFAULT_OPERATORS,\n onBlur,\n name,\n disabled = false,\n required,\n className,\n id,\n defaultValue,\n searchPlaceholder = 'Search...',\n asyncState,\n },\n ref,\n ) => {\n const [internalOperator, setInternalOperator] = useState(operators[0]?.value ?? 'equals');\n const operator = controlledOperator ?? internalOperator;\n\n function handleOperatorChange(value: string) {\n setInternalOperator(value);\n onOperatorChange?.(value);\n }\n\n const state = useSingleSelect({\n options: options ?? [],\n groups,\n value: controlledValue,\n onChange,\n defaultValue,\n remoteSearch: !!asyncState,\n });\n\n // Resolve search binding -- async delegates to parent, filter always shows search\n const searchValue = asyncState ? asyncState.searchQuery : state.searchQuery;\n const setSearchValue = asyncState ? asyncState.setSearchQuery : state.setSearchQuery;\n\n // Renders a single option row\n function renderRow(option: SelectOption) {\n return (\n <SingleSelectRow\n key={String(option.value)}\n name={option.label}\n description={option.description}\n selected={state.selectedValue === option.value}\n onSelect={() => {\n state.selectOption(option.value);\n }}\n disabled={option.disabled}\n />\n );\n }\n\n // Renders the option list content (flat or grouped)\n function renderOptions() {\n if (asyncState?.loading) {\n return (\n <div className=\"flex items-center justify-center gap-2 py-6\">\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n <span className=\"text-sm text-muted-foreground\">Loading...</span>\n </div>\n );\n }\n\n if (state.filteredOptions.length === 0) {\n return <SingleSelectEmpty />;\n }\n\n if (!state.grouped) {\n return state.filteredOptions.map(renderRow);\n }\n\n return (\n <>\n {state.grouped.ungrouped.map(renderRow)}\n {state.grouped.entries.map((entry) => (\n <SingleSelectGroup key={entry.name}>\n <SingleSelectGroupLabel>{entry.name}</SingleSelectGroupLabel>\n {entry.options.map(renderRow)}\n </SingleSelectGroup>\n ))}\n </>\n );\n }\n\n if (!name) {\n return (\n <span className=\"inline-flex items-center rounded-md border border-destructive bg-destructive/10 px-3 py-2 text-xs text-destructive\">\n Select: missing required `name` prop\n </span>\n );\n }\n\n const operatorLabel = operators.find((o) => o.value === operator)?.label ?? operator;\n const triggerText = state.selectedOption\n ? `${label}: ${operatorLabel} ${state.selectedOption.label}`\n : (label ?? placeholder);\n\n // Clears inline from the chip without opening the popover\n function handleInlineClear(e: React.MouseEvent) {\n e.stopPropagation();\n state.clearSelection();\n }\n\n return (\n <>\n <SingleSelectRoot open={state.open} onOpenChange={state.setOpen} disabled={disabled}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={state.open}\n aria-haspopup=\"listbox\"\n aria-controls={state.listboxId}\n aria-required={required}\n disabled={disabled}\n onBlur={onBlur}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50',\n state.selectedOption\n ? 'bg-primary text-primary-foreground border-primary hover:bg-primary/90'\n : 'border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n className,\n )}\n >\n <span className=\"truncate\">{triggerText}</span>\n {state.selectedOption ? (\n <X className=\"size-3.5 shrink-0 opacity-70 hover:opacity-100\" onClick={handleInlineClear} />\n ) : (\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n )}\n </button>\n </PopoverTrigger>\n\n <SingleSelectContent className=\"w-[250px]\">\n {label && (\n <div className=\"flex items-center gap-1.5 border-b bg-muted/30 px-3 h-[42px] shrink-0\">\n <span className=\"text-sm text-muted-foreground\">{label}</span>\n <RadixSelect value={operator} onValueChange={handleOperatorChange}>\n <RadixSelectTrigger className=\"h-auto w-auto gap-1 border-0 bg-transparent p-0 shadow-none text-sm font-medium text-foreground focus-visible:ring-0\">\n <RadixSelectValue />\n </RadixSelectTrigger>\n <RadixSelectContent>\n {operators.map((op) => (\n <RadixSelectItem key={op.value} value={op.value}>\n {op.label}\n </RadixSelectItem>\n ))}\n </RadixSelectContent>\n </RadixSelect>\n </div>\n )}\n <SingleSelectSearch value={searchValue} onValueChange={setSearchValue} placeholder={searchPlaceholder} />\n\n <SingleSelectList id={state.listboxId}>\n {renderOptions()}\n {asyncState?.hasMore && <div ref={asyncState.sentinelRef} className=\"h-1\" />}\n {asyncState?.loadingMore && (\n <div className=\"flex items-center justify-center gap-2 py-2\">\n <Loader2 className=\"size-3 animate-spin text-muted-foreground\" />\n <span className=\"text-xs text-muted-foreground\">Loading more...</span>\n </div>\n )}\n </SingleSelectList>\n\n <SingleSelectClear onClear={state.clearSelection} disabled={!state.selectedValue} />\n </SingleSelectContent>\n </SingleSelectRoot>\n\n {name && state.selectedValue && <input type=\"hidden\" name={name} value={String(state.selectedValue)} />}\n </>\n );\n },\n);\n\nSingleSelectFilter.displayName = 'SingleSelectFilter';\n","import type React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { MultiSelectFilter, type MultiSelectFilterProps } from './components/MultiSelect/MultiSelectFilter';\nimport { SingleSelectFilter, type SingleSelectFilterProps } from './components/SingleSelect/SingleSelectFilter';\nimport { useSelect } from './hooks/useSelect';\nimport type { AsyncSelectState, FilterResult, SelectFieldKeys, SelectValue } from './types';\n\n// Checks if a value is a FilterResult object (used to handle Form-controlled value round-trips)\nfunction isFilterResult(v: unknown): v is FilterResult {\n return !!v && typeof v === 'object' && !Array.isArray(v) && 'field' in v && 'operator' in v;\n}\n\n// Extracts the raw SelectValue(s) from a FilterResult or passes the value through unchanged\nfunction extractRawValue(v: FilterResult | SelectValue | SelectValue[] | undefined): SelectValue | SelectValue[] | undefined {\n if (isFilterResult(v)) return v.value as SelectValue | SelectValue[];\n return v as SelectValue | SelectValue[] | undefined;\n}\n\ninterface SelectFilterBaseProps {\n // Used as both the FilterResult field identifier and Form Controller registration key\n name: string;\n optionsEndpoint?: string;\n searchDebounceMs?: number;\n limit?: number;\n fieldKeys?: SelectFieldKeys;\n params?: Record<string, string | number | boolean>;\n}\n\nexport interface SelectFilterProps\n extends Omit<SingleSelectFilterProps & MultiSelectFilterProps, 'name' | 'onChange' | 'value'>,\n SelectFilterBaseProps {\n multiple?: boolean;\n value?: FilterResult | SelectValue | SelectValue[];\n onChange?: (result: FilterResult | null | undefined) => void;\n}\n\n// Unified filter-variant select that emits FilterResult from onChange — supports Form integration\nexport const SelectFilter = forwardRef<HTMLButtonElement, SelectFilterProps>((props, ref) => {\n const {\n multiple,\n name,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n value,\n onChange,\n operator: controlledOperator,\n onOperatorChange,\n ...rest\n } = props;\n\n // Track operator locally for uncontrolled usage; Form-controlled value takes precedence\n const defaultOperator = multiple ? 'isAnyOf' : 'equals';\n const [localOperator, setLocalOperator] = useState(controlledOperator ?? defaultOperator);\n const currentOperator = isFilterResult(value) ? value.operator : (controlledOperator ?? localOperator);\n\n function handleOperatorChange(op: string) {\n setLocalOperator(op);\n onOperatorChange?.(op);\n }\n\n const rawValue = extractRawValue(value);\n\n const selectData = useSelect({\n options: rest.options,\n groups: rest.groups,\n optionsEndpoint,\n searchDebounceMs,\n limit,\n fieldKeys,\n params,\n selectedValues: rawValue != null ? (Array.isArray(rawValue) ? rawValue : [rawValue]) : undefined,\n });\n\n const isAsync = !!optionsEndpoint;\n\n const asyncState: AsyncSelectState | undefined = isAsync\n ? {\n loading: selectData.loading,\n loadingMore: selectData.loadingMore,\n hasMore: selectData.hasMore,\n searchQuery: selectData.searchQuery,\n setSearchQuery: selectData.setSearchQuery,\n sentinelRef: selectData.sentinelRef,\n }\n : undefined;\n\n const sharedProps = {\n ...rest,\n options: selectData.options,\n groups: selectData.groups,\n asyncState,\n operator: currentOperator,\n onOperatorChange: handleOperatorChange,\n name,\n };\n\n if (multiple) {\n // Wrap multi onChange to emit FilterResult — emit undefined when selection is cleared\n function handleMultiChange(rawValues: SelectValue[]) {\n if (rawValues.length === 0) {\n onChange?.(null);\n return;\n }\n onChange?.({ field: name, operator: currentOperator, value: rawValues.map(String) });\n }\n\n return (\n <MultiSelectFilter\n ref={ref}\n {...(sharedProps as Omit<MultiSelectFilterProps, 'onChange' | 'value'>)}\n value={rawValue as SelectValue[] | undefined}\n onChange={handleMultiChange}\n />\n );\n }\n\n // Wrap single onChange to emit FilterResult — emit undefined when selection is cleared\n function handleSingleChange(rawVal: SelectValue) {\n if (rawVal === '' || rawVal == null) {\n onChange?.(null);\n return;\n }\n onChange?.({ field: name, operator: currentOperator, value: rawVal as string | number });\n }\n\n return (\n <SingleSelectFilter\n ref={ref}\n {...(sharedProps as Omit<SingleSelectFilterProps, 'onChange' | 'value'>)}\n value={rawValue as SelectValue | undefined}\n onChange={handleSingleChange}\n />\n );\n}) as React.ForwardRefExoticComponent<SelectFilterProps & React.RefAttributes<HTMLButtonElement>>;\n\nSelectFilter.displayName = 'SelectFilter';\n"],"names":["Loader2","ChevronDownIcon","RadixSelect","RadixSelectTrigger","RadixSelectValue","RadixSelectContent","RadixSelectItem"],"mappings":"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"}
|