@actuate-media/cms-admin 0.7.3 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/dist/AdminRoot.d.ts.map +1 -1
  2. package/dist/AdminRoot.js +95 -42
  3. package/dist/AdminRoot.js.map +1 -1
  4. package/dist/__tests__/lib/search.test.js +10 -10
  5. package/dist/__tests__/lib/search.test.js.map +1 -1
  6. package/dist/__tests__/lib/utils.test.js.map +1 -1
  7. package/dist/__tests__/router/match-route.test.js.map +1 -1
  8. package/dist/__tests__/router/strip-base.test.js.map +1 -1
  9. package/dist/actuate-admin.css +1 -1
  10. package/dist/components/Breadcrumbs.d.ts.map +1 -1
  11. package/dist/components/Breadcrumbs.js +2 -4
  12. package/dist/components/Breadcrumbs.js.map +1 -1
  13. package/dist/components/CommandPalette.d.ts.map +1 -1
  14. package/dist/components/CommandPalette.js +7 -3
  15. package/dist/components/CommandPalette.js.map +1 -1
  16. package/dist/components/ContentOverviewChart.d.ts.map +1 -1
  17. package/dist/components/ContentOverviewChart.js.map +1 -1
  18. package/dist/components/ErrorBoundary.d.ts.map +1 -1
  19. package/dist/components/ErrorBoundary.js.map +1 -1
  20. package/dist/components/FocalPointPicker.d.ts.map +1 -1
  21. package/dist/components/FocalPointPicker.js +4 -2
  22. package/dist/components/FocalPointPicker.js.map +1 -1
  23. package/dist/components/FolderTree.d.ts.map +1 -1
  24. package/dist/components/FolderTree.js +18 -10
  25. package/dist/components/FolderTree.js.map +1 -1
  26. package/dist/components/LivePreview.d.ts +1 -1
  27. package/dist/components/LivePreview.d.ts.map +1 -1
  28. package/dist/components/LivePreview.js +6 -2
  29. package/dist/components/LivePreview.js.map +1 -1
  30. package/dist/components/LocaleProvider.d.ts.map +1 -1
  31. package/dist/components/LocaleProvider.js.map +1 -1
  32. package/dist/components/LocaleSwitcher.d.ts.map +1 -1
  33. package/dist/components/LocaleSwitcher.js +1 -1
  34. package/dist/components/LocaleSwitcher.js.map +1 -1
  35. package/dist/components/MediaPickerModal.d.ts.map +1 -1
  36. package/dist/components/MediaPickerModal.js.map +1 -1
  37. package/dist/components/PresenceIndicator.d.ts.map +1 -1
  38. package/dist/components/PresenceIndicator.js +5 -2
  39. package/dist/components/PresenceIndicator.js.map +1 -1
  40. package/dist/components/SEOPanel.d.ts +1 -1
  41. package/dist/components/SEOPanel.d.ts.map +1 -1
  42. package/dist/components/SEOPanel.js +110 -24
  43. package/dist/components/SEOPanel.js.map +1 -1
  44. package/dist/components/SEOPerformance.d.ts.map +1 -1
  45. package/dist/components/SEOPerformance.js +2 -2
  46. package/dist/components/SEOPerformance.js.map +1 -1
  47. package/dist/components/ThemeProvider.d.ts.map +1 -1
  48. package/dist/components/ThemeProvider.js.map +1 -1
  49. package/dist/components/TipTapEditor.d.ts.map +1 -1
  50. package/dist/components/TipTapEditor.js +5 -1
  51. package/dist/components/TipTapEditor.js.map +1 -1
  52. package/dist/components/VersionHistory.d.ts +1 -1
  53. package/dist/components/VersionHistory.d.ts.map +1 -1
  54. package/dist/components/VersionHistory.js +1 -1
  55. package/dist/components/VersionHistory.js.map +1 -1
  56. package/dist/components/ui/Avatar.d.ts.map +1 -1
  57. package/dist/components/ui/Avatar.js.map +1 -1
  58. package/dist/components/ui/Badge.d.ts.map +1 -1
  59. package/dist/components/ui/Badge.js.map +1 -1
  60. package/dist/components/ui/Button.d.ts.map +1 -1
  61. package/dist/components/ui/Button.js.map +1 -1
  62. package/dist/components/ui/CommandPalette.d.ts.map +1 -1
  63. package/dist/components/ui/CommandPalette.js +8 -2
  64. package/dist/components/ui/CommandPalette.js.map +1 -1
  65. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -1
  66. package/dist/components/ui/ConfirmDialog.js.map +1 -1
  67. package/dist/components/ui/DataTable.d.ts.map +1 -1
  68. package/dist/components/ui/DataTable.js +1 -3
  69. package/dist/components/ui/DataTable.js.map +1 -1
  70. package/dist/components/ui/EmptyState.d.ts.map +1 -1
  71. package/dist/components/ui/EmptyState.js +1 -1
  72. package/dist/components/ui/EmptyState.js.map +1 -1
  73. package/dist/components/ui/Modal.d.ts.map +1 -1
  74. package/dist/components/ui/Modal.js.map +1 -1
  75. package/dist/components/ui/Pagination.d.ts +1 -1
  76. package/dist/components/ui/Pagination.d.ts.map +1 -1
  77. package/dist/components/ui/Pagination.js +7 -2
  78. package/dist/components/ui/Pagination.js.map +1 -1
  79. package/dist/components/ui/SearchInput.d.ts.map +1 -1
  80. package/dist/components/ui/SearchInput.js.map +1 -1
  81. package/dist/components/ui/Skeleton.d.ts.map +1 -1
  82. package/dist/components/ui/Skeleton.js.map +1 -1
  83. package/dist/components/ui/Toast.d.ts.map +1 -1
  84. package/dist/components/ui/Toast.js.map +1 -1
  85. package/dist/components/ui/index.d.ts.map +1 -1
  86. package/dist/components/ui/index.js.map +1 -1
  87. package/dist/fields/ArrayField.d.ts.map +1 -1
  88. package/dist/fields/ArrayField.js +1 -1
  89. package/dist/fields/ArrayField.js.map +1 -1
  90. package/dist/fields/BlockBuilderField.d.ts.map +1 -1
  91. package/dist/fields/BlockBuilderField.js +7 -7
  92. package/dist/fields/BlockBuilderField.js.map +1 -1
  93. package/dist/fields/DateField.d.ts.map +1 -1
  94. package/dist/fields/DateField.js +1 -1
  95. package/dist/fields/DateField.js.map +1 -1
  96. package/dist/fields/FieldRenderer.d.ts.map +1 -1
  97. package/dist/fields/FieldRenderer.js.map +1 -1
  98. package/dist/fields/GroupField.d.ts.map +1 -1
  99. package/dist/fields/GroupField.js +1 -1
  100. package/dist/fields/GroupField.js.map +1 -1
  101. package/dist/fields/MediaField.d.ts.map +1 -1
  102. package/dist/fields/MediaField.js +1 -1
  103. package/dist/fields/MediaField.js.map +1 -1
  104. package/dist/fields/NavBuilderField.d.ts.map +1 -1
  105. package/dist/fields/NavBuilderField.js +2 -5
  106. package/dist/fields/NavBuilderField.js.map +1 -1
  107. package/dist/fields/NumberField.d.ts +1 -1
  108. package/dist/fields/NumberField.d.ts.map +1 -1
  109. package/dist/fields/NumberField.js +2 -2
  110. package/dist/fields/NumberField.js.map +1 -1
  111. package/dist/fields/RelationshipField.d.ts.map +1 -1
  112. package/dist/fields/RelationshipField.js +7 -3
  113. package/dist/fields/RelationshipField.js.map +1 -1
  114. package/dist/fields/RichTextField.d.ts +1 -1
  115. package/dist/fields/RichTextField.d.ts.map +1 -1
  116. package/dist/fields/RichTextField.js +2 -2
  117. package/dist/fields/RichTextField.js.map +1 -1
  118. package/dist/fields/SelectField.d.ts.map +1 -1
  119. package/dist/fields/SelectField.js +9 -7
  120. package/dist/fields/SelectField.js.map +1 -1
  121. package/dist/fields/SlugField.d.ts.map +1 -1
  122. package/dist/fields/SlugField.js +1 -1
  123. package/dist/fields/SlugField.js.map +1 -1
  124. package/dist/fields/TextField.d.ts +1 -1
  125. package/dist/fields/TextField.d.ts.map +1 -1
  126. package/dist/fields/TextField.js +2 -2
  127. package/dist/fields/TextField.js.map +1 -1
  128. package/dist/fields/ToggleField.d.ts.map +1 -1
  129. package/dist/fields/ToggleField.js +1 -1
  130. package/dist/fields/ToggleField.js.map +1 -1
  131. package/dist/fields/block-types.d.ts.map +1 -1
  132. package/dist/fields/block-types.js +28 -8
  133. package/dist/fields/block-types.js.map +1 -1
  134. package/dist/fields/index.d.ts.map +1 -1
  135. package/dist/fields/index.js.map +1 -1
  136. package/dist/hooks/useBuilderState.d.ts.map +1 -1
  137. package/dist/hooks/useBuilderState.js.map +1 -1
  138. package/dist/hooks/useContentLock.d.ts.map +1 -1
  139. package/dist/hooks/useContentLock.js.map +1 -1
  140. package/dist/hooks/useDebounce.js.map +1 -1
  141. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -1
  142. package/dist/hooks/useKeyboardShortcuts.js.map +1 -1
  143. package/dist/index.d.ts +2 -2
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js.map +1 -1
  146. package/dist/layout/Header.d.ts.map +1 -1
  147. package/dist/layout/Header.js.map +1 -1
  148. package/dist/layout/Layout.d.ts.map +1 -1
  149. package/dist/layout/Layout.js.map +1 -1
  150. package/dist/layout/Sidebar.d.ts +1 -1
  151. package/dist/layout/Sidebar.d.ts.map +1 -1
  152. package/dist/layout/Sidebar.js +5 -8
  153. package/dist/layout/Sidebar.js.map +1 -1
  154. package/dist/lib/api.d.ts.map +1 -1
  155. package/dist/lib/api.js +33 -4
  156. package/dist/lib/api.js.map +1 -1
  157. package/dist/lib/search.d.ts.map +1 -1
  158. package/dist/lib/search.js +3 -5
  159. package/dist/lib/search.js.map +1 -1
  160. package/dist/lib/useApiData.d.ts.map +1 -1
  161. package/dist/lib/useApiData.js.map +1 -1
  162. package/dist/lib/utils.d.ts.map +1 -1
  163. package/dist/lib/utils.js.map +1 -1
  164. package/dist/router/index.d.ts.map +1 -1
  165. package/dist/router/index.js +1 -3
  166. package/dist/router/index.js.map +1 -1
  167. package/dist/views/CollectionList.d.ts.map +1 -1
  168. package/dist/views/CollectionList.js +56 -17
  169. package/dist/views/CollectionList.js.map +1 -1
  170. package/dist/views/Dashboard.d.ts.map +1 -1
  171. package/dist/views/Dashboard.js +26 -13
  172. package/dist/views/Dashboard.js.map +1 -1
  173. package/dist/views/DocumentEdit.d.ts +1 -1
  174. package/dist/views/DocumentEdit.d.ts.map +1 -1
  175. package/dist/views/DocumentEdit.js +33 -15
  176. package/dist/views/DocumentEdit.js.map +1 -1
  177. package/dist/views/ForgotPassword.d.ts.map +1 -1
  178. package/dist/views/ForgotPassword.js.map +1 -1
  179. package/dist/views/FormEditor.d.ts.map +1 -1
  180. package/dist/views/FormEditor.js +8 -2
  181. package/dist/views/FormEditor.js.map +1 -1
  182. package/dist/views/FormSubmissions.d.ts.map +1 -1
  183. package/dist/views/FormSubmissions.js +6 -6
  184. package/dist/views/FormSubmissions.js.map +1 -1
  185. package/dist/views/Forms.d.ts.map +1 -1
  186. package/dist/views/Forms.js.map +1 -1
  187. package/dist/views/Login.d.ts.map +1 -1
  188. package/dist/views/Login.js +5 -2
  189. package/dist/views/Login.js.map +1 -1
  190. package/dist/views/MediaBrowser.d.ts.map +1 -1
  191. package/dist/views/MediaBrowser.js +39 -19
  192. package/dist/views/MediaBrowser.js.map +1 -1
  193. package/dist/views/PageEditor.d.ts.map +1 -1
  194. package/dist/views/PageEditor.js.map +1 -1
  195. package/dist/views/Pages.d.ts.map +1 -1
  196. package/dist/views/Pages.js +20 -10
  197. package/dist/views/Pages.js.map +1 -1
  198. package/dist/views/PostEditor.d.ts.map +1 -1
  199. package/dist/views/PostEditor.js.map +1 -1
  200. package/dist/views/Posts.d.ts.map +1 -1
  201. package/dist/views/Posts.js +13 -7
  202. package/dist/views/Posts.js.map +1 -1
  203. package/dist/views/Redirects.d.ts.map +1 -1
  204. package/dist/views/Redirects.js +17 -5
  205. package/dist/views/Redirects.js.map +1 -1
  206. package/dist/views/ResetPassword.d.ts.map +1 -1
  207. package/dist/views/ResetPassword.js.map +1 -1
  208. package/dist/views/SEO.d.ts.map +1 -1
  209. package/dist/views/SEO.js +39 -16
  210. package/dist/views/SEO.js.map +1 -1
  211. package/dist/views/ScriptTagEditor.d.ts.map +1 -1
  212. package/dist/views/ScriptTagEditor.js +2 -1
  213. package/dist/views/ScriptTagEditor.js.map +1 -1
  214. package/dist/views/ScriptTags.d.ts.map +1 -1
  215. package/dist/views/ScriptTags.js.map +1 -1
  216. package/dist/views/Settings.d.ts.map +1 -1
  217. package/dist/views/Settings.js +38 -11
  218. package/dist/views/Settings.js.map +1 -1
  219. package/dist/views/SetupWizard.d.ts.map +1 -1
  220. package/dist/views/SetupWizard.js.map +1 -1
  221. package/dist/views/Users.d.ts.map +1 -1
  222. package/dist/views/Users.js +5 -3
  223. package/dist/views/Users.js.map +1 -1
  224. package/dist/views/page-builder/AIBlockAssist.d.ts.map +1 -1
  225. package/dist/views/page-builder/AIBlockAssist.js +1 -1
  226. package/dist/views/page-builder/AIBlockAssist.js.map +1 -1
  227. package/dist/views/page-builder/AIGenerateDialog.d.ts.map +1 -1
  228. package/dist/views/page-builder/AIGenerateDialog.js +4 -1
  229. package/dist/views/page-builder/AIGenerateDialog.js.map +1 -1
  230. package/dist/views/page-builder/BlockEditor.d.ts.map +1 -1
  231. package/dist/views/page-builder/BlockEditor.js +94 -3
  232. package/dist/views/page-builder/BlockEditor.js.map +1 -1
  233. package/dist/views/page-builder/BlockPicker.d.ts.map +1 -1
  234. package/dist/views/page-builder/BlockPicker.js.map +1 -1
  235. package/dist/views/page-builder/BottomBar.d.ts.map +1 -1
  236. package/dist/views/page-builder/BottomBar.js.map +1 -1
  237. package/dist/views/page-builder/BuilderToolbar.d.ts.map +1 -1
  238. package/dist/views/page-builder/BuilderToolbar.js.map +1 -1
  239. package/dist/views/page-builder/ContextPanel.d.ts.map +1 -1
  240. package/dist/views/page-builder/ContextPanel.js +4 -1
  241. package/dist/views/page-builder/ContextPanel.js.map +1 -1
  242. package/dist/views/page-builder/DesignScore.d.ts.map +1 -1
  243. package/dist/views/page-builder/DesignScore.js.map +1 -1
  244. package/dist/views/page-builder/NodeSettings.d.ts.map +1 -1
  245. package/dist/views/page-builder/NodeSettings.js +1 -1
  246. package/dist/views/page-builder/NodeSettings.js.map +1 -1
  247. package/dist/views/page-builder/PageBuilder.d.ts +1 -1
  248. package/dist/views/page-builder/PageBuilder.d.ts.map +1 -1
  249. package/dist/views/page-builder/PageBuilder.js +25 -3
  250. package/dist/views/page-builder/PageBuilder.js.map +1 -1
  251. package/dist/views/page-builder/PageSettings.d.ts.map +1 -1
  252. package/dist/views/page-builder/PageSettings.js.map +1 -1
  253. package/dist/views/page-builder/PageTemplates.d.ts.map +1 -1
  254. package/dist/views/page-builder/PageTemplates.js.map +1 -1
  255. package/dist/views/page-builder/SEOPanel.d.ts.map +1 -1
  256. package/dist/views/page-builder/SEOPanel.js +1 -3
  257. package/dist/views/page-builder/SEOPanel.js.map +1 -1
  258. package/dist/views/page-builder/SavedSections.d.ts.map +1 -1
  259. package/dist/views/page-builder/SavedSections.js +3 -7
  260. package/dist/views/page-builder/SavedSections.js.map +1 -1
  261. package/dist/views/page-builder/TemplatePicker.d.ts.map +1 -1
  262. package/dist/views/page-builder/TemplatePicker.js.map +1 -1
  263. package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +1 -1
  264. package/dist/views/page-builder/block-renderers/CTAPreview.js +1 -1
  265. package/dist/views/page-builder/block-renderers/CTAPreview.js.map +1 -1
  266. package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +1 -1
  267. package/dist/views/page-builder/block-renderers/CardsPreview.js +1 -1
  268. package/dist/views/page-builder/block-renderers/CardsPreview.js.map +1 -1
  269. package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +1 -1
  270. package/dist/views/page-builder/block-renderers/CodePreview.js +1 -5
  271. package/dist/views/page-builder/block-renderers/CodePreview.js.map +1 -1
  272. package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +1 -1
  273. package/dist/views/page-builder/block-renderers/FAQPreview.js +4 -1
  274. package/dist/views/page-builder/block-renderers/FAQPreview.js.map +1 -1
  275. package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +1 -1
  276. package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +1 -1
  277. package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +1 -1
  278. package/dist/views/page-builder/block-renderers/FormPreview.js +2 -2
  279. package/dist/views/page-builder/block-renderers/FormPreview.js.map +1 -1
  280. package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +1 -1
  281. package/dist/views/page-builder/block-renderers/GalleryPreview.js +1 -3
  282. package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +1 -1
  283. package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +1 -1
  284. package/dist/views/page-builder/block-renderers/HeroPreview.js.map +1 -1
  285. package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +1 -1
  286. package/dist/views/page-builder/block-renderers/ImagePreview.js.map +1 -1
  287. package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +1 -1
  288. package/dist/views/page-builder/block-renderers/TextPreview.js +2 -6
  289. package/dist/views/page-builder/block-renderers/TextPreview.js.map +1 -1
  290. package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +1 -1
  291. package/dist/views/page-builder/block-renderers/VideoPreview.js +2 -5
  292. package/dist/views/page-builder/block-renderers/VideoPreview.js.map +1 -1
  293. package/dist/views/page-builder/block-renderers/index.d.ts.map +1 -1
  294. package/dist/views/page-builder/block-renderers/index.js.map +1 -1
  295. package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +1 -1
  296. package/dist/views/page-builder/canvas/BlockRenderer.js +1 -5
  297. package/dist/views/page-builder/canvas/BlockRenderer.js.map +1 -1
  298. package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +1 -1
  299. package/dist/views/page-builder/canvas/BuilderCanvas.js.map +1 -1
  300. package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +1 -1
  301. package/dist/views/page-builder/canvas/ColumnRenderer.js +1 -5
  302. package/dist/views/page-builder/canvas/ColumnRenderer.js.map +1 -1
  303. package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +1 -1
  304. package/dist/views/page-builder/canvas/ContainerRenderer.js +1 -5
  305. package/dist/views/page-builder/canvas/ContainerRenderer.js.map +1 -1
  306. package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +1 -1
  307. package/dist/views/page-builder/canvas/RowRenderer.js +1 -5
  308. package/dist/views/page-builder/canvas/RowRenderer.js.map +1 -1
  309. package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +1 -1
  310. package/dist/views/page-builder/canvas/SectionRenderer.js +1 -5
  311. package/dist/views/page-builder/canvas/SectionRenderer.js.map +1 -1
  312. package/dist/views/page-builder/canvas/index.d.ts.map +1 -1
  313. package/dist/views/page-builder/canvas/index.js.map +1 -1
  314. package/package.json +2 -2
  315. package/src/AdminRoot.tsx +302 -177
  316. package/src/__tests__/lib/search.test.ts +60 -69
  317. package/src/__tests__/lib/utils.test.ts +12 -12
  318. package/src/__tests__/router/match-route.test.ts +24 -26
  319. package/src/__tests__/router/strip-base.test.ts +15 -15
  320. package/src/components/Breadcrumbs.tsx +27 -24
  321. package/src/components/CommandPalette.tsx +115 -99
  322. package/src/components/ContentOverviewChart.tsx +19 -14
  323. package/src/components/ErrorBoundary.tsx +13 -13
  324. package/src/components/FocalPointPicker.tsx +31 -20
  325. package/src/components/FolderTree.tsx +172 -139
  326. package/src/components/LivePreview.tsx +68 -41
  327. package/src/components/LocaleProvider.tsx +26 -20
  328. package/src/components/LocaleSwitcher.tsx +9 -11
  329. package/src/components/MediaPickerModal.tsx +46 -45
  330. package/src/components/PresenceIndicator.tsx +30 -27
  331. package/src/components/SEOPanel.tsx +378 -228
  332. package/src/components/SEOPerformance.tsx +52 -30
  333. package/src/components/ThemeProvider.tsx +46 -46
  334. package/src/components/TipTapEditor.tsx +60 -64
  335. package/src/components/VersionHistory.tsx +63 -52
  336. package/src/components/ui/Avatar.tsx +8 -8
  337. package/src/components/ui/Badge.tsx +7 -5
  338. package/src/components/ui/Button.tsx +24 -13
  339. package/src/components/ui/CommandPalette.tsx +56 -42
  340. package/src/components/ui/ConfirmDialog.tsx +14 -14
  341. package/src/components/ui/DataTable.tsx +37 -39
  342. package/src/components/ui/EmptyState.tsx +9 -11
  343. package/src/components/ui/Modal.tsx +21 -15
  344. package/src/components/ui/Pagination.tsx +34 -19
  345. package/src/components/ui/SearchInput.tsx +17 -7
  346. package/src/components/ui/Skeleton.tsx +7 -7
  347. package/src/components/ui/Toast.tsx +29 -22
  348. package/src/components/ui/index.ts +24 -24
  349. package/src/fields/ArrayField.tsx +43 -25
  350. package/src/fields/BlockBuilderField.tsx +80 -99
  351. package/src/fields/DateField.tsx +20 -12
  352. package/src/fields/FieldRenderer.tsx +34 -34
  353. package/src/fields/GroupField.tsx +8 -10
  354. package/src/fields/MediaField.tsx +8 -10
  355. package/src/fields/NavBuilderField.tsx +24 -25
  356. package/src/fields/NumberField.tsx +21 -14
  357. package/src/fields/RelationshipField.tsx +105 -91
  358. package/src/fields/RichTextField.tsx +16 -12
  359. package/src/fields/SelectField.tsx +42 -34
  360. package/src/fields/SlugField.tsx +29 -17
  361. package/src/fields/TextField.tsx +24 -16
  362. package/src/fields/ToggleField.tsx +7 -9
  363. package/src/fields/block-types.ts +50 -24
  364. package/src/fields/index.ts +17 -17
  365. package/src/hooks/useBuilderState.ts +260 -221
  366. package/src/hooks/useContentLock.ts +23 -20
  367. package/src/hooks/useDebounce.ts +7 -7
  368. package/src/hooks/useKeyboardShortcuts.ts +16 -16
  369. package/src/index.ts +69 -58
  370. package/src/layout/Header.tsx +21 -20
  371. package/src/layout/Layout.tsx +22 -24
  372. package/src/layout/Sidebar.tsx +107 -72
  373. package/src/lib/api.ts +58 -30
  374. package/src/lib/search.ts +30 -34
  375. package/src/lib/useApiData.ts +65 -62
  376. package/src/lib/utils.ts +3 -3
  377. package/src/router/index.ts +33 -35
  378. package/src/styles/build-input.css +2 -2
  379. package/src/styles/tailwind.css +1 -1
  380. package/src/styles/theme.css +7 -1
  381. package/src/views/CollectionList.tsx +275 -121
  382. package/src/views/Dashboard.tsx +164 -117
  383. package/src/views/DocumentEdit.tsx +298 -253
  384. package/src/views/ForgotPassword.tsx +27 -23
  385. package/src/views/FormEditor.tsx +165 -99
  386. package/src/views/FormSubmissions.tsx +261 -117
  387. package/src/views/Forms.tsx +56 -26
  388. package/src/views/Login.tsx +107 -84
  389. package/src/views/MediaBrowser.tsx +717 -523
  390. package/src/views/PageEditor.tsx +44 -46
  391. package/src/views/Pages.tsx +312 -149
  392. package/src/views/PostEditor.tsx +57 -51
  393. package/src/views/Posts.tsx +206 -74
  394. package/src/views/Redirects.tsx +173 -117
  395. package/src/views/ResetPassword.tsx +43 -32
  396. package/src/views/SEO.tsx +589 -160
  397. package/src/views/ScriptTagEditor.tsx +69 -69
  398. package/src/views/ScriptTags.tsx +54 -42
  399. package/src/views/Settings.tsx +430 -220
  400. package/src/views/SetupWizard.tsx +69 -46
  401. package/src/views/Users.tsx +154 -120
  402. package/src/views/page-builder/AIBlockAssist.tsx +21 -25
  403. package/src/views/page-builder/AIGenerateDialog.tsx +134 -127
  404. package/src/views/page-builder/BlockEditor.tsx +258 -81
  405. package/src/views/page-builder/BlockPicker.tsx +73 -88
  406. package/src/views/page-builder/BottomBar.tsx +15 -11
  407. package/src/views/page-builder/BuilderToolbar.tsx +32 -29
  408. package/src/views/page-builder/ContextPanel.tsx +57 -57
  409. package/src/views/page-builder/DesignScore.tsx +52 -59
  410. package/src/views/page-builder/NodeSettings.tsx +59 -59
  411. package/src/views/page-builder/PageBuilder.tsx +164 -146
  412. package/src/views/page-builder/PageSettings.tsx +16 -15
  413. package/src/views/page-builder/PageTemplates.tsx +23 -17
  414. package/src/views/page-builder/SEOPanel.tsx +90 -111
  415. package/src/views/page-builder/SavedSections.tsx +99 -105
  416. package/src/views/page-builder/TemplatePicker.tsx +44 -48
  417. package/src/views/page-builder/block-renderers/CTAPreview.tsx +11 -13
  418. package/src/views/page-builder/block-renderers/CardsPreview.tsx +13 -15
  419. package/src/views/page-builder/block-renderers/CodePreview.tsx +16 -16
  420. package/src/views/page-builder/block-renderers/FAQPreview.tsx +20 -23
  421. package/src/views/page-builder/block-renderers/FallbackPreview.tsx +5 -5
  422. package/src/views/page-builder/block-renderers/FormPreview.tsx +9 -13
  423. package/src/views/page-builder/block-renderers/GalleryPreview.tsx +22 -28
  424. package/src/views/page-builder/block-renderers/HeroPreview.tsx +17 -30
  425. package/src/views/page-builder/block-renderers/ImagePreview.tsx +12 -12
  426. package/src/views/page-builder/block-renderers/TextPreview.tsx +22 -22
  427. package/src/views/page-builder/block-renderers/VideoPreview.tsx +13 -18
  428. package/src/views/page-builder/block-renderers/index.ts +17 -17
  429. package/src/views/page-builder/canvas/BlockRenderer.tsx +19 -23
  430. package/src/views/page-builder/canvas/BuilderCanvas.tsx +17 -20
  431. package/src/views/page-builder/canvas/ColumnRenderer.tsx +22 -26
  432. package/src/views/page-builder/canvas/ContainerRenderer.tsx +20 -24
  433. package/src/views/page-builder/canvas/RowRenderer.tsx +19 -23
  434. package/src/views/page-builder/canvas/SectionRenderer.tsx +30 -34
  435. package/src/views/page-builder/canvas/index.ts +2 -2
