rimecms 0.33.0 → 1.0.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 (489) hide show
  1. package/dist/adapter-sqlite/auth.server.d.ts +2 -2
  2. package/dist/adapter-sqlite/columns.server.js +2 -2
  3. package/dist/adapter-sqlite/connect.server.d.ts +12 -0
  4. package/dist/adapter-sqlite/connect.server.js +31 -0
  5. package/dist/adapter-sqlite/generate-schema/index.server.js +11 -3
  6. package/dist/adapter-sqlite/generate-schema/root.server.d.ts +13 -4
  7. package/dist/adapter-sqlite/generate-schema/root.server.js +75 -131
  8. package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +27 -6
  9. package/dist/adapter-sqlite/generate-schema/templates.server.js +52 -10
  10. package/dist/adapter-sqlite/index.server.d.ts +13 -5
  11. package/dist/adapter-sqlite/index.server.js +9 -6
  12. package/dist/adapter-sqlite/naming.server.d.ts +6 -8
  13. package/dist/adapter-sqlite/naming.server.js +22 -4
  14. package/dist/adapter-sqlite/paths.server.d.ts +10 -0
  15. package/dist/adapter-sqlite/paths.server.js +122 -0
  16. package/dist/adapter-sqlite/read.server.d.ts +10 -1
  17. package/dist/adapter-sqlite/read.server.js +22 -10
  18. package/dist/adapter-sqlite/select.server.d.ts +19 -0
  19. package/dist/adapter-sqlite/select.server.js +71 -63
  20. package/dist/adapter-sqlite/table.server.d.ts +2 -2
  21. package/dist/adapter-sqlite/transform.server.js +33 -3
  22. package/dist/adapter-sqlite/types.server.d.ts +10 -3
  23. package/dist/adapter-sqlite/where.server.d.ts +2 -3
  24. package/dist/adapter-sqlite/where.server.js +19 -1
  25. package/dist/core/adapter.d.ts +94 -0
  26. package/dist/core/auth/better-auth/config.server.d.ts +3 -3
  27. package/dist/core/auth/better-auth/instance.server.d.ts +6 -6
  28. package/dist/core/auth/handler/index.server.js +1 -1
  29. package/dist/core/auth/staff/derive.js +1 -1
  30. package/dist/core/auth/validate-config.js +3 -5
  31. package/dist/core/boot.server.d.ts +6 -6
  32. package/dist/core/config/types.d.ts +43 -5
  33. package/dist/core/config/validate.server.js +34 -51
  34. package/dist/core/dev/cli/commands/build.js +21 -6
  35. package/dist/core/dev/cli/commands/init.server.d.ts +2 -1
  36. package/dist/core/dev/cli/commands/init.server.js +32 -6
  37. package/dist/core/dev/cli/index.js +1 -0
  38. package/dist/core/dev/cli/templates/init.d.ts +6 -1
  39. package/dist/core/dev/cli/templates/init.js +30 -2
  40. package/dist/core/dev/cli/util/package-manager.server.d.ts +1 -0
  41. package/dist/core/dev/cli/util/package-manager.server.js +11 -8
  42. package/dist/core/dev/cli/util/package.server.d.ts +9 -0
  43. package/dist/core/dev/cli/util/package.server.js +43 -0
  44. package/dist/core/dev/codegen/types/contributions.server.d.ts +3 -2
  45. package/dist/core/dev/codegen/types/contributions.server.js +10 -3
  46. package/dist/core/dev/vite.server.js +4 -3
  47. package/dist/core/fields/blank.d.ts +21 -0
  48. package/dist/core/fields/blank.js +37 -0
  49. package/dist/core/fields/builders/field-builder.d.ts +53 -0
  50. package/dist/core/fields/builders/field-builder.js +14 -1
  51. package/dist/core/fields/builders/form-field-builder.d.ts +8 -0
  52. package/dist/core/fields/builders/form-field-builder.js +14 -1
  53. package/dist/core/fields/util.d.ts +9 -2
  54. package/dist/core/fields/util.js +123 -135
  55. package/dist/core/fields/walk.d.ts +44 -0
  56. package/dist/core/fields/walk.js +55 -0
  57. package/dist/core/handler.server.js +4 -0
  58. package/dist/core/i18n/context.d.ts +5 -0
  59. package/dist/core/i18n/context.js +6 -0
  60. package/dist/core/i18n/en/common.d.ts +71 -0
  61. package/dist/core/i18n/en/common.js +72 -1
  62. package/dist/core/i18n/en/fields.d.ts +68 -0
  63. package/dist/core/i18n/en/fields.js +69 -1
  64. package/dist/core/i18n/fr/common.d.ts +71 -0
  65. package/dist/core/i18n/fr/common.js +72 -1
  66. package/dist/core/i18n/fr/fields.d.ts +68 -0
  67. package/dist/core/i18n/fr/fields.js +69 -1
  68. package/dist/core/i18n/index.d.ts +29 -3
  69. package/dist/core/i18n/index.js +55 -29
  70. package/dist/core/locale/copy.server.js +3 -3
  71. package/dist/core/logger.server.js +15 -6
  72. package/dist/core/pipeline/build-document.server.d.ts +3 -0
  73. package/dist/core/pipeline/build-document.server.js +10 -7
  74. package/dist/core/pipeline/config-map/index.d.ts +9 -0
  75. package/dist/core/pipeline/config-map/index.js +16 -50
  76. package/dist/core/pipeline/hooks/process-document-fields.server.d.ts +3 -0
  77. package/dist/core/pipeline/hooks/process-document-fields.server.js +48 -12
  78. package/dist/core/pipeline/hooks/set-default-values.server.d.ts +1 -0
  79. package/dist/core/pipeline/hooks/set-default-values.server.js +1 -0
  80. package/dist/core/pipeline/persist/blocks/extract.server.js +1 -1
  81. package/dist/core/pipeline/persist/relations/extract.server.js +2 -0
  82. package/dist/core/pipeline/populate-relations.server.d.ts +27 -0
  83. package/dist/core/pipeline/populate-relations.server.js +42 -0
  84. package/dist/core/pipeline/run.server.d.ts +17 -6
  85. package/dist/core/pipeline/run.server.js +44 -30
  86. package/dist/core/plugins/cache/module.server.d.ts +1 -1
  87. package/dist/core/plugins/cache/module.server.js +5 -5
  88. package/dist/core/prototype/area/api.server.js +1 -2
  89. package/dist/core/prototype/area/definition.js +1 -10
  90. package/dist/core/prototype/area/definition.server.js +4 -5
  91. package/dist/core/prototype/area/hooks.server.js +3 -2
  92. package/dist/core/prototype/area/operations/find.js +2 -0
  93. package/dist/core/prototype/blank.d.ts +26 -0
  94. package/dist/core/prototype/blank.js +22 -0
  95. package/dist/core/prototype/collection/api.server.d.ts +29 -3
  96. package/dist/core/prototype/collection/api.server.js +47 -4
  97. package/dist/core/prototype/collection/definition.js +0 -3
  98. package/dist/core/prototype/collection/hooks/merge-with-blank.server.d.ts +5 -1
  99. package/dist/core/prototype/collection/hooks/merge-with-blank.server.js +8 -22
  100. package/dist/core/prototype/collection/hooks.server.js +11 -5
  101. package/dist/core/prototype/collection/nested/module.server.js +3 -1
  102. package/dist/core/prototype/collection/nested/tree.d.ts +12 -0
  103. package/dist/core/prototype/collection/nested/tree.js +42 -0
  104. package/dist/core/prototype/collection/operations/find-by-id.js +2 -0
  105. package/dist/core/prototype/collection/operations/find-by-ids.d.ts +19 -0
  106. package/dist/core/prototype/collection/operations/find-by-ids.js +54 -0
  107. package/dist/core/prototype/collection/operations/find.js +21 -27
  108. package/dist/core/prototype/collection/operations/update-slug-by-id.d.ts +20 -0
  109. package/dist/core/prototype/collection/operations/update-slug-by-id.js +53 -0
  110. package/dist/core/prototype/collection/rest/index.server.js +3 -1
  111. package/dist/core/prototype/collection/rest/update-slug-by-id.server.d.ts +2 -0
  112. package/dist/core/prototype/collection/rest/update-slug-by-id.server.js +20 -0
  113. package/dist/core/prototype/collection/thumbnail/find-thumbnail.d.ts +2 -1
  114. package/dist/core/prototype/collection/thumbnail/find-thumbnail.js +4 -27
  115. package/dist/core/prototype/collection/upload/directories/derive.js +3 -1
  116. package/dist/core/prototype/collection/upload/disk/delete.server.js +1 -2
  117. package/dist/core/prototype/define.js +2 -0
  118. package/dist/core/prototype/shared/metas/fields.js +2 -1
  119. package/dist/core/prototype/shared/title/find-title.d.ts +2 -1
  120. package/dist/core/prototype/shared/title/find-title.js +5 -28
  121. package/dist/core/prototype/shared/url/addresses.server.d.ts +26 -0
  122. package/dist/core/prototype/shared/url/addresses.server.js +119 -0
  123. package/dist/core/prototype/shared/url/doc-type.d.ts +6 -0
  124. package/dist/core/prototype/shared/url/doc-type.js +9 -0
  125. package/dist/core/prototype/shared/url/format.server.d.ts +27 -0
  126. package/dist/core/prototype/shared/url/format.server.js +38 -0
  127. package/dist/core/prototype/shared/url/hooks/create-paths.server.d.ts +2 -0
  128. package/dist/core/prototype/shared/url/hooks/create-paths.server.js +9 -0
  129. package/dist/core/prototype/shared/url/hooks/detach-paths.server.d.ts +5 -0
  130. package/dist/core/prototype/shared/url/hooks/detach-paths.server.js +18 -0
  131. package/dist/core/prototype/shared/url/hooks/index.server.d.ts +5 -1
  132. package/dist/core/prototype/shared/url/hooks/index.server.js +5 -1
  133. package/dist/core/prototype/shared/url/hooks/set-area-url.server.d.ts +2 -0
  134. package/dist/core/prototype/shared/url/hooks/set-area-url.server.js +8 -0
  135. package/dist/core/prototype/shared/url/hooks/set-live-url.server.d.ts +5 -0
  136. package/dist/core/prototype/shared/url/hooks/set-live-url.server.js +19 -0
  137. package/dist/core/prototype/shared/url/hooks/sync-paths.server.d.ts +7 -0
  138. package/dist/core/prototype/shared/url/hooks/sync-paths.server.js +37 -0
  139. package/dist/core/prototype/shared/url/refresh.server.d.ts +36 -0
  140. package/dist/core/prototype/shared/url/refresh.server.js +58 -0
  141. package/dist/core/prototype/shared/versions/configure.server.js +3 -0
  142. package/dist/core/routes/context.server.d.ts +2 -1
  143. package/dist/fields/blocks/component/AddBlockButton.svelte +48 -137
  144. package/dist/fields/blocks/component/Block.svelte +153 -117
  145. package/dist/fields/blocks/component/Block.svelte.d.ts +11 -5
  146. package/dist/fields/blocks/component/BlockActions.svelte +76 -26
  147. package/dist/fields/blocks/component/BlockActions.svelte.d.ts +3 -0
  148. package/dist/fields/blocks/component/Blocks.svelte +248 -91
  149. package/dist/fields/blocks/component/focus/BlocksFocus.svelte +680 -0
  150. package/dist/fields/blocks/component/focus/BlocksFocus.svelte.d.ts +7 -0
  151. package/dist/fields/blocks/component/focus/Layers.svelte +145 -0
  152. package/dist/fields/blocks/component/focus/Layers.svelte.d.ts +9 -0
  153. package/dist/fields/blocks/component/focus/LayersList.svelte +304 -0
  154. package/dist/fields/blocks/component/focus/LayersList.svelte.d.ts +10 -0
  155. package/dist/fields/blocks/component/focus/Palette.svelte +135 -0
  156. package/dist/fields/blocks/component/focus/Palette.svelte.d.ts +9 -0
  157. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte +77 -0
  158. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte.d.ts +10 -0
  159. package/dist/fields/blocks/component/focus/Renders.svelte +302 -0
  160. package/dist/fields/blocks/component/focus/Renders.svelte.d.ts +11 -0
  161. package/dist/fields/blocks/component/focus/Stage.svelte +190 -0
  162. package/dist/fields/blocks/component/focus/Stage.svelte.d.ts +8 -0
  163. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte +69 -0
  164. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte.d.ts +3 -0
  165. package/dist/fields/blocks/component/focus/focus.svelte.d.ts +140 -0
  166. package/dist/fields/blocks/component/focus/focus.svelte.js +424 -0
  167. package/dist/fields/blocks/component/picker/BlockPicker.svelte +88 -0
  168. package/dist/fields/blocks/component/picker/BlockPicker.svelte.d.ts +10 -0
  169. package/dist/fields/blocks/component/picker/BlockTile.svelte +121 -0
  170. package/dist/fields/blocks/component/picker/BlockTile.svelte.d.ts +12 -0
  171. package/dist/fields/blocks/index.d.ts +49 -7
  172. package/dist/fields/blocks/index.js +61 -12
  173. package/dist/fields/checkbox/component/Checkbox.svelte +11 -37
  174. package/dist/fields/checkbox/component/Checkbox.svelte.d.ts +1 -0
  175. package/dist/fields/combobox/component/ComboBox.svelte +37 -7
  176. package/dist/fields/combobox/component/combobox.css +26 -10
  177. package/dist/fields/date/component/Date.svelte +43 -12
  178. package/dist/fields/group/component/Group.svelte +110 -41
  179. package/dist/fields/group/index.d.ts +5 -1
  180. package/dist/fields/group/index.js +10 -2
  181. package/dist/fields/link/component/Link.svelte +184 -143
  182. package/dist/fields/link/component/RessourceInput.svelte +26 -24
  183. package/dist/fields/link/index.d.ts +1 -0
  184. package/dist/fields/link/module.server.js +2 -4
  185. package/dist/fields/number/component/Number.svelte +38 -20
  186. package/dist/fields/number/component/number.css +22 -20
  187. package/dist/fields/number/index.d.ts +1 -0
  188. package/dist/fields/radio/component/Radio.svelte +12 -0
  189. package/dist/fields/radio/index.js +1 -1
  190. package/dist/fields/relation/component/Relation.svelte +169 -40
  191. package/dist/fields/relation/component/RelationInline.svelte +258 -0
  192. package/dist/fields/relation/component/RelationInline.svelte.d.ts +26 -0
  193. package/dist/fields/relation/component/default/Default.svelte +210 -100
  194. package/dist/fields/relation/component/default/Default.svelte.d.ts +14 -1
  195. package/dist/fields/relation/component/types.d.ts +4 -0
  196. package/dist/fields/relation/component/upload/Browse.svelte +619 -88
  197. package/dist/fields/relation/component/upload/Browse.svelte.d.ts +10 -2
  198. package/dist/fields/relation/component/upload/Create.svelte +41 -0
  199. package/dist/fields/relation/component/upload/Create.svelte.d.ts +13 -0
  200. package/dist/fields/relation/component/upload/Upload.svelte +287 -101
  201. package/dist/fields/relation/component/upload/Upload.svelte.d.ts +6 -1
  202. package/dist/fields/relation/component/upload/upload.css +5 -81
  203. package/dist/fields/relation/module.server.js +7 -1
  204. package/dist/fields/relation/value.d.ts +25 -0
  205. package/dist/fields/relation/value.js +27 -0
  206. package/dist/fields/rich-text/component/RichText.svelte +12 -80
  207. package/dist/fields/rich-text/component/RichText.svelte.d.ts +1 -1
  208. package/dist/fields/rich-text/component/RichTextInline.svelte +28 -0
  209. package/dist/fields/rich-text/component/RichTextInline.svelte.d.ts +11 -0
  210. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +4 -3
  211. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +3 -1
  212. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +2 -2
  213. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +7 -10
  214. package/dist/fields/rich-text/component/drag-handle/drag-handle.css +0 -2
  215. package/dist/fields/rich-text/component/styles/editor.css +111 -0
  216. package/dist/fields/rich-text/component/styles/field.css +71 -0
  217. package/dist/fields/rich-text/component/suggestion/suggestion.svelte +41 -56
  218. package/dist/fields/rich-text/core/build-editor-config.js +1 -1
  219. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle-plugin.js +29 -3
  220. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.d.ts +1 -0
  221. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +2 -1
  222. package/dist/fields/rich-text/core/features/fields/fields.css +2 -3
  223. package/dist/fields/rich-text/core/features/hr/hr.css +4 -4
  224. package/dist/fields/rich-text/core/features/link/component/link-selector.css +0 -4
  225. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +24 -8
  226. package/dist/fields/rich-text/core/features/resource/resource.svelte +20 -6
  227. package/dist/fields/rich-text/core/features/upload/upload.svelte +20 -8
  228. package/dist/fields/rich-text/core/rich-text-editor-core.svelte +103 -0
  229. package/dist/fields/rich-text/core/rich-text-editor-core.svelte.d.ts +15 -0
  230. package/dist/fields/select/component/Select.svelte +67 -28
  231. package/dist/fields/slug/component/Slug.svelte +26 -53
  232. package/dist/fields/slug/index.d.ts +1 -0
  233. package/dist/fields/slug/index.js +1 -1
  234. package/dist/fields/tabs/component/Tabs.svelte +28 -22
  235. package/dist/fields/tabs/index.d.ts +4 -1
  236. package/dist/fields/tabs/index.js +17 -5
  237. package/dist/fields/text/index.d.ts +1 -0
  238. package/dist/fields/textarea/component/TextArea.svelte +28 -13
  239. package/dist/fields/textarea/index.d.ts +1 -0
  240. package/dist/fields/time/component/Time.svelte +9 -2
  241. package/dist/fields/toggle/component/Toggle.svelte +8 -25
  242. package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -0
  243. package/dist/fields/toggle/index.d.ts +1 -0
  244. package/dist/fields/tree/component/AddItemButton.svelte +18 -5
  245. package/dist/fields/tree/component/Tree.svelte +48 -19
  246. package/dist/fields/tree/component/TreeBlock.svelte +318 -104
  247. package/dist/fields/tree/component/TreeBlockActions.svelte +71 -7
  248. package/dist/fields/tree/component/TreeBlockActions.svelte.d.ts +4 -0
  249. package/dist/fields/tree/component/props.d.ts +2 -1
  250. package/dist/fields/tree/index.d.ts +13 -1
  251. package/dist/fields/tree/index.js +35 -9
  252. package/dist/fields/types.d.ts +3 -1
  253. package/dist/index.d.ts +4 -3
  254. package/dist/index.js +3 -2
  255. package/dist/panel/components/Root.svelte +16 -44
  256. package/dist/panel/components/Root.svelte.d.ts +1 -1
  257. package/dist/panel/components/fields/Error.svelte +18 -3
  258. package/dist/panel/components/fields/FieldsPreview.svelte +30 -17
  259. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +25 -3
  260. package/dist/panel/components/fields/Hint.svelte +51 -8
  261. package/dist/panel/components/fields/Hint.svelte.d.ts +11 -0
  262. package/dist/panel/components/fields/Label.svelte +2 -0
  263. package/dist/panel/components/fields/LabelFor.svelte +7 -2
  264. package/dist/panel/components/fields/RenderFields.svelte +10 -3
  265. package/dist/panel/components/fields/fieldset.svelte.d.ts +4 -1
  266. package/dist/panel/components/fields/fieldset.svelte.js +9 -2
  267. package/dist/panel/components/fields/index.d.ts +1 -0
  268. package/dist/panel/components/fields/setting.css +82 -0
  269. package/dist/panel/components/sections/auth/AuthForm.svelte +25 -26
  270. package/dist/panel/components/sections/collection/Avatar.svelte +61 -0
  271. package/dist/panel/components/sections/collection/Avatar.svelte.d.ts +9 -0
  272. package/dist/panel/components/sections/collection/DocStatus.svelte +28 -0
  273. package/dist/panel/components/sections/collection/DocStatus.svelte.d.ts +7 -0
  274. package/dist/panel/components/sections/collection/Empty.svelte +3 -3
  275. package/dist/panel/components/sections/collection/StatusDot.svelte +7 -5
  276. package/dist/panel/components/sections/collection/When.svelte +33 -0
  277. package/dist/panel/components/sections/collection/When.svelte.d.ts +8 -0
  278. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +65 -21
  279. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte.d.ts +3 -2
  280. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +45 -162
  281. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte.d.ts +3 -2
  282. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte +151 -0
  283. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte.d.ts +17 -0
  284. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte +177 -0
  285. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte.d.ts +12 -0
  286. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte +75 -0
  287. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte.d.ts +8 -0
  288. package/dist/panel/components/sections/collection/folder/Folder.svelte +18 -3
  289. package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +26 -18
  290. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +98 -58
  291. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte.d.ts +0 -1
  292. package/dist/panel/components/sections/collection/folder/Folders.svelte +60 -0
  293. package/dist/panel/components/sections/collection/folder/Folders.svelte.d.ts +7 -0
  294. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +31 -71
  295. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte.d.ts +1 -0
  296. package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +5 -3
  297. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +250 -37
  298. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte.d.ts +2 -0
  299. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +43 -18
  300. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte.d.ts +6 -4
  301. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +69 -58
  302. package/dist/panel/components/sections/collection/header/DisplayMode.svelte.d.ts +0 -1
  303. package/dist/panel/components/sections/collection/header/FilterMenu.svelte +60 -0
  304. package/dist/panel/components/sections/collection/header/FilterMenu.svelte.d.ts +14 -0
  305. package/dist/panel/components/sections/collection/header/SearchInput.svelte +17 -26
  306. package/dist/panel/components/sections/collection/header/SelectUI.svelte +19 -34
  307. package/dist/panel/components/sections/collection/list/CollectionList.svelte +99 -68
  308. package/dist/panel/components/sections/collection/list/columns.d.ts +21 -0
  309. package/dist/panel/components/sections/collection/list/columns.js +23 -0
  310. package/dist/panel/components/sections/collection/list/header/Header.svelte +99 -51
  311. package/dist/panel/components/sections/collection/list/row/Row.svelte +165 -82
  312. package/dist/panel/components/sections/collection/list/row/Row.svelte.d.ts +4 -0
  313. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +92 -44
  314. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte.d.ts +1 -0
  315. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +139 -43
  316. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte.d.ts +2 -0
  317. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +1 -1
  318. package/dist/panel/components/sections/commands/CommandButton.svelte +99 -0
  319. package/dist/panel/components/sections/commands/CommandButton.svelte.d.ts +10 -0
  320. package/dist/panel/components/sections/commands/CommandPalette.svelte +275 -0
  321. package/dist/panel/components/sections/commands/CommandPalette.svelte.d.ts +8 -0
  322. package/dist/panel/components/sections/commands/Commands.svelte +18 -0
  323. package/dist/panel/components/sections/commands/Commands.svelte.d.ts +9 -0
  324. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +23 -7
  325. package/dist/panel/components/sections/document/AuthFooter.svelte +31 -12
  326. package/dist/panel/components/sections/document/AutoSaveBanner.svelte +24 -7
  327. package/dist/panel/components/sections/document/ButtonSave.svelte +32 -21
  328. package/dist/panel/components/sections/document/ButtonSave.svelte.d.ts +5 -5
  329. package/dist/panel/components/sections/document/ButtonStatus.svelte +68 -20
  330. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte +199 -0
  331. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte.d.ts +10 -0
  332. package/dist/panel/components/sections/document/CurrentlyEdited.svelte +2 -2
  333. package/dist/panel/components/sections/document/Document.svelte +96 -65
  334. package/dist/panel/components/sections/document/DocumentChildren.svelte +175 -0
  335. package/dist/panel/components/sections/document/DocumentChildren.svelte.d.ts +8 -0
  336. package/dist/panel/components/sections/document/DocumentUrl.svelte +119 -0
  337. package/dist/panel/components/sections/document/DocumentUrl.svelte.d.ts +9 -0
  338. package/dist/panel/components/sections/document/Header.svelte +171 -94
  339. package/dist/panel/components/sections/document/Settings.svelte +255 -110
  340. package/dist/panel/components/sections/document/Settings.svelte.d.ts +0 -1
  341. package/dist/panel/components/sections/document/Versions.svelte +5 -3
  342. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +112 -53
  343. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte.d.ts +2 -2
  344. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +74 -41
  345. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte.d.ts +1 -1
  346. package/dist/panel/components/sections/live/LiveEdit.svelte +2 -2
  347. package/dist/panel/components/sections/live/LiveFloatingUI.svelte +30 -11
  348. package/dist/panel/components/sections/live/live-edit-panel.css +2 -2
  349. package/dist/panel/components/sections/page-layout/Page.svelte +13 -1
  350. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +55 -27
  351. package/dist/panel/components/ui/button/button.svelte +81 -54
  352. package/dist/panel/components/ui/button/index.d.ts +7 -3
  353. package/dist/panel/components/ui/button/index.js +2 -2
  354. package/dist/panel/components/ui/calendar/calendar.css +27 -27
  355. package/dist/panel/components/ui/calendar/calendar.svelte.d.ts +1 -1
  356. package/dist/panel/components/ui/card/card-description.svelte +1 -1
  357. package/dist/panel/components/ui/card/card.svelte +21 -4
  358. package/dist/panel/components/ui/card-document/card-document.svelte +24 -12
  359. package/dist/panel/components/ui/card-resource/card-resource.svelte +26 -8
  360. package/dist/panel/components/ui/checkbox/checkbox.css +8 -10
  361. package/dist/panel/components/ui/command/command-dialog.css +28 -4
  362. package/dist/panel/components/ui/command/command-dialog.svelte +4 -1
  363. package/dist/panel/components/ui/command/command-dialog.svelte.d.ts +2 -0
  364. package/dist/panel/components/ui/command/command-empty.css +1 -1
  365. package/dist/panel/components/ui/command/command-group.css +3 -3
  366. package/dist/panel/components/ui/command/command-input-select.svelte +3 -3
  367. package/dist/panel/components/ui/command/command-input.svelte +38 -14
  368. package/dist/panel/components/ui/command/command-input.svelte.d.ts +6 -1
  369. package/dist/panel/components/ui/command/command-item.css +2 -2
  370. package/dist/panel/components/ui/command/command-list.css +1 -1
  371. package/dist/panel/components/ui/command/command-separator.css +1 -1
  372. package/dist/panel/components/ui/context-menu/context-menu-item.css +2 -2
  373. package/dist/panel/components/ui/context-menu/context-menu.css +6 -7
  374. package/dist/panel/components/ui/dialog/dialog-content.css +8 -10
  375. package/dist/panel/components/ui/dialog/dialog-content.svelte +19 -0
  376. package/dist/panel/components/ui/dialog/dialog-description.css +1 -1
  377. package/dist/panel/components/ui/dialog/dialog-footer.svelte +5 -1
  378. package/dist/panel/components/ui/dialog/dialog-overlay.css +1 -1
  379. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +19 -5
  380. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +6 -4
  381. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +1 -1
  382. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +1 -1
  383. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +1 -1
  384. package/dist/panel/components/ui/input/input.svelte +57 -31
  385. package/dist/panel/components/ui/kbd/Kbd.svelte +90 -0
  386. package/dist/panel/components/ui/kbd/Kbd.svelte.d.ts +11 -0
  387. package/dist/panel/components/ui/kbd/index.d.ts +1 -0
  388. package/dist/panel/components/ui/kbd/index.js +1 -0
  389. package/dist/panel/components/ui/label/label.css +5 -3
  390. package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +27 -15
  391. package/dist/panel/components/ui/nav/Nav.svelte +180 -110
  392. package/dist/panel/components/ui/nav/Nav.svelte.d.ts +0 -2
  393. package/dist/panel/components/ui/nav/NavGroup.svelte +87 -73
  394. package/dist/panel/components/ui/nav/NavItemButton.svelte +69 -29
  395. package/dist/panel/components/ui/nav/UserButton.svelte +132 -71
  396. package/dist/panel/components/ui/page-header/PageHeader.svelte +140 -42
  397. package/dist/panel/components/ui/page-header/PageHeader.svelte.d.ts +8 -1
  398. package/dist/panel/components/ui/popover/popover-content.css +4 -3
  399. package/dist/panel/components/ui/radio-group/radio-group.css +4 -6
  400. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +19 -7
  401. package/dist/panel/components/ui/scroll-area/scroll-area.css +2 -2
  402. package/dist/panel/components/ui/separator/separator.svelte +1 -1
  403. package/dist/panel/components/ui/sheet/index.d.ts +4 -4
  404. package/dist/panel/components/ui/sheet/index.js +5 -5
  405. package/dist/panel/components/ui/sheet/sheet.css +50 -11
  406. package/dist/panel/components/ui/sonner/sonner.css +11 -8
  407. package/dist/panel/components/ui/switch/switch.css +13 -18
  408. package/dist/panel/components/ui/tabs/tabs.css +44 -35
  409. package/dist/panel/components/ui/tag/tag.svelte +20 -6
  410. package/dist/panel/components/ui/tooltip/tooltip-content.svelte +14 -4
  411. package/dist/panel/components/ui/tree/tree-rows.css +146 -0
  412. package/dist/panel/context/blocks-ops.d.ts +78 -0
  413. package/dist/panel/context/blocks-ops.js +170 -0
  414. package/dist/panel/context/collection.svelte.d.ts +28 -0
  415. package/dist/panel/context/collection.svelte.js +120 -65
  416. package/dist/panel/context/commands.svelte.d.ts +80 -0
  417. package/dist/panel/context/commands.svelte.js +108 -0
  418. package/dist/panel/context/documentForm.svelte.d.ts +34 -2
  419. package/dist/panel/context/documentForm.svelte.js +105 -102
  420. package/dist/panel/context/live.svelte.js +2 -73
  421. package/dist/panel/context/nav.svelte.d.ts +23 -0
  422. package/dist/panel/context/nav.svelte.js +56 -0
  423. package/dist/panel/fonts/Geist-VariableFont_wght.ttf +0 -0
  424. package/dist/panel/fonts/GeistMono-VariableFont_wght.ttf +0 -0
  425. package/dist/panel/index.d.ts +7 -1
  426. package/dist/panel/index.js +10 -1
  427. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +16 -1
  428. package/dist/panel/pages/collection/CollectionPage.svelte +236 -61
  429. package/dist/panel/pages/collection/load.server.js +1 -1
  430. package/dist/panel/pages/dashboard/Dashboard.svelte +135 -90
  431. package/dist/panel/pages/dashboard/DashboardCard.svelte +109 -0
  432. package/dist/panel/pages/dashboard/DashboardCard.svelte.d.ts +14 -0
  433. package/dist/panel/pages/dashboard/DashboardCollection.svelte +180 -57
  434. package/dist/panel/pages/dashboard/DashboardCollection.svelte.d.ts +1 -0
  435. package/dist/panel/pages/dashboard/DashboardRow.svelte +93 -0
  436. package/dist/panel/pages/dashboard/DashboardRow.svelte.d.ts +16 -0
  437. package/dist/panel/pages/dashboard/load.server.js +49 -25
  438. package/dist/panel/pages/dashboard/time.d.ts +19 -0
  439. package/dist/panel/pages/dashboard/time.js +29 -0
  440. package/dist/panel/pages/dashboard/types.d.ts +9 -2
  441. package/dist/panel/pages/live/Live.svelte +53 -50
  442. package/dist/panel/style/font.css +21 -32
  443. package/dist/panel/style/index.css +191 -122
  444. package/dist/panel/style/mixins/index.css +14 -0
  445. package/dist/panel/style/palette.css +35 -26
  446. package/dist/panel/style/postcss/size-function.d.ts +4 -0
  447. package/dist/panel/style/postcss/size-function.js +24 -0
  448. package/dist/panel/style/radius.css +4 -5
  449. package/dist/panel/style/scheme.css +111 -0
  450. package/dist/panel/style/size.css +3 -0
  451. package/dist/panel/util/Sortable.js +9 -4
  452. package/dist/panel/util/keys.d.ts +24 -0
  453. package/dist/panel/util/keys.js +63 -0
  454. package/dist/panel/util/populate.d.ts +8 -0
  455. package/dist/panel/util/populate.js +49 -0
  456. package/dist/panel/util/time.d.ts +12 -0
  457. package/dist/panel/util/time.js +35 -0
  458. package/dist/panel/util/upload-file.d.ts +106 -0
  459. package/dist/panel/util/upload-file.js +165 -0
  460. package/dist/util/index.d.ts +7 -10
  461. package/dist/util/index.js +7 -8
  462. package/dist/util/object.d.ts +10 -0
  463. package/dist/util/object.js +22 -1
  464. package/dist/util/string.d.ts +17 -0
  465. package/dist/util/string.js +23 -0
  466. package/package.json +1 -3
  467. package/dist/core/pipeline/config-map/build-tree-map.d.ts +0 -4
  468. package/dist/core/pipeline/config-map/build-tree-map.js +0 -30
  469. package/dist/core/prototype/doc.d.ts +0 -31
  470. package/dist/core/prototype/doc.js +0 -118
  471. package/dist/core/prototype/shared/url/augment.d.ts +0 -13
  472. package/dist/core/prototype/shared/url/augment.js +0 -11
  473. package/dist/core/prototype/shared/url/hooks/populate-url.server.d.ts +0 -4
  474. package/dist/core/prototype/shared/url/hooks/populate-url.server.js +0 -120
  475. package/dist/fields/rich-text/component/styles/rich-text.css +0 -183
  476. package/dist/panel/components/sections/collection/header/Header.svelte +0 -17
  477. package/dist/panel/components/sections/collection/header/Header.svelte.d.ts +0 -3
  478. package/dist/panel/components/sections/collection/header/Separator.svelte +0 -8
  479. package/dist/panel/components/sections/collection/header/Separator.svelte.d.ts +0 -26
  480. package/dist/panel/components/sections/collection/tree/util.d.ts +0 -12
  481. package/dist/panel/components/sections/collection/tree/util.js +0 -22
  482. package/dist/panel/fonts/ChivoMono-Italic-VariableFont_wght.ttf +0 -0
  483. package/dist/panel/fonts/ChivoMono-VariableFont_wght.ttf +0 -0
  484. package/dist/panel/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  485. package/dist/panel/fonts/Lora-Italic-VariableFont_wght.ttf +0 -0
  486. package/dist/panel/fonts/Lora-VariableFont_wght.ttf +0 -0
  487. package/dist/panel/style/shadow.css +0 -10
  488. package/dist/util/path.d.ts +0 -16
  489. package/dist/util/path.js +0 -19
