@blokkli/editor 2.0.0-alpha.62 → 2.0.0-alpha.64

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 (312) hide show
  1. package/dist/global/types/blockOptions.d.ts +32 -27
  2. package/dist/global/types/colorOptions.d.ts +16 -0
  3. package/dist/module.d.mts +2 -2
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +275 -18
  6. package/dist/modules/agent/index.d.mts +1 -1
  7. package/dist/modules/agent/index.mjs +2 -1
  8. package/dist/modules/agent/runtime/app/components/Attachment/PreviewCsv/index.vue +1 -1
  9. package/dist/modules/agent/runtime/app/components/Conversation/Item/Assistant/index.vue +14 -5
  10. package/dist/modules/agent/runtime/app/features/agent/ConversationsAdmin/ConversationsTab/Item.vue +2 -2
  11. package/dist/modules/agent/runtime/app/features/agent/ConversationsAdmin/RatingsTab/Item.vue +2 -2
  12. package/dist/modules/agent/runtime/app/features/agent/ConversationsAdmin/SplitView/ConversationDetail.vue +2 -2
  13. package/dist/modules/agent/runtime/app/features/agent/ConversationsAdmin/SplitView/index.d.vue.ts +1 -1
  14. package/dist/modules/agent/runtime/app/features/agent/ConversationsAdmin/SplitView/index.vue.d.ts +1 -1
  15. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue +1 -1
  16. package/dist/modules/agent/runtime/app/features/agent/Panel/Welcome/index.vue +1 -1
  17. package/dist/modules/agent/runtime/app/features/agent/Transcript/MessageContent.vue +14 -1
  18. package/dist/modules/agent/runtime/app/features/agent/Transcript/index.vue +31 -13
  19. package/dist/modules/agent/runtime/app/features/agent/index.vue +1 -1
  20. package/dist/modules/agent/runtime/app/helpers/linkifyBlockUuids.d.ts +11 -0
  21. package/dist/modules/agent/runtime/app/helpers/linkifyBlockUuids.js +47 -0
  22. package/dist/modules/agent/runtime/app/tools/add_content_search_paragraphs/index.d.ts +1 -1
  23. package/dist/modules/agent/runtime/app/tools/add_fragment/index.d.ts +1 -1
  24. package/dist/modules/agent/runtime/app/tools/add_media_paragraph/index.d.ts +1 -1
  25. package/dist/modules/agent/runtime/app/tools/add_paragraphs/index.d.ts +1 -1
  26. package/dist/modules/agent/runtime/app/tools/add_reusable_paragraph/index.d.ts +1 -1
  27. package/dist/modules/agent/runtime/app/tools/add_template/index.d.ts +1 -1
  28. package/dist/modules/agent/runtime/app/tools/ask_question/Component.vue +1 -1
  29. package/dist/modules/agent/runtime/app/tools/ask_question/index.d.ts +1 -1
  30. package/dist/modules/agent/runtime/app/tools/auto_translate_paragraphs/Component.d.vue.ts +22 -0
  31. package/dist/modules/agent/runtime/app/tools/auto_translate_paragraphs/Component.vue +28 -26
  32. package/dist/modules/agent/runtime/app/tools/auto_translate_paragraphs/Component.vue.d.ts +22 -0
  33. package/dist/modules/agent/runtime/app/tools/auto_translate_paragraphs/index.d.ts +16 -1
  34. package/dist/modules/agent/runtime/app/tools/delegate_text_rewrite/Component.d.vue.ts +22 -0
  35. package/dist/modules/agent/runtime/app/tools/delegate_text_rewrite/Component.vue +59 -16
  36. package/dist/modules/agent/runtime/app/tools/delegate_text_rewrite/Component.vue.d.ts +22 -0
  37. package/dist/modules/agent/runtime/app/tools/delegate_text_rewrite/index.d.ts +15 -0
  38. package/dist/modules/agent/runtime/app/tools/delete_paragraphs/index.d.ts +1 -1
  39. package/dist/modules/agent/runtime/app/tools/detach_reusable_paragraph/index.d.ts +1 -1
  40. package/dist/modules/agent/runtime/app/tools/duplicate_paragraphs/index.d.ts +1 -1
  41. package/dist/modules/agent/runtime/app/tools/fieldDiffApproval.d.ts +85 -15
  42. package/dist/modules/agent/runtime/app/tools/fieldDiffApproval.js +136 -28
  43. package/dist/modules/agent/runtime/app/tools/find_paragraphs/index.d.ts +2 -2
  44. package/dist/modules/agent/runtime/app/tools/get_bundle_info/index.js +6 -2
  45. package/dist/modules/agent/runtime/app/tools/get_content_fields/index.d.ts +3 -3
  46. package/dist/modules/agent/runtime/app/tools/get_paragraph_context/index.d.ts +5 -5
  47. package/dist/modules/agent/runtime/app/tools/get_paragraphs_in_viewport/index.d.ts +1 -1
  48. package/dist/modules/agent/runtime/app/tools/get_referenced_entities/index.d.ts +1 -1
  49. package/dist/modules/agent/runtime/app/tools/go_to_history_index/index.d.ts +1 -1
  50. package/dist/modules/agent/runtime/app/tools/move_paragraphs/index.d.ts +1 -1
  51. package/dist/modules/agent/runtime/app/tools/rearrange_paragraphs/index.d.ts +1 -1
  52. package/dist/modules/agent/runtime/app/tools/replace_content_search_item/index.d.ts +1 -1
  53. package/dist/modules/agent/runtime/app/tools/replace_media_field/index.d.ts +1 -1
  54. package/dist/modules/agent/runtime/app/tools/schemas.d.ts +17 -7
  55. package/dist/modules/agent/runtime/app/tools/schemas.js +29 -12
  56. package/dist/modules/agent/runtime/app/tools/search_text/index.js +1 -1
  57. package/dist/modules/agent/runtime/app/tools/set_paragraph_options/index.d.ts +1 -1
  58. package/dist/modules/agent/runtime/app/tools/swap_paragraphs/index.d.ts +1 -1
  59. package/dist/modules/agent/runtime/app/tools/update_text_fields/Component.d.vue.ts +22 -0
  60. package/dist/modules/agent/runtime/app/tools/update_text_fields/Component.vue +54 -30
  61. package/dist/modules/agent/runtime/app/tools/update_text_fields/Component.vue.d.ts +22 -0
  62. package/dist/modules/agent/runtime/app/tools/update_text_fields/index.d.ts +18 -3
  63. package/dist/modules/agent/runtime/server/classes/FieldStreamParser/index.js +10 -15
  64. package/dist/modules/agent/runtime/server/default-system-prompts/architecture.js +1 -1
  65. package/dist/modules/agent/runtime/server/default-system-prompts/important-rules.js +1 -0
  66. package/dist/modules/agent/runtime/shared/toolParams.d.ts +3 -3
  67. package/dist/modules/agent/runtime/shared/types.d.ts +3 -3
  68. package/dist/modules/charts/index.d.mts +14 -1
  69. package/dist/modules/charts/index.mjs +37 -2
  70. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.d.ts +1 -1
  71. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.js +12 -5
  72. package/dist/modules/charts/runtime/components/ChartRenderer/index.vue +7 -16
  73. package/dist/modules/charts/runtime/features/charts/Editor/AdvancedConfigPanel/index.vue +1 -1
  74. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/Field.vue +19 -9
  75. package/dist/modules/charts/runtime/features/charts/Editor/ColorDropdown/index.vue +7 -77
  76. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/OutputPreviewTable/index.vue +1 -1
  77. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/csvHelpers.d.ts +1 -1
  78. package/dist/modules/charts/runtime/features/charts/Editor/DataTable/index.vue +16 -8
  79. package/dist/modules/charts/runtime/features/charts/Editor/NumberFormatEditor/index.vue +23 -7
  80. package/dist/modules/charts/runtime/features/charts/Editor/index.vue +5 -6
  81. package/dist/modules/charts/runtime/features/charts/Editor/useChartEditorState.d.ts +1 -1
  82. package/dist/modules/charts/runtime/helpers/index.d.ts +2 -1
  83. package/dist/modules/charts/runtime/helpers/index.js +4 -2
  84. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliEditState.graphql +5 -0
  85. package/dist/modules/drupal/graphql/base/fragment.paragraphsBlokkliMutationResult.graphql +3 -0
  86. package/dist/modules/drupal/index.d.mts +1 -1
  87. package/dist/modules/drupal/runtime/adapter/index.js +5 -1
  88. package/dist/modules/iframes/index.d.mts +1 -1
  89. package/dist/modules/index.d.mts +1 -1
  90. package/dist/modules/readability/index.d.mts +1 -1
  91. package/dist/modules/readability/index.mjs +2 -1
  92. package/dist/modules/table-of-contents/index.d.mts +1 -1
  93. package/dist/runtime/components/Blocks/NotImplemented/index.vue +1 -1
  94. package/dist/runtime/composables/useBlokkliRuntimeConfig.d.ts +50 -0
  95. package/dist/runtime/composables/useBlokkliRuntimeConfig.js +34 -0
  96. package/dist/runtime/editor/adapter/index.d.ts +2 -1
  97. package/dist/runtime/editor/components/Actions/Title/index.vue +1 -1
  98. package/dist/runtime/editor/components/Actions/index.vue +1 -1
  99. package/dist/runtime/editor/components/ArtboardTooltip/index.d.vue.ts +1 -0
  100. package/dist/runtime/editor/components/ArtboardTooltip/index.vue +2 -2
  101. package/dist/runtime/editor/components/ArtboardTooltip/index.vue.d.ts +1 -0
  102. package/dist/runtime/editor/components/Avatar/index.vue +1 -1
  103. package/dist/runtime/editor/components/BlockPreviewItem/index.vue +1 -1
  104. package/dist/runtime/editor/components/BlockPreviewRenderer/index.vue +1 -1
  105. package/dist/runtime/editor/components/BlockProxy/index.vue +1 -1
  106. package/dist/runtime/editor/components/BlokkliRootErrorBoundary.vue +1 -1
  107. package/dist/runtime/editor/components/BundleSelector/index.vue +1 -1
  108. package/dist/runtime/editor/components/ColorDropdown/index.d.vue.ts +26 -0
  109. package/dist/runtime/editor/components/ColorDropdown/index.vue +116 -0
  110. package/dist/runtime/editor/components/ColorDropdown/index.vue.d.ts +26 -0
  111. package/dist/runtime/editor/components/Dialog/index.vue +1 -1
  112. package/dist/runtime/editor/components/DiffApproval/Highlight/Item.d.vue.ts +14 -20
  113. package/dist/runtime/editor/components/DiffApproval/Highlight/Item.vue +97 -52
  114. package/dist/runtime/editor/components/DiffApproval/Highlight/Item.vue.d.ts +14 -20
  115. package/dist/runtime/editor/components/DiffApproval/Highlight/index.d.vue.ts +6 -6
  116. package/dist/runtime/editor/components/DiffApproval/Highlight/index.vue +30 -21
  117. package/dist/runtime/editor/components/DiffApproval/Highlight/index.vue.d.ts +6 -6
  118. package/dist/runtime/editor/components/DiffApproval/Toolbar/index.d.vue.ts +19 -9
  119. package/dist/runtime/editor/components/DiffApproval/Toolbar/index.vue +19 -10
  120. package/dist/runtime/editor/components/DiffApproval/Toolbar/index.vue.d.ts +19 -9
  121. package/dist/runtime/editor/components/DiffApproval/index.d.vue.ts +14 -6
  122. package/dist/runtime/editor/components/DiffApproval/index.vue +62 -35
  123. package/dist/runtime/editor/components/DiffApproval/index.vue.d.ts +14 -6
  124. package/dist/runtime/editor/components/DiffApproval/types.d.ts +32 -0
  125. package/dist/runtime/editor/components/DiffApproval/types.js +20 -0
  126. package/dist/runtime/editor/components/DiffViewer/State.vue +1 -1
  127. package/dist/runtime/editor/components/DraggableList.vue +1 -1
  128. package/dist/runtime/editor/components/Dropdown/index.d.vue.ts +6 -4
  129. package/dist/runtime/editor/components/Dropdown/index.vue +91 -31
  130. package/dist/runtime/editor/components/Dropdown/index.vue.d.ts +6 -4
  131. package/dist/runtime/editor/components/DropdownItem/index.vue +1 -1
  132. package/dist/runtime/editor/components/EditIndicator.vue +1 -1
  133. package/dist/runtime/editor/components/EditProvider.vue +2 -2
  134. package/dist/runtime/editor/components/FileDropHandler/index.vue +1 -1
  135. package/dist/runtime/editor/components/FlexTextarea/index.d.vue.ts +1 -1
  136. package/dist/runtime/editor/components/FlexTextarea/index.vue.d.ts +1 -1
  137. package/dist/runtime/editor/components/Form/RadioTabs/index.vue +1 -1
  138. package/dist/runtime/editor/components/Form/Search/index.d.vue.ts +1 -0
  139. package/dist/runtime/editor/components/Form/Search/index.vue +2 -2
  140. package/dist/runtime/editor/components/Form/Search/index.vue.d.ts +1 -0
  141. package/dist/runtime/editor/components/FormOverlay/index.vue +1 -1
  142. package/dist/runtime/editor/components/Icon/index.vue +1 -1
  143. package/dist/runtime/editor/components/Indicators/index.vue +31 -100
  144. package/dist/runtime/editor/components/Konami/Game/index.vue +1 -1
  145. package/dist/runtime/editor/components/Messages/index.vue +1 -1
  146. package/dist/runtime/editor/components/NestedEditorOverlay/index.d.vue.ts +3 -2
  147. package/dist/runtime/editor/components/NestedEditorOverlay/index.vue +5 -4
  148. package/dist/runtime/editor/components/NestedEditorOverlay/index.vue.d.ts +3 -2
  149. package/dist/runtime/editor/components/Overlay/index.vue +1 -1
  150. package/dist/runtime/editor/components/Pagination/index.vue +1 -1
  151. package/dist/runtime/editor/components/Panel/Section/index.vue +1 -1
  152. package/dist/runtime/editor/components/Panel/Tabs/index.d.vue.ts +1 -1
  153. package/dist/runtime/editor/components/Panel/Tabs/index.vue.d.ts +1 -1
  154. package/dist/runtime/editor/components/PluginConfigForm/index.vue +1 -1
  155. package/dist/runtime/editor/components/PluginConfigFormInline/FilterSelect/index.vue +1 -1
  156. package/dist/runtime/editor/components/PluginConfigFormInline/index.vue +1 -1
  157. package/dist/runtime/editor/components/Popup/index.vue +1 -1
  158. package/dist/runtime/editor/components/PopupHost/index.d.vue.ts +13 -0
  159. package/dist/runtime/editor/components/PopupHost/index.vue +12 -0
  160. package/dist/runtime/editor/components/PopupHost/index.vue.d.ts +13 -0
  161. package/dist/runtime/editor/components/PreviewProvider.vue +3 -2
  162. package/dist/runtime/editor/components/RelativeTime/index.vue +7 -13
  163. package/dist/runtime/editor/components/Resizable/index.vue +1 -1
  164. package/dist/runtime/editor/components/RichText/Editor/index.vue +1 -1
  165. package/dist/runtime/editor/components/ScaleToFit/index.vue +1 -1
  166. package/dist/runtime/editor/components/SearchOverlay/index.vue +1 -1
  167. package/dist/runtime/editor/components/SidebarFloater/index.vue +1 -1
  168. package/dist/runtime/editor/components/StatusIcon/index.vue +1 -1
  169. package/dist/runtime/editor/components/StatusIndicator/index.vue +1 -1
  170. package/dist/runtime/editor/components/SystemRequirements/index.vue +1 -1
  171. package/dist/runtime/editor/components/Tabs/index.d.vue.ts +1 -1
  172. package/dist/runtime/editor/components/Tabs/index.vue.d.ts +1 -1
  173. package/dist/runtime/editor/components/Toolbar/ViewOptions/List/Button/index.vue +2 -1
  174. package/dist/runtime/editor/components/Toolbar/index.vue +1 -1
  175. package/dist/runtime/editor/components/Transition/Collapse/index.vue +1 -1
  176. package/dist/runtime/editor/components/Transition/List/index.vue +1 -1
  177. package/dist/runtime/editor/components/index.d.ts +2 -0
  178. package/dist/runtime/editor/components/index.js +2 -0
  179. package/dist/runtime/editor/composables/defineViewOption.js +5 -1
  180. package/dist/runtime/editor/composables/useStickyToolbar.js +1 -4
  181. package/dist/runtime/editor/css/output.css +1 -1
  182. package/dist/runtime/editor/features/add-list/Help/index.vue +1 -1
  183. package/dist/runtime/editor/features/add-list/index.vue +1 -1
  184. package/dist/runtime/editor/features/analyze/Main.vue +15 -2
  185. package/dist/runtime/editor/features/analyze/Results/ResultsItemNodes.vue +4 -1
  186. package/dist/runtime/editor/features/analyze/Results/ResultsItemNodesTarget.vue +25 -16
  187. package/dist/runtime/editor/features/analyze/analyzers/defaults/validations.d.ts +10 -0
  188. package/dist/runtime/editor/features/analyze/analyzers/defaults/validations.js +39 -0
  189. package/dist/runtime/editor/features/analyze/analyzers/helpers/Context.d.ts +5 -1
  190. package/dist/runtime/editor/features/analyze/analyzers/helpers/Context.js +5 -0
  191. package/dist/runtime/editor/features/analyze/index.vue +1 -2
  192. package/dist/runtime/editor/features/anchors/Overlay/index.vue +11 -5
  193. package/dist/runtime/editor/features/anchors/index.vue +2 -1
  194. package/dist/runtime/editor/features/artboard/Overview/index.vue +1 -1
  195. package/dist/runtime/editor/features/artboard/Renderer.vue +1 -1
  196. package/dist/runtime/editor/features/artboard/Scrollbar/index.vue +1 -1
  197. package/dist/runtime/editor/features/block-scheduler/Dialog/index.vue +1 -1
  198. package/dist/runtime/editor/features/block-transfer/index.vue +1 -1
  199. package/dist/runtime/editor/features/breadcrumbs/index.vue +1 -1
  200. package/dist/runtime/editor/features/changelog/changelog.json +17 -1
  201. package/dist/runtime/editor/features/clipboard/DropElement/index.vue +1 -1
  202. package/dist/runtime/editor/features/comments/AddForm/index.vue +1 -1
  203. package/dist/runtime/editor/features/comments/Comment/Meta/index.vue +1 -1
  204. package/dist/runtime/editor/features/comments/Comment/index.vue +1 -1
  205. package/dist/runtime/editor/features/comments/Thread/index.vue +1 -1
  206. package/dist/runtime/editor/features/complex-options/index.vue +1 -0
  207. package/dist/runtime/editor/features/debug/Main.vue +1 -1
  208. package/dist/runtime/editor/features/dev-mode/index.vue +1 -1
  209. package/dist/runtime/editor/features/dragging-overlay/DragItems/index.vue +1 -1
  210. package/dist/runtime/editor/features/dragging-overlay/index.vue +1 -1
  211. package/dist/runtime/editor/features/droppable-field-edit/Overlay/index.vue +1 -1
  212. package/dist/runtime/editor/features/editable-field/Overlay/Frame/index.vue +1 -1
  213. package/dist/runtime/editor/features/editable-field/Overlay/Plaintext/index.d.vue.ts +1 -5
  214. package/dist/runtime/editor/features/editable-field/Overlay/Plaintext/index.vue.d.ts +1 -5
  215. package/dist/runtime/editor/features/editable-field/Overlay/ReadabilityIndicator/ChunkOverlay.vue +1 -1
  216. package/dist/runtime/editor/features/editable-field/Overlay/index.vue +1 -1
  217. package/dist/runtime/editor/features/editable-mask/index.vue +1 -1
  218. package/dist/runtime/editor/features/entity-title/index.vue +17 -7
  219. package/dist/runtime/editor/features/help/Dialog/index.vue +1 -1
  220. package/dist/runtime/editor/features/help/Shortcuts/index.vue +1 -1
  221. package/dist/runtime/editor/features/history/List/index.vue +1 -1
  222. package/dist/runtime/editor/features/import-existing/Dialog/index.vue +1 -1
  223. package/dist/runtime/editor/features/library/index.vue +1 -0
  224. package/dist/runtime/editor/features/media-library/index.vue +1 -1
  225. package/dist/runtime/editor/features/options/Form/Item.vue +5 -12
  226. package/dist/runtime/editor/features/options/Form/Radios/index.d.vue.ts +5 -4
  227. package/dist/runtime/editor/features/options/Form/Radios/index.vue +8 -5
  228. package/dist/runtime/editor/features/options/Form/Radios/index.vue.d.ts +5 -4
  229. package/dist/runtime/editor/features/options/Form/Text/index.d.vue.ts +4 -0
  230. package/dist/runtime/editor/features/options/Form/Text/index.vue +11 -3
  231. package/dist/runtime/editor/features/options/Form/Text/index.vue.d.ts +4 -0
  232. package/dist/runtime/editor/features/options/index.vue +1 -1
  233. package/dist/runtime/editor/features/publish/Dialog/Item.vue +4 -7
  234. package/dist/runtime/editor/features/publish/Dialog/PublishOption.vue +1 -1
  235. package/dist/runtime/editor/features/publish/Dialog/Violations.d.vue.ts +12 -0
  236. package/dist/runtime/editor/features/publish/Dialog/Violations.vue +117 -0
  237. package/dist/runtime/editor/features/publish/Dialog/Violations.vue.d.ts +12 -0
  238. package/dist/runtime/editor/features/publish/Dialog/index.vue +61 -24
  239. package/dist/runtime/editor/features/publish/index.vue +2 -4
  240. package/dist/runtime/editor/features/publish/types.d.ts +0 -4
  241. package/dist/runtime/editor/features/referenced-entities/List/Item/index.vue +1 -0
  242. package/dist/runtime/editor/features/responsive-preview/Frame/index.vue +1 -1
  243. package/dist/runtime/editor/features/search/index.vue +1 -1
  244. package/dist/runtime/editor/features/selection/AddButtons/Renderer/index.vue +1 -1
  245. package/dist/runtime/editor/features/settings/Dialog/FeatureSetting/index.vue +1 -1
  246. package/dist/runtime/editor/features/settings/index.vue +1 -1
  247. package/dist/runtime/editor/features/structure/List/Item/index.vue +1 -1
  248. package/dist/runtime/editor/features/structure/index.vue +1 -1
  249. package/dist/runtime/editor/features/templates/DialogManageTemplates/Item.vue +1 -0
  250. package/dist/runtime/editor/features/templates/DialogManageTemplates/index.vue +1 -1
  251. package/dist/runtime/editor/features/theme/index.vue +1 -1
  252. package/dist/runtime/editor/features/touch-action-bar/Bar/index.vue +1 -1
  253. package/dist/runtime/editor/features/tour/Overlay/index.vue +1 -1
  254. package/dist/runtime/editor/features/transform/Dialog/index.vue +1 -1
  255. package/dist/runtime/editor/features/translations/SelectionTable/index.vue +1 -1
  256. package/dist/runtime/editor/features/workspace/index.vue +1 -1
  257. package/dist/runtime/editor/helpers/color/index.d.ts +7 -0
  258. package/dist/runtime/editor/helpers/color/index.js +14 -0
  259. package/dist/runtime/editor/helpers/diff/index.d.ts +98 -0
  260. package/dist/runtime/editor/helpers/diff/index.js +262 -0
  261. package/dist/runtime/editor/helpers/injections.d.ts +11 -0
  262. package/dist/runtime/editor/helpers/injections.js +1 -0
  263. package/dist/runtime/editor/helpers/options/index.d.ts +2 -0
  264. package/dist/runtime/editor/helpers/options/index.js +21 -0
  265. package/dist/runtime/editor/plugins/BlockIndicator/index.d.vue.ts +24 -1
  266. package/dist/runtime/editor/plugins/BlockIndicator/index.vue +17 -7
  267. package/dist/runtime/editor/plugins/BlockIndicator/index.vue.d.ts +24 -1
  268. package/dist/runtime/editor/plugins/ItemAction/index.d.vue.ts +1 -0
  269. package/dist/runtime/editor/plugins/ItemAction/index.vue +1 -1
  270. package/dist/runtime/editor/plugins/ItemAction/index.vue.d.ts +1 -0
  271. package/dist/runtime/editor/plugins/Sidebar/Detached/index.d.vue.ts +1 -1
  272. package/dist/runtime/editor/plugins/Sidebar/Detached/index.vue.d.ts +1 -1
  273. package/dist/runtime/editor/plugins/Sidebar/index.d.vue.ts +2 -2
  274. package/dist/runtime/editor/plugins/Sidebar/index.vue +1 -1
  275. package/dist/runtime/editor/plugins/Sidebar/index.vue.d.ts +2 -2
  276. package/dist/runtime/editor/plugins/ToolbarButton/index.vue +1 -1
  277. package/dist/runtime/editor/providers/analyze.js +5 -2
  278. package/dist/runtime/editor/providers/animation.d.ts +2 -0
  279. package/dist/runtime/editor/providers/config.d.ts +3 -1
  280. package/dist/runtime/editor/providers/config.js +46 -15
  281. package/dist/runtime/editor/providers/definition.d.ts +4 -3
  282. package/dist/runtime/editor/providers/definition.js +10 -2
  283. package/dist/runtime/editor/providers/plugin.d.ts +1 -0
  284. package/dist/runtime/editor/providers/state.d.ts +21 -0
  285. package/dist/runtime/editor/providers/state.js +10 -0
  286. package/dist/runtime/editor/translations/de.json +9 -4
  287. package/dist/runtime/editor/translations/fr.json +4 -4
  288. package/dist/runtime/editor/translations/gsw_CH.json +9 -4
  289. package/dist/runtime/editor/translations/it.json +4 -4
  290. package/dist/runtime/editor/types/state.d.ts +7 -0
  291. package/dist/runtime/editor/types/ui.d.ts +1 -0
  292. package/dist/runtime/helpers/colors.d.ts +39 -0
  293. package/dist/runtime/helpers/colors.js +28 -0
  294. package/dist/runtime/types/colors.d.ts +11 -0
  295. package/dist/shared/{editor.D28NbXr3.d.mts → editor.BDyiQvbV.d.mts} +434 -406
  296. package/dist/shared/{editor.Gu7mgJ5Q.mjs → editor.BGemL1Oh.mjs} +146 -146
  297. package/dist/types.d.mts +1 -1
  298. package/package.json +74 -82
  299. package/dist/runtime/editor/features/validations/Overlay/Item.d.vue.ts +0 -7
  300. package/dist/runtime/editor/features/validations/Overlay/Item.vue +0 -36
  301. package/dist/runtime/editor/features/validations/Overlay/Item.vue.d.ts +0 -7
  302. package/dist/runtime/editor/features/validations/Overlay/index.d.vue.ts +0 -7
  303. package/dist/runtime/editor/features/validations/Overlay/index.vue +0 -115
  304. package/dist/runtime/editor/features/validations/Overlay/index.vue.d.ts +0 -7
  305. package/dist/runtime/editor/features/validations/SidebarItem/index.d.vue.ts +0 -10
  306. package/dist/runtime/editor/features/validations/SidebarItem/index.vue +0 -41
  307. package/dist/runtime/editor/features/validations/SidebarItem/index.vue.d.ts +0 -10
  308. package/dist/runtime/editor/features/validations/index.d.vue.ts +0 -3
  309. package/dist/runtime/editor/features/validations/index.vue +0 -91
  310. package/dist/runtime/editor/features/validations/index.vue.d.ts +0 -3
  311. package/dist/runtime/editor/types/config.d.ts +0 -5
  312. /package/dist/runtime/{editor/types/config.js → types/colors.js} +0 -0
