@riducms/admin 0.2.2 → 0.3.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 (352) hide show
  1. package/THIRD_PARTY_NOTICES.md +60 -37
  2. package/package.json +27 -15
  3. package/src/app/admin-core-view-route.svelte +38 -53
  4. package/src/app/admin-extension-route.svelte +19 -0
  5. package/src/app/admin-layout.scss +175 -0
  6. package/src/app/admin-layout.svelte +144 -410
  7. package/src/app/admin-navigation-progress.svelte +11 -77
  8. package/src/app/admin-page-title.svelte +17 -85
  9. package/src/app/admin-page-title.ts +136 -0
  10. package/src/app/admin-route-error.svelte +24 -0
  11. package/src/app/admin-router-provider.svelte +34 -0
  12. package/src/app/admin-router-root.svelte +41 -0
  13. package/src/app/admin-routes.svelte +56 -19
  14. package/src/app/loading-boundary.svelte +3 -1
  15. package/src/app-meta.ts +13 -0
  16. package/src/app.css +138 -496
  17. package/src/app.svelte +60 -26
  18. package/src/components/brand/ridu-logo.svelte +19 -5
  19. package/src/components/data/list-table.scss +63 -0
  20. package/src/components/icons/LICENSE.md +24 -0
  21. package/src/components/icons/chevron.svelte +8 -0
  22. package/src/components/icons/plus.svelte +12 -0
  23. package/src/components/icons/search.svelte +12 -0
  24. package/src/components/icons/x.svelte +8 -0
  25. package/src/components/json-tree/json-tree-node.svelte +61 -67
  26. package/src/components/json-tree/json-viewer.scss +153 -0
  27. package/src/components/json-tree/json-viewer.svelte +57 -96
  28. package/src/components/ui/banner/banner.scss +28 -0
  29. package/src/components/ui/banner/banner.svelte +9 -8
  30. package/src/components/ui/banner/index.ts +1 -5
  31. package/src/components/ui/code-editor/code-editor.scss +20 -0
  32. package/src/components/ui/code-editor/code-editor.svelte +71 -0
  33. package/src/components/ui/code-editor/code-editor.ts +151 -0
  34. package/src/components/ui/code-editor/code-languages.ts +29 -0
  35. package/src/components/ui/collapsible-panel/collapsible-panel.scss +38 -0
  36. package/src/components/ui/collapsible-panel/collapsible-panel.svelte +13 -0
  37. package/src/components/ui/collapsible-panel/index.ts +1 -0
  38. package/src/components/ui/combobox/combobox.scss +163 -0
  39. package/src/components/ui/combobox/index.ts +22 -0
  40. package/src/components/ui/date-value-control/date-value-calendar.svelte +128 -16
  41. package/src/components/ui/date-value-control/date-value-control-loader.scss +26 -0
  42. package/src/components/ui/date-value-control/date-value-control-loader.svelte +35 -13
  43. package/src/components/ui/date-value-control/date-value-control.scss +223 -0
  44. package/src/components/ui/date-value-control/date-value-control.svelte +62 -44
  45. package/src/components/ui/drawer/drawer-depth.ts +8 -0
  46. package/src/components/ui/dropdown-menu/dropdown-menu-content.svelte +2 -5
  47. package/src/components/ui/dropdown-menu/dropdown-menu-item.svelte +2 -5
  48. package/src/components/ui/dropdown-menu/dropdown-menu-separator.svelte +2 -2
  49. package/src/components/ui/dropdown-menu/dropdown-menu.scss +62 -0
  50. package/src/components/ui/kbd/kbd.scss +17 -0
  51. package/src/components/ui/kbd/kbd.svelte +3 -10
  52. package/src/components/ui/navigation-drawer/navigation-drawer.scss +40 -0
  53. package/src/components/ui/navigation-drawer/navigation-drawer.svelte +38 -0
  54. package/src/components/ui/popover/popover-content.svelte +3 -5
  55. package/src/components/ui/popover/popover.scss +18 -0
  56. package/src/components/ui/radio-group/index.ts +0 -1
  57. package/src/components/ui/radio-group/radio-card-item.svelte +7 -12
  58. package/src/components/ui/radio-group/radio-group.svelte +2 -2
  59. package/src/components/ui/radio-group/radio.scss +45 -0
  60. package/src/components/ui/select/select-content.svelte +5 -6
  61. package/src/components/ui/select/select-item.svelte +8 -8
  62. package/src/components/ui/select/select-scroll-down-button.svelte +3 -5
  63. package/src/components/ui/select/select-scroll-up-button.svelte +3 -5
  64. package/src/components/ui/select/select-trigger.svelte +6 -7
  65. package/src/components/ui/select/select.scss +126 -0
  66. package/src/components/ui/sheet/sheet-content.svelte +6 -34
  67. package/src/components/ui/sheet/sheet-description.svelte +2 -2
  68. package/src/components/ui/sheet/sheet-overlay.svelte +2 -21
  69. package/src/components/ui/sheet/sheet-title.svelte +2 -2
  70. package/src/components/ui/sheet/sheet.scss +221 -0
  71. package/src/components/ui/skeleton/skeleton.scss +20 -0
  72. package/src/components/ui/skeleton/skeleton.svelte +4 -16
  73. package/src/components/ui/sonner/sonner.scss +121 -0
  74. package/src/components/ui/sonner/sonner.svelte +11 -10
  75. package/src/components/ui/status-indicator/status-indicator.scss +48 -0
  76. package/src/components/ui/status-indicator/status-indicator.svelte +14 -14
  77. package/src/components/ui/tabs/tabs-content.svelte +2 -2
  78. package/src/components/ui/tabs/tabs-list.svelte +7 -7
  79. package/src/components/ui/tabs/tabs-trigger.svelte +2 -8
  80. package/src/components/ui/tabs/tabs.scss +86 -0
  81. package/src/components/ui/tabs/tabs.svelte +2 -2
  82. package/src/components/ui/timezone-picker/timezone-picker.svelte +152 -0
  83. package/src/core/api/admin-client.ts +2 -2
  84. package/src/core/bootstrap/admin-bootstrap.ts +396 -0
  85. package/src/core/bootstrap/admin-prepared-state.ts +213 -0
  86. package/src/core/bootstrap/admin-route-modules.ts +66 -0
  87. package/src/core/clipboard/copy-feedback.svelte.ts +43 -0
  88. package/src/core/forms/embedded-fields.ts +4 -8
  89. package/src/core/forms/field-editor-authoring.ts +8 -0
  90. package/src/core/forms/field-issue-focus.ts +4 -4
  91. package/src/core/forms/field-occurrence.ts +4 -7
  92. package/src/core/forms/form-controller.svelte.ts +14 -21
  93. package/src/core/forms/form-draft-recovery.ts +17 -4
  94. package/src/core/forms/form-issue-correlation.ts +13 -13
  95. package/src/core/forms/form-path.ts +17 -0
  96. package/src/core/forms/form-schema.ts +12 -43
  97. package/src/core/forms/form-validation.ts +7 -46
  98. package/src/core/forms/plugin-field-authoring.ts +6 -2
  99. package/src/core/forms/plugin-field-write.ts +2 -6
  100. package/src/core/i18n/admin-i18n.svelte.ts +18 -0
  101. package/src/core/i18n/format-admin-date-time.ts +19 -0
  102. package/src/core/i18n/humanize-identifier.ts +5 -0
  103. package/src/core/i18n/time-zone-label.ts +20 -0
  104. package/src/core/loaders/admin-view-host.svelte +72 -0
  105. package/src/core/loaders/admin-view-loader.svelte.ts +90 -0
  106. package/src/core/notifications/validation-toast.svelte +2 -2
  107. package/src/core/plugins/field-registry.ts +7 -8
  108. package/src/core/routing/admin-paths.ts +53 -2
  109. package/src/core/routing/admin-scroll.svelte.ts +74 -0
  110. package/src/core/routing/admin-view-selection.ts +78 -0
  111. package/src/core/runtime/admin-runtime.svelte.ts +121 -124
  112. package/src/core/schema/field-default.ts +33 -0
  113. package/src/core/schema/field-localization.ts +15 -0
  114. package/src/core/schema/read-document-path.ts +11 -0
  115. package/src/features/account/account-menu.scss +37 -0
  116. package/src/features/account/account-menu.svelte +115 -0
  117. package/src/features/{auth → account}/account-navigation.svelte +16 -19
  118. package/src/features/{auth → account}/account-route.svelte +206 -49
  119. package/src/features/account/account-security-controller.svelte.ts +157 -0
  120. package/src/features/{auth → account}/account-security-route.svelte +140 -42
  121. package/src/features/api-reference/api-reference-code.svelte +64 -0
  122. package/src/features/api-reference/api-reference-content.svelte +258 -0
  123. package/src/features/api-reference/api-reference-drawer.scss +74 -0
  124. package/src/features/api-reference/api-reference-examples.ts +381 -0
  125. package/src/features/api-reference/api-reference-schema.ts +332 -0
  126. package/src/features/api-reference/api-reference.scss +190 -0
  127. package/src/features/api-reference/api-reference.svelte +74 -0
  128. package/src/features/auth/auth-brand.svelte +5 -3
  129. package/src/features/auth/auth-field.svelte +92 -0
  130. package/src/features/auth/auth-frame.svelte +5 -8
  131. package/src/features/auth/auth.scss +122 -0
  132. package/src/features/auth/create-first-user-controller.svelte.ts +20 -51
  133. package/src/features/auth/create-first-user-route.svelte +83 -122
  134. package/src/features/auth/forgot-password-route.svelte +31 -23
  135. package/src/features/auth/login-route.svelte +68 -116
  136. package/src/features/auth/logout-button.scss +34 -0
  137. package/src/features/auth/logout-button.svelte +52 -0
  138. package/src/features/auth/request-verification-route.svelte +27 -22
  139. package/src/features/auth/reset-password-route.svelte +108 -41
  140. package/src/features/auth/verify-email-route.svelte +49 -15
  141. package/src/features/bulk-edit/bulk-edit-fields.ts +23 -0
  142. package/src/features/bulk-edit/bulk-edit.scss +152 -0
  143. package/src/features/bulk-edit/field-picker.svelte +176 -0
  144. package/src/features/collections/bulk/bulk-actions.svelte +148 -0
  145. package/src/features/collections/bulk/bulk-confirmation.svelte +153 -0
  146. package/src/features/collections/bulk/bulk-editor-loader.svelte +95 -0
  147. package/src/features/collections/bulk/bulk-editor.svelte +186 -0
  148. package/src/features/collections/collection-list-cell-values.ts +144 -0
  149. package/src/features/collections/collection-list-controller.svelte.ts +268 -379
  150. package/src/features/collections/collection-list-preferences-controller.svelte.ts +54 -40
  151. package/src/features/collections/collection-list-query.ts +223 -0
  152. package/src/features/collections/collection-list-results.svelte +205 -329
  153. package/src/features/collections/collection-list-route.svelte +143 -884
  154. package/src/features/collections/collection-list.scss +261 -0
  155. package/src/features/collections/collection-list.svelte.ts +362 -0
  156. package/src/features/collections/controls/column-picker.svelte +110 -0
  157. package/src/features/collections/controls/column-pill.svelte +62 -0
  158. package/src/features/collections/controls/filter-builder.svelte +193 -0
  159. package/src/features/collections/controls/filter-row.svelte +142 -0
  160. package/src/features/collections/controls/list-controls.scss +196 -0
  161. package/src/features/collections/controls/list-options.svelte +203 -0
  162. package/src/features/collections/controls/list-pagination.scss +78 -0
  163. package/src/features/collections/controls/list-pagination.svelte +115 -0
  164. package/src/features/collections/controls/list-toolbar.svelte +132 -0
  165. package/src/features/collections/controls/sort-heading.scss +52 -0
  166. package/src/features/collections/controls/sort-heading.svelte +78 -0
  167. package/src/features/collections/list-columns.ts +43 -0
  168. package/src/features/collections/list-workspace.ts +155 -54
  169. package/src/features/dashboard/dashboard-route.svelte +82 -86
  170. package/src/features/dashboard/dashboard.scss +131 -0
  171. package/src/features/development/development-tools.svelte +20 -36
  172. package/src/features/documents/document-action-bar.svelte +438 -0
  173. package/src/features/documents/document-api-view-loader.svelte +17 -6
  174. package/src/features/documents/document-api-view.scss +120 -0
  175. package/src/features/documents/document-api-view.svelte +169 -454
  176. package/src/features/documents/document-controller.svelte.ts +526 -613
  177. package/src/features/documents/document-credentials.scss +37 -0
  178. package/src/features/documents/document-credentials.svelte +72 -0
  179. package/src/features/documents/{document-route-dirty.ts → document-credentials.ts} +25 -0
  180. package/src/features/documents/document-field-sections.scss +39 -0
  181. package/src/features/documents/document-field-sections.svelte +4 -13
  182. package/src/features/documents/document-loading.scss +24 -0
  183. package/src/features/documents/document-lock-controller.svelte.ts +187 -0
  184. package/src/features/documents/document-operation-dialogs.svelte +110 -0
  185. package/src/features/documents/document-route-loader.svelte +17 -5
  186. package/src/features/documents/document-route.svelte +305 -811
  187. package/src/features/documents/document-schedule.scss +127 -0
  188. package/src/features/documents/document-schedule.svelte +323 -0
  189. package/src/features/documents/document-title.ts +25 -0
  190. package/src/features/documents/document.scss +274 -0
  191. package/src/features/documents/live-preview-panel.scss +117 -0
  192. package/src/features/documents/live-preview-panel.svelte +167 -168
  193. package/src/features/documents/live-preview.ts +2 -10
  194. package/src/features/documents/upload-document-preview-loader.svelte +26 -23
  195. package/src/features/localization/content-locale-switcher.scss +43 -0
  196. package/src/features/localization/content-locale-switcher.svelte +24 -17
  197. package/src/features/navigation/admin-breadcrumbs.scss +56 -0
  198. package/src/features/navigation/admin-breadcrumbs.svelte +102 -37
  199. package/src/features/navigation/admin-command-menu.svelte +38 -15
  200. package/src/features/navigation/admin-navigation.scss +133 -0
  201. package/src/features/navigation/admin-navigation.svelte +169 -0
  202. package/src/features/navigation/breadcrumb-context.svelte.ts +15 -0
  203. package/src/features/navigation/navigation-preference.svelte.ts +70 -0
  204. package/src/features/reference-browser/reference-browser-editor.svelte +180 -0
  205. package/src/features/reference-browser/reference-browser-list.scss +113 -0
  206. package/src/features/reference-browser/reference-browser-list.svelte +370 -0
  207. package/src/features/reference-browser/reference-browser-loader.svelte +26 -8
  208. package/src/features/reference-browser/reference-browser-workflow.svelte.ts +335 -236
  209. package/src/features/reference-browser/reference-browser.scss +217 -0
  210. package/src/features/reference-browser/reference-browser.svelte +154 -797
  211. package/src/features/reference-browser/reference-collection-picker.svelte +116 -0
  212. package/src/features/reference-browser/reference-list-query.ts +35 -0
  213. package/src/features/uploads/bulk-upload-controller.svelte.ts +604 -0
  214. package/src/features/uploads/bulk-upload-edit-all.svelte +92 -0
  215. package/src/features/uploads/bulk-upload-editor.svelte +191 -0
  216. package/src/features/uploads/bulk-upload-file-picker.svelte +70 -0
  217. package/src/features/uploads/bulk-upload-remote.svelte +100 -0
  218. package/src/features/uploads/bulk-upload-route-loader.svelte +54 -0
  219. package/src/features/uploads/bulk-upload-route.svelte +172 -592
  220. package/src/features/uploads/bulk-upload-sidebar.svelte +125 -0
  221. package/src/features/uploads/bulk-upload.scss +526 -0
  222. package/src/features/uploads/bulk-upload.ts +105 -14
  223. package/src/features/uploads/crop-surface.ts +150 -0
  224. package/src/features/uploads/image-editor.svelte +231 -0
  225. package/src/features/uploads/rendition-preview.svelte +64 -0
  226. package/src/features/uploads/upload-control.svelte +340 -0
  227. package/src/features/uploads/upload-document-contracts.ts +30 -0
  228. package/src/features/uploads/upload-draft.svelte.ts +294 -0
  229. package/src/features/uploads/upload-metadata-fields.scss +32 -0
  230. package/src/features/uploads/upload-metadata-fields.svelte +8 -7
  231. package/src/features/uploads/upload-thumbnail.svelte +47 -0
  232. package/src/features/uploads/upload.scss +361 -0
  233. package/src/features/versions/version-comparison.svelte +361 -0
  234. package/src/features/versions/version-diff-fields.svelte +136 -0
  235. package/src/features/versions/version-diff.ts +296 -41
  236. package/src/features/versions/version-history-controller.svelte.ts +311 -0
  237. package/src/features/versions/version-history-route-loader.svelte +32 -0
  238. package/src/features/versions/version-history-route.svelte +157 -522
  239. package/src/features/versions/version-history.scss +444 -0
  240. package/src/features/versions/version-history.ts +45 -0
  241. package/src/features/versions/version-table.svelte +91 -0
  242. package/src/fields/embedded-schema-draft-editor.scss +48 -0
  243. package/src/fields/embedded-schema-draft-editor.svelte +24 -16
  244. package/src/fields/field-collapsible.svelte +14 -8
  245. package/src/fields/field-layout.scss +171 -0
  246. package/src/fields/field-layout.svelte +3 -5
  247. package/src/fields/field-renderer.svelte +17 -29
  248. package/src/fields/field-shell.svelte +1 -1
  249. package/src/fields/field-tab-layout.svelte +25 -19
  250. package/src/fields/join/join-field-controller.svelte.ts +513 -0
  251. package/src/fields/join/join-field-values.ts +111 -0
  252. package/src/fields/join/join-field.scss +189 -0
  253. package/src/fields/join/join-field.svelte +164 -332
  254. package/src/fields/live-validation-feedback.svelte +4 -3
  255. package/src/fields/local-field-editor.svelte +2 -2
  256. package/src/fields/nested/block-name-input.svelte +11 -12
  257. package/src/fields/nested/block-picker.scss +128 -0
  258. package/src/fields/nested/block-picker.svelte +81 -0
  259. package/src/fields/nested/block-placeholder.svg +2 -0
  260. package/src/fields/nested/nested-field.scss +331 -0
  261. package/src/fields/nested/nested-field.svelte +265 -245
  262. package/src/fields/nested/sortable-row.svelte +9 -7
  263. package/src/fields/plugin-field.svelte +4 -6
  264. package/src/fields/point/point-field.svelte +51 -38
  265. package/src/fields/primitive-list/primitive-list-field.svelte +63 -19
  266. package/src/fields/primitive-list/primitive-list.scss +109 -0
  267. package/src/fields/radio/radio-field.svelte +2 -1
  268. package/src/fields/relationship/relationship-field-controller.svelte.ts +81 -41
  269. package/src/fields/relationship/relationship-field.svelte +144 -175
  270. package/src/fields/relationship/relationship-lookup-controller.svelte.ts +58 -30
  271. package/src/fields/relationship/relationship-query.ts +2 -10
  272. package/src/fields/relationship/relationship-quick-picker-controller.svelte.ts +36 -62
  273. package/src/fields/relationship/relationship-quick-picker.svelte +178 -227
  274. package/src/fields/relationship/relationship-selection.svelte +120 -0
  275. package/src/fields/relationship/relationship-value.ts +46 -7
  276. package/src/fields/relationship/relationship.scss +182 -0
  277. package/src/fields/scalar/code-field.svelte +101 -0
  278. package/src/fields/scalar/date-control-value.ts +13 -0
  279. package/src/fields/scalar/scalar-field.svelte +25 -67
  280. package/src/fields/select/select-field.svelte +132 -94
  281. package/src/fields/text/slug-field.scss +28 -0
  282. package/src/fields/text/slug-field.svelte +19 -15
  283. package/src/fields/text/text-field.svelte +1 -2
  284. package/src/fields/ui/ui-field.svelte +7 -4
  285. package/src/fields/virtual/virtual-field.svelte +2 -5
  286. package/src/index.ts +1 -2
  287. package/src/routing.ts +2 -0
  288. package/src/app/deferred-redirect.svelte +0 -23
  289. package/src/components/code-block/code-block.svelte +0 -107
  290. package/src/components/ui/bulk-action-bar/bulk-action-bar.svelte +0 -50
  291. package/src/components/ui/bulk-action-bar/index.ts +0 -1
  292. package/src/components/ui/button/index.ts +0 -8
  293. package/src/components/ui/calendar/calendar-caption.svelte +0 -72
  294. package/src/components/ui/calendar/calendar-cell.svelte +0 -20
  295. package/src/components/ui/calendar/calendar-day.svelte +0 -27
  296. package/src/components/ui/calendar/calendar-grid-row.svelte +0 -13
  297. package/src/components/ui/calendar/calendar-grid.svelte +0 -17
  298. package/src/components/ui/calendar/calendar-head-cell.svelte +0 -20
  299. package/src/components/ui/calendar/calendar-header.svelte +0 -20
  300. package/src/components/ui/calendar/calendar-heading.svelte +0 -17
  301. package/src/components/ui/calendar/calendar-month-select.svelte +0 -45
  302. package/src/components/ui/calendar/calendar-month.svelte +0 -16
  303. package/src/components/ui/calendar/calendar-months.svelte +0 -20
  304. package/src/components/ui/calendar/calendar-nav.svelte +0 -20
  305. package/src/components/ui/calendar/calendar-next-button.svelte +0 -30
  306. package/src/components/ui/calendar/calendar-prev-button.svelte +0 -30
  307. package/src/components/ui/calendar/calendar-year-select.svelte +0 -44
  308. package/src/components/ui/calendar/calendar.svelte +0 -118
  309. package/src/components/ui/calendar/index.ts +0 -1
  310. package/src/components/ui/checkbox/checkbox.svelte +0 -35
  311. package/src/components/ui/checkbox/index.ts +0 -1
  312. package/src/components/ui/dialog/dialog-close.svelte +0 -11
  313. package/src/components/ui/dialog/dialog-content.svelte +0 -52
  314. package/src/components/ui/dialog/dialog-description.svelte +0 -20
  315. package/src/components/ui/dialog/dialog-footer.svelte +0 -20
  316. package/src/components/ui/dialog/dialog-header.svelte +0 -20
  317. package/src/components/ui/dialog/dialog-overlay.svelte +0 -20
  318. package/src/components/ui/dialog/dialog-title.svelte +0 -17
  319. package/src/components/ui/dialog/dialog-trigger.svelte +0 -11
  320. package/src/components/ui/dialog/dialog.svelte +0 -7
  321. package/src/components/ui/dialog/index.ts +0 -8
  322. package/src/components/ui/empty-state/empty-state.svelte +0 -34
  323. package/src/components/ui/empty-state/index.ts +0 -1
  324. package/src/components/ui/input/index.ts +0 -1
  325. package/src/components/ui/pagination/index.ts +0 -1
  326. package/src/components/ui/pagination/pagination.svelte +0 -88
  327. package/src/components/ui/radio-group/radio-group-item.svelte +0 -17
  328. package/src/components/ui/slider/index.ts +0 -3
  329. package/src/components/ui/slider/slider-content.svelte +0 -59
  330. package/src/components/ui/slider/slider.svelte +0 -35
  331. package/src/components/ui/table/index.ts +0 -6
  332. package/src/components/ui/table/table-body.svelte +0 -20
  333. package/src/components/ui/table/table-cell.svelte +0 -23
  334. package/src/components/ui/table/table-head.svelte +0 -23
  335. package/src/components/ui/table/table-header.svelte +0 -20
  336. package/src/components/ui/table/table-row.svelte +0 -23
  337. package/src/components/ui/table/table.svelte +0 -22
  338. package/src/components/ui/textarea/index.ts +0 -1
  339. package/src/components/ui/tooltip/index.ts +0 -4
  340. package/src/components/ui/tooltip/tooltip-content.svelte +0 -50
  341. package/src/components/ui/tooltip/tooltip-provider.svelte +0 -7
  342. package/src/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  343. package/src/components/ui/tooltip/tooltip.svelte +0 -7
  344. package/src/features/auth/account-menu.svelte +0 -159
  345. package/src/features/auth/account-security-controller.svelte.ts +0 -119
  346. package/src/features/collections/collection-list-bulk-actions.svelte +0 -143
  347. package/src/features/collections/collection-list-bulk-editor.svelte +0 -157
  348. package/src/features/collections/collection-list-filter-popover.svelte +0 -238
  349. package/src/features/collections/collection-list-workspace-toolbar.svelte +0 -409
  350. package/src/features/collections/collection-table-skeleton.svelte +0 -44
  351. package/src/features/documents/document-heading.ts +0 -20
  352. package/src/features/documents/upload-document-preview.svelte +0 -525
