@drawnagency/primitives 0.1.89 → 0.1.91

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 (93) hide show
  1. package/dist/{chunk-75P6HWPN.js → chunk-5BM2Y3NJ.js} +5 -3
  2. package/dist/{chunk-VK5KNH73.js → chunk-AGWE2LJG.js} +2 -2
  3. package/dist/{chunk-2QXJ2KGB.js → chunk-KBQNJZUX.js} +1 -1
  4. package/dist/{chunk-WCBYXNAG.js → chunk-KMQZYORS.js} +1 -0
  5. package/dist/{chunk-Y24T75HT.js → chunk-MK7YB2A4.js} +1 -1
  6. package/dist/{chunk-QFV5TSPO.js → chunk-SIYQ37QY.js} +12 -4
  7. package/dist/{chunk-J75XGXYD.js → chunk-XKRQMTE4.js} +9 -0
  8. package/dist/{chunk-L2MAJKKC.js → chunk-XUIJHYKI.js} +2 -2
  9. package/dist/{chunk-MVX4ULYE.js → chunk-ZLG7S54V.js} +241 -82
  10. package/dist/components/chat/ChatPanel.d.ts +14 -6
  11. package/dist/components/chat/ChatPanel.d.ts.map +1 -1
  12. package/dist/components/chat/ChatWidget.d.ts.map +1 -1
  13. package/dist/components/editor/AudienceIndicator.d.ts +6 -0
  14. package/dist/components/editor/AudienceIndicator.d.ts.map +1 -1
  15. package/dist/components/editor/ChildBlockWrapper.d.ts.map +1 -1
  16. package/dist/components/editor/ColSpanControl.d.ts.map +1 -1
  17. package/dist/components/editor/DragHandle.d.ts +3 -1
  18. package/dist/components/editor/DragHandle.d.ts.map +1 -1
  19. package/dist/components/editor/SectionWrapper.d.ts.map +1 -1
  20. package/dist/components/editor/StatusIndicator.d.ts +7 -0
  21. package/dist/components/editor/StatusIndicator.d.ts.map +1 -1
  22. package/dist/components/editor/index.js +98 -76
  23. package/dist/components/primitives/index.js +3 -3
  24. package/dist/components/sections/Container/Container.d.ts +3 -2
  25. package/dist/components/sections/Container/Container.d.ts.map +1 -1
  26. package/dist/components/sections/Container/ContainerSettingsForm.d.ts +4 -2
  27. package/dist/components/sections/Container/ContainerSettingsForm.d.ts.map +1 -1
  28. package/dist/components/sections/Container/index.d.ts +8 -2
  29. package/dist/components/sections/Container/index.d.ts.map +1 -1
  30. package/dist/components/sections/SectionLayout.d.ts +3 -1
  31. package/dist/components/sections/SectionLayout.d.ts.map +1 -1
  32. package/dist/components/sections/ViewRenderer.d.ts +3 -1
  33. package/dist/components/sections/ViewRenderer.d.ts.map +1 -1
  34. package/dist/components/sections/all-sections.d.ts +8 -2
  35. package/dist/components/sections/all-sections.d.ts.map +1 -1
  36. package/dist/components/sections/brand-guide.js +3 -3
  37. package/dist/components/sections/core-sections.d.ts +8 -2
  38. package/dist/components/sections/core-sections.d.ts.map +1 -1
  39. package/dist/components/sections/register-schemas.js +6 -6
  40. package/dist/components/sections/register.js +6 -6
  41. package/dist/components/shared/Fab.d.ts +37 -0
  42. package/dist/components/shared/Fab.d.ts.map +1 -0
  43. package/dist/components/shared/Tooltip.d.ts +8 -1
  44. package/dist/components/shared/Tooltip.d.ts.map +1 -1
  45. package/dist/components/shell/AudiencePreviewMenu.d.ts +7 -0
  46. package/dist/components/shell/AudiencePreviewMenu.d.ts.map +1 -0
  47. package/dist/components/shell/AuthoringDefaultsMenu.d.ts +10 -0
  48. package/dist/components/shell/AuthoringDefaultsMenu.d.ts.map +1 -0
  49. package/dist/components/shell/BugReportFAB.d.ts.map +1 -1
  50. package/dist/components/shell/EditorContext.d.ts +3 -0
  51. package/dist/components/shell/EditorContext.d.ts.map +1 -1
  52. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  53. package/dist/components/shell/SiteSettingsChatbot.d.ts.map +1 -1
  54. package/dist/hooks/useBuildStatus.d.ts.map +1 -1
  55. package/dist/index.js +6 -4
  56. package/dist/lib/authoring-defaults.d.ts +17 -0
  57. package/dist/lib/authoring-defaults.d.ts.map +1 -0
  58. package/dist/lib/container-grid.d.ts +6 -0
  59. package/dist/lib/container-grid.d.ts.map +1 -1
  60. package/dist/lib/index.js +3 -3
  61. package/dist/lib/migrate-sections-transform.js +1 -1
  62. package/dist/media/index.js +1 -1
  63. package/dist/schemas/index.js +4 -2
  64. package/dist/schemas/site-config.d.ts +6 -0
  65. package/dist/schemas/site-config.d.ts.map +1 -1
  66. package/package.json +1 -1
  67. package/src/components/chat/ChatPanel.tsx +51 -19
  68. package/src/components/chat/ChatWidget.tsx +113 -51
  69. package/src/components/editor/AudienceIndicator.tsx +50 -37
  70. package/src/components/editor/ChildBlockWrapper.tsx +8 -7
  71. package/src/components/editor/ColSpanControl.tsx +14 -11
  72. package/src/components/editor/DragHandle.tsx +5 -2
  73. package/src/components/editor/PagesModal.tsx +10 -10
  74. package/src/components/editor/SectionWrapper.tsx +32 -21
  75. package/src/components/editor/StatusIndicator.tsx +37 -24
  76. package/src/components/sections/Container/Container.tsx +185 -43
  77. package/src/components/sections/Container/ContainerSettingsForm.tsx +64 -24
  78. package/src/components/sections/Container/index.tsx +45 -20
  79. package/src/components/sections/SectionLayout.tsx +13 -3
  80. package/src/components/sections/ViewRenderer.tsx +11 -2
  81. package/src/components/shared/Fab.tsx +57 -0
  82. package/src/components/shared/Tooltip.tsx +18 -2
  83. package/src/components/shell/AudiencePreviewMenu.tsx +73 -0
  84. package/src/components/shell/AuthoringDefaultsMenu.tsx +54 -0
  85. package/src/components/shell/BugReportFAB.tsx +3 -7
  86. package/src/components/shell/EditorContext.tsx +5 -1
  87. package/src/components/shell/EditorShell.tsx +80 -25
  88. package/src/components/shell/SiteSettingsChatbot.tsx +2 -1
  89. package/src/hooks/useBuildStatus.ts +35 -4
  90. package/src/lib/authoring-defaults.ts +42 -0
  91. package/src/lib/container-grid.ts +14 -0
  92. package/src/lib/migrate-sections-transform.ts +5 -3
  93. package/src/schemas/site-config.ts +1 -1