@@ -0,0 +1,121 @@
1
+ <script lang="ts">
2
+ import { capitalize } from '../../../../util/string.js';
3
+ import { ToyBrick } from '@lucide/svelte';
4
+ import type { BlocksFieldBlock } from '../../index.js';
5
+
6
+ /**
7
+ * The inside of a type's tile: its thumbnail, or its icon, above its name and description. The
8
+ * element around it carries `rz-block-tile`: a button in the blocks editor, an item in the
9
+ * picker.
10
+ */
11
+ type Props = { block: BlocksFieldBlock };
12
+ const { block }: Props = $props();
13
+
14
+ const Thumbnail = $derived(block.thumbnail);
15
+ const Icon = $derived(block.icon ?? ToyBrick);
16
+ </script>
17
+
18
+ <span class="rz-block-tile__frame" data-thumbnail={Thumbnail ? '' : null}>
19
+ {#if Thumbnail}
20
+ <Thumbnail />
21
+ {:else}
22
+ <Icon size={18} />
23
+ {/if}
24
+ </span>
25
+ <span class="rz-block-tile__title">{block.label || capitalize(block.name)}</span>
26
+ {#if block.description}
27
+ <span class="rz-block-tile__description">{block.description}</span>
28
+ {/if}
29
+
30
+ <style>/* A level: its fill, a hairline, its shadow. raised, float. */
31
+
32
+ /* A well: an input, a track, a dropzone. Its edge shows on hover. */
33
+
34
+ /* The hover tint, laid over the element's own fill. */
35
+
36
+ /* The picked item of a segmented control. */
37
+
38
+ /* The primary button's face: black on light, white on dark. */
39
+
40
+ /* Keyboard focus on a button, a tab, a link. */
41
+
42
+ /* A focused input: an accent edge and a soft halo. */
43
+
44
+ /* An input with an error. */
45
+ /* A raised card, muted until hovered or picked. */
46
+ :global(.rz-block-tile) {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: var(--rz-size-1-5);
50
+ min-width: 0;
51
+ padding: var(--rz-size-1-5) var(--rz-size-1-5) var(--rz-size-2);
52
+ background-color: var(--rz-bg-raised);
53
+ box-shadow:
54
+ 0 0 0 1px var(--rz-border),
55
+ var(--rz-shadow-raised);
56
+ border-radius: var(--rz-radius-xl);
57
+ color: var(--rz-fg-muted);
58
+ font-size: var(--rz-text-sm);
59
+ text-align: left;
60
+ cursor: pointer;
61
+ outline: none;
62
+ }
63
+
64
+ :global(.rz-block-tile:hover),
65
+ :global(.rz-block-tile[data-selected]) {
66
+ background-image: linear-gradient(var(--rz-bg-hover) 0 0);
67
+ color: var(--rz-fg);
68
+ }
69
+
70
+ :global(.rz-block-tile[data-selected]) {
71
+ box-shadow:
72
+ 0 0 0 1px var(--rz-accent-border),
73
+ var(--rz-shadow-raised);
74
+ }
75
+
76
+ :global(.rz-block-tile:focus-visible) {
77
+ outline: 2px solid var(--rz-accent-border);
78
+ outline-offset: 2px;
79
+ }
80
+
81
+ /* 16:10, the thumbnail filling it, or the icon in its middle. */
82
+ .rz-block-tile__frame {
83
+ display: grid;
84
+ place-items: center;
85
+ aspect-ratio: 16 / 10;
86
+ overflow: hidden;
87
+ border-radius: var(--rz-radius-lg);
88
+ background-color: var(--rz-bg-well);
89
+ color: var(--rz-fg-subtle);
90
+
91
+ &[data-thumbnail] > :global(svg) {
92
+ display: block;
93
+ width: 100%;
94
+ height: 100%;
95
+ }
96
+ }
97
+
98
+ :global(.rz-block-tile:hover) .rz-block-tile__frame,
99
+ :global(.rz-block-tile[data-selected]) .rz-block-tile__frame {
100
+ color: var(--rz-fg-muted);
101
+ }
102
+
103
+ .rz-block-tile__title,
104
+ .rz-block-tile__description {
105
+ padding-inline: var(--rz-size-1);
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ white-space: nowrap;
109
+ }
110
+
111
+ .rz-block-tile__title {
112
+ font-variation-settings: 'wght' 500;
113
+ font-weight: 500;
114
+ }
115
+
116
+ .rz-block-tile__description {
117
+ margin-top: calc(-1 * var(--rz-unit));
118
+ font-size: var(--rz-text-xs);
119
+ color: var(--rz-fg-subtle);
120
+ }
121
+ </style>
@@ -0,0 +1,12 @@
1
+ import type { BlocksFieldBlock } from '../../index.js';
2
+ /**
3
+ * The inside of a type's tile: its thumbnail, or its icon, above its name and description. The
4
+ * element around it carries `rz-block-tile`: a button in the blocks editor, an item in the
5
+ * picker.
6
+ */
7
+ type Props = {
8
+ block: BlocksFieldBlock;
9
+ };
10
+ declare const BlockTile: import("svelte").Component<Props, {}, "">;
11
+ type BlockTile = ReturnType<typeof BlockTile>;
12
+ export default BlockTile;
@@ -1,10 +1,12 @@
1
- import type { FieldBuilder } from '../../core/fields/builders/field-builder.js';
1
+ import type { FieldBuilder, FieldNode, ValueNode } from '../../core/fields/builders/field-builder.js';
2
2
  import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
3
3
  import type { WithoutBuilders } from '../../core/fields/types.js';
4
+ import type { GenericBlock } from '../../core/prototype/types.js';
4
5
  import type { Field, FormField } from '../types.js';
6
+ import type { DocumentFormContext } from '../../panel/context/documentForm.svelte.js';
5
7
  import type { Dic } from '../../util/types.js';
6
8
  import type { IconProps } from '@lucide/svelte';
7
- import type { Component } from 'svelte';
9
+ import type { Component, Snippet } from 'svelte';
8
10
  export declare const blocks: (name: string, blocks: BlockBuilder[]) => BlocksBuilder;
9
11
  export declare const block: (name: string) => BlockBuilder;
10
12
  export declare class BlocksBuilder extends FormFieldBuilder<BlocksField> {
@@ -15,9 +17,17 @@ export declare class BlocksBuilder extends FormFieldBuilder<BlocksField> {
15
17
  [x: string]: any;
16
18
  } | null;
17
19
  }, {}, "">;
20
+ /**
21
+ * `default`: the list of cards in the document form.
22
+ * `summary`: one row, `3 blocks · Edit`, with the blocks edited in focus mode.
23
+ */
24
+ layout(layout: 'default' | 'summary'): this;
18
25
  localized(): this;
19
26
  compile(): any;
20
27
  protected generateType(): string;
28
+ /** One branch per block type, at an index only a document can name, each a table of its own. */
29
+ protected nodes(): FieldNode[];
30
+ protected nodesFor(value: unknown): ValueNode[];
21
31
  }
22
32
  /**
23
33
  * Checks if a field is a blocks field.
@@ -27,7 +37,7 @@ export declare const isBlocksField: (field: Field) => field is BlocksField;
27
37
  * Checks if a field is a blocks field (raw type).
28
38
  */
29
39
  export declare const isBlocksFieldRaw: (field: Field) => field is BlocksFieldRaw;
30
- declare class BlockBuilder {
40
+ export declare class BlockBuilder {
31
41
  block: BlocksFieldBlock;
32
42
  constructor(name: string);
33
43
  /**
@@ -37,8 +47,24 @@ declare class BlockBuilder {
37
47
  * block('home').icon(Home)
38
48
  */
39
49
  icon(component: Component<IconProps>): this;
40
- image(url: string): this;
50
+ /**
51
+ * The block's picture in the pickers of types to add: a component drawing an `<svg>`, which
52
+ * fills a 16:10 frame. It draws with `currentColor`, so it follows the light and dark themes.
53
+ * Without one, the pickers show the icon.
54
+ * @example
55
+ * import HeroThumbnail from './thumbnails/Hero.svelte'
56
+ * block('hero').thumbnail(HeroThumbnail)
57
+ */
58
+ thumbnail(component: Component): this;
41
59
  renderTitle(render: BlocksFieldBlockRenderTitle): this;
60
+ /**
61
+ * The component drawn for the block on the stage of focus mode.
62
+ * It gets the block value, its path, its fields and the form, so it can show the value,
63
+ * resolve its relations with `populate` and mount panel fields with `RenderFields`.
64
+ * @example
65
+ * block('hero').fields(text('title'), richText('text')).render(HeroRender)
66
+ */
67
+ render(component: Component<BlockRenderProps>): this;
42
68
  description(description: string): this;
43
69
  label(label: string): this;
44
70
  fields(...fields: FieldBuilder<Field>[]): this;
@@ -46,9 +72,10 @@ declare class BlockBuilder {
46
72
  name: string;
47
73
  label?: string;
48
74
  description?: string;
49
- image?: string;
50
75
  icon?: Component<IconProps>;
76
+ thumbnail?: Component;
51
77
  renderTitle?: BlocksFieldBlockRenderTitle;
78
+ render?: Component<BlockRenderProps>;
52
79
  fields: FieldBuilder<Field>[];
53
80
  };
54
81
  get name(): string;
@@ -58,24 +85,39 @@ declare class BlockBuilder {
58
85
  export type BlocksField = FormField & {
59
86
  type: 'blocks';
60
87
  tree?: boolean;
88
+ /** `summary`: one row in the form, the blocks edited in focus mode. */
89
+ layout?: 'default' | 'summary';
61
90
  blocks: BlockBuilder[];
62
91
  };
63
92
  export type BlocksFieldBlockRenderTitle = (args: {
64
93
  values: Dic;
65
94
  position: number;
66
95
  }) => string;
96
+ /** What a block's render component receives. */
97
+ export type BlockRenderProps = {
98
+ /** The block value, relations as `{ relationTo, documentId }`. */
99
+ block: GenericBlock;
100
+ /** `layout.sections.0` */
101
+ path: string;
102
+ /** The block's field builders, for `RenderFields`. */
103
+ fields: FieldBuilder<Field>[];
104
+ form: DocumentFormContext;
105
+ /** The block's nested lists, each block in its own selectable wrapper. `children('items')` for one list. */
106
+ children?: Snippet<[name?: string]>;
107
+ };
67
108
  export type BlocksFieldBlock = {
68
109
  name: string;
69
110
  label?: string;
70
111
  description?: string;
71
- image?: string;
72
112
  icon?: Component<IconProps>;
113
+ thumbnail?: Component;
73
114
  renderTitle?: BlocksFieldBlockRenderTitle;
115
+ render?: Component<BlockRenderProps>;
74
116
  fields: FieldBuilder<Field>[];
75
117
  };
76
118
  export type BlocksFieldRaw = FormField & {
77
119
  type: 'blocks';
78
120
  tree?: boolean;
121
+ layout?: 'default' | 'summary';
79
122
  blocks: WithoutBuilders<BlocksFieldBlock>[];
80
123
  };
81
- export {};
@@ -1,5 +1,5 @@
1
1
  import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
2
- import { toPascalCase } from '../../util/string.js';
2
+ import { toPascalCase, joinMemberTypes } from '../../util/string.js';
3
3
  import dedent from 'dedent';
4
4
  import { number } from '../number/index.js';
5
5
  import { text } from '../text/index.js';
@@ -22,6 +22,14 @@ export class BlocksBuilder extends FormFieldBuilder {
22
22
  get cell() {
23
23
  return Cell;
24
24
  }
25
+ /**
26
+ * `default`: the list of cards in the document form.
27
+ * `summary`: one row, `3 blocks · Edit`, with the blocks edited in focus mode.
28
+ */
29
+ layout(layout) {
30
+ this.field.layout = layout;
31
+ return this;
32
+ }
25
33
  localized() {
26
34
  if (this.field.blocks.length === 0) {
27
35
  throw new Error('localized() must be called after blocks assignment');
@@ -30,18 +38,14 @@ export class BlocksBuilder extends FormFieldBuilder {
30
38
  // Set all descendant fields localized
31
39
  this.field.blocks = this.field.blocks.map((blockBuilder) => {
32
40
  // Add a locale prop in each block
33
- const hasAlreadyLocale = !!blockBuilder.block.fields
34
- .filter((field) => field instanceof FormFieldBuilder)
35
- .find((field) => field.name === 'locale');
41
+ const hasAlreadyLocale = blockBuilder.block.fields.some((field) => field.name === 'locale');
36
42
  if (!hasAlreadyLocale) {
37
43
  blockBuilder.block.fields.push(text('locale').hidden());
38
44
  }
39
45
  // In each block process fields
40
46
  blockBuilder.block.fields = blockBuilder.block.fields.map((field) => {
41
- // If type / position / path field do not set as localized
42
- // as it's a block property
43
- if (field instanceof FormFieldBuilder &&
44
- ['position', 'type', 'path', 'locale'].includes(field.name)) {
47
+ // A block's own members are not content: type, position, path and locale stay as they are.
48
+ if (['position', 'type', 'path', 'locale'].includes(field.name)) {
45
49
  return field;
46
50
  }
47
51
  // For all others fields set as localized
@@ -73,7 +77,7 @@ export class BlocksBuilder extends FormFieldBuilder {
73
77
  .map((block) => {
74
78
  const blockTypeName = `Block${toPascalCase(block.name)}`;
75
79
  blockNames.push(blockTypeName);
76
- const fieldsType = block.get.fields.map((f) => f.use.generateType()).join(',');
80
+ const fieldsType = joinMemberTypes(block.get.fields.map((f) => f.use.generateType()));
77
81
  return dedent `
78
82
  //@shared:start ${blockTypeName}
79
83
  export type ${blockTypeName} = {
@@ -86,6 +90,32 @@ export class BlocksBuilder extends FormFieldBuilder {
86
90
  .join('\n');
87
91
  return `${blocksTypes}\n\n${this.name}: Array<${blockNames.join(' | ')}>,`;
88
92
  }
93
+ /** One branch per block type, at an index only a document can name, each a table of its own. */
94
+ nodes() {
95
+ return this.field.blocks.map((block) => ({
96
+ segment: `#:${block.name}`,
97
+ fields: block.get.fields,
98
+ storage: { kind: 'blocks', name: block.name }
99
+ }));
100
+ }
101
+ nodesFor(value) {
102
+ if (!Array.isArray(value))
103
+ return [];
104
+ return value.flatMap((item, index) => {
105
+ const block = this.field.blocks.find((candidate) => candidate.name === item?.type);
106
+ // Residual data for a block type the config no longer declares.
107
+ if (!block)
108
+ return [];
109
+ return [
110
+ {
111
+ segment: `${index}:${block.name}`,
112
+ fields: block.get.fields,
113
+ storage: { kind: 'blocks', name: block.name },
114
+ value: item
115
+ }
116
+ ];
117
+ });
118
+ }
89
119
  }
90
120
  /**
91
121
  * Checks if a field is a blocks field.
@@ -95,7 +125,7 @@ export const isBlocksField = (field) => field.type === 'blocks';
95
125
  * Checks if a field is a blocks field (raw type).
96
126
  */
97
127
  export const isBlocksFieldRaw = (field) => field.type === 'blocks';
98
- class BlockBuilder {
128
+ export class BlockBuilder {
99
129
  block;
100
130
  constructor(name) {
101
131
  this.block = {
@@ -113,14 +143,33 @@ class BlockBuilder {
113
143
  this.block.icon = component;
114
144
  return this;
115
145
  }
116
- image(url) {
117
- this.block.image = url;
146
+ /**
147
+ * The block's picture in the pickers of types to add: a component drawing an `<svg>`, which
148
+ * fills a 16:10 frame. It draws with `currentColor`, so it follows the light and dark themes.
149
+ * Without one, the pickers show the icon.
150
+ * @example
151
+ * import HeroThumbnail from './thumbnails/Hero.svelte'
152
+ * block('hero').thumbnail(HeroThumbnail)
153
+ */
154
+ thumbnail(component) {
155
+ this.block.thumbnail = component;
118
156
  return this;
119
157
  }
120
158
  renderTitle(render) {
121
159
  this.block.renderTitle = render;
122
160
  return this;
123
161
  }
162
+ /**
163
+ * The component drawn for the block on the stage of focus mode.
164
+ * It gets the block value, its path, its fields and the form, so it can show the value,
165
+ * resolve its relations with `populate` and mount panel fields with `RenderFields`.
166
+ * @example
167
+ * block('hero').fields(text('title'), richText('text')).render(HeroRender)
168
+ */
169
+ render(component) {
170
+ this.block.render = component;
171
+ return this;
172
+ }
124
173
  description(description) {
125
174
  this.block.description = description;
126
175
  return this;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
3
3
  import { Field } from '../../../panel/components/fields/index.js';
4
+ import '../../../panel/components/fields/setting.css';
4
5
  import { Checkbox } from '../../../panel/components/ui/checkbox/index.js';
5
6
  import { slugify } from '../../../util/string.js';
6
7
  import type { CheckboxProps } from './props';
@@ -17,52 +18,25 @@
17
18
  const inputId = $derived(`${form.key}-${slugify(path)}`);
18
19
  </script>
19
20
 
20
- <fieldset class="rz-checkbox-field {config.get.className || ''}" use:fieldset={field}>
21
- <div>
21
+ <!-- A row of a card: the name and the hint, then the box. -->
22
+ <fieldset class="rz-checkbox-field rz-setting {config.get.className || ''}" use:fieldset={field}>
23
+ <div class="rz-setting__row">
24
+ <div class="rz-setting__text">
25
+ <Field.LabelFor {config} for={inputId} />
26
+ <Field.Hint {config} />
27
+ </div>
22
28
  <Checkbox
23
29
  class="rz-checkbox-field__input {checkboxErrorClass}"
24
30
  checked={field.value}
25
31
  {onCheckedChange}
26
32
  id={inputId}
27
33
  />
28
- <Field.LabelFor {config} for={inputId} />
29
34
  </div>
30
- <Field.Hint {config} />
31
35
  </fieldset>
32
36
 
33
37
  <style>
34
- .rz-checkbox-field {
35
- margin-top: var(--rz-size-3);
36
- margin-bottom: var(--rz-size-3);
37
-
38
- :global {
39
- .rz-field-hint {
40
- margin-left: var(--rz-size-7);
41
- }
42
- }
43
- }
44
-
45
- .rz-checkbox-field > div {
46
- display: flex;
47
- align-items: center;
48
- gap: var(--rz-size-2);
49
- }
50
-
51
- :global {
52
- .rz-render-fields__field[data-type='checkbox']
53
- + .rz-render-fields__field[data-type='checkbox'] {
54
- .rz-checkbox-field {
55
- margin-top: 0;
56
- }
57
- }
58
- }
59
-
60
- .rz-checkbox-field__input {
61
- width: var(--rz-size-5);
62
- height: var(--rz-size-5);
63
- }
64
-
65
- .rz-checkbox--error {
66
- background-color: hsl(var(--rz-color-alert));
38
+ .rz-checkbox-field :global(.rz-checkbox--error) {
39
+ border-color: var(--rz-danger);
40
+ background-color: var(--rz-danger);
67
41
  }
68
42
  </style>
@@ -1,3 +1,4 @@
1
+ import '../../../panel/components/fields/setting.css';
1
2
  import { Checkbox } from '../../../panel/components/ui/checkbox/index.js';
2
3
  import type { CheckboxProps } from './props';
3
4
  declare const Checkbox: import("svelte").Component<CheckboxProps, {}, "">;
@@ -46,7 +46,7 @@
46
46
  {#if selected}
47
47
  {@render label(selected)}
48
48
  {:else}
49
- {t__('fields.select')}
49
+ <span class="rz-combobox__placeholder">{t__('fields.select')}</span>
50
50
  {/if}
51
51
  <ChevronsUpDown class="rz-combobox__chevron" />
52
52
  </Button>
@@ -62,7 +62,7 @@
62
62
  class="rz-combobox__search"
63
63
  />
64
64
  {/if}
65
- <Command.Empty>Nothing found.</Command.Empty>
65
+ <Command.Empty>{t__('common.nothing_found')}</Command.Empty>
66
66
  <Command.Group>
67
67
  {#each options as option, index (index)}
68
68
  <Command.Item
@@ -90,14 +90,44 @@
90
90
  <Field.Error error={field.error} />
91
91
  </fieldset>
92
92
 
93
- <style>
93
+ <style>/* A level: its fill, a hairline, its shadow. raised, float. */
94
+
95
+ /* A well: an input, a track, a dropzone. Its edge shows on hover. */
96
+
97
+ /* The hover tint, laid over the element's own fill. */
98
+
99
+ /* The picked item of a segmented control. */
100
+
101
+ /* The primary button's face: black on light, white on dark. */
102
+
103
+ /* Keyboard focus on a button, a tab, a link. */
104
+
105
+ /* A focused input: an accent edge and a soft halo. */
106
+
107
+ /* An input with an error. */
108
+ /* A well like an input: the picked option, or a quiet placeholder, then the chevron. */
94
109
  .rz-combobox-field :global {
95
110
  .rz-combobox__trigger.rz-button {
96
- min-width: 200px;
97
- height: var(--rz-size-11);
111
+ min-width: var(--rz-size-52);
112
+ height: var(--rz-input-height);
113
+ padding-inline: var(--rz-size-3) var(--rz-size-2-5);
98
114
  justify-content: space-between;
99
- border: 1px solid var(--rz-input-border-color);
100
- background-color: hsl(var(--rz-input-bg));
115
+ color: var(--rz-fg);
116
+ background-color: var(--rz-bg-well);
117
+ border: 1px solid var(--rz-border);
118
+ &:hover {
119
+ border-color: var(--rz-border-strong);
120
+ }
121
+ font-variation-settings: 'wght' 400;
122
+ font-weight: 400;
123
+ &:focus-visible {
124
+ outline: none;
125
+ border-color: var(--rz-accent-border);
126
+ box-shadow: 0 0 0 3px var(--rz-ring);
127
+ }
128
+ }
129
+ .rz-combobox__placeholder {
130
+ color: var(--rz-fg-subtle);
101
131
  }
102
132
  }
103
133
  </style>
@@ -3,16 +3,19 @@
3
3
  height: var(--rz-size-4);
4
4
  width: var(--rz-size-4);
5
5
  flex-shrink: 0;
6
- opacity: 0.5;
6
+ color: var(--rz-fg-subtle);
7
7
  }
8
8
 
9
9
  .rz-combobox__content {
10
- width: 200px;
10
+ width: var(--rz-size-52);
11
11
  max-height: calc(var(--rz-size-80) - 2px);
12
12
  overflow-y: auto;
13
- border-radius: var(--rz-radius-md);
14
- background-color: var(--rz-popover-bg);
15
- padding: 0;
13
+ border-radius: var(--rz-radius-xl);
14
+ background-color: var(--rz-bg-float);
15
+ box-shadow:
16
+ 0 0 0 1px var(--rz-border),
17
+ var(--rz-shadow-float);
18
+ padding: var(--rz-size-1);
16
19
  .rz-command-input {
17
20
  padding-top: 0;
18
21
  padding-bottom: 0;
@@ -20,14 +23,27 @@
20
23
  }
21
24
 
22
25
  .rz-combobox__item {
23
- height: var(--rz-size-11);
26
+ min-height: var(--rz-size-7);
24
27
  justify-content: space-between;
28
+ border-radius: var(--rz-radius-md);
29
+ font-size: var(--rz-text-md);
30
+ }
31
+
32
+ .rz-combobox__item[aria-selected='true'] {
33
+ background-color: var(--rz-bg-hover);
34
+ }
35
+
36
+ /* Nothing matches: one quiet line. */
37
+ .rz-combobox__content .rz-command-empty {
38
+ padding: var(--rz-size-2) var(--rz-size-2-5);
39
+ color: var(--rz-fg-subtle);
40
+ font-size: var(--rz-text-sm);
25
41
  }
26
42
 
27
43
  .rz-combobox__check {
28
- margin-right: var(--rz-size-2);
29
- height: var(--rz-size-4);
30
- width: var(--rz-size-4);
44
+ height: var(--rz-size-3-5);
45
+ width: var(--rz-size-3-5);
46
+ color: var(--rz-accent-text);
31
47
  }
32
48
 
33
49
  .rz-combobox__check--hidden {
@@ -37,5 +53,5 @@
37
53
  .rz-combobox__option-label {
38
54
  display: flex;
39
55
  align-items: center;
40
- gap: var(--rz-size-3);
56
+ gap: var(--rz-size-2);
41
57
  }
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import { t__ } from '../../../core/i18n/index.js';
2
3
  import { fieldset } from '../../../panel/components/fields/fieldset.svelte.js';
3
4
  import { Field } from '../../../panel/components/fields/index.js';
4
5
  import { Button } from '../../../panel/components/ui/button/index.js';
@@ -44,7 +45,7 @@
44
45
  }
45
46
  }
46
47
 
47
- const dateLabel = $derived(date ? locale.dateFormat(date) : 'Select a date');
48
+ const dateLabel = $derived(date ? locale.dateFormat(date) : t__('fields.select_date'));
48
49
  </script>
49
50
 
50
51
  <fieldset class="rz-date-field {config.get.className || ''}" use:fieldset={field}>
@@ -77,35 +78,65 @@
77
78
  <Field.Error error={field.error} />
78
79
  </fieldset>
79
80
 
80
- <style>
81
- .rz-date-field :global {
81
+ <style>/* A level: its fill, a hairline, its shadow. raised, float. */
82
+
83
+ /* A well: an input, a track, a dropzone. Its edge shows on hover. */
84
+
85
+ /* The hover tint, laid over the element's own fill. */
86
+
87
+ /* The picked item of a segmented control. */
88
+
89
+ /* The primary button's face: black on light, white on dark. */
90
+
91
+ /* Keyboard focus on a button, a tab, a link. */
92
+
93
+ /* A focused input: an accent edge and a soft halo. */
94
+
95
+ /* An input with an error. */
96
+ .rz-date-field :global {
82
97
  .rz-dialog-content.rz-date__dialog-content {
83
98
  width: 100px;
84
99
  padding: 12rem;
85
100
  }
101
+ /* A well like an input: an icon, then the date or a quiet placeholder. */
86
102
  .rz-date__button.rz-button {
87
- width: 200px;
103
+ width: var(--rz-size-52);
88
104
  justify-content: flex-start;
89
- border: var(--rz-border);
105
+ gap: var(--rz-size-2);
106
+ background-color: var(--rz-bg-well);
107
+ border: 1px solid var(--rz-border);
108
+ &:hover {
109
+ border-color: var(--rz-border-strong);
110
+ }
111
+ box-shadow: none;
90
112
  padding-left: var(--rz-size-3);
91
113
  padding-right: var(--rz-size-3);
92
114
  height: var(--rz-input-height);
93
115
  text-align: left;
94
- font-weight: normal;
116
+ font-variation-settings: 'wght' 400;
117
+ font-weight: 400;
118
+ &:focus-visible {
119
+ outline: none;
120
+ border-color: var(--rz-accent-border);
121
+ box-shadow: 0 0 0 3px var(--rz-ring);
122
+ }
95
123
  }
96
124
 
97
125
  .rz-date__button[data-empty] {
98
- color: hsl(var(--rz-color-fg) / 0.7);
126
+ color: var(--rz-fg-subtle);
99
127
  }
100
128
 
101
- .rz-date__button[data-error] {
102
- border-color: var(--rz-color-alert);
129
+ .rz-date__button.rz-button[data-error] {
130
+ outline: none;
131
+ border-color: var(--rz-danger);
132
+ box-shadow: 0 0 0 3px oklch(from var(--rz-danger) l c h / 0.15);
103
133
  }
104
134
 
105
135
  .rz-date__icon {
106
- margin-right: var(--rz-size-2);
107
- height: var(--rz-size-4);
108
- width: var(--rz-size-4);
136
+ flex-shrink: 0;
137
+ height: var(--rz-size-3-5);
138
+ width: var(--rz-size-3-5);
139
+ color: var(--rz-fg-subtle);
109
140
  }
110
141
  }
111
142
  </style>