@@ -110,18 +110,10 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
110
110
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
111
111
  SOFTWARE.
112
112
 
113
- ## Geist
113
+ ## Martian Mono
114
114
 
115
- - Package: `@fontsource-variable/geist 5.3.0`
116
- - Copyright: 2024 The Geist Project Authors (<https://github.com/vercel/geist-font>)
117
- - Upstream attribution: Geist-Italic[wght].ttf, Copyright 2024 The Geist Project Authors
118
- - License: SIL Open Font License 1.1
119
-
120
- ## Spline Sans Mono
121
-
122
- - Package: `@fontsource-variable/spline-sans-mono 5.3.0`
123
- - Copyright: 2022 The Spline Sans Mono Project Authors (<https://github.com/SorkinType/SplineSansMono>)
124
- - Upstream attribution: SplineSansMono-Italic[wght].ttf, Copyright 2022 The Spline Sans Mono Project Authors
115
+ - Package: `@fontsource-variable/martian-mono 5.3.0`
116
+ - Copyright: 2020 The Martian Mono Project Authors (<https://github.com/evilmartians/mono>)
125
117
  - License: SIL Open Font License 1.1
126
118
 
127
119
  ## SIL Open Font License 1.1
@@ -172,32 +164,32 @@ a copy of the Font Software, to use, study, copy, merge, embed, modify,
172
164
  redistribute, and sell modified and unmodified copies of the Font
173
165
  Software, subject to the following conditions:
174
166
 
175
- 1) Neither the Font Software nor any of its individual components,
176
- in Original or Modified Versions, may be sold by itself.
177
-
178
- 2) Original or Modified Versions of the Font Software may be bundled,
179
- redistributed and/or sold with any software, provided that each copy
180
- contains the above copyright notice and this license. These can be
181
- included either as stand-alone text files, human-readable headers or
182
- in the appropriate machine-readable metadata fields within text or
183
- binary files as long as those fields can be easily viewed by the user.
184
-
185
- 3) No Modified Version of the Font Software may use the Reserved Font
186
- Name(s) unless explicit written permission is granted by the corresponding
187
- Copyright Holder. This restriction only applies to the primary font name as
188
- presented to the users.
189
-
190
- 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
191
- Software shall not be used to promote, endorse or advertise any
192
- Modified Version, except to acknowledge the contribution(s) of the
193
- Copyright Holder(s) and the Author(s) or with their explicit written
194
- permission.
195
-
196
- 5) The Font Software, modified or unmodified, in part or in whole,
197
- must be distributed entirely under this license, and must not be
198
- distributed under any other license. The requirement for fonts to
199
- remain under this license does not apply to any document created
200
- using the Font Software.
167
+ 1. Neither the Font Software nor any of its individual components,
168
+ in Original or Modified Versions, may be sold by itself.
169
+
170
+ 2. Original or Modified Versions of the Font Software may be bundled,
171
+ redistributed and/or sold with any software, provided that each copy
172
+ contains the above copyright notice and this license. These can be
173
+ included either as stand-alone text files, human-readable headers or
174
+ in the appropriate machine-readable metadata fields within text or
175
+ binary files as long as those fields can be easily viewed by the user.
176
+
177
+ 3. No Modified Version of the Font Software may use the Reserved Font
178
+ Name(s) unless explicit written permission is granted by the corresponding
179
+ Copyright Holder. This restriction only applies to the primary font name as
180
+ presented to the users.
181
+
182
+ 4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
183
+ Software shall not be used to promote, endorse or advertise any
184
+ Modified Version, except to acknowledge the contribution(s) of the
185
+ Copyright Holder(s) and the Author(s) or with their explicit written
186
+ permission.
187
+
188
+ 5. The Font Software, modified or unmodified, in part or in whole,
189
+ must be distributed entirely under this license, and must not be
190
+ distributed under any other license. The requirement for fonts to
191
+ remain under this license does not apply to any document created
192
+ using the Font Software.
201
193
 
