@formicoidea/labre-core 0.39.3 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/dist/_pkgs/affine-block-attachment/attachment-block.js +7 -2
  2. package/dist/_pkgs/affine-block-attachment/components/rename-model.js +3 -2
  3. package/dist/_pkgs/affine-block-attachment/configs/slash-menu.js +7 -0
  4. package/dist/_pkgs/affine-block-attachment/configs/toolbar.js +11 -3
  5. package/dist/_pkgs/affine-block-attachment/configs/tooltips.js +4 -4
  6. package/dist/_pkgs/affine-block-attachment/translations.d.ts +49 -0
  7. package/dist/_pkgs/affine-block-attachment/translations.js +98 -0
  8. package/dist/_pkgs/affine-block-attachment/utils.js +9 -6
  9. package/dist/_pkgs/affine-block-bookmark/components/bookmark-card.js +13 -6
  10. package/dist/_pkgs/affine-block-bookmark/configs/slash-menu.js +6 -1
  11. package/dist/_pkgs/affine-block-bookmark/configs/toolbar.js +9 -1
  12. package/dist/_pkgs/affine-block-bookmark/configs/tooltips.js +2 -2
  13. package/dist/_pkgs/affine-block-bookmark/translations.d.ts +26 -0
  14. package/dist/_pkgs/affine-block-bookmark/translations.js +55 -0
  15. package/dist/_pkgs/affine-block-callout/configs/slash-menu.js +4 -0
  16. package/dist/_pkgs/affine-block-callout/configs/tooltips.js +2 -2
  17. package/dist/_pkgs/affine-block-callout/emoji-margin.js +19 -11
  18. package/dist/_pkgs/affine-block-callout/translations.d.ts +16 -0
  19. package/dist/_pkgs/affine-block-callout/translations.js +24 -0
  20. package/dist/_pkgs/affine-block-code/code-block.js +6 -3
  21. package/dist/_pkgs/affine-block-code/code-toolbar/components/code-toolbar.js +4 -2
  22. package/dist/_pkgs/affine-block-code/code-toolbar/components/lang-button.js +3 -2
  23. package/dist/_pkgs/affine-block-code/code-toolbar/components/preview-button.js +4 -3
  24. package/dist/_pkgs/affine-block-code/code-toolbar/config.js +116 -72
  25. package/dist/_pkgs/affine-block-code/translations.d.ts +30 -0
  26. package/dist/_pkgs/affine-block-code/translations.js +84 -0
  27. package/dist/_pkgs/affine-block-edgeless-text/edgeless-toolbar/config.js +2 -2
  28. package/dist/_pkgs/affine-block-embed/common/render-linked-doc.js +7 -6
  29. package/dist/_pkgs/affine-block-embed/configs/toolbar.js +11 -2
  30. package/dist/_pkgs/affine-block-embed/embed-html-block/components/fullscreen-toolbar.js +4 -3
  31. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/toolbar.js +5 -1
  32. package/dist/_pkgs/affine-block-embed/embed-html-block/configs/tooltips.js +14 -14
  33. package/dist/_pkgs/affine-block-embed/embed-html-block/embed-html-block.js +7 -1
  34. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-error-card.js +11 -4
  35. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.d.ts +2 -0
  36. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-idle-card.js +13 -3
  37. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-edit-popup.js +4 -2
  38. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-base.js +8 -5
  39. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-link-input-popup.js +21 -5
  40. package/dist/_pkgs/affine-block-embed/embed-iframe-block/components/embed-iframe-loading-card.js +4 -1
  41. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/slash-menu/slash-menu.js +4 -0
  42. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.d.ts +2 -0
  43. package/dist/_pkgs/affine-block-embed/embed-iframe-block/configs/toolbar.js +6 -1
  44. package/dist/_pkgs/affine-block-embed/embed-iframe-block/embed-iframe-block.js +3 -1
  45. package/dist/_pkgs/affine-block-embed/translations.d.ts +46 -0
  46. package/dist/_pkgs/affine-block-embed/translations.js +114 -0
  47. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/slash-menu.js +7 -0
  48. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/toolbar.js +29 -12
  49. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/configs/tooltips.js +4 -4
  50. package/dist/_pkgs/affine-block-embed-doc/embed-linked-doc-block/embed-linked-doc-block.js +10 -4
  51. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/components/embed-synced-doc-card.js +8 -4
  52. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/configs/toolbar.js +28 -13
  53. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-edgeless-synced-doc-block.js +3 -2
  54. package/dist/_pkgs/affine-block-embed-doc/embed-synced-doc-block/embed-synced-doc-block.js +3 -2
  55. package/dist/_pkgs/affine-block-embed-doc/translations.d.ts +40 -0
  56. package/dist/_pkgs/affine-block-embed-doc/translations.js +85 -0
  57. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-dense-menu.js +29 -22
  58. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-menu.js +5 -1
  59. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/frame-tool-button.js +2 -1
  60. package/dist/_pkgs/affine-block-frame/edgeless-toolbar/presentation-toolbar.js +12 -9
  61. package/dist/_pkgs/affine-block-frame/frame-manager.js +8 -2
  62. package/dist/_pkgs/affine-block-frame/frame-tool.js +7 -2
  63. package/dist/_pkgs/affine-block-frame/frame-toolbar.js +12 -6
  64. package/dist/_pkgs/affine-block-frame/index.d.ts +1 -0
  65. package/dist/_pkgs/affine-block-frame/index.js +1 -0
  66. package/dist/_pkgs/affine-block-frame/present/frame-order-button.js +5 -1
  67. package/dist/_pkgs/affine-block-frame/present/navigator-setting-button.js +16 -6
  68. package/dist/_pkgs/affine-block-frame/present/present-button.js +3 -1
  69. package/dist/_pkgs/affine-block-frame/translations.d.ts +64 -0
  70. package/dist/_pkgs/affine-block-frame/translations.js +131 -0
  71. package/dist/_pkgs/affine-block-image/components/page-image-block.js +5 -2
  72. package/dist/_pkgs/affine-block-image/configs/slash-menu.js +4 -0
  73. package/dist/_pkgs/affine-block-image/configs/toolbar.js +7 -1
  74. package/dist/_pkgs/affine-block-image/configs/tooltips.js +1 -1
  75. package/dist/_pkgs/affine-block-image/image-block.js +3 -2
  76. package/dist/_pkgs/affine-block-image/image-edgeless-block.js +6 -3
  77. package/dist/_pkgs/affine-block-image/preview-image/page.js +5 -1
  78. package/dist/_pkgs/affine-block-image/translations.d.ts +35 -0
  79. package/dist/_pkgs/affine-block-image/translations.js +68 -0
  80. package/dist/_pkgs/affine-block-image/utils.js +9 -8
  81. package/dist/_pkgs/affine-block-latex/configs/slash-menu.d.ts +8 -0
  82. package/dist/_pkgs/affine-block-latex/configs/slash-menu.js +19 -3
  83. package/dist/_pkgs/affine-block-latex/latex-block.js +6 -2
  84. package/dist/_pkgs/affine-block-latex/translations.d.ts +35 -0
  85. package/dist/_pkgs/affine-block-latex/translations.js +60 -0
  86. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.d.ts +9 -0
  87. package/dist/_pkgs/affine-block-note/components/edgeless-note-border-dropdown-menu.js +23 -6
  88. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.d.ts +4 -1
  89. package/dist/_pkgs/affine-block-note/components/edgeless-note-display-mode-dropdown-menu.js +26 -6
  90. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.d.ts +3 -0
  91. package/dist/_pkgs/affine-block-note/components/edgeless-note-shadow-menu.js +21 -10
  92. package/dist/_pkgs/affine-block-note/components/edgeless-note-style-panel.js +22 -8
  93. package/dist/_pkgs/affine-block-note/configs/slash-menu.js +13 -0
  94. package/dist/_pkgs/affine-block-note/configs/toolbar.js +26 -19
  95. package/dist/_pkgs/affine-block-note/configs/tooltips.d.ts +16 -0
  96. package/dist/_pkgs/affine-block-note/configs/tooltips.js +150 -90
  97. package/dist/_pkgs/affine-block-note/move-block.js +8 -2
  98. package/dist/_pkgs/affine-block-note/translations.d.ts +91 -0
  99. package/dist/_pkgs/affine-block-note/translations.js +253 -0
  100. package/dist/_pkgs/affine-block-paragraph/paragraph-block.js +7 -2
  101. package/dist/_pkgs/affine-block-paragraph/styles.js +30 -83
  102. package/dist/_pkgs/affine-block-paragraph/translations.d.ts +31 -0
  103. package/dist/_pkgs/affine-block-paragraph/translations.js +44 -0
  104. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-layout-handler.js +1 -0
  105. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-painter.worker.d.ts +2 -0
  106. package/dist/_pkgs/affine-block-paragraph/turbo/paragraph-painter.worker.js +6 -1
  107. package/dist/_pkgs/affine-block-paragraph/view.js +6 -1
  108. package/dist/_pkgs/affine-block-root/configs/toolbar.d.ts +3 -1
  109. package/dist/_pkgs/affine-block-root/configs/toolbar.js +6 -3
  110. package/dist/_pkgs/affine-block-root/edgeless/clipboard/utils.js +1 -1
  111. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/alignment.js +26 -4
  112. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.d.ts +14 -0
  113. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/misc.js +10 -3
  114. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.d.ts +8 -0
  115. package/dist/_pkgs/affine-block-root/edgeless/configs/toolbar/more.js +9 -0
  116. package/dist/_pkgs/affine-block-root/edgeless/edgeless-keyboard.js +15 -6
  117. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.d.ts +0 -1
  118. package/dist/_pkgs/affine-block-root/edgeless/utils/consts.js +0 -1
  119. package/dist/_pkgs/affine-block-root/translations.d.ts +61 -0
  120. package/dist/_pkgs/affine-block-root/translations.js +172 -0
  121. package/dist/_pkgs/affine-block-surface/extensions/export-manager/export-manager.js +3 -1
  122. package/dist/_pkgs/affine-block-surface/extensions/index.d.ts +1 -0
  123. package/dist/_pkgs/affine-block-surface/extensions/index.js +1 -0
  124. package/dist/_pkgs/affine-block-surface/extensions/interchange-import.js +31 -12
  125. package/dist/_pkgs/affine-block-surface/extensions/interchange.d.ts +40 -8
  126. package/dist/_pkgs/affine-block-surface/extensions/interchange.js +27 -0
  127. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.d.ts +2 -2
  128. package/dist/_pkgs/affine-block-surface/extensions/morph-toolbar.js +5 -2
  129. package/dist/_pkgs/affine-block-surface/extensions/reading-widget.js +3 -2
  130. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.d.ts +48 -0
  131. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch-translations.js +120 -0
  132. package/dist/_pkgs/affine-block-surface/extensions/svg-sketch.js +36 -23
  133. package/dist/_pkgs/affine-block-surface/extensions/tags-toolbar.js +5 -5
  134. package/dist/_pkgs/affine-block-surface/framework-background/def.d.ts +4 -1
  135. package/dist/_pkgs/affine-block-surface/framework-background/def.js +6 -2
  136. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.d.ts +2 -1
  137. package/dist/_pkgs/affine-block-surface-ref/components/placeholder.js +21 -6
  138. package/dist/_pkgs/affine-block-surface-ref/configs/slash-menu.js +24 -7
  139. package/dist/_pkgs/affine-block-surface-ref/configs/tooltips.js +2 -2
  140. package/dist/_pkgs/affine-block-surface-ref/index.d.ts +1 -0
  141. package/dist/_pkgs/affine-block-surface-ref/index.js +1 -0
  142. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block-edgeless.js +1 -0
  143. package/dist/_pkgs/affine-block-surface-ref/surface-ref-block.js +1 -0
  144. package/dist/_pkgs/affine-block-surface-ref/translations.d.ts +83 -0
  145. package/dist/_pkgs/affine-block-surface-ref/translations.js +175 -0
  146. package/dist/_pkgs/affine-block-surface-ref/utils.d.ts +8 -1
  147. package/dist/_pkgs/affine-block-surface-ref/utils.js +12 -4
  148. package/dist/_pkgs/affine-components/caption/block-caption.js +3 -1
  149. package/dist/_pkgs/affine-components/card-style-dropdown-menu/dropdown-menu.js +4 -3
  150. package/dist/_pkgs/affine-components/citation/citation.d.ts +2 -0
  151. package/dist/_pkgs/affine-components/citation/citation.js +19 -3
  152. package/dist/_pkgs/affine-components/color-picker/button.d.ts +6 -0
  153. package/dist/_pkgs/affine-components/color-picker/button.js +15 -1
  154. package/dist/_pkgs/affine-components/color-picker/color-panel.d.ts +8 -0
  155. package/dist/_pkgs/affine-components/color-picker/color-panel.js +17 -2
  156. package/dist/_pkgs/affine-components/color-picker/color-picker.d.ts +4 -0
  157. package/dist/_pkgs/affine-components/color-picker/color-picker.js +27 -3
  158. package/dist/_pkgs/affine-components/color-picker/types.d.ts +21 -0
  159. package/dist/_pkgs/affine-components/color-picker/utils.d.ts +28 -2
  160. package/dist/_pkgs/affine-components/color-picker/utils.js +32 -0
  161. package/dist/_pkgs/affine-components/context-menu/menu-renderer.d.ts +3 -0
  162. package/dist/_pkgs/affine-components/context-menu/menu-renderer.js +34 -7
  163. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.d.ts +2 -0
  164. package/dist/_pkgs/affine-components/edgeless-line-styles-panel/line-styles-panel.js +21 -2
  165. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.d.ts +2 -0
  166. package/dist/_pkgs/affine-components/edgeless-line-width-panel/line-width-panel.js +18 -2
  167. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.d.ts +2 -0
  168. package/dist/_pkgs/affine-components/edgeless-shape-color-picker/color-picker.js +34 -5
  169. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-create-modal.js +5 -4
  170. package/dist/_pkgs/affine-components/embed-card-modal/embed-card-edit-modal.js +11 -9
  171. package/dist/_pkgs/affine-components/filterable-list/index.d.ts +2 -0
  172. package/dist/_pkgs/affine-components/filterable-list/index.js +17 -2
  173. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.d.ts +3 -0
  174. package/dist/_pkgs/affine-components/highlight-dropdown-menu/dropdown-menu.js +40 -7
  175. package/dist/_pkgs/affine-components/icon-button/index.d.ts +1 -1
  176. package/dist/_pkgs/affine-components/icon-button/index.js +1 -1
  177. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.d.ts +6 -0
  178. package/dist/_pkgs/affine-components/icon-picker/affine-icon-picker-panel.js +42 -7
  179. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.d.ts +4 -0
  180. package/dist/_pkgs/affine-components/icon-picker/emoji-picker-panel.js +35 -5
  181. package/dist/_pkgs/affine-components/icon-picker/icon-picker.d.ts +2 -0
  182. package/dist/_pkgs/affine-components/icon-picker/icon-picker.js +22 -5
  183. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.d.ts +2 -0
  184. package/dist/_pkgs/affine-components/linked-doc-title/doc-title.js +16 -3
  185. package/dist/_pkgs/affine-components/notification/linked-doc.js +5 -4
  186. package/dist/_pkgs/affine-components/open-doc-dropdown-menu/dropdown-menu.js +7 -4
  187. package/dist/_pkgs/affine-components/resource/resource.d.ts +16 -1
  188. package/dist/_pkgs/affine-components/resource/resource.js +19 -4
  189. package/dist/_pkgs/affine-components/resource/status.d.ts +2 -0
  190. package/dist/_pkgs/affine-components/resource/status.js +27 -12
  191. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.d.ts +4 -1
  192. package/dist/_pkgs/affine-components/size-dropdown-menu/dropdown-menu.js +23 -4
  193. package/dist/_pkgs/affine-components/toast/toast.d.ts +1 -1
  194. package/dist/_pkgs/affine-components/toast/toast.js +1 -1
  195. package/dist/_pkgs/affine-components/toggle-button/toggle-button.d.ts +3 -0
  196. package/dist/_pkgs/affine-components/toggle-button/toggle-button.js +18 -3
  197. package/dist/_pkgs/affine-components/toolbar/icon-button.d.ts +2 -0
  198. package/dist/_pkgs/affine-components/toolbar/icon-button.js +18 -2
  199. package/dist/_pkgs/affine-components/toolbar/tooltip.d.ts +3 -3
  200. package/dist/_pkgs/affine-components/toolbar/tooltip.js +3 -3
  201. package/dist/_pkgs/affine-components/translations.d.ts +141 -0
  202. package/dist/_pkgs/affine-components/translations.js +478 -0
  203. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.d.ts +3 -0
  204. package/dist/_pkgs/affine-fragment-adapter-panel/adapter-panel.js +12 -1
  205. package/dist/_pkgs/affine-fragment-adapter-panel/body/adapter-panel-body.js +4 -3
  206. package/dist/_pkgs/affine-fragment-adapter-panel/config.d.ts +13 -0
  207. package/dist/_pkgs/affine-fragment-adapter-panel/config.js +18 -4
  208. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-menu.js +2 -2
  209. package/dist/_pkgs/affine-fragment-adapter-panel/header/adapter-panel-header.js +2 -2
  210. package/dist/_pkgs/affine-fragment-adapter-panel/translations.d.ts +24 -0
  211. package/dist/_pkgs/affine-fragment-adapter-panel/translations.js +37 -0
  212. package/dist/_pkgs/affine-fragment-doc-title/doc-title.d.ts +1 -0
  213. package/dist/_pkgs/affine-fragment-doc-title/doc-title.js +9 -1
  214. package/dist/_pkgs/affine-fragment-doc-title/translations.d.ts +13 -0
  215. package/dist/_pkgs/affine-fragment-doc-title/translations.js +17 -0
  216. package/dist/_pkgs/affine-fragment-frame-panel/body/frame-panel-body.js +3 -2
  217. package/dist/_pkgs/affine-fragment-frame-panel/header/frame-panel-header.js +10 -4
  218. package/dist/_pkgs/affine-fragment-frame-panel/header/frames-setting-menu.js +18 -6
  219. package/dist/_pkgs/affine-fragment-frame-panel/translations.d.ts +16 -0
  220. package/dist/_pkgs/affine-fragment-frame-panel/translations.js +44 -0
  221. package/dist/_pkgs/affine-fragment-outline/body/outline-notice.js +10 -4
  222. package/dist/_pkgs/affine-fragment-outline/body/outline-panel-body.js +6 -3
  223. package/dist/_pkgs/affine-fragment-outline/card/outline-card.js +13 -6
  224. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.d.ts +1 -0
  225. package/dist/_pkgs/affine-fragment-outline/card/outline-preview.js +16 -9
  226. package/dist/_pkgs/affine-fragment-outline/config.d.ts +1 -20
  227. package/dist/_pkgs/affine-fragment-outline/config.js +8 -23
  228. package/dist/_pkgs/affine-fragment-outline/header/outline-panel-header.js +10 -3
  229. package/dist/_pkgs/affine-fragment-outline/header/outline-setting-menu.js +9 -2
  230. package/dist/_pkgs/affine-fragment-outline/outline-viewer.js +6 -3
  231. package/dist/_pkgs/affine-fragment-outline/translations.d.ts +54 -0
  232. package/dist/_pkgs/affine-fragment-outline/translations.js +110 -0
  233. package/dist/_pkgs/affine-gfx-brush/toolbar/components/eraser/eraser-tool-button.js +3 -2
  234. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.d.ts +3 -0
  235. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/consts.js +3 -0
  236. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-menu.js +5 -4
  237. package/dist/_pkgs/affine-gfx-brush/toolbar/components/pen/pen-tool-button.js +3 -2
  238. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/brush.js +4 -2
  239. package/dist/_pkgs/affine-gfx-brush/toolbar/configs/highlighter.js +4 -2
  240. package/dist/_pkgs/affine-gfx-brush/translations.d.ts +17 -0
  241. package/dist/_pkgs/affine-gfx-brush/translations.js +30 -0
  242. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.d.ts +8 -1
  243. package/dist/_pkgs/affine-gfx-connector/direction/invert-direction.js +7 -1
  244. package/dist/_pkgs/affine-gfx-connector/text/edgeless-connector-label-editor.js +3 -2
  245. package/dist/_pkgs/affine-gfx-connector/toolbar/config.d.ts +4 -1
  246. package/dist/_pkgs/affine-gfx-connector/toolbar/config.js +24 -10
  247. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-dense-menu.js +7 -5
  248. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-menu.js +8 -6
  249. package/dist/_pkgs/affine-gfx-connector/toolbar/connector-tool-button.js +4 -3
  250. package/dist/_pkgs/affine-gfx-connector/translations.d.ts +32 -0
  251. package/dist/_pkgs/affine-gfx-connector/translations.js +79 -0
  252. package/dist/_pkgs/affine-gfx-group/command/group-api.js +6 -1
  253. package/dist/_pkgs/affine-gfx-group/index.d.ts +1 -0
  254. package/dist/_pkgs/affine-gfx-group/index.js +1 -0
  255. package/dist/_pkgs/affine-gfx-group/toolbar/config.d.ts +6 -2
  256. package/dist/_pkgs/affine-gfx-group/toolbar/config.js +9 -4
  257. package/dist/_pkgs/affine-gfx-group/translations.d.ts +24 -0
  258. package/dist/_pkgs/affine-gfx-group/translations.js +33 -0
  259. package/dist/_pkgs/affine-gfx-link/toolbar/undo-dense-menu.js +2 -1
  260. package/dist/_pkgs/affine-gfx-link/toolbar/undo-tool-button.js +2 -1
  261. package/dist/_pkgs/affine-gfx-mindmap/index.d.ts +1 -0
  262. package/dist/_pkgs/affine-gfx-mindmap/index.js +1 -0
  263. package/dist/_pkgs/affine-gfx-mindmap/templates/index.js +628 -577
  264. package/dist/_pkgs/affine-gfx-mindmap/toolbar/basket-elements.js +7 -3
  265. package/dist/_pkgs/affine-gfx-mindmap/toolbar/config.js +9 -1
  266. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.d.ts +4 -0
  267. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-importing-placeholder.js +70 -7
  268. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-menu.js +8 -5
  269. package/dist/_pkgs/affine-gfx-mindmap/toolbar/mindmap-tool-button.js +4 -2
  270. package/dist/_pkgs/affine-gfx-mindmap/toolbar/senior-tool.js +7 -2
  271. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.d.ts +2 -1
  272. package/dist/_pkgs/affine-gfx-mindmap/toolbar/utils/import-mindmap.js +16 -8
  273. package/dist/_pkgs/affine-gfx-mindmap/translations.d.ts +84 -0
  274. package/dist/_pkgs/affine-gfx-mindmap/translations.js +171 -0
  275. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.d.ts +8 -0
  276. package/dist/_pkgs/affine-gfx-note/components/note-display-mode-panel.js +24 -9
  277. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.d.ts +9 -0
  278. package/dist/_pkgs/affine-gfx-note/components/note-shadow-panel.js +28 -8
  279. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.d.ts +2 -1
  280. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu-config.js +42 -73
  281. package/dist/_pkgs/affine-gfx-note/toolbar/note-menu.js +21 -17
  282. package/dist/_pkgs/affine-gfx-note/toolbar/note-senior-button.js +3 -2
  283. package/dist/_pkgs/affine-gfx-note/toolbar/note-tool-button.js +3 -1
  284. package/dist/_pkgs/affine-gfx-note/toolbar/senior-tool.js +3 -1
  285. package/dist/_pkgs/affine-gfx-note/translations.d.ts +27 -0
  286. package/dist/_pkgs/affine-gfx-note/translations.js +59 -0
  287. package/dist/_pkgs/affine-gfx-pointer/quick-tool/default-tool-button.js +10 -2
  288. package/dist/_pkgs/affine-gfx-pointer/translations.d.ts +9 -0
  289. package/dist/_pkgs/affine-gfx-pointer/translations.js +17 -0
  290. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.d.ts +4 -0
  291. package/dist/_pkgs/affine-gfx-shape/components/shape-panel.js +17 -3
  292. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.d.ts +4 -0
  293. package/dist/_pkgs/affine-gfx-shape/components/shape-style-panel.js +23 -5
  294. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.d.ts +0 -1
  295. package/dist/_pkgs/affine-gfx-shape/draggable/shape-menu.js +6 -46
  296. package/dist/_pkgs/affine-gfx-shape/draggable/shape-tool-button.js +3 -1
  297. package/dist/_pkgs/affine-gfx-shape/toolbar/config.d.ts +2 -0
  298. package/dist/_pkgs/affine-gfx-shape/toolbar/config.js +29 -8
  299. package/dist/_pkgs/affine-gfx-shape/toolbar/senior-tool.js +2 -0
  300. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.d.ts +3 -0
  301. package/dist/_pkgs/affine-gfx-shape/toolbar/shape-menu-config.js +7 -0
  302. package/dist/_pkgs/affine-gfx-shape/translations.d.ts +37 -0
  303. package/dist/_pkgs/affine-gfx-shape/translations.js +93 -0
  304. package/dist/_pkgs/affine-gfx-template/builtin/other.js +101 -56
  305. package/dist/_pkgs/affine-gfx-template/contribute.js +8 -1
  306. package/dist/_pkgs/affine-gfx-template/index.d.ts +2 -0
  307. package/dist/_pkgs/affine-gfx-template/index.js +2 -0
  308. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.d.ts +6 -1
  309. package/dist/_pkgs/affine-gfx-template/snapshot-from-action.js +15 -5
  310. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.d.ts +1 -0
  311. package/dist/_pkgs/affine-gfx-template/toolbar/builtin-templates.js +12 -0
  312. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.d.ts +25 -0
  313. package/dist/_pkgs/affine-gfx-template/toolbar/resolve-name.js +36 -0
  314. package/dist/_pkgs/affine-gfx-template/toolbar/senior-tool.js +3 -1
  315. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.d.ts +1 -0
  316. package/dist/_pkgs/affine-gfx-template/toolbar/template-panel.js +30 -8
  317. package/dist/_pkgs/affine-gfx-template/toolbar/template-type.d.ts +41 -0
  318. package/dist/_pkgs/affine-gfx-template/translations.d.ts +71 -0
  319. package/dist/_pkgs/affine-gfx-template/translations.js +209 -0
  320. package/dist/_pkgs/affine-gfx-text/edgeless-text-editor.js +3 -2
  321. package/dist/_pkgs/affine-gfx-text/toolbar/actions.d.ts +1 -1
  322. package/dist/_pkgs/affine-gfx-text/toolbar/actions.js +22 -9
  323. package/dist/_pkgs/affine-gfx-text/toolbar/text-menu.js +1 -0
  324. package/dist/_pkgs/affine-gfx-text/translations.d.ts +31 -0
  325. package/dist/_pkgs/affine-gfx-text/translations.js +64 -0
  326. package/dist/_pkgs/affine-inline-footnote/footnote-node/footnote-popup.js +8 -2
  327. package/dist/_pkgs/affine-inline-latex/latex-node/latex-editor-menu.js +5 -2
  328. package/dist/_pkgs/affine-inline-latex/latex-node/latex-node.js +7 -2
  329. package/dist/_pkgs/affine-inline-latex/translations.d.ts +13 -0
  330. package/dist/_pkgs/affine-inline-latex/translations.js +16 -0
  331. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.d.ts +3 -3
  332. package/dist/_pkgs/affine-inline-link/link-node/configs/toolbar.js +6 -5
  333. package/dist/_pkgs/affine-inline-link/link-node/link-popup/link-popup.js +11 -5
  334. package/dist/_pkgs/affine-inline-link/translations.d.ts +23 -0
  335. package/dist/_pkgs/affine-inline-link/translations.js +44 -0
  336. package/dist/_pkgs/affine-inline-mention/affine-mention.js +11 -5
  337. package/dist/_pkgs/affine-inline-mention/translations.d.ts +16 -0
  338. package/dist/_pkgs/affine-inline-mention/translations.js +29 -0
  339. package/dist/_pkgs/affine-inline-preset/command/config.d.ts +3 -0
  340. package/dist/_pkgs/affine-inline-preset/command/config.js +8 -0
  341. package/dist/_pkgs/affine-inline-preset/markdown.d.ts +3 -0
  342. package/dist/_pkgs/affine-inline-preset/markdown.js +19 -0
  343. package/dist/_pkgs/affine-inline-preset/translations.d.ts +25 -0
  344. package/dist/_pkgs/affine-inline-preset/translations.js +28 -0
  345. package/dist/_pkgs/affine-inline-reference/reference-node/configs/toolbar.js +2 -2
  346. package/dist/_pkgs/affine-inline-reference/reference-node/reference-node.js +3 -3
  347. package/dist/_pkgs/affine-inline-reference/reference-node/reference-popup/reference-popup.js +8 -6
  348. package/dist/_pkgs/affine-inline-reference/translations.d.ts +8 -0
  349. package/dist/_pkgs/affine-inline-reference/translations.js +13 -0
  350. package/dist/_pkgs/affine-rich-text/conversion.d.ts +13 -0
  351. package/dist/_pkgs/affine-rich-text/conversion.js +27 -0
  352. package/dist/_pkgs/affine-shared/adapters/clipboard/clipboard.js +1 -1
  353. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.d.ts +2 -1
  354. package/dist/_pkgs/affine-shared/adapters/clipboard/utils.js +6 -3
  355. package/dist/_pkgs/affine-shared/adapters/markdown/markdown.js +5 -2
  356. package/dist/_pkgs/affine-shared/adapters/mix-text.js +5 -2
  357. package/dist/_pkgs/affine-shared/adapters/plain-text/plain-text.js +5 -2
  358. package/dist/_pkgs/affine-shared/adapters/utils/index.d.ts +1 -0
  359. package/dist/_pkgs/affine-shared/adapters/utils/index.js +1 -0
  360. package/dist/_pkgs/affine-shared/adapters/utils/wording.d.ts +9 -0
  361. package/dist/_pkgs/affine-shared/adapters/utils/wording.js +12 -0
  362. package/dist/_pkgs/affine-shared/consts/heading.d.ts +29 -0
  363. package/dist/_pkgs/affine-shared/consts/heading.js +70 -0
  364. package/dist/_pkgs/affine-shared/consts/index.d.ts +2 -0
  365. package/dist/_pkgs/affine-shared/consts/index.js +2 -0
  366. package/dist/_pkgs/affine-shared/consts/notation.d.ts +67 -0
  367. package/dist/_pkgs/affine-shared/consts/notation.js +65 -0
  368. package/dist/_pkgs/affine-shared/services/comment-service/utils.js +2 -0
  369. package/dist/_pkgs/affine-shared/services/doc-display-meta-service.js +6 -3
  370. package/dist/_pkgs/affine-shared/services/notification-service.js +18 -1
  371. package/dist/_pkgs/affine-shared/services/open-doc-config.d.ts +0 -1
  372. package/dist/_pkgs/affine-shared/services/open-doc-config.js +0 -2
  373. package/dist/_pkgs/affine-shared/services/translation-service/chrome.d.ts +362 -0
  374. package/dist/_pkgs/affine-shared/services/translation-service/chrome.js +955 -3
  375. package/dist/_pkgs/affine-shared/services/translation-service/index.d.ts +40 -2
  376. package/dist/_pkgs/affine-shared/services/translation-service/index.js +44 -3
  377. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.d.ts +83 -2
  378. package/dist/_pkgs/affine-shared/services/universe-tag-defs-service.js +92 -0
  379. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.d.ts +4 -0
  380. package/dist/_pkgs/affine-widget-drag-handle/components/edgeless-preview/preview.js +21 -8
  381. package/dist/_pkgs/affine-widget-drag-handle/helpers/preview-helper.js +1 -0
  382. package/dist/_pkgs/affine-widget-drag-handle/translations.d.ts +14 -0
  383. package/dist/_pkgs/affine-widget-drag-handle/translations.js +35 -0
  384. package/dist/_pkgs/affine-widget-edgeless-auto-connect/index.js +4 -3
  385. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.d.ts +6 -0
  386. package/dist/_pkgs/affine-widget-edgeless-auto-connect/translations.js +14 -0
  387. package/dist/_pkgs/affine-widget-edgeless-selected-rect/auto-complete-panel.js +8 -5
  388. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-auto-complete.js +3 -2
  389. package/dist/_pkgs/affine-widget-edgeless-selected-rect/edgeless-element-link.js +3 -1
  390. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.d.ts +17 -0
  391. package/dist/_pkgs/affine-widget-edgeless-selected-rect/translations.js +30 -0
  392. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.d.ts +4 -0
  393. package/dist/_pkgs/affine-widget-edgeless-toolbar/button/tool-icon-button.js +18 -2
  394. package/dist/_pkgs/affine-widget-edgeless-toolbar/catalogue/artefact-catalogue-widget.js +2 -2
  395. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.d.ts +2 -0
  396. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/consts.js +3 -0
  397. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/types.d.ts +18 -1
  398. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.d.ts +8 -3
  399. package/dist/_pkgs/affine-widget-edgeless-toolbar/config/utils.js +38 -18
  400. package/dist/_pkgs/affine-widget-edgeless-toolbar/edgeless-toolbar.js +2 -1
  401. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.d.ts +8 -0
  402. package/dist/_pkgs/affine-widget-edgeless-toolbar/panel/font-weight-and-style-panel.js +31 -8
  403. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.d.ts +15 -0
  404. package/dist/_pkgs/affine-widget-edgeless-toolbar/translations.js +20 -0
  405. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.d.ts +7 -0
  406. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/translations.js +23 -0
  407. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-bar-toggle-button.js +3 -1
  408. package/dist/_pkgs/affine-widget-edgeless-zoom-toolbar/zoom-toolbar.js +5 -3
  409. package/dist/_pkgs/affine-widget-linked-doc/config.js +15 -10
  410. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.d.ts +12 -1
  411. package/dist/_pkgs/affine-widget-linked-doc/import-doc/import-doc.js +27 -18
  412. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.d.ts +4 -1
  413. package/dist/_pkgs/affine-widget-linked-doc/import-doc/index.js +2 -2
  414. package/dist/_pkgs/affine-widget-linked-doc/linked-doc-popover.js +4 -1
  415. package/dist/_pkgs/affine-widget-linked-doc/mobile-linked-doc-menu.js +6 -2
  416. package/dist/_pkgs/affine-widget-linked-doc/transformers/html.js +3 -2
  417. package/dist/_pkgs/affine-widget-linked-doc/transformers/markdown.js +3 -2
  418. package/dist/_pkgs/affine-widget-linked-doc/translations.d.ts +53 -0
  419. package/dist/_pkgs/affine-widget-linked-doc/translations.js +104 -0
  420. package/dist/_pkgs/affine-widget-remote-selection/edgeless/index.js +4 -1
  421. package/dist/_pkgs/affine-widget-remote-selection/translations.d.ts +12 -0
  422. package/dist/_pkgs/affine-widget-remote-selection/translations.js +12 -0
  423. package/dist/_pkgs/affine-widget-slash-menu/config.js +15 -0
  424. package/dist/_pkgs/affine-widget-slash-menu/index.d.ts +1 -0
  425. package/dist/_pkgs/affine-widget-slash-menu/index.js +1 -0
  426. package/dist/_pkgs/affine-widget-slash-menu/slash-menu-popover.js +30 -15
  427. package/dist/_pkgs/affine-widget-slash-menu/tooltips/copy.js +1 -1
  428. package/dist/_pkgs/affine-widget-slash-menu/tooltips/delete.js +2 -2
  429. package/dist/_pkgs/affine-widget-slash-menu/tooltips/index.js +9 -0
  430. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-down.js +2 -2
  431. package/dist/_pkgs/affine-widget-slash-menu/tooltips/move-up.js +2 -2
  432. package/dist/_pkgs/affine-widget-slash-menu/tooltips/now.js +3 -3
  433. package/dist/_pkgs/affine-widget-slash-menu/tooltips/today.js +2 -2
  434. package/dist/_pkgs/affine-widget-slash-menu/tooltips/tomorrow.js +3 -3
  435. package/dist/_pkgs/affine-widget-slash-menu/tooltips/yesterday.js +3 -3
  436. package/dist/_pkgs/affine-widget-slash-menu/translations.d.ts +91 -0
  437. package/dist/_pkgs/affine-widget-slash-menu/translations.js +175 -0
  438. package/dist/_pkgs/affine-widget-slash-menu/types.d.ts +18 -0
  439. package/dist/_pkgs/affine-widget-slash-menu/utils.d.ts +20 -1
  440. package/dist/_pkgs/affine-widget-slash-menu/utils.js +37 -0
  441. package/dist/_pkgs/affine-widget-toolbar/translations.d.ts +9 -0
  442. package/dist/_pkgs/affine-widget-toolbar/translations.js +13 -0
  443. package/dist/_pkgs/affine-widget-toolbar/utils.js +2 -1
  444. package/dist/_pkgs/std/extension/translation-manifest.d.ts +7 -0
  445. package/dist/_pkgs/std/translations.d.ts +24 -0
  446. package/dist/_pkgs/std/translations.js +28 -0
  447. package/dist/_pkgs/std/view/element/block-component.js +24 -7
  448. package/dist/translations.js +144 -5
  449. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { EdgelessCRUDIdentifier } from '../../affine-block-surface/index.js';
