@puckeditor/cli 0.24.0-canary.301a0304

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 (372) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/dist/bin.mjs +7304 -0
  4. package/dist/docs/api-reference/actions.md +63 -0
  5. package/dist/docs/api-reference/components/action-bar-action.md +35 -0
  6. package/dist/docs/api-reference/components/action-bar-group.md +24 -0
  7. package/dist/docs/api-reference/components/action-bar-label.md +25 -0
  8. package/dist/docs/api-reference/components/action-bar-separator.md +16 -0
  9. package/dist/docs/api-reference/components/action-bar.md +32 -0
  10. package/dist/docs/api-reference/components/auto-field.md +63 -0
  11. package/dist/docs/api-reference/components/drawer-item.md +75 -0
  12. package/dist/docs/api-reference/components/drawer.md +29 -0
  13. package/dist/docs/api-reference/components/drop-zone.md +232 -0
  14. package/dist/docs/api-reference/components/field-label.md +138 -0
  15. package/dist/docs/api-reference/components/inline-text-field.md +77 -0
  16. package/dist/docs/api-reference/components/puck-components.md +19 -0
  17. package/dist/docs/api-reference/components/puck-fields.md +39 -0
  18. package/dist/docs/api-reference/components/puck-layout.md +27 -0
  19. package/dist/docs/api-reference/components/puck-outline.md +19 -0
  20. package/dist/docs/api-reference/components/puck-preview.md +39 -0
  21. package/dist/docs/api-reference/components/puck.md +561 -0
  22. package/dist/docs/api-reference/components/render.md +94 -0
  23. package/dist/docs/api-reference/components/rich-text-menu-control.md +87 -0
  24. package/dist/docs/api-reference/components/rich-text-menu-group.md +27 -0
  25. package/dist/docs/api-reference/components/rich-text-menu.md +99 -0
  26. package/dist/docs/api-reference/components.md +32 -0
  27. package/dist/docs/api-reference/configuration/component-config.md +569 -0
  28. package/dist/docs/api-reference/configuration/config.md +108 -0
  29. package/dist/docs/api-reference/configuration.md +4 -0
  30. package/dist/docs/api-reference/data-model/app-state.md +168 -0
  31. package/dist/docs/api-reference/data-model/component-data.md +62 -0
  32. package/dist/docs/api-reference/data-model/data.md +95 -0
  33. package/dist/docs/api-reference/data-model/item-selector.md +34 -0
  34. package/dist/docs/api-reference/data-model/root-data.md +59 -0
  35. package/dist/docs/api-reference/data-model.md +8 -0
  36. package/dist/docs/api-reference/dictionary.md +172 -0
  37. package/dist/docs/api-reference/field-transforms.md +51 -0
  38. package/dist/docs/api-reference/fields/array.md +211 -0
  39. package/dist/docs/api-reference/fields/base.md +96 -0
  40. package/dist/docs/api-reference/fields/custom.md +193 -0
  41. package/dist/docs/api-reference/fields/external.md +413 -0
  42. package/dist/docs/api-reference/fields/number.md +132 -0
  43. package/dist/docs/api-reference/fields/object.md +78 -0
  44. package/dist/docs/api-reference/fields/radio.md +82 -0
  45. package/dist/docs/api-reference/fields/richtext.md +422 -0
  46. package/dist/docs/api-reference/fields/select.md +79 -0
  47. package/dist/docs/api-reference/fields/slot.md +302 -0
  48. package/dist/docs/api-reference/fields/text.md +93 -0
  49. package/dist/docs/api-reference/fields/textarea.md +93 -0
  50. package/dist/docs/api-reference/fields.md +16 -0
  51. package/dist/docs/api-reference/functions/migrate.md +204 -0
  52. package/dist/docs/api-reference/functions/register-overlay-portal.md +45 -0
  53. package/dist/docs/api-reference/functions/resolve-all-data.md +27 -0
  54. package/dist/docs/api-reference/functions/set-deep.md +55 -0
  55. package/dist/docs/api-reference/functions/transform-props.md +51 -0
  56. package/dist/docs/api-reference/functions/use-get-puck.md +24 -0
  57. package/dist/docs/api-reference/functions/use-puck.md +43 -0
  58. package/dist/docs/api-reference/functions/walk-tree.md +88 -0
  59. package/dist/docs/api-reference/functions.md +8 -0
  60. package/dist/docs/api-reference/overrides/action-bar.md +35 -0
  61. package/dist/docs/api-reference/overrides/component-overlay.md +41 -0
  62. package/dist/docs/api-reference/overrides/drawer-item.md +24 -0
  63. package/dist/docs/api-reference/overrides/drawer.md +19 -0
  64. package/dist/docs/api-reference/overrides/field-label.md +18 -0
  65. package/dist/docs/api-reference/overrides/field-types.md +51 -0
  66. package/dist/docs/api-reference/overrides/fields.md +19 -0
  67. package/dist/docs/api-reference/overrides/header-actions.md +24 -0
  68. package/dist/docs/api-reference/overrides/header.md +29 -0
  69. package/dist/docs/api-reference/overrides/iframe.md +32 -0
  70. package/dist/docs/api-reference/overrides/outline.md +19 -0
  71. package/dist/docs/api-reference/overrides/preview.md +19 -0
  72. package/dist/docs/api-reference/overrides/puck.md +19 -0
  73. package/dist/docs/api-reference/overrides.md +28 -0
  74. package/dist/docs/api-reference/permissions.md +55 -0
  75. package/dist/docs/api-reference/plugin.md +112 -0
  76. package/dist/docs/api-reference/plugins/blocks-plugin.md +57 -0
  77. package/dist/docs/api-reference/plugins/fields-plugin.md +68 -0
  78. package/dist/docs/api-reference/plugins/legacy-side-bar-plugin.md +54 -0
  79. package/dist/docs/api-reference/plugins/outline-plugin.md +57 -0
  80. package/dist/docs/api-reference/puck-api.md +278 -0
  81. package/dist/docs/api-reference/theming/action-bar.md +32 -0
  82. package/dist/docs/api-reference/theming/button.md +65 -0
  83. package/dist/docs/api-reference/theming/canvas.md +20 -0
  84. package/dist/docs/api-reference/theming/computed-values.md +194 -0
  85. package/dist/docs/api-reference/theming/drawer.md +34 -0
  86. package/dist/docs/api-reference/theming/fields.md +70 -0
  87. package/dist/docs/api-reference/theming/global.md +127 -0
  88. package/dist/docs/api-reference/theming/header.md +19 -0
  89. package/dist/docs/api-reference/theming/icon-button.md +28 -0
  90. package/dist/docs/api-reference/theming/outline.md +35 -0
  91. package/dist/docs/api-reference/theming/plugin-bar.md +24 -0
  92. package/dist/docs/api-reference/theming/sidebar.md +19 -0
  93. package/dist/docs/api-reference/theming/slot.md +27 -0
  94. package/dist/docs/cli.md +201 -0
  95. package/dist/docs/extending-puck/composition.md +54 -0
  96. package/dist/docs/extending-puck/custom-fields.md +133 -0
  97. package/dist/docs/extending-puck/field-transforms.md +89 -0
  98. package/dist/docs/extending-puck/internal-puck-api.md +96 -0
  99. package/dist/docs/extending-puck/plugins.md +159 -0
  100. package/dist/docs/extending-puck/theming.md +88 -0
  101. package/dist/docs/extending-puck/ui-overrides.md +134 -0
  102. package/dist/docs/getting-started.md +68 -0
  103. package/dist/docs/guides/migrations/dropzones-to-slots.md +138 -0
  104. package/dist/docs/index.json +466 -0
  105. package/dist/docs/index.md +37 -0
  106. package/dist/docs/integrating-puck/categories.md +92 -0
  107. package/dist/docs/integrating-puck/component-configuration.md +159 -0
  108. package/dist/docs/integrating-puck/data-migration.md +86 -0
  109. package/dist/docs/integrating-puck/dynamic-fields.md +86 -0
  110. package/dist/docs/integrating-puck/dynamic-props.md +137 -0
  111. package/dist/docs/integrating-puck/external-data-sources.md +149 -0
  112. package/dist/docs/integrating-puck/feature-toggling.md +121 -0
  113. package/dist/docs/integrating-puck/localization.md +228 -0
  114. package/dist/docs/integrating-puck/multi-column-layouts.md +226 -0
  115. package/dist/docs/integrating-puck/overlay-portals.md +25 -0
  116. package/dist/docs/integrating-puck/rich-text-editing.md +230 -0
  117. package/dist/docs/integrating-puck/root-configuration.md +171 -0
  118. package/dist/docs/integrating-puck/server-components.md +199 -0
  119. package/dist/docs/integrating-puck/styling.md +117 -0
  120. package/dist/docs/integrating-puck/viewports.md +75 -0
  121. package/dist/templates/astro/README.md +52 -0
  122. package/dist/templates/astro/_gitignore +24 -0
  123. package/dist/templates/astro/astro.config.mjs +14 -0
  124. package/dist/templates/astro/database.json +1 -0
  125. package/dist/templates/astro/package.json +25 -0
  126. package/dist/templates/astro/public/favicon.svg +9 -0
  127. package/dist/templates/astro/src/lib/pages.ts +21 -0
  128. package/dist/templates/astro/src/lib/resolve-puck-path.ts +19 -0
  129. package/dist/templates/astro/src/pages/[...puckPath].astro +25 -0
  130. package/dist/templates/astro/src/pages/api/pages.ts +18 -0
  131. package/dist/templates/astro/src/puck/editor.tsx +32 -0
  132. package/dist/templates/astro/src/puck/pages.ts +15 -0
  133. package/dist/templates/astro/src/puck/render.tsx +9 -0
  134. package/dist/templates/astro/src/puck.config.tsx +23 -0
  135. package/dist/templates/astro/tsconfig.json +14 -0
  136. package/dist/templates/astro-ai/README.md +64 -0
  137. package/dist/templates/astro-ai/_gitignore +24 -0
  138. package/dist/templates/astro-ai/astro.config.mjs +21 -0
  139. package/dist/templates/astro-ai/database.json +1 -0
  140. package/dist/templates/astro-ai/package.json +27 -0
  141. package/dist/templates/astro-ai/public/favicon.svg +9 -0
  142. package/dist/templates/astro-ai/src/lib/pages.ts +21 -0
  143. package/dist/templates/astro-ai/src/lib/resolve-puck-path.ts +19 -0
  144. package/dist/templates/astro-ai/src/pages/[...puckPath].astro +25 -0
  145. package/dist/templates/astro-ai/src/pages/api/pages.ts +18 -0
  146. package/dist/templates/astro-ai/src/pages/api/puck/[...all].ts +36 -0
  147. package/dist/templates/astro-ai/src/puck/editor.tsx +53 -0
  148. package/dist/templates/astro-ai/src/puck/pages.ts +15 -0
  149. package/dist/templates/astro-ai/src/puck/render.tsx +10 -0
  150. package/dist/templates/astro-ai/src/puck.config.tsx +23 -0
  151. package/dist/templates/astro-ai/tsconfig.json +14 -0
  152. package/dist/templates/express/README.md +66 -0
  153. package/dist/templates/express/_gitignore +16 -0
  154. package/dist/templates/express/database.json +1 -0
  155. package/dist/templates/express/package.json +20 -0
  156. package/dist/templates/express/src/index.ts +15 -0
  157. package/dist/templates/express/src/puck/pages.ts +39 -0
  158. package/dist/templates/express/tsconfig.json +12 -0
  159. package/dist/templates/express-ai/README.md +81 -0
  160. package/dist/templates/express-ai/_gitignore +16 -0
  161. package/dist/templates/express-ai/database.json +1 -0
  162. package/dist/templates/express-ai/package.json +22 -0
  163. package/dist/templates/express-ai/src/index.ts +17 -0
  164. package/dist/templates/express-ai/src/puck/cloud.ts +71 -0
  165. package/dist/templates/express-ai/src/puck/pages.ts +39 -0
  166. package/dist/templates/express-ai/tsconfig.json +12 -0
  167. package/dist/templates/hono/README.md +66 -0
  168. package/dist/templates/hono/_gitignore +32 -0
  169. package/dist/templates/hono/database.json +1 -0
  170. package/dist/templates/hono/package.json +20 -0
  171. package/dist/templates/hono/src/index.ts +21 -0
  172. package/dist/templates/hono/src/puck/pages.ts +32 -0
  173. package/dist/templates/hono/tsconfig.json +13 -0
  174. package/dist/templates/hono-ai/README.md +81 -0
  175. package/dist/templates/hono-ai/_gitignore +32 -0
  176. package/dist/templates/hono-ai/database.json +1 -0
  177. package/dist/templates/hono-ai/package.json +22 -0
  178. package/dist/templates/hono-ai/src/index.ts +23 -0
  179. package/dist/templates/hono-ai/src/puck/cloud.ts +30 -0
  180. package/dist/templates/hono-ai/src/puck/pages.ts +32 -0
  181. package/dist/templates/hono-ai/tsconfig.json +13 -0
  182. package/dist/templates/manifest.json +4 -0
  183. package/dist/templates/next/README.md +112 -0
  184. package/dist/templates/next/_gitignore +35 -0
  185. package/dist/templates/next/app/[...puckPath]/client.tsx +9 -0
  186. package/dist/templates/next/app/[...puckPath]/page.tsx +49 -0
  187. package/dist/templates/next/app/favicon.ico +0 -0
  188. package/dist/templates/next/app/layout.tsx +13 -0
  189. package/dist/templates/next/app/page.tsx +1 -0
  190. package/dist/templates/next/app/puck/[...puckPath]/client.tsx +20 -0
  191. package/dist/templates/next/app/puck/[...puckPath]/page.tsx +55 -0
  192. package/dist/templates/next/app/puck/api/route.ts +25 -0
  193. package/dist/templates/next/app/puck/page.tsx +3 -0
  194. package/dist/templates/next/app/styles.css +3 -0
  195. package/dist/templates/next/database.json +1 -0
  196. package/dist/templates/next/lib/get-page.ts +11 -0
  197. package/dist/templates/next/next.config.js +3 -0
  198. package/dist/templates/next/package.json +25 -0
  199. package/dist/templates/next/proxy.ts +27 -0
  200. package/dist/templates/next/puck.config.tsx +25 -0
  201. package/dist/templates/next/tsconfig/base.json +20 -0
  202. package/dist/templates/next/tsconfig/nextjs.json +21 -0
  203. package/dist/templates/next/tsconfig.json +8 -0
  204. package/dist/templates/next-ai/README.md +169 -0
  205. package/dist/templates/next-ai/_gitignore +35 -0
  206. package/dist/templates/next-ai/app/[...puckPath]/client.tsx +12 -0
  207. package/dist/templates/next-ai/app/[...puckPath]/page.tsx +49 -0
  208. package/dist/templates/next-ai/app/api/pages/route.ts +26 -0
  209. package/dist/templates/next-ai/app/api/puck/[...all]/route.ts +31 -0
  210. package/dist/templates/next-ai/app/layout.tsx +13 -0
  211. package/dist/templates/next-ai/app/page.tsx +1 -0
  212. package/dist/templates/next-ai/app/puck/[...puckPath]/client.tsx +38 -0
  213. package/dist/templates/next-ai/app/puck/[...puckPath]/page.tsx +57 -0
  214. package/dist/templates/next-ai/app/puck/page.tsx +3 -0
  215. package/dist/templates/next-ai/app/styles.css +3 -0
  216. package/dist/templates/next-ai/database.json +1 -0
  217. package/dist/templates/next-ai/lib/get-page.ts +11 -0
  218. package/dist/templates/next-ai/next.config.js +3 -0
  219. package/dist/templates/next-ai/package.json +27 -0
  220. package/dist/templates/next-ai/proxy.ts +27 -0
  221. package/dist/templates/next-ai/public/favicon.ico +0 -0
  222. package/dist/templates/next-ai/puck.config.tsx +25 -0
  223. package/dist/templates/next-ai/tsconfig/base.json +20 -0
  224. package/dist/templates/next-ai/tsconfig/nextjs.json +21 -0
  225. package/dist/templates/next-ai/tsconfig.json +8 -0
  226. package/dist/templates/react-router/README.md +113 -0
  227. package/dist/templates/react-router/_gitignore +6 -0
  228. package/dist/templates/react-router/app/components/puck-render.tsx +8 -0
  229. package/dist/templates/react-router/app/lib/pages.server.ts +29 -0
  230. package/dist/templates/react-router/app/lib/resolve-puck-path.server.ts +19 -0
  231. package/dist/templates/react-router/app/root.tsx +65 -0
  232. package/dist/templates/react-router/app/routes/_index.tsx +31 -0
  233. package/dist/templates/react-router/app/routes/puck-splat.tsx +95 -0
  234. package/dist/templates/react-router/app/routes.ts +7 -0
  235. package/dist/templates/react-router/database.json +1 -0
  236. package/dist/templates/react-router/package.json +33 -0
  237. package/dist/templates/react-router/public/favicon.ico +0 -0
  238. package/dist/templates/react-router/puck.config.tsx +23 -0
  239. package/dist/templates/react-router/react-router.config.ts +7 -0
  240. package/dist/templates/react-router/tsconfig.json +29 -0
  241. package/dist/templates/react-router/vite.config.ts +10 -0
  242. package/dist/templates/react-router-ai/README.md +172 -0
  243. package/dist/templates/react-router-ai/_gitignore +6 -0
  244. package/dist/templates/react-router-ai/app/components/puck-render.tsx +11 -0
  245. package/dist/templates/react-router-ai/app/lib/pages.server.ts +29 -0
  246. package/dist/templates/react-router-ai/app/lib/resolve-puck-path.server.ts +19 -0
  247. package/dist/templates/react-router-ai/app/root.tsx +65 -0
  248. package/dist/templates/react-router-ai/app/routes/_index.tsx +31 -0
  249. package/dist/templates/react-router-ai/app/routes/api.puck.ts +34 -0
  250. package/dist/templates/react-router-ai/app/routes/puck-splat.tsx +119 -0
  251. package/dist/templates/react-router-ai/app/routes.ts +8 -0
  252. package/dist/templates/react-router-ai/database.json +1 -0
  253. package/dist/templates/react-router-ai/package.json +35 -0
  254. package/dist/templates/react-router-ai/public/favicon.ico +0 -0
  255. package/dist/templates/react-router-ai/puck.config.tsx +25 -0
  256. package/dist/templates/react-router-ai/react-router.config.ts +7 -0
  257. package/dist/templates/react-router-ai/tsconfig.json +29 -0
  258. package/dist/templates/react-router-ai/vite.config.ts +10 -0
  259. package/dist/templates/tanstack-start/README.md +113 -0
  260. package/dist/templates/tanstack-start/_gitignore +12 -0
  261. package/dist/templates/tanstack-start/database.json +1 -0
  262. package/dist/templates/tanstack-start/package.json +26 -0
  263. package/dist/templates/tanstack-start/puck.config.tsx +23 -0
  264. package/dist/templates/tanstack-start/src/components/puck-render.tsx +8 -0
  265. package/dist/templates/tanstack-start/src/lib/pages.server.ts +26 -0
  266. package/dist/templates/tanstack-start/src/lib/pages.ts +39 -0
  267. package/dist/templates/tanstack-start/src/lib/resolve-puck-path.ts +19 -0
  268. package/dist/templates/tanstack-start/src/routeTree.gen.ts +86 -0
  269. package/dist/templates/tanstack-start/src/router.tsx +19 -0
  270. package/dist/templates/tanstack-start/src/routes/$.tsx +41 -0
  271. package/dist/templates/tanstack-start/src/routes/__root.tsx +42 -0
  272. package/dist/templates/tanstack-start/src/routes/index.tsx +18 -0
  273. package/dist/templates/tanstack-start/src/styles.css +13 -0
  274. package/dist/templates/tanstack-start/tsconfig.json +24 -0
  275. package/dist/templates/tanstack-start/vite.config.ts +15 -0
  276. package/dist/templates/tanstack-start-ai/README.md +171 -0
  277. package/dist/templates/tanstack-start-ai/_gitignore +12 -0
  278. package/dist/templates/tanstack-start-ai/database.json +1 -0
  279. package/dist/templates/tanstack-start-ai/package.json +28 -0
  280. package/dist/templates/tanstack-start-ai/puck.config.tsx +23 -0
  281. package/dist/templates/tanstack-start-ai/src/components/puck-render.tsx +11 -0
  282. package/dist/templates/tanstack-start-ai/src/lib/pages.server.ts +26 -0
  283. package/dist/templates/tanstack-start-ai/src/lib/pages.ts +39 -0
  284. package/dist/templates/tanstack-start-ai/src/lib/resolve-puck-path.ts +19 -0
  285. package/dist/templates/tanstack-start-ai/src/routeTree.gen.ts +104 -0
  286. package/dist/templates/tanstack-start-ai/src/router.tsx +19 -0
  287. package/dist/templates/tanstack-start-ai/src/routes/$.tsx +73 -0
  288. package/dist/templates/tanstack-start-ai/src/routes/__root.tsx +42 -0
  289. package/dist/templates/tanstack-start-ai/src/routes/api/puck/$.ts +39 -0
  290. package/dist/templates/tanstack-start-ai/src/routes/index.tsx +18 -0
  291. package/dist/templates/tanstack-start-ai/src/styles.css +13 -0
  292. package/dist/templates/tanstack-start-ai/tsconfig.json +24 -0
  293. package/dist/templates/tanstack-start-ai/vite.config.ts +15 -0
  294. package/dist/templates/vinext/README.md +112 -0
  295. package/dist/templates/vinext/_gitignore +33 -0
  296. package/dist/templates/vinext/app/[...puckPath]/client.tsx +9 -0
  297. package/dist/templates/vinext/app/[...puckPath]/page.tsx +49 -0
  298. package/dist/templates/vinext/app/favicon.ico +0 -0
  299. package/dist/templates/vinext/app/layout.tsx +13 -0
  300. package/dist/templates/vinext/app/page.tsx +1 -0
  301. package/dist/templates/vinext/app/puck/[...puckPath]/client.tsx +20 -0
  302. package/dist/templates/vinext/app/puck/[...puckPath]/page.tsx +55 -0
  303. package/dist/templates/vinext/app/puck/api/route.ts +25 -0
  304. package/dist/templates/vinext/app/puck/page.tsx +3 -0
  305. package/dist/templates/vinext/app/styles.css +3 -0
  306. package/dist/templates/vinext/database.json +1 -0
  307. package/dist/templates/vinext/lib/get-page.ts +11 -0
  308. package/dist/templates/vinext/package.json +30 -0
  309. package/dist/templates/vinext/proxy.ts +27 -0
  310. package/dist/templates/vinext/puck.config.tsx +25 -0
  311. package/dist/templates/vinext/tsconfig.json +30 -0
  312. package/dist/templates/vinext/vite.config.ts +6 -0
  313. package/dist/templates/vinext-ai/README.md +169 -0
  314. package/dist/templates/vinext-ai/_gitignore +33 -0
  315. package/dist/templates/vinext-ai/app/[...puckPath]/client.tsx +12 -0
  316. package/dist/templates/vinext-ai/app/[...puckPath]/page.tsx +49 -0
  317. package/dist/templates/vinext-ai/app/api/pages/route.ts +26 -0
  318. package/dist/templates/vinext-ai/app/api/puck/[...all]/route.ts +31 -0
  319. package/dist/templates/vinext-ai/app/layout.tsx +13 -0
  320. package/dist/templates/vinext-ai/app/page.tsx +1 -0
  321. package/dist/templates/vinext-ai/app/puck/[...puckPath]/client.tsx +38 -0
  322. package/dist/templates/vinext-ai/app/puck/[...puckPath]/page.tsx +57 -0
  323. package/dist/templates/vinext-ai/app/puck/page.tsx +3 -0
  324. package/dist/templates/vinext-ai/app/styles.css +3 -0
  325. package/dist/templates/vinext-ai/database.json +1 -0
  326. package/dist/templates/vinext-ai/lib/get-page.ts +11 -0
  327. package/dist/templates/vinext-ai/package.json +32 -0
  328. package/dist/templates/vinext-ai/proxy.ts +27 -0
  329. package/dist/templates/vinext-ai/public/favicon.ico +0 -0
  330. package/dist/templates/vinext-ai/puck.config.tsx +25 -0
  331. package/dist/templates/vinext-ai/tsconfig.json +30 -0
  332. package/dist/templates/vinext-ai/vite.config.ts +9 -0
  333. package/dist/templates/vite/README.md +56 -0
  334. package/dist/templates/vite/_gitignore +24 -0
  335. package/dist/templates/vite/database.json +1 -0
  336. package/dist/templates/vite/index.html +12 -0
  337. package/dist/templates/vite/package.json +29 -0
  338. package/dist/templates/vite/server/index.ts +13 -0
  339. package/dist/templates/vite/server/prod.ts +18 -0
  340. package/dist/templates/vite/server/puck/pages.ts +32 -0
  341. package/dist/templates/vite/src/App.tsx +11 -0
  342. package/dist/templates/vite/src/main.tsx +12 -0
  343. package/dist/templates/vite/src/puck/editor.tsx +28 -0
  344. package/dist/templates/vite/src/puck/page.tsx +27 -0
  345. package/dist/templates/vite/src/puck/pages.ts +15 -0
  346. package/dist/templates/vite/src/puck/root.tsx +27 -0
  347. package/dist/templates/vite/src/puck.config.tsx +23 -0
  348. package/dist/templates/vite/tsconfig.app.json +26 -0
  349. package/dist/templates/vite/tsconfig.json +7 -0
  350. package/dist/templates/vite/tsconfig.node.json +23 -0
  351. package/dist/templates/vite/vite.config.ts +14 -0
  352. package/dist/templates/vite-ai/README.md +67 -0
  353. package/dist/templates/vite-ai/_gitignore +24 -0
  354. package/dist/templates/vite-ai/database.json +1 -0
  355. package/dist/templates/vite-ai/index.html +12 -0
  356. package/dist/templates/vite-ai/package.json +31 -0
  357. package/dist/templates/vite-ai/server/index.ts +15 -0
  358. package/dist/templates/vite-ai/server/prod.ts +18 -0
  359. package/dist/templates/vite-ai/server/puck/cloud.ts +30 -0
  360. package/dist/templates/vite-ai/server/puck/pages.ts +32 -0
  361. package/dist/templates/vite-ai/src/App.tsx +11 -0
  362. package/dist/templates/vite-ai/src/main.tsx +12 -0
  363. package/dist/templates/vite-ai/src/puck/editor.tsx +49 -0
  364. package/dist/templates/vite-ai/src/puck/page.tsx +28 -0
  365. package/dist/templates/vite-ai/src/puck/pages.ts +15 -0
  366. package/dist/templates/vite-ai/src/puck/root.tsx +27 -0
  367. package/dist/templates/vite-ai/src/puck.config.tsx +23 -0
  368. package/dist/templates/vite-ai/tsconfig.app.json +26 -0
  369. package/dist/templates/vite-ai/tsconfig.json +7 -0
  370. package/dist/templates/vite-ai/tsconfig.node.json +23 -0
  371. package/dist/templates/vite-ai/vite.config.ts +14 -0
  372. package/package.json +51 -0
