@prenta/admin 0.92.0

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 (2239) hide show
  1. package/CHANGELOG.md +2456 -0
  2. package/LICENSE +21 -0
  3. package/README.md +35 -0
  4. package/design-system/README.md +53 -0
  5. package/design-system/tokens.css +114 -0
  6. package/design-system/tokens.json +149 -0
  7. package/design-system/tokens.scss +108 -0
  8. package/design-system/tokens.tailwind.cjs +80 -0
  9. package/dist/AdminRoot.d.ts +60 -0
  10. package/dist/AdminRoot.d.ts.map +1 -0
  11. package/dist/AdminRoot.js +594 -0
  12. package/dist/AdminRoot.js.map +1 -0
  13. package/dist/LoginRoot.d.ts +54 -0
  14. package/dist/LoginRoot.d.ts.map +1 -0
  15. package/dist/LoginRoot.js +60 -0
  16. package/dist/LoginRoot.js.map +1 -0
  17. package/dist/__tests__/components/attribution-rows.test.d.ts +2 -0
  18. package/dist/__tests__/components/attribution-rows.test.d.ts.map +1 -0
  19. package/dist/__tests__/components/attribution-rows.test.js +82 -0
  20. package/dist/__tests__/components/attribution-rows.test.js.map +1 -0
  21. package/dist/__tests__/components/author-avatar.test.d.ts +2 -0
  22. package/dist/__tests__/components/author-avatar.test.d.ts.map +1 -0
  23. package/dist/__tests__/components/author-avatar.test.js +36 -0
  24. package/dist/__tests__/components/author-avatar.test.js.map +1 -0
  25. package/dist/__tests__/components/breadcrumbs-is-id.test.d.ts +2 -0
  26. package/dist/__tests__/components/breadcrumbs-is-id.test.d.ts.map +1 -0
  27. package/dist/__tests__/components/breadcrumbs-is-id.test.js +28 -0
  28. package/dist/__tests__/components/breadcrumbs-is-id.test.js.map +1 -0
  29. package/dist/__tests__/components/comment-mark.test.d.ts +2 -0
  30. package/dist/__tests__/components/comment-mark.test.d.ts.map +1 -0
  31. package/dist/__tests__/components/comment-mark.test.js +89 -0
  32. package/dist/__tests__/components/comment-mark.test.js.map +1 -0
  33. package/dist/__tests__/components/comment-side-panel.test.d.ts +2 -0
  34. package/dist/__tests__/components/comment-side-panel.test.d.ts.map +1 -0
  35. package/dist/__tests__/components/comment-side-panel.test.js +384 -0
  36. package/dist/__tests__/components/comment-side-panel.test.js.map +1 -0
  37. package/dist/__tests__/components/forms-pagination.render.test.d.ts +2 -0
  38. package/dist/__tests__/components/forms-pagination.render.test.d.ts.map +1 -0
  39. package/dist/__tests__/components/forms-pagination.render.test.js +33 -0
  40. package/dist/__tests__/components/forms-pagination.render.test.js.map +1 -0
  41. package/dist/__tests__/components/inspector-pane.test.d.ts +2 -0
  42. package/dist/__tests__/components/inspector-pane.test.d.ts.map +1 -0
  43. package/dist/__tests__/components/inspector-pane.test.js +31 -0
  44. package/dist/__tests__/components/inspector-pane.test.js.map +1 -0
  45. package/dist/__tests__/components/mentionable-textarea.test.d.ts +2 -0
  46. package/dist/__tests__/components/mentionable-textarea.test.d.ts.map +1 -0
  47. package/dist/__tests__/components/mentionable-textarea.test.js +190 -0
  48. package/dist/__tests__/components/mentionable-textarea.test.js.map +1 -0
  49. package/dist/__tests__/components/modal.render.test.d.ts +2 -0
  50. package/dist/__tests__/components/modal.render.test.d.ts.map +1 -0
  51. package/dist/__tests__/components/modal.render.test.js +37 -0
  52. package/dist/__tests__/components/modal.render.test.js.map +1 -0
  53. package/dist/__tests__/components/notification-bell.test.d.ts +2 -0
  54. package/dist/__tests__/components/notification-bell.test.d.ts.map +1 -0
  55. package/dist/__tests__/components/notification-bell.test.js +346 -0
  56. package/dist/__tests__/components/notification-bell.test.js.map +1 -0
  57. package/dist/__tests__/components/offline-status.test.d.ts +2 -0
  58. package/dist/__tests__/components/offline-status.test.d.ts.map +1 -0
  59. package/dist/__tests__/components/offline-status.test.js +56 -0
  60. package/dist/__tests__/components/offline-status.test.js.map +1 -0
  61. package/dist/__tests__/components/posts-badges.test.d.ts +2 -0
  62. package/dist/__tests__/components/posts-badges.test.d.ts.map +1 -0
  63. package/dist/__tests__/components/posts-badges.test.js +73 -0
  64. package/dist/__tests__/components/posts-badges.test.js.map +1 -0
  65. package/dist/__tests__/components/presence-chips-helpers.test.d.ts +2 -0
  66. package/dist/__tests__/components/presence-chips-helpers.test.d.ts.map +1 -0
  67. package/dist/__tests__/components/presence-chips-helpers.test.js +35 -0
  68. package/dist/__tests__/components/presence-chips-helpers.test.js.map +1 -0
  69. package/dist/__tests__/components/resizable-aside.test.d.ts +2 -0
  70. package/dist/__tests__/components/resizable-aside.test.d.ts.map +1 -0
  71. package/dist/__tests__/components/resizable-aside.test.js +77 -0
  72. package/dist/__tests__/components/resizable-aside.test.js.map +1 -0
  73. package/dist/__tests__/components/seo-char-count.test.d.ts +2 -0
  74. package/dist/__tests__/components/seo-char-count.test.d.ts.map +1 -0
  75. package/dist/__tests__/components/seo-char-count.test.js +25 -0
  76. package/dist/__tests__/components/seo-char-count.test.js.map +1 -0
  77. package/dist/__tests__/components/seo-editor-pane.render.test.d.ts +2 -0
  78. package/dist/__tests__/components/seo-editor-pane.render.test.d.ts.map +1 -0
  79. package/dist/__tests__/components/seo-editor-pane.render.test.js +100 -0
  80. package/dist/__tests__/components/seo-editor-pane.render.test.js.map +1 -0
  81. package/dist/__tests__/components/tag-input.render.test.d.ts +2 -0
  82. package/dist/__tests__/components/tag-input.render.test.d.ts.map +1 -0
  83. package/dist/__tests__/components/tag-input.render.test.js +86 -0
  84. package/dist/__tests__/components/tag-input.render.test.js.map +1 -0
  85. package/dist/__tests__/components/theme-provider-accent.test.d.ts +2 -0
  86. package/dist/__tests__/components/theme-provider-accent.test.d.ts.map +1 -0
  87. package/dist/__tests__/components/theme-provider-accent.test.js +64 -0
  88. package/dist/__tests__/components/theme-provider-accent.test.js.map +1 -0
  89. package/dist/__tests__/components/toggle.test.d.ts +2 -0
  90. package/dist/__tests__/components/toggle.test.d.ts.map +1 -0
  91. package/dist/__tests__/components/toggle.test.js +17 -0
  92. package/dist/__tests__/components/toggle.test.js.map +1 -0
  93. package/dist/__tests__/components/ui-primitives.test.d.ts +2 -0
  94. package/dist/__tests__/components/ui-primitives.test.d.ts.map +1 -0
  95. package/dist/__tests__/components/ui-primitives.test.js +45 -0
  96. package/dist/__tests__/components/ui-primitives.test.js.map +1 -0
  97. package/dist/__tests__/fields/component-block-helpers.test.d.ts +7 -0
  98. package/dist/__tests__/fields/component-block-helpers.test.d.ts.map +1 -0
  99. package/dist/__tests__/fields/component-block-helpers.test.js +592 -0
  100. package/dist/__tests__/fields/component-block-helpers.test.js.map +1 -0
  101. package/dist/__tests__/hooks/useAppearanceBootstrap.test.d.ts +2 -0
  102. package/dist/__tests__/hooks/useAppearanceBootstrap.test.d.ts.map +1 -0
  103. package/dist/__tests__/hooks/useAppearanceBootstrap.test.js +55 -0
  104. package/dist/__tests__/hooks/useAppearanceBootstrap.test.js.map +1 -0
  105. package/dist/__tests__/hooks/useIdleLogout.test.d.ts +2 -0
  106. package/dist/__tests__/hooks/useIdleLogout.test.d.ts.map +1 -0
  107. package/dist/__tests__/hooks/useIdleLogout.test.js +119 -0
  108. package/dist/__tests__/hooks/useIdleLogout.test.js.map +1 -0
  109. package/dist/__tests__/layout/build-nav-items.test.d.ts +2 -0
  110. package/dist/__tests__/layout/build-nav-items.test.d.ts.map +1 -0
  111. package/dist/__tests__/layout/build-nav-items.test.js +85 -0
  112. package/dist/__tests__/layout/build-nav-items.test.js.map +1 -0
  113. package/dist/__tests__/layout/primitives.test.d.ts +2 -0
  114. package/dist/__tests__/layout/primitives.test.d.ts.map +1 -0
  115. package/dist/__tests__/layout/primitives.test.js +41 -0
  116. package/dist/__tests__/layout/primitives.test.js.map +1 -0
  117. package/dist/__tests__/layout/sidebar-brand.render.test.d.ts +2 -0
  118. package/dist/__tests__/layout/sidebar-brand.render.test.d.ts.map +1 -0
  119. package/dist/__tests__/layout/sidebar-brand.render.test.js +98 -0
  120. package/dist/__tests__/layout/sidebar-brand.render.test.js.map +1 -0
  121. package/dist/__tests__/layout/sidebar-forms-badge.render.test.d.ts +2 -0
  122. package/dist/__tests__/layout/sidebar-forms-badge.render.test.d.ts.map +1 -0
  123. package/dist/__tests__/layout/sidebar-forms-badge.render.test.js +30 -0
  124. package/dist/__tests__/layout/sidebar-forms-badge.render.test.js.map +1 -0
  125. package/dist/__tests__/layout/sidebar-forms-submenu.render.test.d.ts +2 -0
  126. package/dist/__tests__/layout/sidebar-forms-submenu.render.test.d.ts.map +1 -0
  127. package/dist/__tests__/layout/sidebar-forms-submenu.render.test.js +28 -0
  128. package/dist/__tests__/layout/sidebar-forms-submenu.render.test.js.map +1 -0
  129. package/dist/__tests__/layout/sidebar-plugin-nav.test.d.ts +2 -0
  130. package/dist/__tests__/layout/sidebar-plugin-nav.test.d.ts.map +1 -0
  131. package/dist/__tests__/layout/sidebar-plugin-nav.test.js +46 -0
  132. package/dist/__tests__/layout/sidebar-plugin-nav.test.js.map +1 -0
  133. package/dist/__tests__/layout/sidebar-posts.test.d.ts +2 -0
  134. package/dist/__tests__/layout/sidebar-posts.test.d.ts.map +1 -0
  135. package/dist/__tests__/layout/sidebar-posts.test.js +164 -0
  136. package/dist/__tests__/layout/sidebar-posts.test.js.map +1 -0
  137. package/dist/__tests__/layout/sidebar-submenu.render.test.d.ts +2 -0
  138. package/dist/__tests__/layout/sidebar-submenu.render.test.d.ts.map +1 -0
  139. package/dist/__tests__/layout/sidebar-submenu.render.test.js +66 -0
  140. package/dist/__tests__/layout/sidebar-submenu.render.test.js.map +1 -0
  141. package/dist/__tests__/lib/active-editor.test.d.ts +2 -0
  142. package/dist/__tests__/lib/active-editor.test.d.ts.map +1 -0
  143. package/dist/__tests__/lib/active-editor.test.js +57 -0
  144. package/dist/__tests__/lib/active-editor.test.js.map +1 -0
  145. package/dist/__tests__/lib/appearance-api.test.d.ts +2 -0
  146. package/dist/__tests__/lib/appearance-api.test.d.ts.map +1 -0
  147. package/dist/__tests__/lib/appearance-api.test.js +37 -0
  148. package/dist/__tests__/lib/appearance-api.test.js.map +1 -0
  149. package/dist/__tests__/lib/coauthor-client.test.d.ts +2 -0
  150. package/dist/__tests__/lib/coauthor-client.test.d.ts.map +1 -0
  151. package/dist/__tests__/lib/coauthor-client.test.js +173 -0
  152. package/dist/__tests__/lib/coauthor-client.test.js.map +1 -0
  153. package/dist/__tests__/lib/collaboration-provider.test.d.ts +2 -0
  154. package/dist/__tests__/lib/collaboration-provider.test.d.ts.map +1 -0
  155. package/dist/__tests__/lib/collaboration-provider.test.js +335 -0
  156. package/dist/__tests__/lib/collaboration-provider.test.js.map +1 -0
  157. package/dist/__tests__/lib/collection-routes.test.d.ts +2 -0
  158. package/dist/__tests__/lib/collection-routes.test.d.ts.map +1 -0
  159. package/dist/__tests__/lib/collection-routes.test.js +29 -0
  160. package/dist/__tests__/lib/collection-routes.test.js.map +1 -0
  161. package/dist/__tests__/lib/comment-anchor.test.d.ts +2 -0
  162. package/dist/__tests__/lib/comment-anchor.test.d.ts.map +1 -0
  163. package/dist/__tests__/lib/comment-anchor.test.js +173 -0
  164. package/dist/__tests__/lib/comment-anchor.test.js.map +1 -0
  165. package/dist/__tests__/lib/comments-client.test.d.ts +2 -0
  166. package/dist/__tests__/lib/comments-client.test.d.ts.map +1 -0
  167. package/dist/__tests__/lib/comments-client.test.js +202 -0
  168. package/dist/__tests__/lib/comments-client.test.js.map +1 -0
  169. package/dist/__tests__/lib/cv.test.d.ts +2 -0
  170. package/dist/__tests__/lib/cv.test.d.ts.map +1 -0
  171. package/dist/__tests__/lib/cv.test.js +75 -0
  172. package/dist/__tests__/lib/cv.test.js.map +1 -0
  173. package/dist/__tests__/lib/editor-preview.test.d.ts +2 -0
  174. package/dist/__tests__/lib/editor-preview.test.d.ts.map +1 -0
  175. package/dist/__tests__/lib/editor-preview.test.js +18 -0
  176. package/dist/__tests__/lib/editor-preview.test.js.map +1 -0
  177. package/dist/__tests__/lib/favicon.test.d.ts +2 -0
  178. package/dist/__tests__/lib/favicon.test.d.ts.map +1 -0
  179. package/dist/__tests__/lib/favicon.test.js +44 -0
  180. package/dist/__tests__/lib/favicon.test.js.map +1 -0
  181. package/dist/__tests__/lib/mention-picker.test.d.ts +2 -0
  182. package/dist/__tests__/lib/mention-picker.test.d.ts.map +1 -0
  183. package/dist/__tests__/lib/mention-picker.test.js +122 -0
  184. package/dist/__tests__/lib/mention-picker.test.js.map +1 -0
  185. package/dist/__tests__/lib/notifications-client.test.d.ts +2 -0
  186. package/dist/__tests__/lib/notifications-client.test.d.ts.map +1 -0
  187. package/dist/__tests__/lib/notifications-client.test.js +283 -0
  188. package/dist/__tests__/lib/notifications-client.test.js.map +1 -0
  189. package/dist/__tests__/lib/page-editor-service-api.test.d.ts +2 -0
  190. package/dist/__tests__/lib/page-editor-service-api.test.d.ts.map +1 -0
  191. package/dist/__tests__/lib/page-editor-service-api.test.js +218 -0
  192. package/dist/__tests__/lib/page-editor-service-api.test.js.map +1 -0
  193. package/dist/__tests__/lib/page-editor-service.test.d.ts +2 -0
  194. package/dist/__tests__/lib/page-editor-service.test.d.ts.map +1 -0
  195. package/dist/__tests__/lib/page-editor-service.test.js +152 -0
  196. package/dist/__tests__/lib/page-editor-service.test.js.map +1 -0
  197. package/dist/__tests__/lib/pages-service-fetch.test.d.ts +2 -0
  198. package/dist/__tests__/lib/pages-service-fetch.test.d.ts.map +1 -0
  199. package/dist/__tests__/lib/pages-service-fetch.test.js +135 -0
  200. package/dist/__tests__/lib/pages-service-fetch.test.js.map +1 -0
  201. package/dist/__tests__/lib/pages-service.test.d.ts +2 -0
  202. package/dist/__tests__/lib/pages-service.test.d.ts.map +1 -0
  203. package/dist/__tests__/lib/pages-service.test.js +140 -0
  204. package/dist/__tests__/lib/pages-service.test.js.map +1 -0
  205. package/dist/__tests__/lib/pages-tree.test.d.ts +2 -0
  206. package/dist/__tests__/lib/pages-tree.test.d.ts.map +1 -0
  207. package/dist/__tests__/lib/pages-tree.test.js +212 -0
  208. package/dist/__tests__/lib/pages-tree.test.js.map +1 -0
  209. package/dist/__tests__/lib/post-editor-service.test.d.ts +2 -0
  210. package/dist/__tests__/lib/post-editor-service.test.d.ts.map +1 -0
  211. package/dist/__tests__/lib/post-editor-service.test.js +438 -0
  212. package/dist/__tests__/lib/post-editor-service.test.js.map +1 -0
  213. package/dist/__tests__/lib/post-types-service.test.d.ts +2 -0
  214. package/dist/__tests__/lib/post-types-service.test.d.ts.map +1 -0
  215. package/dist/__tests__/lib/post-types-service.test.js +88 -0
  216. package/dist/__tests__/lib/post-types-service.test.js.map +1 -0
  217. package/dist/__tests__/lib/posts-service.test.d.ts +2 -0
  218. package/dist/__tests__/lib/posts-service.test.d.ts.map +1 -0
  219. package/dist/__tests__/lib/posts-service.test.js +234 -0
  220. package/dist/__tests__/lib/posts-service.test.js.map +1 -0
  221. package/dist/__tests__/lib/preview-bridge.test.d.ts +2 -0
  222. package/dist/__tests__/lib/preview-bridge.test.d.ts.map +1 -0
  223. package/dist/__tests__/lib/preview-bridge.test.js +92 -0
  224. package/dist/__tests__/lib/preview-bridge.test.js.map +1 -0
  225. package/dist/__tests__/lib/preview-link-origin.test.d.ts +2 -0
  226. package/dist/__tests__/lib/preview-link-origin.test.d.ts.map +1 -0
  227. package/dist/__tests__/lib/preview-link-origin.test.js +17 -0
  228. package/dist/__tests__/lib/preview-link-origin.test.js.map +1 -0
  229. package/dist/__tests__/lib/preview-link.test.d.ts +2 -0
  230. package/dist/__tests__/lib/preview-link.test.d.ts.map +1 -0
  231. package/dist/__tests__/lib/preview-link.test.js +65 -0
  232. package/dist/__tests__/lib/preview-link.test.js.map +1 -0
  233. package/dist/__tests__/lib/search.test.d.ts +2 -0
  234. package/dist/__tests__/lib/search.test.d.ts.map +1 -0
  235. package/dist/__tests__/lib/search.test.js +100 -0
  236. package/dist/__tests__/lib/search.test.js.map +1 -0
  237. package/dist/__tests__/lib/seo-service-errors.test.d.ts +2 -0
  238. package/dist/__tests__/lib/seo-service-errors.test.d.ts.map +1 -0
  239. package/dist/__tests__/lib/seo-service-errors.test.js +46 -0
  240. package/dist/__tests__/lib/seo-service-errors.test.js.map +1 -0
  241. package/dist/__tests__/lib/slash-command.test.d.ts +2 -0
  242. package/dist/__tests__/lib/slash-command.test.d.ts.map +1 -0
  243. package/dist/__tests__/lib/slash-command.test.js +123 -0
  244. package/dist/__tests__/lib/slash-command.test.js.map +1 -0
  245. package/dist/__tests__/lib/useApiData.test.d.ts +2 -0
  246. package/dist/__tests__/lib/useApiData.test.d.ts.map +1 -0
  247. package/dist/__tests__/lib/useApiData.test.js +111 -0
  248. package/dist/__tests__/lib/useApiData.test.js.map +1 -0
  249. package/dist/__tests__/lib/utils.test.d.ts +2 -0
  250. package/dist/__tests__/lib/utils.test.d.ts.map +1 -0
  251. package/dist/__tests__/lib/utils.test.js +17 -0
  252. package/dist/__tests__/lib/utils.test.js.map +1 -0
  253. package/dist/__tests__/no-server-barrel-imports.test.d.ts +2 -0
  254. package/dist/__tests__/no-server-barrel-imports.test.d.ts.map +1 -0
  255. package/dist/__tests__/no-server-barrel-imports.test.js +50 -0
  256. package/dist/__tests__/no-server-barrel-imports.test.js.map +1 -0
  257. package/dist/__tests__/router/admin-routes.test.d.ts +2 -0
  258. package/dist/__tests__/router/admin-routes.test.d.ts.map +1 -0
  259. package/dist/__tests__/router/admin-routes.test.js +62 -0
  260. package/dist/__tests__/router/admin-routes.test.js.map +1 -0
  261. package/dist/__tests__/router/match-route.test.d.ts +2 -0
  262. package/dist/__tests__/router/match-route.test.d.ts.map +1 -0
  263. package/dist/__tests__/router/match-route.test.js +43 -0
  264. package/dist/__tests__/router/match-route.test.js.map +1 -0
  265. package/dist/__tests__/router/navigate-pushstate.test.d.ts +2 -0
  266. package/dist/__tests__/router/navigate-pushstate.test.d.ts.map +1 -0
  267. package/dist/__tests__/router/navigate-pushstate.test.js +37 -0
  268. package/dist/__tests__/router/navigate-pushstate.test.js.map +1 -0
  269. package/dist/__tests__/router/navigation-blocker.test.d.ts +2 -0
  270. package/dist/__tests__/router/navigation-blocker.test.d.ts.map +1 -0
  271. package/dist/__tests__/router/navigation-blocker.test.js +86 -0
  272. package/dist/__tests__/router/navigation-blocker.test.js.map +1 -0
  273. package/dist/__tests__/router/plugin-nav-resolves.test.d.ts +2 -0
  274. package/dist/__tests__/router/plugin-nav-resolves.test.d.ts.map +1 -0
  275. package/dist/__tests__/router/plugin-nav-resolves.test.js +46 -0
  276. package/dist/__tests__/router/plugin-nav-resolves.test.js.map +1 -0
  277. package/dist/__tests__/router/query-string.test.d.ts +2 -0
  278. package/dist/__tests__/router/query-string.test.d.ts.map +1 -0
  279. package/dist/__tests__/router/query-string.test.js +44 -0
  280. package/dist/__tests__/router/query-string.test.js.map +1 -0
  281. package/dist/__tests__/router/seo-tab-for-path.test.d.ts +2 -0
  282. package/dist/__tests__/router/seo-tab-for-path.test.d.ts.map +1 -0
  283. package/dist/__tests__/router/seo-tab-for-path.test.js +39 -0
  284. package/dist/__tests__/router/seo-tab-for-path.test.js.map +1 -0
  285. package/dist/__tests__/router/strip-base.test.d.ts +2 -0
  286. package/dist/__tests__/router/strip-base.test.d.ts.map +1 -0
  287. package/dist/__tests__/router/strip-base.test.js +26 -0
  288. package/dist/__tests__/router/strip-base.test.js.map +1 -0
  289. package/dist/__tests__/styles/theme-token-scope.test.d.ts +2 -0
  290. package/dist/__tests__/styles/theme-token-scope.test.d.ts.map +1 -0
  291. package/dist/__tests__/styles/theme-token-scope.test.js +50 -0
  292. package/dist/__tests__/styles/theme-token-scope.test.js.map +1 -0
  293. package/dist/__tests__/views/account-security.render.test.d.ts +2 -0
  294. package/dist/__tests__/views/account-security.render.test.d.ts.map +1 -0
  295. package/dist/__tests__/views/account-security.render.test.js +98 -0
  296. package/dist/__tests__/views/account-security.render.test.js.map +1 -0
  297. package/dist/__tests__/views/admin-section-renderers.test.d.ts +2 -0
  298. package/dist/__tests__/views/admin-section-renderers.test.d.ts.map +1 -0
  299. package/dist/__tests__/views/admin-section-renderers.test.js +71 -0
  300. package/dist/__tests__/views/admin-section-renderers.test.js.map +1 -0
  301. package/dist/__tests__/views/ai-settings.render.test.d.ts +2 -0
  302. package/dist/__tests__/views/ai-settings.render.test.d.ts.map +1 -0
  303. package/dist/__tests__/views/ai-settings.render.test.js +285 -0
  304. package/dist/__tests__/views/ai-settings.render.test.js.map +1 -0
  305. package/dist/__tests__/views/appearance-settings.render.test.d.ts +2 -0
  306. package/dist/__tests__/views/appearance-settings.render.test.d.ts.map +1 -0
  307. package/dist/__tests__/views/appearance-settings.render.test.js +176 -0
  308. package/dist/__tests__/views/appearance-settings.render.test.js.map +1 -0
  309. package/dist/__tests__/views/article-body-section.render.test.d.ts +2 -0
  310. package/dist/__tests__/views/article-body-section.render.test.d.ts.map +1 -0
  311. package/dist/__tests__/views/article-body-section.render.test.js +24 -0
  312. package/dist/__tests__/views/article-body-section.render.test.js.map +1 -0
  313. package/dist/__tests__/views/collection-list-facets.render.test.d.ts +2 -0
  314. package/dist/__tests__/views/collection-list-facets.render.test.d.ts.map +1 -0
  315. package/dist/__tests__/views/collection-list-facets.render.test.js +131 -0
  316. package/dist/__tests__/views/collection-list-facets.render.test.js.map +1 -0
  317. package/dist/__tests__/views/collection-list-nav.render.test.d.ts +2 -0
  318. package/dist/__tests__/views/collection-list-nav.render.test.d.ts.map +1 -0
  319. package/dist/__tests__/views/collection-list-nav.render.test.js +92 -0
  320. package/dist/__tests__/views/collection-list-nav.render.test.js.map +1 -0
  321. package/dist/__tests__/views/dashboard.test.d.ts +2 -0
  322. package/dist/__tests__/views/dashboard.test.d.ts.map +1 -0
  323. package/dist/__tests__/views/dashboard.test.js +165 -0
  324. package/dist/__tests__/views/dashboard.test.js.map +1 -0
  325. package/dist/__tests__/views/editor-top-bar.render.test.d.ts +2 -0
  326. package/dist/__tests__/views/editor-top-bar.render.test.d.ts.map +1 -0
  327. package/dist/__tests__/views/editor-top-bar.render.test.js +77 -0
  328. package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -0
  329. package/dist/__tests__/views/email-settings.render.test.d.ts +2 -0
  330. package/dist/__tests__/views/email-settings.render.test.d.ts.map +1 -0
  331. package/dist/__tests__/views/email-settings.render.test.js +184 -0
  332. package/dist/__tests__/views/email-settings.render.test.js.map +1 -0
  333. package/dist/__tests__/views/form-editor.render.test.d.ts +2 -0
  334. package/dist/__tests__/views/form-editor.render.test.d.ts.map +1 -0
  335. package/dist/__tests__/views/form-editor.render.test.js +147 -0
  336. package/dist/__tests__/views/form-editor.render.test.js.map +1 -0
  337. package/dist/__tests__/views/form-entries.render.test.d.ts +2 -0
  338. package/dist/__tests__/views/form-entries.render.test.d.ts.map +1 -0
  339. package/dist/__tests__/views/form-entries.render.test.js +142 -0
  340. package/dist/__tests__/views/form-entries.render.test.js.map +1 -0
  341. package/dist/__tests__/views/form-submissions.render.test.d.ts +2 -0
  342. package/dist/__tests__/views/form-submissions.render.test.d.ts.map +1 -0
  343. package/dist/__tests__/views/form-submissions.render.test.js +132 -0
  344. package/dist/__tests__/views/form-submissions.render.test.js.map +1 -0
  345. package/dist/__tests__/views/forms-list.render.test.d.ts +2 -0
  346. package/dist/__tests__/views/forms-list.render.test.d.ts.map +1 -0
  347. package/dist/__tests__/views/forms-list.render.test.js +143 -0
  348. package/dist/__tests__/views/forms-list.render.test.js.map +1 -0
  349. package/dist/__tests__/views/general-settings.render.test.d.ts +2 -0
  350. package/dist/__tests__/views/general-settings.render.test.d.ts.map +1 -0
  351. package/dist/__tests__/views/general-settings.render.test.js +126 -0
  352. package/dist/__tests__/views/general-settings.render.test.js.map +1 -0
  353. package/dist/__tests__/views/login-branding.render.test.d.ts +2 -0
  354. package/dist/__tests__/views/login-branding.render.test.d.ts.map +1 -0
  355. package/dist/__tests__/views/login-branding.render.test.js +82 -0
  356. package/dist/__tests__/views/login-branding.render.test.js.map +1 -0
  357. package/dist/__tests__/views/login-mfa.render.test.d.ts +2 -0
  358. package/dist/__tests__/views/login-mfa.render.test.d.ts.map +1 -0
  359. package/dist/__tests__/views/login-mfa.render.test.js +79 -0
  360. package/dist/__tests__/views/login-mfa.render.test.js.map +1 -0
  361. package/dist/__tests__/views/login-root.render.test.d.ts +2 -0
  362. package/dist/__tests__/views/login-root.render.test.d.ts.map +1 -0
  363. package/dist/__tests__/views/login-root.render.test.js +79 -0
  364. package/dist/__tests__/views/login-root.render.test.js.map +1 -0
  365. package/dist/__tests__/views/media-seo-audit.render.test.d.ts +2 -0
  366. package/dist/__tests__/views/media-seo-audit.render.test.d.ts.map +1 -0
  367. package/dist/__tests__/views/media-seo-audit.render.test.js +128 -0
  368. package/dist/__tests__/views/media-seo-audit.render.test.js.map +1 -0
  369. package/dist/__tests__/views/onboarding-block.render.test.d.ts +2 -0
  370. package/dist/__tests__/views/onboarding-block.render.test.d.ts.map +1 -0
  371. package/dist/__tests__/views/onboarding-block.render.test.js +146 -0
  372. package/dist/__tests__/views/onboarding-block.render.test.js.map +1 -0
  373. package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts +2 -0
  374. package/dist/__tests__/views/page-builder-block-renderer.render.test.d.ts.map +1 -0
  375. package/dist/__tests__/views/page-builder-block-renderer.render.test.js +48 -0
  376. package/dist/__tests__/views/page-builder-block-renderer.render.test.js.map +1 -0
  377. package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts +2 -0
  378. package/dist/__tests__/views/page-builder-form-picker.render.test.d.ts.map +1 -0
  379. package/dist/__tests__/views/page-builder-form-picker.render.test.js +44 -0
  380. package/dist/__tests__/views/page-builder-form-picker.render.test.js.map +1 -0
  381. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts +2 -0
  382. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts.map +1 -0
  383. package/dist/__tests__/views/page-builder-sections-panel.render.test.js +121 -0
  384. package/dist/__tests__/views/page-builder-sections-panel.render.test.js.map +1 -0
  385. package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts +2 -0
  386. package/dist/__tests__/views/page-builder-template-seed.render.test.d.ts.map +1 -0
  387. package/dist/__tests__/views/page-builder-template-seed.render.test.js +48 -0
  388. package/dist/__tests__/views/page-builder-template-seed.render.test.js.map +1 -0
  389. package/dist/__tests__/views/page-section-editor.test.d.ts +2 -0
  390. package/dist/__tests__/views/page-section-editor.test.d.ts.map +1 -0
  391. package/dist/__tests__/views/page-section-editor.test.js +131 -0
  392. package/dist/__tests__/views/page-section-editor.test.js.map +1 -0
  393. package/dist/__tests__/views/page-templates.render.test.d.ts +2 -0
  394. package/dist/__tests__/views/page-templates.render.test.d.ts.map +1 -0
  395. package/dist/__tests__/views/page-templates.render.test.js +126 -0
  396. package/dist/__tests__/views/page-templates.render.test.js.map +1 -0
  397. package/dist/__tests__/views/pages-list-view.test.d.ts +2 -0
  398. package/dist/__tests__/views/pages-list-view.test.d.ts.map +1 -0
  399. package/dist/__tests__/views/pages-list-view.test.js +238 -0
  400. package/dist/__tests__/views/pages-list-view.test.js.map +1 -0
  401. package/dist/__tests__/views/portal-container.test.d.ts +2 -0
  402. package/dist/__tests__/views/portal-container.test.d.ts.map +1 -0
  403. package/dist/__tests__/views/portal-container.test.js +55 -0
  404. package/dist/__tests__/views/portal-container.test.js.map +1 -0
  405. package/dist/__tests__/views/post-fields-modal.render.test.d.ts +2 -0
  406. package/dist/__tests__/views/post-fields-modal.render.test.d.ts.map +1 -0
  407. package/dist/__tests__/views/post-fields-modal.render.test.js +123 -0
  408. package/dist/__tests__/views/post-fields-modal.render.test.js.map +1 -0
  409. package/dist/__tests__/views/post-section-editor.test.d.ts +2 -0
  410. package/dist/__tests__/views/post-section-editor.test.d.ts.map +1 -0
  411. package/dist/__tests__/views/post-section-editor.test.js +110 -0
  412. package/dist/__tests__/views/post-section-editor.test.js.map +1 -0
  413. package/dist/__tests__/views/post-type-editor.render.test.d.ts +2 -0
  414. package/dist/__tests__/views/post-type-editor.render.test.d.ts.map +1 -0
  415. package/dist/__tests__/views/post-type-editor.render.test.js +102 -0
  416. package/dist/__tests__/views/post-type-editor.render.test.js.map +1 -0
  417. package/dist/__tests__/views/posts-list-view.render.test.d.ts +2 -0
  418. package/dist/__tests__/views/posts-list-view.render.test.d.ts.map +1 -0
  419. package/dist/__tests__/views/posts-list-view.render.test.js +73 -0
  420. package/dist/__tests__/views/posts-list-view.render.test.js.map +1 -0
  421. package/dist/__tests__/views/posts-list-view.test.d.ts +2 -0
  422. package/dist/__tests__/views/posts-list-view.test.d.ts.map +1 -0
  423. package/dist/__tests__/views/posts-list-view.test.js +98 -0
  424. package/dist/__tests__/views/posts-list-view.test.js.map +1 -0
  425. package/dist/__tests__/views/redirects-pane.render.test.d.ts +2 -0
  426. package/dist/__tests__/views/redirects-pane.render.test.d.ts.map +1 -0
  427. package/dist/__tests__/views/redirects-pane.render.test.js +129 -0
  428. package/dist/__tests__/views/redirects-pane.render.test.js.map +1 -0
  429. package/dist/__tests__/views/script-tags.render.test.d.ts +2 -0
  430. package/dist/__tests__/views/script-tags.render.test.d.ts.map +1 -0
  431. package/dist/__tests__/views/script-tags.render.test.js +148 -0
  432. package/dist/__tests__/views/script-tags.render.test.js.map +1 -0
  433. package/dist/__tests__/views/section-inspector-media.test.d.ts +2 -0
  434. package/dist/__tests__/views/section-inspector-media.test.d.ts.map +1 -0
  435. package/dist/__tests__/views/section-inspector-media.test.js +21 -0
  436. package/dist/__tests__/views/section-inspector-media.test.js.map +1 -0
  437. package/dist/__tests__/views/section-inspector-repeater.render.test.d.ts +2 -0
  438. package/dist/__tests__/views/section-inspector-repeater.render.test.d.ts.map +1 -0
  439. package/dist/__tests__/views/section-inspector-repeater.render.test.js +68 -0
  440. package/dist/__tests__/views/section-inspector-repeater.render.test.js.map +1 -0
  441. package/dist/__tests__/views/security-settings.render.test.d.ts +2 -0
  442. package/dist/__tests__/views/security-settings.render.test.d.ts.map +1 -0
  443. package/dist/__tests__/views/security-settings.render.test.js +256 -0
  444. package/dist/__tests__/views/security-settings.render.test.js.map +1 -0
  445. package/dist/__tests__/views/seo-content-pane.render.test.d.ts +2 -0
  446. package/dist/__tests__/views/seo-content-pane.render.test.d.ts.map +1 -0
  447. package/dist/__tests__/views/seo-content-pane.render.test.js +128 -0
  448. package/dist/__tests__/views/seo-content-pane.render.test.js.map +1 -0
  449. package/dist/__tests__/views/seo-settings.render.test.d.ts +2 -0
  450. package/dist/__tests__/views/seo-settings.render.test.d.ts.map +1 -0
  451. package/dist/__tests__/views/seo-settings.render.test.js +173 -0
  452. package/dist/__tests__/views/seo-settings.render.test.js.map +1 -0
  453. package/dist/__tests__/views/settings-save-footer.render.test.d.ts +2 -0
  454. package/dist/__tests__/views/settings-save-footer.render.test.d.ts.map +1 -0
  455. package/dist/__tests__/views/settings-save-footer.render.test.js +60 -0
  456. package/dist/__tests__/views/settings-save-footer.render.test.js.map +1 -0
  457. package/dist/__tests__/views/updates-tab.render.test.d.ts +2 -0
  458. package/dist/__tests__/views/updates-tab.render.test.d.ts.map +1 -0
  459. package/dist/__tests__/views/updates-tab.render.test.js +130 -0
  460. package/dist/__tests__/views/updates-tab.render.test.js.map +1 -0
  461. package/dist/__tests__/views/use-seo-resource.test.d.ts +2 -0
  462. package/dist/__tests__/views/use-seo-resource.test.d.ts.map +1 -0
  463. package/dist/__tests__/views/use-seo-resource.test.js +56 -0
  464. package/dist/__tests__/views/use-seo-resource.test.js.map +1 -0
  465. package/dist/__tests__/views/use-site-preview.render.test.d.ts +2 -0
  466. package/dist/__tests__/views/use-site-preview.render.test.d.ts.map +1 -0
  467. package/dist/__tests__/views/use-site-preview.render.test.js +120 -0
  468. package/dist/__tests__/views/use-site-preview.render.test.js.map +1 -0
  469. package/dist/__tests__/views/user-detail-drawer.render.test.d.ts +2 -0
  470. package/dist/__tests__/views/user-detail-drawer.render.test.d.ts.map +1 -0
  471. package/dist/__tests__/views/user-detail-drawer.render.test.js +144 -0
  472. package/dist/__tests__/views/user-detail-drawer.render.test.js.map +1 -0
  473. package/dist/__tests__/views/users-selected-deeplink.render.test.d.ts +2 -0
  474. package/dist/__tests__/views/users-selected-deeplink.render.test.d.ts.map +1 -0
  475. package/dist/__tests__/views/users-selected-deeplink.render.test.js +91 -0
  476. package/dist/__tests__/views/users-selected-deeplink.render.test.js.map +1 -0
  477. package/dist/__tests__/views/users.render.test.d.ts +2 -0
  478. package/dist/__tests__/views/users.render.test.d.ts.map +1 -0
  479. package/dist/__tests__/views/users.render.test.js +146 -0
  480. package/dist/__tests__/views/users.render.test.js.map +1 -0
  481. package/dist/assets/prenta-logo.d.ts +27 -0
  482. package/dist/assets/prenta-logo.d.ts.map +1 -0
  483. package/dist/assets/prenta-logo.js +11 -0
  484. package/dist/assets/prenta-logo.js.map +1 -0
  485. package/dist/components/AICoauthorBubbleMenu.d.ts +18 -0
  486. package/dist/components/AICoauthorBubbleMenu.d.ts.map +1 -0
  487. package/dist/components/AICoauthorBubbleMenu.js +117 -0
  488. package/dist/components/AICoauthorBubbleMenu.js.map +1 -0
  489. package/dist/components/BrandVoiceAlignmentBadge.d.ts +6 -0
  490. package/dist/components/BrandVoiceAlignmentBadge.d.ts.map +1 -0
  491. package/dist/components/BrandVoiceAlignmentBadge.js +11 -0
  492. package/dist/components/BrandVoiceAlignmentBadge.js.map +1 -0
  493. package/dist/components/Breadcrumbs.d.ts +7 -0
  494. package/dist/components/Breadcrumbs.d.ts.map +1 -0
  495. package/dist/components/Breadcrumbs.js +65 -0
  496. package/dist/components/Breadcrumbs.js.map +1 -0
  497. package/dist/components/CoauthorResultPopover.d.ts +32 -0
  498. package/dist/components/CoauthorResultPopover.d.ts.map +1 -0
  499. package/dist/components/CoauthorResultPopover.js +71 -0
  500. package/dist/components/CoauthorResultPopover.js.map +1 -0
  501. package/dist/components/CommandPalette.d.ts +7 -0
  502. package/dist/components/CommandPalette.d.ts.map +1 -0
  503. package/dist/components/CommandPalette.js +258 -0
  504. package/dist/components/CommandPalette.js.map +1 -0
  505. package/dist/components/CommentMark.d.ts +54 -0
  506. package/dist/components/CommentMark.d.ts.map +1 -0
  507. package/dist/components/CommentMark.js +104 -0
  508. package/dist/components/CommentMark.js.map +1 -0
  509. package/dist/components/CommentSidePanel.d.ts +94 -0
  510. package/dist/components/CommentSidePanel.d.ts.map +1 -0
  511. package/dist/components/CommentSidePanel.js +166 -0
  512. package/dist/components/CommentSidePanel.js.map +1 -0
  513. package/dist/components/ContentOverviewChart.d.ts +8 -0
  514. package/dist/components/ContentOverviewChart.d.ts.map +1 -0
  515. package/dist/components/ContentOverviewChart.js +20 -0
  516. package/dist/components/ContentOverviewChart.js.map +1 -0
  517. package/dist/components/EditorSeoAside.d.ts +23 -0
  518. package/dist/components/EditorSeoAside.d.ts.map +1 -0
  519. package/dist/components/EditorSeoAside.js +21 -0
  520. package/dist/components/EditorSeoAside.js.map +1 -0
  521. package/dist/components/EnabledSwitch.d.ts +10 -0
  522. package/dist/components/EnabledSwitch.d.ts.map +1 -0
  523. package/dist/components/EnabledSwitch.js +8 -0
  524. package/dist/components/EnabledSwitch.js.map +1 -0
  525. package/dist/components/ErrorBoundary.d.ts +17 -0
  526. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  527. package/dist/components/ErrorBoundary.js +26 -0
  528. package/dist/components/ErrorBoundary.js.map +1 -0
  529. package/dist/components/FocalPointPicker.d.ts +9 -0
  530. package/dist/components/FocalPointPicker.d.ts.map +1 -0
  531. package/dist/components/FocalPointPicker.js +21 -0
  532. package/dist/components/FocalPointPicker.js.map +1 -0
  533. package/dist/components/FolderTree.d.ts +28 -0
  534. package/dist/components/FolderTree.d.ts.map +1 -0
  535. package/dist/components/FolderTree.js +206 -0
  536. package/dist/components/FolderTree.js.map +1 -0
  537. package/dist/components/LivePreview.d.ts +10 -0
  538. package/dist/components/LivePreview.d.ts.map +1 -0
  539. package/dist/components/LivePreview.js +131 -0
  540. package/dist/components/LivePreview.js.map +1 -0
  541. package/dist/components/LocaleProvider.d.ts +28 -0
  542. package/dist/components/LocaleProvider.d.ts.map +1 -0
  543. package/dist/components/LocaleProvider.js +29 -0
  544. package/dist/components/LocaleProvider.js.map +1 -0
  545. package/dist/components/LocaleSwitcher.d.ts +2 -0
  546. package/dist/components/LocaleSwitcher.d.ts.map +1 -0
  547. package/dist/components/LocaleSwitcher.js +14 -0
  548. package/dist/components/LocaleSwitcher.js.map +1 -0
  549. package/dist/components/LogoPlaceholder.d.ts +17 -0
  550. package/dist/components/LogoPlaceholder.d.ts.map +1 -0
  551. package/dist/components/LogoPlaceholder.js +13 -0
  552. package/dist/components/LogoPlaceholder.js.map +1 -0
  553. package/dist/components/MediaPickerModal.d.ts +30 -0
  554. package/dist/components/MediaPickerModal.d.ts.map +1 -0
  555. package/dist/components/MediaPickerModal.js +78 -0
  556. package/dist/components/MediaPickerModal.js.map +1 -0
  557. package/dist/components/MentionableTextarea.d.ts +68 -0
  558. package/dist/components/MentionableTextarea.d.ts.map +1 -0
  559. package/dist/components/MentionableTextarea.js +181 -0
  560. package/dist/components/MentionableTextarea.js.map +1 -0
  561. package/dist/components/NotificationBell.d.ts +66 -0
  562. package/dist/components/NotificationBell.d.ts.map +1 -0
  563. package/dist/components/NotificationBell.js +163 -0
  564. package/dist/components/NotificationBell.js.map +1 -0
  565. package/dist/components/OfflineStatus.d.ts +39 -0
  566. package/dist/components/OfflineStatus.d.ts.map +1 -0
  567. package/dist/components/OfflineStatus.js +47 -0
  568. package/dist/components/OfflineStatus.js.map +1 -0
  569. package/dist/components/PlanUpgradeCallout.d.ts +7 -0
  570. package/dist/components/PlanUpgradeCallout.d.ts.map +1 -0
  571. package/dist/components/PlanUpgradeCallout.js +8 -0
  572. package/dist/components/PlanUpgradeCallout.js.map +1 -0
  573. package/dist/components/PresenceChips.d.ts +31 -0
  574. package/dist/components/PresenceChips.d.ts.map +1 -0
  575. package/dist/components/PresenceChips.js +62 -0
  576. package/dist/components/PresenceChips.js.map +1 -0
  577. package/dist/components/PresenceIndicator.d.ts +7 -0
  578. package/dist/components/PresenceIndicator.d.ts.map +1 -0
  579. package/dist/components/PresenceIndicator.js +40 -0
  580. package/dist/components/PresenceIndicator.js.map +1 -0
  581. package/dist/components/PublishSyncCard.d.ts +27 -0
  582. package/dist/components/PublishSyncCard.d.ts.map +1 -0
  583. package/dist/components/PublishSyncCard.js +67 -0
  584. package/dist/components/PublishSyncCard.js.map +1 -0
  585. package/dist/components/SEOConfigPanel.d.ts +2 -0
  586. package/dist/components/SEOConfigPanel.d.ts.map +1 -0
  587. package/dist/components/SEOConfigPanel.js +174 -0
  588. package/dist/components/SEOConfigPanel.js.map +1 -0
  589. package/dist/components/SEOPanel.d.ts +36 -0
  590. package/dist/components/SEOPanel.d.ts.map +1 -0
  591. package/dist/components/SEOPanel.js +375 -0
  592. package/dist/components/SEOPanel.js.map +1 -0
  593. package/dist/components/SEOPerformance.d.ts +5 -0
  594. package/dist/components/SEOPerformance.d.ts.map +1 -0
  595. package/dist/components/SEOPerformance.js +24 -0
  596. package/dist/components/SEOPerformance.js.map +1 -0
  597. package/dist/components/SchedulePublishDialog.d.ts +18 -0
  598. package/dist/components/SchedulePublishDialog.d.ts.map +1 -0
  599. package/dist/components/SchedulePublishDialog.js +108 -0
  600. package/dist/components/SchedulePublishDialog.js.map +1 -0
  601. package/dist/components/SharePreviewLinkDialog.d.ts +19 -0
  602. package/dist/components/SharePreviewLinkDialog.d.ts.map +1 -0
  603. package/dist/components/SharePreviewLinkDialog.js +78 -0
  604. package/dist/components/SharePreviewLinkDialog.js.map +1 -0
  605. package/dist/components/TagInput.d.ts +16 -0
  606. package/dist/components/TagInput.d.ts.map +1 -0
  607. package/dist/components/TagInput.js +105 -0
  608. package/dist/components/TagInput.js.map +1 -0
  609. package/dist/components/ThemeProvider.d.ts +59 -0
  610. package/dist/components/ThemeProvider.d.ts.map +1 -0
  611. package/dist/components/ThemeProvider.js +225 -0
  612. package/dist/components/ThemeProvider.js.map +1 -0
  613. package/dist/components/TipTapEditor.d.ts +69 -0
  614. package/dist/components/TipTapEditor.d.ts.map +1 -0
  615. package/dist/components/TipTapEditor.js +376 -0
  616. package/dist/components/TipTapEditor.js.map +1 -0
  617. package/dist/components/VersionHistory.d.ts +9 -0
  618. package/dist/components/VersionHistory.d.ts.map +1 -0
  619. package/dist/components/VersionHistory.js +70 -0
  620. package/dist/components/VersionHistory.js.map +1 -0
  621. package/dist/components/collections/EntryDetailPane.d.ts +10 -0
  622. package/dist/components/collections/EntryDetailPane.d.ts.map +1 -0
  623. package/dist/components/collections/EntryDetailPane.js +92 -0
  624. package/dist/components/collections/EntryDetailPane.js.map +1 -0
  625. package/dist/components/forms/Drawer.d.ts +13 -0
  626. package/dist/components/forms/Drawer.d.ts.map +1 -0
  627. package/dist/components/forms/Drawer.js +14 -0
  628. package/dist/components/forms/Drawer.js.map +1 -0
  629. package/dist/components/forms/EmbedPanel.d.ts +7 -0
  630. package/dist/components/forms/EmbedPanel.d.ts.map +1 -0
  631. package/dist/components/forms/EmbedPanel.js +88 -0
  632. package/dist/components/forms/EmbedPanel.js.map +1 -0
  633. package/dist/components/forms/EntriesTable.d.ts +30 -0
  634. package/dist/components/forms/EntriesTable.d.ts.map +1 -0
  635. package/dist/components/forms/EntriesTable.js +29 -0
  636. package/dist/components/forms/EntriesTable.js.map +1 -0
  637. package/dist/components/forms/ExportMenu.d.ts +8 -0
  638. package/dist/components/forms/ExportMenu.d.ts.map +1 -0
  639. package/dist/components/forms/ExportMenu.js +32 -0
  640. package/dist/components/forms/ExportMenu.js.map +1 -0
  641. package/dist/components/forms/FieldsPanel.d.ts +8 -0
  642. package/dist/components/forms/FieldsPanel.d.ts.map +1 -0
  643. package/dist/components/forms/FieldsPanel.js +123 -0
  644. package/dist/components/forms/FieldsPanel.js.map +1 -0
  645. package/dist/components/forms/FormEntryDetailPane.d.ts +23 -0
  646. package/dist/components/forms/FormEntryDetailPane.d.ts.map +1 -0
  647. package/dist/components/forms/FormEntryDetailPane.js +203 -0
  648. package/dist/components/forms/FormEntryDetailPane.js.map +1 -0
  649. package/dist/components/forms/FormSchemaPane.d.ts +8 -0
  650. package/dist/components/forms/FormSchemaPane.d.ts.map +1 -0
  651. package/dist/components/forms/FormSchemaPane.js +95 -0
  652. package/dist/components/forms/FormSchemaPane.js.map +1 -0
  653. package/dist/components/forms/NotificationsPanel.d.ts +9 -0
  654. package/dist/components/forms/NotificationsPanel.d.ts.map +1 -0
  655. package/dist/components/forms/NotificationsPanel.js +133 -0
  656. package/dist/components/forms/NotificationsPanel.js.map +1 -0
  657. package/dist/components/forms/ShortcodeGlossary.d.ts +5 -0
  658. package/dist/components/forms/ShortcodeGlossary.d.ts.map +1 -0
  659. package/dist/components/forms/ShortcodeGlossary.js +62 -0
  660. package/dist/components/forms/ShortcodeGlossary.js.map +1 -0
  661. package/dist/components/forms/WebhooksPanel.d.ts +5 -0
  662. package/dist/components/forms/WebhooksPanel.d.ts.map +1 -0
  663. package/dist/components/forms/WebhooksPanel.js +129 -0
  664. package/dist/components/forms/WebhooksPanel.js.map +1 -0
  665. package/dist/components/forms/primitives.d.ts +57 -0
  666. package/dist/components/forms/primitives.d.ts.map +1 -0
  667. package/dist/components/forms/primitives.js +128 -0
  668. package/dist/components/forms/primitives.js.map +1 -0
  669. package/dist/components/pages/tag-badges.d.ts +33 -0
  670. package/dist/components/pages/tag-badges.d.ts.map +1 -0
  671. package/dist/components/pages/tag-badges.js +57 -0
  672. package/dist/components/pages/tag-badges.js.map +1 -0
  673. package/dist/components/posts/badges.d.ts +28 -0
  674. package/dist/components/posts/badges.d.ts.map +1 -0
  675. package/dist/components/posts/badges.js +105 -0
  676. package/dist/components/posts/badges.js.map +1 -0
  677. package/dist/components/posts/icons.d.ts +12 -0
  678. package/dist/components/posts/icons.d.ts.map +1 -0
  679. package/dist/components/posts/icons.js +26 -0
  680. package/dist/components/posts/icons.js.map +1 -0
  681. package/dist/components/script-tags/ScriptTagEditorPane.d.ts +36 -0
  682. package/dist/components/script-tags/ScriptTagEditorPane.d.ts.map +1 -0
  683. package/dist/components/script-tags/ScriptTagEditorPane.js +179 -0
  684. package/dist/components/script-tags/ScriptTagEditorPane.js.map +1 -0
  685. package/dist/components/seo/Drawer.d.ts +11 -0
  686. package/dist/components/seo/Drawer.d.ts.map +1 -0
  687. package/dist/components/seo/Drawer.js +18 -0
  688. package/dist/components/seo/Drawer.js.map +1 -0
  689. package/dist/components/seo/EditorSeoScoreBadge.d.ts +7 -0
  690. package/dist/components/seo/EditorSeoScoreBadge.d.ts.map +1 -0
  691. package/dist/components/seo/EditorSeoScoreBadge.js +9 -0
  692. package/dist/components/seo/EditorSeoScoreBadge.js.map +1 -0
  693. package/dist/components/seo/RedirectEditorPane.d.ts +12 -0
  694. package/dist/components/seo/RedirectEditorPane.d.ts.map +1 -0
  695. package/dist/components/seo/RedirectEditorPane.js +89 -0
  696. package/dist/components/seo/RedirectEditorPane.js.map +1 -0
  697. package/dist/components/seo/SeoAccordion.d.ts +16 -0
  698. package/dist/components/seo/SeoAccordion.d.ts.map +1 -0
  699. package/dist/components/seo/SeoAccordion.js +21 -0
  700. package/dist/components/seo/SeoAccordion.js.map +1 -0
  701. package/dist/components/seo/SeoAnalysisList.d.ts +7 -0
  702. package/dist/components/seo/SeoAnalysisList.d.ts.map +1 -0
  703. package/dist/components/seo/SeoAnalysisList.js +32 -0
  704. package/dist/components/seo/SeoAnalysisList.js.map +1 -0
  705. package/dist/components/seo/SeoCharCount.d.ts +15 -0
  706. package/dist/components/seo/SeoCharCount.d.ts.map +1 -0
  707. package/dist/components/seo/SeoCharCount.js +25 -0
  708. package/dist/components/seo/SeoCharCount.js.map +1 -0
  709. package/dist/components/seo/SeoCopilotDrawer.d.ts +10 -0
  710. package/dist/components/seo/SeoCopilotDrawer.d.ts.map +1 -0
  711. package/dist/components/seo/SeoCopilotDrawer.js +34 -0
  712. package/dist/components/seo/SeoCopilotDrawer.js.map +1 -0
  713. package/dist/components/seo/SeoEditorPane.d.ts +20 -0
  714. package/dist/components/seo/SeoEditorPane.d.ts.map +1 -0
  715. package/dist/components/seo/SeoEditorPane.js +298 -0
  716. package/dist/components/seo/SeoEditorPane.js.map +1 -0
  717. package/dist/components/seo/SeoInsightsMetrics.d.ts +6 -0
  718. package/dist/components/seo/SeoInsightsMetrics.d.ts.map +1 -0
  719. package/dist/components/seo/SeoInsightsMetrics.js +16 -0
  720. package/dist/components/seo/SeoInsightsMetrics.js.map +1 -0
  721. package/dist/components/seo/SeoIssueFixDrawer.d.ts +8 -0
  722. package/dist/components/seo/SeoIssueFixDrawer.d.ts.map +1 -0
  723. package/dist/components/seo/SeoIssueFixDrawer.js +113 -0
  724. package/dist/components/seo/SeoIssueFixDrawer.js.map +1 -0
  725. package/dist/components/seo/SeoIssueFixPanel.d.ts +16 -0
  726. package/dist/components/seo/SeoIssueFixPanel.d.ts.map +1 -0
  727. package/dist/components/seo/SeoIssueFixPanel.js +223 -0
  728. package/dist/components/seo/SeoIssueFixPanel.js.map +1 -0
  729. package/dist/components/seo/SeoLinkingSection.d.ts +9 -0
  730. package/dist/components/seo/SeoLinkingSection.d.ts.map +1 -0
  731. package/dist/components/seo/SeoLinkingSection.js +44 -0
  732. package/dist/components/seo/SeoLinkingSection.js.map +1 -0
  733. package/dist/components/seo/primitives.d.ts +53 -0
  734. package/dist/components/seo/primitives.d.ts.map +1 -0
  735. package/dist/components/seo/primitives.js +97 -0
  736. package/dist/components/seo/primitives.js.map +1 -0
  737. package/dist/components/ui/AuthorAvatar.d.ts +11 -0
  738. package/dist/components/ui/AuthorAvatar.d.ts.map +1 -0
  739. package/dist/components/ui/AuthorAvatar.js +47 -0
  740. package/dist/components/ui/AuthorAvatar.js.map +1 -0
  741. package/dist/components/ui/Avatar.d.ts +9 -0
  742. package/dist/components/ui/Avatar.d.ts.map +1 -0
  743. package/dist/components/ui/Avatar.js +21 -0
  744. package/dist/components/ui/Avatar.js.map +1 -0
  745. package/dist/components/ui/Badge.d.ts +35 -0
  746. package/dist/components/ui/Badge.d.ts.map +1 -0
  747. package/dist/components/ui/Badge.js +51 -0
  748. package/dist/components/ui/Badge.js.map +1 -0
  749. package/dist/components/ui/Button.d.ts +23 -0
  750. package/dist/components/ui/Button.d.ts.map +1 -0
  751. package/dist/components/ui/Button.js +38 -0
  752. package/dist/components/ui/Button.js.map +1 -0
  753. package/dist/components/ui/Card.d.ts +27 -0
  754. package/dist/components/ui/Card.d.ts.map +1 -0
  755. package/dist/components/ui/Card.js +47 -0
  756. package/dist/components/ui/Card.js.map +1 -0
  757. package/dist/components/ui/CommandPalette.d.ts +14 -0
  758. package/dist/components/ui/CommandPalette.d.ts.map +1 -0
  759. package/dist/components/ui/CommandPalette.js +58 -0
  760. package/dist/components/ui/CommandPalette.js.map +1 -0
  761. package/dist/components/ui/ConfirmDialog.d.ts +12 -0
  762. package/dist/components/ui/ConfirmDialog.d.ts.map +1 -0
  763. package/dist/components/ui/ConfirmDialog.js +11 -0
  764. package/dist/components/ui/ConfirmDialog.js.map +1 -0
  765. package/dist/components/ui/DataTable.d.ts +30 -0
  766. package/dist/components/ui/DataTable.d.ts.map +1 -0
  767. package/dist/components/ui/DataTable.js +38 -0
  768. package/dist/components/ui/DataTable.js.map +1 -0
  769. package/dist/components/ui/EmptyState.d.ts +10 -0
  770. package/dist/components/ui/EmptyState.d.ts.map +1 -0
  771. package/dist/components/ui/EmptyState.js +6 -0
  772. package/dist/components/ui/EmptyState.js.map +1 -0
  773. package/dist/components/ui/FilterPill.d.ts +14 -0
  774. package/dist/components/ui/FilterPill.d.ts.map +1 -0
  775. package/dist/components/ui/FilterPill.js +8 -0
  776. package/dist/components/ui/FilterPill.js.map +1 -0
  777. package/dist/components/ui/Input.d.ts +16 -0
  778. package/dist/components/ui/Input.d.ts.map +1 -0
  779. package/dist/components/ui/Input.js +24 -0
  780. package/dist/components/ui/Input.js.map +1 -0
  781. package/dist/components/ui/InspectorPane.d.ts +51 -0
  782. package/dist/components/ui/InspectorPane.d.ts.map +1 -0
  783. package/dist/components/ui/InspectorPane.js +47 -0
  784. package/dist/components/ui/InspectorPane.js.map +1 -0
  785. package/dist/components/ui/Modal.d.ts +48 -0
  786. package/dist/components/ui/Modal.d.ts.map +1 -0
  787. package/dist/components/ui/Modal.js +53 -0
  788. package/dist/components/ui/Modal.js.map +1 -0
  789. package/dist/components/ui/Pagination.d.ts +9 -0
  790. package/dist/components/ui/Pagination.d.ts.map +1 -0
  791. package/dist/components/ui/Pagination.js +26 -0
  792. package/dist/components/ui/Pagination.js.map +1 -0
  793. package/dist/components/ui/PanelSection.d.ts +16 -0
  794. package/dist/components/ui/PanelSection.d.ts.map +1 -0
  795. package/dist/components/ui/PanelSection.js +15 -0
  796. package/dist/components/ui/PanelSection.js.map +1 -0
  797. package/dist/components/ui/ReauthDialog.d.ts +17 -0
  798. package/dist/components/ui/ReauthDialog.d.ts.map +1 -0
  799. package/dist/components/ui/ReauthDialog.js +34 -0
  800. package/dist/components/ui/ReauthDialog.js.map +1 -0
  801. package/dist/components/ui/ResizableAside.d.ts +38 -0
  802. package/dist/components/ui/ResizableAside.d.ts.map +1 -0
  803. package/dist/components/ui/ResizableAside.js +209 -0
  804. package/dist/components/ui/ResizableAside.js.map +1 -0
  805. package/dist/components/ui/RowActions.d.ts +19 -0
  806. package/dist/components/ui/RowActions.d.ts.map +1 -0
  807. package/dist/components/ui/RowActions.js +16 -0
  808. package/dist/components/ui/RowActions.js.map +1 -0
  809. package/dist/components/ui/SearchInput.d.ts +7 -0
  810. package/dist/components/ui/SearchInput.d.ts.map +1 -0
  811. package/dist/components/ui/SearchInput.js +7 -0
  812. package/dist/components/ui/SearchInput.js.map +1 -0
  813. package/dist/components/ui/Select.d.ts +16 -0
  814. package/dist/components/ui/Select.d.ts.map +1 -0
  815. package/dist/components/ui/Select.js +24 -0
  816. package/dist/components/ui/Select.js.map +1 -0
  817. package/dist/components/ui/Skeleton.d.ts +9 -0
  818. package/dist/components/ui/Skeleton.d.ts.map +1 -0
  819. package/dist/components/ui/Skeleton.js +11 -0
  820. package/dist/components/ui/Skeleton.js.map +1 -0
  821. package/dist/components/ui/StatPill.d.ts +18 -0
  822. package/dist/components/ui/StatPill.d.ts.map +1 -0
  823. package/dist/components/ui/StatPill.js +5 -0
  824. package/dist/components/ui/StatPill.js.map +1 -0
  825. package/dist/components/ui/StatusBadge.d.ts +25 -0
  826. package/dist/components/ui/StatusBadge.d.ts.map +1 -0
  827. package/dist/components/ui/StatusBadge.js +41 -0
  828. package/dist/components/ui/StatusBadge.js.map +1 -0
  829. package/dist/components/ui/Toast.d.ts +18 -0
  830. package/dist/components/ui/Toast.d.ts.map +1 -0
  831. package/dist/components/ui/Toast.js +29 -0
  832. package/dist/components/ui/Toast.js.map +1 -0
  833. package/dist/components/ui/Toggle.d.ts +31 -0
  834. package/dist/components/ui/Toggle.d.ts.map +1 -0
  835. package/dist/components/ui/Toggle.js +42 -0
  836. package/dist/components/ui/Toggle.js.map +1 -0
  837. package/dist/components/ui/form-control.d.ts +11 -0
  838. package/dist/components/ui/form-control.d.ts.map +1 -0
  839. package/dist/components/ui/form-control.js +11 -0
  840. package/dist/components/ui/form-control.js.map +1 -0
  841. package/dist/components/ui/index.d.ts +46 -0
  842. package/dist/components/ui/index.d.ts.map +1 -0
  843. package/dist/components/ui/index.js +24 -0
  844. package/dist/components/ui/index.js.map +1 -0
  845. package/dist/fields/ArrayField.d.ts +9 -0
  846. package/dist/fields/ArrayField.d.ts.map +1 -0
  847. package/dist/fields/ArrayField.js +21 -0
  848. package/dist/fields/ArrayField.js.map +1 -0
  849. package/dist/fields/BlockBuilderField.d.ts +16 -0
  850. package/dist/fields/BlockBuilderField.d.ts.map +1 -0
  851. package/dist/fields/BlockBuilderField.js +112 -0
  852. package/dist/fields/BlockBuilderField.js.map +1 -0
  853. package/dist/fields/ComponentBlockField.d.ts +25 -0
  854. package/dist/fields/ComponentBlockField.d.ts.map +1 -0
  855. package/dist/fields/ComponentBlockField.js +74 -0
  856. package/dist/fields/ComponentBlockField.js.map +1 -0
  857. package/dist/fields/DateField.d.ts +9 -0
  858. package/dist/fields/DateField.d.ts.map +1 -0
  859. package/dist/fields/DateField.js +6 -0
  860. package/dist/fields/DateField.js.map +1 -0
  861. package/dist/fields/FieldRenderer.d.ts +25 -0
  862. package/dist/fields/FieldRenderer.d.ts.map +1 -0
  863. package/dist/fields/FieldRenderer.js +40 -0
  864. package/dist/fields/FieldRenderer.js.map +1 -0
  865. package/dist/fields/GroupField.d.ts +8 -0
  866. package/dist/fields/GroupField.d.ts.map +1 -0
  867. package/dist/fields/GroupField.js +8 -0
  868. package/dist/fields/GroupField.js.map +1 -0
  869. package/dist/fields/MediaField.d.ts +13 -0
  870. package/dist/fields/MediaField.d.ts.map +1 -0
  871. package/dist/fields/MediaField.js +6 -0
  872. package/dist/fields/MediaField.js.map +1 -0
  873. package/dist/fields/NavBuilderField.d.ts +15 -0
  874. package/dist/fields/NavBuilderField.d.ts.map +1 -0
  875. package/dist/fields/NavBuilderField.js +80 -0
  876. package/dist/fields/NavBuilderField.js.map +1 -0
  877. package/dist/fields/NumberField.d.ts +12 -0
  878. package/dist/fields/NumberField.d.ts.map +1 -0
  879. package/dist/fields/NumberField.js +6 -0
  880. package/dist/fields/NumberField.js.map +1 -0
  881. package/dist/fields/PropInput.d.ts +14 -0
  882. package/dist/fields/PropInput.d.ts.map +1 -0
  883. package/dist/fields/PropInput.js +164 -0
  884. package/dist/fields/PropInput.js.map +1 -0
  885. package/dist/fields/RelationshipField.d.ts +13 -0
  886. package/dist/fields/RelationshipField.d.ts.map +1 -0
  887. package/dist/fields/RelationshipField.js +123 -0
  888. package/dist/fields/RelationshipField.js.map +1 -0
  889. package/dist/fields/RichTextField.d.ts +11 -0
  890. package/dist/fields/RichTextField.d.ts.map +1 -0
  891. package/dist/fields/RichTextField.js +7 -0
  892. package/dist/fields/RichTextField.js.map +1 -0
  893. package/dist/fields/SelectField.d.ts +11 -0
  894. package/dist/fields/SelectField.d.ts.map +1 -0
  895. package/dist/fields/SelectField.js +33 -0
  896. package/dist/fields/SelectField.js.map +1 -0
  897. package/dist/fields/SlugField.d.ts +10 -0
  898. package/dist/fields/SlugField.d.ts.map +1 -0
  899. package/dist/fields/SlugField.js +19 -0
  900. package/dist/fields/SlugField.js.map +1 -0
  901. package/dist/fields/TextField.d.ts +11 -0
  902. package/dist/fields/TextField.d.ts.map +1 -0
  903. package/dist/fields/TextField.js +8 -0
  904. package/dist/fields/TextField.js.map +1 -0
  905. package/dist/fields/ToggleField.d.ts +8 -0
  906. package/dist/fields/ToggleField.d.ts.map +1 -0
  907. package/dist/fields/ToggleField.js +7 -0
  908. package/dist/fields/ToggleField.js.map +1 -0
  909. package/dist/fields/block-types.d.ts +18 -0
  910. package/dist/fields/block-types.d.ts.map +1 -0
  911. package/dist/fields/block-types.js +108 -0
  912. package/dist/fields/block-types.js.map +1 -0
  913. package/dist/fields/component-block-helpers.d.ts +96 -0
  914. package/dist/fields/component-block-helpers.d.ts.map +1 -0
  915. package/dist/fields/component-block-helpers.js +323 -0
  916. package/dist/fields/component-block-helpers.js.map +1 -0
  917. package/dist/fields/index.d.ts +22 -0
  918. package/dist/fields/index.d.ts.map +1 -0
  919. package/dist/fields/index.js +18 -0
  920. package/dist/fields/index.js.map +1 -0
  921. package/dist/hooks/useAppearanceBootstrap.d.ts +8 -0
  922. package/dist/hooks/useAppearanceBootstrap.d.ts.map +1 -0
  923. package/dist/hooks/useAppearanceBootstrap.js +36 -0
  924. package/dist/hooks/useAppearanceBootstrap.js.map +1 -0
  925. package/dist/hooks/useBuilderState.d.ts +49 -0
  926. package/dist/hooks/useBuilderState.d.ts.map +1 -0
  927. package/dist/hooks/useBuilderState.js +238 -0
  928. package/dist/hooks/useBuilderState.js.map +1 -0
  929. package/dist/hooks/useContentLock.d.ts +12 -0
  930. package/dist/hooks/useContentLock.d.ts.map +1 -0
  931. package/dist/hooks/useContentLock.js +38 -0
  932. package/dist/hooks/useContentLock.js.map +1 -0
  933. package/dist/hooks/useDebounce.d.ts +2 -0
  934. package/dist/hooks/useDebounce.d.ts.map +1 -0
  935. package/dist/hooks/useDebounce.js +11 -0
  936. package/dist/hooks/useDebounce.js.map +1 -0
  937. package/dist/hooks/useIdleLogout.d.ts +33 -0
  938. package/dist/hooks/useIdleLogout.d.ts.map +1 -0
  939. package/dist/hooks/useIdleLogout.js +99 -0
  940. package/dist/hooks/useIdleLogout.js.map +1 -0
  941. package/dist/hooks/useKeyboardShortcuts.d.ts +6 -0
  942. package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  943. package/dist/hooks/useKeyboardShortcuts.js +26 -0
  944. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  945. package/dist/hooks/usePublicSiteUrl.d.ts +23 -0
  946. package/dist/hooks/usePublicSiteUrl.d.ts.map +1 -0
  947. package/dist/hooks/usePublicSiteUrl.js +58 -0
  948. package/dist/hooks/usePublicSiteUrl.js.map +1 -0
  949. package/dist/index.d.ts +84 -0
  950. package/dist/index.d.ts.map +1 -0
  951. package/dist/index.js +58 -0
  952. package/dist/index.js.map +1 -0
  953. package/dist/layout/Header.d.ts +22 -0
  954. package/dist/layout/Header.d.ts.map +1 -0
  955. package/dist/layout/Header.js +29 -0
  956. package/dist/layout/Header.js.map +1 -0
  957. package/dist/layout/Layout.d.ts +25 -0
  958. package/dist/layout/Layout.d.ts.map +1 -0
  959. package/dist/layout/Layout.js +77 -0
  960. package/dist/layout/Layout.js.map +1 -0
  961. package/dist/layout/Sidebar.d.ts +37 -0
  962. package/dist/layout/Sidebar.d.ts.map +1 -0
  963. package/dist/layout/Sidebar.js +493 -0
  964. package/dist/layout/Sidebar.js.map +1 -0
  965. package/dist/layout/primitives/AdminShell.d.ts +43 -0
  966. package/dist/layout/primitives/AdminShell.d.ts.map +1 -0
  967. package/dist/layout/primitives/AdminShell.js +51 -0
  968. package/dist/layout/primitives/AdminShell.js.map +1 -0
  969. package/dist/layout/primitives/Box.d.ts +19 -0
  970. package/dist/layout/primitives/Box.d.ts.map +1 -0
  971. package/dist/layout/primitives/Box.js +12 -0
  972. package/dist/layout/primitives/Box.js.map +1 -0
  973. package/dist/layout/primitives/Cluster.d.ts +27 -0
  974. package/dist/layout/primitives/Cluster.d.ts.map +1 -0
  975. package/dist/layout/primitives/Cluster.js +37 -0
  976. package/dist/layout/primitives/Cluster.js.map +1 -0
  977. package/dist/layout/primitives/Grid.d.ts +45 -0
  978. package/dist/layout/primitives/Grid.d.ts.map +1 -0
  979. package/dist/layout/primitives/Grid.js +59 -0
  980. package/dist/layout/primitives/Grid.js.map +1 -0
  981. package/dist/layout/primitives/PageContainer.d.ts +36 -0
  982. package/dist/layout/primitives/PageContainer.d.ts.map +1 -0
  983. package/dist/layout/primitives/PageContainer.js +41 -0
  984. package/dist/layout/primitives/PageContainer.js.map +1 -0
  985. package/dist/layout/primitives/Split.d.ts +34 -0
  986. package/dist/layout/primitives/Split.d.ts.map +1 -0
  987. package/dist/layout/primitives/Split.js +27 -0
  988. package/dist/layout/primitives/Split.js.map +1 -0
  989. package/dist/layout/primitives/Stack.d.ts +23 -0
  990. package/dist/layout/primitives/Stack.d.ts.map +1 -0
  991. package/dist/layout/primitives/Stack.js +34 -0
  992. package/dist/layout/primitives/Stack.js.map +1 -0
  993. package/dist/layout/primitives/index.d.ts +30 -0
  994. package/dist/layout/primitives/index.d.ts.map +1 -0
  995. package/dist/layout/primitives/index.js +22 -0
  996. package/dist/layout/primitives/index.js.map +1 -0
  997. package/dist/layout/primitives/tokens.d.ts +54 -0
  998. package/dist/layout/primitives/tokens.d.ts.map +1 -0
  999. package/dist/layout/primitives/tokens.js +60 -0
  1000. package/dist/layout/primitives/tokens.js.map +1 -0
  1001. package/dist/lib/active-editor.d.ts +6 -0
  1002. package/dist/lib/active-editor.d.ts.map +1 -0
  1003. package/dist/lib/active-editor.js +35 -0
  1004. package/dist/lib/active-editor.js.map +1 -0
  1005. package/dist/lib/admin-root-element.d.ts +9 -0
  1006. package/dist/lib/admin-root-element.d.ts.map +1 -0
  1007. package/dist/lib/admin-root-element.js +14 -0
  1008. package/dist/lib/admin-root-element.js.map +1 -0
  1009. package/dist/lib/api.d.ts +17 -0
  1010. package/dist/lib/api.d.ts.map +1 -0
  1011. package/dist/lib/api.js +104 -0
  1012. package/dist/lib/api.js.map +1 -0
  1013. package/dist/lib/appearance-api.d.ts +33 -0
  1014. package/dist/lib/appearance-api.d.ts.map +1 -0
  1015. package/dist/lib/appearance-api.js +42 -0
  1016. package/dist/lib/appearance-api.js.map +1 -0
  1017. package/dist/lib/brand-voice-client.d.ts +21 -0
  1018. package/dist/lib/brand-voice-client.d.ts.map +1 -0
  1019. package/dist/lib/brand-voice-client.js +27 -0
  1020. package/dist/lib/brand-voice-client.js.map +1 -0
  1021. package/dist/lib/coauthor-client.d.ts +74 -0
  1022. package/dist/lib/coauthor-client.d.ts.map +1 -0
  1023. package/dist/lib/coauthor-client.js +99 -0
  1024. package/dist/lib/coauthor-client.js.map +1 -0
  1025. package/dist/lib/collaboration-provider.d.ts +142 -0
  1026. package/dist/lib/collaboration-provider.d.ts.map +1 -0
  1027. package/dist/lib/collaboration-provider.js +168 -0
  1028. package/dist/lib/collaboration-provider.js.map +1 -0
  1029. package/dist/lib/collection-routes.d.ts +18 -0
  1030. package/dist/lib/collection-routes.d.ts.map +1 -0
  1031. package/dist/lib/collection-routes.js +27 -0
  1032. package/dist/lib/collection-routes.js.map +1 -0
  1033. package/dist/lib/collection-schema.d.ts +29 -0
  1034. package/dist/lib/collection-schema.d.ts.map +1 -0
  1035. package/dist/lib/collection-schema.js +54 -0
  1036. package/dist/lib/collection-schema.js.map +1 -0
  1037. package/dist/lib/comment-anchor.d.ts +86 -0
  1038. package/dist/lib/comment-anchor.d.ts.map +1 -0
  1039. package/dist/lib/comment-anchor.js +139 -0
  1040. package/dist/lib/comment-anchor.js.map +1 -0
  1041. package/dist/lib/comments-client.d.ts +106 -0
  1042. package/dist/lib/comments-client.d.ts.map +1 -0
  1043. package/dist/lib/comments-client.js +138 -0
  1044. package/dist/lib/comments-client.js.map +1 -0
  1045. package/dist/lib/cv.d.ts +53 -0
  1046. package/dist/lib/cv.d.ts.map +1 -0
  1047. package/dist/lib/cv.js +47 -0
  1048. package/dist/lib/cv.js.map +1 -0
  1049. package/dist/lib/editor-preview.d.ts +4 -0
  1050. package/dist/lib/editor-preview.d.ts.map +1 -0
  1051. package/dist/lib/editor-preview.js +10 -0
  1052. package/dist/lib/editor-preview.js.map +1 -0
  1053. package/dist/lib/editor-seo-content.d.ts +16 -0
  1054. package/dist/lib/editor-seo-content.d.ts.map +1 -0
  1055. package/dist/lib/editor-seo-content.js +139 -0
  1056. package/dist/lib/editor-seo-content.js.map +1 -0
  1057. package/dist/lib/favicon.d.ts +28 -0
  1058. package/dist/lib/favicon.d.ts.map +1 -0
  1059. package/dist/lib/favicon.js +38 -0
  1060. package/dist/lib/favicon.js.map +1 -0
  1061. package/dist/lib/forms-events.d.ts +17 -0
  1062. package/dist/lib/forms-events.d.ts.map +1 -0
  1063. package/dist/lib/forms-events.js +20 -0
  1064. package/dist/lib/forms-events.js.map +1 -0
  1065. package/dist/lib/forms-service.d.ts +229 -0
  1066. package/dist/lib/forms-service.d.ts.map +1 -0
  1067. package/dist/lib/forms-service.js +302 -0
  1068. package/dist/lib/forms-service.js.map +1 -0
  1069. package/dist/lib/mention-picker.d.ts +69 -0
  1070. package/dist/lib/mention-picker.d.ts.map +1 -0
  1071. package/dist/lib/mention-picker.js +138 -0
  1072. package/dist/lib/mention-picker.js.map +1 -0
  1073. package/dist/lib/notifications-client.d.ts +121 -0
  1074. package/dist/lib/notifications-client.d.ts.map +1 -0
  1075. package/dist/lib/notifications-client.js +173 -0
  1076. package/dist/lib/notifications-client.js.map +1 -0
  1077. package/dist/lib/page-editor-service.d.ts +64 -0
  1078. package/dist/lib/page-editor-service.d.ts.map +1 -0
  1079. package/dist/lib/page-editor-service.js +209 -0
  1080. package/dist/lib/page-editor-service.js.map +1 -0
  1081. package/dist/lib/pages-service.d.ts +185 -0
  1082. package/dist/lib/pages-service.d.ts.map +1 -0
  1083. package/dist/lib/pages-service.js +495 -0
  1084. package/dist/lib/pages-service.js.map +1 -0
  1085. package/dist/lib/pages-tree.d.ts +58 -0
  1086. package/dist/lib/pages-tree.d.ts.map +1 -0
  1087. package/dist/lib/pages-tree.js +157 -0
  1088. package/dist/lib/pages-tree.js.map +1 -0
  1089. package/dist/lib/plan.d.ts +12 -0
  1090. package/dist/lib/plan.d.ts.map +1 -0
  1091. package/dist/lib/plan.js +30 -0
  1092. package/dist/lib/plan.js.map +1 -0
  1093. package/dist/lib/portal-container.d.ts +12 -0
  1094. package/dist/lib/portal-container.d.ts.map +1 -0
  1095. package/dist/lib/portal-container.js +15 -0
  1096. package/dist/lib/portal-container.js.map +1 -0
  1097. package/dist/lib/post-editor-service.d.ts +77 -0
  1098. package/dist/lib/post-editor-service.d.ts.map +1 -0
  1099. package/dist/lib/post-editor-service.js +326 -0
  1100. package/dist/lib/post-editor-service.js.map +1 -0
  1101. package/dist/lib/post-types-service.d.ts +44 -0
  1102. package/dist/lib/post-types-service.d.ts.map +1 -0
  1103. package/dist/lib/post-types-service.js +83 -0
  1104. package/dist/lib/post-types-service.js.map +1 -0
  1105. package/dist/lib/posts-service.d.ts +84 -0
  1106. package/dist/lib/posts-service.d.ts.map +1 -0
  1107. package/dist/lib/posts-service.js +191 -0
  1108. package/dist/lib/posts-service.js.map +1 -0
  1109. package/dist/lib/preview-bridge.d.ts +96 -0
  1110. package/dist/lib/preview-bridge.d.ts.map +1 -0
  1111. package/dist/lib/preview-bridge.js +121 -0
  1112. package/dist/lib/preview-bridge.js.map +1 -0
  1113. package/dist/lib/preview-link.d.ts +55 -0
  1114. package/dist/lib/preview-link.d.ts.map +1 -0
  1115. package/dist/lib/preview-link.js +79 -0
  1116. package/dist/lib/preview-link.js.map +1 -0
  1117. package/dist/lib/root-chrome.d.ts +15 -0
  1118. package/dist/lib/root-chrome.d.ts.map +1 -0
  1119. package/dist/lib/root-chrome.js +41 -0
  1120. package/dist/lib/root-chrome.js.map +1 -0
  1121. package/dist/lib/search.d.ts +11 -0
  1122. package/dist/lib/search.d.ts.map +1 -0
  1123. package/dist/lib/search.js +47 -0
  1124. package/dist/lib/search.js.map +1 -0
  1125. package/dist/lib/sentry.d.ts +7 -0
  1126. package/dist/lib/sentry.d.ts.map +1 -0
  1127. package/dist/lib/sentry.js +29 -0
  1128. package/dist/lib/sentry.js.map +1 -0
  1129. package/dist/lib/seo-service.d.ts +597 -0
  1130. package/dist/lib/seo-service.d.ts.map +1 -0
  1131. package/dist/lib/seo-service.js +528 -0
  1132. package/dist/lib/seo-service.js.map +1 -0
  1133. package/dist/lib/slash-command.d.ts +39 -0
  1134. package/dist/lib/slash-command.d.ts.map +1 -0
  1135. package/dist/lib/slash-command.js +50 -0
  1136. package/dist/lib/slash-command.js.map +1 -0
  1137. package/dist/lib/useApiData.d.ts +26 -0
  1138. package/dist/lib/useApiData.d.ts.map +1 -0
  1139. package/dist/lib/useApiData.js +102 -0
  1140. package/dist/lib/useApiData.js.map +1 -0
  1141. package/dist/lib/utils.d.ts +3 -0
  1142. package/dist/lib/utils.d.ts.map +1 -0
  1143. package/dist/lib/utils.js +6 -0
  1144. package/dist/lib/utils.js.map +1 -0
  1145. package/dist/prenta-admin.css +2 -0
  1146. package/dist/router/admin-routes.d.ts +43 -0
  1147. package/dist/router/admin-routes.d.ts.map +1 -0
  1148. package/dist/router/admin-routes.js +138 -0
  1149. package/dist/router/admin-routes.js.map +1 -0
  1150. package/dist/router/index.d.ts +31 -0
  1151. package/dist/router/index.d.ts.map +1 -0
  1152. package/dist/router/index.js +143 -0
  1153. package/dist/router/index.js.map +1 -0
  1154. package/dist/views/ApiKeys.d.ts +8 -0
  1155. package/dist/views/ApiKeys.d.ts.map +1 -0
  1156. package/dist/views/ApiKeys.js +157 -0
  1157. package/dist/views/ApiKeys.js.map +1 -0
  1158. package/dist/views/CollectionList.d.ts +7 -0
  1159. package/dist/views/CollectionList.d.ts.map +1 -0
  1160. package/dist/views/CollectionList.js +285 -0
  1161. package/dist/views/CollectionList.js.map +1 -0
  1162. package/dist/views/Dashboard.d.ts +7 -0
  1163. package/dist/views/Dashboard.d.ts.map +1 -0
  1164. package/dist/views/Dashboard.js +498 -0
  1165. package/dist/views/Dashboard.js.map +1 -0
  1166. package/dist/views/DocumentEdit.d.ts +8 -0
  1167. package/dist/views/DocumentEdit.d.ts.map +1 -0
  1168. package/dist/views/DocumentEdit.js +287 -0
  1169. package/dist/views/DocumentEdit.js.map +1 -0
  1170. package/dist/views/ForgotPassword.d.ts +5 -0
  1171. package/dist/views/ForgotPassword.d.ts.map +1 -0
  1172. package/dist/views/ForgotPassword.js +42 -0
  1173. package/dist/views/ForgotPassword.js.map +1 -0
  1174. package/dist/views/FormDeliveries.d.ts +5 -0
  1175. package/dist/views/FormDeliveries.d.ts.map +1 -0
  1176. package/dist/views/FormDeliveries.js +93 -0
  1177. package/dist/views/FormDeliveries.js.map +1 -0
  1178. package/dist/views/FormEditor.d.ts +6 -0
  1179. package/dist/views/FormEditor.d.ts.map +1 -0
  1180. package/dist/views/FormEditor.js +226 -0
  1181. package/dist/views/FormEditor.js.map +1 -0
  1182. package/dist/views/FormEntries.d.ts +5 -0
  1183. package/dist/views/FormEntries.d.ts.map +1 -0
  1184. package/dist/views/FormEntries.js +187 -0
  1185. package/dist/views/FormEntries.js.map +1 -0
  1186. package/dist/views/FormSubmissions.d.ts +6 -0
  1187. package/dist/views/FormSubmissions.d.ts.map +1 -0
  1188. package/dist/views/FormSubmissions.js +189 -0
  1189. package/dist/views/FormSubmissions.js.map +1 -0
  1190. package/dist/views/Forms.d.ts +5 -0
  1191. package/dist/views/Forms.d.ts.map +1 -0
  1192. package/dist/views/Forms.js +147 -0
  1193. package/dist/views/Forms.js.map +1 -0
  1194. package/dist/views/HiddenLoginNotFound.d.ts +14 -0
  1195. package/dist/views/HiddenLoginNotFound.d.ts.map +1 -0
  1196. package/dist/views/HiddenLoginNotFound.js +35 -0
  1197. package/dist/views/HiddenLoginNotFound.js.map +1 -0
  1198. package/dist/views/Login.d.ts +45 -0
  1199. package/dist/views/Login.d.ts.map +1 -0
  1200. package/dist/views/Login.js +286 -0
  1201. package/dist/views/Login.js.map +1 -0
  1202. package/dist/views/MediaBrowser.d.ts +8 -0
  1203. package/dist/views/MediaBrowser.d.ts.map +1 -0
  1204. package/dist/views/MediaBrowser.js +426 -0
  1205. package/dist/views/MediaBrowser.js.map +1 -0
  1206. package/dist/views/MediaSeoAudit.d.ts +30 -0
  1207. package/dist/views/MediaSeoAudit.d.ts.map +1 -0
  1208. package/dist/views/MediaSeoAudit.js +110 -0
  1209. package/dist/views/MediaSeoAudit.js.map +1 -0
  1210. package/dist/views/PageEditor.d.ts +10 -0
  1211. package/dist/views/PageEditor.d.ts.map +1 -0
  1212. package/dist/views/PageEditor.js +78 -0
  1213. package/dist/views/PageEditor.js.map +1 -0
  1214. package/dist/views/Pages/PageTagManager.d.ts +14 -0
  1215. package/dist/views/Pages/PageTagManager.d.ts.map +1 -0
  1216. package/dist/views/Pages/PageTagManager.js +145 -0
  1217. package/dist/views/Pages/PageTagManager.js.map +1 -0
  1218. package/dist/views/Pages/PagesListView.d.ts +18 -0
  1219. package/dist/views/Pages/PagesListView.d.ts.map +1 -0
  1220. package/dist/views/Pages/PagesListView.js +551 -0
  1221. package/dist/views/Pages/PagesListView.js.map +1 -0
  1222. package/dist/views/Pages/PagesTreeTable.d.ts +45 -0
  1223. package/dist/views/Pages/PagesTreeTable.d.ts.map +1 -0
  1224. package/dist/views/Pages/PagesTreeTable.js +60 -0
  1225. package/dist/views/Pages/PagesTreeTable.js.map +1 -0
  1226. package/dist/views/Pages.d.ts +9 -0
  1227. package/dist/views/Pages.d.ts.map +1 -0
  1228. package/dist/views/Pages.js +196 -0
  1229. package/dist/views/Pages.js.map +1 -0
  1230. package/dist/views/Posts/NewPostPicker.d.ts +17 -0
  1231. package/dist/views/Posts/NewPostPicker.d.ts.map +1 -0
  1232. package/dist/views/Posts/NewPostPicker.js +60 -0
  1233. package/dist/views/Posts/NewPostPicker.js.map +1 -0
  1234. package/dist/views/Posts/NewPostTypeInstructions.d.ts +18 -0
  1235. package/dist/views/Posts/NewPostTypeInstructions.d.ts.map +1 -0
  1236. package/dist/views/Posts/NewPostTypeInstructions.js +147 -0
  1237. package/dist/views/Posts/NewPostTypeInstructions.js.map +1 -0
  1238. package/dist/views/Posts/PostTypeEditor.d.ts +16 -0
  1239. package/dist/views/Posts/PostTypeEditor.d.ts.map +1 -0
  1240. package/dist/views/Posts/PostTypeEditor.js +159 -0
  1241. package/dist/views/Posts/PostTypeEditor.js.map +1 -0
  1242. package/dist/views/Posts/PostTypesView.d.ts +28 -0
  1243. package/dist/views/Posts/PostTypesView.d.ts.map +1 -0
  1244. package/dist/views/Posts/PostTypesView.js +52 -0
  1245. package/dist/views/Posts/PostTypesView.js.map +1 -0
  1246. package/dist/views/Posts/PostsListView.d.ts +25 -0
  1247. package/dist/views/Posts/PostsListView.d.ts.map +1 -0
  1248. package/dist/views/Posts/PostsListView.js +308 -0
  1249. package/dist/views/Posts/PostsListView.js.map +1 -0
  1250. package/dist/views/Posts/post-type-presets.d.ts +37 -0
  1251. package/dist/views/Posts/post-type-presets.d.ts.map +1 -0
  1252. package/dist/views/Posts/post-type-presets.js +18 -0
  1253. package/dist/views/Posts/post-type-presets.js.map +1 -0
  1254. package/dist/views/Profile.d.ts +12 -0
  1255. package/dist/views/Profile.d.ts.map +1 -0
  1256. package/dist/views/Profile.js +16 -0
  1257. package/dist/views/Profile.js.map +1 -0
  1258. package/dist/views/Redirects.d.ts +9 -0
  1259. package/dist/views/Redirects.d.ts.map +1 -0
  1260. package/dist/views/Redirects.js +96 -0
  1261. package/dist/views/Redirects.js.map +1 -0
  1262. package/dist/views/ResetPassword.d.ts +6 -0
  1263. package/dist/views/ResetPassword.d.ts.map +1 -0
  1264. package/dist/views/ResetPassword.js +47 -0
  1265. package/dist/views/ResetPassword.js.map +1 -0
  1266. package/dist/views/SEO.d.ts +42 -0
  1267. package/dist/views/SEO.d.ts.map +1 -0
  1268. package/dist/views/SEO.js +148 -0
  1269. package/dist/views/SEO.js.map +1 -0
  1270. package/dist/views/ScriptTags.d.ts +9 -0
  1271. package/dist/views/ScriptTags.d.ts.map +1 -0
  1272. package/dist/views/ScriptTags.js +210 -0
  1273. package/dist/views/ScriptTags.js.map +1 -0
  1274. package/dist/views/Settings.d.ts +14 -0
  1275. package/dist/views/Settings.d.ts.map +1 -0
  1276. package/dist/views/Settings.js +127 -0
  1277. package/dist/views/Settings.js.map +1 -0
  1278. package/dist/views/SetupWizard.d.ts +13 -0
  1279. package/dist/views/SetupWizard.d.ts.map +1 -0
  1280. package/dist/views/SetupWizard.js +69 -0
  1281. package/dist/views/SetupWizard.js.map +1 -0
  1282. package/dist/views/Users.d.ts +9 -0
  1283. package/dist/views/Users.d.ts.map +1 -0
  1284. package/dist/views/Users.js +454 -0
  1285. package/dist/views/Users.js.map +1 -0
  1286. package/dist/views/dashboard/OnboardingBlock.d.ts +29 -0
  1287. package/dist/views/dashboard/OnboardingBlock.d.ts.map +1 -0
  1288. package/dist/views/dashboard/OnboardingBlock.js +71 -0
  1289. package/dist/views/dashboard/OnboardingBlock.js.map +1 -0
  1290. package/dist/views/page-builder/AIBlockAssist.d.ts +9 -0
  1291. package/dist/views/page-builder/AIBlockAssist.d.ts.map +1 -0
  1292. package/dist/views/page-builder/AIBlockAssist.js +40 -0
  1293. package/dist/views/page-builder/AIBlockAssist.js.map +1 -0
  1294. package/dist/views/page-builder/AIGenerateDialog.d.ts +8 -0
  1295. package/dist/views/page-builder/AIGenerateDialog.d.ts.map +1 -0
  1296. package/dist/views/page-builder/AIGenerateDialog.js +173 -0
  1297. package/dist/views/page-builder/AIGenerateDialog.js.map +1 -0
  1298. package/dist/views/page-builder/BlockEditor.d.ts +11 -0
  1299. package/dist/views/page-builder/BlockEditor.d.ts.map +1 -0
  1300. package/dist/views/page-builder/BlockEditor.js +159 -0
  1301. package/dist/views/page-builder/BlockEditor.js.map +1 -0
  1302. package/dist/views/page-builder/BlockPicker.d.ts +7 -0
  1303. package/dist/views/page-builder/BlockPicker.d.ts.map +1 -0
  1304. package/dist/views/page-builder/BlockPicker.js +103 -0
  1305. package/dist/views/page-builder/BlockPicker.js.map +1 -0
  1306. package/dist/views/page-builder/BottomBar.d.ts +9 -0
  1307. package/dist/views/page-builder/BottomBar.d.ts.map +1 -0
  1308. package/dist/views/page-builder/BottomBar.js +13 -0
  1309. package/dist/views/page-builder/BottomBar.js.map +1 -0
  1310. package/dist/views/page-builder/BuilderSectionsPanel.d.ts +20 -0
  1311. package/dist/views/page-builder/BuilderSectionsPanel.d.ts.map +1 -0
  1312. package/dist/views/page-builder/BuilderSectionsPanel.js +105 -0
  1313. package/dist/views/page-builder/BuilderSectionsPanel.js.map +1 -0
  1314. package/dist/views/page-builder/BuilderToolbar.d.ts +21 -0
  1315. package/dist/views/page-builder/BuilderToolbar.d.ts.map +1 -0
  1316. package/dist/views/page-builder/BuilderToolbar.js +18 -0
  1317. package/dist/views/page-builder/BuilderToolbar.js.map +1 -0
  1318. package/dist/views/page-builder/ContextPanel.d.ts +20 -0
  1319. package/dist/views/page-builder/ContextPanel.d.ts.map +1 -0
  1320. package/dist/views/page-builder/ContextPanel.js +43 -0
  1321. package/dist/views/page-builder/ContextPanel.js.map +1 -0
  1322. package/dist/views/page-builder/DesignScore.d.ts +6 -0
  1323. package/dist/views/page-builder/DesignScore.d.ts.map +1 -0
  1324. package/dist/views/page-builder/DesignScore.js +93 -0
  1325. package/dist/views/page-builder/DesignScore.js.map +1 -0
  1326. package/dist/views/page-builder/NodeSettings.d.ts +12 -0
  1327. package/dist/views/page-builder/NodeSettings.d.ts.map +1 -0
  1328. package/dist/views/page-builder/NodeSettings.js +80 -0
  1329. package/dist/views/page-builder/NodeSettings.js.map +1 -0
  1330. package/dist/views/page-builder/PageBuilder.d.ts +10 -0
  1331. package/dist/views/page-builder/PageBuilder.d.ts.map +1 -0
  1332. package/dist/views/page-builder/PageBuilder.js +222 -0
  1333. package/dist/views/page-builder/PageBuilder.js.map +1 -0
  1334. package/dist/views/page-builder/PageSettings.d.ts +7 -0
  1335. package/dist/views/page-builder/PageSettings.d.ts.map +1 -0
  1336. package/dist/views/page-builder/PageSettings.js +27 -0
  1337. package/dist/views/page-builder/PageSettings.js.map +1 -0
  1338. package/dist/views/page-builder/PageTemplates.d.ts +5 -0
  1339. package/dist/views/page-builder/PageTemplates.d.ts.map +1 -0
  1340. package/dist/views/page-builder/PageTemplates.js +146 -0
  1341. package/dist/views/page-builder/PageTemplates.js.map +1 -0
  1342. package/dist/views/page-builder/RelationshipField.d.ts +15 -0
  1343. package/dist/views/page-builder/RelationshipField.d.ts.map +1 -0
  1344. package/dist/views/page-builder/RelationshipField.js +65 -0
  1345. package/dist/views/page-builder/RelationshipField.js.map +1 -0
  1346. package/dist/views/page-builder/SEOPanel.d.ts +10 -0
  1347. package/dist/views/page-builder/SEOPanel.d.ts.map +1 -0
  1348. package/dist/views/page-builder/SEOPanel.js +103 -0
  1349. package/dist/views/page-builder/SEOPanel.js.map +1 -0
  1350. package/dist/views/page-builder/SavedSections.d.ts +6 -0
  1351. package/dist/views/page-builder/SavedSections.d.ts.map +1 -0
  1352. package/dist/views/page-builder/SavedSections.js +141 -0
  1353. package/dist/views/page-builder/SavedSections.js.map +1 -0
  1354. package/dist/views/page-builder/TemplatePicker.d.ts +7 -0
  1355. package/dist/views/page-builder/TemplatePicker.d.ts.map +1 -0
  1356. package/dist/views/page-builder/TemplatePicker.js +68 -0
  1357. package/dist/views/page-builder/TemplatePicker.js.map +1 -0
  1358. package/dist/views/page-builder/Widgets.d.ts +13 -0
  1359. package/dist/views/page-builder/Widgets.d.ts.map +1 -0
  1360. package/dist/views/page-builder/Widgets.js +15 -0
  1361. package/dist/views/page-builder/Widgets.js.map +1 -0
  1362. package/dist/views/page-builder/block-renderers/CTAPreview.d.ts +3 -0
  1363. package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +1 -0
  1364. package/dist/views/page-builder/block-renderers/CTAPreview.js +19 -0
  1365. package/dist/views/page-builder/block-renderers/CTAPreview.js.map +1 -0
  1366. package/dist/views/page-builder/block-renderers/CardsPreview.d.ts +3 -0
  1367. package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +1 -0
  1368. package/dist/views/page-builder/block-renderers/CardsPreview.js +22 -0
  1369. package/dist/views/page-builder/block-renderers/CardsPreview.js.map +1 -0
  1370. package/dist/views/page-builder/block-renderers/CodePreview.d.ts +3 -0
  1371. package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +1 -0
  1372. package/dist/views/page-builder/block-renderers/CodePreview.js +12 -0
  1373. package/dist/views/page-builder/block-renderers/CodePreview.js.map +1 -0
  1374. package/dist/views/page-builder/block-renderers/FAQPreview.d.ts +3 -0
  1375. package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +1 -0
  1376. package/dist/views/page-builder/block-renderers/FAQPreview.js +27 -0
  1377. package/dist/views/page-builder/block-renderers/FAQPreview.js.map +1 -0
  1378. package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts +6 -0
  1379. package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +1 -0
  1380. package/dist/views/page-builder/block-renderers/FallbackPreview.js +7 -0
  1381. package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +1 -0
  1382. package/dist/views/page-builder/block-renderers/FormPreview.d.ts +9 -0
  1383. package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +1 -0
  1384. package/dist/views/page-builder/block-renderers/FormPreview.js +52 -0
  1385. package/dist/views/page-builder/block-renderers/FormPreview.js.map +1 -0
  1386. package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts +3 -0
  1387. package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +1 -0
  1388. package/dist/views/page-builder/block-renderers/GalleryPreview.js +19 -0
  1389. package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +1 -0
  1390. package/dist/views/page-builder/block-renderers/HeroPreview.d.ts +3 -0
  1391. package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +1 -0
  1392. package/dist/views/page-builder/block-renderers/HeroPreview.js +19 -0
  1393. package/dist/views/page-builder/block-renderers/HeroPreview.js.map +1 -0
  1394. package/dist/views/page-builder/block-renderers/ImagePreview.d.ts +3 -0
  1395. package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +1 -0
  1396. package/dist/views/page-builder/block-renderers/ImagePreview.js +17 -0
  1397. package/dist/views/page-builder/block-renderers/ImagePreview.js.map +1 -0
  1398. package/dist/views/page-builder/block-renderers/TextPreview.d.ts +3 -0
  1399. package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +1 -0
  1400. package/dist/views/page-builder/block-renderers/TextPreview.js +22 -0
  1401. package/dist/views/page-builder/block-renderers/TextPreview.js.map +1 -0
  1402. package/dist/views/page-builder/block-renderers/VideoPreview.d.ts +3 -0
  1403. package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +1 -0
  1404. package/dist/views/page-builder/block-renderers/VideoPreview.js +18 -0
  1405. package/dist/views/page-builder/block-renderers/VideoPreview.js.map +1 -0
  1406. package/dist/views/page-builder/block-renderers/index.d.ts +9 -0
  1407. package/dist/views/page-builder/block-renderers/index.d.ts.map +1 -0
  1408. package/dist/views/page-builder/block-renderers/index.js +25 -0
  1409. package/dist/views/page-builder/block-renderers/index.js.map +1 -0
  1410. package/dist/views/page-builder/canvas/BlockRenderer.d.ts +8 -0
  1411. package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +1 -0
  1412. package/dist/views/page-builder/canvas/BlockRenderer.js +20 -0
  1413. package/dist/views/page-builder/canvas/BlockRenderer.js.map +1 -0
  1414. package/dist/views/page-builder/canvas/BuilderCanvas.d.ts +10 -0
  1415. package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +1 -0
  1416. package/dist/views/page-builder/canvas/BuilderCanvas.js +26 -0
  1417. package/dist/views/page-builder/canvas/BuilderCanvas.js.map +1 -0
  1418. package/dist/views/page-builder/canvas/ColumnRenderer.d.ts +8 -0
  1419. package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +1 -0
  1420. package/dist/views/page-builder/canvas/ColumnRenderer.js +32 -0
  1421. package/dist/views/page-builder/canvas/ColumnRenderer.js.map +1 -0
  1422. package/dist/views/page-builder/canvas/ContainerRenderer.d.ts +8 -0
  1423. package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +1 -0
  1424. package/dist/views/page-builder/canvas/ContainerRenderer.js +29 -0
  1425. package/dist/views/page-builder/canvas/ContainerRenderer.js.map +1 -0
  1426. package/dist/views/page-builder/canvas/RowRenderer.d.ts +8 -0
  1427. package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +1 -0
  1428. package/dist/views/page-builder/canvas/RowRenderer.js +28 -0
  1429. package/dist/views/page-builder/canvas/RowRenderer.js.map +1 -0
  1430. package/dist/views/page-builder/canvas/SectionRenderer.d.ts +8 -0
  1431. package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +1 -0
  1432. package/dist/views/page-builder/canvas/SectionRenderer.js +50 -0
  1433. package/dist/views/page-builder/canvas/SectionRenderer.js.map +1 -0
  1434. package/dist/views/page-builder/canvas/index.d.ts +3 -0
  1435. package/dist/views/page-builder/canvas/index.d.ts.map +1 -0
  1436. package/dist/views/page-builder/canvas/index.js +2 -0
  1437. package/dist/views/page-builder/canvas/index.js.map +1 -0
  1438. package/dist/views/page-editor/AddSectionModal.d.ts +20 -0
  1439. package/dist/views/page-editor/AddSectionModal.d.ts.map +1 -0
  1440. package/dist/views/page-editor/AddSectionModal.js +22 -0
  1441. package/dist/views/page-editor/AddSectionModal.js.map +1 -0
  1442. package/dist/views/page-editor/EditorCanvas.d.ts +21 -0
  1443. package/dist/views/page-editor/EditorCanvas.d.ts.map +1 -0
  1444. package/dist/views/page-editor/EditorCanvas.js +65 -0
  1445. package/dist/views/page-editor/EditorCanvas.js.map +1 -0
  1446. package/dist/views/page-editor/EditorTopBar.d.ts +64 -0
  1447. package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -0
  1448. package/dist/views/page-editor/EditorTopBar.js +103 -0
  1449. package/dist/views/page-editor/EditorTopBar.js.map +1 -0
  1450. package/dist/views/page-editor/PagePreview.d.ts +13 -0
  1451. package/dist/views/page-editor/PagePreview.d.ts.map +1 -0
  1452. package/dist/views/page-editor/PagePreview.js +46 -0
  1453. package/dist/views/page-editor/PagePreview.js.map +1 -0
  1454. package/dist/views/page-editor/PageSectionEditor.d.ts +22 -0
  1455. package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -0
  1456. package/dist/views/page-editor/PageSectionEditor.js +483 -0
  1457. package/dist/views/page-editor/PageSectionEditor.js.map +1 -0
  1458. package/dist/views/page-editor/PageSettingsModal.d.ts +12 -0
  1459. package/dist/views/page-editor/PageSettingsModal.d.ts.map +1 -0
  1460. package/dist/views/page-editor/PageSettingsModal.js +89 -0
  1461. package/dist/views/page-editor/PageSettingsModal.js.map +1 -0
  1462. package/dist/views/page-editor/SectionInspector.d.ts +40 -0
  1463. package/dist/views/page-editor/SectionInspector.d.ts.map +1 -0
  1464. package/dist/views/page-editor/SectionInspector.js +214 -0
  1465. package/dist/views/page-editor/SectionInspector.js.map +1 -0
  1466. package/dist/views/page-editor/SectionsPanel.d.ts +15 -0
  1467. package/dist/views/page-editor/SectionsPanel.d.ts.map +1 -0
  1468. package/dist/views/page-editor/SectionsPanel.js +47 -0
  1469. package/dist/views/page-editor/SectionsPanel.js.map +1 -0
  1470. package/dist/views/page-editor/SitePreviewFrame.d.ts +43 -0
  1471. package/dist/views/page-editor/SitePreviewFrame.d.ts.map +1 -0
  1472. package/dist/views/page-editor/SitePreviewFrame.js +135 -0
  1473. package/dist/views/page-editor/SitePreviewFrame.js.map +1 -0
  1474. package/dist/views/page-editor/StructureNotice.d.ts +11 -0
  1475. package/dist/views/page-editor/StructureNotice.d.ts.map +1 -0
  1476. package/dist/views/page-editor/StructureNotice.js +18 -0
  1477. package/dist/views/page-editor/StructureNotice.js.map +1 -0
  1478. package/dist/views/page-editor/ValidationSummary.d.ts +9 -0
  1479. package/dist/views/page-editor/ValidationSummary.d.ts.map +1 -0
  1480. package/dist/views/page-editor/ValidationSummary.js +10 -0
  1481. package/dist/views/page-editor/ValidationSummary.js.map +1 -0
  1482. package/dist/views/page-editor/section-icons.d.ts +4 -0
  1483. package/dist/views/page-editor/section-icons.d.ts.map +1 -0
  1484. package/dist/views/page-editor/section-icons.js +21 -0
  1485. package/dist/views/page-editor/section-icons.js.map +1 -0
  1486. package/dist/views/page-editor/section-types.d.ts +11 -0
  1487. package/dist/views/page-editor/section-types.d.ts.map +1 -0
  1488. package/dist/views/page-editor/section-types.js +10 -0
  1489. package/dist/views/page-editor/section-types.js.map +1 -0
  1490. package/dist/views/page-editor/sections/ArticleBodySection.d.ts +17 -0
  1491. package/dist/views/page-editor/sections/ArticleBodySection.d.ts.map +1 -0
  1492. package/dist/views/page-editor/sections/ArticleBodySection.js +23 -0
  1493. package/dist/views/page-editor/sections/ArticleBodySection.js.map +1 -0
  1494. package/dist/views/page-editor/sections/AuthorBioSection.d.ts +8 -0
  1495. package/dist/views/page-editor/sections/AuthorBioSection.d.ts.map +1 -0
  1496. package/dist/views/page-editor/sections/AuthorBioSection.js +21 -0
  1497. package/dist/views/page-editor/sections/AuthorBioSection.js.map +1 -0
  1498. package/dist/views/page-editor/sections/ByTheNumbersSection.d.ts +5 -0
  1499. package/dist/views/page-editor/sections/ByTheNumbersSection.d.ts.map +1 -0
  1500. package/dist/views/page-editor/sections/ByTheNumbersSection.js +10 -0
  1501. package/dist/views/page-editor/sections/ByTheNumbersSection.js.map +1 -0
  1502. package/dist/views/page-editor/sections/CtaBannerSection.d.ts +5 -0
  1503. package/dist/views/page-editor/sections/CtaBannerSection.d.ts.map +1 -0
  1504. package/dist/views/page-editor/sections/CtaBannerSection.js +10 -0
  1505. package/dist/views/page-editor/sections/CtaBannerSection.js.map +1 -0
  1506. package/dist/views/page-editor/sections/EmbedSection.d.ts +10 -0
  1507. package/dist/views/page-editor/sections/EmbedSection.d.ts.map +1 -0
  1508. package/dist/views/page-editor/sections/EmbedSection.js +24 -0
  1509. package/dist/views/page-editor/sections/EmbedSection.js.map +1 -0
  1510. package/dist/views/page-editor/sections/FeatureHighlightSection.d.ts +5 -0
  1511. package/dist/views/page-editor/sections/FeatureHighlightSection.d.ts.map +1 -0
  1512. package/dist/views/page-editor/sections/FeatureHighlightSection.js +18 -0
  1513. package/dist/views/page-editor/sections/FeatureHighlightSection.js.map +1 -0
  1514. package/dist/views/page-editor/sections/GallerySection.d.ts +6 -0
  1515. package/dist/views/page-editor/sections/GallerySection.d.ts.map +1 -0
  1516. package/dist/views/page-editor/sections/GallerySection.js +17 -0
  1517. package/dist/views/page-editor/sections/GallerySection.js.map +1 -0
  1518. package/dist/views/page-editor/sections/HeroBannerSection.d.ts +5 -0
  1519. package/dist/views/page-editor/sections/HeroBannerSection.d.ts.map +1 -0
  1520. package/dist/views/page-editor/sections/HeroBannerSection.js +11 -0
  1521. package/dist/views/page-editor/sections/HeroBannerSection.js.map +1 -0
  1522. package/dist/views/page-editor/sections/MissionSection.d.ts +6 -0
  1523. package/dist/views/page-editor/sections/MissionSection.d.ts.map +1 -0
  1524. package/dist/views/page-editor/sections/MissionSection.js +12 -0
  1525. package/dist/views/page-editor/sections/MissionSection.js.map +1 -0
  1526. package/dist/views/page-editor/sections/PullQuoteSection.d.ts +6 -0
  1527. package/dist/views/page-editor/sections/PullQuoteSection.d.ts.map +1 -0
  1528. package/dist/views/page-editor/sections/PullQuoteSection.js +13 -0
  1529. package/dist/views/page-editor/sections/PullQuoteSection.js.map +1 -0
  1530. package/dist/views/page-editor/sections/RelatedPostsSection.d.ts +12 -0
  1531. package/dist/views/page-editor/sections/RelatedPostsSection.d.ts.map +1 -0
  1532. package/dist/views/page-editor/sections/RelatedPostsSection.js +23 -0
  1533. package/dist/views/page-editor/sections/RelatedPostsSection.js.map +1 -0
  1534. package/dist/views/page-editor/sections/SectionRenderer.d.ts +24 -0
  1535. package/dist/views/page-editor/sections/SectionRenderer.d.ts.map +1 -0
  1536. package/dist/views/page-editor/sections/SectionRenderer.js +116 -0
  1537. package/dist/views/page-editor/sections/SectionRenderer.js.map +1 -0
  1538. package/dist/views/page-editor/sections/WidgetEmbedSection.d.ts +9 -0
  1539. package/dist/views/page-editor/sections/WidgetEmbedSection.d.ts.map +1 -0
  1540. package/dist/views/page-editor/sections/WidgetEmbedSection.js +18 -0
  1541. package/dist/views/page-editor/sections/WidgetEmbedSection.js.map +1 -0
  1542. package/dist/views/page-editor/sections/admin-renderers.d.ts +87 -0
  1543. package/dist/views/page-editor/sections/admin-renderers.d.ts.map +1 -0
  1544. package/dist/views/page-editor/sections/admin-renderers.js +46 -0
  1545. package/dist/views/page-editor/sections/admin-renderers.js.map +1 -0
  1546. package/dist/views/page-editor/sections/index.d.ts +16 -0
  1547. package/dist/views/page-editor/sections/index.d.ts.map +1 -0
  1548. package/dist/views/page-editor/sections/index.js +13 -0
  1549. package/dist/views/page-editor/sections/index.js.map +1 -0
  1550. package/dist/views/page-editor/sections/parts.d.ts +55 -0
  1551. package/dist/views/page-editor/sections/parts.d.ts.map +1 -0
  1552. package/dist/views/page-editor/sections/parts.js +60 -0
  1553. package/dist/views/page-editor/sections/parts.js.map +1 -0
  1554. package/dist/views/page-editor/useSitePreview.d.ts +47 -0
  1555. package/dist/views/page-editor/useSitePreview.d.ts.map +1 -0
  1556. package/dist/views/page-editor/useSitePreview.js +96 -0
  1557. package/dist/views/page-editor/useSitePreview.js.map +1 -0
  1558. package/dist/views/page-editor/viewports.d.ts +15 -0
  1559. package/dist/views/page-editor/viewports.d.ts.map +1 -0
  1560. package/dist/views/page-editor/viewports.js +13 -0
  1561. package/dist/views/page-editor/viewports.js.map +1 -0
  1562. package/dist/views/post-editor/PostEditorCanvas.d.ts +25 -0
  1563. package/dist/views/post-editor/PostEditorCanvas.d.ts.map +1 -0
  1564. package/dist/views/post-editor/PostEditorCanvas.js +65 -0
  1565. package/dist/views/post-editor/PostEditorCanvas.js.map +1 -0
  1566. package/dist/views/post-editor/PostFieldsModal.d.ts +27 -0
  1567. package/dist/views/post-editor/PostFieldsModal.d.ts.map +1 -0
  1568. package/dist/views/post-editor/PostFieldsModal.js +150 -0
  1569. package/dist/views/post-editor/PostFieldsModal.js.map +1 -0
  1570. package/dist/views/post-editor/PostHeader.d.ts +15 -0
  1571. package/dist/views/post-editor/PostHeader.d.ts.map +1 -0
  1572. package/dist/views/post-editor/PostHeader.js +28 -0
  1573. package/dist/views/post-editor/PostHeader.js.map +1 -0
  1574. package/dist/views/post-editor/PostHeaderPanel.d.ts +11 -0
  1575. package/dist/views/post-editor/PostHeaderPanel.d.ts.map +1 -0
  1576. package/dist/views/post-editor/PostHeaderPanel.js +23 -0
  1577. package/dist/views/post-editor/PostHeaderPanel.js.map +1 -0
  1578. package/dist/views/post-editor/PostPreview.d.ts +14 -0
  1579. package/dist/views/post-editor/PostPreview.d.ts.map +1 -0
  1580. package/dist/views/post-editor/PostPreview.js +63 -0
  1581. package/dist/views/post-editor/PostPreview.js.map +1 -0
  1582. package/dist/views/post-editor/PostSectionEditor.d.ts +47 -0
  1583. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -0
  1584. package/dist/views/post-editor/PostSectionEditor.js +497 -0
  1585. package/dist/views/post-editor/PostSectionEditor.js.map +1 -0
  1586. package/dist/views/post-editor/PostTemplateEditor.d.ts +9 -0
  1587. package/dist/views/post-editor/PostTemplateEditor.d.ts.map +1 -0
  1588. package/dist/views/post-editor/PostTemplateEditor.js +137 -0
  1589. package/dist/views/post-editor/PostTemplateEditor.js.map +1 -0
  1590. package/dist/views/profile/AccountSecurity.d.ts +2 -0
  1591. package/dist/views/profile/AccountSecurity.d.ts.map +1 -0
  1592. package/dist/views/profile/AccountSecurity.js +117 -0
  1593. package/dist/views/profile/AccountSecurity.js.map +1 -0
  1594. package/dist/views/profile/useMfaEnrollment.d.ts +35 -0
  1595. package/dist/views/profile/useMfaEnrollment.d.ts.map +1 -0
  1596. package/dist/views/profile/useMfaEnrollment.js +103 -0
  1597. package/dist/views/profile/useMfaEnrollment.js.map +1 -0
  1598. package/dist/views/seo/AuditTab.d.ts +8 -0
  1599. package/dist/views/seo/AuditTab.d.ts.map +1 -0
  1600. package/dist/views/seo/AuditTab.js +135 -0
  1601. package/dist/views/seo/AuditTab.js.map +1 -0
  1602. package/dist/views/seo/ContentTab.d.ts +5 -0
  1603. package/dist/views/seo/ContentTab.d.ts.map +1 -0
  1604. package/dist/views/seo/ContentTab.js +49 -0
  1605. package/dist/views/seo/ContentTab.js.map +1 -0
  1606. package/dist/views/seo/LinksTab.d.ts +4 -0
  1607. package/dist/views/seo/LinksTab.d.ts.map +1 -0
  1608. package/dist/views/seo/LinksTab.js +111 -0
  1609. package/dist/views/seo/LinksTab.js.map +1 -0
  1610. package/dist/views/seo/OverviewTab.d.ts +8 -0
  1611. package/dist/views/seo/OverviewTab.d.ts.map +1 -0
  1612. package/dist/views/seo/OverviewTab.js +35 -0
  1613. package/dist/views/seo/OverviewTab.js.map +1 -0
  1614. package/dist/views/seo/RedirectsTab.d.ts +2 -0
  1615. package/dist/views/seo/RedirectsTab.d.ts.map +1 -0
  1616. package/dist/views/seo/RedirectsTab.js +179 -0
  1617. package/dist/views/seo/RedirectsTab.js.map +1 -0
  1618. package/dist/views/seo/TechnicalTab.d.ts +2 -0
  1619. package/dist/views/seo/TechnicalTab.d.ts.map +1 -0
  1620. package/dist/views/seo/TechnicalTab.js +125 -0
  1621. package/dist/views/seo/TechnicalTab.js.map +1 -0
  1622. package/dist/views/seo/useSeoResource.d.ts +8 -0
  1623. package/dist/views/seo/useSeoResource.d.ts.map +1 -0
  1624. package/dist/views/seo/useSeoResource.js +55 -0
  1625. package/dist/views/seo/useSeoResource.js.map +1 -0
  1626. package/dist/views/settings/AISettingsTab.d.ts +8 -0
  1627. package/dist/views/settings/AISettingsTab.d.ts.map +1 -0
  1628. package/dist/views/settings/AISettingsTab.js +165 -0
  1629. package/dist/views/settings/AISettingsTab.js.map +1 -0
  1630. package/dist/views/settings/AccessProtectionCard.d.ts +14 -0
  1631. package/dist/views/settings/AccessProtectionCard.d.ts.map +1 -0
  1632. package/dist/views/settings/AccessProtectionCard.js +23 -0
  1633. package/dist/views/settings/AccessProtectionCard.js.map +1 -0
  1634. package/dist/views/settings/AdminThemeCard.d.ts +6 -0
  1635. package/dist/views/settings/AdminThemeCard.d.ts.map +1 -0
  1636. package/dist/views/settings/AdminThemeCard.js +31 -0
  1637. package/dist/views/settings/AdminThemeCard.js.map +1 -0
  1638. package/dist/views/settings/AiFeaturesCard.d.ts +17 -0
  1639. package/dist/views/settings/AiFeaturesCard.d.ts.map +1 -0
  1640. package/dist/views/settings/AiFeaturesCard.js +34 -0
  1641. package/dist/views/settings/AiFeaturesCard.js.map +1 -0
  1642. package/dist/views/settings/AppearanceTab.d.ts +7 -0
  1643. package/dist/views/settings/AppearanceTab.d.ts.map +1 -0
  1644. package/dist/views/settings/AppearanceTab.js +24 -0
  1645. package/dist/views/settings/AppearanceTab.js.map +1 -0
  1646. package/dist/views/settings/AuthMfaCard.d.ts +11 -0
  1647. package/dist/views/settings/AuthMfaCard.d.ts.map +1 -0
  1648. package/dist/views/settings/AuthMfaCard.js +34 -0
  1649. package/dist/views/settings/AuthMfaCard.js.map +1 -0
  1650. package/dist/views/settings/BrandPreviewCard.d.ts +5 -0
  1651. package/dist/views/settings/BrandPreviewCard.d.ts.map +1 -0
  1652. package/dist/views/settings/BrandPreviewCard.js +18 -0
  1653. package/dist/views/settings/BrandPreviewCard.js.map +1 -0
  1654. package/dist/views/settings/BrandVoiceCard.d.ts +54 -0
  1655. package/dist/views/settings/BrandVoiceCard.d.ts.map +1 -0
  1656. package/dist/views/settings/BrandVoiceCard.js +232 -0
  1657. package/dist/views/settings/BrandVoiceCard.js.map +1 -0
  1658. package/dist/views/settings/BrandingCard.d.ts +6 -0
  1659. package/dist/views/settings/BrandingCard.d.ts.map +1 -0
  1660. package/dist/views/settings/BrandingCard.js +72 -0
  1661. package/dist/views/settings/BrandingCard.js.map +1 -0
  1662. package/dist/views/settings/CapabilityBadges.d.ts +5 -0
  1663. package/dist/views/settings/CapabilityBadges.d.ts.map +1 -0
  1664. package/dist/views/settings/CapabilityBadges.js +26 -0
  1665. package/dist/views/settings/CapabilityBadges.js.map +1 -0
  1666. package/dist/views/settings/CaptchaStatusCard.d.ts +7 -0
  1667. package/dist/views/settings/CaptchaStatusCard.d.ts.map +1 -0
  1668. package/dist/views/settings/CaptchaStatusCard.js +49 -0
  1669. package/dist/views/settings/CaptchaStatusCard.js.map +1 -0
  1670. package/dist/views/settings/EmailSettingsTab.d.ts +4 -0
  1671. package/dist/views/settings/EmailSettingsTab.d.ts.map +1 -0
  1672. package/dist/views/settings/EmailSettingsTab.js +75 -0
  1673. package/dist/views/settings/EmailSettingsTab.js.map +1 -0
  1674. package/dist/views/settings/GeneralSettingsTab.d.ts +7 -0
  1675. package/dist/views/settings/GeneralSettingsTab.d.ts.map +1 -0
  1676. package/dist/views/settings/GeneralSettingsTab.js +19 -0
  1677. package/dist/views/settings/GeneralSettingsTab.js.map +1 -0
  1678. package/dist/views/settings/LanguageRegionCard.d.ts +10 -0
  1679. package/dist/views/settings/LanguageRegionCard.d.ts.map +1 -0
  1680. package/dist/views/settings/LanguageRegionCard.js +49 -0
  1681. package/dist/views/settings/LanguageRegionCard.js.map +1 -0
  1682. package/dist/views/settings/ModelSelector.d.ts +12 -0
  1683. package/dist/views/settings/ModelSelector.d.ts.map +1 -0
  1684. package/dist/views/settings/ModelSelector.js +29 -0
  1685. package/dist/views/settings/ModelSelector.js.map +1 -0
  1686. package/dist/views/settings/MonthlyUsageCard.d.ts +14 -0
  1687. package/dist/views/settings/MonthlyUsageCard.d.ts.map +1 -0
  1688. package/dist/views/settings/MonthlyUsageCard.js +30 -0
  1689. package/dist/views/settings/MonthlyUsageCard.js.map +1 -0
  1690. package/dist/views/settings/ProviderConnectionCard.d.ts +13 -0
  1691. package/dist/views/settings/ProviderConnectionCard.d.ts.map +1 -0
  1692. package/dist/views/settings/ProviderConnectionCard.js +48 -0
  1693. package/dist/views/settings/ProviderConnectionCard.js.map +1 -0
  1694. package/dist/views/settings/SecretsAuditCard.d.ts +11 -0
  1695. package/dist/views/settings/SecretsAuditCard.d.ts.map +1 -0
  1696. package/dist/views/settings/SecretsAuditCard.js +22 -0
  1697. package/dist/views/settings/SecretsAuditCard.js.map +1 -0
  1698. package/dist/views/settings/SecurityStatusCard.d.ts +6 -0
  1699. package/dist/views/settings/SecurityStatusCard.d.ts.map +1 -0
  1700. package/dist/views/settings/SecurityStatusCard.js +34 -0
  1701. package/dist/views/settings/SecurityStatusCard.js.map +1 -0
  1702. package/dist/views/settings/SecurityTab.d.ts +5 -0
  1703. package/dist/views/settings/SecurityTab.d.ts.map +1 -0
  1704. package/dist/views/settings/SecurityTab.js +43 -0
  1705. package/dist/views/settings/SecurityTab.js.map +1 -0
  1706. package/dist/views/settings/SeoRobotsDefaultsCard.d.ts +12 -0
  1707. package/dist/views/settings/SeoRobotsDefaultsCard.d.ts.map +1 -0
  1708. package/dist/views/settings/SeoRobotsDefaultsCard.js +45 -0
  1709. package/dist/views/settings/SeoRobotsDefaultsCard.js.map +1 -0
  1710. package/dist/views/settings/SeoSettingsTab.d.ts +7 -0
  1711. package/dist/views/settings/SeoSettingsTab.d.ts.map +1 -0
  1712. package/dist/views/settings/SeoSettingsTab.js +144 -0
  1713. package/dist/views/settings/SeoSettingsTab.js.map +1 -0
  1714. package/dist/views/settings/SessionPolicyCard.d.ts +10 -0
  1715. package/dist/views/settings/SessionPolicyCard.d.ts.map +1 -0
  1716. package/dist/views/settings/SessionPolicyCard.js +28 -0
  1717. package/dist/views/settings/SessionPolicyCard.js.map +1 -0
  1718. package/dist/views/settings/SiteIndexStatusCard.d.ts +12 -0
  1719. package/dist/views/settings/SiteIndexStatusCard.d.ts.map +1 -0
  1720. package/dist/views/settings/SiteIndexStatusCard.js +52 -0
  1721. package/dist/views/settings/SiteIndexStatusCard.js.map +1 -0
  1722. package/dist/views/settings/SiteInformationCard.d.ts +11 -0
  1723. package/dist/views/settings/SiteInformationCard.d.ts.map +1 -0
  1724. package/dist/views/settings/SiteInformationCard.js +21 -0
  1725. package/dist/views/settings/SiteInformationCard.js.map +1 -0
  1726. package/dist/views/settings/TypographyMotionCard.d.ts +6 -0
  1727. package/dist/views/settings/TypographyMotionCard.d.ts.map +1 -0
  1728. package/dist/views/settings/TypographyMotionCard.js +8 -0
  1729. package/dist/views/settings/TypographyMotionCard.js.map +1 -0
  1730. package/dist/views/settings/UpdatesTab.d.ts +6 -0
  1731. package/dist/views/settings/UpdatesTab.d.ts.map +1 -0
  1732. package/dist/views/settings/UpdatesTab.js +80 -0
  1733. package/dist/views/settings/UpdatesTab.js.map +1 -0
  1734. package/dist/views/settings/WebhooksTab.d.ts +4 -0
  1735. package/dist/views/settings/WebhooksTab.d.ts.map +1 -0
  1736. package/dist/views/settings/WebhooksTab.js +135 -0
  1737. package/dist/views/settings/WebhooksTab.js.map +1 -0
  1738. package/dist/views/settings/brand-voice/BrandVoiceAlignmentPanel.d.ts +13 -0
  1739. package/dist/views/settings/brand-voice/BrandVoiceAlignmentPanel.d.ts.map +1 -0
  1740. package/dist/views/settings/brand-voice/BrandVoiceAlignmentPanel.js +74 -0
  1741. package/dist/views/settings/brand-voice/BrandVoiceAlignmentPanel.js.map +1 -0
  1742. package/dist/views/settings/brand-voice/BrandVoiceRulesSections.d.ts +7 -0
  1743. package/dist/views/settings/brand-voice/BrandVoiceRulesSections.d.ts.map +1 -0
  1744. package/dist/views/settings/brand-voice/BrandVoiceRulesSections.js +54 -0
  1745. package/dist/views/settings/brand-voice/BrandVoiceRulesSections.js.map +1 -0
  1746. package/dist/views/settings/components.d.ts +88 -0
  1747. package/dist/views/settings/components.d.ts.map +1 -0
  1748. package/dist/views/settings/components.js +79 -0
  1749. package/dist/views/settings/components.js.map +1 -0
  1750. package/dist/views/settings/featureModel.d.ts +25 -0
  1751. package/dist/views/settings/featureModel.d.ts.map +1 -0
  1752. package/dist/views/settings/featureModel.js +45 -0
  1753. package/dist/views/settings/featureModel.js.map +1 -0
  1754. package/dist/views/settings/securityPrimitives.d.ts +29 -0
  1755. package/dist/views/settings/securityPrimitives.d.ts.map +1 -0
  1756. package/dist/views/settings/securityPrimitives.js +38 -0
  1757. package/dist/views/settings/securityPrimitives.js.map +1 -0
  1758. package/dist/views/settings/useAiSettings.d.ts +193 -0
  1759. package/dist/views/settings/useAiSettings.d.ts.map +1 -0
  1760. package/dist/views/settings/useAiSettings.js +430 -0
  1761. package/dist/views/settings/useAiSettings.js.map +1 -0
  1762. package/dist/views/settings/useAppearanceSettings.d.ts +83 -0
  1763. package/dist/views/settings/useAppearanceSettings.d.ts.map +1 -0
  1764. package/dist/views/settings/useAppearanceSettings.js +385 -0
  1765. package/dist/views/settings/useAppearanceSettings.js.map +1 -0
  1766. package/dist/views/settings/useEmailSettings.d.ts +58 -0
  1767. package/dist/views/settings/useEmailSettings.d.ts.map +1 -0
  1768. package/dist/views/settings/useEmailSettings.js +209 -0
  1769. package/dist/views/settings/useEmailSettings.js.map +1 -0
  1770. package/dist/views/settings/useGeneralSettings.d.ts +82 -0
  1771. package/dist/views/settings/useGeneralSettings.d.ts.map +1 -0
  1772. package/dist/views/settings/useGeneralSettings.js +299 -0
  1773. package/dist/views/settings/useGeneralSettings.js.map +1 -0
  1774. package/dist/views/settings/useSecuritySettings.d.ts +49 -0
  1775. package/dist/views/settings/useSecuritySettings.d.ts.map +1 -0
  1776. package/dist/views/settings/useSecuritySettings.js +197 -0
  1777. package/dist/views/settings/useSecuritySettings.js.map +1 -0
  1778. package/dist/views/settings/useSeoSettings.d.ts +87 -0
  1779. package/dist/views/settings/useSeoSettings.d.ts.map +1 -0
  1780. package/dist/views/settings/useSeoSettings.js +338 -0
  1781. package/dist/views/settings/useSeoSettings.js.map +1 -0
  1782. package/dist/views/settings/useUpdates.d.ts +67 -0
  1783. package/dist/views/settings/useUpdates.d.ts.map +1 -0
  1784. package/dist/views/settings/useUpdates.js +127 -0
  1785. package/dist/views/settings/useUpdates.js.map +1 -0
  1786. package/dist/views/users/UserDetailDrawer.d.ts +9 -0
  1787. package/dist/views/users/UserDetailDrawer.d.ts.map +1 -0
  1788. package/dist/views/users/UserDetailDrawer.js +248 -0
  1789. package/dist/views/users/UserDetailDrawer.js.map +1 -0
  1790. package/package.json +121 -0
  1791. package/src/AdminRoot.tsx +948 -0
  1792. package/src/LoginRoot.tsx +167 -0
  1793. package/src/__tests__/components/attribution-rows.test.ts +93 -0
  1794. package/src/__tests__/components/author-avatar.test.tsx +40 -0
  1795. package/src/__tests__/components/breadcrumbs-is-id.test.ts +32 -0
  1796. package/src/__tests__/components/comment-mark.test.ts +99 -0
  1797. package/src/__tests__/components/comment-side-panel.test.tsx +477 -0
  1798. package/src/__tests__/components/forms-pagination.render.test.tsx +49 -0
  1799. package/src/__tests__/components/inspector-pane.test.tsx +64 -0
  1800. package/src/__tests__/components/mentionable-textarea.test.tsx +226 -0
  1801. package/src/__tests__/components/modal.render.test.tsx +57 -0
  1802. package/src/__tests__/components/notification-bell.test.tsx +379 -0
  1803. package/src/__tests__/components/offline-status.test.tsx +66 -0
  1804. package/src/__tests__/components/posts-badges.test.tsx +82 -0
  1805. package/src/__tests__/components/presence-chips-helpers.test.ts +44 -0
  1806. package/src/__tests__/components/resizable-aside.test.tsx +130 -0
  1807. package/src/__tests__/components/seo-char-count.test.tsx +27 -0
  1808. package/src/__tests__/components/seo-editor-pane.render.test.tsx +112 -0
  1809. package/src/__tests__/components/tag-input.render.test.tsx +103 -0
  1810. package/src/__tests__/components/theme-provider-accent.test.tsx +84 -0
  1811. package/src/__tests__/components/toggle.test.tsx +17 -0
  1812. package/src/__tests__/components/ui-primitives.test.tsx +58 -0
  1813. package/src/__tests__/fields/component-block-helpers.test.ts +674 -0
  1814. package/src/__tests__/hooks/useAppearanceBootstrap.test.ts +69 -0
  1815. package/src/__tests__/hooks/useIdleLogout.test.tsx +188 -0
  1816. package/src/__tests__/layout/build-nav-items.test.ts +90 -0
  1817. package/src/__tests__/layout/primitives.test.ts +45 -0
  1818. package/src/__tests__/layout/sidebar-brand.render.test.tsx +142 -0
  1819. package/src/__tests__/layout/sidebar-forms-badge.render.test.tsx +50 -0
  1820. package/src/__tests__/layout/sidebar-forms-submenu.render.test.tsx +38 -0
  1821. package/src/__tests__/layout/sidebar-plugin-nav.test.ts +50 -0
  1822. package/src/__tests__/layout/sidebar-posts.test.ts +181 -0
  1823. package/src/__tests__/layout/sidebar-submenu.render.test.tsx +93 -0
  1824. package/src/__tests__/lib/active-editor.test.ts +70 -0
  1825. package/src/__tests__/lib/appearance-api.test.ts +41 -0
  1826. package/src/__tests__/lib/coauthor-client.test.ts +213 -0
  1827. package/src/__tests__/lib/collaboration-provider.test.ts +425 -0
  1828. package/src/__tests__/lib/collection-routes.test.ts +37 -0
  1829. package/src/__tests__/lib/comment-anchor.test.ts +188 -0
  1830. package/src/__tests__/lib/comments-client.test.ts +239 -0
  1831. package/src/__tests__/lib/cv.test.ts +84 -0
  1832. package/src/__tests__/lib/editor-preview.test.ts +21 -0
  1833. package/src/__tests__/lib/favicon.test.ts +56 -0
  1834. package/src/__tests__/lib/mention-picker.test.ts +145 -0
  1835. package/src/__tests__/lib/notifications-client.test.ts +339 -0
  1836. package/src/__tests__/lib/page-editor-service-api.test.ts +248 -0
  1837. package/src/__tests__/lib/page-editor-service.test.ts +190 -0
  1838. package/src/__tests__/lib/pages-service-fetch.test.ts +171 -0
  1839. package/src/__tests__/lib/pages-service.test.ts +157 -0
  1840. package/src/__tests__/lib/pages-tree.test.ts +246 -0
  1841. package/src/__tests__/lib/post-editor-service.test.ts +508 -0
  1842. package/src/__tests__/lib/post-types-service.test.ts +112 -0
  1843. package/src/__tests__/lib/posts-service.test.ts +250 -0
  1844. package/src/__tests__/lib/preview-bridge.test.ts +128 -0
  1845. package/src/__tests__/lib/preview-link-origin.test.ts +25 -0
  1846. package/src/__tests__/lib/preview-link.test.ts +86 -0
  1847. package/src/__tests__/lib/search.test.ts +129 -0
  1848. package/src/__tests__/lib/seo-service-errors.test.ts +60 -0
  1849. package/src/__tests__/lib/slash-command.test.ts +146 -0
  1850. package/src/__tests__/lib/useApiData.test.ts +140 -0
  1851. package/src/__tests__/lib/utils.test.ts +19 -0
  1852. package/src/__tests__/no-server-barrel-imports.test.ts +58 -0
  1853. package/src/__tests__/router/admin-routes.test.ts +74 -0
  1854. package/src/__tests__/router/match-route.test.ts +45 -0
  1855. package/src/__tests__/router/navigate-pushstate.test.ts +46 -0
  1856. package/src/__tests__/router/navigation-blocker.test.ts +99 -0
  1857. package/src/__tests__/router/plugin-nav-resolves.test.ts +51 -0
  1858. package/src/__tests__/router/query-string.test.ts +54 -0
  1859. package/src/__tests__/router/seo-tab-for-path.test.ts +44 -0
  1860. package/src/__tests__/router/strip-base.test.ts +30 -0
  1861. package/src/__tests__/styles/theme-token-scope.test.ts +67 -0
  1862. package/src/__tests__/views/account-security.render.test.tsx +140 -0
  1863. package/src/__tests__/views/admin-section-renderers.test.tsx +101 -0
  1864. package/src/__tests__/views/ai-settings.render.test.tsx +372 -0
  1865. package/src/__tests__/views/appearance-settings.render.test.tsx +244 -0
  1866. package/src/__tests__/views/article-body-section.render.test.tsx +32 -0
  1867. package/src/__tests__/views/collection-list-facets.render.test.tsx +148 -0
  1868. package/src/__tests__/views/collection-list-nav.render.test.tsx +108 -0
  1869. package/src/__tests__/views/dashboard.test.tsx +210 -0
  1870. package/src/__tests__/views/editor-top-bar.render.test.tsx +111 -0
  1871. package/src/__tests__/views/email-settings.render.test.tsx +225 -0
  1872. package/src/__tests__/views/form-editor.render.test.tsx +187 -0
  1873. package/src/__tests__/views/form-entries.render.test.tsx +174 -0
  1874. package/src/__tests__/views/form-submissions.render.test.tsx +158 -0
  1875. package/src/__tests__/views/forms-list.render.test.tsx +171 -0
  1876. package/src/__tests__/views/general-settings.render.test.tsx +166 -0
  1877. package/src/__tests__/views/login-branding.render.test.tsx +98 -0
  1878. package/src/__tests__/views/login-mfa.render.test.tsx +95 -0
  1879. package/src/__tests__/views/login-root.render.test.tsx +115 -0
  1880. package/src/__tests__/views/media-seo-audit.render.test.tsx +151 -0
  1881. package/src/__tests__/views/onboarding-block.render.test.tsx +193 -0
  1882. package/src/__tests__/views/page-builder-block-renderer.render.test.tsx +66 -0
  1883. package/src/__tests__/views/page-builder-form-picker.render.test.tsx +54 -0
  1884. package/src/__tests__/views/page-builder-sections-panel.render.test.tsx +138 -0
  1885. package/src/__tests__/views/page-builder-template-seed.render.test.tsx +59 -0
  1886. package/src/__tests__/views/page-section-editor.test.tsx +179 -0
  1887. package/src/__tests__/views/page-templates.render.test.tsx +182 -0
  1888. package/src/__tests__/views/pages-list-view.test.tsx +292 -0
  1889. package/src/__tests__/views/portal-container.test.tsx +70 -0
  1890. package/src/__tests__/views/post-fields-modal.render.test.tsx +176 -0
  1891. package/src/__tests__/views/post-section-editor.test.tsx +173 -0
  1892. package/src/__tests__/views/post-type-editor.render.test.tsx +116 -0
  1893. package/src/__tests__/views/posts-list-view.render.test.tsx +84 -0
  1894. package/src/__tests__/views/posts-list-view.test.ts +110 -0
  1895. package/src/__tests__/views/redirects-pane.render.test.tsx +164 -0
  1896. package/src/__tests__/views/script-tags.render.test.tsx +178 -0
  1897. package/src/__tests__/views/section-inspector-media.test.ts +23 -0
  1898. package/src/__tests__/views/section-inspector-repeater.render.test.tsx +90 -0
  1899. package/src/__tests__/views/security-settings.render.test.tsx +319 -0
  1900. package/src/__tests__/views/seo-content-pane.render.test.tsx +154 -0
  1901. package/src/__tests__/views/seo-settings.render.test.tsx +250 -0
  1902. package/src/__tests__/views/settings-save-footer.render.test.tsx +70 -0
  1903. package/src/__tests__/views/updates-tab.render.test.tsx +160 -0
  1904. package/src/__tests__/views/use-seo-resource.test.tsx +68 -0
  1905. package/src/__tests__/views/use-site-preview.render.test.tsx +164 -0
  1906. package/src/__tests__/views/user-detail-drawer.render.test.tsx +162 -0
  1907. package/src/__tests__/views/users-selected-deeplink.render.test.tsx +102 -0
  1908. package/src/__tests__/views/users.render.test.tsx +155 -0
  1909. package/src/assets/prenta-logo.tsx +61 -0
  1910. package/src/components/AICoauthorBubbleMenu.tsx +199 -0
  1911. package/src/components/BrandVoiceAlignmentBadge.tsx +39 -0
  1912. package/src/components/Breadcrumbs.tsx +111 -0
  1913. package/src/components/CoauthorResultPopover.tsx +254 -0
  1914. package/src/components/CommandPalette.tsx +602 -0
  1915. package/src/components/CommentMark.ts +138 -0
  1916. package/src/components/CommentSidePanel.tsx +544 -0
  1917. package/src/components/ContentOverviewChart.tsx +75 -0
  1918. package/src/components/EditorSeoAside.tsx +68 -0
  1919. package/src/components/EnabledSwitch.tsx +16 -0
  1920. package/src/components/ErrorBoundary.tsx +54 -0
  1921. package/src/components/FocalPointPicker.tsx +65 -0
  1922. package/src/components/FolderTree.tsx +460 -0
  1923. package/src/components/LivePreview.tsx +273 -0
  1924. package/src/components/LocaleProvider.tsx +57 -0
  1925. package/src/components/LocaleSwitcher.tsx +50 -0
  1926. package/src/components/LogoPlaceholder.tsx +55 -0
  1927. package/src/components/MediaPickerModal.tsx +282 -0
  1928. package/src/components/MentionableTextarea.tsx +328 -0
  1929. package/src/components/NotificationBell.tsx +334 -0
  1930. package/src/components/OfflineStatus.tsx +90 -0
  1931. package/src/components/PlanUpgradeCallout.tsx +42 -0
  1932. package/src/components/PresenceChips.tsx +154 -0
  1933. package/src/components/PresenceIndicator.tsx +74 -0
  1934. package/src/components/PublishSyncCard.tsx +178 -0
  1935. package/src/components/SEOConfigPanel.tsx +584 -0
  1936. package/src/components/SEOPanel.tsx +994 -0
  1937. package/src/components/SEOPerformance.tsx +158 -0
  1938. package/src/components/SchedulePublishDialog.tsx +266 -0
  1939. package/src/components/SharePreviewLinkDialog.tsx +234 -0
  1940. package/src/components/TagInput.tsx +196 -0
  1941. package/src/components/ThemeProvider.tsx +315 -0
  1942. package/src/components/TipTapEditor.tsx +765 -0
  1943. package/src/components/VersionHistory.tsx +194 -0
  1944. package/src/components/collections/EntryDetailPane.tsx +182 -0
  1945. package/src/components/forms/Drawer.tsx +71 -0
  1946. package/src/components/forms/EmbedPanel.tsx +176 -0
  1947. package/src/components/forms/EntriesTable.tsx +206 -0
  1948. package/src/components/forms/ExportMenu.tsx +70 -0
  1949. package/src/components/forms/FieldsPanel.tsx +385 -0
  1950. package/src/components/forms/FormEntryDetailPane.tsx +396 -0
  1951. package/src/components/forms/FormSchemaPane.tsx +192 -0
  1952. package/src/components/forms/NotificationsPanel.tsx +364 -0
  1953. package/src/components/forms/ShortcodeGlossary.tsx +146 -0
  1954. package/src/components/forms/WebhooksPanel.tsx +313 -0
  1955. package/src/components/forms/primitives.tsx +290 -0
  1956. package/src/components/pages/tag-badges.tsx +106 -0
  1957. package/src/components/posts/badges.tsx +144 -0
  1958. package/src/components/posts/icons.ts +40 -0
  1959. package/src/components/script-tags/ScriptTagEditorPane.tsx +510 -0
  1960. package/src/components/seo/Drawer.tsx +66 -0
  1961. package/src/components/seo/EditorSeoScoreBadge.tsx +26 -0
  1962. package/src/components/seo/RedirectEditorPane.tsx +271 -0
  1963. package/src/components/seo/SeoAccordion.tsx +76 -0
  1964. package/src/components/seo/SeoAnalysisList.tsx +113 -0
  1965. package/src/components/seo/SeoCharCount.tsx +44 -0
  1966. package/src/components/seo/SeoCopilotDrawer.tsx +76 -0
  1967. package/src/components/seo/SeoEditorPane.tsx +825 -0
  1968. package/src/components/seo/SeoInsightsMetrics.tsx +109 -0
  1969. package/src/components/seo/SeoIssueFixDrawer.tsx +246 -0
  1970. package/src/components/seo/SeoIssueFixPanel.tsx +620 -0
  1971. package/src/components/seo/SeoLinkingSection.tsx +151 -0
  1972. package/src/components/seo/primitives.tsx +228 -0
  1973. package/src/components/ui/AuthorAvatar.tsx +69 -0
  1974. package/src/components/ui/Avatar.tsx +42 -0
  1975. package/src/components/ui/Badge.tsx +79 -0
  1976. package/src/components/ui/Button.tsx +100 -0
  1977. package/src/components/ui/Card.tsx +118 -0
  1978. package/src/components/ui/CommandPalette.tsx +133 -0
  1979. package/src/components/ui/ConfirmDialog.tsx +52 -0
  1980. package/src/components/ui/DataTable.tsx +192 -0
  1981. package/src/components/ui/EmptyState.tsx +27 -0
  1982. package/src/components/ui/FilterPill.tsx +43 -0
  1983. package/src/components/ui/Input.tsx +33 -0
  1984. package/src/components/ui/InspectorPane.tsx +134 -0
  1985. package/src/components/ui/Modal.tsx +132 -0
  1986. package/src/components/ui/Pagination.tsx +94 -0
  1987. package/src/components/ui/PanelSection.tsx +53 -0
  1988. package/src/components/ui/ReauthDialog.tsx +93 -0
  1989. package/src/components/ui/ResizableAside.tsx +317 -0
  1990. package/src/components/ui/RowActions.tsx +50 -0
  1991. package/src/components/ui/SearchInput.tsx +59 -0
  1992. package/src/components/ui/Select.tsx +53 -0
  1993. package/src/components/ui/Skeleton.tsx +48 -0
  1994. package/src/components/ui/StatPill.tsx +37 -0
  1995. package/src/components/ui/StatusBadge.tsx +66 -0
  1996. package/src/components/ui/Toast.tsx +72 -0
  1997. package/src/components/ui/Toggle.tsx +86 -0
  1998. package/src/components/ui/form-control.ts +12 -0
  1999. package/src/components/ui/index.ts +61 -0
  2000. package/src/fields/ArrayField.tsx +110 -0
  2001. package/src/fields/BlockBuilderField.tsx +409 -0
  2002. package/src/fields/ComponentBlockField.tsx +179 -0
  2003. package/src/fields/DateField.tsx +49 -0
  2004. package/src/fields/FieldRenderer.tsx +92 -0
  2005. package/src/fields/GroupField.tsx +39 -0
  2006. package/src/fields/MediaField.tsx +46 -0
  2007. package/src/fields/NavBuilderField.tsx +188 -0
  2008. package/src/fields/NumberField.tsx +52 -0
  2009. package/src/fields/PropInput.tsx +540 -0
  2010. package/src/fields/RelationshipField.tsx +259 -0
  2011. package/src/fields/RichTextField.tsx +33 -0
  2012. package/src/fields/SelectField.tsx +125 -0
  2013. package/src/fields/SlugField.tsx +81 -0
  2014. package/src/fields/TextField.tsx +56 -0
  2015. package/src/fields/ToggleField.tsx +22 -0
  2016. package/src/fields/block-types.ts +121 -0
  2017. package/src/fields/component-block-helpers.ts +338 -0
  2018. package/src/fields/index.ts +21 -0
  2019. package/src/hooks/useAppearanceBootstrap.ts +40 -0
  2020. package/src/hooks/useBuilderState.ts +361 -0
  2021. package/src/hooks/useContentLock.ts +55 -0
  2022. package/src/hooks/useDebounce.ts +14 -0
  2023. package/src/hooks/useIdleLogout.ts +129 -0
  2024. package/src/hooks/useKeyboardShortcuts.ts +32 -0
  2025. package/src/hooks/usePublicSiteUrl.ts +77 -0
  2026. package/src/index.ts +152 -0
  2027. package/src/layout/Header.tsx +196 -0
  2028. package/src/layout/Layout.tsx +172 -0
  2029. package/src/layout/Sidebar.tsx +914 -0
  2030. package/src/layout/primitives/AdminShell.tsx +118 -0
  2031. package/src/layout/primitives/Box.tsx +30 -0
  2032. package/src/layout/primitives/Cluster.tsx +74 -0
  2033. package/src/layout/primitives/Grid.tsx +120 -0
  2034. package/src/layout/primitives/PageContainer.tsx +92 -0
  2035. package/src/layout/primitives/Split.tsx +73 -0
  2036. package/src/layout/primitives/Stack.tsx +67 -0
  2037. package/src/layout/primitives/index.ts +36 -0
  2038. package/src/layout/primitives/tokens.ts +83 -0
  2039. package/src/lib/active-editor.ts +39 -0
  2040. package/src/lib/admin-root-element.ts +15 -0
  2041. package/src/lib/api.ts +112 -0
  2042. package/src/lib/appearance-api.ts +84 -0
  2043. package/src/lib/brand-voice-client.ts +38 -0
  2044. package/src/lib/coauthor-client.ts +164 -0
  2045. package/src/lib/collaboration-provider.ts +306 -0
  2046. package/src/lib/collection-routes.ts +35 -0
  2047. package/src/lib/collection-schema.ts +62 -0
  2048. package/src/lib/comment-anchor.ts +179 -0
  2049. package/src/lib/comments-client.ts +208 -0
  2050. package/src/lib/cv.ts +103 -0
  2051. package/src/lib/editor-preview.ts +12 -0
  2052. package/src/lib/editor-seo-content.ts +144 -0
  2053. package/src/lib/favicon.ts +46 -0
  2054. package/src/lib/forms-events.ts +32 -0
  2055. package/src/lib/forms-service.ts +569 -0
  2056. package/src/lib/mention-picker.ts +180 -0
  2057. package/src/lib/notifications-client.ts +292 -0
  2058. package/src/lib/page-editor-service.ts +317 -0
  2059. package/src/lib/pages-service.ts +684 -0
  2060. package/src/lib/pages-tree.ts +199 -0
  2061. package/src/lib/plan.ts +44 -0
  2062. package/src/lib/portal-container.ts +15 -0
  2063. package/src/lib/post-editor-service.ts +452 -0
  2064. package/src/lib/post-types-service.ts +129 -0
  2065. package/src/lib/posts-service.ts +324 -0
  2066. package/src/lib/preview-bridge.ts +209 -0
  2067. package/src/lib/preview-link.ts +116 -0
  2068. package/src/lib/root-chrome.ts +40 -0
  2069. package/src/lib/search.ts +59 -0
  2070. package/src/lib/sentry.ts +32 -0
  2071. package/src/lib/seo-service.ts +1150 -0
  2072. package/src/lib/slash-command.ts +67 -0
  2073. package/src/lib/useApiData.ts +143 -0
  2074. package/src/lib/utils.ts +6 -0
  2075. package/src/router/admin-routes.ts +145 -0
  2076. package/src/router/index.ts +178 -0
  2077. package/src/styles/build-input.css +11 -0
  2078. package/src/styles/prenta-tokens.css +141 -0
  2079. package/src/styles/tailwind.css +11 -0
  2080. package/src/styles/theme.css +396 -0
  2081. package/src/views/ApiKeys.tsx +562 -0
  2082. package/src/views/CollectionList.tsx +654 -0
  2083. package/src/views/Dashboard.tsx +1097 -0
  2084. package/src/views/DocumentEdit.tsx +596 -0
  2085. package/src/views/ForgotPassword.tsx +143 -0
  2086. package/src/views/FormDeliveries.tsx +223 -0
  2087. package/src/views/FormEditor.tsx +744 -0
  2088. package/src/views/FormEntries.tsx +425 -0
  2089. package/src/views/FormSubmissions.tsx +424 -0
  2090. package/src/views/Forms.tsx +439 -0
  2091. package/src/views/HiddenLoginNotFound.tsx +51 -0
  2092. package/src/views/Login.tsx +608 -0
  2093. package/src/views/MediaBrowser.tsx +1302 -0
  2094. package/src/views/MediaSeoAudit.tsx +368 -0
  2095. package/src/views/PageEditor.tsx +198 -0
  2096. package/src/views/Pages/PageTagManager.tsx +434 -0
  2097. package/src/views/Pages/PagesListView.tsx +1464 -0
  2098. package/src/views/Pages/PagesTreeTable.tsx +430 -0
  2099. package/src/views/Pages.tsx +598 -0
  2100. package/src/views/Posts/NewPostPicker.tsx +146 -0
  2101. package/src/views/Posts/NewPostTypeInstructions.tsx +342 -0
  2102. package/src/views/Posts/PostTypeEditor.tsx +568 -0
  2103. package/src/views/Posts/PostTypesView.tsx +194 -0
  2104. package/src/views/Posts/PostsListView.tsx +1007 -0
  2105. package/src/views/Posts/post-type-presets.ts +56 -0
  2106. package/src/views/Profile.tsx +56 -0
  2107. package/src/views/Redirects.tsx +358 -0
  2108. package/src/views/ResetPassword.tsx +206 -0
  2109. package/src/views/SEO.tsx +284 -0
  2110. package/src/views/ScriptTags.tsx +533 -0
  2111. package/src/views/Settings.tsx +372 -0
  2112. package/src/views/SetupWizard.tsx +239 -0
  2113. package/src/views/Users.tsx +1248 -0
  2114. package/src/views/dashboard/OnboardingBlock.tsx +233 -0
  2115. package/src/views/page-builder/AIBlockAssist.tsx +64 -0
  2116. package/src/views/page-builder/AIGenerateDialog.tsx +593 -0
  2117. package/src/views/page-builder/BlockEditor.tsx +523 -0
  2118. package/src/views/page-builder/BlockPicker.tsx +324 -0
  2119. package/src/views/page-builder/BottomBar.tsx +65 -0
  2120. package/src/views/page-builder/BuilderSectionsPanel.tsx +304 -0
  2121. package/src/views/page-builder/BuilderToolbar.tsx +221 -0
  2122. package/src/views/page-builder/ContextPanel.tsx +145 -0
  2123. package/src/views/page-builder/DesignScore.tsx +251 -0
  2124. package/src/views/page-builder/NodeSettings.tsx +500 -0
  2125. package/src/views/page-builder/PageBuilder.tsx +405 -0
  2126. package/src/views/page-builder/PageSettings.tsx +162 -0
  2127. package/src/views/page-builder/PageTemplates.tsx +435 -0
  2128. package/src/views/page-builder/RelationshipField.tsx +113 -0
  2129. package/src/views/page-builder/SEOPanel.tsx +464 -0
  2130. package/src/views/page-builder/SavedSections.tsx +480 -0
  2131. package/src/views/page-builder/TemplatePicker.tsx +197 -0
  2132. package/src/views/page-builder/Widgets.tsx +44 -0
  2133. package/src/views/page-builder/block-renderers/CTAPreview.tsx +79 -0
  2134. package/src/views/page-builder/block-renderers/CardsPreview.tsx +69 -0
  2135. package/src/views/page-builder/block-renderers/CodePreview.tsx +46 -0
  2136. package/src/views/page-builder/block-renderers/FAQPreview.tsx +87 -0
  2137. package/src/views/page-builder/block-renderers/FallbackPreview.tsx +18 -0
  2138. package/src/views/page-builder/block-renderers/FormPreview.tsx +117 -0
  2139. package/src/views/page-builder/block-renderers/GalleryPreview.tsx +87 -0
  2140. package/src/views/page-builder/block-renderers/HeroPreview.tsx +90 -0
  2141. package/src/views/page-builder/block-renderers/ImagePreview.tsx +54 -0
  2142. package/src/views/page-builder/block-renderers/TextPreview.tsx +81 -0
  2143. package/src/views/page-builder/block-renderers/VideoPreview.tsx +73 -0
  2144. package/src/views/page-builder/block-renderers/index.ts +34 -0
  2145. package/src/views/page-builder/canvas/BlockRenderer.tsx +56 -0
  2146. package/src/views/page-builder/canvas/BuilderCanvas.tsx +87 -0
  2147. package/src/views/page-builder/canvas/ColumnRenderer.tsx +82 -0
  2148. package/src/views/page-builder/canvas/ContainerRenderer.tsx +67 -0
  2149. package/src/views/page-builder/canvas/RowRenderer.tsx +68 -0
  2150. package/src/views/page-builder/canvas/SectionRenderer.tsx +93 -0
  2151. package/src/views/page-builder/canvas/index.ts +2 -0
  2152. package/src/views/page-editor/AddSectionModal.tsx +56 -0
  2153. package/src/views/page-editor/EditorCanvas.tsx +142 -0
  2154. package/src/views/page-editor/EditorTopBar.tsx +431 -0
  2155. package/src/views/page-editor/PagePreview.tsx +105 -0
  2156. package/src/views/page-editor/PageSectionEditor.tsx +852 -0
  2157. package/src/views/page-editor/PageSettingsModal.tsx +225 -0
  2158. package/src/views/page-editor/SectionInspector.tsx +808 -0
  2159. package/src/views/page-editor/SectionsPanel.tsx +287 -0
  2160. package/src/views/page-editor/SitePreviewFrame.tsx +215 -0
  2161. package/src/views/page-editor/StructureNotice.tsx +61 -0
  2162. package/src/views/page-editor/ValidationSummary.tsx +53 -0
  2163. package/src/views/page-editor/section-icons.ts +35 -0
  2164. package/src/views/page-editor/section-types.ts +32 -0
  2165. package/src/views/page-editor/sections/ArticleBodySection.tsx +50 -0
  2166. package/src/views/page-editor/sections/AuthorBioSection.tsx +61 -0
  2167. package/src/views/page-editor/sections/ByTheNumbersSection.tsx +41 -0
  2168. package/src/views/page-editor/sections/CtaBannerSection.tsx +29 -0
  2169. package/src/views/page-editor/sections/EmbedSection.tsx +43 -0
  2170. package/src/views/page-editor/sections/FeatureHighlightSection.tsx +65 -0
  2171. package/src/views/page-editor/sections/GallerySection.tsx +56 -0
  2172. package/src/views/page-editor/sections/HeroBannerSection.tsx +44 -0
  2173. package/src/views/page-editor/sections/MissionSection.tsx +24 -0
  2174. package/src/views/page-editor/sections/PullQuoteSection.tsx +27 -0
  2175. package/src/views/page-editor/sections/RelatedPostsSection.tsx +55 -0
  2176. package/src/views/page-editor/sections/SectionRenderer.tsx +184 -0
  2177. package/src/views/page-editor/sections/WidgetEmbedSection.tsx +32 -0
  2178. package/src/views/page-editor/sections/admin-renderers.tsx +105 -0
  2179. package/src/views/page-editor/sections/index.ts +25 -0
  2180. package/src/views/page-editor/sections/parts.tsx +113 -0
  2181. package/src/views/page-editor/useSitePreview.ts +158 -0
  2182. package/src/views/page-editor/viewports.ts +26 -0
  2183. package/src/views/post-editor/PostEditorCanvas.tsx +140 -0
  2184. package/src/views/post-editor/PostFieldsModal.tsx +423 -0
  2185. package/src/views/post-editor/PostHeader.tsx +85 -0
  2186. package/src/views/post-editor/PostHeaderPanel.tsx +101 -0
  2187. package/src/views/post-editor/PostPreview.tsx +125 -0
  2188. package/src/views/post-editor/PostSectionEditor.tsx +878 -0
  2189. package/src/views/post-editor/PostTemplateEditor.tsx +341 -0
  2190. package/src/views/profile/AccountSecurity.tsx +406 -0
  2191. package/src/views/profile/useMfaEnrollment.ts +120 -0
  2192. package/src/views/seo/AuditTab.tsx +365 -0
  2193. package/src/views/seo/ContentTab.tsx +203 -0
  2194. package/src/views/seo/LinksTab.tsx +462 -0
  2195. package/src/views/seo/OverviewTab.tsx +257 -0
  2196. package/src/views/seo/RedirectsTab.tsx +529 -0
  2197. package/src/views/seo/TechnicalTab.tsx +421 -0
  2198. package/src/views/seo/useSeoResource.ts +66 -0
  2199. package/src/views/settings/AISettingsTab.tsx +452 -0
  2200. package/src/views/settings/AccessProtectionCard.tsx +173 -0
  2201. package/src/views/settings/AdminThemeCard.tsx +145 -0
  2202. package/src/views/settings/AiFeaturesCard.tsx +148 -0
  2203. package/src/views/settings/AppearanceTab.tsx +81 -0
  2204. package/src/views/settings/AuthMfaCard.tsx +133 -0
  2205. package/src/views/settings/BrandPreviewCard.tsx +125 -0
  2206. package/src/views/settings/BrandVoiceCard.tsx +672 -0
  2207. package/src/views/settings/BrandingCard.tsx +377 -0
  2208. package/src/views/settings/CapabilityBadges.tsx +66 -0
  2209. package/src/views/settings/CaptchaStatusCard.tsx +119 -0
  2210. package/src/views/settings/EmailSettingsTab.tsx +436 -0
  2211. package/src/views/settings/GeneralSettingsTab.tsx +126 -0
  2212. package/src/views/settings/LanguageRegionCard.tsx +117 -0
  2213. package/src/views/settings/ModelSelector.tsx +115 -0
  2214. package/src/views/settings/MonthlyUsageCard.tsx +115 -0
  2215. package/src/views/settings/ProviderConnectionCard.tsx +245 -0
  2216. package/src/views/settings/SecretsAuditCard.tsx +129 -0
  2217. package/src/views/settings/SecurityStatusCard.tsx +107 -0
  2218. package/src/views/settings/SecurityTab.tsx +188 -0
  2219. package/src/views/settings/SeoRobotsDefaultsCard.tsx +151 -0
  2220. package/src/views/settings/SeoSettingsTab.tsx +794 -0
  2221. package/src/views/settings/SessionPolicyCard.tsx +159 -0
  2222. package/src/views/settings/SiteIndexStatusCard.tsx +172 -0
  2223. package/src/views/settings/SiteInformationCard.tsx +120 -0
  2224. package/src/views/settings/TypographyMotionCard.tsx +65 -0
  2225. package/src/views/settings/UpdatesTab.tsx +545 -0
  2226. package/src/views/settings/WebhooksTab.tsx +353 -0
  2227. package/src/views/settings/brand-voice/BrandVoiceAlignmentPanel.tsx +205 -0
  2228. package/src/views/settings/brand-voice/BrandVoiceRulesSections.tsx +321 -0
  2229. package/src/views/settings/components.tsx +319 -0
  2230. package/src/views/settings/featureModel.ts +64 -0
  2231. package/src/views/settings/securityPrimitives.tsx +80 -0
  2232. package/src/views/settings/useAiSettings.ts +683 -0
  2233. package/src/views/settings/useAppearanceSettings.ts +550 -0
  2234. package/src/views/settings/useEmailSettings.ts +296 -0
  2235. package/src/views/settings/useGeneralSettings.ts +392 -0
  2236. package/src/views/settings/useSecuritySettings.ts +253 -0
  2237. package/src/views/settings/useSeoSettings.ts +447 -0
  2238. package/src/views/settings/useUpdates.ts +183 -0
  2239. package/src/views/users/UserDetailDrawer.tsx +994 -0
