@jhits/plugin-blog 0.0.10 → 0.0.11

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 (276) hide show
  1. package/package.json +4 -5
  2. package/src/api/categories.ts +0 -43
  3. package/src/api/check-title.ts +0 -60
  4. package/src/api/config-handler.ts +0 -76
  5. package/src/api/handler.ts +0 -418
  6. package/src/api/index.ts +0 -33
  7. package/src/api/route.ts +0 -116
  8. package/src/api/router.ts +0 -128
  9. package/src/api-server.ts +0 -11
  10. package/src/config.ts +0 -161
  11. package/src/hooks/index.d.ts +0 -8
  12. package/src/hooks/index.d.ts.map +0 -1
  13. package/src/hooks/index.js +0 -7
  14. package/src/hooks/index.ts +0 -9
  15. package/src/hooks/useBlog.d.ts +0 -31
  16. package/src/hooks/useBlog.d.ts.map +0 -1
  17. package/src/hooks/useBlog.js +0 -57
  18. package/src/hooks/useBlog.ts +0 -85
  19. package/src/hooks/useBlogs.d.ts +0 -39
  20. package/src/hooks/useBlogs.d.ts.map +0 -1
  21. package/src/hooks/useBlogs.js +0 -82
  22. package/src/hooks/useBlogs.ts +0 -123
  23. package/src/hooks/useCategories.d.ts +0 -9
  24. package/src/hooks/useCategories.d.ts.map +0 -1
  25. package/src/hooks/useCategories.js +0 -70
  26. package/src/hooks/useCategories.ts +0 -76
  27. package/src/index.d.ts +0 -55
  28. package/src/index.d.ts.map +0 -1
  29. package/src/index.js +0 -228
  30. package/src/index.server.ts +0 -14
  31. package/src/index.tsx +0 -335
  32. package/src/init.d.ts +0 -40
  33. package/src/init.d.ts.map +0 -1
  34. package/src/init.js +0 -41
  35. package/src/init.tsx +0 -63
  36. package/src/lib/blocks/BlockRenderer.d.ts +0 -54
  37. package/src/lib/blocks/BlockRenderer.d.ts.map +0 -1
  38. package/src/lib/blocks/BlockRenderer.js +0 -54
  39. package/src/lib/blocks/BlockRenderer.tsx +0 -141
  40. package/src/lib/blocks/index.ts +0 -6
  41. package/src/lib/config-storage.d.ts +0 -30
  42. package/src/lib/config-storage.d.ts.map +0 -1
  43. package/src/lib/config-storage.js +0 -31
  44. package/src/lib/config-storage.ts +0 -65
  45. package/src/lib/index.ts +0 -9
  46. package/src/lib/layouts/blocks/ColumnsBlock.d.ts +0 -25
  47. package/src/lib/layouts/blocks/ColumnsBlock.d.ts.map +0 -1
  48. package/src/lib/layouts/blocks/ColumnsBlock.js +0 -182
  49. package/src/lib/layouts/blocks/ColumnsBlock.tsx +0 -298
  50. package/src/lib/layouts/blocks/ColumnsBlock.tsx.tmp +0 -81
  51. package/src/lib/layouts/blocks/SectionBlock.d.ts +0 -25
  52. package/src/lib/layouts/blocks/SectionBlock.d.ts.map +0 -1
  53. package/src/lib/layouts/blocks/SectionBlock.js +0 -44
  54. package/src/lib/layouts/blocks/SectionBlock.tsx +0 -104
  55. package/src/lib/layouts/blocks/index.ts +0 -8
  56. package/src/lib/layouts/index.d.ts +0 -23
  57. package/src/lib/layouts/index.d.ts.map +0 -1
  58. package/src/lib/layouts/index.js +0 -45
  59. package/src/lib/layouts/index.ts +0 -52
  60. package/src/lib/layouts/registerLayoutBlocks.d.ts +0 -9
  61. package/src/lib/layouts/registerLayoutBlocks.d.ts.map +0 -1
  62. package/src/lib/layouts/registerLayoutBlocks.js +0 -60
  63. package/src/lib/layouts/registerLayoutBlocks.ts +0 -64
  64. package/src/lib/mappers/apiMapper.d.ts +0 -66
  65. package/src/lib/mappers/apiMapper.d.ts.map +0 -1
  66. package/src/lib/mappers/apiMapper.js +0 -191
  67. package/src/lib/mappers/apiMapper.ts +0 -254
  68. package/src/lib/migration/index.ts +0 -6
  69. package/src/lib/migration/mapper.ts +0 -140
  70. package/src/lib/rich-text/RichTextEditor.d.ts +0 -45
  71. package/src/lib/rich-text/RichTextEditor.d.ts.map +0 -1
  72. package/src/lib/rich-text/RichTextEditor.js +0 -564
  73. package/src/lib/rich-text/RichTextEditor.tsx +0 -826
  74. package/src/lib/rich-text/RichTextPreview.d.ts +0 -16
  75. package/src/lib/rich-text/RichTextPreview.d.ts.map +0 -1
  76. package/src/lib/rich-text/RichTextPreview.js +0 -144
  77. package/src/lib/rich-text/RichTextPreview.tsx +0 -210
  78. package/src/lib/rich-text/index.d.ts +0 -9
  79. package/src/lib/rich-text/index.d.ts.map +0 -1
  80. package/src/lib/rich-text/index.js +0 -6
  81. package/src/lib/rich-text/index.ts +0 -10
  82. package/src/lib/utils/blockHelpers.d.ts +0 -23
  83. package/src/lib/utils/blockHelpers.d.ts.map +0 -1
  84. package/src/lib/utils/blockHelpers.js +0 -65
  85. package/src/lib/utils/blockHelpers.ts +0 -72
  86. package/src/lib/utils/configValidation.d.ts +0 -23
  87. package/src/lib/utils/configValidation.d.ts.map +0 -1
  88. package/src/lib/utils/configValidation.js +0 -113
  89. package/src/lib/utils/configValidation.ts +0 -137
  90. package/src/lib/utils/index.ts +0 -8
  91. package/src/lib/utils/slugify.ts +0 -79
  92. package/src/registry/BlockRegistry.d.ts +0 -62
  93. package/src/registry/BlockRegistry.d.ts.map +0 -1
  94. package/src/registry/BlockRegistry.js +0 -112
  95. package/src/registry/BlockRegistry.ts +0 -139
  96. package/src/registry/index.d.ts +0 -6
  97. package/src/registry/index.d.ts.map +0 -1
  98. package/src/registry/index.js +0 -4
  99. package/src/registry/index.ts +0 -11
  100. package/src/state/EditorContext.d.ts +0 -45
  101. package/src/state/EditorContext.d.ts.map +0 -1
  102. package/src/state/EditorContext.js +0 -215
  103. package/src/state/EditorContext.tsx +0 -283
  104. package/src/state/index.d.ts +0 -7
  105. package/src/state/index.d.ts.map +0 -1
  106. package/src/state/index.js +0 -6
  107. package/src/state/index.ts +0 -8
  108. package/src/state/reducer.d.ts +0 -11
  109. package/src/state/reducer.d.ts.map +0 -1
  110. package/src/state/reducer.js +0 -443
  111. package/src/state/reducer.ts +0 -694
  112. package/src/state/types.d.ts +0 -162
  113. package/src/state/types.d.ts.map +0 -1
  114. package/src/state/types.js +0 -27
  115. package/src/state/types.ts +0 -160
  116. package/src/types/block.d.ts +0 -221
  117. package/src/types/block.d.ts.map +0 -1
  118. package/src/types/block.js +0 -6
  119. package/src/types/block.ts +0 -269
  120. package/src/types/index.d.ts +0 -8
  121. package/src/types/index.d.ts.map +0 -1
  122. package/src/types/index.js +0 -5
  123. package/src/types/index.ts +0 -17
  124. package/src/types/post.d.ts +0 -136
  125. package/src/types/post.d.ts.map +0 -1
  126. package/src/types/post.js +0 -5
  127. package/src/types/post.ts +0 -169
  128. package/src/utils/client.d.ts +0 -48
  129. package/src/utils/client.d.ts.map +0 -1
  130. package/src/utils/client.js +0 -77
  131. package/src/utils/client.ts +0 -122
  132. package/src/utils/index.ts +0 -7
  133. package/src/views/CanvasEditor/BlockWrapper.d.ts +0 -16
  134. package/src/views/CanvasEditor/BlockWrapper.d.ts.map +0 -1
  135. package/src/views/CanvasEditor/BlockWrapper.js +0 -276
  136. package/src/views/CanvasEditor/BlockWrapper.tsx +0 -522
  137. package/src/views/CanvasEditor/CanvasEditorView.d.ts +0 -14
  138. package/src/views/CanvasEditor/CanvasEditorView.d.ts.map +0 -1
  139. package/src/views/CanvasEditor/CanvasEditorView.js +0 -209
  140. package/src/views/CanvasEditor/CanvasEditorView.tsx +0 -337
  141. package/src/views/CanvasEditor/EditorBody.d.ts +0 -22
  142. package/src/views/CanvasEditor/EditorBody.d.ts.map +0 -1
  143. package/src/views/CanvasEditor/EditorBody.js +0 -505
  144. package/src/views/CanvasEditor/EditorBody.tsx +0 -665
  145. package/src/views/CanvasEditor/EditorHeader.d.ts +0 -18
  146. package/src/views/CanvasEditor/EditorHeader.d.ts.map +0 -1
  147. package/src/views/CanvasEditor/EditorHeader.js +0 -101
  148. package/src/views/CanvasEditor/EditorHeader.tsx +0 -268
  149. package/src/views/CanvasEditor/LayoutContainer.d.ts +0 -17
  150. package/src/views/CanvasEditor/LayoutContainer.d.ts.map +0 -1
  151. package/src/views/CanvasEditor/LayoutContainer.js +0 -222
  152. package/src/views/CanvasEditor/LayoutContainer.tsx +0 -322
  153. package/src/views/CanvasEditor/SaveConfirmationModal.d.ts +0 -13
  154. package/src/views/CanvasEditor/SaveConfirmationModal.d.ts.map +0 -1
  155. package/src/views/CanvasEditor/SaveConfirmationModal.js +0 -78
  156. package/src/views/CanvasEditor/SaveConfirmationModal.tsx +0 -233
  157. package/src/views/CanvasEditor/components/CustomBlockItem.d.ts +0 -14
  158. package/src/views/CanvasEditor/components/CustomBlockItem.d.ts.map +0 -1
  159. package/src/views/CanvasEditor/components/CustomBlockItem.js +0 -44
  160. package/src/views/CanvasEditor/components/CustomBlockItem.tsx +0 -92
  161. package/src/views/CanvasEditor/components/EditorCanvas.d.ts +0 -29
  162. package/src/views/CanvasEditor/components/EditorCanvas.d.ts.map +0 -1
  163. package/src/views/CanvasEditor/components/EditorCanvas.js +0 -32
  164. package/src/views/CanvasEditor/components/EditorCanvas.tsx +0 -160
  165. package/src/views/CanvasEditor/components/EditorLibrary.d.ts +0 -7
  166. package/src/views/CanvasEditor/components/EditorLibrary.d.ts.map +0 -1
  167. package/src/views/CanvasEditor/components/EditorLibrary.js +0 -25
  168. package/src/views/CanvasEditor/components/EditorLibrary.tsx +0 -122
  169. package/src/views/CanvasEditor/components/EditorSidebar.d.ts +0 -13
  170. package/src/views/CanvasEditor/components/EditorSidebar.d.ts.map +0 -1
  171. package/src/views/CanvasEditor/components/EditorSidebar.js +0 -20
  172. package/src/views/CanvasEditor/components/EditorSidebar.tsx +0 -181
  173. package/src/views/CanvasEditor/components/ErrorBanner.d.ts +0 -6
  174. package/src/views/CanvasEditor/components/ErrorBanner.d.ts.map +0 -1
  175. package/src/views/CanvasEditor/components/ErrorBanner.js +0 -8
  176. package/src/views/CanvasEditor/components/ErrorBanner.tsx +0 -31
  177. package/src/views/CanvasEditor/components/FeaturedMediaSection.d.ts +0 -25
  178. package/src/views/CanvasEditor/components/FeaturedMediaSection.d.ts.map +0 -1
  179. package/src/views/CanvasEditor/components/FeaturedMediaSection.js +0 -182
  180. package/src/views/CanvasEditor/components/FeaturedMediaSection.tsx +0 -341
  181. package/src/views/CanvasEditor/components/LibraryItem.d.ts +0 -14
  182. package/src/views/CanvasEditor/components/LibraryItem.d.ts.map +0 -1
  183. package/src/views/CanvasEditor/components/LibraryItem.js +0 -43
  184. package/src/views/CanvasEditor/components/LibraryItem.tsx +0 -80
  185. package/src/views/CanvasEditor/components/PrivacySettingsSection.d.ts +0 -15
  186. package/src/views/CanvasEditor/components/PrivacySettingsSection.d.ts.map +0 -1
  187. package/src/views/CanvasEditor/components/PrivacySettingsSection.js +0 -63
  188. package/src/views/CanvasEditor/components/PrivacySettingsSection.tsx +0 -212
  189. package/src/views/CanvasEditor/components/index.d.ts +0 -21
  190. package/src/views/CanvasEditor/components/index.d.ts.map +0 -1
  191. package/src/views/CanvasEditor/components/index.js +0 -12
  192. package/src/views/CanvasEditor/components/index.ts +0 -28
  193. package/src/views/CanvasEditor/hooks/index.d.ts +0 -10
  194. package/src/views/CanvasEditor/hooks/index.d.ts.map +0 -1
  195. package/src/views/CanvasEditor/hooks/index.js +0 -9
  196. package/src/views/CanvasEditor/hooks/index.ts +0 -10
  197. package/src/views/CanvasEditor/hooks/useHeroBlock.d.ts +0 -8
  198. package/src/views/CanvasEditor/hooks/useHeroBlock.d.ts.map +0 -1
  199. package/src/views/CanvasEditor/hooks/useHeroBlock.js +0 -79
  200. package/src/views/CanvasEditor/hooks/useHeroBlock.ts +0 -103
  201. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts +0 -3
  202. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  203. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.js +0 -114
  204. package/src/views/CanvasEditor/hooks/useKeyboardShortcuts.ts +0 -142
  205. package/src/views/CanvasEditor/hooks/usePostLoader.d.ts +0 -5
  206. package/src/views/CanvasEditor/hooks/usePostLoader.d.ts.map +0 -1
  207. package/src/views/CanvasEditor/hooks/usePostLoader.js +0 -32
  208. package/src/views/CanvasEditor/hooks/usePostLoader.ts +0 -39
  209. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts +0 -2
  210. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.d.ts.map +0 -1
  211. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.js +0 -47
  212. package/src/views/CanvasEditor/hooks/useRegisteredBlocks.ts +0 -55
  213. package/src/views/CanvasEditor/hooks/useUnsavedChanges.d.ts +0 -25
  214. package/src/views/CanvasEditor/hooks/useUnsavedChanges.d.ts.map +0 -1
  215. package/src/views/CanvasEditor/hooks/useUnsavedChanges.js +0 -285
  216. package/src/views/CanvasEditor/hooks/useUnsavedChanges.ts +0 -339
  217. package/src/views/CanvasEditor/index.d.ts +0 -16
  218. package/src/views/CanvasEditor/index.d.ts.map +0 -1
  219. package/src/views/CanvasEditor/index.js +0 -9
  220. package/src/views/CanvasEditor/index.ts +0 -16
  221. package/src/views/PostManager/EmptyState.d.ts +0 -10
  222. package/src/views/PostManager/EmptyState.d.ts.map +0 -1
  223. package/src/views/PostManager/EmptyState.js +0 -12
  224. package/src/views/PostManager/EmptyState.tsx +0 -42
  225. package/src/views/PostManager/PostActionsMenu.d.ts +0 -12
  226. package/src/views/PostManager/PostActionsMenu.d.ts.map +0 -1
  227. package/src/views/PostManager/PostActionsMenu.js +0 -58
  228. package/src/views/PostManager/PostActionsMenu.tsx +0 -112
  229. package/src/views/PostManager/PostCards.d.ts +0 -15
  230. package/src/views/PostManager/PostCards.d.ts.map +0 -1
  231. package/src/views/PostManager/PostCards.js +0 -79
  232. package/src/views/PostManager/PostCards.tsx +0 -197
  233. package/src/views/PostManager/PostFilters.d.ts +0 -16
  234. package/src/views/PostManager/PostFilters.d.ts.map +0 -1
  235. package/src/views/PostManager/PostFilters.js +0 -10
  236. package/src/views/PostManager/PostFilters.tsx +0 -95
  237. package/src/views/PostManager/PostManagerView.d.ts +0 -11
  238. package/src/views/PostManager/PostManagerView.d.ts.map +0 -1
  239. package/src/views/PostManager/PostManagerView.js +0 -174
  240. package/src/views/PostManager/PostManagerView.tsx +0 -289
  241. package/src/views/PostManager/PostStats.d.ts +0 -11
  242. package/src/views/PostManager/PostStats.d.ts.map +0 -1
  243. package/src/views/PostManager/PostStats.js +0 -46
  244. package/src/views/PostManager/PostStats.tsx +0 -81
  245. package/src/views/PostManager/PostTable.d.ts +0 -15
  246. package/src/views/PostManager/PostTable.d.ts.map +0 -1
  247. package/src/views/PostManager/PostTable.js +0 -79
  248. package/src/views/PostManager/PostTable.tsx +0 -230
  249. package/src/views/PostManager/index.d.ts +0 -12
  250. package/src/views/PostManager/index.d.ts.map +0 -1
  251. package/src/views/PostManager/index.js +0 -11
  252. package/src/views/PostManager/index.ts +0 -15
  253. package/src/views/Preview/PreviewBridgeView.d.ts +0 -12
  254. package/src/views/Preview/PreviewBridgeView.d.ts.map +0 -1
  255. package/src/views/Preview/PreviewBridgeView.js +0 -11
  256. package/src/views/Preview/PreviewBridgeView.tsx +0 -64
  257. package/src/views/Preview/index.d.ts +0 -6
  258. package/src/views/Preview/index.d.ts.map +0 -1
  259. package/src/views/Preview/index.js +0 -4
  260. package/src/views/Preview/index.ts +0 -7
  261. package/src/views/Settings/SettingsView.d.ts +0 -10
  262. package/src/views/Settings/SettingsView.d.ts.map +0 -1
  263. package/src/views/Settings/SettingsView.js +0 -111
  264. package/src/views/Settings/SettingsView.tsx +0 -298
  265. package/src/views/Settings/index.d.ts +0 -6
  266. package/src/views/Settings/index.d.ts.map +0 -1
  267. package/src/views/Settings/index.js +0 -4
  268. package/src/views/Settings/index.ts +0 -7
  269. package/src/views/SlugSEO/SlugSEOManagerView.d.ts +0 -12
  270. package/src/views/SlugSEO/SlugSEOManagerView.d.ts.map +0 -1
  271. package/src/views/SlugSEO/SlugSEOManagerView.js +0 -11
  272. package/src/views/SlugSEO/SlugSEOManagerView.tsx +0 -94
  273. package/src/views/SlugSEO/index.d.ts +0 -6
  274. package/src/views/SlugSEO/index.d.ts.map +0 -1
  275. package/src/views/SlugSEO/index.js +0 -4
  276. package/src/views/SlugSEO/index.ts +0 -7