@@ -0,0 +1,302 @@
1
+ # Slot
2
+
3
+ Define a drag-and-drop area containing nested components. Extends [Base](/docs/api-reference/fields/base).
4
+
5
+ - This field produces an array of [ComponentData](/docs/api-reference/data-model/component-data)
6
+ - The array is transformed to a [render function](#render-function) before being provided to `render()`
7
+
8
+ This field does render any UI in the form section.
9
+
10
+ ```tsx
11
+ const config = {
12
+ components: {
13
+ Example: {
14
+ fields: {
15
+ content: {
16
+ type: "slot",
17
+ },
18
+ },
19
+ render: ({ content: Content }) => {
20
+ return <Content />;
21
+ },
22
+ },
23
+ Card: {
24
+ render: () => <div>Hello, world</div>,
25
+ },
26
+ },
27
+ };
28
+ ```
29
+
30
+ ## TypeScript
31
+
32
+ When using TypeScript, make sure to use the `Slot` type so the render prop is correctly transformed.
33
+
34
+ ```tsx
35
+ import { Slot } from "@puckeditor/core";
36
+
37
+ type Props = {
38
+ Example: {
39
+ content: Slot; // Converted from the ComponentData[] type into a render function
40
+ };
41
+ };
42
+ ```
43
+
44
+ ## Params
45
+
46
+ | Param | Example | Type | Status |
47
+ | ----------------------- | ---------------------------- | ------ | -------- |
48
+ | [`type`](#type) | `type: "slot"` | "slot" | Required |
49
+ | [`allow`](#allow) | `allow: ["HeadingBlock"]` | Array | - |
50
+ | [`disallow`](#disallow) | `disallow: ["HeadingBlock"]` | Array | - |
51
+
52
+ ## Required params
53
+
54
+ ### `type`
55
+
56
+ The type of the field. Must be `"slot"` for Slot fields.
57
+
58
+ ```tsx
59
+ const config = {
60
+ components: {
61
+ Example: {
62
+ fields: {
63
+ content: {
64
+ type: "slot",
65
+ },
66
+ },
67
+ // ...
68
+ },
69
+ },
70
+ };
71
+ ```
72
+
73
+ ## Optional params
74
+
75
+ ### `allow`
76
+
77
+ Only allow specific components to be dragged into the slot. Will be overwritten by the [`allow` prop](#allow-1) provided to the render function.
78
+
79
+ ```tsx
80
+ const config = {
81
+ components: {
82
+ Example: {
83
+ fields: {
84
+ content: {
85
+ type: "slot",
86
+ allow: ["HeadingBlock"],
87
+ },
88
+ },
89
+ // ...
90
+ },
91
+ },
92
+ };
93
+ ```
94
+
95
+ ### `disallow`
96
+
97
+ Allow all but specific components to be dragged into the slot. Any items in `allow` will override `disallow`. Will be overwritten by the [`disallow` prop](#disallow-1) provided to the render function.
98
+
99
+ ```tsx
100
+ const config = {
101
+ components: {
102
+ Example: {
103
+ fields: {
104
+ content: {
105
+ type: "slot",
106
+ disallow: ["HeadingBlock"],
107
+ },
108
+ },
109
+ // ...
110
+ },
111
+ },
112
+ };
113
+ ```
114
+
115
+ ## Render function
116
+
117
+ Slot data is provided to `render()` as a render function (or component). Provide props to this function to customize the behavior of the slot at render-time.
118
+
119
+ | Param | Example | Type | Status |
120
+ | ----------------------------------- | ---------------------------- | ------------------------------------ | ------ |
121
+ | [`allow`](#allow-1) | `allow: ["HeadingBlock"]` | Array | - |
122
+ | [`as`](#as) | `as: "span"` | ElementType | - |
123
+ | [`className`](#classname) | `className: "MyClass"` | String | - |
124
+ | [`collisionAxis`](#collisionaxis) | `collisionAxis: "x"` | String | - |
125
+ | [`disallow`](#disallow-1) | `disallow: ["HeadingBlock"]` | Array | - |
126
+ | [`minEmptyHeight`](#minemptyheight) | `minEmptyHeight: "256px"` | CSSProperties["minHeight"] \| number | - |
127
+ | [`ref`](#ref) | `ref: ref` | Ref | - |
128
+ | [`style`](#style) | `style: {display: "flex"}` | CSSProperties | - |
129
+
130
+ ### `allow`
131
+
132
+ Only allow specific components to be dragged into the slot. Overrides the [`allow` parameter](#allow) provided to the field.
133
+
134
+ > **Note:** Drag-and-drop in the outline does not respect this prop. Prefer the [`allow`
135
+ > field parameter](#allow), which is enforced everywhere.
136
+
137
+ ```tsx
138
+ const config = {
139
+ components: {
140
+ Example: {
141
+ render: ({ content: Content }) => {
142
+ return <Content allow={["HeadingBlock"]} />;
143
+ },
144
+ },
145
+ },
146
+ };
147
+ ```
148
+
149
+ ### `as`
150
+
151
+ Render a custom element or component for the slot.
152
+
153
+ ```tsx
154
+ const config = {
155
+ components: {
156
+ Example: {
157
+ render: ({ content: Content }) => {
158
+ return <Content as="table" />;
159
+ },
160
+ },
161
+ },
162
+ };
163
+ ```
164
+
165
+ Any additional props are forwarded to the element or component provided via `as`.
166
+
167
+ ```tsx
168
+ const config = {
169
+ components: {
170
+ Example: {
171
+ render: ({ content: Content }) => {
172
+ return <Content as="details" open />;
173
+ },
174
+ },
175
+ },
176
+ };
177
+ ```
178
+
179
+ The following props are **not** forwarded to the `as` element, because Puck either consumes them internally or they are incompatible with slots:
180
+
181
+ | Prop | Reason |
182
+ | ------------------------- | ----------------------------------- |
183
+ | `zone` | Identifies the drop zone internally |
184
+ | `content` | Injected by Puck internally |
185
+ | `config` | Injected by Puck internally |
186
+ | `metadata` | Injected by Puck internally |
187
+ | `dangerouslySetInnerHTML` | Isn't compatible with Puck slots |
188
+ | `children` | Isn't compatible with Puck slots |
189
+
190
+ ### `className`
191
+
192
+ Provide a className to the rendered element. The default styles will still be applied.
193
+
194
+ ```tsx
195
+ const config = {
196
+ components: {
197
+ Example: {
198
+ render: ({ content: Content }) => {
199
+ return <Content className="MyComponent" />;
200
+ },
201
+ },
202
+ },
203
+ };
204
+ ```
205
+
206
+ ### `collisionAxis`
207
+
208
+ Configure which axis Puck will use for overlap collision detection.
209
+
210
+ Options:
211
+
212
+ - `x` - detect collisions based their x-axis overlap
213
+ - `y` - detect collisions based their y-axis overlap
214
+ - `dynamic` - automatically choose an axis based on the direction of travel
215
+
216
+ The defaults are set based on the CSS layout of the parent:
217
+
218
+ - grid: `dynamic`
219
+ - flex (row): `x`
220
+ - inline/inline-block: `x`
221
+ - Everything else: `y`
222
+
223
+ ```tsx
224
+ const config = {
225
+ components: {
226
+ Example: {
227
+ render: ({ content: Content }) => {
228
+ return <Content collisionAxis="dynamic" />;
229
+ },
230
+ },
231
+ },
232
+ };
233
+ ```
234
+
235
+ ### `disallow`
236
+
237
+ Allow all but specific components to be dragged into the slot. Any items in `allow` will override `disallow`.
238
+
239
+ > **Note:** Drag-and-drop in the outline does not respect this prop. Prefer the
240
+ > [`disallow` field parameter](#disallow), which is enforced everywhere.
241
+
242
+ ```tsx
243
+ const config = {
244
+ components: {
245
+ Example: {
246
+ render: ({ content }) => {
247
+ return <Content disallow={["HeadingBlock"]} />;
248
+ },
249
+ },
250
+ },
251
+ };
252
+ ```
253
+
254
+ ### `minEmptyHeight`
255
+
256
+ The minimum height of the slot when empty. Defaults to `128px`.
257
+
258
+ ```tsx
259
+ const config = {
260
+ components: {
261
+ Example: {
262
+ render: () => {
263
+ return <Content minEmptyHeight="256px" />;
264
+ },
265
+ },
266
+ },
267
+ };
268
+ ```
269
+
270
+ ### `ref`
271
+
272
+ A [React ref](https://react.dev/learn/manipulating-the-dom-with-refs), assigned to the root node of the slot.
273
+
274
+ ```tsx
275
+ const config = {
276
+ components: {
277
+ Example: {
278
+ render: ({ content: Content }) => {
279
+ const ref = useRef();
280
+
281
+ return <Content ref={ref} />;
282
+ },
283
+ },
284
+ },
285
+ };
286
+ ```
287
+
288
+ ### `style`
289
+
290
+ Provide a style attribute to the slot. The default styles will still be applied.
291
+
292
+ ```tsx
293
+ const config = {
294
+ components: {
295
+ Example: {
296
+ render: ({ content: Content }) => {
297
+ return <Content style={{ display: "flex" }} />;
298
+ },
299
+ },
300
+ },
301
+ };
302
+ ```
@@ -0,0 +1,93 @@
1
+ # Text
2
+
3
+ Render a `text` input. Extends [Base](/docs/api-reference/fields/base).
4
+
5
+ ```tsx
6
+ const config = {
7
+ components: {
8
+ Example: {
9
+ fields: {
10
+ title: {
11
+ type: "text",
12
+ },
13
+ },
14
+ render: ({ title }) => {
15
+ return <p>{title}</p>;
16
+ },
17
+ },
18
+ },
19
+ };
20
+ ```
21
+
22
+ ## Params
23
+
24
+ | Param | Example | Type | Status |
25
+ | ------------------------------------- | ------------------------------- | ------- | -------- |
26
+ | [`type`](#type) | `type: "text"` | "text" | Required |
27
+ | [`contentEditable`](#contentEditable) | `contentEditable: true` | Boolean | - |
28
+ | [`placeholder`](#placeholder) | `placeholder: "Lorem ipsum..."` | String | - |
29
+
30
+ ## Required params
31
+
32
+ ### `type`
33
+
34
+ The type of the field. Must be `"text"` for Text fields.
35
+
36
+ ```tsx
37
+ const config = {
38
+ components: {
39
+ Example: {
40
+ fields: {
41
+ items: {
42
+ type: "text",
43
+ },
44
+ },
45
+ // ...
46
+ },
47
+ },
48
+ };
49
+ ```
50
+
51
+ ## Optional params
52
+
53
+ ### contentEditable
54
+
55
+ Enable inline text editing for this field. Defaults to `false`.
56
+
57
+ > **Warning:** When setting `contentEditable`, your [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) prop will be converted to an [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) when rendered inside [`<Puck>`](/docs/api-reference/components/puck) (but not [`<Render>`](/docs/api-reference/components/render)). When using TypeScript, change your `string` to `string | ReactNode`.
58
+
59
+ ```tsx
60
+ const config = {
61
+ components: {
62
+ Example: {
63
+ fields: {
64
+ title: {
65
+ type: "text",
66
+ contentEditable: true,
67
+ },
68
+ },
69
+ // ...
70
+ },
71
+ },
72
+ };
73
+ ```
74
+
75
+ ### Placeholder
76
+
77
+ The placeholder text to display when the field is empty.
78
+
79
+ ```tsx
80
+ const config = {
81
+ components: {
82
+ Example: {
83
+ fields: {
84
+ title: {
85
+ type: "text",
86
+ placeholder: "Lorem ipsum...",
87
+ },
88
+ },
89
+ // ...
90
+ },
91
+ },
92
+ };
93
+ ```
@@ -0,0 +1,93 @@
1
+ # Textarea
2
+
3
+ Render a `textarea` input. Extends [Base](/docs/api-reference/fields/base).
4
+
5
+ ```tsx
6
+ const config = {
7
+ components: {
8
+ Example: {
9
+ fields: {
10
+ description: {
11
+ type: "textarea",
12
+ },
13
+ },
14
+ render: ({ description }) => {
15
+ return <p>{description}</p>;
16
+ },
17
+ },
18
+ },
19
+ };
20
+ ```
21
+
22
+ ## Params
23
+
24
+ | Param | Example | Type | Status |
25
+ | ------------------------------------- | ------------------------------- | ---------- | -------- |
26
+ | [`type`](#type) | `type: "textarea"` | "textarea" | Required |
27
+ | [`contentEditable`](#contentEditable) | `contentEditable: true` | Boolean | - |
28
+ | [`placeholder`](#placeholder) | `placeholder: "Lorem ipsum..."` | String | - |
29
+
30
+ ## Required params
31
+
32
+ ### `type`
33
+
34
+ The type of the field. Must be `"textarea"` for Textarea fields.
35
+
36
+ ```tsx
37
+ const config = {
38
+ components: {
39
+ Example: {
40
+ fields: {
41
+ description: {
42
+ type: "textarea",
43
+ },
44
+ },
45
+ // ...
46
+ },
47
+ },
48
+ };
49
+ ```
50
+
51
+ ## Optional params
52
+
53
+ ### contentEditable
54
+
55
+ Enable inline text editing for this field. Defaults to `false`.
56
+
57
+ > **Warning:** When setting `contentEditable`, your [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) prop will be converted to an [Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) when rendered inside [`<Puck>`](/docs/api-reference/components/puck) (but not [`<Render>`](/docs/api-reference/components/render)). When using TypeScript, change your `string` to `string | ReactNode`.
58
+
59
+ ```tsx
60
+ const config = {
61
+ components: {
62
+ Example: {
63
+ fields: {
64
+ description: {
65
+ type: "textarea",
66
+ contentEditable: true,
67
+ },
68
+ },
69
+ // ...
70
+ },
71
+ },
72
+ };
73
+ ```
74
+
75
+ ### Placeholder
76
+
77
+ The placeholder text to display when the field is empty.
78
+
79
+ ```tsx
80
+ const config = {
81
+ components: {
82
+ Example: {
83
+ fields: {
84
+ description: {
85
+ type: "textarea",
86
+ placeholder: "Lorem ipsum...",
87
+ },
88
+ },
89
+ // ...
90
+ },
91
+ },
92
+ };
93
+ ```
@@ -0,0 +1,16 @@
1
+ # Fields
2
+
3
+ A field represents a user input shown in the Puck interface.
4
+
5
+ - [Base](/docs/api-reference/fields/base) - The base type shared by all fields.
6
+ - [Array](/docs/api-reference/fields/array) - Render a list of items with a subset of fields.
7
+ - [Custom](/docs/api-reference/fields/custom) - Implement a field with a custom UI.
8
+ - [External](/docs/api-reference/fields/external) - Select data from a list, typically populated via a third-party API.
9
+ - [Number](/docs/api-reference/fields/number) - Render a `number` input.
10
+ - [Object](/docs/api-reference/fields/object) - Render a subset of fields.
11
+ - [Radio](/docs/api-reference/fields/radio) - Render a `radio` input with a list of options.
12
+ - [RichText](/docs/api-reference/fields/richtext) - Render a rich text editor.
13
+ - [Select](/docs/api-reference/fields/select) - Render a `select` input with a list of options.
14
+ - [Slot](/docs/api-reference/fields/slot) - Define an area containing nested components.
15
+ - [Text](/docs/api-reference/fields/text) - Render a `text` input.
16
+ - [Textarea](/docs/api-reference/fields/textarea) - Render a `textarea` input.
@@ -0,0 +1,204 @@
1
+ # migrate
2
+
3
+ Migrate the [Data payload](/docs/api-reference/data-model/data) to the latest shape, automatically transforming deprecated data.
4
+
5
+ ```tsx
6
+ import { migrate } from "@puckeditor/core";
7
+
8
+ migrate(legacyData);
9
+ ```
10
+
11
+ ## Migrations
12
+
13
+ ### Root data to props
14
+
15
+ Migrates any props stored on root data to the `props` object.
16
+
17
+ **Before**
18
+
19
+ ```json
20
+ {
21
+ "root": {
22
+ "title": "Hello, world"
23
+ }
24
+ }
25
+ ```
26
+
27
+ **After**
28
+
29
+ ```json
30
+ {
31
+ "root": {
32
+ "props": { "title": "Hello, world" }
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### DropZones to slots
38
+
39
+ Migrates all [DropZone](/docs/api-reference/components/drop-zone) data from [`zones`](/docs/api-reference/data-model/data#zones) to inline [slots](/docs/api-reference/fields/slot). Requires slots to be provided via the [`config`](#config) arg, where the field name for the slot matches the `zone` prop of the DropZone. See the [DropZone to slots migration guide](/docs/guides/migrations/dropzones-to-slots) for more information.
40
+
41
+ **Before**
42
+
43
+ ```json
44
+ {
45
+ "content": [
46
+ {
47
+ "type": "Grid",
48
+ "props": {
49
+ "id": "Grid-12345"
50
+ }
51
+ }
52
+ ],
53
+ "zones": {
54
+ "Grid-12345:items": [
55
+ {
56
+ "type": "HeadingBlock",
57
+ "props": {
58
+ "id": "Heading-12345",
59
+ "title": "Hello, world"
60
+ }
61
+ }
62
+ ]
63
+ }
64
+ }
65
+ ```
66
+
67
+ **After**
68
+
69
+ ```json
70
+ {
71
+ "content": [
72
+ {
73
+ "type": "Grid",
74
+ "props": {
75
+ "id": "Grid-12345",
76
+ "items": [
77
+ {
78
+ "type": "HeadingBlock",
79
+ "props": {
80
+ "id": "Heading-12345",
81
+ "title": "Hello, world"
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ ```
90
+
91
+ ## Args
92
+
93
+ | Param | Example | Type | Status |
94
+ | --------------------------------------- | --------------------------------------------- | -------------------------------------------------- | -------- |
95
+ | [`data`](#data) | `{ content: [{type: "Heading", props: {} }]}` | [Data](/docs/api-reference/data-model/data) | Required |
96
+ | [`config`](#config) | `{ components: {} }` | [Config](/docs/api-reference/configuration/config) | - |
97
+ | [`migrationOptions`](#migrationoptions) | `{ migrateDynamicZonesForComponent: {} }` | [MigrationOptions](#migrationoptions-type) | - |
98
+
99
+ ### `data`
100
+
101
+ The legacy data you want to transform.
102
+
103
+ ### `config`
104
+
105
+ A [config](/docs/api-reference/configuration/config) object. Required if migrating data with [slots](/docs/api-reference/fields/slot).
106
+
107
+ ### `migrationOptions`
108
+
109
+ Options to customize how data is migrated.
110
+
111
+ #### `migrateDynamicZonesForComponent`
112
+
113
+ An object mapping component names to custom dropzone migration functions. The function will be called for any component with DropZones that don't have a slot field definition with a matching name in the config.
114
+
115
+ Each migration function receives:
116
+
117
+ - `props`: The current component props
118
+ - `zones`: A record of zone names to their content
119
+
120
+ The function should return the updated component props with the migrated zone data.
121
+
122
+ ```tsx
123
+ migrate(legacyData, config, {
124
+ migrateDynamicZonesForComponent: {
125
+ Columns: (props, zones) => {
126
+ return {
127
+ ...props,
128
+ columns: Object.values(zones).map((zone) => ({
129
+ column: zone,
130
+ })),
131
+ };
132
+ },
133
+ },
134
+ });
135
+ ```
136
+
137
+ **Before**
138
+
139
+ ```json
140
+ {
141
+ "root": {
142
+ "props": {
143
+ "title": "Legacy Zones Migration"
144
+ }
145
+ },
146
+ "content": [
147
+ {
148
+ "type": "Columns",
149
+ "props": {
150
+ "columns": [{}],
151
+ "id": "Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be"
152
+ }
153
+ }
154
+ ],
155
+ "zones": {
156
+ "Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be:column-0": [
157
+ {
158
+ "type": "Text",
159
+ "props": {
160
+ "text": "Drop zone 1",
161
+ "id": "Text-c2b5c0a5-d76b-4120-8bb3-99934e119967"
162
+ }
163
+ }
164
+ ]
165
+ }
166
+ }
167
+ ```
168
+
169
+ **After**
170
+
171
+ ```json
172
+ {
173
+ "root": {
174
+ "props": {
175
+ "title": "Legacy Zones Migration"
176
+ }
177
+ },
178
+ "content": [
179
+ {
180
+ "type": "Columns",
181
+ "props": {
182
+ "columns": [
183
+ {
184
+ "column": [
185
+ {
186
+ "type": "Text",
187
+ "props": {
188
+ "text": "Drop zone 1",
189
+ "id": "Text-c2b5c0a5-d76b-4120-8bb3-99934e119967"
190
+ }
191
+ }
192
+ ]
193
+ }
194
+ ],
195
+ "id": "Columns-eb9dfe22-4408-44e6-b8e5-fbaedbbdb3be"
196
+ }
197
+ }
198
+ ]
199
+ }
200
+ ```
201
+
202
+ ## Returns
203
+
204
+ The updated [Data](/docs/api-reference/data-model/data) object.