@prenta/admin 0.92.0 → 0.93.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 (374) hide show
  1. package/CHANGELOG.md +552 -0
  2. package/design-system/tokens.css +173 -71
  3. package/design-system/tokens.json +244 -63
  4. package/design-system/tokens.scss +203 -98
  5. package/design-system/tokens.tailwind.cjs +93 -38
  6. package/dist/AdminRoot.d.ts +27 -6
  7. package/dist/AdminRoot.d.ts.map +1 -1
  8. package/dist/AdminRoot.js.map +1 -1
  9. package/dist/__tests__/components/breakpoint-controls.render.test.d.ts +2 -0
  10. package/dist/__tests__/components/breakpoint-controls.render.test.d.ts.map +1 -0
  11. package/dist/__tests__/components/breakpoint-controls.render.test.js +51 -0
  12. package/dist/__tests__/components/breakpoint-controls.render.test.js.map +1 -0
  13. package/dist/__tests__/components/canvas-edit-tip.render.test.d.ts +2 -0
  14. package/dist/__tests__/components/canvas-edit-tip.render.test.d.ts.map +1 -0
  15. package/dist/__tests__/components/canvas-edit-tip.render.test.js +37 -0
  16. package/dist/__tests__/components/canvas-edit-tip.render.test.js.map +1 -0
  17. package/dist/__tests__/components/editor-rail.render.test.d.ts +2 -0
  18. package/dist/__tests__/components/editor-rail.render.test.d.ts.map +1 -0
  19. package/dist/__tests__/components/editor-rail.render.test.js +138 -0
  20. package/dist/__tests__/components/editor-rail.render.test.js.map +1 -0
  21. package/dist/__tests__/components/media-block.render.test.d.ts +2 -0
  22. package/dist/__tests__/components/media-block.render.test.d.ts.map +1 -0
  23. package/dist/__tests__/components/media-block.render.test.js +108 -0
  24. package/dist/__tests__/components/media-block.render.test.js.map +1 -0
  25. package/dist/__tests__/components/page-audit-panel.render.test.d.ts +2 -0
  26. package/dist/__tests__/components/page-audit-panel.render.test.d.ts.map +1 -0
  27. package/dist/__tests__/components/page-audit-panel.render.test.js +59 -0
  28. package/dist/__tests__/components/page-audit-panel.render.test.js.map +1 -0
  29. package/dist/__tests__/components/reflow-meter.render.test.d.ts +2 -0
  30. package/dist/__tests__/components/reflow-meter.render.test.d.ts.map +1 -0
  31. package/dist/__tests__/components/reflow-meter.render.test.js +94 -0
  32. package/dist/__tests__/components/reflow-meter.render.test.js.map +1 -0
  33. package/dist/__tests__/components/seo-char-count.test.js +24 -6
  34. package/dist/__tests__/components/seo-char-count.test.js.map +1 -1
  35. package/dist/__tests__/components/serp-preview.render.test.d.ts +2 -0
  36. package/dist/__tests__/components/serp-preview.render.test.d.ts.map +1 -0
  37. package/dist/__tests__/components/serp-preview.render.test.js +25 -0
  38. package/dist/__tests__/components/serp-preview.render.test.js.map +1 -0
  39. package/dist/__tests__/lib/breakpoints.test.d.ts +2 -0
  40. package/dist/__tests__/lib/breakpoints.test.d.ts.map +1 -0
  41. package/dist/__tests__/lib/breakpoints.test.js +67 -0
  42. package/dist/__tests__/lib/breakpoints.test.js.map +1 -0
  43. package/dist/__tests__/lib/canvas-edit-chrome.test.d.ts +2 -0
  44. package/dist/__tests__/lib/canvas-edit-chrome.test.d.ts.map +1 -0
  45. package/dist/__tests__/lib/canvas-edit-chrome.test.js +44 -0
  46. package/dist/__tests__/lib/canvas-edit-chrome.test.js.map +1 -0
  47. package/dist/__tests__/lib/media-format.test.d.ts +2 -0
  48. package/dist/__tests__/lib/media-format.test.d.ts.map +1 -0
  49. package/dist/__tests__/lib/media-format.test.js +70 -0
  50. package/dist/__tests__/lib/media-format.test.js.map +1 -0
  51. package/dist/__tests__/lib/page-audit-input.test.d.ts +2 -0
  52. package/dist/__tests__/lib/page-audit-input.test.d.ts.map +1 -0
  53. package/dist/__tests__/lib/page-audit-input.test.js +122 -0
  54. package/dist/__tests__/lib/page-audit-input.test.js.map +1 -0
  55. package/dist/__tests__/lib/page-editor-service.test.js +2 -0
  56. package/dist/__tests__/lib/page-editor-service.test.js.map +1 -1
  57. package/dist/__tests__/lib/page-redirect.test.d.ts +2 -0
  58. package/dist/__tests__/lib/page-redirect.test.d.ts.map +1 -0
  59. package/dist/__tests__/lib/page-redirect.test.js +26 -0
  60. package/dist/__tests__/lib/page-redirect.test.js.map +1 -0
  61. package/dist/__tests__/lib/rail-width.test.d.ts +2 -0
  62. package/dist/__tests__/lib/rail-width.test.d.ts.map +1 -0
  63. package/dist/__tests__/lib/rail-width.test.js +69 -0
  64. package/dist/__tests__/lib/rail-width.test.js.map +1 -0
  65. package/dist/__tests__/lib/reflow-baseline.test.d.ts +2 -0
  66. package/dist/__tests__/lib/reflow-baseline.test.d.ts.map +1 -0
  67. package/dist/__tests__/lib/reflow-baseline.test.js +56 -0
  68. package/dist/__tests__/lib/reflow-baseline.test.js.map +1 -0
  69. package/dist/__tests__/lib/reflow-probe.test.d.ts +2 -0
  70. package/dist/__tests__/lib/reflow-probe.test.d.ts.map +1 -0
  71. package/dist/__tests__/lib/reflow-probe.test.js +73 -0
  72. package/dist/__tests__/lib/reflow-probe.test.js.map +1 -0
  73. package/dist/__tests__/styles/canvas-container-queries.test.d.ts +2 -0
  74. package/dist/__tests__/styles/canvas-container-queries.test.d.ts.map +1 -0
  75. package/dist/__tests__/styles/canvas-container-queries.test.js +87 -0
  76. package/dist/__tests__/styles/canvas-container-queries.test.js.map +1 -0
  77. package/dist/__tests__/styles/packaging.test.d.ts +2 -0
  78. package/dist/__tests__/styles/packaging.test.d.ts.map +1 -0
  79. package/dist/__tests__/styles/packaging.test.js +31 -0
  80. package/dist/__tests__/styles/packaging.test.js.map +1 -0
  81. package/dist/__tests__/styles/tokens-drift.test.d.ts +2 -0
  82. package/dist/__tests__/styles/tokens-drift.test.d.ts.map +1 -0
  83. package/dist/__tests__/styles/tokens-drift.test.js +92 -0
  84. package/dist/__tests__/styles/tokens-drift.test.js.map +1 -0
  85. package/dist/__tests__/views/admin-renderer-compat.test.d.ts +2 -0
  86. package/dist/__tests__/views/admin-renderer-compat.test.d.ts.map +1 -0
  87. package/dist/__tests__/views/admin-renderer-compat.test.js +43 -0
  88. package/dist/__tests__/views/admin-renderer-compat.test.js.map +1 -0
  89. package/dist/__tests__/views/admin-section-renderers.test.js +52 -4
  90. package/dist/__tests__/views/admin-section-renderers.test.js.map +1 -1
  91. package/dist/__tests__/views/editor-top-bar.render.test.js +1 -1
  92. package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
  93. package/dist/__tests__/views/page-tab.render.test.d.ts +2 -0
  94. package/dist/__tests__/views/page-tab.render.test.d.ts.map +1 -0
  95. package/dist/__tests__/views/page-tab.render.test.js +151 -0
  96. package/dist/__tests__/views/page-tab.render.test.js.map +1 -0
  97. package/dist/__tests__/views/section-class-parity.test.d.ts +2 -0
  98. package/dist/__tests__/views/section-class-parity.test.d.ts.map +1 -0
  99. package/dist/__tests__/views/section-class-parity.test.js +81 -0
  100. package/dist/__tests__/views/section-class-parity.test.js.map +1 -0
  101. package/dist/__tests__/views/sections-panel-design-owned.render.test.d.ts +2 -0
  102. package/dist/__tests__/views/sections-panel-design-owned.render.test.d.ts.map +1 -0
  103. package/dist/__tests__/views/sections-panel-design-owned.render.test.js +86 -0
  104. package/dist/__tests__/views/sections-panel-design-owned.render.test.js.map +1 -0
  105. package/dist/components/BreakpointPicker.d.ts +18 -0
  106. package/dist/components/BreakpointPicker.d.ts.map +1 -0
  107. package/dist/components/BreakpointPicker.js +31 -0
  108. package/dist/components/BreakpointPicker.js.map +1 -0
  109. package/dist/components/CanvasEditTip.d.ts +6 -0
  110. package/dist/components/CanvasEditTip.d.ts.map +1 -0
  111. package/dist/components/CanvasEditTip.js +22 -0
  112. package/dist/components/CanvasEditTip.js.map +1 -0
  113. package/dist/components/EditorRail.d.ts +36 -0
  114. package/dist/components/EditorRail.d.ts.map +1 -0
  115. package/dist/components/EditorRail.js +104 -0
  116. package/dist/components/EditorRail.js.map +1 -0
  117. package/dist/components/EditorRailTabs.d.ts +32 -0
  118. package/dist/components/EditorRailTabs.d.ts.map +1 -0
  119. package/dist/components/EditorRailTabs.js +45 -0
  120. package/dist/components/EditorRailTabs.js.map +1 -0
  121. package/dist/components/MediaBlock.d.ts +49 -0
  122. package/dist/components/MediaBlock.d.ts.map +1 -0
  123. package/dist/components/MediaBlock.js +50 -0
  124. package/dist/components/MediaBlock.js.map +1 -0
  125. package/dist/components/ReflowMeter.d.ts +28 -0
  126. package/dist/components/ReflowMeter.d.ts.map +1 -0
  127. package/dist/components/ReflowMeter.js +42 -0
  128. package/dist/components/ReflowMeter.js.map +1 -0
  129. package/dist/components/ZoomChip.d.ts +17 -0
  130. package/dist/components/ZoomChip.d.ts.map +1 -0
  131. package/dist/components/ZoomChip.js +17 -0
  132. package/dist/components/ZoomChip.js.map +1 -0
  133. package/dist/components/breakpoint-icons.d.ts +3 -0
  134. package/dist/components/breakpoint-icons.d.ts.map +1 -0
  135. package/dist/components/breakpoint-icons.js +16 -0
  136. package/dist/components/breakpoint-icons.js.map +1 -0
  137. package/dist/components/page-tab/AuthorPicker.d.ts +31 -0
  138. package/dist/components/page-tab/AuthorPicker.d.ts.map +1 -0
  139. package/dist/components/page-tab/AuthorPicker.js +95 -0
  140. package/dist/components/page-tab/AuthorPicker.js.map +1 -0
  141. package/dist/components/page-tab/DirectiveSwitch.d.ts +38 -0
  142. package/dist/components/page-tab/DirectiveSwitch.d.ts.map +1 -0
  143. package/dist/components/page-tab/DirectiveSwitch.js +29 -0
  144. package/dist/components/page-tab/DirectiveSwitch.js.map +1 -0
  145. package/dist/components/seo/EditorSeoScoreBadge.d.ts +8 -1
  146. package/dist/components/seo/EditorSeoScoreBadge.d.ts.map +1 -1
  147. package/dist/components/seo/EditorSeoScoreBadge.js +2 -2
  148. package/dist/components/seo/EditorSeoScoreBadge.js.map +1 -1
  149. package/dist/components/seo/PageAuditPanel.d.ts +14 -0
  150. package/dist/components/seo/PageAuditPanel.d.ts.map +1 -0
  151. package/dist/components/seo/PageAuditPanel.js +59 -0
  152. package/dist/components/seo/PageAuditPanel.js.map +1 -0
  153. package/dist/components/seo/SeoCharCount.d.ts +19 -7
  154. package/dist/components/seo/SeoCharCount.d.ts.map +1 -1
  155. package/dist/components/seo/SeoCharCount.js +30 -16
  156. package/dist/components/seo/SeoCharCount.js.map +1 -1
  157. package/dist/components/seo/SeoEditorPane.d.ts +15 -1
  158. package/dist/components/seo/SeoEditorPane.d.ts.map +1 -1
  159. package/dist/components/seo/SeoEditorPane.js +118 -21
  160. package/dist/components/seo/SeoEditorPane.js.map +1 -1
  161. package/dist/components/seo/SerpPreview.d.ts +20 -0
  162. package/dist/components/seo/SerpPreview.d.ts.map +1 -0
  163. package/dist/components/seo/SerpPreview.js +6 -0
  164. package/dist/components/seo/SerpPreview.js.map +1 -0
  165. package/dist/hooks/usePageAudit.d.ts +41 -0
  166. package/dist/hooks/usePageAudit.d.ts.map +1 -0
  167. package/dist/hooks/usePageAudit.js +68 -0
  168. package/dist/hooks/usePageAudit.js.map +1 -0
  169. package/dist/hooks/useReflowGuard.d.ts +47 -0
  170. package/dist/hooks/useReflowGuard.d.ts.map +1 -0
  171. package/dist/hooks/useReflowGuard.js +52 -0
  172. package/dist/hooks/useReflowGuard.js.map +1 -0
  173. package/dist/lib/breakpoints.d.ts +51 -0
  174. package/dist/lib/breakpoints.d.ts.map +1 -0
  175. package/dist/lib/breakpoints.js +84 -0
  176. package/dist/lib/breakpoints.js.map +1 -0
  177. package/dist/lib/canvas-edit-chrome.d.ts +22 -0
  178. package/dist/lib/canvas-edit-chrome.d.ts.map +1 -0
  179. package/dist/lib/canvas-edit-chrome.js +81 -0
  180. package/dist/lib/canvas-edit-chrome.js.map +1 -0
  181. package/dist/lib/media-format.d.ts +55 -0
  182. package/dist/lib/media-format.d.ts.map +1 -0
  183. package/dist/lib/media-format.js +93 -0
  184. package/dist/lib/media-format.js.map +1 -0
  185. package/dist/lib/page-audit-input.d.ts +45 -0
  186. package/dist/lib/page-audit-input.d.ts.map +1 -0
  187. package/dist/lib/page-audit-input.js +53 -0
  188. package/dist/lib/page-audit-input.js.map +1 -0
  189. package/dist/lib/page-editor-service.d.ts +12 -0
  190. package/dist/lib/page-editor-service.d.ts.map +1 -1
  191. package/dist/lib/page-editor-service.js +6 -0
  192. package/dist/lib/page-editor-service.js.map +1 -1
  193. package/dist/lib/page-redirect.d.ts +39 -0
  194. package/dist/lib/page-redirect.d.ts.map +1 -0
  195. package/dist/lib/page-redirect.js +38 -0
  196. package/dist/lib/page-redirect.js.map +1 -0
  197. package/dist/lib/rail-width.d.ts +23 -0
  198. package/dist/lib/rail-width.d.ts.map +1 -0
  199. package/dist/lib/rail-width.js +59 -0
  200. package/dist/lib/rail-width.js.map +1 -0
  201. package/dist/lib/reflow-baseline.d.ts +45 -0
  202. package/dist/lib/reflow-baseline.d.ts.map +1 -0
  203. package/dist/lib/reflow-baseline.js +38 -0
  204. package/dist/lib/reflow-baseline.js.map +1 -0
  205. package/dist/lib/reflow-probe.d.ts +159 -0
  206. package/dist/lib/reflow-probe.d.ts.map +1 -0
  207. package/dist/lib/reflow-probe.js +228 -0
  208. package/dist/lib/reflow-probe.js.map +1 -0
  209. package/dist/lib/seo-service.d.ts +10 -0
  210. package/dist/lib/seo-service.d.ts.map +1 -1
  211. package/dist/lib/seo-service.js.map +1 -1
  212. package/dist/prenta-admin.css +1 -1
  213. package/dist/views/page-editor/CanvasMetaLine.d.ts +19 -0
  214. package/dist/views/page-editor/CanvasMetaLine.d.ts.map +1 -0
  215. package/dist/views/page-editor/CanvasMetaLine.js +23 -0
  216. package/dist/views/page-editor/CanvasMetaLine.js.map +1 -0
  217. package/dist/views/page-editor/EditorCanvas.d.ts +34 -8
  218. package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -1
  219. package/dist/views/page-editor/EditorCanvas.js +68 -34
  220. package/dist/views/page-editor/EditorCanvas.js.map +1 -1
  221. package/dist/views/page-editor/EditorTopBar.d.ts +14 -1
  222. package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
  223. package/dist/views/page-editor/EditorTopBar.js +8 -17
  224. package/dist/views/page-editor/EditorTopBar.js.map +1 -1
  225. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  226. package/dist/views/page-editor/PageSectionEditor.js +275 -53
  227. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  228. package/dist/views/page-editor/PageTab.d.ts +36 -0
  229. package/dist/views/page-editor/PageTab.d.ts.map +1 -0
  230. package/dist/views/page-editor/PageTab.js +65 -0
  231. package/dist/views/page-editor/PageTab.js.map +1 -0
  232. package/dist/views/page-editor/SectionInspector.d.ts.map +1 -1
  233. package/dist/views/page-editor/SectionInspector.js +63 -19
  234. package/dist/views/page-editor/SectionInspector.js.map +1 -1
  235. package/dist/views/page-editor/SectionsPanel.d.ts +30 -5
  236. package/dist/views/page-editor/SectionsPanel.d.ts.map +1 -1
  237. package/dist/views/page-editor/SectionsPanel.js +38 -7
  238. package/dist/views/page-editor/SectionsPanel.js.map +1 -1
  239. package/dist/views/page-editor/SitePreviewFrame.d.ts.map +1 -1
  240. package/dist/views/page-editor/SitePreviewFrame.js +3 -0
  241. package/dist/views/page-editor/SitePreviewFrame.js.map +1 -1
  242. package/dist/views/page-editor/reflow-context.d.ts +28 -0
  243. package/dist/views/page-editor/reflow-context.d.ts.map +1 -0
  244. package/dist/views/page-editor/reflow-context.js +14 -0
  245. package/dist/views/page-editor/reflow-context.js.map +1 -0
  246. package/dist/views/page-editor/sections/ByTheNumbersSection.d.ts.map +1 -1
  247. package/dist/views/page-editor/sections/ByTheNumbersSection.js +1 -1
  248. package/dist/views/page-editor/sections/ByTheNumbersSection.js.map +1 -1
  249. package/dist/views/page-editor/sections/CtaBannerSection.d.ts.map +1 -1
  250. package/dist/views/page-editor/sections/CtaBannerSection.js +1 -1
  251. package/dist/views/page-editor/sections/CtaBannerSection.js.map +1 -1
  252. package/dist/views/page-editor/sections/FeatureHighlightSection.d.ts.map +1 -1
  253. package/dist/views/page-editor/sections/FeatureHighlightSection.js +2 -2
  254. package/dist/views/page-editor/sections/FeatureHighlightSection.js.map +1 -1
  255. package/dist/views/page-editor/sections/GallerySection.d.ts.map +1 -1
  256. package/dist/views/page-editor/sections/GallerySection.js +7 -3
  257. package/dist/views/page-editor/sections/GallerySection.js.map +1 -1
  258. package/dist/views/page-editor/sections/HeroBannerSection.js +1 -1
  259. package/dist/views/page-editor/sections/HeroBannerSection.js.map +1 -1
  260. package/dist/views/page-editor/sections/MissionSection.d.ts.map +1 -1
  261. package/dist/views/page-editor/sections/MissionSection.js +1 -1
  262. package/dist/views/page-editor/sections/MissionSection.js.map +1 -1
  263. package/dist/views/page-editor/sections/PullQuoteSection.d.ts.map +1 -1
  264. package/dist/views/page-editor/sections/PullQuoteSection.js +1 -1
  265. package/dist/views/page-editor/sections/PullQuoteSection.js.map +1 -1
  266. package/dist/views/page-editor/sections/RelatedPostsSection.d.ts.map +1 -1
  267. package/dist/views/page-editor/sections/RelatedPostsSection.js +1 -1
  268. package/dist/views/page-editor/sections/RelatedPostsSection.js.map +1 -1
  269. package/dist/views/page-editor/sections/SectionRenderer.d.ts.map +1 -1
  270. package/dist/views/page-editor/sections/SectionRenderer.js +49 -24
  271. package/dist/views/page-editor/sections/SectionRenderer.js.map +1 -1
  272. package/dist/views/page-editor/sections/admin-renderers.d.ts +47 -15
  273. package/dist/views/page-editor/sections/admin-renderers.d.ts.map +1 -1
  274. package/dist/views/page-editor/sections/admin-renderers.js +27 -15
  275. package/dist/views/page-editor/sections/admin-renderers.js.map +1 -1
  276. package/dist/views/page-editor/sections/parts.d.ts +0 -1
  277. package/dist/views/page-editor/sections/parts.d.ts.map +1 -1
  278. package/dist/views/page-editor/sections/parts.js +41 -16
  279. package/dist/views/page-editor/sections/parts.js.map +1 -1
  280. package/dist/views/page-editor/viewports.d.ts +7 -14
  281. package/dist/views/page-editor/viewports.d.ts.map +1 -1
  282. package/dist/views/page-editor/viewports.js +7 -12
  283. package/dist/views/page-editor/viewports.js.map +1 -1
  284. package/dist/views/post-editor/PostEditorCanvas.d.ts +2 -1
  285. package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -1
  286. package/dist/views/post-editor/PostEditorCanvas.js +5 -2
  287. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
  288. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  289. package/dist/views/post-editor/PostSectionEditor.js +2 -20
  290. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  291. package/dist/views/post-editor/PostTemplateEditor.d.ts.map +1 -1
  292. package/dist/views/post-editor/PostTemplateEditor.js +4 -1
  293. package/dist/views/post-editor/PostTemplateEditor.js.map +1 -1
  294. package/package.json +5 -3
  295. package/src/AdminRoot.tsx +27 -6
  296. package/src/__tests__/components/breakpoint-controls.render.test.tsx +57 -0
  297. package/src/__tests__/components/canvas-edit-tip.render.test.tsx +41 -0
  298. package/src/__tests__/components/editor-rail.render.test.tsx +192 -0
  299. package/src/__tests__/components/media-block.render.test.tsx +126 -0
  300. package/src/__tests__/components/page-audit-panel.render.test.tsx +64 -0
  301. package/src/__tests__/components/reflow-meter.render.test.tsx +144 -0
  302. package/src/__tests__/components/seo-char-count.test.tsx +26 -6
  303. package/src/__tests__/components/serp-preview.render.test.tsx +32 -0
  304. package/src/__tests__/lib/breakpoints.test.ts +84 -0
  305. package/src/__tests__/lib/canvas-edit-chrome.test.ts +56 -0
  306. package/src/__tests__/lib/media-format.test.ts +89 -0
  307. package/src/__tests__/lib/page-audit-input.test.ts +144 -0
  308. package/src/__tests__/lib/page-editor-service.test.ts +2 -0
  309. package/src/__tests__/lib/page-redirect.test.ts +29 -0
  310. package/src/__tests__/lib/rail-width.test.ts +86 -0
  311. package/src/__tests__/lib/reflow-baseline.test.ts +64 -0
  312. package/src/__tests__/lib/reflow-probe.test.ts +95 -0
  313. package/src/__tests__/styles/canvas-container-queries.test.ts +103 -0
  314. package/src/__tests__/styles/packaging.test.ts +38 -0
  315. package/src/__tests__/styles/tokens-drift.test.ts +110 -0
  316. package/src/__tests__/views/admin-renderer-compat.test.ts +48 -0
  317. package/src/__tests__/views/admin-section-renderers.test.tsx +70 -4
  318. package/src/__tests__/views/editor-top-bar.render.test.tsx +1 -1
  319. package/src/__tests__/views/page-tab.render.test.tsx +226 -0
  320. package/src/__tests__/views/section-class-parity.test.ts +98 -0
  321. package/src/__tests__/views/sections-panel-design-owned.render.test.tsx +104 -0
  322. package/src/components/BreakpointPicker.tsx +114 -0
  323. package/src/components/CanvasEditTip.tsx +46 -0
  324. package/src/components/EditorRail.tsx +219 -0
  325. package/src/components/EditorRailTabs.tsx +117 -0
  326. package/src/components/MediaBlock.tsx +223 -0
  327. package/src/components/ReflowMeter.tsx +125 -0
  328. package/src/components/ZoomChip.tsx +39 -0
  329. package/src/components/breakpoint-icons.ts +17 -0
  330. package/src/components/page-tab/AuthorPicker.tsx +240 -0
  331. package/src/components/page-tab/DirectiveSwitch.tsx +86 -0
  332. package/src/components/seo/EditorSeoScoreBadge.tsx +9 -1
  333. package/src/components/seo/PageAuditPanel.tsx +192 -0
  334. package/src/components/seo/SeoCharCount.tsx +55 -24
  335. package/src/components/seo/SeoEditorPane.tsx +213 -31
  336. package/src/components/seo/SerpPreview.tsx +41 -0
  337. package/src/hooks/usePageAudit.ts +98 -0
  338. package/src/hooks/useReflowGuard.ts +96 -0
  339. package/src/lib/breakpoints.ts +107 -0
  340. package/src/lib/canvas-edit-chrome.ts +82 -0
  341. package/src/lib/media-format.ts +99 -0
  342. package/src/lib/page-audit-input.ts +104 -0
  343. package/src/lib/page-editor-service.ts +18 -0
  344. package/src/lib/page-redirect.ts +60 -0
  345. package/src/lib/rail-width.ts +58 -0
  346. package/src/lib/reflow-baseline.ts +70 -0
  347. package/src/lib/reflow-probe.ts +299 -0
  348. package/src/lib/seo-service.ts +10 -0
  349. package/src/styles/prenta-tokens.css +120 -42
  350. package/src/styles/theme.css +130 -0
  351. package/src/views/page-editor/CanvasMetaLine.tsx +50 -0
  352. package/src/views/page-editor/EditorCanvas.tsx +109 -50
  353. package/src/views/page-editor/EditorTopBar.tsx +35 -43
  354. package/src/views/page-editor/PageSectionEditor.tsx +419 -148
  355. package/src/views/page-editor/PageTab.tsx +433 -0
  356. package/src/views/page-editor/SectionInspector.tsx +82 -41
  357. package/src/views/page-editor/SectionsPanel.tsx +281 -140
  358. package/src/views/page-editor/SitePreviewFrame.tsx +3 -0
  359. package/src/views/page-editor/reflow-context.ts +43 -0
  360. package/src/views/page-editor/sections/ByTheNumbersSection.tsx +3 -2
  361. package/src/views/page-editor/sections/CtaBannerSection.tsx +3 -1
  362. package/src/views/page-editor/sections/FeatureHighlightSection.tsx +3 -2
  363. package/src/views/page-editor/sections/GallerySection.tsx +7 -3
  364. package/src/views/page-editor/sections/HeroBannerSection.tsx +2 -2
  365. package/src/views/page-editor/sections/MissionSection.tsx +4 -2
  366. package/src/views/page-editor/sections/PullQuoteSection.tsx +3 -1
  367. package/src/views/page-editor/sections/RelatedPostsSection.tsx +2 -1
  368. package/src/views/page-editor/sections/SectionRenderer.tsx +69 -29
  369. package/src/views/page-editor/sections/admin-renderers.tsx +54 -15
  370. package/src/views/page-editor/sections/parts.tsx +46 -18
  371. package/src/views/page-editor/viewports.ts +13 -26
  372. package/src/views/post-editor/PostEditorCanvas.tsx +18 -11
  373. package/src/views/post-editor/PostSectionEditor.tsx +1 -56
  374. package/src/views/post-editor/PostTemplateEditor.tsx +3 -0