2
2
  import { packColor, } from '../../affine-components/color-picker/index.js';
3
3
  import { createTextActions } from '../../affine-gfx-text/index.js';
4
4
  import { DefaultTheme, FontFamily, getShapeName, getShapeRadius, getShapeType, isTransparent, LineWidth, MindmapElementModel, resolveColor, ShapeElementModel, ShapeStyle, ShapeType, StrokeStyle, TextFitMode, } from '../../affine-model/index.js';
5
- import { ToolbarModuleExtension, } from '../../affine-shared/services/index.js';
5
+ import { STYLE_MENU_LABEL, ToolbarModuleExtension, translateKey, } from '../../affine-shared/services/index.js';
6
6
  import { getMostCommonValue } from '../../affine-shared/utils/index.js';
7
7
  import { getRootBlock, LINE_STYLE_LIST, renderMenu, } from '../../affine-widget-edgeless-toolbar/index.js';
8
8
  import { Bound } from '../../global/gfx/index.js';
@@ -15,11 +15,18 @@ import { ShapeElementView } from '../element-view.js';
15
15
  import { applyTextFitMode, nextTextFitMode } from '../text-fit.js';
16
16
  import { mountShapeTextEditor } from '../text/edgeless-shape-text-editor.js';
17
17
  import { ShapeComponentConfig } from './shape-menu-config.js';
