includio-cms 0.25.0 → 0.27.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 (411) hide show
  1. package/API.md +97 -4
  2. package/CHANGELOG.md +118 -0
  3. package/DOCS.md +1 -1
  4. package/README.md +2 -0
  5. package/ROADMAP.md +14 -0
  6. package/dist/admin/auth-client.d.ts +42 -42
  7. package/dist/admin/client/account/lang.d.ts +1 -0
  8. package/dist/admin/client/account/lang.js +4 -2
  9. package/dist/admin/client/account/profile-section.svelte +2 -2
  10. package/dist/admin/client/account/security-section.svelte +27 -4
  11. package/dist/admin/client/account/sessions-section.svelte +1 -1
  12. package/dist/admin/client/admin/admin-after-login-layout-content.svelte +1 -1
  13. package/dist/admin/client/admin/admin-layout.svelte +12 -2
  14. package/dist/admin/client/admin/admin-layout.svelte.d.ts +2 -1
  15. package/dist/admin/client/admin/dashboard-page.svelte +34 -10
  16. package/dist/admin/client/collection/bulk-actions-bar.svelte +86 -44
  17. package/dist/admin/client/collection/bulk-actions-bar.svelte.d.ts +3 -1
  18. package/dist/admin/client/collection/collection-entries.svelte +52 -36
  19. package/dist/admin/client/collection/collection-entries.svelte.d.ts +3 -0
  20. package/dist/admin/client/collection/collection.svelte +28 -14
  21. package/dist/admin/client/collection/collection.svelte.d.ts +3 -0
  22. package/dist/admin/client/collection/data-table.svelte +240 -130
  23. package/dist/admin/client/collection/data-table.svelte.d.ts +9 -0
  24. package/dist/admin/client/collection/date-cell.svelte +4 -4
  25. package/dist/admin/client/collection/row-actions.svelte +2 -1
  26. package/dist/admin/client/collection/sortable-header.svelte +33 -9
  27. package/dist/admin/client/collection/state-display.svelte +102 -0
  28. package/dist/admin/client/collection/state-display.svelte.d.ts +12 -0
  29. package/dist/admin/client/collection/status-badge.svelte +99 -11
  30. package/dist/admin/client/collection/status-badge.svelte.d.ts +15 -1
  31. package/dist/admin/client/collection/table-pagination.svelte +21 -6
  32. package/dist/admin/client/collection/table-toolbar.svelte +105 -80
  33. package/dist/admin/client/collection/table-toolbar.svelte.d.ts +11 -8
  34. package/dist/admin/client/entry/entry-form.svelte +36 -11
  35. package/dist/admin/client/entry/entry-form.svelte.d.ts +1 -0
  36. package/dist/admin/client/entry/entry-header.svelte +22 -15
  37. package/dist/admin/client/entry/entry-header.svelte.d.ts +1 -0
  38. package/dist/admin/client/entry/entry.svelte +269 -165
  39. package/dist/admin/client/entry/header/a11y-header-badge.svelte +47 -0
  40. package/dist/admin/client/entry/header/a11y-header-badge.svelte.d.ts +8 -0
  41. package/dist/admin/client/entry/header/publish-panel.svelte +69 -13
  42. package/dist/admin/client/entry/header/save-indicator.svelte +57 -28
  43. package/dist/admin/client/entry/header/save-indicator.svelte.d.ts +1 -0
  44. package/dist/admin/client/entry/header/status-badge.svelte +60 -15
  45. package/dist/admin/client/entry/header/status-badge.svelte.d.ts +1 -2
  46. package/dist/admin/client/entry/header/version-history-sheet.svelte +1 -1
  47. package/dist/admin/client/entry/hybrid/hybrid-layout.svelte +74 -23
  48. package/dist/admin/client/entry/hybrid/hybrid-preview.svelte +1 -1
  49. package/dist/admin/client/entry/utils.d.ts +14 -0
  50. package/dist/admin/client/entry/utils.js +28 -0
  51. package/dist/admin/client/form/form-submission/form-submission.svelte +2 -2
  52. package/dist/admin/client/form/form-submissions.svelte +143 -194
  53. package/dist/admin/client/form/form-submissions.svelte.d.ts +2 -0
  54. package/dist/admin/client/login/lang.d.ts +3 -0
  55. package/dist/admin/client/login/lang.js +10 -4
  56. package/dist/admin/client/login/login-form.svelte +8 -1
  57. package/dist/admin/client/login/reset-password-page.svelte +24 -3
  58. package/dist/admin/client/login/schema.d.ts +14 -2
  59. package/dist/admin/client/login/schema.js +19 -8
  60. package/dist/admin/client/maintenance/maintenance-page.svelte +16 -17
  61. package/dist/admin/client/media/media-page.svelte +1 -1
  62. package/dist/admin/client/shop/coupon-edit-page.svelte +117 -13
  63. package/dist/admin/client/shop/coupon-form.svelte +282 -138
  64. package/dist/admin/client/shop/coupon-form.svelte.d.ts +1 -9
  65. package/dist/admin/client/shop/coupon-new-page.svelte +40 -10
  66. package/dist/admin/client/shop/coupon-new-page.svelte.d.ts +2 -17
  67. package/dist/admin/client/shop/coupon-schema.d.ts +28 -0
  68. package/dist/admin/client/shop/coupon-schema.js +53 -0
  69. package/dist/admin/client/shop/coupons-list-page.svelte +262 -118
  70. package/dist/admin/client/shop/coupons-list-page.svelte.d.ts +16 -1
  71. package/dist/admin/client/shop/refund-dialog.svelte +37 -1
  72. package/dist/admin/client/shop/refund-dialog.svelte.d.ts +3 -0
  73. package/dist/admin/client/shop/shipping-method-edit-page.svelte +108 -59
  74. package/dist/admin/client/shop/shipping-method-form.svelte +36 -9
  75. package/dist/admin/client/shop/shipping-method-new-page.svelte +44 -13
  76. package/dist/admin/client/shop/shipping-methods-list-page.svelte +101 -59
  77. package/dist/admin/client/shop/shop-order-detail-page.svelte +220 -84
  78. package/dist/admin/client/shop/shop-orders-list-page.svelte +302 -152
  79. package/dist/admin/client/shop/shop-orders-list-page.svelte.d.ts +18 -1
  80. package/dist/admin/client/shop/shop-products-list-page.svelte +355 -118
  81. package/dist/admin/client/shop/shop-products-list-page.svelte.d.ts +19 -1
  82. package/dist/admin/client/users/accept-invite-page.svelte +24 -3
  83. package/dist/admin/client/users/create-user-dialog.svelte +3 -8
  84. package/dist/admin/client/users/lang.d.ts +2 -0
  85. package/dist/admin/client/users/lang.js +4 -0
  86. package/dist/admin/client/users/pending-invitations.svelte +2 -9
  87. package/dist/admin/client/users/user-name-cell.svelte +20 -0
  88. package/dist/admin/client/users/user-name-cell.svelte.d.ts +9 -0
  89. package/dist/admin/client/users/user-role-badge.svelte +16 -0
  90. package/dist/admin/client/users/user-role-badge.svelte.d.ts +7 -0
  91. package/dist/admin/client/users/user-row-actions.svelte +72 -0
  92. package/dist/admin/client/users/user-row-actions.svelte.d.ts +20 -0
  93. package/dist/admin/client/users/user-sessions-sheet.svelte +2 -11
  94. package/dist/admin/client/users/users-page.svelte +283 -497
  95. package/dist/admin/client/users/users-page.svelte.d.ts +12 -1
  96. package/dist/admin/components/dashboard/form-submissions-widget.svelte +59 -74
  97. package/dist/admin/components/dashboard/recent-activity.svelte +17 -5
  98. package/dist/admin/components/dashboard/recent-entries.svelte +19 -7
  99. package/dist/admin/components/dialogs/confirmation-dialog.svelte +105 -0
  100. package/dist/admin/components/dialogs/confirmation-dialog.svelte.d.ts +13 -0
  101. package/dist/admin/components/fields/block-picker-modal.svelte +6 -0
  102. package/dist/admin/components/fields/blocks-field.svelte +46 -1
  103. package/dist/admin/components/fields/boolean-field.svelte +1 -1
  104. package/dist/admin/components/fields/field-renderer.svelte +29 -22
  105. package/dist/admin/components/fields/file-field.svelte +344 -30
  106. package/dist/admin/components/fields/icon-field.svelte +86 -0
  107. package/dist/admin/components/fields/icon-field.svelte.d.ts +8 -0
  108. package/dist/admin/components/fields/icon-picker-dialog.svelte +174 -0
  109. package/dist/admin/components/fields/icon-picker-dialog.svelte.d.ts +11 -0
  110. package/dist/admin/components/fields/media-field.svelte +16 -2
  111. package/dist/admin/components/fields/object-field.svelte +27 -7
  112. package/dist/admin/components/fields/radio-field.svelte +22 -0
  113. package/dist/admin/components/fields/relation-field.svelte +123 -97
  114. package/dist/admin/components/fields/relation-picker-dialog.svelte +2 -2
  115. package/dist/admin/components/fields/seo-field.svelte +60 -30
  116. package/dist/admin/components/fields/shop-field.svelte +219 -24
  117. package/dist/admin/components/fields/simple-array-field.svelte +321 -151
  118. package/dist/admin/components/fields/simple-array-field.svelte.d.ts +3 -0
  119. package/dist/admin/components/fields/slug-field.svelte +146 -21
  120. package/dist/admin/components/fields/text-field-wrapper.svelte +37 -20
  121. package/dist/admin/components/fields/text-field.svelte +7 -2
  122. package/dist/admin/components/fields/url-field-wrapper.svelte +10 -0
  123. package/dist/admin/components/fields/url-field.svelte +36 -23
  124. package/dist/admin/components/forms/form-error-summary.svelte +143 -0
  125. package/dist/admin/components/forms/form-error-summary.svelte.d.ts +27 -0
  126. package/dist/admin/components/layout/app-sidebar.svelte +7 -2
  127. package/dist/admin/components/layout/detail-page-shell.svelte +71 -0
  128. package/dist/admin/components/layout/detail-page-shell.svelte.d.ts +24 -0
  129. package/dist/admin/components/layout/lang.d.ts +5 -0
  130. package/dist/admin/components/layout/lang.js +10 -0
  131. package/dist/admin/components/layout/layout-renderer.svelte +71 -2
  132. package/dist/admin/components/layout/layout-renderer.svelte.d.ts +1 -0
  133. package/dist/admin/components/layout/layout-tabs.svelte +173 -0
  134. package/dist/admin/components/layout/layout-tabs.svelte.d.ts +24 -0
  135. package/dist/admin/components/layout/nav-breadcrumbs.svelte +25 -7
  136. package/dist/admin/components/layout/nav-collections.svelte +23 -36
  137. package/dist/admin/components/layout/nav-forms.svelte +19 -35
  138. package/dist/admin/components/layout/nav-main.svelte +3 -28
  139. package/dist/admin/components/layout/nav-search.svelte +70 -2
  140. package/dist/admin/components/layout/nav-section.svelte +77 -0
  141. package/dist/admin/components/layout/nav-section.svelte.d.ts +22 -0
  142. package/dist/admin/components/layout/nav-shop.svelte +3 -27
  143. package/dist/admin/components/layout/nav-singletons.svelte +16 -28
  144. package/dist/admin/components/layout/page-header.stories.svelte +93 -0
  145. package/dist/admin/components/layout/page-header.stories.svelte.d.ts +27 -0
  146. package/dist/admin/components/layout/page-header.svelte +68 -0
  147. package/dist/admin/components/layout/page-header.svelte.d.ts +17 -0
  148. package/dist/admin/components/layout/site-header.svelte +9 -0
  149. package/dist/admin/components/layout/site-header.svelte.d.ts +2 -17
  150. package/dist/admin/components/media/file/file-name-input.svelte +6 -2
  151. package/dist/admin/components/media/file/file-preview.svelte +130 -17
  152. package/dist/admin/components/media/file-upload.svelte +16 -7
  153. package/dist/admin/components/media/file-upload.svelte.d.ts +1 -0
  154. package/dist/admin/components/media/files-list.svelte +153 -53
  155. package/dist/admin/components/media/files-list.svelte.d.ts +1 -0
  156. package/dist/admin/components/media/media-library.svelte +577 -198
  157. package/dist/admin/components/media/media-library.svelte.d.ts +4 -0
  158. package/dist/admin/components/media/media-selector.svelte +4 -2
  159. package/dist/admin/components/media/media-selector.svelte.d.ts +1 -0
  160. package/dist/admin/components/media/tag-sidebar.svelte +4 -4
  161. package/dist/admin/components/tiptap/FigureNodeView.svelte +10 -0
  162. package/dist/admin/components/tiptap/bubble-menu.svelte +104 -0
  163. package/dist/admin/components/tiptap/bubble-menu.svelte.d.ts +19 -0
  164. package/dist/admin/components/tiptap/content-editor.svelte +28 -24
  165. package/dist/admin/components/tiptap/editor-toolbar.svelte +7 -7
  166. package/dist/admin/components/tiptap/extensions.js +5 -1
  167. package/dist/admin/components/tiptap/image-dialog.svelte +5 -1
  168. package/dist/admin/components/tiptap/link-dialog.svelte +2 -0
  169. package/dist/admin/components/tiptap/tiptap-editor.svelte +18 -20
  170. package/dist/admin/components/tiptap/video-dialog.svelte +1 -1
  171. package/dist/admin/components/variant-form/VariantAttributeRenderer.svelte +109 -0
  172. package/dist/admin/components/variant-form/VariantAttributeRenderer.svelte.d.ts +9 -0
  173. package/dist/admin/helpers/build-icon-set-map.d.ts +8 -0
  174. package/dist/admin/helpers/build-icon-set-map.js +16 -0
  175. package/dist/admin/helpers/index.d.ts +2 -0
  176. package/dist/admin/helpers/index.js +2 -0
  177. package/dist/admin/i18n/errors.d.ts +140 -0
  178. package/dist/admin/i18n/errors.js +151 -0
  179. package/dist/admin/remote/entry.remote.d.ts +59 -4
  180. package/dist/admin/remote/entry.remote.js +239 -62
  181. package/dist/admin/remote/shop.remote.d.ts +87 -48
  182. package/dist/admin/remote/shop.remote.js +70 -8
  183. package/dist/admin/shared/password-generate.d.ts +6 -0
  184. package/dist/admin/shared/password-generate.js +40 -0
  185. package/dist/admin/shared/password-schema.d.ts +6 -0
  186. package/dist/admin/shared/password-schema.js +10 -3
  187. package/dist/admin/state/icon-sets.svelte.d.ts +9 -0
  188. package/dist/admin/state/icon-sets.svelte.js +20 -0
  189. package/dist/admin/styles/admin.css +23 -6
  190. package/dist/admin/styles/tokens.md +244 -0
  191. package/dist/admin/utils/accordionActivation.d.ts +13 -0
  192. package/dist/admin/utils/accordionActivation.js +35 -0
  193. package/dist/admin/utils/entryLabel.d.ts +23 -0
  194. package/dist/admin/utils/entryLabel.js +51 -12
  195. package/dist/admin/utils/field-a11y.d.ts +29 -0
  196. package/dist/admin/utils/field-a11y.js +23 -0
  197. package/dist/admin/utils/fieldPathElement.d.ts +9 -0
  198. package/dist/admin/utils/fieldPathElement.js +18 -0
  199. package/dist/admin/utils/fileDisplay.d.ts +10 -0
  200. package/dist/admin/utils/fileDisplay.js +26 -0
  201. package/dist/admin/utils/flattenFormErrors.d.ts +19 -0
  202. package/dist/admin/utils/flattenFormErrors.js +102 -0
  203. package/dist/admin/utils/formatters.d.ts +12 -0
  204. package/dist/admin/utils/{formatDate.js → formatters.js} +23 -2
  205. package/dist/admin/utils/scrollWithin.d.ts +9 -0
  206. package/dist/admin/utils/scrollWithin.js +32 -0
  207. package/dist/admin/utils/tabActivation.d.ts +12 -0
  208. package/dist/admin/utils/tabActivation.js +24 -0
  209. package/dist/cli/scaffold/admin.js +2 -2
  210. package/dist/cms/runtime/schema.d.ts +1 -0
  211. package/dist/cms/runtime/schema.js +1 -0
  212. package/dist/cms/runtime/types.d.ts +80 -7
  213. package/dist/components/ui/accordion/accordion-content.svelte +17 -3
  214. package/dist/components/ui/accordion/accordion.stories.svelte +21 -1
  215. package/dist/components/ui/alert/alert.stories.svelte +14 -0
  216. package/dist/components/ui/alert-dialog/alert-dialog.stories.svelte +45 -0
  217. package/dist/components/ui/alert-dialog/alert-dialog.stories.svelte.d.ts +27 -0
  218. package/dist/components/ui/avatar/avatar.stories.svelte +27 -0
  219. package/dist/components/ui/badge/badge.stories.svelte +15 -0
  220. package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte +47 -0
  221. package/dist/components/ui/breadcrumb/breadcrumb.svelte +1 -1
  222. package/dist/components/ui/button/button.stories.svelte +53 -6
  223. package/dist/components/ui/button/button.svelte +39 -5
  224. package/dist/components/ui/button/button.svelte.d.ts +4 -0
  225. package/dist/components/ui/button-group/button-group.stories.svelte +44 -0
  226. package/dist/components/ui/button-group/button-group.stories.svelte.d.ts +27 -0
  227. package/dist/components/ui/calendar/calendar.stories.svelte +36 -0
  228. package/dist/components/ui/calendar/calendar.stories.svelte.d.ts +27 -0
  229. package/dist/components/ui/card/card.stories.svelte +7 -0
  230. package/dist/components/ui/carousel/carousel.stories.svelte +43 -0
  231. package/dist/components/ui/carousel/carousel.stories.svelte.d.ts +27 -0
  232. package/dist/components/ui/checkbox/checkbox.stories.svelte +67 -0
  233. package/dist/components/ui/checkbox/checkbox.stories.svelte.d.ts +27 -0
  234. package/dist/components/ui/checkbox/checkbox.svelte +1 -1
  235. package/dist/components/ui/command/command.stories.svelte +18 -0
  236. package/dist/components/ui/data-table/data-table.stories.svelte +61 -0
  237. package/dist/components/ui/data-table/data-table.stories.svelte.d.ts +18 -0
  238. package/dist/components/ui/dialog/dialog-content.svelte +5 -0
  239. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +2 -0
  240. package/dist/components/ui/dialog/dialog.stories.svelte +35 -0
  241. package/dist/components/ui/dropdown-menu/dropdown-menu.stories.svelte +74 -0
  242. package/dist/components/ui/dropdown-menu/dropdown-menu.stories.svelte.d.ts +27 -0
  243. package/dist/components/ui/field/field-context.svelte.d.ts +22 -0
  244. package/dist/components/ui/field/field-context.svelte.js +9 -0
  245. package/dist/components/ui/field/field-control.svelte +18 -0
  246. package/dist/components/ui/field/field-control.svelte.d.ts +8 -0
  247. package/dist/components/ui/field/field-description.svelte +12 -0
  248. package/dist/components/ui/field/field-error.svelte +14 -6
  249. package/dist/components/ui/field/field-label.svelte +10 -0
  250. package/dist/components/ui/field/field.stories.svelte +95 -9
  251. package/dist/components/ui/field/field.svelte +57 -0
  252. package/dist/components/ui/field/field.svelte.d.ts +2 -0
  253. package/dist/components/ui/field/index.d.ts +3 -1
  254. package/dist/components/ui/field/index.js +4 -2
  255. package/dist/components/ui/form/form-field-errors.svelte +1 -1
  256. package/dist/components/ui/form/form.stories.svelte +25 -0
  257. package/dist/components/ui/form/form.stories.svelte.d.ts +26 -0
  258. package/dist/components/ui/input/input.stories.svelte +26 -0
  259. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +1 -1
  260. package/dist/components/ui/input-group/input-group.stories.svelte +43 -0
  261. package/dist/components/ui/input-group/input-group.stories.svelte.d.ts +27 -0
  262. package/dist/components/ui/item/item.stories.svelte +61 -0
  263. package/dist/components/ui/item/item.stories.svelte.d.ts +27 -0
  264. package/dist/components/ui/label/label.stories.svelte +7 -0
  265. package/dist/components/ui/live-region/index.d.ts +1 -0
  266. package/dist/components/ui/live-region/index.js +1 -0
  267. package/dist/components/ui/live-region/live-region-demo.svelte +32 -0
  268. package/dist/components/ui/live-region/live-region-demo.svelte.d.ts +7 -0
  269. package/dist/components/ui/live-region/live-region.stories.svelte +23 -0
  270. package/dist/components/ui/live-region/live-region.stories.svelte.d.ts +26 -0
  271. package/dist/components/ui/live-region/live-region.svelte +12 -0
  272. package/dist/components/ui/live-region/live-region.svelte.d.ts +8 -0
  273. package/dist/components/ui/popover/popover.stories.svelte +34 -0
  274. package/dist/components/ui/radio-group/radio-group.stories.svelte +58 -0
  275. package/dist/components/ui/radio-group/radio-group.stories.svelte.d.ts +27 -0
  276. package/dist/components/ui/resizable/resizable.stories.svelte +56 -0
  277. package/dist/components/ui/resizable/resizable.stories.svelte.d.ts +27 -0
  278. package/dist/components/ui/select/select.stories.svelte +49 -0
  279. package/dist/components/ui/separator/separator.stories.svelte +18 -0
  280. package/dist/components/ui/sheet/sheet.stories.svelte +34 -0
  281. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +1 -1
  282. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +1 -0
  283. package/dist/components/ui/sidebar/sidebar-trigger.svelte +1 -1
  284. package/dist/components/ui/sidebar/sidebar.stories.svelte +72 -0
  285. package/dist/components/ui/sidebar/sidebar.stories.svelte.d.ts +27 -0
  286. package/dist/components/ui/skeleton/skeleton.stories.svelte +39 -0
  287. package/dist/components/ui/skeleton/skeleton.stories.svelte.d.ts +27 -0
  288. package/dist/components/ui/skeleton/skeleton.svelte +6 -0
  289. package/dist/components/ui/sonner/index.d.ts +1 -1
  290. package/dist/components/ui/sonner/index.js +1 -1
  291. package/dist/components/ui/sonner/sonner.stories.svelte +7 -0
  292. package/dist/components/ui/sonner/sonner.svelte +17 -1
  293. package/dist/components/ui/sonner/sonner.svelte.d.ts +6 -0
  294. package/dist/components/ui/spinner/spinner.stories.svelte +30 -0
  295. package/dist/components/ui/spinner/spinner.stories.svelte.d.ts +27 -0
  296. package/dist/components/ui/switch/switch.stories.svelte +56 -0
  297. package/dist/components/ui/switch/switch.stories.svelte.d.ts +27 -0
  298. package/dist/components/ui/table/table-cell.svelte +1 -1
  299. package/dist/components/ui/table/table-head.svelte +1 -1
  300. package/dist/components/ui/table/table.stories.svelte +68 -0
  301. package/dist/components/ui/table/table.stories.svelte.d.ts +27 -0
  302. package/dist/components/ui/table/table.svelte +1 -1
  303. package/dist/components/ui/tabs/tabs.stories.svelte +48 -0
  304. package/dist/components/ui/tabs/tabs.stories.svelte.d.ts +27 -0
  305. package/dist/components/ui/textarea/textarea.stories.svelte +21 -0
  306. package/dist/components/ui/toggle/toggle.stories.svelte +23 -0
  307. package/dist/components/ui/toggle-group/toggle-group.stories.svelte +43 -0
  308. package/dist/components/ui/tooltip/tooltip.stories.svelte +46 -6
  309. package/dist/core/cms.d.ts +11 -2
  310. package/dist/core/cms.js +29 -0
  311. package/dist/core/fields/fieldSchemaToTs.d.ts +7 -0
  312. package/dist/core/fields/fieldSchemaToTs.js +241 -90
  313. package/dist/core/fields/layoutUtils.d.ts +4 -1
  314. package/dist/core/fields/layoutUtils.js +41 -4
  315. package/dist/core/fields/resolveSeo.d.ts +70 -0
  316. package/dist/core/fields/resolveSeo.js +88 -0
  317. package/dist/core/fields/seoFieldDescriptor.d.ts +43 -0
  318. package/dist/core/fields/seoFieldDescriptor.js +74 -0
  319. package/dist/core/fields/slugPath.d.ts +13 -0
  320. package/dist/core/fields/slugPath.js +32 -0
  321. package/dist/core/fields/urlUtils.d.ts +8 -0
  322. package/dist/core/fields/urlUtils.js +27 -0
  323. package/dist/core/index.d.ts +1 -0
  324. package/dist/core/index.js +1 -0
  325. package/dist/core/server/entries/operations/create.js +13 -0
  326. package/dist/core/server/entries/operations/get.d.ts +7 -0
  327. package/dist/core/server/entries/operations/get.js +10 -6
  328. package/dist/core/server/entries/operations/slugUniqueness.d.ts +37 -0
  329. package/dist/core/server/entries/operations/slugUniqueness.js +116 -0
  330. package/dist/core/server/entries/operations/update.d.ts +6 -1
  331. package/dist/core/server/entries/operations/update.js +24 -1
  332. package/dist/core/server/fields/slugResolver.d.ts +3 -13
  333. package/dist/core/server/fields/slugResolver.js +8 -37
  334. package/dist/core/server/generator/fields.d.ts +2 -0
  335. package/dist/core/server/generator/fields.js +44 -18
  336. package/dist/core/server/generator/formFields.js +2 -1
  337. package/dist/core/server/generator/generator.js +6 -5
  338. package/dist/core/server/generator/utils.d.ts +1 -0
  339. package/dist/core/server/generator/utils.js +4 -0
  340. package/dist/db-postgres/schema/shop/order.d.ts +37 -1
  341. package/dist/db-postgres/schema/shop/order.js +3 -1
  342. package/dist/db-postgres/schema/shop/payment.d.ts +20 -0
  343. package/dist/db-postgres/schema/shop/payment.js +4 -1
  344. package/dist/db-postgres/schema/shop/product.d.ts +20 -0
  345. package/dist/db-postgres/schema/shop/product.js +3 -1
  346. package/dist/db-postgres/schema/shop/productVariant.d.ts +12 -2
  347. package/dist/db-postgres/schema/shop/productVariant.js +22 -0
  348. package/dist/shop/cart/types.d.ts +1 -0
  349. package/dist/shop/client/index.d.ts +54 -0
  350. package/dist/shop/client/index.js +5 -1
  351. package/dist/shop/expiry.d.ts +35 -0
  352. package/dist/shop/expiry.js +68 -0
  353. package/dist/shop/http/balance-handler.d.ts +20 -0
  354. package/dist/shop/http/balance-handler.js +91 -0
  355. package/dist/shop/http/cart-handler.js +19 -0
  356. package/dist/shop/http/checkout-handler.js +19 -1
  357. package/dist/shop/http/index.d.ts +2 -0
  358. package/dist/shop/http/index.js +2 -0
  359. package/dist/shop/http/upcoming-handler.d.ts +16 -0
  360. package/dist/shop/http/upcoming-handler.js +65 -0
  361. package/dist/shop/http/webhook-handler.js +46 -9
  362. package/dist/shop/index.d.ts +4 -1
  363. package/dist/shop/index.js +7 -1
  364. package/dist/shop/server/balance-payment.d.ts +40 -0
  365. package/dist/shop/server/balance-payment.js +140 -0
  366. package/dist/shop/server/cart-hydrate.js +2 -0
  367. package/dist/shop/server/init.d.ts +14 -0
  368. package/dist/shop/server/init.js +35 -0
  369. package/dist/shop/server/orders.d.ts +35 -0
  370. package/dist/shop/server/orders.js +155 -2
  371. package/dist/shop/server/payment-policy.d.ts +35 -0
  372. package/dist/shop/server/payment-policy.js +55 -0
  373. package/dist/shop/server/payments.d.ts +29 -0
  374. package/dist/shop/server/payments.js +64 -0
  375. package/dist/shop/server/populate.d.ts +1 -1
  376. package/dist/shop/server/refund.d.ts +17 -12
  377. package/dist/shop/server/refund.js +96 -13
  378. package/dist/shop/server/shop-data.d.ts +6 -1
  379. package/dist/shop/server/shop-data.js +44 -7
  380. package/dist/shop/template.d.ts +13 -0
  381. package/dist/shop/template.js +98 -0
  382. package/dist/shop/types.d.ts +142 -1
  383. package/dist/shop/variant-attributes.d.ts +28 -0
  384. package/dist/shop/variant-attributes.js +69 -0
  385. package/dist/sveltekit/server/handle.js +17 -0
  386. package/dist/sveltekit/server/index.d.ts +1 -0
  387. package/dist/sveltekit/server/index.js +2 -0
  388. package/dist/types/cms.d.ts +4 -3
  389. package/dist/types/cms.schema.d.ts +1 -1
  390. package/dist/types/cms.schema.js +13 -2
  391. package/dist/types/fields.d.ts +56 -2
  392. package/dist/types/index.d.ts +2 -2
  393. package/dist/types/index.js +1 -1
  394. package/dist/types/layout.d.ts +35 -2
  395. package/dist/types/plugins.d.ts +40 -0
  396. package/dist/types/plugins.js +4 -1
  397. package/dist/updates/0.26.0/index.d.ts +2 -0
  398. package/dist/updates/0.26.0/index.js +51 -0
  399. package/dist/updates/0.26.1/index.d.ts +2 -0
  400. package/dist/updates/0.26.1/index.js +19 -0
  401. package/dist/updates/0.27.0/index.d.ts +2 -0
  402. package/dist/updates/0.27.0/index.js +50 -0
  403. package/dist/updates/index.js +7 -1
  404. package/package.json +29 -7
  405. package/dist/admin/client/collection/empty-state.svelte +0 -28
  406. package/dist/admin/client/collection/empty-state.svelte.d.ts +0 -9
  407. package/dist/admin/client/form/submission-status-badge.svelte +0 -41
  408. package/dist/admin/client/form/submission-status-badge.svelte.d.ts +0 -7
  409. package/dist/admin/components/media/file-preview.svelte +0 -51
  410. package/dist/admin/components/media/file-preview.svelte.d.ts +0 -6
  411. package/dist/admin/utils/formatDate.d.ts +0 -5
