@prenta/admin 1.2.0 → 1.3.1

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 (81) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/design-system/README.md +1 -1
  3. package/design-system/tokens.css +3 -3
  4. package/design-system/tokens.json +2 -2
  5. package/design-system/tokens.scss +1 -3
  6. package/dist/__tests__/lib/page-audit-input.test.js +81 -0
  7. package/dist/__tests__/lib/page-audit-input.test.js.map +1 -1
  8. package/dist/__tests__/lib/version-history.test.js +18 -0
  9. package/dist/__tests__/lib/version-history.test.js.map +1 -1
  10. package/dist/__tests__/no-server-barrel-imports.test.js +3 -4
  11. package/dist/__tests__/no-server-barrel-imports.test.js.map +1 -1
  12. package/dist/__tests__/views/editor-top-bar.render.test.js +5 -0
  13. package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
  14. package/dist/__tests__/views/post-section-editor.test.js +38 -0
  15. package/dist/__tests__/views/post-section-editor.test.js.map +1 -1
  16. package/dist/__tests__/views/post-tab.render.test.d.ts +2 -0
  17. package/dist/__tests__/views/post-tab.render.test.d.ts.map +1 -0
  18. package/dist/__tests__/views/post-tab.render.test.js +86 -0
  19. package/dist/__tests__/views/post-tab.render.test.js.map +1 -0
  20. package/dist/components/CanvasEditTip.js +1 -1
  21. package/dist/components/CanvasEditTip.js.map +1 -1
  22. package/dist/components/seo/SeoEditorPane.d.ts +9 -1
  23. package/dist/components/seo/SeoEditorPane.d.ts.map +1 -1
  24. package/dist/components/seo/SeoEditorPane.js +5 -2
  25. package/dist/components/seo/SeoEditorPane.js.map +1 -1
  26. package/dist/hooks/usePageAudit.d.ts +4 -1
  27. package/dist/hooks/usePageAudit.d.ts.map +1 -1
  28. package/dist/hooks/usePageAudit.js +3 -3
  29. package/dist/hooks/usePageAudit.js.map +1 -1
  30. package/dist/lib/page-audit-input.d.ts +26 -1
  31. package/dist/lib/page-audit-input.d.ts.map +1 -1
  32. package/dist/lib/page-audit-input.js +48 -2
  33. package/dist/lib/page-audit-input.js.map +1 -1
  34. package/dist/lib/version-history.d.ts +5 -0
  35. package/dist/lib/version-history.d.ts.map +1 -1
  36. package/dist/lib/version-history.js +18 -0
  37. package/dist/lib/version-history.js.map +1 -1
  38. package/dist/prenta-admin.css +1 -1
  39. package/dist/views/page-editor/EditorTopBar.js +1 -1
  40. package/dist/views/page-editor/EditorTopBar.js.map +1 -1
  41. package/dist/views/post-editor/PostEditorCanvas.d.ts +14 -1
  42. package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -1
  43. package/dist/views/post-editor/PostEditorCanvas.js +2 -2
  44. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
  45. package/dist/views/post-editor/PostFieldsForm.d.ts +39 -0
  46. package/dist/views/post-editor/PostFieldsForm.d.ts.map +1 -0
  47. package/dist/views/post-editor/PostFieldsForm.js +85 -0
  48. package/dist/views/post-editor/PostFieldsForm.js.map +1 -0
  49. package/dist/views/post-editor/PostFieldsModal.d.ts +2 -14
  50. package/dist/views/post-editor/PostFieldsModal.d.ts.map +1 -1
  51. package/dist/views/post-editor/PostFieldsModal.js +20 -81
  52. package/dist/views/post-editor/PostFieldsModal.js.map +1 -1
  53. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  54. package/dist/views/post-editor/PostSectionEditor.js +122 -34
  55. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  56. package/dist/views/post-editor/PostTab.d.ts +17 -0
  57. package/dist/views/post-editor/PostTab.d.ts.map +1 -0
  58. package/dist/views/post-editor/PostTab.js +23 -0
  59. package/dist/views/post-editor/PostTab.js.map +1 -0
  60. package/dist/views/settings/useAppearanceSettings.js +1 -1
  61. package/dist/views/settings/useAppearanceSettings.js.map +1 -1
  62. package/package.json +6 -6
  63. package/src/__tests__/lib/page-audit-input.test.ts +99 -0
  64. package/src/__tests__/lib/version-history.test.ts +20 -0
  65. package/src/__tests__/no-server-barrel-imports.test.ts +3 -4
  66. package/src/__tests__/views/editor-top-bar.render.test.tsx +6 -0
  67. package/src/__tests__/views/post-section-editor.test.tsx +59 -0
  68. package/src/__tests__/views/post-tab.render.test.tsx +116 -0
  69. package/src/components/CanvasEditTip.tsx +2 -2
  70. package/src/components/seo/SeoEditorPane.tsx +16 -1
  71. package/src/hooks/usePageAudit.ts +9 -2
  72. package/src/lib/page-audit-input.ts +67 -1
  73. package/src/lib/version-history.ts +23 -0
  74. package/src/styles/prenta-tokens.css +3 -3
  75. package/src/views/page-editor/EditorTopBar.tsx +2 -2
  76. package/src/views/post-editor/PostEditorCanvas.tsx +27 -5
  77. package/src/views/post-editor/PostFieldsForm.tsx +322 -0
  78. package/src/views/post-editor/PostFieldsModal.tsx +30 -281
  79. package/src/views/post-editor/PostSectionEditor.tsx +204 -59
  80. package/src/views/post-editor/PostTab.tsx +46 -0
  81. package/src/views/settings/useAppearanceSettings.ts +1 -1
