@jhits/plugin-blog 0.0.8 → 0.0.9

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 (439) hide show
  1. package/dist/api/categories.d.ts +8 -0
  2. package/dist/api/categories.d.ts.map +1 -0
  3. package/dist/api/categories.js +30 -0
  4. package/dist/api/check-title.d.ts +8 -0
  5. package/dist/api/check-title.d.ts.map +1 -0
  6. package/dist/api/check-title.js +47 -0
  7. package/dist/api/config-handler.d.ts +21 -0
  8. package/dist/api/config-handler.d.ts.map +1 -0
  9. package/dist/api/config-handler.js +46 -0
  10. package/dist/api/handler.d.ts +42 -0
  11. package/dist/api/handler.d.ts.map +1 -0
  12. package/dist/api/handler.js +331 -0
  13. package/dist/api/index.d.ts +12 -0
  14. package/dist/api/index.d.ts.map +1 -0
  15. package/dist/api/index.js +12 -0
  16. package/dist/api/route.d.ts +50 -0
  17. package/dist/api/route.d.ts.map +1 -0
  18. package/dist/api/route.js +69 -0
  19. package/dist/api/router.d.ts +27 -0
  20. package/dist/api/router.d.ts.map +1 -0
  21. package/dist/api/router.js +98 -0
  22. package/dist/api-server.d.ts +9 -0
  23. package/dist/api-server.d.ts.map +1 -0
  24. package/dist/api-server.js +9 -0
  25. package/dist/config.d.ts +14 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +156 -0
  28. package/dist/hooks/index.d.ts +8 -0
  29. package/dist/hooks/index.d.ts.map +1 -0
  30. package/dist/hooks/index.js +7 -0
  31. package/dist/hooks/useBlog.d.ts +31 -0
  32. package/dist/hooks/useBlog.d.ts.map +1 -0
  33. package/dist/hooks/useBlog.js +57 -0
  34. package/dist/hooks/useBlogs.d.ts +39 -0
  35. package/dist/hooks/useBlogs.d.ts.map +1 -0
  36. package/dist/hooks/useBlogs.js +82 -0
  37. package/dist/hooks/useCategories.d.ts +9 -0
  38. package/dist/hooks/useCategories.d.ts.map +1 -0
  39. package/dist/hooks/useCategories.js +70 -0
  40. package/dist/index.d.ts +55 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +228 -0
  43. package/dist/index.server.d.ts +12 -0
  44. package/dist/index.server.d.ts.map +1 -0
  45. package/dist/index.server.js +10 -0
  46. package/dist/init.d.ts +40 -0
  47. package/dist/init.d.ts.map +1 -0
  48. package/dist/init.js +41 -0
  49. package/dist/lib/blocks/BlockRenderer.d.ts +54 -0
  50. package/dist/lib/blocks/BlockRenderer.d.ts.map +1 -0
  51. package/dist/lib/blocks/BlockRenderer.js +54 -0
  52. package/dist/lib/blocks/index.d.ts +5 -0
  53. package/dist/lib/blocks/index.d.ts.map +1 -0
  54. package/dist/lib/blocks/index.js +4 -0
  55. package/dist/lib/config-storage.d.ts +30 -0
  56. package/dist/lib/config-storage.d.ts.map +1 -0
  57. package/dist/lib/config-storage.js +31 -0
  58. package/dist/lib/index.d.ts +8 -0
  59. package/dist/lib/index.d.ts.map +1 -0
  60. package/dist/lib/index.js +7 -0
  61. package/dist/lib/layouts/blocks/ColumnsBlock.d.ts +25 -0
  62. package/dist/lib/layouts/blocks/ColumnsBlock.d.ts.map +1 -0
  63. package/dist/lib/layouts/blocks/ColumnsBlock.js +186 -0
  64. package/dist/lib/layouts/blocks/SectionBlock.d.ts +25 -0
  65. package/dist/lib/layouts/blocks/SectionBlock.d.ts.map +1 -0
  66. package/dist/lib/layouts/blocks/SectionBlock.js +44 -0
  67. package/dist/lib/layouts/blocks/index.d.ts +7 -0
  68. package/dist/lib/layouts/blocks/index.d.ts.map +1 -0
  69. package/dist/lib/layouts/blocks/index.js +6 -0
  70. package/dist/lib/layouts/index.d.ts +23 -0
  71. package/dist/lib/layouts/index.d.ts.map +1 -0
  72. package/dist/lib/layouts/index.js +45 -0
  73. package/dist/lib/layouts/registerLayoutBlocks.d.ts +9 -0
  74. package/dist/lib/layouts/registerLayoutBlocks.d.ts.map +1 -0
  75. package/dist/lib/layouts/registerLayoutBlocks.js +60 -0
  76. package/dist/lib/mappers/apiMapper.d.ts +66 -0
  77. package/dist/lib/mappers/apiMapper.d.ts.map +1 -0
  78. package/dist/lib/mappers/apiMapper.js +188 -0
  79. package/dist/lib/migration/index.d.ts +5 -0
  80. package/dist/lib/migration/index.d.ts.map +1 -0
  81. package/dist/lib/migration/index.js +4 -0
  82. package/dist/lib/migration/mapper.d.ts +37 -0
  83. package/dist/lib/migration/mapper.d.ts.map +1 -0
  84. package/dist/lib/migration/mapper.js +98 -0
  85. package/dist/lib/rich-text/RichTextEditor.d.ts +45 -0
  86. package/dist/lib/rich-text/RichTextEditor.d.ts.map +1 -0
  87. package/dist/lib/rich-text/RichTextEditor.js +556 -0
  88. package/dist/lib/rich-text/RichTextPreview.d.ts +16 -0
  89. package/dist/lib/rich-text/RichTextPreview.d.ts.map +1 -0
  90. package/dist/lib/rich-text/RichTextPreview.js +144 -0
  91. package/dist/lib/rich-text/index.d.ts +9 -0
  92. package/dist/lib/rich-text/index.d.ts.map +1 -0
  93. package/dist/lib/rich-text/index.js +6 -0
  94. package/dist/lib/utils/blockHelpers.d.ts +23 -0
  95. package/dist/lib/utils/blockHelpers.d.ts.map +1 -0
  96. package/dist/lib/utils/blockHelpers.js +65 -0
  97. package/dist/lib/utils/configValidation.d.ts +23 -0
  98. package/dist/lib/utils/configValidation.d.ts.map +1 -0
  99. package/dist/lib/utils/configValidation.js +111 -0
  100. package/dist/lib/utils/index.d.ts +7 -0
  101. package/dist/lib/utils/index.d.ts.map +1 -0
  102. package/dist/lib/utils/index.js +6 -0
  103. package/dist/lib/utils/slugify.d.ts +25 -0
  104. package/dist/lib/utils/slugify.d.ts.map +1 -0
  105. package/dist/lib/utils/slugify.js +65 -0
  106. package/dist/registry/BlockRegistry.d.ts +62 -0
  107. package/dist/registry/BlockRegistry.d.ts.map +1 -0
  108. package/dist/registry/BlockRegistry.js +112 -0
  109. package/dist/registry/index.d.ts +6 -0
  110. package/dist/registry/index.d.ts.map +1 -0
  111. package/dist/registry/index.js +4 -0
  112. package/dist/state/EditorContext.d.ts +45 -0
  113. package/dist/state/EditorContext.d.ts.map +1 -0
  114. package/dist/state/EditorContext.js +215 -0
  115. package/dist/state/index.d.ts +7 -0
  116. package/dist/state/index.d.ts.map +1 -0
  117. package/dist/state/index.js +6 -0
  118. package/dist/state/reducer.d.ts +11 -0
  119. package/dist/state/reducer.d.ts.map +1 -0
  120. package/dist/state/reducer.js +599 -0
  121. package/dist/state/types.d.ts +162 -0
  122. package/dist/state/types.d.ts.map +1 -0
  123. package/dist/state/types.js +27 -0
  124. package/dist/types/block.d.ts +221 -0
  125. package/dist/types/block.d.ts.map +1 -0
  126. package/dist/types/block.js +6 -0
  127. package/dist/types/index.d.ts +8 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +5 -0
  130. package/dist/types/post.d.ts +136 -0
  131. package/dist/types/post.d.ts.map +1 -0
  132. package/dist/types/post.js +5 -0
  133. package/dist/utils/client.d.ts +48 -0
  134. package/dist/utils/client.d.ts.map +1 -0
  135. package/dist/utils/client.js +77 -0
  136. package/dist/utils/index.d.ts +6 -0
  137. package/dist/utils/index.d.ts.map +1 -0
  138. package/dist/utils/index.js +5 -0
  139. package/dist/views/CanvasEditor/BlockWrapper.d.ts +16 -0
  140. package/dist/views/CanvasEditor/BlockWrapper.d.ts.map +1 -0
  141. package/dist/views/CanvasEditor/BlockWrapper.js +285 -0
  142. package/dist/views/CanvasEditor/CanvasEditorView.d.ts +14 -0
  143. package/dist/views/CanvasEditor/CanvasEditorView.d.ts.map +1 -0
  144. package/dist/views/CanvasEditor/CanvasEditorView.js +215 -0
  145. package/dist/views/CanvasEditor/EditorBody.d.ts +22 -0
  146. package/dist/views/CanvasEditor/EditorBody.d.ts.map +1 -0
  147. package/dist/views/CanvasEditor/EditorBody.js +505 -0
  148. package/dist/views/CanvasEditor/EditorHeader.d.ts +18 -0
  149. package/dist/views/CanvasEditor/EditorHeader.d.ts.map +1 -0
  150. package/dist/views/CanvasEditor/EditorHeader.js +101 -0
  151. package/dist/views/CanvasEditor/LayoutContainer.d.ts +17 -0
  152. package/dist/views/CanvasEditor/LayoutContainer.d.ts.map +1 -0
  153. package/dist/views/CanvasEditor/LayoutContainer.js +222 -0
  154. package/dist/views/CanvasEditor/SaveConfirmationModal.d.ts +13 -0
  155. package/dist/views/CanvasEditor/SaveConfirmationModal.d.ts.map +1 -0
  156. package/dist/views/CanvasEditor/SaveConfirmationModal.js +78 -0
  157. package/dist/views/CanvasEditor/components/CustomBlockItem.d.ts +14 -0
  158. package/dist/views/CanvasEditor/components/CustomBlockItem.d.ts.map +1 -0
  159. package/dist/views/CanvasEditor/components/CustomBlockItem.js +44 -0
  160. package/dist/views/CanvasEditor/components/EditorCanvas.d.ts +29 -0
  161. package/dist/views/CanvasEditor/components/EditorCanvas.d.ts.map +1 -0
  162. package/dist/views/CanvasEditor/components/EditorCanvas.js +32 -0
  163. package/dist/views/CanvasEditor/components/EditorLibrary.d.ts +7 -0
  164. package/dist/views/CanvasEditor/components/EditorLibrary.d.ts.map +1 -0
  165. package/dist/views/CanvasEditor/components/EditorLibrary.js +25 -0
  166. package/dist/views/CanvasEditor/components/EditorSidebar.d.ts +13 -0
  167. package/dist/views/CanvasEditor/components/EditorSidebar.d.ts.map +1 -0
  168. package/dist/views/CanvasEditor/components/EditorSidebar.js +19 -0
  169. package/dist/views/CanvasEditor/components/ErrorBanner.d.ts +6 -0
  170. package/dist/views/CanvasEditor/components/ErrorBanner.d.ts.map +1 -0
  171. package/dist/views/CanvasEditor/components/ErrorBanner.js +8 -0
  172. package/dist/views/CanvasEditor/components/FeaturedMediaSection.d.ts +25 -0
  173. package/dist/views/CanvasEditor/components/FeaturedMediaSection.d.ts.map +1 -0
  174. package/dist/views/CanvasEditor/components/FeaturedMediaSection.js +199 -0
  175. package/dist/views/CanvasEditor/components/LibraryItem.d.ts +14 -0
  176. package/dist/views/CanvasEditor/components/LibraryItem.d.ts.map +1 -0
  177. package/dist/views/CanvasEditor/components/LibraryItem.js +43 -0
  178. package/dist/views/CanvasEditor/components/PrivacySettingsSection.d.ts +15 -0
  179. package/dist/views/CanvasEditor/components/PrivacySettingsSection.d.ts.map +1 -0
  180. package/dist/views/CanvasEditor/components/PrivacySettingsSection.js +70 -0
  181. package/dist/views/CanvasEditor/components/index.d.ts +21 -0
  182. package/dist/views/CanvasEditor/components/index.d.ts.map +1 -0
  183. package/dist/views/CanvasEditor/components/index.js +12 -0
  184. package/dist/views/CanvasEditor/hooks/index.d.ts +10 -0
  185. package/dist/views/CanvasEditor/hooks/index.d.ts.map +1 -0
  186. package/dist/views/CanvasEditor/hooks/index.js +9 -0
  187. package/dist/views/CanvasEditor/hooks/useHeroBlock.d.ts +8 -0
  188. package/dist/views/CanvasEditor/hooks/useHeroBlock.d.ts.map +1 -0
  189. package/dist/views/CanvasEditor/hooks/useHeroBlock.js +90 -0
  190. package/dist/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts +3 -0
  191. package/dist/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  192. package/dist/views/CanvasEditor/hooks/useKeyboardShortcuts.js +119 -0
  193. package/dist/views/CanvasEditor/hooks/usePostLoader.d.ts +5 -0
  194. package/dist/views/CanvasEditor/hooks/usePostLoader.d.ts.map +1 -0
  195. package/dist/views/CanvasEditor/hooks/usePostLoader.js +32 -0
  196. package/dist/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts +2 -0
  197. package/dist/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts.map +1 -0
  198. package/dist/views/CanvasEditor/hooks/useRegisteredBlocks.js +47 -0
  199. package/dist/views/CanvasEditor/hooks/useUnsavedChanges.d.ts +25 -0
  200. package/dist/views/CanvasEditor/hooks/useUnsavedChanges.d.ts.map +1 -0
  201. package/dist/views/CanvasEditor/hooks/useUnsavedChanges.js +285 -0
  202. package/dist/views/CanvasEditor/index.d.ts +16 -0
  203. package/dist/views/CanvasEditor/index.d.ts.map +1 -0
  204. package/dist/views/CanvasEditor/index.js +9 -0
  205. package/dist/views/PostManager/EmptyState.d.ts +10 -0
  206. package/dist/views/PostManager/EmptyState.d.ts.map +1 -0
  207. package/dist/views/PostManager/EmptyState.js +12 -0
  208. package/dist/views/PostManager/PostActionsMenu.d.ts +12 -0
  209. package/dist/views/PostManager/PostActionsMenu.d.ts.map +1 -0
  210. package/dist/views/PostManager/PostActionsMenu.js +58 -0
  211. package/dist/views/PostManager/PostCards.d.ts +15 -0
  212. package/dist/views/PostManager/PostCards.d.ts.map +1 -0
  213. package/dist/views/PostManager/PostCards.js +77 -0
  214. package/dist/views/PostManager/PostFilters.d.ts +16 -0
  215. package/dist/views/PostManager/PostFilters.d.ts.map +1 -0
  216. package/dist/views/PostManager/PostFilters.js +10 -0
  217. package/dist/views/PostManager/PostManagerView.d.ts +11 -0
  218. package/dist/views/PostManager/PostManagerView.d.ts.map +1 -0
  219. package/dist/views/PostManager/PostManagerView.js +179 -0
  220. package/dist/views/PostManager/PostStats.d.ts +11 -0
  221. package/dist/views/PostManager/PostStats.d.ts.map +1 -0
  222. package/dist/views/PostManager/PostStats.js +46 -0
  223. package/dist/views/PostManager/PostTable.d.ts +15 -0
  224. package/dist/views/PostManager/PostTable.d.ts.map +1 -0
  225. package/dist/views/PostManager/PostTable.js +77 -0
  226. package/dist/views/PostManager/index.d.ts +12 -0
  227. package/dist/views/PostManager/index.d.ts.map +1 -0
  228. package/dist/views/PostManager/index.js +11 -0
  229. package/dist/views/Preview/PreviewBridgeView.d.ts +12 -0
  230. package/dist/views/Preview/PreviewBridgeView.d.ts.map +1 -0
  231. package/dist/views/Preview/PreviewBridgeView.js +11 -0
  232. package/dist/views/Preview/index.d.ts +6 -0
  233. package/dist/views/Preview/index.d.ts.map +1 -0
  234. package/dist/views/Preview/index.js +4 -0
  235. package/dist/views/Settings/SettingsView.d.ts +10 -0
  236. package/dist/views/Settings/SettingsView.d.ts.map +1 -0
  237. package/dist/views/Settings/SettingsView.js +113 -0
  238. package/dist/views/Settings/index.d.ts +6 -0
  239. package/dist/views/Settings/index.d.ts.map +1 -0
  240. package/dist/views/Settings/index.js +4 -0
  241. package/dist/views/SlugSEO/SlugSEOManagerView.d.ts +12 -0
  242. package/dist/views/SlugSEO/SlugSEOManagerView.d.ts.map +1 -0
  243. package/dist/views/SlugSEO/SlugSEOManagerView.js +11 -0
  244. package/dist/views/SlugSEO/index.d.ts +6 -0
  245. package/dist/views/SlugSEO/index.d.ts.map +1 -0
  246. package/dist/views/SlugSEO/index.js +4 -0
  247. package/package.json +59 -59
  248. package/src/hooks/index.d.ts +8 -0
  249. package/src/hooks/index.d.ts.map +1 -0
  250. package/src/hooks/index.js +7 -0
  251. package/src/hooks/useBlog.d.ts +31 -0
  252. package/src/hooks/useBlog.d.ts.map +1 -0
  253. package/src/hooks/useBlog.js +57 -0
  254. package/src/hooks/useBlogs.d.ts +39 -0
  255. package/src/hooks/useBlogs.d.ts.map +1 -0
  256. package/src/hooks/useBlogs.js +82 -0
  257. package/src/hooks/useCategories.d.ts +9 -0
  258. package/src/hooks/useCategories.d.ts.map +1 -0
  259. package/src/hooks/useCategories.js +70 -0
  260. package/src/index.d.ts +55 -0
  261. package/src/index.d.ts.map +1 -0
  262. package/src/index.js +228 -0
  263. package/src/init.d.ts +40 -0
  264. package/src/init.d.ts.map +1 -0
  265. package/src/init.js +41 -0
  266. package/src/lib/blocks/BlockRenderer.d.ts +54 -0
  267. package/src/lib/blocks/BlockRenderer.d.ts.map +1 -0
  268. package/src/lib/blocks/BlockRenderer.js +54 -0
  269. package/src/lib/config-storage.d.ts +30 -0
  270. package/src/lib/config-storage.d.ts.map +1 -0
  271. package/src/lib/config-storage.js +31 -0
  272. package/src/lib/layouts/blocks/ColumnsBlock.d.ts +25 -0
  273. package/src/lib/layouts/blocks/ColumnsBlock.d.ts.map +1 -0
  274. package/src/lib/layouts/blocks/ColumnsBlock.js +182 -0
  275. package/src/lib/layouts/blocks/SectionBlock.d.ts +25 -0
  276. package/src/lib/layouts/blocks/SectionBlock.d.ts.map +1 -0
  277. package/src/lib/layouts/blocks/SectionBlock.js +44 -0
  278. package/src/lib/layouts/index.d.ts +23 -0
  279. package/src/lib/layouts/index.d.ts.map +1 -0
  280. package/src/lib/layouts/index.js +45 -0
  281. package/src/lib/layouts/registerLayoutBlocks.d.ts +9 -0
  282. package/src/lib/layouts/registerLayoutBlocks.d.ts.map +1 -0
  283. package/src/lib/layouts/registerLayoutBlocks.js +60 -0
  284. package/src/lib/mappers/apiMapper.d.ts +66 -0
  285. package/src/lib/mappers/apiMapper.d.ts.map +1 -0
  286. package/src/lib/mappers/apiMapper.js +191 -0
  287. package/src/lib/rich-text/RichTextEditor.d.ts +45 -0
  288. package/src/lib/rich-text/RichTextEditor.d.ts.map +1 -0
  289. package/src/lib/rich-text/RichTextEditor.js +564 -0
  290. package/src/lib/rich-text/RichTextPreview.d.ts +16 -0
  291. package/src/lib/rich-text/RichTextPreview.d.ts.map +1 -0
  292. package/src/lib/rich-text/RichTextPreview.js +144 -0
  293. package/src/lib/rich-text/index.d.ts +9 -0
  294. package/src/lib/rich-text/index.d.ts.map +1 -0
  295. package/src/lib/rich-text/index.js +6 -0
  296. package/src/lib/utils/blockHelpers.d.ts +23 -0
  297. package/src/lib/utils/blockHelpers.d.ts.map +1 -0
  298. package/src/lib/utils/blockHelpers.js +65 -0
  299. package/src/lib/utils/configValidation.d.ts +23 -0
  300. package/src/lib/utils/configValidation.d.ts.map +1 -0
  301. package/src/lib/utils/configValidation.js +113 -0
  302. package/src/registry/BlockRegistry.d.ts +62 -0
  303. package/src/registry/BlockRegistry.d.ts.map +1 -0
  304. package/src/registry/BlockRegistry.js +112 -0
  305. package/src/registry/index.d.ts +6 -0
  306. package/src/registry/index.d.ts.map +1 -0
  307. package/src/registry/index.js +4 -0
  308. package/src/state/EditorContext.d.ts +45 -0
  309. package/src/state/EditorContext.d.ts.map +1 -0
  310. package/src/state/EditorContext.js +215 -0
  311. package/src/state/index.d.ts +7 -0
  312. package/src/state/index.d.ts.map +1 -0
  313. package/src/state/index.js +6 -0
  314. package/src/state/reducer.d.ts +11 -0
  315. package/src/state/reducer.d.ts.map +1 -0
  316. package/src/state/reducer.js +443 -0
  317. package/src/state/types.d.ts +162 -0
  318. package/src/state/types.d.ts.map +1 -0
  319. package/src/state/types.js +27 -0
  320. package/src/types/block.d.ts +221 -0
  321. package/src/types/block.d.ts.map +1 -0
  322. package/src/types/block.js +6 -0
  323. package/src/types/index.d.ts +8 -0
  324. package/src/types/index.d.ts.map +1 -0
  325. package/src/types/index.js +5 -0
  326. package/src/types/post.d.ts +136 -0
  327. package/src/types/post.d.ts.map +1 -0
  328. package/src/types/post.js +5 -0
  329. package/src/utils/client.d.ts +48 -0
  330. package/src/utils/client.d.ts.map +1 -0
  331. package/src/utils/client.js +77 -0
  332. package/src/views/CanvasEditor/BlockWrapper.d.ts +16 -0
  333. package/src/views/CanvasEditor/BlockWrapper.d.ts.map +1 -0
  334. package/src/views/CanvasEditor/BlockWrapper.js +276 -0
  335. package/src/views/CanvasEditor/CanvasEditorView.d.ts +14 -0
  336. package/src/views/CanvasEditor/CanvasEditorView.d.ts.map +1 -0
  337. package/src/views/CanvasEditor/CanvasEditorView.js +209 -0
  338. package/src/views/CanvasEditor/EditorBody.d.ts +22 -0
  339. package/src/views/CanvasEditor/EditorBody.d.ts.map +1 -0
  340. package/src/views/CanvasEditor/EditorBody.js +505 -0
  341. package/src/views/CanvasEditor/EditorHeader.d.ts +18 -0
  342. package/src/views/CanvasEditor/EditorHeader.d.ts.map +1 -0
  343. package/src/views/CanvasEditor/EditorHeader.js +101 -0
  344. package/src/views/CanvasEditor/LayoutContainer.d.ts +17 -0
  345. package/src/views/CanvasEditor/LayoutContainer.d.ts.map +1 -0
  346. package/src/views/CanvasEditor/LayoutContainer.js +222 -0
  347. package/src/views/CanvasEditor/SaveConfirmationModal.d.ts +13 -0
  348. package/src/views/CanvasEditor/SaveConfirmationModal.d.ts.map +1 -0
  349. package/src/views/CanvasEditor/SaveConfirmationModal.js +78 -0
  350. package/src/views/CanvasEditor/components/CustomBlockItem.d.ts +14 -0
  351. package/src/views/CanvasEditor/components/CustomBlockItem.d.ts.map +1 -0
  352. package/src/views/CanvasEditor/components/CustomBlockItem.js +44 -0
  353. package/src/views/CanvasEditor/components/EditorCanvas.d.ts +29 -0
  354. package/src/views/CanvasEditor/components/EditorCanvas.d.ts.map +1 -0
  355. package/src/views/CanvasEditor/components/EditorCanvas.js +32 -0
  356. package/src/views/CanvasEditor/components/EditorLibrary.d.ts +7 -0
  357. package/src/views/CanvasEditor/components/EditorLibrary.d.ts.map +1 -0
  358. package/src/views/CanvasEditor/components/EditorLibrary.js +25 -0
  359. package/src/views/CanvasEditor/components/EditorSidebar.d.ts +13 -0
  360. package/src/views/CanvasEditor/components/EditorSidebar.d.ts.map +1 -0
  361. package/src/views/CanvasEditor/components/EditorSidebar.js +20 -0
  362. package/src/views/CanvasEditor/components/ErrorBanner.d.ts +6 -0
  363. package/src/views/CanvasEditor/components/ErrorBanner.d.ts.map +1 -0
  364. package/src/views/CanvasEditor/components/ErrorBanner.js +8 -0
  365. package/src/views/CanvasEditor/components/FeaturedMediaSection.d.ts +25 -0
  366. package/src/views/CanvasEditor/components/FeaturedMediaSection.d.ts.map +1 -0
  367. package/src/views/CanvasEditor/components/FeaturedMediaSection.js +182 -0
  368. package/src/views/CanvasEditor/components/LibraryItem.d.ts +14 -0
  369. package/src/views/CanvasEditor/components/LibraryItem.d.ts.map +1 -0
  370. package/src/views/CanvasEditor/components/LibraryItem.js +43 -0
  371. package/src/views/CanvasEditor/components/PrivacySettingsSection.d.ts +15 -0
  372. package/src/views/CanvasEditor/components/PrivacySettingsSection.d.ts.map +1 -0
  373. package/src/views/CanvasEditor/components/PrivacySettingsSection.js +63 -0
  374. package/src/views/CanvasEditor/components/index.d.ts +21 -0
  375. package/src/views/CanvasEditor/components/index.d.ts.map +1 -0
  376. package/src/views/CanvasEditor/components/index.js +12 -0
  377. package/src/views/CanvasEditor/hooks/index.d.ts +10 -0
  378. package/src/views/CanvasEditor/hooks/index.d.ts.map +1 -0
  379. package/src/views/CanvasEditor/hooks/index.js +9 -0
  380. package/src/views/CanvasEditor/hooks/useHeroBlock.d.ts +8 -0
  381. package/src/views/CanvasEditor/hooks/useHeroBlock.d.ts.map +1 -0
  382. package/src/views/CanvasEditor/hooks/useHeroBlock.js +79 -0
  383. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts +3 -0
  384. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  385. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.js +114 -0
  386. package/src/views/CanvasEditor/hooks/usePostLoader.d.ts +5 -0
  387. package/src/views/CanvasEditor/hooks/usePostLoader.d.ts.map +1 -0
  388. package/src/views/CanvasEditor/hooks/usePostLoader.js +32 -0
  389. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts +2 -0
  390. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts.map +1 -0
  391. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.js +47 -0
  392. package/src/views/CanvasEditor/hooks/useUnsavedChanges.d.ts +25 -0
  393. package/src/views/CanvasEditor/hooks/useUnsavedChanges.d.ts.map +1 -0
  394. package/src/views/CanvasEditor/hooks/useUnsavedChanges.js +285 -0
  395. package/src/views/CanvasEditor/index.d.ts +16 -0
  396. package/src/views/CanvasEditor/index.d.ts.map +1 -0
  397. package/src/views/CanvasEditor/index.js +9 -0
  398. package/src/views/PostManager/EmptyState.d.ts +10 -0
  399. package/src/views/PostManager/EmptyState.d.ts.map +1 -0
  400. package/src/views/PostManager/EmptyState.js +12 -0
  401. package/src/views/PostManager/PostActionsMenu.d.ts +12 -0
  402. package/src/views/PostManager/PostActionsMenu.d.ts.map +1 -0
  403. package/src/views/PostManager/PostActionsMenu.js +58 -0
  404. package/src/views/PostManager/PostCards.d.ts +15 -0
  405. package/src/views/PostManager/PostCards.d.ts.map +1 -0
  406. package/src/views/PostManager/PostCards.js +79 -0
  407. package/src/views/PostManager/PostFilters.d.ts +16 -0
  408. package/src/views/PostManager/PostFilters.d.ts.map +1 -0
  409. package/src/views/PostManager/PostFilters.js +10 -0
  410. package/src/views/PostManager/PostManagerView.d.ts +11 -0
  411. package/src/views/PostManager/PostManagerView.d.ts.map +1 -0
  412. package/src/views/PostManager/PostManagerView.js +174 -0
  413. package/src/views/PostManager/PostStats.d.ts +11 -0
  414. package/src/views/PostManager/PostStats.d.ts.map +1 -0
  415. package/src/views/PostManager/PostStats.js +46 -0
  416. package/src/views/PostManager/PostTable.d.ts +15 -0
  417. package/src/views/PostManager/PostTable.d.ts.map +1 -0
  418. package/src/views/PostManager/PostTable.js +79 -0
  419. package/src/views/PostManager/index.d.ts +12 -0
  420. package/src/views/PostManager/index.d.ts.map +1 -0
  421. package/src/views/PostManager/index.js +11 -0
  422. package/src/views/Preview/PreviewBridgeView.d.ts +12 -0
  423. package/src/views/Preview/PreviewBridgeView.d.ts.map +1 -0
  424. package/src/views/Preview/PreviewBridgeView.js +11 -0
  425. package/src/views/Preview/index.d.ts +6 -0
  426. package/src/views/Preview/index.d.ts.map +1 -0
  427. package/src/views/Preview/index.js +4 -0
  428. package/src/views/Settings/SettingsView.d.ts +10 -0
  429. package/src/views/Settings/SettingsView.d.ts.map +1 -0
  430. package/src/views/Settings/SettingsView.js +111 -0
  431. package/src/views/Settings/index.d.ts +6 -0
  432. package/src/views/Settings/index.d.ts.map +1 -0
  433. package/src/views/Settings/index.js +4 -0
  434. package/src/views/SlugSEO/SlugSEOManagerView.d.ts +12 -0
  435. package/src/views/SlugSEO/SlugSEOManagerView.d.ts.map +1 -0
  436. package/src/views/SlugSEO/SlugSEOManagerView.js +11 -0
  437. package/src/views/SlugSEO/index.d.ts +6 -0
  438. package/src/views/SlugSEO/index.d.ts.map +1 -0
  439. package/src/views/SlugSEO/index.js +4 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Plugin Configuration Storage