@@ -1,10 +1,16 @@
1
1
  import { command, query } from '$app/server';
2
- import { getAtPath } from '../utils/objectPath.js';
2
+ import { error } from '@sveltejs/kit';
3
+ import { CmsError } from '../../core/errors.js';
4
+ import { getRawCollectionEntryLabelWithLanguage } from '../utils/entryLabel.js';
5
+ import { db } from '../../server/db/index.js';
6
+ import { user } from '../../server/db/schema/auth-schema.js';
7
+ import { inArray } from 'drizzle-orm';
3
8
  import { createEntry as createEntryOperation, createEntrySchema, createEntryVersion } from '../../core/server/entries/operations/create.js';
4
9
  import { _getRawEntries as getRawEntriesOperation, _countRawEntries as countRawEntriesOperation, _getRawEntry as getRawEntryOperation, _getRawEntryOrThrow as getRawEntryOrThrow, _getDbEntry as getDbEntry, getEntryVersion as getEntryVersionOperation, getEntryLabels as getEntryLabelsOperation } from '../../core/server/entries/operations/get.js';
5
10
  import { resolveEntries, resolveEntry } from '../../core/server/entries/operations/resolveEntry.js';
6
11
  import { getCMS } from '../../core/cms.js';
7
- import { pruneOldDraftVersions, unpublishEntryLang, upsertDraftVersion, updateEntry, updateEntrySchema, updateEntryVersionCommandTypes } from '../../core/server/entries/operations/update.js';
12
+ import { getFieldsFromConfig } from '../../core/fields/layoutUtils.js';
13
+ import { pruneOldDraftVersions, unpublishEntryLang, cancelScheduledEntryLang, upsertDraftVersion, updateEntry, updateEntrySchema, updateEntryVersionCommandTypes } from '../../core/server/entries/operations/update.js';
8
14
  import z from 'zod';
