@agent-native/core 0.117.2 → 0.118.1
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/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +51 -0
- package/corpus/core/docs/content/custom-design-system.mdx +445 -0
- package/corpus/core/docs/content/toolkit-ui.mdx +16 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +32 -10
- package/corpus/core/src/a2a/types.ts +1 -0
- package/corpus/core/src/agent/types.ts +1 -1
- package/corpus/core/src/cli/index.ts +18 -10
- package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
- package/corpus/core/src/cli/templates-meta.ts +0 -12
- package/corpus/core/src/cli/workspace-dev.ts +1 -1
- package/corpus/core/src/client/AgentPanel.tsx +99 -108
- package/corpus/core/src/client/AssistantChat.tsx +30 -13
- package/corpus/core/src/client/CommandMenu.tsx +68 -178
- package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
- package/corpus/core/src/client/agent-chat-adapter.ts +3 -1
- package/corpus/core/src/client/app-providers.tsx +1 -1
- package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/corpus/core/src/client/chat/message-components.tsx +169 -18
- package/corpus/core/src/client/chat/tool-call-display.tsx +50 -14
- package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
- package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/corpus/core/src/client/components/ui/message-scroller.tsx +15 -1
- package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
- package/corpus/core/src/client/error-capture.ts +2 -6
- package/corpus/core/src/client/i18n.tsx +22 -0
- package/corpus/core/src/client/index.ts +17 -0
- package/corpus/core/src/client/org/TeamPage.tsx +257 -153
- package/corpus/core/src/client/progress/RunsTray.tsx +89 -88
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +25 -16
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +20 -17
- package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
- package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
- package/corpus/core/src/client/session-replay.ts +3 -3
- package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -18
- package/corpus/core/src/client/settings/SecretsSection.tsx +97 -52
- package/corpus/core/src/client/settings/SettingsPanel.tsx +217 -252
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/corpus/core/src/client/settings/index.ts +7 -0
- package/corpus/core/src/client/settings/useSettingsPanelController.ts +155 -0
- package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/corpus/core/src/client/setup-connections/index.ts +10 -0
- package/corpus/core/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +64 -586
- package/corpus/core/src/client/sharing/ShareDialog.tsx +299 -633
- package/corpus/core/src/client/sharing/index.ts +42 -0
- package/corpus/core/src/client/sharing/share-controller-helpers.ts +318 -0
- package/corpus/core/src/client/sharing/useShareButtonController.ts +600 -0
- package/corpus/core/src/client/sharing/useShareDialogController.ts +559 -0
- package/corpus/core/src/client/sse-event-processor.ts +23 -0
- package/corpus/core/src/client/tool-display.ts +71 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
- package/corpus/core/src/client/use-agent-engine-configured.ts +12 -19
- package/corpus/core/src/client/use-chat-threads.ts +33 -12
- package/corpus/core/src/deploy/build.ts +2 -1
- package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
- package/corpus/core/src/integrations/adapters/slack.ts +84 -5
- package/corpus/core/src/integrations/index.ts +5 -1
- package/corpus/core/src/localization/default-messages.ts +6 -1
- package/corpus/core/src/mcp-client/oauth-routes.ts +61 -14
- package/corpus/core/src/scripts/call-agent.ts +5 -1
- package/corpus/core/src/server/realtime-voice.ts +5 -2
- package/corpus/core/src/styles/agent-native.css +0 -24
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/core/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/corpus/core/src/templates/default/app/design-system.ts +3 -0
- package/corpus/core/src/templates/default/app/root.tsx +5 -2
- package/corpus/core/src/templates/default/package.json +1 -0
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/corpus/core/src/terminal/cli-registry.ts +1 -1
- package/corpus/core/src/vite/client.ts +205 -1
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/analytics/app/design-system.ts +3 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
- package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/assets/app/components/ui/alert.tsx +1 -0
- package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/assets/app/design-system.ts +3 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +26 -30
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/brain/app/components/ui/dialog.tsx +1 -0
- package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/brain/app/design-system.ts +3 -0
- package/corpus/templates/brain/app/routes/sources.tsx +189 -122
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/calendar/app/design-system.ts +3 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/chat/app/design-system.ts +3 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/clips/AGENTS.md +8 -6
- package/corpus/templates/clips/actions/request-transcript.ts +90 -420
- package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
- package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
- package/corpus/templates/clips/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/clips/app/design-system.ts +3 -0
- package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
- package/corpus/templates/clips/app/routes/download.tsx +3 -2
- package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-fixed-windows-recordings-aborting-during-the-countdown.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-permissions-and-rewind-controls-are-now-grouped-with-clearer.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-the-desktop-popover-opens-centered-under-the-menu-bar-icon-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +86 -82
- package/corpus/templates/clips/desktop/src/styles.css +13 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +10 -1
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +37 -2
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
- package/corpus/templates/clips/server/register-secrets.ts +7 -6
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +41 -59
- package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
- package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/ListView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +9 -9
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +7 -7
- package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +11 -11
- package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
- package/corpus/templates/content/app/components/ui/checkbox.tsx +1 -0
- package/corpus/templates/content/app/components/ui/collapsible.tsx +1 -0
- package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/content/app/design-system.ts +3 -0
- package/corpus/templates/content/app/global.css +29 -3
- package/corpus/templates/content/app/i18n-data.ts +10 -0
- package/corpus/templates/content/changelog/2026-07-22-page-actions-are-grouped-into-the-three-dots-menu-for-a-clea.md +6 -0
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -8
- package/corpus/templates/design/app/components/ui/command.tsx +1 -0
- package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/design/app/design-system.ts +3 -0
- package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/dispatch/app/components/ui/button.tsx +1 -0
- package/corpus/templates/dispatch/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/dispatch/app/design-system.ts +3 -0
- package/corpus/templates/dispatch/app/root.tsx +10 -7
- package/corpus/templates/dispatch/package.json +1 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/forms/app/design-system.ts +3 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/macros/app/design-system.ts +3 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +134 -93
- package/corpus/templates/mail/app/components/email/email-iframe-document.ts +8 -2
- package/corpus/templates/mail/app/components/ui/textarea.tsx +1 -21
- package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/mail/app/design-system.ts +3 -0
- package/corpus/templates/mail/changelog/2026-07-22-email-messages-no-longer-flash-with-an-unstyled-page-while-l.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
- package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/plan/app/design-system.ts +3 -0
- package/corpus/templates/plan/app/entry.client.tsx +3 -0
- package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/slides/app/design-system.ts +3 -0
- package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
- package/corpus/templates/slides/app/pages/Index.tsx +1 -0
- package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/tasks/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/tasks/app/design-system.ts +3 -0
- package/corpus/templates/tasks/app/root.tsx +5 -2
- package/corpus/toolkit/CHANGELOG.md +23 -0
- package/corpus/toolkit/agent-native.eject.json +71 -0
- package/corpus/toolkit/package.json +31 -1
- package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +100 -39
- package/corpus/toolkit/src/chat-history/index.ts +9 -0
- package/corpus/toolkit/src/chat-history/useChatHistoryRailController.ts +76 -0
- package/corpus/toolkit/src/chat-history.css +2 -0
- package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +11 -8
- package/corpus/toolkit/src/composer/PromptComposer.tsx +32 -7
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +124 -9
- package/corpus/toolkit/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
- package/corpus/toolkit/src/conformance/index.ts +3 -0
- package/corpus/toolkit/src/conformance/runner.tsx +862 -0
- package/corpus/toolkit/src/conformance/types.ts +45 -0
- package/corpus/toolkit/src/conformance/version.ts +22 -0
- package/corpus/toolkit/src/design-system/components.tsx +146 -0
- package/corpus/toolkit/src/design-system/context.tsx +31 -0
- package/corpus/toolkit/src/design-system/default-adapter.tsx +915 -0
- package/corpus/toolkit/src/design-system/definition.ts +14 -0
- package/corpus/toolkit/src/design-system/error-boundary.tsx +37 -0
- package/corpus/toolkit/src/design-system/index.ts +7 -0
- package/corpus/toolkit/src/design-system/theme.ts +145 -0
- package/corpus/toolkit/src/design-system/types.ts +363 -0
- package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
- package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
- package/corpus/toolkit/src/editor/index.ts +2 -0
- package/corpus/toolkit/src/provider.tsx +98 -5
- package/corpus/toolkit/src/styles.css +52 -23
- package/corpus/toolkit/src/ui/button.tsx +95 -6
- package/corpus/toolkit/src/ui/dialog.tsx +48 -23
- package/corpus/toolkit/src/ui/popover.tsx +16 -2
- package/corpus/toolkit/src/ui/select.tsx +7 -3
- package/corpus/toolkit/src/ui/sidebar.tsx +47 -48
- package/corpus/toolkit/src/ui/tooltip.tsx +7 -3
- package/dist/a2a/client.d.ts +3 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +17 -12
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/types.d.ts +1 -1
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/index.js +18 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/multi-frontier-runs.js +3 -3
- package/dist/cli/multi-frontier-runs.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +0 -12
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspace-dev.js +1 -1
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +18 -15
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +26 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +18 -106
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +3 -5
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +17 -18
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +2 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +1 -1
- package/dist/client/app-providers.js.map +1 -1
- package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
- package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
- package/dist/client/chat/action-chat-ui-surface.js +10 -0
- package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
- package/dist/client/chat/message-components.d.ts +12 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +102 -14
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +3 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +33 -14
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.js +9 -12
- package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/client/components/ui/message-scroller.d.ts +1 -1
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
- package/dist/client/components/ui/message-scroller.js +4 -3
- package/dist/client/components/ui/message-scroller.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +3 -2
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +2 -2
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +9 -0
- package/dist/client/i18n.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +41 -33
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +9 -10
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +14 -12
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +10 -8
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +3 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +2 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +17 -17
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/resources/mcp-integration-logos.js +2 -2
- package/dist/client/resources/mcp-integration-logos.js.map +1 -1
- package/dist/client/route-chunk-recovery.d.ts.map +1 -1
- package/dist/client/route-chunk-recovery.js +5 -3
- package/dist/client/route-chunk-recovery.js.map +1 -1
- package/dist/client/session-replay.js +3 -3
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
- package/dist/client/settings/DemoModeSection.js +2 -5
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +18 -6
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +53 -118
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +16 -1
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +2 -5
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/index.d.ts +1 -0
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -0
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/settings/useSettingsPanelController.d.ts +22 -0
- package/dist/client/settings/useSettingsPanelController.d.ts.map +1 -0
- package/dist/client/settings/useSettingsPanelController.js +103 -0
- package/dist/client/settings/useSettingsPanelController.js.map +1 -0
- package/dist/client/setup-connections/BuilderConnectCard.d.ts +14 -6
- package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -1
- package/dist/client/setup-connections/BuilderConnectCard.js +24 -16
- package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -1
- package/dist/client/setup-connections/index.d.ts +2 -1
- package/dist/client/setup-connections/index.d.ts.map +1 -1
- package/dist/client/setup-connections/index.js +2 -1
- package/dist/client/setup-connections/index.js.map +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +34 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js +39 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +2 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +17 -463
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts +6 -6
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +69 -283
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/client/sharing/index.d.ts +3 -0
- package/dist/client/sharing/index.d.ts.map +1 -1
- package/dist/client/sharing/index.js +3 -0
- package/dist/client/sharing/index.js.map +1 -1
- package/dist/client/sharing/share-controller-helpers.d.ts +70 -0
- package/dist/client/sharing/share-controller-helpers.d.ts.map +1 -0
- package/dist/client/sharing/share-controller-helpers.js +224 -0
- package/dist/client/sharing/share-controller-helpers.js.map +1 -0
- package/dist/client/sharing/useShareButtonController.d.ts +91 -0
- package/dist/client/sharing/useShareButtonController.d.ts.map +1 -0
- package/dist/client/sharing/useShareButtonController.js +397 -0
- package/dist/client/sharing/useShareButtonController.js.map +1 -0
- package/dist/client/sharing/useShareDialogController.d.ts +109 -0
- package/dist/client/sharing/useShareDialogController.d.ts.map +1 -0
- package/dist/client/sharing/useShareDialogController.js +348 -0
- package/dist/client/sharing/useShareDialogController.js.map +1 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +21 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/tool-display.d.ts +16 -0
- package/dist/client/tool-display.d.ts.map +1 -1
- package/dist/client/tool-display.js +52 -0
- package/dist/client/tool-display.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts +3 -3
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +22 -11
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts +3 -2
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +7 -19
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +21 -8
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/guards/db-tool-scoping.js +1 -1
- package/dist/guards/db-tool-scoping.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts +1 -0
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +61 -5
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/index.d.ts +1 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +4 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +5 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp-client/oauth-routes.d.ts +5 -0
- package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
- package/dist/mcp-client/oauth-routes.js +53 -14
- package/dist/mcp-client/oauth-routes.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +5 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/realtime-voice.d.ts.map +1 -1
- package/dist/server/realtime-voice.js +2 -2
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/styles/agent-native.css +0 -24
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/dist/templates/chat/app/design-system.ts +3 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/dist/templates/default/app/design-system.ts +3 -0
- package/dist/templates/default/app/root.tsx +5 -2
- package/dist/templates/default/package.json +1 -0
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/dist/terminal/cli-registry.js +1 -1
- package/dist/terminal/cli-registry.js.map +1 -1
- package/dist/vite/client.d.ts +11 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +144 -2
- package/dist/vite/client.js.map +1 -1
- package/docs/content/custom-design-system.mdx +445 -0
- package/docs/content/toolkit-ui.mdx +16 -0
- package/package.json +2 -2
- package/src/a2a/client.ts +32 -10
- package/src/a2a/types.ts +1 -0
- package/src/agent/types.ts +1 -1
- package/src/cli/index.ts +18 -10
- package/src/cli/multi-frontier-runs.ts +5 -3
- package/src/cli/templates-meta.ts +0 -12
- package/src/cli/workspace-dev.ts +1 -1
- package/src/client/AgentPanel.tsx +99 -108
- package/src/client/AssistantChat.tsx +30 -13
- package/src/client/CommandMenu.tsx +68 -178
- package/src/client/RunStuckBanner.tsx +39 -47
- package/src/client/agent-chat-adapter.ts +3 -1
- package/src/client/app-providers.tsx +1 -1
- package/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/src/client/chat/message-components.tsx +169 -18
- package/src/client/chat/tool-call-display.tsx +50 -14
- package/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
- package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/src/client/components/ui/message-scroller.tsx +15 -1
- package/src/client/conversation/AgentConversation.tsx +12 -1
- package/src/client/error-capture.ts +2 -6
- package/src/client/i18n.tsx +22 -0
- package/src/client/index.ts +17 -0
- package/src/client/org/TeamPage.tsx +257 -153
- package/src/client/progress/RunsTray.tsx +89 -88
- package/src/client/resources/McpConnectionSuggestion.tsx +25 -16
- package/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/src/client/resources/ResourcesPanel.tsx +5 -1
- package/src/client/resources/mcp-integration-catalog.ts +20 -17
- package/src/client/resources/mcp-integration-logos.ts +2 -2
- package/src/client/route-chunk-recovery.ts +5 -3
- package/src/client/session-replay.ts +3 -3
- package/src/client/settings/DemoModeSection.tsx +6 -18
- package/src/client/settings/SecretsSection.tsx +97 -52
- package/src/client/settings/SettingsPanel.tsx +217 -252
- package/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/src/client/settings/index.ts +7 -0
- package/src/client/settings/useSettingsPanelController.ts +155 -0
- package/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/src/client/setup-connections/index.ts +10 -0
- package/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/src/client/sharing/ShareButton.tsx +64 -586
- package/src/client/sharing/ShareDialog.tsx +299 -633
- package/src/client/sharing/index.ts +42 -0
- package/src/client/sharing/share-controller-helpers.ts +318 -0
- package/src/client/sharing/useShareButtonController.ts +600 -0
- package/src/client/sharing/useShareDialogController.ts +559 -0
- package/src/client/sse-event-processor.ts +23 -0
- package/src/client/tool-display.ts +71 -0
- package/src/client/transcription/use-live-transcription.ts +64 -45
- package/src/client/use-agent-engine-configured.ts +12 -19
- package/src/client/use-chat-threads.ts +33 -12
- package/src/deploy/build.ts +2 -1
- package/src/guards/db-tool-scoping.ts +1 -1
- package/src/integrations/adapters/slack.ts +84 -5
- package/src/integrations/index.ts +5 -1
- package/src/localization/default-messages.ts +6 -1
- package/src/mcp-client/oauth-routes.ts +61 -14
- package/src/scripts/call-agent.ts +5 -1
- package/src/server/realtime-voice.ts +5 -2
- package/src/styles/agent-native.css +0 -24
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/src/templates/chat/app/design-system.ts +3 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/src/templates/default/app/design-system.ts +3 -0
- package/src/templates/default/app/root.tsx +5 -2
- package/src/templates/default/package.json +1 -0
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/src/terminal/cli-registry.ts +1 -1
- package/src/vite/client.ts +205 -1
- package/corpus/templates/analytics/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/analytics/app/components/ui/chart.tsx +0 -386
- package/corpus/templates/calendar/app/components/ui/sonner.tsx +0 -58
- package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -142
- package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
- package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -145
- package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
- package/corpus/templates/crm/.env.example +0 -5
- package/corpus/templates/crm/AGENTS.md +0 -120
- package/corpus/templates/crm/CHANGELOG.md +0 -1
- package/corpus/templates/crm/DEVELOPING.md +0 -66
- package/corpus/templates/crm/README.md +0 -106
- package/corpus/templates/crm/_gitignore +0 -12
- package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
- package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
- package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
- package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
- package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
- package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
- package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
- package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
- package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
- package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
- package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
- package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
- package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
- package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
- package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
- package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
- package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
- package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
- package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
- package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
- package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
- package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
- package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
- package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
- package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
- package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
- package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
- package/corpus/templates/crm/actions/navigate.ts +0 -63
- package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
- package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
- package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
- package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
- package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
- package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
- package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
- package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
- package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
- package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
- package/corpus/templates/crm/actions/run.ts +0 -7
- package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
- package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
- package/corpus/templates/crm/actions/sync-crm.ts +0 -146
- package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
- package/corpus/templates/crm/actions/view-screen.ts +0 -218
- package/corpus/templates/crm/agent-native.app-skill.json +0 -58
- package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
- package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -83
- package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -225
- package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -413
- package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
- package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
- package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -367
- package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -92
- package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -96
- package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
- package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
- package/corpus/templates/crm/app/entry.client.tsx +0 -16
- package/corpus/templates/crm/app/entry.server.tsx +0 -10
- package/corpus/templates/crm/app/global.css +0 -167
- package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
- package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
- package/corpus/templates/crm/app/i18n/index.ts +0 -34
- package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
- package/corpus/templates/crm/app/lib/navigation.ts +0 -54
- package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
- package/corpus/templates/crm/app/lib/types.ts +0 -172
- package/corpus/templates/crm/app/lib/utils.ts +0 -1
- package/corpus/templates/crm/app/root.tsx +0 -88
- package/corpus/templates/crm/app/routes/_index.tsx +0 -26
- package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
- package/corpus/templates/crm/app/routes/agent.tsx +0 -5
- package/corpus/templates/crm/app/routes/ask.tsx +0 -53
- package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
- package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
- package/corpus/templates/crm/app/routes/people.tsx +0 -41
- package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
- package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
- package/corpus/templates/crm/app/routes/settings.tsx +0 -63
- package/corpus/templates/crm/app/routes/setup.tsx +0 -308
- package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
- package/corpus/templates/crm/app/routes/views.tsx +0 -333
- package/corpus/templates/crm/app/routes.ts +0 -17
- package/corpus/templates/crm/app/vite-env.d.ts +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
- package/corpus/templates/crm/components.json +0 -20
- package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
- package/corpus/templates/crm/learnings.defaults.md +0 -5
- package/corpus/templates/crm/package.json +0 -59
- package/corpus/templates/crm/public/favicon.svg +0 -1
- package/corpus/templates/crm/public/icon-180.svg +0 -1
- package/corpus/templates/crm/public/manifest.json +0 -11
- package/corpus/templates/crm/react-router.config.ts +0 -7
- package/corpus/templates/crm/server/crm/adapter.ts +0 -32
- package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
- package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
- package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
- package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
- package/corpus/templates/crm/server/crm/read-through.ts +0 -207
- package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
- package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
- package/corpus/templates/crm/server/db/index.ts +0 -169
- package/corpus/templates/crm/server/db/schema.ts +0 -441
- package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
- package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
- package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
- package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
- package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
- package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
- package/corpus/templates/crm/server/middleware/auth.ts +0 -4
- package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
- package/corpus/templates/crm/server/plugins/auth.ts +0 -14
- package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
- package/corpus/templates/crm/server/plugins/db.ts +0 -454
- package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
- package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
- package/corpus/templates/crm/shared/crm-contract.ts +0 -254
- package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
- package/corpus/templates/crm/ssr-entry.ts +0 -11
- package/corpus/templates/crm/tsconfig.json +0 -24
- package/corpus/templates/crm/vite.config.ts +0 -15
- package/corpus/templates/crm/vitest.config.ts +0 -5
- package/corpus/templates/forms/app/components/ui/calendar.tsx +0 -214
- package/corpus/templates/forms/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/forms/app/components/ui/command.tsx +0 -153
- package/corpus/templates/forms/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/forms/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/macros/app/components/ui/menubar.tsx +0 -238
- package/corpus/templates/macros/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/mail/app/components/ui/calendar.tsx +0 -211
- package/corpus/templates/mail/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/mail/app/components/ui/command.tsx +0 -153
- package/corpus/templates/mail/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/mail/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/tasks/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/tasks/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/tasks/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/tasks/app/components/ui/form.tsx +0 -177
- package/corpus/templates/tasks/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/tasks/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/tasks/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/tasks/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/tasks/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/tasks/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/tasks/app/components/ui/toggle.tsx +0 -43
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { Button as ToolkitButton } from "@agent-native/toolkit/ui/button";
|
|
2
|
+
import {
|
|
3
|
+
Select,
|
|
4
|
+
SelectContent,
|
|
5
|
+
SelectItem,
|
|
6
|
+
SelectTrigger,
|
|
7
|
+
SelectValue,
|
|
8
|
+
} from "@agent-native/toolkit/ui/select";
|
|
1
9
|
import {
|
|
2
10
|
Table,
|
|
3
11
|
TableBody,
|
|
@@ -28,7 +36,14 @@ import {
|
|
|
28
36
|
IconUsersGroup,
|
|
29
37
|
IconHelpCircle,
|
|
30
38
|
} from "@tabler/icons-react";
|
|
31
|
-
import {
|
|
39
|
+
import {
|
|
40
|
+
forwardRef,
|
|
41
|
+
useMemo,
|
|
42
|
+
useRef,
|
|
43
|
+
useState,
|
|
44
|
+
type ComponentPropsWithoutRef,
|
|
45
|
+
type ReactNode,
|
|
46
|
+
} from "react";
|
|
32
47
|
|
|
33
48
|
import type { DomainMatchOrg } from "../../org/types.js";
|
|
34
49
|
import {
|
|
@@ -38,6 +53,7 @@ import {
|
|
|
38
53
|
TooltipTrigger,
|
|
39
54
|
} from "../components/ui/tooltip.js";
|
|
40
55
|
import { useT } from "../i18n.js";
|
|
56
|
+
import { cn } from "../utils.js";
|
|
41
57
|
import {
|
|
42
58
|
useOrg,
|
|
43
59
|
useOrgMembers,
|
|
@@ -57,6 +73,22 @@ import {
|
|
|
57
73
|
type SyncA2ASecretResult,
|
|
58
74
|
} from "./hooks.js";
|
|
59
75
|
|
|
76
|
+
const Button = forwardRef<
|
|
77
|
+
HTMLButtonElement,
|
|
78
|
+
ComponentPropsWithoutRef<typeof ToolkitButton>
|
|
79
|
+
>(({ className, ...props }, ref) => (
|
|
80
|
+
<ToolkitButton
|
|
81
|
+
ref={ref}
|
|
82
|
+
variant="ghost"
|
|
83
|
+
className={cn(
|
|
84
|
+
"h-auto p-0 hover:bg-transparent hover:text-inherit active:scale-100 [&_svg]:!size-auto",
|
|
85
|
+
className,
|
|
86
|
+
)}
|
|
87
|
+
{...props}
|
|
88
|
+
/>
|
|
89
|
+
));
|
|
90
|
+
Button.displayName = "TeamPrimitiveButton";
|
|
91
|
+
|
|
60
92
|
export interface TeamPageProps {
|
|
61
93
|
/**
|
|
62
94
|
* Optional wrapper around the page contents. Templates pass their own Layout
|
|
@@ -86,16 +118,16 @@ export interface TeamPageProps {
|
|
|
86
118
|
|
|
87
119
|
function RoleIcon({ role }: { role: string }) {
|
|
88
120
|
if (role === "owner")
|
|
89
|
-
return <IconCrown className="h-3.5 w-3.5 text-
|
|
121
|
+
return <IconCrown className="h-3.5 w-3.5 text-primary" />;
|
|
90
122
|
if (role === "admin")
|
|
91
|
-
return <IconShieldCheck className="h-3.5 w-3.5 text-
|
|
123
|
+
return <IconShieldCheck className="h-3.5 w-3.5 text-muted-foreground" />;
|
|
92
124
|
return null;
|
|
93
125
|
}
|
|
94
126
|
|
|
95
127
|
function ErrorText({ error }: { error: unknown }) {
|
|
96
128
|
if (!error) return null;
|
|
97
129
|
return (
|
|
98
|
-
<p className="text-xs text-
|
|
130
|
+
<p className="text-xs text-destructive">
|
|
99
131
|
{error instanceof Error ? error.message : String(error)}
|
|
100
132
|
</p>
|
|
101
133
|
);
|
|
@@ -122,18 +154,20 @@ function PendingInvitationsCard() {
|
|
|
122
154
|
{t("org.invitedByLabel", { name: inv.invitedBy })}
|
|
123
155
|
</div>
|
|
124
156
|
</div>
|
|
125
|
-
<
|
|
157
|
+
<Button
|
|
126
158
|
type="button"
|
|
159
|
+
intent="primary"
|
|
160
|
+
emphasis="solid"
|
|
127
161
|
onClick={() => acceptInvitation.mutate(inv.id)}
|
|
128
162
|
disabled={acceptInvitation.isPending}
|
|
129
|
-
className="rounded-md bg-
|
|
163
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
130
164
|
>
|
|
131
165
|
{acceptInvitation.isPending ? (
|
|
132
|
-
<IconLoader2 className="
|
|
166
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
133
167
|
) : (
|
|
134
168
|
t("org.accept")
|
|
135
169
|
)}
|
|
136
|
-
</
|
|
170
|
+
</Button>
|
|
137
171
|
</div>
|
|
138
172
|
))}
|
|
139
173
|
<ErrorText error={acceptInvitation.error} />
|
|
@@ -161,13 +195,15 @@ function JoinByDomainCard({ matches }: { matches: DomainMatchOrg[] }) {
|
|
|
161
195
|
className="flex items-center justify-between rounded-md border border-border p-3"
|
|
162
196
|
>
|
|
163
197
|
<div className="flex items-center gap-2.5">
|
|
164
|
-
<div className="flex h-8 w-8 items-center justify-center rounded-md bg-
|
|
165
|
-
<IconUsersGroup className="h-4 w-4 text-
|
|
198
|
+
<div className="flex h-8 w-8 items-center justify-center rounded-md bg-primary/10">
|
|
199
|
+
<IconUsersGroup className="h-4 w-4 text-primary" />
|
|
166
200
|
</div>
|
|
167
201
|
<div className="text-sm font-medium">{m.orgName}</div>
|
|
168
202
|
</div>
|
|
169
|
-
<
|
|
203
|
+
<Button
|
|
170
204
|
type="button"
|
|
205
|
+
intent="primary"
|
|
206
|
+
emphasis="solid"
|
|
171
207
|
disabled={joinByDomain.isPending && pendingId === m.orgId}
|
|
172
208
|
onClick={() => {
|
|
173
209
|
setPendingId(m.orgId);
|
|
@@ -175,14 +211,14 @@ function JoinByDomainCard({ matches }: { matches: DomainMatchOrg[] }) {
|
|
|
175
211
|
onSettled: () => setPendingId(null),
|
|
176
212
|
});
|
|
177
213
|
}}
|
|
178
|
-
className="rounded-md bg-
|
|
214
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
179
215
|
>
|
|
180
216
|
{joinByDomain.isPending && pendingId === m.orgId ? (
|
|
181
|
-
<IconLoader2 className="
|
|
217
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
182
218
|
) : (
|
|
183
219
|
t("org.join")
|
|
184
220
|
)}
|
|
185
|
-
</
|
|
221
|
+
</Button>
|
|
186
222
|
</div>
|
|
187
223
|
))}
|
|
188
224
|
</div>
|
|
@@ -204,13 +240,15 @@ function CreateOrgCard({ description }: { description?: string }) {
|
|
|
204
240
|
{description || t("org.createOrgCardDescription")}
|
|
205
241
|
</p>
|
|
206
242
|
{!showForm ? (
|
|
207
|
-
<
|
|
243
|
+
<Button
|
|
208
244
|
type="button"
|
|
245
|
+
intent="primary"
|
|
246
|
+
emphasis="solid"
|
|
209
247
|
onClick={() => setShowForm(true)}
|
|
210
|
-
className="rounded-md bg-
|
|
248
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"
|
|
211
249
|
>
|
|
212
250
|
{t("org.createOrganization")}
|
|
213
|
-
</
|
|
251
|
+
</Button>
|
|
214
252
|
) : (
|
|
215
253
|
<div className="space-y-2">
|
|
216
254
|
<input
|
|
@@ -222,8 +260,10 @@ function CreateOrgCard({ description }: { description?: string }) {
|
|
|
222
260
|
autoFocus
|
|
223
261
|
/>
|
|
224
262
|
<div className="flex gap-2">
|
|
225
|
-
<
|
|
263
|
+
<Button
|
|
226
264
|
type="button"
|
|
265
|
+
intent="primary"
|
|
266
|
+
emphasis="solid"
|
|
227
267
|
disabled={!name.trim() || createOrg.isPending}
|
|
228
268
|
onClick={() =>
|
|
229
269
|
createOrg.mutate(name.trim(), {
|
|
@@ -233,16 +273,18 @@ function CreateOrgCard({ description }: { description?: string }) {
|
|
|
233
273
|
},
|
|
234
274
|
})
|
|
235
275
|
}
|
|
236
|
-
className="rounded-md bg-
|
|
276
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
237
277
|
>
|
|
238
278
|
{createOrg.isPending ? (
|
|
239
|
-
<IconLoader2 className="
|
|
279
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
240
280
|
) : (
|
|
241
281
|
t("org.create")
|
|
242
282
|
)}
|
|
243
|
-
</
|
|
244
|
-
<
|
|
283
|
+
</Button>
|
|
284
|
+
<Button
|
|
245
285
|
type="button"
|
|
286
|
+
intent="neutral"
|
|
287
|
+
emphasis="outline"
|
|
246
288
|
onClick={() => {
|
|
247
289
|
setShowForm(false);
|
|
248
290
|
setName("");
|
|
@@ -250,7 +292,7 @@ function CreateOrgCard({ description }: { description?: string }) {
|
|
|
250
292
|
className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
|
|
251
293
|
>
|
|
252
294
|
{t("org.cancel")}
|
|
253
|
-
</
|
|
295
|
+
</Button>
|
|
254
296
|
</div>
|
|
255
297
|
<ErrorText error={createOrg.error} />
|
|
256
298
|
</div>
|
|
@@ -268,7 +310,7 @@ function OrgNameDisplay({ name, canEdit }: { name: string; canEdit: boolean }) {
|
|
|
268
310
|
|
|
269
311
|
if (!editing) {
|
|
270
312
|
return (
|
|
271
|
-
<
|
|
313
|
+
<Button
|
|
272
314
|
type="button"
|
|
273
315
|
onClick={() => {
|
|
274
316
|
setDraft(name);
|
|
@@ -277,8 +319,11 @@ function OrgNameDisplay({ name, canEdit }: { name: string; canEdit: boolean }) {
|
|
|
277
319
|
className="group flex items-center gap-1.5 text-sm font-medium hover:text-foreground/80"
|
|
278
320
|
>
|
|
279
321
|
{name}
|
|
280
|
-
<IconPencil
|
|
281
|
-
|
|
322
|
+
<IconPencil
|
|
323
|
+
size={12}
|
|
324
|
+
className="text-muted-foreground opacity-0 group-hover:opacity-100"
|
|
325
|
+
/>
|
|
326
|
+
</Button>
|
|
282
327
|
);
|
|
283
328
|
}
|
|
284
329
|
|
|
@@ -341,8 +386,8 @@ function MembersCard() {
|
|
|
341
386
|
<section className="rounded-lg border border-border bg-card p-4 space-y-4">
|
|
342
387
|
<div className="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
|
|
343
388
|
<div className="flex min-w-0 items-center gap-3">
|
|
344
|
-
<div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-
|
|
345
|
-
<IconUsersGroup className="h-5 w-5 text-
|
|
389
|
+
<div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10">
|
|
390
|
+
<IconUsersGroup className="h-5 w-5 text-primary" />
|
|
346
391
|
</div>
|
|
347
392
|
<div className="min-w-0">
|
|
348
393
|
<OrgNameDisplay
|
|
@@ -356,18 +401,22 @@ function MembersCard() {
|
|
|
356
401
|
</div>
|
|
357
402
|
</div>
|
|
358
403
|
{hasMultipleOrgs && (
|
|
359
|
-
<
|
|
404
|
+
<Select
|
|
360
405
|
value={org.orgId ?? ""}
|
|
361
|
-
|
|
406
|
+
onValueChange={(value) => switchOrg.mutate(value || null)}
|
|
362
407
|
disabled={switchOrg.isPending}
|
|
363
|
-
className="w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-xs sm:w-auto"
|
|
364
408
|
>
|
|
365
|
-
|
|
366
|
-
<
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
409
|
+
<SelectTrigger className="h-auto w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-xs sm:w-auto">
|
|
410
|
+
<SelectValue />
|
|
411
|
+
</SelectTrigger>
|
|
412
|
+
<SelectContent>
|
|
413
|
+
{org.orgs.map((o) => (
|
|
414
|
+
<SelectItem key={o.orgId} value={o.orgId}>
|
|
415
|
+
{o.orgName}
|
|
416
|
+
</SelectItem>
|
|
417
|
+
))}
|
|
418
|
+
</SelectContent>
|
|
419
|
+
</Select>
|
|
371
420
|
)}
|
|
372
421
|
</div>
|
|
373
422
|
|
|
@@ -423,14 +472,16 @@ function MembersTableCard({
|
|
|
423
472
|
</p>
|
|
424
473
|
</div>
|
|
425
474
|
{canInvite && !showInviteForm && (
|
|
426
|
-
<
|
|
475
|
+
<Button
|
|
427
476
|
type="button"
|
|
477
|
+
intent="primary"
|
|
478
|
+
emphasis="solid"
|
|
428
479
|
onClick={() => setShowInviteForm(true)}
|
|
429
|
-
className="inline-flex items-center justify-center gap-1.5 rounded-md bg-
|
|
480
|
+
className="inline-flex items-center justify-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"
|
|
430
481
|
>
|
|
431
|
-
<IconUserPlus
|
|
482
|
+
<IconUserPlus size={14} />
|
|
432
483
|
{t("org.inviteMembers")}
|
|
433
|
-
</
|
|
484
|
+
</Button>
|
|
434
485
|
)}
|
|
435
486
|
</div>
|
|
436
487
|
{canInvite && showInviteForm && (
|
|
@@ -576,11 +627,14 @@ function MemberRow({
|
|
|
576
627
|
{canManage ? (
|
|
577
628
|
<div className="flex shrink-0 items-center justify-end gap-1">
|
|
578
629
|
{editing ? (
|
|
579
|
-
<
|
|
580
|
-
|
|
630
|
+
<Select
|
|
631
|
+
defaultOpen
|
|
581
632
|
value={role}
|
|
582
|
-
|
|
583
|
-
|
|
633
|
+
onOpenChange={(open) => {
|
|
634
|
+
if (!open) setEditing(false);
|
|
635
|
+
}}
|
|
636
|
+
onValueChange={(value) => {
|
|
637
|
+
const next = value === "admin" ? "admin" : "member";
|
|
584
638
|
if (next !== role) {
|
|
585
639
|
changeRole.mutate(
|
|
586
640
|
{ email, role: next },
|
|
@@ -590,60 +644,72 @@ function MemberRow({
|
|
|
590
644
|
setEditing(false);
|
|
591
645
|
}
|
|
592
646
|
}}
|
|
593
|
-
onBlur={() => setEditing(false)}
|
|
594
647
|
disabled={changeRole.isPending}
|
|
595
|
-
className="rounded-md border border-border bg-background px-1.5 py-0.5 text-[11px]"
|
|
596
648
|
>
|
|
597
|
-
<
|
|
598
|
-
|
|
599
|
-
|
|
649
|
+
<SelectTrigger
|
|
650
|
+
autoFocus
|
|
651
|
+
className="h-auto w-auto rounded-md border border-border bg-background px-1.5 py-0.5 text-[11px]"
|
|
652
|
+
>
|
|
653
|
+
<SelectValue />
|
|
654
|
+
</SelectTrigger>
|
|
655
|
+
<SelectContent>
|
|
656
|
+
<SelectItem value="member">{t("org.member")}</SelectItem>
|
|
657
|
+
<SelectItem value="admin">{t("org.admin")}</SelectItem>
|
|
658
|
+
</SelectContent>
|
|
659
|
+
</Select>
|
|
600
660
|
) : (
|
|
601
661
|
<Tooltip>
|
|
602
662
|
<TooltipTrigger asChild>
|
|
603
|
-
<
|
|
663
|
+
<Button
|
|
604
664
|
type="button"
|
|
605
665
|
onClick={() => setEditing(true)}
|
|
606
666
|
className="text-muted-foreground hover:text-foreground"
|
|
607
667
|
>
|
|
608
|
-
<IconPencil
|
|
609
|
-
</
|
|
668
|
+
<IconPencil size={14} />
|
|
669
|
+
</Button>
|
|
610
670
|
</TooltipTrigger>
|
|
611
671
|
<TooltipContent>{t("org.changeRole")}</TooltipContent>
|
|
612
672
|
</Tooltip>
|
|
613
673
|
)}
|
|
614
674
|
{confirmingRemove ? (
|
|
615
675
|
<div className="flex items-center gap-1">
|
|
616
|
-
<
|
|
676
|
+
<Button
|
|
617
677
|
type="button"
|
|
678
|
+
intent="neutral"
|
|
679
|
+
emphasis="ghost"
|
|
618
680
|
onClick={() => setConfirmingRemove(false)}
|
|
619
681
|
className="rounded px-1.5 py-0.5 text-[11px] text-muted-foreground hover:bg-accent hover:text-foreground"
|
|
620
682
|
>
|
|
621
683
|
{t("org.cancel")}
|
|
622
|
-
</
|
|
623
|
-
<
|
|
684
|
+
</Button>
|
|
685
|
+
<Button
|
|
624
686
|
type="button"
|
|
687
|
+
intent="danger"
|
|
688
|
+
emphasis="solid"
|
|
625
689
|
disabled={removeMember.isPending}
|
|
626
690
|
onClick={() =>
|
|
627
691
|
removeMember.mutate(email, {
|
|
628
692
|
onSettled: () => setConfirmingRemove(false),
|
|
629
693
|
})
|
|
630
694
|
}
|
|
631
|
-
className="rounded bg-
|
|
695
|
+
className="rounded bg-destructive px-1.5 py-0.5 text-[11px] text-destructive-foreground hover:bg-destructive/90 disabled:opacity-50"
|
|
632
696
|
>
|
|
633
697
|
{t("org.remove")}
|
|
634
|
-
</
|
|
698
|
+
</Button>
|
|
635
699
|
</div>
|
|
636
700
|
) : (
|
|
637
701
|
<Tooltip>
|
|
638
702
|
<TooltipTrigger asChild>
|
|
639
|
-
<
|
|
703
|
+
<Button
|
|
640
704
|
type="button"
|
|
705
|
+
intent="danger"
|
|
706
|
+
emphasis="ghost"
|
|
641
707
|
disabled={removeMember.isPending}
|
|
642
708
|
onClick={() => setConfirmingRemove(true)}
|
|
643
|
-
className="text-muted-foreground hover:text-
|
|
709
|
+
className="text-muted-foreground hover:text-destructive disabled:opacity-50"
|
|
644
710
|
>
|
|
645
|
-
<IconTrash
|
|
646
|
-
</
|
|
711
|
+
<IconTrash size={14} />
|
|
712
|
+
</Button>
|
|
647
713
|
</TooltipTrigger>
|
|
648
714
|
<TooltipContent>{t("org.removeMember")}</TooltipContent>
|
|
649
715
|
</Tooltip>
|
|
@@ -810,66 +876,78 @@ function BulkInviteForm({
|
|
|
810
876
|
className="flex-1 rounded-md border border-border bg-background px-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
|
|
811
877
|
autoFocus={i === drafts.length - 1}
|
|
812
878
|
/>
|
|
813
|
-
<
|
|
879
|
+
<Select
|
|
814
880
|
value={draft.role}
|
|
815
|
-
|
|
881
|
+
onValueChange={(value) =>
|
|
816
882
|
setDraft(i, {
|
|
817
|
-
role:
|
|
883
|
+
role: value === "admin" ? "admin" : "member",
|
|
818
884
|
})
|
|
819
885
|
}
|
|
820
886
|
disabled={!canSetAdmin}
|
|
821
|
-
title={
|
|
822
|
-
canSetAdmin
|
|
823
|
-
? undefined
|
|
824
|
-
: "Only the organization owner can invite admins"
|
|
825
|
-
}
|
|
826
|
-
className="rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
|
|
827
887
|
>
|
|
828
|
-
<
|
|
829
|
-
|
|
830
|
-
|
|
888
|
+
<SelectTrigger
|
|
889
|
+
title={
|
|
890
|
+
canSetAdmin
|
|
891
|
+
? undefined
|
|
892
|
+
: "Only the organization owner can invite admins"
|
|
893
|
+
}
|
|
894
|
+
className="h-auto w-auto rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
|
|
895
|
+
>
|
|
896
|
+
<SelectValue />
|
|
897
|
+
</SelectTrigger>
|
|
898
|
+
<SelectContent>
|
|
899
|
+
<SelectItem value="member">Member</SelectItem>
|
|
900
|
+
<SelectItem value="admin">Admin</SelectItem>
|
|
901
|
+
</SelectContent>
|
|
902
|
+
</Select>
|
|
831
903
|
{drafts.length > 1 && (
|
|
832
|
-
<
|
|
904
|
+
<Button
|
|
833
905
|
type="button"
|
|
834
906
|
onClick={() =>
|
|
835
907
|
setDrafts((prev) => prev.filter((_, j) => j !== i))
|
|
836
908
|
}
|
|
837
|
-
className="text-muted-foreground hover:text-
|
|
909
|
+
className="text-muted-foreground hover:text-destructive"
|
|
838
910
|
>
|
|
839
|
-
<IconX
|
|
840
|
-
</
|
|
911
|
+
<IconX size={14} />
|
|
912
|
+
</Button>
|
|
841
913
|
)}
|
|
842
914
|
</div>
|
|
843
915
|
))}
|
|
844
916
|
</div>
|
|
845
917
|
|
|
846
918
|
<div className="flex flex-wrap items-center gap-2">
|
|
847
|
-
<
|
|
919
|
+
<Button
|
|
848
920
|
type="button"
|
|
921
|
+
intent="neutral"
|
|
922
|
+
emphasis="outline"
|
|
849
923
|
onClick={() =>
|
|
850
924
|
setDrafts((prev) => [...prev, { email: "", role: "member" }])
|
|
851
925
|
}
|
|
852
926
|
className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
|
|
853
927
|
>
|
|
854
|
-
<IconPlus
|
|
928
|
+
<IconPlus size={14} />
|
|
855
929
|
Add another
|
|
856
|
-
</
|
|
857
|
-
<
|
|
930
|
+
</Button>
|
|
931
|
+
<Button
|
|
858
932
|
type="button"
|
|
933
|
+
intent="neutral"
|
|
934
|
+
emphasis="outline"
|
|
859
935
|
onClick={() => setPasteOpen((v) => !v)}
|
|
860
936
|
className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
|
|
861
937
|
>
|
|
862
|
-
<IconUserPlus
|
|
938
|
+
<IconUserPlus size={14} />
|
|
863
939
|
Paste many
|
|
864
|
-
</
|
|
865
|
-
<
|
|
940
|
+
</Button>
|
|
941
|
+
<Button
|
|
866
942
|
type="button"
|
|
943
|
+
intent="neutral"
|
|
944
|
+
emphasis="outline"
|
|
867
945
|
onClick={() => fileRef.current?.click()}
|
|
868
946
|
className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
|
|
869
947
|
>
|
|
870
|
-
<IconFileImport
|
|
948
|
+
<IconFileImport size={14} />
|
|
871
949
|
Import CSV
|
|
872
|
-
</
|
|
950
|
+
</Button>
|
|
873
951
|
<input
|
|
874
952
|
ref={fileRef}
|
|
875
953
|
type="file"
|
|
@@ -897,31 +975,39 @@ function BulkInviteForm({
|
|
|
897
975
|
className="w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
|
|
898
976
|
/>
|
|
899
977
|
<div className="flex items-center gap-2">
|
|
900
|
-
<
|
|
978
|
+
<Select
|
|
901
979
|
value={pasteRole}
|
|
902
|
-
|
|
903
|
-
setPasteRole(
|
|
980
|
+
onValueChange={(value) =>
|
|
981
|
+
setPasteRole(value === "admin" ? "admin" : "member")
|
|
904
982
|
}
|
|
905
983
|
disabled={!canSetAdmin}
|
|
906
|
-
className="rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
|
|
907
984
|
>
|
|
908
|
-
<
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
985
|
+
<SelectTrigger className="h-auto w-auto rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50">
|
|
986
|
+
<SelectValue />
|
|
987
|
+
</SelectTrigger>
|
|
988
|
+
<SelectContent>
|
|
989
|
+
<SelectItem value="member">Add as members</SelectItem>
|
|
990
|
+
<SelectItem value="admin">Add as admins</SelectItem>
|
|
991
|
+
</SelectContent>
|
|
992
|
+
</Select>
|
|
993
|
+
<Button
|
|
912
994
|
type="button"
|
|
995
|
+
intent="primary"
|
|
996
|
+
emphasis="solid"
|
|
913
997
|
onClick={() => {
|
|
914
998
|
appendEmails(parseEmailList(pasteValue), pasteRole);
|
|
915
999
|
setPasteValue("");
|
|
916
1000
|
setPasteOpen(false);
|
|
917
1001
|
}}
|
|
918
1002
|
disabled={parseEmailList(pasteValue).length === 0}
|
|
919
|
-
className="rounded-md bg-
|
|
1003
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
920
1004
|
>
|
|
921
1005
|
Add
|
|
922
|
-
</
|
|
923
|
-
<
|
|
1006
|
+
</Button>
|
|
1007
|
+
<Button
|
|
924
1008
|
type="button"
|
|
1009
|
+
intent="neutral"
|
|
1010
|
+
emphasis="outline"
|
|
925
1011
|
onClick={() => {
|
|
926
1012
|
setPasteValue("");
|
|
927
1013
|
setPasteOpen(false);
|
|
@@ -929,35 +1015,39 @@ function BulkInviteForm({
|
|
|
929
1015
|
className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
|
|
930
1016
|
>
|
|
931
1017
|
Cancel
|
|
932
|
-
</
|
|
1018
|
+
</Button>
|
|
933
1019
|
</div>
|
|
934
1020
|
</div>
|
|
935
1021
|
)}
|
|
936
1022
|
|
|
937
1023
|
<div className="flex items-center gap-2">
|
|
938
|
-
<
|
|
1024
|
+
<Button
|
|
939
1025
|
type="button"
|
|
1026
|
+
intent="primary"
|
|
1027
|
+
emphasis="solid"
|
|
940
1028
|
disabled={validDrafts.length === 0 || bulkInvite.isPending}
|
|
941
1029
|
onClick={submit}
|
|
942
|
-
className="rounded-md bg-
|
|
1030
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
943
1031
|
>
|
|
944
1032
|
{bulkInvite.isPending ? (
|
|
945
|
-
<IconLoader2 className="
|
|
1033
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
946
1034
|
) : (
|
|
947
1035
|
<span className="inline-flex items-center gap-1">
|
|
948
|
-
<IconCheck
|
|
1036
|
+
<IconCheck size={14} />
|
|
949
1037
|
Send {validDrafts.length || ""}{" "}
|
|
950
1038
|
{validDrafts.length === 1 ? "invite" : "invites"}
|
|
951
1039
|
</span>
|
|
952
1040
|
)}
|
|
953
|
-
</
|
|
954
|
-
<
|
|
1041
|
+
</Button>
|
|
1042
|
+
<Button
|
|
955
1043
|
type="button"
|
|
1044
|
+
intent="neutral"
|
|
1045
|
+
emphasis="outline"
|
|
956
1046
|
onClick={onClose}
|
|
957
1047
|
className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
|
|
958
1048
|
>
|
|
959
1049
|
Close
|
|
960
|
-
</
|
|
1050
|
+
</Button>
|
|
961
1051
|
</div>
|
|
962
1052
|
|
|
963
1053
|
<p className="text-[11px] text-muted-foreground">
|
|
@@ -970,14 +1060,14 @@ function BulkInviteForm({
|
|
|
970
1060
|
{resultBanner && (
|
|
971
1061
|
<div className="space-y-1 rounded-md border border-border bg-accent/30 p-2.5">
|
|
972
1062
|
{resultBanner.succeeded > 0 && (
|
|
973
|
-
<p className="text-[11px] text-
|
|
1063
|
+
<p className="text-[11px] text-primary">
|
|
974
1064
|
<IconCheck className="inline h-3 w-3 -mt-0.5" /> Sent{" "}
|
|
975
1065
|
{resultBanner.succeeded}{" "}
|
|
976
1066
|
{resultBanner.succeeded === 1 ? "invite" : "invites"}.
|
|
977
1067
|
</p>
|
|
978
1068
|
)}
|
|
979
1069
|
{resultBanner.failed.length > 0 && (
|
|
980
|
-
<ul className="space-y-0.5 text-[11px] text-
|
|
1070
|
+
<ul className="space-y-0.5 text-[11px] text-destructive">
|
|
981
1071
|
{resultBanner.failed.map((f) => (
|
|
982
1072
|
<li key={f.email}>
|
|
983
1073
|
<IconAlertTriangle className="inline h-3 w-3 -mt-0.5 me-1" />
|
|
@@ -1039,7 +1129,7 @@ function DomainSettingsSection({
|
|
|
1039
1129
|
</span>
|
|
1040
1130
|
<Tooltip>
|
|
1041
1131
|
<TooltipTrigger asChild>
|
|
1042
|
-
<
|
|
1132
|
+
<Button
|
|
1043
1133
|
type="button"
|
|
1044
1134
|
onClick={() => {
|
|
1045
1135
|
setDraft(domain);
|
|
@@ -1047,37 +1137,41 @@ function DomainSettingsSection({
|
|
|
1047
1137
|
}}
|
|
1048
1138
|
className="text-muted-foreground hover:text-foreground"
|
|
1049
1139
|
>
|
|
1050
|
-
<IconPencil
|
|
1051
|
-
</
|
|
1140
|
+
<IconPencil size={14} />
|
|
1141
|
+
</Button>
|
|
1052
1142
|
</TooltipTrigger>
|
|
1053
1143
|
<TooltipContent>Edit domain</TooltipContent>
|
|
1054
1144
|
</Tooltip>
|
|
1055
1145
|
<Tooltip>
|
|
1056
1146
|
<TooltipTrigger asChild>
|
|
1057
|
-
<
|
|
1147
|
+
<Button
|
|
1058
1148
|
type="button"
|
|
1149
|
+
intent="danger"
|
|
1150
|
+
emphasis="ghost"
|
|
1059
1151
|
disabled={setOrgDomain.isPending}
|
|
1060
1152
|
onClick={() => setOrgDomain.mutate(null)}
|
|
1061
|
-
className="text-muted-foreground hover:text-
|
|
1153
|
+
className="text-muted-foreground hover:text-destructive disabled:opacity-50"
|
|
1062
1154
|
>
|
|
1063
|
-
<IconX
|
|
1064
|
-
</
|
|
1155
|
+
<IconX size={14} />
|
|
1156
|
+
</Button>
|
|
1065
1157
|
</TooltipTrigger>
|
|
1066
1158
|
<TooltipContent>Remove domain</TooltipContent>
|
|
1067
1159
|
</Tooltip>
|
|
1068
1160
|
</>
|
|
1069
1161
|
) : (
|
|
1070
|
-
<
|
|
1162
|
+
<Button
|
|
1071
1163
|
type="button"
|
|
1164
|
+
intent="neutral"
|
|
1165
|
+
emphasis="outline"
|
|
1072
1166
|
onClick={() => {
|
|
1073
1167
|
setDraft(ownDomain);
|
|
1074
1168
|
setEditing(true);
|
|
1075
1169
|
}}
|
|
1076
1170
|
className="flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
|
|
1077
1171
|
>
|
|
1078
|
-
<IconAt
|
|
1172
|
+
<IconAt size={14} />
|
|
1079
1173
|
Allow {ownDomain || "your domain"} to auto-join
|
|
1080
|
-
</
|
|
1174
|
+
</Button>
|
|
1081
1175
|
)}
|
|
1082
1176
|
</div>
|
|
1083
1177
|
) : (
|
|
@@ -1094,25 +1188,29 @@ function DomainSettingsSection({
|
|
|
1094
1188
|
className="rounded-md border border-border bg-background px-2.5 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
|
|
1095
1189
|
autoFocus
|
|
1096
1190
|
/>
|
|
1097
|
-
<
|
|
1191
|
+
<Button
|
|
1098
1192
|
type="button"
|
|
1193
|
+
intent="primary"
|
|
1194
|
+
emphasis="solid"
|
|
1099
1195
|
disabled={setOrgDomain.isPending}
|
|
1100
1196
|
onClick={save}
|
|
1101
|
-
className="rounded-md bg-
|
|
1197
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
1102
1198
|
>
|
|
1103
1199
|
{setOrgDomain.isPending ? (
|
|
1104
|
-
<IconLoader2 className="
|
|
1200
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
1105
1201
|
) : (
|
|
1106
1202
|
"Save"
|
|
1107
1203
|
)}
|
|
1108
|
-
</
|
|
1109
|
-
<
|
|
1204
|
+
</Button>
|
|
1205
|
+
<Button
|
|
1110
1206
|
type="button"
|
|
1207
|
+
intent="neutral"
|
|
1208
|
+
emphasis="outline"
|
|
1111
1209
|
onClick={() => setEditing(false)}
|
|
1112
1210
|
className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
|
|
1113
1211
|
>
|
|
1114
1212
|
Cancel
|
|
1115
|
-
</
|
|
1213
|
+
</Button>
|
|
1116
1214
|
</div>
|
|
1117
1215
|
)}
|
|
1118
1216
|
<ErrorText error={setOrgDomain.error} />
|
|
@@ -1214,17 +1312,13 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1214
1312
|
<>
|
|
1215
1313
|
<Tooltip>
|
|
1216
1314
|
<TooltipTrigger asChild>
|
|
1217
|
-
<
|
|
1315
|
+
<Button
|
|
1218
1316
|
type="button"
|
|
1219
1317
|
onClick={() => setRevealed(!revealed)}
|
|
1220
1318
|
className="text-muted-foreground hover:text-foreground"
|
|
1221
1319
|
>
|
|
1222
|
-
{revealed ?
|
|
1223
|
-
|
|
1224
|
-
) : (
|
|
1225
|
-
<IconEye className="h-3.5 w-3.5" />
|
|
1226
|
-
)}
|
|
1227
|
-
</button>
|
|
1320
|
+
{revealed ? <IconEyeOff size={14} /> : <IconEye size={14} />}
|
|
1321
|
+
</Button>
|
|
1228
1322
|
</TooltipTrigger>
|
|
1229
1323
|
<TooltipContent>
|
|
1230
1324
|
{revealed ? "Hide secret" : "Reveal secret"}
|
|
@@ -1232,17 +1326,17 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1232
1326
|
</Tooltip>
|
|
1233
1327
|
<Tooltip>
|
|
1234
1328
|
<TooltipTrigger asChild>
|
|
1235
|
-
<
|
|
1329
|
+
<Button
|
|
1236
1330
|
type="button"
|
|
1237
1331
|
onClick={copyToClipboard}
|
|
1238
1332
|
className="text-muted-foreground hover:text-foreground"
|
|
1239
1333
|
>
|
|
1240
1334
|
{copied ? (
|
|
1241
|
-
<IconCheck className="
|
|
1335
|
+
<IconCheck size={14} className="text-primary" />
|
|
1242
1336
|
) : (
|
|
1243
|
-
<IconCopy
|
|
1337
|
+
<IconCopy size={14} />
|
|
1244
1338
|
)}
|
|
1245
|
-
</
|
|
1339
|
+
</Button>
|
|
1246
1340
|
</TooltipTrigger>
|
|
1247
1341
|
<TooltipContent>Copy secret</TooltipContent>
|
|
1248
1342
|
</Tooltip>
|
|
@@ -1250,19 +1344,21 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1250
1344
|
)}
|
|
1251
1345
|
<Tooltip>
|
|
1252
1346
|
<TooltipTrigger asChild>
|
|
1253
|
-
<
|
|
1347
|
+
<Button
|
|
1254
1348
|
type="button"
|
|
1349
|
+
intent="danger"
|
|
1350
|
+
emphasis="outline"
|
|
1255
1351
|
onClick={regenerate}
|
|
1256
1352
|
disabled={setA2ASecret.isPending || syncA2ASecret.isPending}
|
|
1257
1353
|
className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50 disabled:opacity-50"
|
|
1258
1354
|
>
|
|
1259
1355
|
{setA2ASecret.isPending ? (
|
|
1260
|
-
<IconLoader2 className="
|
|
1356
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
1261
1357
|
) : (
|
|
1262
|
-
<IconRefresh
|
|
1358
|
+
<IconRefresh size={14} />
|
|
1263
1359
|
)}
|
|
1264
1360
|
Regenerate
|
|
1265
|
-
</
|
|
1361
|
+
</Button>
|
|
1266
1362
|
</TooltipTrigger>
|
|
1267
1363
|
<TooltipContent>
|
|
1268
1364
|
Regenerate secret and sync to connected apps
|
|
@@ -1271,19 +1367,21 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1271
1367
|
{secret && (
|
|
1272
1368
|
<Tooltip>
|
|
1273
1369
|
<TooltipTrigger asChild>
|
|
1274
|
-
<
|
|
1370
|
+
<Button
|
|
1275
1371
|
type="button"
|
|
1372
|
+
intent="neutral"
|
|
1373
|
+
emphasis="outline"
|
|
1276
1374
|
onClick={() => syncToApps()}
|
|
1277
1375
|
disabled={setA2ASecret.isPending || syncA2ASecret.isPending}
|
|
1278
1376
|
className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50 disabled:opacity-50"
|
|
1279
1377
|
>
|
|
1280
1378
|
{syncA2ASecret.isPending ? (
|
|
1281
|
-
<IconLoader2 className="
|
|
1379
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
1282
1380
|
) : (
|
|
1283
|
-
<IconCloudUpload
|
|
1381
|
+
<IconCloudUpload size={14} />
|
|
1284
1382
|
)}
|
|
1285
1383
|
Sync to apps
|
|
1286
|
-
</
|
|
1384
|
+
</Button>
|
|
1287
1385
|
</TooltipTrigger>
|
|
1288
1386
|
<TooltipContent>
|
|
1289
1387
|
Push this secret to every connected app
|
|
@@ -1306,7 +1404,7 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1306
1404
|
{syncResult.failed > 0 ? ` (${syncResult.failed} failed)` : ""}.
|
|
1307
1405
|
</p>
|
|
1308
1406
|
{syncResult.failed > 0 && (
|
|
1309
|
-
<ul className="text-[11px] text-
|
|
1407
|
+
<ul className="text-[11px] text-destructive list-disc ps-5 space-y-0.5">
|
|
1310
1408
|
{syncResult.results
|
|
1311
1409
|
.filter((r) => !r.ok)
|
|
1312
1410
|
.map((r) => (
|
|
@@ -1320,14 +1418,16 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1320
1418
|
)}
|
|
1321
1419
|
|
|
1322
1420
|
{!pasteMode ? (
|
|
1323
|
-
<
|
|
1421
|
+
<Button
|
|
1324
1422
|
type="button"
|
|
1423
|
+
intent="neutral"
|
|
1424
|
+
emphasis="outline"
|
|
1325
1425
|
onClick={() => setPasteMode(true)}
|
|
1326
1426
|
className="flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
|
|
1327
1427
|
>
|
|
1328
|
-
<IconKey
|
|
1428
|
+
<IconKey size={14} />
|
|
1329
1429
|
Paste secret from another app
|
|
1330
|
-
</
|
|
1430
|
+
</Button>
|
|
1331
1431
|
) : (
|
|
1332
1432
|
<div className="flex items-center gap-2">
|
|
1333
1433
|
<input
|
|
@@ -1345,20 +1445,24 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1345
1445
|
className="flex-1 rounded-md border border-border bg-background px-2.5 py-1.5 text-sm font-mono focus:outline-none focus:ring-1 focus:ring-foreground"
|
|
1346
1446
|
autoFocus
|
|
1347
1447
|
/>
|
|
1348
|
-
<
|
|
1448
|
+
<Button
|
|
1349
1449
|
type="button"
|
|
1450
|
+
intent="primary"
|
|
1451
|
+
emphasis="solid"
|
|
1350
1452
|
disabled={!pasteValue.trim() || setA2ASecret.isPending}
|
|
1351
1453
|
onClick={saveSecret}
|
|
1352
|
-
className="rounded-md bg-
|
|
1454
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
|
|
1353
1455
|
>
|
|
1354
1456
|
{setA2ASecret.isPending ? (
|
|
1355
|
-
<IconLoader2 className="
|
|
1457
|
+
<IconLoader2 size={14} className="animate-spin" />
|
|
1356
1458
|
) : (
|
|
1357
1459
|
"Save"
|
|
1358
1460
|
)}
|
|
1359
|
-
</
|
|
1360
|
-
<
|
|
1461
|
+
</Button>
|
|
1462
|
+
<Button
|
|
1361
1463
|
type="button"
|
|
1464
|
+
intent="neutral"
|
|
1465
|
+
emphasis="outline"
|
|
1362
1466
|
onClick={() => {
|
|
1363
1467
|
setPasteMode(false);
|
|
1364
1468
|
setPasteValue("");
|
|
@@ -1366,7 +1470,7 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
|
|
|
1366
1470
|
className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
|
|
1367
1471
|
>
|
|
1368
1472
|
Cancel
|
|
1369
|
-
</
|
|
1473
|
+
</Button>
|
|
1370
1474
|
</div>
|
|
1371
1475
|
)}
|
|
1372
1476
|
|