@agent-native/core 0.92.10 → 0.92.12

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 (354) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +29 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/agent/production-agent.ts +214 -17
  5. package/corpus/core/src/agent/run-manager.ts +72 -14
  6. package/corpus/core/src/agent/run-store.ts +152 -27
  7. package/corpus/core/src/cli/design-connect.ts +433 -151
  8. package/corpus/core/src/cli/skills.ts +14 -0
  9. package/corpus/core/src/client/AssistantChat.tsx +25 -0
  10. package/corpus/core/src/client/MultiTabAssistantChat.tsx +40 -6
  11. package/corpus/core/src/client/agent-chat-adapter.ts +56 -12
  12. package/corpus/core/src/client/agent-chat.ts +165 -1
  13. package/corpus/core/src/client/chat/index.ts +9 -1
  14. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +38 -2
  15. package/corpus/core/src/client/index.ts +5 -0
  16. package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +18 -7
  17. package/corpus/core/src/collab/awareness-store.ts +23 -12
  18. package/corpus/core/src/collab/client.ts +16 -5
  19. package/corpus/core/src/collab/index.ts +4 -0
  20. package/corpus/core/src/collab/recent-edits.ts +65 -2
  21. package/corpus/core/src/index.browser.ts +1 -0
  22. package/corpus/core/src/server/agent-chat-plugin.ts +98 -11
  23. package/corpus/core/src/server/builder-design-systems.ts +30 -4
  24. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +1 -1
  25. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +12 -6
  26. package/corpus/templates/clips/AGENTS.md +4 -0
  27. package/corpus/templates/clips/actions/create-recording.ts +2 -0
  28. package/corpus/templates/clips/actions/lib/create-recording-schema.ts +5 -3
  29. package/corpus/templates/clips/actions/request-transcript.ts +102 -33
  30. package/corpus/templates/clips/app/components/library/library-grid.tsx +1 -0
  31. package/corpus/templates/clips/app/components/player/share-dialog.tsx +59 -19
  32. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +75 -9
  33. package/corpus/templates/clips/app/components/player/video-player.tsx +17 -12
  34. package/corpus/templates/clips/app/hooks/use-player-shortcuts.ts +1 -0
  35. package/corpus/templates/clips/app/i18n/ar-SA.ts +1 -0
  36. package/corpus/templates/clips/app/i18n/de-DE.ts +1 -0
  37. package/corpus/templates/clips/app/i18n/en-US.ts +1 -0
  38. package/corpus/templates/clips/app/i18n/es-ES.ts +1 -0
  39. package/corpus/templates/clips/app/i18n/fr-FR.ts +1 -0
  40. package/corpus/templates/clips/app/i18n/hi-IN.ts +1 -0
  41. package/corpus/templates/clips/app/i18n/ja-JP.ts +1 -0
  42. package/corpus/templates/clips/app/i18n/ko-KR.ts +1 -0
  43. package/corpus/templates/clips/app/i18n/pt-BR.ts +1 -0
  44. package/corpus/templates/clips/app/i18n/zh-CN.ts +1 -0
  45. package/corpus/templates/clips/app/i18n/zh-TW.ts +1 -0
  46. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +70 -37
  47. package/corpus/templates/clips/app/routes/record.tsx +17 -4
  48. package/corpus/templates/clips/app/routes/share.$shareId.tsx +2 -0
  49. package/corpus/templates/clips/changelog/2026-07-09-desktop-popover-sits-closer-to-the-menu-bar.md +6 -0
  50. package/corpus/templates/clips/changelog/2026-07-09-desktop-recording-optimization-progress-stays-visible-until-the-clip-opens.md +6 -0
  51. package/corpus/templates/clips/changelog/2026-07-09-fixed-large-video-file-uploads-failing-before-their-resumabl.md +6 -0
  52. package/corpus/templates/clips/changelog/2026-07-09-fixed-new-video-uploads-defaulting-to-private.md +6 -0
  53. package/corpus/templates/clips/changelog/2026-07-09-long-recordings-now-get-enough-time-to-download-their-media-.md +6 -0
  54. package/corpus/templates/clips/changelog/2026-07-09-meeting-notes-no-longer-lowers-your-microphone-volume-for-ot.md +6 -0
  55. package/corpus/templates/clips/changelog/2026-07-09-on-mobile-tapping-a-playing-clip-reveals-playback-controls-w.md +6 -0
  56. package/corpus/templates/clips/changelog/2026-07-09-regenerate-any-clip-transcript-from-its-saved-recording-or-r.md +6 -0
  57. package/corpus/templates/clips/changelog/2026-07-09-slack-previews-now-show-the-clip-length-alongside-its-descri.md +6 -0
  58. package/corpus/templates/clips/changelog/2026-07-10-fixed-copying-agent-responses-and-transcript-text-from-recor.md +6 -0
  59. package/corpus/templates/clips/desktop/src/app.tsx +12 -2
  60. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +8 -1
  61. package/corpus/templates/clips/desktop/src/lib/recorder.ts +8 -5
  62. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +5 -5
  63. package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +3 -0
  64. package/corpus/templates/clips/desktop/src/styles.css +6 -3
  65. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +29 -11
  66. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1 -1
  67. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +103 -21
  68. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +117 -39
  69. package/corpus/templates/clips/server/lib/slack-unfurls.ts +20 -1
  70. package/corpus/templates/clips/server/lib/streaming-upload-mode.ts +10 -4
  71. package/corpus/templates/clips/shared/recording-core.ts +12 -0
  72. package/corpus/templates/content/AGENTS.md +7 -6
  73. package/corpus/templates/content/actions/_builder-cms-read-client.ts +82 -7
  74. package/corpus/templates/content/actions/_database-source-utils.ts +149 -30
  75. package/corpus/templates/content/actions/_document-flush.ts +132 -17
  76. package/corpus/templates/content/actions/_notion-action-utils.ts +15 -0
  77. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +4 -7
  78. package/corpus/templates/content/actions/attach-content-database-source.ts +41 -17
  79. package/corpus/templates/content/actions/change-content-database-source-role.ts +46 -8
  80. package/corpus/templates/content/actions/create-and-link-notion-page.ts +2 -0
  81. package/corpus/templates/content/actions/link-notion-page.ts +2 -0
  82. package/corpus/templates/content/actions/pull-document.ts +5 -7
  83. package/corpus/templates/content/actions/pull-notion-page.ts +2 -0
  84. package/corpus/templates/content/actions/push-notion-page.ts +10 -0
  85. package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +2 -0
  86. package/corpus/templates/content/actions/suggest-source-join-key.ts +8 -1
  87. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +88 -23
  88. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +32 -2
  89. package/corpus/templates/content/app/hooks/use-notion.ts +6 -6
  90. package/corpus/templates/content/app/i18n/zh-TW.ts +1 -0
  91. package/corpus/templates/content/app/i18n-data.ts +18 -0
  92. package/corpus/templates/content/changelog/2026-07-09-builder-source-refreshes-now-keep-mapped-fields-such-as-topi.md +6 -0
  93. package/corpus/templates/content/changelog/2026-07-09-notion-conflict-choices-and-version-restores-preserve-docume.md +6 -0
  94. package/corpus/templates/content/server/lib/notion-sync.ts +80 -64
  95. package/corpus/templates/content/shared/api.ts +1 -0
  96. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +29 -2
  97. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +86 -0
  98. package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +57 -0
  99. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +11 -0
  100. package/corpus/templates/design/AGENTS.md +45 -10
  101. package/corpus/templates/design/actions/add-localhost-screens.ts +66 -13
  102. package/corpus/templates/design/actions/apply-component-prop-edit.ts +45 -36
  103. package/corpus/templates/design/actions/apply-motion-edit.ts +25 -31
  104. package/corpus/templates/design/actions/apply-shader-fill.ts +29 -42
  105. package/corpus/templates/design/actions/detach-component-instance.ts +337 -0
  106. package/corpus/templates/design/actions/export-design-as-figma-svg.ts +219 -0
  107. package/corpus/templates/design/actions/generate-design.ts +79 -12
  108. package/corpus/templates/design/actions/generate-screens.ts +57 -12
  109. package/corpus/templates/design/actions/get-figma-styles.ts +115 -0
  110. package/corpus/templates/design/actions/go-to-main-component.ts +254 -0
  111. package/corpus/templates/design/actions/grant-localhost-write-consent.ts +4 -3
  112. package/corpus/templates/design/actions/import-design-source.ts +4 -31
  113. package/corpus/templates/design/actions/import-figma-clipboard.ts +134 -0
  114. package/corpus/templates/design/actions/import-figma-frame.ts +95 -0
  115. package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -1
  116. package/corpus/templates/design/actions/list-design-components.ts +104 -0
  117. package/corpus/templates/design/actions/list-figma-library-assets.ts +1 -24
  118. package/corpus/templates/design/actions/open-component-source.ts +2 -4
  119. package/corpus/templates/design/actions/present-design-variants.ts +412 -16
  120. package/corpus/templates/design/actions/preview-source-edit.ts +14 -1
  121. package/corpus/templates/design/actions/run-design-audit.ts +25 -3
  122. package/corpus/templates/design/actions/show-design-questions.ts +10 -0
  123. package/corpus/templates/design/actions/swap-component-instance.ts +544 -0
  124. package/corpus/templates/design/actions/take-design-screenshot.ts +45 -60
  125. package/corpus/templates/design/actions/write-local-file.ts +25 -1
  126. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +152 -0
  127. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1077 -58
  128. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +5 -5
  129. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +73 -21
  130. package/corpus/templates/design/app/components/design/EditPanel.tsx +16 -11
  131. package/corpus/templates/design/app/components/design/KeyboardShortcutsPanel.tsx +364 -0
  132. package/corpus/templates/design/app/components/design/LayersPanel.tsx +180 -53
  133. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +0 -2
  134. package/corpus/templates/design/app/components/design/MotionDock.tsx +144 -21
  135. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1152 -167
  136. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +27 -5
  137. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +23 -2
  138. package/corpus/templates/design/app/components/design/TokensPanel.tsx +63 -49
  139. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1293 -54
  140. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +7 -0
  141. package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +6 -1
  142. package/corpus/templates/design/app/components/design/bridge/motion-preview.bridge.ts +23 -6
  143. package/corpus/templates/design/app/components/design/bridge/sample.bridge.ts +7 -0
  144. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -0
  145. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +14 -2
  146. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +37 -2
  147. package/corpus/templates/design/app/components/design/code-workbench/format/format-on-open-guard.ts +25 -0
  148. package/corpus/templates/design/app/components/design/code-workbench/format/format-on-open.ts +19 -1
  149. package/corpus/templates/design/app/components/design/code-workbench/model-registry.ts +43 -5
  150. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +27 -2
  151. package/corpus/templates/design/app/components/design/code-workbench/search/search-engine.ts +10 -1
  152. package/corpus/templates/design/app/components/design/code-workbench/store.tsx +19 -2
  153. package/corpus/templates/design/app/components/design/design-canvas/annotation-snapshot.ts +265 -0
  154. package/corpus/templates/design/app/components/design/design-canvas/annotation-submit.ts +16 -5
  155. package/corpus/templates/design/app/components/design/design-canvas/coordinate-transforms.ts +16 -2
  156. package/corpus/templates/design/app/components/design/design-canvas/embedded-frame.ts +7 -2
  157. package/corpus/templates/design/app/components/design/design-canvas/iframe-events.ts +3 -1
  158. package/corpus/templates/design/app/components/design/edit-panel/code-inspect-helpers.tsx +78 -8
  159. package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +451 -73
  160. package/corpus/templates/design/app/components/design/edit-panel/document-colors.ts +12 -4
  161. package/corpus/templates/design/app/components/design/edit-panel/effects-properties.tsx +398 -272
  162. package/corpus/templates/design/app/components/design/edit-panel/element-classification.ts +41 -7
  163. package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +16 -3
  164. package/corpus/templates/design/app/components/design/edit-panel/field-primitives.tsx +24 -4
  165. package/corpus/templates/design/app/components/design/edit-panel/fill-gradient-helpers.ts +222 -4
  166. package/corpus/templates/design/app/components/design/edit-panel/fill-properties.tsx +171 -78
  167. package/corpus/templates/design/app/components/design/edit-panel/inspector-controls.tsx +45 -5
  168. package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +299 -28
  169. package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +120 -150
  170. package/corpus/templates/design/app/components/design/edit-panel/position-helpers.ts +53 -1
  171. package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +284 -117
  172. package/corpus/templates/design/app/components/design/edit-panel/selection-helpers.ts +81 -0
  173. package/corpus/templates/design/app/components/design/edit-panel/stroke-properties.tsx +19 -14
  174. package/corpus/templates/design/app/components/design/edit-panel/style-options.ts +7 -0
  175. package/corpus/templates/design/app/components/design/edit-panel/typography-helpers.ts +155 -0
  176. package/corpus/templates/design/app/components/design/edit-panel/typography-properties.tsx +268 -46
  177. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +350 -31
  178. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +13 -4
  179. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +233 -23
  180. package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +72 -2
  181. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +51 -11
  182. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +84 -11
  183. package/corpus/templates/design/app/components/design/inspector/index.ts +3 -0
  184. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +552 -0
  185. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +157 -0
  186. package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +53 -0
  187. package/corpus/templates/design/app/components/design/multi-screen/overview-layout.ts +184 -0
  188. package/corpus/templates/design/app/components/design/multi-screen/primitive-drop-target.ts +403 -26
  189. package/corpus/templates/design/app/components/design/multi-screen/types.ts +20 -1
  190. package/corpus/templates/design/app/components/design/types.ts +33 -0
  191. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +59 -7
  192. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +119 -17
  193. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +275 -63
  194. package/corpus/templates/design/app/hooks/use-question-flow.ts +14 -3
  195. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +67 -10
  196. package/corpus/templates/design/app/i18n/zh-TW.ts +91 -1
  197. package/corpus/templates/design/app/i18n-data.ts +1217 -10
  198. package/corpus/templates/design/app/i18n-keyboard-shortcuts.ts +577 -0
  199. package/corpus/templates/design/app/lib/agent-chat.ts +23 -0
  200. package/corpus/templates/design/app/lib/design-import.ts +24 -0
  201. package/corpus/templates/design/app/lib/figma-clipboard.ts +157 -0
  202. package/corpus/templates/design/app/lib/figma-svg-copy.ts +221 -0
  203. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +143 -30
  204. package/corpus/templates/design/app/pages/design-editor/collab-sync.ts +15 -0
  205. package/corpus/templates/design/app/pages/design-editor/editor-session.ts +33 -0
  206. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +38 -0
  207. package/corpus/templates/design/app/pages/design-editor/overview-annotation-context.ts +157 -0
  208. package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +62 -6
  209. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +245 -0
  210. package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +586 -0
  211. package/corpus/templates/design/app/pages/design-editor/screen-auto-layout.ts +169 -0
  212. package/corpus/templates/design/app/pages/design-editor/selection-state.ts +201 -1
  213. package/corpus/templates/design/changelog/2026-07-09-added-underline-strikethrough-and-text-case-uppercase-lowerc.md +6 -0
  214. package/corpus/templates/design/changelog/2026-07-09-annotate-now-draws-across-the-all-screens-canvas-without-swi.md +6 -0
  215. package/corpus/templates/design/changelog/2026-07-09-auto-layout-children-can-now-be-dragged-into-freeform-screen.md +6 -0
  216. package/corpus/templates/design/changelog/2026-07-09-board-shapes-now-stay-visible-and-nest-correctly-across-the-.md +6 -0
  217. package/corpus/templates/design/changelog/2026-07-09-component-source-navigation-now-opens-reliably-from-the-insp.md +6 -0
  218. package/corpus/templates/design/changelog/2026-07-09-cross-screen-local-react-layer-moves-now-hand-off-exact-sour.md +6 -0
  219. package/corpus/templates/design/changelog/2026-07-09-cross-screen-moves-undo-and-redo-now-keep-both-screens-stabl.md +6 -0
  220. package/corpus/templates/design/changelog/2026-07-09-detach-a-component-instance-into-plain-editable-eleme.md +6 -0
  221. package/corpus/templates/design/changelog/2026-07-09-dragging-layers-into-auto-layout-now-respects-ignore-auto-la.md +6 -0
  222. package/corpus/templates/design/changelog/2026-07-09-drawing-annotations-sent-to-the-agent-now-include-a-rendered.md +6 -0
  223. package/corpus/templates/design/changelog/2026-07-09-editor-sidebars-now-use-figma-matched-default-widths-for-a-r.md +6 -0
  224. package/corpus/templates/design/changelog/2026-07-09-empty-frames-and-rectangles-now-expose-full-auto-layout-cont.md +6 -0
  225. package/corpus/templates/design/changelog/2026-07-09-export-any-design-screen-as-a-real-vector-svg-for-figma-with.md +6 -0
  226. package/corpus/templates/design/changelog/2026-07-09-grid-auto-layout-now-uses-true-responsive-rows-and-columns-w.md +6 -0
  227. package/corpus/templates/design/changelog/2026-07-09-hidden-and-locked-screens-now-behave-consistently-between-la.md +6 -0
  228. package/corpus/templates/design/changelog/2026-07-09-image-fills-now-preserve-valid-urls-and-layered-fit-settings.md +6 -0
  229. package/corpus/templates/design/changelog/2026-07-09-import-figma-frames-as-pixel-accurate-design-screens-via-a-s.md +6 -0
  230. package/corpus/templates/design/changelog/2026-07-09-inspect-code-now-hides-internal-styling-metadata-and-wraps-l.md +6 -0
  231. package/corpus/templates/design/changelog/2026-07-09-inspector-blur-and-shadow-effects-now-preserve-other-effects.md +6 -0
  232. package/corpus/templates/design/changelog/2026-07-09-jump-to-a-components-other-instances-from-the-inspecto.md +6 -0
  233. package/corpus/templates/design/changelog/2026-07-09-keyboard-shortcuts-are-now-discoverable-in-a-figma-style-bot.md +6 -0
  234. package/corpus/templates/design/changelog/2026-07-09-layer-selection-now-keeps-cmd-or-ctrl-toggles-and-shift-rang.md +6 -0
  235. package/corpus/templates/design/changelog/2026-07-09-layers-dropped-into-auto-layout-now-participate-correctly-in.md +6 -0
  236. package/corpus/templates/design/changelog/2026-07-09-local-live-edit-screens-now-enter-and-leave-full-view-withou.md +6 -0
  237. package/corpus/templates/design/changelog/2026-07-09-local-preview-urls-now-live-in-the-inspector-instead-of-taki.md +6 -0
  238. package/corpus/templates/design/changelog/2026-07-09-local-react-layers-can-now-be-hidden-and-locked-from-layers-.md +6 -0
  239. package/corpus/templates/design/changelog/2026-07-09-local-react-layers-now-keep-exact-source-provenance-and-supp.md +6 -0
  240. package/corpus/templates/design/changelog/2026-07-09-local-react-visual-editing-now-loads-reliably-and-shows-live.md +6 -0
  241. package/corpus/templates/design/changelog/2026-07-09-paste-from-figma-cmd-v-now-imports-exact-editable-nodes-when.md +6 -0
  242. package/corpus/templates/design/changelog/2026-07-09-pressing-escape-after-selecting-a-screen-now-reveals-page-pr.md +6 -0
  243. package/corpus/templates/design/changelog/2026-07-09-right-click-overlapping-or-nested-objects-to-choose-the-exac.md +6 -0
  244. package/corpus/templates/design/changelog/2026-07-09-scale-edge-stretch-and-center-constraints-now-preserve-layer.md +6 -0
  245. package/corpus/templates/design/changelog/2026-07-09-screen-rows-can-now-be-reordered-in-layers-with-matching-can.md +6 -0
  246. package/corpus/templates/design/changelog/2026-07-09-screen-selection-stays-responsive-in-designs-with-hundreds-o.md +6 -0
  247. package/corpus/templates/design/changelog/2026-07-09-shift-a-now-enables-auto-layout-on-a-selected-screen-with-fl.md +6 -0
  248. package/corpus/templates/design/changelog/2026-07-09-swap-a-component-instance-for-another-from-the-libra.md +6 -0
  249. package/corpus/templates/design/changelog/2026-07-10-drawing-annotations-now-stay-available-to-retry-when-the.md +6 -0
  250. package/corpus/templates/design/e2e/global-setup.ts +3 -6
  251. package/corpus/templates/design/e2e/helpers.ts +27 -6
  252. package/corpus/templates/design/server/lib/design-to-figma-svg.ts +1412 -0
  253. package/corpus/templates/design/server/lib/figma-clipboard-match.ts +196 -0
  254. package/corpus/templates/design/server/lib/figma-node-import.ts +311 -0
  255. package/corpus/templates/design/server/lib/figma-node-to-html.ts +1334 -0
  256. package/corpus/templates/design/server/lib/figma-paste-fallback.ts +64 -0
  257. package/corpus/templates/design/server/lib/playwright-runtime.ts +78 -0
  258. package/corpus/templates/design/server/plugins/db.ts +41 -0
  259. package/corpus/templates/design/server/source-workspace.ts +64 -0
  260. package/corpus/templates/design/shared/board-file.ts +13 -2
  261. package/corpus/templates/design/shared/canvas-math.ts +231 -33
  262. package/corpus/templates/design/shared/code-layer.ts +122 -8
  263. package/corpus/templates/design/shared/component-library.ts +161 -0
  264. package/corpus/templates/design/shared/db-conflict.ts +27 -0
  265. package/corpus/templates/design/shared/design-source-capabilities.ts +2 -1
  266. package/corpus/templates/design/shared/figma-url.ts +149 -0
  267. package/corpus/templates/design/shared/pen-path.ts +16 -7
  268. package/corpus/templates/design/shared/source-mode.ts +1 -0
  269. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +7 -19
  270. package/corpus/templates/plan/changelog/2026-07-09-canvas-panning-now-keeps-zoom-fixed-even-at-the-edges.md +6 -0
  271. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +16 -1
  272. package/corpus/templates/slides/app/context/DeckContext.tsx +311 -70
  273. package/corpus/templates/slides/changelog/2026-07-09-fixed-the-slide-rail-going-permanently-stale-during-a-long-a.md +6 -0
  274. package/dist/agent/production-agent.d.ts +82 -7
  275. package/dist/agent/production-agent.d.ts.map +1 -1
  276. package/dist/agent/production-agent.js +180 -17
  277. package/dist/agent/production-agent.js.map +1 -1
  278. package/dist/agent/run-manager.d.ts.map +1 -1
  279. package/dist/agent/run-manager.js +63 -14
  280. package/dist/agent/run-manager.js.map +1 -1
  281. package/dist/agent/run-store.d.ts +46 -0
  282. package/dist/agent/run-store.d.ts.map +1 -1
  283. package/dist/agent/run-store.js +129 -22
  284. package/dist/agent/run-store.js.map +1 -1
  285. package/dist/cli/design-connect.d.ts +6 -0
  286. package/dist/cli/design-connect.d.ts.map +1 -1
  287. package/dist/cli/design-connect.js +336 -139
  288. package/dist/cli/design-connect.js.map +1 -1
  289. package/dist/cli/skills.d.ts.map +1 -1
  290. package/dist/cli/skills.js +14 -0
  291. package/dist/cli/skills.js.map +1 -1
  292. package/dist/client/AssistantChat.d.ts +2 -0
  293. package/dist/client/AssistantChat.d.ts.map +1 -1
  294. package/dist/client/AssistantChat.js +19 -3
  295. package/dist/client/AssistantChat.js.map +1 -1
  296. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  297. package/dist/client/MultiTabAssistantChat.js +38 -18
  298. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  299. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  300. package/dist/client/agent-chat-adapter.js +48 -12
  301. package/dist/client/agent-chat-adapter.js.map +1 -1
  302. package/dist/client/agent-chat.d.ts +60 -0
  303. package/dist/client/agent-chat.d.ts.map +1 -1
  304. package/dist/client/agent-chat.js +122 -1
  305. package/dist/client/agent-chat.js.map +1 -1
  306. package/dist/client/chat/index.d.ts +1 -1
  307. package/dist/client/chat/index.d.ts.map +1 -1
  308. package/dist/client/chat/index.js +1 -1
  309. package/dist/client/chat/index.js.map +1 -1
  310. package/dist/client/extensions/EmbeddedExtension.d.ts +12 -0
  311. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  312. package/dist/client/extensions/EmbeddedExtension.js +36 -2
  313. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  314. package/dist/client/index.d.ts +1 -1
  315. package/dist/client/index.d.ts.map +1 -1
  316. package/dist/client/index.js +1 -1
  317. package/dist/client/index.js.map +1 -1
  318. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
  319. package/dist/client/rich-markdown-editor/useCollabReconcile.js +18 -6
  320. package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
  321. package/dist/collab/awareness-store.d.ts +5 -0
  322. package/dist/collab/awareness-store.d.ts.map +1 -1
  323. package/dist/collab/awareness-store.js +19 -12
  324. package/dist/collab/awareness-store.js.map +1 -1
  325. package/dist/collab/awareness.d.ts +2 -2
  326. package/dist/collab/awareness.d.ts.map +1 -1
  327. package/dist/collab/client.d.ts.map +1 -1
  328. package/dist/collab/client.js +13 -5
  329. package/dist/collab/client.js.map +1 -1
  330. package/dist/collab/index.d.ts +1 -0
  331. package/dist/collab/index.d.ts.map +1 -1
  332. package/dist/collab/index.js +1 -0
  333. package/dist/collab/index.js.map +1 -1
  334. package/dist/collab/recent-edits.d.ts +3 -1
  335. package/dist/collab/recent-edits.d.ts.map +1 -1
  336. package/dist/collab/recent-edits.js +57 -2
  337. package/dist/collab/recent-edits.js.map +1 -1
  338. package/dist/collab/struct-routes.d.ts +1 -1
  339. package/dist/index.browser.d.ts +1 -1
  340. package/dist/index.browser.d.ts.map +1 -1
  341. package/dist/index.browser.js +1 -1
  342. package/dist/index.browser.js.map +1 -1
  343. package/dist/observability/routes.d.ts +5 -5
  344. package/dist/progress/routes.d.ts +1 -1
  345. package/dist/resources/handlers.d.ts +3 -3
  346. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  347. package/dist/server/agent-chat-plugin.js +87 -10
  348. package/dist/server/agent-chat-plugin.js.map +1 -1
  349. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  350. package/dist/server/builder-design-systems.d.ts +15 -0
  351. package/dist/server/builder-design-systems.d.ts.map +1 -1
  352. package/dist/server/builder-design-systems.js +9 -4
  353. package/dist/server/builder-design-systems.js.map +1 -1
  354. package/package.json +1 -1