@@ -1,26 +1,36 @@
1
1
  'use client';
2
- import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  /**
4
4
  * Inline SEO editor pane for the post/page section editors and the Content SEO
5
5
  * list. Accordion sections mirror Yoast-style workflow: Focus Keyword → Search
6
6
  * Appearance → Social → Analysis → Advanced → Insights → Linking.
7
7
  */
8
8
  import { cloneElement, isValidElement, useEffect, useId, useMemo, useState, } from 'react';
9
- import { Loader2, Monitor, Smartphone, Sparkles, Wand2 } from 'lucide-react';
9
+ import { ImagePlus, Loader2, Monitor, Smartphone, Sparkles, Trash2, Wand2 } from 'lucide-react';
10
10
  import { toast } from 'sonner';
11
11
  import { resolveRenderedMetaTitle } from '@prenta/core/client';
12
12
  import { analyzeContent, calculateReadability, stripHtmlTags, } from '@prenta/core/seo/analysis';
13
+ import { auditPage } from '@prenta/core/seo/page-audit';
14
+ import { buildPageAuditInput } from '../../lib/page-audit-input.js';
13
15
  import { fetchSeoContentRecord, updateSeoFields, generateSeoField, fetchDocumentSeoAnalysis, SEO_SCHEMA_TYPES, } from '../../lib/seo-service.js';