18
- /** Icon + label per text fit mode for the cycling toolbar button. */
18
+ import { SHAPE_ADD_TEXT_TOOLTIP, SHAPE_EDIT_VERTICES_TOOLTIP, SHAPE_SWITCH_TYPE_LABEL, SHAPE_TEXT_FIT_ARIA, SHAPE_TEXT_FIT_CONTAINED, SHAPE_TEXT_FIT_GROW, SHAPE_TEXT_FIT_OVERFLOW, SHAPE_TEXT_FIT_TOOLTIP, } from '../translations.js';
19
+ /** Icon + wording per text fit mode for the cycling toolbar button. */
19
20
  const TEXT_FIT_UI = {
20
- [TextFitMode.Grow]: { icon: AutoHeightIcon(), label: 'Grow shape' },
21
- [TextFitMode.Contained]: { icon: AutoSizeIcon(), label: 'Contained text' },
22
- [TextFitMode.Overflow]: { icon: ScaleAltIcon(), label: 'Overflow text' },
21
+ [TextFitMode.Grow]: { icon: AutoHeightIcon(), wording: SHAPE_TEXT_FIT_GROW },
22
+ [TextFitMode.Contained]: {
23
+ icon: AutoSizeIcon(),
24
+ wording: SHAPE_TEXT_FIT_CONTAINED,
25
+ },
26
+ [TextFitMode.Overflow]: {
27
+ icon: ScaleAltIcon(),
28
+ wording: SHAPE_TEXT_FIT_OVERFLOW,
29
+ },
23
30
  };
