@templatical/editor 0.39.2 → 0.39.4

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 (152) hide show
  1. package/dist/{AiChatSidebar-pOxCZWz9.js → AiChatSidebar-5qqrS6uy.js} +69 -63
  2. package/dist/{AiFeatureMenu-Bljk6Qjv.js → AiFeatureMenu-BBO_Ojlp.js} +1 -1
  3. package/dist/{BlockPreviewCanvas-DXGjUECG.js → BlockPreviewCanvas-BMC16_QU.js} +1 -1
  4. package/dist/{CloudHeaderExtras-DaocwNmy.js → CloudHeaderExtras-Cg6uF-yQ.js} +1 -1
  5. package/dist/{CloudPanels-CyZAnSJY.js → CloudPanels-D1Gg4qrG.js} +80 -66
  6. package/dist/{CollaboratorBar-C7Zca3g1.js → CollaboratorBar-Cmn0LccS.js} +3 -3
  7. package/dist/{CommentsPanel-CNOb7YCm.js → CommentsPanel-twNhYUqZ.js} +1 -1
  8. package/dist/{CommentsSidebar-VmwjU9va.js → CommentsSidebar-DDO0Qx8U.js} +122 -112
  9. package/dist/{CountdownToolbar-C2kfS6Oy.js → CountdownToolbar-nvHxu8Gu.js} +1 -1
  10. package/dist/DesignReferenceSidebar-C8ohNhOd.js +280 -0
  11. package/dist/{IssuesPanel-DL2Xr14_.js → IssuesPanel-Ck0EGoV5.js} +4 -4
  12. package/dist/{LoadingTrack-C2jKCU2d.js → LoadingTrack-C1Epulqq.js} +1 -1
  13. package/dist/{MediaEditModal-D4GEq2md.js → MediaEditModal-BFWmufJK.js} +3 -3
  14. package/dist/{MediaPanels-sapgKtxu.js → MediaPanels-BmDda5rY.js} +1 -1
  15. package/dist/{ParagraphEditor-DkkPSexG.js → ParagraphEditor-D6FRxr8Y.js} +2 -2
  16. package/dist/{RestoreVersionDialog-BgueZnZr.js → RestoreVersionDialog--b0qfNaK.js} +1 -1
  17. package/dist/{SaveBlockDialog-BuTuVlLr.js → SaveBlockDialog-C0BdEGeL.js} +6 -6
  18. package/dist/{SavedBlocksBrowserModal-Srhix8BB.js → SavedBlocksBrowserModal-BzDgXtr4.js} +8 -8
  19. package/dist/{SavedBlocksPanels-B2iScCS-.js → SavedBlocksPanels-DN-bDZzy.js} +1 -1
  20. package/dist/SavedBlocksPickBar-pEi9Et8Q.js +53 -0
  21. package/dist/{TemplateScoringPanel-C2Rdlyn6.js → TemplateScoringPanel-B1wcfE0w.js} +62 -56
  22. package/dist/{TestEmailModal-DJ5q_u4N.js → TestEmailModal-maM8SLBV.js} +6 -6
  23. package/dist/{TestEmailPanel-CP24UGst.js → TestEmailPanel-8iAZYpCK.js} +1 -1
  24. package/dist/{TitleEditor-QBBOXtxx.js → TitleEditor-L26QXwna.js} +1 -1
  25. package/dist/{Toolbar-COD2TW20.js → Toolbar-B2kDLFhn.js} +314 -314
  26. package/dist/{TplModal-C8xGjC1l.js → TplModal-DVMS_nAn.js} +1 -1
  27. package/dist/{VersionHistoryPanels-BrK6na4A.js → VersionHistoryPanels-D8f8KvKX.js} +1 -1
  28. package/dist/bundle-stats.json +6 -6
  29. package/dist/{ca-YlPDhElv.js → ca-Bqeygp1_.js} +1 -0
  30. package/dist/cdn/chunks/{AiChatSidebar-CjSEoK4x.js → AiChatSidebar-ctfIU4i0.js} +67 -61
  31. package/dist/cdn/chunks/AiChatSidebar-ctfIU4i0.js.map +1 -0
  32. package/dist/cdn/chunks/{AiFeatureMenu-l0K5TOSn.js → AiFeatureMenu-ByygdH_9.js} +2 -2
  33. package/dist/cdn/chunks/{AiFeatureMenu-l0K5TOSn.js.map → AiFeatureMenu-ByygdH_9.js.map} +1 -1
  34. package/dist/cdn/chunks/{BlockPreviewCanvas-lQrAdgG3.js → BlockPreviewCanvas-DeS7Sa--.js} +2 -2
  35. package/dist/cdn/chunks/{BlockPreviewCanvas-lQrAdgG3.js.map → BlockPreviewCanvas-DeS7Sa--.js.map} +1 -1
  36. package/dist/cdn/chunks/{CloudHeaderExtras-CXNe7Q-4.js → CloudHeaderExtras-BxsMpvVr.js} +2 -2
  37. package/dist/cdn/chunks/{CloudHeaderExtras-CXNe7Q-4.js.map → CloudHeaderExtras-BxsMpvVr.js.map} +1 -1
  38. package/dist/cdn/chunks/{CloudPanels-bHhh9AUA.js → CloudPanels-DmxmqAS_.js} +78 -64
  39. package/dist/cdn/chunks/CloudPanels-DmxmqAS_.js.map +1 -0
  40. package/dist/cdn/chunks/{CollaboratorBar-DgqcaGGI.js → CollaboratorBar-B8ttqAqX.js} +4 -4
  41. package/dist/cdn/chunks/CollaboratorBar-B8ttqAqX.js.map +1 -0
  42. package/dist/cdn/chunks/{CommentsPanel-Cy4TlTHC.js → CommentsPanel-C8ibhaiK.js} +2 -2
  43. package/dist/cdn/chunks/{CommentsPanel-Cy4TlTHC.js.map → CommentsPanel-C8ibhaiK.js.map} +1 -1
  44. package/dist/cdn/chunks/{CommentsSidebar-C7oAP3Mx.js → CommentsSidebar-CybWfZ3V.js} +118 -108
  45. package/dist/cdn/chunks/CommentsSidebar-CybWfZ3V.js.map +1 -0
  46. package/dist/cdn/chunks/{CountdownToolbar-CN9h4nlC.js → CountdownToolbar-DRESXiVD.js} +2 -2
  47. package/dist/cdn/chunks/{CountdownToolbar-CN9h4nlC.js.map → CountdownToolbar-DRESXiVD.js.map} +1 -1
  48. package/dist/cdn/chunks/DesignReferenceSidebar-CtaoY-hl.js +230 -0
  49. package/dist/cdn/chunks/DesignReferenceSidebar-CtaoY-hl.js.map +1 -0
  50. package/dist/cdn/chunks/{IssuesPanel-DdFk-Blf.js → IssuesPanel-C6RlIxoi.js} +5 -5
  51. package/dist/cdn/chunks/IssuesPanel-C6RlIxoi.js.map +1 -0
  52. package/dist/cdn/chunks/{LoadingTrack-Ba5xh5HD.js → LoadingTrack-_7DH_5aw.js} +2 -2
  53. package/dist/cdn/chunks/{LoadingTrack-Ba5xh5HD.js.map → LoadingTrack-_7DH_5aw.js.map} +1 -1
  54. package/dist/cdn/chunks/{MediaEditModal-BBZRcYKe.js → MediaEditModal-CZBZviu2.js} +4 -4
  55. package/dist/cdn/chunks/MediaEditModal-CZBZviu2.js.map +1 -0
  56. package/dist/cdn/chunks/{MediaPanels-CSBCsFwT.js → MediaPanels-Bq5b-XJM.js} +2 -2
  57. package/dist/cdn/chunks/{MediaPanels-CSBCsFwT.js.map → MediaPanels-Bq5b-XJM.js.map} +1 -1
  58. package/dist/cdn/chunks/{ParagraphEditor-DO4RzP8l.js → ParagraphEditor-R2ph_UOo.js} +3 -3
  59. package/dist/cdn/chunks/ParagraphEditor-R2ph_UOo.js.map +1 -0
  60. package/dist/cdn/chunks/{RestoreVersionDialog-CzZ_sFnz.js → RestoreVersionDialog-C-dwbb7T.js} +2 -2
  61. package/dist/cdn/chunks/{RestoreVersionDialog-CzZ_sFnz.js.map → RestoreVersionDialog-C-dwbb7T.js.map} +1 -1
  62. package/dist/cdn/chunks/{SaveBlockDialog-LgxYrXyx.js → SaveBlockDialog-C_BPjVv6.js} +7 -7
  63. package/dist/cdn/chunks/SaveBlockDialog-C_BPjVv6.js.map +1 -0
  64. package/dist/cdn/chunks/{SavedBlocksBrowserModal-CdeSsTpb.js → SavedBlocksBrowserModal-CrrGEfFb.js} +9 -9
  65. package/dist/cdn/chunks/SavedBlocksBrowserModal-CrrGEfFb.js.map +1 -0
  66. package/dist/cdn/chunks/{SavedBlocksPanels-B5hakNJj.js → SavedBlocksPanels-DfTaMPAr.js} +2 -2
  67. package/dist/cdn/chunks/{SavedBlocksPanels-B5hakNJj.js.map → SavedBlocksPanels-DfTaMPAr.js.map} +1 -1
  68. package/dist/cdn/chunks/SavedBlocksPickBar-DziwHYSu.js +55 -0
  69. package/dist/cdn/chunks/SavedBlocksPickBar-DziwHYSu.js.map +1 -0
  70. package/dist/cdn/chunks/{TemplateScoringPanel--JxR6CsQ.js → TemplateScoringPanel-CR6RG6dZ.js} +95 -89
  71. package/dist/cdn/chunks/TemplateScoringPanel-CR6RG6dZ.js.map +1 -0
  72. package/dist/cdn/chunks/{TestEmailModal-BAuDxJtD.js → TestEmailModal-DId9Og-N.js} +7 -7
  73. package/dist/cdn/chunks/TestEmailModal-DId9Og-N.js.map +1 -0
  74. package/dist/cdn/chunks/{TestEmailPanel-GUGZisLp.js → TestEmailPanel-B8LwXmeX.js} +2 -2
  75. package/dist/cdn/chunks/{TestEmailPanel-GUGZisLp.js.map → TestEmailPanel-B8LwXmeX.js.map} +1 -1
  76. package/dist/cdn/chunks/{TitleEditor-uKu33Nwr.js → TitleEditor-C7KMzX1e.js} +2 -2
  77. package/dist/cdn/chunks/{TitleEditor-uKu33Nwr.js.map → TitleEditor-C7KMzX1e.js.map} +1 -1
  78. package/dist/cdn/chunks/{Toolbar-dxDYwN5E.js → Toolbar-DqFhWxgW.js} +310 -310
  79. package/dist/cdn/chunks/Toolbar-DqFhWxgW.js.map +1 -0
  80. package/dist/cdn/chunks/{TplModal-DuwS2ifK.js → TplModal-BKqDFLq3.js} +2 -2
  81. package/dist/cdn/chunks/{TplModal-DuwS2ifK.js.map → TplModal-BKqDFLq3.js.map} +1 -1
  82. package/dist/cdn/chunks/{VersionHistoryPanels-GeR6MStB.js → VersionHistoryPanels-DcCFFDK6.js} +2 -2
  83. package/dist/cdn/chunks/{VersionHistoryPanels-GeR6MStB.js.map → VersionHistoryPanels-DcCFFDK6.js.map} +1 -1
  84. package/dist/cdn/chunks/{ca-YlPDhElv.js → ca-Bqeygp1_.js} +2 -1
  85. package/dist/cdn/chunks/{ca-YlPDhElv.js.map → ca-Bqeygp1_.js.map} +1 -1
  86. package/dist/cdn/chunks/{de-CONjnzrF.js → de-CY6SlqBx.js} +2 -1
  87. package/dist/cdn/chunks/{de-CONjnzrF.js.map → de-CY6SlqBx.js.map} +1 -1
  88. package/dist/{de-BytZwgn6.js → cdn/chunks/de-mMY5yQJu.js} +5 -0
  89. package/dist/cdn/chunks/de-mMY5yQJu.js.map +1 -0
  90. package/dist/cdn/chunks/{editor-modal-C-yBlj2C.js → editor-modal-zxvWz8R6.js} +4 -3
  91. package/dist/cdn/chunks/editor-modal-zxvWz8R6.js.map +1 -0
  92. package/dist/cdn/chunks/{en-BAMooiOF.js → en-8V-2kDcp.js} +2 -1
  93. package/dist/cdn/chunks/{en-BAMooiOF.js.map → en-8V-2kDcp.js.map} +1 -1
  94. package/dist/cdn/chunks/en-BcQ9ovQu.js +2 -0
  95. package/dist/{en-DyOSV0lY.js → cdn/chunks/en-ChVeGQBY.js} +5 -0
  96. package/dist/cdn/chunks/en-ChVeGQBY.js.map +1 -0
  97. package/dist/cdn/chunks/{es-I47lHs2m.js → es-Cmn1rT3l.js} +2 -1
  98. package/dist/cdn/chunks/{es-I47lHs2m.js.map → es-Cmn1rT3l.js.map} +1 -1
  99. package/dist/cdn/chunks/{fr-B8MIKjT4.js → fr-2yDa4zXM.js} +2 -1
  100. package/dist/cdn/chunks/{fr-B8MIKjT4.js.map → fr-2yDa4zXM.js.map} +1 -1
  101. package/dist/cdn/chunks/{nl-CBLxcb-0.js → nl-Bzk2zRI8.js} +2 -1
  102. package/dist/cdn/chunks/{nl-CBLxcb-0.js.map → nl-Bzk2zRI8.js.map} +1 -1
  103. package/dist/cdn/chunks/{pt-BR-C1WLSGDh.js → pt-BR-CoCwRUi0.js} +4 -1
  104. package/dist/cdn/chunks/pt-BR-CoCwRUi0.js.map +1 -0
  105. package/dist/cdn/chunks/{pt-BR-CMSRfX7t.js → pt-BR-DqtSCTUi.js} +2 -1
  106. package/dist/cdn/chunks/{pt-BR-CMSRfX7t.js.map → pt-BR-DqtSCTUi.js.map} +1 -1
  107. package/dist/cdn/chunks/{src-O5Sp_qJ7.js → src-CqYYKcCI.js} +2 -2
  108. package/dist/cdn/chunks/{src-O5Sp_qJ7.js.map → src-CqYYKcCI.js.map} +1 -1
  109. package/dist/cdn/chunks/{useEditorCore-BHmIp1hW.js → useEditorCore-CXYI14ux.js} +14 -14
  110. package/dist/cdn/chunks/{useEditorCore-BHmIp1hW.js.map → useEditorCore-CXYI14ux.js.map} +1 -1
  111. package/dist/cdn/editor.css +1 -1
  112. package/dist/cdn/editor.js +15 -15
  113. package/dist/cdn/editor.js.map +1 -1
  114. package/dist/{de-CONjnzrF.js → de-CY6SlqBx.js} +1 -0
  115. package/dist/{cdn/chunks/de-BytZwgn6.js → de-mMY5yQJu.js} +3 -2
  116. package/dist/{editor-modal-oD1qNz_P.js → editor-modal-Czq1I8oC.js} +3 -2
  117. package/dist/{en-BAMooiOF.js → en-8V-2kDcp.js} +1 -0
  118. package/dist/{cdn/chunks/en-DyOSV0lY.js → en-ChVeGQBY.js} +3 -2
  119. package/dist/en-DQqmtndQ.js +2 -0
  120. package/dist/{es-I47lHs2m.js → es-Cmn1rT3l.js} +1 -0
  121. package/dist/{fr-B8MIKjT4.js → fr-2yDa4zXM.js} +1 -0
  122. package/dist/{nl-CBLxcb-0.js → nl-Bzk2zRI8.js} +1 -0
  123. package/dist/{pt-BR-C1WLSGDh.js → pt-BR-CoCwRUi0.js} +3 -0
  124. package/dist/{pt-BR-CMSRfX7t.js → pt-BR-DqtSCTUi.js} +1 -0
  125. package/dist/style.css +1 -1
  126. package/dist/templatical-editor.js +14 -14
  127. package/dist/{useEditorCore-C5APBjjV.js → useEditorCore-BUVbQgwb.js} +13 -13
  128. package/package.json +7 -7
  129. package/dist/DesignReferenceSidebar-QC4gEUWp.js +0 -273
  130. package/dist/SavedBlocksPickBar-cI7bDQQi.js +0 -52
  131. package/dist/cdn/chunks/AiChatSidebar-CjSEoK4x.js.map +0 -1
  132. package/dist/cdn/chunks/CloudPanels-bHhh9AUA.js.map +0 -1
  133. package/dist/cdn/chunks/CollaboratorBar-DgqcaGGI.js.map +0 -1
  134. package/dist/cdn/chunks/CommentsSidebar-C7oAP3Mx.js.map +0 -1
  135. package/dist/cdn/chunks/DesignReferenceSidebar-Bjo0M-AY.js +0 -223
  136. package/dist/cdn/chunks/DesignReferenceSidebar-Bjo0M-AY.js.map +0 -1
  137. package/dist/cdn/chunks/IssuesPanel-DdFk-Blf.js.map +0 -1
  138. package/dist/cdn/chunks/MediaEditModal-BBZRcYKe.js.map +0 -1
  139. package/dist/cdn/chunks/ParagraphEditor-DO4RzP8l.js.map +0 -1
  140. package/dist/cdn/chunks/SaveBlockDialog-LgxYrXyx.js.map +0 -1
  141. package/dist/cdn/chunks/SavedBlocksBrowserModal-CdeSsTpb.js.map +0 -1
  142. package/dist/cdn/chunks/SavedBlocksPickBar-Cl6PLwwV.js +0 -54
  143. package/dist/cdn/chunks/SavedBlocksPickBar-Cl6PLwwV.js.map +0 -1
  144. package/dist/cdn/chunks/TemplateScoringPanel--JxR6CsQ.js.map +0 -1
  145. package/dist/cdn/chunks/TestEmailModal-BAuDxJtD.js.map +0 -1
  146. package/dist/cdn/chunks/Toolbar-dxDYwN5E.js.map +0 -1
  147. package/dist/cdn/chunks/de-BytZwgn6.js.map +0 -1
  148. package/dist/cdn/chunks/editor-modal-C-yBlj2C.js.map +0 -1
  149. package/dist/cdn/chunks/en-DYtFUE2l.js +0 -2
  150. package/dist/cdn/chunks/en-DyOSV0lY.js.map +0 -1
  151. package/dist/cdn/chunks/pt-BR-C1WLSGDh.js.map +0 -1
  152. package/dist/en-CM5fTFSo.js +0 -2