202
194
  TERMINATION
203
195
 
@@ -215,3 +207,34 @@ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
215
207
  DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
216
208
  FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
217
209
  OTHER DEALINGS IN THE FONT SOFTWARE.
210
+
211
+ ## Payload CMS assets
212
+
213
+ - Source: `packages/ui/src/graphics/DefaultBlockImage/index.tsx`, Payload CMS revision
214
+ `fea6f8a47a50ff1330d8a5071b43e7dcffb97b22`.
215
+ - Copied as `src/fields/nested/block-placeholder.svg`; JSX converted to SVG.
216
+ - The expand/minimize paths in `src/components/json-tree/json-viewer.svelte` are from
217
+ `packages/ui/src/icons/MinimizeMaximize/index.tsx` in the same upstream checkout.
218
+
219
+ MIT License
220
+
221
+ Copyright (c) 2018-2025 Payload CMS, Inc. <info@payloadcms.com>
222
+
223
+ Permission is hereby granted, free of charge, to any person obtaining
224
+ a copy of this software and associated documentation files (the
225
+ 'Software'), to deal in the Software without restriction, including
226
+ without limitation the rights to use, copy, modify, merge, publish,
227
+ distribute, sublicense, and/or sell copies of the Software, and to
228
+ permit persons to whom the Software is furnished to do so, subject to
229
+ the following conditions:
230
+
231
+ The above copyright notice and this permission notice shall be
232
+ included in all copies or substantial portions of the Software.
233
+
234
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
235
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
236
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
237
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
238
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
239
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
240
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/package.json CHANGED
@@ -3,30 +3,42 @@
3
3
  "url": "https://github.com/riducms/ridu/issues"