14
16
  import { fixBrandVoiceContent } from '../../lib/brand-voice-client.js';
15
17
  import { BrandVoiceAlignmentBadge } from '../BrandVoiceAlignmentBadge.js';
16
18
  import { InspectorPaneBody, InspectorPaneFooter, InspectorPaneHeader } from '../ui/InspectorPane.js';
17
19
  import { Toggle } from '../ui/Toggle.js';
20
+ import { MediaPickerModal } from '../MediaPickerModal.js';
21
+ import { PageAuditPanel } from './PageAuditPanel.js';
22
+ import { SeoCharCount } from './SeoCharCount.js';
23
+ import { SerpPreview } from './SerpPreview.js';
18
24
  import { SeoLoading, SeoErrorState, gradeMeta } from './primitives.js';
19
25
  import { SeoAccordion, SeoAccordionBadge, SeoAccordionItem } from './SeoAccordion.js';
20
26
  import { SeoAnalysisList } from './SeoAnalysisList.js';
21
27
  import { SeoInsightsMetrics } from './SeoInsightsMetrics.js';
22
28
  import { SeoLinkingSection } from './SeoLinkingSection.js';
29
+ // Ranges the audit's title/description checks score against — one definition,
30
+ // so the meter cannot tell an editor they are in range while the check fails.
31
+ const META_TITLE_MIN = 30;
23
32
  const META_TITLE_MAX = 60;
