@agent-native/core 0.79.27 → 0.80.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +34 -0
  3. package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +5 -0
  4. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +55 -1
  5. package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +5 -0
  6. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +66 -1
  7. package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +5 -0
  8. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +65 -1
  9. package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +5 -0
  10. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +64 -1
  11. package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +5 -0
  12. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +59 -1
  13. package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +5 -0
  14. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +62 -1
  15. package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +5 -0
  16. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +58 -1
  17. package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +5 -0
  18. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +62 -1
  19. package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +5 -0
  20. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +50 -1
  21. package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +5 -0
  22. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +52 -1
  23. package/corpus/core/docs/content/skills-guide.mdx +5 -0
  24. package/corpus/core/docs/content/template-design.mdx +59 -1
  25. package/corpus/core/package.json +2 -1
  26. package/corpus/core/src/agent/engine/index.ts +1 -0
  27. package/corpus/core/src/agent/engine/registry.ts +40 -0
  28. package/corpus/core/src/agent/production-agent.ts +6 -2
  29. package/corpus/core/src/application-state/handlers.ts +1 -1
  30. package/corpus/core/src/brand-kit/index.ts +1 -1
  31. package/corpus/core/src/cli/design-connect.ts +490 -0
  32. package/corpus/core/src/cli/index.ts +16 -0
  33. package/corpus/core/src/cli/skills.ts +144 -3
  34. package/corpus/core/src/client/AgentPanel.tsx +1 -1
  35. package/corpus/core/src/client/AssistantChat.tsx +43 -7
  36. package/corpus/core/src/client/MultiTabAssistantChat.tsx +1 -1
  37. package/corpus/core/src/client/agent-chat.ts +27 -3
  38. package/corpus/core/src/client/blocks/library/MermaidBlock.tsx +1 -1
  39. package/corpus/core/src/client/blocks/library/diagram.tsx +2 -2
  40. package/corpus/core/src/client/blocks/library/wireframe.tsx +1 -1
  41. package/corpus/core/src/client/chat/message-components.tsx +1 -1
  42. package/corpus/core/src/client/chat-model-groups.ts +1 -2
  43. package/corpus/core/src/client/components/LiveCursorOverlay.tsx +33 -66
  44. package/corpus/core/src/client/composer/TiptapComposer.tsx +99 -24
  45. package/corpus/core/src/client/composer/useVoiceDictation.ts +429 -260
  46. package/corpus/core/src/client/extensions/portable-extension.ts +1 -1
  47. package/corpus/core/src/client/frame-protocol.ts +17 -2
  48. package/corpus/core/src/client/rich-markdown-editor/RegistryBlockNode.tsx +2 -2
  49. package/corpus/core/src/client/sharing/ShareButton.tsx +20 -15
  50. package/corpus/core/src/client/use-agent-engine-configured.ts +80 -28
  51. package/corpus/core/src/code-agents/transcript-normalizer.ts +1 -1
  52. package/corpus/core/src/extensions/path.ts +1 -4
  53. package/corpus/core/src/integrations/a2a-continuation-processor.ts +1 -1
  54. package/corpus/core/src/mcp/build-server.ts +1 -1
  55. package/corpus/core/src/org/handlers.ts +5 -5
  56. package/corpus/core/src/org/plugin.ts +2 -2
  57. package/corpus/core/src/scripts/call-agent.ts +1 -1
  58. package/corpus/core/src/scripts/db/safety.ts +1 -1
  59. package/corpus/core/src/server/auth.ts +3 -0
  60. package/corpus/core/src/server/builder-design-systems.ts +308 -0
  61. package/corpus/core/src/server/core-routes-plugin.ts +29 -3
  62. package/corpus/core/src/server/index.ts +8 -0
  63. package/corpus/core/src/server/transcribe-voice.ts +57 -22
  64. package/corpus/core/src/shared/mcp-embed-headers.ts +23 -1
  65. package/corpus/core/src/styles/agent-native.css +60 -4
  66. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  67. package/corpus/core/src/usage/store.ts +2 -2
  68. package/corpus/core/src/vite/client.ts +2 -0
  69. package/corpus/core/src/voice/index.ts +18 -0
  70. package/corpus/core/src/voice/voice-cleanup-prompt.ts +38 -0
  71. package/corpus/core/src/voice/voice-context.ts +217 -0
  72. package/corpus/core/src/voice/voice-replacements.ts +75 -0
  73. package/corpus/templates/analytics/AGENTS.md +4 -3
  74. package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +298 -15
  75. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +9 -4
  76. package/corpus/templates/analytics/actions/list-session-recordings.ts +6 -1
  77. package/corpus/templates/analytics/actions/mutate-dashboard.ts +18 -2
  78. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +12 -2
  79. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +557 -400
  80. package/corpus/templates/analytics/app/global.css +0 -4
  81. package/corpus/templates/analytics/app/hooks/use-replay-storage-status.ts +66 -0
  82. package/corpus/templates/analytics/app/i18n/zh-TW.ts +39 -0
  83. package/corpus/templates/analytics/app/i18n-data.ts +424 -0
  84. package/corpus/templates/analytics/app/pages/Settings.tsx +333 -0
  85. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
  86. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +121 -3
  87. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +82 -34
  88. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +7 -0
  89. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +144 -36
  90. package/corpus/templates/analytics/changelog/2026-06-28-ask-tab-now-matches-the-darker-app-background.md +6 -0
  91. package/corpus/templates/analytics/changelog/2026-06-28-dashboard-email-reports-now-use-cleaner-light-mode-snapshots.md +6 -0
  92. package/corpus/templates/analytics/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  93. package/corpus/templates/analytics/changelog/2026-06-28-sessions-now-show-only-signed-in-recordings-with-playable-re.md +6 -0
  94. package/corpus/templates/analytics/changelog/2026-06-29-analytics-agents-can-now-place-new-charts-into-requested-das.md +6 -0
  95. package/corpus/templates/analytics/changelog/2026-06-29-analytics-queries-now-report-failed-source-query-errors-inst.md +6 -0
  96. package/corpus/templates/analytics/changelog/2026-06-29-charts-can-now-be-dropped-between-full-dashboard-rows-to-cre.md +6 -0
  97. package/corpus/templates/analytics/changelog/2026-06-29-dashboard-email-reports-include-the-full-dashboard-image-wit.md +6 -0
  98. package/corpus/templates/analytics/changelog/2026-06-29-main-surface-border-reaches-the-top.md +6 -0
  99. package/corpus/templates/analytics/changelog/2026-06-29-session-replay-now-records-playable-sessions-in-production-a.md +6 -0
  100. package/corpus/templates/analytics/changelog/2026-06-29-set-up-session-replay-storage-from-settings-connect-builder-.md +6 -0
  101. package/corpus/templates/analytics/scripts/cleanup-empty-session-recordings.ts +102 -0
  102. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +3 -3
  103. package/corpus/templates/analytics/server/lib/dashboard-report.ts +75 -30
  104. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +5 -2
  105. package/corpus/templates/analytics/server/lib/real-data-actions.ts +81 -20
  106. package/corpus/templates/analytics/server/lib/replay-storage.ts +79 -0
  107. package/corpus/templates/analytics/server/lib/s3-upload-provider.ts +255 -0
  108. package/corpus/templates/analytics/server/lib/session-replay.ts +53 -12
  109. package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -2
  110. package/corpus/templates/analytics/server/plugins/onboarding.ts +97 -0
  111. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -4
  112. package/corpus/templates/assets/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  113. package/corpus/templates/brain/app/components/layout/Layout.tsx +29 -2
  114. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +131 -42
  115. package/corpus/templates/brain/app/i18n/zh-TW.ts +2 -0
  116. package/corpus/templates/brain/app/i18n-data.ts +20 -0
  117. package/corpus/templates/brain/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  118. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +29 -1
  119. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +417 -299
  120. package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
  121. package/corpus/templates/calendar/app/i18n-data.ts +20 -0
  122. package/corpus/templates/calendar/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  123. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +6 -19
  124. package/corpus/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  125. package/corpus/templates/clips/AGENTS.md +4 -0
  126. package/corpus/templates/clips/actions/cleanup-transcript.ts +39 -9
  127. package/corpus/templates/clips/actions/finalize-meeting.ts +81 -12
  128. package/corpus/templates/clips/actions/lib/agents-md-context.ts +4 -1
  129. package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -3
  130. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +1 -1
  131. package/corpus/templates/clips/app/components/player/share-dialog.tsx +2 -2
  132. package/corpus/templates/clips/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
  133. package/corpus/templates/clips/desktop/src/lib/personal-vocabulary.ts +13 -8
  134. package/corpus/templates/clips/desktop/src/lib/recorder.ts +24 -0
  135. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +105 -5
  136. package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +60 -1
  137. package/corpus/templates/content/actions/set-image-alt-text.ts +1 -1
  138. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +1 -1
  139. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +1 -1
  140. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +5 -5
  141. package/corpus/templates/content/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  142. package/corpus/templates/content/shared/document-export.ts +1 -1
  143. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -18
  144. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +154 -0
  145. package/corpus/templates/design/AGENTS.md +95 -5
  146. package/corpus/templates/design/DESIGN.md +82 -0
  147. package/corpus/templates/design/DEVELOPING.md +43 -0
  148. package/corpus/templates/design/actions/add-localhost-screens.ts +453 -0
  149. package/corpus/templates/design/actions/apply-shader.ts +277 -0
  150. package/corpus/templates/design/actions/apply-visual-edit.ts +303 -0
  151. package/corpus/templates/design/actions/connect-localhost.ts +183 -0
  152. package/corpus/templates/design/actions/edit-design.ts +195 -42
  153. package/corpus/templates/design/actions/generate-design.ts +71 -1
  154. package/corpus/templates/design/actions/generate-screens.ts +193 -0
  155. package/corpus/templates/design/actions/get-code-layer-projection.ts +191 -0
  156. package/corpus/templates/design/actions/get-shader.ts +119 -0
  157. package/corpus/templates/design/actions/index-design-system-with-builder.ts +259 -0
  158. package/corpus/templates/design/actions/list-localhost-connections.ts +95 -0
  159. package/corpus/templates/design/actions/navigate.ts +55 -2
  160. package/corpus/templates/design/actions/update-file.ts +9 -2
  161. package/corpus/templates/design/actions/view-screen.ts +68 -1
  162. package/corpus/templates/design/agent-native.app-skill.json +10 -0
  163. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +719 -0
  164. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +2120 -103
  165. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +74 -38
  166. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +401 -0
  167. package/corpus/templates/design/app/components/design/EditPanel.tsx +3966 -440
  168. package/corpus/templates/design/app/components/design/LayersPanel.tsx +1473 -0
  169. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +3940 -147
  170. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +700 -13
  171. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +105 -63
  172. package/corpus/templates/design/app/components/design/index.ts +0 -5
  173. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +353 -0
  174. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +1589 -0
  175. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +511 -0
  176. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +395 -0
  177. package/corpus/templates/design/app/components/design/inspector/FigmaColorPicker.tsx +2010 -0
  178. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +601 -0
  179. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +242 -0
  180. package/corpus/templates/design/app/components/design/inspector/SHADER_INTEGRATION.md +420 -0
  181. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +238 -0
  182. package/corpus/templates/design/app/components/design/inspector/ShaderControls.stories.tsx +71 -0
  183. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +575 -0
  184. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +106 -0
  185. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +423 -0
  186. package/corpus/templates/design/app/components/design/inspector/figma-icons.tsx +741 -0
  187. package/corpus/templates/design/app/components/design/inspector/index.ts +87 -0
  188. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +201 -0
  189. package/corpus/templates/design/app/components/design/types.ts +23 -0
  190. package/corpus/templates/design/app/components/layout/Layout.tsx +24 -13
  191. package/corpus/templates/design/app/components/layout/Sidebar.tsx +4 -4
  192. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +474 -36
  193. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +22 -5
  194. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +24 -11
  195. package/corpus/templates/design/app/global.css +149 -5
  196. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -0
  197. package/corpus/templates/design/app/hooks/use-navigation-state.ts +130 -8
  198. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +329 -0
  199. package/corpus/templates/design/app/i18n/zh-TW.ts +277 -0
  200. package/corpus/templates/design/app/i18n-data.ts +3028 -1
  201. package/corpus/templates/design/app/pages/DesignEditor.tsx +5831 -904
  202. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +57 -221
  203. package/corpus/templates/design/changelog/2026-06-28-annotate-mode-now-combines-drawing-and-comment-pins-in-one-c.md +6 -0
  204. package/corpus/templates/design/changelog/2026-06-28-design-editor-panel-borders-are-cleaner-so-the-canvas-edge-s.md +6 -0
  205. package/corpus/templates/design/changelog/2026-06-28-drawing-prompts-now-reliably-open-and-submit-to-the-design-a.md +6 -0
  206. package/corpus/templates/design/changelog/2026-06-28-editor-app-menus-now-use-an-outline-agent-native-mark-with-b.md +6 -0
  207. package/corpus/templates/design/changelog/2026-06-28-figma-style-code-design-mode.md +6 -0
  208. package/corpus/templates/design/changelog/2026-06-28-layer-selection-now-updates-chat-context-without-opening-the.md +6 -0
  209. package/corpus/templates/design/changelog/2026-06-28-layer-selections-now-preserve-hidden-and-locked-canvas-state.md +6 -0
  210. package/corpus/templates/design/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  211. package/corpus/templates/design/changelog/2026-06-28-live-cursors-now-keep-names-beside-a-cleaner-pointer-marker.md +6 -0
  212. package/corpus/templates/design/changelog/2026-06-28-mode-switching-now-lives-in-a-compact-bottom-right-icon-dock.md +6 -0
  213. package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-handles-zooming-drawing-opening-and-dele.md +6 -0
  214. package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-selects-screens-on-click-and-opens-them-.md +6 -0
  215. package/corpus/templates/design/changelog/2026-06-28-screen-overview-zooms-into-the-active-screen-with-smoother-e.md +6 -0
  216. package/corpus/templates/design/changelog/2026-06-28-selected-element-chips-in-chat-are-shorter-and-easier-to-sca.md +6 -0
  217. package/corpus/templates/design/changelog/2026-06-28-the-design-editor-toolbar-is-more-compact-and-the-app-menu-m.md +6 -0
  218. package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-at-the-top-of-the-design-sidebar-instead-of-.md +6 -0
  219. package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-in-the-right-inspector-beside-the-design-tab.md +6 -0
  220. package/corpus/templates/design/changelog/2026-06-29-active-sidebar-rows-use-soft-highlights.md +6 -0
  221. package/corpus/templates/design/changelog/2026-06-29-agents-can-now-open-screen-overview-focus-screens-and-add.md +6 -0
  222. package/corpus/templates/design/changelog/2026-06-29-canvas-selection-no-longer-flashes-broken-prototype-html-whe.md +6 -0
  223. package/corpus/templates/design/changelog/2026-06-29-command-menu-selections-are-clearer-in-dark-mode.md +6 -0
  224. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-edit-broad-copy-changes-more-reliably.md +6 -0
  225. package/corpus/templates/design/changelog/2026-06-29-design-editor-extensions-now-run-inline-beside-the-artboard.md +6 -0
  226. package/corpus/templates/design/changelog/2026-06-29-design-mode-top-chrome-now-groups-collaborators-preview-shar.md +6 -0
  227. package/corpus/templates/design/changelog/2026-06-29-element-selection-now-stays-on-the-intended-layer-after-sele.md +6 -0
  228. package/corpus/templates/design/changelog/2026-06-29-screen-overview-full-view-controls-now-sit-above-frames-inst.md +6 -0
  229. package/corpus/templates/design/changelog/2026-06-29-screen-overview-tools-can-draw-shapes-create-screens-and-kee.md +6 -0
  230. package/corpus/templates/design/changelog/2026-06-29-sidebars-use-darker-chrome-and-chat-warns-immediately.md +6 -0
  231. package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-now-creates-anchor-based-bezier-vectors-with-ha.md +6 -0
  232. package/corpus/templates/design/changelog/2026-06-29-visual-edit-can-open-localhost-routes-as-url-backed-screens.md +6 -0
  233. package/corpus/templates/design/package.json +1 -0
  234. package/corpus/templates/design/server/db/schema.ts +26 -0
  235. package/corpus/templates/design/server/handlers/import-figma-system.ts +38 -85
  236. package/corpus/templates/design/server/lib/design-snapshot.ts +9 -1
  237. package/corpus/templates/design/server/plugins/agent-chat.ts +3 -0
  238. package/corpus/templates/design/shared/api.ts +27 -0
  239. package/corpus/templates/design/shared/canvas-frames.ts +103 -0
  240. package/corpus/templates/design/shared/canvas-math.ts +1058 -0
  241. package/corpus/templates/design/shared/code-layer.ts +2412 -0
  242. package/corpus/templates/design/shared/color-utils.ts +180 -0
  243. package/corpus/templates/design/shared/generation-session.ts +61 -0
  244. package/corpus/templates/design/shared/html-content.ts +21 -0
  245. package/corpus/templates/design/shared/pen-path.ts +207 -0
  246. package/corpus/templates/design/shared/shader-presets.ts +782 -0
  247. package/corpus/templates/design/shared/shader-safety.ts +137 -0
  248. package/corpus/templates/design/shared/source-mode.ts +237 -0
  249. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +149 -6
  250. package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
  251. package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
  252. package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
  253. package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
  254. package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
  255. package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
  256. package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
  257. package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
  258. package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
  259. package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
  260. package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
  261. package/corpus/templates/forms/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  262. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
  263. package/corpus/templates/macros/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
  264. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +408 -247
  265. package/corpus/templates/mail/app/i18n/ar-SA.ts +4 -0
  266. package/corpus/templates/mail/app/i18n/de-DE.ts +4 -0
  267. package/corpus/templates/mail/app/i18n/en-US.ts +4 -0
  268. package/corpus/templates/mail/app/i18n/es-ES.ts +4 -0
  269. package/corpus/templates/mail/app/i18n/fr-FR.ts +4 -0
  270. package/corpus/templates/mail/app/i18n/hi-IN.ts +4 -0
  271. package/corpus/templates/mail/app/i18n/ja-JP.ts +4 -0
  272. package/corpus/templates/mail/app/i18n/ko-KR.ts +4 -0
  273. package/corpus/templates/mail/app/i18n/pt-BR.ts +4 -0
  274. package/corpus/templates/mail/app/i18n/zh-CN.ts +4 -0
  275. package/corpus/templates/mail/app/i18n/zh-TW.ts +4 -0
  276. package/corpus/templates/mail/app/lib/utils.ts +2 -2
  277. package/corpus/templates/mail/changelog/2026-06-28-pinned-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  278. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +6 -8
  279. package/corpus/templates/plan/app/components/plan/wireframe/Wireframe.tsx +1 -1
  280. package/corpus/templates/plan/app/global.css +61 -78
  281. package/corpus/templates/plan/app/pages/PlansPage.tsx +8 -0
  282. package/corpus/templates/plan/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  283. package/corpus/templates/plan/changelog/2026-06-28-plans-use-the-shared-neutral-light-and-dark-theme.md +6 -0
  284. package/corpus/templates/plan/changelog/2026-06-28-sending-open-feedback-from-a-plan-now-opens-the-inline-plan-.md +6 -0
  285. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +9 -10
  286. package/corpus/templates/slides/AGENTS.md +3 -2
  287. package/corpus/templates/slides/actions/import-file.ts +26 -17
  288. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +259 -0
  289. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +35 -167
  290. package/corpus/templates/slides/app/components/design-system/fig-import-response.ts +9 -13
  291. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  292. package/corpus/templates/slides/app/context/DeckContext.tsx +1 -1
  293. package/corpus/templates/slides/app/i18n/ar-SA.ts +9 -37
  294. package/corpus/templates/slides/app/i18n/de-DE.ts +10 -25
  295. package/corpus/templates/slides/app/i18n/en-US.ts +9 -26
  296. package/corpus/templates/slides/app/i18n/es-ES.ts +10 -28
  297. package/corpus/templates/slides/app/i18n/fr-FR.ts +10 -28
  298. package/corpus/templates/slides/app/i18n/hi-IN.ts +9 -26
  299. package/corpus/templates/slides/app/i18n/ja-JP.ts +10 -22
  300. package/corpus/templates/slides/app/i18n/ko-KR.ts +9 -23
  301. package/corpus/templates/slides/app/i18n/pt-BR.ts +10 -28
  302. package/corpus/templates/slides/app/i18n/zh-CN.ts +9 -22
  303. package/corpus/templates/slides/app/i18n/zh-TW.ts +9 -22
  304. package/corpus/templates/slides/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  305. package/corpus/templates/slides/server/handlers/import-figma-system.ts +44 -12
  306. package/corpus/templates/slides/server/lib/chat-attachments.ts +1 -1
  307. package/corpus/templates/videos/app/components/NewCompositionPopover.tsx +1 -1
  308. package/corpus/templates/videos/app/components/Sidebar.tsx +2 -2
  309. package/corpus/templates/videos/app/components/layout/Layout.tsx +29 -2
  310. package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +113 -30
  311. package/corpus/templates/videos/app/i18n/ar-SA.ts +2 -0
  312. package/corpus/templates/videos/app/i18n/de-DE.ts +2 -0
  313. package/corpus/templates/videos/app/i18n/en-US.ts +2 -0
  314. package/corpus/templates/videos/app/i18n/es-ES.ts +2 -0
  315. package/corpus/templates/videos/app/i18n/fr-FR.ts +2 -0
  316. package/corpus/templates/videos/app/i18n/hi-IN.ts +2 -0
  317. package/corpus/templates/videos/app/i18n/ja-JP.ts +2 -0
  318. package/corpus/templates/videos/app/i18n/ko-KR.ts +2 -0
  319. package/corpus/templates/videos/app/i18n/pt-BR.ts +2 -0
  320. package/corpus/templates/videos/app/i18n/zh-CN.ts +2 -0
  321. package/corpus/templates/videos/app/i18n/zh-TW.ts +2 -0
  322. package/corpus/templates/videos/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  323. package/dist/agent/engine/index.d.ts +1 -1
  324. package/dist/agent/engine/index.d.ts.map +1 -1
  325. package/dist/agent/engine/index.js +1 -1
  326. package/dist/agent/engine/index.js.map +1 -1
  327. package/dist/agent/engine/registry.d.ts +9 -0
  328. package/dist/agent/engine/registry.d.ts.map +1 -1
  329. package/dist/agent/engine/registry.js +37 -0
  330. package/dist/agent/engine/registry.js.map +1 -1
  331. package/dist/agent/production-agent.d.ts.map +1 -1
  332. package/dist/agent/production-agent.js +4 -3
  333. package/dist/agent/production-agent.js.map +1 -1
  334. package/dist/application-state/handlers.js +1 -1
  335. package/dist/application-state/handlers.js.map +1 -1
  336. package/dist/brand-kit/index.d.ts +1 -1
  337. package/dist/brand-kit/index.js +1 -1
  338. package/dist/brand-kit/index.js.map +1 -1
  339. package/dist/cli/design-connect.d.ts +52 -0
  340. package/dist/cli/design-connect.d.ts.map +1 -0
  341. package/dist/cli/design-connect.js +409 -0
  342. package/dist/cli/design-connect.js.map +1 -0
  343. package/dist/cli/index.js +15 -0
  344. package/dist/cli/index.js.map +1 -1
  345. package/dist/cli/skills.d.ts +3 -0
  346. package/dist/cli/skills.d.ts.map +1 -1
  347. package/dist/cli/skills.js +139 -3
  348. package/dist/cli/skills.js.map +1 -1
  349. package/dist/client/AgentPanel.js +1 -1
  350. package/dist/client/AgentPanel.js.map +1 -1
  351. package/dist/client/AssistantChat.d.ts.map +1 -1
  352. package/dist/client/AssistantChat.js +38 -8
  353. package/dist/client/AssistantChat.js.map +1 -1
  354. package/dist/client/MultiTabAssistantChat.js +1 -1
  355. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  356. package/dist/client/agent-chat.d.ts +6 -0
  357. package/dist/client/agent-chat.d.ts.map +1 -1
  358. package/dist/client/agent-chat.js +17 -3
  359. package/dist/client/agent-chat.js.map +1 -1
  360. package/dist/client/blocks/library/MermaidBlock.js +1 -1
  361. package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
  362. package/dist/client/blocks/library/diagram.js +1 -1
  363. package/dist/client/blocks/library/diagram.js.map +1 -1
  364. package/dist/client/blocks/library/wireframe.js +1 -1
  365. package/dist/client/blocks/library/wireframe.js.map +1 -1
  366. package/dist/client/chat/message-components.js +1 -1
  367. package/dist/client/chat/message-components.js.map +1 -1
  368. package/dist/client/chat-model-groups.d.ts.map +1 -1
  369. package/dist/client/chat-model-groups.js +1 -2
  370. package/dist/client/chat-model-groups.js.map +1 -1
  371. package/dist/client/components/LiveCursorOverlay.d.ts +1 -2
  372. package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
  373. package/dist/client/components/LiveCursorOverlay.js +19 -40
  374. package/dist/client/components/LiveCursorOverlay.js.map +1 -1
  375. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  376. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  377. package/dist/client/composer/TiptapComposer.js +86 -24
  378. package/dist/client/composer/TiptapComposer.js.map +1 -1
  379. package/dist/client/composer/useVoiceDictation.d.ts +9 -0
  380. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  381. package/dist/client/composer/useVoiceDictation.js +154 -32
  382. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  383. package/dist/client/extensions/portable-extension.d.ts +1 -1
  384. package/dist/client/extensions/portable-extension.d.ts.map +1 -1
  385. package/dist/client/extensions/portable-extension.js.map +1 -1
  386. package/dist/client/frame-protocol.d.ts +17 -2
  387. package/dist/client/frame-protocol.d.ts.map +1 -1
  388. package/dist/client/frame-protocol.js.map +1 -1
  389. package/dist/client/rich-markdown-editor/RegistryBlockNode.js +2 -2
  390. package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
  391. package/dist/client/sharing/ShareButton.d.ts +2 -0
  392. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  393. package/dist/client/sharing/ShareButton.js +7 -6
  394. package/dist/client/sharing/ShareButton.js.map +1 -1
  395. package/dist/client/use-agent-engine-configured.d.ts +5 -0
  396. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  397. package/dist/client/use-agent-engine-configured.js +51 -25
  398. package/dist/client/use-agent-engine-configured.js.map +1 -1
  399. package/dist/code-agents/transcript-normalizer.js +1 -1
  400. package/dist/code-agents/transcript-normalizer.js.map +1 -1
  401. package/dist/collab/routes.d.ts +1 -1
  402. package/dist/extensions/path.d.ts +1 -1
  403. package/dist/extensions/path.d.ts.map +1 -1
  404. package/dist/extensions/path.js.map +1 -1
  405. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  406. package/dist/integrations/a2a-continuation-processor.js +1 -1
  407. package/dist/integrations/a2a-continuation-processor.js.map +1 -1
  408. package/dist/mcp/build-server.d.ts +1 -1
  409. package/dist/mcp/build-server.d.ts.map +1 -1
  410. package/dist/mcp/build-server.js.map +1 -1
  411. package/dist/notifications/routes.d.ts +3 -3
  412. package/dist/observability/routes.d.ts +5 -5
  413. package/dist/org/handlers.js +5 -5
  414. package/dist/org/handlers.js.map +1 -1
  415. package/dist/org/plugin.js +2 -2
  416. package/dist/org/plugin.js.map +1 -1
  417. package/dist/scripts/call-agent.js +1 -1
  418. package/dist/scripts/call-agent.js.map +1 -1
  419. package/dist/scripts/db/safety.js +1 -1
  420. package/dist/scripts/db/safety.js.map +1 -1
  421. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  422. package/dist/server/auth.d.ts.map +1 -1
  423. package/dist/server/auth.js +3 -0
  424. package/dist/server/auth.js.map +1 -1
  425. package/dist/server/builder-design-systems.d.ts +28 -0
  426. package/dist/server/builder-design-systems.d.ts.map +1 -0
  427. package/dist/server/builder-design-systems.js +217 -0
  428. package/dist/server/builder-design-systems.js.map +1 -0
  429. package/dist/server/core-routes-plugin.d.ts +1 -0
  430. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  431. package/dist/server/core-routes-plugin.js +20 -3
  432. package/dist/server/core-routes-plugin.js.map +1 -1
  433. package/dist/server/index.d.ts +1 -0
  434. package/dist/server/index.d.ts.map +1 -1
  435. package/dist/server/index.js +1 -0
  436. package/dist/server/index.js.map +1 -1
  437. package/dist/server/transcribe-voice.d.ts +1 -1
  438. package/dist/server/transcribe-voice.d.ts.map +1 -1
  439. package/dist/server/transcribe-voice.js +40 -24
  440. package/dist/server/transcribe-voice.js.map +1 -1
  441. package/dist/shared/mcp-embed-headers.d.ts +1 -0
  442. package/dist/shared/mcp-embed-headers.d.ts.map +1 -1
  443. package/dist/shared/mcp-embed-headers.js +20 -1
  444. package/dist/shared/mcp-embed-headers.js.map +1 -1
  445. package/dist/styles/agent-native.css +60 -4
  446. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  447. package/dist/usage/store.js +2 -2
  448. package/dist/usage/store.js.map +1 -1
  449. package/dist/vite/client.d.ts.map +1 -1
  450. package/dist/vite/client.js +2 -0
  451. package/dist/vite/client.js.map +1 -1
  452. package/dist/voice/index.d.ts +5 -0
  453. package/dist/voice/index.d.ts.map +1 -0
  454. package/dist/voice/index.js +4 -0
  455. package/dist/voice/index.js.map +1 -0
  456. package/dist/voice/voice-cleanup-prompt.d.ts +6 -0
  457. package/dist/voice/voice-cleanup-prompt.d.ts.map +1 -0
  458. package/dist/voice/voice-cleanup-prompt.js +26 -0
  459. package/dist/voice/voice-cleanup-prompt.js.map +1 -0
  460. package/dist/voice/voice-context.d.ts +25 -0
  461. package/dist/voice/voice-context.d.ts.map +1 -0
  462. package/dist/voice/voice-context.js +156 -0
  463. package/dist/voice/voice-context.js.map +1 -0
  464. package/dist/voice/voice-replacements.d.ts +4 -0
  465. package/dist/voice/voice-replacements.d.ts.map +1 -0
  466. package/dist/voice/voice-replacements.js +52 -0
  467. package/dist/voice/voice-replacements.js.map +1 -0
  468. package/docs/content/locales/ar-SA/skills-guide.mdx +5 -0
  469. package/docs/content/locales/ar-SA/template-design.mdx +55 -1
  470. package/docs/content/locales/de-DE/skills-guide.mdx +5 -0
  471. package/docs/content/locales/de-DE/template-design.mdx +66 -1
  472. package/docs/content/locales/es-ES/skills-guide.mdx +5 -0
  473. package/docs/content/locales/es-ES/template-design.mdx +65 -1
  474. package/docs/content/locales/fr-FR/skills-guide.mdx +5 -0
  475. package/docs/content/locales/fr-FR/template-design.mdx +64 -1
  476. package/docs/content/locales/hi-IN/skills-guide.mdx +5 -0
  477. package/docs/content/locales/hi-IN/template-design.mdx +59 -1
  478. package/docs/content/locales/ja-JP/skills-guide.mdx +5 -0
  479. package/docs/content/locales/ja-JP/template-design.mdx +62 -1
  480. package/docs/content/locales/ko-KR/skills-guide.mdx +5 -0
  481. package/docs/content/locales/ko-KR/template-design.mdx +58 -1
  482. package/docs/content/locales/pt-BR/skills-guide.mdx +5 -0
  483. package/docs/content/locales/pt-BR/template-design.mdx +62 -1
  484. package/docs/content/locales/zh-CN/skills-guide.mdx +5 -0
  485. package/docs/content/locales/zh-CN/template-design.mdx +50 -1
  486. package/docs/content/locales/zh-TW/skills-guide.mdx +5 -0
  487. package/docs/content/locales/zh-TW/template-design.mdx +52 -1
  488. package/docs/content/skills-guide.mdx +5 -0
  489. package/docs/content/template-design.mdx +59 -1
  490. package/package.json +2 -1
  491. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  492. package/corpus/templates/design/actions/import-figma-file.ts +0 -166
  493. package/corpus/templates/design/app/components/design/DesignToolbar.tsx +0 -339
  494. package/corpus/templates/design/app/components/design/PresentMode.tsx +0 -68
  495. package/corpus/templates/design/app/components/design/ViewportTabs.tsx +0 -149
  496. package/corpus/templates/design/app/components/design/ZoomControls.tsx +0 -157
  497. package/corpus/templates/slides/server/lib/fig-design-system.ts +0 -110