@@ -1,141 +0,0 @@
1
- /**
2
- * Block Renderer
3
- * Library component for rendering blocks (decoupled from editor)
4
- * This is the "headless" rendering layer
5
- *
6
- * Multi-Tenant: Uses Preview components from client-provided blocks
7
- */
8
-
9
- 'use client';
10
-
11
- import React from 'react';
12
- import { Block, BlockPreviewProps } from '../../types/block';
13
- import { blockRegistry } from '../../registry/BlockRegistry';
14
- import { getChildBlocks } from '../utils/blockHelpers';
15
-
16
- /**
17
- * Block Renderer Props
18
- */
19
- export interface BlockRendererProps {
20
- /** Block to render */
21
- block: Block;
22
-
23
- /** Custom renderers for specific block types (optional override) */
24
- customRenderers?: Map<string, React.ComponentType<BlockPreviewProps>>;
25
-
26
- /** Additional context for rendering */
27
- context?: {
28
- siteId?: string;
29
- locale?: string;
30
- [key: string]: unknown;
31
- };
32
- }
33
-
34
- /**
35
- * Block Renderer Component
36
- * Renders a single block using its Preview component from the registry
37
- *
38
- * This is the headless rendering layer - it uses the Preview component
39
- * provided by the client application, allowing each client to have
40
- * their own design system in the frontend while the editor uses
41
- * the dashboard's design system.
42
- */
43
- export function BlockRenderer({
44
- block,
45
- customRenderers,
46
- context = {}
47
- }: BlockRendererProps) {
48
- // Check for custom renderer override first
49
- if (customRenderers?.has(block.type)) {
50
- const CustomRenderer = customRenderers.get(block.type)!;
51
- return <CustomRenderer block={block} context={context} />;
52
- }
53
-
54
- // Get block definition from registry
55
- const definition = blockRegistry.get(block.type);
56
- if (!definition) {
57
- console.warn(`Block type "${block.type}" not found in registry. Available types:`,
58
- blockRegistry.getAll().map(b => b.type).join(', '));
59
- return (
60
- <div className="p-4 border border-red-300 bg-red-50 rounded">
61
- <p className="text-red-600">Unknown block type: {block.type}</p>
62
- <p className="text-xs text-red-500 mt-1">
63
- Make sure this block type is registered via customBlocks prop
64
- </p>
65
- </div>
66
- );
67
- }
68
-
69
- // Use the Preview component from the block definition
70
- // This is provided by the client application
71
- const PreviewComponent = definition.components.Preview;
72
-
73
- // Check if this is a container block with children
74
- const isContainer = definition.isContainer === true;
75
- const childBlocks = isContainer && block.children && Array.isArray(block.children) && block.children.length > 0
76
- ? (typeof block.children[0] === 'object'
77
- ? block.children as Block[]
78
- : [])
79
- : [];
80
-
81
- // If container block, pass child blocks and render function
82
- if (isContainer) {
83
- return (
84
- <PreviewComponent
85
- block={block}
86
- context={context}
87
- childBlocks={childBlocks}
88
- renderChild={(childBlock: Block) => (
89
- <BlockRenderer
90
- block={childBlock}
91
- customRenderers={customRenderers}
92
- context={context}
93
- />
94
- )}
95
- />
96
- );
97
- }
98
-
99
- return <PreviewComponent block={block} context={context} />;
100
- }
101
-
102
- /**
103
- * Blocks Renderer
104
- * Renders an array of blocks
105
- */
106
- export interface BlocksRendererProps {
107
- /** Array of blocks to render */
108
- blocks: Block[];
109
-
110
- /** Custom renderers for specific block types */
111
- customRenderers?: Map<string, React.ComponentType<{ block: Block }>>;
112
-
113
- /** Additional props to pass to renderers */
114
- renderProps?: Record<string, unknown>;
115
-
116
- /** Wrapper component for the blocks */
117
- wrapper?: React.ComponentType<{ children: React.ReactNode }>;
118
- }
119
-
120
- export function BlocksRenderer({
121
- blocks,
122
- customRenderers,
123
- renderProps,
124
- wrapper: Wrapper,
125
- }: BlocksRendererProps) {
126
- const content = blocks.map((block, index) => (
127
- <BlockRenderer
128
- key={block.id || index}
129
- block={block}
130
- customRenderers={customRenderers}
131
- context={renderProps}
132
- />
133
- ));
134
-
135
- if (Wrapper) {
136
- return <Wrapper>{content}</Wrapper>;
137
- }
138
-
139
- return <>{content}</>;
140
- }
141
-
@@ -1,6 +0,0 @@
1
- /**
2
- * Block library exports
3
- */
4
-
5
- export * from './BlockRenderer';
6
-
@@ -1,30 +0,0 @@
1
- /**
2
- * Plugin Configuration Storage
3
- * Stores plugin-specific configuration in MongoDB
4
- * Used by both client apps and dashboard
5
- */
6
- export interface PluginConfigDocument {
7
- _id?: string;
8
- pluginId: string;
9
- siteId: string;
10
- config: {
11
- customBlocks?: unknown[];
12
- darkMode?: boolean;
13
- backgroundColors?: {
14
- light: string;
15
- dark?: string;
16
- };
17
- [key: string]: unknown;
18
- };
19
- updatedAt: Date;
20
- }
21
- export declare function getPluginConfigCollection(getDb: () => Promise<{
22
- db: any;
23
- }>): Promise<any>;
24
- export declare function getPluginConfig(getDb: () => Promise<{
25
- db: any;
26
- }>, pluginId: string, siteId?: string): Promise<PluginConfigDocument | null>;
27
- export declare function savePluginConfig(getDb: () => Promise<{
28
- db: any;
29
- }>, pluginId: string, siteId: string, config: PluginConfigDocument['config']): Promise<void>;
30
- //# sourceMappingURL=config-storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-storage.d.ts","sourceRoot":"","sources":["config-storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACJ,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,gBAAgB,CAAC,EAAE;YACf,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;CACnB;AAKD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,CAAC,gBAIhF;AAGD,wBAAsB,eAAe,CACjC,KAAK,EAAE,MAAM,OAAO,CAAC;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAkB,GAC3B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAGtC;AAGD,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,MAAM,OAAO,CAAC;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -1,31 +0,0 @@
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
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * Plugin Configuration Storage
3
- * Stores plugin-specific configuration in MongoDB
4
- * Used by both client apps and dashboard
5
- */
6
-
7
- export interface PluginConfigDocument {
8
- _id?: string;
9
- pluginId: string;
10
- siteId: string;
11
- config: {
12
- customBlocks?: unknown[];
13
- darkMode?: boolean;
14
- backgroundColors?: {
15
- light: string;
16
- dark?: string;
17
- };
18
- [key: string]: unknown;
19
- };
20
- updatedAt: Date;
21
- }
22
-
23
- const COLLECTION_NAME = 'pluginConfigs';
24
-
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- export async function getPluginConfigCollection(getDb: () => Promise<{ db: any }>) {
27
- const { db } = await getDb();
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
- return (db as any).collection(COLLECTION_NAME);
30
- }
31
-
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
- export async function getPluginConfig(
34
- getDb: () => Promise<{ db: any }>,
35
- pluginId: string,
36
- siteId: string = 'default'
37
- ): Promise<PluginConfigDocument | null> {
38
- const collection = await getPluginConfigCollection(getDb);
39
- return collection.findOne({ pluginId, siteId }) as Promise<PluginConfigDocument | null>;
40
- }
41
-
42
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
- export async function savePluginConfig(
44
- getDb: () => Promise<{ db: any }>,
45
- pluginId: string,
46
- siteId: string,
47
- config: PluginConfigDocument['config']
48
- ): Promise<void> {
49
- const collection = await getPluginConfigCollection(getDb);
50
-
51
- await collection.updateOne(
52
- { pluginId, siteId },
53
- {
54
- $set: {
55
- config,
56
- updatedAt: new Date()
57
- },
58
- $setOnInsert: {
59
- pluginId,
60
- siteId
61
- }
62
- },
63
- { upsert: true }
64
- );
65
- }
package/src/lib/index.ts DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * Library exports
3
- * All decoupled, reusable components and utilities
4
- */
5
-
6
- export * from './blocks';
7
- export * from './utils';
8
- export * from './migration';
9
-
@@ -1,25 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnsBlock.d.ts","sourceRoot":"","sources":["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"}
@@ -1,182 +0,0 @@
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
- var _a;
57
- const columnIndex = (_a = childBlock.meta) === null || _a === void 0 ? void 0 : _a.columnIndex;
58
- if (typeof columnIndex === 'number' && columnIndex >= 0 && columnIndex < numColumns) {
59
- columns[columnIndex].push(childBlock);
60
- }
61
- else {
62
- // Fallback to round-robin if no columnIndex specified
63
- const index = childBlocks.indexOf(childBlock);
64
- columns[index % numColumns].push(childBlock);
65
- }
66
- });
67
- // Get column widths from data or use equal widths
68
- const storedWidths = block.data.columnWidths;
69
- const currentWidths = storedWidths && storedWidths.length === numColumns
70
- ? storedWidths
71
- : columnWidths; // Use calculated equal widths if not set
72
- // Add column handler
73
- const addColumn = () => {
74
- if (numColumns >= 4)
75
- return; // Max 4 columns
76
- const newColumnCount = numColumns + 1;
77
- // Calculate new equal widths
78
- const newWidthPercent = Math.floor(100 / newColumnCount);
79
- const newWidths = Array(newColumnCount).fill(newWidthPercent);
80
- onUpdate(Object.assign(Object.assign({}, block.data), { columnCount: newColumnCount, columnWidths: newWidths,
81
- // Clear layout if using dynamic columns
82
- layout: undefined }));
83
- };
84
- // Delete column handler
85
- const deleteColumn = (colIndex) => {
86
- if (numColumns <= 1)
87
- return; // Don't allow deleting the last column
88
- // Move blocks from deleted column to the last column (or previous column if deleting last)
89
- const blocksToMove = columns[colIndex] || [];
90
- const targetColumnIndex = colIndex === numColumns - 1 ? numColumns - 2 : numColumns - 1;
91
- const targetColumn = columns[targetColumnIndex] || [];
92
- // Move each block to the target column using moveBlock (which will update meta.columnIndex)
93
- blocksToMove.forEach((blockToMove, blockIndex) => {
94
- const newIndex = targetColumn.length + blockIndex;
95
- onChildBlockMove(blockToMove.id, newIndex, `${block.id}-col-${targetColumnIndex}`);
96
- });
97
- // Update column count and widths after moving blocks
98
- const newColumnCount = numColumns - 1;
99
- // Remove the deleted column's width and redistribute
100
- const newWidths = currentWidths.filter((_, i) => i !== colIndex);
101
- // Normalize to ensure they sum to 100
102
- const total = newWidths.reduce((sum, w) => sum + w, 0);
103
- const normalizedWidths = newWidths.map(w => Math.round((w / total) * 100));
104
- onUpdate(Object.assign(Object.assign({}, block.data), { columnCount: newColumnCount, columnWidths: normalizedWidths, layout: undefined }));
105
- };
106
- return (_jsxs("div", { className: "rounded-xl bg-white relative", children: [_jsx("div", { className: "grid gap-8 p-6", style: {
107
- gridTemplateColumns: currentWidths.map(w => `${w}%`).join(' '),
108
- }, children: Array.from({ length: numColumns }).map((_, colIndex) => (_jsx("div", { className: `group/col min-h-[200px] rounded-xl border border-dashed transition-all relative ${isSelected
109
- ? 'border-primary/20'
110
- : '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) => {
111
- e.stopPropagation();
112
- deleteColumn(colIndex);
113
- }, 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 }) }))] }));
114
- };
115
- /**
116
- * Columns Block Preview Component
117
- */
118
- export const ColumnsPreview = ({ block, childBlocks = [], renderChild, context }) => {
119
- // Support both old layout-based system and new dynamic column count
120
- const columnCount = block.data.columnCount;
121
- const layout = block.data.layout;
122
- // Determine number of columns: use columnCount if set, otherwise derive from layout
123
- let numColumns;
124
- let gridClass;
125
- // Grid class mapping for Tailwind (must be explicit for dynamic classes)
126
- const gridClassMap = {
127
- 1: 'grid-cols-1',
128
- 2: 'grid-cols-2',
129
- 3: 'grid-cols-3',
130
- 4: 'grid-cols-4',
131
- 5: 'grid-cols-5',
132
- 6: 'grid-cols-6',
133
- };
134
- // Get column widths
135
- const storedWidths = block.data.columnWidths;
136
- if (columnCount !== undefined && columnCount > 0) {
137
- // Dynamic column system
138
- numColumns = columnCount;
139
- gridClass = gridClassMap[numColumns] || `grid-cols-${numColumns}`;
140
- }
141
- else if (layout && COLUMN_LAYOUTS[layout]) {
142
- // Legacy layout-based system
143
- const layoutConfig = COLUMN_LAYOUTS[layout];
144
- numColumns = layoutConfig.widths.length;
145
- gridClass = layoutConfig.grid;
146
- }
147
- else {
148
- // Default to 2 columns
149
- numColumns = 2;
150
- gridClass = 'grid-cols-2';
151
- }
152
- // Use stored widths if available, otherwise use equal widths
153
- const columnWidths = storedWidths && storedWidths.length === numColumns
154
- ? storedWidths
155
- : Array(numColumns).fill(Math.floor(100 / numColumns));
156
- // If childBlocks are provided, use them; otherwise get from block.children
157
- const children = childBlocks.length > 0
158
- ? childBlocks
159
- : (block.children && Array.isArray(block.children) && typeof block.children[0] === 'object'
160
- ? block.children
161
- : []);
162
- // Split child blocks into columns based on columnIndex in meta, or round-robin
163
- const columns = Array.from({ length: numColumns }, () => []);
164
- children.forEach((childBlock) => {
165
- var _a;
166
- const columnIndex = (_a = childBlock.meta) === null || _a === void 0 ? void 0 : _a.columnIndex;
167
- if (typeof columnIndex === 'number' && columnIndex >= 0 && columnIndex < numColumns) {
168
- columns[columnIndex].push(childBlock);
169
- }
170
- else {
171
- // Fallback to round-robin if no columnIndex specified
172
- const index = children.indexOf(childBlock);
173
- columns[index % numColumns].push(childBlock);
174
- }
175
- });
176
- return (_jsx("div", { className: "grid gap-8 my-8", style: {
177
- gridTemplateColumns: columnWidths.map(w => `${w}%`).join(' '),
178
- }, children: Array.from({ length: numColumns }).map((_, colIndex) => {
179
- var _a;
180
- return (_jsx("div", { className: "min-h-[100px]", children: (_a = columns[colIndex]) === null || _a === void 0 ? void 0 : _a.map((childBlock) => (_jsx(React.Fragment, { children: renderChild ? renderChild(childBlock) : null }, childBlock.id))) }, colIndex));
181
- }) }));
182
- };