@drawnagency/primitives 0.1.56 → 0.1.58

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 (165) hide show
  1. package/dist/adapter-HH47ZPGM.js +1779 -0
  2. package/dist/auth/index.js +1 -0
  3. package/dist/{chunk-EU6NZ4GS.js → chunk-AN62WPW7.js} +22 -163
  4. package/dist/chunk-ESE5UBQI.js +73 -0
  5. package/dist/{chunk-KGYWQDBB.js → chunk-ICLXLWQ5.js} +9 -72
  6. package/dist/chunk-JSBRDJBE.js +30 -0
  7. package/dist/chunk-NSCT3AMV.js +32 -0
  8. package/dist/chunk-RFZNNCAS.js +160 -0
  9. package/dist/chunk-TG43X7JO.js +123 -0
  10. package/dist/{chunk-7IAWF7LE.js → chunk-V7JN2DDU.js} +2 -19
  11. package/dist/chunk-VKAGMEKE.js +90 -0
  12. package/dist/chunk-ZU2MKPTG.js +29 -0
  13. package/dist/closest-edge-EBOXL3YW.js +72 -0
  14. package/dist/components/editor/ChildBlockWrapper.d.ts +19 -0
  15. package/dist/components/editor/ChildBlockWrapper.d.ts.map +1 -0
  16. package/dist/components/editor/ColSpanControl.d.ts +9 -0
  17. package/dist/components/editor/ColSpanControl.d.ts.map +1 -0
  18. package/dist/components/editor/SectionWrapper.d.ts +1 -1
  19. package/dist/components/editor/SectionWrapper.d.ts.map +1 -1
  20. package/dist/components/editor/SettingsForm.d.ts +5 -1
  21. package/dist/components/editor/SettingsForm.d.ts.map +1 -1
  22. package/dist/components/primitives/EditableGrid.d.ts.map +1 -1
  23. package/dist/components/primitives/IconPicker.d.ts +7 -1
  24. package/dist/components/primitives/IconPicker.d.ts.map +1 -1
  25. package/dist/components/sections/Container/Container.d.ts +20 -0
  26. package/dist/components/sections/Container/Container.d.ts.map +1 -0
  27. package/dist/components/sections/Container/ContainerSettingsForm.d.ts +17 -0
  28. package/dist/components/sections/Container/ContainerSettingsForm.d.ts.map +1 -0
  29. package/dist/components/sections/Container/index.d.ts +11 -0
  30. package/dist/components/sections/Container/index.d.ts.map +1 -0
  31. package/dist/components/sections/IconList/IconList.d.ts +1 -0
  32. package/dist/components/sections/IconList/IconList.d.ts.map +1 -1
  33. package/dist/components/sections/IconList/IconListSettings.d.ts +3 -4
  34. package/dist/components/sections/IconList/IconListSettings.d.ts.map +1 -1
  35. package/dist/components/sections/IconList/index.d.ts +1 -0
  36. package/dist/components/sections/IconList/index.d.ts.map +1 -1
  37. package/dist/components/sections/Media/MediaBlock.d.ts +19 -0
  38. package/dist/components/sections/Media/MediaBlock.d.ts.map +1 -0
  39. package/dist/components/sections/{MediaGrid → Media}/index.d.ts +15 -25
  40. package/dist/components/sections/Media/index.d.ts.map +1 -0
  41. package/dist/components/sections/Prose/index.d.ts.map +1 -1
  42. package/dist/components/sections/Spacer/Spacer.d.ts +2 -0
  43. package/dist/components/sections/Spacer/Spacer.d.ts.map +1 -0
  44. package/dist/components/sections/Spacer/index.d.ts +6 -0
  45. package/dist/components/sections/Spacer/index.d.ts.map +1 -0
  46. package/dist/components/sections/all-sections.d.ts +29 -103
  47. package/dist/components/sections/all-sections.d.ts.map +1 -1
  48. package/dist/components/sections/register-schemas.d.ts.map +1 -1
  49. package/dist/components/sections/register-schemas.js +4094 -0
  50. package/dist/components/shared/Tabs.d.ts +24 -0
  51. package/dist/components/shared/Tabs.d.ts.map +1 -0
  52. package/dist/components/shell/EditorShell.d.ts.map +1 -1
  53. package/dist/components/shell/SiteSettingsModal.d.ts.map +1 -1
  54. package/dist/components/shell/blockMoveDispatch.d.ts +21 -0
  55. package/dist/components/shell/blockMoveDispatch.d.ts.map +1 -0
  56. package/dist/hooks/useBlockDnd.d.ts +48 -0
  57. package/dist/hooks/useBlockDnd.d.ts.map +1 -0
  58. package/dist/index.js +69 -56
  59. package/dist/lib/block-dnd.d.ts +42 -0
  60. package/dist/lib/block-dnd.d.ts.map +1 -0
  61. package/dist/lib/block-move.d.ts +31 -0
  62. package/dist/lib/block-move.d.ts.map +1 -0
  63. package/dist/lib/container-grid.d.ts +29 -0
  64. package/dist/lib/container-grid.d.ts.map +1 -0
  65. package/dist/lib/container-ops.d.ts +44 -0
  66. package/dist/lib/container-ops.d.ts.map +1 -0
  67. package/dist/lib/dexie.d.ts.map +1 -1
  68. package/dist/lib/dexie.js +15 -0
  69. package/dist/lib/env.js +1 -0
  70. package/dist/lib/index.js +19 -13
  71. package/dist/lib/loader.d.ts.map +1 -1
  72. package/dist/lib/migrate-sections-transform.d.ts +12 -0
  73. package/dist/lib/migrate-sections-transform.d.ts.map +1 -0
  74. package/dist/lib/migrate-sections-transform.js +7 -0
  75. package/dist/lib/registry.d.ts +39 -0
  76. package/dist/lib/registry.d.ts.map +1 -1
  77. package/dist/lib/registry.js +27 -0
  78. package/dist/media/index.js +1 -0
  79. package/dist/schemas/auth.js +1 -0
  80. package/dist/schemas/block.d.ts +20 -0
  81. package/dist/schemas/block.d.ts.map +1 -0
  82. package/dist/schemas/block.js +15 -0
  83. package/dist/schemas/index.js +13 -4
  84. package/dist/schemas/link.d.ts +7 -0
  85. package/dist/schemas/link.d.ts.map +1 -1
  86. package/dist/schemas/rich-text.d.ts +9 -0
  87. package/dist/schemas/rich-text.d.ts.map +1 -0
  88. package/dist/schemas/sections.d.ts +2 -0
  89. package/dist/schemas/sections.d.ts.map +1 -1
  90. package/dist/schemas/shared.d.ts +30 -0
  91. package/dist/schemas/shared.d.ts.map +1 -1
  92. package/dist/types/database.js +2 -0
  93. package/package.json +17 -1
  94. package/src/components/brandguide/Colors.tsx +35 -33
  95. package/src/components/editor/ChildBlockWrapper.tsx +108 -0
  96. package/src/components/editor/ColSpanControl.tsx +56 -0
  97. package/src/components/editor/SectionWrapper.tsx +44 -20
  98. package/src/components/editor/SettingsForm.tsx +100 -73
  99. package/src/components/primitives/EditableGrid.tsx +40 -36
  100. package/src/components/primitives/IconPicker.tsx +116 -26
  101. package/src/components/sections/Container/Container.tsx +354 -0
  102. package/src/components/sections/Container/ContainerSettingsForm.tsx +113 -0
  103. package/src/components/sections/Container/index.tsx +51 -0
  104. package/src/components/sections/IconList/IconList.tsx +113 -43
  105. package/src/components/sections/IconList/IconListSettings.tsx +2 -2
  106. package/src/components/sections/IconList/index.tsx +1 -1
  107. package/src/components/sections/Media/MediaBlock.tsx +103 -0
  108. package/src/components/sections/Media/index.tsx +85 -0
  109. package/src/components/sections/Prose/index.tsx +1 -0
  110. package/src/components/sections/Spacer/Spacer.tsx +6 -0
  111. package/src/components/sections/Spacer/index.tsx +18 -0
  112. package/src/components/sections/all-sections.ts +10 -8
  113. package/src/components/sections/register-schemas.ts +5 -2
  114. package/src/components/shared/Tabs.tsx +63 -0
  115. package/src/components/shell/EditorShell.tsx +105 -13
  116. package/src/components/shell/SiteSettingsModal.tsx +41 -51
  117. package/src/components/shell/blockMoveDispatch.ts +40 -0
  118. package/src/hooks/useBlockDnd.ts +144 -0
  119. package/src/lib/block-dnd.ts +58 -0
  120. package/src/lib/block-move.ts +236 -0
  121. package/src/lib/container-grid.ts +58 -0
  122. package/src/lib/container-ops.ts +159 -0
  123. package/src/lib/dexie.ts +22 -0
  124. package/src/lib/loader.ts +16 -4
  125. package/src/lib/migrate-sections-transform.ts +147 -0
  126. package/src/lib/registry.ts +48 -0
  127. package/src/schemas/block.ts +40 -0
  128. package/src/schemas/link.ts +19 -1
  129. package/src/schemas/rich-text.ts +11 -0
  130. package/src/schemas/sections.ts +5 -1
  131. package/src/schemas/shared.ts +6 -0
  132. package/dist/components/brandguide/DoDontList.d.ts +0 -16
  133. package/dist/components/brandguide/DoDontList.d.ts.map +0 -1
  134. package/dist/components/brandguide/DoDontMediaGrid.d.ts +0 -16
  135. package/dist/components/brandguide/DoDontMediaGrid.d.ts.map +0 -1
  136. package/dist/components/primitives/MediaSettingsForms.d.ts +0 -23
  137. package/dist/components/primitives/MediaSettingsForms.d.ts.map +0 -1
  138. package/dist/components/sections/DoDontList/index.d.ts +0 -21
  139. package/dist/components/sections/DoDontList/index.d.ts.map +0 -1
  140. package/dist/components/sections/DoDontMediaGrid/index.d.ts +0 -55
  141. package/dist/components/sections/DoDontMediaGrid/index.d.ts.map +0 -1
  142. package/dist/components/sections/MediaGrid/MediaGrid.d.ts +0 -17
  143. package/dist/components/sections/MediaGrid/MediaGrid.d.ts.map +0 -1
  144. package/dist/components/sections/MediaGrid/index.d.ts.map +0 -1
  145. package/dist/components/sections/SplitContent/SplitContent.d.ts +0 -14
  146. package/dist/components/sections/SplitContent/SplitContent.d.ts.map +0 -1
  147. package/dist/components/sections/SplitContent/index.d.ts +0 -13
  148. package/dist/components/sections/SplitContent/index.d.ts.map +0 -1
  149. package/src/components/brandguide/DoDontList.d.ts.map +0 -1
  150. package/src/components/brandguide/DoDontList.tsx +0 -67
  151. package/src/components/brandguide/DoDontMediaGrid.d.ts.map +0 -1
  152. package/src/components/brandguide/DoDontMediaGrid.tsx +0 -19
  153. package/src/components/primitives/MediaSettingsForms.tsx +0 -128
  154. package/src/components/sections/DoDontList/index.d.ts.map +0 -1
  155. package/src/components/sections/DoDontList/index.tsx +0 -45
  156. package/src/components/sections/DoDontMediaGrid/index.d.ts.map +0 -1
  157. package/src/components/sections/DoDontMediaGrid/index.tsx +0 -63
  158. package/src/components/sections/MediaGrid/MediaGrid.d.ts.map +0 -1
  159. package/src/components/sections/MediaGrid/MediaGrid.tsx +0 -239
  160. package/src/components/sections/MediaGrid/index.d.ts.map +0 -1
  161. package/src/components/sections/MediaGrid/index.tsx +0 -57
  162. package/src/components/sections/SplitContent/SplitContent.d.ts.map +0 -1
  163. package/src/components/sections/SplitContent/SplitContent.tsx +0 -84
  164. package/src/components/sections/SplitContent/index.d.ts.map +0 -1
  165. package/src/components/sections/SplitContent/index.tsx +0 -55