@@ -1,14 +1,14 @@
1
- 'use client';
1
+ 'use client'
2
2
 
3
- import { useState, useMemo } from 'react';
4
- import { analyzeDesign } from '@actuate-media/cms-core';
3
+ import { useState, useMemo } from 'react'
4
+ import { analyzeDesign } from '@actuate-media/cms-core'
5
5
  import type {
6
6
  PageNode,
7
7
  DesignAnalysis,
8
8
  DesignCategory,
9
9
  BuilderDesignCheck,
10
10
  DesignSuggestion,
11
- } from '@actuate-media/cms-core';
11
+ } from '@actuate-media/cms-core'
12
12
  import {
13
13
  CheckCircle2,
14
14
  AlertCircle,
@@ -17,47 +17,47 @@ import {
17
17
  ChevronUp,
18
18
  Lightbulb,
19
19
  Palette,
20
- } from 'lucide-react';
20
+ } from 'lucide-react'
21
21
 
22
22
  export interface DesignScorePanelProps {
23
- tree: PageNode;
23
+ tree: PageNode
24
24
  }
25
25
 
26
26
  function getScoreColor(score: number, max: number): string {
27
- const ratio = max > 0 ? score / max : 0;
28
- if (ratio >= 0.8) return 'text-green-500';
29
- if (ratio >= 0.5) return 'text-amber-500';
30
- return 'text-red-500';
27
+ const ratio = max > 0 ? score / max : 0
28
+ if (ratio >= 0.8) return 'text-green-500'
29
+ if (ratio >= 0.5) return 'text-amber-500'
30
+ return 'text-red-500'
31
31
  }
