@actuate-media/cms-admin 0.58.1 → 0.60.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 (89) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/__tests__/lib/editor-preview.test.d.ts +2 -0
  3. package/dist/__tests__/lib/editor-preview.test.d.ts.map +1 -0
  4. package/dist/__tests__/lib/editor-preview.test.js +18 -0
  5. package/dist/__tests__/lib/editor-preview.test.js.map +1 -0
  6. package/dist/__tests__/lib/post-editor-service.test.js +16 -0
  7. package/dist/__tests__/lib/post-editor-service.test.js.map +1 -1
  8. package/dist/__tests__/views/dashboard.test.js +23 -0
  9. package/dist/__tests__/views/dashboard.test.js.map +1 -1
  10. package/dist/__tests__/views/use-site-preview.render.test.js +10 -1
  11. package/dist/__tests__/views/use-site-preview.render.test.js.map +1 -1
  12. package/dist/components/PlanUpgradeCallout.d.ts +7 -0
  13. package/dist/components/PlanUpgradeCallout.d.ts.map +1 -0
  14. package/dist/components/PlanUpgradeCallout.js +8 -0
  15. package/dist/components/PlanUpgradeCallout.js.map +1 -0
  16. package/dist/components/seo/SeoIssueFixPanel.d.ts +3 -1
  17. package/dist/components/seo/SeoIssueFixPanel.d.ts.map +1 -1
  18. package/dist/components/seo/SeoIssueFixPanel.js +8 -3
  19. package/dist/components/seo/SeoIssueFixPanel.js.map +1 -1
  20. package/dist/lib/editor-preview.d.ts +4 -0
  21. package/dist/lib/editor-preview.d.ts.map +1 -0
  22. package/dist/lib/editor-preview.js +10 -0
  23. package/dist/lib/editor-preview.js.map +1 -0
  24. package/dist/lib/plan.d.ts +12 -0
  25. package/dist/lib/plan.d.ts.map +1 -0
  26. package/dist/lib/plan.js +30 -0
  27. package/dist/lib/plan.js.map +1 -0
  28. package/dist/lib/post-editor-service.d.ts.map +1 -1
  29. package/dist/lib/post-editor-service.js +4 -1
  30. package/dist/lib/post-editor-service.js.map +1 -1
  31. package/dist/lib/seo-service.d.ts.map +1 -1
  32. package/dist/lib/seo-service.js +11 -3
  33. package/dist/lib/seo-service.js.map +1 -1
  34. package/dist/views/SEO.d.ts.map +1 -1
  35. package/dist/views/SEO.js +6 -1
  36. package/dist/views/SEO.js.map +1 -1
  37. package/dist/views/Users.js +1 -1
  38. package/dist/views/Users.js.map +1 -1
  39. package/dist/views/page-editor/EditorCanvas.d.ts +2 -1
  40. package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -1
  41. package/dist/views/page-editor/EditorCanvas.js +2 -2
  42. package/dist/views/page-editor/EditorCanvas.js.map +1 -1
  43. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
  44. package/dist/views/page-editor/PageSectionEditor.js +4 -1
  45. package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
  46. package/dist/views/page-editor/StructureNotice.d.ts +4 -3
  47. package/dist/views/page-editor/StructureNotice.d.ts.map +1 -1
  48. package/dist/views/page-editor/StructureNotice.js +9 -7
  49. package/dist/views/page-editor/StructureNotice.js.map +1 -1
  50. package/dist/views/page-editor/useSitePreview.d.ts +3 -1
  51. package/dist/views/page-editor/useSitePreview.d.ts.map +1 -1
  52. package/dist/views/page-editor/useSitePreview.js +44 -31
  53. package/dist/views/page-editor/useSitePreview.js.map +1 -1
  54. package/dist/views/post-editor/PostEditorCanvas.d.ts +3 -1
  55. package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -1
  56. package/dist/views/post-editor/PostEditorCanvas.js +2 -2
  57. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
  58. package/dist/views/post-editor/PostSectionEditor.d.ts +8 -0
  59. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  60. package/dist/views/post-editor/PostSectionEditor.js +4 -1
  61. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  62. package/dist/views/seo/AuditTab.d.ts +3 -1
  63. package/dist/views/seo/AuditTab.d.ts.map +1 -1
  64. package/dist/views/seo/AuditTab.js +6 -3
  65. package/dist/views/seo/AuditTab.js.map +1 -1
  66. package/dist/views/settings/MonthlyUsageCard.d.ts.map +1 -1
  67. package/dist/views/settings/MonthlyUsageCard.js +1 -1
  68. package/dist/views/settings/MonthlyUsageCard.js.map +1 -1
  69. package/package.json +2 -2
  70. package/src/__tests__/lib/editor-preview.test.ts +21 -0
  71. package/src/__tests__/lib/post-editor-service.test.ts +17 -0
  72. package/src/__tests__/views/dashboard.test.tsx +26 -0
  73. package/src/__tests__/views/use-site-preview.render.test.tsx +12 -0
  74. package/src/components/PlanUpgradeCallout.tsx +42 -0
  75. package/src/components/seo/SeoIssueFixPanel.tsx +37 -18
  76. package/src/lib/editor-preview.ts +12 -0
  77. package/src/lib/plan.ts +44 -0
  78. package/src/lib/post-editor-service.ts +4 -1
  79. package/src/lib/seo-service.ts +14 -3
  80. package/src/views/SEO.tsx +7 -0
  81. package/src/views/Users.tsx +1 -1
  82. package/src/views/page-editor/EditorCanvas.tsx +6 -1
  83. package/src/views/page-editor/PageSectionEditor.tsx +5 -0
  84. package/src/views/page-editor/StructureNotice.tsx +42 -8
  85. package/src/views/page-editor/useSitePreview.ts +47 -31
  86. package/src/views/post-editor/PostEditorCanvas.tsx +7 -1
  87. package/src/views/post-editor/PostSectionEditor.tsx +6 -0
  88. package/src/views/seo/AuditTab.tsx +23 -10
  89. package/src/views/settings/MonthlyUsageCard.tsx +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AuditTab.js","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GAKxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,gBAAgB,GAAiD;IACrE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC3B,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;IACpC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAC9B,CAAA;AAED,MAAM,cAAc,GAAoD;IACtE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7B,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACvC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACnC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACrC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC5B,CAAA;AAED,SAAS,eAAe,CAAC,MAAsB;IAC7C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,MAAe,CAAA;QACxB,KAAK,SAAS;YACZ,OAAO,SAAkB,CAAA;QAC3B,KAAK,WAAW;YACd,OAAO,MAAe,CAAA;QACxB;YACE,OAAO,UAAmB,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAA0B;IAC/D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5B,OAAO,CACL,eAAK,SAAS,EAAC,uCAAuC,aACpD,eAAK,SAAS,EAAC,6CAA6C,aAC1D,aAAG,SAAS,EAAC,yDAAyD,aACpE,KAAC,KAAK,IAAC,SAAS,EAAC,aAAa,wBAAe,mBAC3C,EACJ,YAAG,SAAS,EAAC,0CAA0C,YACpD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,GACzE,IACA,EACN,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,+BAA+B,8BAAkB,EAC9D,YAAG,SAAS,EAAC,wDAAwD,YAClE,IAAI,EAAE,YAAY,IAAI,CAAC,GACtB,IACA,EACN,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,+BAA+B,6BAAiB,EAC7D,YAAG,SAAS,EAAC,wDAAwD,YAClE,IAAI,EAAE,WAAW,IAAI,CAAC,GACrB,IACA,EACN,eAAK,SAAS,EAAC,6CAA6C,aAC1D,YAAG,SAAS,EAAC,+BAA+B,2BAAe,EAC3D,YAAG,SAAS,EAAC,wDAAwD,YAClE,IAAI,EAAE,cAAc,IAAI,GAAG,GAC1B,IACA,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EACvB,UAAU,GAAG,CAAC,EACd,cAAc,EACd,UAAU,GAKX;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,KAAK,CAAC,CAAA;IACpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,MAAM,CAAC,CAAA;IACpE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,cAAc,IAAI,IAAI,CAAC,CAAA;IAC7F,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7D,MAAM,KAAK,GAAkB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IACtF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,cAAc,CACtD,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAC3B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAC/B,CAAA;IAED,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAA;IAEzB,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAClE,CAAC,MAAM,CAAC,CACT,CAAA;IAED,SAAS,cAAc,CAAC,OAAe;QACrC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,SAAS,aAAa;QACpB,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,UAAU,yBAAyB;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAA;YAC7D,OAAM;QACR,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,6BAA6B,CAAC;gBAC9C,QAAQ;gBACR,MAAM;gBACN,QAAQ;gBACR,YAAY,EAAE,IAAI;aACnB,CAAC,CAAA;YACF,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,0BAA0B,CAAC,CAAA;gBACpD,OAAM;YACR,CAAC;YACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAA;YAC/C,IAAI,SAAS,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpC,KAAK,CAAC,OAAO,CAAC,OAAO,OAAO,mDAAmD,CAAC,CAAA;YAClF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,OAAO,CACX,aAAa,SAAS,YAAY,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CACvH,CAAA;YACH,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3E,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACrC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAA;gBAC1C,OAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAA;YACnF,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YACxC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;YACf,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAA;YACvD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAA;YAClF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,oCAAoC,CAAC,CAAA;YACpF,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,iBAAiB,IAAC,UAAU,EAAE,UAAU,GAAI,EAE7C,MAAC,WAAW,eACV,eAAK,SAAS,EAAC,wEAAwE,aACrF,eAAK,SAAS,EAAC,8DAA8D,aAC3E,cAAK,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,gBAAY,oBAAoB,YAC/E,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3B,iBAEE,IAAI,EAAC,QAAQ,kBACC,QAAQ,KAAK,CAAC,CAAC,EAAE,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAChC,SAAS,EAAE,wIACT,QAAQ,KAAK,CAAC,CAAC,EAAE;gDACf,CAAC,CAAC,oCAAoC;gDACtC,CAAC,CAAC,6DACN,EAAE,YAED,CAAC,CAAC,KAAK,IAVH,CAAC,CAAC,EAAE,CAWF,CACV,CAAC,GACE,EACN,cAAK,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,gBAAY,kBAAkB,YAC7E,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACzB,iBAEE,IAAI,EAAC,QAAQ,kBACC,MAAM,KAAK,CAAC,CAAC,EAAE,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9B,SAAS,EAAE,wIACT,MAAM,KAAK,CAAC,CAAC,EAAE;gDACb,CAAC,CAAC,2BAA2B;gDAC7B,CAAC,CAAC,6DACN,EAAE,YAED,CAAC,CAAC,KAAK,IAVH,CAAC,CAAC,EAAE,CAWF,CACV,CAAC,GACE,IACF,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,yBAAyB,EAClC,QAAQ,EAAE,eAAe,IAAI,OAAO,IAAI,kBAAkB,KAAK,CAAC,eACrD,eAAe,aAE1B,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,wBAAe,EAC3C,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,IAC7C,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,cAAc,IAAI,OAAO,eACxB,cAAc,aAEzB,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,wBAAe,EAC3C,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,IAC5C,IACL,IACF,EAEL,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,UAAU,IAAC,KAAK,EAAC,sBAAiB,GAAG,CACvC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,aAAa,IAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CACpD,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACxB,KAAC,aAAa,IACZ,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI,EACnF,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAC/D,WAAW,EACT,MAAM,KAAK,MAAM;4BACf,CAAC,CAAC,6DAA6D;4BAC/D,CAAC,CAAC,4CAA4C,GAElD,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,gBAAgB,gBAAY,YAAY,aACvD,0BACE,cAAI,SAAS,EAAC,wDAAwD,aACpE,aAAI,SAAS,EAAC,uBAAuB,yBAAc,EACnD,aAAI,SAAS,EAAC,uBAAuB,sBAAW,EAChD,aAAI,SAAS,EAAC,uBAAuB,qBAAU,EAC/C,aAAI,SAAS,EAAC,uBAAuB,uBAAY,EACjD,aAAI,SAAS,EAAC,6BAA6B,YACzC,eAAM,SAAS,EAAC,SAAS,wBAAe,GACrC,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAe,EAAE,EAAE;wCAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;wCACzC,MAAM,QAAQ,GAAG,eAAe,KAAK,KAAK,CAAC,EAAE,CAAA;wCAC7C,OAAO,CACL,MAAC,QAAQ,eACP,cAAI,SAAS,EAAE,sBAAsB,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,aACnE,aAAI,SAAS,EAAC,aAAa,YACzB,gBAAM,SAAS,EAAE,4CAA4C,IAAI,CAAC,IAAI,EAAE,aACtE,eAAM,SAAS,EAAE,4BAA4B,IAAI,CAAC,GAAG,EAAE,wBAAgB,EACtE,IAAI,CAAC,KAAK,IACN,GACJ,EACL,cAAI,SAAS,EAAC,aAAa,aACzB,eAAM,SAAS,EAAC,mCAAmC,YAAE,KAAK,CAAC,KAAK,GAAQ,EACxE,eAAM,SAAS,EAAC,wCAAwC,YACrD,KAAK,CAAC,QAAQ,GACV,IACJ,EACL,aAAI,SAAS,EAAC,mCAAmC,YAC/C,eAAM,SAAS,EAAC,gBAAgB,YAC7B,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,GACjC,GACJ,EACL,aAAI,SAAS,EAAC,aAAa,YACzB,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,CAAC,MAAM,EACnB,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GACnC,GACC,EACL,aAAI,SAAS,EAAC,mBAAmB,YAC/B,KAAC,iBAAiB,IAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EACL,KAAK,CAAC,OAAO;oEACb,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;oEAC/B,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAErC,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,GACxC,GACC,IACF,EACL,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,GAC/C,KA3CW,KAAK,CAAC,EAAE,CA4CZ,CACZ,CAAA;oCACH,CAAC,CAAC,GACI,IACF,GACJ,CACP,IACW,EAEd,KAAC,iBAAiB,IAChB,IAAI,EAAE,aAAa,KAAK,IAAI,EAC5B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EACjD,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,UAAU,GACtB,IACE,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"AuditTab.js","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MonthlyUsageCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAYrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,2CAgFA"}