@@ -0,0 +1,1464 @@
1
+ 'use client'
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
4
+ import {
5
+ Check,
6
+ ChevronDown,
7
+ ChevronLeft,
8
+ ChevronRight,
9
+ ChevronUp,
10
+ Columns3,
11
+ Copy,
12
+ List,
13
+ ListTree,
14
+ PenLine,
15
+ Plus,
16
+ Search,
17
+ Tag as TagIcon,
18
+ Trash2,
19
+ X,
20
+ } from 'lucide-react'
21
+ import { toast } from 'sonner'
22
+ import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
23
+ import { adminPortalContainer } from '../../lib/portal-container.js'
24
+ import {
25
+ applyPagesQuery,
26
+ bulkChangePageTags,
27
+ bulkDeletePages,
28
+ bulkUpdatePages,
29
+ deletePage,
30
+ duplicatePage,
31
+ fetchPagesDataset,
32
+ groupPages,
33
+ movePage,
34
+ type BulkResult,
35
+ type Page,
36
+ type PageGroupBy,
37
+ type PagesDataset,
38
+ type PageStatus,
39
+ type PageTag,
40
+ } from '../../lib/pages-service.js'
41
+ import {
42
+ buildPageTree,
43
+ checkReparent,
44
+ defaultExpandedIds,
45
+ flattenPageTree,
46
+ } from '../../lib/pages-tree.js'
47
+ import { PostStatusBadge, SeoScoreIndicator } from '../../components/posts/badges.js'
48
+ import { PageTagChip, PageTagsCell } from '../../components/pages/tag-badges.js'
49
+ import { AuthorAvatar } from '../../components/ui/AuthorAvatar.js'
50
+ import { Button } from '../../components/ui/Button.js'
51
+ import { ConfirmDialog } from '../../components/ui/ConfirmDialog.js'
52
+ import { RowActionButton, RowActions } from '../../components/ui/RowActions.js'
53
+ import { PagesTreeTable } from './PagesTreeTable.js'
54
+
55
+ /**
56
+ * Pages management surface — table with a tag-chip filter bar, group-by,
57
+ * status filter, sortable headers, bulk actions, and pagination. Data
58
+ * flows through pages-service so a future server-side aggregate only
59
+ * touches the service file.
60
+ *
61
+ * Routing:
62
+ * - Row click → /pages/:id/edit (the page builder).
63
+ * - "+ New page" lives in the top bar (computePageActions).
64
+ * - "Manage tags" (in the tag bar) → /pages/tags.
65
+ */
66
+
67
+ interface PagesListViewProps {
68
+ onNavigate: (path: string) => void
69
+ }
70
+
71
+ type SortBy = 'title' | 'author' | 'status' | 'modified' | 'seo'
72
+ type Dir = 'asc' | 'desc'
73
+ type ViewMode = 'list' | 'tree'
74
+
75
+ /** Optional flat-list columns the user can hide (design's "Tweaks" panel). */
76
+ type ToggleableColumn = 'tags' | 'author' | 'seo'
77
+ const TOGGLEABLE_COLUMNS: Array<{ key: ToggleableColumn; label: string }> = [
78
+ { key: 'tags', label: 'Tags' },
79
+ { key: 'author', label: 'Author' },
80
+ { key: 'seo', label: 'SEO score' },
81
+ ]
82
+
83
+ const PAGE_SIZE = 25
84
+ const VIEW_MODE_KEY = 'prenta.pages.viewMode'
85
+ const HIDDEN_COLUMNS_KEY = 'prenta.pages.hiddenColumns'
86
+
87
+ function readStoredViewMode(): ViewMode {
88
+ if (typeof window === 'undefined') return 'list'
89
+ try {
90
+ return localStorage.getItem(VIEW_MODE_KEY) === 'tree' ? 'tree' : 'list'
91
+ } catch {
92
+ return 'list'
93
+ }
94
+ }
95
+
96
+ function readStoredHiddenColumns(): Set<ToggleableColumn> {
97
+ if (typeof window === 'undefined') return new Set()
98
+ try {
99
+ const raw = localStorage.getItem(HIDDEN_COLUMNS_KEY)
100
+ if (!raw) return new Set()
101
+ const known = new Set(TOGGLEABLE_COLUMNS.map((c) => c.key))
102
+ const parsed: unknown = JSON.parse(raw)
103
+ if (!Array.isArray(parsed)) return new Set()
104
+ return new Set(parsed.filter((v): v is ToggleableColumn => known.has(v as ToggleableColumn)))
105
+ } catch {
106
+ return new Set()
107
+ }
108
+ }
109
+
110
+ export function PagesListView({ onNavigate }: PagesListViewProps) {
111
+ const [search, setSearch] = useState('')
112
+ const [debouncedSearch, setDebouncedSearch] = useState('')
113
+ const [status, setStatus] = useState<PageStatus | 'all'>('all')
114
+ const [groupBy, setGroupBy] = useState<PageGroupBy>('none')
115
+ const [selectedTags, setSelectedTags] = useState<Set<string>>(new Set())
116
+ const [sortBy, setSortBy] = useState<SortBy>('title')
117
+ const [dir, setDir] = useState<Dir>('asc')
118
+ const [page, setPage] = useState(1)
119
+ const [selected, setSelected] = useState<Set<string>>(new Set())
120
+ const [viewMode, setViewMode] = useState<ViewMode>(readStoredViewMode)
121
+ const [hiddenCols, setHiddenCols] = useState<Set<ToggleableColumn>>(readStoredHiddenColumns)
122
+ // null = "not yet touched" → falls back to the default expand state
123
+ // (all root nodes with children open) computed from the current tree.
124
+ const [expandedOverride, setExpandedOverride] = useState<Set<string> | null>(null)
125
+
126
+ const [dataset, setDataset] = useState<PagesDataset | null>(null)
127
+ const [loading, setLoading] = useState(true)
128
+ const [error, setError] = useState<string | null>(null)
129
+ const [refreshToken, setRefreshToken] = useState(0)
130
+ const [pendingDelete, setPendingDelete] = useState(false)
131
+ const [rowDelete, setRowDelete] = useState<Page | null>(null)
132
+
133
+ const debounceTimer = useRef<ReturnType<typeof setTimeout> | null>(null)
134
+ useEffect(() => {
135
+ if (debounceTimer.current) clearTimeout(debounceTimer.current)
136
+ debounceTimer.current = setTimeout(() => {
137
+ setDebouncedSearch(search.trim())
138
+ setPage(1)
139
+ }, 250)
140
+ return () => {
141
+ if (debounceTimer.current) clearTimeout(debounceTimer.current)
142
+ }
143
+ }, [search])
144
+
145
+ const tagIds = useMemo(() => [...selectedTags], [selectedTags])
146
+
147
+ // Single network read. Search / sort / group / paging are applied in
148
+ // memory below, so changing any of those never re-fetches. The dataset
149
+ // refreshes only on mount and after a mutation (refreshToken bump).
150
+ useEffect(() => {
151
+ let cancelled = false
152
+ setLoading(true)
153
+ setError(null)
154
+ fetchPagesDataset()
155
+ .then((res) => {
156
+ if (cancelled) return
157
+ setDataset(res)
158
+ setLoading(false)
159
+ })
160
+ .catch((err: unknown) => {
161
+ if (cancelled) return
162
+ setError(err instanceof Error ? err.message : 'Failed to load pages')
163
+ setLoading(false)
164
+ })
165
+ return () => {
166
+ cancelled = true
167
+ }
168
+ }, [refreshToken])
169
+
170
+ // Reset paging/selection when the active filters change shape.
171
+ useEffect(() => {
172
+ setPage(1)
173
+ setSelected(new Set())
174
+ }, [debouncedSearch, status, tagIds, groupBy])
175
+
176
+ const allPages = useMemo(() => dataset?.pages ?? [], [dataset])
177
+ const tags = useMemo(() => dataset?.tags ?? [], [dataset])
178
+ const grandTotal = allPages.length
179
+ const grouped = groupBy !== 'none'
180
+
181
+ const filtered = useMemo(
182
+ () =>
183
+ applyPagesQuery(allPages, {
184
+ status,
185
+ tagIds,
186
+ search: debouncedSearch,
187
+ sortBy,
188
+ sortDirection: dir,
189
+ }),
190
+ [allPages, status, tagIds, debouncedSearch, sortBy, dir],
191
+ )
192
+ const total = filtered.length
193
+ const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE))
194
+
195
+ // Pagination only applies to the flat view; grouped views render every
196
+ // match so the buckets stay complete.
197
+ const pages = useMemo(
198
+ () => (grouped ? filtered : filtered.slice((page - 1) * PAGE_SIZE, page * PAGE_SIZE)),
199
+ [filtered, grouped, page],
200
+ )
201
+
202
+ const tagBySlug = useMemo(() => {
203
+ const m = new Map<string, PageTag>()
204
+ for (const t of tags) m.set(t.slug, t)
205
+ return m
206
+ }, [tags])
207
+
208
+ const displayGroups = useMemo(() => groupPages(pages, groupBy, tags), [pages, groupBy, tags])
209
+
210
+ // ─── Tree mode ─────────────────────────────────────────────────────
211
+
212
+ const treeMode = viewMode === 'tree'
213
+ const treeRoots = useMemo(() => buildPageTree(allPages), [allPages])
214
+ const defaultExpanded = useMemo(() => defaultExpandedIds(treeRoots), [treeRoots])
215
+ const expanded = expandedOverride ?? defaultExpanded
216
+
217
+ // Per the design, an active search or status filter flattens the tree:
218
+ // every match renders at depth 0 and expand state is ignored. (Tag
219
+ // filters and group-by don't apply in tree mode — the hierarchy *is*
220
+ // the grouping.)
221
+ const treeFiltersActive = debouncedSearch !== '' || status !== 'all'
222
+ const treeRows = useMemo(() => {
223
+ if (treeFiltersActive) {
224
+ return applyPagesQuery(allPages, {
225
+ status,
226
+ search: debouncedSearch,
227
+ sortBy: 'title',
228
+ sortDirection: 'asc',
229
+ }).map((p) => ({ page: p, depth: 0, hasChildren: false }))
230
+ }
231
+ return flattenPageTree(treeRoots, expanded)
232
+ }, [treeFiltersActive, allPages, status, debouncedSearch, treeRoots, expanded])
233
+
234
+ const toggleExpand = (id: string) =>
235
+ setExpandedOverride((prev) => {
236
+ const next = new Set(prev ?? defaultExpanded)
237
+ if (next.has(id)) next.delete(id)
238
+ else next.add(id)
239
+ return next
240
+ })
241
+
242
+ const changeViewMode = (mode: ViewMode) => {
243
+ if (mode === viewMode) return
244
+ setViewMode(mode)
245
+ setSelected(new Set())
246
+ try {
247
+ localStorage.setItem(VIEW_MODE_KEY, mode)
248
+ } catch {
249
+ /* storage unavailable (private mode) — the toggle still works for the session */
250
+ }
251
+ }
252
+
253
+ const toggleColumn = (key: ToggleableColumn) => {
254
+ setHiddenCols((prev) => {
255
+ const next = new Set(prev)
256
+ if (next.has(key)) next.delete(key)
257
+ else next.add(key)
258
+ try {
259
+ localStorage.setItem(HIDDEN_COLUMNS_KEY, JSON.stringify([...next]))
260
+ } catch {
261
+ /* storage unavailable — the choice still applies for the session */
262
+ }
263
+ return next
264
+ })
265
+ // Hiding the column you're sorted by would leave an invisible sort —
266
+ // fall back to the default title sort instead.
267
+ if ((key === 'author' && sortBy === 'author') || (key === 'seo' && sortBy === 'seo')) {
268
+ setSortBy('title')
269
+ setDir('asc')
270
+ }
271
+ }
272
+
273
+ const showTags = !hiddenCols.has('tags')
274
+ const showAuthor = !hiddenCols.has('author')
275
+ const showSeo = !hiddenCols.has('seo')
276
+ // checkbox + title + status + modified + actions are always visible.
277
+ const columnCount = 5 + (showTags ? 1 : 0) + (showAuthor ? 1 : 0) + (showSeo ? 1 : 0)
278
+ // The table is `table-fixed`, so the flexible Title column only gets
279
+ // whatever the min-width leaves after the fixed columns (400px always
280
+ // visible + optional ones). Keep ≥240px for the title or it collapses
281
+ // and headers overlap on narrow viewports.
282
+ const tableMinWidth =
283
+ 400 + 240 + (showTags ? 200 : 0) + (showAuthor ? 170 : 0) + (showSeo ? 80 : 0)
284
+
285
+ const handleSort = useCallback(
286
+ (field: SortBy) => {
287
+ if (sortBy === field) {
288
+ setDir((d) => (d === 'asc' ? 'desc' : 'asc'))
289
+ } else {
290
+ setSortBy(field)
291
+ setDir(field === 'modified' || field === 'seo' ? 'desc' : 'asc')
292
+ }
293
+ },
294
+ [sortBy],
295
+ )
296
+
297
+ // `aria-sort` belongs on the column header cell (`<th>`), not the button
298
+ // inside it — assistive tech reads sort state from the header.
299
+ const ariaSortFor = (field: SortBy): 'ascending' | 'descending' | 'none' =>
300
+ sortBy === field ? (dir === 'asc' ? 'ascending' : 'descending') : 'none'
301
+
302
+ const filtersAreActive = debouncedSearch !== '' || status !== 'all' || selectedTags.size > 0
303
+
304
+ const clearFilters = () => {
305
+ setSearch('')
306
+ setStatus('all')
307
+ setSelectedTags(new Set())
308
+ setPage(1)
309
+ }
310
+
311
+ const toggleTag = (slug: string) =>
312
+ setSelectedTags((s) => {
313
+ const next = new Set(s)
314
+ if (next.has(slug)) next.delete(slug)
315
+ else next.add(slug)
316
+ return next
317
+ })
318
+
319
+ // ─── Selection ─────────────────────────────────────────────────────
320
+
321
+ const toggleOne = (id: string) =>
322
+ setSelected((s) => {
323
+ const next = new Set(s)
324
+ if (next.has(id)) next.delete(id)
325
+ else next.add(id)
326
+ return next
327
+ })
328
+
329
+ // Selection operates over the rows currently visible in the active
330
+ // view mode (paged flat list, or visible tree rows).
331
+ const visiblePages = useMemo(
332
+ () => (treeMode ? treeRows.map((r) => r.page) : pages),
333
+ [treeMode, treeRows, pages],
334
+ )
335
+
336
+ const allOnPageSelected = visiblePages.length > 0 && visiblePages.every((p) => selected.has(p.id))
337
+ const toggleAllOnPage = (checked: boolean) =>
338
+ setSelected((s) => {
339
+ const next = new Set(s)
340
+ if (checked) for (const p of visiblePages) next.add(p.id)
341
+ else for (const p of visiblePages) next.delete(p.id)
342
+ return next
343
+ })
344
+
345
+ const selectedPages = useMemo(
346
+ () => visiblePages.filter((p) => selected.has(p.id)),
347
+ [visiblePages, selected],
348
+ )
349
+ const deletablePages = useMemo(() => selectedPages.filter((p) => !p.isHomepage), [selectedPages])
350
+ const blockedHomepage = selectedPages.length !== deletablePages.length
351
+
352
+ // ─── Bulk actions ──────────────────────────────────────────────────
353
+
354
+ const afterBulk = () => {
355
+ setSelected(new Set())
356
+ setRefreshToken((t) => t + 1)
357
+ }
358
+
359
+ // Bulk service calls always resolve a { ok, failed } tally (they never
360
+ // reject), so we promote a *total* failure to a rejection — that's what
361
+ // makes `toast.promise`'s `error` branch reachable. The `await` is
362
+ // wrapped so a rejection can't escape as an unhandled promise, and
363
+ // `afterBulk` always runs to refresh the (possibly partially-changed) set.
364
+ const allFailed = (r: BulkResult) => r.ok === 0 && r.failed > 0
365
+
366
+ const runBulkStatus = async (target: PageStatus) => {
367
+ const ids = selectedPages.map((p) => p.id)
368
+ if (ids.length === 0) return
369
+ const verb = target === 'PUBLISHED' ? 'Publishing' : 'Updating'
370
+ const promise = bulkUpdatePages(ids, { status: target }).then((r) => {
371
+ if (allFailed(r)) throw new Error('Bulk update failed')
372
+ return r
373
+ })
374
+ toast.promise(promise, {
375
+ loading: `${verb} ${ids.length} page${ids.length === 1 ? '' : 's'}…`,
376
+ success: (r) => `${r.ok} updated${r.failed ? `, ${r.failed} failed` : ''}`,
377
+ error: 'Bulk update failed',
378
+ })
379
+ try {
380
+ await promise
381
+ } catch {
382
+ /* surfaced via toast.promise */
383
+ }
384
+ afterBulk()
385
+ }
386
+
387
+ const runBulkTag = async (slug: string, mode: 'add' | 'remove') => {
388
+ if (selectedPages.length === 0) return
389
+ const promise = bulkChangePageTags(
390
+ selectedPages.map((p) => ({ id: p.id, tags: p.tags, primaryTagId: p.primaryTagId })),
391
+ mode === 'add' ? { add: [slug] } : { remove: [slug] },
392
+ ).then((r) => {
393
+ if (allFailed(r)) throw new Error('Bulk tag change failed')
394
+ return r
395
+ })
396
+ const tagName = tagBySlug.get(slug)?.name ?? slug
397
+ toast.promise(promise, {
398
+ loading: `${mode === 'add' ? 'Adding' : 'Removing'} "${tagName}"…`,
399
+ success: (r) =>
400
+ `${r.ok} page${r.ok === 1 ? '' : 's'} updated${r.failed ? `, ${r.failed} failed` : ''}`,
401
+ error: 'Bulk tag change failed',
402
+ })
403
+ try {
404
+ await promise
405
+ } catch {
406
+ /* surfaced via toast.promise */
407
+ }
408
+ afterBulk()
409
+ }
410
+
411
+ const runBulkDelete = async () => {
412
+ const ids = deletablePages.map((p) => p.id)
413
+ if (ids.length === 0) return
414
+ const promise = bulkDeletePages(ids).then((r) => {
415
+ if (allFailed(r)) throw new Error('Bulk delete failed')
416
+ return r
417
+ })
418
+ toast.promise(promise, {
419
+ loading: `Deleting ${ids.length} page${ids.length === 1 ? '' : 's'}…`,
420
+ success: (r) => `${r.ok} deleted${r.failed ? `, ${r.failed} failed` : ''}`,
421
+ error: 'Bulk delete failed',
422
+ })
423
+ try {
424
+ await promise
425
+ } catch {
426
+ /* surfaced via toast.promise */
427
+ }
428
+ afterBulk()
429
+ }
430
+
431
+ // ─── Row actions ───────────────────────────────────────────────────
432
+
433
+ const runDuplicate = async (p: Page) => {
434
+ const promise = duplicatePage(p.id).then((r) => {
435
+ if (r.error) throw new Error(r.error)
436
+ return r
437
+ })
438
+ toast.promise(promise, {
439
+ loading: `Duplicating "${p.title}"…`,
440
+ success: `"${p.title}" duplicated`,
441
+ error: (e: Error) => e.message || 'Duplicate failed',
442
+ })
443
+ try {
444
+ await promise
445
+ setRefreshToken((t) => t + 1)
446
+ } catch {
447
+ /* surfaced via toast.promise */
448
+ }
449
+ }
450
+
451
+ /** Drag-reparent from the tree view: `sourceId` becomes a child of `targetId`. */
452
+ const runReparent = async (sourceId: string, targetId: string) => {
453
+ const source = allPages.find((p) => p.id === sourceId)
454
+ const target = allPages.find((p) => p.id === targetId)
455
+ if (!source || !target) return
456
+ const check = checkReparent(treeRoots, sourceId, targetId)
457
+ if (!check.ok) {
458
+ toast.error(check.reason)
459
+ return
460
+ }
461
+ const promise = movePage(sourceId, targetId).then((r) => {
462
+ if (r.error) throw new Error(r.error)
463
+ })
464
+ toast.promise(promise, {
465
+ loading: `Moving "${source.title}"…`,
466
+ success: `"${source.title}" moved under "${target.title}"`,
467
+ error: (e: Error) => e.message || 'Move failed',
468
+ })
469
+ try {
470
+ await promise
471
+ // Make sure the new parent is expanded so the moved row stays visible.
472
+ setExpandedOverride((prev) => {
473
+ const next = new Set(prev ?? defaultExpanded)
474
+ next.add(targetId)
475
+ return next
476
+ })
477
+ setRefreshToken((t) => t + 1)
478
+ } catch {
479
+ /* surfaced via toast.promise */
480
+ }
481
+ }
482
+
483
+ const runRowDelete = async (p: Page) => {
484
+ const promise = deletePage(p.id).then((r) => {
485
+ if (r.error) throw new Error(r.error)
486
+ })
487
+ toast.promise(promise, {
488
+ loading: `Deleting "${p.title}"…`,
489
+ success: `"${p.title}" moved to trash`,
490
+ error: (e: Error) => e.message || 'Delete failed',
491
+ })
492
+ try {
493
+ await promise
494
+ setSelected((s) => {
495
+ const next = new Set(s)
496
+ next.delete(p.id)
497
+ return next
498
+ })
499
+ setRefreshToken((t) => t + 1)
500
+ } catch {
501
+ /* surfaced via toast.promise */
502
+ }
503
+ }
504
+
505
+ // ─── Render ────────────────────────────────────────────────────────
506
+
507
+ return (
508
+ // Fill the shell's <main> and scroll the table card internally so the
509
+ // pagination footer stays reachable (h-full + main overflow-y-auto alone
510
+ // clips the footer — see #736).
511
+ <div className="flex h-full min-h-0 flex-col gap-4 p-4 sm:p-6">
512
+ {/* Header — the "+ New page" primary action sits on the right, per
513
+ the design's `.page-hdr` / `.hdr-r` layout. */}
514
+ <div className="flex flex-wrap items-start justify-between gap-3">
515
+ <div className="flex flex-col gap-1">
516
+ <h1 className="text-[var(--txt)]">Pages</h1>
517
+ <p className="text-sm text-[var(--sub)]">
518
+ {treeMode
519
+ ? `${grandTotal} page${grandTotal === 1 ? '' : 's'} total`
520
+ : `${grandTotal} page${grandTotal === 1 ? '' : 's'} · organized by tags`}
521
+ </p>
522
+ </div>
523
+ <Button
524
+ type="button"
525
+ variant="primary"
526
+ size="sm"
527
+ className="shadow-sm"
528
+ onClick={() => onNavigate('/pages/new')}
529
+ leftIcon={<Plus size={16} aria-hidden />}
530
+ >
531
+ New page
532
+ </Button>
533
+ </div>
534
+
535
+ {/* Controls row */}
536
+ <div className="flex flex-wrap items-center gap-2">
537
+ <div className="relative max-w-sm flex-1">
538
+ <Search
539
+ className="absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 text-[var(--sub)]"
540
+ aria-hidden
541
+ />
542
+ <input
543
+ type="search"
544
+ value={search}
545
+ onChange={(e) => setSearch(e.target.value)}
546
+ aria-label="Search pages"
547
+ placeholder="Search pages…"
548
+ className="focus:border-primary focus:ring-primary/30 w-full rounded-lg border border-[var(--bdr)] bg-[var(--card)] py-2 pr-3 pl-9 text-sm text-[var(--txt)] shadow-sm placeholder:text-[var(--sub)] focus:ring-2 focus:outline-none"
549
+ />
550
+ </div>
551
+
552
+ {/* Group-by only applies to the flat list — in tree mode the
553
+ hierarchy is the grouping. */}
554
+ {!treeMode && (
555
+ <FilterSelect
556
+ label="Group by"
557
+ value={groupBy}
558
+ onChange={(v) => setGroupBy(v as PageGroupBy)}
559
+ options={[
560
+ { value: 'none', label: 'None' },
561
+ { value: 'tag', label: 'Tag' },
562
+ { value: 'status', label: 'Status' },
563
+ { value: 'author', label: 'Author' },
564
+ ]}
565
+ />
566
+ )}
567
+
568
+ <FilterSelect
569
+ label="Status"
570
+ value={status}
571
+ onChange={(v) => {
572
+ setStatus(v as PageStatus | 'all')
573
+ setPage(1)
574
+ }}
575
+ options={[
576
+ { value: 'all', label: 'All statuses' },
577
+ { value: 'PUBLISHED', label: 'Published' },
578
+ { value: 'DRAFT', label: 'Draft' },
579
+ { value: 'SCHEDULED', label: 'Scheduled' },
580
+ ]}
581
+ />
582
+
583
+ <ViewModeToggle mode={viewMode} onChange={changeViewMode} />
584
+
585
+ {!treeMode && <ColumnsMenu hidden={hiddenCols} onToggle={toggleColumn} />}
586
+
587
+ <span className="ml-auto text-sm text-[var(--sub)] tabular-nums">
588
+ {treeMode
589
+ ? treeFiltersActive
590
+ ? `${treeRows.length} result${treeRows.length === 1 ? '' : 's'}`
591
+ : `${grandTotal} page${grandTotal === 1 ? '' : 's'}`
592
+ : `${total} of ${grandTotal}`}
593
+ </span>
594
+ </div>
595
+
596
+ {/* Tag filter bar (flat list only — tree mode replaces tag grouping
597
+ with the page hierarchy) */}
598
+ {!treeMode && (
599
+ <div className="flex flex-wrap items-center gap-2">
600
+ <span className="text-[10px] font-medium tracking-wider text-[var(--sub)] uppercase">
601
+ Tags
602
+ </span>
603
+ {tags.map((t) => (
604
+ <PageTagChip
605
+ key={t.slug}
606
+ name={t.name}
607
+ color={t.color}
608
+ count={t.pageCount}
609
+ selected={selectedTags.has(t.slug)}
610
+ onToggle={() => toggleTag(t.slug)}
611
+ />
612
+ ))}
613
+ {selectedTags.size > 0 && (
614
+ <button
615
+ type="button"
616
+ onClick={() => setSelectedTags(new Set())}
617
+ className="inline-flex items-center gap-1 text-xs text-[var(--sub)] hover:text-[var(--txt)]"
618
+ >
619
+ <X className="h-3 w-3" aria-hidden />
620
+ Clear tags
621
+ </button>
622
+ )}
623
+ <button
624
+ type="button"
625
+ onClick={() => onNavigate('/pages/tags')}
626
+ className="text-primary ml-auto inline-flex items-center gap-1 text-xs font-medium hover:underline"
627
+ >
628
+ <TagIcon className="h-3 w-3" aria-hidden />
629
+ Manage tags
630
+ </button>
631
+ </div>
632
+ )}
633
+
634
+ {/* Bulk action bar */}
635
+ {selected.size > 0 && (
636
+ <BulkActionBar
637
+ count={selected.size}
638
+ tags={tags}
639
+ blockedHomepage={blockedHomepage}
640
+ onClear={() => setSelected(new Set())}
641
+ onPublish={() => runBulkStatus('PUBLISHED')}
642
+ onDraft={() => runBulkStatus('DRAFT')}
643
+ onAddTag={(slug) => runBulkTag(slug, 'add')}
644
+ onRemoveTag={(slug) => runBulkTag(slug, 'remove')}
645
+ onDelete={() => setPendingDelete(true)}
646
+ deletableCount={deletablePages.length}
647
+ />
648
+ )}
649
+
650
+ {/* Table card — flex-1 + min-h-0 so the body scrolls; footer stays pinned. */}
651
+ <div className="flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-[var(--bdr)] bg-[var(--card)] shadow-sm">
652
+ {treeMode ? (
653
+ <div className="min-h-0 flex-1 overflow-auto">
654
+ <PagesTreeTable
655
+ rows={treeRows}
656
+ loading={loading}
657
+ error={error}
658
+ flattened={treeFiltersActive}
659
+ selected={selected}
660
+ expanded={expanded}
661
+ onToggleExpand={toggleExpand}
662
+ onToggleSelect={toggleOne}
663
+ onToggleAll={toggleAllOnPage}
664
+ onOpen={(p) => onNavigate(`/pages/${p.id}/edit`)}
665
+ onAddSubPage={(p) => onNavigate(`/pages/new?parent=${encodeURIComponent(p.id)}`)}
666
+ onDuplicate={(p) => void runDuplicate(p)}
667
+ onDelete={(p) => setRowDelete(p)}
668
+ onReparent={(sourceId, targetId) => void runReparent(sourceId, targetId)}
669
+ canReparent={(sourceId, targetId) => checkReparent(treeRoots, sourceId, targetId).ok}
670
+ onRetry={() => setRefreshToken((t) => t + 1)}
671
+ onClearFilters={clearFilters}
672
+ onNewPage={() => onNavigate('/pages/new')}
673
+ />
674
+ </div>
675
+ ) : (
676
+ <>
677
+ {/* Both-axis scroll: tall lists scroll vertically; narrow viewports
678
+ keep column widths and scroll sideways instead of crushing. */}
679
+ <div className="min-h-0 flex-1 overflow-auto">
680
+ <table
681
+ className="w-full table-fixed"
682
+ style={{ minWidth: tableMinWidth }}
683
+ role="table"
684
+ aria-label="Pages"
685
+ >
686
+ <colgroup>
687
+ <col style={{ width: '40px' }} />
688
+ <col />
689
+ {showTags && <col style={{ width: '200px' }} />}
690
+ {showAuthor && <col style={{ width: '170px' }} />}
691
+ <col style={{ width: '120px' }} />
692
+ <col style={{ width: '130px' }} />
693
+ {showSeo && <col style={{ width: '80px' }} />}
694
+ <col style={{ width: '110px' }} />
695
+ </colgroup>
696
+ <thead className="bg-muted/40 border-b border-[var(--bdr)]">
697
+ <tr className="text-xs text-[var(--sub)]">
698
+ <th scope="col" className="px-3 py-2.5 text-left">
699
+ <input
700
+ type="checkbox"
701
+ aria-label="Select all pages on this page"
702
+ checked={allOnPageSelected}
703
+ onChange={(e) => toggleAllOnPage(e.target.checked)}
704
+ className="accent-primary rounded border-[var(--bdr)]"
705
+ />
706
+ </th>
707
+ <th
708
+ scope="col"
709
+ aria-sort={ariaSortFor('title')}
710
+ className="px-3 py-2.5 text-left"
711
+ >
712
+ <SortHeader
713
+ label="Title"
714
+ field="title"
715
+ current={sortBy}
716
+ dir={dir}
717
+ onSort={handleSort}
718
+ />
719
+ </th>
720
+ {showTags && (
721
+ <th scope="col" className="px-3 py-2.5 text-left">
722
+ <span className="text-xs font-medium tracking-wider uppercase">Tags</span>
723
+ </th>
724
+ )}
725
+ {showAuthor && (
726
+ <th
727
+ scope="col"
728
+ aria-sort={ariaSortFor('author')}
729
+ className="px-3 py-2.5 text-left"
730
+ >
731
+ <SortHeader
732
+ label="Author"
733
+ field="author"
734
+ current={sortBy}
735
+ dir={dir}
736
+ onSort={handleSort}
737
+ />
738
+ </th>
739
+ )}
740
+ <th
741
+ scope="col"
742
+ aria-sort={ariaSortFor('status')}
743
+ className="px-3 py-2.5 text-left"
744
+ >
745
+ <SortHeader
746
+ label="Status"
747
+ field="status"
748
+ current={sortBy}
749
+ dir={dir}
750
+ onSort={handleSort}
751
+ />
752
+ </th>
753
+ <th
754
+ scope="col"
755
+ aria-sort={ariaSortFor('modified')}
756
+ className="px-3 py-2.5 text-left"
757
+ >
758
+ <SortHeader
759
+ label="Last Modified"
760
+ field="modified"
761
+ current={sortBy}
762
+ dir={dir}
763
+ onSort={handleSort}
764
+ />
765
+ </th>
766
+ {showSeo && (
767
+ <th
768
+ scope="col"
769
+ aria-sort={ariaSortFor('seo')}
770
+ className="px-3 py-2.5 text-left"
771
+ >
772
+ <SortHeader
773
+ label="SEO"
774
+ field="seo"
775
+ current={sortBy}
776
+ dir={dir}
777
+ onSort={handleSort}
778
+ />
779
+ </th>
780
+ )}
781
+ <th scope="col" className="px-3 py-2.5 text-right">
782
+ <span className="sr-only">Actions</span>
783
+ </th>
784
+ </tr>
785
+ </thead>
786
+ <tbody>
787
+ {loading && pages.length === 0 && <LoadingRows columns={columnCount} />}
788
+ {!loading && error && (
789
+ <tr>
790
+ <td colSpan={columnCount} className="px-3 py-12 text-center">
791
+ <div className="mb-2 text-sm font-medium text-[var(--txt)]">{error}</div>
792
+ <button
793
+ onClick={() => setRefreshToken((t) => t + 1)}
794
+ className="text-primary text-sm hover:underline"
795
+ >
796
+ Try again
797
+ </button>
798
+ </td>
799
+ </tr>
800
+ )}
801
+ {!loading && !error && pages.length === 0 && (
802
+ <EmptyRow
803
+ columns={columnCount}
804
+ filtersActive={filtersAreActive}
805
+ onClear={clearFilters}
806
+ onNewPage={() => onNavigate('/pages/new')}
807
+ />
808
+ )}
809
+ {!loading &&
810
+ !error &&
811
+ displayGroups.map((group) => (
812
+ <GroupBlock
813
+ key={group.key}
814
+ showHeader={grouped}
815
+ label={group.label}
816
+ color={group.color}
817
+ count={group.pages.length}
818
+ columns={columnCount}
819
+ >
820
+ {group.pages.map((p) => (
821
+ <PageRow
822
+ key={p.id}
823
+ page={p}
824
+ selected={selected.has(p.id)}
825
+ showTags={showTags}
826
+ showAuthor={showAuthor}
827
+ showSeo={showSeo}
828
+ resolveTag={(slug) => tagBySlug.get(slug)}
829
+ onSelect={() => toggleOne(p.id)}
830
+ onOpen={() => onNavigate(`/pages/${p.id}/edit`)}
831
+ onDuplicate={() => void runDuplicate(p)}
832
+ onDelete={() => setRowDelete(p)}
833
+ />
834
+ ))}
835
+ </GroupBlock>
836
+ ))}
837
+ </tbody>
838
+ </table>
839
+ </div>
840
+
841
+ {/* Pagination only for the flat (ungrouped) view — shrink-0 so it
842
+ stays visible below the scrolling table body (#736). */}
843
+ {!grouped && (
844
+ <div className="shrink-0">
845
+ <PaginationFooter
846
+ page={page}
847
+ totalPages={totalPages}
848
+ total={total}
849
+ pageSize={PAGE_SIZE}
850
+ onPage={setPage}
851
+ />
852
+ </div>
853
+ )}
854
+ </>
855
+ )}
856
+ </div>
857
+
858
+ <ConfirmDialog
859
+ open={rowDelete !== null}
860
+ title={`Delete "${rowDelete?.title ?? ''}"?`}
861
+ description="The page moves to trash and can be restored for 30 days."
862
+ confirmLabel="Delete"
863
+ destructive
864
+ onClose={() => setRowDelete(null)}
865
+ onConfirm={() => {
866
+ if (rowDelete) void runRowDelete(rowDelete)
867
+ setRowDelete(null)
868
+ }}
869
+ />
870
+
871
+ <ConfirmDialog
872
+ open={pendingDelete}
873
+ title={`Delete ${deletablePages.length} page${deletablePages.length === 1 ? '' : 's'}?`}
874
+ description={
875
+ blockedHomepage
876
+ ? 'The homepage cannot be deleted and will be skipped. The remaining pages move to trash and can be restored for 30 days.'
877
+ : 'The selected pages move to trash and can be restored for 30 days.'
878
+ }
879
+ confirmLabel="Delete"
880
+ destructive
881
+ onClose={() => setPendingDelete(false)}
882
+ onConfirm={() => {
883
+ void runBulkDelete()
884
+ }}
885
+ />
886
+ </div>
887
+ )
888
+ }
889
+
890
+ // ─── Sub-components ──────────────────────────────────────────────────
891
+
892
+ function SortHeader({
893
+ label,
894
+ field,
895
+ current,
896
+ dir,
897
+ onSort,
898
+ }: {
899
+ label: string
900
+ field: SortBy
901
+ current: SortBy
902
+ dir: Dir
903
+ onSort: (f: SortBy) => void
904
+ }) {
905
+ const active = current === field
906
+ return (
907
+ <button
908
+ type="button"
909
+ onClick={() => onSort(field)}
910
+ className={`inline-flex items-center gap-1 text-xs font-medium tracking-wider uppercase transition-colors hover:text-[var(--txt)] ${
911
+ active ? 'text-[var(--txt)]' : 'text-[var(--sub)]'
912
+ }`}
913
+ >
914
+ <span>{label}</span>
915
+ {active &&
916
+ (dir === 'asc' ? (
917
+ <ChevronUp className="h-3 w-3" aria-hidden />
918
+ ) : (
919
+ <ChevronDown className="h-3 w-3" aria-hidden />
920
+ ))}
921
+ </button>
922
+ )
923
+ }
924
+
925
+ /**
926
+ * List / Tree segmented control (`.view-toggle` in the design). The
927
+ * choice persists in localStorage so the preferred mode survives reloads.
928
+ */
929
+ function ViewModeToggle({
930
+ mode,
931
+ onChange,
932
+ }: {
933
+ mode: ViewMode
934
+ onChange: (mode: ViewMode) => void
935
+ }) {
936
+ const btn = (target: ViewMode, label: string, icon: React.ReactNode) => {
937
+ const active = mode === target
938
+ return (
939
+ <button
940
+ type="button"
941
+ aria-label={label}
942
+ title={label}
943
+ aria-pressed={active}
944
+ onClick={() => onChange(target)}
945
+ className={`flex h-[30px] w-[34px] items-center justify-center transition-colors duration-[var(--motion-fast)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none ${
946
+ active
947
+ ? 'bg-[var(--acc-l)] text-[var(--acc)]'
948
+ : 'bg-[var(--card)] text-[var(--muted)] hover:text-[var(--acc)]'
949
+ }`}
950
+ >
951
+ {icon}
952
+ </button>
953
+ )
954
+ }
955
+ return (
956
+ <div
957
+ role="group"
958
+ aria-label="View mode"
959
+ className="flex overflow-hidden rounded-lg border border-[var(--bdr)] shadow-sm"
960
+ >
961
+ {btn('list', 'List view', <List size={15} aria-hidden />)}
962
+ <span aria-hidden className="w-px bg-[var(--bdr)]" />
963
+ {btn('tree', 'Tree view', <ListTree size={15} aria-hidden />)}
964
+ </div>
965
+ )
966
+ }
967
+
968
+ /**
969
+ * Column visibility menu — the product translation of the design's
970
+ * floating "Tweaks" panel. Optional columns can be hidden per user;
971
+ * the choice persists in localStorage alongside the view mode.
972
+ */
973
+ function ColumnsMenu({
974
+ hidden,
975
+ onToggle,
976
+ }: {
977
+ hidden: Set<ToggleableColumn>
978
+ onToggle: (key: ToggleableColumn) => void
979
+ }) {
980
+ return (
981
+ <DropdownMenu.Root>
982
+ <DropdownMenu.Trigger asChild>
983
+ <button
984
+ type="button"
985
+ aria-label="Choose visible columns"
986
+ className="inline-flex items-center gap-1.5 rounded-lg border border-[var(--bdr)] bg-[var(--card)] px-2.5 py-1.5 text-sm text-[var(--txt)] shadow-sm transition-colors hover:bg-[var(--acc-l)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none"
987
+ >
988
+ <Columns3 size={15} aria-hidden />
989
+ Columns
990
+ <ChevronDown className="h-3 w-3 text-[var(--sub)]" aria-hidden />
991
+ </button>
992
+ </DropdownMenu.Trigger>
993
+ <DropdownMenu.Portal container={adminPortalContainer()}>
994
+ <DropdownMenu.Content
995
+ align="end"
996
+ sideOffset={4}
997
+ className="bg-popover z-50 w-44 rounded-lg border border-[var(--bdr)] p-1 shadow-md"
998
+ >
999
+ <DropdownMenu.Label className="px-2 py-1.5 text-[10px] font-medium tracking-wider text-[var(--sub)] uppercase">
1000
+ Columns
1001
+ </DropdownMenu.Label>
1002
+ {TOGGLEABLE_COLUMNS.map((col) => {
1003
+ const visible = !hidden.has(col.key)
1004
+ return (
1005
+ <DropdownMenu.CheckboxItem
1006
+ key={col.key}
1007
+ checked={visible}
1008
+ onCheckedChange={() => onToggle(col.key)}
1009
+ onSelect={(e) => e.preventDefault()}
1010
+ className="focus:bg-accent flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm text-[var(--txt)] outline-none"
1011
+ >
1012
+ <span
1013
+ aria-hidden
1014
+ className={`flex h-4 w-4 items-center justify-center rounded border ${
1015
+ visible
1016
+ ? 'bg-primary border-transparent text-white'
1017
+ : 'border-[var(--bdr)] bg-[var(--card)]'
1018
+ }`}
1019
+ >
1020
+ {visible && <Check size={11} strokeWidth={3} />}
1021
+ </span>
1022
+ {col.label}
1023
+ </DropdownMenu.CheckboxItem>
1024
+ )
1025
+ })}
1026
+ </DropdownMenu.Content>
1027
+ </DropdownMenu.Portal>
1028
+ </DropdownMenu.Root>
1029
+ )
1030
+ }
1031
+
1032
+ function FilterSelect({
1033
+ label,
1034
+ value,
1035
+ onChange,
1036
+ options,
1037
+ }: {
1038
+ label: string
1039
+ value: string
1040
+ onChange: (v: string) => void
1041
+ options: { value: string; label: string }[]
1042
+ }) {
1043
+ return (
1044
+ <label className="inline-flex items-center gap-1.5 text-sm text-[var(--txt)]">
1045
+ <span className="text-[var(--sub)]">{label}:</span>
1046
+ <select
1047
+ value={value}
1048
+ onChange={(e) => onChange(e.target.value)}
1049
+ className="focus:border-primary focus:ring-primary/30 rounded-lg border border-[var(--bdr)] bg-[var(--card)] px-2.5 py-1.5 text-sm text-[var(--txt)] shadow-sm focus:ring-2 focus:outline-none"
1050
+ >
1051
+ {options.map((o) => (
1052
+ <option key={o.value} value={o.value}>
1053
+ {o.label}
1054
+ </option>
1055
+ ))}
1056
+ </select>
1057
+ </label>
1058
+ )
1059
+ }
1060
+
1061
+ function GroupBlock({
1062
+ showHeader,
1063
+ label,
1064
+ color,
1065
+ count,
1066
+ columns,
1067
+ children,
1068
+ }: {
1069
+ showHeader: boolean
1070
+ label: string
1071
+ color: string | null
1072
+ count: number
1073
+ columns: number
1074
+ children: React.ReactNode
1075
+ }) {
1076
+ return (
1077
+ <>
1078
+ {showHeader && (
1079
+ <tr className="bg-muted/30 border-b border-[var(--bdr)]">
1080
+ <td colSpan={columns} className="px-3 py-2">
1081
+ <span className="inline-flex items-center gap-2 text-xs font-medium tracking-wider text-[var(--txt)] uppercase">
1082
+ {color && <span aria-hidden className={`h-2 w-2 rounded-full ${dotFor(color)}`} />}
1083
+ {label}
1084
+ <span className="text-[var(--sub)] tabular-nums">{count}</span>
1085
+ </span>
1086
+ </td>
1087
+ </tr>
1088
+ )}
1089
+ {children}
1090
+ </>
1091
+ )
1092
+ }
1093
+
1094
+ function dotFor(color: string): string {
1095
+ const map: Record<string, string> = {
1096
+ purple: 'bg-brand',
1097
+ green: 'bg-success',
1098
+ orange: 'bg-warning',
1099
+ red: 'bg-destructive',
1100
+ blue: 'bg-info',
1101
+ pink: 'bg-chart-4',
1102
+ }
1103
+ return map[color] ?? 'bg-muted-foreground'
1104
+ }
1105
+
1106
+ function BulkActionBar({
1107
+ count,
1108
+ tags,
1109
+ blockedHomepage,
1110
+ deletableCount,
1111
+ onClear,
1112
+ onPublish,
1113
+ onDraft,
1114
+ onAddTag,
1115
+ onRemoveTag,
1116
+ onDelete,
1117
+ }: {
1118
+ count: number
1119
+ tags: PageTag[]
1120
+ blockedHomepage: boolean
1121
+ deletableCount: number
1122
+ onClear: () => void
1123
+ onPublish: () => void
1124
+ onDraft: () => void
1125
+ onAddTag: (slug: string) => void
1126
+ onRemoveTag: (slug: string) => void
1127
+ onDelete: () => void
1128
+ }) {
1129
+ return (
1130
+ <div className="border-primary/30 bg-primary/5 flex flex-wrap items-center gap-2 rounded-lg border px-4 py-2">
1131
+ <span className="text-sm font-medium text-[var(--txt)]">{count} selected</span>
1132
+ <div className="bg-border h-4 w-px" aria-hidden />
1133
+ <button
1134
+ type="button"
1135
+ onClick={onPublish}
1136
+ className="rounded-md px-2 py-1 text-sm text-[var(--txt)] transition-colors hover:bg-[var(--acc-l)]"
1137
+ >
1138
+ Publish
1139
+ </button>
1140
+ <button
1141
+ type="button"
1142
+ onClick={onDraft}
1143
+ className="rounded-md px-2 py-1 text-sm text-[var(--txt)] transition-colors hover:bg-[var(--acc-l)]"
1144
+ >
1145
+ Move to draft
1146
+ </button>
1147
+ <TagMenu label="Add tag" tags={tags} onPick={onAddTag} />
1148
+ <TagMenu label="Remove tag" tags={tags} onPick={onRemoveTag} />
1149
+ <button
1150
+ type="button"
1151
+ onClick={onDelete}
1152
+ disabled={deletableCount === 0}
1153
+ title={blockedHomepage ? 'The homepage is excluded from deletion' : undefined}
1154
+ className="text-destructive hover:bg-destructive/10 inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-40"
1155
+ >
1156
+ <Trash2 className="h-3.5 w-3.5" aria-hidden />
1157
+ Delete
1158
+ </button>
1159
+ <button
1160
+ type="button"
1161
+ onClick={onClear}
1162
+ className="ml-auto inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm text-[var(--sub)] transition-colors hover:text-[var(--txt)]"
1163
+ >
1164
+ <X className="h-3.5 w-3.5" aria-hidden />
1165
+ Clear
1166
+ </button>
1167
+ </div>
1168
+ )
1169
+ }
1170
+
1171
+ function TagMenu({
1172
+ label,
1173
+ tags,
1174
+ onPick,
1175
+ }: {
1176
+ label: string
1177
+ tags: PageTag[]
1178
+ onPick: (slug: string) => void
1179
+ }) {
1180
+ return (
1181
+ <DropdownMenu.Root>
1182
+ <DropdownMenu.Trigger asChild>
1183
+ <button
1184
+ type="button"
1185
+ className="inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm text-[var(--txt)] transition-colors hover:bg-[var(--acc-l)]"
1186
+ >
1187
+ {label}
1188
+ <ChevronDown className="h-3 w-3" aria-hidden />
1189
+ </button>
1190
+ </DropdownMenu.Trigger>
1191
+ <DropdownMenu.Portal container={adminPortalContainer()}>
1192
+ <DropdownMenu.Content
1193
+ align="start"
1194
+ sideOffset={4}
1195
+ className="bg-popover z-50 max-h-64 w-44 overflow-auto rounded-lg border border-[var(--bdr)] p-1 shadow-md"
1196
+ >
1197
+ {tags.length === 0 ? (
1198
+ <div className="px-2 py-1.5 text-xs text-[var(--sub)]">No tags yet</div>
1199
+ ) : (
1200
+ tags.map((t) => (
1201
+ <DropdownMenu.Item
1202
+ key={t.slug}
1203
+ onSelect={() => onPick(t.slug)}
1204
+ className="focus:bg-accent flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm text-[var(--txt)] outline-none"
1205
+ >
1206
+ <span aria-hidden className={`h-2 w-2 rounded-full ${dotFor(t.color ?? 'gray')}`} />
1207
+ {t.name}
1208
+ </DropdownMenu.Item>
1209
+ ))
1210
+ )}
1211
+ </DropdownMenu.Content>
1212
+ </DropdownMenu.Portal>
1213
+ </DropdownMenu.Root>
1214
+ )
1215
+ }
1216
+
1217
+ function PageRow({
1218
+ page,
1219
+ selected,
1220
+ showTags,
1221
+ showAuthor,
1222
+ showSeo,
1223
+ resolveTag,
1224
+ onSelect,
1225
+ onOpen,
1226
+ onDuplicate,
1227
+ onDelete,
1228
+ }: {
1229
+ page: Page
1230
+ selected: boolean
1231
+ showTags: boolean
1232
+ showAuthor: boolean
1233
+ showSeo: boolean
1234
+ resolveTag: (slug: string) => { name: string; color: string | null } | undefined
1235
+ onSelect: () => void
1236
+ onOpen: () => void
1237
+ onDuplicate: () => void
1238
+ onDelete: () => void
1239
+ }) {
1240
+ return (
1241
+ <tr
1242
+ className={`group border-b border-[var(--bdr)] transition-colors last:border-b-0 hover:bg-[var(--acc-l)] ${
1243
+ selected ? 'bg-[var(--acc-l)]' : ''
1244
+ }`}
1245
+ >
1246
+ <td className="px-3 py-3" onClick={(e) => e.stopPropagation()}>
1247
+ <input
1248
+ type="checkbox"
1249
+ aria-label={`Select "${page.title}"`}
1250
+ checked={selected}
1251
+ onChange={onSelect}
1252
+ className="accent-primary rounded border-[var(--bdr)]"
1253
+ />
1254
+ </td>
1255
+ <td className="px-3 py-3">
1256
+ <button type="button" onClick={onOpen} className="block w-full min-w-0 text-left">
1257
+ <span className="block truncate text-sm font-medium text-[var(--txt)] group-hover:text-[var(--acc)]">
1258
+ {page.title}
1259
+ </span>
1260
+ <span className="block truncate text-xs text-[var(--sub)]">{page.path}</span>
1261
+ </button>
1262
+ </td>
1263
+ {showTags && (
1264
+ <td className="px-3 py-3">
1265
+ <PageTagsCell
1266
+ tagSlugs={page.tags}
1267
+ primaryTagId={page.primaryTagId}
1268
+ resolve={resolveTag}
1269
+ />
1270
+ </td>
1271
+ )}
1272
+ {showAuthor && (
1273
+ <td className="px-3 py-3">
1274
+ <div className="flex items-center gap-2">
1275
+ <AuthorAvatar name={page.authorName} size={28} />
1276
+ <span className="truncate text-sm text-[var(--txt)]">{page.authorName}</span>
1277
+ </div>
1278
+ </td>
1279
+ )}
1280
+ <td className="px-3 py-3">
1281
+ <PostStatusBadge status={page.status} />
1282
+ </td>
1283
+ <td className="px-3 py-3 text-sm text-[var(--sub)] tabular-nums">
1284
+ {formatDateShort(page.lastModified)}
1285
+ </td>
1286
+ {showSeo && (
1287
+ <td className="px-3 py-3">
1288
+ <SeoScoreIndicator score={page.seoScore} />
1289
+ </td>
1290
+ )}
1291
+ <td className="px-3 py-3">
1292
+ <RowActions>
1293
+ <RowActionButton aria-label={`Edit "${page.title}"`} title="Edit" onClick={onOpen}>
1294
+ <PenLine size={13} aria-hidden />
1295
+ </RowActionButton>
1296
+ <RowActionButton
1297
+ aria-label={`Duplicate "${page.title}"`}
1298
+ title="Duplicate"
1299
+ onClick={onDuplicate}
1300
+ >
1301
+ <Copy size={12} aria-hidden />
1302
+ </RowActionButton>
1303
+ <RowActionButton
1304
+ aria-label={`Delete "${page.title}"`}
1305
+ title={page.isHomepage ? 'The homepage cannot be deleted' : 'Delete'}
1306
+ danger
1307
+ disabled={page.isHomepage}
1308
+ onClick={onDelete}
1309
+ >
1310
+ <Trash2 size={12} aria-hidden />
1311
+ </RowActionButton>
1312
+ </RowActions>
1313
+ </td>
1314
+ </tr>
1315
+ )
1316
+ }
1317
+
1318
+ function LoadingRows({ columns }: { columns: number }) {
1319
+ return (
1320
+ <>
1321
+ {Array.from({ length: 8 }).map((_, i) => (
1322
+ <tr key={i} className="border-b border-[var(--bdr)] last:border-b-0">
1323
+ {Array.from({ length: columns }).map((__, j) => (
1324
+ <td key={j} className="px-3 py-3">
1325
+ <div className="bg-muted h-4 w-full animate-pulse rounded" />
1326
+ </td>
1327
+ ))}
1328
+ </tr>
1329
+ ))}
1330
+ </>
1331
+ )
1332
+ }
1333
+
1334
+ function EmptyRow({
1335
+ columns,
1336
+ filtersActive,
1337
+ onClear,
1338
+ onNewPage,
1339
+ }: {
1340
+ columns: number
1341
+ filtersActive: boolean
1342
+ onClear: () => void
1343
+ onNewPage: () => void
1344
+ }) {
1345
+ return (
1346
+ <tr>
1347
+ <td colSpan={columns} className="px-3 py-16 text-center">
1348
+ <div className="mb-2 text-sm font-medium text-[var(--txt)]">
1349
+ {filtersActive ? 'No pages match your filters' : 'No pages yet'}
1350
+ </div>
1351
+ <div className="mb-4 text-sm text-[var(--sub)]">
1352
+ {filtersActive
1353
+ ? 'Try clearing the search, tags, or status filter above.'
1354
+ : 'Create your first page to get started.'}
1355
+ </div>
1356
+ {filtersActive ? (
1357
+ <button type="button" onClick={onClear} className="text-primary text-sm hover:underline">
1358
+ Clear filters
1359
+ </button>
1360
+ ) : (
1361
+ <Button
1362
+ type="button"
1363
+ variant="primary"
1364
+ size="sm"
1365
+ className="shadow-sm"
1366
+ onClick={onNewPage}
1367
+ leftIcon={<Plus size={16} aria-hidden />}
1368
+ >
1369
+ New page
1370
+ </Button>
1371
+ )}
1372
+ </td>
1373
+ </tr>
1374
+ )
1375
+ }
1376
+
1377
+ function PaginationFooter({
1378
+ page,
1379
+ totalPages,
1380
+ total,
1381
+ pageSize,
1382
+ onPage,
1383
+ }: {
1384
+ page: number
1385
+ totalPages: number
1386
+ total: number
1387
+ pageSize: number
1388
+ onPage: (p: number) => void
1389
+ }) {
1390
+ const start = total === 0 ? 0 : (page - 1) * pageSize + 1
1391
+ const end = Math.min(total, page * pageSize)
1392
+ return (
1393
+ <div className="flex items-center justify-between border-t border-[var(--bdr)] px-4 py-3 text-sm">
1394
+ <span className="text-[var(--sub)] tabular-nums">
1395
+ {start}–{end} of {total} page{total === 1 ? '' : 's'}
1396
+ </span>
1397
+ <nav className="flex items-center gap-1" aria-label="Pages pagination">
1398
+ <button
1399
+ type="button"
1400
+ onClick={() => onPage(Math.max(1, page - 1))}
1401
+ disabled={page === 1}
1402
+ aria-label="Previous page"
1403
+ className="inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--bdr)] bg-[var(--bg)] text-[var(--txt)] transition-colors hover:bg-[var(--acc-l)] disabled:cursor-not-allowed disabled:opacity-40"
1404
+ >
1405
+ <ChevronLeft className="h-4 w-4" aria-hidden />
1406
+ </button>
1407
+ {pageNumbers(page, totalPages).map((p, idx) =>
1408
+ p === '…' ? (
1409
+ <span
1410
+ key={`gap-${idx}`}
1411
+ aria-hidden
1412
+ className="inline-flex h-8 w-8 items-center justify-center text-sm text-[var(--sub)]"
1413
+ >
1414
+
1415
+ </span>
1416
+ ) : (
1417
+ <button
1418
+ key={p}
1419
+ type="button"
1420
+ onClick={() => onPage(p)}
1421
+ aria-current={p === page ? 'page' : undefined}
1422
+ className={`inline-flex h-8 w-8 items-center justify-center rounded-md text-sm tabular-nums transition-colors ${
1423
+ p === page
1424
+ ? 'bg-primary text-primary-foreground'
1425
+ : 'border border-[var(--bdr)] bg-[var(--bg)] text-[var(--txt)] hover:bg-[var(--acc-l)]'
1426
+ }`}
1427
+ >
1428
+ {p}
1429
+ </button>
1430
+ ),
1431
+ )}
1432
+ <button
1433
+ type="button"
1434
+ onClick={() => onPage(Math.min(totalPages, page + 1))}
1435
+ disabled={page === totalPages}
1436
+ aria-label="Next page"
1437
+ className="inline-flex h-8 w-8 items-center justify-center rounded-md border border-[var(--bdr)] bg-[var(--bg)] text-[var(--txt)] transition-colors hover:bg-[var(--acc-l)] disabled:cursor-not-allowed disabled:opacity-40"
1438
+ >
1439
+ <ChevronRight className="h-4 w-4" aria-hidden />
1440
+ </button>
1441
+ </nav>
1442
+ </div>
1443
+ )
1444
+ }
1445
+
1446
+ // ─── Helpers ─────────────────────────────────────────────────────────
1447
+
1448
+ function formatDateShort(input: string): string {
1449
+ const d = new Date(input)
1450
+ if (Number.isNaN(d.getTime())) return '—'
1451
+ return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' })
1452
+ }
1453
+
1454
+ export function pageNumbers(current: number, total: number): Array<number | '…'> {
1455
+ if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1)
1456
+ const out: Array<number | '…'> = [1]
1457
+ const start = Math.max(2, current - 1)
1458
+ const end = Math.min(total - 1, current + 1)
1459
+ if (start > 2) out.push('…')
1460
+ for (let i = start; i <= end; i++) out.push(i)
1461
+ if (end < total - 1) out.push('…')
1462
+ out.push(total)
1463
+ return out
1464
+ }