@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.
Files changed (293) hide show
  1. package/dist/components/actions/ActionCard.js +2 -2
  2. package/dist/components/actions/ActionCard.js.map +1 -1
  3. package/dist/components/actions/ExecutionHistory.js +1 -1
  4. package/dist/components/actions/ExecutionHistory.js.map +1 -1
  5. package/dist/components/agent-manager/AgentManagerAdminBar.js +1 -1
  6. package/dist/components/agent-manager/AgentManagerAdminBar.js.map +1 -1
  7. package/dist/components/agent-manager/AgentManagerChatPane.js +2 -2
  8. package/dist/components/agent-manager/AgentManagerChatPane.js.map +1 -1
  9. package/dist/components/agent-manager/AgentManagerInputArea.js +4 -4
  10. package/dist/components/agent-manager/AgentManagerInputArea.js.map +1 -1
  11. package/dist/components/agent-manager/AgentManagerLayout.js +1 -1
  12. package/dist/components/agent-manager/AgentManagerLayout.js.map +1 -1
  13. package/dist/components/agent-manager/AgentManagerMessageItem.js +1 -1
  14. package/dist/components/agent-manager/AgentManagerMessageItem.js.map +1 -1
  15. package/dist/components/agent-manager/AgentManagerSidebar.js +5 -5
  16. package/dist/components/agent-manager/AgentManagerSidebar.js.map +1 -1
  17. package/dist/components/agent-manager/AgentManagerTab.js +1 -1
  18. package/dist/components/agent-manager/AgentManagerTab.js.map +1 -1
  19. package/dist/components/agent-manager/AgentManagerTabBar.js +1 -1
  20. package/dist/components/agent-manager/AgentManagerTabBar.js.map +1 -1
  21. package/dist/components/agent-manager/BridleConfigPanel.js +23 -23
  22. package/dist/components/agent-manager/BridleConfigPanel.js.map +1 -1
  23. package/dist/components/agent-manager/PluginInstallModal.js +1 -1
  24. package/dist/components/agent-manager/PluginInstallModal.js.map +1 -1
  25. package/dist/components/agent-manager/ProfilesPanel.js +5 -5
  26. package/dist/components/agent-manager/ProfilesPanel.js.map +1 -1
  27. package/dist/components/agent-manager/controls/AutonomySelector.js +1 -1
  28. package/dist/components/agent-manager/controls/AutonomySelector.js.map +1 -1
  29. package/dist/components/agent-manager/controls/SdkSelector.js +1 -1
  30. package/dist/components/agent-manager/controls/SdkSelector.js.map +1 -1
  31. package/dist/components/agent-manager/controls/VoiceToggle.js +1 -1
  32. package/dist/components/agent-manager/controls/VoiceToggle.js.map +1 -1
  33. package/dist/components/agent-manager/detail/SessionConfigPanel.js +6 -6
  34. package/dist/components/agent-manager/detail/SessionConfigPanel.js.map +1 -1
  35. package/dist/components/agent-manager/detail/SessionLogsPanel.js +5 -5
  36. package/dist/components/agent-manager/detail/SessionLogsPanel.js.map +1 -1
  37. package/dist/components/agent-manager/detail/SessionToolsPanel.js +1 -1
  38. package/dist/components/agent-manager/detail/SessionToolsPanel.js.map +1 -1
  39. package/dist/components/agent-manager/dialogs/NewSessionDialog.js +2 -2
  40. package/dist/components/agent-manager/dialogs/NewSessionDialog.js.map +1 -1
  41. package/dist/components/agent-manager/dialogs/RenameSessionDialog.js +1 -1
  42. package/dist/components/agent-manager/dialogs/RenameSessionDialog.js.map +1 -1
  43. package/dist/components/agents/AgentCard.js +14 -11
  44. package/dist/components/agents/AgentCard.js.map +1 -1
  45. package/dist/components/ai/AIContextsTab.js +1 -1
  46. package/dist/components/ai/AIContextsTab.js.map +1 -1
  47. package/dist/components/ai/AIOverviewTab.js +4 -4
  48. package/dist/components/ai/AIOverviewTab.js.map +1 -1
  49. package/dist/components/ai/AIPlanPanel.js +4 -4
  50. package/dist/components/ai/AIPlanPanel.js.map +1 -1
  51. package/dist/components/ai/AIPlaygroundTab.js +1 -1
  52. package/dist/components/ai/AIPlaygroundTab.js.map +1 -1
  53. package/dist/components/ai/AIPromptsTab.js +2 -2
  54. package/dist/components/ai/AIPromptsTab.js.map +1 -1
  55. package/dist/components/ai/AIProviderCredentialsCard.js +4 -4
  56. package/dist/components/ai/AIProviderCredentialsCard.js.map +1 -1
  57. package/dist/components/ai/AIQueueTab.js +4 -4
  58. package/dist/components/ai/AIQueueTab.js.map +1 -1
  59. package/dist/components/ai/AISessionsTab.js +4 -4
  60. package/dist/components/ai/AISessionsTab.js.map +1 -1
  61. package/dist/components/ai/AITasksTab.js +1 -1
  62. package/dist/components/ai/AITasksTab.js.map +1 -1
  63. package/dist/components/ai/ClaudeCredentialsCard.js +3 -3
  64. package/dist/components/ai/ClaudeCredentialsCard.js.map +1 -1
  65. package/dist/components/ai/PluginHarnessPicker.js +3 -3
  66. package/dist/components/ai/PluginHarnessPicker.js.map +1 -1
  67. package/dist/components/analytics/AnalyticsBreakdownChart.js +8 -8
  68. package/dist/components/analytics/AnalyticsBreakdownChart.js.map +1 -1
  69. package/dist/components/analytics/AnalyticsTimeSeriesChart.js +5 -5
  70. package/dist/components/analytics/AnalyticsTimeSeriesChart.js.map +1 -1
  71. package/dist/components/audit/AuditDeleteDialog.js +2 -2
  72. package/dist/components/audit/AuditDeleteDialog.js.map +1 -1
  73. package/dist/components/audit/AuditExportButton.js +5 -5
  74. package/dist/components/audit/AuditExportButton.js.map +1 -1
  75. package/dist/components/audit/AuditLogDetail.js +9 -9
  76. package/dist/components/audit/AuditLogDetail.js.map +1 -1
  77. package/dist/components/audit/AuditLogFilters.js +1 -1
  78. package/dist/components/audit/AuditLogFilters.js.map +1 -1
  79. package/dist/components/audit/AuditLogStats.js +1 -1
  80. package/dist/components/audit/AuditLogStats.js.map +1 -1
  81. package/dist/components/audit/AuditLogTable.js +28 -28
  82. package/dist/components/audit/AuditLogTable.js.map +1 -1
  83. package/dist/components/catalog/CatalogCard.js +3 -3
  84. package/dist/components/catalog/CatalogCard.js.map +1 -1
  85. package/dist/components/catalog/CatalogForm.js +1 -1
  86. package/dist/components/catalog/CatalogForm.js.map +1 -1
  87. package/dist/components/common/ActionAgentTargetNotice.js +6 -6
  88. package/dist/components/common/ActionAgentTargetNotice.js.map +1 -1
  89. package/dist/components/common/CommandEditor.js +1 -1
  90. package/dist/components/common/CommandEditor.js.map +1 -1
  91. package/dist/components/docs/DocsPageTree.js +1 -1
  92. package/dist/components/docs/DocsPageTree.js.map +1 -1
  93. package/dist/components/docs/DocsPreviewPanel.js +1 -1
  94. package/dist/components/docs/DocsPreviewPanel.js.map +1 -1
  95. package/dist/components/docs/DocsRevisionHistory.js +4 -4
  96. package/dist/components/docs/DocsRevisionHistory.js.map +1 -1
  97. package/dist/components/docs/DocsSettingsPanel.js +7 -7
  98. package/dist/components/docs/DocsSettingsPanel.js.map +1 -1
  99. package/dist/components/docs/DocsTabPanel.js +1 -1
  100. package/dist/components/docs/DocsTabPanel.js.map +1 -1
  101. package/dist/components/graph/ConnectionPermissionsDialog.js +2 -2
  102. package/dist/components/graph/ConnectionPermissionsDialog.js.map +1 -1
  103. package/dist/components/graph/MeshDeployWizard.js +3 -3
  104. package/dist/components/graph/MeshDeployWizard.js.map +1 -1
  105. package/dist/components/graph/MeshRequestPanel.js +2 -2
  106. package/dist/components/graph/MeshRequestPanel.js.map +1 -1
  107. package/dist/components/idp-components/ComponentCard.js +5 -5
  108. package/dist/components/idp-components/ComponentCard.js.map +1 -1
  109. package/dist/components/idp-components/ComponentForm.js +1 -1
  110. package/dist/components/idp-components/ComponentForm.js.map +1 -1
  111. package/dist/components/idp-components/DependencyGraphTab.js +7 -7
  112. package/dist/components/idp-components/DependencyGraphTab.js.map +1 -1
  113. package/dist/components/logs/LogViewer.js +14 -14
  114. package/dist/components/logs/LogViewer.js.map +1 -1
  115. package/dist/components/notes/NoteCard.js +1 -1
  116. package/dist/components/notes/NoteCard.js.map +1 -1
  117. package/dist/components/notes/NoteEditor.js +2 -2
  118. package/dist/components/notes/NoteEditor.js.map +1 -1
  119. package/dist/components/notes/NoteList.js +1 -1
  120. package/dist/components/notes/NoteList.js.map +1 -1
  121. package/dist/components/notes/NotesTabPanel.js +1 -1
  122. package/dist/components/notes/NotesTabPanel.js.map +1 -1
  123. package/dist/components/scorecard/ScorecardEmptyState.js +1 -1
  124. package/dist/components/scorecard/ScorecardEmptyState.js.map +1 -1
  125. package/dist/components/scorecard/ScorecardPanel.js +3 -3
  126. package/dist/components/scorecard/ScorecardPanel.js.map +1 -1
  127. package/dist/components/security/SecurityScanList.js +11 -11
  128. package/dist/components/security/SecurityScanList.js.map +1 -1
  129. package/dist/components/sessions/SessionCard.js +26 -19
  130. package/dist/components/sessions/SessionCard.js.map +1 -1
  131. package/dist/components/sessions/SessionStatusBadge.js +7 -7
  132. package/dist/components/sessions/SessionStatusBadge.js.map +1 -1
  133. package/dist/components/shared/AgentSelector.js +4 -4
  134. package/dist/components/shared/AgentSelector.js.map +1 -1
  135. package/dist/components/shared/AgentSetupBanner.js +3 -3
  136. package/dist/components/shared/AgentSetupBanner.js.map +1 -1
  137. package/dist/components/shared/Card.js +4 -4
  138. package/dist/components/shared/Card.js.map +1 -1
  139. package/dist/components/shared/ErrorState.js +15 -9
  140. package/dist/components/shared/ErrorState.js.map +1 -1
  141. package/dist/components/shared/FilterDropdown.js +2 -2
  142. package/dist/components/shared/FilterDropdown.js.map +1 -1
  143. package/dist/components/shared/PageSkeleton.js +6 -6
  144. package/dist/components/shared/PageSkeleton.js.map +1 -1
  145. package/dist/components/shared/SearchInput.js +1 -1
  146. package/dist/components/shared/SearchInput.js.map +1 -1
  147. package/dist/components/shared/StatCard.js +7 -7
  148. package/dist/components/shared/StatCard.js.map +1 -1
  149. package/dist/components/templates/PublishTemplateForm.js +2 -2
  150. package/dist/components/templates/PublishTemplateForm.js.map +1 -1
  151. package/dist/components/templates/TemplateCard.js +5 -5
  152. package/dist/components/templates/TemplateCard.js.map +1 -1
  153. package/dist/components/templates/TemplateWizard.js +2 -2
  154. package/dist/components/templates/TemplateWizard.js.map +1 -1
  155. package/dist/components/tunnels/DomainVerificationBadge.js +4 -4
  156. package/dist/components/tunnels/DomainVerificationBadge.js.map +1 -1
  157. package/dist/components/tunnels/ProviderBadge.js +1 -1
  158. package/dist/components/tunnels/ProviderBadge.js.map +1 -1
  159. package/dist/components/tunnels/TunnelCard.js +16 -16
  160. package/dist/components/tunnels/TunnelCard.js.map +1 -1
  161. package/dist/components/tunnels/TunnelCreateWizard.js +1 -1
  162. package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
  163. package/dist/components/tunnels/TunnelPublicAccessPanel.js +1 -1
  164. package/dist/components/tunnels/TunnelPublicAccessPanel.js.map +1 -1
  165. package/dist/components/tunnels/TunnelStatusBadge.js +4 -4
  166. package/dist/components/tunnels/TunnelStatusBadge.js.map +1 -1
  167. package/dist/components/vibecalendar/LogsDrawer.js +2 -2
  168. package/dist/components/vibecalendar/LogsDrawer.js.map +1 -1
  169. package/dist/components/vibecalendar/ScheduleTaskModal.js +5 -5
  170. package/dist/components/vibecalendar/ScheduleTaskModal.js.map +1 -1
  171. package/dist/components/vibecalendar/VibeCalAgendaView.js +2 -2
  172. package/dist/components/vibecalendar/VibeCalAgendaView.js.map +1 -1
  173. package/dist/components/vibecalendar/VibeCalDayView.js +3 -3
  174. package/dist/components/vibecalendar/VibeCalDayView.js.map +1 -1
  175. package/dist/components/vibecalendar/VibeCalMonthView.js +1 -1
  176. package/dist/components/vibecalendar/VibeCalMonthView.js.map +1 -1
  177. package/dist/components/vibecalendar/VibeCalWeekView.js +4 -4
  178. package/dist/components/vibecalendar/VibeCalWeekView.js.map +1 -1
  179. package/dist/components/vibecalendar/VibeCalendarHeader.js +4 -4
  180. package/dist/components/vibecalendar/VibeCalendarHeader.js.map +1 -1
  181. package/dist/components/vibecalendar/VibeTaskBlock.js +2 -2
  182. package/dist/components/vibecalendar/VibeTaskBlock.js.map +1 -1
  183. package/dist/components/vibecalendar/types.js +6 -6
  184. package/dist/components/vibecalendar/types.js.map +1 -1
  185. package/dist/components/vibedeck/VibeDeckButtonForm.js +9 -9
  186. package/dist/components/vibedeck/VibeDeckButtonForm.js.map +1 -1
  187. package/dist/components/vibedeck/VibeDeckButtonTile.js +6 -6
  188. package/dist/components/vibedeck/VibeDeckButtonTile.js.map +1 -1
  189. package/dist/components/vibedeck/VibeDeckExecutionLog.js +10 -10
  190. package/dist/components/vibedeck/VibeDeckExecutionLog.js.map +1 -1
  191. package/dist/components/vibedeck/VibeDeckForm.js +8 -8
  192. package/dist/components/vibedeck/VibeDeckForm.js.map +1 -1
  193. package/dist/components/vibedeck/VibeDeckGrid.js +2 -2
  194. package/dist/components/vibedeck/VibeDeckGrid.js.map +1 -1
  195. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js +2 -2
  196. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js.map +1 -1
  197. package/dist/components/vibedeck/VibeDeckSwitcher.js +8 -8
  198. package/dist/components/vibedeck/VibeDeckSwitcher.js.map +1 -1
  199. package/dist/components/vibes/VibeCard.js +22 -18
  200. package/dist/components/vibes/VibeCard.js.map +1 -1
  201. package/dist/components/vibes/VibeList.js +16 -12
  202. package/dist/components/vibes/VibeList.js.map +1 -1
  203. package/dist/pages/ActionsPage.js +4 -3
  204. package/dist/pages/ActionsPage.js.map +1 -1
  205. package/dist/pages/AgentDetailsPage.js +9 -9
  206. package/dist/pages/AgentDetailsPage.js.map +1 -1
  207. package/dist/pages/AgentsLandingPage.js +4 -4
  208. package/dist/pages/AgentsLandingPage.js.map +1 -1
  209. package/dist/pages/AgentsPage.js +14 -14
  210. package/dist/pages/AgentsPage.js.map +1 -1
  211. package/dist/pages/AnalyticsPage.js +8 -8
  212. package/dist/pages/AnalyticsPage.js.map +1 -1
  213. package/dist/pages/CatalogDetailPage.js +11 -11
  214. package/dist/pages/CatalogDetailPage.js.map +1 -1
  215. package/dist/pages/CatalogPage.js +12 -9
  216. package/dist/pages/CatalogPage.js.map +1 -1
  217. package/dist/pages/ComponentDetailPage.js +7 -7
  218. package/dist/pages/ComponentDetailPage.js.map +1 -1
  219. package/dist/pages/ComponentsPage.js +12 -9
  220. package/dist/pages/ComponentsPage.js.map +1 -1
  221. package/dist/pages/EnvTopologyPage.js +2 -2
  222. package/dist/pages/EnvTopologyPage.js.map +1 -1
  223. package/dist/pages/GettingStartedPage.js +12 -12
  224. package/dist/pages/GettingStartedPage.js.map +1 -1
  225. package/dist/pages/HealthPage.js +12 -12
  226. package/dist/pages/HealthPage.js.map +1 -1
  227. package/dist/pages/LogsPage.js +4 -4
  228. package/dist/pages/LogsPage.js.map +1 -1
  229. package/dist/pages/NoteDetailsPage.js +5 -5
  230. package/dist/pages/NoteDetailsPage.js.map +1 -1
  231. package/dist/pages/OverviewPage.js +74 -41
  232. package/dist/pages/OverviewPage.js.map +1 -1
  233. package/dist/pages/PluginsCatalogPage.js +6 -3
  234. package/dist/pages/PluginsCatalogPage.js.map +1 -1
  235. package/dist/pages/ScheduledJobDetailPage.js +7 -7
  236. package/dist/pages/ScheduledJobDetailPage.js.map +1 -1
  237. package/dist/pages/SessionDetailsPage.js +21 -21
  238. package/dist/pages/SessionDetailsPage.js.map +1 -1
  239. package/dist/pages/SessionsPage.js +20 -20
  240. package/dist/pages/SessionsPage.js.map +1 -1
  241. package/dist/pages/SettingsPage.js +64 -52
  242. package/dist/pages/SettingsPage.js.map +1 -1
  243. package/dist/pages/SharedSessionPage.js +21 -21
  244. package/dist/pages/SharedSessionPage.js.map +1 -1
  245. package/dist/pages/SharedVibeDeckPage.js +5 -5
  246. package/dist/pages/SharedVibeDeckPage.js.map +1 -1
  247. package/dist/pages/TargetDetailsPage.js +56 -65
  248. package/dist/pages/TargetDetailsPage.js.map +1 -1
  249. package/dist/pages/TargetsPage.js +4 -4
  250. package/dist/pages/TargetsPage.js.map +1 -1
  251. package/dist/pages/TemplateDetailPage.js +10 -10
  252. package/dist/pages/TemplateDetailPage.js.map +1 -1
  253. package/dist/pages/TemplatesPage.js +6 -5
  254. package/dist/pages/TemplatesPage.js.map +1 -1
  255. package/dist/pages/VibeAuditPage.js +3 -3
  256. package/dist/pages/VibeAuditPage.js.map +1 -1
  257. package/dist/pages/VibeCalendarPage.js +3 -3
  258. package/dist/pages/VibeCalendarPage.js.map +1 -1
  259. package/dist/pages/VibeDeckPage.js +3 -3
  260. package/dist/pages/VibeDeckPage.js.map +1 -1
  261. package/dist/pages/VibeDetailsPage.js +15 -15
  262. package/dist/pages/VibeDetailsPage.js.map +1 -1
  263. package/dist/pages/VibeTaskDetailPage.js +5 -5
  264. package/dist/pages/VibeTaskDetailPage.js.map +1 -1
  265. package/dist/pages/VibesPage.js +18 -18
  266. package/dist/pages/VibesPage.js.map +1 -1
  267. package/dist/pages/WebhooksPage.js +11 -11
  268. package/dist/pages/WebhooksPage.js.map +1 -1
  269. package/dist/pages/ai/AIBookmarksPage.js +1 -1
  270. package/dist/pages/ai/AIBookmarksPage.js.map +1 -1
  271. package/dist/pages/ai/AISessionDetailPage.js +6 -6
  272. package/dist/pages/ai/AISessionDetailPage.js.map +1 -1
  273. package/dist/pages/tunnels/AuditTab.js +1 -1
  274. package/dist/pages/tunnels/AuditTab.js.map +1 -1
  275. package/dist/pages/tunnels/DomainsTab.js +1 -1
  276. package/dist/pages/tunnels/DomainsTab.js.map +1 -1
  277. package/dist/pages/tunnels/ProvidersTab.js +1 -1
  278. package/dist/pages/tunnels/ProvidersTab.js.map +1 -1
  279. package/dist/pages/tunnels/SessionsTab.js +1 -1
  280. package/dist/pages/tunnels/SessionsTab.js.map +1 -1
  281. package/dist/pages/tunnels/TunnelDetailsPage.js +3 -3
  282. package/dist/pages/tunnels/TunnelDetailsPage.js.map +1 -1
  283. package/dist/pages/tunnels/UsageTab.js +1 -1
  284. package/dist/pages/tunnels/UsageTab.js.map +1 -1
  285. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js +16 -16
  286. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js.map +1 -1
  287. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js +1 -1
  288. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js.map +1 -1
  289. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js +52 -49
  290. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js.map +1 -1
  291. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js +9 -9
  292. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js.map +1 -1
  293. package/package.json +1 -1