33
+ const META_DESC_MIN = 70;
24
34
  const META_DESC_MAX = 160;
25
35
  const KEY_TAKEAWAY_MAX = 240;
26
36
  const LLMS_DESC_MAX = 160;
@@ -30,10 +40,6 @@ function seoBrandChannel(field) {
30
40
  return undefined;
31
41
  }
32
42
  const inputCls = 'w-full rounded-[7px] border border-[var(--bdr)] bg-[var(--card)] px-2.5 py-1.5 text-[12.5px] text-[var(--txt)] placeholder:text-[var(--muted)] focus:border-[var(--acc)] focus:outline-none';
33
- function CharCount({ value, max }) {
34
- const over = value.length > max;
35
- return (_jsxs("span", { className: `text-[11px] ${over ? 'text-[var(--err)]' : 'text-[var(--muted)]'}`, children: [value.length, "/", max] }));
36
- }
37
43
  function PaneField({ label, children, hint, help, }) {
38
44
  const generatedId = useId();
39
45
  let control = children;
@@ -46,7 +52,7 @@ function PaneField({ label, children, hint, help, }) {
46
52
  function PaneToggleRow({ label, hint, checked, onCheckedChange, }) {
47
53
  return (_jsxs("div", { className: "flex items-center justify-between gap-3 py-1.5", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-[12.5px] font-medium text-[var(--txt)]", children: label }), _jsx("div", { className: "text-[11px] text-[var(--muted)]", children: hint })] }), _jsx(Toggle, { checked: checked, onCheckedChange: onCheckedChange, "aria-label": label })] }));
48
54
  }
49
- export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentHtml = '', slug = '', draftMeta, onDraftChange, }) {
55
+ export function SeoEditorPane({ entityType, entityId, auditSections, onAuditChange, onClose, onSaved, contentHtml = '', slug = '', draftMeta, onDraftChange, }) {
50
56
  const isDraft = !entityId;
51
57
  const [record, setRecord] = useState(null);
52
58
  const [loading, setLoading] = useState(!isDraft);
@@ -58,6 +64,7 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
58
64
  const [form, setForm] = useState({});
59
65
  const [previewDevice, setPreviewDevice] = useState('mobile');
60
66
  const [socialPlatform, setSocialPlatform] = useState('facebook');
67
+ const [imagePickerOpen, setImagePickerOpen] = useState(false);
61
68
  const [remoteAnalysis, setRemoteAnalysis] = useState(null);
62
69
  useEffect(() => {
63
70
  if (isDraft) {
@@ -90,7 +97,24 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
90
97
  if (!alive)
91
98
  return;
92
99
  if (!rec) {
93
- setError('Could not load this record.');
100
+ // Same situation as the catch below, reached without a throw.
101
+ setRecord(null);
102
+ setForm({
103
+ metaTitle: draftMeta?.seoTitle ?? '',
104
+ metaDescription: draftMeta?.seoDescription ?? '',
105
+ focusKeyword: '',
106
+ keyTakeaway: '',
107
+ ogTitle: '',
108
+ ogDescription: '',
109
+ canonicalUrl: '',
110
+ structuredDataType: 'WebPage',
111
+ noindex: false,
112
+ nofollow: false,
113
+ llmsInclude: 'AUTO',
114
+ llmsDescription: '',
115
+ llmsSection: '',
116
+ llmsOptional: false,
117
+ });
94
118
  return;
95
119
  }
96
120
  setRecord(rec);
@@ -102,6 +126,7 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
102
126
  keyTakeaway: rec.keyTakeaway ?? '',
103
127
  ogTitle: rec.ogTitle ?? '',
104
128
  ogDescription: rec.ogDescription ?? '',
129
+ ogImage: rec.ogImage ?? '',
105
130
  twitterTitle: rec.twitterTitle ?? '',
106
131
  twitterDescription: rec.twitterDescription ?? '',
107
132
  structuredDataType: rec.structuredDataType ?? 'WebPage',
@@ -113,12 +138,37 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
113
138
  llmsOptional: rec.llmsOptional ?? false,
114
139
  });
115
140
  })
116
- .catch((e) => alive && setError(e instanceof Error ? e.message : 'Failed to load'))
141
+ .catch(() => {
142
+ if (!alive)
143
+ return;
144
+ // No record is not a failure. Older cms-core resolves this endpoint
145
+ // through a PUBLISHED-only pipeline, so a saved draft 404s here even
146
+ // though the matching PUT accepts one — showing an error where the form
147
+ // belongs made a draft's SEO uneditable. Seed from the document's own
148
+ // meta instead; saving creates the record.
149
+ setRecord(null);
150
+ setForm({
151
+ metaTitle: draftMeta?.seoTitle ?? '',
152
+ metaDescription: draftMeta?.seoDescription ?? '',
153
+ focusKeyword: '',
154
+ keyTakeaway: '',
155
+ ogTitle: '',
156
+ ogDescription: '',
157
+ canonicalUrl: '',
158
+ structuredDataType: 'WebPage',
159
+ noindex: false,
160
+ nofollow: false,
161
+ llmsInclude: 'AUTO',
162
+ llmsDescription: '',
163
+ llmsSection: '',
164
+ llmsOptional: false,
165
+ });
166
+ })
117
167
  .finally(() => alive && setLoading(false));
118
168
  return () => {
119
169
  alive = false;
120
170
  };
121
- }, [entityType, entityId, isDraft]);
171
+ }, [entityType, entityId, isDraft, draftMeta?.seoTitle, draftMeta?.seoDescription]);
122
172
  useEffect(() => {
123
173
  if (isDraft || contentHtml.trim() || !entityId)
124
174
  return;
@@ -246,6 +296,49 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
246
296
  'Please provide a meta description. Search engines may generate one from your content.';
247
297
  const url = record?.url ?? (slug ? `/${slug.replace(/^\//, '')}` : '');
248
298
  const displayUrl = record?.url ?? url;
299
+ /**
300
+ * Page-level audit, distinct from `analyzeContent` below: binary checks over
301
+ * page structure and metadata, spanning a true 0-100. `analyzeContent` stays
302
+ * as the prose analysis (readability, density) it is good at.
303
+ *
304
+ * Built from LIVE form state so the score moves as the editor types. See
305
+ * `buildPageAuditInput` for which fields feed which check, and for why the
306
+ * OG image and author are reported as unknown rather than missing.
307
+ */
308
+ const audit = useMemo(() => {
309
+ if (!auditSections)
310
+ return null;
311
+ return auditPage(buildPageAuditInput({
312
+ sections: auditSections,
313
+ // LIVE form state, not the saved record — the score has to move as the
314
+ // editor types. The page editor builds the same input from the saved
315
+ // record for its first-paint score; routing both through one builder is
316
+ // what keeps the two numbers from drifting apart.
317
+ meta: {
318
+ metaTitle: form.metaTitle ?? '',
319
+ metaDescription: form.metaDescription ?? '',
320
+ focusKeyword: form.focusKeyword ?? '',
321
+ structuredDataType: form.structuredDataType ?? '',
322
+ noindex: Boolean(form.noindex),
323
+ // Directives are edited in the Page tab, so this pane has no live
324
+ // value to offer — it reads the saved one. Defaulting to `false`
325
+ // instead would tell the GEO gate that snippets are allowed on a page
326
+ // that has turned them off.
327
+ nosnippet: Boolean(record?.nosnippet),
328
+ llmsInclude: form.llmsInclude ?? 'AUTO',
329
+ // Live value, so the check flips the moment an image is chosen or
330
+ // cleared rather than waiting for a save round-trip. `??` and not
331
+ // `||`: an empty string is a deliberate removal, not "unset".
332
+ hasOgImage: Boolean(form.ogImage ?? record?.ogImage),
333
+ },
334
+ slug,
335
+ record,
336
+ fallbackTitle: draftMeta?.seoTitle,
337
+ }));
338
+ }, [auditSections, form, slug, record, draftMeta?.seoTitle]);
339
+ useEffect(() => {
340
+ onAuditChange?.(audit);
341
+ }, [audit, onAuditChange]);
249
342
  const analysisInput = useMemo(() => ({
250
343
  title: record?.title ?? draftMeta?.seoTitle ?? '',
251
344
  slug: slug || record?.url?.split('/').filter(Boolean).pop() || '',
@@ -260,7 +353,7 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
260
353
  canonical: form.canonicalUrl,
261
354
  ogTitle: form.ogTitle,
262
355
  ogDescription: form.ogDescription,
263
- ogImage: record?.ogImage ?? undefined,
356
+ ogImage: (form.ogImage ?? record?.ogImage) || undefined,
264
357
  }), [record, draftMeta, slug, contentHtml, form, renderedTitle]);
265
358
  const liveAnalysis = useMemo(() => {
266
359
  if (contentHtml.trim())
@@ -278,21 +371,25 @@ export function SeoEditorPane({ entityType, entityId, onClose, onSaved, contentH
278
371
  function aiButton(field, label) {
279
372
  return (_jsxs("button", { type: "button", onClick: () => void handleAiGenerate(field), disabled: aiBusy !== null || isDraft, title: isDraft ? 'Save a draft first' : label, className: "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[11px] font-medium text-[var(--acc)] transition-colors duration-[var(--motion-fast)] hover:bg-[var(--acc-l)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:opacity-60", children: [_jsx(Sparkles, { className: `h-3 w-3 ${aiBusy === field ? 'animate-pulse' : ''}`, "aria-hidden": true }), aiBusy === field ? 'Generating…' : 'AI Generate'] }));
280
373
  }
374
+ const shareImage = form.ogImage ?? record?.ogImage ?? '';
281
375
  const socialTitle = socialPlatform === 'twitter'
282
376
  ? form.twitterTitle || form.ogTitle || renderedTitle
283
377
  : form.ogTitle || renderedTitle;
284
378
  const socialDesc = socialPlatform === 'twitter'
285
379
  ? form.twitterDescription || form.ogDescription || form.metaDescription || desc
286
380
  : form.ogDescription || form.metaDescription || desc;
287
- return (_jsxs(_Fragment, { children: [_jsxs(InspectorPaneHeader, { onClose: onClose, closeLabel: "Close SEO editor", children: [_jsx("div", { className: "truncate text-[13.5px] font-semibold text-[var(--txt)]", children: record?.title ?? draftMeta?.seoTitle ?? 'SEO' }), displayUrl && (_jsx("div", { className: "mt-0.5 truncate text-[11.5px] text-[var(--muted)]", children: displayUrl }))] }), _jsx(InspectorPaneBody, { children: loading ? (_jsx("div", { className: "px-5 py-4", children: _jsx(SeoLoading, {}) })) : error ? (_jsx("div", { className: "px-5 py-4", children: _jsx(SeoErrorState, { message: error }) })) : (_jsxs(_Fragment, { children: [isDraft && (_jsx("div", { className: "border-b border-[var(--bdr)] px-5 py-3", children: _jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Save a draft to unlock AI assists trained on your site knowledge and tone. You can still set focus keyword, search appearance, and review live analysis below." }) })), !isDraft && record && (_jsx("div", { className: "border-b border-[var(--bdr)] px-5 py-3", children: (() => {
288
- const meta = gradeMeta(record.seoGrade);
289
- return (_jsx("div", { className: `flex items-center gap-2 rounded-[7px] px-3 py-2 text-[12px] ${meta.bg} ${meta.text}`, children: _jsxs("span", { children: ["SEO score: ", _jsx("span", { className: "font-medium", children: record.seoScore }), " (", meta.label, ")", analysis && (_jsxs(_Fragment, { children: [' · ', _jsxs("span", { title: "Content quality from the analysis checklist below (readability, keyphrase, links). Separate from the meta-weighted SEO score used to rank this list.", children: ["Content analysis ", analysis.score, "/100"] })] }))] }) }));
290
- })() })), _jsxs(SeoAccordion, { children: [_jsxs(SeoAccordionItem, { value: "focus-keyword", title: "Focus keyword", badge: form.focusKeyword ? (_jsx(SeoAccordionBadge, { tone: "neutral", children: form.focusKeyword })) : (_jsx(SeoAccordionBadge, { tone: "warn", children: "Not set" })), children: [_jsx(PaneField, { label: "Focus keyphrase", hint: aiButton('focusKeyword', 'Suggest focus keyphrase'), help: "The main phrase you want this content found for in search and AI answers.", children: _jsx("input", { className: inputCls, value: form.focusKeyword ?? '', onChange: (e) => update({ focusKeyword: e.target.value }), placeholder: "e.g. modern headless cms" }) }), _jsx(PaneField, { label: "Key takeaway", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.keyTakeaway ?? '', max: KEY_TAKEAWAY_MAX }), aiButton('keyTakeaway')] }), help: "One or two sentences AI answer engines can quote \u2014 what is this page about?", children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.keyTakeaway ?? '', onChange: (e) => update({ keyTakeaway: e.target.value }), placeholder: "Summarize the page's core value proposition" }) })] }), _jsxs(SeoAccordionItem, { value: "search-appearance", title: "Search appearance", children: [_jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Determine how this content should look in search results." }), _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-[11.5px] font-medium text-[var(--sub)]", children: "Google preview" }), _jsxs("div", { className: "flex rounded-[7px] border border-[var(--bdr)] p-0.5", children: [_jsxs("button", { type: "button", "aria-pressed": previewDevice === 'mobile', onClick: () => setPreviewDevice('mobile'), className: `inline-flex items-center gap-1 rounded-[5px] px-2 py-1 text-[11px] ${previewDevice === 'mobile' ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--muted)]'}`, children: [_jsx(Smartphone, { size: 14, "aria-hidden": true }), "Mobile"] }), _jsxs("button", { type: "button", "aria-pressed": previewDevice === 'desktop', onClick: () => setPreviewDevice('desktop'), className: `inline-flex items-center gap-1 rounded-[5px] px-2 py-1 text-[11px] ${previewDevice === 'desktop' ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--muted)]'}`, children: [_jsx(Monitor, { size: 14, "aria-hidden": true }), "Desktop"] })] })] }), _jsxs("div", { className: `rounded-[7px] border border-[var(--bdr)] bg-[var(--card)] p-3 ${previewDevice === 'mobile' ? 'max-w-[320px]' : ''}`, children: [_jsx("p", { className: "truncate text-[11px] text-[var(--suc)]", children: displayUrl }), _jsx("p", { className: "text-[15px] leading-snug text-[var(--acc)]", children: renderedTitle }), _jsx("p", { className: "line-clamp-2 text-[12px] text-[var(--sub)]", children: desc })] }), _jsx(PaneField, { label: "SEO title", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.metaTitle ?? '', max: META_TITLE_MAX }), aiButton('metaTitle')] }), children: _jsx("input", { className: inputCls, value: form.metaTitle ?? '', onChange: (e) => update({ metaTitle: e.target.value }), placeholder: "Page-specific title (%page% in your site template)" }) }), alignmentRow('metaTitle'), _jsx(PaneField, { label: "Slug", help: "URL slug for this content \u2014 edit in page/post settings.", children: _jsx("input", { className: `${inputCls} opacity-80`, value: slug, readOnly: true, disabled: true }) }), _jsx(PaneField, { label: "Meta description", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.metaDescription ?? '', max: META_DESC_MAX }), aiButton('metaDescription')] }), children: _jsx("textarea", { className: `${inputCls} min-h-20 resize-y`, value: form.metaDescription ?? '', onChange: (e) => update({ metaDescription: e.target.value }), placeholder: "Short summary shown under the title in search results" }) }), alignmentRow('metaDescription')] }), _jsxs(SeoAccordionItem, { value: "social-appearance", title: "Social appearance", children: [_jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Customize title, description, and image used when sharing on social platforms." }), _jsx("div", { className: "flex rounded-[7px] border border-[var(--bdr)] p-0.5", children: ['facebook', 'twitter'].map((platform) => (_jsx("button", { type: "button", "aria-pressed": socialPlatform === platform, onClick: () => setSocialPlatform(platform), className: `flex-1 rounded-[5px] px-2 py-1.5 text-[11.5px] font-medium capitalize ${socialPlatform === platform ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--sub)]'}`, children: platform === 'twitter' ? 'X / Twitter' : 'Facebook' }, platform))) }), _jsxs("div", { className: "overflow-hidden rounded-[7px] border border-[var(--bdr)]", children: [record?.ogImage ? (
291
- // eslint-disable-next-line @next/next/no-img-element
292
- _jsx("img", { src: record.ogImage, alt: "", className: "aspect-[1200/630] w-full bg-[var(--bg)] object-cover" })) : (_jsx("div", { className: "flex aspect-[1200/630] w-full items-center justify-center bg-[var(--bg)] text-[12px] text-[var(--muted)]", children: "No social image \u2014 add a featured or OG image" })), _jsxs("div", { className: "p-2.5", children: [_jsx("p", { className: "truncate text-[10.5px] text-[var(--muted)] uppercase", children: displayUrl.replace(/^https?:\/\//, '').split('/')[0] || 'yoursite.com' }), _jsx("p", { className: "truncate text-[12.5px] font-medium text-[var(--txt)]", children: socialTitle }), _jsx("p", { className: "line-clamp-2 text-[12px] text-[var(--sub)]", children: socialDesc })] })] }), socialPlatform === 'facebook' ? (_jsxs(_Fragment, { children: [_jsx(PaneField, { label: "OG title", hint: aiButton('ogTitle'), children: _jsx("input", { className: inputCls, value: form.ogTitle ?? '', onChange: (e) => update({ ogTitle: e.target.value }), placeholder: form.metaTitle || 'Inherits meta title when empty' }) }), _jsx(PaneField, { label: "OG description", hint: aiButton('ogDescription'), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.ogDescription ?? '', onChange: (e) => update({ ogDescription: e.target.value }), placeholder: form.metaDescription || 'Inherits meta description when empty' }) })] })) : (_jsxs(_Fragment, { children: [_jsx(PaneField, { label: "Twitter title", children: _jsx("input", { className: inputCls, value: form.twitterTitle ?? '', onChange: (e) => update({ twitterTitle: e.target.value }), placeholder: form.ogTitle || form.metaTitle || 'Inherits OG/meta title' }) }), _jsx(PaneField, { label: "Twitter description", children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.twitterDescription ?? '', onChange: (e) => update({ twitterDescription: e.target.value }), placeholder: form.ogDescription ||
293
- form.metaDescription ||
294
- 'Inherits OG/meta description' }) })] })), alignmentRow('ogDescription')] }), _jsx(SeoAccordionItem, { value: "seo-analysis", title: "SEO analysis", badge: analysis ? (_jsx(SeoAccordionBadge, { tone: problemCount > 0 ? 'bad' : 'good', children: problemCount > 0 ? `${problemCount} issues` : 'Looking good' })) : undefined, children: _jsx(SeoAnalysisList, { checks: analysis?.checks ?? [], onAiFixField: isDraft ? undefined : (field) => void handleAiGenerate(field), aiFixField: aiBusy }) }), _jsxs(SeoAccordionItem, { value: "advanced", title: "Advanced", children: [_jsx(PaneField, { label: "Canonical URL", children: _jsx("input", { className: inputCls, value: form.canonicalUrl ?? '', onChange: (e) => update({ canonicalUrl: e.target.value }), placeholder: displayUrl || 'https://example.com/page' }) }), !form.canonicalUrl?.trim() && displayUrl && !isDraft && (_jsxs("p", { className: "mb-3 text-[11px] text-[var(--muted)]", children: ["Auto-canonical: ", record?.canonicalUrl ?? displayUrl] })), _jsx(PaneField, { label: "Schema type", children: _jsx("select", { className: inputCls, value: form.structuredDataType ?? 'WebPage', onChange: (e) => update({ structuredDataType: e.target.value }), children: SEO_SCHEMA_TYPES.map((t) => (_jsx("option", { value: t, children: t }, t))) }) }), _jsx(PaneToggleRow, { label: "Allow search engines to show this content?", hint: "When off, adds a noindex directive", checked: !form.noindex, onCheckedChange: (v) => update({ noindex: !v }) }), _jsx(PaneToggleRow, { label: "Should search engines follow links?", hint: "When off, adds a nofollow directive", checked: !form.nofollow, onCheckedChange: (v) => update({ nofollow: !v }) }), _jsxs("div", { className: "mt-2 border-t border-[var(--bdr)] pt-3", children: [_jsx("p", { className: "mb-2 text-[11px] font-medium text-[var(--sub)]", children: "AI discovery (llms.txt)" }), _jsx(PaneField, { label: "Include in llms.txt", children: _jsxs("select", { className: inputCls, value: form.llmsInclude ?? 'AUTO', onChange: (e) => update({ llmsInclude: e.target.value }), children: [_jsx("option", { value: "AUTO", children: "Auto \u2014 include when eligible" }), _jsx("option", { value: "ALWAYS", children: "Always \u2014 pin it in" }), _jsx("option", { value: "NEVER", children: "Never \u2014 exclude" })] }) }), _jsx(PaneField, { label: "Agent description", hint: _jsx(CharCount, { value: form.llmsDescription ?? '', max: LLMS_DESC_MAX }), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.llmsDescription ?? '', onChange: (e) => update({ llmsDescription: e.target.value }), placeholder: form.keyTakeaway ||
295
- form.metaDescription ||
296
- 'One line for an AI agent — what this page covers' }) })] })] }), _jsx(SeoAccordionItem, { value: "insights", title: "Insights", children: _jsx(SeoInsightsMetrics, { readability: readability, plainText: plainText }) }), _jsx(SeoAccordionItem, { value: "linking-data", title: "Linking data", children: _jsx(SeoLinkingSection, { entityType: entityType, entityId: entityId, internalLinks: Number(internalLinks), externalLinks: Number(externalLinks), internalLinkOk: internalOk, externalLinkOk: externalOk }) })] })] })) }), _jsx(InspectorPaneFooter, { children: _jsx("button", { type: "button", onClick: () => void handleSave(), disabled: saving || loading || !!error, className: "bg-primary text-primary-foreground w-full rounded-[7px] px-3 py-2 text-[13px] font-semibold transition-colors duration-[var(--motion-fast)] hover:opacity-90 focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", children: saving ? 'Saving…' : isDraft ? 'Done' : 'Save Changes' }) })] }));
381
+ return (_jsxs(_Fragment, { children: [_jsxs(InspectorPaneHeader, { onClose: onClose, closeLabel: "Close SEO editor", children: [_jsx("div", { className: "truncate text-[13.5px] font-semibold text-[var(--txt)]", children: record?.title ?? draftMeta?.seoTitle ?? 'SEO' }), displayUrl && (_jsx("div", { className: "mt-0.5 truncate text-[11.5px] text-[var(--muted)]", children: displayUrl }))] }), _jsxs(InspectorPaneBody, { children: [audit && !loading && _jsx(PageAuditPanel, { audit: audit }), loading ? (_jsx("div", { className: "px-5 py-4", children: _jsx(SeoLoading, {}) })) : error ? (_jsx("div", { className: "px-5 py-4", children: _jsx(SeoErrorState, { message: error }) })) : (_jsxs(_Fragment, { children: [isDraft && (_jsx("div", { className: "border-b border-[var(--bdr)] px-5 py-3", children: _jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Save a draft to unlock AI assists trained on your site knowledge and tone. You can still set focus keyword, search appearance, and review live analysis below." }) })), !isDraft && record && (_jsx("div", { className: "border-b border-[var(--bdr)] px-5 py-3", children: (() => {
382
+ const meta = gradeMeta(record.seoGrade);
383
+ return (_jsx("div", { className: `flex items-center gap-2 rounded-[7px] px-3 py-2 text-[12px] ${meta.bg} ${meta.text}`, children: _jsxs("span", { children: ["SEO score: ", _jsx("span", { className: "font-medium", children: record.seoScore }), " (", meta.label, ")", analysis && (_jsxs(_Fragment, { children: [' · ', _jsxs("span", { title: "Content quality from the analysis checklist below (readability, keyphrase, links). Separate from the meta-weighted SEO score used to rank this list.", children: ["Content analysis ", analysis.score, "/100"] })] }))] }) }));
384
+ })() })), _jsxs(SeoAccordion, { children: [_jsxs(SeoAccordionItem, { value: "focus-keyword", title: "Focus keyword", badge: form.focusKeyword ? (_jsx(SeoAccordionBadge, { tone: "neutral", children: form.focusKeyword })) : (_jsx(SeoAccordionBadge, { tone: "warn", children: "Not set" })), children: [_jsx(PaneField, { label: "Focus keyphrase", hint: aiButton('focusKeyword', 'Suggest focus keyphrase'), help: "The main phrase you want this content found for in search and AI answers.", children: _jsx("input", { className: inputCls, value: form.focusKeyword ?? '', onChange: (e) => update({ focusKeyword: e.target.value }), placeholder: "e.g. modern headless cms" }) }), _jsx(PaneField, { label: "Key takeaway", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(SeoCharCount, { value: form.keyTakeaway ?? '', max: KEY_TAKEAWAY_MAX, bar: false }), aiButton('keyTakeaway')] }), help: "One or two sentences AI answer engines can quote \u2014 what is this page about?", children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.keyTakeaway ?? '', onChange: (e) => update({ keyTakeaway: e.target.value }), placeholder: "Summarize the page's core value proposition" }) })] }), _jsxs(SeoAccordionItem, { value: "search-appearance", title: "Search appearance", children: [_jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Determine how this content should look in search results." }), _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-[11.5px] font-medium text-[var(--sub)]", children: "Google preview" }), _jsxs("div", { className: "flex rounded-[7px] border border-[var(--bdr)] p-0.5", children: [_jsxs("button", { type: "button", "aria-pressed": previewDevice === 'mobile', onClick: () => setPreviewDevice('mobile'), className: `inline-flex items-center gap-1 rounded-[5px] px-2 py-1 text-[11px] ${previewDevice === 'mobile' ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--muted)]'}`, children: [_jsx(Smartphone, { size: 14, "aria-hidden": true }), "Mobile"] }), _jsxs("button", { type: "button", "aria-pressed": previewDevice === 'desktop', onClick: () => setPreviewDevice('desktop'), className: `inline-flex items-center gap-1 rounded-[5px] px-2 py-1 text-[11px] ${previewDevice === 'desktop' ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--muted)]'}`, children: [_jsx(Monitor, { size: 14, "aria-hidden": true }), "Desktop"] })] })] }), _jsx("div", { className: previewDevice === 'mobile' ? 'max-w-[320px]' : '', children: _jsx(SerpPreview, { title: renderedTitle, url: displayUrl, description: desc }) }), _jsx(PaneField, { label: "SEO title", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(SeoCharCount, { value: form.metaTitle ?? '', min: META_TITLE_MIN, max: META_TITLE_MAX }), aiButton('metaTitle')] }), children: _jsx("input", { className: inputCls, value: form.metaTitle ?? '', onChange: (e) => update({ metaTitle: e.target.value }), placeholder: "Page-specific title (%page% in your site template)" }) }), alignmentRow('metaTitle'), _jsx(PaneField, { label: "Slug", help: "URL slug for this content \u2014 edit in page/post settings.", children: _jsx("input", { className: `${inputCls} opacity-80`, value: slug, readOnly: true, disabled: true }) }), _jsx(PaneField, { label: "Meta description", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(SeoCharCount, { value: form.metaDescription ?? '', min: META_DESC_MIN, max: META_DESC_MAX }), aiButton('metaDescription')] }), children: _jsx("textarea", { className: `${inputCls} min-h-20 resize-y`, value: form.metaDescription ?? '', onChange: (e) => update({ metaDescription: e.target.value }), placeholder: "Short summary shown under the title in search results" }) }), alignmentRow('metaDescription')] }), _jsxs(SeoAccordionItem, { value: "social-appearance", title: "Social appearance", badge: shareImage ? (_jsx(SeoAccordionBadge, { tone: "good", children: "Image set" })) : (
385
+ // A shared link with no image is the single biggest drop in
386
+ // engagement, so it is worth stating while collapsed.
387
+ _jsx(SeoAccordionBadge, { tone: "warn", children: "No image" })), children: [_jsx("p", { className: "text-[11.5px] text-[var(--sub)]", children: "Customize title, description, and image used when sharing on social platforms." }), _jsx("div", { className: "flex rounded-[7px] border border-[var(--bdr)] p-0.5", children: ['facebook', 'twitter'].map((platform) => (_jsx("button", { type: "button", "aria-pressed": socialPlatform === platform, onClick: () => setSocialPlatform(platform), className: `flex-1 rounded-[5px] px-2 py-1.5 text-[11.5px] font-medium capitalize ${socialPlatform === platform ? 'bg-[var(--acc-l)] text-[var(--acc)]' : 'text-[var(--sub)]'}`, children: platform === 'twitter' ? 'X / Twitter' : 'Facebook' }, platform))) }), _jsxs("div", { className: "overflow-hidden rounded-[7px] border border-[var(--bdr)]", children: [shareImage ? (
388
+ // eslint-disable-next-line @next/next/no-img-element
389
+ _jsx("img", { src: shareImage, alt: "", className: "aspect-1200/630 w-full bg-[var(--bg)] object-cover" })) : (_jsxs("button", { type: "button", onClick: () => setImagePickerOpen(true), className: "flex aspect-1200/630 w-full flex-col items-center justify-center gap-1 bg-[var(--bg)] text-[12px] text-[var(--muted)] transition-colors hover:bg-[var(--acc-l)] hover:text-[var(--acc)]", children: [_jsx(ImagePlus, { className: "h-5 w-5", "aria-hidden": true }), "Choose a share image", _jsx("span", { className: "text-[10.5px]", children: "1200\u00D7630 or wider, about 1.91:1" })] })), _jsxs("div", { className: "p-2.5", children: [_jsx("p", { className: "truncate text-[10.5px] text-[var(--muted)] uppercase", children: displayUrl.replace(/^https?:\/\//, '').split('/')[0] || 'yoursite.com' }), _jsx("p", { className: "truncate text-[12.5px] font-medium text-[var(--txt)]", children: socialTitle }), _jsx("p", { className: "line-clamp-2 text-[12px] text-[var(--sub)]", children: socialDesc })] }), _jsxs("div", { className: "flex items-center gap-2 border-t border-[var(--bdr)] bg-[var(--bg)] px-2.5 py-2", children: [_jsx("span", { className: "min-w-0 flex-1 truncate text-[11.5px] text-[var(--sub)]", children: shareImage ? shareImage.split('/').pop() : 'No image selected' }), _jsx("button", { type: "button", onClick: () => setImagePickerOpen(true), className: "shrink-0 rounded-[5px] px-2 py-1 text-[11.5px] font-medium text-[var(--acc)] transition-colors hover:bg-[var(--acc-l)]", children: shareImage ? 'Replace' : 'Choose' }), shareImage && (_jsx("button", { type: "button", onClick: () => update({ ogImage: '' }), "aria-label": "Remove share image", className: "shrink-0 rounded-[5px] p-1 text-[var(--muted)] transition-colors hover:bg-[var(--err-l)] hover:text-[var(--err)]", children: _jsx(Trash2, { className: "h-3.5 w-3.5", "aria-hidden": true }) }))] })] }), socialPlatform === 'facebook' ? (_jsxs(_Fragment, { children: [_jsx(PaneField, { label: "OG title", hint: aiButton('ogTitle'), children: _jsx("input", { className: inputCls, value: form.ogTitle ?? '', onChange: (e) => update({ ogTitle: e.target.value }), placeholder: form.metaTitle || 'Inherits meta title when empty' }) }), _jsx(PaneField, { label: "OG description", hint: aiButton('ogDescription'), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.ogDescription ?? '', onChange: (e) => update({ ogDescription: e.target.value }), placeholder: form.metaDescription || 'Inherits meta description when empty' }) })] })) : (_jsxs(_Fragment, { children: [_jsx(PaneField, { label: "Twitter title", children: _jsx("input", { className: inputCls, value: form.twitterTitle ?? '', onChange: (e) => update({ twitterTitle: e.target.value }), placeholder: form.ogTitle || form.metaTitle || 'Inherits OG/meta title' }) }), _jsx(PaneField, { label: "Twitter description", children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.twitterDescription ?? '', onChange: (e) => update({ twitterDescription: e.target.value }), placeholder: form.ogDescription ||
390
+ form.metaDescription ||
391
+ 'Inherits OG/meta description' }) })] })), alignmentRow('ogDescription')] }), _jsx(SeoAccordionItem, { value: "seo-analysis", title: "SEO analysis", badge: analysis ? (_jsx(SeoAccordionBadge, { tone: problemCount > 0 ? 'bad' : 'good', children: problemCount > 0 ? `${problemCount} issues` : 'Looking good' })) : undefined, children: _jsx(SeoAnalysisList, { checks: analysis?.checks ?? [], onAiFixField: isDraft ? undefined : (field) => void handleAiGenerate(field), aiFixField: aiBusy }) }), _jsxs(SeoAccordionItem, { value: "advanced", title: "Advanced", children: [_jsx(PaneField, { label: "Canonical URL", children: _jsx("input", { className: inputCls, value: form.canonicalUrl ?? '', onChange: (e) => update({ canonicalUrl: e.target.value }), placeholder: displayUrl || 'https://example.com/page' }) }), !form.canonicalUrl?.trim() && displayUrl && !isDraft && (_jsxs("p", { className: "mb-3 text-[11px] text-[var(--muted)]", children: ["Auto-canonical: ", record?.canonicalUrl ?? displayUrl] })), _jsx(PaneField, { label: "Schema type", children: _jsx("select", { className: inputCls, value: form.structuredDataType ?? 'WebPage', onChange: (e) => update({ structuredDataType: e.target.value }), children: SEO_SCHEMA_TYPES.map((t) => (_jsx("option", { value: t, children: t }, t))) }) }), _jsx(PaneToggleRow, { label: "Allow search engines to show this content?", hint: "When off, adds a noindex directive", checked: !form.noindex, onCheckedChange: (v) => update({ noindex: !v }) }), _jsx(PaneToggleRow, { label: "Should search engines follow links?", hint: "When off, adds a nofollow directive", checked: !form.nofollow, onCheckedChange: (v) => update({ nofollow: !v }) }), _jsxs("div", { className: "mt-2 border-t border-[var(--bdr)] pt-3", children: [_jsx("p", { className: "mb-2 text-[11px] font-medium text-[var(--sub)]", children: "AI discovery (llms.txt)" }), _jsx(PaneField, { label: "Include in llms.txt", children: _jsxs("select", { className: inputCls, value: form.llmsInclude ?? 'AUTO', onChange: (e) => update({ llmsInclude: e.target.value }), children: [_jsx("option", { value: "AUTO", children: "Auto \u2014 include when eligible" }), _jsx("option", { value: "ALWAYS", children: "Always \u2014 pin it in" }), _jsx("option", { value: "NEVER", children: "Never \u2014 exclude" })] }) }), _jsx(PaneField, { label: "Agent description", hint: _jsx(SeoCharCount, { value: form.llmsDescription ?? '', max: LLMS_DESC_MAX, bar: false }), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.llmsDescription ?? '', onChange: (e) => update({ llmsDescription: e.target.value }), placeholder: form.keyTakeaway ||
392
+ form.metaDescription ||
393
+ 'One line for an AI agent — what this page covers' }) })] })] }), _jsx(SeoAccordionItem, { value: "insights", title: "Insights", children: _jsx(SeoInsightsMetrics, { readability: readability, plainText: plainText }) }), _jsx(SeoAccordionItem, { value: "linking-data", title: "Linking data", children: _jsx(SeoLinkingSection, { entityType: entityType, entityId: entityId, internalLinks: Number(internalLinks), externalLinks: Number(externalLinks), internalLinkOk: internalOk, externalLinkOk: externalOk }) })] })] })), _jsx(MediaPickerModal, { open: imagePickerOpen, onClose: () => setImagePickerOpen(false), accept: "image/*", onSelect: (url) => update({ ogImage: url }) })] }), _jsx(InspectorPaneFooter, { children: _jsx("button", { type: "button", onClick: () => void handleSave(), disabled: saving || loading || !!error, className: "bg-primary text-primary-foreground w-full rounded-[7px] px-3 py-2 text-[13px] font-semibold transition-colors duration-[var(--motion-fast)] hover:opacity-90 focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", children: saving ? 'Saving…' : isDraft ? 'Done' : 'Save Changes' }) })] }));
297
394
  }