32
32
 
33
33
  function getBarColor(score: number, max: number): string {
34
- const ratio = max > 0 ? score / max : 0;
35
- if (ratio >= 0.8) return 'bg-green-500';
36
- if (ratio >= 0.5) return 'bg-amber-500';
37
- return 'bg-red-500';
34
+ const ratio = max > 0 ? score / max : 0
35
+ if (ratio >= 0.8) return 'bg-green-500'
36
+ if (ratio >= 0.5) return 'bg-amber-500'
37
+ return 'bg-red-500'
38
38
  }
39
39
 
40
40
  function getScoreLabel(score: number): string {
41
- if (score >= 80) return 'Excellent';
42
- if (score >= 65) return 'Good';
43
- if (score >= 50) return 'Needs Work';
44
- return 'Poor';
41
+ if (score >= 80) return 'Excellent'
42
+ if (score >= 65) return 'Good'
43
+ if (score >= 50) return 'Needs Work'
44
+ return 'Poor'
45
45
  }
46
46
 
47
47
  function getRingStrokeColor(score: number): string {
48
- if (score >= 80) return 'rgb(34, 197, 94)';
49
- if (score >= 50) return 'rgb(245, 158, 11)';
50
- return 'rgb(239, 68, 68)';
48
+ if (score >= 80) return 'rgb(34, 197, 94)'
49
+ if (score >= 50) return 'rgb(245, 158, 11)'
50
+ return 'rgb(239, 68, 68)'
51
51
  }