4
4
  },
5
5
  "dependencies": {
6
+ "@codemirror/autocomplete": "^6.20.3",
7
+ "@codemirror/commands": "^6.11.1",
8
+ "@codemirror/lang-css": "^6.3.1",
9
+ "@codemirror/lang-html": "^6.4.12",
10
+ "@codemirror/lang-javascript": "^6.2.5",
11
+ "@codemirror/lang-json": "^6.0.2",
12
+ "@codemirror/language": "^6.12.4",
13
+ "@codemirror/state": "^6.7.5",
14
+ "@codemirror/view": "^6.43.12",
15
+ "@cropper/element-canvas": "2.2.0",
16
+ "@cropper/element-handle": "2.2.0",
17
+ "@cropper/element-selection": "2.2.0",
6
18
  "@dnd-kit-svelte/svelte": "^0.1.6",
7
- "@fontsource-variable/geist": "^5.3.0",
8
- "@fontsource-variable/spline-sans-mono": "^5.3.0",
9
- "@hvniel/svelte-router": "^0.0.6",
19
+ "@fontsource-variable/martian-mono": "5.3.0",
20
+ "@hvniel/svelte-router": "^0.1.0",
10
21
  "@iconify/json": "^2.2.509",
11
22
  "@internationalized/date": "^3.12.3",
12
- "@riducms/plugin": "0.2.2",
13
- "@riducms/protocol": "0.2.2",
14
- "@riducms/sdk": "0.2.2",
15
- "@riducms/translations": "0.2.2",
16
- "@riducms/ui": "0.2.2",
17
- "@types/prismjs": "^1.26.5",
23
+ "@lezer/highlight": "^1.2.3",
24
+ "@riducms/plugin": "0.3.0",
25
+ "@riducms/protocol": "0.3.0",
26
+ "@riducms/sdk": "0.3.0",
27
+ "@riducms/translations": "0.3.0",
28
+ "@riducms/ui": "0.3.0",
18
29
  "bits-ui": "^2.18.1",
19
- "prismjs": "^1.30.0",
30
+ "shiki": "4.4.3",
20
31
  "svelte-sonner": "^1.1.1"
21
32
  },