9
15
  import { requireAuth } from './middleware/auth.js';
10
16
  import { stableSlotReorder } from './reorder.js';
@@ -55,12 +61,84 @@ export const getEntries = query(z.object({
55
61
  orderBy: input.orderBy
56
62
  });
57
63
  });
64
+ /**
65
+ * Cross-collection search for the URL field's internal-link picker. Matches
66
+ * the term (case-insensitive, OR) against each collection's admin-title field
67
+ * (`entryAdminTitle`), its `slug`-type field, and `seo.slug` / `seo.title`.
68
+ * The previous `getEntries({ dataLike })` call was a no-op because it never
69
+ * passed a collection slug (`if (!input.slug) return []`).
70
+ */
71
+ export const searchLinkableEntries = query(z.object({ term: z.string(), language: z.string().optional() }), async ({ term, language }) => {
72
+ requireAuth();
73
+ const q = term.trim();
74
+ if (q.length < 2)
75
+ return [];
76
+ const cms = getCMS();
77
+ // Internal links are language-agnostic (resolved by id at render), but
78
+ // resolveEntries is strict per locale — so an entry that only has a
79
+ // `pl` version is invisible when searching the default `en`. Scan all
80
+ // languages (preferred one first) and dedupe by entry id.
81
+ const langs = [
82
+ ...(language ? [language] : []),
83
+ ...cms.languages.filter((l) => l !== language)
84
+ ];
85
+ const results = [];
86
+ for (const config of Object.values(cms.collections)) {
87
+ if (config.type !== 'collection')
88
+ continue;
89
+ const fields = getFieldsFromConfig(config);
90
+ const titleField = config.entryAdminTitle;
91
+ const slugField = fields.find((f) => f.type === 'slug')?.slug;
92
+ const ilike = { seo: { slug: q, title: q } };
93
+ if (titleField)
94
+ ilike[titleField] = q;
95
+ if (slugField)
96
+ ilike[slugField] = q;
97
+ for (const locale of langs) {
98
+ let entries;
99
+ try {
100
+ entries = await resolveEntries({
101
+ collection: config.slug,
102
+ locale,
103
+ status: 'published',
104
+ filter: { dataILikeOr: ilike }
105
+ });
106
+ }
107
+ catch {
108
+ continue;
109
+ }
110
+ for (const e of entries) {
111
+ const seo = e.seo;
112
+ const rawTitle = titleField ? e[titleField] : undefined;
113
+ const title = (typeof rawTitle === 'string' && rawTitle) ||
114
+ (typeof seo?.title === 'string' && seo.title) ||
115
+ '';
116
+ const rawSlug = slugField ? e[slugField] : undefined;
117
+ const slug = (typeof rawSlug === 'string' && rawSlug) ||
118
+ (typeof seo?.slug === 'string' && seo.slug) ||
119
+ '';
120
+ results.push({
121
+ _id: e._id,
122
+ _slug: config.slug,
123
+ _url: typeof e._url === 'string' ? e._url : undefined,
124
+ title,
125
+ slug
126
+ });
127
+ }
128
+ }
129
+ }
130
+ const seen = new Set();
131
+ return results
132
+ .filter((r) => (seen.has(r._id) ? false : (seen.add(r._id), true)))
133
+ .slice(0, 8);
134
+ });
58
135
  export const getEntryLabels = query(z.object({
59
136
  slug: z.string(),
60
137
  ids: z.array(z.string().uuid()).optional(),
61
138
  search: z.string().optional(),
62
139
  limit: z.number().int().positive().optional(),
63
- status: z.enum(['published', 'draft', 'all']).optional()
140
+ status: z.enum(['published', 'draft', 'all']).optional(),
141
+ language: z.string().optional()
64
142
  }), async (input) => {
65
143
  return getEntryLabelsOperation(input);
66
144
  });