52
52
 
53
53
  function StatusIcon({ status }: { status: BuilderDesignCheck['status'] }) {
54
54
  switch (status) {
55
55
  case 'good':
56
- return <CheckCircle2 size={14} className="text-green-500 shrink-0" />;
56
+ return <CheckCircle2 size={14} className="text-green-500 shrink-0" />
57
57
  case 'warning':
58
- return <AlertCircle size={14} className="text-amber-500 shrink-0" />;
58
+ return <AlertCircle size={14} className="text-amber-500 shrink-0" />
59
59
  case 'error':
60
- return <XCircle size={14} className="text-red-500 shrink-0" />;
60
+ return <XCircle size={14} className="text-red-500 shrink-0" />
61
61
  }
62
62
  }
63
63
 
@@ -66,32 +66,27 @@ function SeverityBadge({ severity }: { severity: DesignSuggestion['severity'] })
66
66
  important: 'bg-red-100 text-red-700',
67
67
  suggestion: 'bg-amber-100 text-amber-700',
68
68
  info: 'bg-blue-100 text-blue-700',
69
- };
69
+ }
70
70
 
71
71
  return (
72
72
  <span className={`inline-block px-1.5 py-0.5 rounded text-xs font-medium ${classes[severity]}`}>
73
73
  {severity}
74
74
  </span>
75
- );
75
+ )
76
76
  }
