@prenta/admin 0.98.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/AdminRoot.d.ts.map +1 -1
  3. package/dist/AdminRoot.js +22 -84
  4. package/dist/AdminRoot.js.map +1 -1
  5. package/dist/__tests__/components/breakpoint-controls.render.test.js +4 -4
  6. package/dist/__tests__/components/breakpoint-controls.render.test.js.map +1 -1
  7. package/dist/__tests__/components/seo-score-bands.test.js +0 -3
  8. package/dist/__tests__/components/seo-score-bands.test.js.map +1 -1
  9. package/dist/__tests__/layout/sidebar-posts.test.js +6 -11
  10. package/dist/__tests__/layout/sidebar-posts.test.js.map +1 -1
  11. package/dist/__tests__/layout/sidebar-submenu.render.test.js +3 -2
  12. package/dist/__tests__/layout/sidebar-submenu.render.test.js.map +1 -1
  13. package/dist/__tests__/lib/open-public-site-tab.test.d.ts +2 -0
  14. package/dist/__tests__/lib/open-public-site-tab.test.d.ts.map +1 -0
  15. package/dist/__tests__/lib/open-public-site-tab.test.js +64 -0
  16. package/dist/__tests__/lib/open-public-site-tab.test.js.map +1 -0
  17. package/dist/__tests__/lib/page-editor-service-api.test.js +26 -23
  18. package/dist/__tests__/lib/page-editor-service-api.test.js.map +1 -1
  19. package/dist/__tests__/lib/view-site-chrome.test.d.ts +2 -0
  20. package/dist/__tests__/lib/view-site-chrome.test.d.ts.map +1 -0
  21. package/dist/__tests__/lib/view-site-chrome.test.js +59 -0
  22. package/dist/__tests__/lib/view-site-chrome.test.js.map +1 -0
  23. package/dist/__tests__/router/admin-routes.test.js +4 -0
  24. package/dist/__tests__/router/admin-routes.test.js.map +1 -1
  25. package/dist/__tests__/views/canvas-surface-shared.test.js +0 -16
  26. package/dist/__tests__/views/canvas-surface-shared.test.js.map +1 -1
  27. package/dist/__tests__/views/editor-top-bar.render.test.js +44 -22
  28. package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
  29. package/dist/__tests__/views/page-section-editor.test.js +30 -10
  30. package/dist/__tests__/views/page-section-editor.test.js.map +1 -1
  31. package/dist/__tests__/views/page-tab.render.test.js +0 -1
  32. package/dist/__tests__/views/page-tab.render.test.js.map +1 -1
  33. package/dist/__tests__/views/post-section-editor.test.js +23 -0
  34. package/dist/__tests__/views/post-section-editor.test.js.map +1 -1
  35. package/dist/components/BreakpointPicker.d.ts +3 -2
  36. package/dist/components/BreakpointPicker.d.ts.map +1 -1
  37. package/dist/components/BreakpointPicker.js +5 -3
  38. package/dist/components/BreakpointPicker.js.map +1 -1
  39. package/dist/components/CanvasEditTip.js +1 -1
  40. package/dist/components/CanvasEditTip.js.map +1 -1
  41. package/dist/index.d.ts +1 -4
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -3
  44. package/dist/index.js.map +1 -1
  45. package/dist/layout/Sidebar.d.ts +3 -4
  46. package/dist/layout/Sidebar.d.ts.map +1 -1
  47. package/dist/layout/Sidebar.js +7 -38
  48. package/dist/layout/Sidebar.js.map +1 -1
  49. package/dist/lib/editor-preview.d.ts +4 -1
  50. package/dist/lib/editor-preview.d.ts.map +1 -1
  51. package/dist/lib/editor-preview.js +4 -1
  52. package/dist/lib/editor-preview.js.map +1 -1
  53. package/dist/lib/open-public-site-tab.d.ts +14 -0
  54. package/dist/lib/open-public-site-tab.d.ts.map +1 -0
  55. package/dist/lib/open-public-site-tab.js +46 -0
  56. package/dist/lib/open-public-site-tab.js.map +1 -0
  57. package/dist/lib/page-editor-service.d.ts +0 -7
  58. package/dist/lib/page-editor-service.d.ts.map +1 -1
  59. package/dist/lib/page-editor-service.js +9 -9
  60. package/dist/lib/page-editor-service.js.map +1 -1
  61. package/dist/lib/view-site-chrome.d.ts +16 -0
  62. package/dist/lib/view-site-chrome.d.ts.map +1 -0
  63. package/dist/lib/view-site-chrome.js +15 -0
  64. package/dist/lib/view-site-chrome.js.map +1 -0
  65. package/dist/prenta-admin.css +1 -1
  66. package/dist/router/admin-routes.d.ts.map +1 -1
  67. package/dist/router/admin-routes.js +0 -2
  68. package/dist/router/admin-routes.js.map +1 -1
  69. package/dist/views/PageEditor.d.ts +2 -2
  70. package/dist/views/PageEditor.js +2 -2
  71. package/dist/views/page-editor/EditorCanvas.d.ts +1 -2
  72. package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -1
  73. package/dist/views/page-editor/EditorCanvas.js +2 -2
  74. package/dist/views/page-editor/EditorCanvas.js.map +1 -1
  75. package/dist/views/page-editor/EditorTopBar.d.ts +13 -17
  76. package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
  77. package/dist/views/page-editor/EditorTopBar.js +19 -21
  78. package/dist/views/page-editor/EditorTopBar.js.map +1 -1
  79. package/dist/views/page-editor/PageSectionEditor.d.ts +1 -7
  80. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  81. package/dist/views/page-editor/PageSectionEditor.js +38 -110
  82. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  83. package/dist/views/page-editor/StructureNotice.d.ts +2 -5
  84. package/dist/views/page-editor/StructureNotice.d.ts.map +1 -1
  85. package/dist/views/page-editor/StructureNotice.js +6 -10
  86. package/dist/views/page-editor/StructureNotice.js.map +1 -1
  87. package/dist/views/post-editor/PostEditorCanvas.d.ts +1 -3
  88. package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -1
  89. package/dist/views/post-editor/PostEditorCanvas.js +3 -3
  90. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
  91. package/dist/views/post-editor/PostSectionEditor.d.ts +1 -15
  92. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  93. package/dist/views/post-editor/PostSectionEditor.js +30 -88
  94. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  95. package/package.json +3 -3
  96. package/src/AdminRoot.tsx +18 -138
  97. package/src/__tests__/components/breakpoint-controls.render.test.tsx +6 -4
  98. package/src/__tests__/components/seo-score-bands.test.ts +0 -3
  99. package/src/__tests__/layout/sidebar-posts.test.ts +6 -11
  100. package/src/__tests__/layout/sidebar-submenu.render.test.tsx +3 -2
  101. package/src/__tests__/lib/open-public-site-tab.test.ts +74 -0
  102. package/src/__tests__/lib/page-editor-service-api.test.ts +27 -25
  103. package/src/__tests__/lib/view-site-chrome.test.ts +65 -0
  104. package/src/__tests__/router/admin-routes.test.ts +5 -0
  105. package/src/__tests__/views/canvas-surface-shared.test.ts +0 -19
  106. package/src/__tests__/views/editor-top-bar.render.test.tsx +85 -22
  107. package/src/__tests__/views/page-section-editor.test.tsx +42 -10
  108. package/src/__tests__/views/page-tab.render.test.tsx +0 -1
  109. package/src/__tests__/views/post-section-editor.test.tsx +35 -0
  110. package/src/components/BreakpointPicker.tsx +6 -3
  111. package/src/components/CanvasEditTip.tsx +2 -2
  112. package/src/index.ts +1 -11
  113. package/src/layout/Sidebar.tsx +6 -41
  114. package/src/lib/editor-preview.ts +4 -1
  115. package/src/lib/open-public-site-tab.ts +57 -0
  116. package/src/lib/page-editor-service.ts +9 -16
  117. package/src/lib/view-site-chrome.ts +34 -0
  118. package/src/router/admin-routes.ts +0 -2
  119. package/src/styles/theme.css +4 -4
  120. package/src/views/PageEditor.tsx +2 -2
  121. package/src/views/page-editor/EditorCanvas.tsx +1 -6
  122. package/src/views/page-editor/EditorTopBar.tsx +81 -82
  123. package/src/views/page-editor/PageSectionEditor.tsx +85 -194
  124. package/src/views/page-editor/StructureNotice.tsx +7 -42
  125. package/src/views/post-editor/PostEditorCanvas.tsx +2 -8
  126. package/src/views/post-editor/PostSectionEditor.tsx +66 -138
  127. package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts +0 -2
  128. package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts.map +0 -1
  129. package/dist/__tests__/views/page-builder-block-renderer.render.test.js +0 -48
  130. package/dist/__tests__/views/page-builder-block-renderer.render.test.js.map +0 -1
  131. package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts +0 -2
  132. package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts.map +0 -1
  133. package/dist/__tests__/views/page-builder-form-picker.render.test.js +0 -44
  134. package/dist/__tests__/views/page-builder-form-picker.render.test.js.map +0 -1
  135. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts +0 -2
  136. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts.map +0 -1
  137. package/dist/__tests__/views/page-builder-sections-panel.render.test.js +0 -121
  138. package/dist/__tests__/views/page-builder-sections-panel.render.test.js.map +0 -1
  139. package/dist/__tests__/views/page-builder-seo-panel.render.test.d.ts +0 -2
  140. package/dist/__tests__/views/page-builder-seo-panel.render.test.d.ts.map +0 -1
  141. package/dist/__tests__/views/page-builder-seo-panel.render.test.js +0 -65
  142. package/dist/__tests__/views/page-builder-seo-panel.render.test.js.map +0 -1
  143. package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts +0 -2
  144. package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts.map +0 -1
  145. package/dist/__tests__/views/page-builder-template-seed.render.test.js +0 -48
  146. package/dist/__tests__/views/page-builder-template-seed.render.test.js.map +0 -1
  147. package/dist/__tests__/views/page-templates.render.test.d.ts +0 -2
  148. package/dist/__tests__/views/page-templates.render.test.d.ts.map +0 -1
  149. package/dist/__tests__/views/page-templates.render.test.js +0 -126
  150. package/dist/__tests__/views/page-templates.render.test.js.map +0 -1
  151. package/dist/__tests__/views/use-site-preview.render.test.d.ts +0 -2
  152. package/dist/__tests__/views/use-site-preview.render.test.d.ts.map +0 -1
  153. package/dist/__tests__/views/use-site-preview.render.test.js +0 -120
  154. package/dist/__tests__/views/use-site-preview.render.test.js.map +0 -1
  155. package/dist/hooks/useBuilderState.d.ts +0 -49
  156. package/dist/hooks/useBuilderState.d.ts.map +0 -1
  157. package/dist/hooks/useBuilderState.js +0 -238
  158. package/dist/hooks/useBuilderState.js.map +0 -1
  159. package/dist/views/page-builder/AIBlockAssist.d.ts +0 -9
  160. package/dist/views/page-builder/AIBlockAssist.d.ts.map +0 -1
  161. package/dist/views/page-builder/AIBlockAssist.js +0 -40
  162. package/dist/views/page-builder/AIBlockAssist.js.map +0 -1
  163. package/dist/views/page-builder/AIGenerateDialog.d.ts +0 -8
  164. package/dist/views/page-builder/AIGenerateDialog.d.ts.map +0 -1
  165. package/dist/views/page-builder/AIGenerateDialog.js +0 -173
  166. package/dist/views/page-builder/AIGenerateDialog.js.map +0 -1
  167. package/dist/views/page-builder/BlockEditor.d.ts +0 -11
  168. package/dist/views/page-builder/BlockEditor.d.ts.map +0 -1
  169. package/dist/views/page-builder/BlockEditor.js +0 -159
  170. package/dist/views/page-builder/BlockEditor.js.map +0 -1
  171. package/dist/views/page-builder/BlockPicker.d.ts +0 -7
  172. package/dist/views/page-builder/BlockPicker.d.ts.map +0 -1
  173. package/dist/views/page-builder/BlockPicker.js +0 -103
  174. package/dist/views/page-builder/BlockPicker.js.map +0 -1
  175. package/dist/views/page-builder/BottomBar.d.ts +0 -9
  176. package/dist/views/page-builder/BottomBar.d.ts.map +0 -1
  177. package/dist/views/page-builder/BottomBar.js +0 -13
  178. package/dist/views/page-builder/BottomBar.js.map +0 -1
  179. package/dist/views/page-builder/BuilderSectionsPanel.d.ts +0 -20
  180. package/dist/views/page-builder/BuilderSectionsPanel.d.ts.map +0 -1
  181. package/dist/views/page-builder/BuilderSectionsPanel.js +0 -105
  182. package/dist/views/page-builder/BuilderSectionsPanel.js.map +0 -1
  183. package/dist/views/page-builder/BuilderToolbar.d.ts +0 -21
  184. package/dist/views/page-builder/BuilderToolbar.d.ts.map +0 -1
  185. package/dist/views/page-builder/BuilderToolbar.js +0 -18
  186. package/dist/views/page-builder/BuilderToolbar.js.map +0 -1
  187. package/dist/views/page-builder/ContextPanel.d.ts +0 -20
  188. package/dist/views/page-builder/ContextPanel.d.ts.map +0 -1
  189. package/dist/views/page-builder/ContextPanel.js +0 -43
  190. package/dist/views/page-builder/ContextPanel.js.map +0 -1
  191. package/dist/views/page-builder/DesignScore.d.ts +0 -6
  192. package/dist/views/page-builder/DesignScore.d.ts.map +0 -1
  193. package/dist/views/page-builder/DesignScore.js +0 -93
  194. package/dist/views/page-builder/DesignScore.js.map +0 -1
  195. package/dist/views/page-builder/NodeSettings.d.ts +0 -12
  196. package/dist/views/page-builder/NodeSettings.d.ts.map +0 -1
  197. package/dist/views/page-builder/NodeSettings.js +0 -80
  198. package/dist/views/page-builder/NodeSettings.js.map +0 -1
  199. package/dist/views/page-builder/PageBuilder.d.ts +0 -10
  200. package/dist/views/page-builder/PageBuilder.d.ts.map +0 -1
  201. package/dist/views/page-builder/PageBuilder.js +0 -222
  202. package/dist/views/page-builder/PageBuilder.js.map +0 -1
  203. package/dist/views/page-builder/PageSettings.d.ts +0 -7
  204. package/dist/views/page-builder/PageSettings.d.ts.map +0 -1
  205. package/dist/views/page-builder/PageSettings.js +0 -27
  206. package/dist/views/page-builder/PageSettings.js.map +0 -1
  207. package/dist/views/page-builder/PageTemplates.d.ts +0 -5
  208. package/dist/views/page-builder/PageTemplates.d.ts.map +0 -1
  209. package/dist/views/page-builder/PageTemplates.js +0 -146
  210. package/dist/views/page-builder/PageTemplates.js.map +0 -1
  211. package/dist/views/page-builder/RelationshipField.d.ts +0 -15
  212. package/dist/views/page-builder/RelationshipField.d.ts.map +0 -1
  213. package/dist/views/page-builder/RelationshipField.js +0 -65
  214. package/dist/views/page-builder/RelationshipField.js.map +0 -1
  215. package/dist/views/page-builder/SEOPanel.d.ts +0 -9
  216. package/dist/views/page-builder/SEOPanel.d.ts.map +0 -1
  217. package/dist/views/page-builder/SEOPanel.js +0 -38
  218. package/dist/views/page-builder/SEOPanel.js.map +0 -1
  219. package/dist/views/page-builder/SavedSections.d.ts +0 -6
  220. package/dist/views/page-builder/SavedSections.d.ts.map +0 -1
  221. package/dist/views/page-builder/SavedSections.js +0 -141
  222. package/dist/views/page-builder/SavedSections.js.map +0 -1
  223. package/dist/views/page-builder/TemplatePicker.d.ts +0 -7
  224. package/dist/views/page-builder/TemplatePicker.d.ts.map +0 -1
  225. package/dist/views/page-builder/TemplatePicker.js +0 -68
  226. package/dist/views/page-builder/TemplatePicker.js.map +0 -1
  227. package/dist/views/page-builder/Widgets.d.ts +0 -13
  228. package/dist/views/page-builder/Widgets.d.ts.map +0 -1
  229. package/dist/views/page-builder/Widgets.js +0 -15
  230. package/dist/views/page-builder/Widgets.js.map +0 -1
  231. package/dist/views/page-builder/block-renderers/CTAPreview.d.ts +0 -3
  232. package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +0 -1
  233. package/dist/views/page-builder/block-renderers/CTAPreview.js +0 -19
  234. package/dist/views/page-builder/block-renderers/CTAPreview.js.map +0 -1
  235. package/dist/views/page-builder/block-renderers/CardsPreview.d.ts +0 -3
  236. package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +0 -1
  237. package/dist/views/page-builder/block-renderers/CardsPreview.js +0 -22
  238. package/dist/views/page-builder/block-renderers/CardsPreview.js.map +0 -1
  239. package/dist/views/page-builder/block-renderers/CodePreview.d.ts +0 -3
  240. package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +0 -1
  241. package/dist/views/page-builder/block-renderers/CodePreview.js +0 -12
  242. package/dist/views/page-builder/block-renderers/CodePreview.js.map +0 -1
  243. package/dist/views/page-builder/block-renderers/FAQPreview.d.ts +0 -3
  244. package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +0 -1
  245. package/dist/views/page-builder/block-renderers/FAQPreview.js +0 -27
  246. package/dist/views/page-builder/block-renderers/FAQPreview.js.map +0 -1
  247. package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts +0 -6
  248. package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +0 -1
  249. package/dist/views/page-builder/block-renderers/FallbackPreview.js +0 -7
  250. package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +0 -1
  251. package/dist/views/page-builder/block-renderers/FormPreview.d.ts +0 -9
  252. package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +0 -1
  253. package/dist/views/page-builder/block-renderers/FormPreview.js +0 -52
  254. package/dist/views/page-builder/block-renderers/FormPreview.js.map +0 -1
  255. package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts +0 -3
  256. package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +0 -1
  257. package/dist/views/page-builder/block-renderers/GalleryPreview.js +0 -19
  258. package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +0 -1
  259. package/dist/views/page-builder/block-renderers/HeroPreview.d.ts +0 -3
  260. package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +0 -1
  261. package/dist/views/page-builder/block-renderers/HeroPreview.js +0 -19
  262. package/dist/views/page-builder/block-renderers/HeroPreview.js.map +0 -1
  263. package/dist/views/page-builder/block-renderers/ImagePreview.d.ts +0 -3
  264. package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +0 -1
  265. package/dist/views/page-builder/block-renderers/ImagePreview.js +0 -17
  266. package/dist/views/page-builder/block-renderers/ImagePreview.js.map +0 -1
  267. package/dist/views/page-builder/block-renderers/TextPreview.d.ts +0 -3
  268. package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +0 -1
  269. package/dist/views/page-builder/block-renderers/TextPreview.js +0 -22
  270. package/dist/views/page-builder/block-renderers/TextPreview.js.map +0 -1
  271. package/dist/views/page-builder/block-renderers/VideoPreview.d.ts +0 -3
  272. package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +0 -1
  273. package/dist/views/page-builder/block-renderers/VideoPreview.js +0 -18
  274. package/dist/views/page-builder/block-renderers/VideoPreview.js.map +0 -1
  275. package/dist/views/page-builder/block-renderers/index.d.ts +0 -9
  276. package/dist/views/page-builder/block-renderers/index.d.ts.map +0 -1
  277. package/dist/views/page-builder/block-renderers/index.js +0 -25
  278. package/dist/views/page-builder/block-renderers/index.js.map +0 -1
  279. package/dist/views/page-builder/canvas/BlockRenderer.d.ts +0 -8
  280. package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +0 -1
  281. package/dist/views/page-builder/canvas/BlockRenderer.js +0 -20
  282. package/dist/views/page-builder/canvas/BlockRenderer.js.map +0 -1
  283. package/dist/views/page-builder/canvas/BuilderCanvas.d.ts +0 -10
  284. package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +0 -1
  285. package/dist/views/page-builder/canvas/BuilderCanvas.js +0 -26
  286. package/dist/views/page-builder/canvas/BuilderCanvas.js.map +0 -1
  287. package/dist/views/page-builder/canvas/ColumnRenderer.d.ts +0 -8
  288. package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +0 -1
  289. package/dist/views/page-builder/canvas/ColumnRenderer.js +0 -32
  290. package/dist/views/page-builder/canvas/ColumnRenderer.js.map +0 -1
  291. package/dist/views/page-builder/canvas/ContainerRenderer.d.ts +0 -8
  292. package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +0 -1
  293. package/dist/views/page-builder/canvas/ContainerRenderer.js +0 -29
  294. package/dist/views/page-builder/canvas/ContainerRenderer.js.map +0 -1
  295. package/dist/views/page-builder/canvas/RowRenderer.d.ts +0 -8
  296. package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +0 -1
  297. package/dist/views/page-builder/canvas/RowRenderer.js +0 -28
  298. package/dist/views/page-builder/canvas/RowRenderer.js.map +0 -1
  299. package/dist/views/page-builder/canvas/SectionRenderer.d.ts +0 -8
  300. package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +0 -1
  301. package/dist/views/page-builder/canvas/SectionRenderer.js +0 -50
  302. package/dist/views/page-builder/canvas/SectionRenderer.js.map +0 -1
  303. package/dist/views/page-builder/canvas/index.d.ts +0 -3
  304. package/dist/views/page-builder/canvas/index.d.ts.map +0 -1
  305. package/dist/views/page-builder/canvas/index.js +0 -2
  306. package/dist/views/page-builder/canvas/index.js.map +0 -1
  307. package/dist/views/page-editor/PagePreview.d.ts +0 -13
  308. package/dist/views/page-editor/PagePreview.d.ts.map +0 -1
  309. package/dist/views/page-editor/PagePreview.js +0 -46
  310. package/dist/views/page-editor/PagePreview.js.map +0 -1
  311. package/dist/views/page-editor/SitePreviewFrame.d.ts +0 -43
  312. package/dist/views/page-editor/SitePreviewFrame.d.ts.map +0 -1
  313. package/dist/views/page-editor/SitePreviewFrame.js +0 -165
  314. package/dist/views/page-editor/SitePreviewFrame.js.map +0 -1
  315. package/dist/views/page-editor/useSitePreview.d.ts +0 -47
  316. package/dist/views/page-editor/useSitePreview.d.ts.map +0 -1
  317. package/dist/views/page-editor/useSitePreview.js +0 -96
  318. package/dist/views/page-editor/useSitePreview.js.map +0 -1
  319. package/dist/views/post-editor/PostPreview.d.ts +0 -14
  320. package/dist/views/post-editor/PostPreview.d.ts.map +0 -1
  321. package/dist/views/post-editor/PostPreview.js +0 -63
  322. package/dist/views/post-editor/PostPreview.js.map +0 -1
  323. package/src/__tests__/views/page-builder-block-renderer.render.test.tsx +0 -66
  324. package/src/__tests__/views/page-builder-form-picker.render.test.tsx +0 -54
  325. package/src/__tests__/views/page-builder-sections-panel.render.test.tsx +0 -138
  326. package/src/__tests__/views/page-builder-seo-panel.render.test.tsx +0 -77
  327. package/src/__tests__/views/page-builder-template-seed.render.test.tsx +0 -59
  328. package/src/__tests__/views/page-templates.render.test.tsx +0 -182
  329. package/src/__tests__/views/use-site-preview.render.test.tsx +0 -164
  330. package/src/hooks/useBuilderState.ts +0 -361
  331. package/src/views/page-builder/AIBlockAssist.tsx +0 -64
  332. package/src/views/page-builder/AIGenerateDialog.tsx +0 -593
  333. package/src/views/page-builder/BlockEditor.tsx +0 -523
  334. package/src/views/page-builder/BlockPicker.tsx +0 -324
  335. package/src/views/page-builder/BottomBar.tsx +0 -65
  336. package/src/views/page-builder/BuilderSectionsPanel.tsx +0 -304
  337. package/src/views/page-builder/BuilderToolbar.tsx +0 -221
  338. package/src/views/page-builder/ContextPanel.tsx +0 -144
  339. package/src/views/page-builder/DesignScore.tsx +0 -251
  340. package/src/views/page-builder/NodeSettings.tsx +0 -500
  341. package/src/views/page-builder/PageBuilder.tsx +0 -405
  342. package/src/views/page-builder/PageSettings.tsx +0 -162
  343. package/src/views/page-builder/PageTemplates.tsx +0 -435
  344. package/src/views/page-builder/RelationshipField.tsx +0 -113
  345. package/src/views/page-builder/SEOPanel.tsx +0 -222
  346. package/src/views/page-builder/SavedSections.tsx +0 -480
  347. package/src/views/page-builder/TemplatePicker.tsx +0 -197
  348. package/src/views/page-builder/Widgets.tsx +0 -44
  349. package/src/views/page-builder/block-renderers/CTAPreview.tsx +0 -79
  350. package/src/views/page-builder/block-renderers/CardsPreview.tsx +0 -69
  351. package/src/views/page-builder/block-renderers/CodePreview.tsx +0 -46
  352. package/src/views/page-builder/block-renderers/FAQPreview.tsx +0 -87
  353. package/src/views/page-builder/block-renderers/FallbackPreview.tsx +0 -18
  354. package/src/views/page-builder/block-renderers/FormPreview.tsx +0 -117
  355. package/src/views/page-builder/block-renderers/GalleryPreview.tsx +0 -87
  356. package/src/views/page-builder/block-renderers/HeroPreview.tsx +0 -90
  357. package/src/views/page-builder/block-renderers/ImagePreview.tsx +0 -54
  358. package/src/views/page-builder/block-renderers/TextPreview.tsx +0 -81
  359. package/src/views/page-builder/block-renderers/VideoPreview.tsx +0 -73
  360. package/src/views/page-builder/block-renderers/index.ts +0 -34
  361. package/src/views/page-builder/canvas/BlockRenderer.tsx +0 -56
  362. package/src/views/page-builder/canvas/BuilderCanvas.tsx +0 -87
  363. package/src/views/page-builder/canvas/ColumnRenderer.tsx +0 -82
  364. package/src/views/page-builder/canvas/ContainerRenderer.tsx +0 -67
  365. package/src/views/page-builder/canvas/RowRenderer.tsx +0 -68
  366. package/src/views/page-builder/canvas/SectionRenderer.tsx +0 -93
  367. package/src/views/page-builder/canvas/index.ts +0 -2
  368. package/src/views/page-editor/PagePreview.tsx +0 -105
  369. package/src/views/page-editor/SitePreviewFrame.tsx +0 -250
  370. package/src/views/page-editor/useSitePreview.ts +0 -158
  371. package/src/views/post-editor/PostPreview.tsx +0 -125