24
31
  export const shapeToolbarConfig = {
25
32
  actions: [
@@ -52,8 +59,10 @@ export const shapeToolbarConfig = {
52
59
  return renderMenu({
53
60
  icon: ShapeIcon(),
54
61
  label: 'Switch shape type',
62
+ labelWording: SHAPE_SWITCH_TYPE_LABEL,
55
63
  items: ShapeComponentConfig.map(item => ({
56
64
  key: item.tooltip,
65
+ keyWording: item.tooltipWording,
57
66
  value: item.name,
58
67
  icon: shapeStyle === ShapeStyle.General
59
68
  ? item.generalIcon
@@ -62,6 +71,7 @@ export const shapeToolbarConfig = {
62
71
  })),
63
72
  currentValue: shapeName,
64
73
  onPick,
74
+ std: ctx.std,
65
75
  });
66
76
  },
67
77
  },
@@ -85,9 +95,11 @@ export const shapeToolbarConfig = {
85
95
  };
86
96
  return renderMenu({
87
97
  label: 'Style',
98
+ labelWording: STYLE_MENU_LABEL,
88
99
  items: LINE_STYLE_LIST,
89
100
  currentValue: shapeStyle === ShapeStyle.Scribbled,
90
101
  onPick,
102
+ std: ctx.std,
91
103
  });
92
104
  },
93
105
  },