77
77
 
78
78
  function ScoreRing({ score }: { score: number }) {
79
- const radius = 32;
80
- const strokeWidth = 6;
81
- const circumference = 2 * Math.PI * radius;
82
- const progress = Math.min(score, 100) / 100;
83
- const dashOffset = circumference * (1 - progress);
84
- const size = (radius + strokeWidth) * 2;
79
+ const radius = 32
80
+ const strokeWidth = 6
81
+ const circumference = 2 * Math.PI * radius
82
+ const progress = Math.min(score, 100) / 100
83
+ const dashOffset = circumference * (1 - progress)
84
+ const size = (radius + strokeWidth) * 2
85
85
 
86
86
  return (
87
87
  <div className="flex flex-col items-center gap-2">
88
88
  <div className="relative">
89
- <svg
90
- width={size}
91
- height={size}
92
- viewBox={`0 0 ${size} ${size}`}
93
- className="-rotate-90"
94
- >
89
+ <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} className="-rotate-90">
95
90
  <circle
96
91
  cx={size / 2}
97
92
  cy={size / 2}
@@ -114,14 +109,12 @@ function ScoreRing({ score }: { score: number }) {
114
109
  />
115
110
  </svg>
116
111
  <div className="absolute inset-0 flex items-center justify-center">
117
- <span className={`text-lg font-medium ${getScoreColor(score, 100)}`}>
118
- {score}
119
- </span>
112
+ <span className={`text-lg font-medium ${getScoreColor(score, 100)}`}>{score}</span>
120
113
  </div>
121
114
  </div>
122
115
  <span className="text-xs text-muted-foreground">{getScoreLabel(score)}</span>
123
116
  </div>
124
- );
117
+ )
125
118
  }
