includio-cms 0.25.0 → 0.26.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.
- package/API.md +57 -4
- package/CHANGELOG.md +53 -0
- package/DOCS.md +1 -1
- package/README.md +2 -0
- package/ROADMAP.md +6 -0
- package/dist/admin/client/account/lang.d.ts +1 -0
- package/dist/admin/client/account/lang.js +4 -2
- package/dist/admin/client/account/profile-section.svelte +2 -2
- package/dist/admin/client/account/security-section.svelte +27 -4
- package/dist/admin/client/account/sessions-section.svelte +1 -1
- package/dist/admin/client/admin/admin-after-login-layout-content.svelte +1 -1
- package/dist/admin/client/admin/dashboard-page.svelte +34 -10
- package/dist/admin/client/collection/bulk-actions-bar.svelte +86 -44
- package/dist/admin/client/collection/bulk-actions-bar.svelte.d.ts +3 -1
- package/dist/admin/client/collection/collection-entries.svelte +52 -36
- package/dist/admin/client/collection/collection-entries.svelte.d.ts +3 -0
- package/dist/admin/client/collection/collection.svelte +28 -14
- package/dist/admin/client/collection/collection.svelte.d.ts +3 -0
- package/dist/admin/client/collection/data-table.svelte +279 -130
- package/dist/admin/client/collection/data-table.svelte.d.ts +11 -0
- package/dist/admin/client/collection/date-cell.svelte +4 -4
- package/dist/admin/client/collection/row-actions.svelte +2 -1
- package/dist/admin/client/collection/sortable-header.svelte +33 -9
- package/dist/admin/client/collection/state-display.svelte +102 -0
- package/dist/admin/client/collection/state-display.svelte.d.ts +12 -0
- package/dist/admin/client/collection/status-badge.svelte +99 -11
- package/dist/admin/client/collection/status-badge.svelte.d.ts +15 -1
- package/dist/admin/client/collection/table-pagination.svelte +21 -6
- package/dist/admin/client/collection/table-toolbar.svelte +105 -80
- package/dist/admin/client/collection/table-toolbar.svelte.d.ts +11 -8
- package/dist/admin/client/entry/entry-form.svelte +36 -11
- package/dist/admin/client/entry/entry-form.svelte.d.ts +1 -0
- package/dist/admin/client/entry/entry-header.svelte +22 -15
- package/dist/admin/client/entry/entry-header.svelte.d.ts +1 -0
- package/dist/admin/client/entry/entry.svelte +269 -165
- package/dist/admin/client/entry/header/a11y-header-badge.svelte +47 -0
- package/dist/admin/client/entry/header/a11y-header-badge.svelte.d.ts +8 -0
- package/dist/admin/client/entry/header/publish-panel.svelte +69 -13
- package/dist/admin/client/entry/header/save-indicator.svelte +57 -28
- package/dist/admin/client/entry/header/save-indicator.svelte.d.ts +1 -0
- package/dist/admin/client/entry/header/status-badge.svelte +60 -15
- package/dist/admin/client/entry/header/status-badge.svelte.d.ts +1 -2
- package/dist/admin/client/entry/header/version-history-sheet.svelte +1 -1
- package/dist/admin/client/entry/hybrid/hybrid-layout.svelte +74 -23
- package/dist/admin/client/entry/hybrid/hybrid-preview.svelte +1 -1
- package/dist/admin/client/entry/utils.d.ts +14 -0
- package/dist/admin/client/entry/utils.js +28 -0
- package/dist/admin/client/form/form-submission/form-submission.svelte +2 -2
- package/dist/admin/client/form/form-submissions.svelte +143 -194
- package/dist/admin/client/form/form-submissions.svelte.d.ts +2 -0
- package/dist/admin/client/login/lang.d.ts +3 -0
- package/dist/admin/client/login/lang.js +10 -4
- package/dist/admin/client/login/login-form.svelte +8 -1
- package/dist/admin/client/login/reset-password-page.svelte +24 -3
- package/dist/admin/client/login/schema.d.ts +14 -2
- package/dist/admin/client/login/schema.js +19 -8
- package/dist/admin/client/maintenance/maintenance-page.svelte +16 -17
- package/dist/admin/client/media/media-page.svelte +1 -1
- package/dist/admin/client/shop/coupon-edit-page.svelte +117 -13
- package/dist/admin/client/shop/coupon-form.svelte +282 -138
- package/dist/admin/client/shop/coupon-form.svelte.d.ts +1 -9
- package/dist/admin/client/shop/coupon-new-page.svelte +40 -10
- package/dist/admin/client/shop/coupon-new-page.svelte.d.ts +2 -17
- package/dist/admin/client/shop/coupon-schema.d.ts +28 -0
- package/dist/admin/client/shop/coupon-schema.js +53 -0
- package/dist/admin/client/shop/coupons-list-page.svelte +262 -118
- package/dist/admin/client/shop/coupons-list-page.svelte.d.ts +16 -1
- package/dist/admin/client/shop/shipping-method-edit-page.svelte +108 -59
- package/dist/admin/client/shop/shipping-method-form.svelte +36 -9
- package/dist/admin/client/shop/shipping-method-new-page.svelte +44 -13
- package/dist/admin/client/shop/shipping-methods-list-page.svelte +101 -59
- package/dist/admin/client/shop/shop-order-detail-page.svelte +113 -84
- package/dist/admin/client/shop/shop-orders-list-page.svelte +302 -152
- package/dist/admin/client/shop/shop-orders-list-page.svelte.d.ts +18 -1
- package/dist/admin/client/shop/shop-products-list-page.svelte +355 -118
- package/dist/admin/client/shop/shop-products-list-page.svelte.d.ts +19 -1
- package/dist/admin/client/users/accept-invite-page.svelte +24 -3
- package/dist/admin/client/users/create-user-dialog.svelte +3 -8
- package/dist/admin/client/users/lang.d.ts +2 -0
- package/dist/admin/client/users/lang.js +4 -0
- package/dist/admin/client/users/pending-invitations.svelte +2 -9
- package/dist/admin/client/users/user-name-cell.svelte +20 -0
- package/dist/admin/client/users/user-name-cell.svelte.d.ts +9 -0
- package/dist/admin/client/users/user-role-badge.svelte +16 -0
- package/dist/admin/client/users/user-role-badge.svelte.d.ts +7 -0
- package/dist/admin/client/users/user-row-actions.svelte +72 -0
- package/dist/admin/client/users/user-row-actions.svelte.d.ts +20 -0
- package/dist/admin/client/users/user-sessions-sheet.svelte +2 -11
- package/dist/admin/client/users/users-page.svelte +283 -497
- package/dist/admin/client/users/users-page.svelte.d.ts +12 -1
- package/dist/admin/components/dashboard/form-submissions-widget.svelte +59 -74
- package/dist/admin/components/dashboard/recent-activity.svelte +17 -5
- package/dist/admin/components/dashboard/recent-entries.svelte +19 -7
- package/dist/admin/components/dialogs/confirmation-dialog.svelte +105 -0
- package/dist/admin/components/dialogs/confirmation-dialog.svelte.d.ts +13 -0
- package/dist/admin/components/fields/block-picker-modal.svelte +6 -0
- package/dist/admin/components/fields/blocks-field.svelte +46 -1
- package/dist/admin/components/fields/boolean-field.svelte +1 -1
- package/dist/admin/components/fields/field-renderer.svelte +23 -21
- package/dist/admin/components/fields/file-field.svelte +344 -30
- package/dist/admin/components/fields/media-field.svelte +16 -2
- package/dist/admin/components/fields/radio-field.svelte +22 -0
- package/dist/admin/components/fields/relation-field.svelte +123 -97
- package/dist/admin/components/fields/relation-picker-dialog.svelte +2 -2
- package/dist/admin/components/fields/seo-field.svelte +60 -30
- package/dist/admin/components/fields/shop-field.svelte +9 -4
- package/dist/admin/components/fields/simple-array-field.svelte +321 -151
- package/dist/admin/components/fields/simple-array-field.svelte.d.ts +3 -0
- package/dist/admin/components/fields/slug-field.svelte +146 -21
- package/dist/admin/components/fields/text-field-wrapper.svelte +37 -20
- package/dist/admin/components/fields/text-field.svelte +7 -2
- package/dist/admin/components/fields/url-field-wrapper.svelte +10 -0
- package/dist/admin/components/fields/url-field.svelte +36 -23
- package/dist/admin/components/forms/form-error-summary.svelte +143 -0
- package/dist/admin/components/forms/form-error-summary.svelte.d.ts +27 -0
- package/dist/admin/components/layout/app-sidebar.svelte +7 -2
- package/dist/admin/components/layout/detail-page-shell.svelte +71 -0
- package/dist/admin/components/layout/detail-page-shell.svelte.d.ts +24 -0
- package/dist/admin/components/layout/lang.d.ts +5 -0
- package/dist/admin/components/layout/lang.js +10 -0
- package/dist/admin/components/layout/layout-renderer.svelte +71 -2
- package/dist/admin/components/layout/layout-renderer.svelte.d.ts +1 -0
- package/dist/admin/components/layout/layout-tabs.svelte +172 -0
- package/dist/admin/components/layout/layout-tabs.svelte.d.ts +24 -0
- package/dist/admin/components/layout/nav-breadcrumbs.svelte +25 -7
- package/dist/admin/components/layout/nav-collections.svelte +23 -36
- package/dist/admin/components/layout/nav-forms.svelte +19 -35
- package/dist/admin/components/layout/nav-main.svelte +3 -28
- package/dist/admin/components/layout/nav-search.svelte +70 -2
- package/dist/admin/components/layout/nav-section.svelte +77 -0
- package/dist/admin/components/layout/nav-section.svelte.d.ts +22 -0
- package/dist/admin/components/layout/nav-shop.svelte +3 -27
- package/dist/admin/components/layout/nav-singletons.svelte +16 -28
- package/dist/admin/components/layout/page-header.stories.svelte +93 -0
- package/dist/admin/components/layout/page-header.stories.svelte.d.ts +27 -0
- package/dist/admin/components/layout/page-header.svelte +68 -0
- package/dist/admin/components/layout/page-header.svelte.d.ts +17 -0
- package/dist/admin/components/layout/site-header.svelte +9 -0
- package/dist/admin/components/layout/site-header.svelte.d.ts +2 -17
- package/dist/admin/components/media/file/file-name-input.svelte +6 -2
- package/dist/admin/components/media/file/file-preview.svelte +130 -17
- package/dist/admin/components/media/file-upload.svelte +16 -7
- package/dist/admin/components/media/file-upload.svelte.d.ts +1 -0
- package/dist/admin/components/media/files-list.svelte +153 -53
- package/dist/admin/components/media/files-list.svelte.d.ts +1 -0
- package/dist/admin/components/media/media-library.svelte +577 -198
- package/dist/admin/components/media/media-library.svelte.d.ts +4 -0
- package/dist/admin/components/media/media-selector.svelte +4 -2
- package/dist/admin/components/media/media-selector.svelte.d.ts +1 -0
- package/dist/admin/components/media/tag-sidebar.svelte +4 -4
- package/dist/admin/components/tiptap/FigureNodeView.svelte +10 -0
- package/dist/admin/components/tiptap/bubble-menu.svelte +104 -0
- package/dist/admin/components/tiptap/bubble-menu.svelte.d.ts +19 -0
- package/dist/admin/components/tiptap/content-editor.svelte +28 -24
- package/dist/admin/components/tiptap/editor-toolbar.svelte +7 -7
- package/dist/admin/components/tiptap/extensions.js +5 -1
- package/dist/admin/components/tiptap/image-dialog.svelte +5 -1
- package/dist/admin/components/tiptap/link-dialog.svelte +2 -0
- package/dist/admin/components/tiptap/tiptap-editor.svelte +18 -20
- package/dist/admin/components/tiptap/video-dialog.svelte +1 -1
- package/dist/admin/i18n/errors.d.ts +140 -0
- package/dist/admin/i18n/errors.js +151 -0
- package/dist/admin/remote/entry.remote.d.ts +59 -4
- package/dist/admin/remote/entry.remote.js +239 -62
- package/dist/admin/remote/shop.remote.d.ts +37 -32
- package/dist/admin/remote/shop.remote.js +9 -2
- package/dist/admin/shared/password-generate.d.ts +6 -0
- package/dist/admin/shared/password-generate.js +40 -0
- package/dist/admin/shared/password-schema.d.ts +6 -0
- package/dist/admin/shared/password-schema.js +10 -3
- package/dist/admin/styles/admin.css +23 -6
- package/dist/admin/styles/tokens.md +244 -0
- package/dist/admin/utils/accordionActivation.d.ts +13 -0
- package/dist/admin/utils/accordionActivation.js +35 -0
- package/dist/admin/utils/entryLabel.d.ts +23 -0
- package/dist/admin/utils/entryLabel.js +51 -12
- package/dist/admin/utils/field-a11y.d.ts +29 -0
- package/dist/admin/utils/field-a11y.js +23 -0
- package/dist/admin/utils/fieldPathElement.d.ts +9 -0
- package/dist/admin/utils/fieldPathElement.js +18 -0
- package/dist/admin/utils/fileDisplay.d.ts +10 -0
- package/dist/admin/utils/fileDisplay.js +26 -0
- package/dist/admin/utils/flattenFormErrors.d.ts +19 -0
- package/dist/admin/utils/flattenFormErrors.js +102 -0
- package/dist/admin/utils/formatters.d.ts +12 -0
- package/dist/admin/utils/{formatDate.js → formatters.js} +23 -2
- package/dist/admin/utils/scrollWithin.d.ts +9 -0
- package/dist/admin/utils/scrollWithin.js +32 -0
- package/dist/admin/utils/tabActivation.d.ts +12 -0
- package/dist/admin/utils/tabActivation.js +24 -0
- package/dist/cms/runtime/schema.d.ts +1 -0
- package/dist/cms/runtime/schema.js +1 -0
- package/dist/cms/runtime/types.d.ts +80 -7
- package/dist/components/ui/accordion/accordion-content.svelte +17 -3
- package/dist/components/ui/accordion/accordion.stories.svelte +21 -1
- package/dist/components/ui/alert/alert.stories.svelte +14 -0
- package/dist/components/ui/alert-dialog/alert-dialog.stories.svelte +45 -0
- package/dist/components/ui/alert-dialog/alert-dialog.stories.svelte.d.ts +27 -0
- package/dist/components/ui/avatar/avatar.stories.svelte +27 -0
- package/dist/components/ui/badge/badge.stories.svelte +15 -0
- package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte +47 -0
- package/dist/components/ui/breadcrumb/breadcrumb.svelte +1 -1
- package/dist/components/ui/button/button.stories.svelte +53 -6
- package/dist/components/ui/button/button.svelte +39 -5
- package/dist/components/ui/button/button.svelte.d.ts +4 -0
- package/dist/components/ui/button-group/button-group.stories.svelte +44 -0
- package/dist/components/ui/button-group/button-group.stories.svelte.d.ts +27 -0
- package/dist/components/ui/calendar/calendar.stories.svelte +36 -0
- package/dist/components/ui/calendar/calendar.stories.svelte.d.ts +27 -0
- package/dist/components/ui/card/card.stories.svelte +7 -0
- package/dist/components/ui/carousel/carousel.stories.svelte +43 -0
- package/dist/components/ui/carousel/carousel.stories.svelte.d.ts +27 -0
- package/dist/components/ui/checkbox/checkbox.stories.svelte +67 -0
- package/dist/components/ui/checkbox/checkbox.stories.svelte.d.ts +27 -0
- package/dist/components/ui/checkbox/checkbox.svelte +3 -3
- package/dist/components/ui/command/command.stories.svelte +18 -0
- package/dist/components/ui/data-table/data-table.stories.svelte +61 -0
- package/dist/components/ui/data-table/data-table.stories.svelte.d.ts +18 -0
- package/dist/components/ui/dialog/dialog-content.svelte +5 -0
- package/dist/components/ui/dialog/dialog-content.svelte.d.ts +2 -0
- package/dist/components/ui/dialog/dialog.stories.svelte +35 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.stories.svelte +74 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.stories.svelte.d.ts +27 -0
- package/dist/components/ui/field/field-context.svelte.d.ts +22 -0
- package/dist/components/ui/field/field-context.svelte.js +9 -0
- package/dist/components/ui/field/field-control.svelte +18 -0
- package/dist/components/ui/field/field-control.svelte.d.ts +8 -0
- package/dist/components/ui/field/field-description.svelte +12 -0
- package/dist/components/ui/field/field-error.svelte +14 -6
- package/dist/components/ui/field/field-label.svelte +10 -0
- package/dist/components/ui/field/field.stories.svelte +95 -9
- package/dist/components/ui/field/field.svelte +57 -0
- package/dist/components/ui/field/field.svelte.d.ts +2 -0
- package/dist/components/ui/field/index.d.ts +3 -1
- package/dist/components/ui/field/index.js +4 -2
- package/dist/components/ui/form/form-field-errors.svelte +1 -1
- package/dist/components/ui/form/form.stories.svelte +25 -0
- package/dist/components/ui/form/form.stories.svelte.d.ts +26 -0
- package/dist/components/ui/input/input.stories.svelte +26 -0
- package/dist/components/ui/input-group/input-group-input.svelte.d.ts +1 -1
- package/dist/components/ui/input-group/input-group.stories.svelte +43 -0
- package/dist/components/ui/input-group/input-group.stories.svelte.d.ts +27 -0
- package/dist/components/ui/item/item.stories.svelte +61 -0
- package/dist/components/ui/item/item.stories.svelte.d.ts +27 -0
- package/dist/components/ui/label/label.stories.svelte +7 -0
- package/dist/components/ui/live-region/index.d.ts +1 -0
- package/dist/components/ui/live-region/index.js +1 -0
- package/dist/components/ui/live-region/live-region-demo.svelte +32 -0
- package/dist/components/ui/live-region/live-region-demo.svelte.d.ts +7 -0
- package/dist/components/ui/live-region/live-region.stories.svelte +23 -0
- package/dist/components/ui/live-region/live-region.stories.svelte.d.ts +26 -0
- package/dist/components/ui/live-region/live-region.svelte +12 -0
- package/dist/components/ui/live-region/live-region.svelte.d.ts +8 -0
- package/dist/components/ui/popover/popover.stories.svelte +34 -0
- package/dist/components/ui/radio-group/radio-group.stories.svelte +58 -0
- package/dist/components/ui/radio-group/radio-group.stories.svelte.d.ts +27 -0
- package/dist/components/ui/resizable/resizable.stories.svelte +56 -0
- package/dist/components/ui/resizable/resizable.stories.svelte.d.ts +27 -0
- package/dist/components/ui/select/select.stories.svelte +49 -0
- package/dist/components/ui/separator/separator.stories.svelte +18 -0
- package/dist/components/ui/sheet/sheet.stories.svelte +34 -0
- package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +1 -1
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte +1 -0
- package/dist/components/ui/sidebar/sidebar-trigger.svelte +1 -1
- package/dist/components/ui/sidebar/sidebar.stories.svelte +72 -0
- package/dist/components/ui/sidebar/sidebar.stories.svelte.d.ts +27 -0
- package/dist/components/ui/skeleton/skeleton.stories.svelte +39 -0
- package/dist/components/ui/skeleton/skeleton.stories.svelte.d.ts +27 -0
- package/dist/components/ui/skeleton/skeleton.svelte +6 -0
- package/dist/components/ui/sonner/index.d.ts +1 -1
- package/dist/components/ui/sonner/index.js +1 -1
- package/dist/components/ui/sonner/sonner.stories.svelte +7 -0
- package/dist/components/ui/sonner/sonner.svelte +17 -1
- package/dist/components/ui/sonner/sonner.svelte.d.ts +6 -0
- package/dist/components/ui/spinner/spinner.stories.svelte +30 -0
- package/dist/components/ui/spinner/spinner.stories.svelte.d.ts +27 -0
- package/dist/components/ui/switch/switch.stories.svelte +56 -0
- package/dist/components/ui/switch/switch.stories.svelte.d.ts +27 -0
- package/dist/components/ui/table/table-cell.svelte +1 -1
- package/dist/components/ui/table/table-head.svelte +1 -1
- package/dist/components/ui/table/table.stories.svelte +68 -0
- package/dist/components/ui/table/table.stories.svelte.d.ts +27 -0
- package/dist/components/ui/table/table.svelte +1 -1
- package/dist/components/ui/tabs/tabs.stories.svelte +48 -0
- package/dist/components/ui/tabs/tabs.stories.svelte.d.ts +27 -0
- package/dist/components/ui/textarea/textarea.stories.svelte +21 -0
- package/dist/components/ui/toggle/toggle.stories.svelte +23 -0
- package/dist/components/ui/toggle-group/toggle-group.stories.svelte +43 -0
- package/dist/components/ui/tooltip/tooltip.stories.svelte +46 -6
- package/dist/core/fields/fieldSchemaToTs.d.ts +7 -0
- package/dist/core/fields/fieldSchemaToTs.js +234 -90
- package/dist/core/fields/layoutUtils.d.ts +4 -1
- package/dist/core/fields/layoutUtils.js +41 -4
- package/dist/core/fields/resolveSeo.d.ts +70 -0
- package/dist/core/fields/resolveSeo.js +88 -0
- package/dist/core/fields/seoFieldDescriptor.d.ts +43 -0
- package/dist/core/fields/seoFieldDescriptor.js +74 -0
- package/dist/core/fields/slugPath.d.ts +13 -0
- package/dist/core/fields/slugPath.js +32 -0
- package/dist/core/fields/urlUtils.d.ts +8 -0
- package/dist/core/fields/urlUtils.js +27 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/server/entries/operations/create.js +13 -0
- package/dist/core/server/entries/operations/get.d.ts +7 -0
- package/dist/core/server/entries/operations/get.js +10 -6
- package/dist/core/server/entries/operations/slugUniqueness.d.ts +37 -0
- package/dist/core/server/entries/operations/slugUniqueness.js +116 -0
- package/dist/core/server/entries/operations/update.d.ts +6 -1
- package/dist/core/server/entries/operations/update.js +24 -1
- package/dist/core/server/fields/slugResolver.d.ts +3 -13
- package/dist/core/server/fields/slugResolver.js +8 -37
- package/dist/core/server/generator/fields.js +10 -17
- package/dist/core/server/generator/formFields.js +2 -1
- package/dist/core/server/generator/generator.js +4 -4
- package/dist/core/server/generator/utils.d.ts +1 -0
- package/dist/core/server/generator/utils.js +4 -0
- package/dist/paraglide/messages/_index.d.ts +3 -36
- package/dist/paraglide/messages/_index.js +3 -71
- package/dist/paraglide/messages/hello_world.d.ts +5 -0
- package/dist/paraglide/messages/hello_world.js +33 -0
- package/dist/paraglide/messages/login_hello.d.ts +16 -0
- package/dist/paraglide/messages/login_hello.js +34 -0
- package/dist/paraglide/messages/login_please_login.d.ts +16 -0
- package/dist/paraglide/messages/login_please_login.js +34 -0
- package/dist/shop/server/orders.d.ts +1 -0
- package/dist/shop/server/orders.js +14 -0
- package/dist/shop/server/shop-data.d.ts +2 -0
- package/dist/shop/server/shop-data.js +20 -5
- package/dist/sveltekit/server/handle.js +17 -0
- package/dist/types/cms.schema.js +4 -2
- package/dist/types/fields.d.ts +35 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/layout.d.ts +35 -2
- package/dist/updates/0.26.0/index.d.ts +2 -0
- package/dist/updates/0.26.0/index.js +51 -0
- package/dist/updates/index.js +3 -1
- package/package.json +29 -7
- package/dist/admin/client/collection/empty-state.svelte +0 -28
- package/dist/admin/client/collection/empty-state.svelte.d.ts +0 -9
- package/dist/admin/client/form/submission-status-badge.svelte +0 -41
- package/dist/admin/client/form/submission-status-badge.svelte.d.ts +0 -7
- package/dist/admin/components/media/file-preview.svelte +0 -51
- package/dist/admin/components/media/file-preview.svelte.d.ts +0 -6
- package/dist/admin/utils/formatDate.d.ts +0 -5
- package/dist/paraglide/messages/en.d.ts +0 -5
- package/dist/paraglide/messages/en.js +0 -14
- package/dist/paraglide/messages/pl.d.ts +0 -5
- package/dist/paraglide/messages/pl.js +0 -14
|
@@ -4,11 +4,35 @@
|
|
|
4
4
|
import { Button } from '../../../components/ui/button/index.js';
|
|
5
5
|
import MailIcon from '@tabler/icons-svelte/icons/mail';
|
|
6
6
|
import RefundDialog from './refund-dialog.svelte';
|
|
7
|
+
import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
|
|
8
|
+
import { getBreadcrumbs } from '../../state/breadcrumbs.svelte.js';
|
|
9
|
+
import { sidebarLang } from '../../components/layout/lang.js';
|
|
10
|
+
import { formatCentsPrice, formatDateTime } from '../../utils/formatters.js';
|
|
11
|
+
import PageHeader from '../../components/layout/page-header.svelte';
|
|
12
|
+
import StatusBadge from '../collection/status-badge.svelte';
|
|
13
|
+
import ConfirmationDialog from '../../components/dialogs/confirmation-dialog.svelte';
|
|
14
|
+
import SaveIndicator from '../entry/header/save-indicator.svelte';
|
|
15
|
+
import FormErrorSummary, {
|
|
16
|
+
type FormErrorEntry
|
|
17
|
+
} from '../../components/forms/form-error-summary.svelte';
|
|
18
|
+
import type { OrderStatus as OrderStatusT } from '../../../shop/types.js';
|
|
7
19
|
|
|
8
20
|
const remotes = getRemotes();
|
|
21
|
+
const interfaceLanguage = useInterfaceLanguage();
|
|
22
|
+
const breadcrumbs = getBreadcrumbs();
|
|
9
23
|
|
|
10
24
|
const orderId = $derived(page.params.id ?? '');
|
|
11
25
|
const query = $derived(remotes.getOrderForAdmin(orderId));
|
|
26
|
+
|
|
27
|
+
$effect(() => {
|
|
28
|
+
const s = sidebarLang[interfaceLanguage.current].shop;
|
|
29
|
+
const number = query.current?.order?.number;
|
|
30
|
+
breadcrumbs.state = [
|
|
31
|
+
{ label: s.title },
|
|
32
|
+
{ label: s.orders, href: '/admin/shop/orders' },
|
|
33
|
+
{ label: number ?? '…' }
|
|
34
|
+
];
|
|
35
|
+
});
|
|
12
36
|
const refundsQuery = $derived(remotes.getOrderRefundsAdmin(orderId));
|
|
13
37
|
let refundDialogOpen = $state(false);
|
|
14
38
|
|
|
@@ -35,18 +59,6 @@
|
|
|
35
59
|
{ value: 'refunded', label: 'Zwrócone' }
|
|
36
60
|
];
|
|
37
61
|
|
|
38
|
-
const STATUS_STYLES: Record<string, string> = {
|
|
39
|
-
new: 'bg-blue-100 text-blue-800',
|
|
40
|
-
awaitingPayment: 'bg-yellow-100 text-yellow-800',
|
|
41
|
-
paid: 'bg-green-100 text-green-800',
|
|
42
|
-
preparing: 'bg-purple-100 text-purple-800',
|
|
43
|
-
sent: 'bg-indigo-100 text-indigo-800',
|
|
44
|
-
done: 'bg-gray-100 text-gray-800',
|
|
45
|
-
cancelled: 'bg-red-100 text-red-800',
|
|
46
|
-
paymentRejected: 'bg-red-100 text-red-800',
|
|
47
|
-
refunded: 'bg-orange-100 text-orange-800'
|
|
48
|
-
};
|
|
49
|
-
|
|
50
62
|
let newStatus = $state<OrderStatus | ''>('');
|
|
51
63
|
let note = $state('');
|
|
52
64
|
let saving = $state(false);
|
|
@@ -55,28 +67,24 @@
|
|
|
55
67
|
let errorMessage = $state<string | null>(null);
|
|
56
68
|
let successMessage = $state<string | null>(null);
|
|
57
69
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
70
|
+
type SaveStatus = 'idle' | 'saving' | 'saved' | 'unsaved' | 'error';
|
|
71
|
+
let statusFormStatus = $state<SaveStatus>('idle');
|
|
72
|
+
let statusFormSavedAt = $state<Date | null>(null);
|
|
61
73
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}).format(cents / 100);
|
|
68
|
-
}
|
|
74
|
+
const statusFormSummaryErrors = $derived<FormErrorEntry[]>(
|
|
75
|
+
errorMessage
|
|
76
|
+
? [{ path: 'newStatus', label: 'Status zamówienia', message: errorMessage }]
|
|
77
|
+
: []
|
|
78
|
+
);
|
|
69
79
|
|
|
70
|
-
function
|
|
71
|
-
return
|
|
72
|
-
dateStyle: 'short',
|
|
73
|
-
timeStyle: 'short'
|
|
74
|
-
}).format(new Date(d));
|
|
80
|
+
function statusLabel(s: string) {
|
|
81
|
+
return STATUSES.find((x) => x.value === s)?.label ?? s;
|
|
75
82
|
}
|
|
76
83
|
|
|
77
84
|
async function changeStatus() {
|
|
78
85
|
if (!newStatus) return;
|
|
79
86
|
saving = true;
|
|
87
|
+
statusFormStatus = 'saving';
|
|
80
88
|
errorMessage = null;
|
|
81
89
|
successMessage = null;
|
|
82
90
|
try {
|
|
@@ -89,8 +97,11 @@
|
|
|
89
97
|
note = '';
|
|
90
98
|
newStatus = '';
|
|
91
99
|
successMessage = 'Status zaktualizowany. Email wysłany do klienta.';
|
|
100
|
+
statusFormSavedAt = new Date();
|
|
101
|
+
statusFormStatus = 'saved';
|
|
92
102
|
} catch (err) {
|
|
93
103
|
errorMessage = err instanceof Error ? err.message : 'Nie udało się zmienić statusu';
|
|
104
|
+
statusFormStatus = 'error';
|
|
94
105
|
} finally {
|
|
95
106
|
saving = false;
|
|
96
107
|
}
|
|
@@ -131,8 +142,13 @@
|
|
|
131
142
|
}
|
|
132
143
|
}
|
|
133
144
|
|
|
134
|
-
|
|
135
|
-
|
|
145
|
+
let cancelShipmentOpen = $state(false);
|
|
146
|
+
|
|
147
|
+
function handleCancelShipment() {
|
|
148
|
+
cancelShipmentOpen = true;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async function performCancelShipment() {
|
|
136
152
|
shipping = true;
|
|
137
153
|
errorMessage = null;
|
|
138
154
|
successMessage = null;
|
|
@@ -168,53 +184,57 @@
|
|
|
168
184
|
label: string;
|
|
169
185
|
}> | null}
|
|
170
186
|
|
|
171
|
-
<div class="space-y-6 p-
|
|
172
|
-
<
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
<
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
</div>
|
|
182
|
-
<span
|
|
183
|
-
class="inline-flex rounded-full px-3 py-1 text-xs font-semibold {STATUS_STYLES[
|
|
184
|
-
order.status
|
|
185
|
-
] ?? 'bg-gray-100 text-gray-800'}"
|
|
186
|
-
>
|
|
187
|
-
{statusLabel(order.status)}
|
|
188
|
-
</span>
|
|
189
|
-
</div>
|
|
187
|
+
<div class="space-y-6 p-3 sm:p-5 md:p-7">
|
|
188
|
+
<PageHeader
|
|
189
|
+
title={`Zamówienie ${order.number}`}
|
|
190
|
+
description={formatDateTime(order.createdAt, interfaceLanguage.current)}
|
|
191
|
+
>
|
|
192
|
+
{#snippet secondaryActions()}
|
|
193
|
+
<StatusBadge variant="order" status={order.status as OrderStatusT} />
|
|
194
|
+
{/snippet}
|
|
195
|
+
</PageHeader>
|
|
196
|
+
<a href="/admin/shop/orders" class="text-primary text-sm hover:underline">← Lista zamówień</a>
|
|
190
197
|
|
|
191
198
|
{#if errorMessage}
|
|
192
|
-
<div
|
|
199
|
+
<div
|
|
200
|
+
class="bg-destructive-bg text-destructive rounded-lg p-3 text-sm"
|
|
201
|
+
role="alert"
|
|
202
|
+
aria-live="assertive"
|
|
203
|
+
>
|
|
204
|
+
{errorMessage}
|
|
205
|
+
</div>
|
|
193
206
|
{/if}
|
|
194
207
|
{#if successMessage}
|
|
195
|
-
<div
|
|
208
|
+
<div
|
|
209
|
+
class="bg-success-bg text-success rounded-lg p-3 text-sm"
|
|
210
|
+
role="status"
|
|
211
|
+
aria-live="polite"
|
|
212
|
+
>
|
|
213
|
+
{successMessage}
|
|
214
|
+
</div>
|
|
196
215
|
{/if}
|
|
197
216
|
|
|
198
217
|
<div class="grid grid-cols-1 gap-6 lg:grid-cols-[2fr_1fr]">
|
|
199
218
|
<div class="space-y-6">
|
|
200
|
-
<section class="border-border bg-card space-y-3 rounded-xl border p-5">
|
|
219
|
+
<section class="border-border bg-card space-y-3 rounded-xl border p-3 sm:p-5">
|
|
201
220
|
<h2 class="text-base font-bold">Pozycje</h2>
|
|
202
|
-
<
|
|
221
|
+
<div class="-mx-3 overflow-x-auto sm:mx-0">
|
|
222
|
+
<table class="w-full min-w-[640px] text-sm">
|
|
203
223
|
<thead class="text-muted-foreground text-left text-xs uppercase">
|
|
204
224
|
<tr>
|
|
205
|
-
<th class="pb-2 font-semibold">Nazwa</th>
|
|
225
|
+
<th class="px-3 pb-2 font-semibold sm:px-0">Nazwa</th>
|
|
206
226
|
<th class="pb-2 font-semibold">SKU</th>
|
|
207
227
|
<th class="pb-2 text-center font-semibold">Ilość</th>
|
|
208
228
|
<th class="pb-2 text-right font-semibold">Brutto / szt.</th>
|
|
209
229
|
<th class="pb-2 text-right font-semibold">VAT</th>
|
|
210
|
-
<th class="pb-2 text-right font-semibold">Suma</th>
|
|
230
|
+
<th class="px-3 pb-2 text-right font-semibold sm:px-0">Suma</th>
|
|
211
231
|
</tr>
|
|
212
232
|
</thead>
|
|
213
233
|
<tbody>
|
|
214
234
|
{#each items as item (item.id)}
|
|
215
235
|
{@const name = (item.nameSnapshot as { product?: string; variant?: string }) ?? {}}
|
|
216
236
|
<tr class="border-border border-t">
|
|
217
|
-
<td class="py-2">
|
|
237
|
+
<td class="px-3 py-2 sm:px-0">
|
|
218
238
|
<div class="font-medium">{name.product ?? '—'}</div>
|
|
219
239
|
{#if name.variant}
|
|
220
240
|
<div class="text-muted-foreground text-xs">{name.variant}</div>
|
|
@@ -225,11 +245,11 @@
|
|
|
225
245
|
>
|
|
226
246
|
<td class="py-2 text-center">{item.qty}</td>
|
|
227
247
|
<td class="py-2 text-right tabular-nums"
|
|
228
|
-
>{
|
|
248
|
+
>{formatCentsPrice(item.priceGrossSnapshot, order.currency)}</td
|
|
229
249
|
>
|
|
230
250
|
<td class="text-muted-foreground py-2 text-right">{item.vatRate}%</td>
|
|
231
|
-
<td class="py-2 text-right font-semibold tabular-nums">
|
|
232
|
-
{
|
|
251
|
+
<td class="px-3 py-2 text-right font-semibold tabular-nums sm:px-0">
|
|
252
|
+
{formatCentsPrice(item.priceGrossSnapshot * item.qty, order.currency)}
|
|
233
253
|
</td>
|
|
234
254
|
</tr>
|
|
235
255
|
{/each}
|
|
@@ -238,46 +258,43 @@
|
|
|
238
258
|
<tr>
|
|
239
259
|
<td colspan="5" class="pt-3 text-right text-sm">Wysyłka (brutto):</td>
|
|
240
260
|
<td class="pt-3 text-right tabular-nums"
|
|
241
|
-
>{
|
|
261
|
+
>{formatCentsPrice(order.shippingGross, order.currency)}</td
|
|
242
262
|
>
|
|
243
263
|
</tr>
|
|
244
264
|
<tr>
|
|
245
265
|
<td colspan="5" class="text-right text-sm">Razem netto:</td>
|
|
246
266
|
<td class="text-muted-foreground text-right tabular-nums">
|
|
247
|
-
{
|
|
267
|
+
{formatCentsPrice(order.totalNet, order.currency)}
|
|
248
268
|
</td>
|
|
249
269
|
</tr>
|
|
250
270
|
<tr>
|
|
251
271
|
<td colspan="5" class="text-right text-sm">VAT:</td>
|
|
252
272
|
<td class="text-muted-foreground text-right tabular-nums">
|
|
253
|
-
{
|
|
273
|
+
{formatCentsPrice(order.vatAmount, order.currency)}
|
|
254
274
|
</td>
|
|
255
275
|
</tr>
|
|
256
276
|
<tr>
|
|
257
|
-
<td colspan="5" class="pb-1 text-right text-base font-bold">Razem brutto:</td>
|
|
258
|
-
<td class="text-primary pb-1 text-right text-base font-extrabold tabular-nums">
|
|
259
|
-
{
|
|
277
|
+
<td colspan="5" class="px-3 pb-1 text-right text-base font-bold sm:px-0">Razem brutto:</td>
|
|
278
|
+
<td class="text-primary px-3 pb-1 text-right text-base font-extrabold tabular-nums sm:px-0">
|
|
279
|
+
{formatCentsPrice(order.totalGross, order.currency)}
|
|
260
280
|
</td>
|
|
261
281
|
</tr>
|
|
262
282
|
</tfoot>
|
|
263
283
|
</table>
|
|
284
|
+
</div>
|
|
264
285
|
</section>
|
|
265
286
|
|
|
266
|
-
<section class="border-border bg-card space-y-3 rounded-xl border p-5">
|
|
287
|
+
<section class="border-border bg-card space-y-3 rounded-xl border p-3 sm:p-5">
|
|
267
288
|
<h2 class="text-base font-bold">Historia statusów</h2>
|
|
268
289
|
<ol class="space-y-2 text-sm">
|
|
269
290
|
{#each history as h (h.id)}
|
|
270
291
|
<li class="flex items-start gap-3">
|
|
271
|
-
<
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
] ?? 'bg-gray-100 text-gray-800'}"
|
|
275
|
-
>
|
|
276
|
-
{statusLabel(h.status)}
|
|
277
|
-
</span>
|
|
292
|
+
<div class="mt-0.5">
|
|
293
|
+
<StatusBadge variant="order" status={h.status as OrderStatusT} />
|
|
294
|
+
</div>
|
|
278
295
|
<div class="flex-1">
|
|
279
296
|
<div class="text-muted-foreground text-xs">
|
|
280
|
-
{
|
|
297
|
+
{formatDateTime(h.changedAt, interfaceLanguage.current)} · {h.changedBy ?? '—'}
|
|
281
298
|
</div>
|
|
282
299
|
{#if h.note}
|
|
283
300
|
<div class="text-sm">{h.note}</div>
|
|
@@ -300,8 +317,12 @@
|
|
|
300
317
|
</div>
|
|
301
318
|
|
|
302
319
|
<div class="space-y-6">
|
|
303
|
-
<section class="border-border bg-card space-y-3 rounded-xl border p-5">
|
|
304
|
-
<
|
|
320
|
+
<section class="border-border bg-card space-y-3 rounded-xl border p-3 sm:p-5">
|
|
321
|
+
<div class="flex items-center justify-between">
|
|
322
|
+
<h2 class="text-base font-bold">Zmień status</h2>
|
|
323
|
+
<SaveIndicator status={statusFormStatus} lastSavedAt={statusFormSavedAt} />
|
|
324
|
+
</div>
|
|
325
|
+
<FormErrorSummary errors={statusFormSummaryErrors} />
|
|
305
326
|
<label class="block">
|
|
306
327
|
<span class="text-muted-foreground mb-1 block text-xs font-semibold">Nowy status</span>
|
|
307
328
|
<select
|
|
@@ -326,13 +347,13 @@
|
|
|
326
347
|
></textarea>
|
|
327
348
|
</label>
|
|
328
349
|
<Button onclick={changeStatus} disabled={saving || !newStatus} class="w-full">
|
|
329
|
-
{saving ? '
|
|
350
|
+
{saving ? 'Zapisuję…' : 'Zapisz status i powiadom klienta'}
|
|
330
351
|
</Button>
|
|
331
352
|
</section>
|
|
332
353
|
|
|
333
354
|
{#if refundsQuery.ready && refundsQuery.current}
|
|
334
355
|
{@const r = refundsQuery.current}
|
|
335
|
-
<section class="border-border bg-card space-y-3 rounded-xl border p-
|
|
356
|
+
<section class="border-border bg-card space-y-3 rounded-xl border p-3 text-sm sm:p-5">
|
|
336
357
|
<h2 class="text-base font-bold">Zwroty</h2>
|
|
337
358
|
{#if r.refunds.length > 0}
|
|
338
359
|
<ul class="space-y-2">
|
|
@@ -340,10 +361,10 @@
|
|
|
340
361
|
<li class="border-border flex items-start justify-between gap-2 border-t pt-2">
|
|
341
362
|
<div>
|
|
342
363
|
<div class="font-medium tabular-nums">
|
|
343
|
-
{
|
|
364
|
+
{formatCentsPrice(refund.amount, r.currency)}
|
|
344
365
|
</div>
|
|
345
366
|
<div class="text-muted-foreground text-xs">
|
|
346
|
-
{
|
|
367
|
+
{formatDateTime(refund.createdAt, interfaceLanguage.current)} · {refund.status}
|
|
347
368
|
</div>
|
|
348
369
|
{#if refund.reason}
|
|
349
370
|
<div class="text-muted-foreground text-xs">{refund.reason}</div>
|
|
@@ -354,10 +375,10 @@
|
|
|
354
375
|
</ul>
|
|
355
376
|
<div class="border-border border-t pt-2 text-xs">
|
|
356
377
|
<div class="text-muted-foreground">
|
|
357
|
-
Zwrócono: <strong>{
|
|
378
|
+
Zwrócono: <strong>{formatCentsPrice(r.refundedAmount, r.currency)}</strong>
|
|
358
379
|
</div>
|
|
359
380
|
<div class="text-muted-foreground">
|
|
360
|
-
Pozostało: <strong>{
|
|
381
|
+
Pozostało: <strong>{formatCentsPrice(r.remainingRefundable, r.currency)}</strong>
|
|
361
382
|
</div>
|
|
362
383
|
</div>
|
|
363
384
|
{:else}
|
|
@@ -376,7 +397,7 @@
|
|
|
376
397
|
{/if}
|
|
377
398
|
|
|
378
399
|
{#if order.carrierType && order.carrierType !== 'none'}
|
|
379
|
-
<section class="border-border bg-card space-y-3 rounded-xl border p-
|
|
400
|
+
<section class="border-border bg-card space-y-3 rounded-xl border p-3 text-sm sm:p-5">
|
|
380
401
|
<h2 class="text-base font-bold">
|
|
381
402
|
Przesyłka <span class="text-muted-foreground font-mono text-xs"
|
|
382
403
|
>{order.carrierType}</span
|
|
@@ -430,7 +451,7 @@
|
|
|
430
451
|
</section>
|
|
431
452
|
{/if}
|
|
432
453
|
|
|
433
|
-
<section class="border-border bg-card space-y-2 rounded-xl border p-
|
|
454
|
+
<section class="border-border bg-card space-y-2 rounded-xl border p-3 text-sm sm:p-5">
|
|
434
455
|
<h2 class="text-base font-bold">Klient</h2>
|
|
435
456
|
<div>
|
|
436
457
|
<div class="font-medium">{order.customerName ?? '—'}</div>
|
|
@@ -471,7 +492,7 @@
|
|
|
471
492
|
{/if}
|
|
472
493
|
|
|
473
494
|
{#if consents && consents.length > 0}
|
|
474
|
-
<section class="border-border bg-card space-y-2 rounded-xl border p-
|
|
495
|
+
<section class="border-border bg-card space-y-2 rounded-xl border p-3 text-sm sm:p-5">
|
|
475
496
|
<h2 class="text-base font-bold">Zgody</h2>
|
|
476
497
|
{#each consents as c (c.id)}
|
|
477
498
|
<div class="flex items-start gap-2">
|
|
@@ -511,3 +532,11 @@
|
|
|
511
532
|
/>
|
|
512
533
|
{/if}
|
|
513
534
|
{/if}
|
|
535
|
+
|
|
536
|
+
<ConfirmationDialog
|
|
537
|
+
bind:open={cancelShipmentOpen}
|
|
538
|
+
title="Anulować przesyłkę?"
|
|
539
|
+
description="Etykieta wysyłkowa zostanie unieważniona w ShipX. Tej akcji nie cofniesz."
|
|
540
|
+
loading={shipping}
|
|
541
|
+
onConfirm={performCancelShipment}
|
|
542
|
+
/>
|