@@ -16,6 +16,19 @@ interface PostEditorCanvasProps {
16
16
  onAddSection?: () => void;
17
17
  /** Section types rendered as placeholders — shows the "Structure view" notice. */
18
18
  structuralTypes?: string[];
19
+ /**
20
+ * Read-only render of a past version. Suppresses selection and the editing
21
+ * affordances, and turns on the changed-section outlines.
22
+ */
23
+ reviewing?: boolean;
24
+ /** Sections that differ from the version before the one being reviewed. */
25
+ changedSectionIds?: ReadonlySet<string>;
26
+ /**
27
+ * Rendered in place of the editing tip / structure notice while reviewing.
28
+ * Passed in rather than built here because the review bar's actions belong
29
+ * to the editor's history state, which the canvas knows nothing about.
30
+ */
31
+ reviewBar?: React.ReactNode;
19
32
  }
20
33
  /**
21
34
  * Post preview canvas.
@@ -30,6 +43,6 @@ interface PostEditorCanvasProps {
30
43
  * `container.clientWidth - 48`, which disagrees with the canvas's own metrics
31
44
  * once a scrollbar appears, and it had no breakpoint/scale readout at all.
32
45
  */
33
- export declare function PostEditorCanvas({ sections, header, context, selectedId, viewport, zoom, onSelect, onScaleChange, onCanvasElement, onAddSection, structuralTypes, }: PostEditorCanvasProps): import("react/jsx-runtime").JSX.Element;
46
+ export declare function PostEditorCanvas({ sections, header, context, selectedId, viewport, zoom, onSelect, onScaleChange, onCanvasElement, onAddSection, structuralTypes, reviewing, changedSectionIds, reviewBar, }: PostEditorCanvasProps): import("react/jsx-runtime").JSX.Element;
34
47
  export {};
35
48
  //# sourceMappingURL=PostEditorCanvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostEditorCanvas.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostEditorCanvas.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAErF,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAE1F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAG7D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAY,EACZ,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAoB,GACrB,EAAE,qBAAqB,2CAoCvB"}
1
+ {"version":3,"file":"PostEditorCanvas.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostEditorCanvas.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAErF,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAE1F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAG7D,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAY,EACZ,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAoB,EACpB,SAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,qBAAqB,2CA0CvB"}
@@ -19,9 +19,9 @@ import { PostHeader } from './PostHeader.js';
19
19
  * `container.clientWidth - 48`, which disagrees with the canvas's own metrics
20
20
  * once a scrollbar appears, and it had no breakpoint/scale readout at all.
21
21
  */