126
119
 
127
120
  function CategoryRow({
@@ -129,11 +122,11 @@ function CategoryRow({
129
122
  expanded,
130
123
  onToggle,
131
124
  }: {
132
- category: DesignCategory;
133
- expanded: boolean;
134
- onToggle: () => void;
125
+ category: DesignCategory
126
+ expanded: boolean
127
+ onToggle: () => void
135
128
  }) {
136
- const percentage = category.maxScore > 0 ? (category.score / category.maxScore) * 100 : 0;
129
+ const percentage = category.maxScore > 0 ? (category.score / category.maxScore) * 100 : 0
137
130
 
138
131
  return (
139
132
  <div className="border-b border-border last:border-b-0">
@@ -178,7 +171,7 @@ function CategoryRow({
178
171
  </div>
179
172
  )}
180
173
  </div>
181
- );
174
+ )
182
175
  }
183
176
 
184
177
  function SuggestionsList({ suggestions }: { suggestions: DesignSuggestion[] }) {
@@ -187,11 +180,11 @@ function SuggestionsList({ suggestions }: { suggestions: DesignSuggestion[] }) {
187
180
  important: 0,
188
181
  suggestion: 1,
189
182
  info: 2,
190
- };
191
- return [...suggestions].sort((a, b) => order[a.severity] - order[b.severity]);
192
- }, [suggestions]);
183
+ }
184
+ return [...suggestions].sort((a, b) => order[a.severity] - order[b.severity])
185
+ }, [suggestions])
193
186
 
194
- if (sorted.length === 0) return null;
187
+ if (sorted.length === 0) return null
195
188
 
196
189
  return (
197
190
  <div className="px-4 py-3 border-t border-border">
@@ -210,18 +203,18 @@ function SuggestionsList({ suggestions }: { suggestions: DesignSuggestion[] }) {
210
203
  ))}
211
204
  </div>
212
205
  </div>
213
- );
206
+ )
214
207
  }
215
208
 
216
209
  export function DesignScorePanel({ tree }: DesignScorePanelProps) {
217
- const analysis = useMemo(() => analyzeDesign(tree), [tree]);
218
- const [expandedCategories, setExpandedCategories] = useState<string[]>([]);
210
+ const analysis = useMemo(() => analyzeDesign(tree), [tree])
211
+ const [expandedCategories, setExpandedCategories] = useState<string[]>([])
219
212
 
220
213
  const toggleCategory = (name: string) => {
221
214
  setExpandedCategories((prev) =>
222
- prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name]
223
- );
224
- };
215
+ prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name],
216
+ )
217
+ }
225
218
 