@@ -128,37 +206,51 @@ const updateEntryVersionCommandSchema = z.object({
128
206
  export const updateEntryVersionCommand = command(updateEntryVersionCommandSchema, async (input) => {
129
207
  const { user } = requireAuth();
130
208
  let result;
131
- switch (input.type) {
132
- case 'draft':
133
- result = await upsertDraftVersion(input.entryId, input.data, input.lang, { skipValidation: true });
134
- break;
135
- case 'published-now': {
136
- // Create a new published version for this language
137
- result = await createEntryVersion({
209
+ // Publish failures should reach the client with a structured body so the
210
+ // editor can pin the message to the offending field. SvelteKit hides any
211
+ // thrown error that isn't created via `error()`, so wrap publish writes.
212
+ const runPublish = async (publishedAt) => {
213
+ try {
214
+ return await createEntryVersion({
138
215
  entryId: input.entryId,
139
216
  lang: input.lang,
140
217
  data: input.data,
141
- publishedAt: new Date(),
218
+ publishedAt,
142
219
  publishedBy: user.id
143
220
  });
221
+ }
222
+ catch (e) {
223
+ if (e instanceof CmsError && e.code === 'SLUG_DUPLICATE') {
224
+ error(409, {
225
+ message: e.message,
226
+ code: e.code,
227
+ path: typeof e.context.path === 'string' ? e.context.path : undefined
228
+ });
229
+ }
230
+ throw e;
231
+ }
232
+ };
233
+ switch (input.type) {
234
+ case 'draft':
235
+ result = await upsertDraftVersion(input.entryId, input.data, input.lang, { skipValidation: true });
236
+ break;
237
+ case 'published-now': {
238
+ result = await runPublish(new Date());
144
239
  break;
145
240
  }
146
241
  case 'published-scheduled': {
147
242
  if (!input.scheduledAt) {
148
243
  throw new Error('scheduledAt is required for scheduled publishing');
149
244
  }
150
- result = await createEntryVersion({
151
- entryId: input.entryId,
152
- lang: input.lang,
153
- data: input.data,
154
- publishedAt: input.scheduledAt,
155
- publishedBy: user.id
156
- });
245
+ result = await runPublish(input.scheduledAt);
157
246
  break;
158
247
  }
159
248
  case 'cancel-published':
160
249
  await unpublishEntryLang(input.entryId, input.lang);
161
250
  break;
251
+ case 'cancel-scheduled':
252
+ await cancelScheduledEntryLang(input.entryId, input.lang);
253
+ break;
162
254
  }
163
255
  // Prune old draft versions only after publish/schedule (drafts upsert in-place)
164
256
  if (input.type !== 'draft') {
@@ -210,7 +302,13 @@ export const getEntryVersion = query(z.object({
210
302
  }), async (input) => {
211
303
  return getEntryVersionOperation(input);
212
304
  });
213
- export const getRecentEntries = query(z.number().default(6), async (limit) => {
305
+ /**
306
+ * `containerLabel` carries the collection's plural label for collection entries
307
+ * and the single's name for singles; clients localise it. For collection entries
308
+ * `label` is the entry's own title (or `null` to fall back to the slug); for
309
+ * singles `label` is always `null` — the title shown is `containerLabel`.
310
+ */
311
+ export const getRecentEntries = query(z.object({ limit: z.number().default(6), language: z.string() }), async ({ limit, language }) => {
214
312
  const entries = await getRawEntriesOperation({
215
313
  orderBy: { column: 'updatedAt', direction: 'desc' },
216
314
  limit
@@ -223,30 +321,22 @@ export const getRecentEntries = query(z.number().default(6), async (limit) => {
223
321
  catch {
224
322
  // orphaned entry
225
323
  }
226
- const latestVersion = entry.versions[0];
324
+ const kind = config?.type === 'single' ? 'single' : 'collection';
227
325
  let label = null;
228
- if (config && config.type === 'collection' && config.entryAdminTitle && latestVersion) {
229
- const titleData = getAtPath(latestVersion.data, config.entryAdminTitle);
230
- if (typeof titleData === 'string') {
231
- label = titleData || '';
326
+ let labelLanguage = null;
327
+ if (config && config.type === 'collection') {
328
+ const resolved = getRawCollectionEntryLabelWithLanguage(entry, config, language);
329
+ if (resolved.label !== entry.id) {
330
+ label = resolved.label;
331
+ labelLanguage = resolved.language;
232
332
  }
233
333
  }
234
- if (config && config.type === 'single' && config.label) {
235
- if (typeof config.label === 'object') {
236
- label = String(Object.values(config.label)[0] || '');
237
- }
238
- else {
239
- label = config.label;
240
- }
334
+ let containerLabel = { pl: entry.slug, en: entry.slug };
335
+ if (config?.type === 'collection' && config.labels) {
336
+ containerLabel = config.labels.plural ?? config.labels.singular ?? containerLabel;
241
337
  }
242
- let collectionLabel = { pl: entry.slug, en: entry.slug };
243
- if (config) {
244
- if (config.type === 'collection' && config.labels) {
245
- collectionLabel = config.labels.plural ?? config.labels.singular ?? collectionLabel;
246
- }
247
- else if (config.type === 'single' && config.label) {
248
- collectionLabel = config.label;
249
- }
338
+ else if (config?.type === 'single' && config.label) {
339
+ containerLabel = config.label;
250
340
  }
251
341
  const hasPublished = Object.values(entry.publishedVersions).some((v) => v != null);
252
342
  const hasScheduled = Object.values(entry.scheduledVersions).some((v) => v != null);
@@ -258,43 +348,130 @@ export const getRecentEntries = query(z.number().default(6), async (limit) => {
258
348
  return {
259
349
  entryId: entry.id,
260
350
  slug: entry.slug,
261
- collectionLabel,
351
+ kind,
352
+ containerLabel,
262
353
  label,
354
+ labelLanguage,
263
355
  status,
264
356
  updatedAt: entry.updatedAt
265
357
  };
266
358
  });
267
359
  });
268
- export const getRecentActivity = query(z.number().default(10), async (limit) => {
360
+ export const getRecentActivity = query(z.object({ limit: z.number().default(10), language: z.string() }), async ({ limit, language }) => {
269
361
  const entries = await getRawEntriesOperation({});
270
362
  const activity = [];
271
363
  for (const entry of entries) {
272
364
  const latestVersion = entry.versions[0];
273
- if (latestVersion) {
274
- const config = getCMS().getBySlug(entry.slug);
275
- let label = null;
276
- if (config && config.type === 'collection' && config.entryAdminTitle) {
277
- const titleData = getAtPath(latestVersion.data, config.entryAdminTitle);
278
- if (typeof titleData === 'string') {
279
- label = titleData || null;
280
- }
365
+ if (!latestVersion)
366
+ continue;
367
+ let config = null;
368
+ try {
369
+ config = getCMS().getBySlug(entry.slug);
370
+ }
371
+ catch {
372
+ // orphaned entry — still surface the edit, just without a friendly label
373
+ }
374
+ const kind = config?.type === 'single' ? 'single' : 'collection';
375
+ let label = null;
376
+ let labelLanguage = null;
377
+ let containerLabel = { pl: entry.slug, en: entry.slug };
378
+ if (config && config.type === 'collection') {
379
+ const resolved = getRawCollectionEntryLabelWithLanguage(entry, config, language);
380
+ if (resolved.label !== entry.id) {
381
+ label = resolved.label;
382
+ labelLanguage = resolved.language;
281
383
  }
282
- if (config && config.type === 'single' && config.label) {
283
- if (typeof config.label === 'object') {
284
- label = String(Object.values(config.label)[0] || '');
285
- }
286
- else {
287
- label = config.label;
288
- }
384
+ if (config.labels) {
385
+ containerLabel = config.labels.singular ?? config.labels.plural ?? containerLabel;
289
386
  }
290
- activity.push({
291
- type: 'entry_edit',
387
+ }
388
+ else if (config?.type === 'single' && config.label) {
389
+ containerLabel = config.label;
390
+ }
391
+ activity.push({
392
+ type: 'entry_edit',
393
+ entryId: entry.id,
394
+ slug: entry.slug,
395
+ kind,
396
+ label,
397
+ labelLanguage,
398
+ containerLabel,
399
+ editorId: latestVersion.createdBy ?? null,
400
+ editorName: null,
401
+ updatedAt: latestVersion.createdAt
402
+ });
403
+ }
404
+ const recent = activity
405
+ .sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())
406
+ .slice(0, limit);
407
+ // resolve editor names for the items we're returning
408
+ const editorIds = [...new Set(recent.map((a) => a.editorId).filter((id) => !!id))];
409
+ if (editorIds.length > 0) {
410
+ const rows = await db
411
+ .select({ id: user.id, name: user.name })
412
+ .from(user)
413
+ .where(inArray(user.id, editorIds));
414
+ const nameById = new Map(rows.map((r) => [r.id, r.name]));
415
+ for (const item of recent) {
416
+ if (item.editorId)
417
+ item.editorName = nameById.get(item.editorId) ?? null;
418
+ }
419
+ }
420
+ return recent;
421
+ });
422
+ /**
423
+ * Global quick-search over entry titles plus single names. Titles are matched
424
+ * and returned in the requested `language`, falling back to any available
425
+ * translation (`titleLanguage` reports which one was used). Used by the sidebar
426
+ * command palette. A full multi-language FTS search is tracked separately.
427
+ */
428
+ export const searchEntries = query(z.object({ query: z.string(), language: z.string() }), async ({ query: rawQuery, language }) => {
429
+ requireAuth();
430
+ const q = rawQuery.trim();
431
+ if (q.length < 2)
432
+ return [];
433
+ const cms = getCMS();
434
+ const needle = q.toLocaleLowerCase();
435
+ const results = [];
436
+ for (const config of Object.values(cms.collections)) {
437
+ const containerLabel = config.labels?.plural ?? config.labels?.singular ?? { pl: config.slug, en: config.slug };
438
+ const entries = await getRawEntriesOperation({ slug: config.slug });
439
+ for (const entry of entries) {
440
+ const resolved = getRawCollectionEntryLabelWithLanguage(entry, config, language);
441
+ if (resolved.label === entry.id)
442
+ continue; // no usable title
443
+ if (!resolved.label.toLocaleLowerCase().includes(needle))
444
+ continue;
445
+ results.push({
292
446
  entryId: entry.id,
293
- slug: entry.slug,
294
- label,
295
- updatedAt: latestVersion.createdAt
447
+ title: resolved.label,
448
+ titleLanguage: resolved.language,
449
+ kind: 'collection',
450
+ containerSlug: config.slug,
451
+ containerLabel
296
452
  });
297
453
  }
298
454
  }
299
- return activity.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime()).slice(0, limit);
455
+ for (const config of Object.values(cms.singles)) {
456
+ const labelObj = config.label;
457
+ const names = labelObj && typeof labelObj === 'object' ? Object.values(labelObj) : labelObj ? [labelObj] : [];
458
+ const matches = config.slug.toLocaleLowerCase().includes(needle) ||
459
+ names.some((n) => typeof n === 'string' && n.toLocaleLowerCase().includes(needle));
460
+ if (!matches)
461
+ continue;
462
+ const localizedTitle = labelObj && typeof labelObj === 'object' ? labelObj[language] : undefined;
463
+ const title = localizedTitle ??
464
+ (labelObj && typeof labelObj === 'object'
465
+ ? (Object.values(labelObj)[0] ?? config.slug)
466
+ : labelObj || config.slug);
467
+ results.push({
468
+ entryId: config.slug,
469
+ title,
470
+ titleLanguage: localizedTitle ? language : null,
471
+ kind: 'single',
472
+ containerSlug: config.slug,
473
+ containerLabel: labelObj && typeof labelObj === 'object' ? labelObj : { pl: title, en: title }
474
+ });
475
+ }
476
+ return results.slice(0, 20);
300
477
  });
@@ -8,6 +8,9 @@ export declare const getShopConfig: import("@sveltejs/kit").RemoteQueryFunction<
8
8
  id: string;
9
9
  label: import("../../shop/types.js").I18nText;
10
10
  }[];
11
+ variantAttributes: Record<string, import("../../shop/types.js").VariantAttribute>;
12
+ variantLabel: import("../../shop/types.js").VariantLabelConfig | null;
13
+ variantExpiry: import("../../shop/types.js").VariantExpiryConfig | null;
11
14
  } | null>;
12
15
  export declare const listShopProductEntries: import("@sveltejs/kit").RemoteQueryFunction<void, import("../../shop/server/shop-data.js").ShopEntryListItem[]>;
13
16
  export declare const getShopDataForEntry: import("@sveltejs/kit").RemoteQueryFunction<string, import("../../shop/server/shop-data.js").ShopDataWithVariants | null>;
@@ -18,6 +21,18 @@ export declare const upsertShopDataForEntry: import("@sveltejs/kit").RemoteComma
18
21
  vatRate: number;
19
22
  isActive?: boolean | undefined;
20
23
  sortOrder?: number | null | undefined;
24
+ paymentPolicy?: {
25
+ type: "full";
26
+ } | {
27
+ type: "deposit";
28
+ depositAmount: {
29
+ type: "percent";
30
+ value: number;
31
+ } | {
32
+ type: "amount";
33
+ value: number;
34
+ };
35
+ } | null | undefined;
21
36
  };
22
37
  variants?: {
23
38
  id?: string | undefined;
@@ -25,7 +40,7 @@ export declare const upsertShopDataForEntry: import("@sveltejs/kit").RemoteComma
25
40
  name?: Record<string, string> | null | undefined;
26
41
  priceDelta?: number | undefined;
27
42
  stock?: number | null | undefined;
28
- attributes?: Record<string, string> | null | undefined;
43
+ attributes?: Record<string, unknown> | null | undefined;
29
44
  }[] | undefined;
30
45
  }, Promise<import("../../shop/server/shop-data.js").ShopDataWithVariants>>;
31
46
  export declare const deleteShopDataForEntry: import("@sveltejs/kit").RemoteCommand<string, Promise<{
@@ -82,49 +97,20 @@ export declare const listOrdersAdmin: import("@sveltejs/kit").RemoteQueryFunctio
82
97
  limit?: number | undefined;
83
98
  offset?: number | undefined;
84
99
  } | undefined, {
85
- number: string;
86
- id: string;
87
- status: import("../../shop/types.js").OrderStatus;
88
- createdAt: Date;
89
- updatedAt: Date;
90
- language: string | null;
91
- carrierType: string | null;
92
- currency: string;
93
- customerEmail: string;
94
- customerName: string | null;
95
- customerPhone: string | null;
96
- shippingAddress: Record<string, string> | null;
97
- totalNet: number;
98
- totalGross: number;
99
- vatAmount: number;
100
- shippingNet: number;
101
- shippingGross: number;
102
- shippingMethodId: string | null;
103
- carrierRef: string | null;
104
- shipmentId: string | null;
105
- trackingNumber: string | null;
106
- labelUrl: string | null;
107
- shipmentCreatedAt: Date | null;
108
- paymentMethod: string | null;
109
- paymentProviderRef: string | null;
110
- consents: {
111
- id: string;
112
- accepted: boolean;
113
- label: string;
114
- }[] | null;
115
- notes: string | null;
116
- accessToken: string;
117
- }[]>;
118
- export declare const getOrderForAdmin: import("@sveltejs/kit").RemoteQueryFunction<string, {
119
- order: {
100
+ items: {
120
101
  number: string;
102
+ currency: string;
103
+ consents: {
104
+ id: string;
105
+ accepted: boolean;
106
+ label: string;
107
+ }[] | null;
121
108
  id: string;
122
109
  status: import("../../shop/types.js").OrderStatus;
123
110
  createdAt: Date;
124
111
  updatedAt: Date;
125
112
  language: string | null;
126
113
  carrierType: string | null;
127
- currency: string;
128
114
  customerEmail: string;
129
115
  customerName: string | null;
130
116
  customerPhone: string | null;
@@ -142,13 +128,51 @@ export declare const getOrderForAdmin: import("@sveltejs/kit").RemoteQueryFuncti
142
128
  shipmentCreatedAt: Date | null;
143
129
  paymentMethod: string | null;
144
130
  paymentProviderRef: string | null;
131
+ notes: string | null;
132
+ accessToken: string;
133
+ partialPayment: import("../../shop/types.js").PartialPayment | null;
134
+ balanceOwed: boolean;
135
+ }[];
136
+ total: number;
137
+ limit: number;
138
+ offset: number;
139
+ }>;
140
+ export declare const getOrderForAdmin: import("@sveltejs/kit").RemoteQueryFunction<string, {
141
+ order: {
142
+ number: string;
143
+ currency: string;
145
144
  consents: {
146
145
  id: string;
147
146
  accepted: boolean;
148
147
  label: string;
149
148
  }[] | null;
149
+ id: string;
150
+ status: import("../../shop/types.js").OrderStatus;
151
+ createdAt: Date;
152
+ updatedAt: Date;
153
+ language: string | null;
154
+ carrierType: string | null;
155
+ customerEmail: string;
156
+ customerName: string | null;
157
+ customerPhone: string | null;
158
+ shippingAddress: Record<string, string> | null;
159
+ totalNet: number;
160
+ totalGross: number;
161
+ vatAmount: number;
162
+ shippingNet: number;
163
+ shippingGross: number;
164
+ shippingMethodId: string | null;
165
+ carrierRef: string | null;
166
+ shipmentId: string | null;
167
+ trackingNumber: string | null;
168
+ labelUrl: string | null;
169
+ shipmentCreatedAt: Date | null;
170
+ paymentMethod: string | null;
171
+ paymentProviderRef: string | null;
150
172
  notes: string | null;
151
173
  accessToken: string;
174
+ partialPayment: import("../../shop/types.js").PartialPayment | null;
175
+ balanceOwed: boolean;
152
176
  };
153
177
  items: {
154
178
  id: string;
@@ -177,13 +201,18 @@ export declare const updateOrderStatusCmd: import("@sveltejs/kit").RemoteCommand
177
201
  note?: string | undefined;
178
202
  }, Promise<{
179
203
  number: string;
204
+ currency: string;
205
+ consents: {
206
+ id: string;
207
+ accepted: boolean;
208
+ label: string;
209
+ }[] | null;
180
210
  id: string;
181
211
  status: import("../../shop/types.js").OrderStatus;
182
212
  createdAt: Date;
183
213
  updatedAt: Date;
184
214
  language: string | null;
185
215
  carrierType: string | null;
186
- currency: string;
187
216
  customerEmail: string;
188
217
  customerName: string | null;
189
218
  customerPhone: string | null;
@@ -201,13 +230,10 @@ export declare const updateOrderStatusCmd: import("@sveltejs/kit").RemoteCommand
201
230
  shipmentCreatedAt: Date | null;
202
231
  paymentMethod: string | null;
203
232
  paymentProviderRef: string | null;
204
- consents: {
205
- id: string;
206
- accepted: boolean;
207
- label: string;
208
- }[] | null;
209
233
  notes: string | null;
210
234
  accessToken: string;
235
+ partialPayment: import("../../shop/types.js").PartialPayment | null;
236
+ balanceOwed: boolean;
211
237
  }>>;
212
238
  export declare const resendOrderEmailCmd: import("@sveltejs/kit").RemoteCommand<{
213
239
  orderId: string;
@@ -248,15 +274,15 @@ export declare const listShopableCollections: import("@sveltejs/kit").RemoteQuer
248
274
  }[]>;
249
275
  export declare const getOrderRefundsAdmin: import("@sveltejs/kit").RemoteQueryFunction<string, {
250
276
  refunds: {
277
+ amount: number;
278
+ currency: string;
251
279
  id: string;
252
280
  status: import("../../db-postgres/schema/shop/index.js").ShopRefundStatus;
253
281
  createdAt: Date;
254
282
  updatedAt: Date;
255
- currency: string;
256
283
  orderId: string;
257
284
  provider: string;
258
285
  providerRef: string | null;
259
- amount: number;
260
286
  paymentId: string | null;
261
287
  reason: string | null;
262
288
  createdBy: string | null;
@@ -272,6 +298,8 @@ export declare const refundOrderCmd: import("@sveltejs/kit").RemoteCommand<{
272
298
  orderId: string;
273
299
  amount?: number | undefined;
274
300
  reason?: string | undefined;
301
+ kind?: "full" | "deposit" | "balance" | undefined;
302
+ releaseStock?: boolean | undefined;
275
303
  }, Promise<{
276
304
  refund: import("../../shop/server/refund.js").ShopRefundRow;
277
305
  remainingRefundable: number;
@@ -281,9 +309,20 @@ export declare const refundOrderCmd: import("@sveltejs/kit").RemoteCommand<{
281
309
  error?: undefined;
282
310
  } | {
283
311
  success: false;
284
- code: "order_not_found" | "order_not_paid" | "no_provider_ref" | "unknown_provider" | "refund_unsupported" | "invalid_amount" | "amount_exceeds_remaining" | "provider_error";
312
+ code: "order_not_found" | "order_not_paid" | "no_provider_ref" | "unknown_provider" | "refund_unsupported" | "invalid_amount" | "amount_exceeds_remaining" | "provider_error" | "no_payment_kind";
285
313
  error: string;
286
314
  }>>;
315
+ export declare const generateBalanceLinkForOrder: import("@sveltejs/kit").RemoteCommand<string, Promise<{
316
+ success: false;
317
+ error: string;
318
+ url?: undefined;
319
+ balanceAmount?: undefined;
320
+ } | {
321
+ success: true;
322
+ url: string;
323
+ balanceAmount: number;
324
+ error?: undefined;
325
+ }>>;
287
326
  export declare const listCouponsAdmin: import("@sveltejs/kit").RemoteQueryFunction<void, {
288
327
  id: string;
289
328
  code: string;
@@ -312,7 +351,7 @@ export declare const getCouponAdmin: import("@sveltejs/kit").RemoteQueryFunction
312
351
  }>;
313
352
  export declare const createCouponCmd: import("@sveltejs/kit").RemoteCommand<{
314
353
  code: string;
315
- type: "fixed" | "percent";
354
+ type: "percent" | "fixed";
316
355
  value: number;
317
356
  minOrderAmount?: number | null | undefined;
318
357
  maxUses?: number | null | undefined;
@@ -335,7 +374,7 @@ export declare const updateCouponCmd: import("@sveltejs/kit").RemoteCommand<{
335
374
  id: string;
336
375
  input: {
337
376
  code?: string | undefined;
338
- type?: "fixed" | "percent" | undefined;
377
+ type?: "percent" | "fixed" | undefined;
339
378
  value?: number | undefined;
340
379
  minOrderAmount?: number | null | undefined;
341
380
  maxUses?: number | null | undefined;