298
395
  //# sourceMappingURL=SeoEditorPane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SeoEditorPane.js","sourceRoot":"","sources":["../../../src/components/seo/SeoEditorPane.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SeoEditorPane.js","sourceRoot":"","sources":["../../../src/components/seo/SeoEditorPane.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A search-result preview for the SEO editor.
3
+ *
4
+ * Renders the three things a searcher actually sees, in the order and weight
5
+ * they see them, so an editor can judge a title and description as a result
6
+ * rather than as two form fields.
7
+ *
8
+ * The link blue is a literal, not a token: it is Google's result colour, and
9
+ * the point of the card is to look like the thing being previewed. Tokenising
10
+ * it would let a brand accent repaint it and quietly stop it being a preview.
11
+ * `#8ab4f8` is the dark-scheme equivalent.
12
+ */
13
+ export interface SerpPreviewProps {
14
+ title: string;
15
+ /** Full resolved URL, shown above the title as search engines display it. */
16
+ url: string;
17
+ description: string;
18
+ }
19
+ export declare function SerpPreview({ title, url, description }: SerpPreviewProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=SerpPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerpPreview.d.ts","sourceRoot":"","sources":["../../../src/components/seo/SerpPreview.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CAmBxE"}
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function SerpPreview({ title, url, description }) {
4
+ return (_jsxs("div", { className: "border-border bg-card rounded-lg border px-3 py-[11px]", role: "group", "aria-label": "Search result preview", children: [_jsx("p", { className: "truncate text-[11px] text-emerald-700 dark:text-emerald-400", children: url || 'https://example.com/page' }), _jsx("p", { className: "truncate text-[14px] leading-snug text-[#1a0dab] dark:text-[#8ab4f8]", children: title || 'Untitled page' }), _jsx("p", { className: "text-muted-foreground line-clamp-2 text-[11.5px] leading-snug", children: description || 'No meta description set. Search engines will improvise one.' })] }));
5
+ }
6
+ //# sourceMappingURL=SerpPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerpPreview.js","sourceRoot":"","sources":["../../../src/components/seo/SerpPreview.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAqBZ,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAoB;IACvE,OAAO,CACL,eACE,SAAS,EAAC,wDAAwD,EAClE,IAAI,EAAC,OAAO,gBACD,uBAAuB,aAElC,YAAG,SAAS,EAAC,6DAA6D,YACvE,GAAG,IAAI,0BAA0B,GAChC,EACJ,YAAG,SAAS,EAAC,sEAAsE,YAChF,KAAK,IAAI,eAAe,GACvB,EAEJ,YAAG,SAAS,EAAC,+DAA+D,YACzE,WAAW,IAAI,6DAA6D,GAC3E,IACA,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { PageSection } from '@prenta/core/page-sections';
2
+ import { type PageAuditResult } from '@prenta/core/seo/page-audit';
3
+ import { type SeoContentRecord } from '../lib/seo-service.js';
4
+ export interface UsePageAuditArgs {
5
+ entityType: 'page' | 'post';
6
+ /** Null for an unsaved document — there is no record to audit against yet. */
7
+ entityId: string | null;
8
+ sections: PageSection[];
9
+ slug: string;
10
+ /**
11
+ * The document's own meta, used when no SEO record exists yet. A page that
12
+ * has never had SEO edited still has a title, a description and sections —
13
+ * it is scoreable, and refusing to score it leaves the header chip blank on
14
+ * exactly the pages that most need the nudge.
15
+ */
16
+ fallback?: {
17
+ title?: string;
18
+ description?: string;
19
+ };
20
+ }
21
+ /**
22
+ * The page's audit, from its saved SEO record — or from the document's own
23
+ * fields when no record exists yet, so every page has a number.
24
+ *
25
+ * This exists so the header chip and the rail's tab dot have a score from first
26
+ * paint. Previously the audit was computed inside the SEO pane, which mounts
27
+ * only when its tab is opened — so before that the chip showed a number from a
28
+ * different scorer with different bands, and the header read 53 beside rings
29
+ * reading 0 and 57.
30
+ *
31
+ * While the SEO pane is open it reports a LIVE audit built from unsaved form
32
+ * state, which supersedes this one. Both go through `buildPageAuditInput`, so
33
+ * they differ only in saved-versus-unsaved metadata — the difference an editor
34
+ * expects to see — and never in how a check is decided.
35
+ */
36
+ export declare function usePageAudit({ entityType, entityId, sections, slug, fallback, }: UsePageAuditArgs): {
37
+ audit: PageAuditResult;
38
+ record: SeoContentRecord | null;
39
+ reload: () => void;
40
+ };
41
+ //# sourceMappingURL=usePageAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePageAudit.d.ts","sourceRoot":"","sources":["../../src/hooks/usePageAudit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGpF,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,GACT,EAAE,gBAAgB,GAAG;IACpB,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAiDA"}
@@ -0,0 +1,68 @@
1
+ 'use client';
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { auditPage } from '@prenta/core/seo/page-audit';
4
+ import { fetchSeoContentRecord } from '../lib/seo-service.js';
5
+ import { buildPageAuditInput, metaFromRecord } from '../lib/page-audit-input.js';
6
+ /**
7
+ * The page's audit, from its saved SEO record — or from the document's own
8
+ * fields when no record exists yet, so every page has a number.
9
+ *
10
+ * This exists so the header chip and the rail's tab dot have a score from first
11
+ * paint. Previously the audit was computed inside the SEO pane, which mounts
12
+ * only when its tab is opened — so before that the chip showed a number from a
13
+ * different scorer with different bands, and the header read 53 beside rings
14
+ * reading 0 and 57.
15
+ *
16
+ * While the SEO pane is open it reports a LIVE audit built from unsaved form
17
+ * state, which supersedes this one. Both go through `buildPageAuditInput`, so
18
+ * they differ only in saved-versus-unsaved metadata — the difference an editor
19
+ * expects to see — and never in how a check is decided.
20
+ */
21
+ export function usePageAudit({ entityType, entityId, sections, slug, fallback, }) {
22
+ const [record, setRecord] = useState(null);
23
+ const [nonce, setNonce] = useState(0);
24
+ useEffect(() => {
25
+ if (!entityId) {
26
+ setRecord(null);
27
+ return;
28
+ }
29
+ let alive = true;
30
+ fetchSeoContentRecord(entityType, entityId)
31
+ .then((rec) => {
32
+ if (alive)
33
+ setRecord(rec);
34
+ })
35
+ .catch(() => {
36
+ // A page that has never had SEO saved has no record. That is not an
37
+ // error worth surfacing here — the audit simply reports what it can,
38
+ // and the SEO pane shows its own error state if the user opens it.
39
+ if (alive)
40
+ setRecord(null);
41
+ });
42
+ return () => {
43
+ alive = false;
44
+ };
45
+ }, [entityType, entityId, nonce]);
46
+ /**
47
+ * With a record, audit the saved SEO. Without one, audit the document's own
48
+ * fields and treat the record-only inputs as unset — which is honest: no
49
+ * focus keyword has been chosen, no schema has been bound, and nothing has
50
+ * set noindex. The score is real, and it improves the moment SEO is filled in.
51
+ */
52
+ const meta = record
53
+ ? metaFromRecord(record)
54
+ : {
55
+ metaTitle: fallback?.title ?? '',
56
+ metaDescription: fallback?.description ?? '',
57
+ focusKeyword: '',
58
+ structuredDataType: '',
59
+ noindex: false,
60
+ nosnippet: false,
61
+ llmsInclude: 'AUTO',
62
+ hasOgImage: false,
63
+ };
64
+ const audit = auditPage(buildPageAuditInput({ sections, meta, slug, record }));
65
+ const reload = useCallback(() => setNonce((n) => n + 1), []);
66
+ return { audit, record, reload };
67
+ }
68
+ //# sourceMappingURL=usePageAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePageAudit.js","sourceRoot":"","sources":["../../src/hooks/usePageAudit.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,SAAS,EAAwB,MAAM,6BAA6B,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAyB,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAiBhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,QAAQ,GACS;IAKjB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAA;IACnE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC;aACxC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,KAAK;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,oEAAoE;YACpE,qEAAqE;YACrE,mEAAmE;YACnE,IAAI,KAAK;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QACJ,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAA;QACf,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAEjC;;;;;OAKG;IACH,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC;YACE,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;YAChC,eAAe,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE;YAC5C,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,EAAE;YACtB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,KAAK;SAClB,CAAA;IAEL,MAAM,KAAK,GAAG,SAAS,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAE9E,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;AAClC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { BreakpointId } from '../lib/breakpoints.js';
2
+ import { type FieldLineCount, type ReflowSeverity } from '../lib/reflow-probe.js';
3
+ export interface ReflowRow extends FieldLineCount {
4
+ /** Lines this field ran to in the published version. */
5
+ was: number;
6
+ /** `lines - was`. Only growth is treated as a problem. */
7
+ diff: number;
8
+ state: ReflowSeverity;
9
+ }
10
+ export interface ReflowGuardResult {
11
+ rows: ReflowRow[];
12
+ /** Breakpoints where the field now wraps to more lines than published. */
13
+ grown: ReflowRow[];
14
+ /** The one worth proofing on, or `null` when nothing grew. */
15
+ worst: BreakpointId | null;
16
+ /** Character delta against the published string; 0 when there is no baseline. */
17
+ delta: number;
18
+ }
19
+ /**
20
+ * Measures how one field wraps at every breakpoint, and how that compares to
21
+ * what is published.
22
+ *
23
+ * ── Why it runs on a delay ────────────────────────────────────────────────
24
+ *
25
+ * A pass clones the canvas and lays it out twelve times (six widths, current
26
+ * and published). That is far too much to do per keystroke, and it is also
27
+ * pointless — mid-word text tells an editor nothing. So it settles first.
28
+ *
29
+ * `null` from the probe means the field is not measurable: the section may be
30
+ * rendered by a consumer's own component that carries no `data-cms-field`
31
+ * markers. The guard then reports nothing rather than a number read off the
32
+ * wrong element — an editor treats a line count as a fact, and a confident
33
+ * wrong one is worse than a blank.
34
+ */
35
+ export declare function useReflowGuard(options: {
36
+ canvas: HTMLElement | null;
37
+ sectionId: string;
38
+ fieldPath: string;
39
+ /** Current field text. Only used to retrigger — the probe reads the DOM. */
40
+ value: string;
41
+ /** Published text, or `undefined` when the field has never been published. */
42
+ baseline: string | undefined;
43
+ /** Skip measuring entirely (field type isn't guarded, panel is collapsed). */
44
+ enabled?: boolean;
45
+ delayMs?: number;
46
+ }): ReflowGuardResult;
47
+ //# sourceMappingURL=useReflowGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReflowGuard.d.ts","sourceRoot":"","sources":["../../src/hooks/useReflowGuard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,cAAc,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,0EAA0E;IAC1E,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,8DAA8D;IAC9D,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1B,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAA;CACd;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,iBAAiB,CAoCpB"}