@@ -1,19 +1,19 @@
1
- import { A as e, B as t, E as n, M as r, R as i, S as ee, V as te, Z as a, at as o, c as s, d as c, g as l, h as u, jt as d, kt as f, l as p, r as m, u as h, v as g } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
- import { a as ne, t as re } from "./runtime-dom.esm-bundler-BGbPz4-g.js";
3
- import { _ as ie, g as ae } from "./dist-8VFzbeu9.js";
4
- import { D as oe, P as se, Z as _, g as v, i as ce, u as le } from "./keys-BdoSgsz9.js";
5
- import { t as y } from "./createLucideIcon-BxY5yz5u.js";
6
- import { t as ue } from "./circle-alert-CYgTHKWr.js";
7
- import { t as de } from "./loader-circle-z5eeqasv.js";
8
- import { t as fe } from "./send-Cm2fy2zm.js";
9
- import { t as b } from "./sparkles-Ds0RF8Iu.js";
10
- import { t as pe } from "./trash-DnOkfu2V.js";
11
- import { t as me } from "./x-3BHV3Q6K.js";
12
- import { t as x } from "./LoadingTrack-C2jKCU2d.js";
13
- import { t as S } from "./_plugin-vue_export-helper-B3ysoDQm.js";
14
- import { t as C } from "./useAliveFlag-BkKyhkwZ.js";
15
- import { p as w } from "./cloud-C9xWZXhg.js";
16
- var T = y({
1
+ import { A as e, B as t, E as n, M as r, R as i, S as ee, V as te, Z as a, at as o, c as s, d as c, g as l, h as u, jt as d, kt as ne, l as f, r as p, u as m, v as h } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
+ import { a as re, t as ie } from "./runtime-dom.esm-bundler-BGbPz4-g.js";
3
+ import { _ as ae, g as oe } from "./dist-8VFzbeu9.js";
4
+ import { D as se, P as g, Z as _, g as ce, i as le, u as ue } from "./keys-BdoSgsz9.js";
5
+ import { t as v } from "./createLucideIcon-BxY5yz5u.js";
6
+ import { t as de } from "./circle-alert-CYgTHKWr.js";
7
+ import { t as fe } from "./loader-circle-z5eeqasv.js";
8
+ import { t as pe } from "./send-Cm2fy2zm.js";
9
+ import { t as y } from "./sparkles-Ds0RF8Iu.js";
10
+ import { t as me } from "./trash-DnOkfu2V.js";
11
+ import { t as he } from "./x-3BHV3Q6K.js";
12
+ import { t as b } from "./LoadingTrack-C1Epulqq.js";
13
+ import { t as x } from "./_plugin-vue_export-helper-B3ysoDQm.js";
14
+ import { t as S } from "./useAliveFlag-BkKyhkwZ.js";
15
+ import { p as C } from "./cloud-C9xWZXhg.js";
16
+ var w = v({
17
17
  name: "redo-2",
18
18
  size: 24,
19
19
  node: [["path", {
@@ -23,7 +23,7 @@ var T = y({
23
23
  d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13",
24
24
  key: "6uklza"
25
25
  }]]
26
- }), E = y({
26
+ }), T = v({
27
27
  name: "undo-2",
28
28
  size: 24,
29
29
  node: [["path", {
@@ -33,10 +33,7 @@ var T = y({
33
33
  d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",
34
34
  key: "f3b9sd"
35
35
  }]]
36
- }), D = {
37
- key: 0,
38
- class: "tpl-ai-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
39
- }, O = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, k = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, A = { class: "tpl:flex tpl:items-center tpl:gap-1" }, j = ["title"], M = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, N = {
36
+ }), E = ["aria-label"], D = { class: "tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-4 tpl:py-3" }, O = { class: "tpl:flex tpl:items-center tpl:gap-1.5 tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-primary)]" }, k = { class: "tpl:flex tpl:items-center tpl:gap-1" }, A = ["aria-label", "title"], j = ["aria-label"], M = { class: "tpl:relative tpl:flex tpl:min-h-0 tpl:flex-1 tpl:flex-col" }, N = {
40
37
  key: 0,
41
38
  class: "tpl:flex tpl:h-full tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-3 tpl:text-center"
42
39
  }, P = { class: "tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, F = {
@@ -57,7 +54,7 @@ var T = y({
57
54
  }, z = {
58
55
  key: 1,
59
56
  class: "tpl:flex tpl:flex-col tpl:gap-2"
60
- }, he = {
57
+ }, ge = {
61
58
  key: 1,
62
59
  class: "tpl:rounded-[var(--tpl-radius-sm)] tpl:px-3.5 tpl:py-2.5 tpl:text-sm tpl:whitespace-pre-wrap",
63
60
  style: {
@@ -66,50 +63,50 @@ var T = y({
66
63
  color: "var(--tpl-text)",
67
64
  "box-shadow": "var(--tpl-shadow)"
68
65
  }
69
- }, ge = {
66
+ }, _e = {
70
67
  key: 0,
71
68
  class: "tpl:mx-3 tpl:mb-2 tpl:flex tpl:items-start tpl:gap-2 tpl:rounded-lg tpl:px-3 tpl:py-2 tpl:text-xs",
72
69
  style: {
73
70
  "background-color": "var(--tpl-danger-light)",
74
71
  color: "var(--tpl-danger)"
75
72
  }
76
- }, _e = {
73
+ }, ve = {
77
74
  key: 1,
78
75
  class: "tpl:absolute tpl:right-0 tpl:bottom-0 tpl:left-0 tpl:z-10 tpl:px-3 tpl:pb-3",
79
76
  style: {
80
77
  "background-color": "color-mix(\n in srgb,\n var(--tpl-bg) 50%,\n transparent\n )",
81
78
  "backdrop-filter": "blur(2px)"
82
79
  }
83
- }, ve = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, ye = ["onClick"], be = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, xe = { class: "tpl-ai-input-wrapper tpl-focus-ring-host tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Se = ["placeholder", "disabled"], Ce = ["disabled"], we = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[11px] tpl:text-[var(--tpl-text-dim)]" }, B = /*#__PURE__*/ S(/* @__PURE__ */ g({
80
+ }, ye = { class: "tpl:flex tpl:flex-col tpl:gap-1.5" }, be = ["onClick"], xe = { class: "tpl:border-t tpl:p-3 tpl:border-[var(--tpl-border)]" }, Se = { class: "tpl-ai-input-wrapper tpl-focus-ring-host tpl:flex tpl:items-end tpl:gap-2 tpl:rounded-[var(--tpl-radius)] tpl:border tpl:px-3 tpl:py-2 tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)]" }, Ce = ["placeholder", "disabled"], we = ["disabled"], Te = { class: "tpl:m-0 tpl:px-1 tpl:pt-2 tpl:text-center tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, B = /*#__PURE__*/ x(/* @__PURE__ */ h({
84
81
  __name: "AiChatSidebar",
85
82
  props: {
86
83
  visible: { type: Boolean },
87
84
  onApply: { type: Function }
88
85
  },
89
86
  emits: ["close"],
90
- setup(g, { emit: y }) {
91
- let S = g, B = y, V = _(le, "AiChatSidebar"), H = _(v, "AiChatSidebar"), Te = _(ce, "AiChatSidebar"), U = ee(oe, se), W = C(), G = w({
92
- authManager: Te,
87
+ setup(h, { emit: v }) {
88
+ let x = h, B = v, V = _(ue, "AiChatSidebar"), H = _(ce, "AiChatSidebar"), Ee = _(le, "AiChatSidebar"), U = ee(se, g), W = S(), G = C({
89
+ authManager: Ee,
93
90
  getTemplateId: () => H.state.template?.id ?? null,
94
- onApply: S.onApply,
91
+ onApply: x.onApply,
95
92
  onError: void 0
96
- }), K = a(""), q = a(null), J = a(!1), Y = a(0), { pause: X, resume: Ee } = ae(() => {
93
+ }), K = a(""), q = a(null), J = a(!1), Y = a(0), { pause: X, resume: De } = oe(() => {
97
94
  let e = G.suggestions.value?.length ?? 0;
98
95
  Y.value < e ? Y.value++ : X();
99
- }, 150, { immediate: !1 }), { start: De } = ie(() => Ee(), 100, { immediate: !1 });
96
+ }, 150, { immediate: !1 }), { start: Oe } = ae(() => De(), 100, { immediate: !1 });
100
97
  i(() => G.suggestions.value?.length ?? 0, (e) => {
101
98
  if (X(), e === 0) {
102
99
  Y.value = 0;
103
100
  return;
104
101
  }
105
- Y.value = 0, De();
102
+ Y.value = 0, Oe();
106
103
  });
107
104
  function Z() {
108
105
  n(() => {
109
106
  q.value && (q.value.scrollTop = q.value.scrollHeight);
110
107
  });
111
108
  }
112
- i(() => G.messages.value?.length ?? 0, () => Z()), i(() => S.visible, async (e) => {
109
+ i(() => G.messages.value?.length ?? 0, () => Z()), i(() => x.visible, async (e) => {
113
110
  if (e && !J.value) {
114
111
  if (J.value = !0, await G.loadConversation(), !W.alive) return;
115
112
  (G.messages.value?.length ?? 0) === 0 && H.content.value.blocks.length === 0 && G.loadSuggestions(H.content.value, U.value);
@@ -122,13 +119,13 @@ var T = y({
122
119
  function $(e) {
123
120
  return e.replace(/```json[\s\S]*?```/g, "").replace(/```json[\s\S]*/g, "").trim();
124
121
  }
125
- function Oe(e) {
122
+ function ke(e) {
126
123
  X(), K.value = e, Q();
127
124
  }
128
- function ke(e) {
125
+ function Ae(e) {
129
126
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), Q());
130
127
  }
131
- return (n, i) => (e(), p(re, {
128
+ return (n, i) => (e(), f(ie, {
132
129
  "enter-active-class": "tpl-ai-slide-enter-active",
133
130
  "enter-from-class": "tpl:translate-x-full",
134
131
  "enter-to-class": "tpl:translate-x-0",
@@ -136,42 +133,51 @@ var T = y({
136
133
  "leave-from-class": "tpl:translate-x-0",
137
134
  "leave-to-class": "tpl:translate-x-full"
138
135
  }, {
139
- default: t(() => [g.visible ? (e(), c("div", D, [
140
- s("div", O, [s("div", k, [l(o(b), {
136
+ default: t(() => [h.visible ? (e(), c("div", {
137
+ key: 0,
138
+ role: "complementary",
139
+ "aria-label": o(V).aiChat.title,
140
+ class: "tpl-ai-sidebar tpl:absolute tpl:top-14 tpl:right-0 tpl:bottom-0 tpl:flex tpl:w-[360px] tpl:flex-col tpl:border-l tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)]"
141
+ }, [
142
+ s("div", D, [s("div", O, [l(o(y), {
141
143
  size: 13,
142
144
  "stroke-width": 2
143
- }), s("span", null, d(o(V).aiChat.title), 1)]), s("div", A, [(o(G).messages.value?.length ?? 0) > 0 ? (e(), c("button", {
145
+ }), s("span", null, d(o(V).aiChat.title), 1)]), s("div", k, [(o(G).messages.value?.length ?? 0) > 0 ? (e(), c("button", {
144
146
  key: 0,
147
+ type: "button",
145
148
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:text-[var(--tpl-text-muted)]",
149
+ "aria-label": o(V).aiChat.clear,
146
150
  title: o(V).aiChat.clear,
147
151
  onClick: i[0] ||= (e) => o(G).clearChat()
148
- }, [l(o(pe), {
152
+ }, [l(o(me), {
149
153
  size: 14,
150
154
  "stroke-width": 2
151
- })], 8, j)) : h("", !0), s("button", {
155
+ })], 8, A)) : m("", !0), s("button", {
156
+ type: "button",
152
157
  class: "tpl:rounded-md tpl:p-0.5 tpl:transition-colors tpl:text-[var(--tpl-text-muted)]",
158
+ "aria-label": o(V).aiChat.close,
153
159
  onClick: i[1] ||= (e) => B("close")
154
- }, [l(o(me), {
160
+ }, [l(o(he), {
155
161
  size: 14,
156
162
  "stroke-width": 2
157
- })])])]),
163
+ })], 8, j)])]),
158
164
  s("div", M, [
159
165
  s("div", {
160
166
  ref_key: "messagesContainer",
161
167
  ref: q,
162
168
  class: "tpl:flex-1 tpl:overflow-y-auto tpl:p-4"
163
- }, [o(G).isLoadingHistory.value ? (e(), c("div", N, [l(o(de), {
169
+ }, [o(G).isLoadingHistory.value ? (e(), c("div", N, [l(o(fe), {
164
170
  class: "tpl-spinner tpl:text-[var(--tpl-text-muted)]",
165
171
  size: 24,
166
172
  "stroke-width": 2
167
- }), s("p", P, d(o(V).aiChat.loadingHistory), 1)])) : (o(G).messages.value?.length ?? 0) === 0 ? (e(), c("div", F, [l(o(b), {
173
+ }), s("p", P, d(o(V).aiChat.loadingHistory), 1)])) : (o(G).messages.value?.length ?? 0) === 0 ? (e(), c("div", F, [l(o(y), {
168
174
  size: 32,
169
175
  "stroke-width": 1.5,
170
176
  class: "tpl:text-[var(--tpl-text-dim)]"
171
- }), s("p", I, d(o(V).aiChat.placeholder), 1)])) : (e(), c("div", L, [(e(!0), c(m, null, r(o(G).messages.value, (t, n) => (e(), c("div", {
177
+ }), s("p", I, d(o(V).aiChat.placeholder), 1)])) : (e(), c("div", L, [(e(!0), c(p, null, r(o(G).messages.value, (t, n) => (e(), c("div", {
172
178
  key: t.id,
173
179
  class: "tpl:flex tpl:flex-col tpl:gap-2"
174
- }, [t.role === "user" ? (e(), c("div", R, d(t.content), 1)) : (e(), c("div", z, [!$(t.content) && o(G).isGenerating.value && n === (o(G).messages.value?.length ?? 0) - 1 ? (e(), p(x, { key: 0 })) : (e(), c("div", he, d($(t.content) || o(V).aiChat.applied), 1)), t.id === o(G).lastApplyMessageId.value && !o(G).isGenerating.value ? (e(), c("button", {
180
+ }, [t.role === "user" ? (e(), c("div", R, d(t.content), 1)) : (e(), c("div", z, [!$(t.content) && o(G).isGenerating.value && n === (o(G).messages.value?.length ?? 0) - 1 ? (e(), f(b, { key: 0 })) : (e(), c("div", ge, d($(t.content) || o(V).aiChat.applied), 1)), t.id === o(G).lastApplyMessageId.value && !o(G).isGenerating.value ? (e(), c("button", {
175
181
  key: 2,
176
182
  class: "tpl:inline-flex tpl:items-center tpl:gap-1.5 tpl:self-start tpl:rounded-md tpl:border tpl:px-2.5 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:transition-all",
177
183
  style: {
@@ -180,49 +186,49 @@ var T = y({
180
186
  "background-color": "transparent"
181
187
  },
182
188
  onClick: i[2] ||= (e) => o(G).toggleLastRevert()
183
- }, [o(G).isLastChangeReverted.value ? (e(), c(m, { key: 0 }, [l(o(T), {
189
+ }, [o(G).isLastChangeReverted.value ? (e(), c(p, { key: 0 }, [l(o(w), {
184
190
  size: 12,
185
191
  "stroke-width": 2
186
- }), u(" " + d(o(V).aiChat.reapply), 1)], 64)) : (e(), c(m, { key: 1 }, [l(o(E), {
192
+ }), u(" " + d(o(V).aiChat.reapply), 1)], 64)) : (e(), c(p, { key: 1 }, [l(o(T), {
187
193
  size: 12,
188
194
  "stroke-width": 2
189
- }), u(" " + d(o(V).aiChat.revert), 1)], 64))])) : h("", !0)]))]))), 128))]))], 512),
190
- o(G).error.value ? (e(), c("div", ge, [l(o(ue), {
195
+ }), u(" " + d(o(V).aiChat.revert), 1)], 64))])) : m("", !0)]))]))), 128))]))], 512),
196
+ o(G).error.value ? (e(), c("div", _e, [l(o(de), {
191
197
  size: 14,
192
198
  "stroke-width": 2,
193
199
  class: "tpl:mt-0.5 tpl:shrink-0"
194
- }), s("span", null, d(o(G).error.value === "ai_apply_failed" ? o(V).aiChat.applyFailed : o(V).aiChat.error), 1)])) : h("", !0),
195
- (o(G).suggestions.value?.length ?? 0) > 0 ? (e(), c("div", _e, [s("div", ve, [(e(!0), c(m, null, r(o(G).suggestions.value ?? [], (t, n) => (e(), c("button", {
200
+ }), s("span", null, d(o(G).error.value === "ai_apply_failed" ? o(V).aiChat.applyFailed : o(V).aiChat.error), 1)])) : m("", !0),
201
+ (o(G).suggestions.value?.length ?? 0) > 0 ? (e(), c("div", ve, [s("div", ye, [(e(!0), c(p, null, r(o(G).suggestions.value ?? [], (t, n) => (e(), c("button", {
196
202
  key: n,
197
- class: f(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (o(G).suggestions.value?.length ?? 0) - 1 - n < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
203
+ class: ne(["tpl-suggestion-btn tpl:cursor-pointer tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:px-3 tpl:py-2 tpl:text-left tpl:text-xs tpl:leading-snug tpl:transition-all tpl:duration-300 tpl:ease-out", (o(G).suggestions.value?.length ?? 0) - 1 - n < Y.value ? "tpl:translate-y-0 tpl:opacity-100" : "tpl:pointer-events-none tpl:-translate-y-2 tpl:opacity-0"]),
198
204
  style: {
199
205
  "border-color": "var(--tpl-border)",
200
206
  color: "var(--tpl-primary)",
201
207
  "background-color": "var(--tpl-bg)",
202
208
  "box-shadow": "var(--tpl-shadow)"
203
209
  },
204
- onClick: (e) => Oe(t)
205
- }, d(t), 11, ye))), 128))])])) : h("", !0)
210
+ onClick: (e) => ke(t)
211
+ }, d(t), 11, be))), 128))])])) : m("", !0)
206
212
  ]),
207
- s("div", be, [s("div", xe, [te(s("textarea", {
213
+ s("div", xe, [s("div", Se, [te(s("textarea", {
208
214
  "onUpdate:modelValue": i[3] ||= (e) => K.value = e,
209
215
  class: "tpl:max-h-32 tpl:min-h-[64px] tpl:flex-1 tpl:resize-none tpl:border-none tpl:bg-transparent tpl:font-sans tpl:text-sm tpl:outline-none tpl:text-[var(--tpl-text)]",
210
216
  placeholder: o(V).aiChat.inputPlaceholder,
211
217
  disabled: o(G).isGenerating.value,
212
218
  rows: "3",
213
- onKeydown: ke
214
- }, null, 40, Se), [[ne, K.value]]), s("button", {
219
+ onKeydown: Ae
220
+ }, null, 40, Ce), [[re, K.value]]), s("button", {
215
221
  class: "tpl-ai-send-btn tpl:flex tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded-md tpl:p-1.5 tpl:transition-all tpl:disabled:opacity-40 tpl:text-[var(--tpl-primary)]",
216
222
  disabled: !K.value.trim() || o(G).isGenerating.value,
217
223
  onClick: Q
218
- }, [l(o(fe), {
224
+ }, [l(o(pe), {
219
225
  size: 16,
220
226
  "stroke-width": 2
221
- })], 8, Ce)]), s("p", we, d(o(V).aiMenu.disclaimer), 1)])
222
- ])) : h("", !0)]),
227
+ })], 8, we)]), s("p", Te, d(o(V).aiMenu.disclaimer), 1)])
228
+ ], 8, E)) : m("", !0)]),
223
229
  _: 1
224
230
  }));
225
231
  }
226
- }), [["__scopeId", "data-v-14f74f56"]]);
232
+ }), [["__scopeId", "data-v-0a3b048c"]]);
227
233
  //#endregion
228
234
  export { B as default };
@@ -1,5 +1,5 @@
1
1
  import { A as e, At as t, F as n, M as r, c as i, d as a, jt as o, l as s, r as c, s as l, v as u } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
- import "./useEditorCore-C5APBjjV.js";
2
+ import "./useEditorCore-BUVbQgwb.js";
3
3
  import { Z as d, t as f } from "./keys-BdoSgsz9.js";
4
4
  import { t as p } from "./image-up-Qi2BXD7T.js";
5
5
  import { t as m } from "./shield-check-COgBYFDF.js";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
2
  import { A as t, At as n, F as r, M as i, P as a, S as o, at as s, c, d as l, j as u, l as d, r as f, s as p, v as m } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
3
3
  import { R as h } from "./dist-tGkjkX-v.js";
4
- import { _ as g, a as _, c as v, d as y, f as b, g as x, h as S, i as C, k as w, m as T, n as E, p as D, r as O, u as k, v as A } from "./useEditorCore-C5APBjjV.js";
4
+ import { _ as g, a as _, c as v, d as y, f as b, g as x, h as S, i as C, k as w, m as T, n as E, p as D, r as O, u as k, v as A } from "./useEditorCore-BUVbQgwb.js";
5
5
  import { X as j, f as M, g as N, j as P, s as F } from "./keys-BdoSgsz9.js";
6
6
  import { n as I, t as L } from "./emailFrameWidth-BmFCN2dp.js";
7
7
  //#region src/components/blocks/PreviewSectionBlock.vue?vue&type=script&setup=true&lang.ts
@@ -17,7 +17,7 @@ var v = {
17
17
  cloud: {}
18
18
  },
19
19
  setup(p) {
20
- let x = n(() => import("./CollaboratorBar-C7Zca3g1.js")), S = n(() => import("./AiFeatureMenu-Bljk6Qjv.js")), { t: C, format: w } = _();
20
+ let x = n(() => import("./CollaboratorBar-Cmn0LccS.js")), S = n(() => import("./AiFeatureMenu-BBO_Ojlp.js")), { t: C, format: w } = _();
21
21
  return (n, _) => p.part === "left" ? (e(), a(d, { key: 0 }, [p.cloud.featureFlags.templateLimit.value === null ? f("", !0) : (e(), a("span", v, c(r(w)(r(C).header.templatesUsed, {
22
22
  used: p.cloud.featureFlags.templateCount.value,
23
23
  max: p.cloud.featureFlags.templateLimit.value
@@ -1,15 +1,17 @@
1
- import { A as e, B as t, M as n, _ as r, at as i, c as a, d as o, g as s, jt as c, l, m as u, r as d, u as f, v as p } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
- import { c as m, t as h } from "./runtime-dom.esm-bundler-BGbPz4-g.js";
1
+ import { A as e, B as t, M as n, _ as r, at as i, c as a, d as o, g as s, jt as c, kt as l, l as u, m as d, r as f, u as p, v as m } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
+ import { t as h } from "./runtime-dom.esm-bundler-BGbPz4-g.js";
3
3
  import { t as g } from "./useI18n-Ds_-druD.js";
4
4
  import { t as _ } from "./circle-alert-CYgTHKWr.js";
5
5
  import { t as v } from "./triangle-alert-DGLAyXnh.js";
6
6
  import { n as y } from "./useCloudI18n-D1iedlP3.js";
7
+ import { d as b, v as x, x as S } from "./styleConstants-C_YAPdQS.js";
8
+ import { t as C } from "./TplModal-DVMS_nAn.js";
7
9
  //#region src/cloud/components/CloudErrorOverlay.vue?vue&type=script&setup=true&lang.ts
8
- var b = {
10
+ var w = {
9
11
  key: 0,
10
12
  role: "alert",
11
13
  class: "tpl-error tpl:absolute tpl:inset-0 tpl:z-[100] tpl:flex tpl:flex-col tpl:items-center tpl:justify-center tpl:gap-6 tpl:px-8 tpl:bg-[var(--tpl-bg)]"
12
- }, x = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, S = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, C = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, w = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, T = /* @__PURE__ */ p({
14
+ }, T = { class: "tpl:flex tpl:size-16 tpl:items-center tpl:justify-center tpl:rounded-full tpl:bg-[var(--tpl-danger-light)]" }, E = { class: "tpl:flex tpl:flex-col tpl:items-center tpl:gap-2 tpl:text-center" }, D = { class: "tpl:text-lg tpl:font-semibold tpl:text-[var(--tpl-text)]" }, O = { class: "tpl:max-w-md tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, k = /* @__PURE__ */ m({
13
15
  __name: "CloudErrorOverlay",
14
16
  props: {
15
17
  error: {},
@@ -17,86 +19,98 @@ var b = {
17
19
  },
18
20
  emits: ["retry"],
19
21
  setup(t, { emit: n }) {
20
- let r = n, { t: l } = y();
21
- function u(e) {
22
- return "isUnauthorized" in e && e.isUnauthorized ? l.error.authFailed : "isNotFound" in e && e.isNotFound ? l.error.templateNotFound : l.error.defaultMessage;
23
- }
22
+ let r = n, { t: u } = y();
24
23
  function d(e) {
24
+ return "isUnauthorized" in e && e.isUnauthorized ? u.error.authFailed : "isNotFound" in e && e.isNotFound ? u.error.templateNotFound : u.error.defaultMessage;
25
+ }
26
+ function f(e) {
25
27
  return "isNotFound" in e && !!e.isNotFound;
26
28
  }
27
- return (n, p) => t.visible && t.error ? (e(), o("div", b, [
28
- a("div", x, [s(i(_), {
29
+ return (n, m) => t.visible && t.error ? (e(), o("div", w, [
30
+ a("div", T, [s(i(_), {
29
31
  size: 32,
30
32
  "stroke-width": 1.5,
31
33
  class: "tpl:text-[var(--tpl-danger)]"
32
34
  })]),
33
- a("div", S, [a("h2", C, c(i(l).error.title), 1), a("p", w, c(u(t.error)), 1)]),
34
- d(t.error) ? f("", !0) : (e(), o("button", {
35
+ a("div", E, [a("h2", D, c(i(u).error.title), 1), a("p", O, c(d(t.error)), 1)]),
36
+ f(t.error) ? p("", !0) : (e(), o("button", {
35
37
  key: 0,
36
- class: "tpl-btn tpl-btn-primary tpl:inline-flex tpl:items-center tpl:gap-2 tpl:rounded-md tpl:px-4 tpl:py-2.5 tpl:text-sm tpl:font-medium tpl:shadow-[var(--tpl-shadow-sm)] tpl:transition-all tpl:hover:opacity-90 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-on-primary)]",
37
- onClick: p[0] ||= (e) => r("retry")
38
- }, c(i(l).error.retry), 1))
39
- ])) : f("", !0);
38
+ type: "button",
39
+ class: l(i(x)),
40
+ onClick: m[0] ||= (e) => r("retry")
41
+ }, c(i(u).error.retry), 3))
42
+ ])) : p("", !0);
40
43
  }
41
- }), E = {
42
- key: 0,
43
- class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-[100] tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
44
- }, D = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, O = { class: "tpl:flex tpl:w-12 tpl:shrink-0 tpl:flex-col tpl:items-center tpl:gap-4 tpl:py-5 tpl:border-r tpl:border-[var(--tpl-border)]" }, k = /* @__PURE__ */ p({
44
+ }), A = ["aria-label"], j = { class: "tpl:flex tpl:flex-1 tpl:overflow-hidden" }, M = { class: "tpl:flex tpl:w-12 tpl:shrink-0 tpl:flex-col tpl:items-center tpl:gap-4 tpl:py-5 tpl:border-r tpl:border-[var(--tpl-border)]" }, N = /* @__PURE__ */ m({
45
45
  __name: "CloudLoadingOverlay",
46
46
  props: { visible: { type: Boolean } },
47
47
  setup(t) {
48
- return (r, i) => t.visible ? (e(), o("div", E, [i[1] ||= u("<div class=\"tpl:flex tpl:h-14 tpl:shrink-0 tpl:items-center tpl:justify-between tpl:px-4 tpl:border-b tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-5 tpl:w-28 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl:flex tpl:gap-3\"><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div></div>", 1), a("div", D, [a("div", O, [(e(), o(d, null, n(5, (e) => a("div", {
48
+ let { t: r } = y();
49
+ return (s, c) => t.visible ? (e(), o("div", {
50
+ key: 0,
51
+ role: "status",
52
+ "aria-live": "polite",
53
+ "aria-busy": "true",
54
+ "aria-label": i(r).loading.initializing,
55
+ class: "tpl-loading tpl:absolute tpl:inset-0 tpl:z-[100] tpl:flex tpl:flex-col tpl:bg-[var(--tpl-bg)]"
56
+ }, [c[1] ||= d("<div class=\"tpl:flex tpl:h-14 tpl:shrink-0 tpl:items-center tpl:justify-between tpl:px-4 tpl:border-b tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-5 tpl:w-28 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl:flex tpl:gap-3\"><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-8 tpl:w-20 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div></div>", 1), a("div", j, [a("div", M, [(e(), o(f, null, n(5, (e) => a("div", {
49
57
  key: e,
50
58
  class: "tpl-shimmer tpl:size-7 tpl:rounded-[var(--tpl-radius-sm)]"
51
- })), 64))]), i[0] ||= u("<div class=\"tpl:flex tpl:flex-1 tpl:items-start tpl:justify-center tpl:overflow-auto tpl:p-8 tpl:bg-[var(--tpl-canvas-bg)]\"><div class=\"tpl:w-full tpl:max-w-[600px] tpl:rounded-[var(--tpl-radius)] tpl:p-6 tpl:bg-[var(--tpl-bg)] tpl:shadow-[var(--tpl-shadow-sm)]\"><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-3/4 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-5/6 tpl:rounded\"></div></div><div class=\"tpl:py-4\"><div class=\"tpl-shimmer tpl:h-44 tpl:w-full tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-2/3 tpl:rounded\"></div></div><div class=\"tpl:flex tpl:justify-center tpl:py-4\"><div class=\"tpl-shimmer tpl:h-10 tpl:w-36 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/2 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/3 tpl:rounded\"></div></div></div></div><div class=\"tpl:flex tpl:w-[320px] tpl:shrink-0 tpl:flex-col tpl:gap-4 tpl:p-4 tpl:border-l tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-8 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div></div>", 2)])])) : f("", !0);
59
+ })), 64))]), c[0] ||= d("<div class=\"tpl:flex tpl:flex-1 tpl:items-start tpl:justify-center tpl:overflow-auto tpl:p-8 tpl:bg-[var(--tpl-canvas-bg)]\"><div class=\"tpl:w-full tpl:max-w-[600px] tpl:rounded-[var(--tpl-radius)] tpl:p-6 tpl:bg-[var(--tpl-bg)] tpl:shadow-[var(--tpl-shadow-sm)]\"><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-3/4 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-5/6 tpl:rounded\"></div></div><div class=\"tpl:py-4\"><div class=\"tpl-shimmer tpl:h-44 tpl:w-full tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:h-3 tpl:w-full tpl:rounded\"></div><div class=\"tpl-shimmer tpl:h-3 tpl:w-2/3 tpl:rounded\"></div></div><div class=\"tpl:flex tpl:justify-center tpl:py-4\"><div class=\"tpl-shimmer tpl:h-10 tpl:w-36 tpl:rounded-[var(--tpl-radius-sm)]\"></div></div><div class=\"tpl:space-y-2 tpl:py-4\"><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/2 tpl:rounded\"></div><div class=\"tpl-shimmer tpl:mx-auto tpl:h-2.5 tpl:w-1/3 tpl:rounded\"></div></div></div></div><div class=\"tpl:flex tpl:w-[320px] tpl:shrink-0 tpl:flex-col tpl:gap-4 tpl:p-4 tpl:border-l tpl:border-[var(--tpl-border)]\"><div class=\"tpl-shimmer tpl:h-8 tpl:rounded-[var(--tpl-radius-sm)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div><div class=\"tpl-shimmer tpl:h-32 tpl:rounded-[var(--tpl-radius)]\"></div></div>", 2)])], 8, A)) : p("", !0);
52
60
  }
53
- }), A = ["aria-label"], j = { class: "tpl:flex tpl:max-h-[80%] tpl:w-full tpl:max-w-md tpl:flex-col tpl:gap-4 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-5 tpl:shadow-[var(--tpl-shadow-md)]" }, M = { class: "tpl:flex tpl:items-center tpl:gap-2" }, N = { class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]" }, P = { class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]" }, F = { class: "tpl:m-0 tpl:flex tpl:max-h-64 tpl:list-none tpl:flex-col tpl:gap-1.5 tpl:overflow-y-auto tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-2" }, I = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, L = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, R = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, z = /* @__PURE__ */ p({
61
+ }), P = {
62
+ role: "alertdialog",
63
+ "aria-modal": "true",
64
+ "aria-labelledby": "tpl-save-gate-title",
65
+ "aria-describedby": "tpl-save-gate-body",
66
+ "data-testid": "cloud-save-gate-dialog",
67
+ class: "tpl:flex tpl:max-h-[80%] tpl:w-full tpl:max-w-md tpl:flex-col tpl:gap-4 tpl:overflow-y-auto tpl:rounded-[var(--tpl-radius-lg)] tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-5 tpl:shadow-[var(--tpl-shadow-lg)]"
68
+ }, F = { class: "tpl:flex tpl:items-center tpl:gap-2" }, I = {
69
+ id: "tpl-save-gate-title",
70
+ class: "tpl:m-0 tpl:text-base tpl:font-semibold tpl:text-[var(--tpl-text)]"
71
+ }, L = {
72
+ id: "tpl-save-gate-body",
73
+ class: "tpl:m-0 tpl:text-sm tpl:text-[var(--tpl-text-muted)]"
74
+ }, R = { class: "tpl:m-0 tpl:flex tpl:max-h-64 tpl:list-none tpl:flex-col tpl:gap-1.5 tpl:overflow-y-auto tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:p-2" }, z = { class: "tpl:text-xs tpl:text-[var(--tpl-text)]" }, B = { class: "tpl:font-mono tpl:text-[10px] tpl:text-[var(--tpl-text-dim)]" }, V = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, H = /* @__PURE__ */ m({
54
75
  __name: "CloudSaveGateModal",
55
76
  props: {
56
77
  open: { type: Boolean },
57
78
  issues: {}
58
79
  },
59
80
  emits: ["cancel", "confirm"],
60
- setup(r, { emit: u }) {
61
- let p = u, { t: g } = y();
62
- return (u, _) => (e(), l(h, {
63
- "enter-active-class": "tpl:transition-opacity",
64
- "leave-active-class": "tpl:transition-opacity",
65
- "enter-from-class": "tpl:opacity-0",
66
- "leave-to-class": "tpl:opacity-0"
81
+ setup(r, { emit: d }) {
82
+ let p = d, { t: m } = y();
83
+ return (d, h) => (e(), u(C, {
84
+ visible: r.open,
85
+ onClose: h[2] ||= (e) => p("cancel")
67
86
  }, {
68
- default: t(() => [r.open ? (e(), o("div", {
69
- key: 0,
70
- role: "dialog",
71
- "aria-modal": "true",
72
- "aria-label": i(g).saveGate.title,
73
- class: "tpl:fixed tpl:inset-0 tpl:z-50 tpl:flex tpl:items-center tpl:justify-center tpl:bg-black/40 tpl:p-6",
74
- onClick: _[2] ||= m((e) => p("cancel"), ["self"])
75
- }, [a("div", j, [
76
- a("header", M, [s(i(v), {
87
+ default: t(() => [a("div", P, [
88
+ a("header", F, [s(i(v), {
77
89
  size: 18,
78
90
  "stroke-width": 2,
79
91
  class: "tpl:text-[var(--tpl-warning)]"
80
- }), a("h2", N, c(i(g).saveGate.title), 1)]),
81
- a("p", P, c(i(g).saveGate.body), 1),
82
- a("ul", F, [(e(!0), o(d, null, n(r.issues, (t) => (e(), o("li", {
92
+ }), a("h2", I, c(i(m).saveGate.title), 1)]),
93
+ a("p", L, c(i(m).saveGate.body), 1),
94
+ a("ul", R, [(e(!0), o(f, null, n(r.issues, (t) => (e(), o("li", {
83
95
  key: `${t.ruleId}-${t.blockId ?? "template"}`,
84
96
  class: "tpl:flex tpl:flex-col tpl:gap-0.5 tpl:rounded tpl:px-2 tpl:py-1.5"
85
- }, [a("span", I, c(t.message), 1), a("span", L, c(t.ruleId), 1)]))), 128))]),
86
- a("footer", R, [a("button", {
97
+ }, [a("span", z, c(t.message), 1), a("span", B, c(t.ruleId), 1)]))), 128))]),
98
+ a("footer", V, [a("button", {
87
99
  type: "button",
88
- class: "tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)]",
89
- onClick: _[0] ||= (e) => p("cancel")
90
- }, c(i(g).saveGate.cancel), 1), a("button", {
100
+ "data-testid": "cloud-save-gate-cancel",
101
+ class: l(i(S)),
102
+ onClick: h[0] ||= (e) => p("cancel")
103
+ }, c(i(m).saveGate.cancel), 3), a("button", {
91
104
  type: "button",
92
- class: "tpl:rounded-md tpl:bg-[var(--tpl-danger)] tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-bg)]",
93
- onClick: _[1] ||= (e) => p("confirm")
94
- }, c(i(g).saveGate.confirm), 1)])
95
- ])], 8, A)) : f("", !0)]),
105
+ "data-testid": "cloud-save-gate-confirm",
106
+ class: l(i(b)),
107
+ onClick: h[1] ||= (e) => p("confirm")
108
+ }, c(i(m).saveGate.confirm), 3)])
109
+ ])]),
96
110
  _: 1
97
- }));
111
+ }, 8, ["visible"]));
98
112
  }
99
- }), B = {
113
+ }), U = {
100
114
  key: 0,
101
115
  role: "status",
102
116
  "aria-live": "polite",
@@ -106,14 +120,14 @@ var b = {
106
120
  color: "var(--tpl-text)",
107
121
  border: "1px solid var(--tpl-warning)"
108
122
  }
109
- }, V = /* @__PURE__ */ p({
123
+ }, W = /* @__PURE__ */ m({
110
124
  __name: "CollabUndoToast",
111
125
  props: { visible: { type: Boolean } },
112
126
  setup(t) {
113
127
  let { t: n } = g();
114
- return (r, a) => t.visible ? (e(), o("div", B, c(i(n).history.collabWarning), 1)) : f("", !0);
128
+ return (r, a) => t.visible ? (e(), o("div", U, c(i(n).history.collabWarning), 1)) : p("", !0);
115
129
  }
116
- }), H = /* @__PURE__ */ p({
130
+ }), G = /* @__PURE__ */ m({
117
131
  __name: "CloudPanels",
118
132
  props: {
119
133
  editor: {},
@@ -123,11 +137,11 @@ var b = {
123
137
  ready: {}
124
138
  },
125
139
  setup(n) {
126
- let a = r(() => import("./AiChatSidebar-pOxCZWz9.js")), c = r(() => import("./DesignReferenceSidebar-QC4gEUWp.js")), l = r(() => import("./TemplateScoringPanel-C2Rdlyn6.js")), u = n;
127
- function f(e) {
140
+ let a = r(() => import("./AiChatSidebar-5qqrS6uy.js")), c = r(() => import("./DesignReferenceSidebar-C8ohNhOd.js")), l = r(() => import("./TemplateScoringPanel-B1wcfE0w.js")), u = n;
141
+ function d(e) {
128
142
  u.core.history.record(), u.editor.setContent(e), u.core.conditionPreview.reset();
129
143
  }
130
- return (r, u) => (e(), o(d, null, [
144
+ return (r, u) => (e(), o(f, null, [
131
145
  s(h, {
132
146
  "enter-active-class": "tpl:transition-opacity tpl:duration-200",
133
147
  "enter-from-class": "tpl:opacity-100",
@@ -136,7 +150,7 @@ var b = {
136
150
  "leave-from-class": "tpl:opacity-100",
137
151
  "leave-to-class": "tpl:opacity-0"
138
152
  }, {
139
- default: t(() => [s(k, { visible: n.editor.state.isLoading }, null, 8, ["visible"])]),
153
+ default: t(() => [s(N, { visible: n.editor.state.isLoading }, null, 8, ["visible"])]),
140
154
  _: 1
141
155
  }),
142
156
  s(h, {
@@ -147,7 +161,7 @@ var b = {
147
161
  "leave-from-class": "tpl:opacity-100",
148
162
  "leave-to-class": "tpl:opacity-0"
149
163
  }, {
150
- default: t(() => [s(T, {
164
+ default: t(() => [s(k, {
151
165
  error: n.ready.sessionError.value,
152
166
  visible: !!n.ready.sessionError.value,
153
167
  onRetry: n.ready.retry
@@ -158,7 +172,7 @@ var b = {
158
172
  ])]),
159
173
  _: 1
160
174
  }),
161
- s(z, {
175
+ s(H, {
162
176
  open: n.ready.saveGate.modalOpen.value,
163
177
  issues: n.ready.saveGate.blockingIssues.value,
164
178
  onCancel: n.ready.saveGate.cancel,
@@ -177,12 +191,12 @@ var b = {
177
191
  "leave-from-class": "tpl:translate-y-0 tpl:opacity-100",
178
192
  "leave-to-class": "tpl:translate-y-[-8px] tpl:opacity-0"
179
193
  }, {
180
- default: t(() => [s(V, { visible: n.ready.collabWarning.collabUndoWarningVisible.value }, null, 8, ["visible"])]),
194
+ default: t(() => [s(W, { visible: n.ready.collabWarning.collabUndoWarningVisible.value }, null, 8, ["visible"])]),
181
195
  _: 1
182
196
  }),
183
197
  s(i(a), {
184
198
  visible: n.cloud.panelState.aiChatOpen.value,
185
- "on-apply": f,
199
+ "on-apply": d,
186
200
  onClose: u[0] ||= (e) => n.cloud.panelState.aiChatOpen.value = !1
187
201
  }, null, 8, ["visible"]),
188
202
  s(i(l), {
@@ -193,10 +207,10 @@ var b = {
193
207
  visible: n.cloud.panelState.designReferenceOpen.value,
194
208
  "has-existing-blocks": n.editor.content.value.blocks.length > 0,
195
209
  onClose: u[2] ||= (e) => n.cloud.panelState.designReferenceOpen.value = !1,
196
- onApply: f
210
+ onApply: d
197
211
  }, null, 8, ["visible", "has-existing-blocks"])
198
212
  ], 64));
199
213
  }
200
214
  });
201
215
  //#endregion
202
- export { H as default };
216
+ export { G as default };
@@ -1,5 +1,5 @@
1
1
  import { A as e, At as t, M as n, at as r, c as i, d as a, jt as o, l as s, r as c, s as l, u, v as d } from "./vue.runtime.esm-bundler-CyqhBwpY.js";
2
- import "./useEditorCore-C5APBjjV.js";
2
+ import "./useEditorCore-BUVbQgwb.js";
3
3
  import { t as f } from "./createLucideIcon-BxY5yz5u.js";
4
4
  import { n as p } from "./useCloudI18n-D1iedlP3.js";
5
5
  import { t as m } from "./readableTextColor-f8Kykfnh.js";
@@ -73,7 +73,7 @@ var h = f({
73
73
  return t.length >= 2 ? (t[0].charAt(0) + t[t.length - 1].charAt(0)).toUpperCase() : e.charAt(0).toUpperCase();
74
74
  }
75
75
  return (l, f) => (e(), a("div", _, [i("div", {
76
- class: "tpl:flex tpl:items-center tpl:gap-1 tpl:text-[11px]",
76
+ class: "tpl:flex tpl:items-center tpl:gap-1 tpl:text-xs",
77
77
  style: t({ color: d.isConnected ? "var(--tpl-success)" : "var(--tpl-text-muted)" }),
78
78
  title: d.isConnected ? r(C).collaboration.connected : r(C).collaboration.disconnected
79
79
  }, [d.isConnected ? (e(), s(r(g), {
@@ -94,7 +94,7 @@ var h = f({
94
94
  title: n.name
95
95
  }, o(O(n.name)), 13, b))), 128)), E.value > 0 ? (e(), a("div", {
96
96
  key: 0,
97
- class: "tpl:relative tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-2 tpl:text-[9px] tpl:font-bold tpl:border-[var(--tpl-bg)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
97
+ class: "tpl:relative tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded-full tpl:border-2 tpl:text-[10px] tpl:font-bold tpl:border-[var(--tpl-bg)] tpl:bg-[var(--tpl-bg-hover)] tpl:text-[var(--tpl-text-muted)]",
98
98
  title: D.value
99
99
  }, " +" + o(E.value), 9, x)) : u("", !0)])) : u("", !0)]));
100
100
  }
@@ -5,7 +5,7 @@ var o = /* @__PURE__ */ a({
5
5
  __name: "CommentsPanel",
6
6
  props: { feature: {} },
7
7
  setup(a) {
8
- let o = t(() => import("./CommentsSidebar-VmwjU9va.js"));
8
+ let o = t(() => import("./CommentsSidebar-DDO0Qx8U.js"));
9
9
  return (t, s) => a.feature.isOpen.value ? (e(), r(n(o), {
10
10
  key: 0,
11
11
  visible: a.feature.isOpen.value,