@vertesia/ui 1.0.0-dev.20260128.144200 → 1.0.0-dev.20260225.024852Z
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/InputList.js +1 -1
- package/lib/esm/core/components/InputList.js.map +1 -1
- package/lib/esm/core/components/Overlay.js +1 -1
- package/lib/esm/core/components/Overlay.js.map +1 -1
- package/lib/esm/core/components/SidePanel.js +8 -2
- package/lib/esm/core/components/SidePanel.js.map +1 -1
- package/lib/esm/core/components/Switch.js +1 -1
- package/lib/esm/core/components/Switch.js.map +1 -1
- package/lib/esm/core/components/index.js +0 -8
- package/lib/esm/core/components/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/MessageBox.js.map +1 -0
- package/lib/esm/core/components/shadcn/Panel.js +13 -0
- package/lib/esm/core/components/shadcn/Panel.js.map +1 -0
- package/lib/esm/core/components/{Badge.js → shadcn/badge.js} +2 -2
- package/lib/esm/core/components/shadcn/badge.js.map +1 -0
- package/lib/esm/core/components/shadcn/command.js +1 -1
- package/lib/esm/core/components/shadcn/command.js.map +1 -1
- package/lib/esm/core/components/shadcn/filters/filterBar.js +73 -83
- package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/esm/core/components/shadcn/index.js +4 -2
- package/lib/esm/core/components/shadcn/index.js.map +1 -1
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js +10 -0
- package/lib/esm/core/components/shadcn/modal/ConfirmModal.js.map +1 -0
- package/lib/esm/core/components/{DeleteModal.js → shadcn/modal/DeleteModal.js} +1 -1
- package/lib/esm/core/components/shadcn/modal/DeleteModal.js.map +1 -0
- package/lib/esm/core/components/shadcn/{dialog.js → modal/dialog.js} +19 -15
- package/lib/esm/core/components/shadcn/modal/dialog.js.map +1 -0
- package/lib/esm/core/components/shadcn/modal/index.js +4 -0
- package/lib/esm/core/components/shadcn/modal/index.js.map +1 -0
- package/lib/esm/core/components/shadcn/popover.js +4 -2
- package/lib/esm/core/components/shadcn/popover.js.map +1 -1
- package/lib/esm/core/components/shadcn/selectBox.js +19 -15
- package/lib/esm/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/esm/core/components/shadcn/tabs.js +16 -14
- package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
- package/lib/esm/core/components/shadcn/textarea.js +30 -2
- package/lib/esm/core/components/shadcn/textarea.js.map +1 -1
- package/lib/esm/core/components/shadcn/tooltip.js +5 -1
- package/lib/esm/core/components/shadcn/tooltip.js.map +1 -1
- package/lib/esm/features/agent/PayloadBuilder.js +45 -0
- package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/esm/features/agent/chat/AgentChart.js +12 -232
- package/lib/esm/features/agent/chat/AgentChart.js.map +1 -1
- package/lib/esm/features/agent/chat/AskUserWidget.js +2 -1
- package/lib/esm/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/esm/features/agent/chat/DocumentPanel.js +46 -0
- package/lib/esm/features/agent/chat/DocumentPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/DocumentTabBar.js +17 -0
- package/lib/esm/features/agent/chat/DocumentTabBar.js.map +1 -0
- package/lib/esm/features/agent/chat/ModernAgentConversation.js +159 -402
- package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +99 -57
- package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +4 -4
- package/lib/esm/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +4 -4
- package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +3 -3
- package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js +25 -22
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +110 -55
- package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js +2 -2
- package/lib/esm/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +146 -55
- package/lib/esm/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +5 -6
- package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +110 -2
- package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/esm/features/agent/chat/SkillWidgetProvider.js +28 -15
- package/lib/esm/features/agent/chat/SkillWidgetProvider.js.map +1 -1
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js +146 -0
- package/lib/esm/features/agent/chat/hooks/useAgentPlans.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js +180 -0
- package/lib/esm/features/agent/chat/hooks/useAgentStream.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js +100 -0
- package/lib/esm/features/agent/chat/hooks/useDocumentPanel.js.map +1 -0
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js +90 -0
- package/lib/esm/features/agent/chat/hooks/useFileProcessing.js.map +1 -0
- package/lib/esm/features/agent/chat/index.js +6 -5
- package/lib/esm/features/agent/chat/index.js.map +1 -1
- package/lib/esm/features/agent/chat/types/document.js +2 -0
- package/lib/esm/features/agent/chat/types/document.js.map +1 -0
- package/lib/esm/features/agent/index.js +0 -2
- package/lib/esm/features/agent/index.js.map +1 -1
- package/lib/esm/features/store/collections/BrowseCollectionView.js +4 -6
- package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
- package/lib/esm/features/store/collections/CreateCollection.js +4 -4
- package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js +1 -1
- package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/esm/features/store/objects/DocumentSearchResults.js +5 -5
- package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/esm/features/store/objects/ExportPropertiesModal.js +3 -3
- package/lib/esm/features/store/objects/ExportPropertiesModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/ContentOverview.js +19 -120
- package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js +1 -1
- package/lib/esm/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js +2 -2
- package/lib/esm/features/store/objects/components/SelectDocumentModal.js.map +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
- package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
- package/lib/esm/features/store/objects/components/index.js +1 -1
- package/lib/esm/features/store/objects/components/index.js.map +1 -1
- package/lib/esm/features/store/objects/components/useDownloadFile.js +192 -0
- package/lib/esm/features/store/objects/components/useDownloadFile.js.map +1 -0
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js +1 -2
- package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
- package/lib/esm/features/store/objects/selection/SelectionActions.js +5 -8
- package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +4 -4
- package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js +2 -2
- package/lib/esm/features/store/objects/selection/actions/ChangeTypeAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js +1 -1
- package/lib/esm/features/store/objects/selection/actions/ExportPropertiesAction.js.map +1 -1
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js +3 -3
- package/lib/esm/features/store/objects/selection/actions/StartWorkflowComponent.js.map +1 -1
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +13 -13
- package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js +15 -8
- package/lib/esm/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
- package/lib/esm/features/store/types/ObjectSchemaEditor.js +6 -5
- package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentType.js +3 -3
- package/lib/esm/features/store/types/SelectContentType.js.map +1 -1
- package/lib/esm/features/store/types/SelectContentTypeModal.js +5 -4
- package/lib/esm/features/store/types/SelectContentTypeModal.js.map +1 -1
- package/lib/esm/features/store/types/TableLayoutEditor.js +4 -4
- package/lib/esm/features/store/types/TableLayoutEditor.js.map +1 -1
- package/lib/esm/features/user/UserInfo.js +73 -9
- package/lib/esm/features/user/UserInfo.js.map +1 -1
- package/lib/esm/features/utils/print.js +0 -1
- package/lib/esm/features/utils/print.js.map +1 -1
- package/lib/esm/layout/AppLayout.js +3 -4
- package/lib/esm/layout/AppLayout.js.map +1 -1
- package/lib/esm/layout/Sidebar.js +5 -5
- package/lib/esm/layout/Sidebar.js.map +1 -1
- package/lib/esm/router/HistoryNavigator.js +7 -1
- package/lib/esm/router/HistoryNavigator.js.map +1 -1
- package/lib/esm/router/Nav.js +2 -2
- package/lib/esm/router/Nav.js.map +1 -1
- package/lib/esm/session/UserSession.js +35 -9
- package/lib/esm/session/UserSession.js.map +1 -1
- package/lib/esm/session/UserSessionProvider.js +3 -2
- package/lib/esm/session/UserSessionProvider.js.map +1 -1
- package/lib/esm/shell/apps/AppProjectSelector.js +2 -2
- package/lib/esm/shell/apps/AppProjectSelector.js.map +1 -1
- package/lib/esm/shell/apps/StandaloneApp.js +2 -2
- package/lib/esm/shell/apps/StandaloneApp.js.map +1 -1
- package/lib/esm/shell/login/InviteAcceptModal.js +2 -2
- package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -1
- package/lib/esm/shell/login/SignInModal.js +1 -1
- package/lib/esm/shell/login/SignInModal.js.map +1 -1
- package/lib/esm/shell/login/SignupForm.js +2 -2
- package/lib/esm/shell/login/SignupForm.js.map +1 -1
- package/lib/esm/shell/login/UserInfo.js +2 -2
- package/lib/esm/shell/login/UserInfo.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js +1 -1
- package/lib/esm/widgets/json-view/JSONCode.js.map +1 -1
- package/lib/esm/widgets/json-view/JSONDisplay.js +1 -1
- package/lib/esm/widgets/json-view/JSONDisplay.js.map +1 -1
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js +84 -13
- package/lib/esm/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/MarkdownFigure.js +40 -0
- package/lib/esm/widgets/markdown/MarkdownFigure.js.map +1 -0
- package/lib/esm/widgets/markdown/MarkdownRenderer.js +42 -7
- package/lib/esm/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/esm/widgets/markdown/MermaidDiagram.js +80 -5
- package/lib/esm/widgets/markdown/MermaidDiagram.js.map +1 -1
- package/lib/esm/widgets/markdown/codeBlockHandlers.js +33 -33
- package/lib/esm/widgets/markdown/codeBlockHandlers.js.map +1 -1
- package/lib/esm/widgets/markdown/codeBlockHandlers.test.js +2 -29
- package/lib/esm/widgets/markdown/codeBlockHandlers.test.js.map +1 -1
- package/lib/esm/widgets/markdown/index.js +1 -0
- package/lib/esm/widgets/markdown/index.js.map +1 -1
- package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js +77 -0
- package/lib/esm/widgets/markdown/normalizeCustomSchemeLinks.js.map +1 -0
- package/lib/esm/widgets/markdown/normalizeDirectives.js +45 -0
- package/lib/esm/widgets/markdown/normalizeDirectives.js.map +1 -0
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js +96 -0
- package/lib/esm/widgets/markdown/remarkDirectiveHandler.js.map +1 -0
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js +8 -14
- package/lib/esm/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/esm/widgets/schema-editor/ManagedSchema.js.map +1 -1
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js +3 -3
- package/lib/esm/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
- package/lib/esm/widgets/schema-editor/json-schema4-utils.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/core/components/SidePanel.d.ts +4 -1
- package/lib/types/core/components/SidePanel.d.ts.map +1 -1
- package/lib/types/core/components/index.d.ts +0 -8
- package/lib/types/core/components/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/MessageBox.d.ts.map +1 -0
- package/lib/types/core/components/{Panel.d.ts → shadcn/Panel.d.ts} +3 -1
- package/lib/types/core/components/shadcn/Panel.d.ts.map +1 -0
- package/lib/types/core/components/{Badge.d.ts → shadcn/badge.d.ts} +4 -4
- package/lib/types/core/components/shadcn/badge.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/button.d.ts +1 -1
- package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/index.d.ts +4 -2
- package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/input.d.ts +1 -1
- package/lib/types/core/components/shadcn/modal/ConfirmModal.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/modal/DeleteModal.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/{dialog.d.ts → modal/dialog.d.ts} +7 -4
- package/lib/types/core/components/shadcn/modal/dialog.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/modal/index.d.ts +4 -0
- package/lib/types/core/components/shadcn/modal/index.d.ts.map +1 -0
- package/lib/types/core/components/shadcn/popover.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/selectBox.d.ts +9 -5
- package/lib/types/core/components/shadcn/selectBox.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/tabs.d.ts +14 -5
- package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/textarea.d.ts +6 -2
- package/lib/types/core/components/shadcn/textarea.d.ts.map +1 -1
- package/lib/types/core/components/shadcn/tooltip.d.ts.map +1 -1
- package/lib/types/features/agent/PayloadBuilder.d.ts +22 -4
- package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AgentChart.d.ts +3 -44
- package/lib/types/features/agent/chat/AgentChart.d.ts.map +1 -1
- package/lib/types/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/types/features/agent/chat/DocumentPanel.d.ts +16 -0
- package/lib/types/features/agent/chat/DocumentPanel.d.ts.map +1 -0
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts +10 -0
- package/lib/types/features/agent/chat/DocumentTabBar.d.ts.map +1 -0
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts +69 -1
- package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +36 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts +18 -2
- package/lib/types/features/agent/chat/ModernAgentOutput/BatchProgressPanel.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts +4 -7
- package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts +2 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +35 -7
- package/lib/types/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts +11 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts +20 -2
- package/lib/types/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +18 -1
- package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/types/features/agent/chat/SkillWidgetProvider.d.ts.map +1 -1
- package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts +22 -0
- package/lib/types/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts +42 -0
- package/lib/types/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts +22 -0
- package/lib/types/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -0
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts +27 -0
- package/lib/types/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -0
- package/lib/types/features/agent/chat/index.d.ts +12 -8
- package/lib/types/features/agent/chat/index.d.ts.map +1 -1
- package/lib/types/features/agent/chat/types/document.d.ts +5 -0
- package/lib/types/features/agent/chat/types/document.d.ts.map +1 -0
- package/lib/types/features/agent/index.d.ts +0 -2
- package/lib/types/features/agent/index.d.ts.map +1 -1
- package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
- package/lib/types/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/PropertiesEditorModal.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/index.d.ts +1 -1
- package/lib/types/features/store/objects/components/index.d.ts.map +1 -1
- package/lib/types/features/store/objects/components/useDownloadFile.d.ts +35 -0
- package/lib/types/features/store/objects/components/useDownloadFile.d.ts.map +1 -0
- package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts +1 -1
- package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ChangeTypeAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/selection/actions/ExportPropertiesAction.d.ts.map +1 -1
- package/lib/types/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts +2 -1
- package/lib/types/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts +1 -1
- package/lib/types/features/store/types/SelectContentTypeModal.d.ts.map +1 -1
- package/lib/types/features/store/types/TableLayoutEditor.d.ts +2 -1
- package/lib/types/features/store/types/TableLayoutEditor.d.ts.map +1 -1
- package/lib/types/features/user/UserInfo.d.ts +12 -1
- package/lib/types/features/user/UserInfo.d.ts.map +1 -1
- package/lib/types/features/utils/print.d.ts.map +1 -1
- package/lib/types/layout/AppLayout.d.ts.map +1 -1
- package/lib/types/layout/Sidebar.d.ts +4 -2
- package/lib/types/layout/Sidebar.d.ts.map +1 -1
- package/lib/types/router/HistoryNavigator.d.ts.map +1 -1
- package/lib/types/router/Nav.d.ts +6 -1
- package/lib/types/router/Nav.d.ts.map +1 -1
- package/lib/types/session/UserSession.d.ts.map +1 -1
- package/lib/types/session/UserSessionProvider.d.ts +1 -0
- package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/types/widgets/json-view/JSONCode.d.ts.map +1 -1
- package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts +10 -1
- package/lib/types/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/MarkdownFigure.d.ts +15 -0
- package/lib/types/widgets/markdown/MarkdownFigure.d.ts.map +1 -0
- package/lib/types/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/types/widgets/markdown/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts +5 -2
- package/lib/types/widgets/markdown/codeBlockHandlers.d.ts.map +1 -1
- package/lib/types/widgets/markdown/index.d.ts +1 -0
- package/lib/types/widgets/markdown/index.d.ts.map +1 -1
- package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts +9 -0
- package/lib/types/widgets/markdown/normalizeCustomSchemeLinks.d.ts.map +1 -0
- package/lib/types/widgets/markdown/normalizeDirectives.d.ts +20 -0
- package/lib/types/widgets/markdown/normalizeDirectives.d.ts.map +1 -0
- package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts +2 -0
- package/lib/types/widgets/markdown/remarkDirectiveHandler.d.ts.map +1 -0
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts +1 -3
- package/lib/types/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts +1 -1
- package/lib/types/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
- 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 +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js +1 -1
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-shell.js +1 -1
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +1 -1
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/package.json +14 -10
- package/src/core/components/InputList.tsx +1 -1
- package/src/core/components/Overlay.tsx +1 -1
- package/src/core/components/SidePanel.tsx +29 -15
- package/src/core/components/Switch.tsx +1 -1
- package/src/core/components/index.ts +0 -8
- package/src/core/components/shadcn/Panel.tsx +50 -0
- package/src/core/components/{Badge.tsx → shadcn/badge.tsx} +3 -3
- package/src/core/components/shadcn/command.tsx +1 -1
- package/src/core/components/shadcn/filters/filterBar.tsx +76 -87
- package/src/core/components/shadcn/index.ts +5 -3
- package/src/core/components/{ConfirmModal.tsx → shadcn/modal/ConfirmModal.tsx} +8 -8
- package/src/core/components/{DeleteModal.tsx → shadcn/modal/DeleteModal.tsx} +1 -1
- package/src/core/components/shadcn/{dialog.tsx → modal/dialog.tsx} +43 -32
- package/src/core/components/shadcn/modal/index.ts +3 -0
- package/src/core/components/shadcn/popover.tsx +4 -2
- package/src/core/components/shadcn/selectBox.tsx +71 -52
- package/src/core/components/shadcn/tabs.tsx +36 -19
- package/src/core/components/shadcn/textarea.tsx +43 -2
- package/src/core/components/shadcn/tooltip.tsx +23 -17
- package/src/features/agent/PayloadBuilder.tsx +70 -9
- package/src/features/agent/chat/AgentChart.tsx +46 -678
- package/src/features/agent/chat/AskUserWidget.tsx +4 -3
- package/src/features/agent/chat/DocumentPanel.tsx +120 -0
- package/src/features/agent/chat/DocumentTabBar.tsx +49 -0
- package/src/features/agent/chat/ModernAgentConversation.tsx +403 -549
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +162 -55
- package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +40 -10
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +12 -16
- package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +3 -3
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +68 -75
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +206 -94
- package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +22 -5
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +295 -113
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +11 -8
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +133 -4
- package/src/features/agent/chat/SkillWidgetProvider.tsx +32 -15
- package/src/features/agent/chat/hooks/useAgentPlans.ts +190 -0
- package/src/features/agent/chat/hooks/useAgentStream.ts +239 -0
- package/src/features/agent/chat/hooks/useDocumentPanel.ts +118 -0
- package/src/features/agent/chat/hooks/useFileProcessing.ts +126 -0
- package/src/features/agent/chat/index.ts +18 -17
- package/src/features/agent/chat/types/document.ts +4 -0
- package/src/features/agent/index.ts +0 -2
- package/src/features/store/collections/BrowseCollectionView.tsx +5 -8
- package/src/features/store/collections/CreateCollection.tsx +8 -8
- package/src/features/store/collections/EditCollectionView.tsx +1 -1
- package/src/features/store/objects/DocumentSearchResults.tsx +9 -13
- package/src/features/store/objects/ExportPropertiesModal.tsx +9 -7
- package/src/features/store/objects/components/ContentOverview.tsx +29 -155
- package/src/features/store/objects/components/PropertiesEditorModal.tsx +0 -1
- package/src/features/store/objects/components/SelectDocumentModal.tsx +6 -6
- package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
- package/src/features/store/objects/components/index.ts +1 -1
- package/src/features/store/objects/components/useDownloadFile.ts +237 -0
- package/src/features/store/objects/search/DocumentSearchContext.ts +1 -2
- package/src/features/store/objects/selection/SelectionActions.tsx +0 -4
- package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +13 -13
- package/src/features/store/objects/selection/actions/ChangeTypeAction.tsx +2 -6
- package/src/features/store/objects/selection/actions/ExportPropertiesAction.tsx +1 -3
- package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +8 -8
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +25 -25
- package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +16 -10
- package/src/features/store/types/ObjectSchemaEditor.tsx +32 -29
- package/src/features/store/types/SelectContentType.tsx +3 -3
- package/src/features/store/types/SelectContentTypeModal.tsx +17 -30
- package/src/features/store/types/TableLayoutEditor.tsx +14 -18
- package/src/features/user/UserInfo.tsx +176 -10
- package/src/features/utils/print.ts +0 -1
- package/src/layout/AppLayout.tsx +16 -44
- package/src/layout/Sidebar.tsx +7 -5
- package/src/router/HistoryNavigator.ts +9 -1
- package/src/router/Nav.tsx +7 -2
- package/src/session/UserSession.ts +38 -9
- package/src/session/UserSessionProvider.tsx +3 -2
- package/src/shell/apps/AppProjectSelector.tsx +2 -2
- package/src/shell/apps/StandaloneApp.tsx +3 -3
- package/src/shell/login/InviteAcceptModal.tsx +6 -6
- package/src/shell/login/SignInModal.tsx +1 -1
- package/src/shell/login/SignupForm.tsx +3 -3
- package/src/shell/login/UserInfo.tsx +5 -5
- package/src/widgets/json-view/JSONCode.tsx +1 -3
- package/src/widgets/json-view/JSONDisplay.tsx +1 -1
- package/src/widgets/markdown/ArtifactContentRenderer.tsx +115 -14
- package/src/widgets/markdown/MarkdownFigure.tsx +100 -0
- package/src/widgets/markdown/MarkdownRenderer.tsx +62 -9
- package/src/widgets/markdown/MermaidDiagram.tsx +97 -5
- package/src/widgets/markdown/codeBlockHandlers.test.tsx +3 -34
- package/src/widgets/markdown/codeBlockHandlers.tsx +47 -42
- package/src/widgets/markdown/index.ts +1 -0
- package/src/widgets/markdown/markdown.css +192 -0
- package/src/widgets/markdown/normalizeCustomSchemeLinks.test.ts +86 -0
- package/src/widgets/markdown/normalizeCustomSchemeLinks.ts +91 -0
- package/src/widgets/markdown/normalizeDirectives.ts +50 -0
- package/src/widgets/markdown/remarkDirectiveHandler.ts +119 -0
- package/src/widgets/monacoEditor/MonacoEditor.tsx +8 -22
- package/src/widgets/schema-editor/ManagedSchema.ts +1 -1
- package/src/widgets/schema-editor/editor/PropertyEditor.tsx +5 -5
- package/src/widgets/schema-editor/json-schema4-utils.ts +1 -1
- package/lib/esm/core/components/Badge.js.map +0 -1
- package/lib/esm/core/components/Button.js +0 -32
- package/lib/esm/core/components/Button.js.map +0 -1
- package/lib/esm/core/components/ConfirmModal.js +0 -10
- package/lib/esm/core/components/ConfirmModal.js.map +0 -1
- package/lib/esm/core/components/DeleteModal.js.map +0 -1
- package/lib/esm/core/components/MessageBox.js.map +0 -1
- package/lib/esm/core/components/Modal.js +0 -26
- package/lib/esm/core/components/Modal.js.map +0 -1
- package/lib/esm/core/components/Panel.js +0 -8
- package/lib/esm/core/components/Panel.js.map +0 -1
- package/lib/esm/core/components/SelectBox.js +0 -67
- package/lib/esm/core/components/SelectBox.js.map +0 -1
- package/lib/esm/core/components/shadcn/dialog.js.map +0 -1
- package/lib/esm/core/components/tabs/Tabs.js +0 -78
- package/lib/esm/core/components/tabs/Tabs.js.map +0 -1
- package/lib/esm/core/components/tabs/TabsContext.js +0 -7
- package/lib/esm/core/components/tabs/TabsContext.js.map +0 -1
- package/lib/esm/core/components/tabs/index.js +0 -3
- package/lib/esm/core/components/tabs/index.js.map +0 -1
- package/lib/esm/features/agent/createChartTool.js +0 -632
- package/lib/esm/features/agent/createChartTool.js.map +0 -1
- package/lib/esm/features/agent/examples.js +0 -295
- package/lib/esm/features/agent/examples.js.map +0 -1
- package/lib/esm/features/agent/visualization.js +0 -165
- package/lib/esm/features/agent/visualization.js.map +0 -1
- package/lib/esm/features/store/objects/components/useDownloadObject.js +0 -21
- package/lib/esm/features/store/objects/components/useDownloadObject.js.map +0 -1
- package/lib/types/core/components/Badge.d.ts.map +0 -1
- package/lib/types/core/components/Button.d.ts +0 -14
- package/lib/types/core/components/Button.d.ts.map +0 -1
- package/lib/types/core/components/ConfirmModal.d.ts.map +0 -1
- package/lib/types/core/components/DeleteModal.d.ts.map +0 -1
- package/lib/types/core/components/MessageBox.d.ts.map +0 -1
- package/lib/types/core/components/Modal.d.ts +0 -30
- package/lib/types/core/components/Modal.d.ts.map +0 -1
- package/lib/types/core/components/Panel.d.ts.map +0 -1
- package/lib/types/core/components/SelectBox.d.ts +0 -36
- package/lib/types/core/components/SelectBox.d.ts.map +0 -1
- package/lib/types/core/components/shadcn/dialog.d.ts.map +0 -1
- package/lib/types/core/components/tabs/Tabs.d.ts +0 -25
- package/lib/types/core/components/tabs/Tabs.d.ts.map +0 -1
- package/lib/types/core/components/tabs/TabsContext.d.ts +0 -17
- package/lib/types/core/components/tabs/TabsContext.d.ts.map +0 -1
- package/lib/types/core/components/tabs/index.d.ts +0 -3
- package/lib/types/core/components/tabs/index.d.ts.map +0 -1
- package/lib/types/features/agent/createChartTool.d.ts +0 -178
- package/lib/types/features/agent/createChartTool.d.ts.map +0 -1
- package/lib/types/features/agent/examples.d.ts +0 -59
- package/lib/types/features/agent/examples.d.ts.map +0 -1
- package/lib/types/features/agent/visualization.d.ts +0 -95
- package/lib/types/features/agent/visualization.d.ts.map +0 -1
- package/lib/types/features/store/objects/components/useDownloadObject.d.ts +0 -4
- package/lib/types/features/store/objects/components/useDownloadObject.d.ts.map +0 -1
- package/src/core/components/Button.tsx +0 -63
- package/src/core/components/Modal.tsx +0 -144
- package/src/core/components/Panel.tsx +0 -34
- package/src/core/components/SelectBox.tsx +0 -188
- package/src/core/components/tabs/Tabs.tsx +0 -132
- package/src/core/components/tabs/TabsContext.ts +0 -25
- package/src/core/components/tabs/index.ts +0 -2
- package/src/features/agent/CHART_INSTRUCTIONS.md +0 -228
- package/src/features/agent/createChartTool.ts +0 -643
- package/src/features/agent/examples.ts +0 -321
- package/src/features/agent/visualization.ts +0 -227
- package/src/features/store/objects/components/useDownloadObject.ts +0 -29
- /package/lib/esm/core/components/{MessageBox.js → shadcn/MessageBox.js} +0 -0
- /package/lib/types/core/components/{MessageBox.d.ts → shadcn/MessageBox.d.ts} +0 -0
- /package/lib/types/core/components/{ConfirmModal.d.ts → shadcn/modal/ConfirmModal.d.ts} +0 -0
- /package/lib/types/core/components/{DeleteModal.d.ts → shadcn/modal/DeleteModal.d.ts} +0 -0
- /package/src/core/components/{MessageBox.tsx → shadcn/MessageBox.tsx} +0 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { ColumnLayout, ContentObjectType } from '@vertesia/common';
|
|
3
|
-
import { Button, useToast, useTheme } from '@vertesia/ui/core';
|
|
3
|
+
import { Button, useToast, useTheme, Panel } from '@vertesia/ui/core';
|
|
4
4
|
import { useUserSession } from '@vertesia/ui/session';
|
|
5
5
|
import { MonacoEditor, EditorApi } from '@vertesia/ui/widgets';
|
|
6
6
|
|
|
7
7
|
interface TableLayoutEditorProps {
|
|
8
8
|
objectType: ContentObjectType;
|
|
9
9
|
onLayoutUpdate: (value: ColumnLayout[] | undefined) => void;
|
|
10
|
+
readonly?: boolean;
|
|
10
11
|
}
|
|
11
|
-
export function TableLayoutEditor({ objectType, onLayoutUpdate }: TableLayoutEditorProps) {
|
|
12
|
+
export function TableLayoutEditor({ objectType, onLayoutUpdate, readonly = false }: TableLayoutEditorProps) {
|
|
12
13
|
const toast = useToast();
|
|
13
14
|
const { theme } = useTheme();
|
|
14
15
|
|
|
@@ -78,22 +79,17 @@ export function TableLayoutEditor({ objectType, onLayoutUpdate }: TableLayoutEdi
|
|
|
78
79
|
|
|
79
80
|
|
|
80
81
|
return (
|
|
81
|
-
<
|
|
82
|
-
<
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
editorRef={editorRef}
|
|
93
|
-
theme={theme === 'dark' ? 'vs-dark' : 'vs'}
|
|
94
|
-
/>
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
82
|
+
<Panel title="Table Layout Editor" className="bg-background! h-[calc(100vh-197px)]" action={
|
|
83
|
+
!readonly ? <Button isLoading={isUpdating} variant="outline" size="sm" onClick={onSave}>Save Changes</Button> : undefined
|
|
84
|
+
}>
|
|
85
|
+
<MonacoEditor
|
|
86
|
+
value={value}
|
|
87
|
+
language="json"
|
|
88
|
+
editorRef={editorRef}
|
|
89
|
+
theme={theme === 'dark' ? 'vs-dark' : 'vs'}
|
|
90
|
+
options={{ readOnly: readonly }}
|
|
91
|
+
/>
|
|
92
|
+
</Panel>
|
|
97
93
|
)
|
|
98
94
|
}
|
|
99
95
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { useUserSession } from "@vertesia/ui/session";
|
|
2
1
|
import { ApiKey, PrincipalType, User, UserGroup } from "@vertesia/common";
|
|
3
|
-
import { Avatar,
|
|
4
|
-
import {
|
|
2
|
+
import { Avatar, Popover, PopoverContent, PopoverTrigger, Table, useFetch } from "@vertesia/ui/core";
|
|
3
|
+
import { useUserSession } from "@vertesia/ui/session";
|
|
5
4
|
import { Users } from "lucide-react";
|
|
5
|
+
import { ReactNode } from "react";
|
|
6
6
|
|
|
7
7
|
//TODO use a real cache
|
|
8
8
|
const USER_CACHE: Record<string, Promise<User>> = {};
|
|
9
9
|
const GROUP_CACHE: Record<string, Promise<UserGroup>> = {};
|
|
10
|
+
const APIKEY_CACHE: Record<string, Promise<ApiKey>> = {};
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Fetch the user information given a user reference.
|
|
@@ -47,6 +48,25 @@ export function useFetchGroupInfo(groupId: string) {
|
|
|
47
48
|
}, [groupId]);
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Fetch the API key information given a key ID.
|
|
53
|
+
* @param keyId
|
|
54
|
+
*/
|
|
55
|
+
export function useFetchApiKeyInfo(keyId: string) {
|
|
56
|
+
const { client } = useUserSession();
|
|
57
|
+
|
|
58
|
+
return useFetch(() => {
|
|
59
|
+
let apikey: Promise<ApiKey> | undefined = APIKEY_CACHE[keyId];
|
|
60
|
+
if (!apikey) {
|
|
61
|
+
apikey = client.apikeys.retrieve(keyId).then(apikey => {
|
|
62
|
+
return apikey;
|
|
63
|
+
});
|
|
64
|
+
APIKEY_CACHE[keyId] = apikey;
|
|
65
|
+
}
|
|
66
|
+
return apikey;
|
|
67
|
+
}, [keyId]);
|
|
68
|
+
}
|
|
69
|
+
|
|
50
70
|
function AvatarPlaceholder() {
|
|
51
71
|
return <div className='size-8' />
|
|
52
72
|
}
|
|
@@ -87,6 +107,97 @@ function ServiceAccountAvatar({ accountId, showTitle = false, size = "md" }: Ser
|
|
|
87
107
|
);
|
|
88
108
|
}
|
|
89
109
|
|
|
110
|
+
interface AgentAvatarProps extends InfoProps {
|
|
111
|
+
agentId: string; // Format: accountId:projectId:timestamp
|
|
112
|
+
onBehalfOfType?: string;
|
|
113
|
+
onBehalfOfId?: string;
|
|
114
|
+
isScheduleAgent?: boolean;
|
|
115
|
+
}
|
|
116
|
+
function AgentAvatar({ agentId, onBehalfOfType, onBehalfOfId, showTitle = false, size = "md", isScheduleAgent = false }: AgentAvatarProps) {
|
|
117
|
+
// Fetch user info - must call hooks unconditionally per React rules
|
|
118
|
+
const shouldFetchUser = onBehalfOfType === 'user' && onBehalfOfId;
|
|
119
|
+
const shouldFetchApiKey = onBehalfOfType === 'apikey' && onBehalfOfId;
|
|
120
|
+
|
|
121
|
+
const userResult = useFetchUserInfo(onBehalfOfId || '');
|
|
122
|
+
const apiKeyResult = useFetchApiKeyInfo(onBehalfOfId || '');
|
|
123
|
+
|
|
124
|
+
// Only use the data if we should fetch it
|
|
125
|
+
const user = shouldFetchUser ? userResult.data : undefined;
|
|
126
|
+
const apiKey = shouldFetchApiKey ? apiKeyResult.data : undefined;
|
|
127
|
+
|
|
128
|
+
// Determine title and description
|
|
129
|
+
const title = user ? "Agent on behalf of" : apiKey ? "Agent on behalf of API key" : "Service Account";
|
|
130
|
+
const _title = isScheduleAgent ? `Schedule ${title}` : title;
|
|
131
|
+
|
|
132
|
+
const description = (
|
|
133
|
+
<div className="space-y-2">
|
|
134
|
+
{user && (
|
|
135
|
+
<>
|
|
136
|
+
<div className="flex items-center gap-2">
|
|
137
|
+
<Avatar src={user.picture} name={user.name} size="sm" />
|
|
138
|
+
<div>
|
|
139
|
+
<div className="font-medium">{user.name || user.email}</div>
|
|
140
|
+
{user.email && user.name && <div className="text-xs text-muted-foreground">{user.email}</div>}
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</>
|
|
144
|
+
)}
|
|
145
|
+
{apiKey && (
|
|
146
|
+
<>
|
|
147
|
+
<div>
|
|
148
|
+
<div className="font-medium">{apiKey.name}</div>
|
|
149
|
+
<div className="text-xs text-muted-foreground">Key ID: {apiKey.id}</div>
|
|
150
|
+
</div>
|
|
151
|
+
</>
|
|
152
|
+
)}
|
|
153
|
+
{!user && !apiKey && (
|
|
154
|
+
<>
|
|
155
|
+
<div>This user is used by robots like workflow workers.</div>
|
|
156
|
+
<div className="text-gray-800 dark:text-gray-500 text-sm">
|
|
157
|
+
<span className="font-semibold">ID:</span> {agentId}
|
|
158
|
+
</div>
|
|
159
|
+
</>
|
|
160
|
+
)}
|
|
161
|
+
</div>
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
return (
|
|
165
|
+
<UserPopoverPanel title={_title} description={description}>
|
|
166
|
+
<div className="flex items-center gap-2">
|
|
167
|
+
<div className="flex items-center -space-x-2">
|
|
168
|
+
<Avatar
|
|
169
|
+
src="/cloud.svg"
|
|
170
|
+
color="bg-amber-500"
|
|
171
|
+
className="px-[5px] text-white border-2 border-white dark:border-gray-800"
|
|
172
|
+
size={size}
|
|
173
|
+
/>
|
|
174
|
+
{user && (
|
|
175
|
+
<Avatar
|
|
176
|
+
src={user.picture}
|
|
177
|
+
name={user.name}
|
|
178
|
+
size={size}
|
|
179
|
+
className="border-2 border-white dark:border-gray-800"
|
|
180
|
+
/>
|
|
181
|
+
)}
|
|
182
|
+
{apiKey && (
|
|
183
|
+
<Avatar
|
|
184
|
+
name="API"
|
|
185
|
+
color="bg-gray-400"
|
|
186
|
+
size={size}
|
|
187
|
+
className="border-2 border-white dark:border-gray-800"
|
|
188
|
+
/>
|
|
189
|
+
)}
|
|
190
|
+
</div>
|
|
191
|
+
{showTitle && (
|
|
192
|
+
<div className="text-sm font-semibold truncate">
|
|
193
|
+
{user ? `Agent (${user.name || user.email})` : apiKey ? `Agent (${apiKey.name})` : title}
|
|
194
|
+
</div>
|
|
195
|
+
)}
|
|
196
|
+
</div>
|
|
197
|
+
</UserPopoverPanel>
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
|
|
90
201
|
interface ErrorInfoProps extends InfoProps {
|
|
91
202
|
title?: string;
|
|
92
203
|
error: Error | string;
|
|
@@ -115,20 +226,75 @@ export function UserInfo({ userRef, showTitle = false, size = "md" }: UserInfoPr
|
|
|
115
226
|
return <UnknownAvatar title="Unknown User" message="User information is not available." showTitle={showTitle} size={size} />
|
|
116
227
|
}
|
|
117
228
|
|
|
118
|
-
const
|
|
229
|
+
const parts = userRef.split(':');
|
|
230
|
+
const type = parts[0];
|
|
231
|
+
|
|
119
232
|
switch (type) {
|
|
120
233
|
case PrincipalType.User:
|
|
121
|
-
return <UserAvatar userId={
|
|
234
|
+
return <UserAvatar userId={parts[1]} showTitle={showTitle} size={size} />
|
|
235
|
+
|
|
122
236
|
case PrincipalType.Group:
|
|
123
|
-
return <GroupAvatar userId={
|
|
237
|
+
return <GroupAvatar userId={parts[1]} showTitle={showTitle} size={size} />
|
|
238
|
+
|
|
124
239
|
case "system":
|
|
125
240
|
return <SystemAvatar showTitle={showTitle} size={size} />
|
|
241
|
+
|
|
126
242
|
case PrincipalType.ServiceAccount:
|
|
127
|
-
return <ServiceAccountAvatar accountId={
|
|
128
|
-
|
|
129
|
-
|
|
243
|
+
return <ServiceAccountAvatar accountId={parts.slice(1).join(':')} showTitle={showTitle} size={size} />
|
|
244
|
+
|
|
245
|
+
case PrincipalType.Agent: {
|
|
246
|
+
// Parse agent format: agent:accountId:projectId:timestamp[:on_behalf_type:on_behalf_id]
|
|
247
|
+
// Handle legacy formats:
|
|
248
|
+
// - agent:agent:accountId:projectId:timestamp (old bug)
|
|
249
|
+
// - agent:accountId:projectId:timestamp (fixed, no on_behalf_of)
|
|
250
|
+
// - agent:accountId:projectId:timestamp:user:userId (new format)
|
|
251
|
+
|
|
252
|
+
let agentId: string;
|
|
253
|
+
let onBehalfOfType: string | undefined;
|
|
254
|
+
let onBehalfOfId: string | undefined;
|
|
255
|
+
|
|
256
|
+
// Check for old buggy format with double "agent"
|
|
257
|
+
if (parts[1] === 'agent') {
|
|
258
|
+
// Old format: agent:agent:accountId:projectId:timestamp
|
|
259
|
+
agentId = parts.slice(2, 5).join(':');
|
|
260
|
+
// Check if there's on_behalf_of info (unlikely but handle it)
|
|
261
|
+
onBehalfOfType = parts[5];
|
|
262
|
+
onBehalfOfId = parts[6];
|
|
263
|
+
} else {
|
|
264
|
+
// New format: agent:accountId:projectId:timestamp[:type:id]
|
|
265
|
+
agentId = parts.slice(1, 4).join(':');
|
|
266
|
+
onBehalfOfType = parts[4];
|
|
267
|
+
onBehalfOfId = parts[5];
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return <AgentAvatar
|
|
271
|
+
agentId={agentId}
|
|
272
|
+
onBehalfOfType={onBehalfOfType}
|
|
273
|
+
onBehalfOfId={onBehalfOfId}
|
|
274
|
+
showTitle={showTitle}
|
|
275
|
+
size={size}
|
|
276
|
+
/>
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
case PrincipalType.Schedule: {
|
|
280
|
+
// format: schedule:agentId:user:userId
|
|
281
|
+
const agentId = parts[1];
|
|
282
|
+
const onBehalfOfType = parts[2];
|
|
283
|
+
const onBehalfOfId = parts[3];
|
|
284
|
+
|
|
285
|
+
return <AgentAvatar
|
|
286
|
+
agentId={agentId}
|
|
287
|
+
onBehalfOfType={onBehalfOfType}
|
|
288
|
+
onBehalfOfId={onBehalfOfId}
|
|
289
|
+
showTitle={showTitle}
|
|
290
|
+
size={size}
|
|
291
|
+
isScheduleAgent={true}
|
|
292
|
+
/>
|
|
293
|
+
}
|
|
294
|
+
|
|
130
295
|
case PrincipalType.ApiKey:
|
|
131
|
-
return <ApiKeyAvatar keyId={
|
|
296
|
+
return <ApiKeyAvatar keyId={parts[1]} size={size} showTitle={showTitle} />
|
|
297
|
+
|
|
132
298
|
default:
|
|
133
299
|
return <ErrorAvatar title="Unknown User" error={`Invalid user ref type: ${type}`} showTitle={showTitle} size={size} />
|
|
134
300
|
}
|
package/src/layout/AppLayout.tsx
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Dialog, DialogPanel, Transition, TransitionChild } from '@headlessui/react'
|
|
2
|
-
import { X } from 'lucide-react'
|
|
3
1
|
import clsx from 'clsx'
|
|
4
|
-
import {
|
|
2
|
+
import { useEffect, useState } from 'react'
|
|
3
|
+
import { SidePanel } from '@vertesia/ui/core'
|
|
5
4
|
// import { FullHeightLayout } from './FullHeightLayout.js'
|
|
6
5
|
import { Navbar } from './Navbar.js'
|
|
7
6
|
import { Sidebar } from './Sidebar.js'
|
|
@@ -66,47 +65,20 @@ export function AppLayout({ sidebarClassName, className, title, children, logo,
|
|
|
66
65
|
|
|
67
66
|
<div className='flex h-full overflow-y-auto w-full'>
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
>
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<div className="fixed inset-0 flex">
|
|
85
|
-
<TransitionChild
|
|
86
|
-
as={Fragment}
|
|
87
|
-
enter="transition ease-in-out duration-300 transform"
|
|
88
|
-
enterFrom="-translate-x-full"
|
|
89
|
-
enterTo="translate-x-0"
|
|
90
|
-
leave="transition ease-in-out duration-300 transform"
|
|
91
|
-
leaveFrom="translate-x-0"
|
|
92
|
-
leaveTo="-translate-x-full"
|
|
93
|
-
>
|
|
94
|
-
<DialogPanel className="relative flex w-full max-w-xs flex-1">
|
|
95
|
-
{/* Sidebar component, swap this element with another sidebar if you like */}
|
|
96
|
-
<Sidebar logo={logo} className={sidebarClassName}>{sidebar}</Sidebar>
|
|
97
|
-
|
|
98
|
-
{/* close button */}
|
|
99
|
-
<div className="flex w-16 justify-center pt-5 items-start">
|
|
100
|
-
<button type="button" className="-m-2.5 p-2.5" onClick={() => setSidebarOpen(false)}>
|
|
101
|
-
<span className="sr-only">Close sidebar</span>
|
|
102
|
-
<X className="size-6 text-white" aria-hidden="true" />
|
|
103
|
-
</button>
|
|
104
|
-
</div>
|
|
105
|
-
</DialogPanel>
|
|
106
|
-
</TransitionChild>
|
|
107
|
-
</div>
|
|
108
|
-
</Dialog>
|
|
109
|
-
</Transition>
|
|
68
|
+
{/* Mobile sidebar */}
|
|
69
|
+
<div className="lg:hidden">
|
|
70
|
+
<SidePanel
|
|
71
|
+
className='bg-sidebar'
|
|
72
|
+
isOpen={sidebarOpen}
|
|
73
|
+
onClose={() => setSidebarOpen(false)}
|
|
74
|
+
side="left"
|
|
75
|
+
panelWidth={288}
|
|
76
|
+
resizable={false}
|
|
77
|
+
backdrop={true}
|
|
78
|
+
>
|
|
79
|
+
<Sidebar logo={logo} className={sidebarClassName}>{sidebar}</Sidebar>
|
|
80
|
+
</SidePanel>
|
|
81
|
+
</div>
|
|
110
82
|
|
|
111
83
|
{/* Static sidebar for desktop */}
|
|
112
84
|
<div className={`hidden lg:block relative transition-all duration-300 ${desktopSidebarOpen ? 'w-72' : 'w-12'}`}>
|
package/src/layout/Sidebar.tsx
CHANGED
|
@@ -21,7 +21,7 @@ export function Sidebar({ children, logo, className }: SidebarProps) {
|
|
|
21
21
|
{logo}
|
|
22
22
|
</div>
|
|
23
23
|
}
|
|
24
|
-
<div className="flex-1 min-h-0 overflow-hidden px-2">
|
|
24
|
+
<div className="flex-1 min-h-0 overflow-hidden px-0 lg:px-2">
|
|
25
25
|
<nav className="h-full flex flex-col">
|
|
26
26
|
<ul role="list" className="flex flex-col gap-y-2 overflow-y-auto h-full">
|
|
27
27
|
{children}
|
|
@@ -37,8 +37,9 @@ interface SidebarSectionProps {
|
|
|
37
37
|
title?: React.ReactNode
|
|
38
38
|
action?: React.ReactNode
|
|
39
39
|
isFooter?: boolean
|
|
40
|
+
className?: string
|
|
40
41
|
}
|
|
41
|
-
export function SidebarSection({ children, title, action, isFooter = false }: SidebarSectionProps) {
|
|
42
|
+
export function SidebarSection({ children, title, action, isFooter = false, className }: SidebarSectionProps) {
|
|
42
43
|
const { isOpen } = useSidebarToggle();
|
|
43
44
|
|
|
44
45
|
let header = isOpen ? <>
|
|
@@ -51,7 +52,7 @@ export function SidebarSection({ children, title, action, isFooter = false }: Si
|
|
|
51
52
|
{title && <div className="text-xs font-medium h-8 flex items-center gap-x-2 px-2 text-sidebar-foreground/70">
|
|
52
53
|
{header}
|
|
53
54
|
</div>}
|
|
54
|
-
<ul data-sidebar="menu" className="flex w-full min-w-0 flex-col gap-1">
|
|
55
|
+
<ul data-sidebar="menu" className={clsx("flex w-full min-w-0 flex-col gap-1", className)}>
|
|
55
56
|
{children}
|
|
56
57
|
</ul>
|
|
57
58
|
</li>
|
|
@@ -85,8 +86,9 @@ export interface SidebarItemProps {
|
|
|
85
86
|
className?: string;
|
|
86
87
|
id?: string; //HTML ID of the element
|
|
87
88
|
external?: boolean; //If true, the link will open in a new tab
|
|
89
|
+
replace?: boolean; //If true, navigation replaces the current history entry instead of pushing
|
|
88
90
|
}
|
|
89
|
-
export function SidebarItem({ external, className, tools, children, icon: Icon, href, current, onClick }: SidebarItemProps) {
|
|
91
|
+
export function SidebarItem({ external, className, tools, children, icon: Icon, href, current, onClick, replace }: SidebarItemProps) {
|
|
90
92
|
const { toggleMobile } = useSidebarToggle();
|
|
91
93
|
const _closeSideBar = () => {
|
|
92
94
|
setTimeout(() => {
|
|
@@ -104,7 +106,7 @@ export function SidebarItem({ external, className, tools, children, icon: Icon,
|
|
|
104
106
|
}
|
|
105
107
|
return (
|
|
106
108
|
<li>
|
|
107
|
-
<Nav onClick={_closeSideBar}>
|
|
109
|
+
<Nav onClick={_closeSideBar} replace={replace}>
|
|
108
110
|
<SidebarTooltip text={children as string}>
|
|
109
111
|
<a
|
|
110
112
|
href={href}
|
|
@@ -213,7 +213,15 @@ export class HistoryNavigator {
|
|
|
213
213
|
this.fireLocationChange(new AfterLocationChangeEvent(type, to, state));
|
|
214
214
|
}
|
|
215
215
|
const _linkNavListener = (ev: MouseEvent) => {
|
|
216
|
-
const
|
|
216
|
+
const target = ev.target as HTMLElement;
|
|
217
|
+
// Skip anchors with download attribute or blob: URLs - they are file downloads, not navigation
|
|
218
|
+
if (target.tagName.toLowerCase() === 'a' && (
|
|
219
|
+
(target as HTMLAnchorElement).hasAttribute('download') ||
|
|
220
|
+
(target as HTMLAnchorElement).href?.startsWith('blob:')
|
|
221
|
+
)) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
const url = getElementHrefAsUrl(target)
|
|
217
225
|
if (url && url.origin === window.location.origin) {
|
|
218
226
|
ev.preventDefault();
|
|
219
227
|
const to = new URL(this.addStickyParams(url.href));
|
package/src/router/Nav.tsx
CHANGED
|
@@ -12,15 +12,20 @@ interface NavProps {
|
|
|
12
12
|
* @returns
|
|
13
13
|
*/
|
|
14
14
|
onClick?: (ev: SyntheticEvent) => void;
|
|
15
|
+
/**
|
|
16
|
+
* If true, use replaceState instead of pushState (no new browser history entry).
|
|
17
|
+
* Defaults to true for backward compatibility.
|
|
18
|
+
*/
|
|
19
|
+
replace?: boolean;
|
|
15
20
|
}
|
|
16
|
-
export function Nav({ children, onClick }: NavProps) {
|
|
21
|
+
export function Nav({ children, onClick, replace = true }: NavProps) {
|
|
17
22
|
const navigate = useNavigate();
|
|
18
23
|
const _onClick = (ev: SyntheticEvent) => {
|
|
19
24
|
const link = (ev.target as HTMLElement).closest('a');
|
|
20
25
|
if (link && link.href) {
|
|
21
26
|
ev.stopPropagation();
|
|
22
27
|
ev.preventDefault();
|
|
23
|
-
navigate(link.href, { replace
|
|
28
|
+
navigate(link.href, { replace });
|
|
24
29
|
onClick?.(ev);
|
|
25
30
|
}
|
|
26
31
|
}
|
|
@@ -12,6 +12,8 @@ import { TypeRegistry } from './TypeRegistry';
|
|
|
12
12
|
import { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY } from './constants';
|
|
13
13
|
export { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY };
|
|
14
14
|
|
|
15
|
+
const CENTRAL_AUTH_REDIRECT = "https://internal-auth.vertesia.app/";
|
|
16
|
+
|
|
15
17
|
|
|
16
18
|
class UserSession {
|
|
17
19
|
|
|
@@ -117,15 +119,41 @@ class UserSession {
|
|
|
117
119
|
|
|
118
120
|
logout() {
|
|
119
121
|
console.log('Logging out');
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
|
|
123
|
+
// Check if we should use central auth for logout
|
|
124
|
+
const devDomains = [".composable.sh", ".vertesia.dev", "vertesia.app"];
|
|
125
|
+
const shouldUseCentralAuth = Env.isDocker || devDomains.some((domain) => window.location.hostname.endsWith(domain));
|
|
126
|
+
|
|
127
|
+
if (shouldUseCentralAuth) {
|
|
128
|
+
// Redirect to central auth for logout
|
|
129
|
+
// Central auth will handle Firebase logout
|
|
130
|
+
console.log('Using central auth logout');
|
|
131
|
+
this.authError = undefined;
|
|
132
|
+
this.isLoading = false;
|
|
133
|
+
this.authToken = undefined;
|
|
134
|
+
this.typeRegistry = undefined;
|
|
135
|
+
this.setSession = undefined;
|
|
136
|
+
this.client.withAuthCallback(undefined);
|
|
137
|
+
|
|
138
|
+
const logoutUrl = new URL(CENTRAL_AUTH_REDIRECT);
|
|
139
|
+
const currentUrl = new URL(window.location.href);
|
|
140
|
+
currentUrl.hash = "";
|
|
141
|
+
logoutUrl.pathname = "/logout";
|
|
142
|
+
logoutUrl.searchParams.set("redirect_uri", currentUrl.toString());
|
|
143
|
+
location.replace(logoutUrl.toString());
|
|
144
|
+
} else {
|
|
145
|
+
// Use Firebase logout directly
|
|
146
|
+
console.log('Using Firebase logout');
|
|
147
|
+
if (this.authToken) {
|
|
148
|
+
getFirebaseAuth().signOut();
|
|
149
|
+
}
|
|
150
|
+
this.authError = undefined;
|
|
151
|
+
this.isLoading = false;
|
|
152
|
+
this.authToken = undefined;
|
|
153
|
+
this.typeRegistry = undefined;
|
|
154
|
+
this.setSession = undefined;
|
|
155
|
+
this.client.withAuthCallback(undefined);
|
|
122
156
|
}
|
|
123
|
-
this.authError = undefined;
|
|
124
|
-
this.isLoading = false;
|
|
125
|
-
this.authToken = undefined;
|
|
126
|
-
this.typeRegistry = undefined;
|
|
127
|
-
this.setSession = undefined;
|
|
128
|
-
this.client.withAuthCallback(undefined);
|
|
129
157
|
}
|
|
130
158
|
|
|
131
159
|
async switchAccount(targetAccountId: string) {
|
|
@@ -151,7 +179,8 @@ class UserSession {
|
|
|
151
179
|
|
|
152
180
|
async _loadTypes() {
|
|
153
181
|
if (this.project) {
|
|
154
|
-
return this.store.types.list({
|
|
182
|
+
return this.store.types.catalog.list({ layout: true }).then(types => this.typeRegistry = new TypeRegistry(types)).catch(err => {
|
|
183
|
+
//return this.store.types.list({}, { layout: true }).then(types => this.typeRegistry = new TypeRegistry(types)).catch(err => {
|
|
155
184
|
console.error('Failed to fetch object types', err);
|
|
156
185
|
throw err;
|
|
157
186
|
})
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import { Env } from "@vertesia/ui/env";
|
|
1
2
|
import { onAuthStateChanged } from "firebase/auth";
|
|
2
3
|
import { ReactNode, useEffect, useRef, useState } from "react";
|
|
3
4
|
import { UserNotFoundError, getComposableToken } from "./auth/composable";
|
|
4
5
|
import { getFirebaseAuth } from "./auth/firebase";
|
|
5
6
|
import { useAuthState } from "./auth/useAuthState";
|
|
6
|
-
import { Env } from "@vertesia/ui/env";
|
|
7
7
|
import { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY, UserSession, UserSessionContext } from "./UserSession";
|
|
8
8
|
|
|
9
9
|
const devDomains = [".composable.sh", ".vertesia.dev", "vertesia.app"];
|
|
10
10
|
const CENTRAL_AUTH_REDIRECT = "https://internal-auth.vertesia.app/";
|
|
11
11
|
|
|
12
|
-
function shouldRedirectToCentralAuth() {
|
|
12
|
+
export function shouldRedirectToCentralAuth() {
|
|
13
13
|
// Authentication is not supported in Docker environment.
|
|
14
14
|
// See https://github.com/vertesia/studio/wiki/Composable-UI-Hosting-Options
|
|
15
15
|
if (Env.isDocker) {
|
|
@@ -129,6 +129,7 @@ export function UserSessionProvider({ children }: UserSessionProviderProps) {
|
|
|
129
129
|
},
|
|
130
130
|
});
|
|
131
131
|
redirectToCentralAuth();
|
|
132
|
+
return; // Don't register onAuthStateChanged listener when redirecting
|
|
132
133
|
} else {
|
|
133
134
|
console.log("Auth: not on dev domain");
|
|
134
135
|
Env.logger.info("Not on dev domain", {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ProjectRef, RequireAtLeastOne } from "@vertesia/common";
|
|
2
|
-
import {
|
|
2
|
+
import { SelectBox, useFetch } from "@vertesia/ui/core";
|
|
3
3
|
import { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY, useUserSession } from "@vertesia/ui/session";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
|
|
@@ -47,7 +47,7 @@ function SelectProject({ initialValue, projects, onChange, placeholder = "Select
|
|
|
47
47
|
}
|
|
48
48
|
let actualValue = !value && initialValue ? projects.find(p => p.id === initialValue) : value;
|
|
49
49
|
return (
|
|
50
|
-
<
|
|
50
|
+
<SelectBox
|
|
51
51
|
by="id"
|
|
52
52
|
value={actualValue}
|
|
53
53
|
options={projects}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AppInstallationWithManifest, ProjectRef } from "@vertesia/common";
|
|
2
|
-
import { Center, useFetch,
|
|
2
|
+
import { Center, useFetch, SelectBox } from "@vertesia/ui/core";
|
|
3
3
|
import { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY, useUserSession } from "@vertesia/ui/session";
|
|
4
4
|
import { LockIcon } from "lucide-react";
|
|
5
5
|
import { ComponentType, ReactNode, useEffect, useMemo, useState } from "react";
|
|
@@ -131,7 +131,7 @@ function AccessDeniedMessage({ name }: AccessDeniedMessageProps) {
|
|
|
131
131
|
{orgOptions.length > 1 && (
|
|
132
132
|
<div>
|
|
133
133
|
<div className="text-sm text-gray-500 mb-2">Organization</div>
|
|
134
|
-
<
|
|
134
|
+
<SelectBox
|
|
135
135
|
by="id"
|
|
136
136
|
value={selectedOrg}
|
|
137
137
|
options={orgOptions}
|
|
@@ -143,7 +143,7 @@ function AccessDeniedMessage({ name }: AccessDeniedMessageProps) {
|
|
|
143
143
|
)}
|
|
144
144
|
<div>
|
|
145
145
|
{orgOptions.length > 1 && <div className="text-sm text-gray-500 mb-2">Project</div>}
|
|
146
|
-
<
|
|
146
|
+
<SelectBox
|
|
147
147
|
by="id"
|
|
148
148
|
value={undefined}
|
|
149
149
|
options={filteredProjects}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TransientToken, UserInviteTokenData } from "@vertesia/common"
|
|
2
|
-
import { Button,
|
|
2
|
+
import { Button, Modal, ModalBody, ModalTitle } from "@vertesia/ui/core"
|
|
3
3
|
import { useEffect, useState } from "react"
|
|
4
4
|
import { useUserSession } from "@vertesia/ui/session"
|
|
5
5
|
|
|
@@ -78,16 +78,16 @@ export function InviteAcceptModal() {
|
|
|
78
78
|
|
|
79
79
|
return (
|
|
80
80
|
<div>
|
|
81
|
-
<
|
|
82
|
-
<
|
|
83
|
-
<
|
|
81
|
+
<Modal isOpen={showModal} onClose={closeModal}>
|
|
82
|
+
<ModalTitle>Review Invites</ModalTitle>
|
|
83
|
+
<ModalBody>
|
|
84
84
|
<div className="text-sm pb-4">
|
|
85
85
|
You have received the following invites to join other accounts.
|
|
86
86
|
Please review and accept or declined them.
|
|
87
87
|
</div>
|
|
88
88
|
{inviteList}
|
|
89
|
-
</
|
|
90
|
-
</
|
|
89
|
+
</ModalBody>
|
|
90
|
+
</Modal>
|
|
91
91
|
</div>
|
|
92
92
|
)
|
|
93
93
|
|
|
@@ -19,7 +19,7 @@ export default function SignInModal({ isOpen, onClose }: SignInModalProps) {
|
|
|
19
19
|
<GitHubSignInButton />
|
|
20
20
|
<MicrosoftSignInButton />
|
|
21
21
|
</ModalBody>
|
|
22
|
-
<ModalFooter
|
|
22
|
+
<ModalFooter align="right">
|
|
23
23
|
<Button variant="ghost" onClick={onClose}>Cancel</Button>
|
|
24
24
|
</ModalFooter>
|
|
25
25
|
</Modal>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SignupData } from "@vertesia/common";
|
|
2
|
-
import { Button, Input,
|
|
2
|
+
import { Button, Input, SelectBox, SelectStack } from "@vertesia/ui/core";
|
|
3
3
|
import { User } from "firebase/auth";
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
5
|
import { getFirebaseAuth } from "@vertesia/ui/session";
|
|
@@ -130,7 +130,7 @@ export default function SignupForm({ onSignup, goBack }: SignupFormProps) {
|
|
|
130
130
|
{isCompany &&
|
|
131
131
|
<>
|
|
132
132
|
<FormItem label="Company Size">
|
|
133
|
-
<
|
|
133
|
+
<SelectBox className="w-full border border-accent bg-muted"
|
|
134
134
|
value={companySize}
|
|
135
135
|
options={companySizeOptions}
|
|
136
136
|
onChange={setCompanySize}
|
|
@@ -147,7 +147,7 @@ export default function SignupForm({ onSignup, goBack }: SignupFormProps) {
|
|
|
147
147
|
</>
|
|
148
148
|
}
|
|
149
149
|
<FormItem label="Project Maturity">
|
|
150
|
-
<
|
|
150
|
+
<SelectBox className="w-full border border-accent bg-muted"
|
|
151
151
|
options={projectMaturityOptions}
|
|
152
152
|
value={projectMaturityOptions.find((option) => option.id === projectMaturity)}
|
|
153
153
|
optionLabel={(option) => option?.label}
|