@@ -1,6 +1,11 @@
1
1
  import type { LocaleCode } from "@agent-native/core/client";
2
2
 
3
3
  import { breakpointBarOverrides } from "./i18n-breakpoints";
4
+ import {
5
+ attachLocalizedKeyboardShortcuts,
6
+ keyboardKeyLabels,
7
+ keyboardShortcutLabels,
8
+ } from "./i18n-keyboard-shortcuts";
4
9
  import { motionDockOverrides } from "./i18n-motion";
5
10
  import zhTW from "./i18n/zh-TW";
6
11
 
@@ -264,6 +269,22 @@ const enUS = {
264
269
  right: "Right",
265
270
  justify: "Justify",
266
271
  },
272
+ textDecorations: {
273
+ underline: "Underline",
274
+ strikethrough: "Strikethrough",
275
+ },
276
+ textCases: {
277
+ none: "None",
278
+ uppercase: "Uppercase",
279
+ lowercase: "Lowercase",
280
+ capitalize: "Capitalize",
281
+ },
282
+ typographyDetails: {
283
+ basicsTab: "Basics",
284
+ detailsTab: "Details",
285
+ decorationLabel: "Decoration",
286
+ caseLabel: "Case",
287
+ },
267
288
  flexDirections: {
268
289
  row: "Row",
269
290
  column: "Column",
@@ -330,6 +351,41 @@ const enUS = {
330
351
  },
331
352
  designEditor: {
332
353
  askAgent: "Ask agent",
354
+ componentInstances: {
355
+ selectLayer: "Select layer",
356
+ goToMain: "Go to main component",
357
+ swap: "Swap instance",
358
+ detach: "Detach instance",
359
+ searchComponents: "Search components…",
360
+ loading: "Loading…",
361
+ noOtherComponents: "No other components found",
362
+ goToMainUnavailable: "Go to main component isn't available yet.",
363
+ onlyKnownInstance: "This is the only known instance of this component.",
364
+ resolveMainFailed: "Couldn't resolve the main component.",
365
+ detachFailed: "Couldn't detach this instance.",
366
+ detached: "Instance detached.",
367
+ swapFailed: "Couldn't swap this instance.",
368
+ swappedFor: 'Swapped for "{{name}}".',
369
+ openPanelNudge: "Use the Swap instance picker in the Component panel.",
370
+ openPanelFailed: "Could not open the component panel.",
371
+ },
372
+ makeItRealCard: {
373
+ open: "Open",
374
+ choose: "Choose",
375
+ connect: "Connect",
376
+ generating: "Generating",
377
+ generate: "Generate",
378
+ migrationFailed: "Migration failed. Please try again.",
379
+ },
380
+ componentProps: {
381
+ alpineTooComplexToEdit:
382
+ "Can’t safely edit this prop inline — this component’s Alpine state is too complex. Edit the source instead.",
383
+ label: "Props",
384
+ },
385
+ componentSource: {
386
+ editSource: "Edit component source",
387
+ needsConnectedApp: "Source jump needs a connected app",
388
+ },
333
389
  leftRail: {
334
390
  file: "File",
335
391
  agent: "Agent",
@@ -437,6 +493,12 @@ const enUS = {
437
493
  figmaPasteDescription:
438
494
  "Copy a frame or layer in Figma, then paste into the Design canvas. Design imports the visible clipboard HTML.",
439
495
  figmaPasteTarget: "Paste into the canvas",
496
+ figmaPasteApiKeyHint:
497
+ "Connect your Figma access token for exact node imports.",
498
+ figmaPasteMatchGuidance:
499
+ "Couldn't match this to specific Figma nodes. Paste a frame link instead for an exact import.",
500
+ figmaPasteRestLabel: "Imported via Figma API",
501
+ figmaPasteHtmlLabel: "Imported from clipboard preview",
440
502
  figUploadTitle: "Upload .fig",
441
503
  figUploadDescription:
442
504
  "Export only the frames you need. Large files with many embedded images may exceed the import limit.",
@@ -511,6 +573,122 @@ const enUS = {
511
573
  hand: "Hand",
512
574
  scale: "Scale",
513
575
  },
576
+ keyboardShortcuts: {
577
+ title: "Keyboard shortcuts",
578
+ close: "Close keyboard shortcuts",
579
+ codeContext: "Code",
580
+ screenContext: "Screen",
581
+ keys: {
582
+ or: "or",
583
+ command: "Command",
584
+ control: "Control",
585
+ option: "Option",
586
+ alt: "Alt",
587
+ shift: "Shift",
588
+ arrowDown: "Down Arrow",
589
+ arrowLeft: "Left Arrow",
590
+ arrowRight: "Right Arrow",
591
+ arrowUp: "Up Arrow",
592
+ backspace: "Backspace",
593
+ delete: "Delete",
594
+ enter: "Enter",
595
+ tab: "Tab",
596
+ questionMark: "Question Mark",
597
+ backslash: "Backslash",
598
+ equals: "Equals",
599
+ minus: "Minus",
600
+ leftBracket: "Left Bracket",
601
+ rightBracket: "Right Bracket",
602
+ },
603
+ descriptions: {
604
+ toggleUi:
605
+ "Press it now to quickly hide the panes and focus on your work",
606
+ undo: "Step back through your most recent design change",
607
+ redo: "Restore the design change you just undid",
608
+ },
609
+ categories: {
610
+ essential: "Essential",
611
+ tools: "Tools",
612
+ view: "View",
613
+ zoom: "Zoom",
614
+ text: "Text",
615
+ shape: "Shape",
616
+ selection: "Selection",
617
+ cursor: "Cursor",
618
+ edit: "Edit",
619
+ transform: "Transform",
620
+ arrange: "Arrange",
621
+ components: "Components",
622
+ layout: "Layout",
623
+ },
624
+ commands: {
625
+ showShortcuts: "Show keyboard shortcuts",
626
+ undo: "Undo",
627
+ redo: "Redo",
628
+ moveTool: "Move tool",
629
+ frameTool: "Frame tool",
630
+ textTool: "Text tool",
631
+ penTool: "Pen tool",
632
+ handTool: "Hand tool",
633
+ scaleTool: "Scale tool",
634
+ commentTool: "Comment tool",
635
+ drawTool: "Draw tool",
636
+ showLayers: "Show layers",
637
+ showAssets: "Show assets",
638
+ toggleUi: "Show/Hide UI",
639
+ toggleComments: "Show or hide comments",
640
+ zoomIn: "Zoom in",
641
+ zoomOut: "Zoom out",
642
+ zoomReset: "Zoom to 100%",
643
+ zoomFit: "Zoom to fit",
644
+ zoomSelection: "Zoom to selection",
645
+ underline: "Underline",
646
+ strikethrough: "Strikethrough",
647
+ rectangle: "Rectangle",
648
+ ellipse: "Ellipse",
649
+ line: "Line",
650
+ arrow: "Arrow",
651
+ selectAll: "Select all",
652
+ selectParent: "Select parent",
653
+ enterSelection: "Enter selection",
654
+ nextSibling: "Next sibling",
655
+ previousSibling: "Previous sibling",
656
+ nextScreen: "Next screen",
657
+ previousScreen: "Previous screen",
658
+ nudge: "Nudge",
659
+ nudgeLarge: "Nudge by 10",
660
+ copy: "Copy",
661
+ copyPng: "Copy as PNG",
662
+ cut: "Cut",
663
+ paste: "Paste",
664
+ pasteOver: "Paste over selection",
665
+ copyProperties: "Copy properties",
666
+ pasteProperties: "Paste properties",
667
+ pasteReplace: "Paste to replace",
668
+ duplicate: "Duplicate",
669
+ delete: "Delete",
670
+ rename: "Rename",
671
+ find: "Find layers",
672
+ flipHorizontal: "Flip horizontal",
673
+ flipVertical: "Flip vertical",
674
+ swapFillStroke: "Swap fill and stroke",
675
+ bringForward: "Bring forward",
676
+ sendBackward: "Send backward",
677
+ bringFront: "Bring to front",
678
+ sendBack: "Send to back",
679
+ alignLeft: "Align left",
680
+ alignRight: "Align right",
681
+ alignTop: "Align top",
682
+ alignBottom: "Align bottom",
683
+ tidy: "Tidy up",
684
+ createComponent: "Create component",
685
+ detachInstance: "Detach instance",
686
+ group: "Group selection",
687
+ ungroup: "Ungroup selection",
688
+ frameSelection: "Frame selection",
689
+ autoLayout: "Add auto layout",
690
+ },
691
+ },
514
692
  undo: "Undo",
515
693
  undoShortcut: "Undo (⌘Z)",
516
694
  redo: "Redo",
@@ -667,6 +845,13 @@ const enUS = {
667
845
  openScreenSvg: "Open a screen before exporting SVG",
668
846
  svgDownloaded: "SVG downloaded",
669
847
  svgExportError: "Could not export SVG",
848
+ figmaSvgCopied: "Copied as Figma SVG",
849
+ figmaSvgUnsupported:
850
+ "This browser can't copy SVG images to the clipboard",
851
+ figmaSvgBlocked: "Allow clipboard access to copy this SVG",
852
+ figmaSvgWriteError: "Could not copy SVG to the clipboard",
853
+ figmaSvgRenderError: "Could not create the Figma SVG",
854
+ figmaSvgExportError: "Could not export Figma SVG",
670
855
  screenDuplicated: "Screen duplicated",
671
856
  screenDuplicateError: "Could not duplicate screen",
672
857
  copied: "Copied",
@@ -691,6 +876,8 @@ const enUS = {
691
876
  undoSkippedConcurrentEdit: "Skipped an undo — someone else moved that",
692
877
  redoSkippedConcurrentEdit: "Skipped a redo — someone else moved that",
693
878
  autoLayoutScreensUnsupported: "Add auto layout doesn't apply to screens",
879
+ reactSourceAnchorsLoading:
880
+ "React source anchors are still loading. Try again once the local app finishes rendering.",
694
881
  },
695
882
  },
696
883
  layersPanel: {
@@ -727,6 +914,15 @@ const enUS = {
727
914
  frameSelection: "Frame selection",
728
915
  flipHorizontal: "Flip horizontal",
729
916
  flipVertical: "Flip vertical",
917
+ dragGhostCount: "{{count}} layers",
918
+ },
919
+ designCanvas: {
920
+ localBridge: {
921
+ confirmationRetryExhausted:
922
+ "Live editor bridge did not confirm after several attempts.",
923
+ connectionNotConfirmed:
924
+ "The live editor bridge did not confirm the connection. Is the local dev server still running?",
925
+ },
730
926
  },
731
927
  multiScreenCanvas: {
732
928
  duplicate: "Duplicate",
@@ -806,6 +1002,8 @@ const enUS = {
806
1002
  assetAdded: "Asset added",
807
1003
  assetsNoImageUrl: "Assets did not return an image URL.",
808
1004
  failedToUploadFile: "Failed to upload file",
1005
+ failedToSubmitPrompt: "Failed to submit prompt",
1006
+ skipPrompt: "Skip prompt",
809
1007
  designSystem: "Design system",
810
1008
  noDesignSystem: "No design system",
811
1009
  newDesignSystem: "New",
@@ -834,8 +1032,11 @@ const enUS = {
834
1032
  offline: "Offline",
835
1033
  saving: "Saving...",
836
1034
  clearedAllAnnotations: "Cleared all annotations",
1035
+ annotationsDiscardedOnViewChange:
1036
+ "{{count}} unsent annotation(s) were discarded when you left this view.",
837
1037
  undo: "Undo",
838
1038
  send: "Send",
1039
+ sendingDrawing: "Sending…",
839
1040
  commentSent: "Comment sent",
840
1041
  comment: "Comment",
841
1042
  annotationQueue: "Annotation queue",
@@ -878,6 +1079,9 @@ const enUS = {
878
1079
  conflict: "Conflict {{count}}",
879
1080
  blocked: "Blocked {{count}}",
880
1081
  },
1082
+ queuedCommentsDiscarded:
1083
+ "{{count}} unsent comment draft(s) were discarded when you left this view.",
1084
+ staleAnchorDetail: "Original element no longer found on the canvas.",
881
1085
  },
882
1086
  home: {
883
1087
  pageTitle: "Designs",
@@ -1180,6 +1384,17 @@ function mergeMessages(overrides: PartialMessages): Messages {
1180
1384
  return deepMerge(enUS, overrides);
1181
1385
  }
1182
1386
 
1387
+ function mergeLocalizedMessages(
1388
+ locale: Exclude<LocaleCode, "en-US">,
1389
+ overrides: PartialMessages,
1390
+ ): Messages {
1391
+ return attachLocalizedKeyboardShortcuts(
1392
+ mergeMessages(overrides),
1393
+ keyboardShortcutLabels[locale],
1394
+ keyboardKeyLabels[locale],
1395
+ );
1396
+ }
1397
+
1183
1398
  function mergePartialMessages(
1184
1399
  ...overrides: PartialMessages[]
1185
1400
  ): PartialMessages {
@@ -1266,6 +1481,22 @@ const designLocaleOverrides = {
1266
1481
  right: "正确的",
1267
1482
  justify: "证明合法",
1268
1483
  },
1484
+ textDecorations: {
1485
+ underline: "下划线",
1486
+ strikethrough: "删除线",
1487
+ },
1488
+ textCases: {
1489
+ none: "无",
1490
+ uppercase: "大写",
1491
+ lowercase: "小写",
1492
+ capitalize: "首字母大写",
1493
+ },
1494
+ typographyDetails: {
1495
+ basicsTab: "基础",
1496
+ detailsTab: "详细信息",
1497
+ decorationLabel: "装饰",
1498
+ caseLabel: "大小写",
1499
+ },
1269
1500
  flexDirections: {
1270
1501
  row: "排",
1271
1502
  column: "柱子",
@@ -1627,6 +1858,22 @@ const designLocaleOverrides = {
1627
1858
  right: "Bien",
1628
1859
  justify: "Justificar",
1629
1860
  },
1861
+ textDecorations: {
1862
+ underline: "Subrayado",
1863
+ strikethrough: "Tachado",
1864
+ },
1865
+ textCases: {
1866
+ none: "Ninguno",
1867
+ uppercase: "Mayúsculas",
1868
+ lowercase: "Minúsculas",
1869
+ capitalize: "Capitalizar",
1870
+ },
1871
+ typographyDetails: {
1872
+ basicsTab: "Básicos",
1873
+ detailsTab: "Detalles",
1874
+ decorationLabel: "Decoración",
1875
+ caseLabel: "Mayúsculas y minúsculas",
1876
+ },
1630
1877
  flexDirections: {
1631
1878
  row: "Fila",
1632
1879
  column: "Columna",
@@ -2010,6 +2257,22 @@ const designLocaleOverrides = {
2010
2257
  right: "Droite",
2011
2258
  justify: "Justifier",
2012
2259
  },
2260
+ textDecorations: {
2261
+ underline: "Souligné",
2262
+ strikethrough: "Barré",
2263
+ },
2264
+ textCases: {
2265
+ none: "Aucun",
2266
+ uppercase: "Majuscules",
2267
+ lowercase: "Minuscules",
2268
+ capitalize: "Première lettre en majuscule",
2269
+ },
2270
+ typographyDetails: {
2271
+ basicsTab: "Bases",
2272
+ detailsTab: "Détails",
2273
+ decorationLabel: "Décoration",
2274
+ caseLabel: "Casse",
2275
+ },
2013
2276
  flexDirections: {
2014
2277
  row: "Rangée",
2015
2278
  column: "Colonne",
@@ -2397,6 +2660,22 @@ const designLocaleOverrides = {
2397
2660
  right: "Rechts",
2398
2661
  justify: "Rechtfertigen",
2399
2662
  },
2663
+ textDecorations: {
2664
+ underline: "Unterstrichen",
2665
+ strikethrough: "Durchgestrichen",
2666
+ },
2667
+ textCases: {
2668
+ none: "Keine",
2669
+ uppercase: "Großbuchstaben",
2670
+ lowercase: "Kleinbuchstaben",
2671
+ capitalize: "Großschreibung",
2672
+ },
2673
+ typographyDetails: {
2674
+ basicsTab: "Grundlagen",
2675
+ detailsTab: "Details",
2676
+ decorationLabel: "Dekoration",
2677
+ caseLabel: "Groß-/Kleinschreibung",
2678
+ },
2400
2679
  flexDirections: {
2401
2680
  row: "Reihe",
2402
2681
  column: "Spalte",
@@ -2785,6 +3064,22 @@ const designLocaleOverrides = {
2785
3064
  right: "右",
2786
3065
  justify: "正当化する",
2787
3066
  },
3067
+ textDecorations: {
3068
+ underline: "下線",
3069
+ strikethrough: "取り消し線",
3070
+ },
3071
+ textCases: {
3072
+ none: "なし",
3073
+ uppercase: "大文字",
3074
+ lowercase: "小文字",
3075
+ capitalize: "先頭を大文字にする",
3076
+ },
3077
+ typographyDetails: {
3078
+ basicsTab: "基本",
3079
+ detailsTab: "詳細",
3080
+ decorationLabel: "装飾",
3081
+ caseLabel: "大文字/小文字",
3082
+ },
2788
3083
  flexDirections: {
2789
3084
  row: "行",
2790
3085
  column: "カラム",
@@ -3168,6 +3463,22 @@ const designLocaleOverrides = {
3168
3463
  right: "오른쪽",
3169
3464
  justify: "신이 옳다고 하다",
3170
3465
  },
3466
+ textDecorations: {
3467
+ underline: "밑줄",
3468
+ strikethrough: "취소선",
3469
+ },
3470
+ textCases: {
3471
+ none: "없음",
3472
+ uppercase: "대문자",
3473
+ lowercase: "소문자",
3474
+ capitalize: "첫 글자만 대문자",
3475
+ },
3476
+ typographyDetails: {
3477
+ basicsTab: "기본",
3478
+ detailsTab: "세부 정보",
3479
+ decorationLabel: "장식",
3480
+ caseLabel: "대소문자",
3481
+ },
3171
3482
  flexDirections: {
3172
3483
  row: "열",
3173
3484
  column: "열",
@@ -3544,6 +3855,22 @@ const designLocaleOverrides = {
3544
3855
  right: "Certo",
3545
3856
  justify: "Justificar",
3546
3857
  },
3858
+ textDecorations: {
3859
+ underline: "Sublinhado",
3860
+ strikethrough: "Tachado",
3861
+ },
3862
+ textCases: {
3863
+ none: "Nenhum",
3864
+ uppercase: "Maiúsculas",
3865
+ lowercase: "Minúsculas",
3866
+ capitalize: "Capitalizar",
3867
+ },
3868
+ typographyDetails: {
3869
+ basicsTab: "Básico",
3870
+ detailsTab: "Detalhes",
3871
+ decorationLabel: "Decoração",
3872
+ caseLabel: "Maiúsculas e minúsculas",
3873
+ },
3547
3874
  flexDirections: {
3548
3875
  row: "Linha",
3549
3876
  column: "Coluna",
@@ -3927,6 +4254,22 @@ const designLocaleOverrides = {
3927
4254
  right: "सही",
3928
4255
  justify: "औचित्य",
3929
4256
  },
4257
+ textDecorations: {
4258
+ underline: "रेखांकित",
4259
+ strikethrough: "स्ट्राइकथ्रू",
4260
+ },
4261
+ textCases: {
4262
+ none: "कोई नहीं",
4263
+ uppercase: "बड़े अक्षर",
4264
+ lowercase: "छोटे अक्षर",
4265
+ capitalize: "पहला अक्षर बड़ा",
4266
+ },
4267
+ typographyDetails: {
4268
+ basicsTab: "बुनियादी बातें",
4269
+ detailsTab: "विवरण",
4270
+ decorationLabel: "सजावट",
4271
+ caseLabel: "बड़े/छोटे अक्षर",
4272
+ },
3930
4273
  flexDirections: {
3931
4274
  row: "पंक्ति",
3932
4275
  column: "स्तंभ",
@@ -4301,6 +4644,22 @@ const designLocaleOverrides = {
4301
4644
  right: "يمين",
4302
4645
  justify: "يبرر",
4303
4646
  },
4647
+ textDecorations: {
4648
+ underline: "تسطير",
4649
+ strikethrough: "يتوسطه خط",
4650
+ },
4651
+ textCases: {
4652
+ none: "بلا",
4653
+ uppercase: "أحرف كبيرة",
4654
+ lowercase: "أحرف صغيرة",
4655
+ capitalize: "بدء الكلمات بحرف كبير",
4656
+ },
4657
+ typographyDetails: {
4658
+ basicsTab: "أساسيات",
4659
+ detailsTab: "التفاصيل",
4660
+ decorationLabel: "زخرفة",
4661
+ caseLabel: "حالة الأحرف",
4662
+ },
4304
4663
  flexDirections: {
4305
4664
  row: "صف",
4306
4665
  column: "عمود",
@@ -4682,8 +5041,11 @@ const designRawLiteralOverrides = {
4682
5041
  offline: "离线",
4683
5042
  saving: "正在保存...",
4684
5043
  clearedAllAnnotations: "已清除所有批注",
5044
+ annotationsDiscardedOnViewChange:
5045
+ "离开此视图时,{{count}} 条未发送的批注已被丢弃。",
4685
5046
  undo: "撤消",
4686
5047
  send: "发送",
5048
+ sendingDrawing: "正在发送…",
4687
5049
  commentSent: "评论已发送",
4688
5050
  comment: "评论",
4689
5051
  },
@@ -4836,8 +5198,11 @@ const designRawLiteralOverrides = {
4836
5198
  offline: "Sin conexión",
4837
5199
  saving: "Guardando...",
4838
5200
  clearedAllAnnotations: "Se borraron todas las anotaciones",
5201
+ annotationsDiscardedOnViewChange:
5202
+ "Se descartaron {{count}} anotación(es) sin enviar al salir de esta vista.",
4839
5203
  undo: "Deshacer",
4840
5204
  send: "Enviar",
5205
+ sendingDrawing: "Enviando…",
4841
5206
  commentSent: "Comentario enviado",
4842
5207
  comment: "Comentario",
4843
5208
  },
@@ -4991,8 +5356,11 @@ const designRawLiteralOverrides = {
4991
5356
  offline: "Hors ligne",
4992
5357
  saving: "Enregistrement...",
4993
5358
  clearedAllAnnotations: "Toutes les annotations ont été effacées",
5359
+ annotationsDiscardedOnViewChange:
5360
+ "{{count}} annotation(s) non envoyée(s) ont été abandonnées lorsque vous avez quitté cette vue.",
4994
5361
  undo: "Annuler",
4995
5362
  send: "Envoyer",
5363
+ sendingDrawing: "Envoi…",
4996
5364
  commentSent: "Commentaire envoyé",
4997
5365
  comment: "Commentaire",
4998
5366
  },
@@ -5147,8 +5515,11 @@ const designRawLiteralOverrides = {
5147
5515
  offline: "Offline",
5148
5516
  saving: "Speichern...",
5149
5517
  clearedAllAnnotations: "Alle Anmerkungen gelöscht",
5518
+ annotationsDiscardedOnViewChange:
5519
+ "{{count}} nicht gesendete Anmerkung(en) wurden beim Verlassen dieser Ansicht verworfen.",
5150
5520
  undo: "Rückgängig",
5151
5521
  send: "Senden",
5522
+ sendingDrawing: "Wird gesendet …",
5152
5523
  commentSent: "Kommentar gesendet",
5153
5524
  comment: "Kommentar",
5154
5525
  },
@@ -5299,8 +5670,11 @@ const designRawLiteralOverrides = {
5299
5670
  offline: "オフライン",
5300
5671
  saving: "保存中...",
5301
5672
  clearedAllAnnotations: "すべての注釈を消去しました",
5673
+ annotationsDiscardedOnViewChange:
5674
+ "この画面を離れたため、未送信の注釈{{count}}件が破棄されました。",
5302
5675
  undo: "元に戻す",
5303
5676
  send: "送信",
5677
+ sendingDrawing: "送信中…",
5304
5678
  commentSent: "コメントを送信しました",
5305
5679
  comment: "コメント",
5306
5680
  },
@@ -5449,8 +5823,11 @@ const designRawLiteralOverrides = {
5449
5823
  offline: "오프라인",
5450
5824
  saving: "저장 중...",
5451
5825
  clearedAllAnnotations: "모든 주석이 지워졌습니다",
5826
+ annotationsDiscardedOnViewChange:
5827
+ "이 화면을 벗어나면서 전송되지 않은 주석 {{count}}개가 삭제되었습니다.",
5452
5828
  undo: "실행 취소",
5453
5829
  send: "보내기",
5830
+ sendingDrawing: "전송 중…",
5454
5831
  commentSent: "댓글을 보냈습니다",
5455
5832
  comment: "댓글",
5456
5833
  },
@@ -5603,8 +5980,11 @@ const designRawLiteralOverrides = {
5603
5980
  offline: "Off-line",
5604
5981
  saving: "Salvando...",
5605
5982
  clearedAllAnnotations: "Todas as anotações foram limpas",
5983
+ annotationsDiscardedOnViewChange:
5984
+ "{{count}} anotação(ões) não enviada(s) foram descartadas ao sair desta visualização.",
5606
5985
  undo: "Desfazer",
5607
5986
  send: "Enviar",
5987
+ sendingDrawing: "Enviando…",
5608
5988
  commentSent: "Comentário enviado",
5609
5989
  comment: "Comentário",
5610
5990
  },
@@ -5754,8 +6134,11 @@ const designRawLiteralOverrides = {
5754
6134
  offline: "ऑफ़लाइन",
5755
6135
  saving: "सहेजा जा रहा है...",
5756
6136
  clearedAllAnnotations: "सभी एनोटेशन साफ़ किए गए",
6137
+ annotationsDiscardedOnViewChange:
6138
+ "यह दृश्य छोड़ने पर {{count}} न भेजे गए एनोटेशन हटा दिए गए।",
5757
6139
  undo: "पूर्ववत करें",
5758
6140
  send: "भेजें",
6141
+ sendingDrawing: "भेजा जा रहा है…",
5759
6142
  commentSent: "टिप्पणी भेजी गई",
5760
6143
  comment: "टिप्पणी",
5761
6144
  },
@@ -5904,8 +6287,11 @@ const designRawLiteralOverrides = {
5904
6287
  offline: "غير متصل",
5905
6288
  saving: "جارٍ الحفظ...",
5906
6289
  clearedAllAnnotations: "تم مسح جميع التعليقات التوضيحية",
6290
+ annotationsDiscardedOnViewChange:
6291
+ "تم تجاهل {{count}} من التعليقات التوضيحية غير المُرسَلة عند مغادرة هذا العرض.",
5907
6292
  undo: "تراجع",
5908
6293
  send: "إرسال",
6294
+ sendingDrawing: "جارٍ الإرسال…",
5909
6295
  commentSent: "تم إرسال التعليق",
5910
6296
  comment: "تعليق",
5911
6297
  },
@@ -6048,6 +6434,12 @@ const designExactEnglishOverrides = {
6048
6434
  pngSaveError: "无法保存 PNG",
6049
6435
  svgDownloaded: "SVG 已下载",
6050
6436
  svgExportError: "无法导出 SVG",
6437
+ figmaSvgCopied: "已复制为 Figma SVG",
6438
+ figmaSvgUnsupported: "此浏览器无法将 SVG 图像复制到剪贴板",
6439
+ figmaSvgBlocked: "请允许访问剪贴板以复制此 SVG",
6440
+ figmaSvgWriteError: "无法将 SVG 复制到剪贴板",
6441
+ figmaSvgRenderError: "无法创建 Figma SVG",
6442
+ figmaSvgExportError: "无法导出 Figma SVG",
6051
6443
  zipCreateError: "无法创建 ZIP 下载",
6052
6444
  zipDownloaded: "ZIP 已下载",
6053
6445
  zipExportError: "无法导出 ZIP",
@@ -6134,6 +6526,14 @@ const designExactEnglishOverrides = {
6134
6526
  pngSaveError: "No se pudo guardar PNG",
6135
6527
  svgDownloaded: "SVG descargado",
6136
6528
  svgExportError: "No se pudo exportar SVG",
6529
+ figmaSvgCopied: "Copiado como Figma SVG",
6530
+ figmaSvgUnsupported:
6531
+ "Este navegador no puede copiar imágenes SVG al portapapeles",
6532
+ figmaSvgBlocked:
6533
+ "Permite el acceso al portapapeles para copiar este SVG",
6534
+ figmaSvgWriteError: "No se pudo copiar el SVG al portapapeles",
6535
+ figmaSvgRenderError: "No se pudo crear el SVG de Figma",
6536
+ figmaSvgExportError: "No se pudo exportar el SVG de Figma",
6137
6537
  zipCreateError: "No se pudo crear la descarga ZIP",
6138
6538
  zipDownloaded: "ZIP descargado",
6139
6539
  zipExportError: "No se pudo exportar ZIP",
@@ -6222,6 +6622,15 @@ const designExactEnglishOverrides = {
6222
6622
  pngSaveError: "Impossible d’enregistrer PNG",
6223
6623
  svgDownloaded: "SVG téléchargé",
6224
6624
  svgExportError: "Impossible d’exporter SVG",
6625
+ figmaSvgCopied: "Copié en tant que SVG Figma",
6626
+ figmaSvgUnsupported:
6627
+ "Ce navigateur ne peut pas copier d’images SVG dans le presse-papiers",
6628
+ figmaSvgBlocked:
6629
+ "Autorisez l’accès au presse-papiers pour copier ce SVG",
6630
+ figmaSvgWriteError:
6631
+ "Impossible de copier le SVG dans le presse-papiers",
6632
+ figmaSvgRenderError: "Impossible de créer le SVG Figma",
6633
+ figmaSvgExportError: "Impossible d’exporter le SVG Figma",
6225
6634
  zipCreateError: "Impossible de créer le téléchargement ZIP",
6226
6635
  zipDownloaded: "ZIP téléchargé",
6227
6636
  zipExportError: "Impossible d’exporter ZIP",
@@ -6310,6 +6719,15 @@ const designExactEnglishOverrides = {
6310
6719
  pngSaveError: "PNG konnte nicht gespeichert werden",
6311
6720
  svgDownloaded: "SVG heruntergeladen",
6312
6721
  svgExportError: "SVG konnte nicht exportiert werden",
6722
+ figmaSvgCopied: "Als Figma-SVG kopiert",
6723
+ figmaSvgUnsupported:
6724
+ "Dieser Browser kann SVG-Bilder nicht in die Zwischenablage kopieren",
6725
+ figmaSvgBlocked:
6726
+ "Erlauben Sie den Zugriff auf die Zwischenablage, um dieses SVG zu kopieren",
6727
+ figmaSvgWriteError:
6728
+ "SVG konnte nicht in die Zwischenablage kopiert werden",
6729
+ figmaSvgRenderError: "Figma-SVG konnte nicht erstellt werden",
6730
+ figmaSvgExportError: "Figma-SVG konnte nicht exportiert werden",
6313
6731
  zipCreateError: "ZIP-Download konnte nicht erstellt werden",
6314
6732
  zipDownloaded: "ZIP heruntergeladen",
6315
6733
  zipExportError: "ZIP konnte nicht exportiert werden",
@@ -6397,6 +6815,14 @@ const designExactEnglishOverrides = {
6397
6815
  pngSaveError: "PNG を保存できませんでした",
6398
6816
  svgDownloaded: "SVG をダウンロードしました",
6399
6817
  svgExportError: "SVG をエクスポートできませんでした",
6818
+ figmaSvgCopied: "Figma SVG としてコピーしました",
6819
+ figmaSvgUnsupported:
6820
+ "このブラウザでは SVG 画像をクリップボードにコピーできません",
6821
+ figmaSvgBlocked:
6822
+ "この SVG をコピーするにはクリップボードへのアクセスを許可してください",
6823
+ figmaSvgWriteError: "SVG をクリップボードにコピーできませんでした",
6824
+ figmaSvgRenderError: "Figma SVG を作成できませんでした",
6825
+ figmaSvgExportError: "Figma SVG をエクスポートできませんでした",
6400
6826
  zipCreateError: "ZIP ダウンロードを作成できませんでした",
6401
6827
  zipDownloaded: "ZIP をダウンロードしました",
6402
6828
  zipExportError: "ZIP をエクスポートできませんでした",
@@ -6482,6 +6908,13 @@ const designExactEnglishOverrides = {
6482
6908
  pngSaveError: "PNG를 저장할 수 없음",
6483
6909
  svgDownloaded: "SVG 다운로드됨",
6484
6910
  svgExportError: "SVG를 내보낼 수 없음",
6911
+ figmaSvgCopied: "Figma SVG로 복사됨",
6912
+ figmaSvgUnsupported:
6913
+ "이 브라우저에서는 SVG 이미지를 클립보드에 복사할 수 없음",
6914
+ figmaSvgBlocked: "이 SVG를 복사하려면 클립보드 접근을 허용하세요",
6915
+ figmaSvgWriteError: "SVG를 클립보드에 복사할 수 없음",
6916
+ figmaSvgRenderError: "Figma SVG를 만들 수 없음",
6917
+ figmaSvgExportError: "Figma SVG를 내보낼 수 없음",
6485
6918
  zipCreateError: "ZIP 다운로드를 만들 수 없음",
6486
6919
  zipDownloaded: "ZIP 다운로드됨",
6487
6920
  zipExportError: "ZIP을 내보낼 수 없음",
@@ -6569,6 +7002,15 @@ const designExactEnglishOverrides = {
6569
7002
  pngSaveError: "Não foi possível salvar PNG",
6570
7003
  svgDownloaded: "SVG baixado",
6571
7004
  svgExportError: "Não foi possível exportar SVG",
7005
+ figmaSvgCopied: "Copiado como Figma SVG",
7006
+ figmaSvgUnsupported:
7007
+ "Este navegador não pode copiar imagens SVG para a área de transferência",
7008
+ figmaSvgBlocked:
7009
+ "Permita o acesso à área de transferência para copiar este SVG",
7010
+ figmaSvgWriteError:
7011
+ "Não foi possível copiar o SVG para a área de transferência",
7012
+ figmaSvgRenderError: "Não foi possível criar o Figma SVG",
7013
+ figmaSvgExportError: "Não foi possível exportar o Figma SVG",
6572
7014
  zipCreateError: "Não foi possível criar o download ZIP",
6573
7015
  zipDownloaded: "ZIP baixado",
6574
7016
  zipExportError: "Não foi possível exportar ZIP",
@@ -6653,6 +7095,13 @@ const designExactEnglishOverrides = {
6653
7095
  pngSaveError: "PNG सहेजा नहीं जा सका",
6654
7096
  svgDownloaded: "SVG डाउनलोड हुआ",
6655
7097
  svgExportError: "SVG निर्यात नहीं किया जा सका",
7098
+ figmaSvgCopied: "Figma SVG के रूप में कॉपी हुआ",
7099
+ figmaSvgUnsupported:
7100
+ "यह ब्राउज़र SVG छवियों को क्लिपबोर्ड पर कॉपी नहीं कर सकता",
7101
+ figmaSvgBlocked: "इस SVG को कॉपी करने के लिए क्लिपबोर्ड एक्सेस की अनुमति दें",
7102
+ figmaSvgWriteError: "SVG को क्लिपबोर्ड पर कॉपी नहीं किया जा सका",
7103
+ figmaSvgRenderError: "Figma SVG नहीं बनाया जा सका",
7104
+ figmaSvgExportError: "Figma SVG निर्यात नहीं किया जा सका",
6656
7105
  zipCreateError: "ZIP डाउनलोड नहीं बनाया जा सका",
6657
7106
  zipDownloaded: "ZIP डाउनलोड हुआ",
6658
7107
  zipExportError: "ZIP निर्यात नहीं किया जा सका",
@@ -6736,6 +7185,12 @@ const designExactEnglishOverrides = {
6736
7185
  pngSaveError: "تعذر حفظ PNG",
6737
7186
  svgDownloaded: "تم تنزيل SVG",
6738
7187
  svgExportError: "تعذر تصدير SVG",
7188
+ figmaSvgCopied: "تم النسخ كملف Figma SVG",
7189
+ figmaSvgUnsupported: "لا يمكن لهذا المتصفح نسخ صور SVG إلى الحافظة",
7190
+ figmaSvgBlocked: "اسمح بالوصول إلى الحافظة لنسخ ملف SVG هذا",
7191
+ figmaSvgWriteError: "تعذر نسخ SVG إلى الحافظة",
7192
+ figmaSvgRenderError: "تعذر إنشاء Figma SVG",
7193
+ figmaSvgExportError: "تعذر تصدير Figma SVG",
6739
7194
  zipCreateError: "تعذر إنشاء تنزيل ZIP",
6740
7195
  zipDownloaded: "تم تنزيل ZIP",
6741
7196
  zipExportError: "تعذر تصدير ZIP",
@@ -10593,6 +11048,11 @@ const designImportOverrides = {
10593
11048
  figmaPasteDescription:
10594
11049
  "在 Figma 複製畫框或圖層,然後貼到 Design 畫布。Design 會匯入可見的剪貼簿 HTML。",
10595
11050
  figmaPasteTarget: "貼到畫布",
11051
+ figmaPasteApiKeyHint: "連結您的 Figma 存取權杖以取得精確的節點匯入。",
11052
+ figmaPasteMatchGuidance:
11053
+ "無法比對到特定的 Figma 節點。請改貼上畫框連結以進行精確匯入。",
11054
+ figmaPasteRestLabel: "透過 Figma API 匯入",
11055
+ figmaPasteHtmlLabel: "從剪貼簿預覽匯入",
10596
11056
  figUploadTitle: "上傳 .fig",
10597
11057
  figUploadDescription:
10598
11058
  "只匯出需要的畫框。含有許多嵌入圖片的大型檔案可能超過匯入限制。",
@@ -10633,6 +11093,11 @@ const designImportOverrides = {
10633
11093
  figmaPasteDescription:
10634
11094
  "在 Figma 中复制画框或图层,然后粘贴到 Design 画布。Design 会导入可见的剪贴板 HTML。",
10635
11095
  figmaPasteTarget: "粘贴到画布",
11096
+ figmaPasteApiKeyHint: "连接您的 Figma 访问令牌以获得精确的节点导入。",
11097
+ figmaPasteMatchGuidance:
11098
+ "无法匹配到特定的 Figma 节点。请改为粘贴画框链接以进行精确导入。",
11099
+ figmaPasteRestLabel: "通过 Figma API 导入",
11100
+ figmaPasteHtmlLabel: "从剪贴板预览导入",
10636
11101
  figUploadTitle: "上传 .fig",
10637
11102
  figUploadDescription:
10638
11103
  "只导出需要的画框。包含大量嵌入图片的大文件可能超过导入限制。",
@@ -10674,6 +11139,12 @@ const designImportOverrides = {
10674
11139
  figmaPasteDescription:
10675
11140
  "Copia un marco o capa en Figma y pégalo en el lienzo de Design. Design importa el HTML visible del portapapeles.",
10676
11141
  figmaPasteTarget: "Pega en el lienzo",
11142
+ figmaPasteApiKeyHint:
11143
+ "Conecta tu token de acceso de Figma para importaciones exactas de nodos.",
11144
+ figmaPasteMatchGuidance:
11145
+ "No se pudo hacer coincidir con nodos específicos de Figma. Pega un enlace de marco para una importación exacta.",
11146
+ figmaPasteRestLabel: "Importado mediante la API de Figma",
11147
+ figmaPasteHtmlLabel: "Importado desde la vista previa del portapapeles",
10677
11148
  figUploadTitle: "Subir .fig",
10678
11149
  figUploadDescription:
10679
11150
  "Exporta solo los marcos necesarios. Los archivos grandes con muchas imágenes incrustadas pueden superar el límite.",
@@ -10717,6 +11188,12 @@ const designImportOverrides = {
10717
11188
  figmaPasteDescription:
10718
11189
  "Copiez un frame ou un calque dans Figma, puis collez-le dans le canevas Design. Design importe le HTML visible du presse-papiers.",
10719
11190
  figmaPasteTarget: "Collez dans le canevas",
11191
+ figmaPasteApiKeyHint:
11192
+ "Connectez votre jeton d'accès Figma pour des imports de nœuds exacts.",
11193
+ figmaPasteMatchGuidance:
11194
+ "Impossible de faire correspondre à des nœuds Figma précis. Collez un lien de cadre pour un import exact.",
11195
+ figmaPasteRestLabel: "Importé via l'API Figma",
11196
+ figmaPasteHtmlLabel: "Importé depuis l'aperçu du presse-papiers",
10720
11197
  figUploadTitle: "Téléverser .fig",
10721
11198
  figUploadDescription:
10722
11199
  "Exportez seulement les frames nécessaires. Les gros fichiers avec beaucoup d’images intégrées peuvent dépasser la limite.",
@@ -10760,6 +11237,12 @@ const designImportOverrides = {
10760
11237
  figmaPasteDescription:
10761
11238
  "Kopiere einen Frame oder Layer in Figma und füge ihn in die Design-Leinwand ein. Design importiert das sichtbare Zwischenablage-HTML.",
10762
11239
  figmaPasteTarget: "In die Leinwand einfügen",
11240
+ figmaPasteApiKeyHint:
11241
+ "Verbinde deinen Figma-Zugriffstoken für exakte Node-Importe.",
11242
+ figmaPasteMatchGuidance:
11243
+ "Konnte nicht mit bestimmten Figma-Nodes abgeglichen werden. Füge stattdessen einen Frame-Link für einen exakten Import ein.",
11244
+ figmaPasteRestLabel: "Über die Figma-API importiert",
11245
+ figmaPasteHtmlLabel: "Aus der Zwischenablage-Vorschau importiert",
10763
11246
  figUploadTitle: ".fig hochladen",
10764
11247
  figUploadDescription:
10765
11248
  "Exportiere nur die benötigten Frames. Große Dateien mit vielen eingebetteten Bildern können das Importlimit überschreiten.",
@@ -10802,6 +11285,12 @@ const designImportOverrides = {
10802
11285
  figmaPasteDescription:
10803
11286
  "Figma でフレームまたはレイヤーをコピーし、Design キャンバスに貼り付けます。Design は表示されているクリップボード HTML をインポートします。",
10804
11287
  figmaPasteTarget: "キャンバスに貼り付け",
11288
+ figmaPasteApiKeyHint:
11289
+ "正確なノードインポートのために Figma アクセストークンを接続してください。",
11290
+ figmaPasteMatchGuidance:
11291
+ "特定の Figma ノードと一致しませんでした。正確にインポートするにはフレームのリンクを貼り付けてください。",
11292
+ figmaPasteRestLabel: "Figma API 経由でインポート",
11293
+ figmaPasteHtmlLabel: "クリップボードプレビューからインポート",
10805
11294
  figUploadTitle: ".fig をアップロード",
10806
11295
  figUploadDescription:
10807
11296
  "必要なフレームだけを書き出してください。埋め込み画像が多い大きなファイルは制限を超える場合があります。",
@@ -10845,6 +11334,12 @@ const designImportOverrides = {
10845
11334
  figmaPasteDescription:
10846
11335
  "Figma에서 프레임이나 레이어를 복사한 뒤 Design 캔버스에 붙여넣으세요. Design은 보이는 클립보드 HTML을 가져옵니다.",
10847
11336
  figmaPasteTarget: "캔버스에 붙여넣기",
11337
+ figmaPasteApiKeyHint:
11338
+ "정확한 노드 가져오기를 위해 Figma 액세스 토큰을 연결하세요.",
11339
+ figmaPasteMatchGuidance:
11340
+ "특정 Figma 노드와 일치시킬 수 없습니다. 정확한 가져오기를 위해 프레임 링크를 붙여넣으세요.",
11341
+ figmaPasteRestLabel: "Figma API로 가져옴",
11342
+ figmaPasteHtmlLabel: "클립보드 미리보기에서 가져옴",
10848
11343
  figUploadTitle: ".fig 업로드",
10849
11344
  figUploadDescription:
10850
11345
  "필요한 프레임만 내보내세요. 포함된 이미지가 많은 큰 파일은 가져오기 제한을 초과할 수 있습니다.",
@@ -10888,6 +11383,13 @@ const designImportOverrides = {
10888
11383
  figmaPasteDescription:
10889
11384
  "Copie um frame ou camada no Figma e cole na tela do Design. O Design importa o HTML visível da área de transferência.",
10890
11385
  figmaPasteTarget: "Cole na tela",
11386
+ figmaPasteApiKeyHint:
11387
+ "Conecte seu token de acesso do Figma para importações exatas de nós.",
11388
+ figmaPasteMatchGuidance:
11389
+ "Não foi possível corresponder a nós específicos do Figma. Cole um link do frame para uma importação exata.",
11390
+ figmaPasteRestLabel: "Importado via API do Figma",
11391
+ figmaPasteHtmlLabel:
11392
+ "Importado da pré-visualização da área de transferência",
10891
11393
  figUploadTitle: "Enviar .fig",
10892
11394
  figUploadDescription:
10893
11395
  "Exporte apenas os frames necessários. Arquivos grandes com muitas imagens incorporadas podem exceder o limite.",
@@ -10931,6 +11433,12 @@ const designImportOverrides = {
10931
11433
  figmaPasteDescription:
10932
11434
  "Figma में frame या layer कॉपी करें, फिर Design canvas में paste करें। Design visible clipboard HTML import करता है।",
10933
11435
  figmaPasteTarget: "canvas में paste करें",
11436
+ figmaPasteApiKeyHint:
11437
+ "सटीक नोड आयात के लिए अपना Figma access token कनेक्ट करें।",
11438
+ figmaPasteMatchGuidance:
11439
+ "विशिष्ट Figma नोड्स से मेल नहीं खाया। सटीक आयात के लिए इसके बजाय एक frame लिंक paste करें।",
11440
+ figmaPasteRestLabel: "Figma API के ज़रिए आयात किया गया",
11441
+ figmaPasteHtmlLabel: "क्लिपबोर्ड पूर्वावलोकन से आयात किया गया",
10934
11442
  figUploadTitle: ".fig अपलोड करें",
10935
11443
  figUploadDescription:
10936
11444
  "सिर्फ ज़रूरी frames export करें। कई embedded images वाली बड़ी files import limit से ऊपर जा सकती हैं।",
@@ -10973,6 +11481,12 @@ const designImportOverrides = {
10973
11481
  figmaPasteDescription:
10974
11482
  "انسخ إطارا أو طبقة في Figma، ثم الصقها في لوحة Design. يستورد Design HTML المرئي من الحافظة.",
10975
11483
  figmaPasteTarget: "الصق في اللوحة",
11484
+ figmaPasteApiKeyHint:
11485
+ "قم بربط رمز الوصول الخاص بك في Figma للحصول على استيراد دقيق للعقد.",
11486
+ figmaPasteMatchGuidance:
11487
+ "تعذّرت المطابقة مع عُقد Figma محددة. الصق رابط الإطار بدلاً من ذلك للحصول على استيراد دقيق.",
11488
+ figmaPasteRestLabel: "تم الاستيراد عبر واجهة Figma البرمجية",
11489
+ figmaPasteHtmlLabel: "تم الاستيراد من معاينة الحافظة",
10976
11490
  figUploadTitle: "رفع .fig",
10977
11491
  figUploadDescription:
10978
11492
  "صدّر الإطارات التي تحتاجها فقط. قد تتجاوز الملفات الكبيرة ذات الصور المضمنة الكثيرة حد الاستيراد.",
@@ -12220,9 +12734,666 @@ const designMotionAndBreakpointOverrides = {
12220
12734
  },
12221
12735
  } satisfies Record<Exclude<LocaleCode, "en-US" | "zh-TW">, PartialMessages>;
12222
12736
 
12737
+ // Runtime-layer identity, prompt/comment feedback, and localhost bridge copy.
12738
+ // zh-TW lives in app/i18n/zh-TW.ts with the rest of that locale's catalog.
12739
+ const designRuntimeIdentityAndBridgeOverrides = {
12740
+ "zh-CN": {
12741
+ designEditor: {
12742
+ toasts: {
12743
+ reactSourceAnchorsLoading:
12744
+ "React 源码锚点仍在加载中。请等本地应用完成渲染后再试一次。",
12745
+ },
12746
+ },
12747
+ layersPanel: { dragGhostCount: "{{count}} 个图层" },
12748
+ designCanvas: {
12749
+ localBridge: {
12750
+ confirmationRetryExhausted:
12751
+ "多次尝试后,实时编辑器桥接器仍未确认连接。",
12752
+ connectionNotConfirmed:
12753
+ "实时编辑器桥接器未确认连接。本地开发服务器是否仍在运行?",
12754
+ },
12755
+ },
12756
+ promptDialog: {
12757
+ failedToSubmitPrompt: "无法提交提示",
12758
+ skipPrompt: "跳过提示",
12759
+ },
12760
+ visualEditor: {
12761
+ queuedCommentsDiscarded:
12762
+ "离开此视图时,{{count}} 个未发送的评论草稿已被丢弃。",
12763
+ staleAnchorDetail: "在画布上已找不到原始元素。",
12764
+ },
12765
+ },
12766
+ "es-ES": {
12767
+ designEditor: {
12768
+ toasts: {
12769
+ reactSourceAnchorsLoading:
12770
+ "Los anclajes al código fuente de React aún se están cargando. Vuelve a intentarlo cuando la aplicación local termine de renderizarse.",
12771
+ },
12772
+ },
12773
+ layersPanel: { dragGhostCount: "{{count}} capas" },
12774
+ designCanvas: {
12775
+ localBridge: {
12776
+ confirmationRetryExhausted:
12777
+ "El puente del editor en vivo no confirmó la conexión tras varios intentos.",
12778
+ connectionNotConfirmed:
12779
+ "El puente del editor en vivo no confirmó la conexión. ¿Sigue ejecutándose el servidor de desarrollo local?",
12780
+ },
12781
+ },
12782
+ promptDialog: {
12783
+ failedToSubmitPrompt: "No se pudo enviar el prompt",
12784
+ skipPrompt: "Omitir prompt",
12785
+ },
12786
+ visualEditor: {
12787
+ queuedCommentsDiscarded:
12788
+ "Se descartaron {{count}} borradores de comentarios sin enviar al salir de esta vista.",
12789
+ staleAnchorDetail:
12790
+ "Ya no se encuentra el elemento original en el lienzo.",
12791
+ },
12792
+ },
12793
+ "fr-FR": {
12794
+ designEditor: {
12795
+ toasts: {
12796
+ reactSourceAnchorsLoading:
12797
+ "Les ancres vers le code source React sont encore en cours de chargement. Réessayez une fois le rendu de l’application locale terminé.",
12798
+ },
12799
+ },
12800
+ layersPanel: { dragGhostCount: "{{count}} calques" },
12801
+ designCanvas: {
12802
+ localBridge: {
12803
+ confirmationRetryExhausted:
12804
+ "Le pont de l’éditeur en direct n’a pas confirmé la connexion après plusieurs tentatives.",
12805
+ connectionNotConfirmed:
12806
+ "Le pont de l’éditeur en direct n’a pas confirmé la connexion. Le serveur de développement local est-il toujours en cours d’exécution ?",
12807
+ },
12808
+ },
12809
+ promptDialog: {
12810
+ failedToSubmitPrompt: "Impossible d’envoyer le prompt",
12811
+ skipPrompt: "Ignorer le prompt",
12812
+ },
12813
+ visualEditor: {
12814
+ queuedCommentsDiscarded:
12815
+ "Vous avez quitté cette vue : {{count}} brouillons de commentaires non envoyés ont été supprimés.",
12816
+ staleAnchorDetail: "L’élément d’origine est introuvable sur le canevas.",
12817
+ },
12818
+ },
12819
+ "de-DE": {
12820
+ designEditor: {
12821
+ toasts: {
12822
+ reactSourceAnchorsLoading:
12823
+ "Die React-Quellcodeanker werden noch geladen. Versuche es erneut, sobald die lokale App vollständig gerendert wurde.",
12824
+ },
12825
+ },
12826
+ layersPanel: { dragGhostCount: "{{count}} Ebenen" },
12827
+ designCanvas: {
12828
+ localBridge: {
12829
+ confirmationRetryExhausted:
12830
+ "Die Live-Editor-Bridge hat die Verbindung auch nach mehreren Versuchen nicht bestätigt.",
12831
+ connectionNotConfirmed:
12832
+ "Die Live-Editor-Bridge hat die Verbindung nicht bestätigt. Läuft der lokale Entwicklungsserver noch?",
12833
+ },
12834
+ },
12835
+ promptDialog: {
12836
+ failedToSubmitPrompt: "Prompt konnte nicht gesendet werden",
12837
+ skipPrompt: "Prompt überspringen",
12838
+ },
12839
+ visualEditor: {
12840
+ queuedCommentsDiscarded:
12841
+ "Beim Verlassen dieser Ansicht wurden {{count}} nicht gesendete Kommentarentwürfe verworfen.",
12842
+ staleAnchorDetail:
12843
+ "Das ursprüngliche Element wurde auf der Arbeitsfläche nicht mehr gefunden.",
12844
+ },
12845
+ },
12846
+ "ja-JP": {
12847
+ designEditor: {
12848
+ toasts: {
12849
+ reactSourceAnchorsLoading:
12850
+ "React ソースのアンカーを読み込み中です。ローカルアプリのレンダリングが完了してからもう一度お試しください。",
12851
+ },
12852
+ },
12853
+ layersPanel: { dragGhostCount: "{{count}} 個のレイヤー" },
12854
+ designCanvas: {
12855
+ localBridge: {
12856
+ confirmationRetryExhausted:
12857
+ "数回試行しましたが、ライブエディターブリッジから確認応答がありませんでした。",
12858
+ connectionNotConfirmed:
12859
+ "ライブエディターブリッジが接続を確認できませんでした。ローカル開発サーバーはまだ実行中ですか?",
12860
+ },
12861
+ },
12862
+ promptDialog: {
12863
+ failedToSubmitPrompt: "プロンプトを送信できませんでした",
12864
+ skipPrompt: "プロンプトをスキップ",
12865
+ },
12866
+ visualEditor: {
12867
+ queuedCommentsDiscarded:
12868
+ "このビューを離れたため、未送信のコメント下書き {{count}} 件が破棄されました。",
12869
+ staleAnchorDetail: "元の要素がキャンバス上に見つかりません。",
12870
+ },
12871
+ },
12872
+ "ko-KR": {
12873
+ designEditor: {
12874
+ toasts: {
12875
+ reactSourceAnchorsLoading:
12876
+ "React 소스 앵커를 아직 불러오는 중입니다. 로컬 앱의 렌더링이 끝난 후 다시 시도하세요.",
12877
+ },
12878
+ },
12879
+ layersPanel: { dragGhostCount: "레이어 {{count}}개" },
12880
+ designCanvas: {
12881
+ localBridge: {
12882
+ confirmationRetryExhausted:
12883
+ "여러 번 시도했지만 라이브 편집기 브리지가 연결을 확인하지 못했습니다.",
12884
+ connectionNotConfirmed:
12885
+ "라이브 편집기 브리지가 연결을 확인하지 못했습니다. 로컬 개발 서버가 아직 실행 중인가요?",
12886
+ },
12887
+ },
12888
+ promptDialog: {
12889
+ failedToSubmitPrompt: "프롬프트를 제출하지 못했습니다",
12890
+ skipPrompt: "프롬프트 건너뛰기",
12891
+ },
12892
+ visualEditor: {
12893
+ queuedCommentsDiscarded:
12894
+ "이 보기를 벗어나면서 보내지 않은 댓글 초안 {{count}}개가 삭제되었습니다.",
12895
+ staleAnchorDetail: "원래 요소를 캔버스에서 더 이상 찾을 수 없습니다.",
12896
+ },
12897
+ },
12898
+ "pt-BR": {
12899
+ designEditor: {
12900
+ toasts: {
12901
+ reactSourceAnchorsLoading:
12902
+ "Os vínculos ao código-fonte do React ainda estão sendo carregados. Tente novamente quando o app local terminar de renderizar.",
12903
+ },
12904
+ },
12905
+ layersPanel: { dragGhostCount: "{{count}} camadas" },
12906
+ designCanvas: {
12907
+ localBridge: {
12908
+ confirmationRetryExhausted:
12909
+ "Mesmo após várias tentativas, a ponte do editor em tempo real não confirmou a conexão.",
12910
+ connectionNotConfirmed:
12911
+ "A ponte do editor em tempo real não confirmou a conexão. O servidor de desenvolvimento local ainda está em execução?",
12912
+ },
12913
+ },
12914
+ promptDialog: {
12915
+ failedToSubmitPrompt: "Não foi possível enviar o prompt",
12916
+ skipPrompt: "Pular prompt",
12917
+ },
12918
+ visualEditor: {
12919
+ queuedCommentsDiscarded:
12920
+ "{{count}} rascunhos de comentários não enviados foram descartados quando você saiu desta visualização.",
12921
+ staleAnchorDetail:
12922
+ "O elemento original não foi mais encontrado na tela de design.",
12923
+ },
12924
+ },
12925
+ "hi-IN": {
12926
+ designEditor: {
12927
+ toasts: {
12928
+ reactSourceAnchorsLoading:
12929
+ "React सोर्स एंकर अभी लोड हो रहे हैं। लोकल ऐप की रेंडरिंग पूरी होने के बाद फिर से कोशिश करें।",
12930
+ },
12931
+ },
12932
+ layersPanel: { dragGhostCount: "{{count}} लेयर" },
12933
+ designCanvas: {
12934
+ localBridge: {
12935
+ confirmationRetryExhausted:
12936
+ "कई कोशिशों के बाद भी लाइव एडिटर ब्रिज ने कनेक्शन की पुष्टि नहीं की।",
12937
+ connectionNotConfirmed:
12938
+ "लाइव एडिटर ब्रिज ने कनेक्शन की पुष्टि नहीं की। क्या लोकल डेवलपमेंट सर्वर अभी भी चल रहा है?",
12939
+ },
12940
+ },
12941
+ promptDialog: {
12942
+ failedToSubmitPrompt: "प्रॉम्प्ट सबमिट नहीं हो सका",
12943
+ skipPrompt: "प्रॉम्प्ट छोड़ें",
12944
+ },
12945
+ visualEditor: {
12946
+ queuedCommentsDiscarded:
12947
+ "इस व्यू से बाहर निकलने पर {{count}} नहीं भेजे गए कमेंट ड्राफ़्ट हटा दिए गए।",
12948
+ staleAnchorDetail: "मूल एलिमेंट अब कैनवास पर नहीं मिला।",
12949
+ },
12950
+ },
12951
+ "ar-SA": {
12952
+ designEditor: {
12953
+ toasts: {
12954
+ reactSourceAnchorsLoading:
12955
+ "لا تزال نقاط ارتساء مصدر React قيد التحميل. أعد المحاولة بعد اكتمال عرض التطبيق المحلي.",
12956
+ },
12957
+ },
12958
+ layersPanel: { dragGhostCount: "{{count}} طبقات" },
12959
+ designCanvas: {
12960
+ localBridge: {
12961
+ confirmationRetryExhausted:
12962
+ "لم يؤكد جسر المحرر المباشر الاتصال بعد عدة محاولات.",
12963
+ connectionNotConfirmed:
12964
+ "لم يؤكد جسر المحرر المباشر الاتصال. هل لا يزال خادم التطوير المحلي قيد التشغيل؟",
12965
+ },
12966
+ },
12967
+ promptDialog: {
12968
+ failedToSubmitPrompt: "تعذر إرسال المطالبة",
12969
+ skipPrompt: "تخطي المطالبة",
12970
+ },
12971
+ visualEditor: {
12972
+ queuedCommentsDiscarded:
12973
+ "تم تجاهل {{count}} مسودة تعليق غير مرسلة عند مغادرة هذا العرض.",
12974
+ staleAnchorDetail: "لم يعد العنصر الأصلي موجودًا على لوحة الرسم.",
12975
+ },
12976
+ },
12977
+ } satisfies Record<Exclude<LocaleCode, "en-US" | "zh-TW">, PartialMessages>;
12978
+
12979
+ // zh-TW strings for designEditor.componentInstances live in app/i18n/zh-TW.ts
12980
+ // (the full zh-TW locale file), not here.
12981
+ const designComponentInstanceOverrides = {
12982
+ "zh-CN": {
12983
+ designEditor: {
12984
+ componentInstances: {
12985
+ selectLayer: "选择图层",
12986
+ goToMain: "转到主组件",
12987
+ swap: "交换实例",
12988
+ detach: "分离实例",
12989
+ searchComponents: "搜索组件…",
12990
+ loading: "正在加载…",
12991
+ noOtherComponents: "未找到其他组件",
12992
+ goToMainUnavailable: "目前无法转到主组件。",
12993
+ onlyKnownInstance: "这是此组件唯一已知的实例。",
12994
+ resolveMainFailed: "无法解析主组件。",
12995
+ detachFailed: "无法分离此实例。",
12996
+ detached: "实例已分离。",
12997
+ swapFailed: "无法交换此实例。",
12998
+ swappedFor: "已交换为“{{name}}”。",
12999
+ openPanelNudge: "请使用“组件”面板中的“交换实例”选择器。",
13000
+ openPanelFailed: "无法打开组件面板。",
13001
+ },
13002
+ },
13003
+ },
13004
+ "es-ES": {
13005
+ designEditor: {
13006
+ componentInstances: {
13007
+ selectLayer: "Seleccionar capa",
13008
+ goToMain: "Ir al componente principal",
13009
+ swap: "Intercambiar instancia",
13010
+ detach: "Desvincular instancia",
13011
+ searchComponents: "Buscar componentes…",
13012
+ loading: "Cargando…",
13013
+ noOtherComponents: "No se encontraron otros componentes",
13014
+ goToMainUnavailable:
13015
+ "Ir al componente principal todavía no está disponible.",
13016
+ onlyKnownInstance:
13017
+ "Esta es la única instancia conocida de este componente.",
13018
+ resolveMainFailed: "No se pudo resolver el componente principal.",
13019
+ detachFailed: "No se pudo desvincular esta instancia.",
13020
+ detached: "Instancia desvinculada.",
13021
+ swapFailed: "No se pudo intercambiar esta instancia.",
13022
+ swappedFor: 'Se intercambió por "{{name}}".',
13023
+ openPanelNudge:
13024
+ "Usa el selector Intercambiar instancia del panel Componente.",
13025
+ openPanelFailed: "No se pudo abrir el panel Componente.",
13026
+ },
13027
+ },
13028
+ },
13029
+ "fr-FR": {
13030
+ designEditor: {
13031
+ componentInstances: {
13032
+ selectLayer: "Sélectionner un calque",
13033
+ goToMain: "Accéder au composant principal",
13034
+ swap: "Permuter l’instance",
13035
+ detach: "Détacher l’instance",
13036
+ searchComponents: "Rechercher des composants…",
13037
+ loading: "Chargement…",
13038
+ noOtherComponents: "Aucun autre composant trouvé",
13039
+ goToMainUnavailable:
13040
+ "L’accès au composant principal n’est pas encore disponible.",
13041
+ onlyKnownInstance:
13042
+ "Il s’agit de la seule instance connue de ce composant.",
13043
+ resolveMainFailed: "Impossible de résoudre le composant principal.",
13044
+ detachFailed: "Impossible de détacher cette instance.",
13045
+ detached: "Instance détachée.",
13046
+ swapFailed: "Impossible de permuter cette instance.",
13047
+ swappedFor: "Instance remplacée par « {{name}} ».",
13048
+ openPanelNudge:
13049
+ "Utilisez le sélecteur Permuter l’instance dans le panneau Composant.",
13050
+ openPanelFailed: "Impossible d’ouvrir le panneau Composant.",
13051
+ },
13052
+ },
13053
+ },
13054
+ "de-DE": {
13055
+ designEditor: {
13056
+ componentInstances: {
13057
+ selectLayer: "Ebene auswählen",
13058
+ goToMain: "Zur Hauptkomponente",
13059
+ swap: "Instanz austauschen",
13060
+ detach: "Instanz lösen",
13061
+ searchComponents: "Komponenten suchen…",
13062
+ loading: "Wird geladen…",
13063
+ noOtherComponents: "Keine weiteren Komponenten gefunden",
13064
+ goToMainUnavailable: "Die Hauptkomponente ist noch nicht verfügbar.",
13065
+ onlyKnownInstance:
13066
+ "Dies ist die einzige bekannte Instanz dieser Komponente.",
13067
+ resolveMainFailed: "Die Hauptkomponente konnte nicht ermittelt werden.",
13068
+ detachFailed: "Diese Instanz konnte nicht gelöst werden.",
13069
+ detached: "Instanz gelöst.",
13070
+ swapFailed: "Diese Instanz konnte nicht ausgetauscht werden.",
13071
+ swappedFor: "Durch „{{name}}“ ersetzt.",
13072
+ openPanelNudge:
13073
+ "Verwende die Auswahl „Instanz austauschen“ im Komponentenbereich.",
13074
+ openPanelFailed: "Der Komponentenbereich konnte nicht geöffnet werden.",
13075
+ },
13076
+ },
13077
+ },
13078
+ "ja-JP": {
13079
+ designEditor: {
13080
+ componentInstances: {
13081
+ selectLayer: "レイヤーを選択",
13082
+ goToMain: "メインコンポーネントに移動",
13083
+ swap: "インスタンスを入れ替え",
13084
+ detach: "インスタンスを切り離す",
13085
+ searchComponents: "コンポーネントを検索…",
13086
+ loading: "読み込み中…",
13087
+ noOtherComponents: "他のコンポーネントが見つかりません",
13088
+ goToMainUnavailable:
13089
+ "メインコンポーネントへの移動はまだ利用できません。",
13090
+ onlyKnownInstance:
13091
+ "これはこのコンポーネントで確認できる唯一のインスタンスです。",
13092
+ resolveMainFailed: "メインコンポーネントを特定できませんでした。",
13093
+ detachFailed: "このインスタンスを切り離せませんでした。",
13094
+ detached: "インスタンスを切り離しました。",
13095
+ swapFailed: "このインスタンスを入れ替えられませんでした。",
13096
+ swappedFor: "「{{name}}」に入れ替えました。",
13097
+ openPanelNudge:
13098
+ "コンポーネントパネルの「インスタンスを入れ替え」を使用してください。",
13099
+ openPanelFailed: "コンポーネントパネルを開けませんでした。",
13100
+ },
13101
+ },
13102
+ },
13103
+ "ko-KR": {
13104
+ designEditor: {
13105
+ componentInstances: {
13106
+ selectLayer: "레이어 선택",
13107
+ goToMain: "메인 컴포넌트로 이동",
13108
+ swap: "인스턴스 교체",
13109
+ detach: "인스턴스 분리",
13110
+ searchComponents: "컴포넌트 검색…",
13111
+ loading: "불러오는 중…",
13112
+ noOtherComponents: "다른 컴포넌트를 찾을 수 없습니다",
13113
+ goToMainUnavailable: "메인 컴포넌트로 이동은 아직 사용할 수 없습니다.",
13114
+ onlyKnownInstance: "이 컴포넌트에서 확인된 유일한 인스턴스입니다.",
13115
+ resolveMainFailed: "메인 컴포넌트를 확인할 수 없습니다.",
13116
+ detachFailed: "이 인스턴스를 분리할 수 없습니다.",
13117
+ detached: "인스턴스를 분리했습니다.",
13118
+ swapFailed: "이 인스턴스를 교체할 수 없습니다.",
13119
+ swappedFor: '"{{name}}"(으)로 교체했습니다.',
13120
+ openPanelNudge: "컴포넌트 패널의 인스턴스 교체 선택기를 사용하세요.",
13121
+ openPanelFailed: "컴포넌트 패널을 열 수 없습니다.",
13122
+ },
13123
+ },
13124
+ },
13125
+ "pt-BR": {
13126
+ designEditor: {
13127
+ componentInstances: {
13128
+ selectLayer: "Selecionar camada",
13129
+ goToMain: "Ir para o componente principal",
13130
+ swap: "Trocar instância",
13131
+ detach: "Desvincular instância",
13132
+ searchComponents: "Buscar componentes…",
13133
+ loading: "Carregando…",
13134
+ noOtherComponents: "Nenhum outro componente encontrado",
13135
+ goToMainUnavailable:
13136
+ "Ir para o componente principal ainda não está disponível.",
13137
+ onlyKnownInstance:
13138
+ "Esta é a única instância conhecida deste componente.",
13139
+ resolveMainFailed: "Não foi possível encontrar o componente principal.",
13140
+ detachFailed: "Não foi possível desvincular esta instância.",
13141
+ detached: "Instância desvinculada.",
13142
+ swapFailed: "Não foi possível trocar esta instância.",
13143
+ swappedFor: 'Trocada por "{{name}}".',
13144
+ openPanelNudge: "Use o seletor Trocar instância no painel Componente.",
13145
+ openPanelFailed: "Não foi possível abrir o painel Componente.",
13146
+ },
13147
+ },
13148
+ },
13149
+ "hi-IN": {
13150
+ designEditor: {
13151
+ componentInstances: {
13152
+ selectLayer: "लेयर चुनें",
13153
+ goToMain: "मुख्य कॉम्पोनेंट पर जाएं",
13154
+ swap: "इंस्टेंस बदलें",
13155
+ detach: "इंस्टेंस अलग करें",
13156
+ searchComponents: "कॉम्पोनेंट खोजें…",
13157
+ loading: "लोड हो रहा है…",
13158
+ noOtherComponents: "कोई अन्य कॉम्पोनेंट नहीं मिला",
13159
+ goToMainUnavailable: "मुख्य कॉम्पोनेंट पर जाना अभी उपलब्ध नहीं है।",
13160
+ onlyKnownInstance: "यह इस कॉम्पोनेंट का एकमात्र ज्ञात इंस्टेंस है।",
13161
+ resolveMainFailed: "मुख्य कॉम्पोनेंट का पता नहीं लगाया जा सका।",
13162
+ detachFailed: "इस इंस्टेंस को अलग नहीं किया जा सका।",
13163
+ detached: "इंस्टेंस अलग कर दिया गया।",
13164
+ swapFailed: "इस इंस्टेंस को बदला नहीं जा सका।",
13165
+ swappedFor: '"{{name}}" से बदल दिया गया।',
13166
+ openPanelNudge: "कॉम्पोनेंट पैनल में इंस्टेंस बदलें चयनकर्ता का उपयोग करें।",
13167
+ openPanelFailed: "कॉम्पोनेंट पैनल नहीं खोला जा सका।",
13168
+ },
13169
+ },
13170
+ },
13171
+ "ar-SA": {
13172
+ designEditor: {
13173
+ componentInstances: {
13174
+ selectLayer: "تحديد طبقة",
13175
+ goToMain: "الانتقال إلى المكوّن الرئيسي",
13176
+ swap: "تبديل النسخة",
13177
+ detach: "فصل النسخة",
13178
+ searchComponents: "البحث عن مكوّنات…",
13179
+ loading: "جارٍ التحميل…",
13180
+ noOtherComponents: "لم يتم العثور على مكوّنات أخرى",
13181
+ goToMainUnavailable: "الانتقال إلى المكوّن الرئيسي غير متاح بعد.",
13182
+ onlyKnownInstance: "هذه هي النسخة الوحيدة المعروفة من هذا المكوّن.",
13183
+ resolveMainFailed: "تعذر تحديد المكوّن الرئيسي.",
13184
+ detachFailed: "تعذر فصل هذه النسخة.",
13185
+ detached: "تم فصل النسخة.",
13186
+ swapFailed: "تعذر تبديل هذه النسخة.",
13187
+ swappedFor: 'تم التبديل إلى "{{name}}".',
13188
+ openPanelNudge: "استخدم منتقي تبديل النسخة في لوحة المكوّن.",
13189
+ openPanelFailed: "تعذر فتح لوحة المكوّن.",
13190
+ },
13191
+ },
13192
+ },
13193
+ } satisfies Record<Exclude<LocaleCode, "en-US" | "zh-TW">, PartialMessages>;
13194
+
13195
+ // zh-TW strings for designEditor.makeItRealCard / componentProps /
13196
+ // componentSource live in app/i18n/zh-TW.ts (the full zh-TW locale file),
13197
+ // not here.
13198
+ const designComponentSourceOverrides = {
13199
+ "zh-CN": {
13200
+ designEditor: {
13201
+ makeItRealCard: {
13202
+ open: "打开",
13203
+ choose: "选择",
13204
+ connect: "连接",
13205
+ generating: "生成中",
13206
+ generate: "生成",
13207
+ migrationFailed: "迁移失败,请重试。",
13208
+ },
13209
+ componentProps: {
13210
+ alpineTooComplexToEdit:
13211
+ "无法就地安全编辑此属性——此组件的 Alpine 状态过于复杂。请改为编辑源代码。",
13212
+ label: "属性",
13213
+ },
13214
+ componentSource: {
13215
+ editSource: "编辑组件源代码",
13216
+ needsConnectedApp: "源代码跳转需要连接应用",
13217
+ },
13218
+ },
13219
+ },
13220
+ "es-ES": {
13221
+ designEditor: {
13222
+ makeItRealCard: {
13223
+ open: "Abrir",
13224
+ choose: "Elegir",
13225
+ connect: "Conectar",
13226
+ generating: "Generando",
13227
+ generate: "Generar",
13228
+ migrationFailed: "Error en la migración. Inténtalo de nuevo.",
13229
+ },
13230
+ componentProps: {
13231
+ alpineTooComplexToEdit:
13232
+ "No se puede editar esta propiedad de forma segura en línea: el estado de Alpine de este componente es demasiado complejo. Edita el código fuente en su lugar.",
13233
+ label: "Propiedades",
13234
+ },
13235
+ componentSource: {
13236
+ editSource: "Editar código fuente del componente",
13237
+ needsConnectedApp: "Saltar al código fuente requiere una app conectada",
13238
+ },
13239
+ },
13240
+ },
13241
+ "fr-FR": {
13242
+ designEditor: {
13243
+ makeItRealCard: {
13244
+ open: "Ouvrir",
13245
+ choose: "Choisir",
13246
+ connect: "Connecter",
13247
+ generating: "Génération en cours",
13248
+ generate: "Générer",
13249
+ migrationFailed: "Échec de la migration. Veuillez réessayer.",
13250
+ },
13251
+ componentProps: {
13252
+ alpineTooComplexToEdit:
13253
+ "Impossible de modifier cette propriété en toute sécurité en ligne — l’état Alpine de ce composant est trop complexe. Modifiez plutôt le code source.",
13254
+ label: "Propriétés",
13255
+ },
13256
+ componentSource: {
13257
+ editSource: "Modifier le code source du composant",
13258
+ needsConnectedApp:
13259
+ "L’accès au code source nécessite une application connectée",
13260
+ },
13261
+ },
13262
+ },
13263
+ "de-DE": {
13264
+ designEditor: {
13265
+ makeItRealCard: {
13266
+ open: "Öffnen",
13267
+ choose: "Auswählen",
13268
+ connect: "Verbinden",
13269
+ generating: "Wird generiert",
13270
+ generate: "Generieren",
13271
+ migrationFailed: "Migration fehlgeschlagen. Bitte versuche es erneut.",
13272
+ },
13273
+ componentProps: {
13274
+ alpineTooComplexToEdit:
13275
+ "Diese Eigenschaft kann nicht sicher inline bearbeitet werden – der Alpine-Zustand dieser Komponente ist zu komplex. Bearbeite stattdessen den Quellcode.",
13276
+ label: "Eigenschaften",
13277
+ },
13278
+ componentSource: {
13279
+ editSource: "Komponentenquelle bearbeiten",
13280
+ needsConnectedApp:
13281
+ "Für den Sprung zur Quelle ist eine verbundene App erforderlich",
13282
+ },
13283
+ },
13284
+ },
13285
+ "ja-JP": {
13286
+ designEditor: {
13287
+ makeItRealCard: {
13288
+ open: "開く",
13289
+ choose: "選択",
13290
+ connect: "接続",
13291
+ generating: "生成中",
13292
+ generate: "生成",
13293
+ migrationFailed: "移行に失敗しました。もう一度お試しください。",
13294
+ },
13295
+ componentProps: {
13296
+ alpineTooComplexToEdit:
13297
+ "このプロパティはインラインで安全に編集できません — このコンポーネントの Alpine の状態が複雑すぎます。代わりにソースを編集してください。",
13298
+ label: "プロパティ",
13299
+ },
13300
+ componentSource: {
13301
+ editSource: "コンポーネントのソースを編集",
13302
+ needsConnectedApp: "ソースへのジャンプには接続済みアプリが必要です",
13303
+ },
13304
+ },
13305
+ },
13306
+ "ko-KR": {
13307
+ designEditor: {
13308
+ makeItRealCard: {
13309
+ open: "열기",
13310
+ choose: "선택",
13311
+ connect: "연결",
13312
+ generating: "생성 중",
13313
+ generate: "생성",
13314
+ migrationFailed: "마이그레이션에 실패했습니다. 다시 시도해 주세요.",
13315
+ },
13316
+ componentProps: {
13317
+ alpineTooComplexToEdit:
13318
+ "이 속성은 인라인으로 안전하게 편집할 수 없습니다 — 이 컴포넌트의 Alpine 상태가 너무 복잡합니다. 대신 소스를 편집하세요.",
13319
+ label: "속성",
13320
+ },
13321
+ componentSource: {
13322
+ editSource: "컴포넌트 소스 편집",
13323
+ needsConnectedApp: "소스로 이동하려면 연결된 앱이 필요합니다",
13324
+ },
13325
+ },
13326
+ },
13327
+ "pt-BR": {
13328
+ designEditor: {
13329
+ makeItRealCard: {
13330
+ open: "Abrir",
13331
+ choose: "Escolher",
13332
+ connect: "Conectar",
13333
+ generating: "Gerando",
13334
+ generate: "Gerar",
13335
+ migrationFailed: "Falha na migração. Tente novamente.",
13336
+ },
13337
+ componentProps: {
13338
+ alpineTooComplexToEdit:
13339
+ "Não é possível editar esta propriedade com segurança embutida — o estado Alpine deste componente é complexo demais. Edite o código-fonte em vez disso.",
13340
+ label: "Propriedades",
13341
+ },
13342
+ componentSource: {
13343
+ editSource: "Editar código-fonte do componente",
13344
+ needsConnectedApp:
13345
+ "Ir para o código-fonte exige um aplicativo conectado",
13346
+ },
13347
+ },
13348
+ },
13349
+ "hi-IN": {
13350
+ designEditor: {
13351
+ makeItRealCard: {
13352
+ open: "खोलें",
13353
+ choose: "चुनें",
13354
+ connect: "कनेक्ट करें",
13355
+ generating: "जनरेट हो रहा है",
13356
+ generate: "जनरेट करें",
13357
+ migrationFailed: "माइग्रेशन विफल रहा। कृपया फिर से कोशिश करें।",
13358
+ },
13359
+ componentProps: {
13360
+ alpineTooComplexToEdit:
13361
+ "इस प्रॉप को इनलाइन सुरक्षित रूप से संपादित नहीं किया जा सकता — इस कॉम्पोनेंट की Alpine स्थिति बहुत जटिल है। इसके बजाय सोर्स संपादित करें।",
13362
+ label: "प्रॉप्स",
13363
+ },
13364
+ componentSource: {
13365
+ editSource: "कॉम्पोनेंट सोर्स संपादित करें",
13366
+ needsConnectedApp: "सोर्स पर जाने के लिए कनेक्टेड ऐप आवश्यक है",
13367
+ },
13368
+ },
13369
+ },
13370
+ "ar-SA": {
13371
+ designEditor: {
13372
+ makeItRealCard: {
13373
+ open: "فتح",
13374
+ choose: "اختيار",
13375
+ connect: "ربط",
13376
+ generating: "جارٍ الإنشاء",
13377
+ generate: "إنشاء",
13378
+ migrationFailed: "فشل الترحيل. يُرجى المحاولة مرة أخرى.",
13379
+ },
13380
+ componentProps: {
13381
+ alpineTooComplexToEdit:
13382
+ "تعذّر تعديل هذه الخاصية مضمّنًا بأمان — حالة Alpine لهذا المكوّن معقّدة جدًا. عدّل الشيفرة المصدرية بدلاً من ذلك.",
13383
+ label: "الخصائص",
13384
+ },
13385
+ componentSource: {
13386
+ editSource: "تعديل الشيفرة المصدرية للمكوّن",
13387
+ needsConnectedApp: "الانتقال إلى المصدر يتطلب تطبيقًا متصلًا",
13388
+ },
13389
+ },
13390
+ },
13391
+ } satisfies Record<Exclude<LocaleCode, "en-US" | "zh-TW">, PartialMessages>;
13392
+
12223
13393
  export const messagesByLocale = {
12224
13394
  "en-US": enUS,
12225
- "zh-TW": mergeMessages(
13395
+ "zh-TW": mergeLocalizedMessages(
13396
+ "zh-TW",
12226
13397
  mergePartialMessages(
12227
13398
  zhTW,
12228
13399
  designLeftRailOverrides["zh-TW"],
@@ -12239,7 +13410,8 @@ export const messagesByLocale = {
12239
13410
  motionDockOverrides["zh-TW"],
12240
13411
  ),
12241
13412
  ),
12242
- "zh-CN": mergeMessages(
13413
+ "zh-CN": mergeLocalizedMessages(
13414
+ "zh-CN",
12243
13415
  mergePartialMessages(
12244
13416
  designLocaleOverrides["zh-CN"],
12245
13417
  designRawLiteralOverrides["zh-CN"],
@@ -12261,6 +13433,9 @@ export const messagesByLocale = {
12261
13433
  designMotionAndBreakpointOverrides["zh-CN"],
12262
13434
  breakpointBarOverrides["zh-CN"],
12263
13435
  motionDockOverrides["zh-CN"],
13436
+ designRuntimeIdentityAndBridgeOverrides["zh-CN"],
13437
+ designComponentInstanceOverrides["zh-CN"],
13438
+ designComponentSourceOverrides["zh-CN"],
12264
13439
  {
12265
13440
  root: {
12266
13441
  commandActions: "操作",
@@ -12308,7 +13483,8 @@ export const messagesByLocale = {
12308
13483
  },
12309
13484
  ),
12310
13485
  ),
12311
- "es-ES": mergeMessages(
13486
+ "es-ES": mergeLocalizedMessages(
13487
+ "es-ES",
12312
13488
  mergePartialMessages(
12313
13489
  designLocaleOverrides["es-ES"],
12314
13490
  designRawLiteralOverrides["es-ES"],
@@ -12330,6 +13506,9 @@ export const messagesByLocale = {
12330
13506
  designMotionAndBreakpointOverrides["es-ES"],
12331
13507
  breakpointBarOverrides["es-ES"],
12332
13508
  motionDockOverrides["es-ES"],
13509
+ designRuntimeIdentityAndBridgeOverrides["es-ES"],
13510
+ designComponentInstanceOverrides["es-ES"],
13511
+ designComponentSourceOverrides["es-ES"],
12333
13512
  {
12334
13513
  root: {
12335
13514
  commandActions: "Acciones",
@@ -12379,7 +13558,8 @@ export const messagesByLocale = {
12379
13558
  },
12380
13559
  ),
12381
13560
  ),
12382
- "fr-FR": mergeMessages(
13561
+ "fr-FR": mergeLocalizedMessages(
13562
+ "fr-FR",
12383
13563
  mergePartialMessages(
12384
13564
  designLocaleOverrides["fr-FR"],
12385
13565
  designRawLiteralOverrides["fr-FR"],
@@ -12401,6 +13581,9 @@ export const messagesByLocale = {
12401
13581
  designMotionAndBreakpointOverrides["fr-FR"],
12402
13582
  breakpointBarOverrides["fr-FR"],
12403
13583
  motionDockOverrides["fr-FR"],
13584
+ designRuntimeIdentityAndBridgeOverrides["fr-FR"],
13585
+ designComponentInstanceOverrides["fr-FR"],
13586
+ designComponentSourceOverrides["fr-FR"],
12404
13587
  {
12405
13588
  root: {
12406
13589
  commandActions: "Actions",
@@ -12450,7 +13633,8 @@ export const messagesByLocale = {
12450
13633
  },
12451
13634
  ),
12452
13635
  ),
12453
- "de-DE": mergeMessages(
13636
+ "de-DE": mergeLocalizedMessages(
13637
+ "de-DE",
12454
13638
  mergePartialMessages(
12455
13639
  designLocaleOverrides["de-DE"],
12456
13640
  designRawLiteralOverrides["de-DE"],
@@ -12472,6 +13656,9 @@ export const messagesByLocale = {
12472
13656
  designMotionAndBreakpointOverrides["de-DE"],
12473
13657
  breakpointBarOverrides["de-DE"],
12474
13658
  motionDockOverrides["de-DE"],
13659
+ designRuntimeIdentityAndBridgeOverrides["de-DE"],
13660
+ designComponentInstanceOverrides["de-DE"],
13661
+ designComponentSourceOverrides["de-DE"],
12475
13662
  {
12476
13663
  root: {
12477
13664
  commandActions: "Aktionen",
@@ -12521,7 +13708,8 @@ export const messagesByLocale = {
12521
13708
  },
12522
13709
  ),
12523
13710
  ),
12524
- "ja-JP": mergeMessages(
13711
+ "ja-JP": mergeLocalizedMessages(
13712
+ "ja-JP",
12525
13713
  mergePartialMessages(
12526
13714
  designLocaleOverrides["ja-JP"],
12527
13715
  designRawLiteralOverrides["ja-JP"],
@@ -12543,6 +13731,9 @@ export const messagesByLocale = {
12543
13731
  designMotionAndBreakpointOverrides["ja-JP"],
12544
13732
  breakpointBarOverrides["ja-JP"],
12545
13733
  motionDockOverrides["ja-JP"],
13734
+ designRuntimeIdentityAndBridgeOverrides["ja-JP"],
13735
+ designComponentInstanceOverrides["ja-JP"],
13736
+ designComponentSourceOverrides["ja-JP"],
12546
13737
  {
12547
13738
  root: {
12548
13739
  commandActions: "操作",
@@ -12593,7 +13784,8 @@ export const messagesByLocale = {
12593
13784
  },
12594
13785
  ),
12595
13786
  ),
12596
- "ko-KR": mergeMessages(
13787
+ "ko-KR": mergeLocalizedMessages(
13788
+ "ko-KR",
12597
13789
  mergePartialMessages(
12598
13790
  designLocaleOverrides["ko-KR"],
12599
13791
  designRawLiteralOverrides["ko-KR"],
@@ -12615,6 +13807,9 @@ export const messagesByLocale = {
12615
13807
  designMotionAndBreakpointOverrides["ko-KR"],
12616
13808
  breakpointBarOverrides["ko-KR"],
12617
13809
  motionDockOverrides["ko-KR"],
13810
+ designRuntimeIdentityAndBridgeOverrides["ko-KR"],
13811
+ designComponentInstanceOverrides["ko-KR"],
13812
+ designComponentSourceOverrides["ko-KR"],
12618
13813
  {
12619
13814
  root: {
12620
13815
  commandActions: "작업",
@@ -12663,7 +13858,8 @@ export const messagesByLocale = {
12663
13858
  },
12664
13859
  ),
12665
13860
  ),
12666
- "pt-BR": mergeMessages(
13861
+ "pt-BR": mergeLocalizedMessages(
13862
+ "pt-BR",
12667
13863
  mergePartialMessages(
12668
13864
  designLocaleOverrides["pt-BR"],
12669
13865
  designRawLiteralOverrides["pt-BR"],
@@ -12685,6 +13881,9 @@ export const messagesByLocale = {
12685
13881
  designMotionAndBreakpointOverrides["pt-BR"],
12686
13882
  breakpointBarOverrides["pt-BR"],
12687
13883
  motionDockOverrides["pt-BR"],
13884
+ designRuntimeIdentityAndBridgeOverrides["pt-BR"],
13885
+ designComponentInstanceOverrides["pt-BR"],
13886
+ designComponentSourceOverrides["pt-BR"],
12688
13887
  {
12689
13888
  root: {
12690
13889
  commandActions: "Ações",
@@ -12734,7 +13933,8 @@ export const messagesByLocale = {
12734
13933
  },
12735
13934
  ),
12736
13935
  ),
12737
- "hi-IN": mergeMessages(
13936
+ "hi-IN": mergeLocalizedMessages(
13937
+ "hi-IN",
12738
13938
  mergePartialMessages(
12739
13939
  designLocaleOverrides["hi-IN"],
12740
13940
  designRawLiteralOverrides["hi-IN"],
@@ -12756,6 +13956,9 @@ export const messagesByLocale = {
12756
13956
  designMotionAndBreakpointOverrides["hi-IN"],
12757
13957
  breakpointBarOverrides["hi-IN"],
12758
13958
  motionDockOverrides["hi-IN"],
13959
+ designRuntimeIdentityAndBridgeOverrides["hi-IN"],
13960
+ designComponentInstanceOverrides["hi-IN"],
13961
+ designComponentSourceOverrides["hi-IN"],
12759
13962
  {
12760
13963
  root: {
12761
13964
  commandActions: "क्रियाएं",
@@ -12805,7 +14008,8 @@ export const messagesByLocale = {
12805
14008
  },
12806
14009
  ),
12807
14010
  ),
12808
- "ar-SA": mergeMessages(
14011
+ "ar-SA": mergeLocalizedMessages(
14012
+ "ar-SA",
12809
14013
  mergePartialMessages(
12810
14014
  designLocaleOverrides["ar-SA"],
12811
14015
  designRawLiteralOverrides["ar-SA"],
@@ -12827,6 +14031,9 @@ export const messagesByLocale = {
12827
14031
  designMotionAndBreakpointOverrides["ar-SA"],
12828
14032
  breakpointBarOverrides["ar-SA"],
12829
14033
  motionDockOverrides["ar-SA"],
14034
+ designRuntimeIdentityAndBridgeOverrides["ar-SA"],
14035
+ designComponentInstanceOverrides["ar-SA"],
14036
+ designComponentSourceOverrides["ar-SA"],
12830
14037
  {
12831
14038
  root: {
12832
14039
  commandActions: "الإجراءات",