@@ -1,29 +1,29 @@
1
- import { useMySettingsQuery as e, useResetSettingsMutation as t, useSettingsPageDataQuery as n, useUpdateNotificationPreferencesMutation as ee, useUpdateWorkspaceDefaultsMutation as te } from "../generated/wspace-operations.js";
2
- import { useVibeControls as ne } from "../providers/VibeControlsProvider.js";
3
- import re from "../hooks/useCachedInitialData.js";
4
- import { PageHeader as ie } from "../components/shared/PageHeader.js";
5
- import { LoadingState as r } from "../components/shared/LoadingState.js";
6
- import { Card as i } from "../components/shared/Card.js";
1
+ import { useMySettingsQuery as e, useResetSettingsMutation as t, useSettingsPageDataQuery as n, useUpdateNotificationPreferencesMutation as r, useUpdateWorkspaceDefaultsMutation as ee } from "../generated/wspace-operations.js";
2
+ import { useVibeControls as te } from "../providers/VibeControlsProvider.js";
3
+ import ne from "../hooks/useCachedInitialData.js";
4
+ import { PageHeader as re } from "../components/shared/PageHeader.js";
5
+ import { LoadingState as i } from "../components/shared/LoadingState.js";
6
+ import { Card as a } from "../components/shared/Card.js";
7
7
  import "../components/shared/index.js";