22
33
  "description": "Framework-owned Svelte 5 authoring application embedded by Ridu servers.",
23
34
  "devDependencies": {
24
35
  "@hvniel/lexical-svelte": "^0.1.1",
25
- "@riducms/build": "0.2.2",
26
- "svelte": "^5.56.8"
36
+ "@riducms/build": "0.3.0",
37
+ "svelte": "^5.57.0"
27
38
  },
28
39
  "exports": {
29
- ".": "./src/index.ts"
40
+ ".": "./src/index.ts",
41
+ "./routing": "./src/routing.ts"
30
42
  },
31
43
  "files": [
32
44
  "src",
@@ -38,7 +50,7 @@
38
50
  "license": "MIT",
39
51
  "name": "@riducms/admin",
40
52
  "peerDependencies": {
41
- "svelte": "^5.56.8"
53
+ "svelte": "^5.57.0"
42
54
  },
43
55
  "publishConfig": {
44
56
  "access": "public",
@@ -60,5 +72,5 @@
60
72
  "test:unit": "bun test tests"
61
73
  },
62
74
  "type": "module",
63
- "version": "0.2.2"
75
+ "version": "0.3.0"
64
76
  }
@@ -1,8 +1,10 @@
1
1
  <script lang="ts">
2
2
  import { useLocation, useParams } from "@hvniel/svelte-router";
