@vertesia/ui 0.60.0 → 0.61.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/lib/esm/core/components/FormItem.js +9 -0
- package/lib/esm/core/components/FormItem.js.map +1 -0
- package/lib/esm/core/components/InputList.js +4 -3
- package/lib/esm/core/components/InputList.js.map +1 -1
- package/lib/esm/core/components/index.js +3 -3
- package/lib/esm/core/components/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/button.js +37 -7
- package/lib/esm/core/components/shadcn/button.js.map +1 -1
- package/lib/esm/core/components/shadcn/dialog.js +3 -3
- package/lib/esm/core/components/shadcn/dialog.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/DynamicLabel.js +38 -0
- package/lib/esm/core/components/shadcn/filters/DynamicLabel.js.map +1 -0
- package/lib/esm/core/components/shadcn/filters/comboBox.js +24 -26
- package/lib/esm/core/components/shadcn/filters/comboBox.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/dateFilter.js +12 -12
- package/lib/esm/core/components/shadcn/filters/dateFilter.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filterBar.js +49 -36
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filters.js +31 -23
- package/lib/esm/core/components/shadcn/filters/filters.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/selectFilter.js +33 -24
- package/lib/esm/core/components/shadcn/filters/selectFilter.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/textFilter.js +2 -2
- package/lib/esm/core/components/shadcn/filters/textFilter.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/types.js.map +1 -1
- package/lib/esm/core/components/shadcn/input.js +4 -4
- package/lib/esm/core/components/shadcn/input.js.map +1 -1
- package/lib/esm/core/components/shadcn/selectBox.js +72 -6
- package/lib/esm/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/esm/core/components/styles.js +1 -1
- package/lib/esm/core/components/styles.js.map +1 -1
- package/lib/esm/core/components/table/index.js +3 -0
- package/lib/esm/core/components/table/index.js.map +1 -1
- package/lib/esm/core/index.js +2 -1
- package/lib/esm/core/index.js.map +1 -1
- package/lib/esm/core/utils/cn.js +6 -0
- package/lib/esm/core/utils/cn.js.map +1 -0
- package/lib/esm/core/utils/index.js +2 -0
- package/lib/esm/core/utils/index.js.map +1 -0
- package/lib/esm/features/agent/PayloadBuilder.js +174 -0
- package/lib/esm/features/agent/PayloadBuilder.js.map +1 -0
- package/lib/esm/features/agent/chat/AnimatedThinkingDots.js +207 -0
- package/lib/esm/features/agent/chat/AnimatedThinkingDots.js.map +1 -0
- package/lib/esm/features/agent/chat/JumpingDots.js +6 -0
- package/lib/esm/features/agent/chat/JumpingDots.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +409 -0
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +129 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +66 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js +29 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +97 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +46 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +352 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessagesContainer.js +20 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessagesContainer.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js +62 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlideInPanel.js +23 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlideInPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js +51 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +82 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/StackedMessages.js +13 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/StackedMessages.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +105 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +154 -0
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -0
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js +266 -0
- package/lib/esm/features/agent/chat/SlidingThinkingIndicator.js.map +1 -0
- package/lib/esm/features/agent/chat/WaitingMessages.js +60 -0
- package/lib/esm/features/agent/chat/WaitingMessages.js.map +1 -0
- package/lib/esm/features/agent/chat/index.js +5 -0
- package/lib/esm/features/agent/chat/index.js.map +1 -0
- package/lib/esm/features/agent/index.js +3 -0
- package/lib/esm/features/agent/index.js.map +1 -0
- package/lib/esm/features/errors/PanelErrorBoundary.js +11 -0
- package/lib/esm/features/errors/PanelErrorBoundary.js.map +1 -0
- package/lib/esm/features/errors/RowErrorBoundary.js +9 -0
- package/lib/esm/features/errors/RowErrorBoundary.js.map +1 -0
- package/lib/esm/features/errors/VertesiaErrorBoundary.js +15 -0
- package/lib/esm/features/errors/VertesiaErrorBoundary.js.map +1 -0
- package/lib/esm/features/errors/WidgetErrorBoundary.js +11 -0
- package/lib/esm/features/errors/WidgetErrorBoundary.js.map +1 -0
- package/lib/esm/features/errors/index.js +5 -0
- package/lib/esm/features/errors/index.js.map +1 -0
- package/lib/esm/features/facets/EnvironmentFacet.js +39 -0
- package/lib/esm/features/facets/EnvironmentFacet.js.map +1 -0
- package/lib/esm/features/facets/FacetsNav.js +8 -0
- package/lib/esm/features/facets/FacetsNav.js.map +1 -0
- package/lib/esm/features/facets/InteractionFacet.js +39 -0
- package/lib/esm/features/facets/InteractionFacet.js.map +1 -0
- package/lib/esm/features/facets/StringFacet.js +12 -0
- package/lib/esm/features/facets/StringFacet.js.map +1 -0
- package/lib/esm/features/facets/StringListFacet.js +11 -0
- package/lib/esm/features/facets/StringListFacet.js.map +1 -0
- package/lib/esm/features/facets/TypeFacet.js +42 -0
- package/lib/esm/features/facets/TypeFacet.js.map +1 -0
- package/lib/esm/features/facets/TypeOptions.js +19 -0
- package/lib/esm/features/facets/TypeOptions.js.map +1 -0
- package/lib/esm/features/facets/UserFacet.js +33 -0
- package/lib/esm/features/facets/UserFacet.js.map +1 -0
- package/lib/esm/features/facets/VFacetsNav.js +114 -0
- package/lib/esm/features/facets/VFacetsNav.js.map +1 -0
- package/lib/esm/features/facets/VStringFacet.js +17 -0
- package/lib/esm/features/facets/VStringFacet.js.map +1 -0
- package/lib/esm/features/facets/VTypeFacet.js +56 -0
- package/lib/esm/features/facets/VTypeFacet.js.map +1 -0
- package/lib/esm/features/facets/VUserFacet.js +31 -0
- package/lib/esm/features/facets/VUserFacet.js.map +1 -0
- package/lib/esm/features/facets/index.js +12 -0
- package/lib/esm/features/facets/index.js.map +1 -0
- package/lib/esm/features/facets/utils.js +7 -0
- package/lib/esm/features/facets/utils.js.map +1 -0
- package/lib/esm/features/index.js +9 -1
- package/lib/esm/features/index.js.map +1 -1
- package/lib/esm/features/layout/GenericPageNavHeader.js +11 -0
- package/lib/esm/features/layout/GenericPageNavHeader.js.map +1 -0
- package/lib/esm/features/layout/NotFoundView.js +5 -0
- package/lib/esm/features/layout/NotFoundView.js.map +1 -0
- package/lib/esm/features/layout/index.js +3 -0
- package/lib/esm/features/layout/index.js.map +1 -0
- package/lib/esm/features/magic-pdf/DownloadPopover.js +13 -0
- package/lib/esm/features/magic-pdf/DownloadPopover.js.map +1 -0
- package/lib/esm/features/magic-pdf/MagicPdfView.js +44 -0
- package/lib/esm/features/magic-pdf/MagicPdfView.js.map +1 -0
- package/lib/esm/features/magic-pdf/PageSlider.js +57 -0
- package/lib/esm/features/magic-pdf/PageSlider.js.map +1 -0
- package/lib/esm/features/magic-pdf/PdfPageProvider.js +133 -0
- package/lib/esm/features/magic-pdf/PdfPageProvider.js.map +1 -0
- package/lib/esm/features/magic-pdf/TextPageView.js +45 -0
- package/lib/esm/features/magic-pdf/TextPageView.js.map +1 -0
- package/lib/esm/features/magic-pdf/index.js +2 -0
- package/lib/esm/features/magic-pdf/index.js.map +1 -0
- package/lib/esm/features/magic-pdf/types.js +2 -0
- package/lib/esm/features/magic-pdf/types.js.map +1 -0
- package/lib/esm/features/magic-pdf/useResizeOnDrag.js +34 -0
- package/lib/esm/features/magic-pdf/useResizeOnDrag.js.map +1 -0
- package/lib/esm/features/store/collections/BrowseCollectionView.js +37 -0
- package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -0
- package/lib/esm/features/store/collections/CollectionView.js +53 -0
- package/lib/esm/features/store/collections/CollectionView.js.map +1 -0
- package/lib/esm/features/store/collections/CollectionsTable.js +60 -0
- package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -0
- package/lib/esm/features/store/collections/CollectionsView.js +94 -0
- package/lib/esm/features/store/collections/CollectionsView.js.map +1 -0
- package/lib/esm/features/store/collections/EditCollectionView.js +161 -0
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -0
- package/lib/esm/features/store/collections/index.js +6 -0
- package/lib/esm/features/store/collections/index.js.map +1 -0
- package/lib/esm/features/store/index.js +4 -0
- package/lib/esm/features/store/index.js.map +1 -0
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js +150 -0
- package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -0
- package/lib/esm/features/store/objects/DocumentSearchResults.js +123 -0
- package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -0
- package/lib/esm/features/store/objects/DocumentSelectionProvider.js +81 -0
- package/lib/esm/features/store/objects/DocumentSelectionProvider.js.map +1 -0
- package/lib/esm/features/store/objects/DocumentTable.js +278 -0
- package/lib/esm/features/store/objects/DocumentTable.js.map +1 -0
- package/lib/esm/features/store/objects/ExportPropertiesModal.js +31 -0
- package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -0
- package/lib/esm/features/store/objects/components/ContentDispositionButton.js +31 -0
- package/lib/esm/features/store/objects/components/ContentDispositionButton.js.map +1 -0
- package/lib/esm/features/store/objects/components/ContentOverview.js +195 -0
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -0
- package/lib/esm/features/store/objects/components/DocumentIcon.js +28 -0
- package/lib/esm/features/store/objects/components/DocumentIcon.js.map +1 -0
- package/lib/esm/features/store/objects/components/DocumentInput.js +52 -0
- package/lib/esm/features/store/objects/components/DocumentInput.js.map +1 -0
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +169 -0
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -0
- package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js +45 -0
- package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -0
- package/lib/esm/features/store/objects/components/SelectDocument.js +39 -0
- package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -0
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js +7 -0
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js.map +1 -0
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js +85 -0
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -0
- package/lib/esm/features/store/objects/components/index.js +10 -0
- package/lib/esm/features/store/objects/components/index.js.map +1 -0
- package/lib/esm/features/store/objects/components/useDownloadObject.js +21 -0
- package/lib/esm/features/store/objects/components/useDownloadObject.js.map +1 -0
- package/lib/esm/features/store/objects/index.js +11 -0
- package/lib/esm/features/store/objects/index.js.map +1 -0
- package/lib/esm/features/store/objects/layout/DocumentTableColumn.js +74 -0
- package/lib/esm/features/store/objects/layout/DocumentTableColumn.js.map +1 -0
- package/lib/esm/features/store/objects/layout/documentLayout.js +16 -0
- package/lib/esm/features/store/objects/layout/documentLayout.js.map +1 -0
- package/lib/esm/features/store/objects/layout/index.js +3 -0
- package/lib/esm/features/store/objects/layout/index.js.map +1 -0
- package/lib/esm/features/store/objects/layout/renderers.js +128 -0
- package/lib/esm/features/store/objects/layout/renderers.js.map +1 -0
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js +150 -0
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -0
- package/lib/esm/features/store/objects/search/DocumentSearchProvider.js +41 -0
- package/lib/esm/features/store/objects/search/DocumentSearchProvider.js.map +1 -0
- package/lib/esm/features/store/objects/search/index.js +3 -0
- package/lib/esm/features/store/objects/search/index.js.map +1 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +149 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionSpec.js +2 -0
- package/lib/esm/features/store/objects/selection/ObjectsActionSpec.js.map +1 -0
- package/lib/esm/features/store/objects/selection/SelectionActions.js +75 -0
- package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +64 -0
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +53 -0
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js +30 -0
- package/lib/esm/features/store/objects/selection/actions/ConfirmAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js +66 -0
- package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +106 -0
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js +64 -0
- package/lib/esm/features/store/objects/selection/actions/RemoveFromCollectionAction.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +72 -0
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -0
- package/lib/esm/features/store/objects/selection/actions/index.js +8 -0
- package/lib/esm/features/store/objects/selection/actions/index.js.map +1 -0
- package/lib/esm/features/store/objects/selection/index.js +5 -0
- package/lib/esm/features/store/objects/selection/index.js.map +1 -0
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +476 -0
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -0
- package/lib/esm/features/store/objects/upload/index.js +4 -0
- package/lib/esm/features/store/objects/upload/index.js.map +1 -0
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +201 -0
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -0
- package/lib/esm/features/store/objects/upload/useUploadHandler.js +230 -0
- package/lib/esm/features/store/objects/upload/useUploadHandler.js.map +1 -0
- package/lib/esm/features/store/types/ContentObjectTypeView.js +158 -0
- package/lib/esm/features/store/types/ContentObjectTypeView.js.map +1 -0
- package/lib/esm/features/store/types/ContentObjectTypesSearch.js +82 -0
- package/lib/esm/features/store/types/ContentObjectTypesSearch.js.map +1 -0
- package/lib/esm/features/store/types/ContentObjectTypesTable.js +11 -0
- package/lib/esm/features/store/types/ContentObjectTypesTable.js.map +1 -0
- package/lib/esm/features/store/types/ContentObjectTypesView.js +55 -0
- package/lib/esm/features/store/types/ContentObjectTypesView.js.map +1 -0
- package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js +26 -0
- package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js.map +1 -0
- package/lib/esm/features/store/types/ObjectSchemaEditor.js +89 -0
- package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -0
- package/lib/esm/features/store/types/SelectContentType.js +43 -0
- package/lib/esm/features/store/types/SelectContentType.js.map +1 -0
- package/lib/esm/features/store/types/SelectContentTypeModal.js +28 -0
- package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -0
- package/lib/esm/features/store/types/TableLayoutEditor.js +78 -0
- package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -0
- package/lib/esm/features/store/types/index.js +11 -0
- package/lib/esm/features/store/types/index.js.map +1 -0
- package/lib/esm/features/store/types/search/ObjectTypeSearchContext.js +98 -0
- package/lib/esm/features/store/types/search/ObjectTypeSearchContext.js.map +1 -0
- package/lib/esm/features/store/types/search/ObjectTypeSearchProvider.js +15 -0
- package/lib/esm/features/store/types/search/ObjectTypeSearchProvider.js.map +1 -0
- package/lib/esm/features/store/types/search/index.js +3 -0
- package/lib/esm/features/store/types/search/index.js.map +1 -0
- package/lib/esm/features/user/UserAvatar.js +18 -0
- package/lib/esm/features/user/UserAvatar.js.map +1 -0
- package/lib/esm/features/user/UserInfo.js +88 -0
- package/lib/esm/features/user/UserInfo.js.map +1 -0
- package/lib/esm/features/user/index.js +3 -0
- package/lib/esm/features/user/index.js.map +1 -0
- package/lib/esm/features/utils/index.js +4 -0
- package/lib/esm/features/utils/index.js.map +1 -0
- package/lib/esm/features/utils/mimeType.js +9 -0
- package/lib/esm/features/utils/mimeType.js.map +1 -0
- package/lib/esm/features/utils/rendition.js +47 -0
- package/lib/esm/features/utils/rendition.js.map +1 -0
- package/lib/esm/features/utils/text.js +10 -0
- package/lib/esm/features/utils/text.js.map +1 -0
- package/lib/esm/layout/FullHeightLayout.js +1 -1
- package/lib/esm/layout/FullHeightLayout.js.map +1 -1
- package/lib/esm/layout/Sidebar.js +12 -2
- package/lib/esm/layout/Sidebar.js.map +1 -1
- package/lib/esm/widgets/Progress.js +5 -0
- package/lib/esm/widgets/Progress.js.map +1 -0
- package/lib/esm/widgets/codemirror/CodeMirrorEditor.js +1 -1
- package/lib/esm/widgets/codemirror/CodeMirrorEditor.js.map +1 -1
- package/lib/esm/widgets/form/Form.js +2 -2
- package/lib/esm/widgets/form/Form.js.map +1 -1
- package/lib/esm/widgets/form/schema.js +11 -5
- package/lib/esm/widgets/form/schema.js.map +1 -1
- package/lib/esm/widgets/index.js +4 -0
- package/lib/esm/widgets/index.js.map +1 -1
- package/lib/esm/widgets/popover/Popover.js +73 -0
- package/lib/esm/widgets/popover/Popover.js.map +1 -0
- package/lib/esm/widgets/popover/context.js +7 -0
- package/lib/esm/widgets/popover/context.js.map +1 -0
- package/lib/esm/widgets/popover/index.js +3 -0
- package/lib/esm/widgets/popover/index.js.map +1 -0
- package/lib/esm/widgets/popover/slots.js +22 -0
- package/lib/esm/widgets/popover/slots.js.map +1 -0
- package/lib/esm/widgets/properties/PropertiesView.js +6 -0
- package/lib/esm/widgets/properties/PropertiesView.js.map +1 -0
- package/lib/esm/widgets/properties/index.js +2 -0
- package/lib/esm/widgets/properties/index.js.map +1 -0
- package/lib/esm/widgets/schema-editor/JSONSchemaEditorModal.js +1 -2
- package/lib/esm/widgets/schema-editor/JSONSchemaEditorModal.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/Editable.js +9 -10
- package/lib/esm/widgets/schema-editor/editor/Editable.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/PropertyViewer.js +1 -1
- package/lib/esm/widgets/schema-editor/editor/PropertyViewer.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js +2 -2
- package/lib/esm/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
- package/lib/esm/widgets/upload/DropZone.js +162 -0
- package/lib/esm/widgets/upload/DropZone.js.map +1 -0
- package/lib/esm/widgets/upload/UploadResultCategory.js +19 -0
- package/lib/esm/widgets/upload/UploadResultCategory.js.map +1 -0
- package/lib/esm/widgets/upload/UploadSummary.js +30 -0
- package/lib/esm/widgets/upload/UploadSummary.js.map +1 -0
- package/lib/esm/widgets/upload/index.js +4 -0
- package/lib/esm/widgets/upload/index.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/FormItem.d.ts +11 -0
- package/lib/types/core/components/index.d.ts +3 -3
- package/lib/types/core/components/shadcn/button.d.ts +13 -2
- package/lib/types/core/components/shadcn/command.d.ts +7 -7
- package/lib/types/core/components/shadcn/filters/DynamicLabel.d.ts +8 -0
- package/lib/types/core/components/shadcn/filters/comboBox.d.ts +5 -5
- package/lib/types/core/components/shadcn/filters/dateFilter.d.ts +3 -4
- package/lib/types/core/components/shadcn/filters/types.d.ts +7 -1
- package/lib/types/core/components/shadcn/input.d.ts +4 -4
- package/lib/types/core/components/shadcn/selectBox.d.ts +13 -4
- package/lib/types/core/components/table/index.d.ts +1 -0
- package/lib/types/core/index.d.ts +2 -1
- package/lib/types/core/utils/cn.d.ts +2 -0
- package/lib/types/core/utils/index.d.ts +1 -0
- package/lib/types/features/agent/PayloadBuilder.d.ts +53 -0
- package/lib/types/features/agent/chat/AnimatedThinkingDots.d.ts +37 -0
- package/lib/types/features/agent/chat/JumpingDots.d.ts +6 -0
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +24 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +21 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +18 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.d.ts +10 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts +15 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +12 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +7 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/MessagesContainer.d.ts +9 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts +8 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/SlideInPanel.d.ts +10 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/SlidingMessages.d.ts +7 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.d.ts +9 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/StackedMessages.d.ts +7 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts +21 -0
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +23 -0
- package/lib/types/features/agent/chat/SlidingThinkingIndicator.d.ts +17 -0
- package/lib/types/features/agent/chat/WaitingMessages.d.ts +1 -0
- package/lib/types/features/agent/chat/index.d.ts +4 -0
- package/lib/types/features/agent/index.d.ts +2 -0
- package/lib/types/features/errors/PanelErrorBoundary.d.ts +4 -0
- package/lib/types/features/errors/RowErrorBoundary.d.ts +7 -0
- package/lib/types/features/errors/VertesiaErrorBoundary.d.ts +11 -0
- package/lib/types/features/errors/WidgetErrorBoundary.d.ts +4 -0
- package/lib/types/features/errors/index.d.ts +4 -0
- package/lib/types/features/facets/EnvironmentFacet.d.ts +9 -0
- package/lib/types/features/facets/FacetsNav.d.ts +6 -0
- package/lib/types/features/facets/InteractionFacet.d.ts +9 -0
- package/lib/types/features/facets/StringFacet.d.ts +10 -0
- package/lib/types/features/facets/StringListFacet.d.ts +10 -0
- package/lib/types/features/facets/TypeFacet.d.ts +15 -0
- package/lib/types/features/facets/TypeOptions.d.ts +3 -0
- package/lib/types/features/facets/UserFacet.d.ts +11 -0
- package/lib/types/features/facets/VFacetsNav.d.ts +7 -0
- package/lib/types/features/facets/VStringFacet.d.ts +15 -0
- package/lib/types/features/facets/VTypeFacet.d.ts +8 -0
- package/lib/types/features/facets/VUserFacet.d.ts +9 -0
- package/lib/types/features/facets/index.d.ts +11 -0
- package/lib/types/features/facets/utils.d.ts +3 -0
- package/lib/types/features/index.d.ts +9 -1
- package/lib/types/features/layout/GenericPageNavHeader.d.ts +12 -0
- package/lib/types/features/layout/NotFoundView.d.ts +4 -0
- package/lib/types/features/layout/index.d.ts +2 -0
- package/lib/types/features/magic-pdf/DownloadPopover.d.ts +6 -0
- package/lib/types/features/magic-pdf/MagicPdfView.d.ts +6 -0
- package/lib/types/features/magic-pdf/PageSlider.d.ts +7 -0
- package/lib/types/features/magic-pdf/PdfPageProvider.d.ts +28 -0
- package/lib/types/features/magic-pdf/TextPageView.d.ts +7 -0
- package/lib/types/features/magic-pdf/index.d.ts +1 -0
- package/lib/types/features/magic-pdf/types.d.ts +1 -0
- package/lib/types/features/magic-pdf/useResizeOnDrag.d.ts +8 -0
- package/lib/types/features/store/collections/BrowseCollectionView.d.ts +6 -0
- package/lib/types/features/store/collections/CollectionView.d.ts +5 -0
- package/lib/types/features/store/collections/CollectionsTable.d.ts +5 -0
- package/lib/types/features/store/collections/CollectionsView.d.ts +10 -0
- package/lib/types/features/store/collections/EditCollectionView.d.ts +7 -0
- package/lib/types/features/store/collections/index.d.ts +5 -0
- package/lib/types/features/store/index.d.ts +3 -0
- package/lib/types/features/store/objects/DocumentPreviewPanel.d.ts +7 -0
- package/lib/types/features/store/objects/DocumentSearchResults.d.ts +19 -0
- package/lib/types/features/store/objects/DocumentSelectionProvider.d.ts +32 -0
- package/lib/types/features/store/objects/DocumentTable.d.ts +20 -0
- package/lib/types/features/store/objects/ExportPropertiesModal.d.ts +11 -0
- package/lib/types/features/store/objects/components/ContentDispositionButton.d.ts +8 -0
- package/lib/types/features/store/objects/components/ContentOverview.d.ts +7 -0
- package/lib/types/features/store/objects/components/DocumentIcon.d.ts +10 -0
- package/lib/types/features/store/objects/components/DocumentInput.d.ts +7 -0
- package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts +7 -0
- package/lib/types/features/store/objects/components/SaveVersionConfirmModal.d.ts +8 -0
- package/lib/types/features/store/objects/components/SelectDocument.d.ts +8 -0
- package/lib/types/features/store/objects/components/SelectDocumentModal.d.ts +8 -0
- package/lib/types/features/store/objects/components/VectorSearchWidget.d.ts +10 -0
- package/lib/types/features/store/objects/components/index.d.ts +9 -0
- package/lib/types/features/store/objects/components/useDownloadObject.d.ts +3 -0
- package/lib/types/features/store/objects/index.d.ts +10 -0
- package/lib/types/features/store/objects/layout/DocumentTableColumn.d.ts +16 -0
- package/lib/types/features/store/objects/layout/documentLayout.d.ts +17 -0
- package/lib/types/features/store/objects/layout/index.d.ts +2 -0
- package/lib/types/features/store/objects/layout/renderers.d.ts +2 -0
- package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts +48 -0
- package/lib/types/features/store/objects/search/DocumentSearchProvider.d.ts +15 -0
- package/lib/types/features/store/objects/search/index.d.ts +2 -0
- package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts +25 -0
- package/lib/types/features/store/objects/selection/ObjectsActionSpec.d.ts +27 -0
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts +4 -0
- package/lib/types/features/store/objects/selection/actions/AddToCollectionAction.d.ts +3 -0
- package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts +3 -0
- package/lib/types/features/store/objects/selection/actions/ConfirmAction.d.ts +15 -0
- package/lib/types/features/store/objects/selection/actions/DeleteObjectsAction.d.ts +2 -0
- package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts +3 -0
- package/lib/types/features/store/objects/selection/actions/RemoveFromCollectionAction.d.ts +2 -0
- package/lib/types/features/store/objects/selection/actions/StartWorkflowComponent.d.ts +3 -0
- package/lib/types/features/store/objects/selection/actions/index.d.ts +7 -0
- package/lib/types/features/store/objects/selection/index.d.ts +4 -0
- package/lib/types/features/store/objects/upload/DocumentUploadModal.d.ts +37 -0
- package/lib/types/features/store/objects/upload/index.d.ts +3 -0
- package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts +29 -0
- package/lib/types/features/store/objects/upload/useUploadHandler.d.ts +49 -0
- package/lib/types/features/store/types/ContentObjectTypeView.d.ts +5 -0
- package/lib/types/features/store/types/ContentObjectTypesSearch.d.ts +5 -0
- package/lib/types/features/store/types/ContentObjectTypesTable.d.ts +7 -0
- package/lib/types/features/store/types/ContentObjectTypesView.d.ts +8 -0
- package/lib/types/features/store/types/CreateOrUpdateTypeModal.d.ts +14 -0
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts +7 -0
- package/lib/types/features/store/types/SelectContentType.d.ts +10 -0
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts +32 -0
- package/lib/types/features/store/types/TableLayoutEditor.d.ts +8 -0
- package/lib/types/features/store/types/index.d.ts +10 -0
- package/lib/types/features/store/types/search/ObjectTypeSearchContext.d.ts +35 -0
- package/lib/types/features/store/types/search/ObjectTypeSearchProvider.d.ts +10 -0
- package/lib/types/features/store/types/search/index.d.ts +2 -0
- package/lib/types/features/user/UserAvatar.d.ts +8 -0
- package/lib/types/features/user/UserInfo.d.ts +36 -0
- package/lib/types/features/user/index.d.ts +2 -0
- package/lib/types/features/utils/index.d.ts +3 -0
- package/lib/types/features/utils/mimeType.d.ts +4 -0
- package/lib/types/features/utils/rendition.d.ts +3 -0
- package/lib/types/features/utils/text.d.ts +2 -0
- package/lib/types/layout/Sidebar.d.ts +2 -1
- package/lib/types/widgets/Progress.d.ts +5 -0
- package/lib/types/widgets/form/schema.d.ts +4 -3
- package/lib/types/widgets/index.d.ts +4 -0
- package/lib/types/widgets/popover/Popover.d.ts +37 -0
- package/lib/types/widgets/popover/context.d.ts +7 -0
- package/lib/types/widgets/popover/index.d.ts +2 -0
- package/lib/types/widgets/popover/slots.d.ts +4 -0
- package/lib/types/widgets/properties/PropertiesView.d.ts +10 -0
- package/lib/types/widgets/properties/index.d.ts +1 -0
- package/lib/types/widgets/upload/DropZone.d.ts +40 -0
- package/lib/types/widgets/upload/UploadResultCategory.d.ts +25 -0
- package/lib/types/widgets/upload/UploadSummary.d.ts +37 -0
- package/lib/types/widgets/upload/index.d.ts +3 -0
- package/lib/vertesia-ui-core.js +1 -1
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-features.js +1 -1
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-layout.js +1 -1
- package/lib/vertesia-ui-layout.js.map +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +1 -1
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/package.json +13 -5
- package/src/core/components/FormItem.tsx +35 -0
- package/src/core/components/InputList.tsx +4 -3
- package/src/core/components/index.ts +3 -3
- package/src/core/components/shadcn/button.tsx +68 -8
- package/src/core/components/shadcn/dialog.tsx +3 -3
- package/src/core/components/shadcn/filters/DynamicLabel.tsx +45 -0
- package/src/core/components/shadcn/filters/comboBox.tsx +56 -52
- package/src/core/components/shadcn/filters/dateFilter.tsx +24 -25
- package/src/core/components/shadcn/filters/filterBar.tsx +53 -47
- package/src/core/components/shadcn/filters/filters.tsx +43 -30
- package/src/core/components/shadcn/filters/selectFilter.tsx +53 -34
- package/src/core/components/shadcn/filters/textFilter.tsx +6 -3
- package/src/core/components/shadcn/filters/types.ts +8 -1
- package/src/core/components/shadcn/input.tsx +5 -5
- package/src/core/components/shadcn/selectBox.tsx +138 -33
- package/src/core/components/styles.ts +1 -1
- package/src/core/components/table/index.tsx +8 -0
- package/src/core/index.ts +2 -1
- package/src/core/utils/cn.ts +6 -0
- package/src/core/utils/index.ts +1 -0
- package/src/features/agent/PayloadBuilder.tsx +208 -0
- package/src/features/agent/chat/AnimatedThinkingDots.tsx +350 -0
- package/src/features/agent/chat/JumpingDots.tsx +16 -0
- package/src/features/agent/chat/ModernAgentConversation.tsx +708 -0
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +246 -0
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +231 -0
- package/src/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.tsx +66 -0
- package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +282 -0
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +125 -0
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +562 -0
- package/src/features/agent/chat/ModernAgentOutput/MessagesContainer.tsx +51 -0
- package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +123 -0
- package/src/features/agent/chat/ModernAgentOutput/README-image-support.md +43 -0
- package/src/features/agent/chat/ModernAgentOutput/SlideInPanel.tsx +72 -0
- package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +96 -0
- package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +185 -0
- package/src/features/agent/chat/ModernAgentOutput/StackedMessages.tsx +33 -0
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +167 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +195 -0
- package/src/features/agent/chat/ModernAgentOutput/with-types.d.ts +15 -0
- package/src/features/agent/chat/SlidingThinkingIndicator.tsx +459 -0
- package/src/features/agent/chat/WaitingMessages.ts +66 -0
- package/src/features/agent/chat/index.ts +4 -0
- package/src/features/agent/index.ts +2 -0
- package/src/features/errors/PanelErrorBoundary.tsx +30 -0
- package/src/features/errors/RowErrorBoundary.tsx +28 -0
- package/src/features/errors/VertesiaErrorBoundary.tsx +28 -0
- package/src/features/errors/WidgetErrorBoundary.tsx +27 -0
- package/src/features/errors/index.ts +4 -0
- package/src/features/facets/EnvironmentFacet.tsx +53 -0
- package/src/features/facets/FacetsNav.tsx +19 -0
- package/src/features/facets/InteractionFacet.tsx +53 -0
- package/src/features/facets/StringFacet.tsx +23 -0
- package/src/features/facets/StringListFacet.tsx +22 -0
- package/src/features/facets/TypeFacet.tsx +59 -0
- package/src/features/facets/TypeOptions.tsx +22 -0
- package/src/features/facets/UserFacet.tsx +61 -0
- package/src/features/facets/VFacetsNav.tsx +139 -0
- package/src/features/facets/VStringFacet.tsx +34 -0
- package/src/features/facets/VTypeFacet.tsx +72 -0
- package/src/features/facets/VUserFacet.tsx +47 -0
- package/src/features/facets/index.ts +11 -0
- package/src/features/facets/utils.tsx +9 -0
- package/src/features/index.ts +9 -1
- package/src/features/layout/GenericPageNavHeader.tsx +48 -0
- package/src/features/layout/NotFoundView.tsx +11 -0
- package/src/features/layout/index.ts +2 -0
- package/src/features/magic-pdf/DownloadPopover.tsx +32 -0
- package/src/features/magic-pdf/MagicPdfView.tsx +102 -0
- package/src/features/magic-pdf/PageSlider.tsx +112 -0
- package/src/features/magic-pdf/PdfPageProvider.tsx +229 -0
- package/src/features/magic-pdf/TextPageView.tsx +65 -0
- package/src/features/magic-pdf/index.ts +1 -0
- package/src/features/magic-pdf/types.ts +1 -0
- package/src/features/magic-pdf/useResizeOnDrag.ts +42 -0
- package/src/features/store/collections/BrowseCollectionView.tsx +45 -0
- package/src/features/store/collections/CollectionView.tsx +94 -0
- package/src/features/store/collections/CollectionsTable.tsx +115 -0
- package/src/features/store/collections/CollectionsView.tsx +166 -0
- package/src/features/store/collections/EditCollectionView.tsx +253 -0
- package/src/features/store/collections/index.ts +5 -0
- package/src/features/store/index.ts +3 -0
- package/src/features/store/objects/DocumentPreviewPanel.tsx +417 -0
- package/src/features/store/objects/DocumentSearchResults.tsx +209 -0
- package/src/features/store/objects/DocumentSelectionProvider.tsx +99 -0
- package/src/features/store/objects/DocumentTable.tsx +409 -0
- package/src/features/store/objects/ExportPropertiesModal.tsx +89 -0
- package/src/features/store/objects/components/ContentDispositionButton.tsx +45 -0
- package/src/features/store/objects/components/ContentOverview.tsx +466 -0
- package/src/features/store/objects/components/DocumentIcon.tsx +87 -0
- package/src/features/store/objects/components/DocumentInput.tsx +90 -0
- package/src/features/store/objects/components/PropertiesEditorModal.tsx +253 -0
- package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +136 -0
- package/src/features/store/objects/components/SelectDocument.tsx +69 -0
- package/src/features/store/objects/components/SelectDocumentModal.tsx +20 -0
- package/src/features/store/objects/components/VectorSearchWidget.tsx +115 -0
- package/src/features/store/objects/components/index.ts +9 -0
- package/src/features/store/objects/components/useDownloadObject.ts +24 -0
- package/src/features/store/objects/index.ts +10 -0
- package/src/features/store/objects/layout/DocumentTableColumn.tsx +84 -0
- package/src/features/store/objects/layout/documentLayout.tsx +69 -0
- package/src/features/store/objects/layout/index.ts +2 -0
- package/src/features/store/objects/layout/knowledge.md +238 -0
- package/src/features/store/objects/layout/renderers.tsx +139 -0
- package/src/features/store/objects/search/DocumentSearchContext.ts +181 -0
- package/src/features/store/objects/search/DocumentSearchProvider.tsx +54 -0
- package/src/features/store/objects/search/index.ts +2 -0
- package/src/features/store/objects/selection/ObjectsActionContext.tsx +196 -0
- package/src/features/store/objects/selection/ObjectsActionSpec.ts +31 -0
- package/src/features/store/objects/selection/SelectionActions.tsx +160 -0
- package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +114 -0
- package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +76 -0
- package/src/features/store/objects/selection/actions/ConfirmAction.tsx +46 -0
- package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +77 -0
- package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +117 -0
- package/src/features/store/objects/selection/actions/RemoveFromCollectionAction.tsx +77 -0
- package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +122 -0
- package/src/features/store/objects/selection/actions/index.ts +7 -0
- package/src/features/store/objects/selection/index.ts +4 -0
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +970 -0
- package/src/features/store/objects/upload/index.ts +3 -0
- package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +250 -0
- package/src/features/store/objects/upload/useUploadHandler.ts +325 -0
- package/src/features/store/types/ContentObjectTypeView.tsx +244 -0
- package/src/features/store/types/ContentObjectTypesSearch.tsx +111 -0
- package/src/features/store/types/ContentObjectTypesTable.tsx +38 -0
- package/src/features/store/types/ContentObjectTypesView.tsx +71 -0
- package/src/features/store/types/CreateOrUpdateTypeModal.tsx +70 -0
- package/src/features/store/types/ObjectSchemaEditor.tsx +127 -0
- package/src/features/store/types/SelectContentType.tsx +88 -0
- package/src/features/store/types/SelectContentTypeModal.tsx +142 -0
- package/src/features/store/types/TableLayoutEditor.tsx +104 -0
- package/src/features/store/types/index.ts +10 -0
- package/src/features/store/types/search/ObjectTypeSearchContext.tsx +119 -0
- package/src/features/store/types/search/ObjectTypeSearchProvider.tsx +24 -0
- package/src/features/store/types/search/index.ts +2 -0
- package/src/features/user/UserAvatar.tsx +34 -0
- package/src/features/user/UserInfo.tsx +215 -0
- package/src/features/user/index.ts +2 -0
- package/src/features/utils/index.ts +3 -0
- package/src/features/utils/mimeType.ts +9 -0
- package/src/features/utils/rendition.ts +75 -0
- package/src/features/utils/text.ts +10 -0
- package/src/layout/FullHeightLayout.tsx +1 -1
- package/src/layout/Sidebar.tsx +12 -2
- package/src/widgets/Progress.tsx +10 -0
- package/src/widgets/codemirror/CodeMirrorEditor.tsx +1 -1
- package/src/widgets/form/Form.tsx +2 -2
- package/src/widgets/form/schema.ts +14 -7
- package/src/widgets/index.ts +5 -1
- package/src/widgets/popover/Popover.tsx +171 -0
- package/src/widgets/popover/context.ts +15 -0
- package/src/widgets/popover/index.ts +2 -0
- package/src/widgets/popover/slots.ts +24 -0
- package/src/widgets/properties/PropertiesView.tsx +26 -0
- package/src/widgets/properties/index.ts +1 -0
- package/src/widgets/schema-editor/JSONSchemaEditorModal.tsx +1 -2
- package/src/widgets/schema-editor/editor/Editable.tsx +12 -13
- package/src/widgets/schema-editor/editor/PropertyViewer.tsx +1 -1
- package/src/widgets/schema-editor/editor/SchemaEditor.tsx +4 -4
- package/src/widgets/upload/DropZone.tsx +257 -0
- package/src/widgets/upload/UploadResultCategory.tsx +81 -0
- package/src/widgets/upload/UploadSummary.tsx +116 -0
- package/src/widgets/upload/index.ts +3 -0
- package/lib/esm/code/index.js +0 -3
- package/lib/esm/code/index.js.map +0 -1
- package/lib/esm/core/components/Input.js +0 -16
- package/lib/esm/core/components/Input.js.map +0 -1
- package/lib/esm/form/index.js +0 -3
- package/lib/esm/form/index.js.map +0 -1
- package/lib/types/code/index.d.ts +0 -0
- package/lib/types/core/components/Input.d.ts +0 -8
- package/lib/types/form/index.d.ts +0 -0
- package/lib/vertesia-ui-code.js +0 -2
- package/lib/vertesia-ui-code.js.map +0 -1
- package/lib/vertesia-ui-form.js +0 -2
- package/lib/vertesia-ui-form.js.map +0 -1
- package/src/code/index.ts +0 -1
- package/src/core/components/Input.tsx +0 -43
- package/src/form/index.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertesia-ui-core.js","sources":["esm/core/hooks/CompositeState.js","esm/core/hooks/SharedState.js","esm/core/hooks/useClickOutside.js","esm/core/hooks/useCopyToClipboard.js","esm/core/hooks/useDarkMode.js","esm/core/hooks/useDebounce.js","esm/core/hooks/useEventSource.js","esm/core/hooks/useFetch.js","esm/core/hooks/useFlag.js","esm/core/hooks/useIntersectionObserver.js","esm/core/hooks/useIsFistRendering.js","esm/core/hooks/useSafeLayoutEffect.js","esm/core/hooks/useSharedValue.js","esm/core/components/Avatar.js","esm/core/components/libs/utils.js","esm/core/components/Badge.js","esm/core/components/Center.js","esm/core/components/popup/position.js","esm/core/components/popup/utils.js","esm/core/components/popup/PopupController.js","esm/core/components/popup/Popup.js","esm/core/components/ComboBox.js","esm/core/components/shadcn/tooltip.js","esm/core/components/shadcn/button.js","esm/core/components/shadcn/theme/ThemeProvider.js","esm/core/components/shadcn/theme/ThemeSwitcher.js","esm/core/components/shadcn/card.js","esm/core/components/libs/visuallyHidden.js","esm/core/components/shadcn/dialog.js","esm/core/components/shadcn/input.js","esm/core/components/shadcn/separator.js","esm/core/components/shadcn/popover.js","esm/core/components/shadcn/command.js","esm/core/components/shadcn/selectBox.js","esm/core/components/shadcn/tabs.js","esm/core/components/shadcn/label.js","esm/core/components/shadcn/breadcrumb.js","esm/core/components/shadcn/filters/animateChangeInHeight.js","esm/core/components/shadcn/calendar.js","esm/core/components/shadcn/checkbox.js","esm/core/components/shadcn/filters/comboBox.js","esm/core/components/shadcn/filters/filters.js","esm/core/components/shadcn/filters/textFilter.js","esm/core/components/shadcn/filters/dateFilter.js","esm/core/components/shadcn/filters/selectFilter.js","esm/core/components/shadcn/filters/filterBar.js","esm/core/components/shadcn/filters/types.js","esm/core/components/shadcn/heading.js","esm/core/components/shadcn/text.js","esm/core/components/ConfirmModal.js","esm/core/components/toast/ToastContext.js","esm/core/components/Portal.js","esm/core/components/toast/NotificationPanel.js","esm/core/components/toast/ToastProvider.js","esm/core/components/DeleteModal.js","esm/core/components/Divider.js","esm/core/components/SidePanel.js","esm/core/components/Dropdown.js","esm/core/components/DropdownList.js","esm/core/components/Spinner.js","esm/core/components/Button.js","esm/core/components/EmptyCollection.js","esm/core/components/FileUpload.js","esm/core/components/styles.js","esm/core/components/Input.js","esm/core/components/InputList.js","esm/core/components/Link.js","esm/core/components/MenuList.js","esm/core/components/MessageBox.js","esm/core/components/Modal.js","esm/core/components/NumberInput.js","esm/core/components/RadioGroup.js","esm/core/components/SelectBox.js","esm/core/components/SelectList.js","esm/core/components/SelectStack.js","esm/core/components/Switch.js","esm/core/components/table/index.js","esm/core/components/tabs/TabsContext.js","esm/core/components/tabs/Tabs.js","esm/core/components/Textarea.js"],"sourcesContent":["import React, { useContext, useEffect, useState } from \"react\";\n//type KeysOfType<T, V> = { [K in keyof T]-?: T[K] extends V ? K : never }[keyof T];\n//type KeysNotOfType<T, V> = { [K in keyof T]-?: T[K] extends V ? never : K }[keyof T];\nexport class Property {\n _value;\n watchers = [];\n constructor(value) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n for (const watcher of this.watchers) {\n watcher(value);\n }\n }\n }\n watch(watcher) {\n this.watchers.push(watcher);\n return () => {\n this.watchers = this.watchers.filter(w => w !== watcher);\n };\n }\n}\nexport function createCompositeStateProvider(StateClass) {\n const context = React.createContext(undefined);\n StateClass.Context = context;\n return context.Provider;\n}\nexport class Slot {\n consume = undefined;\n _current;\n constructor(content) {\n this._current = content;\n }\n set current(content) {\n if (content !== this._current) {\n this._current = content;\n this.consume?.(content);\n }\n }\n get current() {\n return this._current;\n }\n withConsumer(consume) {\n this.consume = consume;\n consume && consume(this.current);\n return this;\n }\n}\nexport function useCompositeState(StateClass) {\n const context = StateClass.Context;\n if (!context) {\n throw new Error(\"Context not defined for \" + StateClass.name);\n }\n return useContext(context);\n}\nexport function useGetCompositeStateProperty(property) {\n const [value, setValue] = useState(property.value);\n useEffect(() => {\n return property.watch((value) => {\n if (typeof value === 'function') {\n setValue(() => value); // cannot directly store functions\n }\n else {\n setValue(value);\n }\n });\n }, [property]);\n return value;\n}\n// use memo on value to avoid re-computations if needed\nexport function useSetCompositeStateProperty(property, value) {\n useEffect(() => {\n property.value = value;\n return () => {\n property.value = undefined;\n };\n }, [property, value]);\n return value;\n}\n// use memo on watcher to avoid re-computations if needed\nexport function useWatchCompositeStateProperty(property, watcher) {\n useEffect(() => {\n return property.watch(watcher);\n }, [property, watcher]);\n}\nexport function useSlot(slot) {\n const [value, setValue] = useState(slot.current);\n useEffect(() => {\n slot.withConsumer(setValue);\n return () => {\n slot.withConsumer(undefined);\n };\n }, [slot]);\n return value;\n}\nexport function useWatchSlot(slot, watcher) {\n useEffect(() => {\n slot.withConsumer(watcher);\n return () => {\n slot.withConsumer(undefined);\n };\n }, [slot, watcher]);\n}\n// use memo for value if needed\nexport function useDefineSlot(slot, value) {\n useEffect(() => {\n slot.current = value;\n return () => {\n slot.current = undefined;\n };\n }, [slot, value]);\n}\n//# sourceMappingURL=CompositeState.js.map","import { useEffect, useState } from \"react\";\nexport class SharedState {\n _value;\n watchers = [];\n constructor(value) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n for (const watcher of this.watchers) {\n watcher(value);\n }\n }\n }\n addWatcher(watcher) {\n this.watchers.push(watcher);\n return () => {\n this.watchers = this.watchers.filter(w => w !== watcher);\n };\n }\n}\nexport function useWatchSharedState(state) {\n const [value, setValue] = useState(state.value);\n useEffect(() => {\n return state.addWatcher((value) => {\n if (typeof value === 'function') {\n setValue(() => value); // cannot directly store functions\n }\n else {\n setValue(value);\n }\n });\n }, [state]);\n return value;\n}\n// export function createSharedStateContext<T>(initialValue: T) {\n// const Context = React.createContext<SharedState<T>>(undefined as any);\n// function SharedStateProvider({ value = initialValue, children }: {\n// value?: T,\n// children: React.ReactNode\n// }) {\n// const state = useMemo(() => {\n// return new SharedState(value);\n// }, []);\n// return <Context.Provider value={state}>{children}</Context.Provider>\n// }\n// const useSharedState = () => {\n// return React.useContext(Context);\n// }\n// return {\n// Context,\n// Provider: SharedStateProvider,\n// useSharedState,\n// useWatchSharedState: () => {\n// const state = useSharedState();\n// return state ? useWatchSharedState(state) : undefined;\n// }\n// }\n// }\n//# sourceMappingURL=SharedState.js.map","import { useEffect, useRef } from \"react\";\n/**\n *\n * @param callback\n * @param skipFn an optional function to skip the callback if the event matches some condition. Return true to skip\n * @returns\n */\nexport function useClickOutside(callback, skipFn) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClick = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n if (!skipFn || !skipFn(e)) {\n callback(e);\n }\n }\n };\n // add te listener just after the render to avoid the callback to be called on the current click\n // if you are in a click context\n window.setTimeout(() => {\n document.addEventListener('click', handleClick);\n }, 0);\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, []);\n return ref;\n}\n//# sourceMappingURL=useClickOutside.js.map","import { useState } from 'react';\nexport function useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = async (text) => {\n if (!navigator?.clipboard) {\n console.warn('Clipboard not supported');\n return false;\n }\n // Try to save to clipboard then save it in the state if worked\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n }\n catch (error) {\n console.warn('Copy failed', error);\n setCopiedText(null);\n return false;\n }\n };\n return [copiedText, copy];\n}\n//# sourceMappingURL=useCopyToClipboard.js.map","import { useEffect } from \"react\";\nexport function useDarkMode(cb) {\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const _cb = (e) => cb(e.matches);\n mediaQuery.addEventListener('change', _cb);\n cb(mediaQuery.matches);\n return () => mediaQuery.removeEventListener('change', _cb);\n }, []);\n}\n//# sourceMappingURL=useDarkMode.js.map","import { useEffect, useState } from \"react\";\nexport function useDebounce(value, delay) {\n const [debounceValue, setDebounceValue] = useState(value);\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebounceValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return debounceValue;\n}\n//# sourceMappingURL=useDebounce.js.map","import { useEffect } from \"react\";\nfunction startSse(url, onMessage, onCompleted) {\n const chunks = [];\n const sse = new EventSource(url);\n sse.addEventListener(\"message\", ev => {\n const data = JSON.parse(ev.data);\n if (data) {\n chunks.push(data);\n onMessage(chunks.join(''));\n }\n });\n sse.addEventListener(\"close\", (ev) => {\n sse.close();\n const msg = JSON.parse(ev.data);\n onCompleted(msg);\n });\n return () => {\n sse.close();\n };\n}\nexport function useEventSource(url, onMessage, onCompleted) {\n useEffect(() => {\n if (typeof url === 'function') {\n url().then(url => startSse(url, onMessage, onCompleted));\n }\n else {\n startSse(url, onMessage, onCompleted);\n }\n }, [url]);\n}\n//# sourceMappingURL=useEventSource.js.map","import { useEffect, useState } from \"react\";\nexport function useFetch(fetcher, opts) {\n if (Array.isArray(opts)) {\n opts = { deps: opts };\n }\n const options = (opts || {});\n const [error, setError] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [data, setData] = useState(options.defaultValue);\n const fetch = () => {\n options.start && options.start();\n setIsLoading(true);\n return fetcher().then((result) => {\n setData(result);\n options.onSuccess && options.onSuccess(result);\n }).catch(error => {\n setError(error);\n options.onError && options.onError(error);\n }).finally(() => {\n setIsLoading(false);\n options.end && options.end();\n });\n };\n useEffect(() => {\n if (!options.condition || options.condition()) {\n fetch();\n }\n }, options.deps);\n return { data, isLoading, error, setData, refetch: fetch };\n}\nexport function useFetchOnce(fetcher, opts) {\n if (!opts || Array.isArray(opts)) {\n opts = { deps: [] };\n }\n else if (opts) {\n opts.deps = [];\n }\n return useFetch(fetcher, opts);\n}\n//# sourceMappingURL=useFetch.js.map","import { useState } from \"react\";\nexport function useFlag(isOn = false) {\n const [state, setState] = useState(isOn);\n return {\n isOn: state,\n isOff: !state,\n set: (value) => setState(value),\n on: () => setState(true),\n off: () => setState(false),\n toggle: () => setState(!state)\n };\n}\n//# sourceMappingURL=useFlag.js.map","import { useEffect } from \"react\";\n/**\n * if leave option is true then callback will be called when the target leaves the viewport\n * otherwise when it enters the viewport\n * @param target\n * @param cb\n * @param opts\n */\nexport function useIntersectionObserver(target, cb, opts = {}) {\n useEffect(() => {\n const observer = new IntersectionObserver(entries => {\n const isEntering = entries[0].isIntersecting;\n if (opts.leave) {\n if (!isEntering) {\n cb(entries[0]);\n }\n }\n else {\n if (isEntering) {\n cb(entries[0]);\n }\n }\n }, { threshold: opts.threshold || 1 });\n if (target.current) {\n observer.observe(target.current);\n }\n return () => {\n if (target.current) {\n observer.unobserve(target.current);\n }\n };\n }, opts.deps ? opts.deps.concat(target) : [target]);\n}\n//# sourceMappingURL=useIntersectionObserver.js.map","import { useEffect, useRef } from \"react\";\nexport function useIsFirstRendering() {\n const isFirstRender = useRef(true);\n useEffect((cb) => {\n if (cb && isFirstRender.current) {\n cb();\n }\n isFirstRender.current = false;\n // ---> StrictMode: The following is REQUIRED to reset/cleanup:\n return () => { isFirstRender.current = true; };\n }, []);\n return isFirstRender.current;\n}\n//# sourceMappingURL=useIsFistRendering.js.map","import { useEffect, useLayoutEffect } from \"react\";\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\nexport { useSafeLayoutEffect };\n//# sourceMappingURL=useSafeLayoutEffect.js.map","import { useState } from \"react\";\nexport class SharedValue {\n state;\n constructor(state) {\n this.state = state;\n }\n get() {\n return this.state[0];\n }\n set(value) {\n this.state[1](value);\n }\n}\n/**\n * Share a stateful value\n */\nexport function useSharedValue(initialValue) {\n const state = useState(initialValue);\n return new SharedValue(state);\n}\n//# sourceMappingURL=useSharedValue.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'size-4';\n case 'sm': return 'size-6';\n case 'md': return 'size-8';\n case 'lg': return 'size-10';\n case 'xl': return 'size-12';\n case '2xl': return 'size-14';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nexport function Avatar({ size, src, name, shape = \"circle\", color = 'bg-gray-500', className }) {\n const rounded = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n const sizeClass = getRealSize(size || 'md');\n if (src) {\n return (_jsx(\"img\", { className: `inline-block ${sizeClass} ${rounded} ${color} ${className}`, src: src, alt: name || src, title: name }));\n }\n if (name) {\n const [first, second] = name.split(' ');\n let text = second ? `${first[0]}${second[0]}` : `${first[0]}${first[1]}`;\n return (_jsx(\"span\", { className: `inline-flex ${sizeClass} items-center justify-center ${rounded} ${color} ${className}`, title: name, children: _jsx(\"span\", { className: `${(size != 'xs') ? 'text-xs' : 'text-[0.6rem]'} font-medium leading-none text-white`, children: text }) }));\n }\n return (_jsx(\"span\", { className: `inline-block ${sizeClass} overflow-hidden ${rounded} ${color}`, children: _jsx(\"svg\", { className: \"h-full w-full text-gray-300\", fill: \"currentColor\", viewBox: \"0 0 24 24\", children: _jsx(\"path\", { d: \"M24 20.993V24H0v-2.996A14.977 14.977 0 0112.004 15c4.904 0 9.26 2.354 11.996 5.993zM16.002 8.999a4 4 0 11-8 0 4 4 0 018 0z\" }) }) }));\n}\nexport function SvgAvatar({ size, shape = \"circle\", color = 'bg-gray-500', className, children }) {\n const rounded = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n const sizeClass = getRealSize(size || 'md');\n return (_jsx(\"span\", { className: `inline-block ${sizeClass} overflow-hidden ${rounded} ${color} ${className}`, children: children }));\n}\n//# sourceMappingURL=Avatar.js.map","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n//# sourceMappingURL=utils.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"./libs/utils\";\n// Base badge variants\nconst badgeVariants = cva(\"inline-flex items-center rounded-md px-2 py-1 text-xs font-medium\", {\n variants: {\n variant: {\n default: \"text-foreground bg-muted\",\n secondary: \"bg-secondary text-primary\",\n destructive: \"bg-destructive text-destructive\",\n attention: \"bg-attention text-attention\",\n success: \"bg-success text-success\",\n info: \"bg-info text-info\",\n done: \"bg-done text-done\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n// Base Badge component\nexport function Badge({ className, variant, children, onClick, ...props }) {\n return (_jsx(\"span\", { className: cn(badgeVariants({ variant }), className), onClick: onClick, ...props, children: children }));\n}\nconst dotBadgeVariants = cva(\n// Base styles\n\"inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-border\", {\n variants: {\n variant: {\n default: \"\",\n success: \"\",\n destructive: \"\",\n attention: \"\",\n done: \"\",\n info: \"\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n});\n// Separate dot variants to allow className overrides\nconst dotVariants = cva(\"h-1.5 w-1.5\", {\n variants: {\n variant: {\n default: \"fill-foreground\",\n success: \"fill-success\",\n destructive: \"fill-destructive\",\n attention: \"fill-attention\",\n done: \"fill-done\",\n info: \"fill-info\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n});\nexport function DotBadge({ variant, className, dotClassName, // New prop for dot-specific classes\nchildren, ...props }) {\n return (_jsxs(\"span\", { className: cn(dotBadgeVariants({ variant }), className), ...props, children: [_jsx(\"svg\", { className: cn(dotVariants({ variant }), dotClassName), viewBox: \"0 0 6 6\", \"aria-hidden\": \"true\", children: _jsx(\"circle\", { cx: 3, cy: 3, r: 3 }) }), children] }));\n}\n//# sourceMappingURL=Badge.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Center({ className, children }) {\n return (_jsx(\"div\", { className: clsx('flex items-ceter justify-center', className), children: children }));\n}\n//# sourceMappingURL=Center.js.map","function flipPos(position) {\n switch (position) {\n case \"top\": return \"bottom\";\n case \"bottom\": return \"top\";\n case \"left\": return \"right\";\n case \"right\": return \"left\";\n case \"ne\": return \"sw\";\n case \"nw\": return \"se\";\n case \"se\": return \"nw\";\n case \"sw\": return \"ne\";\n default: return position;\n }\n}\nfunction flipAlign(align) {\n switch (align) {\n case \"start\": return \"end\";\n case \"end\": return \"start\";\n default: return align;\n }\n}\nclass PositionResolver {\n /**\n * The computed left coordinate (i.e. x)\n */\n left;\n /**\n * The computed top coordinate (i.e. y)\n */\n top;\n /**\n * The computed width constraint. If undefined it means that the width is not constrained.\n */\n width;\n /**\n * The computed height constraint. If undefined it means that the height is not constrained.\n */\n height;\n /**\n * Alignment axis. The axis is computed from the position constraints.\n * If no axis is found - no alignment will be done\n */\n alignAxis;\n /**\n * A gap size between the anchor element and the target element.\n */\n gap;\n constructor(gap = 0) {\n this.gap = gap;\n }\n position(pos, anchorRect, elemRect) {\n switch (pos) {\n case \"top\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.alignAxis = 'x';\n break;\n }\n case \"bottom\": {\n this.top = anchorRect.bottom + this.gap;\n this.alignAxis = 'x';\n break;\n }\n case \"left\": {\n this.left = anchorRect.left - elemRect.width - this.gap;\n this.alignAxis = 'y';\n break;\n }\n case \"right\": {\n this.left = anchorRect.right + this.gap;\n this.alignAxis = 'y';\n break;\n }\n case \"ne\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.left = anchorRect.right + this.gap;\n break;\n }\n case \"nw\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.left = anchorRect.left - elemRect.width - this.gap;\n break;\n }\n case \"se\": {\n this.top = anchorRect.bottom + this.gap;\n this.left = anchorRect.right + this.gap;\n break;\n }\n case \"sw\": {\n this.top = anchorRect.bottom + this.gap;\n this.left = anchorRect.left - elemRect.width - this.gap;\n break;\n }\n }\n }\n align(align, anchorRect, elemRect) {\n if (!this.alignAxis)\n return; // no alignment axis\n switch (align) {\n case 'start': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left;\n }\n else {\n this.top = anchorRect.top;\n }\n break;\n }\n case 'end': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.right - elemRect.width;\n }\n else {\n this.top = anchorRect.bottom - elemRect.height;\n }\n break;\n }\n case 'center': {\n // centering depend on the final value of the width / height\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left + anchorRect.width / 2 - elemRect.width / 2;\n }\n else {\n this.top = anchorRect.top + anchorRect.height / 2 - elemRect.height / 2;\n }\n break;\n }\n case 'fill': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left;\n this.width = anchorRect.right - anchorRect.left;\n }\n else {\n this.top = anchorRect.top;\n this.height = anchorRect.bottom - anchorRect.top;\n }\n break;\n }\n }\n }\n computePosition(constraints, elemRect, anchorRect) {\n this.position(constraints.position, anchorRect, elemRect);\n constraints.align && this.align(constraints.align, anchorRect, elemRect);\n if (!this.left && !this.top) {\n throw new Error(\"Invalid position. Cannot compute x,y coordinates\");\n }\n const constrainWidth = this.width != null;\n const constrainHeight = this.height != null;\n const width = constrainWidth ? this.width : elemRect.width;\n const height = constrainHeight ? this.height : elemRect.height;\n return {\n rect: new DOMRect(this.left, this.top, width, height),\n constrainWidth,\n constrainHeight,\n position: constraints.position,\n align: constraints.align\n };\n }\n flipAxis(constraints, axis) {\n if (this.alignAxis === axis) { // flip alignment\n if (constraints.align) {\n const newAlign = flipAlign(constraints.align);\n if (newAlign !== constraints.align) {\n return { ...constraints, align: newAlign };\n }\n }\n }\n else { // flip positioning\n const newPos = flipPos(constraints.position);\n if (newPos !== constraints.position) {\n return { ...constraints, position: newPos };\n }\n }\n return null; // nothing to do\n }\n}\nfunction isElementVisible(elemRect, clientRect) {\n return elemRect.left >= clientRect.left && elemRect.right <= clientRect.right\n &&\n elemRect.top >= clientRect.top && elemRect.bottom <= clientRect.bottom;\n}\nfunction isElementVisibleOnAxis(elemRect, clientRect, axis) {\n if (axis === 'x') {\n return elemRect.left >= clientRect.left && elemRect.right <= clientRect.right;\n }\n else {\n return elemRect.top >= clientRect.top && elemRect.bottom <= clientRect.bottom;\n }\n}\n/**\n * Compute the position by trying to adjust the constraints until the computed position fits into the client area.\n * Returns the best position that fits the constraints.\n * @param constraints\n * @param elemRect\n * @param anchorRect\n * @param clientRect\n * @returns null if the element cannot be positioned otherwise returns a position object\n */\nexport function computePosition(constraints, elemRect, anchorRect, clientRect) {\n const resolver = new PositionResolver(constraints.gap);\n let computedPos = resolver.computePosition(constraints, elemRect, anchorRect);\n const isVisibleOnXAxis = isElementVisibleOnAxis(computedPos.rect, clientRect, 'x');\n const isVisibleOnYAxis = isElementVisibleOnAxis(computedPos.rect, clientRect, 'y');\n if (isVisibleOnXAxis && isVisibleOnYAxis) {\n return computedPos; // the element is visible on both axis\n }\n let newConstraints = null;\n if (!isVisibleOnXAxis) {\n newConstraints = resolver.flipAxis(constraints, 'x');\n }\n if (!isVisibleOnYAxis) {\n newConstraints = resolver.flipAxis(newConstraints || constraints, 'y');\n }\n if (!newConstraints) {\n return null; // cannot find a better position\n }\n computedPos = new PositionResolver(resolver.gap).computePosition(newConstraints, elemRect, anchorRect);\n if (isElementVisible(computedPos.rect, clientRect)) {\n return computedPos;\n }\n return null; // cannot find a better position\n}\n//# sourceMappingURL=position.js.map","/**\n * Compute the intersection of the two given rects.\n * @param rect1\n * @param rect2\n * @returns\n */\nexport function intersectRects(rect1, rect2) {\n const x1 = Math.max(rect1.left, rect2.left);\n const y1 = Math.max(rect1.top, rect2.top);\n const x2 = Math.min(rect1.right, rect2.right);\n const y2 = Math.min(rect1.bottom, rect2.bottom);\n if (x2 <= x1 || y2 <= y1) {\n return null; // No intersection\n }\n return new DOMRect(x1, y1, x2 - x1, y2 - y1);\n}\n/**\n * Compute the visible rectangle of the scrollable parents.\n * @param scrollableParents\n * @returns\n */\nexport function computeVisibleClientRect(scrollableParents) {\n if (scrollableParents.length === 0)\n return null;\n // Initialize the rect as the bounding rect of the first scrollable parent\n let rect = scrollableParents[0].getBoundingClientRect();\n // Iterate over the remaining scrollable parents to compute the intersection\n for (let i = 1, l = scrollableParents.length; i < l; i++) {\n const parentRect = scrollableParents[i].getBoundingClientRect();\n rect = intersectRects(parentRect, rect);\n // If there is no intersection, exit early\n if (!rect) {\n return null;\n }\n }\n return rect;\n}\n/**\n * Tests whether the given element is scrollable in any direction.\n * @param element\n * @returns\n */\nexport function isScrollable(element) {\n const hasScrollY = element.scrollHeight > element.clientHeight;\n const hasScrollX = element.scrollWidth > element.clientWidth;\n if (hasScrollY || hasScrollX) {\n const style = getComputedStyle(element);\n if ((hasScrollY && style.overflowY !== 'visible') || (hasScrollX && style.overflowX !== 'visible')) {\n return true;\n }\n }\n return false;\n}\n/**\n * Get the list of scrollable parents of the given element. The list always include the root parent at the end.\n * The root parent is either the document.documentElement or the given root element.\n * To iterate the list from top to down you need to iterate from the end to the start of the list,\n * since the root parent is always the last element and the nearest scrollable parent is the first element.\n * @param element\n * @param root\n * @returns\n */\nexport function getScrollableParents(element, root = document.documentElement) {\n const parents = [];\n let parent = element.parentElement;\n while (parent && parent !== root) {\n isScrollable(parent) && parents.push(parent);\n parent = parent.parentElement;\n }\n // Always push the root element\n parents.push(root);\n return parents;\n}\n//# sourceMappingURL=utils.js.map","import { computePosition } from \"./position\";\nimport { computeVisibleClientRect, getScrollableParents } from \"./utils\";\nexport class PopupController {\n options;\n root;\n scrollableParents;\n visibleClientRect;\n context;\n constructor(options) {\n this.options = options;\n this.root = options.root || document.documentElement;\n this.scrollableParents = getScrollableParents(this.anchor, this.root);\n this.visibleClientRect = computeVisibleClientRect(this.scrollableParents);\n }\n get anchor() {\n return this.options.anchor;\n }\n registerListeners(element) {\n const parents = this.scrollableParents;\n const updateHandler = () => {\n this.update();\n };\n // add a window resize listener\n window.addEventListener('resize', updateHandler);\n //TODO do we add scroll listeners to the window?\n // add scroll listeners to all scrollable parents\n for (const parent of parents) {\n parent.addEventListener('scroll', updateHandler);\n }\n let closeOnClick;\n if (this.options.closeOnClick) {\n closeOnClick = (ev) => {\n if (!element.contains(ev.target)) {\n this.tryClose();\n }\n };\n // register in the next event loop cycle since the current one\n // is may be triggered by a click event\n window.setTimeout(function () {\n closeOnClick && document.addEventListener('click', closeOnClick);\n }, 0);\n }\n let closeOnEsc;\n if (this.options.closeOnEsc) {\n closeOnEsc = (ev) => {\n if (ev.key === 'Escape') {\n this.tryClose();\n }\n };\n window.setTimeout(function () {\n closeOnEsc && document.addEventListener('keydown', closeOnEsc);\n }, 0);\n }\n const blockPageScroll = this.options.blockPageScroll;\n if (blockPageScroll) {\n document.body.style.overflow = \"hidden\";\n document.body.style.height = \"100%\";\n }\n return () => {\n window.removeEventListener('resize', updateHandler);\n for (const parent of parents) {\n parent.removeEventListener('scroll', updateHandler);\n }\n closeOnClick && document.removeEventListener('click', closeOnClick);\n closeOnEsc && document.removeEventListener('keydown', closeOnEsc);\n if (blockPageScroll) {\n document.body.style.overflow = \"\";\n document.body.style.height = \"\";\n }\n };\n }\n open(element, constraints) {\n if (this.context) {\n throw new Error(\"The popup controller is already bound to an element\");\n }\n this.tryOpen(element, constraints);\n }\n tryOpen(element, constraints) {\n if (this.context) {\n return; // do nothing if the popup is already open\n }\n this.context = {\n element,\n constraints,\n cleanup: this.registerListeners(element)\n };\n element.style.display = \"\";\n element.style.visibility = \"hidden\";\n // update the popup position\n this.update();\n this.options.onOpen && this.options.onOpen(this);\n }\n close() {\n if (!this.context) {\n throw new Error(\"The popup controller is not bound to an element\");\n }\n this.tryClose();\n }\n tryClose() {\n if (!this.context) {\n return; // do nothing if the popup is not open\n }\n this.options.onClose && this.options.onClose(this);\n this.context.cleanup();\n //TODO\n this.context.element.style.display = \"none\";\n this.context = undefined;\n }\n get isOpen() {\n return !!this.context;\n }\n update() {\n if (!this.context)\n return; // do nothing if the popup is not open\n // update the position of the popup\n const element = this.context.element;\n const constraints = this.context.constraints;\n const elemRect = element.getBoundingClientRect();\n const anchorRect = this.anchor.getBoundingClientRect();\n const clientRect = this.visibleClientRect;\n if (!clientRect) {\n // the popup is not visible\n return;\n }\n const position = computePosition(constraints, elemRect, anchorRect, clientRect);\n this.context.position = position || undefined;\n if (position) {\n if (position.constrainHeight) {\n element.style.height = position.rect.height + 'px';\n }\n if (position.constrainWidth) {\n element.style.width = position.rect.width + 'px';\n }\n element.style.left = position.rect.left + 'px';\n element.style.top = position.rect.top + 'px';\n element.style.visibility = \"visible\";\n }\n }\n createPopupElement() {\n const popup = document.createElement('div');\n popup.style.margin = \"0\";\n popup.style.padding = \"0\";\n popup.style.border = \"none\";\n popup.style.background = \"transparent\";\n popup.className = \"composable-Popup\";\n return popup;\n }\n}\n//# sourceMappingURL=PopupController.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PopupController } from \"./PopupController\";\nconst PopupContext = createContext(undefined);\nexport function usePopupController() {\n const ctrl = useContext(PopupContext);\n if (!ctrl)\n throw new Error(\"usePopupController must be used inside a Popup component\");\n return ctrl;\n}\nexport function DOMPopup({ ctrlRef, id, constraints, isOpen, children, className, onClose, zIndex, position, ...props }) {\n const popupRef = useRef(null);\n const [ctrl, setCtrl] = useState();\n useEffect(() => {\n if (!props.anchor)\n throw new Error(\"Anchor element is required\");\n const _ctrl = new PopupController({\n ...props,\n onClose\n });\n setCtrl(_ctrl);\n return () => {\n _ctrl.tryClose();\n };\n }, []);\n useEffect(() => {\n if (ctrlRef) {\n ctrlRef.current = ctrl;\n }\n }, [ctrl]);\n // effect to open / close the popup\n useEffect(() => {\n if (ctrl && popupRef.current) {\n if (ctrl.isOpen !== isOpen) {\n if (isOpen) {\n ctrl.open(popupRef.current, constraints);\n }\n else {\n ctrl.close();\n }\n }\n }\n else if (ctrl?.isOpen && !isOpen) {\n // close the popup - happens when isOpen becomes false but the ctrl is still open\n // and the popupRef was destroyed by the isOpen && below\n ctrl.close();\n }\n }, [isOpen, ctrl, popupRef.current]);\n return (_jsx(PopupContext.Provider, { value: ctrl, children: isOpen && createPortal(_jsx(\"div\", { id: id, style: {\n //display: isOpen ? 'block' : 'none',\n visibility: 'hidden',\n position: position || 'absolute',\n zIndex: zIndex || 100,\n }, ref: popupRef, className: className, children: children }), document.body) }));\n}\nexport function Popup({ anchor, root, children, ...others }) {\n return anchor.current && (!root || root.current) ? (_jsx(DOMPopup, { anchor: anchor.current, root: root?.current || undefined, ...others, children: children })) : null;\n}\n//# sourceMappingURL=Popup.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport clsx from 'clsx';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Popup } from \"./popup/index\";\nconst INPUT_UNSTYLED = \"block m-0 p-0 border-0 focus:outline-none focus:ring-0 bg-transparent\";\nconst INPUT_NO_PADDING = \"block sm:text-sm sm:leading-6 rounded-md border-0 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 placeholder:text-gray-400 dark:placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 dark:focus:ring-indigo-800\";\nconst INPUT = INPUT_NO_PADDING + \" py-1.5\";\nconst COMBOBOX_POPUP = \"combobox-popup\";\nfunction genComboboxPopupId() {\n return `combobox-popup-${Math.floor(Math.random() * 1000000)}`;\n}\nexport class OptionAdapter {\n filter(items, text) {\n const lcText = text.toLowerCase();\n return items.filter((item) => this.valueOf(item).toLowerCase().includes(lcText));\n }\n renderOption(item) {\n return this.valueOf(item);\n }\n findById(items, id) {\n return items.find(item => this.idOf(item) === id);\n }\n // override to support creating new items\n createItem(_value) {\n return null; // default is no new item\n }\n}\nexport class StringOptionAdapter extends OptionAdapter {\n valueOf(item) {\n return String(item);\n }\n idOf(item) {\n return String(item);\n }\n static instance = new StringOptionAdapter();\n}\nexport class StringOptionAdapterWithCreate extends StringOptionAdapter {\n createItem(value) {\n return value;\n }\n static instance = new StringOptionAdapterWithCreate();\n}\nexport function getDefaultComboBoxLayout(fullWidth, unstyledInput) {\n return {\n buttonRight: 4,\n buttonWidth: 24,\n maxMenuHeight: 240,\n menuClass: \"w-72 bg-white mt-1 shadow-md border border-gray-200 overflow-auto p-0 z-10\",\n inputClass: clsx(unstyledInput ? INPUT_UNSTYLED : INPUT, fullWidth ? \"w-full\" : \"!w-auto\"),\n optionClass: \"py-2 px-3 shadow-sm flex flex-col [&.option-selected]:font-semibold [&.option-highlighted]:bg-blue-300\",\n Input: (ComboInput),\n Menu: (ComboMenu),\n Toggle: (ComboToggle),\n };\n}\nexport function ComboBox({ menuAlign = \"fill\", menuGap, focusOnMount, onSelect, value, zIndex, unstyledInput, fullWidth, api, layout: layoutOpts, adapter, items, placeholder }) {\n const [popupId] = useState(genComboboxPopupId());\n const popupCtrl = useRef(undefined);\n const inputRef = useRef(null);\n const layout = layoutOpts ? Object.assign(getDefaultComboBoxLayout(fullWidth, unstyledInput), layoutOpts) : getDefaultComboBoxLayout(fullWidth, unstyledInput);\n const inputBoxRef = React.useRef(null);\n const ctrl = useComboboxCtrl({\n adapter,\n items,\n value,\n popupId\n });\n useEffect(() => {\n if (inputRef.current) {\n focusOnMount && inputRef.current.focus();\n }\n }, [inputRef.current]);\n // the onSelect callback may change so we need to refresh it.\n useEffect(() => {\n ctrl.onSelect = onSelect;\n ctrl.popupCtrl = popupCtrl.current;\n }, [onSelect, popupCtrl.current]);\n useEffect(() => {\n if (api && ctrl && inputRef.current) {\n api.current = {\n open: () => ctrl.openMenu(),\n close: () => ctrl.closeMenu(),\n toggle: () => ctrl.toggleMenu(),\n setInputValue: (value) => ctrl.inputText = value,\n inputValue: ctrl.inputText || '',\n selectedItem: ctrl.selectedItem,\n focus: () => inputRef.current?.focus()\n };\n return () => {\n api.current = null;\n };\n }\n }, [api, ctrl, inputRef.current]);\n const showMenu = ctrl.isMenuOpen && ctrl.filteredItems.length > 0;\n return (_jsxs(_Fragment, { children: [_jsx(layout.Input, { boxRef: inputBoxRef, inputRef: inputRef, ctrl: ctrl, layout: layout, placeholder: placeholder }), _jsx(Popup, { id: popupId, ctrlRef: popupCtrl, className: COMBOBOX_POPUP, closeOnClick: true, closeOnEsc: true, onClose: () => ctrl.closeMenu(), isOpen: showMenu, anchor: inputBoxRef, zIndex: zIndex, constraints: {\n position: \"bottom\",\n align: menuAlign,\n gap: menuGap != null ? menuGap : 4\n }, children: _jsx(layout.Menu, { fillWidth: menuAlign === \"fill\", items: ctrl.filteredItems, ctrl: ctrl, layout: layout, adapter: adapter }) })] }));\n}\nfunction ComboInput({ inputRef, placeholder, boxRef, ctrl, layout }) {\n const buttonWidth = layout.buttonWidth;\n const style = buttonWidth > 0 ? { paddingRight: `${buttonWidth}px` } : undefined;\n const Toggle = layout.Toggle;\n return (_jsxs(\"div\", { className: \"relative\", ref: boxRef, children: [_jsx(\"input\", { ref: inputRef, placeholder: placeholder, ...ctrl.getInputProps(), style: style, className: layout.inputClass }), Toggle &&\n _jsx(\"button\", { style: {\n top: 0, bottom: 0, right: `${layout.buttonRight}px`, width: `${buttonWidth}px`,\n position: \"absolute\",\n border: \"none\",\n padding: 0,\n margin: 0,\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, ...ctrl.getToggleButtonProps(), children: _jsx(Toggle, { ctrl: ctrl, layout: layout }) })] }));\n}\nfunction ComboToggle({ ctrl }) {\n return ctrl.isMenuOpen ? _jsx(ChevronUpIcon, { className: \"w-4 h-4\" }) : _jsx(ChevronDownIcon, { className: \"w-4 h-4\" });\n}\nfunction ComboMenu({ fillWidth, items, layout, ctrl, adapter }) {\n const { highlightedIndex, selectedItem } = ctrl;\n return (_jsx(\"ul\", { style: { width: fillWidth ? \"100%\" : undefined, maxHeight: layout.maxMenuHeight ? `${layout.maxMenuHeight}px` : '240px' }, className: layout.menuClass, ...ctrl.getMenuProps(), children: items.map((item, index) => (_jsx(\"li\", { \"data-index\": index, className: clsx(layout.optionClass, highlightedIndex === index && \"option-highlighted\", selectedItem === item && \"option-selected\"), ...ctrl.getItemProps(item, index), children: adapter.renderOption(item) }, adapter.idOf(item)))) }));\n}\nexport function useComboboxCtrl(props) {\n const [ctrl, setCtrl] = useState(new ComboboxController(props));\n useEffect(() => {\n ctrl?.withState(setCtrl);\n }, []);\n return ctrl;\n}\nclass ComboboxController {\n popupId;\n items;\n adapter;\n onSelect;\n setState;\n _selectedItem = null;\n _filteredItems;\n _inputText = \"\";\n _highlightedIndex = null;\n _isMenuOpen = false;\n popupCtrl;\n constructor({ adapter, items, value, popupId }) {\n this.adapter = adapter;\n this.items = items;\n this.popupId = popupId;\n if (typeof value === \"string\") {\n this._inputText = value;\n }\n else if (value) {\n this._selectedItem = adapter.findById(items, adapter.idOf(value)) || null;\n if (this._selectedItem) {\n this._inputText = adapter.valueOf(value);\n }\n }\n if (this._inputText) {\n this._filteredItems = this.adapter.filter(this.items, this._inputText);\n }\n else {\n this._filteredItems = this.items;\n }\n }\n withState(setState) {\n this.setState = setState;\n return this;\n }\n clone() {\n const clone = new ComboboxController({ adapter: this.adapter, items: this.items, popupId: this.popupId });\n clone.setState = this.setState;\n clone.onSelect = this.onSelect;\n clone._inputText = this._inputText;\n clone._highlightedIndex = this._highlightedIndex;\n clone._selectedItem = this._selectedItem;\n clone._isMenuOpen = this._isMenuOpen;\n clone._filteredItems = this._filteredItems;\n clone.popupCtrl = this.popupCtrl;\n return clone;\n }\n updateState() {\n this.setState?.(this.clone());\n }\n get filteredItems() {\n if (this._inputText) {\n return this.adapter.filter(this.items, this._inputText);\n }\n else {\n return this.items;\n }\n }\n get selectedItem() {\n return this._selectedItem;\n }\n set selectedItem(item) {\n this._selectedItem = item;\n this._inputText = item ? this.adapter.valueOf(item) : \"\";\n this._filteredItems = this._inputText ?\n this.adapter.filter(this.items, this._inputText)\n : this.items;\n this.updateState();\n this.onSelect?.(item);\n }\n get isMenuOpen() {\n return this._isMenuOpen;\n }\n set inputText(inputText) {\n this._inputText = inputText;\n if (inputText) {\n this._filteredItems = this.adapter.filter(this.items, inputText);\n }\n else {\n this._filteredItems = this.items;\n }\n this._highlightedIndex = null;\n this._selectedItem = null;\n this.updateState();\n // TODO -- experimental - it works but it's not perfect\n // we need to update if the popup is on top and the filtered items changed\n if (this.isMenuOpen && this.popupCtrl) {\n const popupCtrl = this.popupCtrl;\n const popupPosition = popupCtrl.context?.position?.position;\n if (popupPosition && popupPosition === \"top\") {\n window.setTimeout(() => {\n popupCtrl.update();\n }, 100);\n }\n }\n }\n get inputText() {\n return this._inputText;\n }\n set highlightedIndex(index) {\n this._highlightedIndex = index;\n this.updateState();\n }\n get highlightedIndex() {\n return this._highlightedIndex;\n }\n openMenu() {\n if (this._filteredItems.length > 0) {\n this._isMenuOpen = true;\n //this._highlightedIndex = 0;\n this.updateState();\n }\n else {\n // TODO nothing to show.\n // display a create value option?\n }\n }\n closeMenu(_item) {\n if (this._isMenuOpen) {\n this._highlightedIndex = null;\n this._isMenuOpen = false;\n this.updateState();\n }\n }\n toggleMenu() {\n if (this._isMenuOpen) {\n this.closeMenu();\n }\n else {\n this.openMenu();\n }\n }\n highlightIndex(index, navigateToTop = false) {\n this.highlightedIndex = index;\n const popup = document.getElementById(this.popupId);\n if (popup) {\n popup.querySelector(`li[data-index=\"${index}\"]`)?.scrollIntoView(navigateToTop);\n }\n }\n getMenuProps() {\n return {};\n }\n getToggleButtonProps() {\n return {\n onClick: () => {\n this._isMenuOpen = !this._isMenuOpen;\n this.updateState();\n }\n };\n }\n getItemProps(item, index) {\n return {\n \"aria-selected\": this._highlightedIndex === index,\n onClick: () => {\n this.selectedItem = item;\n this.closeMenu();\n },\n onMouseEnter: () => {\n if (this.highlightedIndex !== index) {\n this.highlightedIndex = index;\n }\n },\n onMouseLeave: () => {\n if (this.highlightedIndex === index) {\n this.highlightedIndex = null;\n }\n }\n };\n }\n getInputProps() {\n const items = this._filteredItems;\n return {\n onClick: () => {\n this.openMenu();\n },\n onChange: (ev) => {\n const value = ev.target.value;\n this.inputText = value;\n this.openMenu();\n },\n value: this.inputText,\n onKeyDown: (ev) => {\n const key = ev.key;\n if (key === \"Enter\") {\n if (this.highlightedIndex != null) {\n this.selectedItem = items[this.highlightedIndex || 0];\n }\n else {\n // create new value?\n if (this.inputText) {\n const item = this.adapter.createItem(this.inputText);\n if (item) {\n this.items.push(item);\n this.selectedItem = item;\n }\n }\n }\n this.closeMenu();\n }\n else if (key === \"ArrowDown\") {\n if (this.isMenuOpen) {\n this.highlightIndex(this.highlightedIndex === null ? 0 : incrModulo(this.highlightedIndex, items.length), false);\n }\n else {\n this.openMenu();\n }\n }\n else if (key === \"ArrowUp\") {\n if (this.isMenuOpen) {\n this.highlightIndex(this.highlightedIndex === null ? 0 : decrModulo(this.highlightedIndex, items.length), true);\n }\n }\n }\n };\n }\n}\nfunction incrModulo(value, max) {\n return (value + 1) % max;\n}\nfunction decrModulo(value, max) {\n return (value - 1 + max) % max;\n}\n//# sourceMappingURL=ComboBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../libs/utils\";\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipContent = React.forwardRef(({ className, sideOffset = 4, side = \"top\", ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, side: side, style: { zIndex: 100 }, className: cn(\"max-w-[90vw]\", \"z-50 overflow-hidden rounded-md bg-tooltips border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className), ...props }) })));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\nexport function VTooltip({ description, children, size = 'sm', placement = 'top', className, asChild }) {\n return (_jsx(TooltipProvider, { delayDuration: 0, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { className: \"cursor-pointer\", asChild: asChild, children: children }), _jsx(TooltipContent, { side: placement, className: `px-3 py-1.5 max-w-${size} text-${size} px-3 ${className}`, children: description })] }) }));\n}\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n//# sourceMappingURL=tooltip.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { VTooltip } from \"./tooltip\";\nimport { cn } from \"../libs/utils\";\nimport { Loader2 } from \"lucide-react\";\nimport clsx from \"clsx\";\nconst buttonVariants = cva(\"hover:cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", {\n variants: {\n variant: {\n destructive: \"bg-destructive dark:bg-destructive/10 text-destructive ring-1 ring-inset ring-destructive-muted/50 dark:ring-destructive-muted/50 shadow-xs hover:bg-destructive/50\",\n outline: \"border border-input bg-background shadow-xs hover:bg-muted ring-inset\",\n secondary: \"bg-secondary-background text-secondary hover:bg-secondary-background/80 ring-inset\",\n ghost: \"hover:bg-muted/50 dark:hover:bg-muted/20 ring-inset\",\n link: \"text-white underline-offset-4 hover:underline ring-inset\",\n primary: \"bg-primary text-white shadow-xs hover:bg-primary/90 ring-inset\",\n soft: \"bg-primary/5 dark:bg-primary/10 text-primary shadow-xs hover:bg-primary/10 dark:hover:bg-primary/20 ring-inset\",\n unstyled: \"\"\n },\n size: {\n xs: 'h-7 rounded px-2 py-1 text-xs gap-x-1',\n sm: \"h-8 rounded px-2 text-xs\",\n md: \"h-9 rounded-md px-4 py-2\",\n lg: \"h-10 rounded-md px-3\",\n xl: 'rounded-md px-3.5 py-2.5 text-sm gap-x-2',\n icon: \"p-0 m-0 rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n});\nconst Button = React.forwardRef(({ className, variant, size, asChild = false, alt, isDisabled, isLoading, title, onClick, type, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonElement = (_jsxs(Comp, { className: clsx(className, cn(buttonVariants({ variant, size }))), disabled: isDisabled || isLoading || props.disabled, ref: ref, onClick: onClick, type: type, autoFocus: false, ...props, children: [isLoading && _jsx(Loader2, { className: \"animate-spin\" }), props.children] }));\n if (alt || title) {\n return (_jsx(VTooltip, { description: alt || title, asChild: true, className: \"cursor-pointer\", size: \"xs\", placement: \"top\", children: buttonElement }));\n }\n return buttonElement;\n});\nButton.displayName = \"Button\";\nexport { Button, buttonVariants };\n//# sourceMappingURL=button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\nconst initialState = {\n theme: \"system\",\n setTheme: () => null,\n};\nconst ThemeProviderContext = createContext(initialState);\nexport function ThemeProvider({ children, defaultTheme = \"system\", storageKey = \"vite-ui-theme\", ...props }) {\n const [theme, setTheme] = useState(() => localStorage.getItem(storageKey) || defaultTheme);\n useEffect(() => {\n const root = window.document.documentElement;\n root.classList.remove(\"light\", \"dark\");\n if (theme === \"system\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n root.classList.add(systemTheme);\n return;\n }\n root.classList.add(theme);\n }, [theme]);\n const value = {\n theme,\n setTheme: (theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n return (_jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));\n}\nexport const useTheme = () => {\n const context = useContext(ThemeProviderContext);\n if (context === undefined)\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n return context;\n};\n//# sourceMappingURL=ThemeProvider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Computer, Moon, Sun } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { useTheme } from \"./ThemeProvider\";\nexport function ModeOption({ option, current, setTheme, icon }) {\n return (_jsx(Button, { variant: current === option ? \"secondary\" : \"outline\", size: \"sm\", onClick: () => setTheme(option), alt: option, children: icon }));\n}\nexport default function ModeToggle() {\n const { setTheme } = useTheme();\n const theme = useTheme().theme;\n return (_jsxs(\"div\", { className: \"flex justify-between px-2 items-center\", children: [_jsx(\"p\", { className: \"text-sm font-semibold\", children: \"Theme\" }), _jsxs(\"div\", { className: \"flex gap-2\", children: [_jsx(ModeOption, { current: theme, option: \"system\", setTheme: setTheme, icon: _jsx(Computer, { className: \"text-muted\" }) }), _jsx(ModeOption, { current: theme, option: \"light\", setTheme: setTheme, icon: _jsx(Sun, { className: \"text-muted\" }) }), _jsx(ModeOption, { current: theme, option: \"dark\", setTheme: setTheme, icon: _jsx(Moon, { className: \"text-muted\" }) })] })] }));\n}\n//# sourceMappingURL=ThemeSwitcher.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { cn } from \"../libs/utils\";\nconst Card = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"rounded-xl border bg-card text-card-foreground shadow\", className), ...props })));\nCard.displayName = \"Card\";\nconst CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"flex flex-col p-6\", className), ...props })));\nCardHeader.displayName = \"CardHeader\";\nconst CardTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"font-semibold leading-none tracking-tight\", className), ...props })));\nCardTitle.displayName = \"CardTitle\";\nconst CardDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"text-sm text-muted-foreground\", className), ...props })));\nCardDescription.displayName = \"CardDescription\";\nconst CardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"p-6 pt-0\", className), ...props })));\nCardContent.displayName = \"CardContent\";\nconst CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"flex items-center p-6 pt-0\", className), ...props })));\nCardFooter.displayName = \"CardFooter\";\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n//# sourceMappingURL=card.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function VisuallyHidden({ children }) {\n return (_jsx(\"span\", { style: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n }, children: children }));\n}\n//# sourceMappingURL=visuallyHidden.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../libs/utils\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { VisuallyHidden } from \"../libs/visuallyHidden\";\nimport { createContext, useContext } from \"react\";\nconst ModalContext = createContext(false);\nexport function useIsInModal() {\n return !!useContext(ModalContext);\n}\nexport function ModalContextProvider({ children }) {\n return _jsx(ModalContext.Provider, { value: true, children: children });\n}\nexport function VModal({ className, children, isOpen, onClose, description = \"Modal Description\", noCloseButton = false, allowOverflow = false, disableCloseOnClickOutside = false, }) {\n const handleOpenChange = (open) => {\n if (!open) {\n onClose();\n }\n };\n return (_jsxs(Dialog, { open: isOpen, onOpenChange: (open) => {\n if (!disableCloseOnClickOutside || open) {\n handleOpenChange(open);\n }\n }, children: [allowOverflow && _jsx(DialogOverlay, { className: \"z-50 fixed inset-0 bg-black/80\" }), _jsx(VisuallyHidden, { children: _jsx(DialogDescription, { children: description }) }), _jsxs(DialogContent, { className: cn(\"min-h-20 p-2\", \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border bg-background shadow-lg duration-200 sm:rounded-lg\", className), children: [!noCloseButton && (_jsx(DialogClose, { onClick: () => handleOpenChange(false), asChild: true, autoFocus: false, children: _jsx(Button, { variant: \"outline\", alt: \"Close\", className: \"top-4 right-4 absolute data-[state=open]:bg-accent opacity-70 hover:opacity-100 rounded-sm focus:outline-none focus:ring-2 focus:ring-ring ring-offset-background focus:ring-offset-2 data-[state=open]:text-muted-foreground transition-opacity disabled:pointer-events-none\", children: _jsx(X, { className: \"w-4 h-4\" }) }) })), _jsx(ModalContextProvider, { children: children })] })] }));\n}\nexport const VModalTitle = ({ children, show = true, className, ...props }) => {\n if (!show) {\n return (_jsx(VisuallyHidden, { children: _jsx(DialogTitle, { children: children }) }));\n }\n return (_jsx(DialogTitle, { className: cn(\"text-lg font-semibold leading-6 tracking-tight p-4\", className), ...props, children: children }));\n};\nexport const VModalBody = ({ children, className, ...props }) => {\n return (_jsx(\"div\", { className: cn(\"text-sm p-4 max-h-[80vh] overflow-y-auto\", className), ...props, children: children }));\n};\nexport const VModalFooter = ({ align = \"right\", children, className, ...props }) => {\n const alignClass = {\n left: \"justify-start\",\n center: \"justify-center\",\n right: \"justify-end\",\n };\n return (_jsx(\"div\", { className: cn(\"w-full flex py-3 sm:py-2 sm:flex sm:flex-row-reverse sm:flex-row sm:justify-end sm:space-x-2\", alignClass[align], className), ...props, children: children }));\n};\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn(\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className), ...props })));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\nconst DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsx(DialogPrimitive.Content, { ref: ref, autoFocus: false, onOpenAutoFocus: (event) => {\n event.preventDefault();\n }, className: cn(\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-2 border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\", className), ...props, children: children })] })));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\nconst DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn(\"text-sm text-muted-foreground\", className), ...props })));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\nconst DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn(\"text-lg font-semibold leading-none tracking-tight\", className), ...props })));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\nexport { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogTitle, DialogDescription, };\n//# sourceMappingURL=dialog.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../libs/utils\";\nimport { X } from \"lucide-react\";\nconst variants = cva(\"\", {\n variants: {\n size: {\n xs: \"rounded py-1 text-xs rounded-xs\",\n sm: \"rounded text-xs rounded-sm\",\n md: \"rounded-md py-2 text-sm\",\n lg: \"rounded-md text-base\",\n xl: \"rounded-md py-2.5 text-lg\",\n },\n variant: {\n default: \"flex w-full rounded-md border border-input bg-background py-2 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 ring-inset focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n unstyled: \"block m-0 p-0 w-full border-0 focus:outline-hidden focus:ring-0 bg-transparent\",\n noPadding: \"block rounded-md border-0 bg-background shadow-2xs ring-1 ring-inset ring-ring placeholder:text-muted-foreground focus:ring-2 focus:ring-inset focus:ring-ring ring-offset-background\",\n legacy: \"py-1.5 block rounded-md border-0 bg-background shadow-2xs ring-1 ring-inset ring-ring placeholder:text-muted-foreground focus:ring-2 focus:ring-inset focus:ring-ring ring-offset-background\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\nconst VInput = React.forwardRef(({ className, type, size = \"md\", variant = \"default\", clearable = true, onChange, value, ...props }, ref) => {\n const _onClear = () => {\n onChange && onChange('');\n };\n const _onChange = (ev) => {\n onChange && onChange(ev.target.value);\n };\n return (_jsxs(\"div\", { className: \"w-full\", style: { position: 'relative', display: 'inline-block' }, children: [_jsx(\"input\", { type: type, className: cn(variants({ size, variant }), className, clearable && value ? \"pr-6\" : \"\"), ref: ref, value: value == null ? '' : value, onChange: _onChange, ...props }), clearable && value && !props.readOnly && !props.disabled && (_jsx(\"button\", { onClick: _onClear, className: `absolute ${type !== 'number' ? 'right-0' : 'right-7'} top-1/2 -translate-y-1/2 size-7 text-muted-foreground hover:text-destructive cursor-pointer flex items-center justify-center`, type: \"button\", \"aria-label\": \"Clear input\", children: _jsx(X, { size: 16 }) }))] }));\n});\nVInput.displayName = \"VInput\";\nexport { VInput, };\n//# sourceMappingURL=input.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../libs/utils\";\nconst Separator = React.forwardRef(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (_jsx(SeparatorPrimitive.Root, { ref: ref, decorative: decorative, orientation: orientation, className: cn(\"shrink-0 bg-border\", orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\", className), ...props })));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\nexport { Separator };\n//# sourceMappingURL=separator.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../libs/utils\";\nimport { useIsInModal } from \"./dialog\";\nconst PopoverContext = React.createContext(null);\nconst Popover = ({ hover = false, click = false, children, _open, onOpenChange }) => {\n const [open, setOpen] = React.useState(_open || false);\n const insideModal = useIsInModal();\n const handleOpenChange = (open) => {\n setOpen(open);\n if (onOpenChange) {\n onOpenChange(open);\n }\n };\n return (_jsx(PopoverContext.Provider, { value: { open, setOpen, hover, click }, children: _jsx(PopoverPrimitive.Root, { open: open, onOpenChange: handleOpenChange, modal: insideModal, children: children }) }));\n};\nfunction handleHover(hover = false, setOpen = () => { }, type) {\n if (hover) {\n setOpen(type === \"enter\");\n }\n}\nconst PopoverTrigger = React.forwardRef(({ children, ...props }, ref) => {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"PopoverTrigger must be used within a Popover\");\n }\n const { setOpen, hover, click } = context;\n return (_jsx(PopoverPrimitive.Trigger, { ref: ref, asChild: true, onMouseEnter: () => handleHover(hover, setOpen, \"enter\"), onMouseLeave: () => handleHover(hover, setOpen, \"leave\"), onClick: () => {\n if (click)\n setOpen((prev) => !prev);\n }, ...props, children: children }));\n});\nPopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nconst PopoverContent = React.forwardRef(({ className, align = \"center\", side = \"bottom\", ...props }, ref) => {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"PopoverContent must be used within a Popover\");\n }\n const { setOpen, hover } = context;\n return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { ref: ref, align: align, side: side, onMouseEnter: () => handleHover(hover, setOpen, \"enter\"), onMouseLeave: () => handleHover(hover, setOpen, \"leave\"), \n // onClick={() => {setOpen(false)}}\n className: cn(\"z-50 w-72 rounded-md border-popover bg-popover text-popover-foreground ring-1 ring-gray-200 dark:ring-slate-700 shadow-md focus:outline-none animate-in\", \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className), ...props }) }));\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\nconst PopoverClose = PopoverPrimitive.Close;\nPopoverClose.displayName = PopoverPrimitive.Close.displayName;\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverClose };\n//# sourceMappingURL=popover.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\nconst Command = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive, { ref: ref, className: cn(\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\", className), ...props })));\nCommand.displayName = CommandPrimitive.displayName;\nconst CommandDialog = ({ children, ...props }) => {\n return (_jsx(Dialog, { ...props, children: _jsx(DialogContent, { className: \"shadow-lg p-0 overflow-hidden\", children: _jsx(Command, { className: \"[&_[cmdk-group]]:px-2 [&_[cmdk-item]]:px-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]_svg]:w-5 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\", children: children }) }) }));\n};\nconst CommandInput = React.forwardRef(({ className, ...props }, ref) => (_jsxs(\"div\", { className: \"flex items-center px-3 border-b\", \"cmdk-input-wrapper\": \"\", children: [_jsx(Search, { className: \"opacity-50 size-4 shrink-0\" }), _jsx(CommandPrimitive.Input, { ref: ref, className: cn(\"focus:ring-0\", \"border-0 flex h-8 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\", className), ...props })] })));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\nconst CommandList = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.List, { ref: ref, className: cn(\"max-h-[200px] overflow-y-auto overflow-x-hidden\", className), ...props })));\nCommandList.displayName = CommandPrimitive.List.displayName;\nconst CommandEmpty = React.forwardRef((props, ref) => (_jsx(CommandPrimitive.Empty, { ref: ref, className: \"py-2 text-sm text-center\", ...props })));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\nconst CommandGroup = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Group, { ref: ref, className: cn(\"overflow-y-auto overflow-x-hidden p-1 text-foreground\", \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\", className), ...props })));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\nconst CommandSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Separator, { ref: ref, className: cn(\"-mx-1 h-px bg-border\", className), ...props })));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\nconst CommandItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Item, { ref: ref, className: cn(\"hover:bg-muted cursor-pointer relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", className), ...props })));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\nconst CommandShortcut = ({ className, ...props }) => {\n return (_jsx(\"span\", { className: cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className), ...props }));\n};\nCommandShortcut.displayName = \"CommandShortcut\";\nexport { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };\n//# sourceMappingURL=command.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { isEqual } from 'lodash-es';\nimport { Check, ChevronsUpDown, SearchIcon, SquarePlus, X } from 'lucide-react';\nimport { useState, useEffect, useRef } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger, PopoverClose } from './popover';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from './command';\nimport { VInput } from './input';\nexport function VSelectBox({ options, optionLabel, value, onChange, addNew, addNewLabel, disabled, filterBy, label, placeholder, className, popupClass, isClearable, border = true }) {\n const triggerRef = useRef(null);\n const [open, setOpen] = useState(false);\n const [width, setWidth] = useState(0);\n const [filterValue, setFilterValue] = useState('');\n useEffect(() => {\n const element = triggerRef.current;\n if (!element) {\n return;\n }\n const updateWidth = () => {\n const contentWidth = element.getBoundingClientRect().width;\n setWidth(contentWidth);\n };\n const resizeObserver = new ResizeObserver(() => {\n updateWidth();\n });\n updateWidth();\n resizeObserver.observe(element);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n const handleTriggerClick = (e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n setOpen(!open);\n };\n const _onClick = (opt) => {\n setOpen(false);\n onChange(opt);\n };\n let filteredOptions = options || [];\n function getFilterByFn(filterBy) {\n if (!filterBy) {\n return (o) => String(o).toLowerCase();\n }\n else if (typeof filterBy === 'string') {\n return (o) => String(o[filterBy]).toLowerCase();\n }\n else {\n return filterBy;\n }\n }\n const filterLc = filterValue.toLowerCase();\n const filterFn = getFilterByFn(filterBy);\n filteredOptions = filteredOptions.filter(o => filterFn(o).includes(filterLc));\n return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(\"div\", { ref: triggerRef, onClick: handleTriggerClick, className: clsx(className, border && 'border border-border', 'flex flex-row gap-2 items-center justify-between p-2 rounded-md group', !disabled && \"cursor-pointer hover:bg-muted\"), children: [_jsxs(\"div\", { className: clsx(\"flex flex-col w-fill rounded-md text-sm items-center justify-center truncate \", !disabled && \"\"), children: [label && _jsx(\"div\", { className: 'w-full text-left text-xs font-semibold', children: label }), _jsx(\"div\", { className: clsx('w-full text-left', !disabled && ''), children: value ? (optionLabel ? optionLabel(value) : value) : placeholder }), isClearable && value && (_jsx(\"div\", { onClick: (e) => {\n e.stopPropagation();\n }, className: \"absolute right-2 top-1/2 transform -translate-y-1/2 cursor-pointer\", children: _jsx(X, { className: \"size-4\" }) }))] }), !disabled && (_jsx(ChevronsUpDown, { className: \"size-4 opacity-50\" }))] }) }), _jsxs(PopoverContent, { style: { width: `${width}px`, zIndex: 1000000 }, className: clsx(\"min-w-[8rem] w-64 bg-popover p-1 border shadow\", \"divide-y divide-border\", popupClass), children: [filterBy && (_jsxs(\"div\", { className: 'flex justify-start items-center mb-1', children: [_jsx(\"div\", { className: 'mx-2', children: _jsx(SearchIcon, { className: \"size-4\" }) }), _jsx(VInput, { variant: 'unstyled', value: filterValue, onChange: setFilterValue, className: \"w-full p-1 rounded-md\", placeholder: \"Search...\" })] })), _jsx(Command, { className: \"overflow-hidden\", children: _jsxs(CommandList, { className: \"max-h-[200px] overflow-y-auto\", children: [_jsx(CommandEmpty, { children: \"No result found.\" }), _jsx(CommandGroup, { className: \"overflow-visible\", children: filteredOptions?.map((opt, index) => (_jsx(CommandItem, { onSelect: () => _onClick(opt), className: \"w-full\", children: _jsxs(PopoverClose, { className: 'w-full flex justify-between items-center', children: [_jsx(\"div\", { className: 'w-full truncate text-left', children: optionLabel ? optionLabel(opt) : opt }), isEqual(value, opt) && _jsx(Check, { className: \"size-4\" })] }) }, index))) })] }) }), addNew && (_jsx(\"div\", { className: 'p-1', children: _jsxs(\"a\", { onClick: addNew, className: clsx('gap-x-2 px-2 py-1.5 truncate group flex rounded-md items-center text-sm cursor-pointer hover:bg-accent'), children: [_jsx(SquarePlus, { size: 16, strokeWidth: 1.25, absoluteStrokeWidth: true }), addNewLabel] }) }))] })] }));\n}\n//# sourceMappingURL=selectBox.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../libs/utils\";\nimport { VSelectBox } from \"./selectBox\";\nconst TabsContext = React.createContext({\n size: undefined,\n tabs: undefined,\n current: undefined,\n setTab: undefined,\n responsive: false\n});\nconst VTabs = ({ tabs, defaultValue, current, className, fullWidth, children, onTabChange, responsive = false }) => {\n const currentValue = typeof current === 'function' ? current() : current || defaultValue;\n const [value, setValue] = React.useState(currentValue);\n React.useEffect(() => {\n if (currentValue) {\n setValue(currentValue);\n }\n }, [currentValue]);\n const handleValueChange = (newValue) => {\n setValue(newValue);\n if (onTabChange) {\n onTabChange(newValue);\n }\n };\n const setTab = React.useCallback((tabName) => {\n handleValueChange(tabName);\n }, [handleValueChange]);\n return (_jsx(TabsContext.Provider, { value: { tabs, size: fullWidth ? tabs.length : 0, current: value, setTab, responsive: responsive }, children: _jsx(TabsPrimitive.Root, { defaultValue: tabs[0]?.name, value: value, onValueChange: handleValueChange, className: className, children: children }) }));\n};\nconst VTabsBar = ({ className }) => {\n const { tabs, size, current, setTab, responsive } = React.useContext(TabsContext);\n const fullWidth = size !== 0;\n const handleTabChange = React.useCallback((tabName) => {\n if (!tabs || !setTab)\n return;\n const tab = tabs.find(t => t.name === tabName);\n if (tab?.href) {\n window.history.pushState(null, '', tab.href);\n }\n setTab(tabName);\n }, [tabs, setTab]);\n if (!tabs || !setTab) {\n console.warn(\"TabsBar: No tabs provided or setTab not available\");\n return null;\n }\n return (_jsxs(_Fragment, { children: [responsive && (_jsx(\"div\", { className: \"px-2 block lg:hidden\", children: _jsx(VSelectBox, { label: \"Tab\", className: (className), options: tabs, optionLabel: (tab) => typeof tab.label === 'string' ? tab.label : String(tab.label), value: tabs.find(tab => tab.name === current), onChange: (tab) => {\n handleTabChange(tab.name);\n } }) })), _jsx(TabsList, { size: size, className: cn((fullWidth ? \"w-full\" : \"\"), className, (responsive ? \"hidden lg:flex\" : \"\")), children: tabs.map((tab) => (_jsx(TabsTrigger, { value: tab.name, disabled: tab.disabled, href: tab.href, onClick: () => handleTabChange(tab.name), children: tab.label }, tab.name))) })] }));\n};\nconst VTabsPanel = () => {\n const { tabs } = React.useContext(TabsContext);\n if (!tabs)\n return null;\n return (_jsx(_Fragment, { children: tabs.map((tab) => (_jsx(TabsContent, { value: tab.name, children: tab.content }, tab.name))) }));\n};\nconst TabsList = React.forwardRef(({ className, size, ...props }, ref) => (_jsx(TabsContext.Provider, { value: { size }, children: _jsx(TabsPrimitive.List, { ref: ref, className: cn(\"border-b -mb-px flex space-x-4\", className), ...props }) })));\nTabsList.displayName = TabsPrimitive.List.displayName;\nconst TabsTrigger = React.forwardRef(({ className, href, ...props }, ref) => {\n const { size } = React.useContext(TabsContext);\n const handleClick = React.useCallback((event) => {\n if (href) {\n event.preventDefault();\n window.history.pushState(null, '', href);\n }\n if (props.onClick) {\n props.onClick(event);\n }\n }, [href, props.onClick]);\n return (_jsx(TabsPrimitive.Trigger, { ref: ref, className: cn(\"border-b-2 px-2 py-1.5 text-sm font-medium whitespace-nowrap cursor-pointer\", \"border-transparent text-muted-foreground hover:border-border hover:text-foreground\", \"data-[state=active]:border-primary data-[state=active]:text-primary\", \"disabled:pointer-events-none disabled:opacity-50\", className, size ? `w-1/${size}` : \"\"), onClick: handleClick, ...props }));\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\nconst TabsContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(TabsPrimitive.Content, { ref: ref, className: cn(\"focus-visible:outline-none\", className), ...props })));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\nexport { VTabs, VTabsBar, VTabsPanel, TabsList, TabsTrigger, TabsContent };\n//# sourceMappingURL=tabs.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../libs/utils\";\nconst labelVariants = cva(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\nconst Label = React.forwardRef(({ className, required, ...props }, ref) => (_jsxs(LabelPrimitive.Root, { ref: ref, className: cn(labelVariants(), className), ...props, children: [props.children, required && _jsx(\"span\", { className: \"text-destructive-foreground ml-1\", children: \"*\" })] })));\nLabel.displayName = LabelPrimitive.Root.displayName;\nexport { Label };\n//# sourceMappingURL=label.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nexport function Breadcrumbs({ children, maxItems = 3, className, separator }) {\n if (children.length <= maxItems) {\n return (_jsx(Breadcrumb, { className: cn(\"w-full\", className), children: _jsx(BreadcrumbList, { children: children.map((item, index) => (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: item.href ? (_jsx(BreadcrumbLink, { href: item.href, children: item.label })) : (_jsx(BreadcrumbPage, { children: item.label })) }), index < children.length - 1 &&\n _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) })] }, index))) }) }));\n }\n const firstItem = children[0];\n const lastItems = children.slice(-(maxItems - 2));\n return (_jsx(Breadcrumb, { className: cn(\"w-full\", className), children: _jsxs(BreadcrumbList, { children: [_jsx(BreadcrumbItem, { children: firstItem.href ? (_jsx(BreadcrumbLink, { href: firstItem.href, children: firstItem.label })) : (_jsx(BreadcrumbPage, { children: firstItem.label })) }), _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) }), _jsx(BreadcrumbItem, { children: _jsx(BreadcrumbEllipsis, {}) }), _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) }), lastItems.map((item, index) => (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: item.href ? (_jsx(BreadcrumbLink, { href: item.href, children: item.label })) : (_jsx(BreadcrumbPage, { children: item.label })) }), index < lastItems.length - 1 && _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) })] }, index)))] }) }));\n}\nconst Breadcrumb = React.forwardRef(({ ...props }, ref) => _jsx(\"nav\", { ref: ref, \"aria-label\": \"breadcrumb\", ...props }));\nBreadcrumb.displayName = \"Breadcrumb\";\nconst BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"ol\", { ref: ref, className: cn(\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\", className), ...props })));\nBreadcrumbList.displayName = \"BreadcrumbList\";\nconst BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"li\", { ref: ref, className: cn(\"inline-flex items-center gap-1.5\", className), ...props })));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\nconst BreadcrumbLink = React.forwardRef(({ asChild, className, ...props }, ref) => {\n return (_jsx(\"a\", { ref: ref, className: cn(\"transition-colors hover:text-foreground\", className), ...props }));\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\nconst BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"span\", { ref: ref, role: \"link\", \"aria-disabled\": \"true\", \"aria-current\": \"page\", className: cn(\"font-normal text-foreground\", className), ...props })));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\nconst BreadcrumbSeparator = ({ children, className, ...props }) => (_jsx(\"li\", { role: \"presentation\", \"aria-hidden\": \"true\", className: cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className), ...props, children: children ?? _jsx(ChevronRight, {}) }));\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\nconst BreadcrumbEllipsis = ({ className, ...props }) => (_jsxs(\"span\", { role: \"presentation\", \"aria-hidden\": \"true\", className: cn(\"flex h-9 w-9 items-center justify-center\", className), ...props, children: [_jsx(MoreHorizontal, { className: \"h-4 w-4\" }), _jsx(\"span\", { className: \"sr-only\", children: \"More\" })] }));\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n//# sourceMappingURL=breadcrumb.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../../libs/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nexport const AnimateChangeInHeight = ({ children, className, }) => {\n const containerRef = useRef(null);\n const [height, setHeight] = useState(\"auto\");\n useEffect(() => {\n if (containerRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n // We only have one entry, so we can use entries[0].\n const observedHeight = entries[0].contentRect.height;\n setHeight(observedHeight);\n });\n resizeObserver.observe(containerRef.current);\n return () => {\n // Cleanup the observer when the component is unmounted\n resizeObserver.disconnect();\n };\n }\n }, []);\n return (_jsx(\"div\", { className: cn(className, \"overflow-hidden transition-all duration-100 ease-in\"), style: { height }, children: _jsx(\"div\", { ref: containerRef, children: children }) }));\n};\n//# sourceMappingURL=animateChangeInHeight.js.map","\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../libs/utils\";\nimport { buttonVariants } from \"./button\";\nfunction Calendar({ className, classNames, showOutsideDays = true, size = \"md\", ...props }) {\n const daySize = {\n sm: \"size-6\",\n md: \"size-8\",\n lg: \"size-10\",\n }[size];\n return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, className: cn(\"\", className), classNames: {\n months: \"flex w-full flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0 flex-1\",\n month: \"space-y-4 w-full flex flex-col\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(buttonVariants({ variant: \"outline\" }), \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full h-full border-collapse space-y-1\",\n head_row: \"\",\n head_cell: \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"w-full mt-2\",\n cell: cn(\"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\", props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"),\n day: cn(buttonVariants({ variant: \"ghost\" }), daySize, \"flex items-center justify-center\", \"p-0 font-normal aria-selected:opacity-100\"),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected: \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside: \"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }, components: {\n IconLeft: ({ className, ...props }) => (_jsx(ChevronLeft, { className: cn(\"h-4 w-4\", className), ...props })),\n IconRight: ({ className, ...props }) => (_jsx(ChevronRight, { className: cn(\"h-4 w-4\", className), ...props })),\n }, ...props }));\n}\nCalendar.displayName = \"Calendar\";\nexport { Calendar };\n//# sourceMappingURL=calendar.js.map","\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nconst Checkbox = React.forwardRef(({ className, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: cn(\"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: cn(\"flex items-center justify-center text-current\"), children: _jsx(Check, { className: \"h-4 w-4\" }) }) })));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\nexport { Checkbox };\n//# sourceMappingURL=checkbox.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useRef, useState } from \"react\";\n// import { AnimatePresence, motion } from \"motion/react\";\nimport { Calendar } from \"../calendar\";\nimport { format } from \"date-fns\";\nimport { Checkbox } from \"../checkbox\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from \"../command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { AnimateChangeInHeight } from \"./animateChangeInHeight\";\nimport { Button } from \"../button\";\nimport { VInput } from \"../input\";\nexport const SelectionCombobox = ({ filterType, filterValues, setFilterValues, options, }) => {\n const [open, setOpen] = useState(false);\n const [commandInput, setCommandInput] = useState(\"\");\n const commandInputRef = useRef(null);\n const nonSelectedFilterValues = options?.filter((option) => !filterValues.some(filter => filter.value === option.value));\n return (_jsxs(Popover, { _open: open, onOpenChange: (open) => {\n setOpen(open);\n if (!open) {\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n }\n }, children: [_jsx(PopoverTrigger, { className: \"rounded-none px-1.5 py-1 bg-muted hover:bg-muted/50 transition\\n text-muted-foreground hover:text-primary shrink-0\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: filterValues?.length === 1 ? ((() => {\n const option = filterValues[0];\n return option.label;\n })()) : (`${filterValues?.length} selected`) }) }), _jsx(PopoverContent, { className: \"w-[200px] p-0\", children: _jsx(AnimateChangeInHeight, { children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: filterType, className: \"h-9\", value: commandInput, onInputCapture: (e) => {\n setCommandInput(e.currentTarget.value);\n }, ref: commandInputRef }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: \"No results found.\" }), _jsx(CommandGroup, { children: filterValues.map((value) => {\n return (_jsxs(CommandItem, { className: \"group flex gap-2 items-center\", onSelect: () => {\n setFilterValues(filterValues.filter((v) => v.value !== value.value));\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n setOpen(false);\n }, children: [_jsx(Checkbox, { checked: true }), value.label] }, value.value));\n }) }), nonSelectedFilterValues?.length > 0 && (_jsxs(_Fragment, { children: [_jsx(CommandSeparator, {}), _jsx(CommandGroup, { children: nonSelectedFilterValues\n .filter(option => String(option.label).toLowerCase().includes(commandInput.toLowerCase()))\n .map((filter) => (_jsxs(CommandItem, { className: \"group flex gap-2 items-center\", value: String(filter.label), onSelect: () => {\n setFilterValues([...filterValues, filter]);\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n setOpen(false);\n }, children: [_jsx(Checkbox, { checked: false, className: \"opacity-0 group-data-[selected=true]:opacity-100\" }), _jsx(\"span\", { className: \"text-accent-foreground\", children: filter.label })] }, filter.value))) })] }))] })] }) }) })] }));\n};\nexport const DateCombobox = ({ filterValues, setFilterValues, }) => {\n const [open, setOpen] = useState(false);\n const [dateRange, setDateRange] = useState({\n from: filterValues[0] ? new Date(filterValues[0]) : undefined,\n to: filterValues[1] ? new Date(filterValues[1]) : undefined,\n });\n return (_jsxs(Popover, { _open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { className: \"rounded-none px-1.5 py-1 bg-muted hover:bg-muted/50 transition\\n text-muted-foreground hover:text-primary shrink-0\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: dateRange?.from ? (dateRange.to ? (_jsxs(_Fragment, { children: [format(dateRange.from, \"LLL dd, y\"), \" -\", \" \", format(dateRange.to, \"LLL dd, y\")] })) : (format(dateRange.from, \"LLL dd, y\"))) : (_jsx(\"span\", { children: \"Pick a date\" })) }) }), _jsx(PopoverContent, { className: \"w-full p-0\", align: \"start\", children: _jsx(Calendar, { initialFocus: true, mode: \"range\", className: \"w-4/5 p-0\", defaultMonth: dateRange?.from, selected: dateRange, onSelect: (range) => {\n setDateRange(range);\n if (range?.from) {\n setFilterValues([\n format(range.from, \"yyyy-MM-dd\"),\n range.to ? format(range.to, \"yyyy-MM-dd\") : \"\",\n ]);\n }\n }, numberOfMonths: 2 }) })] }));\n};\nexport const TextCombobox = ({ filterValue, setFilterValue, }) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(filterValue);\n const handleKeyDown = (event) => {\n if (event.key === \"Enter\") {\n setFilterValue(inputValue);\n setOpen(false);\n }\n };\n return (_jsxs(Popover, { _open: open, onOpenChange: (open) => {\n setOpen(open);\n if (!open && inputValue !== filterValue) {\n setInputValue(filterValue);\n }\n }, children: [_jsx(PopoverTrigger, { className: \"rounded-none px-1.5 py-1 bg-muted hover:bg-muted/50 transition\\n text-muted-foreground hover:text-primary shrink-0\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: filterValue || \"Enter text...\" }) }), _jsx(PopoverContent, { className: \"w-[200px] p-3\", children: _jsxs(\"div\", { className: \"flex flex-col gap-2 p-2\", children: [_jsx(VInput, { autoFocus: true, type: \"text\", size: \"sm\", value: inputValue, onChange: setInputValue, onKeyDown: handleKeyDown, placeholder: \"Enter text...\" }), _jsx(Button, { size: \"sm\", variant: \"outline\", onClick: () => {\n setFilterValue(inputValue);\n setOpen(false);\n }, children: \"Apply\" })] }) })] }));\n};\n//# sourceMappingURL=comboBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { SelectionCombobox, DateCombobox, TextCombobox } from \"./comboBox\";\nimport { format } from \"date-fns\";\nfunction generateComboboxOptions(filter, setFilters, filterGroups) {\n switch (filter.type) {\n case 'date':\n return (_jsx(DateCombobox, { filterType: filter.name, filterValues: filter.value.map(v => v.value || ''), setFilterValues: (filterValues) => {\n setFilters((prev) => prev.map((f) => f === filter ? {\n ...f,\n value: filterValues.map(val => ({\n value: val,\n label: format(new Date(val), \"LLL dd, y\")\n }))\n } : f));\n } }));\n case 'text':\n return (_jsx(TextCombobox, { filterType: filter.placeholder || filter.name, filterValue: filter.value[0]?.value || '', setFilterValue: (textValue) => {\n setFilters((prev) => prev.map((f) => f === filter ? {\n ...f,\n value: [{\n value: textValue,\n label: textValue\n }]\n } : f));\n } }));\n case 'select':\n default:\n return (_jsx(SelectionCombobox, { filterType: filter.placeholder || filter.name, filterValues: filter.value, setFilterValues: (filterValues) => {\n setFilters((prev) => prev.map((f) => f === filter ? { ...f, value: filterValues } : f));\n }, options: filterGroups.find(group => group.name === filter.name)?.options || [] }));\n }\n}\nexport default function Filters({ filters, setFilters, filterGroups, }) {\n return (_jsx(\"div\", { className: \"flex gap-2 flex-wrap justify-end\", children: filters\n .filter((filter) => filter.value?.length > 0)\n .map((filter) => (_jsxs(\"div\", { className: \"flex gap-[1px] items-center text-sm\", children: [_jsx(\"div\", { className: \"flex gap-1.5 shrink-0 rounded-l bg-muted px-1.5 py-1 items-center\", children: filter.placeholder || filter.name }), generateComboboxOptions(filter, setFilters, filterGroups), _jsx(Button, { variant: \"ghost\", size: \"icon\", onClick: () => {\n setFilters((prev) => prev.filter((f) => f !== filter));\n }, className: \"bg-muted rounded-l-none rounded-r-sm size-7 hover:text-primary hover:bg-muted/50 transition shrink-0\", children: _jsx(X, { className: \"size-6\" }) })] }, filter.name + '-' + (filter.type == 'date' ? 'date' : filter.value.map(v => v.value).join(','))))) }));\n}\n//# sourceMappingURL=filters.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, VInput } from \"../index\";\nexport default function TextFilter({ selectedView, textValue, setTextValue, setFilters, handleClose, filterGroups, }) {\n const handleTextFilterAdd = () => {\n setFilters((prev) => {\n return [\n ...prev,\n {\n name: selectedView || \"\",\n placeholder: filterGroups.find(group => group.name === selectedView)?.placeholder,\n value: [{ value: textValue, label: textValue }],\n type: \"text\",\n }\n ];\n });\n handleClose();\n };\n return (_jsxs(\"div\", { className: \"p-2 flex flex-col gap-2\", children: [_jsx(VInput, { autoFocus: true, type: \"text\", size: \"sm\", value: textValue, onChange: setTextValue, onKeyDown: (e) => e.key === \"Enter\" && handleTextFilterAdd(), placeholder: \"Enter text...\" }), _jsx(Button, { size: \"sm\", variant: \"outline\", onClick: handleTextFilterAdd, disabled: !textValue.trim(), children: \"Apply\" })] }));\n}\n//# sourceMappingURL=textFilter.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Calendar } from \"../calendar\";\nimport { format } from \"date-fns\";\nexport default function DateFilter({ selectedView, dateRange, setDateRange, setFilters, filters, handleClose, filterGroups, }) {\n const handleDateRangeSelect = (range) => {\n setDateRange(range);\n if (range?.from && range?.to) {\n const selectedGroup = filterGroups.find(g => g.name === selectedView);\n setFilters([\n ...filters,\n {\n name: selectedView || \"\",\n value: [\n {\n value: format(range.from, \"yyyy-MM-dd\"),\n label: format(range.from, \"LLL dd, y\")\n },\n {\n value: format(range.to, \"yyyy-MM-dd\"),\n label: format(range.to, \"LLL dd, y\")\n }\n ],\n type: selectedGroup?.type || \"date\",\n },\n ]);\n handleClose();\n }\n };\n return (_jsx(\"div\", { className: \"p-2\", children: _jsx(Calendar, { initialFocus: true, mode: \"range\", defaultMonth: dateRange?.from, selected: dateRange, onSelect: handleDateRangeSelect, size: \"sm\" }) }));\n}\n//# sourceMappingURL=dateFilter.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { CommandItem, CommandEmpty } from \"../index\";\nexport default function SelectFilter({ selectedView, commandInput, setFilters, handleClose, filterGroups, }) {\n const getFilteredOptions = (groupName) => {\n const group = filterGroups.find(g => g.name === groupName);\n if (!group)\n return [];\n let filteredOptions = group.options || [];\n if (!commandInput.trim()) {\n return filteredOptions;\n }\n if (group.filterBy) {\n const filterLc = commandInput.toLowerCase();\n const results = filteredOptions.filter(option => {\n if (option.value === undefined)\n return false;\n const result = group.filterBy(option.value, filterLc);\n return result;\n });\n return results;\n }\n const filterLc = commandInput.toLowerCase();\n return filteredOptions.filter(option => {\n const optionValue = String(option.value || '').toLowerCase();\n return optionValue.includes(filterLc);\n });\n };\n if (!selectedView)\n return null;\n const options = getFilteredOptions(selectedView);\n if (options.length === 0) {\n return _jsx(CommandEmpty, { children: \"No matching options\" });\n }\n return (_jsx(_Fragment, { children: options.map((option) => (_jsx(CommandItem, { className: \"group flex gap-2 items-center w-full hover:bg-muted\", onSelect: () => {\n setFilters((prev) => {\n const existingFilterIndex = prev.findIndex(f => f.name === selectedView);\n const selectedGroup = filterGroups.find(g => g.name === selectedView);\n if (existingFilterIndex >= 0) {\n const updatedFilters = [...prev];\n updatedFilters[existingFilterIndex] = {\n ...updatedFilters[existingFilterIndex],\n value: [...updatedFilters[existingFilterIndex].value, option]\n };\n return updatedFilters;\n }\n else {\n return [...prev, {\n name: selectedView || \"\",\n placeholder: selectedGroup?.placeholder || \"\",\n value: [option],\n type: selectedGroup?.type || \"select\",\n }];\n }\n });\n handleClose();\n }, children: option.label || option.value || 'Unnamed option' }, option.value || `option-${Math.random()}`))) }));\n}\n//# sourceMappingURL=selectFilter.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../libs/utils\";\nimport { Button, Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandGroup, CommandItem, CommandEmpty } from \"../index\";\nimport { ListFilter } from \"lucide-react\";\nimport Filters from \"./filters\";\nimport TextFilter from \"./textFilter\";\nimport DateFilter from \"./dateFilter\";\nimport SelectFilter from \"./selectFilter\";\nexport function FilterBar({ filters, setFilters, filterGroups }) {\n const [open, setOpen] = React.useState(false);\n const [selectedView, setSelectedView] = React.useState(null);\n const [commandInput, setCommandInput] = React.useState(\"\");\n const commandInputRef = React.useRef(null);\n const [dateRange, setDateRange] = React.useState();\n const [textValue, setTextValue] = React.useState(\"\");\n const handleSelect = (groupName) => {\n setSelectedView(groupName);\n setCommandInput(\"\");\n commandInputRef.current?.focus();\n };\n const getAvailableFilterGroups = () => {\n let options = filterGroups.map(group => ({\n ...group,\n options: (group.options ?? []).filter(option => !filters.some(filter => {\n if (filter.type === \"date\") {\n return filter.name === group.name;\n }\n return filter.name === group.name &&\n filter.value.some(val => val.value === option.value);\n }))\n })).filter(group => ((group.options ?? []).length > 0) ||\n (group.type === \"date\" && !filters.some(filter => filter.name === group.name)) ||\n (group.type === \"text\" && !filters.some(filter => filter.name === group.name)));\n if (options.length === 0) {\n return _jsx(CommandEmpty, { children: \"No available filters\" });\n }\n return options.map((group, index) => (_jsx(CommandItem, { onSelect: () => handleSelect(group.name), className: \"group flex gap-2 items-center hover:bg-muted\", children: _jsx(\"span\", { children: group.placeholder ?? group.name }) }, index)));\n };\n const handleClose = () => {\n setOpen(false);\n setTimeout(() => {\n setSelectedView(null);\n setCommandInput(\"\");\n setDateRange(undefined);\n }, 200);\n };\n const handleOpen = (open) => {\n setOpen(open);\n if (!open) {\n setTimeout(() => {\n setSelectedView(null);\n setCommandInput(\"\");\n setTextValue(\"\");\n }, 200);\n }\n };\n const ButtonClearFilter = () => {\n return (_jsx(\"div\", { className: \"flex gap-2 items-center\", children: _jsx(Button, { variant: \"outline\", size: \"xs\", className: \"transition group\", onClick: () => setFilters([]), children: \"Clear All\" }) }));\n };\n const renderFilterOptions = () => {\n if (!selectedView)\n return null;\n const selectedGroupType = filterGroups.find(g => g.name === selectedView)?.type;\n switch (selectedGroupType) {\n case \"date\":\n return (_jsx(DateFilter, { selectedView: selectedView, dateRange: dateRange, setDateRange: setDateRange, setFilters: setFilters, filters: filters, handleClose: handleClose, filterGroups: filterGroups }));\n case \"text\":\n return (_jsx(TextFilter, { selectedView: selectedView, textValue: textValue, setTextValue: setTextValue, setFilters: setFilters, handleClose: handleClose, filterGroups: filterGroups }));\n default:\n return (_jsx(SelectFilter, { selectedView: selectedView, commandInput: commandInput, setFilters: setFilters, handleClose: handleClose, filterGroups: filterGroups }));\n }\n };\n const url = new URL(window.location.href);\n const searchParams = url.searchParams;\n useEffect(() => {\n try {\n const urlSafeFilters = filters.map(filter => {\n const safeValue = Array.isArray(filter.value)\n ? filter.value.map(item => ({\n value: item.value\n }))\n : filter.value;\n return {\n name: filter.name,\n type: filter.type,\n value: safeValue,\n placeholder: filter.placeholder\n };\n });\n const params = new URLSearchParams(searchParams.toString());\n if (filters.length > 0) {\n params.set('filters', encodeURIComponent(JSON.stringify(urlSafeFilters)));\n }\n else {\n params.delete('filters');\n }\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.replaceState({}, '', newUrl);\n }\n catch (error) {\n console.error(\"Failed to update URL with filters:\", error);\n }\n }, [filters]);\n useEffect(() => {\n const filtersParam = searchParams.get('filters');\n if (filtersParam) {\n try {\n const parsedFilters = JSON.parse(decodeURIComponent(filtersParam));\n const hydratedFilters = parsedFilters.map((filter) => {\n if (Array.isArray(filter.value)) {\n const group = filterGroups.find(g => g.name === filter.name);\n console.log(\"group\", group);\n const valuesWithLabels = filter.value.map((item) => {\n const matchingOption = group?.options?.find(opt => opt.value === item.value);\n return {\n value: item.value,\n label: matchingOption?.label || item.value\n };\n });\n console.log(\"valuesWithLabels\", valuesWithLabels);\n return {\n ...filter,\n value: valuesWithLabels\n };\n }\n return filter;\n });\n setFilters(hydratedFilters);\n }\n catch (error) {\n console.error(\"Failed to parse filters from URL:\", error);\n }\n }\n }, []);\n return (_jsxs(\"div\", { className: \"flex gap-2 flex-wrap justify-start w-full items-center\", children: [_jsx(\"div\", { className: \"flex gap-2 items-center\", children: _jsxs(Popover, { _open: open, onOpenChange: handleOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: \"ghost\", role: \"combobox\", \"aria-expanded\": open, size: \"md\", className: cn(\"transition group flex gap-1.5\"), children: [_jsx(ListFilter, { className: \"size-4 shrink-0 transition-all text-muted\" }), \"Filter\"] }) }), _jsx(PopoverContent, { className: \"w-[200px] p-0\", align: \"start\", children: _jsxs(Command, { children: [filterGroups.find(group => group.name === selectedView)?.type === \"select\" ? (_jsx(CommandInput, { placeholder: selectedView ? `Filter by ${selectedView}` : \"Filter...\", className: \"h-9 ring-0\", value: commandInput, onValueChange: (value) => {\n setCommandInput(value);\n }, ref: commandInputRef, autoFocus: true })) : null, _jsx(CommandList, { className: \"max-h-[300px] overflow-y-auto\", children: _jsx(CommandGroup, { children: !selectedView ? getAvailableFilterGroups() : renderFilterOptions() }) })] }) })] }) }), _jsx(Filters, { filters: filters, setFilters: setFilters, filterGroups: filterGroups }), filters.filter((filter) => filter.value?.length > 0).length > 0 && _jsx(ButtonClearFilter, {})] }));\n}\n//# sourceMappingURL=filterBar.js.map","export var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"is_not\";\n FilterOperator[\"CONTAINS\"] = \"contains\";\n FilterOperator[\"BEFORE\"] = \"before\";\n FilterOperator[\"AFTER\"] = \"after\";\n FilterOperator[\"IS_ANY_OF\"] = \"is_any_of\";\n})(FilterOperator || (FilterOperator = {}));\n//# sourceMappingURL=types.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../libs/utils\";\nimport { forwardRef } from \"react\";\nexport const Heading = forwardRef(({ className, level = 3, ...props }, ref) => {\n const Component = `h${level}`;\n const styles = {\n h1: \"text-2xl font-medium tracking-tight\",\n h2: \"text-xl font-medium tracking-tight\",\n h3: \"text-lg font-medium\",\n h4: \"text-base font-medium\",\n h5: \"text-sm font-medium\",\n h6: \"text-xs font-medium\",\n };\n return _jsx(Component, { ref: ref, className: cn(styles[`h${level}`], 'mb-2', className), ...props });\n});\nHeading.displayName = \"Heading\";\n//# sourceMappingURL=heading.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../libs/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n// Update the text variants to match the new sizing requirements\nconst textVariants = cva(\"text-foreground\", {\n variants: {\n size: {\n xl: \"text-base md:text-lg leading-relaxed\",\n lg: \"text-base leading-relaxed\",\n default: \"text-sm leading-normal\",\n sm: \"text-sm leading-normal\",\n xs: \"text-xs leading-normal\",\n },\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n },\n },\n defaultVariants: {\n size: \"default\",\n weight: \"normal\",\n },\n});\nexport const Text = forwardRef(({ className, size, weight, ...props }, ref) => {\n return _jsx(\"p\", { ref: ref, className: cn(textVariants({ size, weight, className })), ...props });\n});\nText.displayName = \"Text\";\n//# sourceMappingURL=text.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TriangleAlert } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { VModal, VModalTitle, VModalFooter } from \"./shadcn\";\nimport { Button } from \"./shadcn/button\";\nexport function ConfirmModal({ title, content, onConfirm, onCancel, isOpen }) {\n const cancelButtonRef = useRef(null);\n return (_jsxs(VModal, { isOpen: isOpen, onClose: onCancel, description: \"Confirm Modal\", children: [_jsxs(\"div\", { className: \"sm:flex sm:items-start p-2\", children: [_jsx(\"div\", { className: \"mx-auto flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\", children: _jsx(TriangleAlert, { className: \"size-6 text-red-600\", \"aria-hidden\": \"true\" }) }), _jsxs(\"div\", { className: \"mt-3 text-center sm:ml-4 sm:mt-0 sm:text-left\", children: [_jsx(VModalTitle, { className: \"leading-6\", show: true, children: title }), _jsx(\"div\", { className: \"mt-2\", children: _jsx(\"div\", { className: \"prose text-sm text-gray-500\", children: content }) })] })] }), _jsxs(VModalFooter, { align: \"right\", children: [_jsx(Button, { variant: \"destructive\", onClick: onConfirm, children: \"Confirm\" }), _jsx(Button, { variant: \"outline\", onClick: onCancel, ref: cancelButtonRef, children: \"Cancel\" })] })] }));\n}\n//# sourceMappingURL=ConfirmModal.js.map","import { createContext, useContext } from \"react\";\nexport function useToast() {\n return useContext(ToastContext);\n}\nconst ToastContext = createContext(() => { });\nexport { ToastContext };\n//# sourceMappingURL=ToastContext.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nconst PORTAL_ID = '--tailwind-portal';\nexport function Portal({ children }) {\n const tempNode = useRef(null);\n const [portalEl, setPortalEl] = useState(null);\n // hack to have the Portal not generating hydration errors (content mismatch) on SSR / CSR\n useEffect(() => {\n if (tempNode.current) { // we are on the browser -> we an use the portal\n const doc = tempNode.current.ownerDocument;\n let portalEl = doc.getElementById(PORTAL_ID);\n if (!portalEl) {\n portalEl = doc.createElement('DIV');\n portalEl.id = PORTAL_ID;\n doc.body.appendChild(portalEl);\n }\n setPortalEl(portalEl);\n }\n }, [tempNode.current]);\n if (portalEl) {\n return createPortal(children, portalEl);\n }\n else {\n return _jsx(\"span\", { ref: tempNode });\n }\n}\n//# sourceMappingURL=Portal.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Transition } from \"@headlessui/react\";\nimport { CircleCheck, AlertTriangle, Info, CircleX, X } from \"lucide-react\";\nimport { Fragment, useEffect, useState } from \"react\";\nconst icons = {\n success: CircleCheck,\n error: CircleX,\n warning: AlertTriangle,\n info: Info\n};\nconst colors = {\n success: 'text-green-600',\n error: 'text-red-600',\n warning: 'text-yellow-600',\n info: 'text-blue-600'\n};\nexport function NotificationPanel({ data, onClose }) {\n const [show, setShow] = useState(true);\n useEffect(() => {\n let timeoutId;\n if (data.duration) {\n timeoutId = setTimeout(() => {\n setShow(false);\n }, data.duration);\n }\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n const Icon = icons[data.status] || Info;\n const color = colors[data.status] || 'text-blue-600';\n // Global notification live region, render this permanently at the end of the document\n return (_jsx(\"div\", { \"aria-live\": \"assertive\", className: \"pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:items-start sm:p-6 z-100\", children: _jsx(\"div\", { className: \"flex w-full flex-col items-center space-y-4 sm:items-end\", children: _jsx(Transition, { appear: true, show: show, as: Fragment, afterLeave: onClose, enter: \"transform ease-out duration-700 transition\", enterFrom: \"translate-y-0 opacity-0 sm:translate-y-0 sm:translate-x-2\", enterTo: \"translate-y-2 opacity-100 sm:translate-x-0\", leave: \"transition ease-in duration-300\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", children: _jsx(\"div\", { className: \"pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5\", children: _jsx(\"div\", { className: \"p-4\", children: _jsxs(\"div\", { className: \"flex items-start\", children: [_jsx(\"div\", { className: \"shrink-0\", children: _jsx(Icon, { className: `size-6 ${color}`, \"aria-hidden\": \"true\" }) }), _jsxs(\"div\", { className: \"ml-3 w-0 flex-1 pt-0.5\", children: [_jsx(\"p\", { className: \"text-sm font-medium text-gray-900\", children: data.title }), _jsx(\"p\", { className: \"mt-1 text-sm text-gray-500\", children: data.description })] }), _jsx(\"div\", { className: \"ml-4 flex shrink-0\", children: _jsxs(\"button\", { type: \"button\", className: \"inline-flex rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2\", onClick: () => setShow(false), children: [_jsx(\"span\", { className: \"sr-only\", children: \"Close\" }), _jsx(X, { className: \"size-5\", \"aria-hidden\": \"true\" })] }) })] }) }) }) }) }) }));\n}\n//# sourceMappingURL=NotificationPanel.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { Portal } from \"../Portal.js\";\nimport { NotificationPanel } from \"./NotificationPanel.js\";\nimport { ToastContext } from \"./ToastContext.js\";\nexport function ToastProvider({ children }) {\n const [data, setData] = useState(null);\n const toast = (data) => {\n setData(data);\n };\n return (_jsxs(_Fragment, { children: [_jsx(ToastContext.Provider, { value: toast, children: children }), data && _jsx(Portal, { children: _jsx(NotificationPanel, { data: data, onClose: () => toast(null) }) })] }));\n}\n//# sourceMappingURL=ToastProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ConfirmModal } from \"./ConfirmModal.js\";\nimport { useToast } from \"./toast/index.js\";\nexport function DeleteModal({ idToDelete, title, content, setIdToDelete, deleteApi }) {\n const toast = useToast();\n const doDelete = async () => {\n if (!idToDelete) {\n return;\n }\n return deleteApi(idToDelete)\n .then(() => {\n toast({\n title: 'Delete succeeded',\n status: 'success'\n });\n }).catch((err) => {\n toast({\n title: 'Failed to delete',\n description: err.message ?? 'An error occurred while deleting the object',\n status: 'error'\n });\n }).finally(() => {\n setIdToDelete(undefined);\n });\n };\n return (_jsx(ConfirmModal, { title: title, content: content, isOpen: !!idToDelete, onConfirm: doDelete, onCancel: () => { setIdToDelete(undefined); } }));\n}\n//# sourceMappingURL=DeleteModal.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Divider({ className }) {\n return (_jsx(\"hr\", { className: clsx(\"w-full h-0.5 border-t-0 bg-border\", className) }));\n}\n//# sourceMappingURL=Divider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState, Fragment } from 'react';\nimport { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from '@headlessui/react';\nimport { X } from 'lucide-react';\nimport { Button } from './shadcn/button';\nexport function SidePanel({ isOpen, title, onClose, children }) {\n const [panelWidth, setPanelWidth] = useState(768);\n const handleDragStart = (e) => {\n e.preventDefault();\n let isDragging = true;\n const startX = e.pageX;\n const startWidth = panelWidth;\n const handleMouseMove = (e) => {\n if (isDragging) {\n const deltaX = startX - e.pageX;\n const newWidth = Math.max(startWidth + deltaX, 480);\n setPanelWidth(newWidth);\n }\n };\n const handleMouseUp = () => {\n isDragging = false;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n return (_jsx(Transition, { show: isOpen, as: Fragment, children: _jsxs(Dialog, { as: \"div\", className: \"relative z-10\", onClose: onClose, children: [_jsx(\"div\", { className: \"fixed inset-0\" }), _jsx(\"div\", { className: \"fixed inset-0 overflow-hidden\", children: _jsx(\"div\", { className: \"absolute inset-0 overflow-hidden\", children: _jsx(\"div\", { className: \"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10 sm:pl-16\", children: _jsx(TransitionChild, { as: Fragment, enter: \"transform transition ease-in-out duration-500 sm:duration-700\", enterFrom: \"translate-x-full\", enterTo: \"translate-x-0\", leave: \"transform transition ease-in-out duration-500 sm:duration-700\", leaveFrom: \"translate-x-0\", leaveTo: \"translate-x-full\", unmount: true, children: _jsx(DialogPanel, { className: \"pointer-events-auto border-l\", style: { width: `${panelWidth}px` }, children: _jsxs(\"div\", { className: \"relative flex h-full\", children: [_jsx(\"div\", { className: \"absolute left-0 top-0 bottom-0 w-1 cursor-ew-resize hover:bg-indigo-500 transition-colors\", onMouseDown: handleDragStart }), _jsxs(\"div\", { className: \"flex-1 flex flex-col overflow-y-scroll gap-4 bg-background py-6 shadow-xl\", children: [_jsx(\"div\", { className: \"px-4 sm:px-6\", children: _jsxs(\"div\", { className: \"flex items-start justify-between\", children: [_jsx(DialogTitle, { className: \"w-full text-base font-semibold leading-6\", children: _jsx(\"div\", { className: \"text-2xl\", children: title ?? \"\" }) }), _jsx(\"div\", { className: \"ml-3 flex h-7 items-center\", children: _jsx(CloseButton, { onClose: onClose }) })] }) }), _jsx(\"div\", { className: \"px-4 sm:px-6\", children: children })] })] }) }) }) }) }) })] }) }));\n}\nfunction CloseButton({ onClose }) {\n return (_jsx(Button, { alt: \"Close panel\", variant: \"ghost\", onClick: onClose, children: _jsx(X, { className: \"size-6\", \"aria-hidden\": \"true\" }) }));\n}\n//# sourceMappingURL=SidePanel.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Menu, MenuButton, MenuItems, MenuItem as _MenuItem, Transition } from '@headlessui/react';\nimport clsx from 'clsx';\nimport { Fragment } from 'react';\nexport function Dropdown({ trigger, children }) {\n return (_jsxs(Menu, { as: \"div\", className: \"relative\", children: [_jsx(MenuButton, { as: \"span\", className: \"-m-1.5 flex items-center p-1.5\", children: trigger }), _jsx(Transition, { as: Fragment, enter: \"transition ease-out duration-100\", enterFrom: \"transform opacity-0 scale-95\", enterTo: \"transform opacity-100 scale-100\", leave: \"transition ease-in duration-75\", leaveFrom: \"transform opacity-100 scale-100\", leaveTo: \"transform opacity-0 scale-95\", children: _jsx(MenuItems, { className: \"absolute right-0 z-10 mt-2.5 w-48 origin-top-right rounded-md bg-white dark:bg-slate-900 dark:border-slate-800 dark:border py-2 shadow-lg ring-1 ring-gray-900/5 dark:ring-slate-200/5 focus:outline-hidden\", children: children }) })] }));\n}\nexport function MenuItem({ children, href = '#', onClick, closeOnClick = true, isDisabled = false }) {\n return (_jsx(_MenuItem, { disabled: isDisabled, children: ({ active, close }) => (_jsx(\"a\", { href: href, onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n onClick && onClick(e);\n closeOnClick && close();\n }, className: clsx(active ? 'bg-gray-50 dark:bg-slate-800' : '', isDisabled ? 'opacity-50 cursor-not-allowed' : '', 'block px-3 py-1 text-sm leading-6 text-gray-900 dark:text-gray-200'), children: children })) }));\n}\n//# sourceMappingURL=Dropdown.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Listbox, ListboxButton, ListboxOption, ListboxOptions, Transition } from \"@headlessui/react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { Fragment } from \"react\";\nexport function DropdownList({ items, value, onChange }) {\n return (_jsx(Listbox, { value: value, onChange: onChange, children: ({ open }) => (_jsxs(\"div\", { className: \"relative\", children: [_jsxs(\"div\", { className: \"inline-flex divide-x divide-indigo-700 rounded-md shadow-2xs\", children: [_jsxs(\"div\", { className: \"inline-flex items-center gap-x-1.5 rounded-l-md bg-indigo-600 px-3 py-2 text-white shadow-2xs\", children: [value.name && _jsx(Check, { className: \"-ml-0.5 size-5\", \"aria-hidden\": \"true\" }), _jsx(\"p\", { className: \"text-sm font-semibold\", children: value.name || \"\" })] }), _jsxs(ListboxButton, { className: \"inline-flex items-center rounded-l-none rounded-r-md bg-indigo-600 p-2 hover:bg-indigo-700 focus:outline-hidden focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2 focus:ring-offset-gray-50\", children: [_jsx(\"span\", { className: \"sr-only\", children: \"Change selection\" }), _jsx(ChevronDown, { className: \"size-5 text-white\", \"aria-hidden\": \"true\" })] })] }), _jsx(Transition, { show: open, as: Fragment, leave: \"transition ease-in duration-100\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", children: _jsx(ListboxOptions, { className: \"absolute right-0 z-10 mt-2 w-72 origin-top-right divide-y divide-gray-200 overflow-hidden rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-hidden\", children: items.map((option) => (_jsx(ListboxOption, { className: ({ active }) => clsx(active ? 'bg-indigo-600 text-white' : 'text-gray-900', 'cursor-default select-none p-4 text-sm'), value: option, children: ({ selected, active }) => (_jsxs(\"div\", { className: \"flex flex-col\", children: [_jsxs(\"div\", { className: \"flex justify-between\", children: [_jsx(\"p\", { className: selected ? 'font-semibold' : 'font-normal', children: option.name }), selected ? (_jsx(\"span\", { className: active ? 'text-white' : 'text-indigo-600', children: _jsx(Check, { className: \"size-5\", \"aria-hidden\": \"true\" }) })) : null] }), _jsx(\"p\", { className: clsx(active ? 'text-indigo-200' : 'text-gray-500', 'mt-2'), children: option.description })] })) }, option.id))) }) })] })) }));\n}\n//# sourceMappingURL=DropdownList.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'size-2';\n case 'sm': return 'size-3';\n case 'md': return 'size-4';\n case 'lg': return 'size-5';\n case 'xl': return 'size-7';\n case '2xl': return 'size-10';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nexport function Spinner({ size, className }) {\n const sizeClass = getRealSize(size || 'md');\n return (_jsx(_Fragment, { children: _jsxs(\"svg\", { className: clsx(\"animate-[spin_0.8s_linear_infinite] text-indigo-500\", sizeClass, className), xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 24 24\", children: [_jsx(\"circle\", { className: \"opacity-25\", cx: \"12\", cy: \"12\", r: \"10\", stroke: \"currentColor\", strokeWidth: \"4\" }), _jsx(\"path\", { className: \"opacity-75\", fill: \"currentColor\", d: \"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" })] }) }));\n}\n//# sourceMappingURL=Spinner.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { Spinner } from \"./Spinner.js\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'rounded-xs px-2 py-1 text-xs gap-x-1';\n case 'sm': return 'rounded-xs px-2 py-1 text-sm gap-x-1';\n case 'md': return 'rounded-md px-2.5 py-1.5 text-sm gap-x-1.5';\n case 'lg': return 'rounded-md px-3 py-2 text-sm gap-x-1.5';\n case 'xl': return 'rounded-md px-3.5 py-2.5 text-sm gap-x-2';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nconst Variants = {\n primary: \"shadow-2xs bg-indigo-600 text-white hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600\",\n secondary: \"shadow-2xs bg-white text-gray-900 hover:bg-gray-50 ring-1 ring-inset ring-gray-300\",\n soft: \"shadow-2xs bg-indigo-50 text-indigo-600 hover:bg-indigo-100\",\n ghost: \"text-indigo-600 hover:bg-indigo-100 dark:text-indigo-400 dark:hover:bg-indigo-900\",\n unstyled: \"\"\n};\nconst SpinnerVariants = {\n primary: \"text-white\",\n secondary: \"text-indigo-500\",\n soft: \"text-indigo-600\",\n ghost: \"text-indigo-600\",\n unstyled: \"text-gray-600\"\n};\nexport function Button({ title, className, type = 'button', children, size, onClick, variant = \"primary\", isLoading = false, isDisabled = false }) {\n const sizeClass = getRealSize(size || 'md');\n return (_jsxs(\"button\", { title: title, disabled: isDisabled || isLoading, onClick: onClick, type: type, className: clsx(\"whitespace-nowrap inline-flex items-center justify-center font-semibold hover:cursor-pointer\", Variants[variant], sizeClass, isDisabled && \"cursor-not-allowed text-gray-300!\", className), children: [isLoading && _jsx(Spinner, { className: SpinnerVariants[variant], size: size }), children] }));\n}\n//# sourceMappingURL=Button.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Plus } from \"lucide-react\";\nimport { Button } from \"./Button.js\";\nexport function EmptyCollection({ buttonLabel, title, children, onClick }) {\n return (_jsxs(\"div\", { className: \"text-center py-12\", children: [_jsx(\"svg\", { className: \"mx-auto h-12 w-12 text-gray-400 dark:text-gray-200\", fill: \"none\", viewBox: \"0 0 24 24\", stroke: \"currentColor\", \"aria-hidden\": \"true\", children: _jsx(\"path\", { vectorEffect: \"non-scaling-stroke\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 2, d: \"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" }) }), _jsx(\"h3\", { className: \"mt-2 text-sm font-semibold text-gray-500\", children: title }), _jsx(\"p\", { className: \"mt-1 text-sm text-gray-500\", children: children }), _jsx(\"div\", { className: \"mt-6\", children: _jsxs(Button, { onClick: onClick, size: 'lg', children: [_jsx(Plus, { className: \"-ml-0.5 mr-1.5 size-5\", \"aria-hidden\": \"true\" }), buttonLabel] }) })] }));\n}\n//# sourceMappingURL=EmptyCollection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useRef } from \"react\";\n/**\n * TODO: TS complains that:\n * Type 'FileList' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.\n * So as a quick fix aI use a for loop to convert FileList to File[]\n * @param files\n * @returns\n */\nfunction fileListToArray(files) {\n const ar = [];\n for (let i = 0, l = files.length; i < l; i++) {\n ar.push(files[i]);\n }\n return ar;\n}\nexport function FileUploadInput({ children, onUpload }) {\n const inputRef = useRef(null);\n const _onUpload = () => {\n if (inputRef.current?.files) {\n onUpload(fileListToArray(inputRef.current.files));\n }\n };\n return (_jsxs(\"label\", { style: { cursor: \"pointer\" }, children: [children, _jsx(\"input\", { ref: inputRef, type: \"file\", style: { display: \"none\" }, onChange: _onUpload })] }));\n}\n//TODO implement using tailwind\nexport function DropZone({ onUpload }) {\n const dropZoneProps = useDropZone({ onUpload });\n return (_jsx(\"div\", { ...dropZoneProps, className: \"flex items-center justify-center w-full h-64 border-2 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\", children: _jsxs(\"label\", { htmlFor: \"dropzone-file\", className: \"flex flex-col items-center justify-center w-full h-full\", children: [_jsxs(\"div\", { className: \"flex flex-col items-center justify-center pt-5 pb-6\", children: [_jsx(\"svg\", { className: \"w-8 h-8 mb-4 text-gray-500 dark:text-gray-400\", \"aria-hidden\": \"true\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 20 16\", children: _jsx(\"path\", { stroke: \"currentColor\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", \"stroke-width\": \"2\", d: \"M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2\" }) }), _jsxs(\"p\", { className: \"mb-2 text-sm text-gray-500 dark:text-gray-400\", children: [_jsx(\"span\", { className: \"font-semibold\", children: \"Click to upload\" }), \" or drag and drop\"] }), _jsx(\"p\", { className: \"text-xs text-gray-500 dark:text-gray-400\", children: \"SVG, PNG, JPG or GIF (MAX. 800x400px)\" })] }), _jsx(\"input\", { id: \"dropzone-file\", type: \"file\", className: \"hidden\" })] }) }));\n}\nfunction _onDragEnter(el) {\n let cnt = el.__dragOver_cnt__ || 0;\n el.__dragOver_cnt__ = cnt + 1;\n return !cnt; // true if first drag o ver false if dragover already recorded\n}\nfunction _onDragLeave(el) {\n let cnt = el.__dragOver_cnt__;\n if (!cnt)\n return false;\n el.__dragOver_cnt__ = cnt - 1;\n return cnt === 1; // true if leave false if not\n}\nfunction _onDrop(el) {\n delete el.__dragOver_cnt__;\n}\nexport function useDropZone({ onUpload, dragOverClass = \"is-drag-over-on\", dropEffect = \"copy\", }) {\n const ref = useRef(null);\n const onDrop = (ev) => {\n ev.preventDefault();\n _onDrop(ref.current);\n ref.current?.classList.remove(dragOverClass);\n const items = ev.dataTransfer.items;\n if (items) {\n const promises = [];\n const traverseFileTree = (item, path = \"\") => {\n return new Promise((resolve) => {\n if (item.isFile) {\n item.file((file) => {\n Object.defineProperty(file, \"webkitRelativePath\", { value: path + file.name });\n resolve([file]);\n });\n }\n else if (item.isDirectory) {\n const dirReader = item.createReader();\n const entries = [];\n const readEntries = () => {\n dirReader.readEntries((results) => {\n if (!results.length) {\n Promise.all(entries).then((filesArrays) => resolve(filesArrays.flat()));\n }\n else {\n for (const entry of results) {\n entries.push(traverseFileTree(entry, path + item.name + \"/\"));\n }\n readEntries();\n }\n });\n };\n readEntries();\n }\n });\n };\n for (let i = 0; i < items.length; i++) {\n const entry = items[i].webkitGetAsEntry();\n if (entry) {\n promises.push(traverseFileTree(entry));\n }\n }\n Promise.all(promises).then((filesArrays) => {\n const allFiles = filesArrays.flat();\n if (allFiles.length) {\n onUpload(allFiles);\n }\n });\n }\n };\n const onDragOver = (ev) => {\n ev.preventDefault();\n ev.dataTransfer.dropEffect = dropEffect;\n };\n const onDragEnter = () => {\n if (_onDragEnter(ref.current)) {\n ref.current?.classList.add(dragOverClass);\n }\n };\n const onDragLeave = () => {\n if (_onDragLeave(ref.current)) {\n ref.current?.classList.remove(dragOverClass);\n }\n };\n return {\n onDrop,\n onDragOver,\n onDragEnter,\n onDragLeave,\n ref,\n };\n}\n//# sourceMappingURL=FileUpload.js.map","const INPUT_UNSTYLED = \"block m-0 p-0 w-full border-0 focus:outline-hidden focus:ring-0 bg-transparent\";\nconst INPUT_NO_PADDING = \"block sm:text-sm sm:leading-6 rounded-md border-0 text-gray-900 shadow-2xs ring-1 ring-inset ring-gray-300 dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 placeholder:text-gray-400 dark:placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 dark:focus:ring-indigo-800\";\nconst INPUT = INPUT_NO_PADDING + \" py-1.5\";\nconst Styles = {\n INPUT_UNSTYLED,\n INPUT_NO_PADDING,\n INPUT\n};\nexport { Styles };\n//# sourceMappingURL=styles.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport React from 'react';\nimport { X } from 'lucide-react';\nimport { Styles } from './styles.js';\nconst Input = React.forwardRef(({ unstyled, value, onChange, className, type, ...others }, ref) => {\n const _onChange = (ev) => {\n onChange && onChange(ev.target.value);\n };\n const _onClear = () => {\n onChange && onChange('');\n };\n return (_jsxs(\"div\", { style: { position: 'relative', display: 'inline-block' }, className: clsx(\"w-full\", className), children: [_jsx(\"input\", { type: type || 'text', value: value == null ? '' : value, onChange: _onChange, className: clsx('w-full', unstyled ? Styles.INPUT_UNSTYLED : Styles.INPUT, className), ref: ref, ...others }), value && (_jsx(\"button\", { onClick: _onClear, className: `absolute ${type !== 'number' ? 'right-2' : 'right-7'} top-1/2 -translate-y-1/2 size-7 text-gray-400 hover:text-red-500 cursor-pointer`, children: _jsx(X, {}) }))] }));\n});\nexport { Input };\n//# sourceMappingURL=Input.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport { Badge } from './Badge';\nimport { VInput } from './shadcn/input';\nexport function InputList({ value = [], onChange, className, delimiters = \", \", placeholder }) {\n const [text, setText] = useState('');\n const onBlur = (ev) => {\n const v = ev.target.value;\n if (v && v.trim()) {\n onChange([...value, v.trim()]);\n setText('');\n }\n };\n const onKeyDown = (ev) => {\n const v = ev.target.value;\n const isEmpty = !v.trim();\n const key = ev.key;\n if (key === 'Enter' || delimiters.indexOf(key) > -1) {\n ev.preventDefault();\n if (value && !isEmpty) {\n onChange([...value, v.trim()]);\n setText('');\n }\n }\n else if (key === 'Backspace' && isEmpty) {\n if (value && value.length > 0) {\n value.pop();\n onChange([...value]);\n }\n }\n };\n const _onClick = (index) => {\n if (value && value.length > 0) {\n value.splice(index, 1);\n onChange([...value]);\n }\n };\n return (_jsxs(\"div\", { className: clsx(className, 'w-full space-x-1 space-y-1 flex flex-wrap w-full rounded-md py-2 px-1 text-sm border border-input bg-background dark:bg-slate-800 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2'), children: [value && value.length > 0 &&\n (value.map((v, index) => _jsx(Badge, { variant: \"secondary\", onClick: () => _onClick(index), style: { whiteSpace: 'nowrap' }, className: 'cursor-pointer', children: v }, index))), _jsx(\"div\", { children: _jsx(VInput, { clearable: false, className: 'placeholder:text-muted-foreground px-1', variant: 'unstyled', type: 'text', value: text, onBlur: onBlur, onKeyDown: onKeyDown, onChange: setText, placeholder: !value || value.length === 0 ? placeholder : '' }) })] }));\n}\n//# sourceMappingURL=InputList.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Link({ underline = 'always', className, children, ...others }) {\n let underlineClass;\n if (underline === 'always') {\n underlineClass = 'underline';\n }\n else if (underline === 'hover') {\n underlineClass = 'hover:underline';\n }\n return _jsx(\"a\", { className: clsx(\"text-indigo-800 dark:text-indigo-300\", className, underlineClass), ...others, children: children });\n}\n//# sourceMappingURL=Link.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nexport function MenuList({ className, children }) {\n return (_jsx(\"ul\", { className: `${className} space-y-1 flex flex-col items-start dark:px-2`, children: children }));\n}\nconst MenuListItem = forwardRef(function _MenuListItem(props, ref) {\n const { current, children, className, href = '#', onClick, ...others } = props;\n return (_jsx(\"li\", { className: clsx(className, current ?\n 'bg-gray-50 text-indigo-600'\n :\n 'text-gray-700 dark:dark:text-slate-300 hover:text-indigo-600 hover:bg-gray-50 dark:hover:bg-slate-800 dark:hover:text-slate-50 dark:border dark:border-transparent dark:hover:border-slate-50', 'w-full rounded-md p-2 pl-3 text-sm leading-6 font-semibold'), children: _jsx(\"a\", { ref: ref, href: href, onClick: (e) => {\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n else if (href === '#') {\n e.preventDefault();\n }\n }, className: 'w-full flex items-center gap-x-3', ...others, children: children }) }));\n});\nMenuList.Item = MenuListItem;\n//# sourceMappingURL=MenuList.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { CircleX, CircleCheck, AlertTriangle, Info } from 'lucide-react';\nexport function MessageBox({ icon, status, title, children, className }) {\n let defaultIcon, titleColor, textColor, bgColor;\n switch (status) {\n case 'error': {\n defaultIcon = _jsx(CircleX, { className: \"size-5 text-destructive\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-destructive border border-destructive\";\n break;\n }\n case 'warning': {\n defaultIcon = _jsx(AlertTriangle, { className: \"size-5 text-attention\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-attention border border-attention\";\n break;\n }\n case 'success': {\n defaultIcon = _jsx(CircleCheck, { className: \"size-5 text-success\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-success border border-success\";\n break;\n }\n case 'info': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-info\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-info border border-info\";\n break;\n }\n case 'default': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-muted\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-muted border border-muted\";\n break;\n }\n case 'done': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-done\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-done border border-done\";\n break;\n }\n }\n return (_jsx(\"div\", { className: `rounded-md p-4 ${bgColor} ${className}`, children: _jsxs(\"div\", { className: \"flex\", children: [_jsx(\"div\", { className: \"shrink-0\", children: icon ?? defaultIcon }), _jsxs(\"div\", { className: \"w-full ml-2 px-1\", children: [title && _jsx(\"h3\", { className: `text-sm font-medium mb-2 ${titleColor}`, children: title }), _jsx(\"div\", { className: `text-sm ${textColor} break-words`, children: children })] })] }) }));\n}\nexport function ErrorBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"error\", title: title, className: className, children: _jsx(\"pre\", { children: children }) });\n}\nexport function InfoBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"info\", title: title, className: className, children: children });\n}\nexport function WarningBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"warning\", title: title, className: className, children: children });\n}\nexport function SuccessBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"success\", title: title, className: className, children: children });\n}\nexport function DefaultBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"default\", title: title, className: className, children: children });\n}\n//# sourceMappingURL=MessageBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { Fragment } from \"react\";\nimport { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from \"@headlessui/react\";\nimport { X } from \"lucide-react\";\nexport function Modal({ className, children, isOpen, onClose, noCloseButton = false, allowOverflow = false, disableCloseOnClickOutside = false, }) {\n const setOpen = (open) => {\n if (!open) {\n onClose();\n }\n };\n return (_jsx(Transition, { show: isOpen, as: Fragment, children: _jsxs(Dialog, { style: { zIndex: 50 }, as: \"div\", className: \"relative\", onClose: disableCloseOnClickOutside ? () => { } : setOpen, children: [_jsx(TransitionChild, { as: Fragment, enter: \"ease-out duration-300\", enterFrom: \"opacity-0\", enterTo: \"opacity-100\", leave: \"ease-in duration-200\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", unmount: true, children: _jsx(\"div\", { className: \"fixed inset-0 bg-gray-500 dark:bg-slate-800 dark:opacity-75 opacity-75 transition-opacity\" }) }), _jsx(\"div\", { className: \"fixed inset-0 z-10 w-screen overflow-y-auto\", children: _jsx(\"div\", { className: \"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\", children: _jsx(TransitionChild, { as: Fragment, enter: \"ease-out duration-300\", enterFrom: \"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\", enterTo: \"opacity-100 translate-y-0 sm:scale-100\", leave: \"ease-in duration-200\", leaveFrom: \"opacity-100 translate-y-0 sm:scale-100\", leaveTo: \"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\", children: _jsxs(DialogPanel, { className: clsx(\"p-0! relative transform rounded-lg bg-white dark:bg-slate-900 text-left dark:text-slate-100 shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-md sm:p-6\", allowOverflow ? \"overflow-visible\" : \"overflow-hidden\", className), children: [!noCloseButton && _jsx(ModalCloseButton, { onClose: onClose }), children] }) }) }) })] }) }));\n}\nfunction ModalCloseButton({ onClose }) {\n return (_jsx(\"div\", { className: \"absolute right-0 top-0 hidden pr-4 pt-4 sm:block\", children: _jsxs(\"button\", { tabIndex: -1, type: \"button\", className: \"rounded-md bg-white text-gray-400 dark:text-slate-200 dark:bg-slate-800 hover:brightness-95 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 hover:cursor-pointer\", onClick: onClose, children: [_jsx(\"span\", { className: \"sr-only\", children: \"Close\" }), _jsx(X, { className: \"size-6\", \"aria-hidden\": \"true\" })] }) }));\n}\nexport function ModalTitle({ children, showDivider = false }) {\n return (_jsx(\"div\", { className: showDivider ? \"border-b-solid border-b border-b-1\" : \"\", children: _jsx(DialogTitle, { as: \"h3\", className: \"py-4 pl-4 pr-8 text-base font-semibold leading-6 text-gray-900 dark:text-slate-50\", children: children }) }));\n}\nexport function ModalFooter({ children, className = \"justify-end\", fill = false }) {\n return (_jsx(\"div\", { className: clsx(\"w-full flex space-x-2 p-4 border-t-solid border-t-gray-100 dark:border-t-gray-800 border-t\", className || \"justify-end\", fill ? \"bg-gray-100 dark:bg-slate-800\" : \"\"), children: children }));\n}\nexport function ModalBody({ children, className = \"\" }) {\n return _jsx(\"div\", { className: clsx(\"p-4\", className), children: children });\n}\n//# sourceMappingURL=Modal.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport React, { useEffect } from \"react\";\nimport { Styles } from \"./styles.js\";\nfunction numberToString(value) {\n if (value == null || isNaN(value)) {\n return '';\n }\n else {\n return value.toString();\n }\n}\n/**\n * The value of this input is always a number. It can be undefined or NaN. If NaN the input value will not be updated with the NaN one.\n * If undefined the input will be updated to be empty.\n * The onChange callback is called whenever the value changes. If the input cannot be parsed as a number\n * it will be returned as NaN.\n */\nconst NumberInput = React.forwardRef(({ value, onChange, className, noScroll = false, noSpinners = false, ...others }, ref) => {\n // we need to store the state here in string\n const [textValue, setTextValue] = React.useState(numberToString(value));\n const _onChange = (ev) => {\n const value = ev.target.value;\n setTextValue(value);\n if (value === '') {\n onChange && onChange(undefined, value);\n }\n else {\n const num = parseFloat(value);\n onChange && onChange(num, value);\n }\n };\n useEffect(() => {\n // we do not update if not empty and NaN\n if (value == null || !isNaN(value)) {\n const text = numberToString(value);\n setTextValue(text);\n }\n }, [value]);\n return (_jsx(\"input\", { onWheel: noScroll ? event => { event.target.blur(); } : others.onWheel, type: 'number', value: textValue, onChange: _onChange, className: clsx(className, Styles.INPUT, { \"no-spinners\": noSpinners }, noSpinners && \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"), ref: ref, ...others }));\n});\nexport { NumberInput };\n//# sourceMappingURL=NumberInput.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\nexport class RadioOptionAdapter {\n renderOption(item) {\n return this.labelOf(item);\n }\n findById(items, id) {\n return items.find(item => this.idOf(item) === id);\n }\n}\nexport function RadioGroup({ checkColor, cols = \"grid-cols-1\", gap = \"gap-2\", value, onChange, options, checkIcon: CheckIcon = DefaultCheckIcon, adapter }) {\n const [selected, setSelected] = useState(value);\n const onSelect = (option) => {\n setSelected(option);\n onChange(option);\n };\n const selectedId = selected ? adapter.idOf(selected) : undefined;\n return (_jsx(\"div\", { className: clsx(\"grid\", cols, gap), children: options.map(option => {\n const key = adapter.idOf(option);\n return (_jsx(RadioOption, { checkColor: checkColor, isSelected: key === selectedId, option: option, adapter: adapter, onSelect: onSelect, CheckIcon: CheckIcon }, key));\n }) }));\n}\nfunction RadioOption({ checkColor, CheckIcon, adapter, isSelected, option, onSelect }) {\n const [isHighlighted, setIsHighlighted] = useState(false);\n return (_jsxs(\"div\", { className: \"flex gap-1 cursor-pointer items-center\", onClick: () => onSelect(option), onMouseEnter: () => setIsHighlighted(true), onMouseLeave: () => setIsHighlighted(false), children: [_jsx(\"div\", { className: \"\", children: _jsx(CheckIcon, { size: 24, isChecked: isSelected, isHighlighted: isHighlighted, color: checkColor }) }), _jsx(\"div\", { children: adapter.renderOption(option) })] }));\n}\nfunction DefaultCheckIcon({ size, isChecked, isHighlighted, color = \"currentColor\" }) {\n //https://www.svgrepo.com/svg/309414/checkbox-checked\n //https://www.svgrepo.com/svg/309415/checkbox-unchecked\n const opacity = isHighlighted ? 1 : 0.6;\n return isChecked ? (_jsx(\"svg\", { width: `${size}px`, height: `${size}px`, viewBox: \"0 0 24 24\", version: \"1.1\", children: _jsx(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\", children: _jsx(\"g\", { id: \"ic_fluent_checkbox_checked_24_regular\", fill: color, fillRule: \"nonzero\", opacity: opacity, children: _jsx(\"path\", { d: \"M18.25,3 C19.7687831,3 21,4.23121694 21,5.75 L21,18.25 C21,19.7687831 19.7687831,21 18.25,21 L5.75,21 C4.23121694,21 3,19.7687831 3,18.25 L3,5.75 C3,4.23121694 4.23121694,3 5.75,3 L18.25,3 Z M18.25,4.5 L5.75,4.5 C5.05964406,4.5 4.5,5.05964406 4.5,5.75 L4.5,18.25 C4.5,18.9403559 5.05964406,19.5 5.75,19.5 L18.25,19.5 C18.9403559,19.5 19.5,18.9403559 19.5,18.25 L19.5,5.75 C19.5,5.05964406 18.9403559,4.5 18.25,4.5 Z M10,14.4393398 L16.4696699,7.96966991 C16.7625631,7.6767767 17.2374369,7.6767767 17.5303301,7.96966991 C17.7965966,8.23593648 17.8208027,8.65260016 17.6029482,8.94621165 L17.5303301,9.03033009 L10.5303301,16.0303301 C10.2640635,16.2965966 9.84739984,16.3208027 9.55378835,16.1029482 L9.46966991,16.0303301 L6.46966991,13.0303301 C6.1767767,12.7374369 6.1767767,12.2625631 6.46966991,11.9696699 C6.73593648,11.7034034 7.15260016,11.6791973 7.44621165,11.8970518 L7.53033009,11.9696699 L10,14.4393398 L16.4696699,7.96966991 L10,14.4393398 Z\" }) }) }) })) : (_jsx(\"svg\", { width: `${size}px`, height: `${size}px`, viewBox: \"0 0 24 24\", version: \"1.1\", children: _jsx(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\", children: _jsx(\"g\", { id: \"ic_fluent_checkbox_unchecked_24_regular\", fill: color, fillRule: \"nonzero\", opacity: opacity, children: _jsx(\"path\", { d: \"M5.75,3 L18.25,3 C19.7687831,3 21,4.23121694 21,5.75 L21,18.25 C21,19.7687831 19.7687831,21 18.25,21 L5.75,21 C4.23121694,21 3,19.7687831 3,18.25 L3,5.75 C3,4.23121694 4.23121694,3 5.75,3 Z M5.75,4.5 C5.05964406,4.5 4.5,5.05964406 4.5,5.75 L4.5,18.25 C4.5,18.9403559 5.05964406,19.5 5.75,19.5 L18.25,19.5 C18.9403559,19.5 19.5,18.9403559 19.5,18.25 L19.5,5.75 C19.5,5.05964406 18.9403559,4.5 18.25,4.5 L5.75,4.5 Z\" }) }) }) }));\n}\n//# sourceMappingURL=RadioGroup.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Listbox, ListboxButton, ListboxOption, ListboxOptions } from \"@headlessui/react\";\nimport { X, Check, ChevronsUpDownIcon } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { Button } from \"./Button\";\nimport { Center } from \"./Center\";\nfunction getFilterByFn(filterBy) {\n if (!filterBy) {\n return (o) => String(o).toLowerCase();\n }\n else if (typeof filterBy === 'string') {\n return (o) => String(o[filterBy]).toLowerCase();\n }\n else {\n return filterBy;\n }\n}\nexport function SelectBox({ clearTitle, ClearIcon = X, showFilter, filterBy, isClearable, disabled, by, options, value, onChange, className, addNew, addNewLabel, placeholder, optionLabel = (option) => String(option), label }) {\n const [filter, setFilter] = useState();\n const buttonRef = useRef(null);\n const [buttonWidth, setButtonWidth] = useState();\n useEffect(() => {\n if (buttonRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n setButtonWidth(entries[0].contentRect.width);\n });\n resizeObserver.observe(buttonRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n const onClear = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (isClearable) {\n onChange(undefined);\n }\n };\n const onFilterChange = (e) => {\n setFilter(e.target.value);\n };\n let filteredOptions = options || [];\n if (showFilter === undefined) {\n showFilter = filteredOptions?.length >= 10;\n }\n if (showFilter && filter) {\n const filterLc = filter.toLowerCase();\n const filterFn = getFilterByFn(filterBy);\n filteredOptions = filteredOptions.filter(o => filterFn(o).includes(filterLc));\n }\n const onFilterKeyDown = (e) => {\n if (e.key !== \"Escape\"\n && e.key !== \"Enter\"\n && e.key !== \"ArrowDown\"\n && e.key !== \"ArrowUp\") {\n e.stopPropagation();\n }\n };\n return (_jsx(Listbox, { value: value || null, onChange: onChange, by: by, disabled: disabled, children: () => (_jsx(\"div\", { className: 'overflow-y-visible ' + className, children: _jsxs(\"div\", { className: \"relative\", children: [_jsxs(ListboxButton, { ref: buttonRef, className: \"relative w-full cursor-default rounded-md bg-white py-1.5 text-left text-gray-900 shadow-2xs ring-1 ring-inset ring-gray-300 focus:outline-hidden focus:ring-2 focus:ring-indigo-600 dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 sm:text-sm sm:leading-6 hover:cursor-pointer\", children: [label && _jsx(\"div\", { className: 'w-full text-gray-500 text-left px-2', children: label }), _jsx(\"span\", { className: \"block truncate pl-3 pr-14\", children: value ? optionLabel(value) : placeholder }), isClearable && value != null && _jsx(\"span\", { className: \"absolute inset-y-0 right-0 mr-5 flex items-center pr-2\", onClick: onClear, children: _jsx(ClearIcon, { title: clearTitle, className: \"size-5 text-gray-400 hover:text-red-500 cursor-pointer\", \"aria-hidden\": \"true\" }) }), !disabled &&\n _jsx(\"span\", { className: \"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\", children: _jsx(ChevronsUpDownIcon, { className: \"size-5 text-gray-400\", \"aria-hidden\": \"true\" }) })] }), _jsxs(ListboxOptions, { anchor: \"bottom\", style: { width: buttonWidth, zIndex: 100000000 }, className: \"absolute z-10 mt-1 overflow-auto rounded-md bg-white dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 py-1 text-base shadow-lg ring-1 ring-gray-300 ring-opacity-5 focus:outline-hidden sm:text-sm\", children: [showFilter &&\n _jsx(\"div\", { className: \"p-1\", children: _jsx(\"input\", { type: \"text\", value: filter || '', onKeyDown: onFilterKeyDown, onChange: onFilterChange, className: \"w-full p-1 border border-gray-300 rounded-md dark:bg-slate-700 dark:text-slate-50\", placeholder: \"Filter...\" }) }), _jsx(\"div\", { className: \"overflow-y-auto max-h-60\", children: filteredOptions.map((option, i) => _jsx(ListOption, { option: option, optionLabel: optionLabel, className: \"hover:cursor-pointer\" }, i)) }), addNew &&\n _jsx(Center, { className: \"font-semibold py-2 border-t\", children: _jsx(Button, { variant: 'secondary', onClick: addNew, children: addNewLabel }) })] })] }) })) }));\n}\nexport function ListOption({ option, optionLabel, onClick, className }) {\n return (_jsx(ListboxOption, { className: ({ active }) => clsx(active ? 'bg-indigo-600 text-white dark:bg-indigo-800 dark:text-white' : 'text-gray-900 dark:text-slate-50', 'relative cursor-default select-none py-2 pl-3 pr-9', className), value: option, onClick: onClick, children: ({ selected, active }) => (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: clsx(selected ? 'font-semibold' : 'font-inherit', 'block truncate'), children: optionLabel(option) }), selected ? (_jsx(\"div\", { className: clsx(active ? 'text-white' : 'text-indigo-600', 'absolute inset-y-0 right-0 flex items-center pr-4'), children: _jsx(Check, { className: \"size-5\", \"aria-hidden\": \"true\" }) })) : null] })) }));\n}\n//# sourceMappingURL=SelectBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Check } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { useMemo, useState } from \"react\";\nconst Default_Option_Style = \"flex-1 px-2 py-2 hover:bg-accent nowrap\";\nfunction defaultOptionLayout(option, isSelected) {\n return {\n label: String(option),\n check: isSelected ? _jsx(Check, { className: 'size-4' }) : _jsx(\"div\", { className: \"size-4\" }),\n reverse: false,\n className: Default_Option_Style,\n };\n}\nexport function SelectList({ value, options, onChange, className, optionLayout, by, noCheck }) {\n const [selected, setSelected] = useState(value);\n const onSelect = (option) => {\n setSelected(option);\n onChange(option);\n };\n const optionEquals = useMemo(() => {\n if (typeof by === 'string') {\n return (o1, o2) => o1[by] === o2[by];\n }\n else if (!by) {\n return (o1, o2) => o1 === o2;\n }\n else {\n return by;\n }\n }, [by]);\n return (_jsx(\"div\", { className: clsx(\"\", className), children: options.map((option, i) => {\n const isSelected = selected ? optionEquals(selected, option) : false;\n let layout;\n if (optionLayout) {\n layout = optionLayout(option, isSelected);\n layout = Object.assign(defaultOptionLayout(option, isSelected), layout);\n }\n else {\n layout = defaultOptionLayout(option, isSelected);\n }\n return (_jsx(SelectListOption, { option: option, onSelect: onSelect, layout: layout, noCheck: noCheck }, i));\n }) }));\n}\nfunction SelectListOption({ option, onSelect, layout, noCheck }) {\n return (_jsxs(\"div\", { className: clsx('group flex items-center cursor-pointer gap-x-2 hover:bg-muted', layout.reverse && 'flex-row-reverse', layout.className), onClick: () => onSelect(option), children: [noCheck ? null : _jsx(\"div\", { className: \"\", children: layout.check }), _jsx(\"div\", { className: 'flex-1', children: layout.label })] }));\n}\n//# sourceMappingURL=SelectList.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { RadioGroup } from '@headlessui/react';\nimport clsx from 'clsx';\nexport function SelectStack({ onSelect, selected, options }) {\n return (_jsxs(RadioGroup, { value: selected, onChange: onSelect, children: [_jsx(RadioGroup.Label, { className: \"sr-only\", children: \"Server size\" }), _jsx(\"div\", { className: \"space-y-4\", children: options.map((option) => (_jsx(RadioGroup.Option, { value: option, className: ({ active }) => clsx(active ? 'border-border ring-2 ring-ring' : 'border-border', 'relative block cursor-pointer rounded-lg border bg-accent px-6 py-4 shadow-2xs focus:outline-hidden sm:flex sm:justify-between'), children: ({ active, checked }) => (_jsxs(_Fragment, { children: [_jsx(\"span\", { className: \"flex items-center\", children: _jsxs(\"span\", { className: \"flex flex-col text-sm\", children: [_jsx(RadioGroup.Label, { as: \"span\", className: \"font-medium text-text\", children: option.label }), option.description &&\n _jsx(RadioGroup.Description, { as: \"span\", className: \"text-muted-foreground\", children: option.description })] }) }), _jsx(\"span\", { className: clsx(active ? 'border' : 'border-2', checked ? 'border-accent-foreground' : 'border-transparent', 'pointer-events-none absolute -inset-px rounded-lg'), \"aria-hidden\": \"true\" })] })) }, option.id))) })] }));\n}\n//# sourceMappingURL=SelectStack.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Switch as UISwitch } from \"@headlessui/react\";\nconst sizes = {\n 'sm': ['h-5 w-8', 'size-3', 'translate-x-4'],\n 'md': ['h-6 w-11', 'size-4', 'translate-x-6'],\n 'lg': ['h-8 w-16', 'size-6', 'translate-x-9'],\n};\nexport function Switch({ value, onChange, size = 'md', children, className }) {\n const sizeClass = sizes[size];\n return (_jsxs(UISwitch, { checked: value, onChange: () => onChange(!value), className: `flex items-center ${className} hover:cursor-pointer`, children: [_jsx(\"div\", { className: `${value ? 'bg-primary' : 'bg-muted'} relative inline-flex ${sizeClass[0]} items-center rounded-full`, children: _jsx(\"span\", { className: `${value ? sizeClass[2] : 'translate-x-1'} inline-block ${sizeClass[1]} transform rounded-full bg-white transition` }) }), children && _jsx(\"span\", { className: \"px-2\", children: children })] }));\n}\n//# sourceMappingURL=Switch.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nconst defaultTableCass = `\ndivide-y divide-border\n[&>tbody]:divide-y [&>tbody]:divide-border\n[&_th]:text-left [&_th]:px-3 [&_th]:py-3.5 [&_th]:text-sm [&_th]:font-normal [&_th]:text-muted-foreground\n[&_td]:px-3 [&_td]:py-4 [&_td]:text-sm\n`;\nexport function Table({ className, children, ...others }) {\n return (_jsx(\"table\", { className: clsx(defaultTableCass, className), ...others, children: children }));\n}\nexport function RowSkeleton({ columns }) {\n return (_jsx(\"tr\", { className: \"hover:bg-muted\", children: Array(columns).fill(0).map((_, index) => _jsx(\"td\", { children: _jsx(\"div\", { className: \"animate-pulse rounded-xs h-5 bg-gray-200 dark:bg-gray-600\" }) }, index)) }));\n}\nexport function TBody({ isLoading = false, columns, rows = 3, children }) {\n return (_jsx(\"tbody\", { children: isLoading ?\n Array(rows).fill(0).map((_, index) => _jsx(RowSkeleton, { columns: columns }, index))\n : children }));\n}\n//# sourceMappingURL=index.js.map","import { createContext, useContext } from \"react\";\nexport function useTabs() {\n return useContext(TabsContext);\n}\nconst TabsContext = createContext({});\nexport { TabsContext };\n//# sourceMappingURL=TabsContext.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { isValidElement, useEffect, useState } from 'react';\nimport { TabsContext, useTabs } from './TabsContext.js';\nfunction applyCurrentTab(tabs, current) {\n const name = typeof current === 'function' ? current() : current;\n let currentTab = null;\n const newTabs = [];\n for (const tab of tabs) {\n const newTab = { ...tab };\n newTab.current = false;\n newTabs.push(newTab);\n if (newTab.name === name) {\n currentTab = newTab;\n }\n }\n if (!currentTab) {\n currentTab = newTabs[0];\n }\n currentTab.current = true;\n return newTabs;\n}\nexport function Tabs({ current, onSelect, tabs, children, navigate }) {\n const [_tabs, _setTabs] = useState([]);\n useEffect(() => {\n _setTabs(applyCurrentTab(tabs, current));\n }, [current, tabs]);\n const context = {\n tabs: _tabs,\n select: (tab) => {\n if (onSelect) {\n if (onSelect(tab) === false) {\n return;\n }\n }\n if (tab.href) {\n if (navigate) {\n navigate(tab.href);\n }\n else {\n window.location.href = tab.href;\n }\n }\n else {\n _setTabs([...applyCurrentTab(_tabs, tab.name)]);\n }\n }\n };\n return (_jsx(TabsContext.Provider, { value: context, children: _jsx(\"div\", { className: \"flex flex-col h-full\", children: children }) }));\n}\nexport function TabsBar({ actions, className }) {\n const { tabs, select } = useTabs();\n const _onClick = (e, tab) => {\n e.preventDefault();\n e.stopPropagation();\n // ignore if disabled\n !tab.disabled && select(tab);\n };\n return (_jsxs(\"div\", { className: \"border-b flex items-start justify-between\", children: [_jsx(\"nav\", { className: \"flex space-x-4 px-4\", \"aria-label\": \"Tabs\", children: tabs.map((tab) => {\n const cursor = tab.disabled ? 'cursor-not-allowed' : 'cursor-pointer';\n return (_jsx(\"a\", { href: tab.href || '#' + tab.name, onClick: (e) => _onClick(e, tab), className: clsx(tab.current\n ? 'border-indigo-500 text-indigo-600 dark:border-indigo-400 dark:text-indigo-50'\n : 'border-transparent text-gray-500 dark:text-slate-300 hover:border-slate-400 hover:text-gray-700 dark:hover:border-slate-200 dark:hover:text-gray-200 ', className, 'whitespace-nowrap border-b-2 py-2 px-1 text-sm font-medium', cursor), \"aria-current\": tab.current ? 'page' : undefined, children: tab.label }, tab.name));\n }) }), _jsx(\"div\", { className: \"flex gap-x-1\", children: actions })] }));\n}\nexport function TabsPanel({}) {\n const { tabs } = useTabs();\n const content = tabs.find((t) => t.current)?.content;\n if (!content) {\n return null;\n }\n if (isValidElement(content)) {\n return _jsx(\"div\", { className: \"h-full overflow-y-auto flex-1\", children: content });\n }\n const Component = content;\n return (_jsx(\"div\", { className: \"h-full overflow-y-auto flex-1\", children: _jsx(Component, {}) }));\n}\n//# sourceMappingURL=Tabs.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport React, { useState } from \"react\";\nimport { Styles } from \"./styles\";\nconst Textarea = React.forwardRef(({ unstyled, value, onChange, className, ...others }, ref) => {\n const [currentValue, setCurrentValue] = useState(value || \"\");\n const _onChange = (ev) => {\n const value = ev.target.value;\n setCurrentValue(value);\n onChange && onChange(value);\n };\n return (_jsx(\"textarea\", { ref: ref, ...others, className: clsx('w-full', unstyled ? Styles.INPUT_UNSTYLED : Styles.INPUT, className), value: currentValue, onChange: _onChange }));\n});\nexport { Textarea };\n//# sourceMappingURL=Textarea.js.map"],"names":["Property","_value","watchers","constructor","value","this","watcher","watch","push","filter","w","createCompositeStateProvider","StateClass","context","React","createContext","undefined","Context","Provider","Slot","consume","_current","content","current","withConsumer","useCompositeState","Error","name","useContext","useGetCompositeStateProperty","property","setValue","useState","useEffect","useSetCompositeStateProperty","useWatchCompositeStateProperty","useSlot","slot","useWatchSlot","useDefineSlot","SharedState","addWatcher","useWatchSharedState","state","useClickOutside","callback","skipFn","ref","useRef","handleClick","e","contains","target","window","setTimeout","document","addEventListener","removeEventListener","useCopyToClipboard","copiedText","setCopiedText","async","text","navigator","clipboard","console","warn","writeText","error","useDarkMode","cb","mediaQuery","matchMedia","_cb","matches","useDebounce","delay","debounceValue","setDebounceValue","handler","clearTimeout","startSse","url","onMessage","onCompleted","chunks","sse","EventSource","ev","data","JSON","parse","join","close","msg","useEventSource","then","useFetch","fetcher","opts","Array","isArray","deps","options","setError","isLoading","setIsLoading","setData","defaultValue","fetch","start","result","onSuccess","catch","onError","finally","end","condition","refetch","useFetchOnce","useFlag","isOn","setState","isOff","set","on","off","toggle","useIntersectionObserver","observer","IntersectionObserver","entries","isEntering","isIntersecting","leave","threshold","observe","unobserve","concat","useIsFirstRendering","isFirstRender","useSafeLayoutEffect","useLayoutEffect","SharedValue","get","useSharedValue","initialValue","getRealSize","size","Avatar","src","shape","color","className","rounded","sizeClass","_jsx","alt","title","first","second","split","children","fill","viewBox","d","SvgAvatar","cn","inputs","twMerge","clsx","badgeVariants","cva","variants","variant","default","secondary","destructive","attention","success","info","done","defaultVariants","Badge","onClick","props","dotBadgeVariants","dotVariants","DotBadge","dotClassName","_jsxs","cx","cy","r","Center","PositionResolver","left","top","width","height","alignAxis","gap","position","pos","anchorRect","elemRect","bottom","right","align","computePosition","constraints","constrainWidth","constrainHeight","rect","DOMRect","flipAxis","axis","newAlign","flipAlign","newPos","flipPos","isElementVisibleOnAxis","clientRect","resolver","computedPos","isVisibleOnXAxis","isVisibleOnYAxis","newConstraints","isElementVisible","intersectRects","rect1","rect2","x1","Math","max","y1","x2","min","y2","isScrollable","element","hasScrollY","scrollHeight","clientHeight","hasScrollX","scrollWidth","clientWidth","style","getComputedStyle","overflowY","overflowX","PopupController","root","scrollableParents","visibleClientRect","documentElement","parents","parent","parentElement","getScrollableParents","anchor","length","getBoundingClientRect","i","l","computeVisibleClientRect","registerListeners","updateHandler","update","closeOnClick","closeOnEsc","tryClose","key","blockPageScroll","body","overflow","open","tryOpen","cleanup","display","visibility","onOpen","onClose","isOpen","createPopupElement","popup","createElement","margin","padding","border","background","PopupContext","usePopupController","ctrl","DOMPopup","ctrlRef","id","zIndex","popupRef","setCtrl","_ctrl","createPortal","Popup","others","OptionAdapter","items","lcText","toLowerCase","item","valueOf","includes","renderOption","findById","find","idOf","createItem","StringOptionAdapter","String","static","StringOptionAdapterWithCreate","getDefaultComboBoxLayout","fullWidth","unstyledInput","buttonRight","buttonWidth","maxMenuHeight","menuClass","inputClass","INPUT_NO_PADDING","optionClass","Input","Menu","Toggle","ComboBox","menuAlign","menuGap","focusOnMount","onSelect","api","layout","layoutOpts","adapter","placeholder","popupId","floor","random","popupCtrl","inputRef","Object","assign","inputBoxRef","useComboboxCtrl","focus","openMenu","closeMenu","toggleMenu","setInputValue","inputText","inputValue","selectedItem","showMenu","isMenuOpen","filteredItems","_Fragment","boxRef","fillWidth","ComboInput","paddingRight","getInputProps","backgroundColor","alignItems","justifyContent","getToggleButtonProps","ComboToggle","ChevronUpIcon","ChevronDownIcon","ComboMenu","highlightedIndex","maxHeight","getMenuProps","map","index","getItemProps","ComboboxController","withState","_selectedItem","_filteredItems","_inputText","_highlightedIndex","_isMenuOpen","clone","updateState","popupPosition","_item","highlightIndex","navigateToTop","getElementById","querySelector","scrollIntoView","onMouseEnter","onMouseLeave","onChange","onKeyDown","decrModulo","TooltipProvider","TooltipPrimitive","Tooltip","Root","TooltipTrigger","Trigger","TooltipContent","forwardRef","sideOffset","side","Portal","Content","VTooltip","description","placement","asChild","delayDuration","displayName","buttonVariants","outline","ghost","link","primary","soft","unstyled","xs","sm","md","lg","xl","icon","Button","isDisabled","type","buttonElement","disabled","autoFocus","Loader2","ThemeProviderContext","theme","setTheme","ThemeProvider","defaultTheme","storageKey","localStorage","getItem","classList","remove","add","systemTheme","setItem","useTheme","ModeOption","option","ModeToggle","Computer","Sun","Moon","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","VisuallyHidden","clip","whiteSpace","wordWrap","ModalContext","useIsInModal","ModalContextProvider","VModal","noCloseButton","allowOverflow","disableCloseOnClickOutside","handleOpenChange","Dialog","onOpenChange","DialogOverlay","DialogDescription","DialogContent","DialogClose","X","VModalTitle","show","DialogTitle","VModalBody","VModalFooter","center","DialogPrimitive","DialogTrigger","DialogPortal","Close","Overlay","onOpenAutoFocus","event","preventDefault","Description","Title","noPadding","legacy","VInput","clearable","readOnly","Separator","orientation","decorative","SeparatorPrimitive","PopoverContext","Popover","hover","click","_open","setOpen","insideModal","PopoverPrimitive","modal","handleHover","PopoverTrigger","prev","PopoverAnchor","Anchor","PopoverContent","PopoverClose","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","List","CommandEmpty","Empty","CommandGroup","Group","CommandSeparator","CommandItem","Item","CommandShortcut","VSelectBox","optionLabel","addNew","addNewLabel","filterBy","label","popupClass","isClearable","triggerRef","setWidth","filterValue","setFilterValue","updateWidth","contentWidth","resizeObserver","ResizeObserver","disconnect","filteredOptions","filterLc","filterFn","o","getFilterByFn","stopPropagation","ChevronsUpDown","SearchIcon","opt","_onClick","isEqual","Check","SquarePlus","strokeWidth","absoluteStrokeWidth","TabsContext","tabs","setTab","responsive","VTabs","onTabChange","currentValue","handleValueChange","newValue","useCallback","tabName","TabsPrimitive","onValueChange","VTabsBar","handleTabChange","tab","t","href","history","pushState","TabsList","TabsTrigger","VTabsPanel","TabsContent","labelVariants","Label","required","LabelPrimitive","Breadcrumbs","maxItems","separator","Breadcrumb","BreadcrumbList","Fragment","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","ChevronRight","firstItem","lastItems","slice","BreadcrumbEllipsis","role","MoreHorizontal","AnimateChangeInHeight","containerRef","setHeight","observedHeight","contentRect","Calendar","classNames","showOutsideDays","daySize","DayPicker","months","month","caption","caption_label","nav","nav_button","nav_button_previous","nav_button_next","table","head_row","head_cell","row","cell","mode","day","day_range_start","day_range_end","day_selected","day_today","day_outside","day_disabled","day_range_middle","day_hidden","components","IconLeft","ChevronLeft","IconRight","Checkbox","CheckboxPrimitive","Indicator","SelectionCombobox","filterType","filterValues","setFilterValues","commandInput","setCommandInput","commandInputRef","nonSelectedFilterValues","some","onInputCapture","currentTarget","v","checked","DateCombobox","dateRange","setDateRange","from","Date","to","format","initialFocus","defaultMonth","selected","range","numberOfMonths","TextCombobox","generateComboboxOptions","setFilters","filterGroups","f","val","textValue","group","Filters","filters","TextFilter","selectedView","setTextValue","handleClose","handleTextFilterAdd","trim","DateFilter","selectedGroup","g","SelectFilter","groupName","getFilteredOptions","existingFilterIndex","findIndex","updatedFilters","FilterBar","setSelectedView","searchParams","URL","location","urlSafeFilters","safeValue","params","URLSearchParams","toString","encodeURIComponent","stringify","delete","newUrl","pathname","replaceState","filtersParam","hydratedFilters","decodeURIComponent","log","valuesWithLabels","matchingOption","ListFilter","selectedGroupType","renderFilterOptions","handleSelect","getAvailableFilterGroups","FilterOperator","Heading","level","h1","h2","h3","h4","h5","h6","textVariants","weight","normal","medium","semibold","Text","ConfirmModal","onConfirm","onCancel","cancelButtonRef","TriangleAlert","useToast","ToastContext","PORTAL_ID","tempNode","portalEl","setPortalEl","doc","ownerDocument","appendChild","icons","CircleCheck","CircleX","warning","AlertTriangle","Info","colors","NotificationPanel","setShow","timeoutId","duration","Icon","status","Transition","appear","as","afterLeave","enter","enterFrom","enterTo","leaveFrom","leaveTo","ToastProvider","toast","DeleteModal","idToDelete","setIdToDelete","deleteApi","err","message","Divider","SidePanel","panelWidth","setPanelWidth","TransitionChild","unmount","DialogPanel","onMouseDown","isDragging","startX","pageX","startWidth","handleMouseMove","deltaX","newWidth","handleMouseUp","CloseButton","Dropdown","trigger","MenuButton","MenuItems","MenuItem","_MenuItem","active","DropdownList","Listbox","ListboxButton","ChevronDown","ListboxOptions","ListboxOption","Spinner","xmlns","stroke","Variants","SpinnerVariants","EmptyCollection","buttonLabel","vectorEffect","strokeLinecap","strokeLinejoin","Plus","FileUploadInput","onUpload","cursor","files","ar","fileListToArray","DropZone","dropZoneProps","useDropZone","htmlFor","dragOverClass","dropEffect","onDrop","__dragOver_cnt__","dataTransfer","promises","traverseFileTree","path","Promise","resolve","isFile","file","defineProperty","isDirectory","dirReader","createReader","readEntries","results","entry","all","filesArrays","flat","webkitGetAsEntry","allFiles","onDragOver","onDragEnter","el","cnt","_onDragEnter","onDragLeave","_onDragLeave","Styles","INPUT_UNSTYLED","INPUT","InputList","delimiters","setText","splice","onBlur","isEmpty","indexOf","pop","Link","underline","underlineClass","MenuList","MenuListItem","MessageBox","defaultIcon","titleColor","textColor","bgColor","ErrorBox","InfoBox","WarningBox","SuccessBox","DefaultBox","Modal","ModalCloseButton","tabIndex","ModalTitle","showDivider","ModalFooter","ModalBody","numberToString","isNaN","NumberInput","noScroll","noSpinners","onWheel","blur","num","parseFloat","RadioOptionAdapter","labelOf","RadioGroup","checkColor","cols","checkIcon","CheckIcon","DefaultCheckIcon","setSelected","selectedId","RadioOption","isSelected","isHighlighted","setIsHighlighted","isChecked","opacity","version","fillRule","SelectBox","clearTitle","ClearIcon","showFilter","by","setFilter","buttonRef","setButtonWidth","onClear","onFilterChange","onFilterKeyDown","ChevronsUpDownIcon","ListOption","defaultOptionLayout","check","reverse","SelectList","optionLayout","noCheck","optionEquals","useMemo","o1","o2","SelectListOption","SelectStack","Option","sizes","Switch","UISwitch","Table","RowSkeleton","columns","_","TBody","rows","useTabs","applyCurrentTab","currentTab","newTabs","newTab","Tabs","navigate","_tabs","_setTabs","select","TabsBar","actions","TabsPanel","isValidElement","Textarea","setCurrentValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vertesia-ui-core.js","sources":["esm/core/components/Avatar.js","esm/core/components/libs/utils.js","esm/core/components/Badge.js","esm/core/components/Center.js","esm/core/components/popup/position.js","esm/core/components/popup/utils.js","esm/core/components/popup/PopupController.js","esm/core/components/popup/Popup.js","esm/core/components/ComboBox.js","esm/core/components/shadcn/button.js","esm/core/components/shadcn/theme/ThemeProvider.js","esm/core/components/shadcn/theme/ThemeSwitcher.js","esm/core/components/shadcn/card.js","esm/core/components/libs/visuallyHidden.js","esm/core/components/shadcn/dialog.js","esm/core/components/shadcn/input.js","esm/core/components/shadcn/separator.js","esm/core/components/shadcn/popover.js","esm/core/components/shadcn/command.js","esm/core/components/shadcn/selectBox.js","esm/core/components/shadcn/tabs.js","esm/core/components/shadcn/tooltip.js","esm/core/components/shadcn/label.js","esm/core/components/shadcn/breadcrumb.js","esm/core/components/shadcn/filters/animateChangeInHeight.js","esm/core/components/shadcn/calendar.js","esm/core/components/shadcn/checkbox.js","esm/core/components/shadcn/filters/DynamicLabel.js","esm/core/components/shadcn/filters/comboBox.js","esm/core/components/shadcn/filters/filters.js","esm/core/components/shadcn/filters/textFilter.js","esm/core/components/shadcn/filters/dateFilter.js","esm/core/components/shadcn/filters/selectFilter.js","esm/core/components/shadcn/filters/filterBar.js","esm/core/components/shadcn/filters/types.js","esm/core/components/shadcn/heading.js","esm/core/components/shadcn/text.js","esm/core/components/ConfirmModal.js","esm/core/components/toast/ToastContext.js","esm/core/components/Portal.js","esm/core/components/toast/NotificationPanel.js","esm/core/components/toast/ToastProvider.js","esm/core/components/DeleteModal.js","esm/core/components/Divider.js","esm/core/components/Dropdown.js","esm/core/components/DropdownList.js","esm/core/components/Spinner.js","esm/core/components/Button.js","esm/core/components/EmptyCollection.js","esm/core/components/FileUpload.js","esm/core/components/FormItem.js","esm/core/components/styles.js","esm/core/components/InputList.js","esm/core/components/Link.js","esm/core/components/MenuList.js","esm/core/components/MessageBox.js","esm/core/components/Modal.js","esm/core/components/NumberInput.js","esm/core/components/RadioGroup.js","esm/core/components/SelectBox.js","esm/core/components/SelectList.js","esm/core/components/SelectStack.js","esm/core/components/SidePanel.js","esm/core/components/Switch.js","esm/core/components/table/index.js","esm/core/components/tabs/TabsContext.js","esm/core/components/tabs/Tabs.js","esm/core/components/Textarea.js","esm/core/hooks/CompositeState.js","esm/core/hooks/SharedState.js","esm/core/hooks/useClickOutside.js","esm/core/hooks/useCopyToClipboard.js","esm/core/hooks/useDarkMode.js","esm/core/hooks/useDebounce.js","esm/core/hooks/useEventSource.js","esm/core/hooks/useFetch.js","esm/core/hooks/useFlag.js","esm/core/hooks/useIntersectionObserver.js","esm/core/hooks/useIsFistRendering.js","esm/core/hooks/useSafeLayoutEffect.js","esm/core/hooks/useSharedValue.js","esm/core/utils/cn.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'size-4';\n case 'sm': return 'size-6';\n case 'md': return 'size-8';\n case 'lg': return 'size-10';\n case 'xl': return 'size-12';\n case '2xl': return 'size-14';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nexport function Avatar({ size, src, name, shape = \"circle\", color = 'bg-gray-500', className }) {\n const rounded = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n const sizeClass = getRealSize(size || 'md');\n if (src) {\n return (_jsx(\"img\", { className: `inline-block ${sizeClass} ${rounded} ${color} ${className}`, src: src, alt: name || src, title: name }));\n }\n if (name) {\n const [first, second] = name.split(' ');\n let text = second ? `${first[0]}${second[0]}` : `${first[0]}${first[1]}`;\n return (_jsx(\"span\", { className: `inline-flex ${sizeClass} items-center justify-center ${rounded} ${color} ${className}`, title: name, children: _jsx(\"span\", { className: `${(size != 'xs') ? 'text-xs' : 'text-[0.6rem]'} font-medium leading-none text-white`, children: text }) }));\n }\n return (_jsx(\"span\", { className: `inline-block ${sizeClass} overflow-hidden ${rounded} ${color}`, children: _jsx(\"svg\", { className: \"h-full w-full text-gray-300\", fill: \"currentColor\", viewBox: \"0 0 24 24\", children: _jsx(\"path\", { d: \"M24 20.993V24H0v-2.996A14.977 14.977 0 0112.004 15c4.904 0 9.26 2.354 11.996 5.993zM16.002 8.999a4 4 0 11-8 0 4 4 0 018 0z\" }) }) }));\n}\nexport function SvgAvatar({ size, shape = \"circle\", color = 'bg-gray-500', className, children }) {\n const rounded = shape === 'circle' ? 'rounded-full' : 'rounded-md';\n const sizeClass = getRealSize(size || 'md');\n return (_jsx(\"span\", { className: `inline-block ${sizeClass} overflow-hidden ${rounded} ${color} ${className}`, children: children }));\n}\n//# sourceMappingURL=Avatar.js.map","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n//# sourceMappingURL=utils.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"./libs/utils\";\n// Base badge variants\nconst badgeVariants = cva(\"inline-flex items-center rounded-md px-2 py-1 text-xs font-medium\", {\n variants: {\n variant: {\n default: \"text-foreground bg-muted\",\n secondary: \"bg-secondary text-primary\",\n destructive: \"bg-destructive text-destructive\",\n attention: \"bg-attention text-attention\",\n success: \"bg-success text-success\",\n info: \"bg-info text-info\",\n done: \"bg-done text-done\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n});\n// Base Badge component\nexport function Badge({ className, variant, children, onClick, ...props }) {\n return (_jsx(\"span\", { className: cn(badgeVariants({ variant }), className), onClick: onClick, ...props, children: children }));\n}\nconst dotBadgeVariants = cva(\n// Base styles\n\"inline-flex items-center gap-x-1.5 rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-border\", {\n variants: {\n variant: {\n default: \"\",\n success: \"\",\n destructive: \"\",\n attention: \"\",\n done: \"\",\n info: \"\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n});\n// Separate dot variants to allow className overrides\nconst dotVariants = cva(\"h-1.5 w-1.5\", {\n variants: {\n variant: {\n default: \"fill-foreground\",\n success: \"fill-success\",\n destructive: \"fill-destructive\",\n attention: \"fill-attention\",\n done: \"fill-done\",\n info: \"fill-info\",\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n});\nexport function DotBadge({ variant, className, dotClassName, // New prop for dot-specific classes\nchildren, ...props }) {\n return (_jsxs(\"span\", { className: cn(dotBadgeVariants({ variant }), className), ...props, children: [_jsx(\"svg\", { className: cn(dotVariants({ variant }), dotClassName), viewBox: \"0 0 6 6\", \"aria-hidden\": \"true\", children: _jsx(\"circle\", { cx: 3, cy: 3, r: 3 }) }), children] }));\n}\n//# sourceMappingURL=Badge.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Center({ className, children }) {\n return (_jsx(\"div\", { className: clsx('flex items-ceter justify-center', className), children: children }));\n}\n//# sourceMappingURL=Center.js.map","function flipPos(position) {\n switch (position) {\n case \"top\": return \"bottom\";\n case \"bottom\": return \"top\";\n case \"left\": return \"right\";\n case \"right\": return \"left\";\n case \"ne\": return \"sw\";\n case \"nw\": return \"se\";\n case \"se\": return \"nw\";\n case \"sw\": return \"ne\";\n default: return position;\n }\n}\nfunction flipAlign(align) {\n switch (align) {\n case \"start\": return \"end\";\n case \"end\": return \"start\";\n default: return align;\n }\n}\nclass PositionResolver {\n /**\n * The computed left coordinate (i.e. x)\n */\n left;\n /**\n * The computed top coordinate (i.e. y)\n */\n top;\n /**\n * The computed width constraint. If undefined it means that the width is not constrained.\n */\n width;\n /**\n * The computed height constraint. If undefined it means that the height is not constrained.\n */\n height;\n /**\n * Alignment axis. The axis is computed from the position constraints.\n * If no axis is found - no alignment will be done\n */\n alignAxis;\n /**\n * A gap size between the anchor element and the target element.\n */\n gap;\n constructor(gap = 0) {\n this.gap = gap;\n }\n position(pos, anchorRect, elemRect) {\n switch (pos) {\n case \"top\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.alignAxis = 'x';\n break;\n }\n case \"bottom\": {\n this.top = anchorRect.bottom + this.gap;\n this.alignAxis = 'x';\n break;\n }\n case \"left\": {\n this.left = anchorRect.left - elemRect.width - this.gap;\n this.alignAxis = 'y';\n break;\n }\n case \"right\": {\n this.left = anchorRect.right + this.gap;\n this.alignAxis = 'y';\n break;\n }\n case \"ne\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.left = anchorRect.right + this.gap;\n break;\n }\n case \"nw\": {\n this.top = anchorRect.top - elemRect.height - this.gap;\n this.left = anchorRect.left - elemRect.width - this.gap;\n break;\n }\n case \"se\": {\n this.top = anchorRect.bottom + this.gap;\n this.left = anchorRect.right + this.gap;\n break;\n }\n case \"sw\": {\n this.top = anchorRect.bottom + this.gap;\n this.left = anchorRect.left - elemRect.width - this.gap;\n break;\n }\n }\n }\n align(align, anchorRect, elemRect) {\n if (!this.alignAxis)\n return; // no alignment axis\n switch (align) {\n case 'start': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left;\n }\n else {\n this.top = anchorRect.top;\n }\n break;\n }\n case 'end': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.right - elemRect.width;\n }\n else {\n this.top = anchorRect.bottom - elemRect.height;\n }\n break;\n }\n case 'center': {\n // centering depend on the final value of the width / height\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left + anchorRect.width / 2 - elemRect.width / 2;\n }\n else {\n this.top = anchorRect.top + anchorRect.height / 2 - elemRect.height / 2;\n }\n break;\n }\n case 'fill': {\n if (this.alignAxis === 'x') {\n this.left = anchorRect.left;\n this.width = anchorRect.right - anchorRect.left;\n }\n else {\n this.top = anchorRect.top;\n this.height = anchorRect.bottom - anchorRect.top;\n }\n break;\n }\n }\n }\n computePosition(constraints, elemRect, anchorRect) {\n this.position(constraints.position, anchorRect, elemRect);\n constraints.align && this.align(constraints.align, anchorRect, elemRect);\n if (!this.left && !this.top) {\n throw new Error(\"Invalid position. Cannot compute x,y coordinates\");\n }\n const constrainWidth = this.width != null;\n const constrainHeight = this.height != null;\n const width = constrainWidth ? this.width : elemRect.width;\n const height = constrainHeight ? this.height : elemRect.height;\n return {\n rect: new DOMRect(this.left, this.top, width, height),\n constrainWidth,\n constrainHeight,\n position: constraints.position,\n align: constraints.align\n };\n }\n flipAxis(constraints, axis) {\n if (this.alignAxis === axis) { // flip alignment\n if (constraints.align) {\n const newAlign = flipAlign(constraints.align);\n if (newAlign !== constraints.align) {\n return { ...constraints, align: newAlign };\n }\n }\n }\n else { // flip positioning\n const newPos = flipPos(constraints.position);\n if (newPos !== constraints.position) {\n return { ...constraints, position: newPos };\n }\n }\n return null; // nothing to do\n }\n}\nfunction isElementVisible(elemRect, clientRect) {\n return elemRect.left >= clientRect.left && elemRect.right <= clientRect.right\n &&\n elemRect.top >= clientRect.top && elemRect.bottom <= clientRect.bottom;\n}\nfunction isElementVisibleOnAxis(elemRect, clientRect, axis) {\n if (axis === 'x') {\n return elemRect.left >= clientRect.left && elemRect.right <= clientRect.right;\n }\n else {\n return elemRect.top >= clientRect.top && elemRect.bottom <= clientRect.bottom;\n }\n}\n/**\n * Compute the position by trying to adjust the constraints until the computed position fits into the client area.\n * Returns the best position that fits the constraints.\n * @param constraints\n * @param elemRect\n * @param anchorRect\n * @param clientRect\n * @returns null if the element cannot be positioned otherwise returns a position object\n */\nexport function computePosition(constraints, elemRect, anchorRect, clientRect) {\n const resolver = new PositionResolver(constraints.gap);\n let computedPos = resolver.computePosition(constraints, elemRect, anchorRect);\n const isVisibleOnXAxis = isElementVisibleOnAxis(computedPos.rect, clientRect, 'x');\n const isVisibleOnYAxis = isElementVisibleOnAxis(computedPos.rect, clientRect, 'y');\n if (isVisibleOnXAxis && isVisibleOnYAxis) {\n return computedPos; // the element is visible on both axis\n }\n let newConstraints = null;\n if (!isVisibleOnXAxis) {\n newConstraints = resolver.flipAxis(constraints, 'x');\n }\n if (!isVisibleOnYAxis) {\n newConstraints = resolver.flipAxis(newConstraints || constraints, 'y');\n }\n if (!newConstraints) {\n return null; // cannot find a better position\n }\n computedPos = new PositionResolver(resolver.gap).computePosition(newConstraints, elemRect, anchorRect);\n if (isElementVisible(computedPos.rect, clientRect)) {\n return computedPos;\n }\n return null; // cannot find a better position\n}\n//# sourceMappingURL=position.js.map","/**\n * Compute the intersection of the two given rects.\n * @param rect1\n * @param rect2\n * @returns\n */\nexport function intersectRects(rect1, rect2) {\n const x1 = Math.max(rect1.left, rect2.left);\n const y1 = Math.max(rect1.top, rect2.top);\n const x2 = Math.min(rect1.right, rect2.right);\n const y2 = Math.min(rect1.bottom, rect2.bottom);\n if (x2 <= x1 || y2 <= y1) {\n return null; // No intersection\n }\n return new DOMRect(x1, y1, x2 - x1, y2 - y1);\n}\n/**\n * Compute the visible rectangle of the scrollable parents.\n * @param scrollableParents\n * @returns\n */\nexport function computeVisibleClientRect(scrollableParents) {\n if (scrollableParents.length === 0)\n return null;\n // Initialize the rect as the bounding rect of the first scrollable parent\n let rect = scrollableParents[0].getBoundingClientRect();\n // Iterate over the remaining scrollable parents to compute the intersection\n for (let i = 1, l = scrollableParents.length; i < l; i++) {\n const parentRect = scrollableParents[i].getBoundingClientRect();\n rect = intersectRects(parentRect, rect);\n // If there is no intersection, exit early\n if (!rect) {\n return null;\n }\n }\n return rect;\n}\n/**\n * Tests whether the given element is scrollable in any direction.\n * @param element\n * @returns\n */\nexport function isScrollable(element) {\n const hasScrollY = element.scrollHeight > element.clientHeight;\n const hasScrollX = element.scrollWidth > element.clientWidth;\n if (hasScrollY || hasScrollX) {\n const style = getComputedStyle(element);\n if ((hasScrollY && style.overflowY !== 'visible') || (hasScrollX && style.overflowX !== 'visible')) {\n return true;\n }\n }\n return false;\n}\n/**\n * Get the list of scrollable parents of the given element. The list always include the root parent at the end.\n * The root parent is either the document.documentElement or the given root element.\n * To iterate the list from top to down you need to iterate from the end to the start of the list,\n * since the root parent is always the last element and the nearest scrollable parent is the first element.\n * @param element\n * @param root\n * @returns\n */\nexport function getScrollableParents(element, root = document.documentElement) {\n const parents = [];\n let parent = element.parentElement;\n while (parent && parent !== root) {\n isScrollable(parent) && parents.push(parent);\n parent = parent.parentElement;\n }\n // Always push the root element\n parents.push(root);\n return parents;\n}\n//# sourceMappingURL=utils.js.map","import { computePosition } from \"./position\";\nimport { computeVisibleClientRect, getScrollableParents } from \"./utils\";\nexport class PopupController {\n options;\n root;\n scrollableParents;\n visibleClientRect;\n context;\n constructor(options) {\n this.options = options;\n this.root = options.root || document.documentElement;\n this.scrollableParents = getScrollableParents(this.anchor, this.root);\n this.visibleClientRect = computeVisibleClientRect(this.scrollableParents);\n }\n get anchor() {\n return this.options.anchor;\n }\n registerListeners(element) {\n const parents = this.scrollableParents;\n const updateHandler = () => {\n this.update();\n };\n // add a window resize listener\n window.addEventListener('resize', updateHandler);\n //TODO do we add scroll listeners to the window?\n // add scroll listeners to all scrollable parents\n for (const parent of parents) {\n parent.addEventListener('scroll', updateHandler);\n }\n let closeOnClick;\n if (this.options.closeOnClick) {\n closeOnClick = (ev) => {\n if (!element.contains(ev.target)) {\n this.tryClose();\n }\n };\n // register in the next event loop cycle since the current one\n // is may be triggered by a click event\n window.setTimeout(function () {\n closeOnClick && document.addEventListener('click', closeOnClick);\n }, 0);\n }\n let closeOnEsc;\n if (this.options.closeOnEsc) {\n closeOnEsc = (ev) => {\n if (ev.key === 'Escape') {\n this.tryClose();\n }\n };\n window.setTimeout(function () {\n closeOnEsc && document.addEventListener('keydown', closeOnEsc);\n }, 0);\n }\n const blockPageScroll = this.options.blockPageScroll;\n if (blockPageScroll) {\n document.body.style.overflow = \"hidden\";\n document.body.style.height = \"100%\";\n }\n return () => {\n window.removeEventListener('resize', updateHandler);\n for (const parent of parents) {\n parent.removeEventListener('scroll', updateHandler);\n }\n closeOnClick && document.removeEventListener('click', closeOnClick);\n closeOnEsc && document.removeEventListener('keydown', closeOnEsc);\n if (blockPageScroll) {\n document.body.style.overflow = \"\";\n document.body.style.height = \"\";\n }\n };\n }\n open(element, constraints) {\n if (this.context) {\n throw new Error(\"The popup controller is already bound to an element\");\n }\n this.tryOpen(element, constraints);\n }\n tryOpen(element, constraints) {\n if (this.context) {\n return; // do nothing if the popup is already open\n }\n this.context = {\n element,\n constraints,\n cleanup: this.registerListeners(element)\n };\n element.style.display = \"\";\n element.style.visibility = \"hidden\";\n // update the popup position\n this.update();\n this.options.onOpen && this.options.onOpen(this);\n }\n close() {\n if (!this.context) {\n throw new Error(\"The popup controller is not bound to an element\");\n }\n this.tryClose();\n }\n tryClose() {\n if (!this.context) {\n return; // do nothing if the popup is not open\n }\n this.options.onClose && this.options.onClose(this);\n this.context.cleanup();\n //TODO\n this.context.element.style.display = \"none\";\n this.context = undefined;\n }\n get isOpen() {\n return !!this.context;\n }\n update() {\n if (!this.context)\n return; // do nothing if the popup is not open\n // update the position of the popup\n const element = this.context.element;\n const constraints = this.context.constraints;\n const elemRect = element.getBoundingClientRect();\n const anchorRect = this.anchor.getBoundingClientRect();\n const clientRect = this.visibleClientRect;\n if (!clientRect) {\n // the popup is not visible\n return;\n }\n const position = computePosition(constraints, elemRect, anchorRect, clientRect);\n this.context.position = position || undefined;\n if (position) {\n if (position.constrainHeight) {\n element.style.height = position.rect.height + 'px';\n }\n if (position.constrainWidth) {\n element.style.width = position.rect.width + 'px';\n }\n element.style.left = position.rect.left + 'px';\n element.style.top = position.rect.top + 'px';\n element.style.visibility = \"visible\";\n }\n }\n createPopupElement() {\n const popup = document.createElement('div');\n popup.style.margin = \"0\";\n popup.style.padding = \"0\";\n popup.style.border = \"none\";\n popup.style.background = \"transparent\";\n popup.className = \"composable-Popup\";\n return popup;\n }\n}\n//# sourceMappingURL=PopupController.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { PopupController } from \"./PopupController\";\nconst PopupContext = createContext(undefined);\nexport function usePopupController() {\n const ctrl = useContext(PopupContext);\n if (!ctrl)\n throw new Error(\"usePopupController must be used inside a Popup component\");\n return ctrl;\n}\nexport function DOMPopup({ ctrlRef, id, constraints, isOpen, children, className, onClose, zIndex, position, ...props }) {\n const popupRef = useRef(null);\n const [ctrl, setCtrl] = useState();\n useEffect(() => {\n if (!props.anchor)\n throw new Error(\"Anchor element is required\");\n const _ctrl = new PopupController({\n ...props,\n onClose\n });\n setCtrl(_ctrl);\n return () => {\n _ctrl.tryClose();\n };\n }, []);\n useEffect(() => {\n if (ctrlRef) {\n ctrlRef.current = ctrl;\n }\n }, [ctrl]);\n // effect to open / close the popup\n useEffect(() => {\n if (ctrl && popupRef.current) {\n if (ctrl.isOpen !== isOpen) {\n if (isOpen) {\n ctrl.open(popupRef.current, constraints);\n }\n else {\n ctrl.close();\n }\n }\n }\n else if (ctrl?.isOpen && !isOpen) {\n // close the popup - happens when isOpen becomes false but the ctrl is still open\n // and the popupRef was destroyed by the isOpen && below\n ctrl.close();\n }\n }, [isOpen, ctrl, popupRef.current]);\n return (_jsx(PopupContext.Provider, { value: ctrl, children: isOpen && createPortal(_jsx(\"div\", { id: id, style: {\n //display: isOpen ? 'block' : 'none',\n visibility: 'hidden',\n position: position || 'absolute',\n zIndex: zIndex || 100,\n }, ref: popupRef, className: className, children: children }), document.body) }));\n}\nexport function Popup({ anchor, root, children, ...others }) {\n return anchor.current && (!root || root.current) ? (_jsx(DOMPopup, { anchor: anchor.current, root: root?.current || undefined, ...others, children: children })) : null;\n}\n//# sourceMappingURL=Popup.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport clsx from 'clsx';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Popup } from \"./popup/index\";\nconst INPUT_UNSTYLED = \"block m-0 p-0 border-0 focus:outline-none focus:ring-0 bg-transparent\";\nconst INPUT_NO_PADDING = \"block sm:text-sm sm:leading-6 rounded-md border-0 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 placeholder:text-gray-400 dark:placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 dark:focus:ring-indigo-800\";\nconst INPUT = INPUT_NO_PADDING + \" py-1.5\";\nconst COMBOBOX_POPUP = \"combobox-popup\";\nfunction genComboboxPopupId() {\n return `combobox-popup-${Math.floor(Math.random() * 1000000)}`;\n}\nexport class OptionAdapter {\n filter(items, text) {\n const lcText = text.toLowerCase();\n return items.filter((item) => this.valueOf(item).toLowerCase().includes(lcText));\n }\n renderOption(item) {\n return this.valueOf(item);\n }\n findById(items, id) {\n return items.find(item => this.idOf(item) === id);\n }\n // override to support creating new items\n createItem(_value) {\n return null; // default is no new item\n }\n}\nexport class StringOptionAdapter extends OptionAdapter {\n valueOf(item) {\n return String(item);\n }\n idOf(item) {\n return String(item);\n }\n static instance = new StringOptionAdapter();\n}\nexport class StringOptionAdapterWithCreate extends StringOptionAdapter {\n createItem(value) {\n return value;\n }\n static instance = new StringOptionAdapterWithCreate();\n}\nexport function getDefaultComboBoxLayout(fullWidth, unstyledInput) {\n return {\n buttonRight: 4,\n buttonWidth: 24,\n maxMenuHeight: 240,\n menuClass: \"w-72 bg-white mt-1 shadow-md border border-gray-200 overflow-auto p-0 z-10\",\n inputClass: clsx(unstyledInput ? INPUT_UNSTYLED : INPUT, fullWidth ? \"w-full\" : \"!w-auto\"),\n optionClass: \"py-2 px-3 shadow-sm flex flex-col [&.option-selected]:font-semibold [&.option-highlighted]:bg-blue-300\",\n Input: (ComboInput),\n Menu: (ComboMenu),\n Toggle: (ComboToggle),\n };\n}\nexport function ComboBox({ menuAlign = \"fill\", menuGap, focusOnMount, onSelect, value, zIndex, unstyledInput, fullWidth, api, layout: layoutOpts, adapter, items, placeholder }) {\n const [popupId] = useState(genComboboxPopupId());\n const popupCtrl = useRef(undefined);\n const inputRef = useRef(null);\n const layout = layoutOpts ? Object.assign(getDefaultComboBoxLayout(fullWidth, unstyledInput), layoutOpts) : getDefaultComboBoxLayout(fullWidth, unstyledInput);\n const inputBoxRef = React.useRef(null);\n const ctrl = useComboboxCtrl({\n adapter,\n items,\n value,\n popupId\n });\n useEffect(() => {\n if (inputRef.current) {\n focusOnMount && inputRef.current.focus();\n }\n }, [inputRef.current]);\n // the onSelect callback may change so we need to refresh it.\n useEffect(() => {\n ctrl.onSelect = onSelect;\n ctrl.popupCtrl = popupCtrl.current;\n }, [onSelect, popupCtrl.current]);\n useEffect(() => {\n if (api && ctrl && inputRef.current) {\n api.current = {\n open: () => ctrl.openMenu(),\n close: () => ctrl.closeMenu(),\n toggle: () => ctrl.toggleMenu(),\n setInputValue: (value) => ctrl.inputText = value,\n inputValue: ctrl.inputText || '',\n selectedItem: ctrl.selectedItem,\n focus: () => inputRef.current?.focus()\n };\n return () => {\n api.current = null;\n };\n }\n }, [api, ctrl, inputRef.current]);\n const showMenu = ctrl.isMenuOpen && ctrl.filteredItems.length > 0;\n return (_jsxs(_Fragment, { children: [_jsx(layout.Input, { boxRef: inputBoxRef, inputRef: inputRef, ctrl: ctrl, layout: layout, placeholder: placeholder }), _jsx(Popup, { id: popupId, ctrlRef: popupCtrl, className: COMBOBOX_POPUP, closeOnClick: true, closeOnEsc: true, onClose: () => ctrl.closeMenu(), isOpen: showMenu, anchor: inputBoxRef, zIndex: zIndex, constraints: {\n position: \"bottom\",\n align: menuAlign,\n gap: menuGap != null ? menuGap : 4\n }, children: _jsx(layout.Menu, { fillWidth: menuAlign === \"fill\", items: ctrl.filteredItems, ctrl: ctrl, layout: layout, adapter: adapter }) })] }));\n}\nfunction ComboInput({ inputRef, placeholder, boxRef, ctrl, layout }) {\n const buttonWidth = layout.buttonWidth;\n const style = buttonWidth > 0 ? { paddingRight: `${buttonWidth}px` } : undefined;\n const Toggle = layout.Toggle;\n return (_jsxs(\"div\", { className: \"relative\", ref: boxRef, children: [_jsx(\"input\", { ref: inputRef, placeholder: placeholder, ...ctrl.getInputProps(), style: style, className: layout.inputClass }), Toggle &&\n _jsx(\"button\", { style: {\n top: 0, bottom: 0, right: `${layout.buttonRight}px`, width: `${buttonWidth}px`,\n position: \"absolute\",\n border: \"none\",\n padding: 0,\n margin: 0,\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }, ...ctrl.getToggleButtonProps(), children: _jsx(Toggle, { ctrl: ctrl, layout: layout }) })] }));\n}\nfunction ComboToggle({ ctrl }) {\n return ctrl.isMenuOpen ? _jsx(ChevronUpIcon, { className: \"w-4 h-4\" }) : _jsx(ChevronDownIcon, { className: \"w-4 h-4\" });\n}\nfunction ComboMenu({ fillWidth, items, layout, ctrl, adapter }) {\n const { highlightedIndex, selectedItem } = ctrl;\n return (_jsx(\"ul\", { style: { width: fillWidth ? \"100%\" : undefined, maxHeight: layout.maxMenuHeight ? `${layout.maxMenuHeight}px` : '240px' }, className: layout.menuClass, ...ctrl.getMenuProps(), children: items.map((item, index) => (_jsx(\"li\", { \"data-index\": index, className: clsx(layout.optionClass, highlightedIndex === index && \"option-highlighted\", selectedItem === item && \"option-selected\"), ...ctrl.getItemProps(item, index), children: adapter.renderOption(item) }, adapter.idOf(item)))) }));\n}\nexport function useComboboxCtrl(props) {\n const [ctrl, setCtrl] = useState(new ComboboxController(props));\n useEffect(() => {\n ctrl?.withState(setCtrl);\n }, []);\n return ctrl;\n}\nclass ComboboxController {\n popupId;\n items;\n adapter;\n onSelect;\n setState;\n _selectedItem = null;\n _filteredItems;\n _inputText = \"\";\n _highlightedIndex = null;\n _isMenuOpen = false;\n popupCtrl;\n constructor({ adapter, items, value, popupId }) {\n this.adapter = adapter;\n this.items = items;\n this.popupId = popupId;\n if (typeof value === \"string\") {\n this._inputText = value;\n }\n else if (value) {\n this._selectedItem = adapter.findById(items, adapter.idOf(value)) || null;\n if (this._selectedItem) {\n this._inputText = adapter.valueOf(value);\n }\n }\n if (this._inputText) {\n this._filteredItems = this.adapter.filter(this.items, this._inputText);\n }\n else {\n this._filteredItems = this.items;\n }\n }\n withState(setState) {\n this.setState = setState;\n return this;\n }\n clone() {\n const clone = new ComboboxController({ adapter: this.adapter, items: this.items, popupId: this.popupId });\n clone.setState = this.setState;\n clone.onSelect = this.onSelect;\n clone._inputText = this._inputText;\n clone._highlightedIndex = this._highlightedIndex;\n clone._selectedItem = this._selectedItem;\n clone._isMenuOpen = this._isMenuOpen;\n clone._filteredItems = this._filteredItems;\n clone.popupCtrl = this.popupCtrl;\n return clone;\n }\n updateState() {\n this.setState?.(this.clone());\n }\n get filteredItems() {\n if (this._inputText) {\n return this.adapter.filter(this.items, this._inputText);\n }\n else {\n return this.items;\n }\n }\n get selectedItem() {\n return this._selectedItem;\n }\n set selectedItem(item) {\n this._selectedItem = item;\n this._inputText = item ? this.adapter.valueOf(item) : \"\";\n this._filteredItems = this._inputText ?\n this.adapter.filter(this.items, this._inputText)\n : this.items;\n this.updateState();\n this.onSelect?.(item);\n }\n get isMenuOpen() {\n return this._isMenuOpen;\n }\n set inputText(inputText) {\n this._inputText = inputText;\n if (inputText) {\n this._filteredItems = this.adapter.filter(this.items, inputText);\n }\n else {\n this._filteredItems = this.items;\n }\n this._highlightedIndex = null;\n this._selectedItem = null;\n this.updateState();\n // TODO -- experimental - it works but it's not perfect\n // we need to update if the popup is on top and the filtered items changed\n if (this.isMenuOpen && this.popupCtrl) {\n const popupCtrl = this.popupCtrl;\n const popupPosition = popupCtrl.context?.position?.position;\n if (popupPosition && popupPosition === \"top\") {\n window.setTimeout(() => {\n popupCtrl.update();\n }, 100);\n }\n }\n }\n get inputText() {\n return this._inputText;\n }\n set highlightedIndex(index) {\n this._highlightedIndex = index;\n this.updateState();\n }\n get highlightedIndex() {\n return this._highlightedIndex;\n }\n openMenu() {\n if (this._filteredItems.length > 0) {\n this._isMenuOpen = true;\n //this._highlightedIndex = 0;\n this.updateState();\n }\n else {\n // TODO nothing to show.\n // display a create value option?\n }\n }\n closeMenu(_item) {\n if (this._isMenuOpen) {\n this._highlightedIndex = null;\n this._isMenuOpen = false;\n this.updateState();\n }\n }\n toggleMenu() {\n if (this._isMenuOpen) {\n this.closeMenu();\n }\n else {\n this.openMenu();\n }\n }\n highlightIndex(index, navigateToTop = false) {\n this.highlightedIndex = index;\n const popup = document.getElementById(this.popupId);\n if (popup) {\n popup.querySelector(`li[data-index=\"${index}\"]`)?.scrollIntoView(navigateToTop);\n }\n }\n getMenuProps() {\n return {};\n }\n getToggleButtonProps() {\n return {\n onClick: () => {\n this._isMenuOpen = !this._isMenuOpen;\n this.updateState();\n }\n };\n }\n getItemProps(item, index) {\n return {\n \"aria-selected\": this._highlightedIndex === index,\n onClick: () => {\n this.selectedItem = item;\n this.closeMenu();\n },\n onMouseEnter: () => {\n if (this.highlightedIndex !== index) {\n this.highlightedIndex = index;\n }\n },\n onMouseLeave: () => {\n if (this.highlightedIndex === index) {\n this.highlightedIndex = null;\n }\n }\n };\n }\n getInputProps() {\n const items = this._filteredItems;\n return {\n onClick: () => {\n this.openMenu();\n },\n onChange: (ev) => {\n const value = ev.target.value;\n this.inputText = value;\n this.openMenu();\n },\n value: this.inputText,\n onKeyDown: (ev) => {\n const key = ev.key;\n if (key === \"Enter\") {\n if (this.highlightedIndex != null) {\n this.selectedItem = items[this.highlightedIndex || 0];\n }\n else {\n // create new value?\n if (this.inputText) {\n const item = this.adapter.createItem(this.inputText);\n if (item) {\n this.items.push(item);\n this.selectedItem = item;\n }\n }\n }\n this.closeMenu();\n }\n else if (key === \"ArrowDown\") {\n if (this.isMenuOpen) {\n this.highlightIndex(this.highlightedIndex === null ? 0 : incrModulo(this.highlightedIndex, items.length), false);\n }\n else {\n this.openMenu();\n }\n }\n else if (key === \"ArrowUp\") {\n if (this.isMenuOpen) {\n this.highlightIndex(this.highlightedIndex === null ? 0 : decrModulo(this.highlightedIndex, items.length), true);\n }\n }\n }\n };\n }\n}\nfunction incrModulo(value, max) {\n return (value + 1) % max;\n}\nfunction decrModulo(value, max) {\n return (value - 1 + max) % max;\n}\n//# sourceMappingURL=ComboBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { VTooltip } from \"@vertesia/ui/core\";\nimport { cn } from \"../libs/utils\";\nimport { Check, CopyIcon, Loader2 } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\nconst buttonVariants = cva(\"hover:cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", {\n variants: {\n variant: {\n destructive: \"bg-destructive dark:bg-destructive/10 text-destructive ring-1 ring-inset ring-destructive-muted/50 dark:ring-destructive-muted/50 shadow-xs hover:bg-destructive/50\",\n outline: \"border border-input bg-background shadow-xs hover:bg-muted ring-inset\",\n secondary: \"bg-primary/5 dark:bg-primary/10 text-primary shadow-xs hover:bg-primary/10 dark:hover:bg-primary/20 ring-inset\",\n ghost: \"hover:bg-muted/50 dark:hover:bg-muted/20 ring-inset\",\n link: \"text-white underline-offset-4 hover:underline ring-inset\",\n primary: \"bg-primary text-white shadow-xs hover:bg-primary/90 ring-inset\",\n unstyled: \"\"\n },\n size: {\n xs: 'h-7 rounded px-2 py-1 text-xs gap-x-1',\n sm: \"h-8 rounded px-3 text-xs\",\n md: \"h-9 rounded-md px-4 py-2\",\n lg: \"h-10 rounded-md px-3\",\n xl: 'rounded-md px-3.5 py-2.5 text-sm gap-x-2',\n icon: \"p-0 m-0 rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n});\nconst Button = React.forwardRef(({ className, variant, size, asChild = false, alt, isDisabled, isLoading, title, onClick, type, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n const buttonElement = (_jsxs(Comp, { className: clsx(cn(buttonVariants({ variant, size })), className), disabled: isDisabled || isLoading || props.disabled, ref: ref, onClick: onClick, type: type, autoFocus: false, ...props, children: [isLoading && _jsx(Loader2, { className: \"animate-spin\" }), props.children] }));\n if (alt || title) {\n return (_jsx(VTooltip, { description: alt || title, asChild: true, className: \"cursor-pointer\", size: \"xs\", placement: \"top\", children: buttonElement }));\n }\n return buttonElement;\n});\nButton.displayName = \"Button\";\nconst CopyButton = React.forwardRef(({ size, content, toast, className, alt, ...props }, ref) => {\n const [isCopied, setIsCopied] = useState(false);\n const handleCopy = () => {\n navigator.clipboard.writeText(content).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n if (!toast || !toast.toast) {\n return;\n }\n toast.toast({\n status: \"success\",\n title: toast.message || \"Copied to clipboard\",\n duration: 2000,\n });\n }).catch((err) => {\n console.error(\"Failed to copy text: \", err);\n if (toast && toast.toast)\n toast.toast({\n status: \"error\",\n title: \"Failed to copy\",\n duration: 2000,\n });\n });\n };\n return (_jsx(Button, { ref: ref, className: cn(className), variant: \"unstyled\", size: size || \"sm\", onClick: handleCopy, ...props, alt: alt ?? \"Copy\", children: isCopied ?\n _jsx(Check, { className: \"text-success\" })\n :\n _jsx(CopyIcon, { className: \"size-4\" }) }));\n});\nCopyButton.displayName = \"CopyButton\";\nexport { Button, CopyButton, buttonVariants };\n//# sourceMappingURL=button.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\nconst initialState = {\n theme: \"system\",\n setTheme: () => null,\n};\nconst ThemeProviderContext = createContext(initialState);\nexport function ThemeProvider({ children, defaultTheme = \"system\", storageKey = \"vite-ui-theme\", ...props }) {\n const [theme, setTheme] = useState(() => localStorage.getItem(storageKey) || defaultTheme);\n useEffect(() => {\n const root = window.document.documentElement;\n root.classList.remove(\"light\", \"dark\");\n if (theme === \"system\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n root.classList.add(systemTheme);\n return;\n }\n root.classList.add(theme);\n }, [theme]);\n const value = {\n theme,\n setTheme: (theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n return (_jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));\n}\nexport const useTheme = () => {\n const context = useContext(ThemeProviderContext);\n if (context === undefined)\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n return context;\n};\n//# sourceMappingURL=ThemeProvider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Computer, Moon, Sun } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { useTheme } from \"./ThemeProvider\";\nexport function ModeOption({ option, current, setTheme, icon }) {\n return (_jsx(Button, { variant: current === option ? \"secondary\" : \"outline\", size: \"sm\", onClick: () => setTheme(option), alt: option, children: icon }));\n}\nexport default function ModeToggle() {\n const { setTheme } = useTheme();\n const theme = useTheme().theme;\n return (_jsxs(\"div\", { className: \"flex justify-between px-2 items-center\", children: [_jsx(\"p\", { className: \"text-sm font-semibold\", children: \"Theme\" }), _jsxs(\"div\", { className: \"flex gap-2\", children: [_jsx(ModeOption, { current: theme, option: \"system\", setTheme: setTheme, icon: _jsx(Computer, { className: \"text-muted\" }) }), _jsx(ModeOption, { current: theme, option: \"light\", setTheme: setTheme, icon: _jsx(Sun, { className: \"text-muted\" }) }), _jsx(ModeOption, { current: theme, option: \"dark\", setTheme: setTheme, icon: _jsx(Moon, { className: \"text-muted\" }) })] })] }));\n}\n//# sourceMappingURL=ThemeSwitcher.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { cn } from \"../libs/utils\";\nconst Card = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"rounded-xl border bg-card text-card-foreground shadow\", className), ...props })));\nCard.displayName = \"Card\";\nconst CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"flex flex-col p-6\", className), ...props })));\nCardHeader.displayName = \"CardHeader\";\nconst CardTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"font-semibold leading-none tracking-tight\", className), ...props })));\nCardTitle.displayName = \"CardTitle\";\nconst CardDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"text-sm text-muted-foreground\", className), ...props })));\nCardDescription.displayName = \"CardDescription\";\nconst CardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"p-6 pt-0\", className), ...props })));\nCardContent.displayName = \"CardContent\";\nconst CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"div\", { ref: ref, className: cn(\"flex items-center p-6 pt-0\", className), ...props })));\nCardFooter.displayName = \"CardFooter\";\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n//# sourceMappingURL=card.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function VisuallyHidden({ children }) {\n return (_jsx(\"span\", { style: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n }, children: children }));\n}\n//# sourceMappingURL=visuallyHidden.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../libs/utils\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { VisuallyHidden } from \"../libs/visuallyHidden\";\nimport { createContext, useContext } from \"react\";\nconst ModalContext = createContext(false);\nexport function useIsInModal() {\n return !!useContext(ModalContext);\n}\nexport function ModalContextProvider({ children }) {\n return _jsx(ModalContext.Provider, { value: true, children: children });\n}\nexport function VModal({ className, children, isOpen, onClose, description = \"Modal Description\", noCloseButton = false, allowOverflow = false, disableCloseOnClickOutside = false, }) {\n const handleOpenChange = (open) => {\n if (!open) {\n onClose();\n }\n };\n return (_jsxs(Dialog, { open: isOpen, onOpenChange: (open) => {\n if (!disableCloseOnClickOutside || open) {\n handleOpenChange(open);\n }\n }, children: [allowOverflow && _jsx(DialogOverlay, { className: \"z-50 fixed inset-0 bg-black/80\" }), _jsx(VisuallyHidden, { children: _jsx(DialogDescription, { children: description }) }), _jsxs(DialogContent, { className: cn(\"min-h-20 p-4\", \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border bg-background shadow-lg duration-200 sm:rounded-lg\", className), children: [!noCloseButton && (_jsx(DialogClose, { onClick: () => handleOpenChange(false), asChild: true, autoFocus: false, children: _jsx(Button, { variant: \"outline\", alt: \"Close\", className: \"top-4 right-4 absolute data-[state=open]:bg-accent opacity-70 hover:opacity-100 rounded-sm focus:outline-none focus:ring-2 focus:ring-ring ring-offset-background focus:ring-offset-2 data-[state=open]:text-muted-foreground transition-opacity disabled:pointer-events-none\", children: _jsx(X, { className: \"w-4 h-4\" }) }) })), _jsx(ModalContextProvider, { children: children })] })] }));\n}\nexport const VModalTitle = ({ children, show = true, className, ...props }) => {\n if (!show) {\n return (_jsx(VisuallyHidden, { children: _jsx(DialogTitle, { children: children }) }));\n }\n return (_jsx(DialogTitle, { className: cn(\"text-lg font-semibold leading-6 tracking-tight py-2\", className), ...props, children: children }));\n};\nexport const VModalBody = ({ children, className, ...props }) => {\n return (_jsx(\"div\", { className: cn(\"text-sm max-h-[80vh] overflow-y-auto\", className), ...props, children: children }));\n};\nexport const VModalFooter = ({ align = \"right\", children, className, ...props }) => {\n const alignClass = {\n left: \"justify-start\",\n center: \"justify-center\",\n right: \"justify-end\",\n };\n return (_jsx(\"div\", { className: cn(\"w-full flex py-3 sm:py-2 sm:flex sm:flex-row-reverse sm:flex-row sm:justify-end sm:space-x-2\", alignClass[align], className), ...props, children: children }));\n};\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn(\"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className), ...props })));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\nconst DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsx(DialogPrimitive.Content, { ref: ref, autoFocus: false, onOpenAutoFocus: (event) => {\n event.preventDefault();\n }, className: cn(\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-2 border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\", className), ...props, children: children })] })));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\nconst DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn(\"text-sm text-muted-foreground\", className), ...props })));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\nconst DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn(\"text-lg font-semibold leading-none tracking-tight\", className), ...props })));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\nexport { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogTitle, DialogDescription, };\n//# sourceMappingURL=dialog.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../libs/utils\";\nimport { X } from \"lucide-react\";\nconst variants = cva(\"\", {\n variants: {\n size: {\n xs: \"rounded py-1 text-xs rounded-xs\",\n sm: \"rounded text-xs rounded-sm\",\n md: \"rounded-md py-2 text-sm\",\n lg: \"rounded-md text-base\",\n xl: \"rounded-md py-2.5 text-lg\",\n },\n variant: {\n default: \"flex w-full rounded-md border border-input bg-background ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 ring-inset focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n unstyled: \"block m-0 p-0 w-full border-0 focus:outline-hidden focus:ring-0 bg-transparent\",\n noPadding: \"block rounded-md border-0 bg-background shadow-2xs ring-1 ring-inset ring-ring placeholder:text-muted-foreground focus:ring-2 focus:ring-inset focus:ring-ring ring-offset-background\",\n legacy: \"py-1.5 block rounded-md border-0 bg-background shadow-2xs ring-1 ring-inset ring-ring placeholder:text-muted-foreground focus:ring-2 focus:ring-inset focus:ring-ring ring-offset-background\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\nconst Input = React.forwardRef(({ className, type, size = \"md\", variant = \"default\", clearable = true, onChange, value, ...props }, ref) => {\n const _onClear = () => {\n onChange && onChange('');\n };\n const _onChange = (ev) => {\n onChange && onChange(ev.target.value);\n };\n return (_jsxs(\"div\", { className: \"w-full\", style: { position: 'relative', display: 'inline-block' }, children: [_jsx(\"input\", { type: type, className: cn(variants({ size, variant }), className, clearable && value ? \"pr-6\" : \"\"), ref: ref, value: value == null ? '' : value, onChange: _onChange, ...props }), clearable && value && !props.readOnly && !props.disabled && (_jsx(\"button\", { onClick: _onClear, className: `absolute ${type !== 'number' ? 'right-0' : 'right-7'} top-1/2 -translate-y-1/2 size-7 text-muted-foreground hover:text-destructive cursor-pointer flex items-center justify-center`, type: \"button\", \"aria-label\": \"Clear input\", children: _jsx(X, { size: 16 }) }))] }));\n});\nInput.displayName = \"Input\";\nexport { Input, };\n//# sourceMappingURL=input.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../libs/utils\";\nconst Separator = React.forwardRef(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (_jsx(SeparatorPrimitive.Root, { ref: ref, decorative: decorative, orientation: orientation, className: cn(\"shrink-0 bg-border\", orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\", className), ...props })));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\nexport { Separator };\n//# sourceMappingURL=separator.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../libs/utils\";\nimport { useIsInModal } from \"./dialog\";\nconst PopoverContext = React.createContext(null);\nconst Popover = ({ hover = false, click = false, children, _open, onOpenChange }) => {\n const [open, setOpen] = React.useState(_open || false);\n const insideModal = useIsInModal();\n const handleOpenChange = (open) => {\n setOpen(open);\n if (onOpenChange) {\n onOpenChange(open);\n }\n };\n return (_jsx(PopoverContext.Provider, { value: { open, setOpen, hover, click }, children: _jsx(PopoverPrimitive.Root, { open: open, onOpenChange: handleOpenChange, modal: insideModal, children: children }) }));\n};\nfunction handleHover(hover = false, setOpen = () => { }, type) {\n if (hover) {\n setOpen(type === \"enter\");\n }\n}\nconst PopoverTrigger = React.forwardRef(({ children, ...props }, ref) => {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"PopoverTrigger must be used within a Popover\");\n }\n const { setOpen, hover, click } = context;\n return (_jsx(PopoverPrimitive.Trigger, { ref: ref, asChild: true, onMouseEnter: () => handleHover(hover, setOpen, \"enter\"), onMouseLeave: () => handleHover(hover, setOpen, \"leave\"), onClick: () => {\n if (click)\n setOpen((prev) => !prev);\n }, ...props, children: children }));\n});\nPopoverTrigger.displayName = PopoverPrimitive.Trigger.displayName;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\nconst PopoverContent = React.forwardRef(({ className, align = \"center\", side = \"bottom\", ...props }, ref) => {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"PopoverContent must be used within a Popover\");\n }\n const { setOpen, hover } = context;\n return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { ref: ref, align: align, side: side, onMouseEnter: () => handleHover(hover, setOpen, \"enter\"), onMouseLeave: () => handleHover(hover, setOpen, \"leave\"), \n // onClick={() => {setOpen(false)}}\n className: cn(\"z-50 w-72 rounded-md border-popover bg-popover text-popover-foreground ring-1 ring-gray-200 dark:ring-slate-700 shadow-md focus:outline-none animate-in\", \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className), ...props }) }));\n});\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\nconst PopoverClose = PopoverPrimitive.Close;\nPopoverClose.displayName = PopoverPrimitive.Close.displayName;\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverClose };\n//# sourceMappingURL=popover.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\nconst Command = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive, { ref: ref, className: cn(\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\", className), ...props })));\nCommand.displayName = CommandPrimitive.displayName;\nconst CommandDialog = ({ children, ...props }) => {\n return (_jsx(Dialog, { ...props, children: _jsx(DialogContent, { className: \"shadow-lg p-0 overflow-hidden\", children: _jsx(Command, { className: \"[&_[cmdk-group]]:px-2 [&_[cmdk-item]]:px-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-item]_svg]:w-5 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\", children: children }) }) }));\n};\nconst CommandInput = React.forwardRef(({ className, ...props }, ref) => (_jsxs(\"div\", { className: \"flex items-center px-3 border-b\", \"cmdk-input-wrapper\": \"\", children: [_jsx(Search, { className: \"opacity-50 size-4 shrink-0\" }), _jsx(CommandPrimitive.Input, { ref: ref, className: cn(\"focus:ring-0\", \"border-0 flex h-8 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\", className), ...props })] })));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\nconst CommandList = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.List, { ref: ref, className: cn(\"max-h-[200px] overflow-y-auto overflow-x-hidden\", className), ...props })));\nCommandList.displayName = CommandPrimitive.List.displayName;\nconst CommandEmpty = React.forwardRef((props, ref) => (_jsx(CommandPrimitive.Empty, { ref: ref, className: \"py-2 text-sm text-center\", ...props })));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\nconst CommandGroup = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Group, { ref: ref, className: cn(\"overflow-y-auto overflow-x-hidden p-1 text-foreground\", \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\", className), ...props })));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\nconst CommandSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Separator, { ref: ref, className: cn(\"-mx-1 h-px bg-border\", className), ...props })));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\nconst CommandItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Item, { ref: ref, className: cn(\"hover:bg-muted cursor-pointer relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\", className), ...props })));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\nconst CommandShortcut = ({ className, ...props }) => {\n return (_jsx(\"span\", { className: cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className), ...props }));\n};\nCommandShortcut.displayName = \"CommandShortcut\";\nexport { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };\n//# sourceMappingURL=command.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { isEqual } from 'lodash-es';\nimport { Check, ChevronsUpDown, SearchIcon, SquarePlus, X } from 'lucide-react';\nimport { useState, useEffect, useRef } from 'react';\nimport { Popover, PopoverContent, PopoverTrigger, PopoverClose } from './popover';\nimport { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from './command';\nimport { Input } from './input';\nexport function VSelectBox({ options, optionLabel, value, onChange, addNew, addNewLabel, disabled, filterBy, label, placeholder, className, popupClass, isClearable, border = true, multiple = false, by }) {\n const triggerRef = useRef(null);\n const [open, setOpen] = useState(false);\n const [width, setWidth] = useState(0);\n const [filterValue, setFilterValue] = useState('');\n useEffect(() => {\n const element = triggerRef.current;\n if (!element) {\n return;\n }\n const updateWidth = () => {\n const contentWidth = element.getBoundingClientRect().width;\n setWidth(contentWidth);\n };\n const resizeObserver = new ResizeObserver(() => {\n updateWidth();\n });\n updateWidth();\n resizeObserver.observe(element);\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n const handleTriggerClick = (e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n setOpen(!open);\n };\n const _onClick = (opt) => {\n if (multiple) {\n const currentValues = Array.isArray(value) ? value : [];\n const isSelected = isOptionSelected(opt, currentValues);\n if (isSelected) {\n // Remove from selection\n const newValues = currentValues.filter(v => !isOptionsEqual(v, opt));\n onChange(newValues);\n }\n else {\n // Add to selection\n onChange([...currentValues, opt]);\n }\n // Don't close the popover in multiple mode\n }\n else {\n setOpen(false);\n onChange(opt);\n }\n };\n // Helper function to check if an option is selected\n const isOptionSelected = (option, selectedValues) => {\n if (!selectedValues || selectedValues.length === 0)\n return false;\n return selectedValues.some(v => isOptionsEqual(v, option));\n };\n // Helper function to compare options for equality\n const isOptionsEqual = (a, b) => {\n // Handle null/undefined values\n if (a == null || b == null) {\n return a === b;\n }\n if (typeof by === 'string') {\n return a[by] === b[by];\n }\n else if (typeof by === 'function') {\n return by(a, b);\n }\n else {\n return isEqual(a, b);\n }\n };\n let filteredOptions = options || [];\n function getFilterByFn(filterBy) {\n if (!filterBy) {\n return (o) => String(o).toLowerCase();\n }\n else if (typeof filterBy === 'string') {\n return (o) => String(o[filterBy]).toLowerCase();\n }\n else {\n return filterBy;\n }\n }\n const filterLc = filterValue.toLowerCase();\n const filterFn = getFilterByFn(filterBy);\n filteredOptions = filteredOptions.filter(o => filterFn(o).includes(filterLc));\n const renderSingleValue = () => {\n if (!value || (Array.isArray(value) && value.length === 0)) {\n return _jsx(\"span\", { className: \"text-muted\", children: placeholder });\n }\n const singleValue = Array.isArray(value) ? value[0] : value;\n return optionLabel ? optionLabel(singleValue) : singleValue;\n };\n const renderMultipleValue = () => {\n const arrayValue = Array.isArray(value) ? value : (value ? [value] : []);\n if (arrayValue.length === 0) {\n return _jsx(\"span\", { className: \"text-muted\", children: placeholder });\n }\n if (arrayValue.length === 1) {\n return optionLabel ? optionLabel(arrayValue[0]) : arrayValue[0];\n }\n return (_jsxs(\"div\", { className: \"flex flex-wrap gap-1\", children: [arrayValue.slice(0, 1).map((item, index) => (_jsx(\"span\", { className: \"inline-flex items-center gap-1 px-2 py-1 text-xs bg-muted rounded\", children: optionLabel ? optionLabel(item) : item }, index))), arrayValue.length > 1 && (_jsxs(\"span\", { className: \"inline-flex items-center px-2 py-1 text-xs bg-muted rounded\", children: [\"+\", arrayValue.length - 1, \" more\"] }))] }));\n };\n return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(\"div\", { ref: triggerRef, onClick: handleTriggerClick, className: clsx(className, border && 'border border-border', 'flex flex-row gap-2 items-center justify-between p-2 rounded-md group relative', !disabled && \"cursor-pointer hover:bg-muted\"), children: [_jsxs(\"div\", { className: clsx(\"flex flex-col w-full rounded-md text-sm items-center justify-center truncate\", !disabled && \"\", isClearable && value && (Array.isArray(value) ? value.length > 0 : true) && \"pr-6\"), children: [label && _jsx(\"div\", { className: 'w-full text-left text-xs font-semibold', children: label }), _jsx(\"div\", { className: clsx('w-full text-left', !disabled && ''), children: multiple ? renderMultipleValue() : renderSingleValue() })] }), _jsxs(\"div\", { className: \"flex items-center gap-1\", children: [isClearable && value && (Array.isArray(value) ? value.length > 0 : true) && (_jsx(\"div\", { onClick: (e) => {\n e.stopPropagation();\n if (multiple) {\n onChange([]);\n }\n else {\n onChange(undefined);\n }\n }, className: \"cursor-pointer hover:bg-muted/20 rounded p-1\", children: _jsx(X, { className: \"size-4\" }) })), !disabled && (_jsx(ChevronsUpDown, { className: \"size-4 opacity-50\" }))] })] }) }), _jsxs(PopoverContent, { style: { width: `${width}px`, zIndex: 1000000 }, className: clsx(\"min-w-[8rem] w-64 bg-popover p-1 border shadow\", \"divide-y divide-border\", popupClass), children: [filterBy && (_jsxs(\"div\", { className: 'flex justify-start items-center mb-1', children: [_jsx(\"div\", { className: 'mx-2', children: _jsx(SearchIcon, { className: \"size-4\" }) }), _jsx(Input, { variant: 'unstyled', value: filterValue, onChange: setFilterValue, className: \"w-full p-1 rounded-md\", placeholder: \"Search...\" })] })), _jsx(Command, { className: \"overflow-hidden\", children: _jsxs(CommandList, { className: \"max-h-[200px] overflow-y-auto\", children: [_jsx(CommandEmpty, { children: \"No result found.\" }), _jsx(CommandGroup, { className: \"overflow-visible\", children: filteredOptions?.map((opt, index) => {\n const isSelected = multiple\n ? isOptionSelected(opt, Array.isArray(value) ? value : [])\n : value != null ? isOptionsEqual(value, opt) : false;\n return (_jsx(CommandItem, { onSelect: () => _onClick(opt), className: \"w-full\", children: multiple ? (_jsxs(\"div\", { className: 'w-full flex justify-between items-center cursor-pointer', children: [_jsx(\"div\", { className: 'w-full truncate text-left', children: optionLabel ? optionLabel(opt) : opt }), isSelected && _jsx(Check, { className: \"size-4\" })] })) : (_jsxs(PopoverClose, { className: 'w-full flex justify-between items-center', children: [_jsx(\"div\", { className: 'w-full truncate text-left', children: optionLabel ? optionLabel(opt) : opt }), isSelected && _jsx(Check, { className: \"size-4\" })] })) }, index));\n }) })] }) }), addNew && (_jsx(\"div\", { className: 'p-1', children: _jsxs(\"a\", { onClick: addNew, className: clsx('gap-x-2 px-2 py-1.5 truncate group flex rounded-md items-center text-sm cursor-pointer hover:bg-accent'), children: [_jsx(SquarePlus, { size: 16, strokeWidth: 1.25, absoluteStrokeWidth: true }), addNewLabel] }) }))] })] }));\n}\n//# sourceMappingURL=selectBox.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../libs/utils\";\nimport { VSelectBox } from \"./selectBox\";\nconst TabsContext = React.createContext({\n size: undefined,\n tabs: undefined,\n current: undefined,\n setTab: undefined,\n responsive: false\n});\nconst VTabs = ({ tabs, defaultValue, current, className, fullWidth, children, onTabChange, responsive = false }) => {\n const currentValue = typeof current === 'function' ? current() : current || defaultValue;\n const [value, setValue] = React.useState(currentValue);\n React.useEffect(() => {\n if (currentValue) {\n setValue(currentValue);\n }\n }, [currentValue]);\n const handleValueChange = (newValue) => {\n setValue(newValue);\n if (onTabChange) {\n onTabChange(newValue);\n }\n };\n const setTab = React.useCallback((tabName) => {\n handleValueChange(tabName);\n }, [handleValueChange]);\n return (_jsx(TabsContext.Provider, { value: { tabs, size: fullWidth ? tabs.length : 0, current: value, setTab, responsive: responsive }, children: _jsx(TabsPrimitive.Root, { defaultValue: tabs[0]?.name, value: value, onValueChange: handleValueChange, className: className, children: children }) }));\n};\nconst VTabsBar = ({ className }) => {\n const { tabs, size, current, setTab, responsive } = React.useContext(TabsContext);\n const fullWidth = size !== 0;\n const handleTabChange = React.useCallback((tabName) => {\n if (!tabs || !setTab)\n return;\n const tab = tabs.find(t => t.name === tabName);\n if (tab?.href) {\n window.history.pushState(null, '', tab.href);\n }\n setTab(tabName);\n }, [tabs, setTab]);\n if (!tabs || !setTab) {\n console.warn(\"TabsBar: No tabs provided or setTab not available\");\n return null;\n }\n return (_jsxs(_Fragment, { children: [responsive && (_jsx(\"div\", { className: \"px-2 block lg:hidden\", children: _jsx(VSelectBox, { label: \"Tab\", className: (className), options: tabs, optionLabel: (tab) => typeof tab.label === 'string' ? tab.label : String(tab.label), value: tabs.find(tab => tab.name === current), onChange: (tab) => {\n handleTabChange(tab.name);\n } }) })), _jsx(TabsList, { size: size, className: cn((fullWidth ? \"w-full\" : \"\"), className, (responsive ? \"hidden lg:flex\" : \"\")), children: tabs.map((tab) => (_jsx(TabsTrigger, { value: tab.name, disabled: tab.disabled, href: tab.href, onClick: () => handleTabChange(tab.name), children: tab.label }, tab.name))) })] }));\n};\nconst VTabsPanel = () => {\n const { tabs } = React.useContext(TabsContext);\n if (!tabs)\n return null;\n return (_jsx(_Fragment, { children: tabs.map((tab) => (_jsx(TabsContent, { value: tab.name, children: tab.content }, tab.name))) }));\n};\nconst TabsList = React.forwardRef(({ className, size, ...props }, ref) => (_jsx(TabsContext.Provider, { value: { size }, children: _jsx(TabsPrimitive.List, { ref: ref, className: cn(\"border-b -mb-px flex space-x-4\", className), ...props }) })));\nTabsList.displayName = TabsPrimitive.List.displayName;\nconst TabsTrigger = React.forwardRef(({ className, href, ...props }, ref) => {\n const { size } = React.useContext(TabsContext);\n const handleClick = React.useCallback((event) => {\n if (href) {\n event.preventDefault();\n window.history.pushState(null, '', href);\n }\n if (props.onClick) {\n props.onClick(event);\n }\n }, [href, props.onClick]);\n return (_jsx(TabsPrimitive.Trigger, { ref: ref, className: cn(\"border-b-2 px-2 py-1.5 text-sm font-medium whitespace-nowrap cursor-pointer\", \"border-transparent text-muted-foreground hover:border-border hover:text-foreground\", \"data-[state=active]:border-primary data-[state=active]:text-primary\", \"disabled:pointer-events-none disabled:opacity-50\", className, size ? `w-1/${size}` : \"\"), onClick: handleClick, ...props }));\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\nconst TabsContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(TabsPrimitive.Content, { ref: ref, className: cn(\"focus-visible:outline-none\", className), ...props })));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\nexport { VTabs, VTabsBar, VTabsPanel, TabsList, TabsTrigger, TabsContent };\n//# sourceMappingURL=tabs.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../libs/utils\";\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipContent = React.forwardRef(({ className, sideOffset = 4, side = \"top\", ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, side: side, style: { zIndex: 100 }, className: cn(\"max-w-[90vw]\", \"z-50 overflow-hidden rounded-md bg-tooltips border px-3 py-1.5 text-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\", className), ...props }) })));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\nexport function VTooltip({ description, children, size = 'sm', placement = 'top', className, asChild }) {\n return (_jsx(TooltipProvider, { delayDuration: 0, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { className: \"cursor-pointer\", asChild: asChild, children: children }), _jsx(TooltipContent, { side: placement, className: `px-3 py-1.5 max-w-${size} text-${size} px-3 ${className}`, children: description })] }) }));\n}\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n//# sourceMappingURL=tooltip.js.map","\"use client\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../libs/utils\";\nconst labelVariants = cva(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\");\nconst Label = React.forwardRef(({ className, required, ...props }, ref) => (_jsxs(LabelPrimitive.Root, { ref: ref, className: cn(labelVariants(), className), ...props, children: [props.children, required && _jsx(\"span\", { className: \"text-destructive-foreground ml-1\", children: \"*\" })] })));\nLabel.displayName = LabelPrimitive.Root.displayName;\nexport { Label };\n//# sourceMappingURL=label.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nexport function Breadcrumbs({ children, maxItems = 3, className, separator }) {\n if (children.length <= maxItems) {\n return (_jsx(Breadcrumb, { className: cn(\"w-full\", className), children: _jsx(BreadcrumbList, { children: children.map((item, index) => (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: item.href ? (_jsx(BreadcrumbLink, { href: item.href, children: item.label })) : (_jsx(BreadcrumbPage, { children: item.label })) }), index < children.length - 1 &&\n _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) })] }, index))) }) }));\n }\n const firstItem = children[0];\n const lastItems = children.slice(-(maxItems - 2));\n return (_jsx(Breadcrumb, { className: cn(\"w-full\", className), children: _jsxs(BreadcrumbList, { children: [_jsx(BreadcrumbItem, { children: firstItem.href ? (_jsx(BreadcrumbLink, { href: firstItem.href, children: firstItem.label })) : (_jsx(BreadcrumbPage, { children: firstItem.label })) }), _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) }), _jsx(BreadcrumbItem, { children: _jsx(BreadcrumbEllipsis, {}) }), _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) }), lastItems.map((item, index) => (_jsxs(React.Fragment, { children: [_jsx(BreadcrumbItem, { children: item.href ? (_jsx(BreadcrumbLink, { href: item.href, children: item.label })) : (_jsx(BreadcrumbPage, { children: item.label })) }), index < lastItems.length - 1 && _jsx(BreadcrumbSeparator, { children: separator ?? _jsx(ChevronRight, {}) })] }, index)))] }) }));\n}\nconst Breadcrumb = React.forwardRef(({ ...props }, ref) => _jsx(\"nav\", { ref: ref, \"aria-label\": \"breadcrumb\", ...props }));\nBreadcrumb.displayName = \"Breadcrumb\";\nconst BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"ol\", { ref: ref, className: cn(\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\", className), ...props })));\nBreadcrumbList.displayName = \"BreadcrumbList\";\nconst BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"li\", { ref: ref, className: cn(\"inline-flex items-center gap-1.5\", className), ...props })));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\nconst BreadcrumbLink = React.forwardRef(({ asChild, className, ...props }, ref) => {\n return (_jsx(\"a\", { ref: ref, className: cn(\"transition-colors hover:text-foreground\", className), ...props }));\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\nconst BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => (_jsx(\"span\", { ref: ref, role: \"link\", \"aria-disabled\": \"true\", \"aria-current\": \"page\", className: cn(\"font-normal text-foreground\", className), ...props })));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\nconst BreadcrumbSeparator = ({ children, className, ...props }) => (_jsx(\"li\", { role: \"presentation\", \"aria-hidden\": \"true\", className: cn(\"[&>svg]:w-3.5 [&>svg]:h-3.5\", className), ...props, children: children ?? _jsx(ChevronRight, {}) }));\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\nconst BreadcrumbEllipsis = ({ className, ...props }) => (_jsxs(\"span\", { role: \"presentation\", \"aria-hidden\": \"true\", className: cn(\"flex h-9 w-9 items-center justify-center\", className), ...props, children: [_jsx(MoreHorizontal, { className: \"h-4 w-4\" }), _jsx(\"span\", { className: \"sr-only\", children: \"More\" })] }));\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n//# sourceMappingURL=breadcrumb.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../../libs/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nexport const AnimateChangeInHeight = ({ children, className, }) => {\n const containerRef = useRef(null);\n const [height, setHeight] = useState(\"auto\");\n useEffect(() => {\n if (containerRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n // We only have one entry, so we can use entries[0].\n const observedHeight = entries[0].contentRect.height;\n setHeight(observedHeight);\n });\n resizeObserver.observe(containerRef.current);\n return () => {\n // Cleanup the observer when the component is unmounted\n resizeObserver.disconnect();\n };\n }\n }, []);\n return (_jsx(\"div\", { className: cn(className, \"overflow-hidden transition-all duration-100 ease-in\"), style: { height }, children: _jsx(\"div\", { ref: containerRef, children: children }) }));\n};\n//# sourceMappingURL=animateChangeInHeight.js.map","\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../libs/utils\";\nimport { buttonVariants } from \"./button\";\nfunction Calendar({ className, classNames, showOutsideDays = true, size = \"md\", ...props }) {\n const daySize = {\n sm: \"size-6\",\n md: \"size-8\",\n lg: \"size-10\",\n }[size];\n return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, className: cn(\"\", className), classNames: {\n months: \"flex w-full flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0 flex-1\",\n month: \"space-y-4 w-full flex flex-col\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(buttonVariants({ variant: \"outline\" }), \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full h-full border-collapse space-y-1\",\n head_row: \"\",\n head_cell: \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"w-full mt-2\",\n cell: cn(\"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\", props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"),\n day: cn(buttonVariants({ variant: \"ghost\" }), daySize, \"flex items-center justify-center\", \"p-0 font-normal aria-selected:opacity-100\"),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected: \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside: \"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle: \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }, components: {\n IconLeft: ({ className, ...props }) => (_jsx(ChevronLeft, { className: cn(\"h-4 w-4\", className), ...props })),\n IconRight: ({ className, ...props }) => (_jsx(ChevronRight, { className: cn(\"h-4 w-4\", className), ...props })),\n }, ...props }));\n}\nCalendar.displayName = \"Calendar\";\nexport { Calendar };\n//# sourceMappingURL=calendar.js.map","\"use client\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../libs/utils\";\nconst Checkbox = React.forwardRef(({ className, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: cn(\"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: cn(\"flex items-center justify-center text-current\"), children: _jsx(Check, { className: \"h-4 w-4\" }) }) })));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\nexport { Checkbox };\n//# sourceMappingURL=checkbox.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useEffect, useState } from 'react';\nexport function DynamicLabel({ value, labelRenderer, fallbackLabel }) {\n const [label, setLabel] = useState(fallbackLabel || value);\n const [isLoading, setIsLoading] = useState(false);\n useEffect(() => {\n if (!labelRenderer) {\n setLabel(fallbackLabel || value);\n return;\n }\n const renderLabel = async () => {\n setIsLoading(true);\n try {\n const result = labelRenderer(value);\n if (result instanceof Promise) {\n const resolvedLabel = await result;\n setLabel(resolvedLabel);\n }\n else {\n setLabel(result);\n }\n }\n catch (error) {\n console.error('Error rendering label:', error);\n setLabel(fallbackLabel || value);\n }\n finally {\n setIsLoading(false);\n }\n };\n renderLabel();\n }, [value, labelRenderer, fallbackLabel]);\n if (isLoading) {\n return _jsx(\"span\", { className: \"text-muted-foreground\", children: \"Loading...\" });\n }\n return _jsx(_Fragment, { children: label });\n}\n//# sourceMappingURL=DynamicLabel.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useRef, useState } from \"react\";\n// import { AnimatePresence, motion } from \"motion/react\";\nimport dayjs from \"dayjs\";\nimport { Calendar } from \"../calendar\";\nimport { Button } from \"../button\";\nimport { Checkbox } from \"../checkbox\";\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator } from \"../command\";\nimport { Input } from \"../input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { AnimateChangeInHeight } from \"./animateChangeInHeight\";\nimport { DynamicLabel } from \"./DynamicLabel\";\nexport const SelectionCombobox = ({ filterType, filterValues, setFilterValues, options, labelRenderer, }) => {\n const [open, setOpen] = useState(false);\n const [commandInput, setCommandInput] = useState(\"\");\n const commandInputRef = useRef(null);\n const nonSelectedFilterValues = options?.filter((option) => !filterValues.some(filter => filter.value === option.value));\n return (_jsxs(Popover, { _open: open, onOpenChange: (open) => {\n setOpen(open);\n if (!open) {\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n }\n }, children: [_jsx(PopoverTrigger, { className: \"rounded-none p-1 h-8 bg-muted hover:bg-muted/50 transition text-muted hover:text-primary shrink-0\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: filterValues?.length === 1 ? ((() => {\n const option = filterValues[0];\n return (_jsx(DynamicLabel, { value: option.value || '', labelRenderer: labelRenderer, fallbackLabel: option.label }));\n })()) : (`${filterValues?.length} selected`) }) }), _jsx(PopoverContent, { className: \"w-[300px] p-0\", children: _jsx(AnimateChangeInHeight, { children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: filterType, className: \"h-9\", value: commandInput, onInputCapture: (e) => {\n setCommandInput(e.currentTarget.value);\n }, ref: commandInputRef }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: \"No results found.\" }), _jsx(CommandGroup, { children: filterValues.map((value) => {\n return (_jsxs(CommandItem, { className: \"group flex gap-2 items-center\", onSelect: () => {\n setFilterValues(filterValues.filter((v) => v.value !== value.value));\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n setOpen(false);\n }, children: [_jsx(Checkbox, { checked: true }), _jsx(DynamicLabel, { value: value.value || '', labelRenderer: labelRenderer, fallbackLabel: value.label })] }, value.value));\n }) }), nonSelectedFilterValues?.length > 0 && (_jsxs(_Fragment, { children: [_jsx(CommandSeparator, {}), _jsx(CommandGroup, { children: nonSelectedFilterValues\n .filter(option => String(option.label || option.value).toLowerCase().includes(commandInput.toLowerCase()))\n .map((filter) => (_jsxs(CommandItem, { className: \"group flex gap-2 items-center\", value: String(filter.label || filter.value), onSelect: () => {\n setFilterValues([...filterValues, {\n value: filter.value,\n label: filter.label\n }]);\n setTimeout(() => {\n setCommandInput(\"\");\n }, 200);\n setOpen(false);\n }, children: [_jsx(Checkbox, { checked: false, className: \"opacity-0 group-data-[selected=true]:opacity-100\" }), _jsx(\"span\", { className: \"text-muted\", children: _jsx(DynamicLabel, { value: filter.value || '', labelRenderer: filter.labelRenderer || labelRenderer, fallbackLabel: filter.label }) })] }, filter.value))) })] }))] })] }) }) })] }));\n};\nexport const DateCombobox = ({ filterValues, setFilterValues, }) => {\n const [open, setOpen] = useState(false);\n const selectedDate = filterValues[0] ? new Date(filterValues[0]) : undefined;\n return (_jsxs(Popover, { _open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { className: \"rounded-none p-1 h-8 bg-muted hover:bg-muted/50 text-muted hover:text-primary shrink-0 transition\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: selectedDate ? (dayjs(selectedDate).format(\"MMM D, YYYY\")) : (_jsx(\"span\", { children: \"Pick a date\" })) }) }), _jsx(PopoverContent, { className: \"w-auto p-0\", align: \"start\", children: _jsx(Calendar, { mode: \"single\", className: \"p-0\", defaultMonth: selectedDate, selected: selectedDate, onSelect: (date) => {\n if (date) {\n setFilterValues([dayjs(date).format(\"YYYY-MM-DD\")]);\n setOpen(false);\n }\n } }) })] }));\n};\nexport const TextCombobox = ({ filterType, filterValue, setFilterValue, }) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(filterValue);\n const handleKeyDown = (event) => {\n if (event.key === \"Enter\") {\n setFilterValue(inputValue);\n setOpen(false);\n }\n };\n return (_jsxs(Popover, { _open: open, onOpenChange: (open) => {\n setOpen(open);\n if (!open && inputValue !== filterValue) {\n setInputValue(filterValue);\n }\n }, children: [_jsx(PopoverTrigger, { className: \"rounded-none p-1 h-8 bg-muted hover:bg-muted/50 text-muted hover:text-primary shrink-0 transition\", children: _jsx(\"div\", { className: \"flex gap-1.5 items-center\", children: filterValue || \"Enter text...\" }) }), _jsx(PopoverContent, { className: \"w-[300px] p-3\", children: _jsxs(\"div\", { className: \"flex flex-col gap-1\", children: [_jsx(\"div\", { className: \"flex items-center p-1.5 text-xs text-muted\", children: _jsx(\"span\", { children: filterType }) }), _jsx(Input, { autoFocus: true, type: \"text\", size: \"sm\", value: inputValue, onChange: setInputValue, onKeyDown: handleKeyDown, placeholder: \"Enter text...\" }), _jsx(Button, { size: \"sm\", variant: \"outline\", onClick: () => {\n setFilterValue(inputValue);\n setOpen(false);\n }, children: \"Apply\" })] }) })] }));\n};\n//# sourceMappingURL=comboBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { DateCombobox, SelectionCombobox, TextCombobox } from \"./comboBox\";\nimport dayjs from \"dayjs\";\nfunction generateComboboxOptions(filter, setFilters, filterGroups) {\n switch (filter.type) {\n case \"date\":\n return (_jsx(DateCombobox, { filterValues: filter.value.map(v => v.value || ''), setFilterValues: (filterValues) => {\n setFilters((prev) => prev.map((f) => f === filter ? {\n ...f,\n value: filterValues.length > 0 ? [{\n value: filterValues[0],\n label: dayjs(filterValues[0]).format(\"LLL dd, y\"),\n }] : []\n } : f));\n } }));\n case \"text\":\n return (_jsx(TextCombobox, { filterType: filter.placeholder || filter.name, filterValue: filter.value[0]?.value || \"\", setFilterValue: (textValue) => {\n setFilters((prev) => prev.map((f) => f === filter\n ? {\n ...f,\n value: [\n {\n value: textValue,\n label: textValue,\n },\n ],\n }\n : f));\n } }));\n case 'select':\n default: {\n const filterGroup = filterGroups.find(group => group.name === filter.name);\n return (_jsx(SelectionCombobox, { filterType: filter.placeholder || filter.name, filterValues: filter.value, setFilterValues: (filterValues) => {\n setFilters((prev) => prev.map((f) => f === filter\n ? { ...f, value: filterValues }\n : f));\n }, options: filterGroup?.options || [], labelRenderer: filterGroup?.labelRenderer }));\n }\n }\n}\nexport default function Filters({ filters, setFilters, filterGroups, }) {\n return (_jsx(\"div\", { className: \"flex gap-2 flex-wrap justify-start\", children: filters\n .filter((filter) => filter.value?.length > 0)\n .map((filter) => (_jsxs(\"div\", { className: \"flex gap-[1px] items-center text-sm\", children: [_jsx(\"div\", { className: \"flex gap-1.5 shrink-0 rounded-l bg-muted p-1.5 h-8 items-center\", children: filter.placeholder || filter.name }), generateComboboxOptions(filter, setFilters, filterGroups), _jsx(Button, { variant: \"ghost\", size: \"icon\", onClick: () => {\n setFilters((prev) => prev.filter((f) => f !== filter));\n }, className: \"bg-muted rounded-l-none rounded-r-sm size-8 hover:text-primary hover:bg-muted/50 transition shrink-0\", children: _jsx(X, { className: \"size-6\" }) })] }, filter.name + '-' + (filter.type == 'date' ? 'date' : filter.value.map(v => v.value).join(','))))) }));\n}\n//# sourceMappingURL=filters.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Button, Input } from \"../index\";\nexport default function TextFilter({ selectedView, textValue, setTextValue, setFilters, handleClose, filterGroups, }) {\n const handleTextFilterAdd = () => {\n setFilters((prev) => {\n return [\n ...prev,\n {\n name: selectedView || \"\",\n placeholder: filterGroups.find(group => group.name === selectedView)?.placeholder,\n value: [{ value: textValue, label: textValue }],\n type: \"text\",\n }\n ];\n });\n handleClose();\n };\n return (_jsxs(\"div\", { className: \"p-2 flex flex-col gap-1\", children: [_jsx(\"div\", { className: \"flex items-center p-1.5 text-xs text-muted\", children: _jsx(\"span\", { children: filterGroups.find(group => group.name === selectedView)?.placeholder }) }), _jsx(Input, { autoFocus: true, type: \"text\", size: \"sm\", value: textValue, onChange: setTextValue, onKeyDown: (e) => e.key === \"Enter\" && handleTextFilterAdd(), placeholder: \"Enter text...\" }), _jsx(Button, { size: \"sm\", variant: \"outline\", onClick: handleTextFilterAdd, disabled: !textValue.trim(), children: \"Apply\" })] }));\n}\n//# sourceMappingURL=textFilter.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport dayjs from \"dayjs\";\nimport { Calendar } from \"../calendar\";\nexport default function DateFilter({ selectedView, selectedDate, setSelectedDate, setFilters, filters, handleClose, filterGroups, }) {\n const handleDateSelect = (date) => {\n setSelectedDate(date);\n if (date) {\n const selectedGroup = filterGroups.find(g => g.name === selectedView);\n // Set date to start of day (00:00)\n const selectedDateStart = new Date(date);\n selectedDateStart.setHours(0, 0, 0, 0);\n setFilters([\n ...filters,\n {\n name: selectedView || \"\",\n placeholder: selectedGroup?.placeholder,\n value: [\n {\n value: selectedDateStart.toISOString(),\n label: dayjs(selectedDateStart).format(\"LLL dd, y\"),\n }\n ],\n type: selectedGroup?.type || \"date\",\n },\n ]);\n handleClose();\n }\n };\n return (_jsx(\"div\", { className: \"p-2\", children: _jsx(Calendar, { mode: \"single\", defaultMonth: selectedDate, selected: selectedDate, onSelect: handleDateSelect, size: \"sm\" }) }));\n}\n//# sourceMappingURL=dateFilter.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { CommandItem, CommandEmpty } from \"../index\";\nimport { DynamicLabel } from \"./DynamicLabel\";\nexport default function SelectFilter({ selectedView, commandInput, setFilters, handleClose, filterGroups, }) {\n const getFilteredOptions = (groupName) => {\n const group = filterGroups.find(g => g.name === groupName);\n if (!group)\n return [];\n let filteredOptions = group.options || [];\n if (!commandInput.trim()) {\n return filteredOptions;\n }\n if (group.filterBy) {\n const filterLc = commandInput.toLowerCase();\n const results = filteredOptions.filter(option => {\n if (option.value === undefined)\n return false;\n const result = group.filterBy(option.value, filterLc);\n return result;\n });\n return results;\n }\n const filterLc = commandInput.toLowerCase();\n return filteredOptions.filter(option => {\n const optionValue = String(option.value || '').toLowerCase();\n return optionValue.includes(filterLc);\n });\n };\n if (!selectedView)\n return null;\n const options = getFilteredOptions(selectedView);\n if (options.length === 0) {\n return _jsx(CommandEmpty, { children: \"No matching options\" });\n }\n const groupTitle = filterGroups.find(group => group.name === selectedView)?.placeholder || filterGroups.find(group => group.name === selectedView)?.name;\n return (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: \"flex items-center p-1.5 text-xs text-muted\", children: _jsx(\"span\", { children: groupTitle }) }), options.map((option) => {\n const selectedGroup = filterGroups.find(g => g.name === selectedView);\n return (_jsx(CommandItem, { className: \"group flex gap-2 items-center w-full hover:bg-muted\", onSelect: () => {\n setFilters((prev) => {\n const existingFilterIndex = prev.findIndex(f => f.name === selectedView);\n // Create filter option with value and label for storage\n const filterOption = {\n value: option.value,\n label: option.label\n };\n if (existingFilterIndex >= 0) {\n const updatedFilters = [...prev];\n updatedFilters[existingFilterIndex] = {\n ...updatedFilters[existingFilterIndex],\n value: [...updatedFilters[existingFilterIndex].value, filterOption]\n };\n return updatedFilters;\n }\n else {\n return [...prev, {\n name: selectedView || \"\",\n placeholder: selectedGroup?.placeholder || \"\",\n value: [filterOption],\n type: selectedGroup?.type || \"select\",\n }];\n }\n });\n handleClose();\n }, children: _jsx(DynamicLabel, { value: option.value || '', labelRenderer: option.labelRenderer || selectedGroup?.labelRenderer, fallbackLabel: option.label }) }, option.value || `option-${Math.random()}`));\n })] }));\n}\n//# sourceMappingURL=selectFilter.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../libs/utils\";\nimport { Button, Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandGroup, CommandItem, CommandEmpty } from \"../index\";\nimport { ListFilter } from \"lucide-react\";\nimport Filters from \"./filters\";\nimport TextFilter from \"./textFilter\";\nimport DateFilter from \"./dateFilter\";\nimport SelectFilter from \"./selectFilter\";\nexport function FilterBar({ filters, setFilters, filterGroups }) {\n const [open, setOpen] = React.useState(false);\n const [selectedView, setSelectedView] = React.useState(null);\n const [commandInput, setCommandInput] = React.useState(\"\");\n const commandInputRef = React.useRef(null);\n const [selectedDate, setSelectedDate] = React.useState();\n const [textValue, setTextValue] = React.useState(\"\");\n const handleSelect = (groupName) => {\n setSelectedView(groupName);\n setCommandInput(\"\");\n commandInputRef.current?.focus();\n };\n const getAvailableFilterGroups = () => {\n let options = filterGroups.map(group => ({\n ...group,\n options: (group.options ?? []).filter(option => !filters.some(filter => {\n if (filter.type === \"date\") {\n return filter.name === group.name;\n }\n return filter.name === group.name &&\n filter.value.some(val => val.value === option.value);\n }))\n })).filter(group => ((group.options ?? []).length > 0) ||\n (group.type === \"date\" && !filters.some(filter => filter.name === group.name)) ||\n (group.type === \"text\" && !filters.some(filter => filter.name === group.name)));\n if (options.length === 0) {\n return _jsx(CommandEmpty, { children: \"No available filters\" });\n }\n return options.map((group, index) => (_jsx(CommandItem, { onSelect: () => handleSelect(group.name), className: \"group flex gap-2 items-center hover:bg-muted\", children: _jsx(\"span\", { children: group.placeholder ?? group.name }) }, index)));\n };\n const handleClose = () => {\n setOpen(false);\n setTimeout(() => {\n setSelectedView(null);\n setCommandInput(\"\");\n setSelectedDate(undefined);\n }, 200);\n };\n const handleOpen = (open) => {\n setOpen(open);\n if (!open) {\n setTimeout(() => {\n setSelectedView(null);\n setCommandInput(\"\");\n setTextValue(\"\");\n }, 200);\n }\n };\n const ButtonClearFilter = () => {\n return (_jsx(\"div\", { className: \"flex gap-2 items-center\", children: _jsx(Button, { variant: \"outline\", size: \"xs\", className: \"transition group\", onClick: () => setFilters([]), children: \"Clear All\" }) }));\n };\n const renderFilterOptions = () => {\n if (!selectedView)\n return null;\n const selectedGroupType = filterGroups.find(g => g.name === selectedView)?.type;\n switch (selectedGroupType) {\n case \"date\":\n return (_jsx(DateFilter, { selectedView: selectedView, selectedDate: selectedDate, setSelectedDate: setSelectedDate, setFilters: setFilters, filters: filters, handleClose: handleClose, filterGroups: filterGroups }));\n case \"text\":\n return (_jsx(TextFilter, { selectedView: selectedView, textValue: textValue, setTextValue: setTextValue, setFilters: setFilters, handleClose: handleClose, filterGroups: filterGroups }));\n default:\n return (_jsx(SelectFilter, { selectedView: selectedView, commandInput: commandInput, setFilters: setFilters, handleClose: handleClose, filterGroups: filterGroups }));\n }\n };\n const url = new URL(window.location.href);\n const searchParams = url.searchParams;\n useEffect(() => {\n try {\n const params = new URLSearchParams(searchParams.toString());\n if (filters.length > 0) {\n // Convert filters to simple format with URL-safe encoding: filterName:value,value;filterName2:value\n const filterString = filters.map(filter => {\n const values = Array.isArray(filter.value)\n ? filter.value.map(item => encodeURIComponent(item.value || '')).join(',')\n : encodeURIComponent(filter.value || '');\n return `${encodeURIComponent(filter.name)}:${values}`;\n }).join(';');\n params.set('filters', filterString);\n }\n else {\n params.delete('filters');\n }\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.replaceState({}, '', newUrl);\n }\n catch (error) {\n console.error(\"Failed to update URL with filters:\", error);\n }\n }, [filters]);\n useEffect(() => {\n const filtersParam = searchParams.get('filters');\n if (filtersParam) {\n try {\n // Parse simple format with URL-safe decoding: filterName:value,value;filterName2:value\n const filterPairs = filtersParam.split(';');\n const parsedFilters = filterPairs.map(pair => {\n const [encodedName, valuesString] = pair.split(':');\n const name = decodeURIComponent(encodedName);\n const values = valuesString.split(',').map(encodedValue => decodeURIComponent(encodedValue));\n const group = filterGroups.find(g => g.name === name);\n console.log(\"group\", group);\n const filterOptions = values.map(value => {\n if (group?.type === 'text') {\n return { value, label: value };\n }\n else {\n // Try to find option with label, or use labelRenderer, or fallback to value\n const matchingOption = group?.options?.find(opt => opt.value === value);\n let label = value;\n if (matchingOption?.label) {\n label = String(matchingOption.label);\n }\n else if (matchingOption?.labelRenderer) {\n label = String(matchingOption.labelRenderer(value));\n }\n else if (group?.labelRenderer) {\n label = String(group.labelRenderer(value));\n }\n return {\n value,\n label\n };\n }\n });\n console.log(\"valuesWithLabels\", filterOptions);\n return {\n name,\n type: group?.type || 'select',\n placeholder: group?.placeholder,\n value: filterOptions\n };\n });\n setFilters(parsedFilters);\n }\n catch (error) {\n console.error(\"Failed to parse filters from URL:\", error);\n }\n }\n }, []);\n return (_jsxs(\"div\", { className: \"flex gap-2 flex-wrap justify-start w-full items-center\", children: [_jsx(\"div\", { className: \"flex gap-2 items-center\", children: _jsxs(Popover, { _open: open, onOpenChange: handleOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: \"ghost\", role: \"combobox\", \"aria-expanded\": open, size: \"md\", className: cn(\"transition group flex gap-1.5\"), children: [_jsx(ListFilter, { className: \"size-4 shrink-0 transition-all text-muted\" }), \"Filter\"] }) }), _jsx(PopoverContent, { className: \"w-[300px] p-0\", align: \"start\", children: _jsxs(Command, { children: [filterGroups.find(group => group.name === selectedView)?.type === \"select\" ? (_jsx(CommandInput, { placeholder: selectedView ? `Filter by ${selectedView}` : \"Filter...\", className: \"h-9 ring-0\", value: commandInput, onValueChange: (value) => {\n setCommandInput(value);\n }, ref: commandInputRef, autoFocus: true })) : null, _jsx(CommandList, { className: \"max-h-[300px] overflow-y-auto\", children: _jsx(CommandGroup, { children: !selectedView ? getAvailableFilterGroups() : renderFilterOptions() }) })] }) })] }) }), _jsx(Filters, { filters: filters, setFilters: setFilters, filterGroups: filterGroups }), filters.filter((filter) => filter.value?.length > 0).length > 0 && _jsx(ButtonClearFilter, {})] }));\n}\n//# sourceMappingURL=filterBar.js.map","export var FilterOperator;\n(function (FilterOperator) {\n FilterOperator[\"IS\"] = \"is\";\n FilterOperator[\"IS_NOT\"] = \"is_not\";\n FilterOperator[\"CONTAINS\"] = \"contains\";\n FilterOperator[\"BEFORE\"] = \"before\";\n FilterOperator[\"AFTER\"] = \"after\";\n FilterOperator[\"IS_ANY_OF\"] = \"is_any_of\";\n})(FilterOperator || (FilterOperator = {}));\n//# sourceMappingURL=types.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../libs/utils\";\nimport { forwardRef } from \"react\";\nexport const Heading = forwardRef(({ className, level = 3, ...props }, ref) => {\n const Component = `h${level}`;\n const styles = {\n h1: \"text-2xl font-medium tracking-tight\",\n h2: \"text-xl font-medium tracking-tight\",\n h3: \"text-lg font-medium\",\n h4: \"text-base font-medium\",\n h5: \"text-sm font-medium\",\n h6: \"text-xs font-medium\",\n };\n return _jsx(Component, { ref: ref, className: cn(styles[`h${level}`], 'mb-2', className), ...props });\n});\nHeading.displayName = \"Heading\";\n//# sourceMappingURL=heading.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { cn } from \"../libs/utils\";\nimport { cva } from \"class-variance-authority\";\nimport { forwardRef } from \"react\";\n// Update the text variants to match the new sizing requirements\nconst textVariants = cva(\"text-foreground\", {\n variants: {\n size: {\n xl: \"text-base md:text-lg leading-relaxed\",\n lg: \"text-base leading-relaxed\",\n default: \"text-sm leading-normal\",\n sm: \"text-sm leading-normal\",\n xs: \"text-xs leading-normal\",\n },\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n },\n },\n defaultVariants: {\n size: \"default\",\n weight: \"normal\",\n },\n});\nexport const Text = forwardRef(({ className, size, weight, ...props }, ref) => {\n return _jsx(\"p\", { ref: ref, className: cn(textVariants({ size, weight, className })), ...props });\n});\nText.displayName = \"Text\";\n//# sourceMappingURL=text.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { TriangleAlert } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { VModal, VModalTitle, VModalFooter } from \"./shadcn\";\nimport { Button } from \"./shadcn/button\";\nexport function ConfirmModal({ title, content, onConfirm, onCancel, isOpen }) {\n const cancelButtonRef = useRef(null);\n return (_jsxs(VModal, { isOpen: isOpen, onClose: onCancel, description: \"Confirm Modal\", children: [_jsxs(\"div\", { className: \"sm:flex sm:items-start p-2\", children: [_jsx(\"div\", { className: \"mx-auto flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\", children: _jsx(TriangleAlert, { className: \"size-6 text-red-600\", \"aria-hidden\": \"true\" }) }), _jsxs(\"div\", { className: \"mt-3 text-center sm:ml-4 sm:mt-0 sm:text-left\", children: [_jsx(VModalTitle, { className: \"leading-6\", show: true, children: title }), _jsx(\"div\", { className: \"mt-2\", children: _jsx(\"div\", { className: \"prose text-sm text-gray-500\", children: content }) })] })] }), _jsxs(VModalFooter, { align: \"right\", children: [_jsx(Button, { variant: \"destructive\", onClick: onConfirm, children: \"Confirm\" }), _jsx(Button, { variant: \"outline\", onClick: onCancel, ref: cancelButtonRef, children: \"Cancel\" })] })] }));\n}\n//# sourceMappingURL=ConfirmModal.js.map","import { createContext, useContext } from \"react\";\nexport function useToast() {\n return useContext(ToastContext);\n}\nconst ToastContext = createContext(() => { });\nexport { ToastContext };\n//# sourceMappingURL=ToastContext.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nconst PORTAL_ID = '--tailwind-portal';\nexport function Portal({ children }) {\n const tempNode = useRef(null);\n const [portalEl, setPortalEl] = useState(null);\n // hack to have the Portal not generating hydration errors (content mismatch) on SSR / CSR\n useEffect(() => {\n if (tempNode.current) { // we are on the browser -> we an use the portal\n const doc = tempNode.current.ownerDocument;\n let portalEl = doc.getElementById(PORTAL_ID);\n if (!portalEl) {\n portalEl = doc.createElement('DIV');\n portalEl.id = PORTAL_ID;\n doc.body.appendChild(portalEl);\n }\n setPortalEl(portalEl);\n }\n }, [tempNode.current]);\n if (portalEl) {\n return createPortal(children, portalEl);\n }\n else {\n return _jsx(\"span\", { ref: tempNode });\n }\n}\n//# sourceMappingURL=Portal.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Transition } from \"@headlessui/react\";\nimport { CircleCheck, AlertTriangle, Info, CircleX, X } from \"lucide-react\";\nimport { Fragment, useEffect, useState } from \"react\";\nconst icons = {\n success: CircleCheck,\n error: CircleX,\n warning: AlertTriangle,\n info: Info\n};\nconst colors = {\n success: 'text-green-600',\n error: 'text-red-600',\n warning: 'text-yellow-600',\n info: 'text-blue-600'\n};\nexport function NotificationPanel({ data, onClose }) {\n const [show, setShow] = useState(true);\n useEffect(() => {\n let timeoutId;\n if (data.duration) {\n timeoutId = setTimeout(() => {\n setShow(false);\n }, data.duration);\n }\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n const Icon = icons[data.status] || Info;\n const color = colors[data.status] || 'text-blue-600';\n // Global notification live region, render this permanently at the end of the document\n return (_jsx(\"div\", { \"aria-live\": \"assertive\", className: \"pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:items-start sm:p-6 z-100\", children: _jsx(\"div\", { className: \"flex w-full flex-col items-center space-y-4 sm:items-end\", children: _jsx(Transition, { appear: true, show: show, as: Fragment, afterLeave: onClose, enter: \"transform ease-out duration-700 transition\", enterFrom: \"translate-y-0 opacity-0 sm:translate-y-0 sm:translate-x-2\", enterTo: \"translate-y-2 opacity-100 sm:translate-x-0\", leave: \"transition ease-in duration-300\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", children: _jsx(\"div\", { className: \"pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-white shadow-lg ring-1 ring-black ring-opacity-5\", children: _jsx(\"div\", { className: \"p-4\", children: _jsxs(\"div\", { className: \"flex items-start\", children: [_jsx(\"div\", { className: \"shrink-0\", children: _jsx(Icon, { className: `size-6 ${color}`, \"aria-hidden\": \"true\" }) }), _jsxs(\"div\", { className: \"ml-3 w-0 flex-1 pt-0.5\", children: [_jsx(\"p\", { className: \"text-sm font-medium text-gray-900\", children: data.title }), _jsx(\"p\", { className: \"mt-1 text-sm text-gray-500\", children: data.description })] }), _jsx(\"div\", { className: \"ml-4 flex shrink-0\", children: _jsxs(\"button\", { type: \"button\", className: \"inline-flex rounded-md bg-white text-gray-400 hover:text-gray-500 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2\", onClick: () => setShow(false), children: [_jsx(\"span\", { className: \"sr-only\", children: \"Close\" }), _jsx(X, { className: \"size-5\", \"aria-hidden\": \"true\" })] }) })] }) }) }) }) }) }));\n}\n//# sourceMappingURL=NotificationPanel.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { Portal } from \"../Portal.js\";\nimport { NotificationPanel } from \"./NotificationPanel.js\";\nimport { ToastContext } from \"./ToastContext.js\";\nexport function ToastProvider({ children }) {\n const [data, setData] = useState(null);\n const toast = (data) => {\n setData(data);\n };\n return (_jsxs(_Fragment, { children: [_jsx(ToastContext.Provider, { value: toast, children: children }), data && _jsx(Portal, { children: _jsx(NotificationPanel, { data: data, onClose: () => toast(null) }) })] }));\n}\n//# sourceMappingURL=ToastProvider.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ConfirmModal } from \"./ConfirmModal.js\";\nimport { useToast } from \"./toast/index.js\";\nexport function DeleteModal({ idToDelete, title, content, setIdToDelete, deleteApi }) {\n const toast = useToast();\n const doDelete = async () => {\n if (!idToDelete) {\n return;\n }\n return deleteApi(idToDelete)\n .then(() => {\n toast({\n title: 'Delete succeeded',\n status: 'success'\n });\n }).catch((err) => {\n toast({\n title: 'Failed to delete',\n description: err.message ?? 'An error occurred while deleting the object',\n status: 'error'\n });\n }).finally(() => {\n setIdToDelete(undefined);\n });\n };\n return (_jsx(ConfirmModal, { title: title, content: content, isOpen: !!idToDelete, onConfirm: doDelete, onCancel: () => { setIdToDelete(undefined); } }));\n}\n//# sourceMappingURL=DeleteModal.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Divider({ className }) {\n return (_jsx(\"hr\", { className: clsx(\"w-full h-0.5 border-t-0 bg-border\", className) }));\n}\n//# sourceMappingURL=Divider.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Menu, MenuButton, MenuItems, MenuItem as _MenuItem, Transition } from '@headlessui/react';\nimport clsx from 'clsx';\nimport { Fragment } from 'react';\nexport function Dropdown({ trigger, children }) {\n return (_jsxs(Menu, { as: \"div\", className: \"relative\", children: [_jsx(MenuButton, { as: \"span\", className: \"-m-1.5 flex items-center p-1.5\", children: trigger }), _jsx(Transition, { as: Fragment, enter: \"transition ease-out duration-100\", enterFrom: \"transform opacity-0 scale-95\", enterTo: \"transform opacity-100 scale-100\", leave: \"transition ease-in duration-75\", leaveFrom: \"transform opacity-100 scale-100\", leaveTo: \"transform opacity-0 scale-95\", children: _jsx(MenuItems, { className: \"absolute right-0 z-10 mt-2.5 w-48 origin-top-right rounded-md bg-white dark:bg-slate-900 dark:border-slate-800 dark:border py-2 shadow-lg ring-1 ring-gray-900/5 dark:ring-slate-200/5 focus:outline-hidden\", children: children }) })] }));\n}\nexport function MenuItem({ children, href = '#', onClick, closeOnClick = true, isDisabled = false }) {\n return (_jsx(_MenuItem, { disabled: isDisabled, children: ({ active, close }) => (_jsx(\"a\", { href: href, onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n onClick && onClick(e);\n closeOnClick && close();\n }, className: clsx(active ? 'bg-gray-50 dark:bg-slate-800' : '', isDisabled ? 'opacity-50 cursor-not-allowed' : '', 'block px-3 py-1 text-sm leading-6 text-gray-900 dark:text-gray-200'), children: children })) }));\n}\n//# sourceMappingURL=Dropdown.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Listbox, ListboxButton, ListboxOption, ListboxOptions, Transition } from \"@headlessui/react\";\nimport { Check, ChevronDown } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { Fragment } from \"react\";\nexport function DropdownList({ items, value, onChange }) {\n return (_jsx(Listbox, { value: value, onChange: onChange, children: ({ open }) => (_jsxs(\"div\", { className: \"relative\", children: [_jsxs(\"div\", { className: \"inline-flex divide-x divide-indigo-700 rounded-md shadow-2xs\", children: [_jsxs(\"div\", { className: \"inline-flex items-center gap-x-1.5 rounded-l-md bg-indigo-600 px-3 py-2 text-white shadow-2xs\", children: [value.name && _jsx(Check, { className: \"-ml-0.5 size-5\", \"aria-hidden\": \"true\" }), _jsx(\"p\", { className: \"text-sm font-semibold\", children: value.name || \"\" })] }), _jsxs(ListboxButton, { className: \"inline-flex items-center rounded-l-none rounded-r-md bg-indigo-600 p-2 hover:bg-indigo-700 focus:outline-hidden focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2 focus:ring-offset-gray-50\", children: [_jsx(\"span\", { className: \"sr-only\", children: \"Change selection\" }), _jsx(ChevronDown, { className: \"size-5 text-white\", \"aria-hidden\": \"true\" })] })] }), _jsx(Transition, { show: open, as: Fragment, leave: \"transition ease-in duration-100\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", children: _jsx(ListboxOptions, { className: \"absolute right-0 z-10 mt-2 w-72 origin-top-right divide-y divide-gray-200 overflow-hidden rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-hidden\", children: items.map((option) => (_jsx(ListboxOption, { className: ({ active }) => clsx(active ? 'bg-indigo-600 text-white' : 'text-gray-900', 'cursor-default select-none p-4 text-sm'), value: option, children: ({ selected, active }) => (_jsxs(\"div\", { className: \"flex flex-col\", children: [_jsxs(\"div\", { className: \"flex justify-between\", children: [_jsx(\"p\", { className: selected ? 'font-semibold' : 'font-normal', children: option.name }), selected ? (_jsx(\"span\", { className: active ? 'text-white' : 'text-indigo-600', children: _jsx(Check, { className: \"size-5\", \"aria-hidden\": \"true\" }) })) : null] }), _jsx(\"p\", { className: clsx(active ? 'text-indigo-200' : 'text-gray-500', 'mt-2'), children: option.description })] })) }, option.id))) }) })] })) }));\n}\n//# sourceMappingURL=DropdownList.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'size-2';\n case 'sm': return 'size-3';\n case 'md': return 'size-4';\n case 'lg': return 'size-5';\n case 'xl': return 'size-7';\n case '2xl': return 'size-10';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nexport function Spinner({ size, className }) {\n const sizeClass = getRealSize(size || 'md');\n return (_jsx(_Fragment, { children: _jsxs(\"svg\", { className: clsx(\"animate-[spin_0.8s_linear_infinite] text-indigo-500\", sizeClass, className), xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 24 24\", children: [_jsx(\"circle\", { className: \"opacity-25\", cx: \"12\", cy: \"12\", r: \"10\", stroke: \"currentColor\", strokeWidth: \"4\" }), _jsx(\"path\", { className: \"opacity-75\", fill: \"currentColor\", d: \"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" })] }) }));\n}\n//# sourceMappingURL=Spinner.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { Spinner } from \"./Spinner.js\";\nfunction getRealSize(size) {\n switch (size) {\n case 'xs': return 'rounded-xs px-2 py-1 text-xs gap-x-1';\n case 'sm': return 'rounded-xs px-2 py-1 text-sm gap-x-1';\n case 'md': return 'rounded-md px-2.5 py-1.5 text-sm gap-x-1.5';\n case 'lg': return 'rounded-md px-3 py-2 text-sm gap-x-1.5';\n case 'xl': return 'rounded-md px-3.5 py-2.5 text-sm gap-x-2';\n default: throw new Error('Unexpected size: ' + size);\n }\n}\nconst Variants = {\n primary: \"shadow-2xs bg-indigo-600 text-white hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600\",\n secondary: \"shadow-2xs bg-white text-gray-900 hover:bg-gray-50 ring-1 ring-inset ring-gray-300\",\n soft: \"shadow-2xs bg-indigo-50 text-indigo-600 hover:bg-indigo-100\",\n ghost: \"text-indigo-600 hover:bg-indigo-100 dark:text-indigo-400 dark:hover:bg-indigo-900\",\n unstyled: \"\"\n};\nconst SpinnerVariants = {\n primary: \"text-white\",\n secondary: \"text-indigo-500\",\n soft: \"text-indigo-600\",\n ghost: \"text-indigo-600\",\n unstyled: \"text-gray-600\"\n};\nexport function Button({ title, className, type = 'button', children, size, onClick, variant = \"primary\", isLoading = false, isDisabled = false }) {\n const sizeClass = getRealSize(size || 'md');\n return (_jsxs(\"button\", { title: title, disabled: isDisabled || isLoading, onClick: onClick, type: type, className: clsx(\"whitespace-nowrap inline-flex items-center justify-center font-semibold hover:cursor-pointer\", Variants[variant], sizeClass, isDisabled && \"cursor-not-allowed text-gray-300!\", className), children: [isLoading && _jsx(Spinner, { className: SpinnerVariants[variant], size: size }), children] }));\n}\n//# sourceMappingURL=Button.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Plus } from \"lucide-react\";\nimport { Button } from \"./Button.js\";\nexport function EmptyCollection({ buttonLabel, title, children, onClick }) {\n return (_jsxs(\"div\", { className: \"text-center py-12\", children: [_jsx(\"svg\", { className: \"mx-auto h-12 w-12 text-gray-400 dark:text-gray-200\", fill: \"none\", viewBox: \"0 0 24 24\", stroke: \"currentColor\", \"aria-hidden\": \"true\", children: _jsx(\"path\", { vectorEffect: \"non-scaling-stroke\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: 2, d: \"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" }) }), _jsx(\"h3\", { className: \"mt-2 text-sm font-semibold text-gray-500\", children: title }), _jsx(\"p\", { className: \"mt-1 text-sm text-gray-500\", children: children }), _jsx(\"div\", { className: \"mt-6\", children: _jsxs(Button, { onClick: onClick, size: 'lg', children: [_jsx(Plus, { className: \"-ml-0.5 mr-1.5 size-5\", \"aria-hidden\": \"true\" }), buttonLabel] }) })] }));\n}\n//# sourceMappingURL=EmptyCollection.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useRef } from \"react\";\n/**\n * TODO: TS complains that:\n * Type 'FileList' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.\n * So as a quick fix aI use a for loop to convert FileList to File[]\n * @param files\n * @returns\n */\nfunction fileListToArray(files) {\n const ar = [];\n for (let i = 0, l = files.length; i < l; i++) {\n ar.push(files[i]);\n }\n return ar;\n}\nexport function FileUploadInput({ children, onUpload }) {\n const inputRef = useRef(null);\n const _onUpload = () => {\n if (inputRef.current?.files) {\n onUpload(fileListToArray(inputRef.current.files));\n }\n };\n return (_jsxs(\"label\", { style: { cursor: \"pointer\" }, children: [children, _jsx(\"input\", { ref: inputRef, type: \"file\", style: { display: \"none\" }, onChange: _onUpload })] }));\n}\n//TODO implement using tailwind\nexport function DropZone({ onUpload }) {\n const dropZoneProps = useDropZone({ onUpload });\n return (_jsx(\"div\", { ...dropZoneProps, className: \"flex items-center justify-center w-full h-64 border-2 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\", children: _jsxs(\"label\", { htmlFor: \"dropzone-file\", className: \"flex flex-col items-center justify-center w-full h-full\", children: [_jsxs(\"div\", { className: \"flex flex-col items-center justify-center pt-5 pb-6\", children: [_jsx(\"svg\", { className: \"w-8 h-8 mb-4 text-gray-500 dark:text-gray-400\", \"aria-hidden\": \"true\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", viewBox: \"0 0 20 16\", children: _jsx(\"path\", { stroke: \"currentColor\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", \"stroke-width\": \"2\", d: \"M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2\" }) }), _jsxs(\"p\", { className: \"mb-2 text-sm text-gray-500 dark:text-gray-400\", children: [_jsx(\"span\", { className: \"font-semibold\", children: \"Click to upload\" }), \" or drag and drop\"] }), _jsx(\"p\", { className: \"text-xs text-gray-500 dark:text-gray-400\", children: \"SVG, PNG, JPG or GIF (MAX. 800x400px)\" })] }), _jsx(\"input\", { id: \"dropzone-file\", type: \"file\", className: \"hidden\" })] }) }));\n}\nfunction _onDragEnter(el) {\n let cnt = el.__dragOver_cnt__ || 0;\n el.__dragOver_cnt__ = cnt + 1;\n return !cnt; // true if first drag o ver false if dragover already recorded\n}\nfunction _onDragLeave(el) {\n let cnt = el.__dragOver_cnt__;\n if (!cnt)\n return false;\n el.__dragOver_cnt__ = cnt - 1;\n return cnt === 1; // true if leave false if not\n}\nfunction _onDrop(el) {\n delete el.__dragOver_cnt__;\n}\nexport function useDropZone({ onUpload, dragOverClass = \"is-drag-over-on\", dropEffect = \"copy\", }) {\n const ref = useRef(null);\n const onDrop = (ev) => {\n ev.preventDefault();\n _onDrop(ref.current);\n ref.current?.classList.remove(dragOverClass);\n const items = ev.dataTransfer.items;\n if (items) {\n const promises = [];\n const traverseFileTree = (item, path = \"\") => {\n return new Promise((resolve) => {\n if (item.isFile) {\n item.file((file) => {\n Object.defineProperty(file, \"webkitRelativePath\", { value: path + file.name });\n resolve([file]);\n });\n }\n else if (item.isDirectory) {\n const dirReader = item.createReader();\n const entries = [];\n const readEntries = () => {\n dirReader.readEntries((results) => {\n if (!results.length) {\n Promise.all(entries).then((filesArrays) => resolve(filesArrays.flat()));\n }\n else {\n for (const entry of results) {\n entries.push(traverseFileTree(entry, path + item.name + \"/\"));\n }\n readEntries();\n }\n });\n };\n readEntries();\n }\n });\n };\n for (let i = 0; i < items.length; i++) {\n const entry = items[i].webkitGetAsEntry();\n if (entry) {\n promises.push(traverseFileTree(entry));\n }\n }\n Promise.all(promises).then((filesArrays) => {\n const allFiles = filesArrays.flat();\n if (allFiles.length) {\n onUpload(allFiles);\n }\n });\n }\n };\n const onDragOver = (ev) => {\n ev.preventDefault();\n ev.dataTransfer.dropEffect = dropEffect;\n };\n const onDragEnter = () => {\n if (_onDragEnter(ref.current)) {\n ref.current?.classList.add(dragOverClass);\n }\n };\n const onDragLeave = () => {\n if (_onDragLeave(ref.current)) {\n ref.current?.classList.remove(dragOverClass);\n }\n };\n return {\n onDrop,\n onDragOver,\n onDragEnter,\n onDragLeave,\n ref,\n };\n}\n//# sourceMappingURL=FileUpload.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { VTooltip } from './shadcn/tooltip';\nimport { Info } from 'lucide-react';\nexport function FormItem({ description, required, label, className, direction = \"column\", children }) {\n return (_jsxs(\"div\", { className: clsx(\"flex w-full space-y-1\", className, direction === \"row\" ? \"flex-row justify-between\" : \"flex-col\"), children: [_jsxs(\"div\", { className: 'flex items-center gap-1', children: [_jsxs(\"label\", { className: \"text-sm font-medium mb-1\", children: [label, required ? _jsx(\"span\", { className: 'text-destructive -mt-4 ml-1', children: \"*\" }) : \"\"] }), description &&\n _jsx(\"div\", { className: 'mx-2 flex w-4 items-center', children: _jsx(VTooltip, { description: description, children: _jsx(Info, { className: \"size-3 text-muted\" }) }) })] }), children] }));\n}\n//# sourceMappingURL=FormItem.js.map","const INPUT_UNSTYLED = \"block m-0 p-0 w-full border-0 focus:outline-hidden focus:ring-0 bg-transparent\";\nconst INPUT_NO_PADDING = \"rounded-md text-sm flex w-full rounded-md border border-input bg-background ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 ring-inset focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\";\nconst INPUT = INPUT_NO_PADDING + \" py-1.5\";\nconst Styles = {\n INPUT_UNSTYLED,\n INPUT_NO_PADDING,\n INPUT\n};\nexport { Styles };\n//# sourceMappingURL=styles.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport { Badge } from './Badge';\nimport { Input } from './shadcn/input';\nimport { Styles } from './styles';\nexport function InputList({ value = [], onChange, className, delimiters = \", \", placeholder }) {\n const [text, setText] = useState('');\n const onBlur = (ev) => {\n const v = ev.target.value;\n if (v && v.trim()) {\n onChange([...value, v.trim()]);\n setText('');\n }\n };\n const onKeyDown = (ev) => {\n const v = ev.target.value;\n const isEmpty = !v.trim();\n const key = ev.key;\n if (key === 'Enter' || delimiters.indexOf(key) > -1) {\n ev.preventDefault();\n if (value && !isEmpty) {\n onChange([...value, v.trim()]);\n setText('');\n }\n }\n else if (key === 'Backspace' && isEmpty) {\n if (value && value.length > 0) {\n value.pop();\n onChange([...value]);\n }\n }\n };\n const _onClick = (index) => {\n if (value && value.length > 0) {\n value.splice(index, 1);\n onChange([...value]);\n }\n };\n return (_jsxs(\"div\", { className: clsx(className, 'w-full space-x-1 space-y-1 p-2', Styles.INPUT), children: [value && value.length > 0 &&\n (value.map((v, index) => _jsx(Badge, { variant: \"secondary\", onClick: () => _onClick(index), style: { whiteSpace: 'nowrap' }, className: 'cursor-pointer', children: v }, index))), _jsx(\"div\", { children: _jsx(Input, { clearable: false, className: 'placeholder:text-muted-foreground px-1', variant: 'unstyled', type: 'text', value: text, onBlur: onBlur, onKeyDown: onKeyDown, onChange: setText, placeholder: !value || value.length === 0 ? placeholder : '' }) })] }));\n}\n//# sourceMappingURL=InputList.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nexport function Link({ underline = 'always', className, children, ...others }) {\n let underlineClass;\n if (underline === 'always') {\n underlineClass = 'underline';\n }\n else if (underline === 'hover') {\n underlineClass = 'hover:underline';\n }\n return _jsx(\"a\", { className: clsx(\"text-indigo-800 dark:text-indigo-300\", className, underlineClass), ...others, children: children });\n}\n//# sourceMappingURL=Link.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { forwardRef } from \"react\";\nexport function MenuList({ className, children }) {\n return (_jsx(\"ul\", { className: `${className} space-y-1 flex flex-col items-start dark:px-2`, children: children }));\n}\nconst MenuListItem = forwardRef(function _MenuListItem(props, ref) {\n const { current, children, className, href = '#', onClick, ...others } = props;\n return (_jsx(\"li\", { className: clsx(className, current ?\n 'bg-gray-50 text-indigo-600'\n :\n 'text-gray-700 dark:dark:text-slate-300 hover:text-indigo-600 hover:bg-gray-50 dark:hover:bg-slate-800 dark:hover:text-slate-50 dark:border dark:border-transparent dark:hover:border-slate-50', 'w-full rounded-md p-2 pl-3 text-sm leading-6 font-semibold'), children: _jsx(\"a\", { ref: ref, href: href, onClick: (e) => {\n if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n else if (href === '#') {\n e.preventDefault();\n }\n }, className: 'w-full flex items-center gap-x-3', ...others, children: children }) }));\n});\nMenuList.Item = MenuListItem;\n//# sourceMappingURL=MenuList.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { CircleX, CircleCheck, AlertTriangle, Info } from 'lucide-react';\nexport function MessageBox({ icon, status, title, children, className }) {\n let defaultIcon, titleColor, textColor, bgColor;\n switch (status) {\n case 'error': {\n defaultIcon = _jsx(CircleX, { className: \"size-5 text-destructive\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-destructive border border-destructive\";\n break;\n }\n case 'warning': {\n defaultIcon = _jsx(AlertTriangle, { className: \"size-5 text-attention\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-attention border border-attention\";\n break;\n }\n case 'success': {\n defaultIcon = _jsx(CircleCheck, { className: \"size-5 text-success\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-success border border-success\";\n break;\n }\n case 'info': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-info\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-info border border-info\";\n break;\n }\n case 'default': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-muted\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-muted border border-muted\";\n break;\n }\n case 'done': {\n defaultIcon = _jsx(Info, { className: \"size-5 text-done\", \"aria-hidden\": \"true\" });\n titleColor = \"\";\n textColor = \"text-foreground\";\n bgColor = \"bg-done border border-done\";\n break;\n }\n }\n return (_jsx(\"div\", { className: `rounded-md p-4 ${bgColor} ${className}`, children: _jsxs(\"div\", { className: \"flex\", children: [_jsx(\"div\", { className: \"shrink-0\", children: icon ?? defaultIcon }), _jsxs(\"div\", { className: \"w-full ml-2 px-1\", children: [title && _jsx(\"h3\", { className: `text-sm font-medium mb-2 ${titleColor}`, children: title }), _jsx(\"div\", { className: `text-sm ${textColor} break-words`, children: children })] })] }) }));\n}\nexport function ErrorBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"error\", title: title, className: className, children: _jsx(\"pre\", { children: children }) });\n}\nexport function InfoBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"info\", title: title, className: className, children: children });\n}\nexport function WarningBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"warning\", title: title, className: className, children: children });\n}\nexport function SuccessBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"success\", title: title, className: className, children: children });\n}\nexport function DefaultBox({ title, className, children }) {\n return _jsx(MessageBox, { status: \"default\", title: title, className: className, children: children });\n}\n//# sourceMappingURL=MessageBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { Fragment } from \"react\";\nimport { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from \"@headlessui/react\";\nimport { X } from \"lucide-react\";\nexport function Modal({ className, children, isOpen, onClose, noCloseButton = false, allowOverflow = false, disableCloseOnClickOutside = false, }) {\n const setOpen = (open) => {\n if (!open) {\n onClose();\n }\n };\n return (_jsx(Transition, { show: isOpen, as: Fragment, children: _jsxs(Dialog, { style: { zIndex: 50 }, as: \"div\", className: \"relative\", onClose: disableCloseOnClickOutside ? () => { } : setOpen, children: [_jsx(TransitionChild, { as: Fragment, enter: \"ease-out duration-300\", enterFrom: \"opacity-0\", enterTo: \"opacity-100\", leave: \"ease-in duration-200\", leaveFrom: \"opacity-100\", leaveTo: \"opacity-0\", unmount: true, children: _jsx(\"div\", { className: \"fixed inset-0 bg-gray-500 dark:bg-slate-800 dark:opacity-75 opacity-75 transition-opacity\" }) }), _jsx(\"div\", { className: \"fixed inset-0 z-10 w-screen overflow-y-auto\", children: _jsx(\"div\", { className: \"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\", children: _jsx(TransitionChild, { as: Fragment, enter: \"ease-out duration-300\", enterFrom: \"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\", enterTo: \"opacity-100 translate-y-0 sm:scale-100\", leave: \"ease-in duration-200\", leaveFrom: \"opacity-100 translate-y-0 sm:scale-100\", leaveTo: \"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\", children: _jsxs(DialogPanel, { className: clsx(\"p-0! relative transform rounded-lg bg-white dark:bg-slate-900 text-left dark:text-slate-100 shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-md sm:p-6\", allowOverflow ? \"overflow-visible\" : \"overflow-hidden\", className), children: [!noCloseButton && _jsx(ModalCloseButton, { onClose: onClose }), children] }) }) }) })] }) }));\n}\nfunction ModalCloseButton({ onClose }) {\n return (_jsx(\"div\", { className: \"absolute right-0 top-0 hidden pr-4 pt-4 sm:block\", children: _jsxs(\"button\", { tabIndex: -1, type: \"button\", className: \"rounded-md bg-white text-gray-400 dark:text-slate-200 dark:bg-slate-800 hover:brightness-95 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 hover:cursor-pointer\", onClick: onClose, children: [_jsx(\"span\", { className: \"sr-only\", children: \"Close\" }), _jsx(X, { className: \"size-6\", \"aria-hidden\": \"true\" })] }) }));\n}\nexport function ModalTitle({ children, showDivider = false }) {\n return (_jsx(\"div\", { className: showDivider ? \"border-b-solid border-b border-b-1\" : \"\", children: _jsx(DialogTitle, { as: \"h3\", className: \"py-4 pl-4 pr-8 text-base font-semibold leading-6 text-gray-900 dark:text-slate-50\", children: children }) }));\n}\nexport function ModalFooter({ children, className = \"justify-end\", fill = false }) {\n return (_jsx(\"div\", { className: clsx(\"w-full flex space-x-2 p-4 border-t-solid border-t-gray-100 dark:border-t-gray-800 border-t\", className || \"justify-end\", fill ? \"bg-gray-100 dark:bg-slate-800\" : \"\"), children: children }));\n}\nexport function ModalBody({ children, className = \"\" }) {\n return _jsx(\"div\", { className: clsx(\"p-4\", className), children: children });\n}\n//# sourceMappingURL=Modal.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport React, { useEffect } from \"react\";\nimport { Styles } from \"./styles.js\";\nfunction numberToString(value) {\n if (value == null || isNaN(value)) {\n return '';\n }\n else {\n return value.toString();\n }\n}\n/**\n * The value of this input is always a number. It can be undefined or NaN. If NaN the input value will not be updated with the NaN one.\n * If undefined the input will be updated to be empty.\n * The onChange callback is called whenever the value changes. If the input cannot be parsed as a number\n * it will be returned as NaN.\n */\nconst NumberInput = React.forwardRef(({ value, onChange, className, noScroll = false, noSpinners = false, ...others }, ref) => {\n // we need to store the state here in string\n const [textValue, setTextValue] = React.useState(numberToString(value));\n const _onChange = (ev) => {\n const value = ev.target.value;\n setTextValue(value);\n if (value === '') {\n onChange && onChange(undefined, value);\n }\n else {\n const num = parseFloat(value);\n onChange && onChange(num, value);\n }\n };\n useEffect(() => {\n // we do not update if not empty and NaN\n if (value == null || !isNaN(value)) {\n const text = numberToString(value);\n setTextValue(text);\n }\n }, [value]);\n return (_jsx(\"input\", { onWheel: noScroll ? event => { event.target.blur(); } : others.onWheel, type: 'number', value: textValue, onChange: _onChange, className: clsx(className, Styles.INPUT, { \"no-spinners\": noSpinners }, noSpinners && \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\"), ref: ref, ...others }));\n});\nexport { NumberInput };\n//# sourceMappingURL=NumberInput.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport { useState } from \"react\";\nexport class RadioOptionAdapter {\n renderOption(item) {\n return this.labelOf(item);\n }\n findById(items, id) {\n return items.find(item => this.idOf(item) === id);\n }\n}\nexport function RadioGroup({ checkColor, cols = \"grid-cols-1\", gap = \"gap-2\", value, onChange, options, checkIcon: CheckIcon = DefaultCheckIcon, adapter }) {\n const [selected, setSelected] = useState(value);\n const onSelect = (option) => {\n setSelected(option);\n onChange(option);\n };\n const selectedId = selected ? adapter.idOf(selected) : undefined;\n return (_jsx(\"div\", { className: clsx(\"grid\", cols, gap), children: options.map(option => {\n const key = adapter.idOf(option);\n return (_jsx(RadioOption, { checkColor: checkColor, isSelected: key === selectedId, option: option, adapter: adapter, onSelect: onSelect, CheckIcon: CheckIcon }, key));\n }) }));\n}\nfunction RadioOption({ checkColor, CheckIcon, adapter, isSelected, option, onSelect }) {\n const [isHighlighted, setIsHighlighted] = useState(false);\n return (_jsxs(\"div\", { className: \"flex gap-1 cursor-pointer items-center\", onClick: () => onSelect(option), onMouseEnter: () => setIsHighlighted(true), onMouseLeave: () => setIsHighlighted(false), children: [_jsx(\"div\", { className: \"\", children: _jsx(CheckIcon, { size: 24, isChecked: isSelected, isHighlighted: isHighlighted, color: checkColor }) }), _jsx(\"div\", { children: adapter.renderOption(option) })] }));\n}\nfunction DefaultCheckIcon({ size, isChecked, isHighlighted, color = \"currentColor\" }) {\n //https://www.svgrepo.com/svg/309414/checkbox-checked\n //https://www.svgrepo.com/svg/309415/checkbox-unchecked\n const opacity = isHighlighted ? 1 : 0.6;\n return isChecked ? (_jsx(\"svg\", { width: `${size}px`, height: `${size}px`, viewBox: \"0 0 24 24\", version: \"1.1\", children: _jsx(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\", children: _jsx(\"g\", { id: \"ic_fluent_checkbox_checked_24_regular\", fill: color, fillRule: \"nonzero\", opacity: opacity, children: _jsx(\"path\", { d: \"M18.25,3 C19.7687831,3 21,4.23121694 21,5.75 L21,18.25 C21,19.7687831 19.7687831,21 18.25,21 L5.75,21 C4.23121694,21 3,19.7687831 3,18.25 L3,5.75 C3,4.23121694 4.23121694,3 5.75,3 L18.25,3 Z M18.25,4.5 L5.75,4.5 C5.05964406,4.5 4.5,5.05964406 4.5,5.75 L4.5,18.25 C4.5,18.9403559 5.05964406,19.5 5.75,19.5 L18.25,19.5 C18.9403559,19.5 19.5,18.9403559 19.5,18.25 L19.5,5.75 C19.5,5.05964406 18.9403559,4.5 18.25,4.5 Z M10,14.4393398 L16.4696699,7.96966991 C16.7625631,7.6767767 17.2374369,7.6767767 17.5303301,7.96966991 C17.7965966,8.23593648 17.8208027,8.65260016 17.6029482,8.94621165 L17.5303301,9.03033009 L10.5303301,16.0303301 C10.2640635,16.2965966 9.84739984,16.3208027 9.55378835,16.1029482 L9.46966991,16.0303301 L6.46966991,13.0303301 C6.1767767,12.7374369 6.1767767,12.2625631 6.46966991,11.9696699 C6.73593648,11.7034034 7.15260016,11.6791973 7.44621165,11.8970518 L7.53033009,11.9696699 L10,14.4393398 L16.4696699,7.96966991 L10,14.4393398 Z\" }) }) }) })) : (_jsx(\"svg\", { width: `${size}px`, height: `${size}px`, viewBox: \"0 0 24 24\", version: \"1.1\", children: _jsx(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\", children: _jsx(\"g\", { id: \"ic_fluent_checkbox_unchecked_24_regular\", fill: color, fillRule: \"nonzero\", opacity: opacity, children: _jsx(\"path\", { d: \"M5.75,3 L18.25,3 C19.7687831,3 21,4.23121694 21,5.75 L21,18.25 C21,19.7687831 19.7687831,21 18.25,21 L5.75,21 C4.23121694,21 3,19.7687831 3,18.25 L3,5.75 C3,4.23121694 4.23121694,3 5.75,3 Z M5.75,4.5 C5.05964406,4.5 4.5,5.05964406 4.5,5.75 L4.5,18.25 C4.5,18.9403559 5.05964406,19.5 5.75,19.5 L18.25,19.5 C18.9403559,19.5 19.5,18.9403559 19.5,18.25 L19.5,5.75 C19.5,5.05964406 18.9403559,4.5 18.25,4.5 L5.75,4.5 Z\" }) }) }) }));\n}\n//# sourceMappingURL=RadioGroup.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Listbox, ListboxButton, ListboxOption, ListboxOptions } from \"@headlessui/react\";\nimport { X, Check, ChevronsUpDownIcon } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { Button } from \"./Button\";\nimport { Center } from \"./Center\";\nfunction getFilterByFn(filterBy) {\n if (!filterBy) {\n return (o) => String(o).toLowerCase();\n }\n else if (typeof filterBy === 'string') {\n return (o) => String(o[filterBy]).toLowerCase();\n }\n else {\n return filterBy;\n }\n}\nexport function SelectBox({ clearTitle, ClearIcon = X, showFilter, filterBy, isClearable, disabled, by, options, value, onChange, className, addNew, addNewLabel, placeholder, optionLabel = (option) => String(option), label }) {\n const [filter, setFilter] = useState();\n const buttonRef = useRef(null);\n const [buttonWidth, setButtonWidth] = useState();\n useEffect(() => {\n if (buttonRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n setButtonWidth(entries[0].contentRect.width);\n });\n resizeObserver.observe(buttonRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n const onClear = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (isClearable) {\n onChange(undefined);\n }\n };\n const onFilterChange = (e) => {\n setFilter(e.target.value);\n };\n let filteredOptions = options || [];\n if (showFilter === undefined) {\n showFilter = filteredOptions?.length >= 10;\n }\n if (showFilter && filter) {\n const filterLc = filter.toLowerCase();\n const filterFn = getFilterByFn(filterBy);\n filteredOptions = filteredOptions.filter(o => filterFn(o).includes(filterLc));\n }\n const onFilterKeyDown = (e) => {\n if (e.key !== \"Escape\"\n && e.key !== \"Enter\"\n && e.key !== \"ArrowDown\"\n && e.key !== \"ArrowUp\") {\n e.stopPropagation();\n }\n };\n return (_jsx(Listbox, { value: value || null, onChange: onChange, by: by, disabled: disabled, children: () => (_jsx(\"div\", { className: 'overflow-y-visible ' + className, children: _jsxs(\"div\", { className: \"relative\", children: [_jsxs(ListboxButton, { ref: buttonRef, className: \"relative w-full cursor-default rounded-md bg-white py-1.5 text-left text-gray-900 shadow-2xs ring-1 ring-inset ring-gray-300 focus:outline-hidden focus:ring-2 focus:ring-indigo-600 dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 sm:text-sm sm:leading-6 hover:cursor-pointer\", children: [label && _jsx(\"div\", { className: 'w-full text-gray-500 text-left px-2', children: label }), _jsx(\"span\", { className: \"block truncate pl-3 pr-14\", children: value ? optionLabel(value) : placeholder }), isClearable && value != null && _jsx(\"span\", { className: \"absolute inset-y-0 right-0 mr-5 flex items-center pr-2\", onClick: onClear, children: _jsx(ClearIcon, { title: clearTitle, className: \"size-5 text-gray-400 hover:text-red-500 cursor-pointer\", \"aria-hidden\": \"true\" }) }), !disabled &&\n _jsx(\"span\", { className: \"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2\", children: _jsx(ChevronsUpDownIcon, { className: \"size-5 text-gray-400\", \"aria-hidden\": \"true\" }) })] }), _jsxs(ListboxOptions, { anchor: \"bottom\", style: { width: buttonWidth, zIndex: 100000000 }, className: \"absolute z-10 mt-1 overflow-auto rounded-md bg-white dark:ring-slate-600 dark:text-slate-50 dark:bg-slate-800 py-1 text-base shadow-lg ring-1 ring-gray-300 ring-opacity-5 focus:outline-hidden sm:text-sm\", children: [showFilter &&\n _jsx(\"div\", { className: \"p-1\", children: _jsx(\"input\", { type: \"text\", value: filter || '', onKeyDown: onFilterKeyDown, onChange: onFilterChange, className: \"w-full p-1 border border-gray-300 rounded-md dark:bg-slate-700 dark:text-slate-50\", placeholder: \"Filter...\" }) }), _jsx(\"div\", { className: \"overflow-y-auto max-h-60\", children: filteredOptions.map((option, i) => _jsx(ListOption, { option: option, optionLabel: optionLabel, className: \"hover:cursor-pointer\" }, i)) }), addNew &&\n _jsx(Center, { className: \"font-semibold py-2 border-t\", children: _jsx(Button, { variant: 'secondary', onClick: addNew, children: addNewLabel }) })] })] }) })) }));\n}\nexport function ListOption({ option, optionLabel, onClick, className }) {\n return (_jsx(ListboxOption, { className: ({ active }) => clsx(active ? 'bg-indigo-600 text-white dark:bg-indigo-800 dark:text-white' : 'text-gray-900 dark:text-slate-50', 'relative cursor-default select-none py-2 pl-3 pr-9', className), value: option, onClick: onClick, children: ({ selected, active }) => (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: clsx(selected ? 'font-semibold' : 'font-inherit', 'block truncate'), children: optionLabel(option) }), selected ? (_jsx(\"div\", { className: clsx(active ? 'text-white' : 'text-indigo-600', 'absolute inset-y-0 right-0 flex items-center pr-4'), children: _jsx(Check, { className: \"size-5\", \"aria-hidden\": \"true\" }) })) : null] })) }));\n}\n//# sourceMappingURL=SelectBox.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Check } from \"lucide-react\";\nimport clsx from \"clsx\";\nimport { useMemo, useState } from \"react\";\nconst Default_Option_Style = \"flex-1 px-2 py-2 hover:bg-accent nowrap\";\nfunction defaultOptionLayout(option, isSelected) {\n return {\n label: String(option),\n check: isSelected ? _jsx(Check, { className: 'size-4' }) : _jsx(\"div\", { className: \"size-4\" }),\n reverse: false,\n className: Default_Option_Style,\n };\n}\nexport function SelectList({ value, options, onChange, className, optionLayout, by, noCheck }) {\n const [selected, setSelected] = useState(value);\n const onSelect = (option) => {\n setSelected(option);\n onChange(option);\n };\n const optionEquals = useMemo(() => {\n if (typeof by === 'string') {\n return (o1, o2) => o1[by] === o2[by];\n }\n else if (!by) {\n return (o1, o2) => o1 === o2;\n }\n else {\n return by;\n }\n }, [by]);\n return (_jsx(\"div\", { className: clsx(\"\", className), children: options.map((option, i) => {\n const isSelected = selected ? optionEquals(selected, option) : false;\n let layout;\n if (optionLayout) {\n layout = optionLayout(option, isSelected);\n layout = Object.assign(defaultOptionLayout(option, isSelected), layout);\n }\n else {\n layout = defaultOptionLayout(option, isSelected);\n }\n return (_jsx(SelectListOption, { option: option, onSelect: onSelect, layout: layout, noCheck: noCheck }, i));\n }) }));\n}\nfunction SelectListOption({ option, onSelect, layout, noCheck }) {\n return (_jsxs(\"div\", { className: clsx('group flex items-center cursor-pointer gap-x-2 hover:bg-muted', layout.reverse && 'flex-row-reverse', layout.className), onClick: () => onSelect(option), children: [noCheck ? null : _jsx(\"div\", { className: \"\", children: layout.check }), _jsx(\"div\", { className: 'flex-1', children: layout.label })] }));\n}\n//# sourceMappingURL=SelectList.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { RadioGroup } from '@headlessui/react';\nimport clsx from 'clsx';\nexport function SelectStack({ onSelect, selected, options }) {\n return (_jsxs(RadioGroup, { value: selected, onChange: onSelect, children: [_jsx(RadioGroup.Label, { className: \"sr-only\", children: \"Server size\" }), _jsx(\"div\", { className: \"space-y-4\", children: options.map((option) => (_jsx(RadioGroup.Option, { value: option, className: ({ active }) => clsx(active ? 'border-border ring-2 ring-ring' : 'border-border', 'relative block cursor-pointer rounded-lg border bg-accent px-6 py-4 shadow-2xs focus:outline-hidden sm:flex sm:justify-between'), children: ({ active, checked }) => (_jsxs(_Fragment, { children: [_jsx(\"span\", { className: \"flex items-center\", children: _jsxs(\"span\", { className: \"flex flex-col text-sm\", children: [_jsx(RadioGroup.Label, { as: \"span\", className: \"font-medium text-text\", children: option.label }), option.description &&\n _jsx(RadioGroup.Description, { as: \"span\", className: \"text-muted-foreground\", children: option.description })] }) }), _jsx(\"span\", { className: clsx(active ? 'border' : 'border-2', checked ? 'border-accent-foreground' : 'border-transparent', 'pointer-events-none absolute -inset-px rounded-lg'), \"aria-hidden\": \"true\" })] })) }, option.id))) })] }));\n}\n//# sourceMappingURL=SelectStack.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState, Fragment } from 'react';\nimport { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from '@headlessui/react';\nimport { X } from 'lucide-react';\nimport { Button } from './shadcn/button';\nexport function SidePanel({ isOpen, title, onClose, children }) {\n const [panelWidth, setPanelWidth] = useState(768);\n const handleDragStart = (e) => {\n e.preventDefault();\n let isDragging = true;\n const startX = e.pageX;\n const startWidth = panelWidth;\n const handleMouseMove = (e) => {\n if (isDragging) {\n const deltaX = startX - e.pageX;\n const newWidth = Math.max(startWidth + deltaX, 480);\n setPanelWidth(newWidth);\n }\n };\n const handleMouseUp = () => {\n isDragging = false;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n return (_jsx(Transition, { show: isOpen, as: Fragment, children: _jsxs(Dialog, { as: \"div\", className: \"relative z-10\", onClose: onClose, children: [_jsx(\"div\", { className: \"fixed inset-0\" }), _jsx(\"div\", { className: \"fixed inset-0 overflow-hidden\", children: _jsx(\"div\", { className: \"absolute inset-0 overflow-hidden\", children: _jsx(\"div\", { className: \"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10 sm:pl-16\", children: _jsx(TransitionChild, { as: Fragment, enter: \"transform transition ease-in-out duration-500 sm:duration-700\", enterFrom: \"translate-x-full\", enterTo: \"translate-x-0\", leave: \"transform transition ease-in-out duration-500 sm:duration-700\", leaveFrom: \"translate-x-0\", leaveTo: \"translate-x-full\", unmount: true, children: _jsx(DialogPanel, { className: \"pointer-events-auto border-l\", style: { width: `${panelWidth}px` }, children: _jsxs(\"div\", { className: \"relative flex h-full\", children: [_jsx(\"div\", { className: \"absolute left-0 top-0 bottom-0 w-1 cursor-ew-resize hover:bg-indigo-500 transition-colors\", onMouseDown: handleDragStart }), _jsxs(\"div\", { className: \"flex-1 flex flex-col overflow-y-scroll gap-4 bg-background py-6 shadow-xl\", children: [_jsx(\"div\", { className: \"px-4 sm:px-6\", children: _jsxs(\"div\", { className: \"flex items-start justify-between\", children: [_jsx(DialogTitle, { className: \"w-full text-base font-semibold leading-6\", children: _jsx(\"div\", { className: \"text-2xl\", children: title ?? \"\" }) }), _jsx(\"div\", { className: \"ml-3 flex h-7 items-center\", children: _jsx(CloseButton, { onClose: onClose }) })] }) }), _jsx(\"div\", { className: \"px-4 sm:px-6\", children: children })] })] }) }) }) }) }) })] }) }));\n}\nfunction CloseButton({ onClose }) {\n return (_jsx(Button, { alt: \"Close panel\", variant: \"ghost\", onClick: onClose, children: _jsx(X, { className: \"size-6\", \"aria-hidden\": \"true\" }) }));\n}\n//# sourceMappingURL=SidePanel.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Switch as UISwitch } from \"@headlessui/react\";\nconst sizes = {\n 'sm': ['h-5 w-8', 'size-3', 'translate-x-4'],\n 'md': ['h-6 w-11', 'size-4', 'translate-x-6'],\n 'lg': ['h-8 w-16', 'size-6', 'translate-x-9'],\n};\nexport function Switch({ value, onChange, size = 'md', children, className }) {\n const sizeClass = sizes[size];\n return (_jsxs(UISwitch, { checked: value, onChange: () => onChange(!value), className: `flex items-center ${className} hover:cursor-pointer`, children: [_jsx(\"div\", { className: `${value ? 'bg-primary' : 'bg-muted'} relative inline-flex ${sizeClass[0]} items-center rounded-full`, children: _jsx(\"span\", { className: `${value ? sizeClass[2] : 'translate-x-1'} inline-block ${sizeClass[1]} transform rounded-full bg-white transition` }) }), children && _jsx(\"span\", { className: \"px-2\", children: children })] }));\n}\n//# sourceMappingURL=Switch.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nconst defaultTableCass = `\ndivide-y divide-border\n[&>tbody]:divide-y [&>tbody]:divide-border\n[&_th]:text-left [&_th]:px-3 [&_th]:py-3.5 [&_th]:text-sm [&_th]:font-normal [&_th]:text-muted-foreground\n[&_td]:px-3 [&_td]:py-4 [&_td]:text-sm\n`;\nexport function Table({ className, children, ...others }) {\n return (_jsx(\"table\", { className: clsx(defaultTableCass, className), ...others, children: children }));\n}\nexport function RowSkeleton({ columns }) {\n return (_jsx(\"tr\", { className: \"hover:bg-muted\", children: Array(columns).fill(0).map((_, index) => _jsx(\"td\", { children: _jsx(\"div\", { className: \"animate-pulse rounded-xs h-5 bg-gray-200 dark:bg-gray-600\" }) }, index)) }));\n}\nexport function TBody({ isLoading = false, columns, rows = 3, children }) {\n return (_jsx(\"tbody\", { children: isLoading ?\n Array(rows).fill(0).map((_, index) => _jsx(RowSkeleton, { columns: columns }, index))\n : children }));\n}\nexport function TR({ className, children, ...others }) {\n return (_jsx(\"tr\", { className: clsx(\"hover:bg-muted hover:cursor-pointer\", className), ...others, children: children }));\n}\n//# sourceMappingURL=index.js.map","import { createContext, useContext } from \"react\";\nexport function useTabs() {\n return useContext(TabsContext);\n}\nconst TabsContext = createContext({});\nexport { TabsContext };\n//# sourceMappingURL=TabsContext.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { isValidElement, useEffect, useState } from 'react';\nimport { TabsContext, useTabs } from './TabsContext.js';\nfunction applyCurrentTab(tabs, current) {\n const name = typeof current === 'function' ? current() : current;\n let currentTab = null;\n const newTabs = [];\n for (const tab of tabs) {\n const newTab = { ...tab };\n newTab.current = false;\n newTabs.push(newTab);\n if (newTab.name === name) {\n currentTab = newTab;\n }\n }\n if (!currentTab) {\n currentTab = newTabs[0];\n }\n currentTab.current = true;\n return newTabs;\n}\nexport function Tabs({ current, onSelect, tabs, children, navigate }) {\n const [_tabs, _setTabs] = useState([]);\n useEffect(() => {\n _setTabs(applyCurrentTab(tabs, current));\n }, [current, tabs]);\n const context = {\n tabs: _tabs,\n select: (tab) => {\n if (onSelect) {\n if (onSelect(tab) === false) {\n return;\n }\n }\n if (tab.href) {\n if (navigate) {\n navigate(tab.href);\n }\n else {\n window.location.href = tab.href;\n }\n }\n else {\n _setTabs([...applyCurrentTab(_tabs, tab.name)]);\n }\n }\n };\n return (_jsx(TabsContext.Provider, { value: context, children: _jsx(\"div\", { className: \"flex flex-col h-full\", children: children }) }));\n}\nexport function TabsBar({ actions, className }) {\n const { tabs, select } = useTabs();\n const _onClick = (e, tab) => {\n e.preventDefault();\n e.stopPropagation();\n // ignore if disabled\n !tab.disabled && select(tab);\n };\n return (_jsxs(\"div\", { className: \"border-b flex items-start justify-between\", children: [_jsx(\"nav\", { className: \"flex space-x-4 px-4\", \"aria-label\": \"Tabs\", children: tabs.map((tab) => {\n const cursor = tab.disabled ? 'cursor-not-allowed' : 'cursor-pointer';\n return (_jsx(\"a\", { href: tab.href || '#' + tab.name, onClick: (e) => _onClick(e, tab), className: clsx(tab.current\n ? 'border-indigo-500 text-indigo-600 dark:border-indigo-400 dark:text-indigo-50'\n : 'border-transparent text-gray-500 dark:text-slate-300 hover:border-slate-400 hover:text-gray-700 dark:hover:border-slate-200 dark:hover:text-gray-200 ', className, 'whitespace-nowrap border-b-2 py-2 px-1 text-sm font-medium', cursor), \"aria-current\": tab.current ? 'page' : undefined, children: tab.label }, tab.name));\n }) }), _jsx(\"div\", { className: \"flex gap-x-1\", children: actions })] }));\n}\nexport function TabsPanel({}) {\n const { tabs } = useTabs();\n const content = tabs.find((t) => t.current)?.content;\n if (!content) {\n return null;\n }\n if (isValidElement(content)) {\n return _jsx(\"div\", { className: \"h-full overflow-y-auto flex-1\", children: content });\n }\n const Component = content;\n return (_jsx(\"div\", { className: \"h-full overflow-y-auto flex-1\", children: _jsx(Component, {}) }));\n}\n//# sourceMappingURL=Tabs.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from \"clsx\";\nimport React, { useState } from \"react\";\nimport { Styles } from \"./styles\";\nconst Textarea = React.forwardRef(({ unstyled, value, onChange, className, ...others }, ref) => {\n const [currentValue, setCurrentValue] = useState(value || \"\");\n const _onChange = (ev) => {\n const value = ev.target.value;\n setCurrentValue(value);\n onChange && onChange(value);\n };\n return (_jsx(\"textarea\", { ref: ref, ...others, className: clsx('w-full', unstyled ? Styles.INPUT_UNSTYLED : Styles.INPUT, className), value: currentValue, onChange: _onChange }));\n});\nexport { Textarea };\n//# sourceMappingURL=Textarea.js.map","import React, { useContext, useEffect, useState } from \"react\";\n//type KeysOfType<T, V> = { [K in keyof T]-?: T[K] extends V ? K : never }[keyof T];\n//type KeysNotOfType<T, V> = { [K in keyof T]-?: T[K] extends V ? never : K }[keyof T];\nexport class Property {\n _value;\n watchers = [];\n constructor(value) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n for (const watcher of this.watchers) {\n watcher(value);\n }\n }\n }\n watch(watcher) {\n this.watchers.push(watcher);\n return () => {\n this.watchers = this.watchers.filter(w => w !== watcher);\n };\n }\n}\nexport function createCompositeStateProvider(StateClass) {\n const context = React.createContext(undefined);\n StateClass.Context = context;\n return context.Provider;\n}\nexport class Slot {\n consume = undefined;\n _current;\n constructor(content) {\n this._current = content;\n }\n set current(content) {\n if (content !== this._current) {\n this._current = content;\n this.consume?.(content);\n }\n }\n get current() {\n return this._current;\n }\n withConsumer(consume) {\n this.consume = consume;\n consume && consume(this.current);\n return this;\n }\n}\nexport function useCompositeState(StateClass) {\n const context = StateClass.Context;\n if (!context) {\n throw new Error(\"Context not defined for \" + StateClass.name);\n }\n return useContext(context);\n}\nexport function useGetCompositeStateProperty(property) {\n const [value, setValue] = useState(property.value);\n useEffect(() => {\n return property.watch((value) => {\n if (typeof value === 'function') {\n setValue(() => value); // cannot directly store functions\n }\n else {\n setValue(value);\n }\n });\n }, [property]);\n return value;\n}\n// use memo on value to avoid re-computations if needed\nexport function useSetCompositeStateProperty(property, value) {\n useEffect(() => {\n property.value = value;\n return () => {\n property.value = undefined;\n };\n }, [property, value]);\n return value;\n}\n// use memo on watcher to avoid re-computations if needed\nexport function useWatchCompositeStateProperty(property, watcher) {\n useEffect(() => {\n return property.watch(watcher);\n }, [property, watcher]);\n}\nexport function useSlot(slot) {\n const [value, setValue] = useState(slot.current);\n useEffect(() => {\n slot.withConsumer(setValue);\n return () => {\n slot.withConsumer(undefined);\n };\n }, [slot]);\n return value;\n}\nexport function useWatchSlot(slot, watcher) {\n useEffect(() => {\n slot.withConsumer(watcher);\n return () => {\n slot.withConsumer(undefined);\n };\n }, [slot, watcher]);\n}\n// use memo for value if needed\nexport function useDefineSlot(slot, value) {\n useEffect(() => {\n slot.current = value;\n return () => {\n slot.current = undefined;\n };\n }, [slot, value]);\n}\n//# sourceMappingURL=CompositeState.js.map","import { useEffect, useState } from \"react\";\nexport class SharedState {\n _value;\n watchers = [];\n constructor(value) {\n this._value = value;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n if (value !== this._value) {\n this._value = value;\n for (const watcher of this.watchers) {\n watcher(value);\n }\n }\n }\n addWatcher(watcher) {\n this.watchers.push(watcher);\n return () => {\n this.watchers = this.watchers.filter(w => w !== watcher);\n };\n }\n}\nexport function useWatchSharedState(state) {\n const [value, setValue] = useState(state.value);\n useEffect(() => {\n return state.addWatcher((value) => {\n if (typeof value === 'function') {\n setValue(() => value); // cannot directly store functions\n }\n else {\n setValue(value);\n }\n });\n }, [state]);\n return value;\n}\n// export function createSharedStateContext<T>(initialValue: T) {\n// const Context = React.createContext<SharedState<T>>(undefined as any);\n// function SharedStateProvider({ value = initialValue, children }: {\n// value?: T,\n// children: React.ReactNode\n// }) {\n// const state = useMemo(() => {\n// return new SharedState(value);\n// }, []);\n// return <Context.Provider value={state}>{children}</Context.Provider>\n// }\n// const useSharedState = () => {\n// return React.useContext(Context);\n// }\n// return {\n// Context,\n// Provider: SharedStateProvider,\n// useSharedState,\n// useWatchSharedState: () => {\n// const state = useSharedState();\n// return state ? useWatchSharedState(state) : undefined;\n// }\n// }\n// }\n//# sourceMappingURL=SharedState.js.map","import { useEffect, useRef } from \"react\";\n/**\n *\n * @param callback\n * @param skipFn an optional function to skip the callback if the event matches some condition. Return true to skip\n * @returns\n */\nexport function useClickOutside(callback, skipFn) {\n const ref = useRef(null);\n useEffect(() => {\n const handleClick = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n if (!skipFn || !skipFn(e)) {\n callback(e);\n }\n }\n };\n // add te listener just after the render to avoid the callback to be called on the current click\n // if you are in a click context\n window.setTimeout(() => {\n document.addEventListener('click', handleClick);\n }, 0);\n return () => {\n document.removeEventListener('click', handleClick);\n };\n }, []);\n return ref;\n}\n//# sourceMappingURL=useClickOutside.js.map","import { useState } from 'react';\nexport function useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = async (text) => {\n if (!navigator?.clipboard) {\n console.warn('Clipboard not supported');\n return false;\n }\n // Try to save to clipboard then save it in the state if worked\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n }\n catch (error) {\n console.warn('Copy failed', error);\n setCopiedText(null);\n return false;\n }\n };\n return [copiedText, copy];\n}\n//# sourceMappingURL=useCopyToClipboard.js.map","import { useEffect } from \"react\";\nexport function useDarkMode(cb) {\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const _cb = (e) => cb(e.matches);\n mediaQuery.addEventListener('change', _cb);\n cb(mediaQuery.matches);\n return () => mediaQuery.removeEventListener('change', _cb);\n }, []);\n}\n//# sourceMappingURL=useDarkMode.js.map","import { useEffect, useState } from \"react\";\nexport function useDebounce(value, delay) {\n const [debounceValue, setDebounceValue] = useState(value);\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebounceValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return debounceValue;\n}\n//# sourceMappingURL=useDebounce.js.map","import { useEffect } from \"react\";\nfunction startSse(url, onMessage, onCompleted) {\n const chunks = [];\n const sse = new EventSource(url);\n sse.addEventListener(\"message\", ev => {\n const data = JSON.parse(ev.data);\n if (data) {\n chunks.push(data);\n onMessage(chunks.join(''));\n }\n });\n sse.addEventListener(\"close\", (ev) => {\n sse.close();\n const msg = JSON.parse(ev.data);\n onCompleted(msg);\n });\n return () => {\n sse.close();\n };\n}\nexport function useEventSource(url, onMessage, onCompleted) {\n useEffect(() => {\n if (typeof url === 'function') {\n url().then(url => startSse(url, onMessage, onCompleted));\n }\n else {\n startSse(url, onMessage, onCompleted);\n }\n }, [url]);\n}\n//# sourceMappingURL=useEventSource.js.map","import { useEffect, useState } from \"react\";\nexport function useFetch(fetcher, opts) {\n if (Array.isArray(opts)) {\n opts = { deps: opts };\n }\n const options = (opts || {});\n const [error, setError] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [data, setData] = useState(options.defaultValue);\n const fetch = () => {\n options.start && options.start();\n setIsLoading(true);\n return fetcher().then((result) => {\n setData(result);\n options.onSuccess && options.onSuccess(result);\n }).catch(error => {\n setError(error);\n options.onError && options.onError(error);\n }).finally(() => {\n setIsLoading(false);\n options.end && options.end();\n });\n };\n useEffect(() => {\n if (!options.condition || options.condition()) {\n fetch();\n }\n }, options.deps);\n return { data, isLoading, error, setData, refetch: fetch };\n}\nexport function useFetchOnce(fetcher, opts) {\n if (!opts || Array.isArray(opts)) {\n opts = { deps: [] };\n }\n else if (opts) {\n opts.deps = [];\n }\n return useFetch(fetcher, opts);\n}\n//# sourceMappingURL=useFetch.js.map","import { useState } from \"react\";\nexport function useFlag(isOn = false) {\n const [state, setState] = useState(isOn);\n return {\n isOn: state,\n isOff: !state,\n set: (value) => setState(value),\n on: () => setState(true),\n off: () => setState(false),\n toggle: () => setState(!state)\n };\n}\n//# sourceMappingURL=useFlag.js.map","import { useEffect } from \"react\";\n/**\n * if leave option is true then callback will be called when the target leaves the viewport\n * otherwise when it enters the viewport\n * @param target\n * @param cb\n * @param opts\n */\nexport function useIntersectionObserver(target, cb, opts = {}) {\n useEffect(() => {\n const observer = new IntersectionObserver(entries => {\n const isEntering = entries[0].isIntersecting;\n if (opts.leave) {\n if (!isEntering) {\n cb(entries[0]);\n }\n }\n else {\n if (isEntering) {\n cb(entries[0]);\n }\n }\n }, { threshold: opts.threshold || 1 });\n if (target.current) {\n observer.observe(target.current);\n }\n return () => {\n if (target.current) {\n observer.unobserve(target.current);\n }\n };\n }, opts.deps ? opts.deps.concat(target) : [target]);\n}\n//# sourceMappingURL=useIntersectionObserver.js.map","import { useEffect, useRef } from \"react\";\nexport function useIsFirstRendering() {\n const isFirstRender = useRef(true);\n useEffect((cb) => {\n if (cb && isFirstRender.current) {\n cb();\n }\n isFirstRender.current = false;\n // ---> StrictMode: The following is REQUIRED to reset/cleanup:\n return () => { isFirstRender.current = true; };\n }, []);\n return isFirstRender.current;\n}\n//# sourceMappingURL=useIsFistRendering.js.map","import { useEffect, useLayoutEffect } from \"react\";\nconst useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\nexport { useSafeLayoutEffect };\n//# sourceMappingURL=useSafeLayoutEffect.js.map","import { useState } from \"react\";\nexport class SharedValue {\n state;\n constructor(state) {\n this.state = state;\n }\n get() {\n return this.state[0];\n }\n set(value) {\n this.state[1](value);\n }\n}\n/**\n * Share a stateful value\n */\nexport function useSharedValue(initialValue) {\n const state = useState(initialValue);\n return new SharedValue(state);\n}\n//# sourceMappingURL=useSharedValue.js.map","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nexport function cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n//# sourceMappingURL=cn.js.map"],"names":["getRealSize","size","Error","Avatar","src","name","shape","color","className","rounded","sizeClass","_jsx","alt","title","first","second","split","text","children","fill","viewBox","d","SvgAvatar","cn","inputs","twMerge","clsx","badgeVariants","cva","variants","variant","default","secondary","destructive","attention","success","info","done","defaultVariants","Badge","onClick","props","dotBadgeVariants","dotVariants","DotBadge","dotClassName","_jsxs","cx","cy","r","Center","PositionResolver","left","top","width","height","alignAxis","gap","constructor","this","position","pos","anchorRect","elemRect","bottom","right","align","computePosition","constraints","constrainWidth","constrainHeight","rect","DOMRect","flipAxis","axis","newAlign","flipAlign","newPos","flipPos","isElementVisibleOnAxis","clientRect","resolver","computedPos","isVisibleOnXAxis","isVisibleOnYAxis","newConstraints","isElementVisible","intersectRects","rect1","rect2","x1","Math","max","y1","x2","min","y2","isScrollable","element","hasScrollY","scrollHeight","clientHeight","hasScrollX","scrollWidth","clientWidth","style","getComputedStyle","overflowY","overflowX","PopupController","options","root","scrollableParents","visibleClientRect","context","document","documentElement","parents","parent","parentElement","push","getScrollableParents","anchor","length","getBoundingClientRect","i","l","computeVisibleClientRect","registerListeners","updateHandler","update","window","addEventListener","closeOnClick","closeOnEsc","ev","contains","target","tryClose","setTimeout","key","blockPageScroll","body","overflow","removeEventListener","open","tryOpen","cleanup","display","visibility","onOpen","close","onClose","undefined","isOpen","createPopupElement","popup","createElement","margin","padding","border","background","PopupContext","createContext","usePopupController","ctrl","useContext","DOMPopup","ctrlRef","id","zIndex","popupRef","useRef","setCtrl","useState","useEffect","_ctrl","current","Provider","value","createPortal","ref","Popup","others","OptionAdapter","filter","items","lcText","toLowerCase","item","valueOf","includes","renderOption","findById","find","idOf","createItem","_value","StringOptionAdapter","String","static","StringOptionAdapterWithCreate","getDefaultComboBoxLayout","fullWidth","unstyledInput","buttonRight","buttonWidth","maxMenuHeight","menuClass","inputClass","INPUT_NO_PADDING","optionClass","Input","Menu","Toggle","ComboBox","menuAlign","menuGap","focusOnMount","onSelect","api","layout","layoutOpts","adapter","placeholder","popupId","floor","random","popupCtrl","inputRef","Object","assign","inputBoxRef","React","useComboboxCtrl","focus","openMenu","closeMenu","toggle","toggleMenu","setInputValue","inputText","inputValue","selectedItem","showMenu","isMenuOpen","filteredItems","_Fragment","boxRef","fillWidth","ComboInput","paddingRight","getInputProps","backgroundColor","alignItems","justifyContent","getToggleButtonProps","ComboToggle","ChevronUpIcon","ChevronDownIcon","ComboMenu","highlightedIndex","maxHeight","getMenuProps","map","index","getItemProps","ComboboxController","withState","setState","_selectedItem","_filteredItems","_inputText","_highlightedIndex","_isMenuOpen","clone","updateState","popupPosition","_item","highlightIndex","navigateToTop","getElementById","querySelector","scrollIntoView","onMouseEnter","onMouseLeave","onChange","onKeyDown","decrModulo","buttonVariants","outline","ghost","link","primary","unstyled","xs","sm","md","lg","xl","icon","Button","forwardRef","asChild","isDisabled","isLoading","type","buttonElement","Slot","disabled","autoFocus","Loader2","VTooltip","description","placement","displayName","CopyButton","content","toast","isCopied","setIsCopied","navigator","clipboard","writeText","then","status","message","duration","catch","err","console","error","Check","CopyIcon","ThemeProviderContext","theme","setTheme","ThemeProvider","defaultTheme","storageKey","localStorage","getItem","classList","remove","add","systemTheme","matchMedia","matches","setItem","useTheme","ModeOption","option","ModeToggle","Computer","Sun","Moon","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","VisuallyHidden","clip","whiteSpace","wordWrap","ModalContext","useIsInModal","ModalContextProvider","VModal","noCloseButton","allowOverflow","disableCloseOnClickOutside","handleOpenChange","Dialog","onOpenChange","DialogOverlay","DialogDescription","DialogContent","DialogClose","X","VModalTitle","show","DialogTitle","VModalBody","VModalFooter","center","DialogPrimitive","Root","DialogTrigger","Trigger","DialogPortal","Portal","Close","Overlay","Content","onOpenAutoFocus","event","preventDefault","Description","Title","noPadding","legacy","clearable","readOnly","Separator","orientation","decorative","SeparatorPrimitive","PopoverContext","Popover","hover","click","_open","setOpen","insideModal","PopoverPrimitive","modal","handleHover","PopoverTrigger","prev","PopoverAnchor","Anchor","PopoverContent","side","PopoverClose","Command","CommandPrimitive","CommandDialog","CommandInput","Search","CommandList","List","CommandEmpty","Empty","CommandGroup","Group","CommandSeparator","CommandItem","Item","CommandShortcut","VSelectBox","optionLabel","addNew","addNewLabel","filterBy","label","popupClass","isClearable","multiple","by","triggerRef","setWidth","filterValue","setFilterValue","updateWidth","contentWidth","resizeObserver","ResizeObserver","observe","disconnect","isOptionSelected","selectedValues","some","v","isOptionsEqual","a","b","isEqual","filteredOptions","filterLc","filterFn","o","getFilterByFn","e","Array","isArray","arrayValue","slice","renderMultipleValue","singleValue","renderSingleValue","stopPropagation","ChevronsUpDown","SearchIcon","opt","isSelected","currentValues","newValues","_onClick","SquarePlus","strokeWidth","absoluteStrokeWidth","TabsContext","tabs","setTab","responsive","VTabs","defaultValue","onTabChange","currentValue","setValue","handleValueChange","newValue","useCallback","tabName","TabsPrimitive","onValueChange","VTabsBar","handleTabChange","tab","t","href","history","pushState","TabsList","TabsTrigger","warn","VTabsPanel","TabsContent","handleClick","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset","delayDuration","labelVariants","Label","required","LabelPrimitive","Breadcrumbs","maxItems","separator","Breadcrumb","BreadcrumbList","Fragment","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","ChevronRight","firstItem","lastItems","BreadcrumbEllipsis","role","MoreHorizontal","AnimateChangeInHeight","containerRef","setHeight","entries","observedHeight","contentRect","Calendar","classNames","showOutsideDays","daySize","DayPicker","months","month","caption","caption_label","nav","nav_button","nav_button_previous","nav_button_next","table","head_row","head_cell","row","cell","mode","day","day_range_start","day_range_end","day_selected","day_today","day_outside","day_disabled","day_range_middle","day_hidden","components","IconLeft","ChevronLeft","IconRight","Checkbox","CheckboxPrimitive","Indicator","DynamicLabel","labelRenderer","fallbackLabel","setLabel","setIsLoading","async","result","Promise","resolvedLabel","renderLabel","SelectionCombobox","filterType","filterValues","setFilterValues","commandInput","setCommandInput","commandInputRef","nonSelectedFilterValues","onInputCapture","currentTarget","checked","DateCombobox","selectedDate","Date","dayjs","format","defaultMonth","selected","date","TextCombobox","generateComboboxOptions","setFilters","filterGroups","f","textValue","filterGroup","group","Filters","filters","join","TextFilter","selectedView","setTextValue","handleClose","handleTextFilterAdd","trim","DateFilter","setSelectedDate","selectedGroup","g","selectedDateStart","setHours","toISOString","SelectFilter","groupName","getFilteredOptions","groupTitle","existingFilterIndex","findIndex","filterOption","updatedFilters","FilterBar","setSelectedView","searchParams","URL","location","params","URLSearchParams","toString","filterString","values","encodeURIComponent","set","delete","newUrl","pathname","replaceState","filtersParam","get","parsedFilters","pair","encodedName","valuesString","decodeURIComponent","encodedValue","log","filterOptions","matchingOption","ListFilter","selectedGroupType","renderFilterOptions","val","handleSelect","getAvailableFilterGroups","FilterOperator","Heading","level","h1","h2","h3","h4","h5","h6","textVariants","weight","normal","medium","semibold","Text","ConfirmModal","onConfirm","onCancel","cancelButtonRef","TriangleAlert","useToast","ToastContext","PORTAL_ID","tempNode","portalEl","setPortalEl","doc","ownerDocument","appendChild","icons","CircleCheck","CircleX","warning","AlertTriangle","Info","colors","NotificationPanel","data","setShow","timeoutId","clearTimeout","Icon","Transition","appear","as","afterLeave","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","ToastProvider","setData","DeleteModal","idToDelete","setIdToDelete","deleteApi","finally","Divider","Dropdown","trigger","MenuButton","MenuItems","MenuItem","_MenuItem","active","DropdownList","Listbox","ListboxButton","ChevronDown","ListboxOptions","ListboxOption","Spinner","xmlns","stroke","Variants","soft","SpinnerVariants","EmptyCollection","buttonLabel","vectorEffect","strokeLinecap","strokeLinejoin","Plus","FileUploadInput","onUpload","cursor","files","ar","fileListToArray","DropZone","dropZoneProps","useDropZone","htmlFor","dragOverClass","dropEffect","onDrop","__dragOver_cnt__","dataTransfer","promises","traverseFileTree","path","resolve","isFile","file","defineProperty","isDirectory","dirReader","createReader","readEntries","results","entry","all","filesArrays","flat","webkitGetAsEntry","allFiles","onDragOver","onDragEnter","el","cnt","_onDragEnter","onDragLeave","_onDragLeave","FormItem","direction","Styles","INPUT_UNSTYLED","INPUT","InputList","delimiters","setText","splice","onBlur","isEmpty","indexOf","pop","Link","underline","underlineClass","MenuList","MenuListItem","MessageBox","defaultIcon","titleColor","textColor","bgColor","ErrorBox","InfoBox","WarningBox","SuccessBox","DefaultBox","Modal","TransitionChild","unmount","DialogPanel","ModalCloseButton","tabIndex","ModalTitle","showDivider","ModalFooter","ModalBody","numberToString","isNaN","NumberInput","noScroll","noSpinners","onWheel","blur","num","parseFloat","RadioOptionAdapter","labelOf","RadioGroup","checkColor","cols","checkIcon","CheckIcon","DefaultCheckIcon","setSelected","selectedId","RadioOption","isHighlighted","setIsHighlighted","isChecked","opacity","version","fillRule","SelectBox","clearTitle","ClearIcon","showFilter","setFilter","buttonRef","setButtonWidth","onClear","onFilterChange","onFilterKeyDown","ChevronsUpDownIcon","ListOption","defaultOptionLayout","check","reverse","SelectList","optionLayout","noCheck","optionEquals","useMemo","o1","o2","SelectListOption","SelectStack","Option","SidePanel","panelWidth","setPanelWidth","onMouseDown","isDragging","startX","pageX","startWidth","handleMouseMove","deltaX","newWidth","handleMouseUp","CloseButton","sizes","Switch","UISwitch","Table","RowSkeleton","columns","_","TBody","rows","TR","useTabs","applyCurrentTab","currentTab","newTabs","newTab","Tabs","navigate","_tabs","_setTabs","select","TabsBar","actions","TabsPanel","isValidElement","Textarea","setCurrentValue","Property","watchers","watcher","watch","w","createCompositeStateProvider","StateClass","Context","consume","_current","withConsumer","useCompositeState","useGetCompositeStateProperty","property","useSetCompositeStateProperty","useWatchCompositeStateProperty","useSlot","slot","useWatchSlot","useDefineSlot","SharedState","addWatcher","useWatchSharedState","state","useClickOutside","callback","skipFn","useCopyToClipboard","copiedText","setCopiedText","useDarkMode","cb","mediaQuery","_cb","useDebounce","delay","debounceValue","setDebounceValue","handler","startSse","url","onMessage","onCompleted","chunks","sse","EventSource","JSON","parse","msg","useEventSource","useFetch","fetcher","opts","deps","setError","fetch","start","onSuccess","onError","end","condition","refetch","useFetchOnce","useFlag","isOn","isOff","on","off","useIntersectionObserver","observer","IntersectionObserver","isEntering","isIntersecting","threshold","unobserve","concat","useIsFirstRendering","isFirstRender","useSafeLayoutEffect","useLayoutEffect","SharedValue","useSharedValue","initialValue"],"mappings":"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"}
|