226
219
  if (!tree.children || tree.children.length === 0) {
227
220
  return (
@@ -232,7 +225,7 @@ export function DesignScorePanel({ tree }: DesignScorePanelProps) {
232
225
  Add sections to your page to see the design analysis
233
226
  </p>
234
227
  </div>
235
- );
228
+ )
236
229
  }
237
230
 
238
231
  return (
@@ -254,5 +247,5 @@ export function DesignScorePanel({ tree }: DesignScorePanelProps) {
254
247
 
255
248
  <SuggestionsList suggestions={analysis.suggestions} />
256
249
  </div>
257
- );
250
+ )
258
251
  }
@@ -1,6 +1,6 @@
1
- 'use client';
1
+ 'use client'
2
2
 
3
- import { useState, useCallback } from 'react';
3
+ import { useState, useCallback } from 'react'
4
4
  import {
5
5
  ArrowUp,
6
6
  ArrowDown,
@@ -13,30 +13,31 @@ import {
13
13
  ArrowUpFromLine,
14
14
  ArrowDownToLine,
15
15
  Minus,
16
- } from 'lucide-react';
17
- import * as SwitchPrimitive from '@radix-ui/react-switch';
16
+ } from 'lucide-react'
17
+ import * as SwitchPrimitive from '@radix-ui/react-switch'
18
18
  import type {
19
19
  BuilderNode,
20
20
  SectionNode,
21
21
  ContainerNode,
22
22
  RowNode,
23
23
  ColumnNode,
24
- } from '@actuate-media/cms-core';
24
+ } from '@actuate-media/cms-core'
25
25
 
26
26
  export interface NodeSettingsProps {
27
- node: SectionNode | ContainerNode | RowNode | ColumnNode;
28
- onUpdateSettings: (id: string, settings: Record<string, unknown>) => void;
29
- onRemoveNode: (id: string) => void;
30
- onDuplicateNode: (id: string) => void;
31
- onMoveNodeUp: (id: string) => void;
32
- onMoveNodeDown: (id: string) => void;
33
- onAddRow?: (sectionId: string) => void;
27
+ node: SectionNode | ContainerNode | RowNode | ColumnNode
28
+ onUpdateSettings: (id: string, settings: Record<string, unknown>) => void
29
+ onRemoveNode: (id: string) => void
30
+ onDuplicateNode: (id: string) => void
31
+ onMoveNodeUp: (id: string) => void
32
+ onMoveNodeDown: (id: string) => void
33
+ onAddRow?: (sectionId: string) => void
34
34
  }
35
35
 
36
36
  const INPUT_CLASS =
37
- 'w-full px-3 py-2 text-sm bg-background border border-input rounded-md focus:outline-none focus:ring-2 focus:ring-ring';
38
- const LABEL_CLASS = 'text-sm font-medium text-foreground mb-1 block';
39
- const SECTION_HEADING_CLASS = 'text-xs font-medium uppercase tracking-wider text-muted-foreground mb-2';
37
+ 'w-full px-3 py-2 text-sm bg-background border border-input rounded-md focus:outline-none focus:ring-2 focus:ring-ring'
38
+ const LABEL_CLASS = 'text-sm font-medium text-foreground mb-1 block'
39
+ const SECTION_HEADING_CLASS =
40
+ 'text-xs font-medium uppercase tracking-wider text-muted-foreground mb-2'
40
41
 
41
42
  const COLUMN_PRESETS: { label: string; widths: number[] }[] = [
42
43
  { label: '12', widths: [12] },
@@ -46,7 +47,7 @@ const COLUMN_PRESETS: { label: string; widths: number[] }[] = [
46
47
  { label: '8 | 4', widths: [8, 4] },
47
48
  { label: '4 | 8', widths: [4, 8] },
48
49
  { label: '3 | 6 | 3', widths: [3, 6, 3] },
49
- ];
50
+ ]
50
51
 
51
52
  export function NodeSettings({
52
53
  node,
@@ -57,23 +58,23 @@ export function NodeSettings({
57
58
  onMoveNodeDown,
58
59
  onAddRow,
59
60
  }: NodeSettingsProps) {
60
- const [confirmDelete, setConfirmDelete] = useState(false);
61
+ const [confirmDelete, setConfirmDelete] = useState(false)
61
62
 
62
63
  const updateSetting = useCallback(
63
64
  (key: string, value: unknown) => {
64
- onUpdateSettings(node.id, { [key]: value });
65
+ onUpdateSettings(node.id, { [key]: value })
65
66
  },
66
- [node.id, onUpdateSettings]
67
- );
67
+ [node.id, onUpdateSettings],
68
+ )
68
69
 
69
70
  const handleDelete = useCallback(() => {
70
71
  if (confirmDelete) {
71
- onRemoveNode(node.id);
72
- setConfirmDelete(false);
72
+ onRemoveNode(node.id)
73
+ setConfirmDelete(false)
73
74
  } else {
74
- setConfirmDelete(true);
75
+ setConfirmDelete(true)
75
76
  }
76
- }, [confirmDelete, node.id, onRemoveNode]);
77
+ }, [confirmDelete, node.id, onRemoveNode])
77
78
 
78
79
  const nodeLabel =
79
80
  node.type === 'section'