@@ -0,0 +1,24 @@
1
+ import { type ReactNode } from "react";
2
+ export interface TabItem {
3
+ id: string;
4
+ label: string;
5
+ content: ReactNode;
6
+ }
7
+ interface TabsProps {
8
+ tabs: TabItem[];
9
+ /** Initial active tab when uncontrolled. Defaults to the first tab. */
10
+ defaultTabId?: string;
11
+ /** When provided, the component is controlled by the parent. */
12
+ activeTabId?: string;
13
+ onTabChange?: (id: string) => void;
14
+ /**
15
+ * When true, the tab-bar row uses -mx-6 to break out of the parent's px-6 padding
16
+ * (e.g. EditorModal's content wrapper) and re-pads with px-6 so buttons stay aligned.
17
+ * The tab panel inherits the parent's padding unchanged.
18
+ * Use only when the parent container has px-6; leave false for noPadding contexts.
19
+ */
20
+ fullBleedTabBar?: boolean;
21
+ }
22
+ export declare function Tabs({ tabs, defaultTabId, activeTabId, onTabChange, fullBleedTabBar }: TabsProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,SAAS,2CAqChG"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgEjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CA24BP"}
1
+ {"version":3,"file":"EditorShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/EditorShell.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAqEjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAIhB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EACZ,WAAW,GACZ,EAAE,KAAK,2CAg6BP"}
@@ -1 +1 @@
1
- {"version":3,"file":"SiteSettingsModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAID,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,2CAmGzI"}
1
+ {"version":3,"file":"SiteSettingsModal.d.ts","sourceRoot":"","sources":["../../../src/components/shell/SiteSettingsModal.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,UAAU,KAAK;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CACjE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,2CA2FzI"}
@@ -0,0 +1,21 @@
1
+ import { type BlockMove, type BlockMoveState } from "../../lib/block-move";
2
+ import type { LoadedSection } from "../../lib/loader";
3
+ import type { SiteIndex } from "../../schemas/site-config";
4
+ import type { SectionContent } from "../../schemas/sections";
5
+ export interface BlockMoveDispatchDeps {
6
+ getState: () => BlockMoveState;
7
+ setSections: (updater: (prev: LoadedSection[]) => LoadedSection[]) => void;
8
+ setSiteIndex: (updater: (prev: SiteIndex) => SiteIndex) => void;
9
+ persistence: {
10
+ markSectionDirty: (id: string, content: SectionContent) => void;
11
+ markIndexDirty: () => void;
12
+ removeSection: (id: string) => void;
13
+ };
14
+ isRemote: (id: string) => boolean;
15
+ scheduleDelete: (id: string) => void;
16
+ markLocalChanges: () => void;
17
+ /** Latest content for a section id, for markSectionDirty after the move. */
18
+ newSectionContent: (id: string, sections: LoadedSection[]) => SectionContent;
19
+ }
20
+ export declare function makeBlockMoveDispatch(deps: BlockMoveDispatchDeps): (move: BlockMove) => void;
21
+ //# sourceMappingURL=blockMoveDispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockMoveDispatch.d.ts","sourceRoot":"","sources":["../../../src/components/shell/blockMoveDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,cAAc,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,IAAI,CAAC;IAC3E,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE;QACX,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;QAChE,cAAc,EAAE,MAAM,IAAI,CAAC;QAC3B,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KACrC,CAAC;IACF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,cAAc,CAAC;CAC9E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,IACnC,MAAM,SAAS,UAiB5C"}
@@ -0,0 +1,48 @@
1
+ import type { Edge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
2
+ type AllowedEdges = Edge[];
3
+ export interface UseBlockDndArgs {
4
+ blockId: string;
5
+ containerId: string;
6
+ index: number;
7
+ isContainer: boolean;
8
+ /** ["left","right"] inside a row container, ["top","bottom"] at root */
9
+ allowedEdges: AllowedEdges;
10
+ enabled: boolean;
11
+ }
12
+ /**
13
+ * Wires a block as a unified drag source + drop target. Manages only this block's
14
+ * local hover edge + dragging flag — the actual move dispatch is centralized in the
15
+ * EditorContent monitor (a later task), so nested targets never double-fire. The edge
16
+ * indicator is shown only when this element is the innermost drop target.
17
+ *
18
+ * Callers must pass a stable `allowedEdges` array (module-level constant or memoized)
19
+ * to avoid re-subscribing on every render.
20
+ */
21
+ export declare function useBlockDnd({ blockId, containerId, index, isContainer, allowedEdges, enabled }: UseBlockDndArgs): {
22
+ dragRef: import("react").RefObject<HTMLDivElement | null>;
23
+ handleRef: import("react").RefObject<HTMLButtonElement | null>;
24
+ closestEdge: import("@atlaskit/pragmatic-drag-and-drop-hitbox/dist/types/types").Edge | null;
25
+ isDragging: boolean;
26
+ };
27
+ export interface UseBlockDropZoneArgs {
28
+ containerId: string;
29
+ index: number;
30
+ /** When set, the zone is a column-targeted drop (ghost/spacer): place at this 1-based column. */
31
+ toColumn?: number;
32
+ allowedEdges: AllowedEdges;
33
+ enabled: boolean;
34
+ }
35
+ /**
36
+ * A drop-target-ONLY zone (not draggable) — used for an empty container's first-drop
37
+ * area, where there are no child cells to act as targets. It advertises
38
+ * `{ dropContainerId, index }` and shows an edge indicator only when it is the innermost
39
+ * drop target. The actual move dispatch is centralized in the EditorContent monitor.
40
+ *
41
+ * Callers must pass a stable `allowedEdges` array (module-level constant or memoized).
42
+ */
43
+ export declare function useBlockDropZone({ containerId, index, toColumn, allowedEdges, enabled }: UseBlockDropZoneArgs): {
44
+ dropRef: import("react").RefObject<HTMLDivElement | null>;
45
+ closestEdge: import("@atlaskit/pragmatic-drag-and-drop-hitbox/dist/types/types").Edge | null;
46
+ };
47
+ export {};
48
+ //# sourceMappingURL=useBlockDnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBlockDnd.d.ts","sourceRoot":"","sources":["../../src/hooks/useBlockDnd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAGlF,KAAK,YAAY,GAAG,IAAI,EAAE,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,eAAe;;;;;EA0D/G;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,oBAAoB;;;EAyC7G"}
package/dist/index.js CHANGED
@@ -1,12 +1,43 @@
1
+ import {
2
+ AUDIENCE_COOKIE,
3
+ AUDIENCE_MAX_AGE_SECONDS,
4
+ LastOwnerError,
5
+ SESSION_COOKIE,
6
+ SESSION_MAX_AGE_SECONDS,
7
+ setSessionCookie,
8
+ signAudienceToken,
9
+ signSessionToken,
10
+ verifyAudienceToken,
11
+ verifySessionToken
12
+ } from "./chunk-XTK4BR27.js";
13
+ import {
14
+ EXT_TO_MIME,
15
+ MIME_TO_EXT,
16
+ ProcessingQueue,
17
+ displayFilename,
18
+ displayFilenameExt,
19
+ formatFileSize,
20
+ generateVideoPoster,
21
+ getMediaProvider,
22
+ hashFileBuffer,
23
+ mimeToExt,
24
+ resolveManifestReferences,
25
+ resolveMedia,
26
+ sanitizeMediaName,
27
+ setMediaProvider
28
+ } from "./chunk-L2JJFOXD.js";
1
29
  import {
2
30
  AudienceColorSchema,
3
31
  AudienceNameSchema,
32
+ MediaGridOptionsSchema,
33
+ slugifyAudienceName
34
+ } from "./chunk-V7JN2DDU.js";
35
+ import {
4
36
  DEFAULT_LINK,
5
37
  LinkTargetSchema,
6
38
  LinkValueSchema,
7
- MediaGridOptionsSchema,
8
- slugifyAudienceName
9
- } from "./chunk-7IAWF7LE.js";
39
+ isSafeHref
40
+ } from "./chunk-ZU2MKPTG.js";
10
41
  import {
11
42
  AudienceSchema,
12
43
  RoleSchema,
@@ -15,25 +46,33 @@ import {
15
46
  } from "./chunk-LZKVV4K2.js";
16
47
  import {
17
48
  buildGoogleFontsUrl,
18
- cn,
19
49
  createEvent,
20
- curatedIcons,
21
50
  darkModeEvent,
22
51
  deriveContrast,
23
52
  editModeEvent,
24
- ensureSanitizer,
25
53
  formatTimestamp,
26
- generateNavLinks,
27
- getIcon,
28
54
  gridColsClass,
29
55
  loadSiteContent,
30
56
  loadStaticSiteContent,
31
57
  mergeSiteContent,
32
58
  navChangeEvent,
33
- safeRedirect,
59
+ safeRedirect
60
+ } from "./chunk-AN62WPW7.js";
61
+ import "./chunk-TG43X7JO.js";
62
+ import {
63
+ cn,
64
+ curatedIcons,
65
+ ensureSanitizer,
66
+ generateNavLinks,
67
+ getIcon,
34
68
  sanitizeHtml,
35
69
  toSectionId
36
- } from "./chunk-EU6NZ4GS.js";
70
+ } from "./chunk-RFZNNCAS.js";
71
+ import {
72
+ isSameOriginRequest,
73
+ requireSessionSecret,
74
+ safeNextPath
75
+ } from "./chunk-S2L3BPLS.js";
37
76
  import {
38
77
  ColorItemSchema,
39
78
  ColorSpaceSchema,
@@ -45,8 +84,24 @@ import {
45
84
  PageStatusSchema,
46
85
  RESERVED_SLUGS,
47
86
  SectionMetaSchema,
87
+ SingleMediaReferenceSchema,
48
88
  SiteConfigSchema,
49
89
  TextLineSchema,
90
+ getSectionContentSchema,
91
+ getSectionSchema,
92
+ normalizeSiteIndex
93
+ } from "./chunk-ICLXLWQ5.js";
94
+ import {
95
+ ImageManifestSchema,
96
+ MediaConfigSchema,
97
+ MediaItemSchema,
98
+ VariantSchema
99
+ } from "./chunk-DKOUFIP6.js";
100
+ import "./chunk-NSCT3AMV.js";
101
+ import {
102
+ env
103
+ } from "./chunk-WKZ7OENC.js";
104
+ import {
50
105
  clearRegistry,
51
106
  createRegistry,
52
107
  defineSection,
@@ -54,54 +109,10 @@ import {
54
109
  getAllSections,
55
110
  getSchema,
56
111
  getSection,
57
- getSectionContentSchema,
58
- getSectionSchema,
59
- normalizeSiteIndex,
60
112
  registerSchema,
61
113
  registerSection
62
- } from "./chunk-KGYWQDBB.js";
63
- import {
64
- AUDIENCE_COOKIE,
65
- AUDIENCE_MAX_AGE_SECONDS,
66
- LastOwnerError,
67
- SESSION_COOKIE,
68
- SESSION_MAX_AGE_SECONDS,
69
- setSessionCookie,
70
- signAudienceToken,
71
- signSessionToken,
72
- verifyAudienceToken,
73
- verifySessionToken
74
- } from "./chunk-XTK4BR27.js";
75
- import {
76
- isSameOriginRequest,
77
- requireSessionSecret,
78
- safeNextPath
79
- } from "./chunk-S2L3BPLS.js";
80
- import {
81
- env
82
- } from "./chunk-WKZ7OENC.js";
83
- import {
84
- EXT_TO_MIME,
85
- MIME_TO_EXT,
86
- ProcessingQueue,
87
- displayFilename,
88
- displayFilenameExt,
89
- formatFileSize,
90
- generateVideoPoster,
91
- getMediaProvider,
92
- hashFileBuffer,
93
- mimeToExt,
94
- resolveManifestReferences,
95
- resolveMedia,
96
- sanitizeMediaName,
97
- setMediaProvider
98
- } from "./chunk-L2JJFOXD.js";
99
- import {
100
- ImageManifestSchema,
101
- MediaConfigSchema,
102
- MediaItemSchema,
103
- VariantSchema
104
- } from "./chunk-DKOUFIP6.js";
114
+ } from "./chunk-VKAGMEKE.js";
115
+ import "./chunk-JSBRDJBE.js";
105
116
 
106
117
  // src/storage/types.ts
107
118
  var StorageConflictError = class extends Error {
@@ -143,6 +154,7 @@ export {
143
154
  SESSION_MAX_AGE_SECONDS,
144
155
  SectionMetaSchema,
145
156
  SessionSchema,
157
+ SingleMediaReferenceSchema,
146
158
  SiteConfigSchema,
147
159
  SiteUserSchema,
148
160
  StorageConflictError,
@@ -176,6 +188,7 @@ export {
176
188
  getSectionSchema,
177
189
  gridColsClass,
178
190
  hashFileBuffer,
191
+ isSafeHref,
179
192
  isSameOriginRequest,
180
193
  loadSiteContent,
181
194
  loadStaticSiteContent,
@@ -0,0 +1,42 @@
1
+ import type { Edge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
2
+ /** The page root behaves like a single-column container (spec §3). */
3
+ export declare const ROOT_CONTAINER_ID = "__root__";
4
+ export interface BlockDragData {
5
+ dragType: "block";
6
+ blockId: string;
7
+ /** Container the block currently lives in: ROOT_CONTAINER_ID or a container section id. */
8
+ containerId: string;
9
+ index: number;
10
+ /** True if the dragged block is itself a container (used for the depth guard). */
11
+ isContainer: boolean;
12
+ [key: string | symbol]: unknown;
13
+ }
14
+ export interface BlockDropData {
15
+ dropContainerId: string;
16
+ index: number;
17
+ /** When set, a column-targeted drop (ghost/spacer cell): place at this 1-based grid column. */
18
+ toColumn?: number;
19
+ [key: string | symbol]: unknown;
20
+ }
21
+ export declare function buildBlockDragData(args: {
22
+ blockId: string;
23
+ containerId: string;
24
+ index: number;
25
+ isContainer: boolean;
26
+ }): BlockDragData;
27
+ export declare function buildBlockDropData(args: {
28
+ dropContainerId: string;
29
+ index: number;
30
+ toColumn?: number;
31
+ }): BlockDropData;
32
+ export declare function isBlockDragData(data: Record<string | symbol, unknown>): data is BlockDragData;
33
+ /**
34
+ * May `source` drop into `dropContainerId`?
35
+ * - A container block may only land at the page root (v1 one-level nesting → no
36
+ * container-in-container; MAX_BLOCK_DEPTH=2).
37
+ * - Nothing may drop onto itself.
38
+ */
39
+ export declare function canDropBlock(source: BlockDragData, dropContainerId: string): boolean;
40
+ /** Closest edge → insertion index (before = index, after = index + 1). */
41
+ export declare function resolveDropIndex(targetIndex: number, edge: Edge | null): number;
42
+ //# sourceMappingURL=block-dnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-dnd.d.ts","sourceRoot":"","sources":["../../src/lib/block-dnd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAElF,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,WAAW,EAAE,OAAO,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,aAAa,CAEhB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAErH;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,aAAa,CAE7F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAIpF;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAG/E"}
@@ -0,0 +1,31 @@
1
+ import type { LoadedSection } from "./loader";
2
+ import type { SiteIndex } from "../schemas/site-config";
3
+ export interface BlockMoveState {
4
+ sections: LoadedSection[];
5
+ index: SiteIndex;
6
+ rootPageId: string;
7
+ }
8
+ export interface BlockMove {
9
+ blockId: string;
10
+ fromContainerId: string;
11
+ fromIndex: number;
12
+ toContainerId: string;
13
+ /** Raw insertion index in the ORIGINAL (pre-removal) array, 0..len — as resolveDropIndex returns. applyBlockMove shifts it for same-container moves. */
14
+ toIndex: number;
15
+ /** When set, place at this 1-based grid column (ghost/spacer drop) instead of toIndex. */
16
+ toColumn?: number;
17
+ }
18
+ export interface BlockMoveEffects {
19
+ markDirtySectionIds: string[];
20
+ indexDirty: boolean;
21
+ deleteSectionIds: string[];
22
+ createSectionIds: string[];
23
+ }
24
+ export interface BlockMoveResult {
25
+ sections: LoadedSection[];
26
+ index: SiteIndex;
27
+ effects: BlockMoveEffects;
28
+ changed: boolean;
29
+ }
30
+ export declare function applyBlockMove(state: BlockMoveState, move: BlockMove, newId?: () => string): BlockMoveResult;
31
+ //# sourceMappingURL=block-move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-move.d.ts","sourceRoot":"","sources":["../../src/lib/block-move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAKrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AA2BD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,EACf,KAAK,GAAE,MAAM,MAAqB,GACjC,eAAe,CAsFjB"}
@@ -0,0 +1,29 @@
1
+ /** Max columns a container exposes in v1 (covers halves/thirds/sixths via spans). */
2
+ export declare const MAX_CONTAINER_COLUMNS = 6;
3
+ /**
4
+ * Column count -> grid-cols classes that collapse by the CONTAINER's own width
5
+ * (Tailwind 4 container-query `@` variants), not the viewport. Full static
6
+ * strings so Tailwind's source scan generates them (no interpolation/purge gap).
7
+ */
8
+ export declare const containerGridClass: Record<number, string>;
9
+ /**
10
+ * Per-child colSpan -> col-span classes, keyed [columns][span]. A child's span
11
+ * must clamp to the columns AVAILABLE at each container-query breakpoint, and the
12
+ * collapse curve differs per column count — so the class depends on BOTH the
13
+ * parent's column count and the child's span, not span alone. At every breakpoint
14
+ * the emitted span = min(span, columns-at-that-breakpoint), guaranteeing a span
15
+ * never exceeds the tracks that exist (no phantom column). Span 1 needs no class.
16
+ * Full static strings so Tailwind's source scan generates them.
17
+ */
18
+ export declare const colSpanClass: Record<number, Record<number, string>>;
19
+ /** Gap token -> Tailwind gap class. Retained as a utility; the container now uses a
20
+ * fixed gap (the Gap setting was removed), but the map stays for general use. */
21
+ export declare const gapClass: Record<string, string>;
22
+ /**
23
+ * Per-column-count container-query classes that HIDE a spacer cell once the container
24
+ * collapses to a single column (mobile). Mirrors `containerGridClass`'s collapse curve:
25
+ * hidden at base width, shown at the first breakpoint where the grid has ≥2 columns.
26
+ * Static strings so Tailwind's source scan generates them.
27
+ */
28
+ export declare const spacerHiddenClass: Record<number, string>;
29
+ //# sourceMappingURL=container-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-grid.d.ts","sourceRoot":"","sources":["../../src/lib/container-grid.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/D,CAAC;AAEF;kFACkF;AAClF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOpD,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { ReactNode } from "react";
2
+ import type { Section } from "../schemas/sections";
3
+ /** A container is any block whose `content.children` is an array. */
4
+ export declare function getContainerChildren(block: Section): Section[];
5
+ export declare function reorderChild(container: Section, from: number, to: number): Section;
6
+ /**
7
+ * Block types insertable as a container CHILD — excludes `container` itself
8
+ * (v1 enforces one level of container nesting). Shared so the depth guard has a
9
+ * single, testable source of truth (the container toolbar's "+" picker uses it).
10
+ */
11
+ export declare function childInsertableTypes(): {
12
+ type: string;
13
+ label: string;
14
+ icon: ReactNode;
15
+ }[];
16
+ export declare function insertChildAt(container: Section, child: Section, index: number): Section;
17
+ export declare function removeChildAt(container: Section, index: number): {
18
+ container: Section;
19
+ removed: Section | null;
20
+ };
21
+ export declare function duplicateChildAt(container: Section, index: number, newId: () => string): Section;
22
+ /** Set a child's colSpan, clamped to the container's columns. Span 1 removes `layout`. */
23
+ export declare function setChildColSpan(container: Section, index: number, span: number): Section;
24
+ /** A spacer is the empty gap-filler block. */
25
+ export declare function isSpacer(child: Section): boolean;
26
+ /** Mint a fresh empty spacer block. */
27
+ export declare function makeSpacer(newId: () => string): Section;
28
+ /** Grid tracks occupied by a container's children (real child = clamped colSpan, spacer = 1). */
29
+ export declare function occupiedColumns(children: Section[], columns: number): number;
30
+ /** Remove spacer children after the last non-spacer child (a trailing gap is meaningless). */
31
+ export declare function trimTrailingSpacers(container: Section): Section;
32
+ /**
33
+ * Place `block` at 1-based grid column `K` of `container`. If a spacer already holds column
34
+ * `K`, replace it; otherwise pad intervening empty columns with spacers and append the block.
35
+ * Trailing spacers are trimmed. `columns` clamps colSpan accounting; `newId` mints spacer ids.
36
+ *
37
+ * Precondition: `K` addresses an EMPTY column — a trailing empty column or one held by a
38
+ * spacer. The editor's drop targets (ghost/spacer cells) only ever address empty columns, so
39
+ * callers never target a column consumed by a real block. Defensive: out-of-range `K`
40
+ * (`K < 1 || K > columns`) or a spacer `block` returns the container unchanged. A `block` with
41
+ * `colSpan > 1` dropped onto a single spacer keeps its span; CSS grid reflows it (v1).
42
+ */
43
+ export declare function placeBlockAtColumn(container: Section, block: Section, K: number, columns: number, newId: () => string): Section;
44
+ //# sourceMappingURL=container-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-ops.d.ts","sourceRoot":"","sources":["../../src/lib/container-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAG9D;AAWD,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAOlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,EAAE,CAIzF;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMxF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,GACZ;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAMjD;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAOT;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAaxF;AAOD,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEhD;AAED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,OAAO,CAEvD;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAM/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,GAClB,OAAO,CAiBT"}
@@ -1 +1 @@
1
- {"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dexie.d.ts","sourceRoot":"","sources":["../../src/lib/dexie.ts"],"names":[],"mappings":"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"}
package/dist/lib/dexie.js CHANGED
@@ -1,3 +1,5 @@
1
+ import "../chunk-JSBRDJBE.js";
2
+
1
3
  // src/lib/dexie.ts
2
4
  import Dexie from "dexie";
3
5
  var EditorDatabase = class extends Dexie {
@@ -74,6 +76,19 @@ var EditorDatabase = class extends Dexie {
74
76
  await tx.table("siteIndex").clear();
75
77
  await tx.table("contentCache").clear();
76
78
  });
79
+ this.version(8).stores({
80
+ sections: "sectionId",
81
+ siteIndex: "key",
82
+ meta: "key",
83
+ siteConfig: "key",
84
+ contentCache: "key",
85
+ mediaManifest: "key",
86
+ pendingMedia: "id",
87
+ pendingMediaDeletions: "id"
88
+ }).upgrade(async (tx) => {
89
+ await tx.table("siteIndex").clear();
90
+ await tx.table("contentCache").clear();
91
+ });
77
92
  }
78
93
  };
79
94
  var db = null;
package/dist/lib/env.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  env
3
3
  } from "../chunk-WKZ7OENC.js";
4
+ import "../chunk-JSBRDJBE.js";
4
5
  export {
5
6
  env
6
7
  };
package/dist/lib/index.js CHANGED
@@ -1,24 +1,34 @@
1
1
  import {
2
2
  buildGoogleFontsUrl,
3
- cn,
4
3
  createEvent,
5
- curatedIcons,
6
4
  darkModeEvent,
7
5
  deriveContrast,
8
6
  editModeEvent,
9
- ensureSanitizer,
10
7
  formatTimestamp,
11
- generateNavLinks,
12
- getIcon,
13
8
  gridColsClass,
14
9
  loadSiteContent,
15
10
  loadStaticSiteContent,
16
11
  mergeSiteContent,
17
12
  navChangeEvent,
18
- safeRedirect,
13
+ safeRedirect
14
+ } from "../chunk-AN62WPW7.js";
15
+ import "../chunk-TG43X7JO.js";
16
+ import {
17
+ cn,
18
+ curatedIcons,
19
+ ensureSanitizer,
20
+ generateNavLinks,
21
+ getIcon,
19
22
  sanitizeHtml,
20
23
  toSectionId
21
- } from "../chunk-EU6NZ4GS.js";
24
+ } from "../chunk-RFZNNCAS.js";
25
+ import "../chunk-S2L3BPLS.js";
26
+ import "../chunk-ICLXLWQ5.js";
27
+ import "../chunk-DKOUFIP6.js";
28
+ import "../chunk-NSCT3AMV.js";
29
+ import {
30
+ env
31
+ } from "../chunk-WKZ7OENC.js";
22
32
  import {
23
33
  clearRegistry,
24
34
  createRegistry,
@@ -29,12 +39,8 @@ import {
29
39
  getSection,
30
40
  registerSchema,
31
41
  registerSection
32
- } from "../chunk-KGYWQDBB.js";
33
- import "../chunk-S2L3BPLS.js";
34
- import {
35
- env
36
- } from "../chunk-WKZ7OENC.js";
37
- import "../chunk-DKOUFIP6.js";
42
+ } from "../chunk-VKAGMEKE.js";
43
+ import "../chunk-JSBRDJBE.js";
38
44
  export {
39
45
  buildGoogleFontsUrl,
40
46
  clearRegistry,
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGvF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,WAAW,CA6Bb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,WAAW,CAQb;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAe9E"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/lib/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAKvF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,WAAW,CAuCb;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,WAAW,CAQb;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAe9E"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Pure, browser-safe transform that rewrites the three legacy "layout-as-content"
3
+ * section types into the recursive `container` block. Used by BOTH the loader
4
+ * fallback (mergeSiteContent) and the codemod (scripts/migrate-sections.ts), so
5
+ * it must stay free of Node APIs and registry/schema imports.
6
+ *
7
+ * Structural only — it never sanitizes. Output is emitted in schema-normal form
8
+ * (every defaulted key explicit, only known ref fields carried) so that
9
+ * `transform(raw)` deep-equals `safeParse(transform(raw))` (convergence).
10
+ */
11
+ export declare function upgradeLegacySection(raw: unknown): unknown;
12
+ //# sourceMappingURL=migrate-sections-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-sections-transform.d.ts","sourceRoot":"","sources":["../../src/lib/migrate-sections-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO1D"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ upgradeLegacySection
3
+ } from "../chunk-TG43X7JO.js";
4
+ import "../chunk-JSBRDJBE.js";
5
+ export {
6
+ upgradeLegacySection
7
+ };