1
+ {"version":3,"file":"MonthlyUsageCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAYrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,2CAiFA"}
@@ -25,6 +25,6 @@ export function MonthlyUsageCard({ usage, monthlyTokenLimit, onChangeLimit, budg
25
25
  const periodLabel = usage?.periodStart
26
26
  ? new Date(usage.periodStart).toLocaleDateString(undefined, { month: 'long', year: 'numeric' })
27
27
  : 'This month';
28
- return (_jsx(SettingsCard, { title: "Monthly Usage", description: `Token usage for ${periodLabel}. Aggregated from completed AI runs.`, children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-foreground font-medium", children: [formatTokens(used), " tokens used"] }), limit && limit > 0 && (_jsxs("span", { className: "text-muted-foreground", children: ["of ", formatTokens(limit)] }))] }), pct !== null ? (_jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", role: "progressbar", "aria-valuenow": pct, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": `${pct}% of monthly token budget used`, children: _jsx("div", { className: `h-full rounded-full transition-all ${over ? 'bg-destructive' : 'bg-brand'}`, style: { width: `${pct}%` } }) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "No monthly limit set. Usage is tracked but not capped." })), over && (_jsx("p", { className: "text-destructive mt-1 text-sm", role: "status", children: "Usage has exceeded the monthly limit." }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: limitId, className: LABEL_CLASS, children: "Monthly token limit" }), _jsx("input", { id: limitId, type: "text", inputMode: "numeric", value: monthlyTokenLimit, disabled: !canEdit, placeholder: "No limit", "aria-invalid": Boolean(budgetError), "aria-describedby": budgetError ? `${limitId}-error` : undefined, onChange: (e) => onChangeLimit(e.target.value), className: INPUT_CLASS }), budgetError ? (_jsx("p", { id: `${limitId}-error`, className: "text-destructive mt-1 text-sm", children: budgetError })) : (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Leave blank for no limit. Enforcement and alerts arrive with usage metering." }))] })] }) }));
28
+ return (_jsx(SettingsCard, { title: "Monthly Usage", description: `Token usage for ${periodLabel}. Aggregated from completed AI runs.`, children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-foreground font-medium", children: [formatTokens(used), " tokens used"] }), limit && limit > 0 && (_jsxs("span", { className: "text-muted-foreground", children: ["of ", formatTokens(limit)] }))] }), pct !== null ? (_jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", role: "progressbar", "aria-valuenow": pct, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": `${pct}% of monthly token budget used`, children: _jsx("div", { className: `h-full rounded-full transition-all ${over ? 'bg-destructive' : 'bg-brand'}`, style: { width: `${pct}%` } }) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "No monthly limit set. Usage is tracked but not capped." })), over && (_jsx("p", { className: "text-destructive mt-1 text-sm", role: "status", children: "Usage has exceeded the monthly limit." }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: limitId, className: LABEL_CLASS, children: "Monthly token limit" }), _jsx("input", { id: limitId, type: "text", inputMode: "numeric", value: monthlyTokenLimit, disabled: !canEdit, placeholder: "No limit", "aria-invalid": Boolean(budgetError), "aria-describedby": budgetError ? `${limitId}-error` : undefined, onChange: (e) => onChangeLimit(e.target.value), className: INPUT_CLASS }), budgetError ? (_jsx("p", { id: `${limitId}-error`, className: "text-destructive mt-1 text-sm", children: budgetError })) : (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Leave blank for no limit. When set, new AI requests are blocked with HTTP 429 after the limit is reached." }))] })] }) }));
29
29
  }