22
- export function PostEditorCanvas({ sections, header, context, selectedId, viewport, zoom = 'fit', onSelect, onScaleChange, onCanvasElement, onAddSection, structuralTypes = [], }) {
22
+ export function PostEditorCanvas({ sections, header, context, selectedId, viewport, zoom = 'fit', onSelect, onScaleChange, onCanvasElement, onAddSection, structuralTypes = [], reviewing = false, changedSectionIds, reviewBar, }) {
23
23
  const registerRef = useSectionRefs(selectedId);
24
- return (_jsx(CanvasScroll, { children: _jsxs(CanvasSurface, { breakpoint: viewport, zoom: zoom, onScaleChange: onScaleChange, onCanvasElement: onCanvasElement, chrome: _jsxs(_Fragment, { children: [sections.length > 0 && _jsx(CanvasEditTip, {}), _jsx(StructureNotice, { structuralTypes: structuralTypes })] }), children: [_jsx(PostHeader, { config: header, context: context }), sections.length === 0 ? (_jsx(EmptyBody, { onAddSection: onAddSection })) : (sections.map((section) => (_jsx(SectionRenderer, { section: section, context: context, editable: true, selected: section.id === selectedId, onSelect: onSelect, registerRef: registerRef }, section.id))))] }) }));
24
+ return (_jsx(CanvasScroll, { children: _jsxs(CanvasSurface, { breakpoint: viewport, zoom: zoom, onScaleChange: onScaleChange, onCanvasElement: onCanvasElement, chrome: reviewing ? (reviewBar) : (_jsxs(_Fragment, { children: [sections.length > 0 && _jsx(CanvasEditTip, {}), _jsx(StructureNotice, { structuralTypes: structuralTypes })] })), children: [_jsx(PostHeader, { config: header, context: context }), sections.length === 0 ? (_jsx(EmptyBody, { onAddSection: reviewing ? undefined : onAddSection })) : (sections.map((section) => (_jsx(SectionRenderer, { section: section, context: context, editable: true, reviewing: reviewing, changed: changedSectionIds?.has(section.id) ?? false, selected: section.id === selectedId, onSelect: onSelect, registerRef: registerRef }, section.id))))] }) }));
25
25
  }
26
26
  function EmptyBody({ onAddSection }) {
27
27
  // This block sits inside the fixed-white preview surface, so the neutral
@@ -1 +1 @@
1
- {"version":3,"file":"PostEditorCanvas.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostEditorCanvas.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAGjE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC7F,OAAO,EAAE,eAAe,EAA0B,MAAM,kCAAkC,CAAA;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAkB5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,GAAG,EAAE,GACE;IACtB,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAE9C,OAAO,CACL,KAAC,YAAY,cACX,MAAC,aAAa,IACZ,UAAU,EAAE,QAAQ,EACpB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EACJ,8BACG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,aAAa,KAAG,EACzC,KAAC,eAAe,IAAC,eAAe,EAAE,eAAe,GAAI,IACpD,aAGL,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAI,EAC/C,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,KAAC,SAAS,IAAC,YAAY,EAAE,YAAY,GAAI,CAC1C,CAAC,CAAC,CAAC,CACF,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACxB,KAAC,eAAe,IAEd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,QACR,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,UAAU,EACnC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,IANnB,OAAO,CAAC,EAAE,CAOf,CACH,CAAC,CACH,IACa,GACH,CAChB,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,YAAY,EAAiC;IAChE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,gEAAgE;IAChE,OAAO,CACL,eAAK,SAAS,EAAC,iGAAiG,aAC9G,eAAM,SAAS,EAAC,kEAAkE,YAChF,KAAC,QAAQ,IAAC,SAAS,EAAC,+BAA+B,wBAAe,GAC7D,EACP,YAAG,SAAS,EAAC,+BAA+B,YACzC,YAAY;oBACX,CAAC,CAAC,gKAAgK;oBAClK,CAAC,CAAC,2LAA2L,GAC7L,EACH,YAAY,IAAI,CACf,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,kJAAkJ,aAE5J,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,wBAAe,mBAEjC,CACV,IACG,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"PostEditorCanvas.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostEditorCanvas.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AAGjE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC7F,OAAO,EAAE,eAAe,EAA0B,MAAM,kCAAkC,CAAA;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AA+B5C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,GAAG,EAAE,EACpB,SAAS,GAAG,KAAK,EACjB,iBAAiB,EACjB,SAAS,GACa;IACtB,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAE9C,OAAO,CACL,KAAC,YAAY,cACX,MAAC,aAAa,IACZ,UAAU,EAAE,QAAQ,EACpB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EACJ,SAAS,CAAC,CAAC,CAAC,CACV,SAAS,CACV,CAAC,CAAC,CAAC,CACF,8BACG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,aAAa,KAAG,EACzC,KAAC,eAAe,IAAC,eAAe,EAAE,eAAe,GAAI,IACpD,CACJ,aAGH,KAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAI,EAC/C,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,KAAC,SAAS,IAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,GAAI,CAClE,CAAC,CAAC,CAAC,CACF,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACxB,KAAC,eAAe,IAEd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,QACR,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,EACpD,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,UAAU,EACnC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,IARnB,OAAO,CAAC,EAAE,CASf,CACH,CAAC,CACH,IACa,GACH,CAChB,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,YAAY,EAAiC;IAChE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,gEAAgE;IAChE,OAAO,CACL,eAAK,SAAS,EAAC,iGAAiG,aAC9G,eAAM,SAAS,EAAC,kEAAkE,YAChF,KAAC,QAAQ,IAAC,SAAS,EAAC,+BAA+B,wBAAe,GAC7D,EACP,YAAG,SAAS,EAAC,+BAA+B,YACzC,YAAY;oBACX,CAAC,CAAC,gKAAgK;oBAClK,CAAC,CAAC,2LAA2L,GAC7L,EACH,YAAY,IAAI,CACf,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,SAAS,EAAC,kJAAkJ,aAE5J,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,wBAAe,mBAEjC,CACV,IACG,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The slice of a collection's field config the form reads to pick controls:
3
+ * a `select` category renders a dropdown (structured vocabulary), an `array`
4
+ * tags field renders the chip input with autocomplete.
5
+ */
6
+ export interface PostFieldConfig {
7
+ type?: string;
8
+ options?: Array<{
9
+ label: string;
10
+ value: string;
11
+ }>;
12
+ maxRows?: number;
13
+ }
14
+ export interface PostFieldsFormValues {
15
+ title: string;
16
+ slug: string;
17
+ excerpt: string;
18
+ featuredImage: string;
19
+ category: string;
20
+ tags: string[];
21
+ }
22
+ export interface PostFieldsFormProps {
23
+ values: PostFieldsFormValues;
24
+ canEdit: boolean;
25
+ /** Field definitions from the post type's collection config. */
26
+ fields?: Record<string, PostFieldConfig | undefined>;
27
+ postType: string;
28
+ /** HTML body, used as AI excerpt context. */
29
+ bodyHtml?: string;
30
+ slugTouched: boolean;
31
+ onSlugTouched: () => void;
32
+ onChange: (patch: Partial<PostFieldsFormValues>) => void;
33
+ titleRef?: React.Ref<HTMLInputElement>;
34
+ /** Prefix for input ids so the modal and the rail tab can coexist. */
35
+ idPrefix?: string;
36
+ }
37
+ /** Title, slug, excerpt, featured image, category, and tags. SEO lives in the SEO tab. */
38
+ export declare function PostFieldsForm({ values, canEdit, fields, postType, bodyHtml, slugTouched, onSlugTouched, onChange, titleRef, idPrefix, }: PostFieldsFormProps): import("react/jsx-runtime").JSX.Element;
39
+ //# sourceMappingURL=PostFieldsForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostFieldsForm.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsForm.tsx"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAA;IACpD,QAAQ,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACtC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAoDD,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAa,EACb,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,QAAe,GAChB,EAAE,mBAAmB,2CAqNrB"}
@@ -0,0 +1,85 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { Loader2, Sparkles } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { normalizeSlug, validateSlug } from '@prenta/core/client';
7
+ import { MediaPickerModal } from '../../components/MediaPickerModal.js';
8
+ import { TagInput } from '../../components/TagInput.js';
9
+ import { coauthorText } from '../../lib/coauthor-client.js';
10
+ const LABEL = 'text-foreground mb-1 block text-xs font-medium';
11
+ /** Match TipTap body editor borders — `border-input` is transparent in theme.css. */
12
+ const INPUT = 'border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-md border px-2.5 py-1.5 text-sm focus-visible:ring-2 focus-visible:outline-none';
13
+ const slugify = normalizeSlug;
14
+ function stripHtml(html) {
15
+ return html
16
+ .replace(/<[^>]*>/g, ' ')
17
+ .replace(/\s+/g, ' ')
18
+ .trim();
19
+ }
20
+ function buildContentContext(title, body, excerpt) {
21
+ const plain = stripHtml(body);
22
+ const parts = [title.trim(), excerpt.trim(), plain].filter(Boolean);
23
+ return parts.join('\n\n');
24
+ }
25
+ function AiFieldButton({ label, busy, disabled, onClick, }) {
26
+ return (_jsxs("button", { type: "button", "aria-label": label, title: label, disabled: disabled || busy, onClick: onClick, 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: [busy ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin", "aria-hidden": true })) : (_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true })), busy ? 'Generating…' : 'AI'] }));
27
+ }
28
+ /** Title, slug, excerpt, featured image, category, and tags. SEO lives in the SEO tab. */
29
+ export function PostFieldsForm({ values, canEdit, fields, postType, bodyHtml = '', slugTouched, onSlugTouched, onChange, titleRef, idPrefix = 'pf', }) {
30
+ const [mediaOpen, setMediaOpen] = useState(false);
31
+ const [aiBusy, setAiBusy] = useState(false);
32
+ const categoryField = fields?.category;
33
+ const categoryOptions = categoryField?.type === 'select' && Array.isArray(categoryField.options)
34
+ ? categoryField.options
35
+ : null;
36
+ const tagsField = fields?.tags;
37
+ const hasTags = tagsField?.type === 'array';
38
+ const slugError = validateSlug(values.slug);
39
+ function handleTitle(next) {
40
+ const patch = { title: next };
41
+ if (!slugTouched)
42
+ patch.slug = slugify(next);
43
+ onChange(patch);
44
+ }
45
+ async function handleAiGenerateExcerpt() {
46
+ const context = buildContentContext(values.title, bodyHtml, values.excerpt);
47
+ if (!context.trim()) {
48
+ toast.error('Add a title or write body content in the Article Body section before generating with AI.');
49
+ return;
50
+ }
51
+ setAiBusy(true);
52
+ try {
53
+ const outcome = await coauthorText('compress', context, {
54
+ instructions: 'Write a 1–2 sentence excerpt for blog listings and cards. Return only the excerpt text.',
55
+ targetLength: 45,
56
+ });
57
+ if (!outcome.ok) {
58
+ toast.error(outcome.error);
59
+ return;
60
+ }
61
+ onChange({ excerpt: outcome.result.text.trim() });
62
+ toast.success('Excerpt generated — review before saving.');
63
+ }
64
+ catch {
65
+ toast.error('AI request failed.');
66
+ }
67
+ finally {
68
+ setAiBusy(false);
69
+ }
70
+ }
71
+ const titleId = `${idPrefix}-title`;
72
+ const slugId = `${idPrefix}-slug`;
73
+ const categoryId = `${idPrefix}-category`;
74
+ const tagsId = `${idPrefix}-tags`;
75
+ const excerptId = `${idPrefix}-excerpt`;
76
+ const imageId = `${idPrefix}-image`;
77
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsxs("label", { className: LABEL, htmlFor: titleId, children: ["Title ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx("input", { id: titleId, ref: titleRef, className: INPUT, value: values.title, disabled: !canEdit, placeholder: "e.g. Announcing our new product", onChange: (e) => handleTitle(e.target.value) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsxs("label", { className: LABEL, htmlFor: slugId, children: ["Slug ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx("input", { id: slugId, className: INPUT, value: values.slug, disabled: !canEdit, placeholder: slugTouched ? undefined : 'Generated from title…', "aria-invalid": Boolean(slugError), "aria-describedby": slugError ? `${slugId}-error` : undefined, onChange: (e) => {
78
+ onSlugTouched();
79
+ onChange({ slug: slugify(e.target.value) });
80
+ } }), slugError && (_jsx("p", { id: `${slugId}-error`, className: "text-destructive mt-1 text-xs", children: slugError }))] }), _jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: categoryId, children: "Category" }), categoryOptions ? (_jsxs("select", { id: categoryId, className: INPUT, value: values.category, disabled: !canEdit, onChange: (e) => onChange({ category: e.target.value }), children: [_jsx("option", { value: "", children: "No category" }), categoryOptions.map((o) => (_jsx("option", { value: o.value, children: o.label }, o.value))), values.category && !categoryOptions.some((o) => o.value === values.category) && (_jsx("option", { value: values.category, children: values.category }))] })) : (_jsx("input", { id: categoryId, className: INPUT, value: values.category, disabled: !canEdit, placeholder: "e.g. Product", onChange: (e) => onChange({ category: e.target.value }) }))] })] }), hasTags && (_jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: tagsId, children: "Tags" }), _jsx(TagInput, { id: tagsId, value: values.tags, onChange: (tags) => onChange({ tags }), collection: postType, field: "tags", disabled: !canEdit, maxTags: tagsField?.maxRows })] })), _jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between gap-2", children: [_jsx("label", { className: `${LABEL} mb-0`, htmlFor: excerptId, children: "Excerpt" }), _jsx(AiFieldButton, { label: "Generate excerpt from content", busy: aiBusy, disabled: !canEdit, onClick: () => void handleAiGenerateExcerpt() })] }), _jsx("textarea", { id: excerptId, className: `${INPUT} min-h-[72px] resize-y`, value: values.excerpt, disabled: !canEdit, placeholder: "A short summary shown in listings and the header.", onChange: (e) => onChange({ excerpt: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: imageId, children: "Featured image" }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { id: imageId, className: `${INPUT} min-w-0 flex-1`, value: values.featuredImage, disabled: !canEdit, placeholder: "https://\u2026 or pick from the media library", onChange: (e) => onChange({ featuredImage: e.target.value }) }), _jsx("button", { type: "button", disabled: !canEdit, onClick: () => setMediaOpen(true), className: "bg-accent text-foreground border-border hover:bg-accent/80 shrink-0 rounded-md border px-3 py-1.5 text-xs font-medium disabled:opacity-50", children: "Browse" })] }), values.featuredImage && (_jsx("div", { className: "border-border bg-muted mt-2 overflow-hidden rounded-md border", children: _jsx("img", { src: values.featuredImage, alt: "", className: "h-28 w-full object-cover" }) }))] })] }), _jsx(MediaPickerModal, { open: mediaOpen, onClose: () => setMediaOpen(false), onSelect: (url) => {
81
+ onChange({ featuredImage: url });
82
+ setMediaOpen(false);
83
+ }, accept: "image/*" })] }));
84
+ }
85
+ //# sourceMappingURL=PostFieldsForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostFieldsForm.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsForm.tsx"],"names":[],"mappings":"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"}
@@ -1,17 +1,6 @@
1
1
  import type { EditorPost } from '../../lib/post-editor-service.js';
