@agent-native/core 0.117.1 → 0.118.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (815) hide show
  1. package/corpus/README.md +3 -3
  2. package/corpus/core/CHANGELOG.md +40 -0
  3. package/corpus/core/docs/content/custom-design-system.mdx +445 -0
  4. package/corpus/core/docs/content/toolkit-ui.mdx +16 -0
  5. package/corpus/core/package.json +2 -1
  6. package/corpus/core/src/a2a/types.ts +1 -0
  7. package/corpus/core/src/agent/types.ts +1 -1
  8. package/corpus/core/src/cli/context-xray-local.ts +1 -1
  9. package/corpus/core/src/client/AgentPanel.tsx +90 -107
  10. package/corpus/core/src/client/AssistantChat.tsx +30 -13
  11. package/corpus/core/src/client/CommandMenu.tsx +68 -178
  12. package/corpus/core/src/client/agent-chat-adapter.ts +3 -1
  13. package/corpus/core/src/client/app-providers.tsx +1 -1
  14. package/corpus/core/src/client/chat/message-components.tsx +116 -10
  15. package/corpus/core/src/client/chat/tool-call-display.tsx +26 -5
  16. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +14 -40
  17. package/corpus/core/src/client/components/ui/message-scroller.tsx +15 -1
  18. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +4 -4
  19. package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
  20. package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +1 -1
  21. package/corpus/core/src/client/extensions/delete-extension.ts +2 -2
  22. package/corpus/core/src/client/i18n.tsx +22 -0
  23. package/corpus/core/src/client/index.ts +17 -0
  24. package/corpus/core/src/client/org/OrgSwitcher.tsx +25 -1
  25. package/corpus/core/src/client/org/TeamPage.tsx +257 -153
  26. package/corpus/core/src/client/progress/RunsTray.tsx +89 -88
  27. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +5 -2
  28. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -13
  29. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +13 -0
  30. package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -18
  31. package/corpus/core/src/client/settings/SecretsSection.tsx +97 -52
  32. package/corpus/core/src/client/settings/SettingsPanel.tsx +302 -254
  33. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +23 -2
  34. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
  35. package/corpus/core/src/client/settings/index.ts +7 -0
  36. package/corpus/core/src/client/settings/useSettingsPanelController.ts +155 -0
  37. package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
  38. package/corpus/core/src/client/setup-connections/index.ts +10 -0
  39. package/corpus/core/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
  40. package/corpus/core/src/client/sharing/ShareButton.tsx +71 -592
  41. package/corpus/core/src/client/sharing/ShareDialog.tsx +299 -633
  42. package/corpus/core/src/client/sharing/index.ts +42 -0
  43. package/corpus/core/src/client/sharing/share-controller-helpers.ts +318 -0
  44. package/corpus/core/src/client/sharing/useShareButtonController.ts +600 -0
  45. package/corpus/core/src/client/sharing/useShareDialogController.ts +559 -0
  46. package/corpus/core/src/client/sse-event-processor.ts +23 -0
  47. package/corpus/core/src/client/tool-display.ts +71 -0
  48. package/corpus/core/src/client/use-agent-engine-configured.ts +12 -19
  49. package/corpus/core/src/client/use-chat-threads.ts +33 -12
  50. package/corpus/core/src/db/client.ts +13 -10
  51. package/corpus/core/src/extensions/actions.ts +13 -5
  52. package/corpus/core/src/extensions/local.ts +1 -0
  53. package/corpus/core/src/extensions/routes.ts +10 -5
  54. package/corpus/core/src/extensions/schema.ts +5 -0
  55. package/corpus/core/src/extensions/slots/store.ts +14 -4
  56. package/corpus/core/src/extensions/store.ts +55 -19
  57. package/corpus/core/src/extensions/theme.ts +1 -1
  58. package/corpus/core/src/file-upload/registry.ts +9 -0
  59. package/corpus/core/src/index.browser.ts +5 -0
  60. package/corpus/core/src/index.ts +1 -0
  61. package/corpus/core/src/localization/default-messages.ts +28 -6
  62. package/corpus/core/src/mcp-client/oauth-routes.ts +16 -2
  63. package/corpus/core/src/scripts/call-agent.ts +5 -1
  64. package/corpus/core/src/server/action-discovery.ts +8 -0
  65. package/corpus/core/src/server/better-auth-instance.ts +7 -2
  66. package/corpus/core/src/server/email-template.ts +18 -0
  67. package/corpus/core/src/server/email-templates.ts +3 -0
  68. package/corpus/core/src/server/email.ts +40 -4
  69. package/corpus/core/src/server/realtime-voice.ts +1 -1
  70. package/corpus/core/src/sharing/actions/share-resource.ts +1 -0
  71. package/corpus/core/src/styles/agent-native.css +0 -24
  72. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  73. package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  74. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  75. package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  76. package/corpus/core/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  77. package/corpus/core/src/templates/default/app/design-system.ts +3 -0
  78. package/corpus/core/src/templates/default/app/global.css +1 -1
  79. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -6
  80. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -6
  81. package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -6
  82. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -6
  83. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -6
  84. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -6
  85. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -6
  86. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -6
  87. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -6
  88. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -7
  89. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -7
  90. package/corpus/core/src/templates/default/app/root.tsx +5 -2
  91. package/corpus/core/src/templates/default/package.json +1 -0
  92. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  93. package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  94. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  95. package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  96. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  97. package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  98. package/corpus/core/src/user-profile/actions/get-user-profile.ts +16 -0
  99. package/corpus/core/src/user-profile/actions/update-user-profile.ts +24 -0
  100. package/corpus/core/src/user-profile/index.ts +5 -0
  101. package/corpus/core/src/user-profile/shared.ts +14 -0
  102. package/corpus/core/src/user-profile/store.ts +50 -0
  103. package/corpus/core/src/vite/client.ts +39 -0
  104. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  105. package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  106. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +22 -2
  107. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +28 -4
  108. package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +6 -1
  109. package/corpus/templates/analytics/app/design-system.ts +3 -0
  110. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  111. package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  112. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +22 -2
  113. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +28 -4
  114. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -2
  115. package/corpus/templates/assets/app/components/ui/alert.tsx +1 -0
  116. package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +6 -1
  117. package/corpus/templates/assets/app/design-system.ts +3 -0
  118. package/corpus/templates/assets/app/global.css +1 -1
  119. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +26 -30
  120. package/corpus/templates/assets/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  121. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  122. package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  123. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +22 -2
  124. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +28 -4
  125. package/corpus/templates/brain/app/components/ui/dialog.tsx +1 -0
  126. package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +6 -1
  127. package/corpus/templates/brain/app/design-system.ts +3 -0
  128. package/corpus/templates/brain/app/global.css +2 -2
  129. package/corpus/templates/brain/app/lib/brain.ts +2 -2
  130. package/corpus/templates/brain/app/root.tsx +2 -2
  131. package/corpus/templates/brain/app/routes/sources.tsx +8 -8
  132. package/corpus/templates/brain/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  133. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  134. package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  135. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +22 -2
  136. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +28 -4
  137. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +6 -2
  138. package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +6 -1
  139. package/corpus/templates/calendar/app/design-system.ts +3 -0
  140. package/corpus/templates/calendar/app/global.css +1 -1
  141. package/corpus/templates/calendar/app/root.tsx +2 -2
  142. package/corpus/templates/calendar/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  143. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  144. package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  145. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  146. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  147. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +2 -2
  148. package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  149. package/corpus/templates/chat/app/design-system.ts +3 -0
  150. package/corpus/templates/chat/app/global.css +1 -1
  151. package/corpus/templates/chat/app/root.tsx +2 -2
  152. package/corpus/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  153. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  154. package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  155. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +22 -2
  156. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +28 -4
  157. package/corpus/templates/clips/actions/export-to-brain.ts +1 -1
  158. package/corpus/templates/clips/actions/invite-member.ts +1 -0
  159. package/corpus/templates/clips/app/components/library/library-layout.tsx +2 -2
  160. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +20 -11
  161. package/corpus/templates/clips/app/components/ui/toolkit-provider.tsx +6 -1
  162. package/corpus/templates/clips/app/design-system.ts +3 -0
  163. package/corpus/templates/clips/app/global.css +1 -1
  164. package/corpus/templates/clips/app/root.tsx +7 -2
  165. package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
  166. package/corpus/templates/clips/app/routes/record.tsx +2 -88
  167. package/corpus/templates/clips/changelog/2026-07-22-builder-connected-recordings-start-resumable-upload-sessions.md +6 -0
  168. package/corpus/templates/clips/changelog/2026-07-22-clip-thumbnails-now-come-from-the-recording-instead-of-the-p.md +6 -0
  169. package/corpus/templates/clips/changelog/2026-07-22-clips-emails-now-render-the-agent-native-logo-in-gmail-and-o.md +6 -0
  170. package/corpus/templates/clips/changelog/2026-07-22-dismissed-zoom-and-teams-meeting-note-prompts-now-stay-dismi.md +6 -0
  171. package/corpus/templates/clips/changelog/2026-07-22-fixed-windows-recordings-aborting-during-the-countdown.md +6 -0
  172. package/corpus/templates/clips/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  173. package/corpus/templates/clips/changelog/2026-07-22-permissions-and-rewind-controls-are-now-grouped-with-clearer.md +6 -0
  174. package/corpus/templates/clips/changelog/2026-07-22-quieter-permissions-and-rewind-controls.md +6 -0
  175. package/corpus/templates/clips/changelog/2026-07-22-the-desktop-popover-opens-centered-under-the-menu-bar-icon-o.md +6 -0
  176. package/corpus/templates/clips/desktop/src/app.tsx +100 -62
  177. package/corpus/templates/clips/desktop/src/lib/meeting-notification-dismissal.ts +31 -0
  178. package/corpus/templates/clips/desktop/src/lib/recorder.ts +4 -167
  179. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +10 -1
  180. package/corpus/templates/clips/desktop/src/styles.css +111 -36
  181. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +67 -4
  182. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +11 -2
  183. package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +51 -0
  184. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +5 -1
  185. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +0 -189
  186. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +62 -0
  187. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +37 -2
  188. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -0
  189. package/corpus/templates/clips/server/plugins/db.ts +6 -2
  190. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  191. package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  192. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +22 -2
  193. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +28 -4
  194. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +41 -59
  195. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  196. package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +2 -1
  197. package/corpus/templates/content/app/components/editor/database/ListView.tsx +2 -1
  198. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +9 -9
  199. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +7 -7
  200. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +11 -11
  201. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +3 -3
  202. package/corpus/templates/content/app/components/ui/checkbox.tsx +1 -0
  203. package/corpus/templates/content/app/components/ui/collapsible.tsx +1 -0
  204. package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +6 -1
  205. package/corpus/templates/content/app/design-system.ts +3 -0
  206. package/corpus/templates/content/app/global.css +30 -4
  207. package/corpus/templates/content/app/root.tsx +2 -2
  208. package/corpus/templates/content/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  209. package/corpus/templates/content/changelog/2026-07-22-page-actions-are-grouped-into-the-three-dots-menu-for-a-clea.md +6 -0
  210. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  211. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  212. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +10 -10
  213. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +1 -6
  214. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +3 -2
  215. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +13 -12
  216. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +17 -17
  217. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +8 -8
  218. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +3 -8
  219. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +2 -1
  220. package/corpus/templates/crm/app/components/crm/Surface.tsx +3 -2
  221. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +2 -2
  222. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +7 -7
  223. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -1
  224. package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +1 -0
  225. package/corpus/templates/crm/app/components/ui/badge.tsx +1 -0
  226. package/corpus/templates/crm/app/components/ui/button.tsx +1 -0
  227. package/corpus/templates/crm/app/components/ui/card.tsx +1 -0
  228. package/corpus/templates/crm/app/components/ui/dialog.tsx +1 -0
  229. package/corpus/templates/crm/app/components/ui/input.tsx +1 -0
  230. package/corpus/templates/crm/app/components/ui/label.tsx +1 -0
  231. package/corpus/templates/crm/app/components/ui/select.tsx +1 -0
  232. package/corpus/templates/crm/app/components/ui/sheet.tsx +1 -0
  233. package/corpus/templates/crm/app/components/ui/skeleton.tsx +1 -0
  234. package/corpus/templates/crm/app/components/ui/switch.tsx +1 -0
  235. package/corpus/templates/crm/app/components/ui/table.tsx +1 -0
  236. package/corpus/templates/crm/app/components/ui/tabs.tsx +1 -0
  237. package/corpus/templates/crm/app/components/ui/textarea.tsx +1 -0
  238. package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +17 -0
  239. package/corpus/templates/crm/app/design-system.ts +3 -0
  240. package/corpus/templates/crm/app/global.css +1 -1
  241. package/corpus/templates/crm/app/root.tsx +9 -6
  242. package/corpus/templates/crm/app/routes/dashboard.tsx +1 -1
  243. package/corpus/templates/crm/app/routes/proposals.tsx +13 -13
  244. package/corpus/templates/crm/app/routes/setup.tsx +9 -9
  245. package/corpus/templates/crm/app/routes/tasks.tsx +14 -14
  246. package/corpus/templates/crm/app/routes/views.tsx +16 -16
  247. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  248. package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  249. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +22 -2
  250. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +28 -4
  251. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +19 -1
  252. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +12 -1
  253. package/corpus/templates/design/app/components/design/EditPanel.tsx +177 -52
  254. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +179 -59
  255. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +74 -27
  256. package/corpus/templates/design/app/components/design/multi-screen/types.ts +2 -0
  257. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -8
  258. package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -2
  259. package/corpus/templates/design/app/components/ui/command.tsx +1 -0
  260. package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +6 -1
  261. package/corpus/templates/design/app/design-system.ts +3 -0
  262. package/corpus/templates/design/app/global.css +1 -1
  263. package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -5
  264. package/corpus/templates/design/app/root.tsx +2 -2
  265. package/corpus/templates/design/changelog/2026-07-22-design-owners-can-keep-editing-their-designs-after-switching.md +6 -0
  266. package/corpus/templates/design/changelog/2026-07-22-inspector-tabs-keep-their-text-labels-at-narrow-widths.md +6 -0
  267. package/corpus/templates/design/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  268. package/corpus/templates/design/changelog/2026-07-22-narrow-breakpoint-previews-keep-their-device-labels-readable.md +6 -0
  269. package/corpus/templates/design/changelog/2026-07-22-removed-the-draft-status-chip-from-the-design-editor.md +6 -0
  270. package/corpus/templates/design/changelog/2026-07-22-responsive-breakpoint-controls-stay-within-narrow-sidebars.md +6 -0
  271. package/corpus/templates/design/changelog/2026-07-22-responsive-peers-now-use-a-softer-selection-highlight-withou.md +6 -0
  272. package/corpus/templates/design/changelog/2026-07-22-rotate-from-context-menu.md +6 -0
  273. package/corpus/templates/design/changelog/2026-07-22-the-selection-outline-now-stays-attached-while-moving-screen.md +6 -0
  274. package/corpus/templates/design/changelog/2026-07-22-view-only-designs-now-support-figma-style-layer-inspection-w.md +6 -0
  275. package/corpus/templates/design/server/db/index.ts +4 -0
  276. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  277. package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  278. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +22 -2
  279. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +28 -4
  280. package/corpus/templates/dispatch/app/components/ui/button.tsx +1 -0
  281. package/corpus/templates/dispatch/app/components/ui/toolkit-provider.tsx +17 -0
  282. package/corpus/templates/dispatch/app/design-system.ts +3 -0
  283. package/corpus/templates/dispatch/app/dispatch-extensions.tsx +2 -2
  284. package/corpus/templates/dispatch/app/global.css +1 -1
  285. package/corpus/templates/dispatch/app/root.tsx +12 -9
  286. package/corpus/templates/dispatch/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  287. package/corpus/templates/dispatch/package.json +1 -0
  288. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  289. package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  290. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +22 -2
  291. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +28 -4
  292. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  293. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
  294. package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +6 -1
  295. package/corpus/templates/forms/app/design-system.ts +3 -0
  296. package/corpus/templates/forms/app/global.css +1 -1
  297. package/corpus/templates/forms/app/hooks/use-forms.ts +55 -2
  298. package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
  299. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +3 -3
  300. package/corpus/templates/forms/app/pages/FormsListPage.tsx +23 -6
  301. package/corpus/templates/forms/app/root.tsx +2 -2
  302. package/corpus/templates/forms/changelog/2026-07-22-forms-now-archive-with-optimistic-feedback.md +6 -0
  303. package/corpus/templates/forms/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  304. package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -1
  305. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  306. package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  307. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +22 -2
  308. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +28 -4
  309. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
  310. package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +6 -1
  311. package/corpus/templates/macros/app/design-system.ts +3 -0
  312. package/corpus/templates/macros/app/root.tsx +2 -2
  313. package/corpus/templates/macros/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  314. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  315. package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  316. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +22 -2
  317. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +28 -4
  318. package/corpus/templates/mail/app/components/email/EmailThread.tsx +134 -93
  319. package/corpus/templates/mail/app/components/email/email-iframe-document.ts +8 -2
  320. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +3 -3
  321. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +2 -2
  322. package/corpus/templates/mail/app/components/ui/textarea.tsx +1 -21
  323. package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +6 -1
  324. package/corpus/templates/mail/app/design-system.ts +3 -0
  325. package/corpus/templates/mail/app/global.css +1 -1
  326. package/corpus/templates/mail/changelog/2026-07-22-email-messages-no-longer-flash-with-an-unstyled-page-while-l.md +6 -0
  327. package/corpus/templates/mail/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  328. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  329. package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  330. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +22 -2
  331. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +28 -4
  332. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -2
  333. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  334. package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +6 -1
  335. package/corpus/templates/plan/app/design-system.ts +3 -0
  336. package/corpus/templates/plan/app/global.css +1 -1
  337. package/corpus/templates/plan/app/root.tsx +2 -2
  338. package/corpus/templates/plan/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  339. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  340. package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  341. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +22 -2
  342. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +28 -4
  343. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -2
  344. package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +6 -1
  345. package/corpus/templates/slides/app/design-system.ts +3 -0
  346. package/corpus/templates/slides/app/root.tsx +2 -2
  347. package/corpus/templates/slides/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  348. package/corpus/templates/slides/changelog/2026-07-22-slides-no-longer-fail-intermittently-on-fresh-server-instances.md +6 -0
  349. package/corpus/templates/slides/changelog/2026-07-22-uploaded-screenshots-can-now-be-analyzed-and-recreated-as-ed.md +6 -0
  350. package/corpus/templates/slides/server/lib/chat-attachments.ts +7 -3
  351. package/corpus/templates/slides/server/plugins/db.ts +44 -17
  352. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  353. package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  354. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +22 -2
  355. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +28 -4
  356. package/corpus/templates/tasks/app/components/ui/toolkit-provider.tsx +17 -0
  357. package/corpus/templates/tasks/app/design-system.ts +3 -0
  358. package/corpus/templates/tasks/app/global.css +1 -1
  359. package/corpus/templates/tasks/app/root.tsx +5 -2
  360. package/corpus/toolkit/CHANGELOG.md +14 -0
  361. package/corpus/toolkit/agent-native.eject.json +71 -0
  362. package/corpus/toolkit/package.json +31 -1
  363. package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +100 -39
  364. package/corpus/toolkit/src/chat-history/index.ts +9 -0
  365. package/corpus/toolkit/src/chat-history/useChatHistoryRailController.ts +76 -0
  366. package/corpus/toolkit/src/chat-history.css +2 -0
  367. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +11 -8
  368. package/corpus/toolkit/src/composer/PromptComposer.tsx +27 -6
  369. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +107 -22
  370. package/corpus/toolkit/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
  371. package/corpus/toolkit/src/conformance/index.ts +3 -0
  372. package/corpus/toolkit/src/conformance/runner.tsx +710 -0
  373. package/corpus/toolkit/src/conformance/types.ts +45 -0
  374. package/corpus/toolkit/src/conformance/version.ts +22 -0
  375. package/corpus/toolkit/src/design-system/components.tsx +146 -0
  376. package/corpus/toolkit/src/design-system/context.tsx +31 -0
  377. package/corpus/toolkit/src/design-system/default-adapter.tsx +915 -0
  378. package/corpus/toolkit/src/design-system/definition.ts +14 -0
  379. package/corpus/toolkit/src/design-system/error-boundary.tsx +37 -0
  380. package/corpus/toolkit/src/design-system/index.ts +7 -0
  381. package/corpus/toolkit/src/design-system/theme.ts +145 -0
  382. package/corpus/toolkit/src/design-system/types.ts +363 -0
  383. package/corpus/toolkit/src/provider.tsx +98 -5
  384. package/corpus/toolkit/src/ui/button.tsx +95 -6
  385. package/corpus/toolkit/src/ui/dialog.tsx +48 -23
  386. package/corpus/toolkit/src/ui/popover.tsx +16 -2
  387. package/corpus/toolkit/src/ui/select.tsx +7 -3
  388. package/corpus/toolkit/src/ui/sidebar.tsx +47 -48
  389. package/corpus/toolkit/src/ui/tooltip.tsx +7 -3
  390. package/dist/a2a/types.d.ts +1 -1
  391. package/dist/a2a/types.d.ts.map +1 -1
  392. package/dist/a2a/types.js.map +1 -1
  393. package/dist/agent/types.d.ts +1 -1
  394. package/dist/agent/types.d.ts.map +1 -1
  395. package/dist/agent/types.js.map +1 -1
  396. package/dist/cli/context-xray-local.js +1 -1
  397. package/dist/cli/context-xray-local.js.map +1 -1
  398. package/dist/client/AgentPanel.d.ts.map +1 -1
  399. package/dist/client/AgentPanel.js +14 -14
  400. package/dist/client/AgentPanel.js.map +1 -1
  401. package/dist/client/AssistantChat.d.ts.map +1 -1
  402. package/dist/client/AssistantChat.js +26 -15
  403. package/dist/client/AssistantChat.js.map +1 -1
  404. package/dist/client/CommandMenu.d.ts.map +1 -1
  405. package/dist/client/CommandMenu.js +18 -106
  406. package/dist/client/CommandMenu.js.map +1 -1
  407. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  408. package/dist/client/agent-chat-adapter.js +2 -1
  409. package/dist/client/agent-chat-adapter.js.map +1 -1
  410. package/dist/client/app-providers.d.ts.map +1 -1
  411. package/dist/client/app-providers.js +1 -1
  412. package/dist/client/app-providers.js.map +1 -1
  413. package/dist/client/chat/message-components.d.ts +9 -1
  414. package/dist/client/chat/message-components.d.ts.map +1 -1
  415. package/dist/client/chat/message-components.js +62 -7
  416. package/dist/client/chat/message-components.js.map +1 -1
  417. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  418. package/dist/client/chat/tool-call-display.js +20 -5
  419. package/dist/client/chat/tool-call-display.js.map +1 -1
  420. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
  421. package/dist/client/chat/widgets/InlineExtensionWidget.js +9 -12
  422. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
  423. package/dist/client/components/ui/message-scroller.d.ts +1 -1
  424. package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
  425. package/dist/client/components/ui/message-scroller.js +4 -3
  426. package/dist/client/components/ui/message-scroller.js.map +1 -1
  427. package/dist/client/extensions/ExtensionViewer.js +2 -2
  428. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  429. package/dist/client/extensions/ExtensionsSidebarSection.js +11 -11
  430. package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
  431. package/dist/client/extensions/agent-native-extension-runtime.js +1 -1
  432. package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -1
  433. package/dist/client/extensions/delete-extension.d.ts +1 -1
  434. package/dist/client/extensions/delete-extension.d.ts.map +1 -1
  435. package/dist/client/extensions/delete-extension.js +1 -1
  436. package/dist/client/extensions/delete-extension.js.map +1 -1
  437. package/dist/client/i18n.d.ts.map +1 -1
  438. package/dist/client/i18n.js +9 -0
  439. package/dist/client/i18n.js.map +1 -1
  440. package/dist/client/index.d.ts +2 -2
  441. package/dist/client/index.d.ts.map +1 -1
  442. package/dist/client/index.js +2 -2
  443. package/dist/client/index.js.map +1 -1
  444. package/dist/client/org/OrgSwitcher.d.ts +3 -1
  445. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  446. package/dist/client/org/OrgSwitcher.js +12 -4
  447. package/dist/client/org/OrgSwitcher.js.map +1 -1
  448. package/dist/client/org/TeamPage.d.ts.map +1 -1
  449. package/dist/client/org/TeamPage.js +41 -33
  450. package/dist/client/org/TeamPage.js.map +1 -1
  451. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  452. package/dist/client/progress/RunsTray.js +9 -10
  453. package/dist/client/progress/RunsTray.js.map +1 -1
  454. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  455. package/dist/client/resources/McpConnectionSuggestion.js +5 -4
  456. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  457. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  458. package/dist/client/resources/McpIntegrationDialog.js +10 -8
  459. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  460. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  461. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  462. package/dist/client/resources/mcp-integration-catalog.js +13 -0
  463. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  464. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  465. package/dist/client/settings/DemoModeSection.js +2 -5
  466. package/dist/client/settings/DemoModeSection.js.map +1 -1
  467. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  468. package/dist/client/settings/SecretsSection.js +18 -6
  469. package/dist/client/settings/SecretsSection.js.map +1 -1
  470. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  471. package/dist/client/settings/SettingsPanel.js +87 -119
  472. package/dist/client/settings/SettingsPanel.js.map +1 -1
  473. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  474. package/dist/client/settings/SettingsTabsPage.js +16 -1
  475. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  476. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  477. package/dist/client/settings/VoiceTranscriptionSection.js +2 -5
  478. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  479. package/dist/client/settings/index.d.ts +1 -0
  480. package/dist/client/settings/index.d.ts.map +1 -1
  481. package/dist/client/settings/index.js +1 -0
  482. package/dist/client/settings/index.js.map +1 -1
  483. package/dist/client/settings/useSettingsPanelController.d.ts +22 -0
  484. package/dist/client/settings/useSettingsPanelController.d.ts.map +1 -0
  485. package/dist/client/settings/useSettingsPanelController.js +103 -0
  486. package/dist/client/settings/useSettingsPanelController.js.map +1 -0
  487. package/dist/client/setup-connections/BuilderConnectCard.d.ts +14 -6
  488. package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -1
  489. package/dist/client/setup-connections/BuilderConnectCard.js +24 -16
  490. package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -1
  491. package/dist/client/setup-connections/index.d.ts +2 -1
  492. package/dist/client/setup-connections/index.d.ts.map +1 -1
  493. package/dist/client/setup-connections/index.js +2 -1
  494. package/dist/client/setup-connections/index.js.map +1 -1
  495. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +34 -0
  496. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
  497. package/dist/client/setup-connections/useBuilderConnectCardController.js +39 -0
  498. package/dist/client/setup-connections/useBuilderConnectCardController.js.map +1 -0
  499. package/dist/client/sharing/ShareButton.d.ts +5 -5
  500. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  501. package/dist/client/sharing/ShareButton.js +19 -464
  502. package/dist/client/sharing/ShareButton.js.map +1 -1
  503. package/dist/client/sharing/ShareDialog.d.ts +6 -6
  504. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  505. package/dist/client/sharing/ShareDialog.js +69 -283
  506. package/dist/client/sharing/ShareDialog.js.map +1 -1
  507. package/dist/client/sharing/index.d.ts +3 -0
  508. package/dist/client/sharing/index.d.ts.map +1 -1
  509. package/dist/client/sharing/index.js +3 -0
  510. package/dist/client/sharing/index.js.map +1 -1
  511. package/dist/client/sharing/share-controller-helpers.d.ts +70 -0
  512. package/dist/client/sharing/share-controller-helpers.d.ts.map +1 -0
  513. package/dist/client/sharing/share-controller-helpers.js +224 -0
  514. package/dist/client/sharing/share-controller-helpers.js.map +1 -0
  515. package/dist/client/sharing/useShareButtonController.d.ts +91 -0
  516. package/dist/client/sharing/useShareButtonController.d.ts.map +1 -0
  517. package/dist/client/sharing/useShareButtonController.js +397 -0
  518. package/dist/client/sharing/useShareButtonController.js.map +1 -0
  519. package/dist/client/sharing/useShareDialogController.d.ts +109 -0
  520. package/dist/client/sharing/useShareDialogController.d.ts.map +1 -0
  521. package/dist/client/sharing/useShareDialogController.js +348 -0
  522. package/dist/client/sharing/useShareDialogController.js.map +1 -0
  523. package/dist/client/sse-event-processor.d.ts.map +1 -1
  524. package/dist/client/sse-event-processor.js +21 -0
  525. package/dist/client/sse-event-processor.js.map +1 -1
  526. package/dist/client/tool-display.d.ts +16 -0
  527. package/dist/client/tool-display.d.ts.map +1 -1
  528. package/dist/client/tool-display.js +52 -0
  529. package/dist/client/tool-display.js.map +1 -1
  530. package/dist/client/use-agent-engine-configured.d.ts +3 -2
  531. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  532. package/dist/client/use-agent-engine-configured.js +7 -19
  533. package/dist/client/use-agent-engine-configured.js.map +1 -1
  534. package/dist/client/use-chat-threads.d.ts.map +1 -1
  535. package/dist/client/use-chat-threads.js +21 -8
  536. package/dist/client/use-chat-threads.js.map +1 -1
  537. package/dist/collab/awareness.d.ts +2 -2
  538. package/dist/collab/awareness.d.ts.map +1 -1
  539. package/dist/db/client.d.ts +7 -7
  540. package/dist/db/client.d.ts.map +1 -1
  541. package/dist/db/client.js +13 -10
  542. package/dist/db/client.js.map +1 -1
  543. package/dist/extensions/actions.d.ts.map +1 -1
  544. package/dist/extensions/actions.js +8 -5
  545. package/dist/extensions/actions.js.map +1 -1
  546. package/dist/extensions/local.d.ts.map +1 -1
  547. package/dist/extensions/local.js +1 -0
  548. package/dist/extensions/local.js.map +1 -1
  549. package/dist/extensions/routes.d.ts.map +1 -1
  550. package/dist/extensions/routes.js +9 -4
  551. package/dist/extensions/routes.js.map +1 -1
  552. package/dist/extensions/schema.d.ts +23 -2
  553. package/dist/extensions/schema.d.ts.map +1 -1
  554. package/dist/extensions/schema.js +5 -0
  555. package/dist/extensions/schema.js.map +1 -1
  556. package/dist/extensions/slots/store.d.ts +1 -1
  557. package/dist/extensions/slots/store.d.ts.map +1 -1
  558. package/dist/extensions/slots/store.js +4 -4
  559. package/dist/extensions/slots/store.js.map +1 -1
  560. package/dist/extensions/store.d.ts +1 -0
  561. package/dist/extensions/store.d.ts.map +1 -1
  562. package/dist/extensions/store.js +38 -21
  563. package/dist/extensions/store.js.map +1 -1
  564. package/dist/extensions/theme.js +1 -1
  565. package/dist/extensions/theme.js.map +1 -1
  566. package/dist/file-upload/registry.d.ts.map +1 -1
  567. package/dist/file-upload/registry.js +9 -0
  568. package/dist/file-upload/registry.js.map +1 -1
  569. package/dist/index.browser.d.ts +1 -0
  570. package/dist/index.browser.d.ts.map +1 -1
  571. package/dist/index.browser.js +1 -0
  572. package/dist/index.browser.js.map +1 -1
  573. package/dist/index.d.ts +1 -0
  574. package/dist/index.d.ts.map +1 -1
  575. package/dist/index.js +1 -0
  576. package/dist/index.js.map +1 -1
  577. package/dist/localization/default-messages.d.ts +20 -0
  578. package/dist/localization/default-messages.d.ts.map +1 -1
  579. package/dist/localization/default-messages.js +26 -6
  580. package/dist/localization/default-messages.js.map +1 -1
  581. package/dist/mcp-client/oauth-routes.d.ts +2 -0
  582. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  583. package/dist/mcp-client/oauth-routes.js +12 -2
  584. package/dist/mcp-client/oauth-routes.js.map +1 -1
  585. package/dist/observability/routes.d.ts +3 -3
  586. package/dist/provider-api/actions/custom-provider-registration.d.ts +3 -3
  587. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  588. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  589. package/dist/scripts/call-agent.d.ts.map +1 -1
  590. package/dist/scripts/call-agent.js +5 -1
  591. package/dist/scripts/call-agent.js.map +1 -1
  592. package/dist/secrets/routes.d.ts +6 -6
  593. package/dist/server/action-discovery.d.ts.map +1 -1
  594. package/dist/server/action-discovery.js +8 -0
  595. package/dist/server/action-discovery.js.map +1 -1
  596. package/dist/server/better-auth-instance.d.ts +7 -2
  597. package/dist/server/better-auth-instance.d.ts.map +1 -1
  598. package/dist/server/better-auth-instance.js.map +1 -1
  599. package/dist/server/email-template.d.ts +3 -0
  600. package/dist/server/email-template.d.ts.map +1 -1
  601. package/dist/server/email-template.js +13 -0
  602. package/dist/server/email-template.js.map +1 -1
  603. package/dist/server/email-templates.d.ts.map +1 -1
  604. package/dist/server/email-templates.js +3 -0
  605. package/dist/server/email-templates.js.map +1 -1
  606. package/dist/server/email.d.ts.map +1 -1
  607. package/dist/server/email.js +27 -4
  608. package/dist/server/email.js.map +1 -1
  609. package/dist/server/realtime-voice.js +1 -1
  610. package/dist/server/realtime-voice.js.map +1 -1
  611. package/dist/server/transcribe-voice.d.ts +1 -1
  612. package/dist/sharing/actions/share-resource.js +1 -0
  613. package/dist/sharing/actions/share-resource.js.map +1 -1
  614. package/dist/styles/agent-native.css +0 -24
  615. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  616. package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  617. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  618. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  619. package/dist/templates/chat/app/components/layout/Sidebar.tsx +2 -2
  620. package/dist/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  621. package/dist/templates/chat/app/design-system.ts +3 -0
  622. package/dist/templates/chat/app/global.css +1 -1
  623. package/dist/templates/chat/app/root.tsx +2 -2
  624. package/dist/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  625. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  626. package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  627. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  628. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  629. package/dist/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  630. package/dist/templates/default/app/design-system.ts +3 -0
  631. package/dist/templates/default/app/global.css +1 -1
  632. package/dist/templates/default/app/i18n/ar-SA.ts +6 -6
  633. package/dist/templates/default/app/i18n/de-DE.ts +6 -6
  634. package/dist/templates/default/app/i18n/en-US.ts +6 -6
  635. package/dist/templates/default/app/i18n/es-ES.ts +6 -6
  636. package/dist/templates/default/app/i18n/fr-FR.ts +6 -6
  637. package/dist/templates/default/app/i18n/hi-IN.ts +6 -6
  638. package/dist/templates/default/app/i18n/ja-JP.ts +6 -6
  639. package/dist/templates/default/app/i18n/ko-KR.ts +6 -6
  640. package/dist/templates/default/app/i18n/pt-BR.ts +6 -6
  641. package/dist/templates/default/app/i18n/zh-CN.ts +7 -7
  642. package/dist/templates/default/app/i18n/zh-TW.ts +7 -7
  643. package/dist/templates/default/app/root.tsx +5 -2
  644. package/dist/templates/default/package.json +1 -0
  645. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  646. package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  647. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  648. package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  649. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  650. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  651. package/dist/user-profile/actions/get-user-profile.d.ts +4 -0
  652. package/dist/user-profile/actions/get-user-profile.d.ts.map +1 -0
  653. package/dist/user-profile/actions/get-user-profile.js +14 -0
  654. package/dist/user-profile/actions/get-user-profile.js.map +1 -0
  655. package/dist/user-profile/actions/update-user-profile.d.ts +6 -0
  656. package/dist/user-profile/actions/update-user-profile.d.ts.map +1 -0
  657. package/dist/user-profile/actions/update-user-profile.js +20 -0
  658. package/dist/user-profile/actions/update-user-profile.js.map +1 -0
  659. package/dist/user-profile/index.d.ts +2 -0
  660. package/dist/user-profile/index.d.ts.map +1 -0
  661. package/dist/user-profile/index.js +2 -0
  662. package/dist/user-profile/index.js.map +1 -0
  663. package/dist/user-profile/shared.d.ts +7 -0
  664. package/dist/user-profile/shared.d.ts.map +1 -0
  665. package/dist/user-profile/shared.js +6 -0
  666. package/dist/user-profile/shared.js.map +1 -0
  667. package/dist/user-profile/store.d.ts +4 -0
  668. package/dist/user-profile/store.d.ts.map +1 -0
  669. package/dist/user-profile/store.js +38 -0
  670. package/dist/user-profile/store.js.map +1 -0
  671. package/dist/vite/client.d.ts +3 -0
  672. package/dist/vite/client.d.ts.map +1 -1
  673. package/dist/vite/client.js +31 -0
  674. package/dist/vite/client.js.map +1 -1
  675. package/docs/content/custom-design-system.mdx +445 -0
  676. package/docs/content/toolkit-ui.mdx +16 -0
  677. package/package.json +3 -2
  678. package/src/a2a/types.ts +1 -0
  679. package/src/agent/types.ts +1 -1
  680. package/src/cli/context-xray-local.ts +1 -1
  681. package/src/client/AgentPanel.tsx +90 -107
  682. package/src/client/AssistantChat.tsx +30 -13
  683. package/src/client/CommandMenu.tsx +68 -178
  684. package/src/client/agent-chat-adapter.ts +3 -1
  685. package/src/client/app-providers.tsx +1 -1
  686. package/src/client/chat/message-components.tsx +116 -10
  687. package/src/client/chat/tool-call-display.tsx +26 -5
  688. package/src/client/chat/widgets/InlineExtensionWidget.tsx +14 -40
  689. package/src/client/components/ui/message-scroller.tsx +15 -1
  690. package/src/client/extensions/ExtensionViewer.tsx +4 -4
  691. package/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
  692. package/src/client/extensions/agent-native-extension-runtime.ts +1 -1
  693. package/src/client/extensions/delete-extension.ts +2 -2
  694. package/src/client/i18n.tsx +22 -0
  695. package/src/client/index.ts +17 -0
  696. package/src/client/org/OrgSwitcher.tsx +25 -1
  697. package/src/client/org/TeamPage.tsx +257 -153
  698. package/src/client/progress/RunsTray.tsx +89 -88
  699. package/src/client/resources/McpConnectionSuggestion.tsx +5 -2
  700. package/src/client/resources/McpIntegrationDialog.tsx +34 -13
  701. package/src/client/resources/mcp-integration-catalog.ts +13 -0
  702. package/src/client/settings/DemoModeSection.tsx +6 -18
  703. package/src/client/settings/SecretsSection.tsx +97 -52
  704. package/src/client/settings/SettingsPanel.tsx +302 -254
  705. package/src/client/settings/SettingsTabsPage.tsx +23 -2
  706. package/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
  707. package/src/client/settings/index.ts +7 -0
  708. package/src/client/settings/useSettingsPanelController.ts +155 -0
  709. package/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
  710. package/src/client/setup-connections/index.ts +10 -0
  711. package/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
  712. package/src/client/sharing/ShareButton.tsx +71 -592
  713. package/src/client/sharing/ShareDialog.tsx +299 -633
  714. package/src/client/sharing/index.ts +42 -0
  715. package/src/client/sharing/share-controller-helpers.ts +318 -0
  716. package/src/client/sharing/useShareButtonController.ts +600 -0
  717. package/src/client/sharing/useShareDialogController.ts +559 -0
  718. package/src/client/sse-event-processor.ts +23 -0
  719. package/src/client/tool-display.ts +71 -0
  720. package/src/client/use-agent-engine-configured.ts +12 -19
  721. package/src/client/use-chat-threads.ts +33 -12
  722. package/src/db/client.ts +13 -10
  723. package/src/extensions/actions.ts +13 -5
  724. package/src/extensions/local.ts +1 -0
  725. package/src/extensions/routes.ts +10 -5
  726. package/src/extensions/schema.ts +5 -0
  727. package/src/extensions/slots/store.ts +14 -4
  728. package/src/extensions/store.ts +55 -19
  729. package/src/extensions/theme.ts +1 -1
  730. package/src/file-upload/registry.ts +9 -0
  731. package/src/index.browser.ts +5 -0
  732. package/src/index.ts +1 -0
  733. package/src/localization/default-messages.ts +28 -6
  734. package/src/mcp-client/oauth-routes.ts +16 -2
  735. package/src/scripts/call-agent.ts +5 -1
  736. package/src/server/action-discovery.ts +8 -0
  737. package/src/server/better-auth-instance.ts +7 -2
  738. package/src/server/email-template.ts +18 -0
  739. package/src/server/email-templates.ts +3 -0
  740. package/src/server/email.ts +40 -4
  741. package/src/server/realtime-voice.ts +1 -1
  742. package/src/sharing/actions/share-resource.ts +1 -0
  743. package/src/styles/agent-native.css +0 -24
  744. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  745. package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  746. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
  747. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
  748. package/src/templates/chat/app/components/layout/Sidebar.tsx +2 -2
  749. package/src/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
  750. package/src/templates/chat/app/design-system.ts +3 -0
  751. package/src/templates/chat/app/global.css +1 -1
  752. package/src/templates/chat/app/root.tsx +2 -2
  753. package/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
  754. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  755. package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  756. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
  757. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
  758. package/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
  759. package/src/templates/default/app/design-system.ts +3 -0
  760. package/src/templates/default/app/global.css +1 -1
  761. package/src/templates/default/app/i18n/ar-SA.ts +6 -6
  762. package/src/templates/default/app/i18n/de-DE.ts +6 -6
  763. package/src/templates/default/app/i18n/en-US.ts +6 -6
  764. package/src/templates/default/app/i18n/es-ES.ts +6 -6
  765. package/src/templates/default/app/i18n/fr-FR.ts +6 -6
  766. package/src/templates/default/app/i18n/hi-IN.ts +6 -6
  767. package/src/templates/default/app/i18n/ja-JP.ts +6 -6
  768. package/src/templates/default/app/i18n/ko-KR.ts +6 -6
  769. package/src/templates/default/app/i18n/pt-BR.ts +6 -6
  770. package/src/templates/default/app/i18n/zh-CN.ts +7 -7
  771. package/src/templates/default/app/i18n/zh-TW.ts +7 -7
  772. package/src/templates/default/app/root.tsx +5 -2
  773. package/src/templates/default/package.json +1 -0
  774. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  775. package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  776. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +43 -2
  777. package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
  778. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
  779. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
  780. package/src/user-profile/actions/get-user-profile.ts +16 -0
  781. package/src/user-profile/actions/update-user-profile.ts +24 -0
  782. package/src/user-profile/index.ts +5 -0
  783. package/src/user-profile/shared.ts +14 -0
  784. package/src/user-profile/store.ts +50 -0
  785. package/src/vite/client.ts +39 -0
  786. package/corpus/templates/analytics/app/components/ui/calendar.tsx +0 -70
  787. package/corpus/templates/analytics/app/components/ui/chart.tsx +0 -386
  788. package/corpus/templates/calendar/app/components/ui/sonner.tsx +0 -58
  789. package/corpus/templates/forms/app/components/ui/calendar.tsx +0 -214
  790. package/corpus/templates/forms/app/components/ui/chart.tsx +0 -379
  791. package/corpus/templates/forms/app/components/ui/command.tsx +0 -153
  792. package/corpus/templates/forms/app/components/ui/context-menu.tsx +0 -198
  793. package/corpus/templates/forms/app/components/ui/menubar.tsx +0 -254
  794. package/corpus/templates/macros/app/components/ui/menubar.tsx +0 -238
  795. package/corpus/templates/macros/app/components/ui/progress.tsx +0 -26
  796. package/corpus/templates/mail/app/components/ui/calendar.tsx +0 -211
  797. package/corpus/templates/mail/app/components/ui/chart.tsx +0 -379
  798. package/corpus/templates/mail/app/components/ui/command.tsx +0 -153
  799. package/corpus/templates/mail/app/components/ui/context-menu.tsx +0 -198
  800. package/corpus/templates/mail/app/components/ui/menubar.tsx +0 -254
  801. package/corpus/templates/tasks/app/components/ui/accordion.tsx +0 -56
  802. package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +0 -5
  803. package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +0 -115
  804. package/corpus/templates/tasks/app/components/ui/calendar.tsx +0 -70
  805. package/corpus/templates/tasks/app/components/ui/carousel.tsx +0 -260
  806. package/corpus/templates/tasks/app/components/ui/chart.tsx +0 -379
  807. package/corpus/templates/tasks/app/components/ui/form.tsx +0 -177
  808. package/corpus/templates/tasks/app/components/ui/hover-card.tsx +0 -27
  809. package/corpus/templates/tasks/app/components/ui/input-otp.tsx +0 -69
  810. package/corpus/templates/tasks/app/components/ui/menubar.tsx +0 -254
  811. package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +0 -128
  812. package/corpus/templates/tasks/app/components/ui/pagination.tsx +0 -121
  813. package/corpus/templates/tasks/app/components/ui/resizable.tsx +0 -43
  814. package/corpus/templates/tasks/app/components/ui/sidebar.tsx +0 -782
  815. package/corpus/templates/tasks/app/components/ui/toggle.tsx +0 -43