@@ -3,9 +3,9 @@ export interface ChatMessage {
3
3
  content: string;
4
4
  }
5
5
  /** How the conversation is framed on screen:
6
- * - "floating": the compact anchored panel (/edit FAB + settings test chat)
7
- * - "docked": full-height right sidebar (viewer, >=768px)
8
- * - "sheet": bottom sheet (viewer, phones) */
6
+ * - "floating": the compact anchored panel (settings test chat only)
7
+ * - "docked": full-height right sidebar (viewer + /edit, >=768px)
8
+ * - "sheet": bottom sheet (viewer + /edit, phones) */
9
9
  export type ChatPanelMode = "floating" | "docked" | "sheet";
10
10
  /** Assistant markdown → sanitized HTML. Callers MUST gate on the sanitizer
11
11
  * having loaded (`mdReady`) — before then sanitizeHtml passes raw HTML
@@ -26,8 +26,15 @@ export declare function streamChat(body: {
26
26
  error: string;
27
27
  retryAfterMs?: number;
28
28
  }>;
29
- export default function ChatPanel({ open, onClose, siteName, botName, thinkingPhrases, tasks, isEditor, draftChatbot, simulateAudience, variant, mode, focusComposer, audience }: {
29
+ export default function ChatPanel({ open, closing, animateEnter, onClose, siteName, botName, thinkingPhrases, tasks, isEditor, draftChatbot, simulateAudience, variant, mode, focusComposer, audience }: {
30
30
  open: boolean;
31
+ /** Viewer modes: keeps the panel mounted through its exit slide (ChatWidget
32
+ * flips this off once the transition has run). */
33
+ closing?: boolean;
34
+ /** Animate the entrance (explicit user open). False for the docked restore
35
+ * on page load, where the column is already reserved pre-paint and a slide
36
+ * would replay on every navigation. */
37
+ animateEnter?: boolean;
31
38
  onClose: () => void;
32
39
  siteName: string;
33
40
  /** Resolved assistant display name (per-audience, server-side). */
