@agent-native/core 0.80.8 → 0.80.9

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 (281) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +6 -0
  4. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +8 -0
  5. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +10 -2
  6. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +10 -2
  7. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +7 -0
  8. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +7 -0
  9. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +7 -0
  10. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +9 -2
  11. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +6 -0
  12. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +6 -0
  13. package/corpus/core/docs/content/template-design.mdx +9 -2
  14. package/corpus/core/package.json +1 -1
  15. package/corpus/core/src/cli/mcp.ts +10 -0
  16. package/corpus/core/src/cli/skills.ts +58 -12
  17. package/corpus/core/src/client/error-format.ts +25 -0
  18. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +13 -11
  19. package/corpus/core/src/client/guided-questions.tsx +32 -4
  20. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +33 -1
  21. package/corpus/core/src/client/resources/BuiltinCapabilityDetail.tsx +8 -0
  22. package/corpus/core/src/client/resources/use-builtin-capabilities.ts +4 -2
  23. package/corpus/core/src/client/session-replay.ts +34 -0
  24. package/corpus/core/src/client/sharing/ShareButton.tsx +106 -21
  25. package/corpus/core/src/coding-tools/index.ts +1 -1
  26. package/corpus/core/src/mcp/index.ts +2 -0
  27. package/corpus/core/src/mcp/screen-memory-stdio.ts +290 -0
  28. package/corpus/core/src/mcp-client/builtin-capabilities.ts +13 -1
  29. package/corpus/core/src/mcp-client/index.ts +9 -0
  30. package/corpus/core/src/mcp-client/screen-memory-local.ts +461 -0
  31. package/corpus/core/src/onboarding/types.ts +7 -0
  32. package/corpus/core/src/server/agent-chat-plugin.ts +25 -0
  33. package/corpus/core/src/server/agents-bundle.ts +35 -7
  34. package/corpus/core/src/styles/agent-native.css +5 -0
  35. package/corpus/core/src/templates/default/app/global.css +35 -35
  36. package/corpus/templates/analytics/AGENTS.md +6 -0
  37. package/corpus/templates/analytics/actions/github-repo-files.ts +9 -0
  38. package/corpus/templates/analytics/app/components/layout/Layout.tsx +4 -4
  39. package/corpus/templates/analytics/app/global.css +144 -40
  40. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +1 -1
  41. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +1 -1
  42. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
  43. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +4 -4
  44. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -9
  45. package/corpus/templates/analytics/changelog/2026-06-29-agents-can-search-and-read-connected-github-repositories-whe.md +6 -0
  46. package/corpus/templates/analytics/changelog/2026-06-29-sessions-and-explorer-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  47. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -1
  48. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +1 -1
  49. package/corpus/templates/assets/app/global.css +99 -35
  50. package/corpus/templates/assets/app/routes/asset.$id.tsx +2 -2
  51. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +4 -4
  52. package/corpus/templates/assets/app/routes/library.tsx +4 -4
  53. package/corpus/templates/assets/changelog/2026-06-29-asset-library-and-detail-layouts-adapt-when-the-agent-sidebar.md +6 -0
  54. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  55. package/corpus/templates/brain/app/global.css +63 -35
  56. package/corpus/templates/brain/app/routes/search.tsx +1 -1
  57. package/corpus/templates/brain/app/routes/settings.tsx +1 -1
  58. package/corpus/templates/brain/app/routes/sources.tsx +2 -2
  59. package/corpus/templates/brain/changelog/2026-06-29-search-settings-and-source-layouts-adapt-when-the-agent-sidebar.md +6 -0
  60. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +4 -4
  61. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +3 -2
  62. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +4 -2
  63. package/corpus/templates/calendar/app/global.css +69 -35
  64. package/corpus/templates/calendar/changelog/2026-06-29-event-and-find-time-layouts-adapt-when-the-agent-sidebar-is.md +6 -0
  65. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
  66. package/corpus/templates/chat/app/global.css +35 -35
  67. package/corpus/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  68. package/corpus/templates/clips/AGENTS.md +13 -0
  69. package/corpus/templates/clips/actions/get-screen-memory-status.ts +12 -0
  70. package/corpus/templates/clips/actions/query-screen-memory-context.ts +29 -0
  71. package/corpus/templates/clips/actions/view-screen.ts +2 -2
  72. package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
  73. package/corpus/templates/clips/app/global.css +47 -35
  74. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +3 -3
  75. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +45 -18
  76. package/corpus/templates/clips/changelog/2026-06-29-meeting-detail-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  77. package/corpus/templates/clips/changelog/2026-06-29-screen-memory-keeps-a-local-rolling-screen-buffer-for-agent-context.md +5 -0
  78. package/corpus/templates/clips/changelog/2026-06-29-video-chat-is-easier-to-find-on-recording-pages-and-s3-setup.md +6 -0
  79. package/corpus/templates/clips/chrome-extension/src/styles.css +39 -39
  80. package/corpus/templates/clips/desktop/src/app.tsx +290 -1
  81. package/corpus/templates/clips/desktop/src/shared/config.ts +83 -0
  82. package/corpus/templates/clips/desktop/src/styles.css +67 -52
  83. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +50 -0
  84. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +17 -0
  85. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +13 -13
  86. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +990 -0
  87. package/corpus/templates/clips/server/plugins/onboarding.ts +2 -0
  88. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +3 -3
  89. package/corpus/templates/content/app/components/layout/Layout.tsx +1 -1
  90. package/corpus/templates/content/app/global.css +29 -15
  91. package/corpus/templates/content/changelog/2026-06-29-database-gallery-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  92. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +25 -20
  93. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -0
  94. package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +8 -0
  95. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +13 -0
  96. package/corpus/templates/design/AGENTS.md +20 -12
  97. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +1054 -0
  98. package/corpus/templates/design/actions/apply-visual-edit.ts +24 -4
  99. package/corpus/templates/design/actions/export-coding-handoff.ts +12 -4
  100. package/corpus/templates/design/actions/generate-design.ts +6 -21
  101. package/corpus/templates/design/actions/generate-screens.ts +43 -2
  102. package/corpus/templates/design/actions/get-design.ts +1 -0
  103. package/corpus/templates/design/actions/present-design-variants.ts +355 -30
  104. package/corpus/templates/design/actions/view-screen.ts +75 -31
  105. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +329 -69
  106. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +1 -1
  107. package/corpus/templates/design/app/components/design/EditPanel.tsx +479 -77
  108. package/corpus/templates/design/app/components/design/LayersPanel.tsx +380 -216
  109. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1050 -196
  110. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +83 -206
  111. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +1 -1
  112. package/corpus/templates/design/app/components/design/index.ts +0 -1
  113. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +225 -133
  114. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +122 -11
  115. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +24 -5
  116. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -1
  117. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +37 -12
  118. package/corpus/templates/design/app/components/design/inspector/index.ts +1 -0
  119. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +12 -5
  120. package/corpus/templates/design/app/components/design/types.ts +9 -0
  121. package/corpus/templates/design/app/components/layout/Layout.tsx +23 -5
  122. package/corpus/templates/design/app/global.css +77 -49
  123. package/corpus/templates/design/app/hooks/use-question-flow.ts +2 -2
  124. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +8 -1
  125. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
  126. package/corpus/templates/design/app/i18n-data.ts +45 -3
  127. package/corpus/templates/design/app/pages/DesignEditor.tsx +2602 -657
  128. package/corpus/templates/design/app/root.tsx +1 -1
  129. package/corpus/templates/design/changelog/2026-06-29-containers-no-longer-block-selecting-nested-elements-and-nor.md +6 -0
  130. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-generate-and-refine-variants-from-stronger.md +6 -0
  131. package/corpus/templates/design/changelog/2026-06-29-design-inspector-controls-now-match-figmas-softer-dark-chrome.md +6 -0
  132. package/corpus/templates/design/changelog/2026-06-29-design-questions-now-appear-as-a-cleaner-canvas-intake-with-.md +6 -0
  133. package/corpus/templates/design/changelog/2026-06-29-design-variant-directions-now-appear-as-board-screens-with-chat-buttons.md +5 -0
  134. package/corpus/templates/design/changelog/2026-06-29-element-selection-no-longer-snaps-back-to-the-previous-layer.md +6 -0
  135. package/corpus/templates/design/changelog/2026-06-29-frame-resize-measurements-now-stay-beside-the-cursor-while-d.md +6 -0
  136. package/corpus/templates/design/changelog/2026-06-29-inspector-number-fields-have-cleaner-tooltips-and-draggable-.md +6 -0
  137. package/corpus/templates/design/changelog/2026-06-29-layer-locking-layer-nesting-generated-question-intake-and-im.md +6 -0
  138. package/corpus/templates/design/changelog/2026-06-29-layer-names-in-the-sidebar-can-scroll-horizontally-instead-o.md +6 -0
  139. package/corpus/templates/design/changelog/2026-06-29-layer-nesting-in-the-sidebar-now-uses-tighter-spacing-so-nam.md +6 -0
  140. package/corpus/templates/design/changelog/2026-06-29-layers-no-longer-repeat-document-wrapper-rows-when-a-screen-.md +6 -0
  141. package/corpus/templates/design/changelog/2026-06-29-overview-previews-now-keep-element-hover-and-selection-tied-.md +6 -0
  142. package/corpus/templates/design/changelog/2026-06-29-pressing-escape-now-cancels-a-stuck-screen-drag-in-the-overv.md +6 -0
  143. package/corpus/templates/design/changelog/2026-06-29-screen-overview-is-easier-to-find-and-named-screens-open-dir.md +6 -0
  144. package/corpus/templates/design/changelog/2026-06-29-screen-overview-only-highlights-screens-when-the-frame-or-ti.md +6 -0
  145. package/corpus/templates/design/changelog/2026-06-29-screen-overview-previews-now-resize-to-match-the-selected-de.md +6 -0
  146. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-now-uses-a-pointer-cursor-instead-.md +6 -0
  147. package/corpus/templates/design/changelog/2026-06-29-screen-overview-selection-outlines-now-stay-locked-to-the-se.md +6 -0
  148. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zoom-now-reports-real-screen-scale-separatel.md +6 -0
  149. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-feels-smoother-and-selection-outline.md +6 -0
  150. package/corpus/templates/design/changelog/2026-06-29-screen-overview-zooming-now-stays-on-the-overview-canvas-ins.md +6 -0
  151. package/corpus/templates/design/changelog/2026-06-29-selecting-a-nested-layer-from-all-screens-now-keeps-you-in-a.md +6 -0
  152. package/corpus/templates/design/changelog/2026-06-29-share-now-groups-link-sharing-exports-and-agent-handoff.md +6 -0
  153. package/corpus/templates/design/changelog/2026-06-29-the-design-editor-loading-skeleton-now-uses-a-softer-charcoa.md +6 -0
  154. package/corpus/templates/design/changelog/2026-06-29-the-device-preview-menu-now-sits-next-to-the-preview-button-.md +6 -0
  155. package/corpus/templates/design/changelog/2026-06-29-the-inspector-stays-read-only-while-an-empty-design-is-still.md +6 -0
  156. package/corpus/templates/design/changelog/2026-06-29-the-missing-design-view-now-matches-the-rest-of-the-editor-c.md +6 -0
  157. package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-icon-and-tool-option-menus-better-match-the-edi.md +6 -0
  158. package/corpus/templates/design/changelog/2026-06-29-typography-controls-now-keep-the-font-name-visible-and-move-.md +6 -0
  159. package/corpus/templates/design/e2e/README.md +3 -3
  160. package/corpus/templates/design/e2e/global-setup.ts +11 -22
  161. package/corpus/templates/design/e2e/helpers.ts +122 -11
  162. package/corpus/templates/design/playwright.config.ts +9 -3
  163. package/corpus/templates/design/server/lib/coding-handoff.ts +126 -2
  164. package/corpus/templates/design/server/plugins/core-routes.ts +1 -2
  165. package/corpus/templates/design/server/routes/api/design-handoff/[id].zip.get.ts +86 -0
  166. package/corpus/templates/design/shared/code-layer.ts +125 -22
  167. package/corpus/templates/design/shared/generation-session.ts +41 -0
  168. package/corpus/templates/dispatch/app/global.css +79 -35
  169. package/corpus/templates/dispatch/app/routes/integrations.tsx +8 -7
  170. package/corpus/templates/dispatch/changelog/2026-06-29-integration-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  171. package/corpus/templates/forms/app/components/layout/Layout.tsx +6 -2
  172. package/corpus/templates/forms/app/global.css +64 -35
  173. package/corpus/templates/forms/app/pages/FormsListPage.tsx +2 -2
  174. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +3 -3
  175. package/corpus/templates/forms/changelog/2026-06-29-form-list-and-insight-layouts-adapt-when-the-agent-sidebar.md +6 -0
  176. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -1
  177. package/corpus/templates/macros/app/global.css +25 -9
  178. package/corpus/templates/macros/changelog/2026-06-29-macro-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  179. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +6 -2
  180. package/corpus/templates/mail/app/global.css +42 -36
  181. package/corpus/templates/mail/app/pages/InboxPage.tsx +1 -1
  182. package/corpus/templates/mail/changelog/2026-06-29-the-contact-panel-now-adapts-to-the-available-mail-pane-width.md +6 -0
  183. package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -1
  184. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +6 -7
  185. package/corpus/templates/plan/app/global.css +74 -42
  186. package/corpus/templates/plan/changelog/2026-06-29-plan-document-blocks-adapt-to-the-available-document-width.md +6 -0
  187. package/corpus/templates/plan/changelog/2026-06-29-plan-titles-and-summaries-can-be-edited-inline-without-focus.md +6 -0
  188. package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -1
  189. package/corpus/templates/slides/app/global.css +49 -33
  190. package/corpus/templates/slides/changelog/2026-06-29-slide-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  191. package/corpus/templates/videos/app/components/layout/Layout.tsx +3 -1
  192. package/corpus/templates/videos/app/global.css +35 -35
  193. package/corpus/templates/videos/changelog/2026-06-29-video-layouts-adapt-when-the-agent-sidebar-is-open.md +6 -0
  194. package/dist/cli/mcp.d.ts.map +1 -1
  195. package/dist/cli/mcp.js +10 -0
  196. package/dist/cli/mcp.js.map +1 -1
  197. package/dist/cli/skills.d.ts.map +1 -1
  198. package/dist/cli/skills.js +58 -12
  199. package/dist/cli/skills.js.map +1 -1
  200. package/dist/client/error-format.d.ts.map +1 -1
  201. package/dist/client/error-format.js +17 -0
  202. package/dist/client/error-format.js.map +1 -1
  203. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  204. package/dist/client/extensions/ExtensionViewer.js +3 -4
  205. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  206. package/dist/client/guided-questions.d.ts +4 -0
  207. package/dist/client/guided-questions.d.ts.map +1 -1
  208. package/dist/client/guided-questions.js +16 -7
  209. package/dist/client/guided-questions.js.map +1 -1
  210. package/dist/client/onboarding/OnboardingPanel.js +26 -1
  211. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  212. package/dist/client/resources/BuiltinCapabilityDetail.d.ts.map +1 -1
  213. package/dist/client/resources/BuiltinCapabilityDetail.js +1 -1
  214. package/dist/client/resources/BuiltinCapabilityDetail.js.map +1 -1
  215. package/dist/client/resources/use-builtin-capabilities.d.ts +1 -1
  216. package/dist/client/resources/use-builtin-capabilities.d.ts.map +1 -1
  217. package/dist/client/resources/use-builtin-capabilities.js +2 -1
  218. package/dist/client/resources/use-builtin-capabilities.js.map +1 -1
  219. package/dist/client/session-replay.d.ts.map +1 -1
  220. package/dist/client/session-replay.js +31 -0
  221. package/dist/client/session-replay.js.map +1 -1
  222. package/dist/client/sharing/ShareButton.d.ts +14 -0
  223. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  224. package/dist/client/sharing/ShareButton.js +36 -7
  225. package/dist/client/sharing/ShareButton.js.map +1 -1
  226. package/dist/coding-tools/index.js +1 -1
  227. package/dist/coding-tools/index.js.map +1 -1
  228. package/dist/collab/routes.d.ts +1 -1
  229. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  230. package/dist/mcp/index.d.ts +2 -0
  231. package/dist/mcp/index.d.ts.map +1 -1
  232. package/dist/mcp/index.js +1 -0
  233. package/dist/mcp/index.js.map +1 -1
  234. package/dist/mcp/screen-memory-stdio.d.ts +6 -0
  235. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -0
  236. package/dist/mcp/screen-memory-stdio.js +213 -0
  237. package/dist/mcp/screen-memory-stdio.js.map +1 -0
  238. package/dist/mcp-client/builtin-capabilities.d.ts +1 -1
  239. package/dist/mcp-client/builtin-capabilities.d.ts.map +1 -1
  240. package/dist/mcp-client/builtin-capabilities.js +10 -0
  241. package/dist/mcp-client/builtin-capabilities.js.map +1 -1
  242. package/dist/mcp-client/index.d.ts +1 -0
  243. package/dist/mcp-client/index.d.ts.map +1 -1
  244. package/dist/mcp-client/index.js +1 -0
  245. package/dist/mcp-client/index.js.map +1 -1
  246. package/dist/mcp-client/screen-memory-local.d.ts +61 -0
  247. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -0
  248. package/dist/mcp-client/screen-memory-local.js +336 -0
  249. package/dist/mcp-client/screen-memory-local.js.map +1 -0
  250. package/dist/notifications/routes.d.ts +2 -2
  251. package/dist/observability/routes.d.ts +8 -8
  252. package/dist/onboarding/types.d.ts +7 -0
  253. package/dist/onboarding/types.d.ts.map +1 -1
  254. package/dist/onboarding/types.js.map +1 -1
  255. package/dist/resources/handlers.d.ts +2 -2
  256. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  257. package/dist/server/agent-chat-plugin.js +26 -0
  258. package/dist/server/agent-chat-plugin.js.map +1 -1
  259. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  260. package/dist/server/agents-bundle.d.ts.map +1 -1
  261. package/dist/server/agents-bundle.js +22 -7
  262. package/dist/server/agents-bundle.js.map +1 -1
  263. package/dist/server/transcribe-voice.d.ts +1 -1
  264. package/dist/styles/agent-native.css +5 -0
  265. package/dist/templates/default/app/global.css +35 -35
  266. package/docs/content/locales/ar-SA/template-design.mdx +6 -0
  267. package/docs/content/locales/de-DE/template-design.mdx +8 -0
  268. package/docs/content/locales/es-ES/template-design.mdx +10 -2
  269. package/docs/content/locales/fr-FR/template-design.mdx +10 -2
  270. package/docs/content/locales/hi-IN/template-design.mdx +7 -0
  271. package/docs/content/locales/ja-JP/template-design.mdx +7 -0
  272. package/docs/content/locales/ko-KR/template-design.mdx +7 -0
  273. package/docs/content/locales/pt-BR/template-design.mdx +9 -2
  274. package/docs/content/locales/zh-CN/template-design.mdx +6 -0
  275. package/docs/content/locales/zh-TW/template-design.mdx +6 -0
  276. package/docs/content/template-design.mdx +9 -2
  277. package/package.json +1 -1
  278. package/src/templates/default/app/global.css +35 -35
  279. package/corpus/templates/design/app/components/design/VariantGrid.tsx +0 -189
  280. package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +0 -115
  281. package/corpus/templates/design/app/hooks/use-variant-flow.ts +0 -342