@@ -1,3 +1,11 @@
1
+ import { Button as ToolkitButton } from "@agent-native/toolkit/ui/button";
2
+ import {
3
+ Select,
4
+ SelectContent,
5
+ SelectItem,
6
+ SelectTrigger,
7
+ SelectValue,
8
+ } from "@agent-native/toolkit/ui/select";
1
9
  import {
2
10
  Table,
3
11
  TableBody,
@@ -28,7 +36,14 @@ import {
28
36
  IconUsersGroup,
29
37
  IconHelpCircle,
30
38
  } from "@tabler/icons-react";
31
- import { useMemo, useRef, useState, type ReactNode } from "react";
39
+ import {
40
+ forwardRef,
41
+ useMemo,
42
+ useRef,
43
+ useState,
44
+ type ComponentPropsWithoutRef,
45
+ type ReactNode,
46
+ } from "react";
32
47
 
33
48
  import type { DomainMatchOrg } from "../../org/types.js";
34
49
  import {
@@ -38,6 +53,7 @@ import {
38
53
  TooltipTrigger,
39
54
  } from "../components/ui/tooltip.js";
40
55
  import { useT } from "../i18n.js";
56
+ import { cn } from "../utils.js";
41
57
  import {
42
58
  useOrg,
43
59
  useOrgMembers,
@@ -57,6 +73,22 @@ import {
57
73
  type SyncA2ASecretResult,
58
74
  } from "./hooks.js";
59
75
 
76
+ const Button = forwardRef<
77
+ HTMLButtonElement,
78
+ ComponentPropsWithoutRef<typeof ToolkitButton>
79
+ >(({ className, ...props }, ref) => (
80
+ <ToolkitButton
81
+ ref={ref}
82
+ variant="ghost"
83
+ className={cn(
84
+ "h-auto p-0 hover:bg-transparent hover:text-inherit active:scale-100 [&_svg]:!size-auto",
85
+ className,
86
+ )}
87
+ {...props}
88
+ />
89
+ ));
90
+ Button.displayName = "TeamPrimitiveButton";
91
+
60
92
  export interface TeamPageProps {
61
93
  /**
62
94
  * Optional wrapper around the page contents. Templates pass their own Layout
@@ -86,16 +118,16 @@ export interface TeamPageProps {
86
118
 
87
119
  function RoleIcon({ role }: { role: string }) {
88
120
  if (role === "owner")
89
- return <IconCrown className="h-3.5 w-3.5 text-amber-500" />;
121
+ return <IconCrown className="h-3.5 w-3.5 text-primary" />;
90
122
  if (role === "admin")
91
- return <IconShieldCheck className="h-3.5 w-3.5 text-blue-500" />;
123
+ return <IconShieldCheck className="h-3.5 w-3.5 text-muted-foreground" />;
92
124
  return null;
93
125
  }
94
126
 
95
127
  function ErrorText({ error }: { error: unknown }) {
96
128
  if (!error) return null;
97
129
  return (
98
- <p className="text-xs text-red-500">
130
+ <p className="text-xs text-destructive">
99
131
  {error instanceof Error ? error.message : String(error)}
100
132
  </p>
101
133
  );
@@ -122,18 +154,20 @@ function PendingInvitationsCard() {
122
154
  {t("org.invitedByLabel", { name: inv.invitedBy })}
123
155
  </div>
124
156
  </div>
125
- <button
157
+ <Button
126
158
  type="button"
159
+ intent="primary"
160
+ emphasis="solid"
127
161
  onClick={() => acceptInvitation.mutate(inv.id)}
128
162
  disabled={acceptInvitation.isPending}
129
- className="rounded-md bg-green-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-green-700 disabled:opacity-50"
163
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
130
164
  >
131
165
  {acceptInvitation.isPending ? (
132
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
166
+ <IconLoader2 size={14} className="animate-spin" />
133
167
  ) : (
134
168
  t("org.accept")
135
169
  )}
136
- </button>
170
+ </Button>
137
171
  </div>
138
172
  ))}
139
173
  <ErrorText error={acceptInvitation.error} />
@@ -161,13 +195,15 @@ function JoinByDomainCard({ matches }: { matches: DomainMatchOrg[] }) {
161
195
  className="flex items-center justify-between rounded-md border border-border p-3"
162
196
  >
163
197
  <div className="flex items-center gap-2.5">
164
- <div className="flex h-8 w-8 items-center justify-center rounded-md bg-blue-600/10">
165
- <IconUsersGroup className="h-4 w-4 text-blue-600" />
198
+ <div className="flex h-8 w-8 items-center justify-center rounded-md bg-primary/10">
199
+ <IconUsersGroup className="h-4 w-4 text-primary" />
166
200
  </div>
167
201
  <div className="text-sm font-medium">{m.orgName}</div>
168
202
  </div>
169
- <button
203
+ <Button
170
204
  type="button"
205
+ intent="primary"
206
+ emphasis="solid"
171
207
  disabled={joinByDomain.isPending && pendingId === m.orgId}
172
208
  onClick={() => {
173
209
  setPendingId(m.orgId);
@@ -175,14 +211,14 @@ function JoinByDomainCard({ matches }: { matches: DomainMatchOrg[] }) {
175
211
  onSettled: () => setPendingId(null),
176
212
  });
177
213
  }}
178
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
214
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
179
215
  >
180
216
  {joinByDomain.isPending && pendingId === m.orgId ? (
181
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
217
+ <IconLoader2 size={14} className="animate-spin" />
182
218
  ) : (
183
219
  t("org.join")
184
220
  )}
185
- </button>
221
+ </Button>
186
222
  </div>
187
223
  ))}
188
224
  </div>
@@ -204,13 +240,15 @@ function CreateOrgCard({ description }: { description?: string }) {
204
240
  {description || t("org.createOrgCardDescription")}
205
241
  </p>
206
242
  {!showForm ? (
207
- <button
243
+ <Button
208
244
  type="button"
245
+ intent="primary"
246
+ emphasis="solid"
209
247
  onClick={() => setShowForm(true)}
210
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90"
248
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"
211
249
  >
212
250
  {t("org.createOrganization")}
213
- </button>
251
+ </Button>
214
252
  ) : (
215
253
  <div className="space-y-2">
216
254
  <input
@@ -222,8 +260,10 @@ function CreateOrgCard({ description }: { description?: string }) {
222
260
  autoFocus
223
261
  />
224
262
  <div className="flex gap-2">
225
- <button
263
+ <Button
226
264
  type="button"
265
+ intent="primary"
266
+ emphasis="solid"
227
267
  disabled={!name.trim() || createOrg.isPending}
228
268
  onClick={() =>
229
269
  createOrg.mutate(name.trim(), {
@@ -233,16 +273,18 @@ function CreateOrgCard({ description }: { description?: string }) {
233
273
  },
234
274
  })
235
275
  }
236
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
276
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
237
277
  >
238
278
  {createOrg.isPending ? (
239
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
279
+ <IconLoader2 size={14} className="animate-spin" />
240
280
  ) : (
241
281
  t("org.create")
242
282
  )}
243
- </button>
244
- <button
283
+ </Button>
284
+ <Button
245
285
  type="button"
286
+ intent="neutral"
287
+ emphasis="outline"
246
288
  onClick={() => {
247
289
  setShowForm(false);
248
290
  setName("");
@@ -250,7 +292,7 @@ function CreateOrgCard({ description }: { description?: string }) {
250
292
  className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
251
293
  >
252
294
  {t("org.cancel")}
253
- </button>
295
+ </Button>
254
296
  </div>
255
297
  <ErrorText error={createOrg.error} />
256
298
  </div>
@@ -268,7 +310,7 @@ function OrgNameDisplay({ name, canEdit }: { name: string; canEdit: boolean }) {
268
310
 
269
311
  if (!editing) {
270
312
  return (
271
- <button
313
+ <Button
272
314
  type="button"
273
315
  onClick={() => {
274
316
  setDraft(name);
@@ -277,8 +319,11 @@ function OrgNameDisplay({ name, canEdit }: { name: string; canEdit: boolean }) {
277
319
  className="group flex items-center gap-1.5 text-sm font-medium hover:text-foreground/80"
278
320
  >
279
321
  {name}
280
- <IconPencil className="h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100" />
281
- </button>
322
+ <IconPencil
323
+ size={12}
324
+ className="text-muted-foreground opacity-0 group-hover:opacity-100"
325
+ />
326
+ </Button>
282
327
  );
283
328
  }
284
329
 
@@ -341,8 +386,8 @@ function MembersCard() {
341
386
  <section className="rounded-lg border border-border bg-card p-4 space-y-4">
342
387
  <div className="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
343
388
  <div className="flex min-w-0 items-center gap-3">
344
- <div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-blue-600/10">
345
- <IconUsersGroup className="h-5 w-5 text-blue-600" />
389
+ <div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10">
390
+ <IconUsersGroup className="h-5 w-5 text-primary" />
346
391
  </div>
347
392
  <div className="min-w-0">
348
393
  <OrgNameDisplay
@@ -356,18 +401,22 @@ function MembersCard() {
356
401
  </div>
357
402
  </div>
358
403
  {hasMultipleOrgs && (
359
- <select
404
+ <Select
360
405
  value={org.orgId ?? ""}
361
- onChange={(e) => switchOrg.mutate(e.target.value || null)}
406
+ onValueChange={(value) => switchOrg.mutate(value || null)}
362
407
  disabled={switchOrg.isPending}
363
- className="w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-xs sm:w-auto"
364
408
  >
365
- {org.orgs.map((o) => (
366
- <option key={o.orgId} value={o.orgId}>
367
- {o.orgName}
368
- </option>
369
- ))}
370
- </select>
409
+ <SelectTrigger className="h-auto w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-xs sm:w-auto">
410
+ <SelectValue />
411
+ </SelectTrigger>
412
+ <SelectContent>
413
+ {org.orgs.map((o) => (
414
+ <SelectItem key={o.orgId} value={o.orgId}>
415
+ {o.orgName}
416
+ </SelectItem>
417
+ ))}
418
+ </SelectContent>
419
+ </Select>
371
420
  )}
372
421
  </div>
373
422
 
@@ -423,14 +472,16 @@ function MembersTableCard({
423
472
  </p>
424
473
  </div>
425
474
  {canInvite && !showInviteForm && (
426
- <button
475
+ <Button
427
476
  type="button"
477
+ intent="primary"
478
+ emphasis="solid"
428
479
  onClick={() => setShowInviteForm(true)}
429
- className="inline-flex items-center justify-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90"
480
+ className="inline-flex items-center justify-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"
430
481
  >
431
- <IconUserPlus className="h-3.5 w-3.5" />
482
+ <IconUserPlus size={14} />
432
483
  {t("org.inviteMembers")}
433
- </button>
484
+ </Button>
434
485
  )}
435
486
  </div>
436
487
  {canInvite && showInviteForm && (
@@ -576,11 +627,14 @@ function MemberRow({
576
627
  {canManage ? (
577
628
  <div className="flex shrink-0 items-center justify-end gap-1">
578
629
  {editing ? (
579
- <select
580
- autoFocus
630
+ <Select
631
+ defaultOpen
581
632
  value={role}
582
- onChange={(e) => {
583
- const next = e.target.value === "admin" ? "admin" : "member";
633
+ onOpenChange={(open) => {
634
+ if (!open) setEditing(false);
635
+ }}
636
+ onValueChange={(value) => {
637
+ const next = value === "admin" ? "admin" : "member";
584
638
  if (next !== role) {
585
639
  changeRole.mutate(
586
640
  { email, role: next },
@@ -590,60 +644,72 @@ function MemberRow({
590
644
  setEditing(false);
591
645
  }
592
646
  }}
593
- onBlur={() => setEditing(false)}
594
647
  disabled={changeRole.isPending}
595
- className="rounded-md border border-border bg-background px-1.5 py-0.5 text-[11px]"
596
648
  >
597
- <option value="member">{t("org.member")}</option>
598
- <option value="admin">{t("org.admin")}</option>
599
- </select>
649
+ <SelectTrigger
650
+ autoFocus
651
+ className="h-auto w-auto rounded-md border border-border bg-background px-1.5 py-0.5 text-[11px]"
652
+ >
653
+ <SelectValue />
654
+ </SelectTrigger>
655
+ <SelectContent>
656
+ <SelectItem value="member">{t("org.member")}</SelectItem>
657
+ <SelectItem value="admin">{t("org.admin")}</SelectItem>
658
+ </SelectContent>
659
+ </Select>
600
660
  ) : (
601
661
  <Tooltip>
602
662
  <TooltipTrigger asChild>
603
- <button
663
+ <Button
604
664
  type="button"
605
665
  onClick={() => setEditing(true)}
606
666
  className="text-muted-foreground hover:text-foreground"
607
667
  >
608
- <IconPencil className="h-3.5 w-3.5" />
609
- </button>
668
+ <IconPencil size={14} />
669
+ </Button>
610
670
  </TooltipTrigger>
611
671
  <TooltipContent>{t("org.changeRole")}</TooltipContent>
612
672
  </Tooltip>
613
673
  )}
614
674
  {confirmingRemove ? (
615
675
  <div className="flex items-center gap-1">
616
- <button
676
+ <Button
617
677
  type="button"
678
+ intent="neutral"
679
+ emphasis="ghost"
618
680
  onClick={() => setConfirmingRemove(false)}
619
681
  className="rounded px-1.5 py-0.5 text-[11px] text-muted-foreground hover:bg-accent hover:text-foreground"
620
682
  >
621
683
  {t("org.cancel")}
622
- </button>
623
- <button
684
+ </Button>
685
+ <Button
624
686
  type="button"
687
+ intent="danger"
688
+ emphasis="solid"
625
689
  disabled={removeMember.isPending}
626
690
  onClick={() =>
627
691
  removeMember.mutate(email, {
628
692
  onSettled: () => setConfirmingRemove(false),
629
693
  })
630
694
  }
631
- className="rounded bg-red-500 px-1.5 py-0.5 text-[11px] text-white hover:bg-red-600 disabled:opacity-50"
695
+ className="rounded bg-destructive px-1.5 py-0.5 text-[11px] text-destructive-foreground hover:bg-destructive/90 disabled:opacity-50"
632
696
  >
633
697
  {t("org.remove")}
634
- </button>
698
+ </Button>
635
699
  </div>
636
700
  ) : (
637
701
  <Tooltip>
638
702
  <TooltipTrigger asChild>
639
- <button
703
+ <Button
640
704
  type="button"
705
+ intent="danger"
706
+ emphasis="ghost"
641
707
  disabled={removeMember.isPending}
642
708
  onClick={() => setConfirmingRemove(true)}
643
- className="text-muted-foreground hover:text-red-500 disabled:opacity-50"
709
+ className="text-muted-foreground hover:text-destructive disabled:opacity-50"
644
710
  >
645
- <IconTrash className="h-3.5 w-3.5" />
646
- </button>
711
+ <IconTrash size={14} />
712
+ </Button>
647
713
  </TooltipTrigger>
648
714
  <TooltipContent>{t("org.removeMember")}</TooltipContent>
649
715
  </Tooltip>
@@ -810,66 +876,78 @@ function BulkInviteForm({
810
876
  className="flex-1 rounded-md border border-border bg-background px-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
811
877
  autoFocus={i === drafts.length - 1}
812
878
  />
813
- <select
879
+ <Select
814
880
  value={draft.role}
815
- onChange={(e) =>
881
+ onValueChange={(value) =>
816
882
  setDraft(i, {
817
- role: e.target.value === "admin" ? "admin" : "member",
883
+ role: value === "admin" ? "admin" : "member",
818
884
  })
819
885
  }
820
886
  disabled={!canSetAdmin}
821
- title={
822
- canSetAdmin
823
- ? undefined
824
- : "Only the organization owner can invite admins"
825
- }
826
- className="rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
827
887
  >
828
- <option value="member">Member</option>
829
- <option value="admin">Admin</option>
830
- </select>
888
+ <SelectTrigger
889
+ title={
890
+ canSetAdmin
891
+ ? undefined
892
+ : "Only the organization owner can invite admins"
893
+ }
894
+ className="h-auto w-auto rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
895
+ >
896
+ <SelectValue />
897
+ </SelectTrigger>
898
+ <SelectContent>
899
+ <SelectItem value="member">Member</SelectItem>
900
+ <SelectItem value="admin">Admin</SelectItem>
901
+ </SelectContent>
902
+ </Select>
831
903
  {drafts.length > 1 && (
832
- <button
904
+ <Button
833
905
  type="button"
834
906
  onClick={() =>
835
907
  setDrafts((prev) => prev.filter((_, j) => j !== i))
836
908
  }
837
- className="text-muted-foreground hover:text-red-500"
909
+ className="text-muted-foreground hover:text-destructive"
838
910
  >
839
- <IconX className="h-3.5 w-3.5" />
840
- </button>
911
+ <IconX size={14} />
912
+ </Button>
841
913
  )}
842
914
  </div>
843
915
  ))}
844
916
  </div>
845
917
 
846
918
  <div className="flex flex-wrap items-center gap-2">
847
- <button
919
+ <Button
848
920
  type="button"
921
+ intent="neutral"
922
+ emphasis="outline"
849
923
  onClick={() =>
850
924
  setDrafts((prev) => [...prev, { email: "", role: "member" }])
851
925
  }
852
926
  className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
853
927
  >
854
- <IconPlus className="h-3.5 w-3.5" />
928
+ <IconPlus size={14} />
855
929
  Add another
856
- </button>
857
- <button
930
+ </Button>
931
+ <Button
858
932
  type="button"
933
+ intent="neutral"
934
+ emphasis="outline"
859
935
  onClick={() => setPasteOpen((v) => !v)}
860
936
  className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
861
937
  >
862
- <IconUserPlus className="h-3.5 w-3.5" />
938
+ <IconUserPlus size={14} />
863
939
  Paste many
864
- </button>
865
- <button
940
+ </Button>
941
+ <Button
866
942
  type="button"
943
+ intent="neutral"
944
+ emphasis="outline"
867
945
  onClick={() => fileRef.current?.click()}
868
946
  className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
869
947
  >
870
- <IconFileImport className="h-3.5 w-3.5" />
948
+ <IconFileImport size={14} />
871
949
  Import CSV
872
- </button>
950
+ </Button>
873
951
  <input
874
952
  ref={fileRef}
875
953
  type="file"
@@ -897,31 +975,39 @@ function BulkInviteForm({
897
975
  className="w-full rounded-md border border-border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
898
976
  />
899
977
  <div className="flex items-center gap-2">
900
- <select
978
+ <Select
901
979
  value={pasteRole}
902
- onChange={(e) =>
903
- setPasteRole(e.target.value === "admin" ? "admin" : "member")
980
+ onValueChange={(value) =>
981
+ setPasteRole(value === "admin" ? "admin" : "member")
904
982
  }
905
983
  disabled={!canSetAdmin}
906
- className="rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50"
907
984
  >
908
- <option value="member">Add as members</option>
909
- <option value="admin">Add as admins</option>
910
- </select>
911
- <button
985
+ <SelectTrigger className="h-auto w-auto rounded-md border border-border bg-background px-2 py-1.5 text-xs disabled:opacity-50">
986
+ <SelectValue />
987
+ </SelectTrigger>
988
+ <SelectContent>
989
+ <SelectItem value="member">Add as members</SelectItem>
990
+ <SelectItem value="admin">Add as admins</SelectItem>
991
+ </SelectContent>
992
+ </Select>
993
+ <Button
912
994
  type="button"
995
+ intent="primary"
996
+ emphasis="solid"
913
997
  onClick={() => {
914
998
  appendEmails(parseEmailList(pasteValue), pasteRole);
915
999
  setPasteValue("");
916
1000
  setPasteOpen(false);
917
1001
  }}
918
1002
  disabled={parseEmailList(pasteValue).length === 0}
919
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
1003
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
920
1004
  >
921
1005
  Add
922
- </button>
923
- <button
1006
+ </Button>
1007
+ <Button
924
1008
  type="button"
1009
+ intent="neutral"
1010
+ emphasis="outline"
925
1011
  onClick={() => {
926
1012
  setPasteValue("");
927
1013
  setPasteOpen(false);
@@ -929,35 +1015,39 @@ function BulkInviteForm({
929
1015
  className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
930
1016
  >
931
1017
  Cancel
932
- </button>
1018
+ </Button>
933
1019
  </div>
934
1020
  </div>
935
1021
  )}
936
1022
 
937
1023
  <div className="flex items-center gap-2">
938
- <button
1024
+ <Button
939
1025
  type="button"
1026
+ intent="primary"
1027
+ emphasis="solid"
940
1028
  disabled={validDrafts.length === 0 || bulkInvite.isPending}
941
1029
  onClick={submit}
942
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
1030
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
943
1031
  >
944
1032
  {bulkInvite.isPending ? (
945
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
1033
+ <IconLoader2 size={14} className="animate-spin" />
946
1034
  ) : (
947
1035
  <span className="inline-flex items-center gap-1">
948
- <IconCheck className="h-3.5 w-3.5" />
1036
+ <IconCheck size={14} />
949
1037
  Send {validDrafts.length || ""}{" "}
950
1038
  {validDrafts.length === 1 ? "invite" : "invites"}
951
1039
  </span>
952
1040
  )}
953
- </button>
954
- <button
1041
+ </Button>
1042
+ <Button
955
1043
  type="button"
1044
+ intent="neutral"
1045
+ emphasis="outline"
956
1046
  onClick={onClose}
957
1047
  className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
958
1048
  >
959
1049
  Close
960
- </button>
1050
+ </Button>
961
1051
  </div>
962
1052
 
963
1053
  <p className="text-[11px] text-muted-foreground">
@@ -970,14 +1060,14 @@ function BulkInviteForm({
970
1060
  {resultBanner && (
971
1061
  <div className="space-y-1 rounded-md border border-border bg-accent/30 p-2.5">
972
1062
  {resultBanner.succeeded > 0 && (
973
- <p className="text-[11px] text-green-600">
1063
+ <p className="text-[11px] text-primary">
974
1064
  <IconCheck className="inline h-3 w-3 -mt-0.5" /> Sent{" "}
975
1065
  {resultBanner.succeeded}{" "}
976
1066
  {resultBanner.succeeded === 1 ? "invite" : "invites"}.
977
1067
  </p>
978
1068
  )}
979
1069
  {resultBanner.failed.length > 0 && (
980
- <ul className="space-y-0.5 text-[11px] text-red-500">
1070
+ <ul className="space-y-0.5 text-[11px] text-destructive">
981
1071
  {resultBanner.failed.map((f) => (
982
1072
  <li key={f.email}>
983
1073
  <IconAlertTriangle className="inline h-3 w-3 -mt-0.5 me-1" />
@@ -1039,7 +1129,7 @@ function DomainSettingsSection({
1039
1129
  </span>
1040
1130
  <Tooltip>
1041
1131
  <TooltipTrigger asChild>
1042
- <button
1132
+ <Button
1043
1133
  type="button"
1044
1134
  onClick={() => {
1045
1135
  setDraft(domain);
@@ -1047,37 +1137,41 @@ function DomainSettingsSection({
1047
1137
  }}
1048
1138
  className="text-muted-foreground hover:text-foreground"
1049
1139
  >
1050
- <IconPencil className="h-3.5 w-3.5" />
1051
- </button>
1140
+ <IconPencil size={14} />
1141
+ </Button>
1052
1142
  </TooltipTrigger>
1053
1143
  <TooltipContent>Edit domain</TooltipContent>
1054
1144
  </Tooltip>
1055
1145
  <Tooltip>
1056
1146
  <TooltipTrigger asChild>
1057
- <button
1147
+ <Button
1058
1148
  type="button"
1149
+ intent="danger"
1150
+ emphasis="ghost"
1059
1151
  disabled={setOrgDomain.isPending}
1060
1152
  onClick={() => setOrgDomain.mutate(null)}
1061
- className="text-muted-foreground hover:text-red-500 disabled:opacity-50"
1153
+ className="text-muted-foreground hover:text-destructive disabled:opacity-50"
1062
1154
  >
1063
- <IconX className="h-3.5 w-3.5" />
1064
- </button>
1155
+ <IconX size={14} />
1156
+ </Button>
1065
1157
  </TooltipTrigger>
1066
1158
  <TooltipContent>Remove domain</TooltipContent>
1067
1159
  </Tooltip>
1068
1160
  </>
1069
1161
  ) : (
1070
- <button
1162
+ <Button
1071
1163
  type="button"
1164
+ intent="neutral"
1165
+ emphasis="outline"
1072
1166
  onClick={() => {
1073
1167
  setDraft(ownDomain);
1074
1168
  setEditing(true);
1075
1169
  }}
1076
1170
  className="flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
1077
1171
  >
1078
- <IconAt className="h-3.5 w-3.5" />
1172
+ <IconAt size={14} />
1079
1173
  Allow {ownDomain || "your domain"} to auto-join
1080
- </button>
1174
+ </Button>
1081
1175
  )}
1082
1176
  </div>
1083
1177
  ) : (
@@ -1094,25 +1188,29 @@ function DomainSettingsSection({
1094
1188
  className="rounded-md border border-border bg-background px-2.5 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-foreground"
1095
1189
  autoFocus
1096
1190
  />
1097
- <button
1191
+ <Button
1098
1192
  type="button"
1193
+ intent="primary"
1194
+ emphasis="solid"
1099
1195
  disabled={setOrgDomain.isPending}
1100
1196
  onClick={save}
1101
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
1197
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
1102
1198
  >
1103
1199
  {setOrgDomain.isPending ? (
1104
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
1200
+ <IconLoader2 size={14} className="animate-spin" />
1105
1201
  ) : (
1106
1202
  "Save"
1107
1203
  )}
1108
- </button>
1109
- <button
1204
+ </Button>
1205
+ <Button
1110
1206
  type="button"
1207
+ intent="neutral"
1208
+ emphasis="outline"
1111
1209
  onClick={() => setEditing(false)}
1112
1210
  className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
1113
1211
  >
1114
1212
  Cancel
1115
- </button>
1213
+ </Button>
1116
1214
  </div>
1117
1215
  )}
1118
1216
  <ErrorText error={setOrgDomain.error} />
@@ -1214,17 +1312,13 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1214
1312
  <>
1215
1313
  <Tooltip>
1216
1314
  <TooltipTrigger asChild>
1217
- <button
1315
+ <Button
1218
1316
  type="button"
1219
1317
  onClick={() => setRevealed(!revealed)}
1220
1318
  className="text-muted-foreground hover:text-foreground"
1221
1319
  >
1222
- {revealed ? (
1223
- <IconEyeOff className="h-3.5 w-3.5" />
1224
- ) : (
1225
- <IconEye className="h-3.5 w-3.5" />
1226
- )}
1227
- </button>
1320
+ {revealed ? <IconEyeOff size={14} /> : <IconEye size={14} />}
1321
+ </Button>
1228
1322
  </TooltipTrigger>
1229
1323
  <TooltipContent>
1230
1324
  {revealed ? "Hide secret" : "Reveal secret"}
@@ -1232,17 +1326,17 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1232
1326
  </Tooltip>
1233
1327
  <Tooltip>
1234
1328
  <TooltipTrigger asChild>
1235
- <button
1329
+ <Button
1236
1330
  type="button"
1237
1331
  onClick={copyToClipboard}
1238
1332
  className="text-muted-foreground hover:text-foreground"
1239
1333
  >
1240
1334
  {copied ? (
1241
- <IconCheck className="h-3.5 w-3.5 text-green-500" />
1335
+ <IconCheck size={14} className="text-primary" />
1242
1336
  ) : (
1243
- <IconCopy className="h-3.5 w-3.5" />
1337
+ <IconCopy size={14} />
1244
1338
  )}
1245
- </button>
1339
+ </Button>
1246
1340
  </TooltipTrigger>
1247
1341
  <TooltipContent>Copy secret</TooltipContent>
1248
1342
  </Tooltip>
@@ -1250,19 +1344,21 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1250
1344
  )}
1251
1345
  <Tooltip>
1252
1346
  <TooltipTrigger asChild>
1253
- <button
1347
+ <Button
1254
1348
  type="button"
1349
+ intent="danger"
1350
+ emphasis="outline"
1255
1351
  onClick={regenerate}
1256
1352
  disabled={setA2ASecret.isPending || syncA2ASecret.isPending}
1257
1353
  className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50 disabled:opacity-50"
1258
1354
  >
1259
1355
  {setA2ASecret.isPending ? (
1260
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
1356
+ <IconLoader2 size={14} className="animate-spin" />
1261
1357
  ) : (
1262
- <IconRefresh className="h-3.5 w-3.5" />
1358
+ <IconRefresh size={14} />
1263
1359
  )}
1264
1360
  Regenerate
1265
- </button>
1361
+ </Button>
1266
1362
  </TooltipTrigger>
1267
1363
  <TooltipContent>
1268
1364
  Regenerate secret and sync to connected apps
@@ -1271,19 +1367,21 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1271
1367
  {secret && (
1272
1368
  <Tooltip>
1273
1369
  <TooltipTrigger asChild>
1274
- <button
1370
+ <Button
1275
1371
  type="button"
1372
+ intent="neutral"
1373
+ emphasis="outline"
1276
1374
  onClick={() => syncToApps()}
1277
1375
  disabled={setA2ASecret.isPending || syncA2ASecret.isPending}
1278
1376
  className="inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50 disabled:opacity-50"
1279
1377
  >
1280
1378
  {syncA2ASecret.isPending ? (
1281
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
1379
+ <IconLoader2 size={14} className="animate-spin" />
1282
1380
  ) : (
1283
- <IconCloudUpload className="h-3.5 w-3.5" />
1381
+ <IconCloudUpload size={14} />
1284
1382
  )}
1285
1383
  Sync to apps
1286
- </button>
1384
+ </Button>
1287
1385
  </TooltipTrigger>
1288
1386
  <TooltipContent>
1289
1387
  Push this secret to every connected app
@@ -1306,7 +1404,7 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1306
1404
  {syncResult.failed > 0 ? ` (${syncResult.failed} failed)` : ""}.
1307
1405
  </p>
1308
1406
  {syncResult.failed > 0 && (
1309
- <ul className="text-[11px] text-red-500 list-disc ps-5 space-y-0.5">
1407
+ <ul className="text-[11px] text-destructive list-disc ps-5 space-y-0.5">
1310
1408
  {syncResult.results
1311
1409
  .filter((r) => !r.ok)
1312
1410
  .map((r) => (
@@ -1320,14 +1418,16 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1320
1418
  )}
1321
1419
 
1322
1420
  {!pasteMode ? (
1323
- <button
1421
+ <Button
1324
1422
  type="button"
1423
+ intent="neutral"
1424
+ emphasis="outline"
1325
1425
  onClick={() => setPasteMode(true)}
1326
1426
  className="flex items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium hover:bg-accent/50"
1327
1427
  >
1328
- <IconKey className="h-3.5 w-3.5" />
1428
+ <IconKey size={14} />
1329
1429
  Paste secret from another app
1330
- </button>
1430
+ </Button>
1331
1431
  ) : (
1332
1432
  <div className="flex items-center gap-2">
1333
1433
  <input
@@ -1345,20 +1445,24 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1345
1445
  className="flex-1 rounded-md border border-border bg-background px-2.5 py-1.5 text-sm font-mono focus:outline-none focus:ring-1 focus:ring-foreground"
1346
1446
  autoFocus
1347
1447
  />
1348
- <button
1448
+ <Button
1349
1449
  type="button"
1450
+ intent="primary"
1451
+ emphasis="solid"
1350
1452
  disabled={!pasteValue.trim() || setA2ASecret.isPending}
1351
1453
  onClick={saveSecret}
1352
- className="rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50"
1454
+ className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"
1353
1455
  >
1354
1456
  {setA2ASecret.isPending ? (
1355
- <IconLoader2 className="h-3.5 w-3.5 animate-spin" />
1457
+ <IconLoader2 size={14} className="animate-spin" />
1356
1458
  ) : (
1357
1459
  "Save"
1358
1460
  )}
1359
- </button>
1360
- <button
1461
+ </Button>
1462
+ <Button
1361
1463
  type="button"
1464
+ intent="neutral"
1465
+ emphasis="outline"
1362
1466
  onClick={() => {
1363
1467
  setPasteMode(false);
1364
1468
  setPasteValue("");
@@ -1366,7 +1470,7 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1366
1470
  className="rounded-md border border-border px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground"
1367
1471
  >
1368
1472
  Cancel
1369
- </button>
1473
+ </Button>
1370
1474
  </div>
1371
1475
  )}
1372
1476