@@ -43,8 +50,9 @@ export default function ChatPanel({ open, onClose, siteName, botName, thinkingPh
43
50
  draftChatbot?: unknown;
44
51
  /** Configurator test panel only: preview this audience's prompt overlay. */
45
52
  simulateAudience?: string;
46
- /** Floating mode only — anchors the panel above its launcher: viewer corner
47
- * FAB vs /edit FAB column. */
53
+ /** Surface the chat serves: "editor" (/edit docked chat) keeps internal
54
+ * cross-page links in a new tab (unsaved editor state) and sizes the
55
+ * docked panel against the editor toolbar instead of the viewer nav. */
48
56
  variant?: "viewer" | "editor";
49
57
  mode?: ChatPanelMode;
50
58
  /** Focus the composer when opened (explicit user open on desktop). Never
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE5E;;;kDAGkD;AAClD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AA8C5D;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,IAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;IACxM,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;mCAC+B;IAC/B,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,kDA8dA"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatPanel.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAE5E;;;0DAG0D;AAC1D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AA+C5D;;kEAEkE;AAClE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD,8EAA8E;AAC9E,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EACxH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA6CjG;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAkB,EAAE,IAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE;IAC/N,IAAI,EAAE,OAAO,CAAC;IACd;uDACmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;4CAEwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;6EAEyE;IACzE,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;kFAC8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,kDAqfA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAyFtJ"}
1
+ {"version":3,"file":"ChatWidget.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatWidget.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kFAAkF;IAClF,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAkB,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAyItJ"}
@@ -1,4 +1,10 @@
1
1
  import type { Audience } from "../../auth/types";
2
+ interface AudienceChecklistProps {
3
+ access: string[];
4
+ audiences: Audience[];
5
+ onToggle: (name: string) => void;
6
+ }
7
+ export declare function AudienceChecklist({ access, audiences, onToggle }: AudienceChecklistProps): import("react/jsx-runtime").JSX.Element;
2
8
  interface AudienceIndicatorProps {
3
9
  access: string[];
4
10
  audiences: Audience[];
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/editor/AudienceIndicator.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAmElG"}
1
+ {"version":3,"file":"AudienceIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/editor/AudienceIndicator.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAyCxF;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA+BlG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChildBlockWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ChildBlockWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAQlF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,mHAyF7B,CAAC"}
1
+ {"version":3,"file":"ChildBlockWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ChildBlockWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AASlF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,mHAyF7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColSpanControl.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ColSpanControl.tsx"],"names":[],"mappings":"AAMA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,mBAAmB,kDA0CjF"}
1
+ {"version":3,"file":"ColSpanControl.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ColSpanControl.tsx"],"names":[],"mappings":"AAOA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,mBAAmB,kDA4CjF"}
@@ -1,2 +1,4 @@
1
- export declare const DragHandle: import("react").ForwardRefExoticComponent<import("react").RefAttributes<HTMLButtonElement>>;
1
+ export declare const DragHandle: import("react").ForwardRefExoticComponent<{
2
+ tooltipSide?: "bottom" | "right";
3
+ } & import("react").RefAttributes<HTMLButtonElement>>;
2
4
  //# sourceMappingURL=DragHandle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DragHandle.d.ts","sourceRoot":"","sources":["../../../src/components/editor/DragHandle.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,6FAYrB,CAAC"}
1
+ {"version":3,"file":"DragHandle.d.ts","sourceRoot":"","sources":["../../../src/components/editor/DragHandle.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU;kBAAiD,QAAQ,GAAG,OAAO;qDAexF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/editor/SectionWrapper.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,WAAW,EACX,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,EAAE,YAAY,2CAgVd"}
1
+ {"version":3,"file":"SectionWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/editor/SectionWrapper.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,WAAW,EACX,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,UAAU,EACV,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,EAAE,YAAY,2CAyVd"}
@@ -15,6 +15,13 @@ interface DeriveResult {
15
15
  description: string;
16
16
  }
17
17
  export declare function deriveStatusDisplay({ mainStatus, savedStatus, contentDiffers, isLocalOnly }: DeriveInput): DeriveResult;
18
+ interface StatusRadioListProps {
19
+ status: Status;
20
+ onChange: (status: Status) => void;
21
+ onClose?: () => void;
22
+ ariaLabel?: string;
23
+ }
24
+ export declare function StatusRadioList({ status, onChange, onClose, ariaLabel }: StatusRadioListProps): import("react/jsx-runtime").JSX.Element;
18
25
  interface StatusIndicatorProps {
19
26
  mainStatus: string | null;
20
27
  savedStatus: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StatusIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/editor/StatusIndicator.tsx"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5C,UAAU,MAAM;IACd,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,WAAW,GAAG,YAAY,CAkCvH;AAYD,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,oBAAoB,2CA6CtB"}
1
+ {"version":3,"file":"StatusIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/editor/StatusIndicator.tsx"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5C,UAAU,MAAM;IACd,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgBD,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,WAAW,GAAG,YAAY,CAkCvH;AAYD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAA4B,EAAE,EAAE,oBAAoB,2CA2BhH;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,oBAAoB,2CAsBtB"}
@@ -11,7 +11,7 @@ import {
11
11
  buildBlockDropData,
12
12
  canDropBlock,
13
13
  isBlockDragData
14
- } from "../../chunk-QFV5TSPO.js";
14
+ } from "../../chunk-SIYQ37QY.js";
15
15
  import "../../chunk-5THS4K5D.js";
16
16
  import "../../chunk-ZSPCE6MZ.js";
17
17
  import {
@@ -24,7 +24,7 @@ import {
24
24
  cn
25
25
  } from "../../chunk-7EOSDFS3.js";
26
26
  import "../../chunk-YBVK254P.js";
27
- import "../../chunk-WCBYXNAG.js";
27
+ import "../../chunk-KMQZYORS.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
30
30
 
@@ -203,6 +203,33 @@ var dotColorClasses = {
203
203
  modified: "bg-orange-400"
204
204
  };
205
205
  var STATUSES = ["draft", "live", "archived"];
206
+ function StatusRadioList({ status, onChange, onClose, ariaLabel = "Section status" }) {
207
+ return /* @__PURE__ */ jsx3("ul", { role: "radiogroup", "aria-label": ariaLabel, className: "w-full overflow-hidden py-1", children: STATUSES.map((s) => {
208
+ const checked = s === status;
209
+ return /* @__PURE__ */ jsx3("li", { children: /* @__PURE__ */ jsxs3(
210
+ PopoverItem,
211
+ {
212
+ role: "radio",
213
+ "aria-checked": checked,
214
+ onClick: () => {
215
+ if (s !== status) onChange(s);
216
+ onClose?.();
217
+ },
218
+ children: [
219
+ /* @__PURE__ */ jsx3(
220
+ "span",
221
+ {
222
+ "aria-hidden": "true",
223
+ className: cn("h-3 w-3 shrink-0 rounded-full border border-base-200", dotColorClasses[s])
224
+ }
225
+ ),
226
+ /* @__PURE__ */ jsx3("span", { className: "flex-1 font-medium capitalize text-base-contrast", children: s }),
227
+ checked && /* @__PURE__ */ jsx3(Check, { size: 14, strokeWidth: 3, className: "text-primary" })
228
+ ]
229
+ }
230
+ ) }, s);
231
+ }) });
232
+ }
206
233
  function StatusIndicator({
207
234
  mainStatus,
208
235
  savedStatus,
@@ -227,31 +254,7 @@ function StatusIndicator({
227
254
  ariaLabel: display.description,
228
255
  buttonClassName: "text-base-contrast-light",
229
256
  disabled,
230
- clickContent: (onClose) => /* @__PURE__ */ jsx3("ul", { role: "radiogroup", "aria-label": "Section status", className: "w-full overflow-hidden py-1", children: STATUSES.map((s) => {
231
- const checked = s === status;
232
- return /* @__PURE__ */ jsx3("li", { children: /* @__PURE__ */ jsxs3(
233
- PopoverItem,
234
- {
235
- role: "radio",
236
- "aria-checked": checked,
237
- onClick: () => {
238
- if (s !== status) onChange(s);
239
- onClose();
240
- },
241
- children: [
242
- /* @__PURE__ */ jsx3(
243
- "span",
244
- {
245
- "aria-hidden": "true",
246
- className: cn("h-3 w-3 shrink-0 rounded-full border border-base-200", dotColorClasses[s])
247
- }
248
- ),
249
- /* @__PURE__ */ jsx3("span", { className: "flex-1 font-medium capitalize text-base-contrast", children: s }),
250
- checked && /* @__PURE__ */ jsx3(Check, { size: 14, strokeWidth: 3, className: "text-primary" })
251
- ]
252
- }
253
- ) }, s);
254
- }) })
257
+ clickContent: (onClose) => /* @__PURE__ */ jsx3(StatusRadioList, { status, onChange, onClose })
255
258
  }
256
259
  );
257
260
  }
@@ -259,6 +262,43 @@ function StatusIndicator({
259
262
  // src/components/editor/AudienceIndicator.tsx
260
263
  import { Check as Check2 } from "lucide-react";
261
264
  import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
265
+ function AudienceChecklist({ access, audiences, onToggle }) {
266
+ if (audiences.length === 0) {
267
+ return /* @__PURE__ */ jsx4("div", { className: "px-3 py-2 text-xs text-base-contrast-light whitespace-nowrap", children: "No audiences configured. Add audiences in Site Settings \u2192 Viewer Access." });
268
+ }
269
+ return /* @__PURE__ */ jsx4("ul", { role: "list", className: "w-full overflow-hidden py-1", children: audiences.map((a) => {
270
+ const checked = access.includes(a.name);
271
+ return /* @__PURE__ */ jsx4("li", { children: /* @__PURE__ */ jsxs4(
272
+ PopoverItem,
273
+ {
274
+ role: "checkbox",
275
+ "aria-checked": checked,
276
+ onClick: () => onToggle(a.name),
277
+ children: [
278
+ /* @__PURE__ */ jsx4(
279
+ "span",
280
+ {
281
+ "aria-hidden": "true",
282
+ className: cn(
283
+ "flex h-5 w-5 shrink-0 items-center justify-center rounded border transition-colors",
284
+ checked ? "border-primary bg-primary text-primary-contrast" : "border-base-300 bg-base"
285
+ ),
286
+ children: checked && /* @__PURE__ */ jsx4(Check2, { size: 14, strokeWidth: 3 })
287
+ }
288
+ ),
289
+ /* @__PURE__ */ jsx4(
290
+ "span",
291
+ {
292
+ className: "h-3 w-3 shrink-0 rounded-full border border-base-200",
293
+ style: { backgroundColor: a.color ?? "#9ca3af" }
294
+ }
295
+ ),
296
+ /* @__PURE__ */ jsx4("span", { className: "font-medium text-base-contrast whitespace-nowrap", children: a.displayName })
297
+ ]
298
+ }
299
+ ) }, a.name);
300
+ }) });
301
+ }
262
302
  function AudienceIndicator({ access, audiences, onChange, disabled }) {
263
303
  const selected = audiences.filter((a) => access.includes(a.name));
264
304
  const visibleDots = selected.slice(0, 3);
@@ -280,38 +320,7 @@ function AudienceIndicator({ access, audiences, onChange, disabled }) {
280
320
  label: labelText,
281
321
  buttonClassName: selected.length === 0 ? "text-base-contrast-light" : void 0,
282
322
  disabled,
283
- clickContent: audiences.length === 0 ? /* @__PURE__ */ jsx4("div", { className: "px-3 py-2 text-xs text-base-contrast-light whitespace-nowrap", children: "No audiences configured. Add audiences in Site Settings \u2192 Viewer Access." }) : /* @__PURE__ */ jsx4("ul", { role: "list", className: "w-full overflow-hidden py-1", children: audiences.map((a) => {
284
- const checked = access.includes(a.name);
285
- return /* @__PURE__ */ jsx4("li", { children: /* @__PURE__ */ jsxs4(
286
- PopoverItem,
287
- {
288
- role: "checkbox",
289
- "aria-checked": checked,
290
- onClick: () => toggle(a.name),
291
- children: [
292
- /* @__PURE__ */ jsx4(
293
- "span",
294
- {
295
- "aria-hidden": "true",
296
- className: cn(
297
- "flex h-5 w-5 shrink-0 items-center justify-center rounded border transition-colors",
298
- checked ? "border-primary bg-primary text-primary-contrast" : "border-base-300 bg-base"
299
- ),
300
- children: checked && /* @__PURE__ */ jsx4(Check2, { size: 14, strokeWidth: 3 })
301
- }
302
- ),
303
- /* @__PURE__ */ jsx4(
304
- "span",
305
- {
306
- className: "h-3 w-3 shrink-0 rounded-full border border-base-200",
307
- style: { backgroundColor: a.color ?? "#9ca3af" }
308
- }
309
- ),
310
- /* @__PURE__ */ jsx4("span", { className: "font-medium text-base-contrast", children: a.displayName })
311
- ]
312
- }
313
- ) }, a.name);
314
- }) })
323
+ clickContent: /* @__PURE__ */ jsx4(AudienceChecklist, { access, audiences, onToggle: toggle })
315
324
  }
316
325
  );
317
326
  }
@@ -609,7 +618,10 @@ function SectionWrapper({
609
618
  "div",
610
619
  {
611
620
  className: cn(
612
- "pointer-events-none absolute right-0 bottom-full z-30 mb-1 flex items-center gap-2 transition-opacity",
621
+ // When a selector inside this cluster is open (Popover renders role="dialog"),
622
+ // lift the whole cluster above sibling sections' chrome (z-30, hover:z-[60]) and
623
+ // the inline type picker (z-50) so the open dropdown isn't overlapped.
624
+ "pointer-events-none absolute right-0 bottom-full z-30 has-[[role=dialog]]:z-[70] mb-1 flex items-center gap-2 transition-opacity",
613
625
  // A lock is important state — keep the cluster visible without hover.
614
626
  alwaysShow || isLocked ? "opacity-100" : "opacity-0 group-hover:opacity-100"
615
627
  ),
@@ -637,28 +649,38 @@ function SectionWrapper({
637
649
  onChange: (newAccess) => onAccessChange?.(newAccess)
638
650
  }
639
651
  ) }),
640
- !isLocked && onAddChild && /* @__PURE__ */ jsx8(
641
- "button",
652
+ !isLocked && onAddChild && /* @__PURE__ */ jsx8(Tooltip, { className: "pointer-events-auto", content: /* @__PURE__ */ jsxs6(Fragment2, { children: [
653
+ /* @__PURE__ */ jsx8(Kbd, { children: "Add" }),
654
+ " a block"
655
+ ] }), children: /* @__PURE__ */ jsx8(
656
+ IconButton,
642
657
  {
643
- type: "button",
658
+ icon: /* @__PURE__ */ jsx8(Plus, { size: 16 }),
659
+ label: "Add block",
644
660
  onClick: onAddChild,
645
- "aria-label": "Add block",
646
- className: "pointer-events-auto cursor-pointer rounded p-1 text-base-contrast-light hover:text-primary",
647
- children: /* @__PURE__ */ jsx8(Plus, { size: 16 })
661
+ className: "pointer-events-auto hover:text-primary"
648
662
  }
649
- ),
650
- !isLocked && hasSettings && /* @__PURE__ */ jsx8(SettingsButton, { onClick: handleSettingsClick }),
651
- !isLocked && onMoveSection && /* @__PURE__ */ jsx8(
652
- "button",
663
+ ) }),
664
+ !isLocked && onMoveSection && /* @__PURE__ */ jsx8(Tooltip, { className: "pointer-events-auto", content: /* @__PURE__ */ jsxs6(Fragment2, { children: [
665
+ /* @__PURE__ */ jsx8(Kbd, { children: "Move" }),
666
+ " to page"
667
+ ] }), children: /* @__PURE__ */ jsx8(
668
+ IconButton,
653
669
  {
654
- type: "button",
670
+ icon: /* @__PURE__ */ jsx8(ArrowRightLeft, { size: 16 }),
671
+ label: "Move to page",
655
672
  onClick: onMoveSection,
656
- "aria-label": "Move to page",
657
- className: "pointer-events-auto cursor-pointer rounded p-1 text-base-contrast-light hover:text-primary",
658
- children: /* @__PURE__ */ jsx8(ArrowRightLeft, { size: 16 })
673
+ className: "pointer-events-auto hover:text-primary"
659
674
  }
660
- ),
661
- !isLocked && onDelete && /* @__PURE__ */ jsx8(DeleteButton, { onDelete })
675
+ ) }),
676
+ !isLocked && hasSettings && /* @__PURE__ */ jsx8(Tooltip, { className: "pointer-events-auto", content: /* @__PURE__ */ jsxs6(Fragment2, { children: [
677
+ /* @__PURE__ */ jsx8(Kbd, { children: "Edit" }),
678
+ " settings"
679
+ ] }), children: /* @__PURE__ */ jsx8(SettingsButton, { onClick: handleSettingsClick }) }),
680
+ !isLocked && onDelete && /* @__PURE__ */ jsx8(Tooltip, { className: "pointer-events-auto", content: /* @__PURE__ */ jsxs6(Fragment2, { children: [
681
+ /* @__PURE__ */ jsx8(Kbd, { children: "Delete" }),
682
+ " section"
683
+ ] }), children: /* @__PURE__ */ jsx8(DeleteButton, { onDelete }) })
662
684
  ]
663
685
  }
664
686
  ),
@@ -2,7 +2,7 @@ import {
2
2
  EditableRichText,
3
3
  LinkPopover,
4
4
  defineHeadingSection
5
- } from "../../chunk-2QXJ2KGB.js";
5
+ } from "../../chunk-KBQNJZUX.js";
6
6
  import {
7
7
  EditableGrid,
8
8
  EditablePlainText,
@@ -10,7 +10,7 @@ import {
10
10
  MediaBlock,
11
11
  ResolvedMedia,
12
12
  useEditableCollection
13
- } from "../../chunk-J75XGXYD.js";
13
+ } from "../../chunk-XKRQMTE4.js";
14
14
  import "../../chunk-ZSPCE6MZ.js";