@@ -828,7 +828,7 @@ function ConnectionRow({
828
828
  connection.status === "disabled";
829
829
  return (
830
830
  <article className="rounded-lg border bg-card shadow-sm">
831
- <div className="grid gap-4 p-4 lg:grid-cols-[minmax(0,1fr)_minmax(320px,0.9fr)]">
831
+ <div className="dispatch-connection-card-grid grid gap-4 p-4">
832
832
  <div className="min-w-0 space-y-3">
833
833
  <div className="flex flex-wrap items-start justify-between gap-3">
834
834
  <div className="flex min-w-0 items-start gap-3">
@@ -886,7 +886,7 @@ function ConnectionRow({
886
886
  </div>
887
887
  </div>
888
888
 
889
- <div className="grid gap-2 sm:grid-cols-2 xl:grid-cols-4">
889
+ <div className="dispatch-connection-meta-grid grid gap-2">
890
890
  <ConnectionMeta
891
891
  icon={IconKey}
892
892
  label={t("integrations.credentialRefs")}
@@ -2365,9 +2365,10 @@ export default function WorkspaceIntegrationsRoute() {
2365
2365
  >
2366
2366
  <div className="space-y-6">
2367
2367
  <section
2368
+ data-usage-tracked={usageTracked ? "true" : undefined}
2368
2369
  className={cx(
2369
- "grid gap-3 md:grid-cols-2",
2370
- usageTracked ? "xl:grid-cols-5" : "xl:grid-cols-4",
2370
+ "dispatch-integrations-summary-grid grid gap-3",
2371
+ usageTracked && "dispatch-integrations-summary-grid-tracked",
2371
2372
  )}
2372
2373
  >
2373
2374
  <SummaryCard
@@ -2452,7 +2453,7 @@ export default function WorkspaceIntegrationsRoute() {
2452
2453
  </p>
2453
2454
  </div>
2454
2455
  </div>
2455
- <div className="grid gap-3 md:grid-cols-2 xl:grid-cols-3">
2456
+ <div className="dispatch-provider-grid grid gap-3">
2456
2457
  {providers.map((provider) => (
2457
2458
  <ProviderCard
2458
2459
  key={provider.id}
@@ -2586,7 +2587,7 @@ function IntegrationOnboarding() {
2586
2587
 
2587
2588
  return (
2588
2589
  <section className="rounded-lg border bg-card px-4 py-3 shadow-sm">
2589
- <div className="grid gap-3 lg:grid-cols-[minmax(0,0.9fr)_minmax(0,1.6fr)] lg:items-center">
2590
+ <div className="dispatch-onboarding-grid grid gap-3">
2590
2591
  <div>
2591
2592
  <h2 className="text-sm font-semibold text-foreground">
2592
2593
  {t("integrations.onboardingTitle")}
@@ -2595,7 +2596,7 @@ function IntegrationOnboarding() {
2595
2596
  {t("integrations.onboardingDescription")}
2596
2597
  </p>
2597
2598
  </div>
2598
- <div className="grid gap-2 sm:grid-cols-3">
2599
+ <div className="dispatch-onboarding-steps-grid grid gap-2">
2599
2600
  {steps.map((step) => {
2600
2601
  const Icon = step.icon;
2601
2602
  return (
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Integration layouts now adapt cleanly when the agent sidebar narrows the app.
@@ -80,7 +80,9 @@ export function Layout({ children }: LayoutProps) {
80
80
  <div className="agent-layout-main-surface flex min-w-0 flex-1 overflow-hidden">
81
81
  <div className="flex h-full flex-1 flex-col overflow-hidden">
82
82
  <InvitationBanner />
83
- <main className="flex-1 overflow-hidden">{children}</main>
83
+ <main className="agent-native-app-main flex-1 overflow-hidden">
84
+ {children}
85
+ </main>
84
86
  </div>
85
87
  </div>
86
88
  ) : (
@@ -103,7 +105,9 @@ export function Layout({ children }: LayoutProps) {
103
105
  <div className="flex h-full flex-1 flex-col overflow-hidden">
104
106
  {showHeader ? <Header /> : null}
105
107
  <InvitationBanner />
106
- <main className="flex-1 overflow-auto">{children}</main>
108
+ <main className="agent-native-app-main flex-1 overflow-auto">
109
+ {children}
110
+ </main>
107
111
  </div>
108
112
  </AgentSidebar>
109
113
  )}
@@ -8,64 +8,64 @@
8
8
 
9
9
  :root {
10
10
  --background: 0 0% 100%;
11
- --foreground: 220 10% 10%;
11
+ --foreground: 0 0% 10%;
12
12
  --card: 0 0% 100%;
13
- --card-foreground: 220 10% 10%;
13
+ --card-foreground: 0 0% 10%;
14
14
  --popover: 0 0% 100%;
15
- --popover-foreground: 220 10% 10%;
16
- --primary: 220 10% 15%;
15
+ --popover-foreground: 0 0% 10%;
16
+ --primary: 0 0% 15%;
17
17
  --primary-foreground: 0 0% 100%;
18
- --secondary: 220 10% 95%;
19
- --secondary-foreground: 220 10% 15%;
20
- --muted: 220 10% 95%;
21
- --muted-foreground: 220 5% 45%;
22
- --accent: 220 10% 95%;
23
- --accent-foreground: 220 10% 15%;
18
+ --secondary: 0 0% 95%;
19
+ --secondary-foreground: 0 0% 15%;
20
+ --muted: 0 0% 95%;
21
+ --muted-foreground: 0 0% 45%;
22
+ --accent: 0 0% 95%;
23
+ --accent-foreground: 0 0% 15%;
24
24
  --destructive: 0 84% 60%;
25
25
  --destructive-foreground: 0 0% 98%;
26
- --border: 220 10% 90%;
27
- --input: 220 10% 90%;
28
- --ring: 220 10% 40%;
26
+ --border: 0 0% 90%;
27
+ --input: 0 0% 90%;
28
+ --ring: 0 0% 40%;
29
29
  --radius: 0.5rem;
30
30
 
31
- --sidebar-background: 220 10% 97%;
32
- --sidebar-foreground: 220 5% 45%;
33
- --sidebar-primary: 220 10% 15%;
31
+ --sidebar-background: 0 0% 97%;
32
+ --sidebar-foreground: 0 0% 45%;
33
+ --sidebar-primary: 0 0% 15%;
34
34
  --sidebar-primary-foreground: 0 0% 100%;
35
- --sidebar-accent: 220 10% 95%;
36
- --sidebar-accent-foreground: 220 10% 15%;
37
- --sidebar-border: 220 10% 90%;
38
- --sidebar-ring: 220 10% 40%;
35
+ --sidebar-accent: 0 0% 95%;
36
+ --sidebar-accent-foreground: 0 0% 15%;
37
+ --sidebar-border: 0 0% 90%;
38
+ --sidebar-ring: 0 0% 40%;
39
39
  }
40
40
 
41
41
  .dark {
42
- --background: 220 6% 6%;
42
+ --background: 0 0% 13%;
43
43
  --foreground: 0 0% 90%;
44
- --card: 220 5% 6%;
44
+ --card: 0 0% 15%;
45
45
  --card-foreground: 0 0% 90%;
46
- --popover: 220 5% 6%;
46
+ --popover: 0 0% 15%;
47
47
  --popover-foreground: 0 0% 90%;
48
48
  --primary: 0 0% 75%;
49
- --primary-foreground: 220 6% 6%;
50
- --secondary: 220 4% 12%;
49
+ --primary-foreground: 0 0% 10%;
50
+ --secondary: 0 0% 18%;
51
51
  --secondary-foreground: 0 0% 90%;
52
- --muted: 220 4% 10%;
53
- --muted-foreground: 220 4% 60%;
54
- --accent: 220 4% 13%;
52
+ --muted: 0 0% 16%;
53
+ --muted-foreground: 0 0% 60%;
54
+ --accent: 0 0% 18%;
55
55
  --accent-foreground: 0 0% 90%;
56
56
  --destructive: 0 63% 51%;
57
57
  --destructive-foreground: 0 0% 98%;
58
- --border: 220 4% 14%;
59
- --input: 220 4% 14%;
58
+ --border: 0 0% 24%;
59
+ --input: 0 0% 24%;
60
60
  --ring: 0 0% 60%;
61
61
 
62
- --sidebar-background: 220 6% 4%;
63
- --sidebar-foreground: 220 4% 60%;
62
+ --sidebar-background: 0 0% 10%;
63
+ --sidebar-foreground: 0 0% 60%;
64
64
  --sidebar-primary: 0 0% 75%;
65
- --sidebar-primary-foreground: 220 6% 6%;
66
- --sidebar-accent: 220 4% 10%;
65
+ --sidebar-primary-foreground: 0 0% 10%;
66
+ --sidebar-accent: 0 0% 16%;
67
67
  --sidebar-accent-foreground: 0 0% 90%;
68
- --sidebar-border: 220 4% 10%;
68
+ --sidebar-border: 0 0% 20%;
69
69
  --sidebar-ring: 0 0% 60%;
70
70
  }
71
71
 
@@ -113,6 +113,35 @@
113
113
  filter: none;
114
114
  }
115
115
 
116
+ @container agent-native-main (min-width: 640px) {
117
+ .forms-response-metrics-grid {
118
+ grid-template-columns: repeat(2, minmax(0, 1fr));
119
+ }
120
+ }
121
+
122
+ @container agent-native-main (min-width: 720px) {
123
+ .forms-list-skeleton-row {
124
+ grid-template-columns: minmax(0, 1fr) 120px 120px 80px;
125
+ }
126
+
127
+ .forms-list-row {
128
+ grid-template-columns: minmax(0, 1fr) 110px 140px 88px 40px;
129
+ align-items: center;
130
+ }
131
+ }
132
+
133
+ @container agent-native-main (min-width: 960px) {
134
+ .forms-response-insights-grid {
135
+ grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
136
+ }
137
+ }
138
+
139
+ @container agent-native-main (min-width: 1180px) {
140
+ .forms-response-metrics-grid {
141
+ grid-template-columns: repeat(4, minmax(0, 1fr));
142
+ }
143
+ }
144
+
116
145
  .forms-ask-chat-panel
117
146
  [data-agent-empty-state="centered"]
118
147
  .agent-composer-area--hero {
@@ -273,7 +273,7 @@ export function FormsListPage() {
273
273
  {Array.from({ length: 6 }).map((_, i) => (
274
274
  <div
275
275
  key={i}
276
- className="grid gap-3 border-b border-border px-3 py-3 last:border-b-0 md:grid-cols-[minmax(0,1fr)_120px_120px_80px]"
276
+ className="forms-list-skeleton-row grid gap-3 border-b border-border px-3 py-3 last:border-b-0"
277
277
  >
278
278
  <div className="min-w-0 space-y-2">
279
279
  <Skeleton className="h-4 w-3/4" />
@@ -459,7 +459,7 @@ export function FormsListPage() {
459
459
  <div
460
460
  key={form.id}
461
461
  className={cn(
462
- "group grid cursor-pointer gap-3 border-b border-border px-3 py-3 last:border-b-0 md:grid-cols-[minmax(0,1fr)_110px_140px_88px_40px] md:items-center",
462
+ "forms-list-row group grid cursor-pointer gap-3 border-b border-border px-3 py-3 last:border-b-0",
463
463
  isArchive
464
464
  ? "opacity-80 hover:opacity-100 hover:bg-accent/25"
465
465
  : "hover:bg-accent/25",
@@ -119,7 +119,7 @@ function LoadingState() {
119
119
  return (
120
120
  <div className="space-y-4 p-4">
121
121
  <Skeleton className="h-10 w-72" />
122
- <div className="grid gap-3 sm:grid-cols-4">
122
+ <div className="forms-response-metrics-grid grid gap-3">
123
123
  {Array.from({ length: 4 }).map((_, index) => (
124
124
  <Skeleton key={index} className="h-20 rounded-md" />
125
125
  ))}
@@ -204,9 +204,9 @@ export function ResponseInsightsPage() {
204
204
  </Button>
205
205
  </header>
206
206
 
207
- <main className="grid gap-4 p-4 lg:grid-cols-[minmax(0,1fr)_minmax(360px,0.9fr)]">
207
+ <main className="forms-response-insights-grid grid gap-4 p-4">
208
208
  <section className="space-y-4">
209
- <div className="grid gap-3 sm:grid-cols-2 xl:grid-cols-4">
209
+ <div className="forms-response-metrics-grid grid gap-3">
210
210
  <Metric
211
211
  label="Responses"
212
212
  value={formatNumber(summary.responses)}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Form lists and response insights now adapt cleanly when the agent sidebar narrows the app.
@@ -163,7 +163,9 @@ export function AppLayout({ children }: { children: React.ReactNode }) {
163
163
  {/* Page content */}
164
164
  <div className="agent-layout-main-surface flex min-w-0 flex-1 flex-col overflow-hidden">
165
165
  <Header onOpenSidebar={() => setSidebarOpen(true)} />
166
- <main className="min-w-0 flex-1 overflow-y-auto">{children}</main>
166
+ <main className="agent-native-app-main min-w-0 flex-1 overflow-y-auto">
167
+ {children}
168
+ </main>
167
169
  </div>
168
170
  <SyncIndicator sidebarCollapsed={desktopSidebarCollapsed} />
169
171
  </div>
@@ -8,26 +8,34 @@
8
8
  @source "./**/*.{ts,tsx}";
9
9
 
10
10
  :root {
11
- --background: 0 0% 4%;
11
+ --background: 0 0% 13%;
12
12
  --foreground: 0 0% 98%;
13
- --card: 0 0% 6%;
13
+ --card: 0 0% 15%;
14
14
  --card-foreground: 0 0% 98%;
15
- --popover: 0 0% 6%;
15
+ --popover: 0 0% 15%;
16
16
  --popover-foreground: 0 0% 98%;
17
17
  --primary: 0 0% 98%;
18
- --primary-foreground: 0 0% 4%;
19
- --secondary: 0 0% 10%;
18
+ --primary-foreground: 0 0% 10%;
19
+ --secondary: 0 0% 18%;
20
20
  --secondary-foreground: 0 0% 96%;
21
- --muted: 0 0% 14%;
21
+ --muted: 0 0% 16%;
22
22
  --muted-foreground: 0 0% 50%;
23
- --accent: 0 0% 12%;
23
+ --accent: 0 0% 18%;
24
24
  --accent-foreground: 0 0% 98%;
25
25
  --destructive: 0 72% 51%;
26
26
  --destructive-foreground: 0 0% 98%;
27
- --border: 0 0% 14%;
28
- --input: 0 0% 14%;
27
+ --border: 0 0% 24%;
28
+ --input: 0 0% 24%;
29
29
  --ring: 0 0% 35%;
30
30
  --radius: 0.75rem;
31
+ --sidebar-background: 0 0% 10%;
32
+ --sidebar-foreground: 0 0% 50%;
33
+ --sidebar-primary: 0 0% 98%;
34
+ --sidebar-primary-foreground: 0 0% 10%;
35
+ --sidebar-accent: 0 0% 16%;
36
+ --sidebar-accent-foreground: 0 0% 98%;
37
+ --sidebar-border: 0 0% 20%;
38
+ --sidebar-ring: 0 0% 35%;
31
39
  }
32
40
 
33
41
  .light {
@@ -50,6 +58,14 @@
50
58
  --border: 0 0% 90%;
51
59
  --input: 0 0% 90%;
52
60
  --ring: 0 0% 20%;
61
+ --sidebar-background: 0 0% 98%;
62
+ --sidebar-foreground: 0 0% 45%;
63
+ --sidebar-primary: 0 0% 8%;
64
+ --sidebar-primary-foreground: 0 0% 100%;
65
+ --sidebar-accent: 0 0% 94%;
66
+ --sidebar-accent-foreground: 0 0% 8%;
67
+ --sidebar-border: 0 0% 90%;
68
+ --sidebar-ring: 0 0% 20%;
53
69
  }
54
70
 
55
71
  @layer base {
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ Macro layouts adapt when the agent sidebar is open.
@@ -1798,7 +1798,9 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1798
1798
  view !== "draft-queue" ? (
1799
1799
  <GoogleConnectBanner variant="hero" />
1800
1800
  ) : (
1801
- <main className="flex flex-1 overflow-hidden">{children}</main>
1801
+ <main className="agent-native-app-main flex flex-1 overflow-hidden">
1802
+ {children}
1803
+ </main>
1802
1804
  )}
1803
1805
  </div>
1804
1806
  </div>
@@ -2120,7 +2122,9 @@ function StandardLayout({ children }: AppLayoutProps) {
2120
2122
 
2121
2123
  <InvitationBanner />
2122
2124
 
2123
- <main className="flex flex-1 overflow-hidden">{children}</main>
2125
+ <main className="agent-native-app-main flex flex-1 overflow-hidden">
2126
+ {children}
2127
+ </main>
2124
2128
  </div>
2125
2129
  );
2126
2130
  }
@@ -8,63 +8,63 @@
8
8
 
9
9
  :root {
10
10
  --background: 0 0% 100%;
11
- --foreground: 220 10% 10%;
11
+ --foreground: 0 0% 10%;
12
12
  --card: 0 0% 100%;
13
- --card-foreground: 220 10% 10%;
13
+ --card-foreground: 0 0% 10%;
14
14
  --popover: 0 0% 100%;
15
- --popover-foreground: 220 10% 10%;
16
- --primary: 220 10% 15%;
15
+ --popover-foreground: 0 0% 10%;
16
+ --primary: 0 0% 15%;
17
17
  --primary-foreground: 0 0% 100%;
18
- --secondary: 220 10% 95%;
19
- --secondary-foreground: 220 10% 15%;
20
- --muted: 220 10% 95%;
21
- --muted-foreground: 220 5% 45%;
22
- --accent: 220 10% 95%;
23
- --accent-foreground: 220 10% 15%;
18
+ --secondary: 0 0% 95%;
19
+ --secondary-foreground: 0 0% 15%;
20
+ --muted: 0 0% 95%;
21
+ --muted-foreground: 0 0% 45%;
22
+ --accent: 0 0% 95%;
23
+ --accent-foreground: 0 0% 15%;
24
24
  --destructive: 0 84% 60%;
25
25
  --destructive-foreground: 0 0% 98%;
26
- --border: 220 10% 90%;
27
- --input: 220 10% 90%;
28
- --ring: 220 10% 40%;
26
+ --border: 0 0% 90%;
27
+ --input: 0 0% 90%;
28
+ --ring: 0 0% 40%;
29
29
  --radius: 0.5rem;
30
- --sidebar-background: 220 10% 97%;
31
- --sidebar-foreground: 220 5% 45%;
32
- --sidebar-primary: 220 10% 15%;
30
+ --sidebar-background: 0 0% 97%;
31
+ --sidebar-foreground: 0 0% 45%;
32
+ --sidebar-primary: 0 0% 15%;
33
33
  --sidebar-primary-foreground: 0 0% 100%;
34
- --sidebar-accent: 220 10% 95%;
35
- --sidebar-accent-foreground: 220 10% 15%;
36
- --sidebar-border: 220 10% 90%;
37
- --sidebar-ring: 220 10% 40%;
34
+ --sidebar-accent: 0 0% 95%;
35
+ --sidebar-accent-foreground: 0 0% 15%;
36
+ --sidebar-border: 0 0% 90%;
37
+ --sidebar-ring: 0 0% 40%;
38
38
  }
39
39
 
40
40
  .dark {
41
- --background: 220 6% 6%;
41
+ --background: 0 0% 13%;
42
42
  --foreground: 0 0% 90%;
43
- --card: 220 5% 6%;
43
+ --card: 0 0% 15%;
44
44
  --card-foreground: 0 0% 90%;
45
- --popover: 220 5% 6%;
45
+ --popover: 0 0% 15%;
46
46
  --popover-foreground: 0 0% 90%;
47
47
  --primary: 0 0% 75%;
48
- --primary-foreground: 220 6% 6%;
49
- --secondary: 220 4% 12%;
48
+ --primary-foreground: 0 0% 10%;
49
+ --secondary: 0 0% 18%;
50
50
  --secondary-foreground: 0 0% 90%;
51
- --muted: 220 4% 10%;
52
- --muted-foreground: 220 4% 60%;
53
- --accent: 220 4% 13%;
51
+ --muted: 0 0% 16%;
52
+ --muted-foreground: 0 0% 60%;
53
+ --accent: 0 0% 18%;
54
54
  --accent-foreground: 0 0% 90%;
55
55
  --destructive: 0 63% 51%;
56
56
  --destructive-foreground: 0 0% 98%;
57
- --border: 220 4% 14%;
58
- --input: 220 4% 14%;
57
+ --border: 0 0% 24%;
58
+ --input: 0 0% 24%;
59
59
  --ring: 0 0% 60%;
60
60
  --radius: 0.5rem;
61
- --sidebar-background: 220 6% 4%;
62
- --sidebar-foreground: 220 4% 60%;
61
+ --sidebar-background: 0 0% 10%;
62
+ --sidebar-foreground: 0 0% 60%;
63
63
  --sidebar-primary: 0 0% 75%;
64
- --sidebar-primary-foreground: 220 6% 6%;
65
- --sidebar-accent: 220 4% 10%;
64
+ --sidebar-primary-foreground: 0 0% 10%;
65
+ --sidebar-accent: 0 0% 16%;
66
66
  --sidebar-accent-foreground: 0 0% 90%;
67
- --sidebar-border: 220 4% 10%;
67
+ --sidebar-border: 0 0% 20%;
68
68
  --sidebar-ring: 0 0% 60%;
69
69
  }
70
70
 
@@ -80,6 +80,12 @@
80
80
  }
81
81
  }
82
82
 
83
+ @container agent-native-main (min-width: 980px) {
84
+ .mail-contact-side-panel {
85
+ display: flex;
86
+ }
87
+ }
88
+
83
89
  /* Custom scrollbars */
84
90
  ::-webkit-scrollbar {
85
91
  width: 5px;
@@ -265,7 +271,7 @@
265
271
  }
266
272
  /* Ensure toast border is visible in dark mode */
267
273
  .dark [data-sonner-toast] {
268
- border-color: hsl(220 4% 22%) !important;
274
+ border-color: hsl(0 0% 22%) !important;
269
275
  }
270
276
 
271
277
  /* Sonner cancel button style — match action button but muted */
@@ -686,7 +686,7 @@ export function InboxPage() {
686
686
 
687
687
  {/* Right contact panel — hidden during initial load or when maximized */}
688
688
  {!emailListLoading && !(hasThread && isMaximized) && (
689
- <div className="hidden lg:flex w-[260px] shrink-0 flex-col border-s border-border/30 bg-muted/50 dark:bg-[hsl(220,6%,5%)]">
689
+ <div className="mail-contact-side-panel hidden w-[260px] shrink-0 flex-col border-s border-border/30 bg-muted/50 dark:bg-[hsl(220,6%,5%)]">
690
690
  <ContactPanel
691
691
  emailId={contactEmailId}
692
692
  contactEmail={sidebarContactEmail}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-06-29
4
+ ---
5
+
6
+ The contact panel now adapts to the available mail pane width when the agent sidebar is open.
@@ -150,7 +150,9 @@ export function Layout({ children }: LayoutProps) {
150
150
  ) : (
151
151
  <Header onOpenMobileSidebar={() => setMobileSidebarOpen(true)} />
152
152
  )}
153
- <main className="flex-1 overflow-y-auto">{children}</main>
153
+ <main className="agent-native-app-main flex-1 overflow-y-auto">
154
+ {children}
155
+ </main>
154
156
  </div>
155
157
  );
156
158
 
@@ -532,8 +532,8 @@ function CodeTabsBlock({
532
532
  return (
533
533
  <section className="plan-block" data-block-id={block.id}>
534
534
  {block.title && <div className="plan-block-label">{block.title}</div>}
535
- <div className="grid overflow-hidden border-y border-plan-line md:grid-cols-[300px_minmax(0,1fr)]">
536
- <div className="border-plan-line md:border-r">
535
+ <div className="plan-code-tabs-layout grid overflow-hidden border-y border-plan-line">
536
+ <div className="plan-code-tabs-nav border-plan-line">
537
537
  {block.data.tabs.map((tab) => (
538
538
  <button
539
539
  key={tab.id}
@@ -609,8 +609,8 @@ function ImplementationMapBlock({
609
609
  return (
610
610
  <section className="plan-block" data-block-id={block.id}>
611
611
  {block.title && <div className="plan-block-label">{block.title}</div>}
612
- <div className="grid overflow-hidden lg:grid-cols-[360px_minmax(0,1fr)]">
613
- <div className="border-plan-line lg:border-r">
612
+ <div className="plan-implementation-map-layout grid overflow-hidden">
613
+ <div className="plan-implementation-map-nav border-plan-line">
614
614
  {block.data.files.map((file, index) => (
615
615
  <button
616
616
  key={index}
@@ -698,14 +698,13 @@ function TabsBlock({
698
698
  {block.title && <div className="plan-block-label">{block.title}</div>}
699
699
  <div
700
700
  className={cn(
701
- vertical &&
702
- "grid min-w-0 gap-5 md:grid-cols-[minmax(10rem,14rem)_minmax(0,1fr)] md:items-start",
701
+ vertical && "plan-vertical-tabs-layout grid min-w-0 gap-5",
703
702
  )}
704
703
  >
705
704
  <div
706
705
  className={cn(
707
706
  vertical
708
- ? "mb-5 flex w-full min-w-0 max-w-full flex-nowrap gap-1 overflow-x-auto md:mb-0 md:max-h-[62vh] md:flex-col md:overflow-x-hidden md:overflow-y-auto md:pr-2"
707
+ ? "plan-vertical-tabs-list mb-5 flex w-full min-w-0 max-w-full flex-nowrap gap-1 overflow-x-auto"
709
708
  : "mb-8 inline-flex max-w-full gap-1 overflow-x-auto",
710
709
  )}
711
710
  role="tablist"