@@ -82,7 +83,7 @@ export function NodeSettings({
82
83
  ? 'Container'
83
84
  : node.type === 'row'
84
85
  ? 'Row'
85
- : 'Column';
86
+ : 'Column'
86
87
 
87
88
  return (
88
89
  <div className="flex flex-col h-full">
@@ -92,8 +93,12 @@ export function NodeSettings({
92
93
 
93
94
  <div className="flex-1 overflow-y-auto">
94
95
  <div className="space-y-4 p-4">
95
- {node.type === 'section' && <SectionFields node={node} updateSetting={updateSetting} onAddRow={onAddRow} />}
96
- {node.type === 'container' && <ContainerFields node={node} updateSetting={updateSetting} />}
96
+ {node.type === 'section' && (
97
+ <SectionFields node={node} updateSetting={updateSetting} onAddRow={onAddRow} />
98
+ )}
99
+ {node.type === 'container' && (
100
+ <ContainerFields node={node} updateSetting={updateSetting} />
101
+ )}
97
102
  {node.type === 'row' && <RowFields node={node} updateSetting={updateSetting} />}
98
103
  {node.type === 'column' && <ColumnFields node={node} updateSetting={updateSetting} />}
99
104
  </div>
@@ -144,7 +149,7 @@ export function NodeSettings({
144
149
  </button>
145
150
  </div>
146
151
  </div>
147
- );
152
+ )
148
153
  }
149
154
 
150
155
  function SectionFields({
@@ -152,11 +157,11 @@ function SectionFields({
152
157
  updateSetting,
153
158
  onAddRow,
154
159
  }: {
155
- node: SectionNode;
156
- updateSetting: (key: string, value: unknown) => void;
157
- onAddRow?: (sectionId: string) => void;
160
+ node: SectionNode
161
+ updateSetting: (key: string, value: unknown) => void
162
+ onAddRow?: (sectionId: string) => void
158
163
  }) {
159
- const s = node.settings;
164
+ const s = node.settings
160
165
  return (
161
166
  <>
162
167
  <p className={SECTION_HEADING_CLASS}>Background</p>
@@ -228,9 +233,7 @@ function SectionFields({
228
233
  <label className="text-sm font-medium text-foreground">Visibility</label>
229
234
  <SwitchPrimitive.Root
230
235
  checked={s.visibility !== 'hidden'}
231
- onCheckedChange={(checked) =>
232
- updateSetting('visibility', checked ? 'visible' : 'hidden')
233
- }
236
+ onCheckedChange={(checked) => updateSetting('visibility', checked ? 'visible' : 'hidden')}
234
237
  className="w-9 h-5 bg-input rounded-full relative data-[state=checked]:bg-primary transition-colors"
235
238
  aria-label="Section visibility"
236
239
  >
@@ -269,17 +272,17 @@ function SectionFields({
269
272
  </button>
270
273
  )}
271
274
  </>
272
- );
275
+ )
273
276
  }
274
277
 
275
278
  function ContainerFields({
276
279
  node,
277
280
  updateSetting,
278
281
  }: {
279
- node: ContainerNode;
280
- updateSetting: (key: string, value: unknown) => void;
282
+ node: ContainerNode
283
+ updateSetting: (key: string, value: unknown) => void
281
284
  }) {
282
- const s = node.settings;
285
+ const s = node.settings
283
286
  return (
284
287
  <>
285
288
  <p className={SECTION_HEADING_CLASS}>Layout</p>
@@ -297,7 +300,8 @@ function ContainerFields({
297
300
  <label className={LABEL_CLASS}>Alignment</label>
298
301
  <div className="flex gap-1">
299
302
  {(['left', 'center', 'right'] as const).map((align) => {
300
- const Icon = align === 'left' ? AlignLeft : align === 'center' ? AlignCenter : AlignRight;
303
+ const Icon =
304
+ align === 'left' ? AlignLeft : align === 'center' ? AlignCenter : AlignRight
301
305
  return (
302
306
  <button
303
307
  key={align}
@@ -312,7 +316,7 @@ function ContainerFields({
312
316
  >
313
317
  <Icon size={14} />
314
318
  </button>
315
- );
319
+ )
316
320
  })}
317
321
  </div>
318
322
  </div>
@@ -327,17 +331,17 @@ function ContainerFields({
327
331
  />
328
332
  </div>
329
333
  </>
330
- );
334
+ )
331
335
  }
332
336
 
333
337
  function RowFields({
334
338
  node,
335
339
  updateSetting,
336
340
  }: {
337
- node: RowNode;
338
- updateSetting: (key: string, value: unknown) => void;
341
+ node: RowNode
342
+ updateSetting: (key: string, value: unknown) => void
339
343
  }) {
340
- const s = node.settings;
344
+ const s = node.settings
341
345
  return (
342
346
  <>
343
347
  <p className={SECTION_HEADING_CLASS}>Layout</p>
@@ -362,7 +366,7 @@ function RowFields({
362
366
  ? ArrowDownToLine
363
367
  : align === 'center'
364
368
  ? Minus
365
- : AlignCenter;
369
+ : AlignCenter
366
370
  return (
367
371
  <button
368
372
  key={align}
@@ -377,7 +381,7 @@ function RowFields({
377
381
  >
378
382
  <Icon size={14} />
379
383
  </button>
380
- );
384
+ )
381
385
  })}
382
386
  </div>
383
387
  </div>
@@ -417,11 +421,7 @@ function RowFields({
417
421
  >
418
422
  <div className="flex gap-0.5 h-4">
419
423
  {preset.widths.map((w, i) => (
420
- <div
421
- key={i}
422
- className="bg-muted-foreground/30 rounded-sm"
423
- style={{ flex: w }}
424
- />
424
+ <div key={i} className="bg-muted-foreground/30 rounded-sm" style={{ flex: w }} />
425
425
  ))}
426
426
  </div>
427
427
  <p className="text-xs text-muted-foreground mt-1 text-center">
@@ -431,17 +431,17 @@ function RowFields({
431
431
  ))}
432
432
  </div>
433
433
  </>
434
- );
434
+ )
435
435
  }
436
436
 
437
437
  function ColumnFields({
438
438
  node,
439
439
  updateSetting,
440
440
  }: {
441
- node: ColumnNode;
442
- updateSetting: (key: string, value: unknown) => void;
441
+ node: ColumnNode
442
+ updateSetting: (key: string, value: unknown) => void
443
443
  }) {
444
- const s = node.settings;
444
+ const s = node.settings
445
445
  return (
446
446
  <>
447
447
  <p className={SECTION_HEADING_CLASS}>Size</p>
@@ -463,7 +463,7 @@ function ColumnFields({
463
463
  <div className="flex gap-1">
464
464
  {(['top', 'center', 'bottom'] as const).map((align) => {
465
465
  const Icon =
466
- align === 'top' ? ArrowUpFromLine : align === 'bottom' ? ArrowDownToLine : Minus;
466
+ align === 'top' ? ArrowUpFromLine : align === 'bottom' ? ArrowDownToLine : Minus
467
467
  return (
468
468
  <button
469
469
  key={align}
@@ -478,7 +478,7 @@ function ColumnFields({
478
478
  >
479
479
  <Icon size={14} />
480
480
  </button>
481
- );
481
+ )
482
482
  })}
483
483
  </div>
484
484
  </div>
@@ -511,5 +511,5 @@ function ColumnFields({
511
511
  </div>
512
512
  </div>
513
513
  </>
514
- );
514
+ )
515
515
  }