15
15
  import {
16
16
  DeleteIcon,
@@ -23,7 +23,7 @@ import {
23
23
  cn
24
24
  } from "../../chunk-7EOSDFS3.js";
25
25
  import "../../chunk-YBVK254P.js";
26
- import "../../chunk-WCBYXNAG.js";
26
+ import "../../chunk-KMQZYORS.js";
27
27
  import "../../chunk-VKAGMEKE.js";
28
28
  import "../../chunk-FM4M4Q2W.js";
29
29
  import "../../chunk-JSBRDJBE.js";
@@ -1,8 +1,9 @@
1
1
  import { type ReactNode } from "react";
2
2
  import type { Section } from "../../../schemas/sections";
3
3
  interface ContainerContent {
4
+ layout: "grid" | "masonry";
4
5
  columns: number;
5
- flow: string;
6
+ equalizeRowHeight: boolean;
6
7
  childDefaults?: Record<string, unknown>;
7
8
  children: Section[];
8
9
  }
@@ -15,6 +16,6 @@ export interface ContainerProps {
15
16
  onChange?: (content: unknown) => void;
16
17
  openModal?: (title: string, content: ReactNode) => void;
17
18
  }
18
- export declare function Container({ content, isEditMode, onChange, openModal }: ContainerProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function Container({ content, isEditMode, onChange, openModal }: ContainerProps): import("react/jsx-runtime").JSX.Element | null;
19
20
  export {};
20
21
  //# sourceMappingURL=Container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAyGzD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACzD;AAkDD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CAyLrF"}
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AA4GzD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;CACzD;AAwFD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,kDA6RrF"}
@@ -2,9 +2,11 @@ interface ChildLike {
2
2
  type: string;
3
3
  options?: Record<string, unknown>;
4
4
  }
5
+ type ContainerLayout = "grid" | "masonry";
5
6
  interface ContainerSettingsFormProps {
6
7
  columns?: number;
7
- flow?: string;
8
+ layout?: ContainerLayout;
9
+ equalizeRowHeight?: boolean;
8
10
  childDefaults?: Record<string, unknown>;
9
11
  children?: ChildLike[];
10
12
  onChange: (result: {
@@ -12,6 +14,6 @@ interface ContainerSettingsFormProps {
12
14
  options: Record<string, unknown>;
13
15
  }) => void;
14
16
  }
15
- export declare function ContainerSettingsForm({ columns, flow, childDefaults, children, onChange, }: ContainerSettingsFormProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function ContainerSettingsForm({ columns, layout: layoutProp, equalizeRowHeight, childDefaults, children, onChange, }: ContainerSettingsFormProps): import("react/jsx-runtime").JSX.Element;
16
18
  export {};
17
19
  //# sourceMappingURL=ContainerSettingsForm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerSettingsForm.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/ContainerSettingsForm.tsx"],"names":[],"mappings":"AAMA,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;CACpG;AAgBD,wBAAgB,qBAAqB,CAAC,EACpC,OAAW,EACX,IAAY,EACZ,aAAkB,EAClB,QAAa,EACb,QAAQ,GACT,EAAE,0BAA0B,2CAyE5B"}
1
+ {"version":3,"file":"ContainerSettingsForm.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/ContainerSettingsForm.tsx"],"names":[],"mappings":"AAMA,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,UAAU,0BAA0B;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;CACpG;AAsBD,wBAAgB,qBAAqB,CAAC,EACpC,OAAW,EACX,MAAM,EAAE,UAAmB,EAC3B,iBAAyB,EACzB,aAAkB,EAClB,QAAa,EACb,QAAQ,GACT,EAAE,0BAA0B,2CAuG5B"}
@@ -1,9 +1,15 @@
1
1
  declare const _default: import("../../..").SectionDefinition<{
2
2
  type: "container";
3
3
  content: {
4
- children: import("../../..").Section<Record<string, unknown>>[];
4
+ children: {
5
+ id: string;
6
+ type: string;
7
+ content: Record<string, unknown>;
8
+ options?: Record<string, unknown>;
9
+ }[];
10
+ layout: "grid" | "masonry";
5
11
  columns: number;
6
- flow: "row" | "column";
12
+ equalizeRowHeight: boolean;
7
13
  childDefaults?: Record<string, unknown> | undefined;
8
14
  };
9
15
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/index.tsx"],"names":[],"mappings":";;;;;;;;;AAgDA,wBAgBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/Container/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAmEA,wBAsBG"}
@@ -4,8 +4,10 @@ interface Props {
4
4
  type: string;
5
5
  status?: string;
6
6
  dimNonPublished?: boolean;
7
+ /** Unconditional dim, e.g. audience preview: the selected audience can't see this section. */
8
+ dimmed?: boolean;
7
9
  children: ReactNode;
8
10
  }
9
- export declare function SectionLayout({ type, status, dimNonPublished, children }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export declare function SectionLayout({ type, status, dimNonPublished, dimmed, children }: Props): import("react/jsx-runtime").JSX.Element;
10
12
  export { getSectionCategory };
11
13
  //# sourceMappingURL=SectionLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SectionLayout.d.ts","sourceRoot":"","sources":["../../../src/components/sections/SectionLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAQ/E;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"SectionLayout.d.ts","sourceRoot":"","sources":["../../../src/components/sections/SectionLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAgBvF;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import type { LoadedSection } from "../../lib/loader";
2
2
  interface Props {
3
3
  sections: LoadedSection[];
4
+ /** Audience-preview mode: dim sections this audience can't access. */
5
+ previewAudience?: string | null;
4
6
  }
5
- export default function ViewRenderer({ sections }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export default function ViewRenderer({ sections, previewAudience }: Props): import("react/jsx-runtime").JSX.Element;
6
8
  export {};
7
9
  //# sourceMappingURL=ViewRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/sections/ViewRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,UAAU,KAAK;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAmBvD"}
1
+ {"version":3,"file":"ViewRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/sections/ViewRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,UAAU,KAAK;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,eAAsB,EAAE,EAAE,KAAK,2CAyB/E"}
@@ -112,9 +112,15 @@ export declare const allSectionDefs: (import("../..").SectionDefinition<{
112
112
  }> | import("../..").SectionDefinition<{
113
113
  type: "container";
114
114
  content: {
115
- children: import("../..").Section<Record<string, unknown>>[];
115
+ children: {
116
+ id: string;
117
+ type: string;
118
+ content: Record<string, unknown>;
119
+ options?: Record<string, unknown>;
120
+ }[];
121
+ layout: "grid" | "masonry";
116
122
  columns: number;
117
- flow: "row" | "column";
123
+ equalizeRowHeight: boolean;
118
124
  childDefaults?: Record<string, unknown> | undefined;
119
125
  };
120
126
  }> | import("../..").SectionDefinition<{
@@ -1 +1 @@
1
- {"version":3,"file":"all-sections.d.ts","sourceRoot":"","sources":["../../../src/components/sections/all-sections.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAiD,CAAC"}
1
+ {"version":3,"file":"all-sections.d.ts","sourceRoot":"","sources":["../../../src/components/sections/all-sections.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAiD,CAAC"}
@@ -2,16 +2,16 @@ import {
2
2
  ColorItemSchema,
3
3
  ColorSpaceSchema,
4
4
  brandGuideSectionDefs
5
- } from "../../chunk-L2MAJKKC.js";
5
+ } from "../../chunk-XUIJHYKI.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-J75XGXYD.js";
7
+ import "../../chunk-XKRQMTE4.js";
8
8
  import "../../chunk-NV4R6VHN.js";
9
9
  import "../../chunk-CZ3YXGK5.js";
10
10
  import "../../chunk-PZJL2S3Z.js";
11
11
  import "../../chunk-WDSVHKAH.js";
12
12
  import "../../chunk-7EOSDFS3.js";
13
13
  import "../../chunk-YBVK254P.js";
14
- import "../../chunk-WCBYXNAG.js";
14
+ import "../../chunk-KMQZYORS.js";
15
15
  import "../../chunk-VKAGMEKE.js";
16
16
  import "../../chunk-FM4M4Q2W.js";
17
17
  import "../../chunk-JSBRDJBE.js";
@@ -107,9 +107,15 @@ export declare const coreSectionDefs: (import("../..").SectionDefinition<{
107
107
  }> | import("../..").SectionDefinition<{
108
108
  type: "container";
109
109
  content: {
110
- children: import("../..").Section<Record<string, unknown>>[];
110
+ children: {
111
+ id: string;
112
+ type: string;
113
+ content: Record<string, unknown>;
114
+ options?: Record<string, unknown>;
115
+ }[];
116
+ layout: "grid" | "masonry";
111
117
  columns: number;
112
- flow: "row" | "column";
118
+ equalizeRowHeight: boolean;
113
119
  childDefaults?: Record<string, unknown> | undefined;
114
120
  };
115
121
  }> | import("../..").SectionDefinition<{
@@ -1 +1 @@
1
- {"version":3,"file":"core-sections.d.ts","sourceRoot":"","sources":["../../../src/components/sections/core-sections.ts"],"names":[],"mappings":"AAUA;;+BAE+B;AAK/B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAU3B,CAAC"}
1
+ {"version":3,"file":"core-sections.d.ts","sourceRoot":"","sources":["../../../src/components/sections/core-sections.ts"],"names":[],"mappings":"AAUA;;+BAE+B;AAK/B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAU3B,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  allSectionDefs
3
- } from "../../chunk-MVX4ULYE.js";
4
- import "../../chunk-L2MAJKKC.js";
5
- import "../../chunk-QFV5TSPO.js";
3
+ } from "../../chunk-ZLG7S54V.js";
4
+ import "../../chunk-XUIJHYKI.js";
5
+ import "../../chunk-SIYQ37QY.js";
6
6
  import "../../chunk-5THS4K5D.js";
7
- import "../../chunk-2QXJ2KGB.js";
8
- import "../../chunk-J75XGXYD.js";
7
+ import "../../chunk-KBQNJZUX.js";
8
+ import "../../chunk-XKRQMTE4.js";
9
9
  import "../../chunk-ZSPCE6MZ.js";
10
10
  import "../../chunk-NV4R6VHN.js";
11
11
  import "../../chunk-Y4JQGO6G.js";
@@ -16,7 +16,7 @@ import "../../chunk-53DKVAB6.js";
16
16
  import "../../chunk-7EOSDFS3.js";
17
17
  import "../../chunk-YBVK254P.js";
18
18
  import "../../chunk-TZQPOR5A.js";
19
- import "../../chunk-WCBYXNAG.js";
19
+ import "../../chunk-KMQZYORS.js";
20
20
  import {
21
21
  registerRichText,
22
22
  registerSchema