3
- import type { AdminCoreView, AdminCoreViewHost, AdminCoreViewSurface } from "@riducms/plugin";
4
- import { untrack, type Component } from "svelte";
3
+ import type { AdminCoreViewHost, AdminCoreViewSurface } from "@riducms/plugin";
4
+ import type { Component } from "svelte";
5
5
 
6
+ import AdminViewHost from "@admin/core/loaders/admin-view-host.svelte";
7
+ import { resolveCoreView } from "@admin/core/routing/admin-view-selection";
6
8
  import { getNotificationCenter } from "@admin/core/notifications/notification-center.svelte";
7
9
  import { documentIDFromAdminPath } from "@admin/core/routing/admin-paths";
8
10
  import { getAdminRuntime } from "@admin/core/runtime/admin-runtime.svelte";
@@ -15,75 +17,58 @@
15
17
  let { surface, DefaultView }: Props = $props();
16
18
  const runtime = getAdminRuntime();
17
19
  const notifications = getNotificationCenter();
18
- const params = $derived(useParams<"collection" | "document" | "global" | "view">());
19
- const location = $derived(useLocation());
20
- let documentID = $state(
21
- untrack(() =>
22
- params.document === undefined ? undefined : documentIDFromAdminPath(location.pathname)
23
- )
20
+ const coreViews = runtime.config.extensions.coreViews;
21
+ const params = useParams<"collection" | "document" | "global" | "view">();
22
+ const location = useLocation();
23
+ const manifest = $derived(runtime.manifest);
24
+ const documentID = $derived(
25
+ surface === "collectionEdit" ? documentIDFromAdminPath(location.current.pathname) : undefined
24
26
  );
25
- $effect(() => {
26
- if (params.document === undefined) {
27
- documentID = undefined;
28
- return;
29
- }
30
- const decoded = documentIDFromAdminPath(location.pathname);
31
- if (decoded !== undefined) documentID = decoded;
32
- });
33
27
  const collection = $derived(
34
- runtime.manifest?.collections.find((candidate) => candidate.slug === params.collection)
28
+ manifest?.collections.find((candidate) => candidate.slug === params.current.collection)
35
29
  );
36
30
  const global = $derived(
37
- runtime.manifest?.globals?.find((candidate) => candidate.slug === params.global)
31
+ manifest?.globals?.find((candidate) => candidate.slug === params.current.global)
32
+ );
33
+ const resource = $derived(
34
+ surface === "global" ? params.current.global : params.current.collection
35
+ );
36
+ const resourceAvailable = $derived(
37
+ surface === "notFound" ||
38
+ (surface === "global" ? global !== undefined : collection !== undefined)
38
39
  );
39
40
  const replacement = $derived(
40
- resolveCoreView(runtime.coreViews, surface, params.collection, params.global)
41
+ resourceAvailable ? resolveCoreView(coreViews, surface, resource) : undefined
41
42
  );
42
43
  const host: AdminCoreViewHost = {
43
44
  refreshManifest: () => runtime.refreshManifest(),
44
45
  documentsChanged: () => runtime.documentsChanged(),
45
46
  notify: (tone, title, message) => notifications[tone]({ title, message }),
46
47
  };
47
-
48
- function resolveCoreView(
49
- views: readonly AdminCoreView[],
50
- viewSurface: AdminCoreViewSurface,
51
- collectionSlug: string | undefined,
52
- globalSlug: string | undefined
53
- ) {
54
- const candidates = views.filter((view) => view.surface === viewSurface);
55
- if (viewSurface === "global") {
56
- return (
57
- candidates.find((view) => "global" in view && view.global === globalSlug) ??
58
- candidates.find((view) => "global" in view && view.global === undefined)
59
- );
60
- }
61
- if (viewSurface !== "notFound") {
62
- return (
63
- candidates.find((view) => "collection" in view && view.collection === collectionSlug) ??
64
- candidates.find((view) => "collection" in view && view.collection === undefined)
65
- );
66
- }
67
- return candidates[0];
68
- }
69
48
  </script>
70
49
 
71
50
  {#snippet defaultView()}
72
51
  <DefaultView />
73
52
  {/snippet}
74
53
 
75
- {#if runtime.manifest !== undefined && replacement !== undefined}
76
- <replacement.component
77
- manifest={runtime.manifest}
78
- user={runtime.session?.user}
79
- {surface}
80
- {collection}
81
- {global}
82
- {documentID}
83
- {defaultView}
84
- {host}
85
- i18n={runtime.i18n}
86
- />
54
+ {#if manifest !== undefined && replacement !== undefined}
55
+ {#key replacement}
56
+ <AdminViewHost
57
+ view={replacement}
58
+ ownsRoute
59
+ props={{
60
+ manifest,
61
+ user: runtime.session?.user,
62
+ surface,
63
+ collection,
64
+ global,
65
+ documentID,
66
+ defaultView,
67
+ host,
68
+ i18n: runtime.i18n,
69
+ }}
70
+ />
71
+ {/key}
87
72
  {:else}
88
73
  {@render defaultView()}
89
74
  {/if}
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import type { AdminRoute } from "@riducms/plugin";
3
+
4
+ import { getAdminRuntime } from "@admin/core/runtime/admin-runtime.svelte";
5
+ import AdminViewHost from "@admin/core/loaders/admin-view-host.svelte";
6
+
7
+ let { route }: { route: AdminRoute } = $props();
8
+ const runtime = getAdminRuntime();
9
+ </script>
10
+
11
+ {#if runtime.manifest !== undefined}
12
+ {#key route}
13
+ <AdminViewHost
14
+ view={route}
15
+ ownsRoute
16
+ props={{ manifest: runtime.manifest, user: runtime.session?.user, i18n: runtime.i18n }}
17
+ />
18
+ {/key}
19
+ {/if}
@@ -0,0 +1,175 @@
1
+ @use "@riducms/ui/styles.scss" as ui;
2
+
3
+ @layer ridu.components {
4
+ .ridu-shell {
5
+ font-size: var(--font-size-body);
6
+ line-height: var(--line-height-body);
7
+ display: flex;
8
+ flex-direction: column;
9
+ min-height: 100dvh;
10
+ background: var(--background);
11
+ color: var(--foreground);
12
+ }
13
+ .ridu-shell__extension-header {
14
+ flex-shrink: 0;
15
+ min-height: 20px;
16
+ padding-inline: var(--admin-gutter);
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 12px;
20
+ }
21
+ .ridu-shell__body {
22
+ position: relative;
23
+ flex: 1;
24
+ min-height: 0;
25
+ }
26
+ .ridu-shell__sidebar {
27
+ position: relative;
28
+ min-height: 0;
29
+ overflow: hidden;
30
+ }
31
+ .ridu-nav {
32
+ position: absolute;
33
+ inset-block: 0;
34
+ inset-inline-start: 0;
35
+ width: var(--admin-nav-width);
36
+ display: flex;
37
+ flex-direction: column;
38
+ border-inline-end: 1px solid var(--background-layer);
39
+ padding-top: var(--admin-header-height);
40
+ transition: opacity 150ms linear;
41
+ }
42
+ .ridu-shell:not(.ridu-shell--nav-open) .ridu-nav {
43
+ opacity: 0;
44
+ visibility: hidden;
45
+ }
46
+ .ridu-shell__toggle {
47
+ position: absolute;
48
+ inset-block-start: 0;
49
+ inset-inline-start: 0;
50
+ z-index: 30;
51
+ width: var(--admin-gutter);
52
+ height: var(--admin-header-height);
53
+ display: grid;
54
+ place-items: center;
55
+ }
56
+ .ridu-nav-toggle {
57
+ display: grid;
58
+ place-items: center;
59
+ flex-shrink: 0;
60
+ width: 24px;
61
+ height: 24px;
62
+ border: 0;
63
+ border-radius: 3px;
64
+ padding: 2px;
65
+ background: var(--background);
66
+ color: var(--foreground);
67
+ box-shadow: 0 0 0 1px var(--control-border);
68
+ cursor: pointer;
69
+
70
+ svg {
71
+ width: 20px;
72
+ height: 20px;
73
+ stroke-width: 1;
74
+ }
75
+
76
+ &:hover {
77
+ background: var(--background-layer);
78
+ box-shadow: 0 0 0 1px var(--ring);
79
+ }
80
+
81
+ &:focus-visible {
82
+ @include ui.focus-outline;
83
+ }
84
+ }
85
+ [dir="rtl"] .ridu-nav-toggle__collapse {
86
+ transform: rotate(180deg);
87
+ }
88
+ .ridu-shell__main {
89
+ position: relative;
90
+ min-width: 0;
91
+ background: var(--background);
92
+ }
93
+ .ridu-shell__header {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 10px;
97
+ flex-shrink: 0;
98
+ min-height: var(--admin-header-height);
99
+ padding-inline: var(--admin-gutter);
100
+ }
101
+ .ridu-shell__actions {
102
+ margin-inline-start: auto;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: flex-end;
106
+ gap: 10px;
107
+ }
108
+ .ridu-shell__search {
109
+ display: grid;
110
+ place-items: center;
111
+ width: 24px;
112
+ height: 24px;
113
+ padding: 0;
114
+ border: 0;
115
+ background: transparent;
116
+ color: var(--foreground-muted);
117
+ cursor: pointer;
118
+
119
+ svg {
120
+ width: 16px;
121
+ height: 16px;
122
+ }
123
+
124
+ &:hover {
125
+ color: var(--foreground);
126
+ }
127
+
128
+ &:focus-visible {
129
+ @include ui.focus-outline;
130
+ }
131
+ }
132
+ @media (min-width: (ui.$small + 1px)) {
133
+ .ridu-shell {
134
+ height: 100dvh;
135
+ }
136
+ .ridu-shell__body {
137
+ display: grid;
138
+ grid-template-columns: 0 minmax(0, 1fr);
139
+ overflow: hidden;
140
+ transition: grid-template-columns 150ms linear;
141
+ }
142
+ .ridu-shell--nav-open .ridu-shell__body {
143
+ grid-template-columns: var(--admin-nav-width) minmax(0, 1fr);
144
+ }
145
+ .ridu-shell__main {
146
+ display: flex;
147
+ flex-direction: column;
148
+ height: 100%;
149
+ overflow-y: auto;
150
+ }
151
+ .ridu-shell__main--contained {
152
+ overflow: hidden;
153
+ }
154
+ }
155
+ @media (max-width: ui.$medium) {
156
+ .ridu-shell {
157
+ font-size: 12px;
158
+ }
159
+ }
160
+ @media (max-width: ui.$small) {
161
+ .ridu-shell__actions {
162
+ gap: 8px;
163
+ }
164
+ .ridu-shell__header {
165
+ flex-wrap: wrap;
166
+ padding-block: 10px;
167
+ }
168
+ }
169
+ @media (prefers-reduced-motion: reduce) {
170
+ .ridu-shell__body,
171
+ .ridu-nav {
172
+ transition: none;
173
+ }
174
+ }
175
+ }