8
- import { VIBE_PERMISSIONS as a } from "../constants/permissions.js";
9
- import { AdvancedSection as o } from "../components/settings/AdvancedSection.js";
10
- import { NotificationsSection as s } from "../components/settings/NotificationsSection.js";
11
- import { WorkspaceDefaultsSection as c } from "../components/settings/WorkspaceDefaultsSection.js";
12
- import { IdePreferencesSection as l } from "../components/settings/IdePreferencesSection.js";
13
- import { useCallback as u, useEffect as d, useMemo as f, useState as p } from "react";
14
- import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
- import { ChevronRight as h, RefreshCw as g, RotateCcw as _, Save as v } from "lucide-react";
8
+ import { VIBE_PERMISSIONS as o } from "../constants/permissions.js";
9
+ import { AdvancedSection as s } from "../components/settings/AdvancedSection.js";
10
+ import { NotificationsSection as c } from "../components/settings/NotificationsSection.js";
11
+ import { WorkspaceDefaultsSection as l } from "../components/settings/WorkspaceDefaultsSection.js";
12
+ import { IdePreferencesSection as u } from "../components/settings/IdePreferencesSection.js";
13
+ import { useCallback as d, useEffect as f, useMemo as p, useState as m } from "react";
14
+ import { useI18n as h } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
+ import { ChevronRight as g, RefreshCw as _, RotateCcw as ie, Save as v } from "lucide-react";
16
16
  import { usePermissions as y } from "@burdenoff/fe-libs/shared/providers/shell";
17
17
  import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
18
18
  import { PermissionButton as C } from "@burdenoff/fe-libs/shared/components";
19
19
  import { MotionItem as w, MotionList as T, MotionPage as E } from "@burdenoff/fe-libs/shared/motion";
20
20
  //#region src/pages/SettingsPage.tsx
