@burdenoff/microfe-vibecontrols 2026.623.1 → 2026.623.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/actions/ActionCard.js +2 -2
- package/dist/components/actions/ActionCard.js.map +1 -1
- package/dist/components/actions/ExecutionHistory.js +1 -1
- package/dist/components/actions/ExecutionHistory.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerAdminBar.js +1 -1
- package/dist/components/agent-manager/AgentManagerAdminBar.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerChatPane.js +2 -2
- package/dist/components/agent-manager/AgentManagerChatPane.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerInputArea.js +4 -4
- package/dist/components/agent-manager/AgentManagerInputArea.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerLayout.js +1 -1
- package/dist/components/agent-manager/AgentManagerLayout.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerMessageItem.js +1 -1
- package/dist/components/agent-manager/AgentManagerMessageItem.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerSidebar.js +5 -5
- package/dist/components/agent-manager/AgentManagerSidebar.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerTab.js +1 -1
- package/dist/components/agent-manager/AgentManagerTab.js.map +1 -1
- package/dist/components/agent-manager/AgentManagerTabBar.js +1 -1
- package/dist/components/agent-manager/AgentManagerTabBar.js.map +1 -1
- package/dist/components/agent-manager/BridleConfigPanel.js +23 -23
- package/dist/components/agent-manager/BridleConfigPanel.js.map +1 -1
- package/dist/components/agent-manager/PluginInstallModal.js +1 -1
- package/dist/components/agent-manager/PluginInstallModal.js.map +1 -1
- package/dist/components/agent-manager/ProfilesPanel.js +5 -5
- package/dist/components/agent-manager/ProfilesPanel.js.map +1 -1
- package/dist/components/agent-manager/controls/AutonomySelector.js +1 -1
- package/dist/components/agent-manager/controls/AutonomySelector.js.map +1 -1
- package/dist/components/agent-manager/controls/SdkSelector.js +1 -1
- package/dist/components/agent-manager/controls/SdkSelector.js.map +1 -1
- package/dist/components/agent-manager/controls/VoiceToggle.js +1 -1
- package/dist/components/agent-manager/controls/VoiceToggle.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionConfigPanel.js +6 -6
- package/dist/components/agent-manager/detail/SessionConfigPanel.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionLogsPanel.js +5 -5
- package/dist/components/agent-manager/detail/SessionLogsPanel.js.map +1 -1
- package/dist/components/agent-manager/detail/SessionToolsPanel.js +1 -1
- package/dist/components/agent-manager/detail/SessionToolsPanel.js.map +1 -1
- package/dist/components/agent-manager/dialogs/NewSessionDialog.js +2 -2
- package/dist/components/agent-manager/dialogs/NewSessionDialog.js.map +1 -1
- package/dist/components/agent-manager/dialogs/RenameSessionDialog.js +1 -1
- package/dist/components/agent-manager/dialogs/RenameSessionDialog.js.map +1 -1
- package/dist/components/agents/AgentCard.js +14 -11
- package/dist/components/agents/AgentCard.js.map +1 -1
- package/dist/components/ai/AIContextsTab.js +1 -1
- package/dist/components/ai/AIContextsTab.js.map +1 -1
- package/dist/components/ai/AIOverviewTab.js +4 -4
- package/dist/components/ai/AIOverviewTab.js.map +1 -1
- package/dist/components/ai/AIPlanPanel.js +4 -4
- package/dist/components/ai/AIPlanPanel.js.map +1 -1
- package/dist/components/ai/AIPlaygroundTab.js +1 -1
- package/dist/components/ai/AIPlaygroundTab.js.map +1 -1
- package/dist/components/ai/AIPromptsTab.js +2 -2
- package/dist/components/ai/AIPromptsTab.js.map +1 -1
- package/dist/components/ai/AIProviderCredentialsCard.js +4 -4
- package/dist/components/ai/AIProviderCredentialsCard.js.map +1 -1
- package/dist/components/ai/AIQueueTab.js +4 -4
- package/dist/components/ai/AIQueueTab.js.map +1 -1
- package/dist/components/ai/AISessionsTab.js +4 -4
- package/dist/components/ai/AISessionsTab.js.map +1 -1
- package/dist/components/ai/AITasksTab.js +1 -1
- package/dist/components/ai/AITasksTab.js.map +1 -1
- package/dist/components/ai/ClaudeCredentialsCard.js +3 -3
- package/dist/components/ai/ClaudeCredentialsCard.js.map +1 -1
- package/dist/components/ai/PluginHarnessPicker.js +3 -3
- package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
- package/dist/components/analytics/AnalyticsBreakdownChart.js +8 -8
- package/dist/components/analytics/AnalyticsBreakdownChart.js.map +1 -1
- package/dist/components/analytics/AnalyticsTimeSeriesChart.js +5 -5
- package/dist/components/analytics/AnalyticsTimeSeriesChart.js.map +1 -1
- package/dist/components/audit/AuditDeleteDialog.js +2 -2
- package/dist/components/audit/AuditDeleteDialog.js.map +1 -1
- package/dist/components/audit/AuditExportButton.js +5 -5
- package/dist/components/audit/AuditExportButton.js.map +1 -1
- package/dist/components/audit/AuditLogDetail.js +9 -9
- package/dist/components/audit/AuditLogDetail.js.map +1 -1
- package/dist/components/audit/AuditLogFilters.js +1 -1
- package/dist/components/audit/AuditLogFilters.js.map +1 -1
- package/dist/components/audit/AuditLogStats.js +1 -1
- package/dist/components/audit/AuditLogStats.js.map +1 -1
- package/dist/components/audit/AuditLogTable.js +28 -28
- package/dist/components/audit/AuditLogTable.js.map +1 -1
- package/dist/components/catalog/CatalogCard.js +3 -3
- package/dist/components/catalog/CatalogCard.js.map +1 -1
- package/dist/components/catalog/CatalogForm.js +1 -1
- package/dist/components/catalog/CatalogForm.js.map +1 -1
- package/dist/components/common/ActionAgentTargetNotice.js +6 -6
- package/dist/components/common/ActionAgentTargetNotice.js.map +1 -1
- package/dist/components/common/CommandEditor.js +1 -1
- package/dist/components/common/CommandEditor.js.map +1 -1
- package/dist/components/docs/DocsPageTree.js +1 -1
- package/dist/components/docs/DocsPageTree.js.map +1 -1
- package/dist/components/docs/DocsPreviewPanel.js +1 -1
- package/dist/components/docs/DocsPreviewPanel.js.map +1 -1
- package/dist/components/docs/DocsRevisionHistory.js +4 -4
- package/dist/components/docs/DocsRevisionHistory.js.map +1 -1
- package/dist/components/docs/DocsSettingsPanel.js +7 -7
- package/dist/components/docs/DocsSettingsPanel.js.map +1 -1
- package/dist/components/docs/DocsTabPanel.js +1 -1
- package/dist/components/docs/DocsTabPanel.js.map +1 -1
- package/dist/components/graph/ConnectionPermissionsDialog.js +2 -2
- package/dist/components/graph/ConnectionPermissionsDialog.js.map +1 -1
- package/dist/components/graph/MeshDeployWizard.js +3 -3
- package/dist/components/graph/MeshDeployWizard.js.map +1 -1
- package/dist/components/graph/MeshRequestPanel.js +2 -2
- package/dist/components/graph/MeshRequestPanel.js.map +1 -1
- package/dist/components/idp-components/ComponentCard.js +5 -5
- package/dist/components/idp-components/ComponentCard.js.map +1 -1
- package/dist/components/idp-components/ComponentForm.js +1 -1
- package/dist/components/idp-components/ComponentForm.js.map +1 -1
- package/dist/components/idp-components/DependencyGraphTab.js +7 -7
- package/dist/components/idp-components/DependencyGraphTab.js.map +1 -1
- package/dist/components/logs/LogViewer.js +14 -14
- package/dist/components/logs/LogViewer.js.map +1 -1
- package/dist/components/notes/NoteCard.js +1 -1
- package/dist/components/notes/NoteCard.js.map +1 -1
- package/dist/components/notes/NoteEditor.js +2 -2
- package/dist/components/notes/NoteEditor.js.map +1 -1
- package/dist/components/notes/NoteList.js +1 -1
- package/dist/components/notes/NoteList.js.map +1 -1
- package/dist/components/notes/NotesTabPanel.js +1 -1
- package/dist/components/notes/NotesTabPanel.js.map +1 -1
- package/dist/components/scorecard/ScorecardEmptyState.js +1 -1
- package/dist/components/scorecard/ScorecardEmptyState.js.map +1 -1
- package/dist/components/scorecard/ScorecardPanel.js +3 -3
- package/dist/components/scorecard/ScorecardPanel.js.map +1 -1
- package/dist/components/security/SecurityScanList.js +11 -11
- package/dist/components/security/SecurityScanList.js.map +1 -1
- package/dist/components/sessions/SessionCard.js +26 -19
- package/dist/components/sessions/SessionCard.js.map +1 -1
- package/dist/components/sessions/SessionStatusBadge.js +7 -7
- package/dist/components/sessions/SessionStatusBadge.js.map +1 -1
- package/dist/components/shared/AgentSelector.js +4 -4
- package/dist/components/shared/AgentSelector.js.map +1 -1
- package/dist/components/shared/AgentSetupBanner.js +3 -3
- package/dist/components/shared/AgentSetupBanner.js.map +1 -1
- package/dist/components/shared/Card.js +4 -4
- package/dist/components/shared/Card.js.map +1 -1
- package/dist/components/shared/ErrorState.js +15 -9
- package/dist/components/shared/ErrorState.js.map +1 -1
- package/dist/components/shared/FilterDropdown.js +2 -2
- package/dist/components/shared/FilterDropdown.js.map +1 -1
- package/dist/components/shared/PageSkeleton.js +6 -6
- package/dist/components/shared/PageSkeleton.js.map +1 -1
- package/dist/components/shared/SearchInput.js +1 -1
- package/dist/components/shared/SearchInput.js.map +1 -1
- package/dist/components/shared/StatCard.js +7 -7
- package/dist/components/shared/StatCard.js.map +1 -1
- package/dist/components/templates/PublishTemplateForm.js +2 -2
- package/dist/components/templates/PublishTemplateForm.js.map +1 -1
- package/dist/components/templates/TemplateCard.js +5 -5
- package/dist/components/templates/TemplateCard.js.map +1 -1
- package/dist/components/templates/TemplateWizard.js +2 -2
- package/dist/components/templates/TemplateWizard.js.map +1 -1
- package/dist/components/tunnels/DomainVerificationBadge.js +4 -4
- package/dist/components/tunnels/DomainVerificationBadge.js.map +1 -1
- package/dist/components/tunnels/ProviderBadge.js +1 -1
- package/dist/components/tunnels/ProviderBadge.js.map +1 -1
- package/dist/components/tunnels/TunnelCard.js +16 -16
- package/dist/components/tunnels/TunnelCard.js.map +1 -1
- package/dist/components/tunnels/TunnelCreateWizard.js +1 -1
- package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
- package/dist/components/tunnels/TunnelPublicAccessPanel.js +1 -1
- package/dist/components/tunnels/TunnelPublicAccessPanel.js.map +1 -1
- package/dist/components/tunnels/TunnelStatusBadge.js +4 -4
- package/dist/components/tunnels/TunnelStatusBadge.js.map +1 -1
- package/dist/components/vibecalendar/LogsDrawer.js +2 -2
- package/dist/components/vibecalendar/LogsDrawer.js.map +1 -1
- package/dist/components/vibecalendar/ScheduleTaskModal.js +5 -5
- package/dist/components/vibecalendar/ScheduleTaskModal.js.map +1 -1
- package/dist/components/vibecalendar/VibeCalAgendaView.js +2 -2
- package/dist/components/vibecalendar/VibeCalAgendaView.js.map +1 -1
- package/dist/components/vibecalendar/VibeCalDayView.js +3 -3
- package/dist/components/vibecalendar/VibeCalDayView.js.map +1 -1
- package/dist/components/vibecalendar/VibeCalMonthView.js +1 -1
- package/dist/components/vibecalendar/VibeCalMonthView.js.map +1 -1
- package/dist/components/vibecalendar/VibeCalWeekView.js +4 -4
- package/dist/components/vibecalendar/VibeCalWeekView.js.map +1 -1
- package/dist/components/vibecalendar/VibeCalendarHeader.js +4 -4
- package/dist/components/vibecalendar/VibeCalendarHeader.js.map +1 -1
- package/dist/components/vibecalendar/VibeTaskBlock.js +2 -2
- package/dist/components/vibecalendar/VibeTaskBlock.js.map +1 -1
- package/dist/components/vibecalendar/types.js +6 -6
- package/dist/components/vibecalendar/types.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckButtonForm.js +9 -9
- package/dist/components/vibedeck/VibeDeckButtonForm.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckButtonTile.js +6 -6
- package/dist/components/vibedeck/VibeDeckButtonTile.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckExecutionLog.js +10 -10
- package/dist/components/vibedeck/VibeDeckExecutionLog.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckForm.js +8 -8
- package/dist/components/vibedeck/VibeDeckForm.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckGrid.js +2 -2
- package/dist/components/vibedeck/VibeDeckGrid.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js +2 -2
- package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js.map +1 -1
- package/dist/components/vibedeck/VibeDeckSwitcher.js +8 -8
- package/dist/components/vibedeck/VibeDeckSwitcher.js.map +1 -1
- package/dist/components/vibes/VibeCard.js +22 -18
- package/dist/components/vibes/VibeCard.js.map +1 -1
- package/dist/components/vibes/VibeList.js +16 -12
- package/dist/components/vibes/VibeList.js.map +1 -1
- package/dist/pages/ActionsPage.js +4 -3
- package/dist/pages/ActionsPage.js.map +1 -1
- package/dist/pages/AgentDetailsPage.js +9 -9
- package/dist/pages/AgentDetailsPage.js.map +1 -1
- package/dist/pages/AgentsLandingPage.js +4 -4
- package/dist/pages/AgentsLandingPage.js.map +1 -1
- package/dist/pages/AgentsPage.js +14 -14
- package/dist/pages/AgentsPage.js.map +1 -1
- package/dist/pages/AnalyticsPage.js +8 -8
- package/dist/pages/AnalyticsPage.js.map +1 -1
- package/dist/pages/CatalogDetailPage.js +11 -11
- package/dist/pages/CatalogDetailPage.js.map +1 -1
- package/dist/pages/CatalogPage.js +12 -9
- package/dist/pages/CatalogPage.js.map +1 -1
- package/dist/pages/ComponentDetailPage.js +7 -7
- package/dist/pages/ComponentDetailPage.js.map +1 -1
- package/dist/pages/ComponentsPage.js +12 -9
- package/dist/pages/ComponentsPage.js.map +1 -1
- package/dist/pages/EnvTopologyPage.js +2 -2
- package/dist/pages/EnvTopologyPage.js.map +1 -1
- package/dist/pages/GettingStartedPage.js +12 -12
- package/dist/pages/GettingStartedPage.js.map +1 -1
- package/dist/pages/HealthPage.js +12 -12
- package/dist/pages/HealthPage.js.map +1 -1
- package/dist/pages/LogsPage.js +4 -4
- package/dist/pages/LogsPage.js.map +1 -1
- package/dist/pages/NoteDetailsPage.js +5 -5
- package/dist/pages/NoteDetailsPage.js.map +1 -1
- package/dist/pages/OverviewPage.js +74 -41
- package/dist/pages/OverviewPage.js.map +1 -1
- package/dist/pages/PluginsCatalogPage.js +6 -3
- package/dist/pages/PluginsCatalogPage.js.map +1 -1
- package/dist/pages/ScheduledJobDetailPage.js +7 -7
- package/dist/pages/ScheduledJobDetailPage.js.map +1 -1
- package/dist/pages/SessionDetailsPage.js +21 -21
- package/dist/pages/SessionDetailsPage.js.map +1 -1
- package/dist/pages/SessionsPage.js +20 -20
- package/dist/pages/SessionsPage.js.map +1 -1
- package/dist/pages/SettingsPage.js +64 -52
- package/dist/pages/SettingsPage.js.map +1 -1
- package/dist/pages/SharedSessionPage.js +21 -21
- package/dist/pages/SharedSessionPage.js.map +1 -1
- package/dist/pages/SharedVibeDeckPage.js +5 -5
- package/dist/pages/SharedVibeDeckPage.js.map +1 -1
- package/dist/pages/TargetDetailsPage.js +56 -65
- package/dist/pages/TargetDetailsPage.js.map +1 -1
- package/dist/pages/TargetsPage.js +4 -4
- package/dist/pages/TargetsPage.js.map +1 -1
- package/dist/pages/TemplateDetailPage.js +10 -10
- package/dist/pages/TemplateDetailPage.js.map +1 -1
- package/dist/pages/TemplatesPage.js +6 -5
- package/dist/pages/TemplatesPage.js.map +1 -1
- package/dist/pages/VibeAuditPage.js +3 -3
- package/dist/pages/VibeAuditPage.js.map +1 -1
- package/dist/pages/VibeCalendarPage.js +3 -3
- package/dist/pages/VibeCalendarPage.js.map +1 -1
- package/dist/pages/VibeDeckPage.js +3 -3
- package/dist/pages/VibeDeckPage.js.map +1 -1
- package/dist/pages/VibeDetailsPage.js +15 -15
- package/dist/pages/VibeDetailsPage.js.map +1 -1
- package/dist/pages/VibeTaskDetailPage.js +5 -5
- package/dist/pages/VibeTaskDetailPage.js.map +1 -1
- package/dist/pages/VibesPage.js +18 -18
- package/dist/pages/VibesPage.js.map +1 -1
- package/dist/pages/WebhooksPage.js +11 -11
- package/dist/pages/WebhooksPage.js.map +1 -1
- package/dist/pages/ai/AIBookmarksPage.js +1 -1
- package/dist/pages/ai/AIBookmarksPage.js.map +1 -1
- package/dist/pages/ai/AISessionDetailPage.js +6 -6
- package/dist/pages/ai/AISessionDetailPage.js.map +1 -1
- package/dist/pages/tunnels/AuditTab.js +1 -1
- package/dist/pages/tunnels/AuditTab.js.map +1 -1
- package/dist/pages/tunnels/DomainsTab.js +1 -1
- package/dist/pages/tunnels/DomainsTab.js.map +1 -1
- package/dist/pages/tunnels/ProvidersTab.js +1 -1
- package/dist/pages/tunnels/ProvidersTab.js.map +1 -1
- package/dist/pages/tunnels/SessionsTab.js +1 -1
- package/dist/pages/tunnels/SessionsTab.js.map +1 -1
- package/dist/pages/tunnels/TunnelDetailsPage.js +3 -3
- package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
- package/dist/pages/tunnels/UsageTab.js +1 -1
- package/dist/pages/tunnels/UsageTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.js +16 -16
- package/dist/pages/tunnels/tabs/TunnelDomainsTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.js +1 -1
- package/dist/pages/tunnels/tabs/TunnelOverviewTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.js +52 -49
- package/dist/pages/tunnels/tabs/TunnelSessionsTab.js.map +1 -1
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.js +9 -9
- package/dist/pages/tunnels/tabs/TunnelSettingsTab.js.map +1 -1
- package/package.json +1 -1
|
@@ -45,7 +45,7 @@ function S() {
|
|
|
45
45
|
children: /* @__PURE__ */ v("div", {
|
|
46
46
|
className: "text-center space-y-2",
|
|
47
47
|
children: [/* @__PURE__ */ _("h2", {
|
|
48
|
-
className: "text-lg font-semibold text-
|
|
48
|
+
className: "text-lg font-semibold text-text-primary",
|
|
49
49
|
children: C("vibeTask.accessDenied", "Access Denied")
|
|
50
50
|
}), /* @__PURE__ */ _("p", {
|
|
51
51
|
className: "text-sm text-text-secondary",
|
|
@@ -70,7 +70,7 @@ function S() {
|
|
|
70
70
|
/* @__PURE__ */ _("button", {
|
|
71
71
|
type: "button",
|
|
72
72
|
onClick: () => T(-1),
|
|
73
|
-
className: "p-1.5 rounded hover:bg-bg-
|
|
73
|
+
className: "p-1.5 rounded hover:bg-bg-sunken transition-colors",
|
|
74
74
|
children: /* @__PURE__ */ _(l, { size: 18 })
|
|
75
75
|
}),
|
|
76
76
|
/* @__PURE__ */ v("div", {
|
|
@@ -88,7 +88,7 @@ function S() {
|
|
|
88
88
|
children: /* @__PURE__ */ v("button", {
|
|
89
89
|
type: "button",
|
|
90
90
|
onClick: () => w && z({ variables: { id: w } }),
|
|
91
|
-
className: "flex items-center gap-1.5 px-3 py-1.5 text-sm bg-status-success-bg
|
|
91
|
+
className: "flex items-center gap-1.5 px-3 py-1.5 text-sm bg-status-success-bg-subtle text-status-success-text border border-status-success-border rounded-button hover:bg-bg-sunken transition-colors",
|
|
92
92
|
children: [/* @__PURE__ */ _(f, { size: 14 }), C("vibeTask.triggerNow", "Trigger Now")]
|
|
93
93
|
})
|
|
94
94
|
})
|
|
@@ -214,7 +214,7 @@ function S() {
|
|
|
214
214
|
})
|
|
215
215
|
]
|
|
216
216
|
}) }), /* @__PURE__ */ _("tbody", { children: R.map((e) => /* @__PURE__ */ v("tr", {
|
|
217
|
-
className: "border-b border-border-default hover:bg-bg-
|
|
217
|
+
className: "border-b border-border-default hover:bg-bg-sunken transition-colors",
|
|
218
218
|
children: [
|
|
219
219
|
/* @__PURE__ */ _("td", {
|
|
220
220
|
className: "px-4 py-2.5 text-text-primary",
|
|
@@ -239,7 +239,7 @@ function S() {
|
|
|
239
239
|
children: k ? /* @__PURE__ */ v("button", {
|
|
240
240
|
type: "button",
|
|
241
241
|
onClick: () => B(e),
|
|
242
|
-
className: "inline-flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:text-text-primary rounded hover:bg-bg-
|
|
242
|
+
className: "inline-flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:text-text-primary rounded hover:bg-bg-sunken transition-colors",
|
|
243
243
|
children: [/* @__PURE__ */ _(d, { size: 12 }), C("vibeTask.viewLogs", "View Logs")]
|
|
244
244
|
}) : /* @__PURE__ */ _("span", {
|
|
245
245
|
className: "text-xs text-text-tertiary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeTaskDetailPage.js","names":[],"sources":["../../src/pages/VibeTaskDetailPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { VIBE_PERMISSIONS } from '../constants/permissions';\nimport { ArrowLeft, Play, Clock, Zap, Eye } from 'lucide-react';\nimport { MotionPage, MotionList, MotionItem } from '@burdenoff/fe-libs/shared/motion';\nimport { LogsDrawer } from '../components/vibecalendar/LogsDrawer';\nimport { STATUS_COLORS } from '../components/vibecalendar/types';\nimport type { VibeCalendarExecution } from '../components/vibecalendar/types';\nimport {\n useGetVibeCalendarTaskQuery,\n useListVibeCalendarExecutionsQuery,\n useTriggerVibeCalendarTaskNowMutation,\n} from '@/generated/wspace-operations';\n\n/**\n * Vibe Task Detail Page\n *\n * Shows full details of a scheduled calendar task. In the simplified\n * Action-only schema a task is just a reference to a VibeControls\n * Action plus a schedule — the executor details live on the Action.\n */\nexport function VibeTaskDetailPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { taskId } = useParams<{ taskId: string }>();\n const navigate = useNavigate();\n const { hasPermission, isLoading: permissionsLoading, permissions } = usePermissions();\n const canReadExecutionLogs = hasPermission(VIBE_PERMISSIONS.LOG_READ);\n\n const [showLogsDrawer, setShowLogsDrawer] = useState(false);\n const [selectedExecution, setSelectedExecution] = useState<VibeCalendarExecution | null>(null);\n\n const { data: taskData, loading: taskLoading } = useGetVibeCalendarTaskQuery({\n variables: { id: taskId! },\n skip: !taskId,\n });\n const task = taskData?.vibeCalendarTask;\n\n const { data: execData } = useListVibeCalendarExecutionsQuery({\n variables: { taskId: taskId! },\n skip: !taskId,\n });\n type RawExecArray = NonNullable<typeof execData>['vibeCalendarExecutions'];\n type RawExec = NonNullable<RawExecArray>[number];\n const executions: VibeCalendarExecution[] = (execData?.vibeCalendarExecutions ?? []).map(\n (raw: RawExec): VibeCalendarExecution => {\n return {\n id: raw.id,\n taskId: raw.taskId,\n status: raw.status,\n output: canReadExecutionLogs ? (raw.output ?? null) : null,\n exitCode: raw.exitCode ?? null,\n webhookStatusCode: null,\n startedAt: raw.startedAt ?? raw.completedAt ?? null,\n completedAt: raw.completedAt ?? null,\n error: canReadExecutionLogs ? (raw.error ?? null) : null,\n };\n }\n );\n\n const [triggerNow] = useTriggerVibeCalendarTaskNowMutation({\n refetchQueries: ['GetVibeCalendarTask', 'ListVibeCalendarExecutions'],\n });\n\n const handleViewLogs = useCallback((execution: VibeCalendarExecution) => {\n setSelectedExecution(execution);\n setShowLogsDrawer(true);\n }, []);\n\n if (permissionsLoading)\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <p className=\"text-text-secondary\">\n {tr('vibeTask.loadingPermissions', 'Loading permissions...')}\n </p>\n </div>\n );\n if (\n permissions &&\n (permissions.permissionStrings?.length ?? 0) > 0 &&\n !hasPermission(VIBE_PERMISSIONS.CALENDAR_AGENT_TASK_READ)\n )\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold text-foreground\">\n {tr('vibeTask.accessDenied', 'Access Denied')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.accessDeniedDesc', \"You don't have permission to access this page.\")}\n </p>\n </div>\n </div>\n );\n\n if (taskLoading && !task) {\n return (\n <div className=\"flex items-center justify-center h-full\">\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.loadingTask', 'Loading task details...')}\n </p>\n </div>\n );\n }\n\n const title = task?.actionId\n ? `${tr('vibeTask.action', 'Action')}: ${task.actionId}`\n : 'Task Details';\n const description = task?.cronExpression || `Task ID: ${taskId}`;\n const isRecurringTask = Boolean(task?.cronExpression || task?.rrule);\n\n return (\n <MotionPage className=\"flex flex-col h-full p-4 gap-6\">\n {/* Back + Header */}\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"p-1.5 rounded hover:bg-bg-secondary transition-colors\"\n >\n <ArrowLeft size={18} />\n </button>\n <div className=\"flex-1 min-w-0\">\n <h1 className=\"text-xl font-bold text-text-primary\">{title}</h1>\n <p className=\"text-sm text-text-secondary\">{description}</p>\n </div>\n <div className=\"flex w-full flex-wrap items-center gap-2 sm:w-auto sm:justify-end\">\n <button\n type=\"button\"\n onClick={() => taskId && triggerNow({ variables: { id: taskId } })}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-sm bg-status-success-bg/10 text-status-success-text border border-status-success-border/30 rounded-lg hover:bg-status-success-bg/20 transition-colors\"\n >\n <Play size={14} />\n {tr('vibeTask.triggerNow', 'Trigger Now')}\n </button>\n </div>\n </div>\n\n {/* Info Cards */}\n <MotionList stagger={0.04} className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Zap size={16} className=\"text-text-tertiary\" />\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.action', 'Action')}\n </span>\n </div>\n <p className=\"text-sm font-mono text-text-primary break-all\">{task?.actionId || 'N/A'}</p>\n <p className=\"text-xs text-text-tertiary mt-1\">\n {tr('vibeTask.actionExecutorHint', 'Executor config comes from the Action definition.')}\n </p>\n </MotionItem>\n\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Clock size={16} className=\"text-text-tertiary\" />\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.schedule', 'Schedule')}\n </span>\n </div>\n <p className=\"text-sm text-text-primary\">\n {isRecurringTask\n ? tr('vibeTask.recurring', 'Recurring')\n : tr('vibeTask.oneTime', 'One-time')}\n </p>\n {task?.cronExpression && (\n <p className=\"text-xs font-mono text-text-tertiary mt-1\">{task.cronExpression}</p>\n )}\n {task?.nextExecutionAt && (\n <p className=\"text-xs text-text-tertiary mt-1\">\n {tr('vibeTask.next', 'Next')}: {new Date(task.nextExecutionAt).toLocaleString()}\n </p>\n )}\n </MotionItem>\n\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.status', 'Status')}\n </span>\n </div>\n <span\n className={`inline-flex px-2 py-0.5 text-xs rounded-full border ${\n STATUS_COLORS[task?.status ?? ''] || ''\n }`}\n >\n {task?.status ?? 'UNKNOWN'}\n </span>\n {task?.lastExecutedAt && (\n <p className=\"text-xs text-text-tertiary mt-2\">\n {tr('vibeTask.lastRun', 'Last run')}: {new Date(task.lastExecutedAt).toLocaleString()}\n </p>\n )}\n </MotionItem>\n </MotionList>\n\n {/* Execution History */}\n <div className=\"flex-1 overflow-auto\">\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">\n {tr('vibeTask.execHistory', 'Execution History')}\n </h2>\n\n {executions.length === 0 ? (\n <div className=\"flex items-center justify-center py-12\">\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.noExecutions', 'No executions yet')}\n </p>\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border-default\">\n <table className=\"w-full text-sm min-w-[640px]\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.started', 'Started')}\n </th>\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.status', 'Status')}\n </th>\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.exitCode', 'Exit Code')}\n </th>\n <th className=\"text-right px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.actions', 'Actions')}\n </th>\n </tr>\n </thead>\n <tbody>\n {executions.map((exec) => (\n <tr\n key={exec.id}\n className=\"border-b border-border-default hover:bg-bg-secondary/50 transition-colors\"\n >\n <td className=\"px-4 py-2.5 text-text-primary\">\n {exec.startedAt ? new Date(exec.startedAt).toLocaleString() : '-'}\n </td>\n <td className=\"px-4 py-2.5\">\n <span\n className={`inline-flex px-2 py-0.5 text-xs rounded-full border ${\n STATUS_COLORS[exec.status] || ''\n }`}\n >\n {exec.status}\n </span>\n </td>\n <td className=\"px-4 py-2.5\">\n {exec.exitCode !== null ? (\n <span\n className={`font-mono ${exec.exitCode === 0 ? 'text-status-success-text' : 'text-status-error-text'}`}\n >\n {exec.exitCode}\n </span>\n ) : (\n '-'\n )}\n </td>\n <td className=\"px-4 py-2.5 text-right\">\n {canReadExecutionLogs ? (\n <button\n type=\"button\"\n onClick={() => handleViewLogs(exec)}\n className=\"inline-flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:text-text-primary rounded hover:bg-bg-secondary transition-colors\"\n >\n <Eye size={12} />\n {tr('vibeTask.viewLogs', 'View Logs')}\n </button>\n ) : (\n <span className=\"text-xs text-text-tertiary\">\n {tr('vibeTask.logsPermissionRequired', 'Log access required')}\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n {/* Logs Drawer */}\n <LogsDrawer\n isOpen={showLogsDrawer}\n onClose={() => setShowLogsDrawer(false)}\n execution={selectedExecution}\n taskTitle={title}\n agentId=\"\"\n />\n </MotionPage>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VibeTaskDetailPage.js","names":[],"sources":["../../src/pages/VibeTaskDetailPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { VIBE_PERMISSIONS } from '../constants/permissions';\nimport { ArrowLeft, Play, Clock, Zap, Eye } from 'lucide-react';\nimport { MotionPage, MotionList, MotionItem } from '@burdenoff/fe-libs/shared/motion';\nimport { LogsDrawer } from '../components/vibecalendar/LogsDrawer';\nimport { STATUS_COLORS } from '../components/vibecalendar/types';\nimport type { VibeCalendarExecution } from '../components/vibecalendar/types';\nimport {\n useGetVibeCalendarTaskQuery,\n useListVibeCalendarExecutionsQuery,\n useTriggerVibeCalendarTaskNowMutation,\n} from '@/generated/wspace-operations';\n\n/**\n * Vibe Task Detail Page\n *\n * Shows full details of a scheduled calendar task. In the simplified\n * Action-only schema a task is just a reference to a VibeControls\n * Action plus a schedule — the executor details live on the Action.\n */\nexport function VibeTaskDetailPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { taskId } = useParams<{ taskId: string }>();\n const navigate = useNavigate();\n const { hasPermission, isLoading: permissionsLoading, permissions } = usePermissions();\n const canReadExecutionLogs = hasPermission(VIBE_PERMISSIONS.LOG_READ);\n\n const [showLogsDrawer, setShowLogsDrawer] = useState(false);\n const [selectedExecution, setSelectedExecution] = useState<VibeCalendarExecution | null>(null);\n\n const { data: taskData, loading: taskLoading } = useGetVibeCalendarTaskQuery({\n variables: { id: taskId! },\n skip: !taskId,\n });\n const task = taskData?.vibeCalendarTask;\n\n const { data: execData } = useListVibeCalendarExecutionsQuery({\n variables: { taskId: taskId! },\n skip: !taskId,\n });\n type RawExecArray = NonNullable<typeof execData>['vibeCalendarExecutions'];\n type RawExec = NonNullable<RawExecArray>[number];\n const executions: VibeCalendarExecution[] = (execData?.vibeCalendarExecutions ?? []).map(\n (raw: RawExec): VibeCalendarExecution => {\n return {\n id: raw.id,\n taskId: raw.taskId,\n status: raw.status,\n output: canReadExecutionLogs ? (raw.output ?? null) : null,\n exitCode: raw.exitCode ?? null,\n webhookStatusCode: null,\n startedAt: raw.startedAt ?? raw.completedAt ?? null,\n completedAt: raw.completedAt ?? null,\n error: canReadExecutionLogs ? (raw.error ?? null) : null,\n };\n }\n );\n\n const [triggerNow] = useTriggerVibeCalendarTaskNowMutation({\n refetchQueries: ['GetVibeCalendarTask', 'ListVibeCalendarExecutions'],\n });\n\n const handleViewLogs = useCallback((execution: VibeCalendarExecution) => {\n setSelectedExecution(execution);\n setShowLogsDrawer(true);\n }, []);\n\n if (permissionsLoading)\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <p className=\"text-text-secondary\">\n {tr('vibeTask.loadingPermissions', 'Loading permissions...')}\n </p>\n </div>\n );\n if (\n permissions &&\n (permissions.permissionStrings?.length ?? 0) > 0 &&\n !hasPermission(VIBE_PERMISSIONS.CALENDAR_AGENT_TASK_READ)\n )\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('vibeTask.accessDenied', 'Access Denied')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.accessDeniedDesc', \"You don't have permission to access this page.\")}\n </p>\n </div>\n </div>\n );\n\n if (taskLoading && !task) {\n return (\n <div className=\"flex items-center justify-center h-full\">\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.loadingTask', 'Loading task details...')}\n </p>\n </div>\n );\n }\n\n const title = task?.actionId\n ? `${tr('vibeTask.action', 'Action')}: ${task.actionId}`\n : 'Task Details';\n const description = task?.cronExpression || `Task ID: ${taskId}`;\n const isRecurringTask = Boolean(task?.cronExpression || task?.rrule);\n\n return (\n <MotionPage className=\"flex flex-col h-full p-4 gap-6\">\n {/* Back + Header */}\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <ArrowLeft size={18} />\n </button>\n <div className=\"flex-1 min-w-0\">\n <h1 className=\"text-xl font-bold text-text-primary\">{title}</h1>\n <p className=\"text-sm text-text-secondary\">{description}</p>\n </div>\n <div className=\"flex w-full flex-wrap items-center gap-2 sm:w-auto sm:justify-end\">\n <button\n type=\"button\"\n onClick={() => taskId && triggerNow({ variables: { id: taskId } })}\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-sm bg-status-success-bg-subtle text-status-success-text border border-status-success-border rounded-button hover:bg-bg-sunken transition-colors\"\n >\n <Play size={14} />\n {tr('vibeTask.triggerNow', 'Trigger Now')}\n </button>\n </div>\n </div>\n\n {/* Info Cards */}\n <MotionList stagger={0.04} className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Zap size={16} className=\"text-text-tertiary\" />\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.action', 'Action')}\n </span>\n </div>\n <p className=\"text-sm font-mono text-text-primary break-all\">{task?.actionId || 'N/A'}</p>\n <p className=\"text-xs text-text-tertiary mt-1\">\n {tr('vibeTask.actionExecutorHint', 'Executor config comes from the Action definition.')}\n </p>\n </MotionItem>\n\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <Clock size={16} className=\"text-text-tertiary\" />\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.schedule', 'Schedule')}\n </span>\n </div>\n <p className=\"text-sm text-text-primary\">\n {isRecurringTask\n ? tr('vibeTask.recurring', 'Recurring')\n : tr('vibeTask.oneTime', 'One-time')}\n </p>\n {task?.cronExpression && (\n <p className=\"text-xs font-mono text-text-tertiary mt-1\">{task.cronExpression}</p>\n )}\n {task?.nextExecutionAt && (\n <p className=\"text-xs text-text-tertiary mt-1\">\n {tr('vibeTask.next', 'Next')}: {new Date(task.nextExecutionAt).toLocaleString()}\n </p>\n )}\n </MotionItem>\n\n <MotionItem className=\"bg-bg-surface border border-border-default rounded-lg p-4\">\n <div className=\"flex items-center gap-2 mb-2\">\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibeTask.status', 'Status')}\n </span>\n </div>\n <span\n className={`inline-flex px-2 py-0.5 text-xs rounded-full border ${\n STATUS_COLORS[task?.status ?? ''] || ''\n }`}\n >\n {task?.status ?? 'UNKNOWN'}\n </span>\n {task?.lastExecutedAt && (\n <p className=\"text-xs text-text-tertiary mt-2\">\n {tr('vibeTask.lastRun', 'Last run')}: {new Date(task.lastExecutedAt).toLocaleString()}\n </p>\n )}\n </MotionItem>\n </MotionList>\n\n {/* Execution History */}\n <div className=\"flex-1 overflow-auto\">\n <h2 className=\"text-base font-semibold text-text-primary mb-3\">\n {tr('vibeTask.execHistory', 'Execution History')}\n </h2>\n\n {executions.length === 0 ? (\n <div className=\"flex items-center justify-center py-12\">\n <p className=\"text-sm text-text-secondary\">\n {tr('vibeTask.noExecutions', 'No executions yet')}\n </p>\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border-default\">\n <table className=\"w-full text-sm min-w-[640px]\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.started', 'Started')}\n </th>\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.status', 'Status')}\n </th>\n <th className=\"text-left px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.exitCode', 'Exit Code')}\n </th>\n <th className=\"text-right px-4 py-2 text-text-secondary font-medium\">\n {tr('vibeTask.actions', 'Actions')}\n </th>\n </tr>\n </thead>\n <tbody>\n {executions.map((exec) => (\n <tr\n key={exec.id}\n className=\"border-b border-border-default hover:bg-bg-sunken transition-colors\"\n >\n <td className=\"px-4 py-2.5 text-text-primary\">\n {exec.startedAt ? new Date(exec.startedAt).toLocaleString() : '-'}\n </td>\n <td className=\"px-4 py-2.5\">\n <span\n className={`inline-flex px-2 py-0.5 text-xs rounded-full border ${\n STATUS_COLORS[exec.status] || ''\n }`}\n >\n {exec.status}\n </span>\n </td>\n <td className=\"px-4 py-2.5\">\n {exec.exitCode !== null ? (\n <span\n className={`font-mono ${exec.exitCode === 0 ? 'text-status-success-text' : 'text-status-error-text'}`}\n >\n {exec.exitCode}\n </span>\n ) : (\n '-'\n )}\n </td>\n <td className=\"px-4 py-2.5 text-right\">\n {canReadExecutionLogs ? (\n <button\n type=\"button\"\n onClick={() => handleViewLogs(exec)}\n className=\"inline-flex items-center gap-1 px-2 py-1 text-xs text-text-secondary hover:text-text-primary rounded hover:bg-bg-sunken transition-colors\"\n >\n <Eye size={12} />\n {tr('vibeTask.viewLogs', 'View Logs')}\n </button>\n ) : (\n <span className=\"text-xs text-text-tertiary\">\n {tr('vibeTask.logsPermissionRequired', 'Log access required')}\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n {/* Logs Drawer */}\n <LogsDrawer\n isOpen={showLogsDrawer}\n onClose={() => setShowLogsDrawer(false)}\n execution={selectedExecution}\n taskTitle={title}\n agentId=\"\"\n />\n </MotionPage>\n );\n}\n"],"mappings":"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"}
|
package/dist/pages/VibesPage.js
CHANGED
|
@@ -264,7 +264,7 @@ function p() {
|
|
|
264
264
|
inactive: U.filter((e) => e.status === "INACTIVE").length
|
|
265
265
|
}, Z = g, Q = !g && !!qe && (qe.permissionStrings?.length ?? 0) > 0 && !Qe, Jt = !Z && !Q && B && U.length === 0, $ = !Z && !Q && !!Et && U.length === 0, Yt = !Z && !Q && !$;
|
|
266
266
|
return /* @__PURE__ */ d(Ge, {
|
|
267
|
-
className: "space-y-6
|
|
267
|
+
className: "space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen",
|
|
268
268
|
children: [
|
|
269
269
|
Z && /* @__PURE__ */ u(de, { message: v("vibesPage.loadingPermissions", "Loading permissions...") }),
|
|
270
270
|
Q && /* @__PURE__ */ u(Ve, {
|
|
@@ -310,7 +310,7 @@ function p() {
|
|
|
310
310
|
children: /* @__PURE__ */ d("button", {
|
|
311
311
|
type: "button",
|
|
312
312
|
onClick: J,
|
|
313
|
-
className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-
|
|
313
|
+
className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-button hover:bg-action-primary-bgHover transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
314
314
|
children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), v("vibesPage.addVibe", "Add Vibe")]
|
|
315
315
|
})
|
|
316
316
|
})
|
|
@@ -327,17 +327,17 @@ function p() {
|
|
|
327
327
|
placeholder: v("vibesPage.searchPlaceholder", "Search vibes..."),
|
|
328
328
|
className: "flex-1 sm:w-64 sm:flex-none"
|
|
329
329
|
}), /* @__PURE__ */ d("div", {
|
|
330
|
-
className: "flex items-center gap-1 bg-bg-sunken rounded-
|
|
330
|
+
className: "flex items-center gap-1 bg-bg-sunken rounded-button p-1 flex-shrink-0 border border-border-subtle",
|
|
331
331
|
children: [/* @__PURE__ */ u("button", {
|
|
332
332
|
type: "button",
|
|
333
333
|
onClick: () => T("grid"),
|
|
334
|
-
className: `p-1.5 sm:p-2 rounded ${w === "grid" ? "bg-
|
|
334
|
+
className: `p-1.5 sm:p-2 rounded ${w === "grid" ? "bg-[var(--color-accent-soft)] text-action-primary-bg" : "text-text-secondary hover:bg-bg-surface/60"}`,
|
|
335
335
|
title: v("vibesPage.gridViewTitle", "Grid view"),
|
|
336
336
|
children: /* @__PURE__ */ u(je, { className: "size-4 text-text-secondary" })
|
|
337
337
|
}), /* @__PURE__ */ u("button", {
|
|
338
338
|
type: "button",
|
|
339
339
|
onClick: () => T("list"),
|
|
340
|
-
className: `p-1.5 sm:p-2 rounded ${w === "list" ? "bg-
|
|
340
|
+
className: `p-1.5 sm:p-2 rounded ${w === "list" ? "bg-[var(--color-accent-soft)] text-action-primary-bg" : "text-text-secondary hover:bg-bg-surface/60"}`,
|
|
341
341
|
title: v("vibesPage.listViewTitle", "List view"),
|
|
342
342
|
children: /* @__PURE__ */ u(Me, { className: "size-4 text-text-secondary" })
|
|
343
343
|
})]
|
|
@@ -372,7 +372,7 @@ function p() {
|
|
|
372
372
|
})]
|
|
373
373
|
}) : null,
|
|
374
374
|
W.length > 0 && /* @__PURE__ */ u("div", {
|
|
375
|
-
className: "rounded-
|
|
375
|
+
className: "rounded-card border border-border-subtle bg-bg-surface shadow-elevation-1 p-5",
|
|
376
376
|
children: /* @__PURE__ */ d("div", {
|
|
377
377
|
className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
|
|
378
378
|
children: [/* @__PURE__ */ d("div", {
|
|
@@ -406,7 +406,7 @@ function p() {
|
|
|
406
406
|
onClick: () => I("activate"),
|
|
407
407
|
disabled: G.length === 0,
|
|
408
408
|
title: "Mark selected vibes as ACTIVE so they appear in the default vibe list and can run sessions/tunnels via their attached agent(s).",
|
|
409
|
-
className: "rounded-
|
|
409
|
+
className: "rounded-button border border-status-success-border px-3 py-2 text-sm font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
410
410
|
children: /* @__PURE__ */ d("span", {
|
|
411
411
|
className: "inline-flex items-center gap-2",
|
|
412
412
|
children: [
|
|
@@ -420,7 +420,7 @@ function p() {
|
|
|
420
420
|
type: "button",
|
|
421
421
|
onClick: () => I("archive"),
|
|
422
422
|
disabled: K.length === 0,
|
|
423
|
-
className: "rounded-
|
|
423
|
+
className: "rounded-button border border-status-warning-border px-3 py-2 text-sm font-medium text-status-warning-text hover:bg-status-warning-bg-subtle transition-colors disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
424
424
|
children: /* @__PURE__ */ d("span", {
|
|
425
425
|
className: "inline-flex items-center gap-2",
|
|
426
426
|
children: [
|
|
@@ -477,14 +477,14 @@ function p() {
|
|
|
477
477
|
children: /* @__PURE__ */ d("button", {
|
|
478
478
|
type: "button",
|
|
479
479
|
onClick: J,
|
|
480
|
-
className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-
|
|
480
|
+
className: "flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-button hover:bg-action-primary-bgHover transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
481
481
|
children: [/* @__PURE__ */ u(Pe, { className: "size-4" }), v("vibesPage.addVibe", "Add Vibe")]
|
|
482
482
|
})
|
|
483
483
|
}), /* @__PURE__ */ u(ve, { prompt: "What is a Vibe in VibeControls and how do I create one?" })]
|
|
484
484
|
}) : void 0
|
|
485
485
|
}),
|
|
486
486
|
ct && /* @__PURE__ */ u("div", {
|
|
487
|
-
className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-success-bg text-status-success-text rounded-
|
|
487
|
+
className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-success-bg-subtle text-status-success-text border border-status-success-border rounded-card shadow-elevation-3 text-sm",
|
|
488
488
|
children: ct
|
|
489
489
|
}),
|
|
490
490
|
/* @__PURE__ */ u(ne, {
|
|
@@ -507,7 +507,7 @@ function p() {
|
|
|
507
507
|
}),
|
|
508
508
|
ut && /* @__PURE__ */ d("div", {
|
|
509
509
|
role: "alert",
|
|
510
|
-
className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-error-bg text-status-error-text rounded-
|
|
510
|
+
className: "fixed bottom-4 right-4 z-50 px-4 py-3 bg-status-error-bg-subtle text-status-error-text border border-status-error-border rounded-card shadow-elevation-3 text-sm",
|
|
511
511
|
children: [ut, /* @__PURE__ */ u("button", {
|
|
512
512
|
type: "button",
|
|
513
513
|
onClick: ft,
|
|
@@ -518,7 +518,7 @@ function p() {
|
|
|
518
518
|
at && /* @__PURE__ */ u("div", {
|
|
519
519
|
className: "fixed inset-0 bg-bg-overlay flex items-center justify-center z-50 p-4",
|
|
520
520
|
children: /* @__PURE__ */ d("div", {
|
|
521
|
-
className: "bg-bg-surface rounded-
|
|
521
|
+
className: "bg-bg-surface rounded-card border border-border-subtle shadow-[var(--shadow-elevation-4)] p-6 w-full max-w-lg",
|
|
522
522
|
children: [
|
|
523
523
|
/* @__PURE__ */ u("h2", {
|
|
524
524
|
className: "text-lg font-semibold text-text-primary mb-4",
|
|
@@ -528,7 +528,7 @@ function p() {
|
|
|
528
528
|
className: "space-y-4",
|
|
529
529
|
children: [
|
|
530
530
|
ot && /* @__PURE__ */ u("div", {
|
|
531
|
-
className: "p-3 bg-status-error-bg text-status-error-text text-sm rounded-
|
|
531
|
+
className: "p-3 bg-status-error-bg-subtle text-status-error-text border border-status-error-border text-sm rounded-card",
|
|
532
532
|
children: ot
|
|
533
533
|
}),
|
|
534
534
|
/* @__PURE__ */ d("div", { children: [
|
|
@@ -545,7 +545,7 @@ function p() {
|
|
|
545
545
|
...e,
|
|
546
546
|
name: void 0
|
|
547
547
|
})),
|
|
548
|
-
className: `w-full px-3 py-2 bg-bg-sunken border rounded-
|
|
548
|
+
className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${j.name ? "border-status-error-border" : "border-border-subtle"}`
|
|
549
549
|
}),
|
|
550
550
|
j.name && /* @__PURE__ */ u("p", {
|
|
551
551
|
className: "mt-1 text-xs text-status-error-text",
|
|
@@ -569,7 +569,7 @@ function p() {
|
|
|
569
569
|
...e,
|
|
570
570
|
path: void 0
|
|
571
571
|
})),
|
|
572
|
-
className: `w-full px-3 py-2 bg-bg-sunken border rounded-
|
|
572
|
+
className: `w-full px-3 py-2 bg-bg-sunken border rounded-input text-text-primary placeholder:text-text-placeholder transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong ${j.path ? "border-status-error-border" : "border-border-subtle"}`
|
|
573
573
|
}),
|
|
574
574
|
j.path && /* @__PURE__ */ u("p", {
|
|
575
575
|
className: "mt-1 text-xs text-status-error-text",
|
|
@@ -581,7 +581,7 @@ function p() {
|
|
|
581
581
|
children: v("vibesPage.agentLabel", "Agent")
|
|
582
582
|
}), /* @__PURE__ */ d("select", {
|
|
583
583
|
ref: ht,
|
|
584
|
-
className: "w-full px-3 py-2 bg-bg-sunken border border-border-
|
|
584
|
+
className: "w-full px-3 py-2 bg-bg-sunken border border-border-subtle rounded-input text-text-primary transition-colors focus:outline-none focus:ring-1 focus:ring-[var(--color-focus-ring)] focus:border-border-strong",
|
|
585
585
|
children: [/* @__PURE__ */ u("option", {
|
|
586
586
|
value: "",
|
|
587
587
|
children: v("vibesPage.selectAgent", "Select an agent")
|
|
@@ -598,7 +598,7 @@ function p() {
|
|
|
598
598
|
]
|
|
599
599
|
}),
|
|
600
600
|
/* @__PURE__ */ d("div", {
|
|
601
|
-
className: "mt-4 border-t border-border-
|
|
601
|
+
className: "mt-4 border-t border-border-subtle pt-4",
|
|
602
602
|
children: [/* @__PURE__ */ u("h3", {
|
|
603
603
|
className: "text-sm font-medium text-text-secondary mb-2",
|
|
604
604
|
children: v("vibesPage.tags", "Tags")
|
|
@@ -619,7 +619,7 @@ function p() {
|
|
|
619
619
|
type: "button",
|
|
620
620
|
onClick: Kt,
|
|
621
621
|
disabled: O,
|
|
622
|
-
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-
|
|
622
|
+
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-button hover:bg-action-primary-bgHover transition-all duration-200 disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus",
|
|
623
623
|
children: O ? v("vibesPage.creating", "Creating...") : v("vibesPage.createVibe", "Create Vibe")
|
|
624
624
|
})]
|
|
625
625
|
})
|