3
+ * Stores plugin-specific configuration in MongoDB
4
+ * Used by both client apps and dashboard
5
+ */
6
+ const COLLECTION_NAME = 'pluginConfigs';
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ export async function getPluginConfigCollection(getDb) {
9
+ const { db } = await getDb();
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ return db.collection(COLLECTION_NAME);
12
+ }
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ export async function getPluginConfig(getDb, pluginId, siteId = 'default') {
15
+ const collection = await getPluginConfigCollection(getDb);
16
+ return collection.findOne({ pluginId, siteId });
17
+ }
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ export async function savePluginConfig(getDb, pluginId, siteId, config) {
20
+ const collection = await getPluginConfigCollection(getDb);
21
+ await collection.updateOne({ pluginId, siteId }, {
22
+ $set: {
23
+ config,
24
+ updatedAt: new Date()
25
+ },
26
+ $setOnInsert: {
27
+ pluginId,
28
+ siteId
29
+ }
30
+ }, { upsert: true });
31
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Library exports
3
+ * All decoupled, reusable components and utilities
4
+ */
5
+ export * from './blocks';
6
+ export * from './utils';
7
+ export * from './migration';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Library exports
3
+ * All decoupled, reusable components and utilities
4
+ */
5
+ export * from './blocks';
6
+ export * from './utils';
7
+ export * from './migration';
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Columns Block
3
+ * Flex/grid container with configurable column layouts
4
+ */
5
+ import React from 'react';
6
+ import { BlockEditProps, BlockPreviewProps } from '../../../types/block';
7
+ import { Block } from '../../../types/block';
8
+ /**
9
+ * Columns Block Edit Component
10
+ */
11
+ export declare const ColumnsEdit: React.FC<BlockEditProps & {
12
+ childBlocks: Block[];
13
+ onChildBlockAdd: (type: string, index: number, containerId: string) => void;
14
+ onChildBlockUpdate: (id: string, data: Partial<Block['data']>, containerId: string) => void;
15
+ onChildBlockDelete: (id: string, containerId: string) => void;
16
+ onChildBlockMove: (id: string, newIndex: number, containerId: string) => void;
17
+ }>;
18
+ /**
19
+ * Columns Block Preview Component
20
+ */
21
+ export declare const ColumnsPreview: React.FC<BlockPreviewProps & {
22
+ childBlocks?: Block[];
23
+ renderChild?: (block: Block) => React.ReactNode;
24
+ }>;
25
+ //# sourceMappingURL=ColumnsBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnsBlock.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/blocks/ColumnsBlock.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,GAAG;IAChD,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACjF,CAyLI,CAAC;AAEN;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,GAAG;IACtD,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;CACnD,CAgFA,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Columns Block
3
+ * Flex/grid container with configurable column layouts
4
+ */
5
+ 'use client';
6
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
7
+ import React from 'react';
8
+ import { Plus, Trash2 } from 'lucide-react';
9
+ import { LayoutContainer } from '../../../views/CanvasEditor/LayoutContainer';
10
+ import { COLUMN_LAYOUTS } from '../index';
11
+ /**
12
+ * Columns Block Edit Component
13
+ */
14
+ export const ColumnsEdit = ({ block, onUpdate, isSelected, childBlocks = [], onChildBlockAdd, onChildBlockUpdate, onChildBlockDelete, onChildBlockMove, }) => {
15
+ // Support both old layout-based system and new dynamic column count
16
+ const columnCount = block.data.columnCount;
17
+ const layout = block.data.layout;
18
+ // Determine number of columns: use columnCount if set, otherwise derive from layout
19
+ let numColumns;
20
+ let gridClass;
21
+ let columnWidths;
22
+ // Grid class mapping for Tailwind (must be explicit for dynamic classes)
23
+ const gridClassMap = {
24
+ 1: 'grid-cols-1',
25
+ 2: 'grid-cols-2',
26
+ 3: 'grid-cols-3',
27
+ 4: 'grid-cols-4',
28
+ 5: 'grid-cols-5',
29
+ 6: 'grid-cols-6',
30
+ };
31
+ if (columnCount !== undefined && columnCount > 0) {
32
+ // Dynamic column system
33
+ numColumns = columnCount;
34
+ // Create equal-width columns
35
+ const widthPercent = Math.floor(100 / numColumns);
36
+ columnWidths = Array(numColumns).fill(widthPercent);
37
+ // Use explicit grid class from map, fallback to inline style if needed
38
+ gridClass = gridClassMap[numColumns] || `grid-cols-${numColumns}`;
39
+ }
40
+ else if (layout && COLUMN_LAYOUTS[layout]) {
41
+ // Legacy layout-based system
42
+ const layoutConfig = COLUMN_LAYOUTS[layout];
43
+ numColumns = layoutConfig.widths.length;
44
+ gridClass = layoutConfig.grid;
45
+ columnWidths = layoutConfig.widths;
46
+ }
47
+ else {
48
+ // Default to 2 columns
49
+ numColumns = 2;
50
+ gridClass = 'grid-cols-2';
51
+ columnWidths = [50, 50];
52
+ }
53
+ // Split child blocks into columns based on columnIndex in meta, or round-robin
54
+ const columns = Array.from({ length: numColumns }, () => []);
55
+ childBlocks.forEach((childBlock) => {
56
+ const columnIndex = childBlock.meta?.columnIndex;
57
+ if (typeof columnIndex === 'number' && columnIndex >= 0 && columnIndex < numColumns) {
58
+ columns[columnIndex].push(childBlock);
59
+ }
60
+ else {
61
+ // Fallback to round-robin if no columnIndex specified
62
+ const index = childBlocks.indexOf(childBlock);
63
+ columns[index % numColumns].push(childBlock);
64
+ }
65
+ });
66
+ // Get column widths from data or use equal widths
67
+ const storedWidths = block.data.columnWidths;
68
+ const currentWidths = storedWidths && storedWidths.length === numColumns
69
+ ? storedWidths
70
+ : columnWidths; // Use calculated equal widths if not set
71
+ // Add column handler
72
+ const addColumn = () => {
73
+ if (numColumns >= 4)
74
+ return; // Max 4 columns
75
+ const newColumnCount = numColumns + 1;
76
+ // Calculate new equal widths
77
+ const newWidthPercent = Math.floor(100 / newColumnCount);
78
+ const newWidths = Array(newColumnCount).fill(newWidthPercent);
79
+ onUpdate({
80
+ ...block.data,
81
+ columnCount: newColumnCount,
82
+ columnWidths: newWidths,
83
+ // Clear layout if using dynamic columns
84
+ layout: undefined,
85
+ });
86
+ };
87
+ // Delete column handler
88
+ const deleteColumn = (colIndex) => {
89
+ if (numColumns <= 1)
90
+ return; // Don't allow deleting the last column
91
+ // Move blocks from deleted column to the last column (or previous column if deleting last)
92
+ const blocksToMove = columns[colIndex] || [];
93
+ const targetColumnIndex = colIndex === numColumns - 1 ? numColumns - 2 : numColumns - 1;
94
+ const targetColumn = columns[targetColumnIndex] || [];
95
+ // Move each block to the target column using moveBlock (which will update meta.columnIndex)
96
+ blocksToMove.forEach((blockToMove, blockIndex) => {
97
+ const newIndex = targetColumn.length + blockIndex;
98
+ onChildBlockMove(blockToMove.id, newIndex, `${block.id}-col-${targetColumnIndex}`);
99
+ });
100
+ // Update column count and widths after moving blocks
101
+ const newColumnCount = numColumns - 1;
102
+ // Remove the deleted column's width and redistribute
103
+ const newWidths = currentWidths.filter((_, i) => i !== colIndex);
104
+ // Normalize to ensure they sum to 100
105
+ const total = newWidths.reduce((sum, w) => sum + w, 0);
106
+ const normalizedWidths = newWidths.map(w => Math.round((w / total) * 100));
107
+ onUpdate({
108
+ ...block.data,
109
+ columnCount: newColumnCount,
110
+ columnWidths: normalizedWidths,
111
+ layout: undefined,
112
+ });
113
+ };
114
+ return (_jsxs("div", { className: "rounded-xl bg-white relative", children: [_jsx("div", { className: "grid gap-8 p-6", style: {
115
+ gridTemplateColumns: currentWidths.map(w => `${w}%`).join(' '),
116
+ }, children: Array.from({ length: numColumns }).map((_, colIndex) => (_jsx("div", { className: `group/col min-h-[200px] rounded-xl border border-dashed transition-all relative ${isSelected
117
+ ? 'border-primary/20'
118
+ : 'border-gray-200/50'}`, children: _jsxs("div", { className: "p-4", children: [_jsxs("div", { className: "mb-3 flex items-center justify-between", children: [_jsxs("span", { className: "text-[10px] font-black uppercase tracking-widest text-gray-400", children: ["Column ", colIndex + 1] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("span", { className: "text-[9px] text-gray-500", children: [currentWidths[colIndex], "%"] }), numColumns > 1 && (_jsx("button", { onClick: (e) => {
119
+ e.stopPropagation();
120
+ deleteColumn(colIndex);
121
+ }, className: "opacity-0 group-hover/col:opacity-100 p-1 text-neutral-400 hover:text-red-500 transition-all rounded", title: "Delete Column", "aria-label": "Delete Column", children: _jsx(Trash2, { size: 10 }) }))] })] }), _jsx(LayoutContainer, { blocks: columns[colIndex] || [], containerId: `${block.id}-col-${colIndex}`, onBlockAdd: onChildBlockAdd, onBlockUpdate: onChildBlockUpdate, onBlockDelete: onChildBlockDelete, onBlockMove: onChildBlockMove, emptyLabel: `Drop blocks in column ${colIndex + 1}` })] }) }, colIndex))) }), numColumns < 4 && (_jsx("button", { onClick: addColumn, className: "absolute top-0 right-0 h-8 w-8 flex items-center justify-center bg-white border-l border-b border-gray-200 text-primary hover:bg-primary hover:text-white transition-all z-10 rounded-br-xl", title: "Add Column", children: _jsx(Plus, { size: 16 }) }))] }));
122
+ };
123
+ /**
124
+ * Columns Block Preview Component
125
+ */
126
+ export const ColumnsPreview = ({ block, childBlocks = [], renderChild, context }) => {
127
+ // Support both old layout-based system and new dynamic column count
128
+ const columnCount = block.data.columnCount;
129
+ const layout = block.data.layout;
130
+ // Determine number of columns: use columnCount if set, otherwise derive from layout
131
+ let numColumns;
132
+ let gridClass;
133
+ // Grid class mapping for Tailwind (must be explicit for dynamic classes)
134
+ const gridClassMap = {
135
+ 1: 'grid-cols-1',
136
+ 2: 'grid-cols-2',
137
+ 3: 'grid-cols-3',
138
+ 4: 'grid-cols-4',
139
+ 5: 'grid-cols-5',
140
+ 6: 'grid-cols-6',
141
+ };
142
+ // Get column widths
143
+ const storedWidths = block.data.columnWidths;
144
+ if (columnCount !== undefined && columnCount > 0) {
145
+ // Dynamic column system
146
+ numColumns = columnCount;
147
+ gridClass = gridClassMap[numColumns] || `grid-cols-${numColumns}`;
148
+ }
149
+ else if (layout && COLUMN_LAYOUTS[layout]) {
150
+ // Legacy layout-based system
151
+ const layoutConfig = COLUMN_LAYOUTS[layout];
152
+ numColumns = layoutConfig.widths.length;
153
+ gridClass = layoutConfig.grid;
154
+ }
155
+ else {
156
+ // Default to 2 columns
157
+ numColumns = 2;
158
+ gridClass = 'grid-cols-2';
159
+ }
160
+ // Use stored widths if available, otherwise use equal widths
161
+ const columnWidths = storedWidths && storedWidths.length === numColumns
162
+ ? storedWidths
163
+ : Array(numColumns).fill(Math.floor(100 / numColumns));
164
+ // If childBlocks are provided, use them; otherwise get from block.children
165
+ const children = childBlocks.length > 0
166
+ ? childBlocks
167
+ : (block.children && Array.isArray(block.children) && typeof block.children[0] === 'object'
168
+ ? block.children
169
+ : []);
170
+ // Split child blocks into columns based on columnIndex in meta, or round-robin
171
+ const columns = Array.from({ length: numColumns }, () => []);
172
+ children.forEach((childBlock) => {
173
+ const columnIndex = childBlock.meta?.columnIndex;
174
+ if (typeof columnIndex === 'number' && columnIndex >= 0 && columnIndex < numColumns) {
175
+ columns[columnIndex].push(childBlock);
176
+ }
177
+ else {
178
+ // Fallback to round-robin if no columnIndex specified
179
+ const index = children.indexOf(childBlock);
180
+ columns[index % numColumns].push(childBlock);
181
+ }
182
+ });
183
+ return (_jsx("div", { className: "grid gap-8 my-8", style: {
184
+ gridTemplateColumns: columnWidths.map(w => `${w}%`).join(' '),
185
+ }, children: Array.from({ length: numColumns }).map((_, colIndex) => (_jsx("div", { className: "min-h-[100px]", children: columns[colIndex]?.map((childBlock) => (_jsx(React.Fragment, { children: renderChild ? renderChild(childBlock) : null }, childBlock.id))) }, colIndex))) }));
186
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Section Block
3
+ * Full-width wrapper with configurable padding and background
4
+ */
5
+ import React from 'react';
6
+ import { BlockEditProps, BlockPreviewProps } from '../../../types/block';
7
+ import { Block } from '../../../types/block';
8
+ /**
9
+ * Section Block Edit Component
10
+ */
11
+ export declare const SectionEdit: React.FC<BlockEditProps & {
12
+ childBlocks: Block[];
13
+ onChildBlockAdd: (type: string, index: number, containerId: string) => void;
14
+ onChildBlockUpdate: (id: string, data: Partial<Block['data']>, containerId: string) => void;
15
+ onChildBlockDelete: (id: string, containerId: string) => void;
16
+ onChildBlockMove: (id: string, newIndex: number, containerId: string) => void;
17
+ }>;
18
+ /**
19
+ * Section Block Preview Component
20
+ */
21
+ export declare const SectionPreview: React.FC<BlockPreviewProps & {
22
+ childBlocks?: Block[];
23
+ renderChild?: (block: Block) => React.ReactNode;
24
+ }>;
25
+ //# sourceMappingURL=SectionBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionBlock.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/blocks/SectionBlock.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,GAAG;IAChD,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5F,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACjF,CA+CI,CAAC;AAEN;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,GAAG;IACtD,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;CACnD,CAyBA,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Section Block
3
+ * Full-width wrapper with configurable padding and background
4
+ */
5
+ 'use client';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import React from 'react';
8
+ import { LayoutContainer } from '../../../views/CanvasEditor/LayoutContainer';
9
+ import { LAYOUT_BACKGROUNDS } from '../index';
10
+ /**
11
+ * Section Block Edit Component
12
+ */
13
+ export const SectionEdit = ({ block, onUpdate, isSelected, childBlocks = [], onChildBlockAdd, onChildBlockUpdate, onChildBlockDelete, onChildBlockMove, }) => {
14
+ const background = block.data.background || 'DEFAULT';
15
+ return (_jsx("div", { className: `rounded-xl transition-all ${isSelected
16
+ ? 'bg-primary/5'
17
+ : ''} ${LAYOUT_BACKGROUNDS[background]}`, onDragStart: (e) => {
18
+ // Prevent section from being dragged when dragging nested blocks
19
+ // Check if the drag started on a nested block wrapper
20
+ const nestedBlockWrapper = e.target.closest('[data-block-wrapper]');
21
+ if (nestedBlockWrapper) {
22
+ const nestedBlockId = nestedBlockWrapper.getAttribute('data-block-id');
23
+ // If dragging a nested block, prevent the section's drag handler from firing
24
+ if (nestedBlockId && nestedBlockId !== block.id) {
25
+ e.stopPropagation();
26
+ e.preventDefault();
27
+ console.log('[SectionBlock] Preventing section drag, nested block is being dragged:', nestedBlockId);
28
+ }
29
+ }
30
+ }, children: _jsx("div", { className: `px-8 py-4`, children: _jsx(LayoutContainer, { blocks: childBlocks, containerId: block.id, onBlockAdd: onChildBlockAdd, onBlockUpdate: onChildBlockUpdate, onBlockDelete: onChildBlockDelete, onBlockMove: onChildBlockMove, emptyLabel: "Drop blocks into section" }) }) }));
31
+ };
32
+ /**
33
+ * Section Block Preview Component
34
+ */
35
+ export const SectionPreview = ({ block, childBlocks = [], renderChild, context }) => {
36
+ const background = block.data.background || 'DEFAULT';
37
+ // If childBlocks are provided, use them; otherwise get from block.children
38
+ const children = childBlocks.length > 0
39
+ ? childBlocks
40
+ : (block.children && Array.isArray(block.children) && typeof block.children[0] === 'object'
41
+ ? block.children
42
+ : []);
43
+ return (_jsx("section", { className: `w-full ${LAYOUT_BACKGROUNDS[background]}`, children: _jsx("div", { className: `max-w-7xl mx-auto px-6 py-2`, children: children.length > 0 && renderChild ? (children.map((childBlock) => (_jsx(React.Fragment, { children: renderChild(childBlock) }, childBlock.id)))) : (_jsx("div", { className: "text-gray-400 text-sm italic", children: "Empty section" })) }) }));
44
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core Layout Blocks
3
+ * Section and Columns blocks for the Universal Layout System
4
+ */
5
+ export { SectionEdit, SectionPreview } from './SectionBlock';
6
+ export { ColumnsEdit, ColumnsPreview } from './ColumnsBlock';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/layouts/blocks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core Layout Blocks
3
+ * Section and Columns blocks for the Universal Layout System
4
+ */
5
+ export { SectionEdit, SectionPreview } from './SectionBlock';
6
+ export { ColumnsEdit, ColumnsPreview } from './ColumnsBlock';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Layout System Constants
3
+ * Standardized spacing and styling for layout blocks
4
+ */
5
+ export declare const LAYOUT_CONSTANTS: {
6
+ readonly GUTTER: "2rem";
7
+ readonly SPACING: "4rem";
8
+ readonly SPACING_SM: "2rem";
9
+ readonly SPACING_LG: "6rem";
10
+ readonly BORDER_RADIUS: "2rem";
11
+ };
12
+ export declare const LAYOUT_BACKGROUNDS: {
13
+ readonly DEFAULT: "bg-white";
14
+ readonly NEUTRAL: "bg-neutral-50";
15
+ readonly SAGE: "bg-primary/5";
16
+ readonly CREAM: "bg-amber-50/50";
17
+ };
18
+ export type ColumnLayout = '50-50' | '33-66' | '66-33' | '25-25-25-25' | '25-75' | '75-25';
19
+ export declare const COLUMN_LAYOUTS: Record<ColumnLayout, {
20
+ grid: string;
21
+ widths: number[];
22
+ }>;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/layouts/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,gBAAgB;;;;;;CAMnB,CAAC;AAGX,eAAO,MAAM,kBAAkB;;;;;CAKrB,CAAC;AAGX,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyBnF,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Layout System Constants
3
+ * Standardized spacing and styling for layout blocks
4
+ */
5
+ // Spacing Constants (Earth-tone aligned)
6
+ export const LAYOUT_CONSTANTS = {
7
+ GUTTER: '2rem', // 32px - Space between columns
8
+ SPACING: '4rem', // 64px - Vertical padding for sections
9
+ SPACING_SM: '2rem', // 32px - Smaller vertical padding
10
+ SPACING_LG: '6rem', // 96px - Larger vertical padding
11
+ BORDER_RADIUS: '2rem', // 32px - Consistent rounded corners
12
+ };
13
+ // Background Colors (Light mode only - matches client website theme)
14
+ export const LAYOUT_BACKGROUNDS = {
15
+ DEFAULT: 'bg-white',
16
+ NEUTRAL: 'bg-neutral-50',
17
+ SAGE: 'bg-primary/5',
18
+ CREAM: 'bg-amber-50/50',
19
+ };
20
+ export const COLUMN_LAYOUTS = {
21
+ '50-50': {
22
+ grid: 'grid-cols-2',
23
+ widths: [50, 50],
24
+ },
25
+ '33-66': {
26
+ grid: 'grid-cols-3',
27
+ widths: [33, 66],
28
+ },
29
+ '66-33': {
30
+ grid: 'grid-cols-3',
31
+ widths: [66, 33],
32
+ },
33
+ '25-25-25-25': {
34
+ grid: 'grid-cols-4',
35
+ widths: [25, 25, 25, 25],
36
+ },
37
+ '25-75': {
38
+ grid: 'grid-cols-4',
39
+ widths: [25, 75],
40
+ },
41
+ '75-25': {
42
+ grid: 'grid-cols-4',
43
+ widths: [75, 25],
44
+ },
45
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Register Core Layout Blocks
3
+ * Registers Section and Columns blocks in the block registry
4
+ */
5
+ /**
6
+ * Register all core layout blocks
7
+ */
8
+ export declare function registerLayoutBlocks(): void;
9
+ //# sourceMappingURL=registerLayoutBlocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerLayoutBlocks.d.ts","sourceRoot":"","sources":["../../../src/lib/layouts/registerLayoutBlocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,wBAAgB,oBAAoB,SAiDnC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Register Core Layout Blocks
3
+ * Registers Section and Columns blocks in the block registry
4
+ */
5
+ import { blockRegistry } from '../../registry/BlockRegistry';
6
+ import { SectionEdit, SectionPreview } from './blocks/SectionBlock';
7
+ import { ColumnsEdit, ColumnsPreview } from './blocks/ColumnsBlock';
8
+ import { Columns, Square } from 'lucide-react';
9
+ /**
10
+ * Register all core layout blocks
11
+ */
12
+ export function registerLayoutBlocks() {
13
+ // Section Block
14
+ blockRegistry.register({
15
+ type: 'section',
16
+ name: 'Section',
17
+ description: 'Full-width wrapper with configurable padding and background',
18
+ icon: Square,
19
+ defaultData: {
20
+ padding: 'md',
21
+ background: 'DEFAULT',
22
+ },
23
+ category: 'layout',
24
+ isContainer: true,
25
+ validate: (data) => {
26
+ return ['sm', 'md', 'lg'].includes(data.padding) &&
27
+ ['DEFAULT', 'NEUTRAL', 'SAGE', 'CREAM'].includes(data.background);
28
+ },
29
+ components: {
30
+ Edit: SectionEdit,
31
+ Preview: SectionPreview,
32
+ Icon: Square,
33
+ },
34
+ });
35
+ // Columns Block
36
+ blockRegistry.register({
37
+ type: 'columns',
38
+ name: 'Columns',
39
+ description: 'Flex/grid container with configurable column layouts (50/50, 33/66, etc.)',
40
+ icon: Columns,
41
+ defaultData: {
42
+ columnCount: 2, // Start with 2 columns, can be dynamically added/removed
43
+ columnWidths: [50, 50], // Equal width columns by default
44
+ },
45
+ category: 'layout',
46
+ isContainer: true,
47
+ validate: (data) => {
48
+ // Support both new dynamic system (columnCount) and legacy layout system
49
+ if (data.columnCount !== undefined) {
50
+ return typeof data.columnCount === 'number' && data.columnCount > 0 && data.columnCount <= 6;
51
+ }
52
+ return ['50-50', '33-66', '66-33', '25-25-25-25', '25-75', '75-25'].includes(data.layout);
53
+ },
54
+ components: {
55
+ Edit: ColumnsEdit,
56
+ Preview: ColumnsPreview,
57
+ Icon: Columns,
58
+ },
59
+ });
60
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * API Mapper
3
+ * Converts between API format (MongoDB) and BlogPost format
4
+ */
5
+ import { BlogPost, PostStatus, SEOMetadata, PostMetadata } from '../../types/post';
6
+ import { Block } from '../../types/block';
7
+ /**
8
+ * API Blog Document Format (from MongoDB)
9
+ */
10
+ export interface APIBlogDocument {
11
+ _id?: string;
12
+ id?: string;
13
+ title: string;
14
+ slug: string;
15
+ contentBlocks?: Block[];
16
+ content?: any[];
17
+ summary?: string;
18
+ image?: {
19
+ id?: string;
20
+ src?: string;
21
+ alt?: string;
22
+ isCustom?: boolean;
23
+ };
24
+ categoryTags?: {
25
+ category?: string;
26
+ tags?: string[];
27
+ };
28
+ publicationData?: {
29
+ status?: PostStatus | 'concept';
30
+ date?: string | Date;
31
+ };
32
+ seo?: {
33
+ title?: string;
34
+ description?: string;
35
+ keywords?: string[];
36
+ ogImage?: string;
37
+ canonicalUrl?: string;
38
+ };
39
+ authorId?: string;
40
+ createdAt?: string | Date;
41
+ updatedAt?: string | Date;
42
+ }
43
+ /**
44
+ * Convert API document to BlogPost format
45
+ */
46
+ export declare function apiToBlogPost(doc: APIBlogDocument): BlogPost;
47
+ /**
48
+ * Convert BlogPost to API document format
49
+ */
50
+ export declare function blogPostToAPI(post: BlogPost, authorId?: string): Partial<APIBlogDocument>;
51
+ /**
52
+ * Convert EditorState to API format for saving
53
+ * @param state - Editor state
54
+ * @param authorId - Optional author ID
55
+ * @param heroBlock - Optional hero block (stored separately from content blocks)
56
+ */
57
+ export declare function editorStateToAPI(state: {
58
+ title: string;
59
+ slug: string;
60
+ blocks: Block[];
61
+ seo: SEOMetadata;
62
+ metadata: PostMetadata;
63
+ status: PostStatus;
64
+ postId?: string | null;
65
+ }, authorId?: string, heroBlock?: Block | null): Partial<APIBlogDocument>;
66
+ //# sourceMappingURL=apiMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiMapper.d.ts","sourceRoot":"","sources":["../../../src/lib/mappers/apiMapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACJ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;KAGtB,CAAC;IACF,YAAY,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,eAAe,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,GAAG,CAAC,EAAE;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,CAmE5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgCzF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAkFxE"}