@@ -0,0 +1,741 @@
1
+ import { cn } from "@/lib/utils";
2
+
3
+ interface IconProps {
4
+ className?: string;
5
+ }
6
+
7
+ // Gap icon: ]·[ — two inward-facing C-brackets with a center dot
8
+ export function IconGap({ className }: IconProps) {
9
+ return (
10
+ <svg
11
+ viewBox="0 0 24 24"
12
+ fill="none"
13
+ stroke="currentColor"
14
+ strokeWidth={2}
15
+ strokeLinecap="round"
16
+ strokeLinejoin="round"
17
+ className={cn("size-4", className)}
18
+ aria-hidden="true"
19
+ >
20
+ {/* Left bracket ] — vertical bar on right side, serifs pointing right */}
21
+ <line x1="9" y1="7" x2="6" y2="7" />
22
+ <line x1="6" y1="7" x2="6" y2="17" />
23
+ <line x1="6" y1="17" x2="9" y2="17" />
24
+ {/* Center dot */}
25
+ <circle cx="12" cy="12" r="1" fill="currentColor" stroke="none" />
26
+ {/* Right bracket [ — vertical bar on left side, serifs pointing left */}
27
+ <line x1="15" y1="7" x2="18" y2="7" />
28
+ <line x1="18" y1="7" x2="18" y2="17" />
29
+ <line x1="18" y1="17" x2="15" y2="17" />
30
+ </svg>
31
+ );
32
+ }
33
+
34
+ // Padding horizontal: square with thick left and right edges
35
+ export function IconPaddingHorizontal({ className }: IconProps) {
36
+ return (
37
+ <svg
38
+ viewBox="0 0 24 24"
39
+ fill="none"
40
+ stroke="currentColor"
41
+ strokeWidth={1.5}
42
+ strokeLinecap="round"
43
+ strokeLinejoin="round"
44
+ className={cn("size-4", className)}
45
+ aria-hidden="true"
46
+ >
47
+ {/* Outer frame */}
48
+ <rect x="3" y="4" width="18" height="16" rx="1.5" strokeWidth={1.5} />
49
+ {/* Thick left edge fill */}
50
+ <rect
51
+ x="3"
52
+ y="4"
53
+ width="4"
54
+ height="16"
55
+ rx="1.5"
56
+ fill="currentColor"
57
+ stroke="none"
58
+ />
59
+ {/* Thick right edge fill */}
60
+ <rect
61
+ x="17"
62
+ y="4"
63
+ width="4"
64
+ height="16"
65
+ rx="1.5"
66
+ fill="currentColor"
67
+ stroke="none"
68
+ />
69
+ </svg>
70
+ );
71
+ }
72
+
73
+ // Padding vertical: square with thick top and bottom edges
74
+ export function IconPaddingVertical({ className }: IconProps) {
75
+ return (
76
+ <svg
77
+ viewBox="0 0 24 24"
78
+ fill="none"
79
+ stroke="currentColor"
80
+ strokeWidth={1.5}
81
+ strokeLinecap="round"
82
+ strokeLinejoin="round"
83
+ className={cn("size-4", className)}
84
+ aria-hidden="true"
85
+ >
86
+ {/* Outer frame */}
87
+ <rect x="4" y="3" width="16" height="18" rx="1.5" strokeWidth={1.5} />
88
+ {/* Thick top edge fill */}
89
+ <rect
90
+ x="4"
91
+ y="3"
92
+ width="16"
93
+ height="4"
94
+ rx="1.5"
95
+ fill="currentColor"
96
+ stroke="none"
97
+ />
98
+ {/* Thick bottom edge fill */}
99
+ <rect
100
+ x="4"
101
+ y="17"
102
+ width="16"
103
+ height="4"
104
+ rx="1.5"
105
+ fill="currentColor"
106
+ stroke="none"
107
+ />
108
+ </svg>
109
+ );
110
+ }
111
+
112
+ // Flow horizontal: two filled boxes side-by-side inside a wide frame
113
+ export function IconFlowHorizontal({ className }: IconProps) {
114
+ return (
115
+ <svg
116
+ viewBox="0 0 24 24"
117
+ fill="none"
118
+ stroke="currentColor"
119
+ strokeWidth={1.5}
120
+ strokeLinecap="round"
121
+ strokeLinejoin="round"
122
+ className={cn("size-4", className)}
123
+ aria-hidden="true"
124
+ >
125
+ {/* Outer container — wide landscape frame */}
126
+ <rect x="2" y="6" width="20" height="12" rx="2" strokeWidth={1.5} />
127
+ {/* Left item */}
128
+ <rect
129
+ x="5"
130
+ y="9"
131
+ width="5"
132
+ height="6"
133
+ rx="1"
134
+ fill="currentColor"
135
+ stroke="none"
136
+ />
137
+ {/* Right item */}
138
+ <rect
139
+ x="14"
140
+ y="9"
141
+ width="5"
142
+ height="6"
143
+ rx="1"
144
+ fill="currentColor"
145
+ stroke="none"
146
+ />
147
+ </svg>
148
+ );
149
+ }
150
+
151
+ // Flow vertical: two filled boxes stacked inside a tall frame
152
+ export function IconFlowVertical({ className }: IconProps) {
153
+ return (
154
+ <svg
155
+ viewBox="0 0 24 24"
156
+ fill="none"
157
+ stroke="currentColor"
158
+ strokeWidth={1.5}
159
+ strokeLinecap="round"
160
+ strokeLinejoin="round"
161
+ className={cn("size-4", className)}
162
+ aria-hidden="true"
163
+ >
164
+ {/* Outer container — tall portrait frame */}
165
+ <rect x="6" y="2" width="12" height="20" rx="2" strokeWidth={1.5} />
166
+ {/* Top item */}
167
+ <rect
168
+ x="9"
169
+ y="5"
170
+ width="6"
171
+ height="5"
172
+ rx="1"
173
+ fill="currentColor"
174
+ stroke="none"
175
+ />
176
+ {/* Bottom item */}
177
+ <rect
178
+ x="9"
179
+ y="14"
180
+ width="6"
181
+ height="5"
182
+ rx="1"
183
+ fill="currentColor"
184
+ stroke="none"
185
+ />
186
+ </svg>
187
+ );
188
+ }
189
+
190
+ // Flow wrap: items wrap to a new row (first row: two boxes, second row: one + arrow)
191
+ export function IconFlowWrap({ className }: IconProps) {
192
+ return (
193
+ <svg
194
+ viewBox="0 0 24 24"
195
+ fill="none"
196
+ stroke="currentColor"
197
+ strokeWidth={1.5}
198
+ strokeLinecap="round"
199
+ strokeLinejoin="round"
200
+ className={cn("size-4", className)}
201
+ aria-hidden="true"
202
+ >
203
+ {/* First row: two items */}
204
+ <rect x="2" y="3" width="8" height="7" rx="1.5" strokeWidth={1.5} />
205
+ <rect x="12" y="3" width="8" height="7" rx="1.5" strokeWidth={1.5} />
206
+ {/* Second row: one item (wrapped) */}
207
+ <rect x="2" y="12" width="8" height="7" rx="1.5" strokeWidth={1.5} />
208
+ {/* Wrap return arrow — corner turn from right → down → left */}
209
+ <polyline points="22,7 22,15 18,15" strokeWidth={1.5} />
210
+ <polyline points="20,13 18,15 20,17" strokeWidth={1.5} />
211
+ </svg>
212
+ );
213
+ }
214
+
215
+ // Flow grid: 2×2 equal grid of boxes
216
+ export function IconFlowGrid({ className }: IconProps) {
217
+ return (
218
+ <svg
219
+ viewBox="0 0 24 24"
220
+ fill="none"
221
+ stroke="currentColor"
222
+ strokeWidth={1.5}
223
+ strokeLinecap="round"
224
+ strokeLinejoin="round"
225
+ className={cn("size-4", className)}
226
+ aria-hidden="true"
227
+ >
228
+ {/* Top-left */}
229
+ <rect x="2" y="2" width="9" height="9" rx="1.5" strokeWidth={1.5} />
230
+ {/* Top-right */}
231
+ <rect x="13" y="2" width="9" height="9" rx="1.5" strokeWidth={1.5} />
232
+ {/* Bottom-left */}
233
+ <rect x="2" y="13" width="9" height="9" rx="1.5" strokeWidth={1.5} />
234
+ {/* Bottom-right */}
235
+ <rect x="13" y="13" width="9" height="9" rx="1.5" strokeWidth={1.5} />
236
+ </svg>
237
+ );
238
+ }
239
+
240
+ // Distribute horizontal: two vertical rail lines + center item + gap tick marks
241
+ export function IconDistributeHorizontal({ className }: IconProps) {
242
+ return (
243
+ <svg
244
+ viewBox="0 0 24 24"
245
+ fill="none"
246
+ stroke="currentColor"
247
+ strokeWidth={2}
248
+ strokeLinecap="round"
249
+ strokeLinejoin="round"
250
+ className={cn("size-4", className)}
251
+ aria-hidden="true"
252
+ >
253
+ {/* Left rail */}
254
+ <line x1="3" y1="5" x2="3" y2="19" />
255
+ {/* Right rail */}
256
+ <line x1="21" y1="5" x2="21" y2="19" />
257
+ {/* Center filled item */}
258
+ <rect
259
+ x="9"
260
+ y="8"
261
+ width="6"
262
+ height="8"
263
+ rx="1"
264
+ fill="currentColor"
265
+ stroke="none"
266
+ />
267
+ {/* Gap tick marks — short vertical lines between rail and center */}
268
+ <line x1="6" y1="10" x2="6" y2="14" strokeWidth={1.5} />
269
+ <line x1="18" y1="10" x2="18" y2="14" strokeWidth={1.5} />
270
+ </svg>
271
+ );
272
+ }
273
+
274
+ // Distribute vertical: two horizontal rail lines + center item + gap tick marks
275
+ export function IconDistributeVertical({ className }: IconProps) {
276
+ return (
277
+ <svg
278
+ viewBox="0 0 24 24"
279
+ fill="none"
280
+ stroke="currentColor"
281
+ strokeWidth={2}
282
+ strokeLinecap="round"
283
+ strokeLinejoin="round"
284
+ className={cn("size-4", className)}
285
+ aria-hidden="true"
286
+ >
287
+ {/* Top rail */}
288
+ <line x1="5" y1="3" x2="19" y2="3" />
289
+ {/* Bottom rail */}
290
+ <line x1="5" y1="21" x2="19" y2="21" />
291
+ {/* Center filled item */}
292
+ <rect
293
+ x="8"
294
+ y="9"
295
+ width="8"
296
+ height="6"
297
+ rx="1"
298
+ fill="currentColor"
299
+ stroke="none"
300
+ />
301
+ {/* Gap tick marks — short horizontal lines between rail and center */}
302
+ <line x1="10" y1="6" x2="14" y2="6" strokeWidth={1.5} />
303
+ <line x1="10" y1="18" x2="14" y2="18" strokeWidth={1.5} />
304
+ </svg>
305
+ );
306
+ }
307
+
308
+ // Layout settings / sliders: three horizontal tracks with thumb handles at different x positions
309
+ export function IconLayoutSettings({ className }: IconProps) {
310
+ return (
311
+ <svg
312
+ viewBox="0 0 24 24"
313
+ fill="none"
314
+ stroke="currentColor"
315
+ strokeWidth={2}
316
+ strokeLinecap="round"
317
+ strokeLinejoin="round"
318
+ className={cn("size-4", className)}
319
+ aria-hidden="true"
320
+ >
321
+ {/* Track 1 */}
322
+ <line x1="3" y1="7" x2="21" y2="7" />
323
+ {/* Handle 1 at ~x=8 */}
324
+ <circle
325
+ cx="8"
326
+ cy="7"
327
+ r="2.5"
328
+ fill="var(--background, #1e1e1e)"
329
+ strokeWidth={2}
330
+ />
331
+ {/* Track 2 */}
332
+ <line x1="3" y1="12" x2="21" y2="12" />
333
+ {/* Handle 2 at ~x=16 */}
334
+ <circle
335
+ cx="16"
336
+ cy="12"
337
+ r="2.5"
338
+ fill="var(--background, #1e1e1e)"
339
+ strokeWidth={2}
340
+ />
341
+ {/* Track 3 */}
342
+ <line x1="3" y1="17" x2="21" y2="17" />
343
+ {/* Handle 3 at ~x=11 */}
344
+ <circle
345
+ cx="11"
346
+ cy="17"
347
+ r="2.5"
348
+ fill="var(--background, #1e1e1e)"
349
+ strokeWidth={2}
350
+ />
351
+ </svg>
352
+ );
353
+ }
354
+
355
+ // Resize to fit: four corner L-brackets pointing inward
356
+ export function IconResizeToFit({ className }: IconProps) {
357
+ return (
358
+ <svg
359
+ viewBox="0 0 24 24"
360
+ fill="none"
361
+ stroke="currentColor"
362
+ strokeWidth={2}
363
+ strokeLinecap="round"
364
+ strokeLinejoin="round"
365
+ className={cn("size-4", className)}
366
+ aria-hidden="true"
367
+ >
368
+ {/* Top-left corner: L pointing inward (→ and ↓) */}
369
+ <polyline points="9,4 4,4 4,9" />
370
+ {/* Top-right corner */}
371
+ <polyline points="15,4 20,4 20,9" />
372
+ {/* Bottom-left corner */}
373
+ <polyline points="4,15 4,20 9,20" />
374
+ {/* Bottom-right corner */}
375
+ <polyline points="20,15 20,20 15,20" />
376
+ </svg>
377
+ );
378
+ }
379
+
380
+ // Auto-layout toggle "on" — rounded rectangle with two small boxes arranged in a row inside
381
+ // Matches Figma's blue auto-layout indicator glyph
382
+ export function IconAutoLayoutOn({ className }: IconProps) {
383
+ return (
384
+ <svg
385
+ viewBox="0 0 24 24"
386
+ fill="none"
387
+ stroke="currentColor"
388
+ strokeWidth={1.5}
389
+ strokeLinecap="round"
390
+ strokeLinejoin="round"
391
+ className={cn("size-4", className)}
392
+ aria-hidden="true"
393
+ >
394
+ {/* Outer rounded frame */}
395
+ <rect x="2" y="5" width="20" height="14" rx="3" strokeWidth={1.5} />
396
+ {/* Left inner item */}
397
+ <rect
398
+ x="5"
399
+ y="8"
400
+ width="5"
401
+ height="8"
402
+ rx="1"
403
+ fill="currentColor"
404
+ stroke="none"
405
+ />
406
+ {/* Right inner item */}
407
+ <rect
408
+ x="12"
409
+ y="8"
410
+ width="7"
411
+ height="8"
412
+ rx="1"
413
+ fill="currentColor"
414
+ stroke="none"
415
+ />
416
+ </svg>
417
+ );
418
+ }
419
+
420
+ // Paint type: solid fill swatch (filled square)
421
+ export function IconPaintSolid({ className }: IconProps) {
422
+ return (
423
+ <svg
424
+ viewBox="0 0 24 24"
425
+ fill="none"
426
+ stroke="currentColor"
427
+ strokeWidth={1.5}
428
+ strokeLinecap="round"
429
+ strokeLinejoin="round"
430
+ className={cn("size-4", className)}
431
+ aria-hidden="true"
432
+ >
433
+ <rect
434
+ x="3"
435
+ y="3"
436
+ width="18"
437
+ height="18"
438
+ rx="2.5"
439
+ fill="currentColor"
440
+ stroke="none"
441
+ />
442
+ </svg>
443
+ );
444
+ }
445
+
446
+ // Paint type: linear gradient (left-dark to right-light)
447
+ export function IconPaintLinear({ className }: IconProps) {
448
+ return (
449
+ <svg
450
+ viewBox="0 0 24 24"
451
+ fill="none"
452
+ stroke="currentColor"
453
+ strokeWidth={1.5}
454
+ strokeLinecap="round"
455
+ strokeLinejoin="round"
456
+ className={cn("size-4", className)}
457
+ aria-hidden="true"
458
+ >
459
+ <defs>
460
+ <linearGradient id="lg-icon-grad" x1="0" y1="0" x2="1" y2="0">
461
+ <stop offset="0%" stopColor="currentColor" stopOpacity="1" />
462
+ <stop offset="100%" stopColor="currentColor" stopOpacity="0" />
463
+ </linearGradient>
464
+ </defs>
465
+ <rect
466
+ x="3"
467
+ y="3"
468
+ width="18"
469
+ height="18"
470
+ rx="2.5"
471
+ fill="url(#lg-icon-grad)"
472
+ strokeWidth={1.5}
473
+ />
474
+ </svg>
475
+ );
476
+ }
477
+
478
+ // Paint type: image fill (picture frame with mountain/sun)
479
+ export function IconPaintImage({ className }: IconProps) {
480
+ return (
481
+ <svg
482
+ viewBox="0 0 24 24"
483
+ fill="none"
484
+ stroke="currentColor"
485
+ strokeWidth={1.5}
486
+ strokeLinecap="round"
487
+ strokeLinejoin="round"
488
+ className={cn("size-4", className)}
489
+ aria-hidden="true"
490
+ >
491
+ {/* Frame */}
492
+ <rect x="3" y="3" width="18" height="18" rx="2.5" strokeWidth={1.5} />
493
+ {/* Mountain silhouette */}
494
+ <polyline points="3,17 8,12 12,15 16,10 21,17" strokeWidth={1.5} />
495
+ {/* Sun dot */}
496
+ <circle cx="17" cy="8" r="2" fill="currentColor" stroke="none" />
497
+ </svg>
498
+ );
499
+ }
500
+
501
+ // Paint type: none / no fill (square with diagonal slash)
502
+ export function IconPaintNone({ className }: IconProps) {
503
+ return (
504
+ <svg
505
+ viewBox="0 0 24 24"
506
+ fill="none"
507
+ stroke="currentColor"
508
+ strokeWidth={1.5}
509
+ strokeLinecap="round"
510
+ strokeLinejoin="round"
511
+ className={cn("size-4", className)}
512
+ aria-hidden="true"
513
+ >
514
+ {/* Square frame */}
515
+ <rect x="3" y="3" width="18" height="18" rx="2.5" strokeWidth={1.5} />
516
+ {/* Diagonal slash */}
517
+ <line x1="5" y1="19" x2="19" y2="5" strokeWidth={1.5} />
518
+ </svg>
519
+ );
520
+ }
521
+
522
+ // Align left — lines left-aligned against a left rail
523
+ export function IconAlignLeft({ className }: IconProps) {
524
+ return (
525
+ <svg
526
+ viewBox="0 0 24 24"
527
+ fill="none"
528
+ stroke="currentColor"
529
+ strokeWidth={2}
530
+ strokeLinecap="round"
531
+ strokeLinejoin="round"
532
+ className={cn("size-4", className)}
533
+ aria-hidden="true"
534
+ >
535
+ <line x1="3" y1="4" x2="3" y2="20" />
536
+ <line x1="6" y1="8" x2="18" y2="8" />
537
+ <line x1="6" y1="12" x2="14" y2="12" />
538
+ <line x1="6" y1="16" x2="16" y2="16" />
539
+ </svg>
540
+ );
541
+ }
542
+
543
+ // Align center horizontal
544
+ export function IconAlignCenterH({ className }: IconProps) {
545
+ return (
546
+ <svg
547
+ viewBox="0 0 24 24"
548
+ fill="none"
549
+ stroke="currentColor"
550
+ strokeWidth={2}
551
+ strokeLinecap="round"
552
+ strokeLinejoin="round"
553
+ className={cn("size-4", className)}
554
+ aria-hidden="true"
555
+ >
556
+ <line x1="12" y1="4" x2="12" y2="20" />
557
+ <line x1="5" y1="8" x2="19" y2="8" />
558
+ <line x1="7" y1="12" x2="17" y2="12" />
559
+ <line x1="6" y1="16" x2="18" y2="16" />
560
+ </svg>
561
+ );
562
+ }
563
+
564
+ // Align right
565
+ export function IconAlignRight({ className }: IconProps) {
566
+ return (
567
+ <svg
568
+ viewBox="0 0 24 24"
569
+ fill="none"
570
+ stroke="currentColor"
571
+ strokeWidth={2}
572
+ strokeLinecap="round"
573
+ strokeLinejoin="round"
574
+ className={cn("size-4", className)}
575
+ aria-hidden="true"
576
+ >
577
+ <line x1="21" y1="4" x2="21" y2="20" />
578
+ <line x1="6" y1="8" x2="18" y2="8" />
579
+ <line x1="10" y1="12" x2="18" y2="12" />
580
+ <line x1="8" y1="16" x2="18" y2="16" />
581
+ </svg>
582
+ );
583
+ }
584
+
585
+ // ─────────────────────────────────────────────────
586
+ // W/H sizing-menu glyphs (Figma resizing dropdown rows)
587
+ // ─────────────────────────────────────────────────
588
+
589
+ // Sizing: Fixed — a bar bounded by two end-stops (⊢ / fixed dimension)
590
+ export function IconSizingFixed({ className }: IconProps) {
591
+ return (
592
+ <svg
593
+ viewBox="0 0 24 24"
594
+ fill="none"
595
+ stroke="currentColor"
596
+ strokeWidth={1.6}
597
+ strokeLinecap="round"
598
+ strokeLinejoin="round"
599
+ className={cn("size-3.5", className)}
600
+ aria-hidden="true"
601
+ >
602
+ {/* Left end-stop */}
603
+ <line x1="5" y1="6" x2="5" y2="18" />
604
+ {/* Right end-stop */}
605
+ <line x1="19" y1="6" x2="19" y2="18" />
606
+ {/* Fixed span */}
607
+ <line x1="5" y1="12" x2="19" y2="12" />
608
+ </svg>
609
+ );
610
+ }
611
+
612
+ // Sizing: Hug contents — two arrows pointing inward toward content (>< )
613
+ export function IconSizingHug({ className }: IconProps) {
614
+ return (
615
+ <svg
616
+ viewBox="0 0 24 24"
617
+ fill="none"
618
+ stroke="currentColor"
619
+ strokeWidth={1.6}
620
+ strokeLinecap="round"
621
+ strokeLinejoin="round"
622
+ className={cn("size-3.5", className)}
623
+ aria-hidden="true"
624
+ >
625
+ {/* Left inward chevron > */}
626
+ <polyline points="5,7 10,12 5,17" />
627
+ {/* Right inward chevron < */}
628
+ <polyline points="19,7 14,12 19,17" />
629
+ </svg>
630
+ );
631
+ }
632
+
633
+ // Sizing: Fill container — two arrows pushing outward to the walls (↔)
634
+ export function IconSizingFill({ className }: IconProps) {
635
+ return (
636
+ <svg
637
+ viewBox="0 0 24 24"
638
+ fill="none"
639
+ stroke="currentColor"
640
+ strokeWidth={1.6}
641
+ strokeLinecap="round"
642
+ strokeLinejoin="round"
643
+ className={cn("size-3.5", className)}
644
+ aria-hidden="true"
645
+ >
646
+ {/* Left wall */}
647
+ <line x1="4" y1="6" x2="4" y2="18" />
648
+ {/* Right wall */}
649
+ <line x1="20" y1="6" x2="20" y2="18" />
650
+ {/* Outward double arrow */}
651
+ <line x1="8" y1="12" x2="16" y2="12" />
652
+ <polyline points="11,9 8,12 11,15" />
653
+ <polyline points="13,9 16,12 13,15" />
654
+ </svg>
655
+ );
656
+ }
657
+
658
+ // Sizing: Add min width — wall + arrow pushing toward a lower bound (→|←)
659
+ export function IconSizingMin({ className }: IconProps) {
660
+ return (
661
+ <svg
662
+ viewBox="0 0 24 24"
663
+ fill="none"
664
+ stroke="currentColor"
665
+ strokeWidth={1.6}
666
+ strokeLinecap="round"
667
+ strokeLinejoin="round"
668
+ className={cn("size-3.5", className)}
669
+ aria-hidden="true"
670
+ >
671
+ {/* Center constraint bar */}
672
+ <line x1="12" y1="5" x2="12" y2="19" />
673
+ {/* Arrows converging on the bar */}
674
+ <line x1="4" y1="12" x2="11" y2="12" />
675
+ <polyline points="8,9 11,12 8,15" />
676
+ <line x1="20" y1="12" x2="13" y2="12" />
677
+ <polyline points="16,9 13,12 16,15" />
678
+ </svg>
679
+ );
680
+ }
681
+
682
+ // Sizing: Add max width — bar + arrows pushing outward to an upper bound (|↔)
683
+ export function IconSizingMax({ className }: IconProps) {
684
+ return (
685
+ <svg
686
+ viewBox="0 0 24 24"
687
+ fill="none"
688
+ stroke="currentColor"
689
+ strokeWidth={1.6}
690
+ strokeLinecap="round"
691
+ strokeLinejoin="round"
692
+ className={cn("size-3.5", className)}
693
+ aria-hidden="true"
694
+ >
695
+ {/* Center bar */}
696
+ <line x1="12" y1="5" x2="12" y2="19" />
697
+ {/* Arrows diverging from the bar */}
698
+ <line x1="13" y1="12" x2="20" y2="12" />
699
+ <polyline points="17,9 20,12 17,15" />
700
+ <line x1="11" y1="12" x2="4" y2="12" />
701
+ <polyline points="7,9 4,12 7,15" />
702
+ </svg>
703
+ );
704
+ }
705
+
706
+ // Sizing: Apply variable — hexagon token (⬡)
707
+ export function IconSizingVariable({ className }: IconProps) {
708
+ return (
709
+ <svg
710
+ viewBox="0 0 24 24"
711
+ fill="none"
712
+ stroke="currentColor"
713
+ strokeWidth={1.6}
714
+ strokeLinecap="round"
715
+ strokeLinejoin="round"
716
+ className={cn("size-3.5", className)}
717
+ aria-hidden="true"
718
+ >
719
+ <polygon points="12,3 20,7.5 20,16.5 12,21 4,16.5 4,7.5" />
720
+ </svg>
721
+ );
722
+ }
723
+
724
+ // Small remove / clear glyph for min-max sub-rows (×)
725
+ export function IconSizingRemove({ className }: IconProps) {
726
+ return (
727
+ <svg
728
+ viewBox="0 0 24 24"
729
+ fill="none"
730
+ stroke="currentColor"
731
+ strokeWidth={1.8}
732
+ strokeLinecap="round"
733
+ strokeLinejoin="round"
734
+ className={cn("size-3", className)}
735
+ aria-hidden="true"
736
+ >
737
+ <line x1="6" y1="6" x2="18" y2="18" />
738
+ <line x1="18" y1="6" x2="6" y2="18" />
739
+ </svg>
740
+ );
741
+ }