30
30
  //# sourceMappingURL=MonthlyUsageCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MonthlyUsageCard.js","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonthlyUsageCard.js","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuate-media/cms-admin",
3
- "version": "0.58.1",
3
+ "version": "0.60.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/actuate-media/actuatecms.git",
@@ -90,7 +90,7 @@
90
90
  "tailwindcss": "^4.0.0",
91
91
  "typescript": "^5.7.0",
92
92
  "vitest": "^4.1.0",
93
- "@actuate-media/cms-core": "0.79.3",
93
+ "@actuate-media/cms-core": "0.82.0",
94
94
  "@actuate-media/component-blocks": "0.2.1"
95
95
  },
96
96
  "scripts": {
@@ -0,0 +1,21 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import { resolveDefaultSitePreview } from '../../lib/editor-preview.js'
4
+
5
+ describe('resolveDefaultSitePreview', () => {
6
+ it('returns false when unset', () => {
7
+ expect(resolveDefaultSitePreview(undefined, 'pages')).toBe(false)
8
+ expect(resolveDefaultSitePreview({}, 'posts')).toBe(false)
9
+ })
10
+
11
+ it('honours a global true flag', () => {
12
+ expect(resolveDefaultSitePreview({ defaultSitePreview: true }, 'pages')).toBe(true)
13
+ expect(resolveDefaultSitePreview({ defaultSitePreview: true }, 'posts')).toBe(true)
14
+ })
15
+
16
+ it('honours per-collection flags', () => {
17
+ const editor = { defaultSitePreview: { pages: true, posts: false } }
18
+ expect(resolveDefaultSitePreview(editor, 'pages')).toBe(true)
19
+ expect(resolveDefaultSitePreview(editor, 'posts')).toBe(false)
20
+ })
21
+ })
@@ -289,6 +289,23 @@ describe('unmanaged section round-trip (data-loss regression)', () => {
289
289
  settings: { paddingY: 'lg' as const },
290
290
  }
291
291
 
292
+ it('fetchPostForEditor prefers data.title over denormalized doc.title', async () => {
293
+ cmsApiMock.mockResolvedValueOnce({
294
+ data: {
295
+ id: 'p1',
296
+ title: 'Foster-Independence-In-Children-With-Autism',
297
+ slug: 'foster-independence-in-children-with-autism',
298
+ status: 'DRAFT',
299
+ data: {
300
+ title: 'Foster independence in children with autism',
301
+ sections: [],
302
+ },
303
+ },
304
+ })
305
+ const post = await fetchPostForEditor('blog', 'p1')
306
+ expect(post.title).toBe('Foster independence in children with autism')
307
+ })
308
+
292
309
  it('fetchPostForEditor preserves unknown section types as unmanaged', async () => {
293
310
  cmsApiMock.mockResolvedValueOnce({
294
311
  data: {
@@ -78,6 +78,32 @@ describe('Dashboard', () => {
78
78
  expect(refetch).toHaveBeenCalledTimes(1)
79
79
  })
80
80
 
81
+ it('renders Delivery API metrics when api-delivery stats are available', () => {
82
+ responses['/stats'] = statsResult()
83
+ responses['/stats/api-delivery'] = {
84
+ data: {
85
+ hasData: true,
86
+ requests24h: 1200,
87
+ deltaPercent: 8,
88
+ errorRate: 0.01,
89
+ avgLatencyMs: 42,
90
+ p95LatencyMs: 110,
91
+ maxLatencyMs: 500,
92
+ webhookCount: 2,
93
+ webhookActiveCount: 1,
94
+ },
95
+ loading: false,
96
+ error: null,
97
+ exhausted: false,
98
+ refetch: () => {},
99
+ }
100
+
101
+ render(<Dashboard config={{ collections: [] }} session={{}} onNavigate={() => {}} />)
102
+
103
+ expect(screen.getByText('Delivery API')).toBeTruthy()
104
+ expect(screen.getByText('1.2K')).toBeTruthy()
105
+ })
106
+
81
107
  // ── EI-1 regression: recent-activity rows must open the *correct* editor ──
82
108
 
83
109
  it('routes a recent post to the section-based post editor (not the legacy editor)', () => {
@@ -36,12 +36,14 @@ function Harness({
36
36
  dirty = false,
37
37
  saveState = 'idle' as SaveState,
38
38
  saveDraft = vi.fn(async () => true),
39
+ defaultActive = false,
39
40
  }: {
40
41
  documentId?: string | null
41
42
  slug?: string | null
42
43
  dirty?: boolean
43
44
  saveState?: SaveState
44
45
  saveDraft?: () => Promise<boolean>
46
+ defaultActive?: boolean
45
47
  }) {
46
48
  const sp = useSitePreview({
47
49
  collection: 'pages',
@@ -52,6 +54,7 @@ function Harness({
52
54
  dirty,
53
55
  saveState,
54
56
  saveDraft,
57
+ defaultActive,
55
58
  })
56
59
  return (
57
60
  <div>
@@ -109,6 +112,15 @@ describe('useSitePreview', () => {
109
112
  expect(state().active).toBe(false)
110
113
  })
111
114
 
115
+ it('auto-activates when defaultActive is true', async () => {
116
+ render(<Harness defaultActive />)
117
+ await waitFor(() => {
118
+ expect(state().active).toBe(true)
119
+ expect(state().url).toBe('https://site.test/about?preview=tok-123')
120
+ })
121
+ expect(createPreviewToken).toHaveBeenCalledWith('pages', 'doc-1')
122
+ })
123
+
112
124
  it('bumps reloadKey after a save completes while the preview is open', async () => {
113
125
  const { rerender } = render(<Harness saveState="idle" />)
114
126
  fireEvent.click(screen.getByText('toggle'))
@@ -0,0 +1,42 @@
1
+ 'use client'
2
+
3
+ import { ArrowUpRight } from 'lucide-react'
4
+ import type { PlanFeature } from '../lib/plan.js'
5
+ import { planFeatureLabel } from '../lib/plan.js'
6
+
7
+ export function PlanUpgradeCallout({
8
+ feature,
9
+ requiredTier = 'pro',
10
+ upgradeUrl,
11
+ }: {
12
+ feature: PlanFeature
13
+ requiredTier?: string
14
+ upgradeUrl?: string | null
15
+ }) {
16
+ return (
17
+ <div
18
+ className="border-border bg-muted/40 space-y-2 rounded-md border p-4"
19
+ role="status"
20
+ aria-live="polite"
21
+ >
22
+ <p className="text-foreground text-sm font-medium">
23
+ Upgrade to unlock {planFeatureLabel(feature)}
24
+ </p>
25
+ <p className="text-muted-foreground text-sm">
26
+ This feature requires the {requiredTier} plan. Audits, issue tracking, and export remain
27
+ available on your current plan.
28
+ </p>
29
+ {upgradeUrl ? (
30
+ <a
31
+ href={upgradeUrl}
32
+ target="_blank"
33
+ rel="noopener noreferrer"
34
+ className="text-primary inline-flex items-center gap-1 text-sm font-medium hover:underline"
35
+ >
36
+ View plans
37
+ <ArrowUpRight className="h-4 w-4" aria-hidden />
38
+ </a>
39
+ ) : null}
40
+ </div>
41
+ )
42
+ }
@@ -20,6 +20,8 @@ import {
20
20
  type SeoIssue,
21
21
  type SeoIssueFixSuggestion,
22
22
  } from '../../lib/seo-service.js'
23
+ import { hasPlanFeature, type PlanInfo } from '../../lib/plan.js'
24
+ import { PlanUpgradeCallout } from '../PlanUpgradeCallout.js'
23
25
  import { SeoErrorState, btnPrimary, btnSecondary } from './primitives.js'
24
26
 
25
27
  function formatValue(value: string | boolean | null): string {
@@ -220,16 +222,21 @@ export function SeoIssueFixPanel({
220
222
  onChanged,
221
223
  onNavigate,
222
224
  onOpenDetails,
225
+ planInfo,
223
226
  }: {
224
227
  issue: SeoIssue
225
228
  expanded: boolean
226
229
  onChanged?: () => void
227
230
  onNavigate?: (path: string) => void
228
231
  onOpenDetails?: () => void
232
+ planInfo?: PlanInfo | null
229
233
  }) {
230
234
  const inlineFix = isInlineSeoFixIssue(issue.type)
231
235
  const contentBriefEligible = supportsSeoContentBrief(issue.type)
232
236
  const researchEligible = supportsSeoContentResearch(issue.type)
237
+ const inlineApplyEnabled = hasPlanFeature(planInfo, 'seo.inlineApply')
238
+ const contentBriefEnabled = hasPlanFeature(planInfo, 'seo.contentBrief')
239
+ const contentResearchEnabled = hasPlanFeature(planInfo, 'seo.contentResearch')
233
240
 
234
241
  const [suggestion, setSuggestion] = useState<SeoIssueFixSuggestion | null>(null)
235
242
  const [contentBrief, setContentBrief] = useState<SeoContentBrief | null>(null)
@@ -468,7 +475,7 @@ export function SeoIssueFixPanel({
468
475
  ) : null}
469
476
 
470
477
  <div className="flex flex-wrap items-center gap-2">
471
- {inlineFix && suggestion?.autoFixable ? (
478
+ {inlineFix && suggestion?.autoFixable && inlineApplyEnabled ? (
472
479
  <button
473
480
  type="button"
474
481
  className={btnPrimary}
@@ -478,6 +485,8 @@ export function SeoIssueFixPanel({
478
485
  <Check className="h-4 w-4" aria-hidden />
479
486
  {busy ? 'Applying…' : 'Approve fix'}
480
487
  </button>
488
+ ) : inlineFix && suggestion?.autoFixable && !inlineApplyEnabled ? (
489
+ <PlanUpgradeCallout feature="seo.inlineApply" upgradeUrl={planInfo?.upgradeUrl} />
481
490
  ) : inlineFix && suggestion?.aiUnavailable ? (
482
491
  <p className="text-muted-foreground text-sm">
483
492
  Configure an AI provider in Settings → AI to enable generated fixes for this
@@ -487,7 +496,15 @@ export function SeoIssueFixPanel({
487
496
 
488
497
  {contentBriefEligible ? (
489
498
  <>
490
- {researchEligible ? (
499
+ {!contentBriefEnabled || !contentResearchEnabled ? (
500
+ <PlanUpgradeCallout
501
+ feature={
502
+ !contentResearchEnabled ? 'seo.contentResearch' : 'seo.contentBrief'
503
+ }
504
+ upgradeUrl={planInfo?.upgradeUrl}
505
+ />
506
+ ) : null}
507
+ {researchEligible && contentResearchEnabled ? (
491
508
  <button
492
509
  type="button"
493
510
  className={!contentBrief && !contentResearch ? btnPrimary : btnSecondary}
@@ -501,22 +518,24 @@ export function SeoIssueFixPanel({
501
518
  {researching ? 'Researching…' : 'Research & brief'}
502
519
  </button>
503
520
  ) : null}
504
- <button
505
- type="button"
506
- className={contentBrief ? btnSecondary : btnPrimary}
507
- onClick={handleGenerateBrief}
508
- disabled={busy || generatingBrief || researching}
509
- >
510
- <Wand2
511
- className={`h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`}
512
- aria-hidden
513
- />
514
- {generatingBrief
515
- ? 'Generating brief…'
516
- : contentBrief
517
- ? 'Regenerate brief'
518
- : 'Generate content brief'}
519
- </button>
521
+ {contentBriefEnabled ? (
522
+ <button
523
+ type="button"
524
+ className={contentBrief ? btnSecondary : btnPrimary}
525
+ onClick={handleGenerateBrief}
526
+ disabled={busy || generatingBrief || researching}
527
+ >
528
+ <Wand2
529
+ className={`h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`}
530
+ aria-hidden
531
+ />
532
+ {generatingBrief
533
+ ? 'Generating brief…'
534
+ : contentBrief
535
+ ? 'Regenerate brief'
536
+ : 'Generate content brief'}
537
+ </button>
538
+ ) : null}
520
539
  </>
521
540
  ) : null}
522
541
 
@@ -0,0 +1,12 @@
1
+ import type { AdminEditorConfig } from '@actuate-media/cms-core'
2
+
3
+ /** Resolve whether a section editor should open with Site preview active. */
4
+ export function resolveDefaultSitePreview(
5
+ editor: AdminEditorConfig | undefined,
6
+ kind: 'pages' | 'posts',
7
+ ): boolean {
8
+ const setting = editor?.defaultSitePreview
9
+ if (setting === true) return true
10
+ if (setting == null || setting === false) return false
11
+ return kind === 'pages' ? setting.pages === true : setting.posts === true
12
+ }
@@ -0,0 +1,44 @@
1
+ import { cmsApi } from './api.js'
2
+
3
+ export type PlanTier = 'starter' | 'pro' | 'enterprise'
4
+
5
+ export type PlanFeature =
6
+ | 'seo.inlineApply'
7
+ | 'seo.contentBrief'
8
+ | 'seo.contentResearch'
9
+ | 'seo.batchContentBriefs'
10
+
11
+ export interface PlanInfo {
12
+ tier: PlanTier
13
+ features: PlanFeature[]
14
+ upgradeUrl: string | null
15
+ }
16
+
17
+ export async function fetchPlanInfo(): Promise<PlanInfo | null> {
18
+ const res = await cmsApi<PlanInfo>('/plan')
19
+ if (res.error || !res.data) return null
20
+ return res.data
21
+ }
22
+
23
+ /** When plan info is unavailable, assume full access (self-hosted default). */
24
+ export function hasPlanFeature(plan: PlanInfo | null | undefined, feature: PlanFeature): boolean {
25
+ if (!plan) return true
26
+ return plan.features.includes(feature)
27
+ }
28
+
29
+ export function planFeatureLabel(feature: PlanFeature): string {
30
+ switch (feature) {
31
+ case 'seo.inlineApply':
32
+ return 'SEO inline apply'
33
+ case 'seo.contentBrief':
34
+ return 'SEO content briefs'
35
+ case 'seo.contentResearch':
36
+ return 'SEO topic research'
37
+ case 'seo.batchContentBriefs':
38
+ return 'SEO batch content briefs'
39
+ default: {
40
+ const _exhaustive: never = feature
41
+ return _exhaustive
42
+ }
43
+ }
44
+ }
@@ -220,10 +220,13 @@ export function parseTags(raw: unknown): string[] {
220
220
 
221
221
  function rowToEditorPost(postType: string, doc: DocumentApiRow): EditorPost {
222
222
  const data = doc.data ?? {}
223
+ const dataTitle = dataStr(data, 'title')
223
224
  return {
224
225
  id: doc.id,
225
226
  postType,
226
- title: doc.title ?? dataStr(data, 'title'),
227
+ // Prefer the JSON field — the denormalized `doc.title` column can lag or
228
+ // reflect slug-derived fallbacks on imported/legacy rows.
229
+ title: dataTitle || (doc.title ?? ''),
227
230
  slug: doc.slug ?? dataStr(data, 'slug'),
228
231
  excerpt: dataStr(data, 'excerpt'),
229
232
  featuredImage: dataStr(data, 'featuredImage'),
@@ -817,9 +817,20 @@ export async function fetchRedirectOverview(): Promise<RedirectOverview> {
817
817
  }
818
818
 
819
819
  export async function fetchRedirectRules(): Promise<RedirectRule[]> {
820
- const res = await cmsApi<{ rules: RedirectRule[] }>('/seo/redirects')
821
- throwIfError(res)
822
- return res.data?.rules ?? []
820
+ const rules: RedirectRule[] = []
821
+ let page = 1
822
+ let totalPages = 1
823
+ do {
824
+ const res = await cmsApi<{
825
+ rules: RedirectRule[]
826
+ totalPages?: number
827
+ }>(`/seo/redirects?page=${page}&pageSize=500`)
828
+ throwIfError(res)
829
+ rules.push(...(res.data?.rules ?? []))
830
+ totalPages = res.data?.totalPages ?? 1
831
+ page += 1
832
+ } while (page <= totalPages)
833
+ return rules
823
834
  }
824
835
 
825
836
  export interface RedirectRulePayload {
package/src/views/SEO.tsx CHANGED
@@ -20,6 +20,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'
20
20
  import { toast } from 'sonner'
21
21
  import { ErrorBoundary } from '../components/ErrorBoundary.js'
22
22
  import { fetchSeoOverview, runSeoAudit } from '../lib/seo-service.js'
23
+ import { fetchPlanInfo, type PlanInfo } from '../lib/plan.js'
23
24
  import { ScorePill, btnPrimary, btnSecondary } from '../components/seo/primitives.js'
24
25
  import { SeoCopilotDrawer } from '../components/seo/SeoCopilotDrawer.js'
25
26
  import { useSeoResource } from './seo/useSeoResource.js'
@@ -77,6 +78,11 @@ export function SEO({ onNavigate, initialTab = 'overview' }: SEOProps) {
77
78
  const [auditing, setAuditing] = useState(false)
78
79
  const [copilotOpen, setCopilotOpen] = useState(false)
79
80
  const [deepLink, setDeepLink] = useState<UrlState>(initialUrl)
81
+ const [planInfo, setPlanInfo] = useState<PlanInfo | null>(null)
82
+
83
+ useEffect(() => {
84
+ void fetchPlanInfo().then(setPlanInfo)
85
+ }, [])
80
86
 
81
87
  // Overview resource is owned here so the header score pill and the Overview
82
88
  // tab share a single request; `refetchKey` re-runs it after an audit.
@@ -217,6 +223,7 @@ export function SEO({ onNavigate, initialTab = 'overview' }: SEOProps) {
217
223
  refetchKey={refetchKey}
218
224
  initialIssueId={deepLink.issueId}
219
225
  onNavigate={onNavigate}
226
+ planInfo={planInfo}
220
227
  />
221
228
  )}
222
229
  </Tabs.Content>
@@ -677,7 +677,7 @@ export interface UsersProps {
677
677
  }
678
678
 
679
679
  export function Users({ embedded = false }: UsersProps = {}) {
680
- const members = useApiData<ApiMember[]>('/users')
680
+ const members = useApiData<ApiMember[]>('/users?pageSize=200')
681
681
  const invites = useApiData<ApiInvite[]>('/invites')
682
682
  const stats = useApiData<ApiStats>('/users/stats')
683
683
  const review = useApiData<ApiRecommendation[]>('/access-review')
@@ -15,6 +15,7 @@ interface EditorCanvasProps {
15
15
  onAddSection: () => void
16
16
  /** Section types rendered as placeholders — shows the "Structure view" notice. */
17
17
  structuralTypes?: string[]
18
+ sitePreviewAvailable?: boolean
18
19
  }
19
20
 
20
21
  /**
@@ -30,6 +31,7 @@ export function EditorCanvas({
30
31
  onSelect,
31
32
  onAddSection,
32
33
  structuralTypes = [],
34
+ sitePreviewAvailable = false,
33
35
  }: EditorCanvasProps) {
34
36
  const vp = getViewport(viewport)
35
37
  const containerRef = useRef<HTMLDivElement>(null)
@@ -78,7 +80,10 @@ export function EditorCanvas({
78
80
  <EmptyCanvas onAddSection={onAddSection} />
79
81
  ) : (
80
82
  <>
81
- <StructureNotice structuralTypes={structuralTypes} />
83
+ <StructureNotice
84
+ structuralTypes={structuralTypes}
85
+ sitePreviewAvailable={sitePreviewAvailable}
86
+ />
82
87
  <div
83
88
  className="mx-auto"
84
89
  style={{ width: vp.width * scale, height: surfaceHeight ?? undefined }}
@@ -43,6 +43,7 @@ import { SectionInspector } from './SectionInspector.js'
43
43
  import { AddSectionModal } from './AddSectionModal.js'
44
44
  import { PageSettingsModal } from './PageSettingsModal.js'
45
45
  import { ValidationSummary } from './ValidationSummary.js'
46
+ import { resolveDefaultSitePreview } from '../../lib/editor-preview.js'
46
47
 
47
48
  interface PageSectionEditorProps {
48
49
  /** undefined when creating a new page (`/pages/new`) */
@@ -275,8 +276,11 @@ export function PageSectionEditor({
275
276
  dirty,
276
277
  saveState,
277
278
  saveDraft: handleSaveDraft,
279
+ defaultActive: resolveDefaultSitePreview(config?.admin?.editor, 'pages'),
278
280
  })
279
281
 
282
+ const sitePreviewAvailable = Boolean(page?.id && page?.slug)
283
+
280
284
  const requestPublish = useCallback(() => {
281
285
  if (!page) return
282
286
  const result = validatePage(page, true)
@@ -550,6 +554,7 @@ export function PageSectionEditor({
550
554
  onSelect={setSelectedId}
551
555
  onAddSection={() => setAddOpen(true)}
552
556
  structuralTypes={structuralTypes}
557
+ sitePreviewAvailable={sitePreviewAvailable && !sitePreview.active}
553
558
  />
554
559
  )}
555
560
  </div>
@@ -5,12 +5,47 @@ import { Puzzle } from 'lucide-react'
5
5
  /**
6
6
  * Banner shown above the canvas surface when the document contains section
7
7
  * types the canvas can only render as placeholders (custom / unmanaged
8
- * types). Tells authors the canvas is a structural view — the real design
9
- * lives on the public site behind "View on site".
8
+ * types), or when Site preview is available for accurate styling.
10
9
  */
11
- export function StructureNotice({ structuralTypes }: { structuralTypes: string[] }) {
12
- if (structuralTypes.length === 0) return null
13
- const count = structuralTypes.length
10
+ export function StructureNotice({
11
+ structuralTypes,
12
+ sitePreviewAvailable = false,
13
+ }: {
14
+ structuralTypes: string[]
15
+ /** When true, nudge editors toward the Site preview toggle for WYSIWYG. */
16
+ sitePreviewAvailable?: boolean
17
+ }) {
18
+ if (structuralTypes.length === 0 && !sitePreviewAvailable) return null
19
+
20
+ if (structuralTypes.length > 0) {
21
+ const count = structuralTypes.length
22
+ return (
23
+ <div
24
+ role="note"
25
+ className="border-border bg-card text-muted-foreground mx-auto mb-4 flex w-fit max-w-full items-center gap-2 rounded-lg border px-3 py-1.5 text-xs"
26
+ >
27
+ <Puzzle className="h-3.5 w-3.5 shrink-0" aria-hidden />
28
+ <span>
29
+ <span className="text-foreground font-medium">Structure view</span> — {count} custom
30
+ section type{count > 1 ? 's' : ''} shown as placeholders.
31
+ {sitePreviewAvailable ? (
32
+ <>
33
+ {' '}
34
+ Use <span className="text-foreground font-medium">Site preview</span> for accurate
35
+ styling.
36
+ </>
37
+ ) : (
38
+ <>
39
+ {' '}
40
+ Use <span className="text-foreground font-medium">View on site</span> for the real
41
+ design.
42
+ </>
43
+ )}
44
+ </span>
45
+ </div>
46
+ )
47
+ }
48
+
14
49
  return (
15
50
  <div
16
51
  role="note"
@@ -18,9 +53,8 @@ export function StructureNotice({ structuralTypes }: { structuralTypes: string[]
18
53
  >
19
54
  <Puzzle className="h-3.5 w-3.5 shrink-0" aria-hidden />
20
55
  <span>
21
- <span className="text-foreground font-medium">Structure view</span> — {count} custom section{' '}
22
- type{count > 1 ? 's' : ''} shown as placeholders. Use{' '}
23
- <span className="text-foreground font-medium">View on site</span> for the real design.
56
+ <span className="text-foreground font-medium">Structure preview</span> — use{' '}
57
+ <span className="text-foreground font-medium">Site preview</span> for accurate styling.
24
58
  </span>
25
59
  </div>
26
60
  )