2
- /**
3
- * The slice of a collection's field config the modal reads to pick controls:
4
- * a `select` category renders a dropdown (structured vocabulary), an `array`
5
- * tags field renders the chip input with autocomplete.
6
- */
7
- export interface PostFieldConfig {
8
- type?: string;
9
- options?: Array<{
10
- label: string;
11
- value: string;
12
- }>;
13
- maxRows?: number;
14
- }
2
+ import { type PostFieldConfig } from './PostFieldsForm.js';
3
+ export type { PostFieldConfig };
15
4
  interface PostFieldsModalProps {
16
5
  open: boolean;
17
6
  post: EditorPost;
@@ -23,5 +12,4 @@ interface PostFieldsModalProps {
23
12
  }
24
13
  /** Edits post metadata: title, slug, excerpt, featured image, category, and tags. SEO lives in the SEO tab. */
25
14
  export declare function PostFieldsModal({ open, post, canEdit, fields, onClose, onSave, }: PostFieldsModalProps): import("react/jsx-runtime").JSX.Element;
26
- export {};
27
15
  //# sourceMappingURL=PostFieldsModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostFieldsModal.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsModal.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAElE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAA;IACpD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;CAC7C;AAsFD,+GAA+G;AAC/G,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,GACP,EAAE,oBAAoB,2CAuStB"}
1
+ {"version":3,"file":"PostFieldsModal.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAA;IACpD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;CAC7C;AA6BD,+GAA+G;AAC/G,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,GACP,EAAE,oBAAoB,2CA8GtB"}
@@ -1,19 +1,11 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useMemo, useRef, useState } from 'react';
4
- import { Loader2, Sparkles } from 'lucide-react';
5
- import { toast } from 'sonner';
6
- import { normalizeSlug, validateSlug } from '@prenta/core/client';
4
+ import { validateSlug } from '@prenta/core/client';
7
5
  import { Modal } from '../../components/ui/Modal.js';