@@ -32,6 +32,8 @@ import {
32
32
  updateSectionMeta,
33
33
  coerceSections as coerceSectionsCore,
34
34
  validateSectionContent,
35
+ isPageBuilderTree,
36
+ layoutTreeToSections,
35
37
  type PageSection,
36
38
  } from '@prenta/core/page-sections'
37
39
  import { validateSlug } from '@prenta/core/client'
@@ -91,13 +93,6 @@ export interface EditorPage {
91
93
  authorName: string
92
94
  /** CMS user behind the byline, when it is one. Empty for generic/guest. */
93
95
  authorId: string
94
- /**
95
- * True when the document was authored in the visual Page Builder (it carries
96
- * a `_layout` tree). Such a page's `sections` are *compiled* from the layout
97
- * on every save (ADR 0002), so the flat editor opens it read-only and points
98
- * the user to the Page Builder instead of silently fighting the next save.
99
- */
100
- builderOwned: boolean
101
96
  }
102
97
 
103
98
  export interface ValidationResult {
@@ -196,20 +191,20 @@ interface DocumentApiRow {
196
191
  scheduledUnpublishAt?: string | null
197
192
  updatedAt: string | null
198
193
  data: Record<string, unknown> | null
199
- /** The page-builder tree, lifted out of `data` onto the wire envelope by the API. */
194
+ /** Lifted leftover page-builder tree from `getDocument` (ADR 0003). */
200
195
  layout?: unknown
201
196
  }
202
197
 
203
- function isPlainObject(v: unknown): v is Record<string, unknown> {
204
- return !!v && typeof v === 'object' && !Array.isArray(v)
198
+ function sectionsFromDocumentRow(doc: DocumentApiRow): PageSection[] {
199
+ const stored = coerceSectionsCore(doc.data?.sections, { onUnknown: 'preserve' })
200
+ if (stored.length > 0) return stored
201
+ if (isPageBuilderTree(doc.layout)) return layoutTreeToSections(doc.layout)
202
+ return stored
205
203
  }
206
204
 
207
205
  function rowToEditorPage(doc: DocumentApiRow): EditorPage {
208
206
  const data = doc.data ?? {}
209
207
  const slug = doc.slug ?? ''
210
- // The API lifts the stored `_layout` onto `doc.layout`, but tolerate either
211
- // shape so ownership detection is robust to response variations.
212
- const builderOwned = isPlainObject(doc.layout) || isPlainObject(data._layout)
213
208
  return {
214
209
  id: doc.id,
215
210
  title: doc.title ?? '',
@@ -220,7 +215,7 @@ function rowToEditorPage(doc: DocumentApiRow): EditorPage {
220
215
  typeof data.parentPageId === 'string' && data.parentPageId ? data.parentPageId : null,
221
216
  // Preserve unknown (externally-managed) sections so the editor can show
222
217
  // them read-only and round-trip them on save instead of dropping them.
223
- sections: coerceSectionsCore(data.sections, { onUnknown: 'preserve' }),
218
+ sections: sectionsFromDocumentRow(doc),
224
219
  seoTitle: typeof data.metaTitle === 'string' ? data.metaTitle : '',
225
220
  seoDescription: typeof data.metaDescription === 'string' ? data.metaDescription : '',
226
221
  publishedAt: doc.publishedAt ?? null,
@@ -229,7 +224,6 @@ function rowToEditorPage(doc: DocumentApiRow): EditorPage {
229
224
  scheduledUnpublishAt: doc.scheduledUnpublishAt ?? null,
230
225
  authorName: typeof data.authorName === 'string' ? data.authorName : '',
231
226
  authorId: typeof data.authorId === 'string' ? data.authorId : '',
232
- builderOwned,
233
227
  }
234
228
  }
235
229
 
@@ -330,6 +324,5 @@ export function emptyPage(parentPageId: string | null = null): EditorPage {
330
324
  scheduledUnpublishAt: null,
331
325
  authorName: '',
332
326
  authorId: '',
333
- builderOwned: false,
334
327
  }
335
328
  }
@@ -0,0 +1,34 @@
1
+ import type { PageStatus } from './page-editor-service.js'
2
+
3
+ export type ViewSiteIntent = 'preview-draft' | 'view-live'
4
+
5
+ export const NO_PUBLIC_SITE_URL_REASON =
6
+ 'Set the public site URL in Settings → SEO to open the live design.'
7
+
8
+ export function resolveViewSiteChrome(input: {
9
+ status: PageStatus
10
+ dirty: boolean
11
+ hasPublicSiteUrl: boolean
12
+ hasIdentity: boolean
13
+ }): {
14
+ viewEnabled: boolean
15
+ viewDisabledReason?: string
16
+ primaryIntent: ViewSiteIntent
17
+ showViewLive: boolean
18
+ shareVisible: boolean
19
+ } {
20
+ const unpublished = input.status !== 'PUBLISHED' || input.dirty
21
+ const primaryIntent: ViewSiteIntent =
22
+ input.status === 'PUBLISHED' && !input.dirty ? 'view-live' : 'preview-draft'
23
+ const shareVisible = input.hasIdentity && unpublished
24
+ const viewEnabled = input.hasIdentity && input.hasPublicSiteUrl
25
+
26
+ return {
27
+ viewEnabled,
28
+ viewDisabledReason:
29
+ input.hasIdentity && !input.hasPublicSiteUrl ? NO_PUBLIC_SITE_URL_REASON : undefined,
30
+ primaryIntent,
31
+ showViewLive: input.hasIdentity && input.status === 'PUBLISHED' && input.dirty,
32
+ shareVisible,
33
+ }
34
+ }
@@ -40,14 +40,12 @@ export const ADMIN_STATIC_ROUTE_PATTERNS: readonly string[] = [
40
40
  '/pages',
41
41
  '/pages/:id',
42
42
  '/pages/:id/edit',
43
- '/pages/:id/preview',
44
43
  '/pages/new',
45
44
  '/pages/tags',
46
45
  '/pages/tags/:id/edit',
47
46
  '/pages/tags/new',
48
47
  '/posts',
49
48
  '/posts/:type/:id/edit',
50
- '/posts/:type/:id/preview',
51
49
  '/posts/:type/new',
52
50
  '/posts/new',
53
51
  '/posts/types',
@@ -174,8 +174,8 @@
174
174
  * `views/page-editor/sections/` must use `@pv-*`, never `sm:`/`md:`/`lg:`.
175
175
  *
176
176
  * Values come from the page-builder design handoff. Any element carrying
177
- * these variants needs an ancestor with `@container` — EditorCanvas,
178
- * PostEditorCanvas, PagePreview and PostPreview all declare it.
177
+ * these variants needs an ancestor with `@container` — EditorCanvas
178
+ * and PostEditorCanvas both declare it.
179
179
  */
180
180
  @theme {
181
181
  --container-pv-sm: 460px; /* below: stats 1-up, buttons full width */
@@ -281,8 +281,8 @@
281
281
  /*
282
282
  * The canvas is the query container for every previewed section (`@pv-*`
283
283
  * variants — see the step scale above). It lives here rather than as an
284
- * `@container` utility on each host because FOUR surfaces render these
285
- * sections — EditorCanvas, PostEditorCanvas, PagePreview, PostPreview — and
284
+ * `@container` utility on each host because TWO surfaces render these
285
+ * sections — EditorCanvas and PostEditorCanvas — and
286
286
  * a host that forgets it degrades silently: with no container ancestor,
287
287
  * every `@pv-*` variant simply never matches and the page renders at its
288
288
  * narrowest layout regardless of the selected breakpoint. Tying containment
@@ -13,8 +13,8 @@ export interface PageEditorProps {
13
13
  }
14
14
 
15
15
  /**
16
- * @deprecated Superseded by the visual page builder (`PageBuilder` and the
17
- * `views/page-editor/` section editor); will be removed in the next major.
16
+ * @deprecated Superseded by the section editor (`PageSectionEditor`); will be
17
+ * removed in the next major.
18
18
  */
19
19
  export function PageEditor({ id, onNavigate }: PageEditorProps) {
20
20
  const isNew = !id
@@ -18,7 +18,6 @@ interface EditorCanvasProps {
18
18
  onCanvasElement?: (el: HTMLElement | null) => void
19
19
  /** Section types rendered as placeholders — shows the "Structure view" notice. */
20
20
  structuralTypes?: string[]
21
- sitePreviewAvailable?: boolean
22
21
  /**
23
22
  * Read-only render of a past version. Suppresses selection and the editing
24
23
  * affordances, and turns on the changed-section outlines.
@@ -50,7 +49,6 @@ export function EditorCanvas({
50
49
  onScaleChange,
51
50
  onCanvasElement,
52
51
  structuralTypes = [],
53
- sitePreviewAvailable = false,
54
52
  reviewing = false,
55
53
  changedSectionIds,
56
54
  reviewBar,
@@ -84,10 +82,7 @@ export function EditorCanvas({
84
82
  ) : (
85
83
  <>
86
84
  <CanvasEditTip />
87
- <StructureNotice
88
- structuralTypes={structuralTypes}
89
- sitePreviewAvailable={sitePreviewAvailable}
90
- />
85
+ <StructureNotice structuralTypes={structuralTypes} />
91
86
  </>
92
87
  )
93
88
  }
@@ -1,21 +1,24 @@
1
1
  'use client'
2
2
 
3
+ import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
3
4
  import {
4
5
  Calendar,
5
6
  Check,
7
+ ChevronDown,
6
8
  ExternalLink,
7
- Eye,
8
- Globe,
9
9
  History,
10
10
  Loader2,
11
11
  Settings2,
12
+ Share2,
12
13
  TriangleAlert,
13
14
  } from 'lucide-react'
14
15
  import { EditorSeoScoreBadge } from '../../components/seo/EditorSeoScoreBadge.js'
15
16
  import { BreakpointPicker } from '../../components/BreakpointPicker.js'
16
17
  import { ZoomChip } from '../../components/ZoomChip.js'
18
+ import { adminPortalContainer } from '../../lib/portal-container.js'
17
19
  import type { PageStatus } from '../../lib/page-editor-service.js'
18
20
  import type { Zoom } from '../../lib/breakpoints.js'
21
+ import { resolveViewSiteChrome, type ViewSiteIntent } from '../../lib/view-site-chrome.js'
19
22
  import { type ViewportId } from './viewports.js'
20
23
 
21
24
  export type SaveState = 'idle' | 'saving' | 'saved' | 'error'
@@ -33,7 +36,7 @@ interface EditorTopBarProps {
33
36
  /** Shown on hover/focus when publish is blocked by validation (not role). */
34
37
  publishDisabledReason?: string
35
38
  viewport: ViewportId
36
- /** Canvas zoom mode; omit to hide the zoom chip (e.g. the site-preview iframe). */
39
+ /** Canvas zoom mode; omit to hide the zoom chip. */
37
40
  zoom?: Zoom
38
41
  /** Scale the canvas actually measured, 0–1 — displayed by the zoom chip. */
39
42
  canvasScale?: number
@@ -42,13 +45,16 @@ interface EditorTopBarProps {
42
45
  backLabel?: string
43
46
  onViewport: (v: ViewportId) => void
44
47
  onBack: () => void
45
- onPreview: () => void
46
48
  /**
47
- * Open the draft on the public site (real front-end) in a new tab. When
48
- * omitted the "View on site" button is hidden — e.g. for unsaved documents
49
- * or installs without a public URL.
49
+ * Open the public site in a new tab. Called with `preview-draft` or
50
+ * `view-live` depending on status and dirty. Omitted for unsaved documents
51
+ * (no id/slug yet) View site / Share / View live are then hidden.
50
52
  */
51
- onViewOnSite?: () => void
53
+ onViewOnSite?: (intent: ViewSiteIntent) => void
54
+ /** Copy a shareable draft preview link. Hidden when `shareVisible` is false. */
55
+ onShare?: () => void
56
+ /** When false, View site and Share are disabled with the SEO settings reason. */
57
+ hasPublicSiteUrl?: boolean
52
58
  /**
53
59
  * Toggle the version history panel. When omitted the History button is
54
60
  * hidden — e.g. for unsaved documents that have no versions yet.
@@ -60,13 +66,6 @@ interface EditorTopBarProps {
60
66
  * is nothing in the chrome saying which mode the editor is in.
61
67
  */
62
68
  historyOpen?: boolean
63
- /** Whether the inline site preview (iframe of the public site) is showing. */
64
- sitePreview?: boolean
65
- /**
66
- * Toggle the inline site preview — renders the draft through the consumer's
67
- * real public route inside the editor. Hidden when omitted (unsaved docs).
68
- */
69
- onToggleSitePreview?: () => void
70
69
  onOpenSettings: () => void
71
70
  /** Open the document SEO panel (meta, social, schema, analysis). */
72
71
  onOpenSeo?: () => void
@@ -90,9 +89,8 @@ interface EditorTopBarProps {
90
89
  scheduledUnpublishAt?: string | null
91
90
  /**
92
91
  * Section types the canvas renders as placeholders (custom / unmanaged).
93
- * When non-empty the editor is in "structure" mode: the eye preview is
94
- * labeled as a structure preview and "View on site" is promoted to a
95
- * labeled button as the primary design preview.
92
+ * Used for structure notice / other chrome. View site is always a labeled
93
+ * button regardless of this list.
96
94
  */
97
95
  structuralTypes?: string[]
98
96
  }
@@ -121,12 +119,11 @@ export function EditorTopBar({
121
119
  backLabel = 'Pages',
122
120
  onViewport,
123
121
  onBack,
124
- onPreview,
125
122
  onViewOnSite,
123
+ onShare,
124
+ hasPublicSiteUrl,
126
125
  onHistory,
127
126
  historyOpen = false,
128
- sitePreview = false,
129
- onToggleSitePreview,
130
127
  onOpenSettings,
131
128
  onOpenSeo,
132
129
  seoOpen = false,
@@ -138,19 +135,16 @@ export function EditorTopBar({
138
135
  scheduleReady = true,
139
136
  scheduledAt = null,
140
137
  scheduledUnpublishAt = null,
141
- structuralTypes = [],
142
138
  }: EditorTopBarProps) {
143
139
  const statusInfo = STATUS_TEXT[status]
144
- // With custom section types on the page the canvas (and the eye preview,
145
- // which reuses the admin renderers) only shows structure — the real design
146
- // preview is the public site, so promote "View on site" to a labeled button.
147
- const structural = structuralTypes.length > 0
148
- const previewLabel = structural
149
- ? 'Preview structure (custom sections show placeholders)'
150
- : 'Preview page'
151
- // For a published document the external-link button opens the LIVE page (no
152
- // preview token); otherwise it opens a token-gated preview of the draft.
153
- const isLive = status === 'PUBLISHED'
140
+ const chrome = onViewOnSite
141
+ ? resolveViewSiteChrome({
142
+ status,
143
+ dirty,
144
+ hasPublicSiteUrl: Boolean(hasPublicSiteUrl),
145
+ hasIdentity: true,
146
+ })
147
+ : null
154
148
 
155
149
  const publishBlocked = !canPublish || !publishReady || publishing || saveState === 'saving'
156
150
  const publishTitle = publishing
@@ -281,63 +275,68 @@ export function EditorTopBar({
281
275
  </button>
282
276
  )}
283
277
 
284
- <button
285
- type="button"
286
- onClick={onPreview}
287
- aria-label={previewLabel}
288
- title={previewLabel}
289
- className="prenta-touch-target text-muted-foreground hover:text-foreground hover:bg-accent rounded-lg p-2"
290
- >
291
- <Eye className="h-4 w-4" aria-hidden />
292
- </button>
293
-
294
- {onToggleSitePreview && (
295
- <button
296
- type="button"
297
- onClick={onToggleSitePreview}
298
- aria-pressed={sitePreview}
299
- aria-label={sitePreview ? 'Back to editor canvas' : 'Inline site preview'}
300
- title={
301
- sitePreview
302
- ? 'Back to editor canvas'
303
- : 'Inline site preview — render the draft through your public site, in place'
304
- }
305
- className={`prenta-touch-target rounded-lg p-2 transition-colors ${
306
- sitePreview
307
- ? 'bg-primary text-primary-foreground'
308
- : 'text-muted-foreground hover:text-foreground hover:bg-accent'
309
- }`}
310
- >
311
- <Globe className="h-4 w-4" aria-hidden />
312
- </button>
313
- )}
314
-
315
- {onViewOnSite &&
316
- (structural ? (
278
+ {chrome && (
279
+ <>
317
280
  <button
318
281
  type="button"
319
- onClick={onViewOnSite}
282
+ onClick={() => onViewOnSite?.(chrome.primaryIntent)}
283
+ disabled={!chrome.viewEnabled}
320
284
  title={
321
- isLive
322
- ? 'Open the live published page in a new tab'
323
- : 'Open the draft on your public site — the real design preview'
285
+ chrome.viewDisabledReason ??
286
+ (chrome.primaryIntent === 'view-live'
287
+ ? 'Open the published page in a new tab.'
288
+ : 'Open the draft on your site in a new tab.')
324
289
  }
325
- className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors"
290
+ className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
326
291
  >
327
292
  <ExternalLink className="h-3.5 w-3.5" aria-hidden />
328
- {isLive ? 'View live' : 'View on site'}
293
+ {chrome.primaryIntent === 'view-live' ? 'View live' : 'View site'}
329
294
  </button>
330
- ) : (
331
- <button
332
- type="button"
333
- onClick={onViewOnSite}
334
- aria-label={isLive ? 'View live page' : 'View draft on site'}
335
- title={isLive ? 'View live page' : 'View draft on site'}
336
- className="prenta-touch-target text-muted-foreground hover:text-foreground hover:bg-accent rounded-lg p-2"
337
- >
338
- <ExternalLink className="h-4 w-4" aria-hidden />
339
- </button>
340
- ))}
295
+ {chrome.showViewLive && (
296
+ <DropdownMenu.Root>
297
+ <DropdownMenu.Trigger asChild>
298
+ <button
299
+ type="button"
300
+ disabled={!chrome.viewEnabled}
301
+ aria-label="More view options"
302
+ className="prenta-touch-target border-border text-foreground hover:bg-accent inline-flex h-[34px] items-center rounded-lg border px-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50"
303
+ >
304
+ <ChevronDown className="h-3.5 w-3.5" aria-hidden />
305
+ </button>
306
+ </DropdownMenu.Trigger>
307
+ <DropdownMenu.Portal container={adminPortalContainer()}>
308
+ <DropdownMenu.Content
309
+ align="end"
310
+ sideOffset={6}
311
+ className="border-border bg-popover z-[120] rounded-[10px] border p-[5px] shadow-[0_12px_34px_rgba(26,24,39,0.17)]"
312
+ >
313
+ <DropdownMenu.Item
314
+ onSelect={() => onViewOnSite?.('view-live')}
315
+ className="hover:bg-accent focus:bg-accent cursor-pointer rounded-md px-2.5 py-1.5 text-sm outline-none"
316
+ >
317
+ View live
318
+ </DropdownMenu.Item>
319
+ </DropdownMenu.Content>
320
+ </DropdownMenu.Portal>
321
+ </DropdownMenu.Root>
322
+ )}
323
+ {chrome.shareVisible && onShare && (
324
+ <button
325
+ type="button"
326
+ onClick={onShare}
327
+ disabled={!chrome.viewEnabled}
328
+ title={
329
+ chrome.viewDisabledReason ??
330
+ 'Copy a link so someone can view this draft without signing in.'
331
+ }
332
+ className="border-border text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
333
+ >
334
+ <Share2 className="h-3.5 w-3.5" aria-hidden />
335
+ Share
336
+ </button>
337
+ )}
338
+ </>
339
+ )}
341
340
 
342
341
  <button
343
342
  type="button"