@@ -203,6 +215,7 @@ export const shapeToolbarConfig = {
203
215
  {
204
216
  id: 'f.text',
205
217
  tooltip: 'Add text',
218
+ tooltipWording: SHAPE_ADD_TEXT_TOOLTIP,
206
219
  icon: AddTextIcon(),
207
220
  when(ctx) {
208
221
  const models = ctx.getSurfaceModelsByType(ShapeElementModel);
@@ -221,6 +234,7 @@ export const shapeToolbarConfig = {
221
234
  {
222
235
  id: 'f1.edit-vertices',
223
236
  tooltip: 'Edit vertices',
237
+ tooltipWording: SHAPE_EDIT_VERTICES_TOOLTIP,
224
238
  icon: EditIcon(),
225
239
  when(ctx) {
226
240
  const models = ctx.getSurfaceModelsByType(ShapeElementModel);
@@ -251,11 +265,18 @@ export const shapeToolbarConfig = {
251
265
  return null;
252
266
  const mode = getMostCommonValue(models, 'textFitMode') ?? TextFitMode.Grow;
253
267
  const next = nextTextFitMode(mode);
254
- const { icon, label } = TEXT_FIT_UI[mode];
268
+ const { icon, wording } = TEXT_FIT_UI[mode];
269
+ const label = translateKey(ctx.std, ...wording);
270
+ const nextLabel = translateKey(ctx.std, ...TEXT_FIT_UI[next].wording);
255
271
  return html `
256
272
  <editor-icon-button
257
- aria-label="Text fit: ${label}"
258
- .tooltip=${`Text fit: ${label} — click for ${TEXT_FIT_UI[next].label}`}
273
+ aria-label="${translateKey(ctx.std, ...SHAPE_TEXT_FIT_ARIA, {
274
+ label,
275
+ })}"
276
+ .tooltip=${translateKey(ctx.std, ...SHAPE_TEXT_FIT_TOOLTIP, {
277
+ label,
278
+ nextLabel,
279
+ })}
259
280
  @click=${() => applyTextFitMode(ctx.std, models, next)}
260
281
  >
261
282
  ${icon}
@@ -1,8 +1,10 @@
1
1
  import { SeniorToolExtension } from '../../affine-widget-edgeless-toolbar/index.js';
2
2
  import { html } from 'lit';
3
+ import { SHAPE_TOOL_NAME } from '../translations.js';
3
4
  export const shapeSeniorTool = SeniorToolExtension('shape', ({ block, toolbarContainer }) => {
4
5
  return {
5
6
  name: 'Shape',
7
+ labelKey: SHAPE_TOOL_NAME[0],
6
8
  content: html `<edgeless-shape-tool-button
7
9
  .edgeless=${block}
8
10
  .toolbarContainer=${toolbarContainer}
@@ -1,10 +1,13 @@
1
1
  import type { ShapeToolOption } from '../index.js';
2
+ import type { ChromeWording } from '../../affine-shared/services/index.js';
2
3
  import type { TemplateResult } from 'lit';
3
4
  type Config = {
4
5
  name: ShapeToolOption['shapeName'];
5
6
  generalIcon: TemplateResult<1>;
6
7
  scribbledIcon: TemplateResult<1>;
7
8
  tooltip: string;
9
+ /** {@link tooltip}, for the translation seam. */
10
+ tooltipWording: ChromeWording;
8
11
  disabled: boolean;
9
12
  };
10
13
  export declare const ShapeComponentConfig: Config[];
@@ -1,12 +1,14 @@
1
1
  import { ShapeType } from '../../affine-model/index.js';
2
2
  import { DiamondIcon, EllipseIcon, RoundedRectangleIcon, SquareIcon, TriangleIcon, } from '@blocksuite/icons/lit';
3
3
  import { GeneralPolygonIcon, ScribbledDiamondIcon, ScribbledEllipseIcon, ScribbledPolygonIcon, ScribbledRoundedRectangleIcon, ScribbledSquareIcon, ScribbledTriangleIcon, } from './icons.js';
4
+ import { SHAPE_NAME_DIAMOND, SHAPE_NAME_ELLIPSE, SHAPE_NAME_POLYGON, SHAPE_NAME_ROUNDED_RECT, SHAPE_NAME_SQUARE, SHAPE_NAME_TRIANGLE, } from '../translations.js';
4
5
  export const ShapeComponentConfig = [
5
6
  {
6
7
  name: ShapeType.Rect,
7
8
  generalIcon: SquareIcon(),
8
9
  scribbledIcon: ScribbledSquareIcon,
9
10
  tooltip: 'Square',
11
+ tooltipWording: SHAPE_NAME_SQUARE,
10
12
  disabled: false,
11
13
  },
12
14
  {
@@ -14,6 +16,7 @@ export const ShapeComponentConfig = [
14
16
  generalIcon: EllipseIcon(),
15
17
  scribbledIcon: ScribbledEllipseIcon,
16
18
  tooltip: 'Ellipse',
19
+ tooltipWording: SHAPE_NAME_ELLIPSE,
17
20
  disabled: false,
18
21
  },
19
22
  {
@@ -21,6 +24,7 @@ export const ShapeComponentConfig = [
21
24
  generalIcon: DiamondIcon(),
22
25
  scribbledIcon: ScribbledDiamondIcon,
23
26
  tooltip: 'Diamond',
27
+ tooltipWording: SHAPE_NAME_DIAMOND,
24
28
  disabled: false,
25
29
  },
26
30
  {
@@ -28,6 +32,7 @@ export const ShapeComponentConfig = [
28
32
  generalIcon: TriangleIcon(),
29
33
  scribbledIcon: ScribbledTriangleIcon,
30
34
  tooltip: 'Triangle',
35
+ tooltipWording: SHAPE_NAME_TRIANGLE,
31
36
  disabled: false,
32
37
  },
33
38
  {
@@ -35,6 +40,7 @@ export const ShapeComponentConfig = [
35
40
  generalIcon: GeneralPolygonIcon,
36
41
  scribbledIcon: ScribbledPolygonIcon,
37
42
  tooltip: 'Polygon',
43
+ tooltipWording: SHAPE_NAME_POLYGON,
38
44
  disabled: false,
39
45
  },
40
46
  {
@@ -42,6 +48,7 @@ export const ShapeComponentConfig = [
42
48
  generalIcon: RoundedRectangleIcon(),
43
49
  scribbledIcon: ScribbledRoundedRectangleIcon,
44
50
  tooltip: 'Rounded rectangle',
51
+ tooltipWording: SHAPE_NAME_ROUNDED_RECT,
45
52
  disabled: false,
46
53
  },
47
54
  ];
@@ -0,0 +1,37 @@
1
+ import { type ChromeWording } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The shape toolbar's own wordings. `STYLE_GENERAL` / `STYLE_SCRIBBLED` /
4
+ * `STYLE_MENU_LABEL` / `TOOL_NAME_SHAPE` are declared once in `chrome.ts`
5
+ * (shared with `widgets/edgeless-toolbar` and `gfx/mindmap`) and re-exported
6
+ * here under this package's own name, so a call site in this package can
7
+ * import everything it needs from one place.
8
+ */
9
+ export declare const SHAPE_STYLE_GENERAL: ChromeWording;
10
+ export declare const SHAPE_STYLE_SCRIBBLED: ChromeWording;
11
+ export declare const SHAPE_STYLE_MENU_LABEL: ChromeWording;
12
+ export declare const SHAPE_TOOL_NAME: ChromeWording;
13
+ export declare const SHAPE_TEXT_FIT_GROW: ChromeWording;
14
+ export declare const SHAPE_TEXT_FIT_CONTAINED: ChromeWording;
15
+ export declare const SHAPE_TEXT_FIT_OVERFLOW: ChromeWording;
16
+ /**
17
+ * The cycling button's aria-label and tooltip — interpolated with the
18
+ * already-resolved mode label(s) rather than split into per-word keys (the
19
+ * brief's "don't split a sentence" rule).
20
+ */
21
+ export declare const SHAPE_TEXT_FIT_ARIA: ChromeWording;
22
+ export declare const SHAPE_TEXT_FIT_TOOLTIP: ChromeWording;
23
+ export declare const SHAPE_SWITCH_TYPE_LABEL: ChromeWording;
24
+ export declare const SHAPE_ADD_TEXT_TOOLTIP: ChromeWording;
25
+ export declare const SHAPE_EDIT_VERTICES_TOOLTIP: ChromeWording;
26
+ export declare const SHAPE_NAME_SQUARE: ChromeWording;
27
+ export declare const SHAPE_NAME_ELLIPSE: ChromeWording;
28
+ export declare const SHAPE_NAME_DIAMOND: ChromeWording;
29
+ export declare const SHAPE_NAME_TRIANGLE: ChromeWording;
30
+ export declare const SHAPE_NAME_POLYGON: ChromeWording;
31
+ export declare const SHAPE_NAME_ROUNDED_RECT: ChromeWording;
32
+ /**
33
+ * Every wording this package DECLARES (not the re-exported chrome ones — they
34
+ * are `CHROME_WORDINGS` entries already, and listing them again here would
35
+ * offer a host the same key twice).
36
+ */
37
+ export declare const SHAPE_WORDINGS: readonly ChromeWording[];
@@ -0,0 +1,93 @@
1
+ import { ADD_TEXT_TOOLTIP, STYLE_GENERAL, STYLE_MENU_LABEL, STYLE_SCRIBBLED, TOOL_NAME_SHAPE, } from '../affine-shared/services/index.js';
2
+ /**
3
+ * The shape toolbar's own wordings. `STYLE_GENERAL` / `STYLE_SCRIBBLED` /
4
+ * `STYLE_MENU_LABEL` / `TOOL_NAME_SHAPE` are declared once in `chrome.ts`
5
+ * (shared with `widgets/edgeless-toolbar` and `gfx/mindmap`) and re-exported
6
+ * here under this package's own name, so a call site in this package can
7
+ * import everything it needs from one place.
8
+ */
9
+ export const SHAPE_STYLE_GENERAL = STYLE_GENERAL;
10
+ export const SHAPE_STYLE_SCRIBBLED = STYLE_SCRIBBLED;
11
+ export const SHAPE_STYLE_MENU_LABEL = STYLE_MENU_LABEL;
12
+ export const SHAPE_TOOL_NAME = TOOL_NAME_SHAPE;
13
+ /* ── Text-fit cycling button ───────────────────────────────────────────── */
14
+ export const SHAPE_TEXT_FIT_GROW = [
15
+ 'com.labre.shape.text-fit.grow',
16
+ 'Grow shape',
17
+ ];
18
+ export const SHAPE_TEXT_FIT_CONTAINED = [
19
+ 'com.labre.shape.text-fit.contained',
20
+ 'Contained text',
21
+ ];
22
+ export const SHAPE_TEXT_FIT_OVERFLOW = [
23
+ 'com.labre.shape.text-fit.overflow',
24
+ 'Overflow text',
25
+ ];
26
+ /**
27
+ * The cycling button's aria-label and tooltip — interpolated with the
28
+ * already-resolved mode label(s) rather than split into per-word keys (the
29
+ * brief's "don't split a sentence" rule).
30
+ */
31
+ export const SHAPE_TEXT_FIT_ARIA = [
32
+ 'com.labre.shape.text-fit.aria',
33
+ 'Text fit: {{label}}',
34
+ ];
35
+ export const SHAPE_TEXT_FIT_TOOLTIP = [
36
+ 'com.labre.shape.text-fit.tooltip',
37
+ 'Text fit: {{label}} — click for {{nextLabel}}',
38
+ ];
39
+ /* ── Toolbar actions ────────────────────────────────────────────────────── */
40
+ export const SHAPE_SWITCH_TYPE_LABEL = [
41
+ 'com.labre.shape.toolbar.switch-type',
42
+ 'Switch shape type',
43
+ ];
44
+ export const SHAPE_ADD_TEXT_TOOLTIP = ADD_TEXT_TOOLTIP;
45
+ export const SHAPE_EDIT_VERTICES_TOOLTIP = [
46
+ 'com.labre.shape.toolbar.edit-vertices',
47
+ 'Edit vertices',
48
+ ];
49
+ /* ── Shape names (switch-type menu, drag basket) ───────────────────────── */
50
+ export const SHAPE_NAME_SQUARE = [
51
+ 'com.labre.shape.name.square',
52
+ 'Square',
53
+ ];
54
+ export const SHAPE_NAME_ELLIPSE = [
55
+ 'com.labre.shape.name.ellipse',
56
+ 'Ellipse',
57
+ ];
58
+ export const SHAPE_NAME_DIAMOND = [
59
+ 'com.labre.shape.name.diamond',
60
+ 'Diamond',
61
+ ];
62
+ export const SHAPE_NAME_TRIANGLE = [
63
+ 'com.labre.shape.name.triangle',
64
+ 'Triangle',
65
+ ];
66
+ export const SHAPE_NAME_POLYGON = [
67
+ 'com.labre.shape.name.polygon',
68
+ 'Polygon',
69
+ ];
70
+ export const SHAPE_NAME_ROUNDED_RECT = [
71
+ 'com.labre.shape.name.rounded-rect',
72
+ 'Rounded rectangle',
73
+ ];
74
+ /**
75
+ * Every wording this package DECLARES (not the re-exported chrome ones — they
76
+ * are `CHROME_WORDINGS` entries already, and listing them again here would
77
+ * offer a host the same key twice).
78
+ */
79
+ export const SHAPE_WORDINGS = [
80
+ SHAPE_TEXT_FIT_GROW,
81
+ SHAPE_TEXT_FIT_CONTAINED,
82
+ SHAPE_TEXT_FIT_OVERFLOW,
83
+ SHAPE_TEXT_FIT_ARIA,
84
+ SHAPE_TEXT_FIT_TOOLTIP,
85
+ SHAPE_SWITCH_TYPE_LABEL,
86
+ SHAPE_EDIT_VERTICES_TOOLTIP,
87
+ SHAPE_NAME_SQUARE,
88
+ SHAPE_NAME_ELLIPSE,
89
+ SHAPE_NAME_DIAMOND,
90
+ SHAPE_NAME_TRIANGLE,
91
+ SHAPE_NAME_POLYGON,
92
+ SHAPE_NAME_ROUNDED_RECT,
93
+ ];
@@ -1,18 +1,26 @@
1
1
  import { ConnectorMode, FontFamily, FontWeight, PointStyle, ShapeStyle, StrokeStyle, TextAlign, } from '../../affine-model/index.js';
2
+ import { NOTATION_NEUTRALS } from '../../affine-shared/consts/index.js';
3
+ import { fillPlaceholders, translateKey, } from '../../affine-shared/services/index.js';
2
4
  import { makeTemplateSnapshot, surfaceText, } from '../make-snapshot.js';
5
+ import { BMC_SEED_CHANNELS, BMC_SEED_COST_STRUCTURE, BMC_SEED_CUSTOMER_RELATIONSHIPS, BMC_SEED_CUSTOMER_SEGMENTS, BMC_SEED_DATE, BMC_SEED_DESIGNED_BY, BMC_SEED_DESIGNED_FOR, BMC_SEED_KEY_ACTIVITIES, BMC_SEED_KEY_PARTNERSHIPS, BMC_SEED_KEY_RESOURCES, BMC_SEED_REVENUE_STREAMS, BMC_SEED_TITLE, BMC_SEED_VALUE_PROPOSITIONS, BMC_SEED_VERSION, FISHBONE_SEED_CATEGORY, FISHBONE_SEED_EFFECT, FISHBONE_SEED_ITEM_1, FISHBONE_SEED_ITEM_2, GANTT_SEED_BUILD, GANTT_SEED_DESIGN, GANTT_SEED_DISCOVERY, GANTT_SEED_LAUNCH, GANTT_SEED_WEEK, KANBAN_SEED_CARD, KANBAN_SEED_DOING, KANBAN_SEED_DONE, KANBAN_SEED_TODO, SWOT_SEED_OPPORTUNITIES, SWOT_SEED_STRENGTHS, SWOT_SEED_THREATS, SWOT_SEED_WEAKNESSES, TEMPLATE_PANEL_CATEGORY_OTHER, } from '../translations.js';
3
6
  /**
4
7
  * The generic ("Other") diagrams: built ONLY from general BlockSuite shapes
5
8
  * (`shape` rect/polygon, `text`, `connector`) per the composition principle —
6
9
  * they belong to no framework, so they ship from the template package itself.
7
10
  */
8
- const DARK = '#262626';
9
- const MUTED = '#9aa0a6';
11
+ /**
12
+ * Their neutrals are the shared notation scale's, like every framework's:
13
+ * the ink, the divider grey, the label grey and the card white. Only
14
+ * the hues (kanban cards, gantt bars) are the diagrams' own.
15
+ */
16
+ const DARK = NOTATION_NEUTRALS.ink;
17
+ const MUTED = NOTATION_NEUTRALS.divider;
10
18
  function rect(x, y, w, h, opts = {}) {
11
19
  const el = {
12
20
  type: 'shape',
13
21
  shapeType: opts.shapeType ?? 'rect',
14
22
  filled: true,
15
- fillColor: opts.fill ?? '#ffffff',
23
+ fillColor: opts.fill ?? NOTATION_NEUTRALS.cardFill,
16
24
  strokeColor: opts.stroke ?? DARK,
17
25
  strokeWidth: opts.sw ?? 2,
18
26
  strokeStyle: opts.dash ? StrokeStyle.Dash : StrokeStyle.Solid,
@@ -36,7 +44,7 @@ function label(x, y, w, h, str, opts = {}) {
36
44
  return {
37
45
  type: 'text',
38
46
  text: surfaceText(str),
39
- color: opts.color ?? '#1a1a1a',
47
+ color: opts.color ?? DARK,
40
48
  fontFamily: FontFamily.Inter,
41
49
  fontSize: opts.fontSize ?? 16,
42
50
  fontWeight: opts.weight ?? FontWeight.Regular,
@@ -57,42 +65,54 @@ function line(x1, y1, x2, y2, opts = {}) {
57
65
  target: { position: [x2, y2] },
58
66
  };
59
67
  }
68
+ /** Resolve a wording through the host, or its English fallback with no host. */
69
+ function tr(std, wording, params) {
70
+ return std
71
+ ? translateKey(std, ...wording, params)
72
+ : fillPlaceholders(wording[1], params);
73
+ }
60
74
  // ── SWOT (window-mullion quadrant, black labels) ──────────────────────
61
- function swot() {
75
+ function swot(std) {
62
76
  const M = { fontSize: 22, weight: FontWeight.Medium };
63
77
  return {
64
78
  box: rect(0, 0, 520, 340),
65
79
  v: line(260, 0, 260, 340),
66
80
  h: line(0, 170, 520, 170),
67
- s: label(24, 24, 220, 30, 'Strengths', M),
68
- w: label(284, 24, 220, 30, 'Weaknesses', M),
69
- o: label(24, 194, 220, 30, 'Opportunities', M),
70
- t: label(284, 194, 220, 30, 'Threats', M),
81
+ s: label(24, 24, 220, 30, tr(std, SWOT_SEED_STRENGTHS), M),
82
+ w: label(284, 24, 220, 30, tr(std, SWOT_SEED_WEAKNESSES), M),
83
+ o: label(24, 194, 220, 30, tr(std, SWOT_SEED_OPPORTUNITIES), M),
84
+ t: label(284, 194, 220, 30, tr(std, SWOT_SEED_THREATS), M),
71
85
  };
72
86
  }
73
87
  // ── Kanban (To do / Doing / Done) ─────────────────────────────────────
74
- function kanban() {
75
- const colOpts = { fill: '#f4f4f5', stroke: MUTED, sw: 1.5, radius: 10 };
88
+ function kanban(std) {
89
+ const colOpts = {
90
+ fill: NOTATION_NEUTRALS.cardFill,
91
+ stroke: MUTED,
92
+ sw: 1.5,
93
+ radius: 10,
94
+ };
76
95
  const head = {
77
96
  fontSize: 18,
78
97
  weight: FontWeight.Medium,
79
98
  align: TextAlign.Center,
80
99
  };
100
+ const cardText = tr(std, KANBAN_SEED_CARD);
81
101
  const card = (x, y, fill, stroke) => rect(x, y, 188, 60, {
82
102
  fill,
83
103
  stroke,
84
104
  sw: 1.5,
85
105
  radius: 8,
86
- text: 'Card',
106
+ text: cardText,
87
107
  fontSize: 14,
88
108
  });
89
109
  return {
90
110
  c1: rect(0, 0, 220, 420, colOpts),
91
111
  c2: rect(244, 0, 220, 420, colOpts),
92
112
  c3: rect(488, 0, 220, 420, colOpts),
93
- h1: label(0, 16, 220, 24, 'To do', head),
94
- h2: label(244, 16, 220, 24, 'Doing', head),
95
- h3: label(488, 16, 220, 24, 'Done', head),
113
+ h1: label(0, 16, 220, 24, tr(std, KANBAN_SEED_TODO), head),
114
+ h2: label(244, 16, 220, 24, tr(std, KANBAN_SEED_DOING), head),
115
+ h3: label(488, 16, 220, 24, tr(std, KANBAN_SEED_DONE), head),
96
116
  a1: card(16, 56, '#fde6c8', '#e0a23a'),
97
117
  a2: card(16, 128, '#fde6c8', '#e0a23a'),
98
118
  b1: card(260, 56, '#d6e4fb', '#4574c4'),
@@ -101,7 +121,7 @@ function kanban() {
101
121
  };
102
122
  }
103
123
  // ── Business Model Canvas (Strategyzer 9-block layout) ────────────────
104
- function bmc() {
124
+ function bmc(std) {
105
125
  const blk = { stroke: DARK, sw: 1.5 };
106
126
  const t = (x, y, s) => label(x + 12, y + 12, 180, 22, s, {
107
127
  fontSize: 14,
@@ -109,14 +129,17 @@ function bmc() {
109
129
  });
110
130
  const hdr = (x, s) => ({
111
131
  box: rect(x, 8, 128, 34, { stroke: MUTED, sw: 1 }),
112
- txt: label(x + 8, 16, 120, 18, s, { fontSize: 11, color: '#5f6368' }),
132
+ txt: label(x + 8, 16, 120, 18, s, {
133
+ fontSize: 11,
134
+ color: NOTATION_NEUTRALS.label,
135
+ }),
113
136
  });
114
- const h1 = hdr(470, 'Designed for');
115
- const h2 = hdr(602, 'Designed by');
116
- const h3 = hdr(734, 'Date');
117
- const h4 = hdr(866, 'Version');
137
+ const h1 = hdr(470, tr(std, BMC_SEED_DESIGNED_FOR));
138
+ const h2 = hdr(602, tr(std, BMC_SEED_DESIGNED_BY));
139
+ const h3 = hdr(734, tr(std, BMC_SEED_DATE));
140
+ const h4 = hdr(866, tr(std, BMC_SEED_VERSION));
118
141
  return {
119
- title: label(0, 8, 440, 32, 'Business model canvas', {
142
+ title: label(0, 8, 440, 32, tr(std, BMC_SEED_TITLE), {
120
143
  fontSize: 24,
121
144
  weight: FontWeight.Medium,
122
145
  }),
@@ -137,31 +160,37 @@ function bmc() {
137
160
  cs: rect(800, 56, 196, 300, blk),
138
161
  cost: rect(0, 360, 496, 84, blk),
139
162
  rev: rect(500, 360, 496, 84, blk),
140
- tkp: t(0, 56, 'Key partnerships'),
141
- tka: t(200, 56, 'Key activities'),
142
- tkr: t(200, 206, 'Key resources'),
143
- tvp: t(400, 56, 'Value propositions'),
144
- tcr: t(600, 56, 'Customer relationships'),
145
- tch: t(600, 206, 'Channels'),
146
- tcs: t(800, 56, 'Customer segments'),
147
- tcost: t(0, 360, 'Cost structure'),
148
- trev: t(500, 360, 'Revenue streams'),
163
+ tkp: t(0, 56, tr(std, BMC_SEED_KEY_PARTNERSHIPS)),
164
+ tka: t(200, 56, tr(std, BMC_SEED_KEY_ACTIVITIES)),
165
+ tkr: t(200, 206, tr(std, BMC_SEED_KEY_RESOURCES)),
166
+ tvp: t(400, 56, tr(std, BMC_SEED_VALUE_PROPOSITIONS)),
167
+ tcr: t(600, 56, tr(std, BMC_SEED_CUSTOMER_RELATIONSHIPS)),
168
+ tch: t(600, 206, tr(std, BMC_SEED_CHANNELS)),
169
+ tcs: t(800, 56, tr(std, BMC_SEED_CUSTOMER_SEGMENTS)),
170
+ tcost: t(0, 360, tr(std, BMC_SEED_COST_STRUCTURE)),
171
+ trev: t(500, 360, tr(std, BMC_SEED_REVENUE_STREAMS)),
149
172
  };
150
173
  }
151
174
  // ── Fishbone / Ishikawa (spine + arrowhead bones + CATEGORY/ITEM) ─────
152
- function fishbone() {
153
- const cat = (x, y) => rect(x, y, 150, 44, { text: 'CATEGORY', fontSize: 13 });
175
+ function fishbone(std) {
176
+ const categoryText = tr(std, FISHBONE_SEED_CATEGORY);
177
+ const item1Text = tr(std, FISHBONE_SEED_ITEM_1);
178
+ const item2Text = tr(std, FISHBONE_SEED_ITEM_2);
179
+ const cat = (x, y) => rect(x, y, 150, 44, { text: categoryText, fontSize: 13 });
154
180
  const item = (x, y, n) => rect(x, y, 130, 40, {
155
181
  stroke: MUTED,
156
182
  sw: 1.4,
157
183
  dash: true,
158
184
  text: n,
159
- textColor: '#5f6368',
185
+ textColor: NOTATION_NEUTRALS.label,
160
186
  fontSize: 13,
161
187
  });
162
188
  const out = {
163
189
  spine: line(80, 360, 1120, 360, { sw: 6 }),
164
- head: rect(1124, 332, 130, 56, { text: 'Effect', fontSize: 16 }),
190
+ head: rect(1124, 332, 130, 56, {
191
+ text: tr(std, FISHBONE_SEED_EFFECT),
192
+ fontSize: 16,
193
+ }),
165
194
  };
166
195
  // two rib-groups (junctions at x = 360 and 760)
167
196
  [360, 760].forEach((jx, g) => {
@@ -170,16 +199,21 @@ function fishbone() {
170
199
  out[`lb${g}`] = line(ox + 200, 470, jx, 362, { sw: 3, arrow: true });
171
200
  out[`uc${g}`] = cat(ox + 150, 224);
172
201
  out[`lc${g}`] = cat(ox + 150, 452);
173
- out[`ui1${g}`] = item(ox + 130, 286, 'ITEM 1');
174
- out[`ui2${g}`] = item(ox + 170, 326, 'ITEM 2');
175
- out[`li1${g}`] = item(ox + 130, 396, 'ITEM 1');
176
- out[`li2${g}`] = item(ox + 170, 356, 'ITEM 2');
202
+ out[`ui1${g}`] = item(ox + 130, 286, item1Text);
203
+ out[`ui2${g}`] = item(ox + 170, 326, item2Text);
204
+ out[`li1${g}`] = item(ox + 130, 396, item1Text);
205
+ out[`li2${g}`] = item(ox + 170, 356, item2Text);
177
206
  });
178
207
  return out;
179
208
  }
180
209
  // ── Gantt chart ───────────────────────────────────────────────────────
181
- function gantt() {
182
- const rows = ['Discovery', 'Design', 'Build', 'Launch'];
210
+ function gantt(std) {
211
+ const rows = [
212
+ tr(std, GANTT_SEED_DISCOVERY),
213
+ tr(std, GANTT_SEED_DESIGN),
214
+ tr(std, GANTT_SEED_BUILD),
215
+ tr(std, GANTT_SEED_LAUNCH),
216
+ ];
183
217
  const bars = [
184
218
  [220, 280, '#4574c4'],
185
219
  [340, 360, '#2f9e95'],
@@ -190,10 +224,13 @@ function gantt() {
190
224
  // week gridlines + labels
191
225
  for (let i = 0; i < 6; i++) {
192
226
  const x = 220 + i * 130;
193
- out[`g${i}`] = line(x, 40, x, 268, { stroke: '#e0e0e0', sw: 1 });
194
- out[`w${i}`] = label(x - 16, 12, 40, 20, `W${i + 1}`, {
227
+ out[`g${i}`] = line(x, 40, x, 268, {
228
+ stroke: NOTATION_NEUTRALS.cardBorder,
229
+ sw: 1,
230
+ });
231
+ out[`w${i}`] = label(x - 16, 12, 40, 20, tr(std, GANTT_SEED_WEEK, { n: i + 1 }), {
195
232
  fontSize: 12,
196
- color: '#5f6368',
233
+ color: NOTATION_NEUTRALS.label,
197
234
  align: TextAlign.Center,
198
235
  });
199
236
  }
@@ -212,27 +249,35 @@ function gantt() {
212
249
  }
213
250
  const ATTRS = 'width="100%" height="100%" viewBox="0 0 135 80" xmlns="http://www.w3.org/2000/svg"';
214
251
  const previews = {
215
- swot: `<svg ${ATTRS} fill="none"><rect x="20" y="12" width="95" height="56" stroke="#262626" stroke-width="2"/><path d="M67.5 12 V68 M20 40 H115" stroke="#262626" stroke-width="1.6"/></svg>`,
216
- kanban: `<svg ${ATTRS} fill="none"><rect x="10" y="12" width="35" height="56" rx="4" stroke="#9aa0a6"/><rect x="50" y="12" width="35" height="56" rx="4" stroke="#9aa0a6"/><rect x="90" y="12" width="35" height="56" rx="4" stroke="#9aa0a6"/><rect x="15" y="22" width="25" height="11" rx="2" fill="#fde6c8"/><rect x="55" y="22" width="25" height="11" rx="2" fill="#d6e4fb"/><rect x="95" y="22" width="25" height="11" rx="2" fill="#d5efd9"/></svg>`,
217
- bmc: `<svg ${ATTRS} fill="none"><g stroke="#262626" stroke-width="1.2"><rect x="8" y="14" width="22" height="40"/><rect x="32" y="14" width="22" height="20"/><rect x="32" y="35" width="22" height="19"/><rect x="56" y="14" width="22" height="40"/><rect x="80" y="14" width="22" height="20"/><rect x="80" y="35" width="22" height="19"/><rect x="104" y="14" width="22" height="40"/><rect x="8" y="56" width="57" height="14"/><rect x="68" y="56" width="58" height="14"/></g></svg>`,
218
- fishbone: `<svg ${ATTRS} fill="none"><path d="M14 40 H112" stroke="#262626" stroke-width="3"/><rect x="112" y="33" width="20" height="14" stroke="#262626" stroke-width="1.4"/><path d="M40 18 L52 40 M40 62 L52 40 M84 18 L96 40 M84 62 L96 40" stroke="#262626" stroke-width="1.4"/></svg>`,
219
- gantt: `<svg ${ATTRS} fill="none"><path d="M40 14 V70 M62 14 V70 M84 14 V70 M106 14 V70" stroke="#e0e0e0"/><rect x="40" y="22" width="34" height="8" rx="2" fill="#4574c4"/><rect x="52" y="36" width="44" height="8" rx="2" fill="#2f9e95"/><rect x="62" y="50" width="50" height="8" rx="2" fill="#d99a2b"/><rect x="84" y="64" width="28" height="8" rx="2" fill="#43a06b"/></svg>`,
252
+ swot: `<svg ${ATTRS} fill="none"><rect x="20" y="12" width="95" height="56" stroke="${DARK}" stroke-width="2"/><path d="M67.5 12 V68 M20 40 H115" stroke="${DARK}" stroke-width="1.6"/></svg>`,
253
+ kanban: `<svg ${ATTRS} fill="none"><rect x="10" y="12" width="35" height="56" rx="4" stroke="${MUTED}"/><rect x="50" y="12" width="35" height="56" rx="4" stroke="${MUTED}"/><rect x="90" y="12" width="35" height="56" rx="4" stroke="${MUTED}"/><rect x="15" y="22" width="25" height="11" rx="2" fill="#fde6c8"/><rect x="55" y="22" width="25" height="11" rx="2" fill="#d6e4fb"/><rect x="95" y="22" width="25" height="11" rx="2" fill="#d5efd9"/></svg>`,
254
+ bmc: `<svg ${ATTRS} fill="none"><g stroke="${DARK}" stroke-width="1.2"><rect x="8" y="14" width="22" height="40"/><rect x="32" y="14" width="22" height="20"/><rect x="32" y="35" width="22" height="19"/><rect x="56" y="14" width="22" height="40"/><rect x="80" y="14" width="22" height="20"/><rect x="80" y="35" width="22" height="19"/><rect x="104" y="14" width="22" height="40"/><rect x="8" y="56" width="57" height="14"/><rect x="68" y="56" width="58" height="14"/></g></svg>`,
255
+ fishbone: `<svg ${ATTRS} fill="none"><path d="M14 40 H112" stroke="${DARK}" stroke-width="3"/><rect x="112" y="33" width="20" height="14" stroke="${DARK}" stroke-width="1.4"/><path d="M40 18 L52 40 M40 62 L52 40 M84 18 L96 40 M84 62 L96 40" stroke="${DARK}" stroke-width="1.4"/></svg>`,
256
+ gantt: `<svg ${ATTRS} fill="none"><path d="M40 14 V70 M62 14 V70 M84 14 V70 M106 14 V70" stroke="${NOTATION_NEUTRALS.cardBorder}"/><rect x="40" y="22" width="34" height="8" rx="2" fill="#4574c4"/><rect x="52" y="36" width="44" height="8" rx="2" fill="#2f9e95"/><rect x="62" y="50" width="50" height="8" rx="2" fill="#d99a2b"/><rect x="84" y="64" width="28" height="8" rx="2" fill="#43a06b"/></svg>`,
220
257
  };
221
- function t(name, preview, elements) {
258
+ /**
259
+ * A hand-composed template — what is left once the artefacts are derived. The
260
+ * seeds a template writes into the document go through the translation seam
261
+ * at placement (ADR 0016); `content` stays the English build, and `localize`
262
+ * rebuilds the same snapshot with translated seeds.
263
+ */
264
+ function t(name, preview, build) {
222
265
  return {
223
266
  name,
224
267
  type: 'template',
225
268
  preview,
226
- content: makeTemplateSnapshot(elements, name),
269
+ content: makeTemplateSnapshot(build(), name),
270
+ localize: std => makeTemplateSnapshot(build(std), name),
227
271
  };
228
272
  }
229
273
  export const otherTemplateCategory = {
230
274
  name: 'Other',
275
+ nameKey: TEMPLATE_PANEL_CATEGORY_OTHER[0],
231
276
  templates: [
232
- t('SWOT', previews.swot, swot()),
233
- t('Kanban board', previews.kanban, kanban()),
234
- t('Business model canvas', previews.bmc, bmc()),
235
- t('Fishbone (Ishikawa)', previews.fishbone, fishbone()),
236
- t('Gantt chart', previews.gantt, gantt()),
277
+ t('SWOT', previews.swot, swot),
278
+ t('Kanban board', previews.kanban, kanban),
279
+ t('Business model canvas', previews.bmc, bmc),
280
+ t('Fishbone (Ishikawa)', previews.fishbone, fishbone),
281
+ t('Gantt chart', previews.gantt, gantt),
237
282
  ],
238
283
  };
@@ -1,5 +1,6 @@
1
1
  import { createIdentifier } from '../global/di/index.js';
2
2
  import { builtInTemplates } from './toolbar/builtin-templates.js';
3
+ import { resolveTemplateName } from './toolbar/resolve-name.js';
3
4
  /**
4
5
  * A framework registers its Templates-panel categories here; the panel reads
5
6
  * them back from the std of the edgeless it opens on. One identifier per
@@ -55,6 +56,7 @@ export function templateManagerFor(std) {
55
56
  ...contributed.map(c => c.name),
56
57
  ]),
57
58
  ],
59
+ categoryLabel: name => byName(name)?.nameKey ?? builtInTemplates.categoryLabel(name),
58
60
  // Both halves, so a host's `extend(...)` can still append to a framework's
59
61
  // own category (the global half answers `[]` for a name it does not know).
60
62
  list: async (name) => {
@@ -67,9 +69,14 @@ export function templateManagerFor(std) {
67
69
  search: async (keyword, name) => {
68
70
  const k = keyword.trim().toLocaleLowerCase();
69
71
  const pool = name ? [byName(name)].filter(c => !!c) : contributed;
72
+ // Matches the ENGLISH name (`templateFromCommand`'s baked-in `name`,
73
+ // still what a catalogue-less playground shows) or the host's own
74
+ // translation of it (`resolveTemplateName`, through the command's
75
+ // `labelKey`) — a search box must not go blind on a translated tile.
70
76
  const own = (await Promise.all(pool.map(loadCategory)))
71
77
  .flat()
72
- .filter(t => t.name?.toLocaleLowerCase().includes(k));
78
+ .filter(t => t.name?.toLocaleLowerCase().includes(k) ||
79
+ resolveTemplateName(std, t).toLocaleLowerCase().includes(k));
73
80
  return [...(await builtInTemplates.search(keyword, name)), ...own];
74
81
  },
75
82
  };
@@ -3,6 +3,8 @@ export * from './make-snapshot.js';
3
3
  export * from './services/template.js';
4
4
  export * from './snapshot-from-action.js';
5
5
  export * from './template-tool.js';
6
+ export * from './toolbar/resolve-name.js';
6
7
  export * from './toolbar/senior-tool.js';
7
8
  export * from './toolbar/template-panel.js';
8
9
  export * from './toolbar/template-type.js';
10
+ export * from './translations.js';
@@ -3,6 +3,8 @@ export * from './make-snapshot.js';
3
3
  export * from './services/template.js';
4
4
  export * from './snapshot-from-action.js';
5
5
  export * from './template-tool.js';
6
+ export * from './toolbar/resolve-name.js';
6
7
  export * from './toolbar/senior-tool.js';
7
8
  export * from './toolbar/template-panel.js';
8
9
  export * from './toolbar/template-type.js';
10
+ export * from './translations.js';