8
6
  import { Button } from '../../components/ui/Button.js';
9
7
  import { ConfirmDialog } from '../../components/ui/ConfirmDialog.js';
10
- import { MediaPickerModal } from '../../components/MediaPickerModal.js';
11
- import { TagInput } from '../../components/TagInput.js';
12
- import { coauthorText } from '../../lib/coauthor-client.js';
13
- const LABEL = 'text-foreground mb-1 block text-xs font-medium';
14
- /** Match TipTap body editor borders — `border-input` is transparent in theme.css. */
15
- const INPUT = 'border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-md border px-2.5 py-1.5 text-sm focus-visible:ring-2 focus-visible:outline-none';
16
- const slugify = normalizeSlug;
8
+ import { PostFieldsForm, } from './PostFieldsForm.js';
17
9
  function snapshotFromPost(post) {
18
10
  return {
19
11
  title: post.title,
@@ -30,20 +22,6 @@ function snapshotFromFields(input) {
30
22
  tags: [...input.tags].sort().join('\0'),
31
23
  };
32
24
  }
33
- function stripHtml(html) {
34
- return html
35
- .replace(/<[^>]*>/g, ' ')
36
- .replace(/\s+/g, ' ')
37
- .trim();
38
- }
39
- function buildContentContext(title, body, excerpt) {
40
- const plain = stripHtml(body);
41
- const parts = [title.trim(), excerpt.trim(), plain].filter(Boolean);
42
- return parts.join('\n\n');
43
- }
44
- function AiFieldButton({ label, busy, disabled, onClick, }) {
45
- return (_jsxs("button", { type: "button", "aria-label": label, title: label, disabled: disabled || busy, onClick: onClick, 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: [busy ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin", "aria-hidden": true })) : (_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true })), busy ? 'Generating…' : 'AI'] }));
46
- }
47
25
  /** Edits post metadata: title, slug, excerpt, featured image, category, and tags. SEO lives in the SEO tab. */
48
26
  export function PostFieldsModal({ open, post, canEdit, fields, onClose, onSave, }) {
49
27
  const [title, setTitle] = useState(post.title);
@@ -53,18 +31,10 @@ export function PostFieldsModal({ open, post, canEdit, fields, onClose, onSave,
53
31
  const [category, setCategory] = useState(post.category);
54
32
  const [tags, setTags] = useState(post.tags);
55
33
  const [slugTouched, setSlugTouched] = useState(Boolean(post.slug));
56
- const [mediaOpen, setMediaOpen] = useState(false);
57
- const [aiBusy, setAiBusy] = useState(false);
58
34
  const [confirmDiscard, setConfirmDiscard] = useState(false);
59
35
  const baselineRef = useRef(null);
60
36
  // Land the user in the Title field (name-it-first flow for new posts).
61
37
  const titleRef = useRef(null);
62
- const categoryField = fields?.category;
63
- const categoryOptions = categoryField?.type === 'select' && Array.isArray(categoryField.options)
64
- ? categoryField.options
65
- : null;
66
- const tagsField = fields?.tags;
67
- const hasTags = tagsField?.type === 'array';
68
38
  useEffect(() => {
69
39
  if (!open) {
70
40
  baselineRef.current = null;
@@ -78,22 +48,14 @@ export function PostFieldsModal({ open, post, canEdit, fields, onClose, onSave,
78
48
  setCategory(post.category);
79
49
  setTags(post.tags);
80
50
  setSlugTouched(Boolean(post.slug));
81
- setAiBusy(false);
82
51
  baselineRef.current = snapshotFromPost(post);
83
52
  }, [open, post]);
53
+ const values = { title, slug, excerpt, featuredImage, category, tags };
84
54
  const isDirty = useMemo(() => {
85
55
  if (!open || !baselineRef.current)
86
56
  return false;
87
- const current = snapshotFromFields({
88
- title,
89
- slug,
90
- excerpt,
91
- featuredImage,
92
- category,
93
- tags,
94
- });
95
- return JSON.stringify(current) !== JSON.stringify(baselineRef.current);
96
- }, [open, title, slug, excerpt, featuredImage, category, tags]);
57
+ return JSON.stringify(snapshotFromFields(values)) !== JSON.stringify(baselineRef.current);
58
+ }, [open, values]);
97
59
  function requestDismiss() {
98
60
  if (isDirty) {
99
61
  setConfirmDiscard(true);
@@ -101,50 +63,27 @@ export function PostFieldsModal({ open, post, canEdit, fields, onClose, onSave,
101
63
  }
102
64
  onClose();
103
65
  }
104
- function handleTitle(next) {
105
- setTitle(next);
106
- if (!slugTouched)
107
- setSlug(slugify(next));
66
+ function handleChange(patch) {
67
+ if (patch.title !== undefined)
68
+ setTitle(patch.title);
69
+ if (patch.slug !== undefined)
70
+ setSlug(patch.slug);
71
+ if (patch.excerpt !== undefined)
72
+ setExcerpt(patch.excerpt);
73
+ if (patch.featuredImage !== undefined)
74
+ setFeaturedImage(patch.featuredImage);
75
+ if (patch.category !== undefined)
76
+ setCategory(patch.category);
77
+ if (patch.tags !== undefined)
78
+ setTags(patch.tags);
108
79
  }
109
80
  const slugError = validateSlug(slug);
110
- async function handleAiGenerateExcerpt() {
111
- const context = buildContentContext(title, post.body, excerpt);
112
- if (!context.trim()) {
113
- toast.error('Add a title or write body content in the Article Body section before generating with AI.');
114
- return;
115
- }
116
- setAiBusy(true);
117
- try {
118
- const outcome = await coauthorText('compress', context, {
119
- instructions: 'Write a 1–2 sentence excerpt for blog listings and cards. Return only the excerpt text.',
120
- targetLength: 45,
121
- });
122
- if (!outcome.ok) {
123
- toast.error(outcome.error);
124
- return;
125
- }
126
- setExcerpt(outcome.result.text.trim());
127
- toast.success('Excerpt generated — review before saving.');
128
- }
129
- catch {
130
- toast.error('AI request failed.');
131
- }
132
- finally {
133
- setAiBusy(false);
134
- }
135
- }
136
81
  function handleSave() {
137
82
  if (slugError)
138
83
  return;
139
84
  onSave({ title, slug, excerpt, featuredImage, category, tags });
140
85
  onClose();
141
86
  }
142
- return (_jsxs(_Fragment, { children: [_jsx(Modal, { open: open, onClose: onClose, onDismiss: requestDismiss, title: "Post details", size: "lg", initialFocusRef: titleRef, actions: _jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", onClick: requestDismiss, children: "Cancel" }), _jsx(Button, { variant: "primary", onClick: handleSave, disabled: !canEdit || Boolean(slugError), children: "Done" })] }), children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsxs("label", { className: LABEL, htmlFor: "pf-title", children: ["Title ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx("input", { id: "pf-title", ref: titleRef, className: INPUT, value: title, disabled: !canEdit, placeholder: "e.g. Announcing our new product", onChange: (e) => handleTitle(e.target.value) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsxs("label", { className: LABEL, htmlFor: "pf-slug", children: ["Slug ", _jsx("span", { className: "text-destructive", children: "*" })] }), _jsx("input", { id: "pf-slug", className: INPUT, value: slug, disabled: !canEdit, placeholder: slugTouched ? undefined : 'Generated from title…', "aria-invalid": Boolean(slugError), "aria-describedby": slugError ? 'pf-slug-error' : undefined, onChange: (e) => {
143
- setSlugTouched(true);
144
- setSlug(slugify(e.target.value));
145
- } }), slugError && (_jsx("p", { id: "pf-slug-error", className: "text-destructive mt-1 text-xs", children: slugError }))] }), _jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: "pf-category", children: "Category" }), categoryOptions ? (_jsxs("select", { id: "pf-category", className: INPUT, value: category, disabled: !canEdit, onChange: (e) => setCategory(e.target.value), children: [_jsx("option", { value: "", children: "No category" }), categoryOptions.map((o) => (_jsx("option", { value: o.value, children: o.label }, o.value))), category && !categoryOptions.some((o) => o.value === category) && (_jsx("option", { value: category, children: category }))] })) : (_jsx("input", { id: "pf-category", className: INPUT, value: category, disabled: !canEdit, placeholder: "e.g. Product", onChange: (e) => setCategory(e.target.value) }))] })] }), hasTags && (_jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: "pf-tags", children: "Tags" }), _jsx(TagInput, { id: "pf-tags", value: tags, onChange: setTags, collection: post.postType, field: "tags", disabled: !canEdit, maxTags: tagsField?.maxRows })] })), _jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between gap-2", children: [_jsx("label", { className: `${LABEL} mb-0`, htmlFor: "pf-excerpt", children: "Excerpt" }), _jsx(AiFieldButton, { label: "Generate excerpt from content", busy: aiBusy, disabled: !canEdit, onClick: () => void handleAiGenerateExcerpt() })] }), _jsx("textarea", { id: "pf-excerpt", className: `${INPUT} min-h-[72px] resize-y`, value: excerpt, disabled: !canEdit, placeholder: "A short summary shown in listings and the header.", onChange: (e) => setExcerpt(e.target.value) })] }), _jsxs("div", { children: [_jsx("label", { className: LABEL, htmlFor: "pf-image", children: "Featured image" }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { id: "pf-image", className: `${INPUT} min-w-0 flex-1`, value: featuredImage, disabled: !canEdit, placeholder: "https://\u2026 or pick from the media library", onChange: (e) => setFeaturedImage(e.target.value) }), _jsx("button", { type: "button", disabled: !canEdit, onClick: () => setMediaOpen(true), className: "bg-accent text-foreground border-border hover:bg-accent/80 shrink-0 rounded-md border px-3 py-1.5 text-xs font-medium disabled:opacity-50", children: "Browse" })] }), featuredImage && (_jsx("div", { className: "border-border bg-muted mt-2 overflow-hidden rounded-md border", children: _jsx("img", { src: featuredImage, alt: "", className: "h-28 w-full object-cover" }) }))] })] }) }), _jsx(MediaPickerModal, { open: mediaOpen, onClose: () => setMediaOpen(false), onSelect: (url) => {
146
- setFeaturedImage(url);
147
- setMediaOpen(false);
148
- }, accept: "image/*" }), _jsx(ConfirmDialog, { open: confirmDiscard, onClose: () => setConfirmDiscard(false), onConfirm: onClose, title: "Discard unsaved changes?", description: "You have unsaved post details. Closing now will discard them.", confirmLabel: "Discard", cancelLabel: "Keep editing", destructive: true })] }));
87
+ return (_jsxs(_Fragment, { children: [_jsx(Modal, { open: open, onClose: onClose, onDismiss: requestDismiss, title: "Post details", size: "lg", initialFocusRef: titleRef, actions: _jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", onClick: requestDismiss, children: "Cancel" }), _jsx(Button, { variant: "primary", onClick: handleSave, disabled: !canEdit || Boolean(slugError), children: "Done" })] }), children: _jsx(PostFieldsForm, { values: values, canEdit: canEdit, fields: fields, postType: post.postType, bodyHtml: post.body, slugTouched: slugTouched, onSlugTouched: () => setSlugTouched(true), onChange: handleChange, titleRef: titleRef }) }), _jsx(ConfirmDialog, { open: confirmDiscard, onClose: () => setConfirmDiscard(false), onConfirm: onClose, title: "Discard unsaved changes?", description: "You have unsaved post details. Closing now will discard them.", confirmLabel: "Discard", cancelLabel: "Keep editing", destructive: true })] }));
149
88
  }
150
89
  //# sourceMappingURL=PostFieldsModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostFieldsModal.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostFieldsModal.js","sourceRoot":"","sources":["../../../src/views/post-editor/PostFieldsModal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PostSectionEditor.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostSectionEditor.tsx"],"names":[],"mappings":"AAiDA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE5E,8DAA8D;AAC9D,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAClB,MAAM,EACJ;QACE,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAA;KACrD,GACD,SAAS,CACZ,CAAA;IACD,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3B;AAED,wDAAwD;AACxD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAgBD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,GACX,EAAE,sBAAsB,2CAqrBxB"}
1
+ {"version":3,"file":"PostSectionEditor.d.ts","sourceRoot":"","sources":["../../../src/views/post-editor/PostSectionEditor.tsx"],"names":[],"mappings":"AA0DA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAc5E,8DAA8D;AAC9D,UAAU,YAAY;IACpB,WAAW,CAAC,EAAE,MAAM,CAClB,MAAM,EACJ;QACE,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAA;KACrD,GACD,SAAS,CACZ,CAAA;IACD,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3B;AAED,wDAAwD;AACxD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACxD;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAgBD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,GACX,EAAE,sBAAsB,2CAizBxB"}