@@ -131,7 +131,7 @@ useAnimationFrame(() => {
131
131
  });
132
132
  </script>
133
133
 
134
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
134
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
135
135
  .bk.bk-add-list-help {
136
136
  position: absolute;
137
137
  top: 0px;
@@ -305,7 +305,7 @@ export default {
305
305
  };
306
306
  </script>
307
307
 
308
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
308
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
309
309
  .bk.bk-add-list {
310
310
  pointer-events: auto;
311
311
  z-index: calc(var(--bk-z-index-base) + 190000) /* "add-list" */;
@@ -22,7 +22,7 @@
22
22
  </p>
23
23
  </FormItem>
24
24
 
25
- <FormItem class="_bk_relative">
25
+ <FormItem class="_bk_relative _bk_z-50">
26
26
  <FormToggle
27
27
  v-model="keepVisible"
28
28
  :label="$t('analyzeKeepVisible', 'Keep results visible')"
@@ -122,6 +122,18 @@ const { getCategoryLabel } = useAnalyzeHelper();
122
122
  const refreshKey = computed(() => {
123
123
  return `dom:${dom.settleKey.value}_directive:${directive.settleKey.value}_state:${state.refreshKey.value}`;
124
124
  });
125
+ watch(
126
+ () => props.isShown,
127
+ (isShown) => {
128
+ if (isShown) return;
129
+ const activeId2 = ui.activeHighlightId.value;
130
+ if (!activeId2) return;
131
+ const resultId = activeId2.split("_____")[0];
132
+ if (allResults.value.some((r) => r.id === resultId)) {
133
+ ui.activeHighlightId.value = "";
134
+ }
135
+ }
136
+ );
125
137
  const isRunning = defineModel({ type: Boolean, ...{ default: false } });
126
138
  const issueCount = defineModel("issueCount", { type: Number, ...{ default: 0 } });
127
139
  const hasViolation = defineModel("hasViolation", { type: Boolean, ...{ default: false } });
@@ -272,7 +284,8 @@ function filterResultsByIgnored(items, wantIgnored) {
272
284
  const filtered = [];
273
285
  for (const result of items) {
274
286
  const nodes = result.nodes.filter((n) => n.ignored === wantIgnored);
275
- if (nodes.length) {
287
+ const isStatusOnly = result.nodes.length === 0;
288
+ if (nodes.length || isStatusOnly && !wantIgnored) {
276
289
  filtered.push({ ...result, nodes });
277
290
  }
278
291
  }
@@ -95,6 +95,9 @@ watch(
95
95
  shouldRender.value = true;
96
96
  isOpen.value = true;
97
97
  }
98
- }
98
+ },
99
+ // Immediate so a panel mounting AFTER a highlight click (e.g. cold-load
100
+ // sidebar open) still sees the already-set `activeHighlightId` and expands.
101
+ { immediate: true }
99
102
  );
100
103
  </script>
@@ -49,7 +49,13 @@
49
49
  </template>
50
50
 
51
51
  <script setup>
52
- import { computed, useBlokkli, useTemplateRef, watch } from "#imports";
52
+ import {
53
+ computed,
54
+ onMounted,
55
+ useBlokkli,
56
+ useTemplateRef,
57
+ watch
58
+ } from "#imports";
53
59
  import { renderCycle } from "#blokkli/editor/helpers/vue";
54
60
  import { Icon, Tooltip, Pill } from "#blokkli/editor/components";
55
61
  const props = defineProps({
@@ -143,19 +149,22 @@ async function onClick() {
143
149
  });
144
150
  ui.activeHighlightId.value = props.resultId + "_____" + props.target.globalIndex;
145
151
  }
146
- watch(
147
- isFocused,
148
- (isFocused2) => {
149
- if (!isFocused2) {
150
- return;
151
- }
152
- if (elButton.value) {
153
- elButton.value.scrollIntoView({
154
- behavior: "smooth",
155
- block: "nearest"
156
- });
157
- }
158
- },
159
- { immediate: true }
160
- );
152
+ function scrollFocusedIntoView() {
153
+ if (elButton.value) {
154
+ elButton.value.scrollIntoView({
155
+ behavior: "smooth",
156
+ block: "nearest"
157
+ });
158
+ }
159
+ }
160
+ watch(isFocused, (isFocused2) => {
161
+ if (isFocused2) {
162
+ scrollFocusedIntoView();
163
+ }
164
+ });
165
+ onMounted(() => {
166
+ if (isFocused.value) {
167
+ scrollFocusedIntoView();
168
+ }
169
+ });
161
170
  </script>
@@ -0,0 +1,10 @@
1
+ import type { Analyzer } from '../types.js';
2
+ /**
3
+ * Built-in analyzer that surfaces backend-reported validation violations
4
+ * (`state.violations`) inside the analyze sidebar. Always registered by the
5
+ * analyze provider — adapters do not need to opt in.
6
+ *
7
+ * Violations intentionally carry no `identifier` so they cannot be ignored:
8
+ * a validation error must be resolved, not silenced.
9
+ */
10
+ export declare const validationsAnalyzer: Analyzer;
@@ -0,0 +1,39 @@
1
+ export const validationsAnalyzer = {
2
+ id: "blokkli:validations",
3
+ type: "generic",
4
+ label: (_langcode, $t) => $t("analyzerValidationsLabel", "Validations"),
5
+ continuous: true,
6
+ run(context) {
7
+ const { violations, $t } = context;
8
+ const title = $t("analyzerValidationsLabel", "Validations");
9
+ if (!violations.length) {
10
+ return {
11
+ id: "blokkli:validations:pass",
12
+ title,
13
+ category: "content",
14
+ description: $t(
15
+ "analyzerValidationsPassDescription",
16
+ "No validation errors for the current state."
17
+ ),
18
+ status: "pass",
19
+ nodes: []
20
+ };
21
+ }
22
+ const nodes = violations.map((violation) => ({
23
+ description: violation.message,
24
+ uuid: violation.entityUuid,
25
+ targets: violation.entityUuid ? [{ uuid: violation.entityUuid }] : []
26
+ }));
27
+ return {
28
+ id: "blokkli:validations:failed",
29
+ title,
30
+ category: "content",
31
+ description: $t(
32
+ "analyzerValidationsDescription",
33
+ "Validation errors reported for the current state."
34
+ ),
35
+ status: "violation",
36
+ nodes
37
+ };
38
+ }
39
+ };
@@ -2,7 +2,7 @@ import type { FieldListItemTyped } from '#blokkli-build/generated-types';
2
2
  import type { StateProvider } from '#blokkli/editor/providers/state';
3
3
  import type { ReadabilityProvider } from '#blokkli/editor/providers/readability';
4
4
  import type { TextProvider } from '#blokkli/editor/providers/texts';
5
- import type { MutatedField } from '#blokkli/editor/types/state';
5
+ import type { MutatedField, Validation } from '#blokkli/editor/types/state';
6
6
  import type { AnalyzeCategory, AnalyzeNode, AnalyzeResult, AnalyzeStatus } from '../types.js';
7
7
  import { type TextElement } from './collectTextElements.js';
8
8
  export declare class AnalyzerContext {
@@ -13,6 +13,10 @@ export declare class AnalyzerContext {
13
13
  readonly $t: TextProvider;
14
14
  readonly signal: AbortSignal | undefined;
15
15
  readonly mutatedFields: Readonly<MutatedField[]>;
16
+ /**
17
+ * Backend-reported validation violations for the current state.
18
+ */
19
+ readonly violations: Readonly<Validation[]>;
16
20
  /**
17
21
  * The readability provider.
18
22
  */
@@ -9,8 +9,13 @@ export class AnalyzerContext {
9
9
  this.signal = signal;
10
10
  this.readability = readability;
11
11
  this.mutatedFields = JSON.parse(JSON.stringify(state.mutatedFields.value));
12
+ this.violations = JSON.parse(JSON.stringify(state.violations.value));
12
13
  }
13
14
  mutatedFields;
15
+ /**
16
+ * Backend-reported validation violations for the current state.
17
+ */
18
+ violations;
14
19
  /**
15
20
  * The readability provider.
16
21
  */
@@ -56,7 +56,6 @@ defineBlokkliFeature({
56
56
  id: "analyze",
57
57
  label: "Analyze",
58
58
  icon: "bk_mdi_speed",
59
- requiredAdapterMethods: ["getAnalyzers"],
60
59
  description: "Analyze blocks and page for SEO, accessibility, etc.",
61
60
  viewports: []
62
61
  });
@@ -72,7 +71,7 @@ export default {
72
71
  };
73
72
  </script>
74
73
 
75
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
74
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
76
75
  .bk-is-analyzing .bk,.bk-is-analyzing .bk-sidebar {
77
76
  display: none !important;
78
77
  }
@@ -6,6 +6,7 @@
6
6
  :uuid="item.uuid"
7
7
  :label="'#' + item.id"
8
8
  icon="bk_mdi_anchor"
9
+ sticky
9
10
  @click="onClick(item)"
10
11
  />
11
12
  </template>
@@ -14,6 +15,7 @@
14
15
  import { useBlokkli, useRoute, ref, onMounted } from "#imports";
15
16
  import { PluginBlockIndicator } from "#blokkli/editor/plugins";
16
17
  import { onBlokkliEvent } from "#blokkli/editor/composables";
18
+ import { renderCycle } from "#blokkli/editor/helpers/vue";
17
19
  const route = useRoute();
18
20
  const { adapter, ui } = useBlokkli();
19
21
  function getAnchorItems() {
@@ -27,6 +29,9 @@ function getAnchorItems() {
27
29
  if (!(block instanceof HTMLElement)) {
28
30
  continue;
29
31
  }
32
+ if (element.closest("form")) {
33
+ continue;
34
+ }
30
35
  const uuid = block.dataset.bkUuid;
31
36
  if (!uuid) {
32
37
  continue;
@@ -54,10 +59,11 @@ function onClick(item) {
54
59
  const link = getLinkForClipboard(item);
55
60
  ui.copyTextToClipboard(link);
56
61
  }
57
- onBlokkliEvent("state:reloaded", () => {
62
+ async function updateAnchorItems() {
63
+ await renderCycle();
58
64
  items.value = getAnchorItems();
59
- });
60
- onMounted(() => {
61
- items.value = getAnchorItems();
62
- });
65
+ }
66
+ onBlokkliEvent("state:reloaded", updateAnchorItems);
67
+ onBlokkliEvent("option:update", updateAnchorItems);
68
+ onMounted(updateAnchorItems);
63
69
  </script>
@@ -25,7 +25,8 @@ const { isVisible } = defineViewOption({
25
25
  "viewOptionAnchorsDescription",
26
26
  "Highlights blocks that have an anchor ID."
27
27
  ),
28
- icon: "bk_mdi_anchor"
28
+ icon: "bk_mdi_anchor",
29
+ default: true
29
30
  });
30
31
  </script>
31
32
 
@@ -129,7 +129,7 @@ defineOptions({
129
129
  });
130
130
  </script>
131
131
 
132
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
132
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
133
133
  .bk.bk-artboard-overview {
134
134
  position: absolute;
135
135
  top: 0px;
@@ -417,7 +417,7 @@ onBlokkliEvent("scrollSelectionIntoView", (e) => {
417
417
  });
418
418
  </script>
419
419
 
420
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
420
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
421
421
  :is(.bk-html-root.bk-is-artboard .bk-body) .bk-main-canvas {
422
422
  pointer-events: none;
423
423
  position: fixed;
@@ -50,7 +50,7 @@ defineOptions({
50
50
  });
51
51
  </script>
52
52
 
53
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
53
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
54
54
  .bk-html-root {
55
55
  --bk-artboard-scrollbar-size: 4px;
56
56
  }
@@ -239,7 +239,7 @@ async function onSubmit() {
239
239
  }
240
240
  </script>
241
241
 
242
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
242
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
243
243
  .bk.bk-block-scheduler-dialog {
244
244
  min-height: calc(100vh - 350px);
245
245
  }
@@ -212,7 +212,7 @@ export default {
212
212
  };
213
213
  </script>
214
214
 
215
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
215
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
216
216
  .bk-block-transfer-drag-preview {
217
217
  display: flex;
218
218
  align-items: center;
@@ -213,7 +213,7 @@ export default {
213
213
  };
214
214
  </script>
215
215
 
216
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
216
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
217
217
  .bk.bk-breadcrumbs {
218
218
  grid-area: breadcrumbs;
219
219
  }
@@ -1,9 +1,25 @@
1
1
  [
2
+ {
3
+ "version": "2.0.0-alpha.64",
4
+ "date": "2026-07-08",
5
+ "body": {
6
+ "en": "<h3>Improvements</h3>\n<ul>\n<li>The anchor links view option is now enabled by default.</li>\n<li>The anchor link icon now stays visible at the left edge at all times.</li>\n<li>The page title now shows when the page was last changed.</li>\n</ul>\n<h3>Fixes</h3>\n<ul>\n<li>In some cases, changes from the AI assistant could not be accepted because the\ncontrol for doing so was not shown.</li>\n<li>Colors in the chart editor were reset in some cases.</li>\n</ul>\n",
7
+ "de": "<h3>Verbesserungen</h3>\n<ul>\n<li>Die Ansichtsoption «Ankerlinks» ist neu standardmässig aktiviert.</li>\n<li>Das Symbol für Ankerlinks ist nun immer am linken Rand sichtbar.</li>\n<li>Im Seitentitel wird neu angezeigt, wann die Seite zuletzt geändert wurde.</li>\n</ul>\n<h3>Fehlerbehebungen</h3>\n<ul>\n<li>In gewissen Fällen konnten Änderungen vom KI-Assistenten nicht akzeptiert\nwerden, weil das entsprechende Bedienelement nicht angezeigt wurde.</li>\n<li>Farben im Diagramm-Editor wurden in gewissen Fällen zurückgesetzt.</li>\n</ul>\n"
8
+ }
9
+ },
10
+ {
11
+ "version": "2.0.0-alpha.63",
12
+ "date": "2026-06-11",
13
+ "body": {
14
+ "en": "<h3>New Features</h3>\n<h4>Accept AI text changes paragraph by paragraph</h4>\n<p>When the AI assistant proposes changes to a longer text, you no longer have to\naccept or reject the entire text: individual paragraphs or list items can now be\naccepted or discarded selectively – by click or with the keyboard.</p>\n<h4>Validations in the page analysis</h4>\n<p>Validation errors are now shown directly in the page analysis – alongside the\nother analysis results such as readability or accessibility. The separate\nvalidations view is gone; in return, the page analysis is always available.</p>\n<h4>Validation errors when saving/publishing</h4>\n<p>If publishing fails because of validation errors, the dialog now shows the\nspecific problems so you can fix them right away.</p>\n<h4>Blocks linked in AI assistant answers</h4>\n<p>When the AI assistant refers to a block in its answers, its label now appears as\na clickable link that jumps directly to the block on the page. Previously, a\ncryptic ID was sometimes shown instead.</p>\n<h3>Improvements</h3>\n<ul>\n<li>The color picker in the chart editor has been reworked: all colors and their\nshades are now presented as a clear palette.</li>\n</ul>\n<h3>Fixes</h3>\n<ul>\n<li>Clicking a page analysis highlight now reliably jumps to the affected spot,\neven when the sidebar is closed. Highlights are correctly reset when closing\nthe page analysis.</li>\n<li>The AI assistant&#39;s text search now attributes text to the correct block when\nblocks are nested inside each other.</li>\n</ul>\n",
15
+ "de": "<h3>Neue Funktionen</h3>\n<h4>Textänderungen des KI-Assistenten absatzweise übernehmen</h4>\n<p>Schlägt der KI-Assistent Änderungen an einem längeren Text vor, müssen Sie nicht\nmehr den gesamten Text übernehmen oder ablehnen: Einzelne Absätze oder\nAufzählungspunkte lassen sich jetzt gezielt übernehmen oder verwerfen – per\nKlick oder mit der Tastatur.</p>\n<h4>Validierungen in der Seitenanalyse</h4>\n<p>Validierungsfehler werden neu direkt in der Seitenanalyse angezeigt – zusammen\nmit den anderen Analyse-Ergebnissen wie Lesbarkeit oder Barrierefreiheit. Die\nseparate Ansicht für Validierungen entfällt, die Seitenanalyse ist dafür immer\nverfügbar.</p>\n<h4>Validierungsfehler beim Speichern/Publizieren</h4>\n<p>Schlägt die Publikation wegen Validierungsfehlern fehl, zeigt der Dialog neu die\nkonkreten Probleme an, damit Sie sie direkt beheben können.</p>\n<h4>Blöcke in Antworten des KI-Assistenten verlinkt</h4>\n<p>Wenn der KI-Assistent in seinen Antworten auf einen Block verweist, erscheint\nneu dessen Bezeichnung als klickbarer Link, der direkt zum Block auf der Seite\nspringt. Bisher wurde an dieser Stelle teilweise eine kryptische ID angezeigt.</p>\n<h3>Verbesserungen</h3>\n<ul>\n<li>Die Farbauswahl im Diagramm-Editor wurde überarbeitet: Alle Farben und ihre\nAbstufungen sind neu übersichtlich als Palette dargestellt.</li>\n</ul>\n<h3>Fehlerbehebungen</h3>\n<ul>\n<li>Ein Klick auf eine Hervorhebung der Seitenanalyse springt jetzt zuverlässig\nzur betroffenen Stelle, auch wenn die Sidebar geschlossen ist. Beim Schliessen\nder Seitenanalyse werden Hervorhebungen korrekt zurückgesetzt.</li>\n<li>Die Textsuche des KI-Assistenten ordnet Texte jetzt dem richtigen Block zu,\nwenn Blöcke ineinander verschachtelt sind.</li>\n</ul>\n"
16
+ }
17
+ },
2
18
  {
3
19
  "version": "2.0.0-alpha.61",
4
20
  "date": "2026-06-03",
5
21
  "body": {
6
- "en": "<h3>Improvements</h3>\n<h4>The AI assistant sees your selection from the very first message</h4>\n<p>When you select a block and immediately ask the AI assistant something like\n&quot;Convert this into an accordion&quot;, it now knows right away what you mean.\nPreviously it often had to ask back or look up the selection in a separate\nstep.</p>\n<h4>The AI assistant handles nested blocks correctly</h4>\n<p>When the AI assistant creates a structure made of several blocks, it now\nreliably understands which blocks sit inside which. Previously it sometimes\nmisread its own additions and partially deleted what it had just created.</p>\n<h4>Other improvements</h4>\n<ul>\n<li>The list of changes that the AI assistant proposes for confirmation can now\nbe navigated entirely with the keyboard.</li>\n</ul>\n",
22
+ "en": "<h3>Improvements</h3>\n<h4>The AI assistant sees your selection from the very first message</h4>\n<p>When you select a block and immediately ask the AI assistant something like\n&quot;Convert this into an accordion&quot;, it now knows right away what you mean.\nPreviously it often had to ask back or look up the selection in a separate step.</p>\n<h4>The AI assistant handles nested blocks correctly</h4>\n<p>When the AI assistant creates a structure made of several blocks, it now\nreliably understands which blocks sit inside which. Previously it sometimes\nmisread its own additions and partially deleted what it had just created.</p>\n<h4>Other improvements</h4>\n<ul>\n<li>The list of changes that the AI assistant proposes for confirmation can now be\nnavigated entirely with the keyboard.</li>\n</ul>\n",
7
23
  "de": "<h3>Verbesserungen</h3>\n<h4>KI-Assistent erkennt markierte Blöcke ab der ersten Nachricht</h4>\n<p>Wenn Sie einen Block markieren und dem KI-Assistenten direkt eine Anweisung wie\n«Wandle das in ein Akkordeon um» geben, weiss er sofort, was gemeint ist. Bisher\nmusste er häufig nachfragen oder die Auswahl in einem separaten Schritt\nnachlesen.</p>\n<h4>KI-Assistent ordnet verschachtelte Blöcke korrekt ein</h4>\n<p>Erstellt der KI-Assistent eine Struktur mit mehreren Blöcken, erkennt er nun\nzuverlässig, welche Blöcke ineinander liegen. Vorher kam es vor, dass er die\ngerade erstellte Struktur falsch interpretierte und teilweise wieder löschte.</p>\n<h4>Weitere Verbesserungen</h4>\n<ul>\n<li>Die Liste der Änderungen, die der KI-Assistent zur Bestätigung vorschlägt,\nlässt sich jetzt vollständig mit der Tastatur durchgehen.</li>\n</ul>\n"
8
24
  }
9
25
  },
@@ -96,7 +96,7 @@ const label = computed(() => {
96
96
  const icon = computed(() => getItemIcon(itemType.value));
97
97
  </script>
98
98
 
99
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
99
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
100
100
  .bk .bk-clipboard-drop-element {
101
101
  pointer-events: none;
102
102
  display: flex;
@@ -43,7 +43,7 @@ onBeforeUnmount(() => {
43
43
  });
44
44
  </script>
45
45
 
46
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
46
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
47
47
  .bk.bk-add-comment {
48
48
  --bk-bg: white;
49
49
  --bk-header-bg: rgb(var(--bk-theme-yellow-normal) / 1);
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="_bk_flex _bk_items-baseline _bk_gap-3 _bk_flex-wrap _bk_min-w-0 _bk_text-sm _bk_-mt-2">
3
3
  <span class="_bk_font-semibold _bk_text-mono-900 _bk_truncate">
4
- {{ user?.name || $t("userDeleted", "[deleted]") }}
4
+ {{ user?.name || `[${$t("deleted", "deleted")}]` }}
5
5
  </span>
6
6
  <RelativeTime v-slot="{ formatted }" :timestamp="created">
7
7
  <span class="_bk_text-xs _bk_text-mono-500">{{ formatted }}</span>
@@ -26,7 +26,7 @@
26
26
  >
27
27
  <Avatar
28
28
  :deleted="!comment.user"
29
- :name="comment.user?.name || $t('userDeleted', '[deleted]')"
29
+ :name="comment.user?.name || `[${$t('deleted', 'deleted')}]`"
30
30
  :seed="comment.user?.id"
31
31
  :image-url="comment.user?.imageUrl"
32
32
  />
@@ -109,7 +109,7 @@ export default {
109
109
  };
110
110
  </script>
111
111
 
112
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
112
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
113
113
  .bk-comment-thread {
114
114
  --bk-comment-pad-x: 8px;
115
115
  --bk-comment-pad-y: 10px;
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <NestedEditorOverlay
3
3
  v-if="uuid"
4
+ :id="'complex-option-' + dataType"
4
5
  :uuid
5
6
  :title="
6
7
  getText(config.editTitle.key, config.editTitle.defaultTranslation)
@@ -79,7 +79,7 @@ defineItemDropdownAction(() => {
79
79
  });
80
80
  </script>
81
81
 
82
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
82
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
83
83
  :is(.bk .bk-debug) .bk-debug-section {
84
84
  border-bottom-style: var(--bk-tw-border-style);
85
85
  border-bottom-width: 1px;
@@ -112,7 +112,7 @@ export default {
112
112
  };
113
113
  </script>
114
114
 
115
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
115
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
116
116
  html.bk-hide-interaction-layers #bk-canvas-overlay {
117
117
  visibility: hidden !important;
118
118
  }
@@ -394,7 +394,7 @@ onBeforeUnmount(() => {
394
394
  });
395
395
  </script>
396
396
 
397
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
397
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
398
398
  .bk.bk-dragging-overlay-label {
399
399
  position: fixed;
400
400
  top: 0px;
@@ -356,7 +356,7 @@ export default {
356
356
  };
357
357
  </script>
358
358
 
359
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
359
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
360
360
  .bk-vars.bk-dragging-overlay {
361
361
  pointer-events: none;
362
362
  position: fixed;
@@ -524,7 +524,7 @@ onBeforeUnmount(() => {
524
524
  });
525
525
  </script>
526
526
 
527
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
527
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
528
528
  .bk.bk-droppable-field-edit {
529
529
  --bk-bg: white;
530
530
  --bk-header-bg: rgb(var(--bk-theme-teal-normal) / 1);
@@ -140,7 +140,7 @@ onBeforeUnmount(() => {
140
140
  });
141
141
  </script>
142
142
 
143
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
143
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
144
144
  :is(.bk .bk-editable-field-frame):not(.bk-is-fullscreen) iframe {
145
145
  max-height: calc(100vh - 500px);
146
146
  }
@@ -8,13 +8,9 @@ type __VLS_ModelProps = {
8
8
  };
9
9
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
10
  declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- save: (...args: any[]) => void;
12
- discard: (...args: any[]) => void;
13
- "update:modelValue": (value: string) => void;
11
+ "update:modelValue": (value: string) => any;
14
12
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
13
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
16
- onSave?: ((...args: any[]) => any) | undefined;
17
- onDiscard?: ((...args: any[]) => any) | undefined;
18
14
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
15
  declare const _default: typeof __VLS_export;
20
16
  export default _default;
@@ -8,13 +8,9 @@ type __VLS_ModelProps = {
8
8
  };
9
9
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
10
10
  declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- save: (...args: any[]) => void;
12
- discard: (...args: any[]) => void;
13
- "update:modelValue": (value: string) => void;
11
+ "update:modelValue": (value: string) => any;
14
12
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
13
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
16
- onSave?: ((...args: any[]) => any) | undefined;
17
- onDiscard?: ((...args: any[]) => any) | undefined;
18
14
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
15
  declare const _default: typeof __VLS_export;
20
16
  export default _default;
@@ -134,7 +134,7 @@ onBeforeUnmount(() => {
134
134
  });
135
135
  </script>
136
136
 
137
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
137
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
138
138
  .bk.bk-readability-chunk-overlay {
139
139
  pointer-events: none;
140
140
  position: absolute;
@@ -366,7 +366,7 @@ onBeforeUnmount(async () => {
366
366
  });
367
367
  </script>
368
368
 
369
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
369
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
370
370
  .bk.bk-editable-field {
371
371
  --bk-bg: white;
372
372
  --bk-header-bg: rgb(var(--bk-theme-teal-normal) / 1);
@@ -39,7 +39,7 @@ export default {
39
39
  };
40
40
  </script>
41
41
 
42
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
42
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
43
43
  :is(html.bk-hide-non-editable .bk-main-canvas) > * {
44
44
  visibility: hidden;
45
45
  }
@@ -21,14 +21,19 @@
21
21
  :disabled="!state.canEdit.value"
22
22
  @click="onEditEntity"
23
23
  >
24
- <div class="bk-toolbar-title _bk_relative _bk_size-full">
25
- <div
26
- class="_bk_min-w-0 _bk_truncate _bk_absolute _bk_top-1/2 _bk_left-0 _bk_w-full _bk_-translate-y-1/2 _bk_text-left _bk_flex _bk_items-center"
27
- >
28
- <StatusIndicator :status="statusIndicatorStatus" />
24
+ <div class="_bk_flex _bk_items-center _bk_relative _bk_size-full">
25
+ <div class="_bk_flex _bk_items-center">
26
+ <StatusIndicator :status="statusIndicatorStatus" class="_bk_mr-10" />
29
27
  <strong class="_bk_text-mono-100">{{ entity.label }}</strong>
30
28
  <span>&nbsp;{{ entity.bundleLabel }}</span>
31
29
  </div>
30
+ <div
31
+ v-if="lastChanged"
32
+ class="_bk_text-[11px] _bk_text-mono-300 _bk_border _bk_border-mono-500 _bk_px-5 _bk_py-1 _bk_rounded-full _bk_ml-10 _bk_font-medium"
33
+ >
34
+ {{ $t("entityTitleLastChanged", "Last changed") }}
35
+ <RelativeTime :timestamp="lastChanged" />
36
+ </div>
32
37
  </div>
33
38
  <Tooltip :label="tooltipLabel" />
34
39
  </button>
@@ -42,7 +47,12 @@ import {
42
47
  computed,
43
48
  useTemplateRef
44
49
  } from "#imports";
45
- import { Icon, StatusIndicator, Tooltip } from "#blokkli/editor/components";
50
+ import {
51
+ Icon,
52
+ RelativeTime,
53
+ StatusIndicator,
54
+ Tooltip
55
+ } from "#blokkli/editor/components";
46
56
  import { defineCommands, defineTourItem } from "#blokkli/editor/composables";
47
57
  defineBlokkliFeature({
48
58
  id: "entity-title",
@@ -51,7 +61,7 @@ defineBlokkliFeature({
51
61
  description: "Renders the title and status of the page entity."
52
62
  });
53
63
  const { state, eventBus, $t, ui } = useBlokkli();
54
- const { entity, mutations } = state;
64
+ const { entity, mutations, lastChanged } = state;
55
65
  const buttonEl = useTemplateRef("buttonEl");
56
66
  async function onEditEntity() {
57
67
  await ui.flushPendingChanges();
@@ -40,7 +40,7 @@ function onStartTour() {
40
40
  }
41
41
  </script>
42
42
 
43
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
43
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
44
44
  .bk.bk-help {
45
45
  padding: 20px;
46
46
  container-type: inline-size;
@@ -59,7 +59,7 @@ const groups = computed(() => {
59
59
  });
60
60
  </script>
61
61
 
62
- <style>/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
62
+ <style>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
63
63
  :is(.bk .bk-help-shortcuts) table {
64
64
  width: 100%;
65
65
  font-size: var(--text-sm, 14px);