21
21
  function D() {
22
- let { hasPermission: D, isLoading: O } = y(), { workspaceId: ae } = ne(), { t: k } = m(), A = D(a.CONFIG_UPDATE), [j, M] = p("notifications"), [N, P] = p(!1), [F, I] = p(null), { agents: L } = re(), R = f(() => L.map((e) => ({
22
+ let { hasPermission: D, isLoading: O } = y(), { workspaceId: ae } = te(), { t: k } = h(), A = D(o.CONFIG_UPDATE), [j, M] = m("notifications"), [N, P] = m(!1), [F, I] = m(null), { agents: L } = ne(), R = p(() => L.map((e) => ({
23
23
  id: e.id,
24
24
  name: e.name,
25
25
  isActive: e.isActive
26
- })), [L]), z = u((e, t) => {
26
+ })), [L]), z = d((e, t) => {
27
27
  let n = k(e);
28
28
  return n === e ? t : n;
29
29
  }, [k]), B = n({
@@ -34,12 +34,12 @@ function D() {
34
34
  skip: O || A,
35
35
  fetchPolicy: "cache-and-network",
36
36
  notifyOnNetworkStatusChange: !0
37
- }), H = B.data?.mySettings ?? V.data?.mySettings, U = B.loading || V.loading, W = f(() => (B.data?.listSettingsSecrets ?? []).map((e) => ({
37
+ }), H = B.data?.mySettings ?? V.data?.mySettings, U = B.loading || V.loading, W = p(() => (B.data?.listSettingsSecrets ?? []).map((e) => ({
38
38
  id: e.id,
39
39
  key: e.key,
40
40
  value: e.value ?? null,
41
41
  isSecret: e.isSecret
42
- })), [B.data?.listSettingsSecrets]), G = u(async () => {
42
+ })), [B.data?.listSettingsSecrets]), G = d(async () => {
43
43
  if (A) {
44
44
  await B.refetch();
45
45
  return;
@@ -49,13 +49,13 @@ function D() {
49
49
  A,
50
50
  V,
51
51
  B
52
- ]), [K, q] = p({
52
+ ]), [K, q] = m({
53
53
  agentOffline: !0,
54
54
  sessionError: !0,
55
55
  vibeStatusChange: !1,
56
56
  emailDigest: !1,
57
57
  digestFrequency: "none"
58
- }), [J, Y] = p({
58
+ }), [J, Y] = m({
59
59
  defaultAgent: null,
60
60
  defaultSessionType: "TMUX",
61
61
  autoStartSessions: !0,
@@ -69,10 +69,10 @@ function D() {
69
69
  autoUpdate: !0,
70
70
  defaultEnvironmentVariables: null
71
71
  });
72
- d(() => {
72
+ f(() => {
73
73
  H && (q(H.notifications), Y(H.workspaceDefaults));
74
74
  }, [H]);
75
- let [X] = ee({ refetchQueries: ["MySettings", "SettingsPageData"] }), [Z] = te({ refetchQueries: ["MySettings", "SettingsPageData"] }), [Q] = t({ refetchQueries: ["MySettings", "SettingsPageData"] }), oe = u(async () => {
75
+ let [X] = r({ refetchQueries: ["MySettings", "SettingsPageData"] }), [Z] = ee({ refetchQueries: ["MySettings", "SettingsPageData"] }), [Q] = t({ refetchQueries: ["MySettings", "SettingsPageData"] }), oe = d(async () => {
76
76
  P(!0), I(null);
77
77
  try {
78
78
  j === "notifications" && await X({ variables: { input: {
@@ -117,7 +117,7 @@ function D() {
117
117
  X,
118
118
  Z,
119
119
  J
120
- ]), se = u(async () => {
120
+ ]), se = d(async () => {
121
121
  let e = {
122
122
  notifications: "NOTIFICATIONS",
123
123
  workspace: "WORKSPACE_DEFAULTS",
@@ -162,15 +162,15 @@ function D() {
162
162
  description: z("settings.advancedDesc", "Logging, telemetry, secrets")
163
163
  }
164
164
  ], ce = A ? $ : $.filter((e) => e.id === "notifications");
165
- return d(() => {
165
+ return f(() => {
166
166
  !A && j !== "notifications" && M("notifications");
167
167
  }, [j, A]), O || U && !H ? /* @__PURE__ */ x(E, {
168
- className: "min-h-screen flex items-center justify-center bg-bg-surface p-4 sm:p-6",
169
- children: /* @__PURE__ */ x(r, { message: z("settings.loading", "Loading settings...") })
168
+ className: "min-h-screen flex items-center justify-center bg-bg-canvas px-6 lg:px-8 py-6",
169
+ children: /* @__PURE__ */ x(i, { message: z("settings.loading", "Loading settings...") })
170
170
  }) : /* @__PURE__ */ S(E, {
171
- className: "min-h-screen space-y-6 bg-bg-surface p-4 sm:p-6",
171
+ className: "min-h-screen space-y-6 bg-bg-canvas px-6 lg:px-8 py-6",
172
172
  children: [
173
- /* @__PURE__ */ x(ie, {
173
+ /* @__PURE__ */ x(re, {
174
174
  title: z("nav.settings", "Settings"),
175
175
  description: z("settings.description", "Configure VibeControls preferences and workspace defaults"),
176
176
  actions: A ? /* @__PURE__ */ S("div", {
@@ -179,24 +179,24 @@ function D() {
179
179
  children: [/* @__PURE__ */ S("button", {
180
180
  type: "button",
181
181
  onClick: se,
182
- className: "flex items-center gap-2 rounded-md border border-border-default px-3 py-2 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
182
+ className: "flex items-center gap-2 rounded-button border border-border-default px-3 py-2 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary hover:border-border-strong",
183
183
  title: z("settings.resetToDefaults", "Reset to defaults"),
184
- children: [/* @__PURE__ */ x(_, { className: "size-4" }), z("settings.reset", "Reset")]
184
+ children: [/* @__PURE__ */ x(ie, { className: "size-4" }), z("settings.reset", "Reset")]
185
185
  }), /* @__PURE__ */ x(C, {
186
- permission: a.CONFIG_UPDATE,
186
+ permission: o.CONFIG_UPDATE,
187
187
  children: /* @__PURE__ */ S("button", {
188
188
  type: "button",
189
189
  onClick: oe,
190
190
  disabled: N || U,
191
- className: "flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-action-primary-text transition-colors hover:bg-action-primary-bg-hover disabled:opacity-50",
192
- children: [N ? /* @__PURE__ */ x(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ x(v, { className: "size-4" }), z("common.save", "Save")]
191
+ className: "flex items-center gap-2 rounded-button bg-action-primary-bg px-4 py-2 text-action-primary-text transition-colors hover:bg-action-primary-bg-hover disabled:opacity-50",
192
+ children: [N ? /* @__PURE__ */ x(_, { className: "size-4 animate-spin" }) : /* @__PURE__ */ x(v, { className: "size-4" }), z("common.save", "Save")]
193
193
  })
194
194
  })]
195
195
  }) : void 0
196
196
  }),
197
197
  F ? /* @__PURE__ */ x("div", {
198
198
  role: F.tone === "error" ? "alert" : "status",
199
- className: `rounded-lg border px-4 py-3 text-sm ${F.tone === "error" ? "border-status-error-border bg-status-error-bg/10 text-status-error-text" : "border-status-success-border bg-status-success-bg/10 text-status-success-text"}`,
199
+ className: `rounded-card border px-4 py-3 text-sm ${F.tone === "error" ? "border-status-error-border bg-status-error-bg-subtle text-status-error-text" : "border-status-success-border bg-status-success-bg-subtle text-status-success-text"}`,
200
200
  children: F.message
201
201
  }) : null,
202
202
  /* @__PURE__ */ S("div", {
@@ -205,22 +205,34 @@ function D() {
205
205
  "data-tour": "settings-section-nav",
206
206
  className: "w-full flex-shrink-0 lg:w-64",
207
207
  "aria-label": z("settings.sections", "Settings sections"),
208
- children: /* @__PURE__ */ x(i, {
208
+ children: /* @__PURE__ */ x(a, {
209
209
  className: "p-2",
210
210
  children: /* @__PURE__ */ x(T, {
211
211
  stagger: .04,
212
- children: ce.map((e) => /* @__PURE__ */ x(w, { children: /* @__PURE__ */ S("button", {
213
- type: "button",
214
- onClick: () => M(e.id),
215
- className: `flex w-full items-center justify-between rounded-md px-3 py-2 text-left transition-colors ${j === e.id ? "bg-action-primary-bg/10 font-medium text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
216
- children: [/* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
217
- className: "text-sm font-medium",
218
- children: e.label
219
- }), /* @__PURE__ */ x("div", {
220
- className: "text-xs opacity-70",
221
- children: e.description
222
- })] }), /* @__PURE__ */ x(h, { className: "size-4" })]
223
- }) }, e.id))
212
+ className: "space-y-0.5",
213
+ children: ce.map((e) => {
214
+ let t = j === e.id;
215
+ return /* @__PURE__ */ x(w, { children: /* @__PURE__ */ S("button", {
216
+ type: "button",
217
+ onClick: () => M(e.id),
218
+ "aria-current": t ? "true" : void 0,
219
+ className: `relative flex w-full items-center justify-between rounded-button px-3 py-2 text-left transition-colors ${t ? "bg-[var(--color-accent-soft)] font-medium text-text-primary" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
220
+ children: [
221
+ t && /* @__PURE__ */ x("span", {
222
+ "aria-hidden": "true",
223
+ className: "absolute left-0 top-1/2 h-5 w-0.5 -translate-y-1/2 rounded-full bg-action-primary-bg"
224
+ }),
225
+ /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("div", {
226
+ className: "text-sm font-medium",
227
+ children: e.label
228
+ }), /* @__PURE__ */ x("div", {
229
+ className: "text-xs text-text-muted",
230
+ children: e.description
231
+ })] }),
232
+ /* @__PURE__ */ x(g, { className: "size-4" })
233
+ ]
234
+ }) }, e.id);
235
+ })
224
236
  })
225
237
  })
226
238
  }), /* @__PURE__ */ x("div", {
@@ -228,22 +240,22 @@ function D() {
228
240
  className: "flex-1",
229
241
  children: U && !H ? /* @__PURE__ */ S("div", {
230
242
  className: "flex items-center justify-center py-12 text-text-secondary",
231
- children: [/* @__PURE__ */ x(g, { className: "size-5 animate-spin" }), /* @__PURE__ */ x("span", {
243
+ children: [/* @__PURE__ */ x(_, { className: "size-5 animate-spin" }), /* @__PURE__ */ x("span", {
232
244
  className: "ml-2",
233
245
  children: z("settings.loading", "Loading settings...")
234
246
  })]
235
247
  }) : /* @__PURE__ */ S(b, { children: [
236
- j === "notifications" ? /* @__PURE__ */ x(s, {
248
+ j === "notifications" ? /* @__PURE__ */ x(c, {
237
249
  data: K,
238
250
  onChange: q
239
251
  }) : null,
240
- j === "editor" ? /* @__PURE__ */ x(l, {}) : null,
241
- j === "workspace" ? /* @__PURE__ */ x(c, {
252
+ j === "editor" ? /* @__PURE__ */ x(u, {}) : null,
253
+ j === "workspace" ? /* @__PURE__ */ x(l, {
242
254
  data: J,
243
255
  onChange: Y,
244
256
  agents: R
245
257
  }) : null,
246
- j === "advanced" ? /* @__PURE__ */ x(o, {
258
+ j === "advanced" ? /* @__PURE__ */ x(s, {
247
259
  data: {
248
260
  logLevel: J.logLevel,
249
261
  telemetryEnabled: J.telemetryEnabled,
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPage.js","names":[],"sources":["../../src/pages/SettingsPage.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ChevronRight, RefreshCw, RotateCcw, Save } from 'lucide-react';\nimport { MotionItem, MotionList, MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Card, PageHeader, LoadingState } from '@/components/shared';\nimport { AdvancedSection } from '@/components/settings/AdvancedSection';\nimport { NotificationsSection } from '@/components/settings/NotificationsSection';\nimport { WorkspaceDefaultsSection } from '@/components/settings/WorkspaceDefaultsSection';\nimport { IdePreferencesSection } from '@/components/settings/IdePreferencesSection';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { useCachedInitialData } from '@/hooks/useCachedInitialData';\nimport {\n useMySettingsQuery,\n useResetSettingsMutation,\n useSettingsPageDataQuery,\n useUpdateNotificationPreferencesMutation,\n useUpdateWorkspaceDefaultsMutation,\n} from '@/generated/wspace-operations';\nimport { useVibeControls } from '@/providers/VibeControlsProvider';\n\ntype SettingsSection = 'notifications' | 'workspace' | 'advanced' | 'editor';\n\nexport function SettingsPage() {\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { workspaceId } = useVibeControls();\n const { t } = useI18n();\n const canUpdateConfigs = hasPermission(VIBE_PERMISSIONS.CONFIG_UPDATE);\n\n const [activeSection, setActiveSection] = useState<SettingsSection>('notifications');\n const [isSaving, setIsSaving] = useState(false);\n const [feedback, setFeedback] = useState<{ tone: 'success' | 'error'; message: string } | null>(\n null\n );\n\n const { agents: cachedAgents } = useCachedInitialData();\n const agents = useMemo(\n () =>\n cachedAgents.map((agent) => ({ id: agent.id, name: agent.name, isActive: agent.isActive })),\n [cachedAgents]\n );\n\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\n const settingsPageQuery = useSettingsPageDataQuery({\n skip: permissionsLoading || !canUpdateConfigs,\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true,\n });\n\n const mySettingsQuery = useMySettingsQuery({\n skip: permissionsLoading || canUpdateConfigs,\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true,\n });\n\n const settingsData = settingsPageQuery.data?.mySettings ?? mySettingsQuery.data?.mySettings;\n const settingsLoading = settingsPageQuery.loading || mySettingsQuery.loading;\n const secrets = useMemo(\n () =>\n (settingsPageQuery.data?.listSettingsSecrets ?? []).map(\n (secret: NonNullable<(typeof settingsPageQuery.data)['listSettingsSecrets']>[number]) => ({\n id: secret.id,\n key: secret.key,\n value: secret.value ?? null,\n isSecret: secret.isSecret,\n })\n ),\n [settingsPageQuery.data?.listSettingsSecrets]\n );\n\n const refetchSettings = useCallback(async () => {\n if (canUpdateConfigs) {\n await settingsPageQuery.refetch();\n return;\n }\n\n await mySettingsQuery.refetch();\n }, [canUpdateConfigs, mySettingsQuery, settingsPageQuery]);\n\n const [notifications, setNotifications] = useState({\n agentOffline: true,\n sessionError: true,\n vibeStatusChange: false,\n emailDigest: false,\n digestFrequency: 'none' as string | null,\n });\n\n const [workspaceDefaults, setWorkspaceDefaults] = useState({\n defaultAgent: null as string | null,\n defaultSessionType: 'TMUX',\n autoStartSessions: true,\n defaultVibeType: 'PROJECT',\n autoGitSync: false,\n agentHeartbeatInterval: 30,\n agentAutoReconnect: true,\n agentMaxSessions: 10,\n logLevel: 'info',\n telemetryEnabled: true,\n autoUpdate: true,\n defaultEnvironmentVariables: null as string | null,\n });\n\n useEffect(() => {\n if (!settingsData) {\n return;\n }\n\n setNotifications(settingsData.notifications);\n setWorkspaceDefaults(settingsData.workspaceDefaults);\n }, [settingsData]);\n\n const [updateNotificationsMutation] = useUpdateNotificationPreferencesMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n const [updateWorkspaceDefaultsMutation] = useUpdateWorkspaceDefaultsMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n const [resetSettingsMutation] = useResetSettingsMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n\n const handleSave = useCallback(async () => {\n setIsSaving(true);\n setFeedback(null);\n\n try {\n if (activeSection === 'notifications') {\n await updateNotificationsMutation({\n variables: {\n input: {\n agentOffline: notifications.agentOffline,\n sessionError: notifications.sessionError,\n vibeStatusChange: notifications.vibeStatusChange,\n emailDigest: notifications.emailDigest,\n digestFrequency: notifications.digestFrequency,\n },\n },\n });\n }\n\n if (activeSection === 'workspace') {\n await updateWorkspaceDefaultsMutation({\n variables: {\n input: {\n defaultAgent: workspaceDefaults.defaultAgent,\n defaultSessionType: workspaceDefaults.defaultSessionType,\n autoStartSessions: workspaceDefaults.autoStartSessions,\n defaultVibeType: workspaceDefaults.defaultVibeType,\n autoGitSync: workspaceDefaults.autoGitSync,\n agentHeartbeatInterval: workspaceDefaults.agentHeartbeatInterval,\n agentAutoReconnect: workspaceDefaults.agentAutoReconnect,\n agentMaxSessions: workspaceDefaults.agentMaxSessions,\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n defaultEnvironmentVariables: workspaceDefaults.defaultEnvironmentVariables,\n },\n },\n });\n }\n\n if (activeSection === 'advanced') {\n await updateWorkspaceDefaultsMutation({\n variables: {\n input: {\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n },\n },\n });\n }\n\n setFeedback({\n tone: 'success',\n message: tr('settings.saveSuccess', 'Settings saved successfully.'),\n });\n } catch (saveError) {\n console.error('Failed to save settings:', saveError);\n setFeedback({\n tone: 'error',\n message:\n saveError instanceof Error\n ? saveError.message\n : tr('settings.saveFailed', 'Failed to save settings.'),\n });\n } finally {\n setIsSaving(false);\n }\n }, [\n activeSection,\n notifications,\n tr,\n updateNotificationsMutation,\n updateWorkspaceDefaultsMutation,\n workspaceDefaults,\n ]);\n\n const handleReset = useCallback(async () => {\n const categoryMap: Record<\n SettingsSection,\n 'NOTIFICATIONS' | 'WORKSPACE_DEFAULTS' | 'ADVANCED' | 'PREFERENCES'\n > = {\n notifications: 'NOTIFICATIONS',\n workspace: 'WORKSPACE_DEFAULTS',\n editor: 'PREFERENCES',\n advanced: 'ADVANCED',\n };\n\n try {\n setFeedback(null);\n await resetSettingsMutation({ variables: { category: categoryMap[activeSection] as never } });\n await refetchSettings();\n setFeedback({\n tone: 'success',\n message: tr('settings.resetSuccess', 'Settings reset to defaults.'),\n });\n } catch (resetError) {\n console.error('Failed to reset settings:', resetError);\n setFeedback({\n tone: 'error',\n message:\n resetError instanceof Error\n ? resetError.message\n : tr('settings.resetFailed', 'Failed to reset settings.'),\n });\n }\n }, [activeSection, refetchSettings, resetSettingsMutation, tr]);\n\n const sections: Array<{ id: SettingsSection; label: string; description: string }> = [\n {\n id: 'notifications',\n label: tr('settings.notifications', 'Notifications'),\n description: tr('settings.notificationsDesc', 'Alert preferences'),\n },\n {\n id: 'workspace',\n label: tr('settings.workspace', 'Workspace'),\n description: tr('settings.workspaceDesc', 'Agent, session, vibe defaults'),\n },\n {\n id: 'editor',\n label: tr('settings.editor', 'Code Editor'),\n description: tr('settings.editorDesc', 'Default IDE + per-Vibe overrides'),\n },\n {\n id: 'advanced',\n label: tr('settings.advanced', 'Advanced'),\n description: tr('settings.advancedDesc', 'Logging, telemetry, secrets'),\n },\n ];\n\n const visibleSections = canUpdateConfigs\n ? sections\n : sections.filter((section) => section.id === 'notifications');\n\n useEffect(() => {\n if (!canUpdateConfigs && activeSection !== 'notifications') {\n setActiveSection('notifications');\n }\n }, [activeSection, canUpdateConfigs]);\n\n if (permissionsLoading || (settingsLoading && !settingsData)) {\n return (\n <MotionPage className=\"min-h-screen flex items-center justify-center bg-bg-surface p-4 sm:p-6\">\n <LoadingState message={tr('settings.loading', 'Loading settings...')} />\n </MotionPage>\n );\n }\n\n return (\n <MotionPage className=\"min-h-screen space-y-6 bg-bg-surface p-4 sm:p-6\">\n <PageHeader\n title={tr('nav.settings', 'Settings')}\n description={tr(\n 'settings.description',\n 'Configure VibeControls preferences and workspace defaults'\n )}\n actions={\n canUpdateConfigs ? (\n <div data-tour=\"settings-actions\" className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={handleReset}\n className=\"flex items-center gap-2 rounded-md border border-border-default px-3 py-2 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary\"\n title={tr('settings.resetToDefaults', 'Reset to defaults')}\n >\n <RotateCcw className=\"size-4\" />\n {tr('settings.reset', 'Reset')}\n </button>\n\n <PermissionButton permission={VIBE_PERMISSIONS.CONFIG_UPDATE}>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={isSaving || settingsLoading}\n className=\"flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-action-primary-text transition-colors hover:bg-action-primary-bg-hover disabled:opacity-50\"\n >\n {isSaving ? (\n <RefreshCw className=\"size-4 animate-spin\" />\n ) : (\n <Save className=\"size-4\" />\n )}\n {tr('common.save', 'Save')}\n </button>\n </PermissionButton>\n </div>\n ) : undefined\n }\n />\n\n {feedback ? (\n <div\n role={feedback.tone === 'error' ? 'alert' : 'status'}\n className={`rounded-lg border px-4 py-3 text-sm ${\n feedback.tone === 'error'\n ? 'border-status-error-border bg-status-error-bg/10 text-status-error-text'\n : 'border-status-success-border bg-status-success-bg/10 text-status-success-text'\n }`}\n >\n {feedback.message}\n </div>\n ) : null}\n\n <div className=\"flex flex-col gap-6 lg:flex-row\">\n <nav\n data-tour=\"settings-section-nav\"\n className=\"w-full flex-shrink-0 lg:w-64\"\n aria-label={tr('settings.sections', 'Settings sections')}\n >\n <Card className=\"p-2\">\n <MotionList stagger={0.04}>\n {visibleSections.map((section) => (\n <MotionItem key={section.id}>\n <button\n type=\"button\"\n onClick={() => setActiveSection(section.id)}\n className={`flex w-full items-center justify-between rounded-md px-3 py-2 text-left transition-colors ${\n activeSection === section.id\n ? 'bg-action-primary-bg/10 font-medium text-action-primary-bg'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n }`}\n >\n <div>\n <div className=\"text-sm font-medium\">{section.label}</div>\n <div className=\"text-xs opacity-70\">{section.description}</div>\n </div>\n <ChevronRight className=\"size-4\" />\n </button>\n </MotionItem>\n ))}\n </MotionList>\n </Card>\n </nav>\n\n <div data-tour=\"settings-content-area\" className=\"flex-1\">\n {settingsLoading && !settingsData ? (\n <div className=\"flex items-center justify-center py-12 text-text-secondary\">\n <RefreshCw className=\"size-5 animate-spin\" />\n <span className=\"ml-2\">{tr('settings.loading', 'Loading settings...')}</span>\n </div>\n ) : (\n <>\n {activeSection === 'notifications' ? (\n <NotificationsSection data={notifications} onChange={setNotifications} />\n ) : null}\n\n {activeSection === 'editor' ? <IdePreferencesSection /> : null}\n\n {activeSection === 'workspace' ? (\n <WorkspaceDefaultsSection\n data={workspaceDefaults}\n onChange={setWorkspaceDefaults}\n agents={agents}\n />\n ) : null}\n\n {activeSection === 'advanced' ? (\n <AdvancedSection\n data={{\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n }}\n onChange={(advanced) =>\n setWorkspaceDefaults((previous) => ({\n ...previous,\n logLevel: advanced.logLevel,\n telemetryEnabled: advanced.telemetryEnabled,\n autoUpdate: advanced.autoUpdate,\n }))\n }\n secrets={secrets}\n secretsLoading={settingsPageQuery.loading && canUpdateConfigs}\n onRefreshSecrets={async () => {\n if (canUpdateConfigs) {\n await settingsPageQuery.refetch();\n }\n }}\n workspaceId={workspaceId || ''}\n />\n ) : null}\n </>\n )}\n </div>\n </div>\n </MotionPage>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsPage.js","names":[],"sources":["../../src/pages/SettingsPage.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ChevronRight, RefreshCw, RotateCcw, Save } from 'lucide-react';\nimport { MotionItem, MotionList, MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Card, PageHeader, LoadingState } from '@/components/shared';\nimport { AdvancedSection } from '@/components/settings/AdvancedSection';\nimport { NotificationsSection } from '@/components/settings/NotificationsSection';\nimport { WorkspaceDefaultsSection } from '@/components/settings/WorkspaceDefaultsSection';\nimport { IdePreferencesSection } from '@/components/settings/IdePreferencesSection';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { useCachedInitialData } from '@/hooks/useCachedInitialData';\nimport {\n useMySettingsQuery,\n useResetSettingsMutation,\n useSettingsPageDataQuery,\n useUpdateNotificationPreferencesMutation,\n useUpdateWorkspaceDefaultsMutation,\n} from '@/generated/wspace-operations';\nimport { useVibeControls } from '@/providers/VibeControlsProvider';\n\ntype SettingsSection = 'notifications' | 'workspace' | 'advanced' | 'editor';\n\nexport function SettingsPage() {\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const { workspaceId } = useVibeControls();\n const { t } = useI18n();\n const canUpdateConfigs = hasPermission(VIBE_PERMISSIONS.CONFIG_UPDATE);\n\n const [activeSection, setActiveSection] = useState<SettingsSection>('notifications');\n const [isSaving, setIsSaving] = useState(false);\n const [feedback, setFeedback] = useState<{ tone: 'success' | 'error'; message: string } | null>(\n null\n );\n\n const { agents: cachedAgents } = useCachedInitialData();\n const agents = useMemo(\n () =>\n cachedAgents.map((agent) => ({ id: agent.id, name: agent.name, isActive: agent.isActive })),\n [cachedAgents]\n );\n\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\n const settingsPageQuery = useSettingsPageDataQuery({\n skip: permissionsLoading || !canUpdateConfigs,\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true,\n });\n\n const mySettingsQuery = useMySettingsQuery({\n skip: permissionsLoading || canUpdateConfigs,\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true,\n });\n\n const settingsData = settingsPageQuery.data?.mySettings ?? mySettingsQuery.data?.mySettings;\n const settingsLoading = settingsPageQuery.loading || mySettingsQuery.loading;\n const secrets = useMemo(\n () =>\n (settingsPageQuery.data?.listSettingsSecrets ?? []).map(\n (secret: NonNullable<(typeof settingsPageQuery.data)['listSettingsSecrets']>[number]) => ({\n id: secret.id,\n key: secret.key,\n value: secret.value ?? null,\n isSecret: secret.isSecret,\n })\n ),\n [settingsPageQuery.data?.listSettingsSecrets]\n );\n\n const refetchSettings = useCallback(async () => {\n if (canUpdateConfigs) {\n await settingsPageQuery.refetch();\n return;\n }\n\n await mySettingsQuery.refetch();\n }, [canUpdateConfigs, mySettingsQuery, settingsPageQuery]);\n\n const [notifications, setNotifications] = useState({\n agentOffline: true,\n sessionError: true,\n vibeStatusChange: false,\n emailDigest: false,\n digestFrequency: 'none' as string | null,\n });\n\n const [workspaceDefaults, setWorkspaceDefaults] = useState({\n defaultAgent: null as string | null,\n defaultSessionType: 'TMUX',\n autoStartSessions: true,\n defaultVibeType: 'PROJECT',\n autoGitSync: false,\n agentHeartbeatInterval: 30,\n agentAutoReconnect: true,\n agentMaxSessions: 10,\n logLevel: 'info',\n telemetryEnabled: true,\n autoUpdate: true,\n defaultEnvironmentVariables: null as string | null,\n });\n\n useEffect(() => {\n if (!settingsData) {\n return;\n }\n\n setNotifications(settingsData.notifications);\n setWorkspaceDefaults(settingsData.workspaceDefaults);\n }, [settingsData]);\n\n const [updateNotificationsMutation] = useUpdateNotificationPreferencesMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n const [updateWorkspaceDefaultsMutation] = useUpdateWorkspaceDefaultsMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n const [resetSettingsMutation] = useResetSettingsMutation({\n refetchQueries: ['MySettings', 'SettingsPageData'],\n });\n\n const handleSave = useCallback(async () => {\n setIsSaving(true);\n setFeedback(null);\n\n try {\n if (activeSection === 'notifications') {\n await updateNotificationsMutation({\n variables: {\n input: {\n agentOffline: notifications.agentOffline,\n sessionError: notifications.sessionError,\n vibeStatusChange: notifications.vibeStatusChange,\n emailDigest: notifications.emailDigest,\n digestFrequency: notifications.digestFrequency,\n },\n },\n });\n }\n\n if (activeSection === 'workspace') {\n await updateWorkspaceDefaultsMutation({\n variables: {\n input: {\n defaultAgent: workspaceDefaults.defaultAgent,\n defaultSessionType: workspaceDefaults.defaultSessionType,\n autoStartSessions: workspaceDefaults.autoStartSessions,\n defaultVibeType: workspaceDefaults.defaultVibeType,\n autoGitSync: workspaceDefaults.autoGitSync,\n agentHeartbeatInterval: workspaceDefaults.agentHeartbeatInterval,\n agentAutoReconnect: workspaceDefaults.agentAutoReconnect,\n agentMaxSessions: workspaceDefaults.agentMaxSessions,\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n defaultEnvironmentVariables: workspaceDefaults.defaultEnvironmentVariables,\n },\n },\n });\n }\n\n if (activeSection === 'advanced') {\n await updateWorkspaceDefaultsMutation({\n variables: {\n input: {\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n },\n },\n });\n }\n\n setFeedback({\n tone: 'success',\n message: tr('settings.saveSuccess', 'Settings saved successfully.'),\n });\n } catch (saveError) {\n console.error('Failed to save settings:', saveError);\n setFeedback({\n tone: 'error',\n message:\n saveError instanceof Error\n ? saveError.message\n : tr('settings.saveFailed', 'Failed to save settings.'),\n });\n } finally {\n setIsSaving(false);\n }\n }, [\n activeSection,\n notifications,\n tr,\n updateNotificationsMutation,\n updateWorkspaceDefaultsMutation,\n workspaceDefaults,\n ]);\n\n const handleReset = useCallback(async () => {\n const categoryMap: Record<\n SettingsSection,\n 'NOTIFICATIONS' | 'WORKSPACE_DEFAULTS' | 'ADVANCED' | 'PREFERENCES'\n > = {\n notifications: 'NOTIFICATIONS',\n workspace: 'WORKSPACE_DEFAULTS',\n editor: 'PREFERENCES',\n advanced: 'ADVANCED',\n };\n\n try {\n setFeedback(null);\n await resetSettingsMutation({ variables: { category: categoryMap[activeSection] as never } });\n await refetchSettings();\n setFeedback({\n tone: 'success',\n message: tr('settings.resetSuccess', 'Settings reset to defaults.'),\n });\n } catch (resetError) {\n console.error('Failed to reset settings:', resetError);\n setFeedback({\n tone: 'error',\n message:\n resetError instanceof Error\n ? resetError.message\n : tr('settings.resetFailed', 'Failed to reset settings.'),\n });\n }\n }, [activeSection, refetchSettings, resetSettingsMutation, tr]);\n\n const sections: Array<{ id: SettingsSection; label: string; description: string }> = [\n {\n id: 'notifications',\n label: tr('settings.notifications', 'Notifications'),\n description: tr('settings.notificationsDesc', 'Alert preferences'),\n },\n {\n id: 'workspace',\n label: tr('settings.workspace', 'Workspace'),\n description: tr('settings.workspaceDesc', 'Agent, session, vibe defaults'),\n },\n {\n id: 'editor',\n label: tr('settings.editor', 'Code Editor'),\n description: tr('settings.editorDesc', 'Default IDE + per-Vibe overrides'),\n },\n {\n id: 'advanced',\n label: tr('settings.advanced', 'Advanced'),\n description: tr('settings.advancedDesc', 'Logging, telemetry, secrets'),\n },\n ];\n\n const visibleSections = canUpdateConfigs\n ? sections\n : sections.filter((section) => section.id === 'notifications');\n\n useEffect(() => {\n if (!canUpdateConfigs && activeSection !== 'notifications') {\n setActiveSection('notifications');\n }\n }, [activeSection, canUpdateConfigs]);\n\n if (permissionsLoading || (settingsLoading && !settingsData)) {\n return (\n <MotionPage className=\"min-h-screen flex items-center justify-center bg-bg-canvas px-6 lg:px-8 py-6\">\n <LoadingState message={tr('settings.loading', 'Loading settings...')} />\n </MotionPage>\n );\n }\n\n return (\n <MotionPage className=\"min-h-screen space-y-6 bg-bg-canvas px-6 lg:px-8 py-6\">\n <PageHeader\n title={tr('nav.settings', 'Settings')}\n description={tr(\n 'settings.description',\n 'Configure VibeControls preferences and workspace defaults'\n )}\n actions={\n canUpdateConfigs ? (\n <div data-tour=\"settings-actions\" className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={handleReset}\n className=\"flex items-center gap-2 rounded-button border border-border-default px-3 py-2 text-sm text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary hover:border-border-strong\"\n title={tr('settings.resetToDefaults', 'Reset to defaults')}\n >\n <RotateCcw className=\"size-4\" />\n {tr('settings.reset', 'Reset')}\n </button>\n\n <PermissionButton permission={VIBE_PERMISSIONS.CONFIG_UPDATE}>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={isSaving || settingsLoading}\n className=\"flex items-center gap-2 rounded-button bg-action-primary-bg px-4 py-2 text-action-primary-text transition-colors hover:bg-action-primary-bg-hover disabled:opacity-50\"\n >\n {isSaving ? (\n <RefreshCw className=\"size-4 animate-spin\" />\n ) : (\n <Save className=\"size-4\" />\n )}\n {tr('common.save', 'Save')}\n </button>\n </PermissionButton>\n </div>\n ) : undefined\n }\n />\n\n {feedback ? (\n <div\n role={feedback.tone === 'error' ? 'alert' : 'status'}\n className={`rounded-card border px-4 py-3 text-sm ${\n feedback.tone === 'error'\n ? 'border-status-error-border bg-status-error-bg-subtle text-status-error-text'\n : 'border-status-success-border bg-status-success-bg-subtle text-status-success-text'\n }`}\n >\n {feedback.message}\n </div>\n ) : null}\n\n <div className=\"flex flex-col gap-6 lg:flex-row\">\n <nav\n data-tour=\"settings-section-nav\"\n className=\"w-full flex-shrink-0 lg:w-64\"\n aria-label={tr('settings.sections', 'Settings sections')}\n >\n <Card className=\"p-2\">\n <MotionList stagger={0.04} className=\"space-y-0.5\">\n {visibleSections.map((section) => {\n const isActive = activeSection === section.id;\n return (\n <MotionItem key={section.id}>\n <button\n type=\"button\"\n onClick={() => setActiveSection(section.id)}\n aria-current={isActive ? 'true' : undefined}\n className={`relative flex w-full items-center justify-between rounded-button px-3 py-2 text-left transition-colors ${\n isActive\n ? 'bg-[var(--color-accent-soft)] font-medium text-text-primary'\n : 'text-text-secondary hover:bg-bg-sunken hover:text-text-primary'\n }`}\n >\n {isActive && (\n <span\n aria-hidden=\"true\"\n className=\"absolute left-0 top-1/2 h-5 w-0.5 -translate-y-1/2 rounded-full bg-action-primary-bg\"\n />\n )}\n <div>\n <div className=\"text-sm font-medium\">{section.label}</div>\n <div className=\"text-xs text-text-muted\">{section.description}</div>\n </div>\n <ChevronRight className=\"size-4\" />\n </button>\n </MotionItem>\n );\n })}\n </MotionList>\n </Card>\n </nav>\n\n <div data-tour=\"settings-content-area\" className=\"flex-1\">\n {settingsLoading && !settingsData ? (\n <div className=\"flex items-center justify-center py-12 text-text-secondary\">\n <RefreshCw className=\"size-5 animate-spin\" />\n <span className=\"ml-2\">{tr('settings.loading', 'Loading settings...')}</span>\n </div>\n ) : (\n <>\n {activeSection === 'notifications' ? (\n <NotificationsSection data={notifications} onChange={setNotifications} />\n ) : null}\n\n {activeSection === 'editor' ? <IdePreferencesSection /> : null}\n\n {activeSection === 'workspace' ? (\n <WorkspaceDefaultsSection\n data={workspaceDefaults}\n onChange={setWorkspaceDefaults}\n agents={agents}\n />\n ) : null}\n\n {activeSection === 'advanced' ? (\n <AdvancedSection\n data={{\n logLevel: workspaceDefaults.logLevel,\n telemetryEnabled: workspaceDefaults.telemetryEnabled,\n autoUpdate: workspaceDefaults.autoUpdate,\n }}\n onChange={(advanced) =>\n setWorkspaceDefaults((previous) => ({\n ...previous,\n logLevel: advanced.logLevel,\n telemetryEnabled: advanced.telemetryEnabled,\n autoUpdate: advanced.autoUpdate,\n }))\n }\n secrets={secrets}\n secretsLoading={settingsPageQuery.loading && canUpdateConfigs}\n onRefreshSecrets={async () => {\n if (canUpdateConfigs) {\n await settingsPageQuery.refetch();\n }\n }}\n workspaceId={workspaceId || ''}\n />\n ) : null}\n </>\n )}\n </div>\n </div>\n </MotionPage>\n );\n}\n"],"mappings":"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"}
@@ -35,7 +35,7 @@ function pe({ onSubmit: e, isLoading: t, error: n }) {
35
35
  })]
36
36
  })] }),
37
37
  n && /* @__PURE__ */ b("div", {
38
- className: "flex items-center gap-2 p-3 bg-status-error-bg/10 border border-status-error-bg/30 rounded-lg",
38
+ className: "flex items-center gap-2 p-3 bg-status-error-bg-subtle border border-status-error-border rounded-lg",
39
39
  children: [/* @__PURE__ */ y(u, { className: "size-4 text-status-error-text" }), /* @__PURE__ */ y("span", {
40
40
  className: "text-sm text-status-error-text",
41
41
  children: n
@@ -147,7 +147,7 @@ function x() {
147
147
  }
148
148
  }, [T, V]), Ce = K.find((e) => e.userId === F), Q = R?.permission || a.View, $ = se(() => R?.ttydUrl || null, [R?.ttydUrl]);
149
149
  return ve ? /* @__PURE__ */ y("div", {
150
- className: "min-h-screen bg-bg-surface flex items-center justify-center",
150
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center",
151
151
  children: /* @__PURE__ */ b("div", {
152
152
  className: "text-center",
153
153
  children: [/* @__PURE__ */ y(m, { className: "size-8 text-action-primary-bg animate-spin mx-auto mb-4" }), /* @__PURE__ */ y("p", {
@@ -156,12 +156,12 @@ function x() {
156
156
  })]
157
157
  })
158
158
  }) : I || !R ? /* @__PURE__ */ y("div", {
159
- className: "min-h-screen bg-bg-surface flex items-center justify-center p-4",
159
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center p-4",
160
160
  children: /* @__PURE__ */ b("div", {
161
161
  className: "text-center max-w-md",
162
162
  children: [
163
163
  /* @__PURE__ */ y("div", {
164
- className: "size-16 bg-status-error-bg/10 rounded-full flex items-center justify-center mx-auto mb-4",
164
+ className: "size-16 bg-status-error-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4",
165
165
  children: /* @__PURE__ */ y(u, { className: "size-8 text-status-error-text" })
166
166
  }),
167
167
  /* @__PURE__ */ y("h2", {
@@ -175,23 +175,23 @@ function x() {
175
175
  /* @__PURE__ */ b("button", {
176
176
  type: "button",
177
177
  onClick: () => window.history.back(),
178
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-md hover:bg-bg-elevated transition-colors",
178
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors",
179
179
  children: [/* @__PURE__ */ y(d, { className: "size-4" }), x("sharedSession.goBack", "Go Back")]
180
180
  })
181
181
  ]
182
182
  })
183
183
  }) : R.isValid ? R.requiresPassword && !C ? /* @__PURE__ */ y("div", {
184
- className: "min-h-screen bg-bg-surface flex items-center justify-center p-4",
184
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center p-4",
185
185
  children: /* @__PURE__ */ y("div", {
186
186
  className: "w-full max-w-md",
187
187
  children: /* @__PURE__ */ b("div", {
188
- className: "bg-bg-surface border border-border-default rounded-lg p-6",
188
+ className: "bg-bg-surface border border-border-subtle rounded-card p-6 shadow-elevation-1",
189
189
  children: [
190
190
  /* @__PURE__ */ b("div", {
191
191
  className: "text-center mb-6",
192
192
  children: [
193
193
  /* @__PURE__ */ y("div", {
194
- className: "size-12 bg-action-primary-bg/10 rounded-full flex items-center justify-center mx-auto mb-4",
194
+ className: "size-12 bg-[var(--color-accent-soft)] rounded-full flex items-center justify-center mx-auto mb-4",
195
195
  children: /* @__PURE__ */ y(_, { className: "size-6 text-action-primary-bg" })
196
196
  }),
197
197
  /* @__PURE__ */ y("h2", {
@@ -211,7 +211,7 @@ function x() {
211
211
  /* @__PURE__ */ y("div", {
212
212
  className: "flex justify-center mb-6",
213
213
  children: /* @__PURE__ */ y("div", {
214
- className: `inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm ${R.permission === a.View ? "bg-bg-sunken text-text-secondary" : "bg-action-primary-bg/10 text-action-primary-bg"}`,
214
+ className: `inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm ${R.permission === a.View ? "bg-bg-sunken text-text-secondary" : "bg-[var(--color-accent-soft)] text-action-primary-bg"}`,
215
215
  children: R.permission === a.View ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(f, { className: "size-4" }), x("sharedSession.viewOnly", "View Only")] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(p, { className: "size-4" }), x("sharedSession.canControl", "Can Control")] })
216
216
  })
217
217
  }),
@@ -234,7 +234,7 @@ function x() {
234
234
  })
235
235
  })
236
236
  }) : j ? /* @__PURE__ */ y("div", {
237
- className: "min-h-screen bg-bg-surface flex items-center justify-center p-4",
237
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center p-4",
238
238
  children: /* @__PURE__ */ b("div", {
239
239
  className: "text-center max-w-md",
240
240
  children: [
@@ -255,7 +255,7 @@ function x() {
255
255
  children: [/* @__PURE__ */ b("button", {
256
256
  type: "button",
257
257
  onClick: () => window.history.back(),
258
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-md hover:bg-bg-elevated transition-colors",
258
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors",
259
259
  children: [/* @__PURE__ */ y(d, { className: "size-4" }), x("sharedSession.goBack", "Go Back")]
260
260
  }), /* @__PURE__ */ b("button", {
261
261
  type: "button",
@@ -270,12 +270,12 @@ function x() {
270
270
  ]
271
271
  })
272
272
  }) : !C && !R.requiresPassword ? k ? /* @__PURE__ */ y("div", {
273
- className: "min-h-screen bg-bg-surface flex items-center justify-center p-4",
273
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center p-4",
274
274
  children: /* @__PURE__ */ b("div", {
275
275
  className: "text-center max-w-md",
276
276
  children: [
277
277
  /* @__PURE__ */ y("div", {
278
- className: "size-16 bg-status-error-bg/10 rounded-full flex items-center justify-center mx-auto mb-4",
278
+ className: "size-16 bg-status-error-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4",
279
279
  children: /* @__PURE__ */ y(u, { className: "size-8 text-status-error-text" })
280
280
  }),
281
281
  /* @__PURE__ */ y("h2", {
@@ -291,7 +291,7 @@ function x() {
291
291
  children: [/* @__PURE__ */ b("button", {
292
292
  type: "button",
293
293
  onClick: () => window.history.back(),
294
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-md hover:bg-bg-elevated transition-colors",
294
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors",
295
295
  children: [/* @__PURE__ */ y(d, { className: "size-4" }), x("sharedSession.goBack", "Go Back")]
296
296
  }), /* @__PURE__ */ b("button", {
297
297
  type: "button",
@@ -306,7 +306,7 @@ function x() {
306
306
  ]
307
307
  })
308
308
  }) : /* @__PURE__ */ y("div", {
309
- className: "min-h-screen bg-bg-surface flex items-center justify-center",
309
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center",
310
310
  children: /* @__PURE__ */ b("div", {
311
311
  className: "text-center",
312
312
  children: [/* @__PURE__ */ y(m, { className: "size-8 text-action-primary-bg animate-spin mx-auto mb-4" }), /* @__PURE__ */ y("p", {
@@ -315,7 +315,7 @@ function x() {
315
315
  })]
316
316
  })
317
317
  }) : /* @__PURE__ */ b(fe, {
318
- className: "min-h-screen bg-bg-surface flex flex-col",
318
+ className: "min-h-screen bg-bg-canvas flex flex-col",
319
319
  children: [/* @__PURE__ */ y("header", {
320
320
  className: "bg-bg-surface border-b border-border-default px-4 py-3",
321
321
  children: /* @__PURE__ */ b("div", {
@@ -332,7 +332,7 @@ function x() {
332
332
  }), /* @__PURE__ */ b("div", {
333
333
  className: "flex items-center gap-3",
334
334
  children: [/* @__PURE__ */ y("div", {
335
- className: "p-2 bg-action-primary-bg/10 rounded-lg",
335
+ className: "p-2 bg-[var(--color-accent-soft)] rounded-lg",
336
336
  children: /* @__PURE__ */ y(_, { className: "size-5 text-action-primary-bg" })
337
337
  }), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("h1", {
338
338
  className: "font-semibold text-text-primary",
@@ -349,7 +349,7 @@ function x() {
349
349
  }), /* @__PURE__ */ b("div", {
350
350
  className: "flex items-center gap-3",
351
351
  children: [/* @__PURE__ */ y("div", {
352
- className: `inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium ${Q === a.View ? "bg-bg-sunken text-text-secondary" : "bg-action-primary-bg/10 text-action-primary-bg"}`,
352
+ className: `inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium ${Q === a.View ? "bg-bg-sunken text-text-secondary" : "bg-[var(--color-accent-soft)] text-action-primary-bg"}`,
353
353
  children: Q === a.View ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(f, { className: "size-3.5" }), x("sharedSession.viewOnly", "View Only")] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(p, { className: "size-3.5" }), x("sharedSession.interactive", "Interactive")] })
354
354
  }), /* @__PURE__ */ b("div", {
355
355
  className: "flex items-center gap-1.5 px-2.5 py-1 bg-bg-sunken rounded-full text-xs text-text-secondary",
@@ -446,12 +446,12 @@ function x() {
446
446
  })]
447
447
  })]
448
448
  }) : /* @__PURE__ */ y("div", {
449
- className: "min-h-screen bg-bg-surface flex items-center justify-center p-4",
449
+ className: "min-h-screen bg-bg-canvas flex items-center justify-center p-4",
450
450
  children: /* @__PURE__ */ b("div", {
451
451
  className: "text-center max-w-md",
452
452
  children: [
453
453
  /* @__PURE__ */ y("div", {
454
- className: "size-16 bg-status-warning-bg/10 rounded-full flex items-center justify-center mx-auto mb-4",
454
+ className: "size-16 bg-status-warning-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4",
455
455
  children: /* @__PURE__ */ y(u, { className: "size-8 text-status-warning-text" })
456
456
  }),
457
457
  /* @__PURE__ */ y("h2", {
@@ -465,7 +465,7 @@ function x() {
465
465
  /* @__PURE__ */ b("button", {
466
466
  type: "button",
467
467
  onClick: () => window.history.back(),
468
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-md hover:bg-bg-elevated transition-colors",
468
+ className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors",
469
469
  children: [/* @__PURE__ */ y(d, { className: "size-4" }), x("sharedSession.goBack", "Go Back")]
470
470
  })
471
471
  ]