includio-cms 0.1.4 → 0.5.1
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/CHANGELOG.md +83 -0
- package/ROADMAP.md +26 -13
- package/dist/admin/api/accept-invite.js +1 -5
- package/dist/admin/api/invite.js +7 -16
- package/dist/admin/client/account/account-page.svelte +20 -50
- package/dist/admin/client/account/lang.d.ts +15 -23
- package/dist/admin/client/account/lang.js +51 -67
- package/dist/admin/client/account/preferences-section.svelte +26 -84
- package/dist/admin/client/account/profile-section.svelte +60 -40
- package/dist/admin/client/account/schema.d.ts +11 -3
- package/dist/admin/client/account/schema.js +25 -16
- package/dist/admin/client/account/security-section.svelte +139 -105
- package/dist/admin/client/account/sessions-section.svelte +35 -34
- package/dist/admin/client/admin/admin-after-login-layout-content.svelte +3 -5
- package/dist/admin/client/admin/admin-layout.svelte +3 -2
- package/dist/admin/client/admin/admin-preloader.svelte +36 -0
- package/dist/admin/client/admin/admin-preloader.svelte.d.ts +18 -0
- package/dist/admin/client/admin/dashboard-page.svelte +35 -67
- package/dist/admin/client/collection/a11y-score-cell.svelte +45 -0
- package/dist/admin/client/collection/a11y-score-cell.svelte.d.ts +6 -0
- package/dist/admin/client/collection/bulk-actions-bar.svelte +100 -0
- package/dist/admin/client/collection/bulk-actions-bar.svelte.d.ts +10 -0
- package/dist/admin/client/collection/collection-entries.svelte +277 -258
- package/dist/admin/client/collection/collection-view.svelte.d.ts +4 -3
- package/dist/admin/client/collection/collection-view.svelte.js +9 -5
- package/dist/admin/client/collection/collection.svelte +22 -12
- package/dist/admin/client/collection/data-table.svelte +50 -39
- package/dist/admin/client/collection/data-table.svelte.d.ts +1 -0
- package/dist/admin/client/collection/date-cell.svelte +7 -5
- package/dist/admin/client/collection/date-cell.svelte.d.ts +1 -1
- package/dist/admin/client/collection/empty-state.svelte +28 -0
- package/dist/admin/client/collection/empty-state.svelte.d.ts +9 -0
- package/dist/admin/client/collection/entry-link.svelte +10 -4
- package/dist/admin/client/collection/entry-link.svelte.d.ts +1 -0
- package/dist/admin/client/collection/grid-view.svelte +21 -23
- package/dist/admin/client/collection/grid-view.svelte.d.ts +1 -2
- package/dist/admin/client/collection/row-actions.svelte +69 -0
- package/dist/admin/client/collection/row-actions.svelte.d.ts +10 -0
- package/dist/admin/client/collection/status-badge.svelte +7 -8
- package/dist/admin/client/collection/table-pagination.svelte +122 -79
- package/dist/admin/client/collection/table-pagination.svelte.d.ts +1 -0
- package/dist/admin/client/collection/table-toolbar.svelte +108 -88
- package/dist/admin/client/collection/table-toolbar.svelte.d.ts +8 -9
- package/dist/admin/client/entry/entry-form.svelte +109 -1
- package/dist/admin/client/entry/entry-header.svelte +143 -37
- package/dist/admin/client/entry/entry-header.svelte.d.ts +8 -0
- package/dist/admin/client/entry/entry.svelte +272 -61
- package/dist/admin/client/entry/header/a11y-validator.d.ts +47 -0
- package/dist/admin/client/entry/header/a11y-validator.js +352 -0
- package/dist/admin/client/entry/header/publish-panel.svelte +531 -129
- package/dist/admin/client/entry/header/publish-panel.svelte.d.ts +4 -0
- package/dist/admin/client/entry/header/save-indicator.svelte +33 -23
- package/dist/admin/client/entry/header/schedule-popover.svelte +1 -1
- package/dist/admin/client/entry/header/status-badge.svelte +25 -118
- package/dist/admin/client/entry/header/version-history-sheet.svelte +322 -98
- package/dist/admin/client/form/form-submission/form-submission.svelte +271 -83
- package/dist/admin/client/form/form-submission/submission-field.svelte +12 -12
- package/dist/admin/client/form/form-submissions.svelte +421 -139
- package/dist/admin/client/form/submission-link.svelte +8 -2
- package/dist/admin/client/form/submission-link.svelte.d.ts +1 -0
- package/dist/admin/client/form/submission-status-badge.svelte +18 -4
- package/dist/admin/client/form/submission-status-badge.svelte.d.ts +1 -0
- package/dist/admin/client/login/lang.d.ts +32 -0
- package/dist/admin/client/login/lang.js +66 -2
- package/dist/admin/client/login/login-form.svelte +237 -95
- package/dist/admin/client/login/login-form.svelte.d.ts +2 -17
- package/dist/admin/client/login/login-page.svelte +34 -98
- package/dist/admin/client/login/reset-password-page.svelte +235 -0
- package/dist/admin/client/login/reset-password-page.svelte.d.ts +4 -0
- package/dist/admin/client/login/schema.d.ts +15 -0
- package/dist/admin/client/login/schema.js +21 -0
- package/dist/admin/client/users/accept-invite-page.svelte +166 -37
- package/dist/admin/client/users/create-user-dialog.svelte +15 -7
- package/dist/admin/client/users/delete-user-dialog.svelte +81 -16
- package/dist/admin/client/users/delete-user-dialog.svelte.d.ts +4 -1
- package/dist/admin/client/users/edit-user-dialog.svelte +3 -0
- package/dist/admin/client/users/invite-user-dialog.svelte +16 -3
- package/dist/admin/client/users/lang.d.ts +27 -0
- package/dist/admin/client/users/lang.js +64 -10
- package/dist/admin/client/users/pending-invitations.svelte +59 -23
- package/dist/admin/client/users/users-page.svelte +471 -72
- package/dist/admin/components/accessibility/accessibility-overview.svelte +2 -7
- package/dist/admin/components/dashboard/a11y-gauge.svelte +90 -0
- package/dist/admin/components/dashboard/a11y-gauge.svelte.d.ts +18 -0
- package/dist/admin/components/dashboard/accessibility-hub.svelte +13 -12
- package/dist/admin/components/dashboard/changelog-dialog.svelte +157 -0
- package/dist/admin/components/dashboard/changelog-dialog.svelte.d.ts +6 -0
- package/dist/admin/components/dashboard/form-submissions-widget.svelte +71 -113
- package/dist/admin/components/dashboard/index.d.ts +4 -2
- package/dist/admin/components/dashboard/index.js +4 -2
- package/dist/admin/components/dashboard/orphaned-entries-notice.svelte +240 -0
- package/dist/admin/components/dashboard/orphaned-entries-notice.svelte.d.ts +13 -0
- package/dist/admin/components/dashboard/recent-activity.svelte +53 -75
- package/dist/admin/components/dashboard/recent-entries.svelte +94 -0
- package/dist/admin/components/dashboard/recent-entries.svelte.d.ts +18 -0
- package/dist/admin/components/dashboard/stat-card.svelte +2 -2
- package/dist/admin/components/dashboard/tip-of-the-day.svelte +109 -0
- package/dist/admin/components/dashboard/tip-of-the-day.svelte.d.ts +3 -0
- package/dist/admin/components/dashboard/welcome-header.svelte +45 -0
- package/dist/admin/components/dashboard/welcome-header.svelte.d.ts +3 -0
- package/dist/admin/components/fields/{array-field.svelte → blocks-field.svelte} +4 -4
- package/dist/admin/components/fields/{array-field.svelte.d.ts → blocks-field.svelte.d.ts} +5 -5
- package/dist/admin/components/fields/content-field.svelte +27 -0
- package/dist/admin/components/fields/content-field.svelte.d.ts +31 -0
- package/dist/admin/components/fields/field-renderer.svelte +9 -7
- package/dist/admin/components/fields/image-field.svelte +2 -2
- package/dist/admin/components/fields/media-field.svelte +2 -2
- package/dist/admin/components/fields/seo-field.svelte +205 -25
- package/dist/admin/components/fields/simple-array-field.svelte +289 -0
- package/dist/admin/components/fields/simple-array-field.svelte.d.ts +30 -0
- package/dist/admin/components/fields/slug-field.svelte +3 -2
- package/dist/admin/components/fields/standalone-field-renderer.svelte +148 -0
- package/dist/admin/components/fields/standalone-field-renderer.svelte.d.ts +9 -0
- package/dist/admin/components/fields/text-field-wrapper.svelte +147 -3
- package/dist/admin/components/fields/text-field-wrapper.svelte.d.ts +2 -2
- package/dist/admin/components/fields/url-field.svelte +5 -4
- package/dist/admin/components/layout/app-sidebar.svelte +27 -24
- package/dist/admin/components/layout/lang.d.ts +6 -0
- package/dist/admin/components/layout/lang.js +13 -1
- package/dist/admin/components/layout/layout-renderer.svelte +352 -0
- package/dist/admin/components/layout/layout-renderer.svelte.d.ts +14 -0
- package/dist/admin/components/layout/nav-breadcrumbs.svelte +4 -4
- package/dist/admin/components/layout/nav-collections.svelte +65 -36
- package/dist/admin/components/layout/nav-footer.svelte +38 -0
- package/dist/admin/components/layout/nav-footer.svelte.d.ts +3 -0
- package/dist/admin/components/layout/nav-forms.svelte +55 -30
- package/dist/admin/components/layout/nav-main.svelte +14 -52
- package/dist/admin/components/layout/nav-search.svelte +4 -3
- package/dist/admin/components/layout/nav-singletons.svelte +59 -17
- package/dist/admin/components/layout/nav-singletons.svelte.d.ts +17 -8
- package/dist/admin/components/layout/site-header.svelte +74 -13
- package/dist/admin/components/media/alt-input.svelte +32 -22
- package/dist/admin/components/media/bulk-action-bar.svelte +139 -150
- package/dist/admin/components/media/file/file-details.svelte +299 -217
- package/dist/admin/components/media/file/file-miniature.svelte +54 -41
- package/dist/admin/components/media/file/file-miniature.svelte.d.ts +1 -0
- package/dist/admin/components/media/file/file-preview.svelte +1 -1
- package/dist/admin/components/media/file-upload.svelte +24 -26
- package/dist/admin/components/media/files-list.svelte +112 -40
- package/dist/admin/components/media/files-list.svelte.d.ts +2 -0
- package/dist/admin/components/media/focal-point-input.svelte +122 -26
- package/dist/admin/components/media/media-library.svelte +127 -70
- package/dist/admin/components/media/media-search.svelte +6 -6
- package/dist/admin/components/media/media-sort.svelte +3 -1
- package/dist/admin/components/media/multi-file-summary.svelte +88 -68
- package/dist/admin/components/media/tag-combobox.svelte +141 -66
- package/dist/admin/components/media/tag-combobox.svelte.d.ts +1 -0
- package/dist/admin/components/media/tag-sidebar.svelte +139 -121
- package/dist/admin/components/tiptap/FigureNodeView.svelte +144 -15
- package/dist/admin/components/tiptap/InlineBlockNodeView.svelte +254 -0
- package/dist/admin/components/tiptap/InlineBlockNodeView.svelte.d.ts +4 -0
- package/dist/admin/components/tiptap/SlashCommandPopup.svelte +212 -0
- package/dist/admin/components/tiptap/SlashCommandPopup.svelte.d.ts +8 -0
- package/dist/admin/components/tiptap/content-editor.svelte +280 -0
- package/dist/admin/components/tiptap/content-editor.svelte.d.ts +9 -0
- package/dist/admin/components/tiptap/editor-toolbar.svelte +230 -0
- package/dist/admin/components/tiptap/editor-toolbar.svelte.d.ts +16 -0
- package/dist/admin/components/tiptap/heading-a11y-plugin.d.ts +2 -0
- package/dist/admin/components/tiptap/heading-a11y-plugin.js +67 -0
- package/dist/admin/components/tiptap/image-dialog.svelte +172 -11
- package/dist/admin/components/tiptap/inline-block-node.d.ts +19 -0
- package/dist/admin/components/tiptap/inline-block-node.js +98 -0
- package/dist/admin/components/tiptap/link-dialog.svelte +9 -4
- package/dist/admin/components/tiptap/slash-command.d.ts +17 -0
- package/dist/admin/components/tiptap/slash-command.js +181 -0
- package/dist/admin/components/tiptap/structured-content-utils.d.ts +21 -0
- package/dist/admin/components/tiptap/structured-content-utils.js +150 -0
- package/dist/admin/components/tiptap/tiptap-editor.svelte +18 -190
- package/dist/admin/email/invite-template.d.ts +8 -0
- package/dist/admin/email/invite-template.js +99 -0
- package/dist/admin/email/reset-password-template.d.ts +7 -0
- package/dist/admin/email/reset-password-template.js +96 -0
- package/dist/admin/remote/ai.remote.d.ts +1 -0
- package/dist/admin/remote/ai.remote.js +4 -1
- package/dist/admin/remote/entry.remote.d.ts +9 -0
- package/dist/admin/remote/entry.remote.js +58 -8
- package/dist/admin/remote/preview.remote.js +2 -1
- package/dist/admin/shared/password-schema.d.ts +5 -0
- package/dist/admin/shared/password-schema.js +10 -0
- package/dist/admin/state/content-language.svelte.d.ts +3 -0
- package/dist/admin/state/content-language.svelte.js +8 -0
- package/dist/admin/styles/admin.css +1530 -151
- package/dist/admin/utils/formatDate.d.ts +1 -0
- package/dist/admin/utils/formatDate.js +8 -0
- package/dist/admin/utils/roleLabel.d.ts +2 -0
- package/dist/admin/utils/roleLabel.js +13 -0
- package/dist/admin/utils/translationStatus.d.ts +17 -0
- package/dist/admin/utils/translationStatus.js +134 -0
- package/dist/ai-claude/index.d.ts +2 -0
- package/dist/ai-claude/index.js +56 -0
- package/dist/cms/runtime/api.d.ts +6 -1
- package/dist/cms/runtime/api.js +3 -0
- package/dist/cms/runtime/schemas.d.ts +9 -1
- package/dist/cms/runtime/schemas.js +8 -0
- package/dist/cms/runtime/types.d.ts +82 -10
- package/dist/cms/runtime/types.js +4 -0
- package/dist/components/ui/accordion/accordion.stories.svelte +39 -0
- package/dist/components/ui/accordion/accordion.stories.svelte.d.ts +27 -0
- package/dist/components/ui/alert/alert.stories.svelte +53 -0
- package/dist/components/ui/alert/alert.stories.svelte.d.ts +27 -0
- package/dist/components/ui/alert/alert.svelte +5 -0
- package/dist/components/ui/alert/alert.svelte.d.ts +9 -0
- package/dist/components/ui/avatar/avatar.stories.svelte +16 -0
- package/dist/components/ui/avatar/avatar.stories.svelte.d.ts +27 -0
- package/dist/components/ui/badge/badge.stories.svelte +33 -0
- package/dist/components/ui/badge/badge.stories.svelte.d.ts +27 -0
- package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte +33 -0
- package/dist/components/ui/breadcrumb/breadcrumb.stories.svelte.d.ts +27 -0
- package/dist/components/ui/button/button.stories.svelte +43 -0
- package/dist/components/ui/button/button.stories.svelte.d.ts +27 -0
- package/dist/components/ui/button/button.svelte +1 -2
- package/dist/components/ui/button/button.svelte.d.ts +0 -3
- package/dist/components/ui/button-group/button-group-separator.svelte.d.ts +1 -1
- package/dist/components/ui/card/card.stories.svelte +42 -0
- package/dist/components/ui/card/card.stories.svelte.d.ts +27 -0
- package/dist/components/ui/command/command.stories.svelte +51 -0
- package/dist/components/ui/command/command.stories.svelte.d.ts +27 -0
- package/dist/components/ui/dialog/dialog.stories.svelte +29 -0
- package/dist/components/ui/dialog/dialog.stories.svelte.d.ts +27 -0
- package/dist/components/ui/field/field-label.svelte.d.ts +1 -1
- package/dist/components/ui/field/field.stories.svelte +21 -0
- package/dist/components/ui/field/field.stories.svelte.d.ts +27 -0
- package/dist/components/ui/input/input.stories.svelte +40 -0
- package/dist/components/ui/input/input.stories.svelte.d.ts +27 -0
- package/dist/components/ui/input/input.svelte +2 -4
- package/dist/components/ui/item/item-separator.svelte.d.ts +1 -1
- package/dist/components/ui/label/label.stories.svelte +20 -0
- package/dist/components/ui/label/label.stories.svelte.d.ts +27 -0
- package/dist/components/ui/popover/popover.stories.svelte +29 -0
- package/dist/components/ui/popover/popover.stories.svelte.d.ts +27 -0
- package/dist/components/ui/select/select-group-heading.svelte.d.ts +1 -1
- package/dist/components/ui/select/select.stories.svelte +23 -0
- package/dist/components/ui/select/select.stories.svelte.d.ts +27 -0
- package/dist/components/ui/separator/separator.stories.svelte +24 -0
- package/dist/components/ui/separator/separator.stories.svelte.d.ts +27 -0
- package/dist/components/ui/sheet/sheet.stories.svelte +29 -0
- package/dist/components/ui/sheet/sheet.stories.svelte.d.ts +27 -0
- package/dist/components/ui/sidebar/sidebar-group.svelte +3 -3
- package/dist/components/ui/sidebar/sidebar-group.svelte.d.ts +2 -2
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte +28 -30
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +7 -7
- package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +1 -1
- package/dist/components/ui/sidebar/sidebar-trigger.svelte +4 -4
- package/dist/components/ui/sonner/sonner.stories.svelte +22 -0
- package/dist/components/ui/sonner/sonner.stories.svelte.d.ts +26 -0
- package/dist/components/ui/sonner/sonner.svelte +8 -2
- package/dist/components/ui/sonner/toast-demo.svelte +29 -0
- package/dist/components/ui/sonner/toast-demo.svelte.d.ts +6 -0
- package/dist/components/ui/textarea/textarea.stories.svelte +22 -0
- package/dist/components/ui/textarea/textarea.stories.svelte.d.ts +27 -0
- package/dist/components/ui/textarea/textarea.svelte +0 -2
- package/dist/components/ui/toggle/toggle.stories.svelte +22 -0
- package/dist/components/ui/toggle/toggle.stories.svelte.d.ts +27 -0
- package/dist/components/ui/toggle-group/toggle-group.stories.svelte +17 -0
- package/dist/components/ui/toggle-group/toggle-group.stories.svelte.d.ts +27 -0
- package/dist/components/ui/tooltip/tooltip.stories.svelte +26 -0
- package/dist/components/ui/tooltip/tooltip.stories.svelte.d.ts +27 -0
- package/dist/core/fields/fieldSchemaToTs.d.ts +1 -0
- package/dist/core/fields/fieldSchemaToTs.js +133 -1
- package/dist/core/fields/layoutUtils.d.ts +17 -0
- package/dist/core/fields/layoutUtils.js +149 -0
- package/dist/core/fields/structuredToHtml.d.ts +9 -0
- package/dist/core/fields/structuredToHtml.js +161 -0
- package/dist/core/server/entries/operations/create.js +2 -1
- package/dist/core/server/entries/operations/get.js +10 -7
- package/dist/core/server/entries/operations/update.d.ts +3 -0
- package/dist/core/server/entries/operations/update.js +30 -2
- package/dist/core/server/fields/queryStructuredContent.d.ts +15 -0
- package/dist/core/server/fields/queryStructuredContent.js +65 -0
- package/dist/core/server/fields/resolveImageFields.js +51 -2
- package/dist/core/server/fields/resolveRelationFields.js +2 -2
- package/dist/core/server/fields/resolveRichtextLinks.js +80 -13
- package/dist/core/server/fields/resolveUrlFields.js +57 -6
- package/dist/core/server/fields/slugResolver.d.ts +10 -0
- package/dist/core/server/fields/slugResolver.js +34 -0
- package/dist/core/server/generator/fields.js +15 -4
- package/dist/core/server/generator/generator.js +3 -2
- package/dist/db-postgres/index.js +10 -6
- package/dist/files-local/index.js +126 -64
- package/dist/server/auth.d.ts +5 -0
- package/dist/server/auth.js +12 -1
- package/dist/sveltekit/components/structured-content.svelte +204 -0
- package/dist/sveltekit/components/structured-content.svelte.d.ts +21 -0
- package/dist/sveltekit/config.d.ts +13 -3
- package/dist/sveltekit/index.d.ts +3 -0
- package/dist/sveltekit/index.js +3 -0
- package/dist/sveltekit/server/handle.js +1 -0
- package/dist/types/config.d.ts +3 -0
- package/dist/types/entries.d.ts +3 -0
- package/dist/types/fields.d.ts +19 -2
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/layout.d.ts +54 -0
- package/dist/types/layout.js +6 -0
- package/dist/types/structured-content.d.ts +63 -0
- package/dist/types/structured-content.js +1 -0
- package/dist/updates/0.1.5/index.d.ts +2 -0
- package/dist/updates/0.1.5/index.js +18 -0
- package/dist/updates/0.2.0/index.d.ts +2 -0
- package/dist/updates/0.2.0/index.js +11 -0
- package/dist/updates/0.2.2/index.d.ts +2 -0
- package/dist/updates/0.2.2/index.js +13 -0
- package/dist/updates/0.5.0/index.d.ts +2 -0
- package/dist/updates/0.5.0/index.js +14 -0
- package/dist/updates/0.5.1/index.d.ts +2 -0
- package/dist/updates/0.5.1/index.js +17 -0
- package/dist/updates/index.js +6 -1
- package/package.json +16 -9
- package/dist/admin/components/dashboard/updates-banner.svelte +0 -170
- package/dist/admin/components/dashboard/updates-banner.svelte.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,89 @@
|
|
|
3
3
|
All notable changes to includio-cms are documented here.
|
|
4
4
|
Generated from `src/lib/updates/` — do not edit manually.
|
|
5
5
|
|
|
6
|
+
## 0.5.1 — 2026-02-24
|
|
7
|
+
|
|
8
|
+
Restore archived entries, dashboard redesign, translation fixes
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Restore archived entries from collection list (single + bulk)
|
|
12
|
+
- Archived entry page: read-only with restore banner
|
|
13
|
+
- Dashboard: changelog modal, orphaned entries redesign, grid layout
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- Opening archived entry no longer returns 500 (getRawEntry now supports includeArchived)
|
|
17
|
+
- Translation flow: reactive status, switcher UX, dynamic ref, copyFrom crash, panel scroll
|
|
18
|
+
- False "Niezapisane zmiany" alert on entry load
|
|
19
|
+
- Hide translation dots for non-required empty fields
|
|
20
|
+
|
|
21
|
+
## 0.5.0 — 2026-02-22
|
|
22
|
+
|
|
23
|
+
Frontend rendering for structured content
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- `StructuredContent` Svelte component for rendering structured content on frontend
|
|
27
|
+
- `structuredToHtml()` — convert structured content to HTML (RSS, email)
|
|
28
|
+
- Query helpers: `extractBlocks()`, `extractInlineBlocks()`, `extractText()`, `extractMediaRefs()`
|
|
29
|
+
- Media resolution in population pipeline for `content` field — figure/video nodes enriched with `_media`
|
|
30
|
+
|
|
31
|
+
### Migration
|
|
32
|
+
|
|
33
|
+
```sql
|
|
34
|
+
No migration needed. Import `StructuredContent` from `includio/sveltekit` to render content fields.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 0.2.2 — 2026-02-21
|
|
38
|
+
|
|
39
|
+
Structured Content field (TipTap JSON)
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
- New `content` field type — stores TipTap JSON instead of HTML
|
|
43
|
+
- Extracted shared editor toolbar component
|
|
44
|
+
- Content field link resolution in resolve pipeline
|
|
45
|
+
|
|
46
|
+
### Migration
|
|
47
|
+
|
|
48
|
+
```sql
|
|
49
|
+
No migration needed. Add type:"content" fields to collection/single configs. Existing richtext fields unchanged.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 0.2.0 — 2026-02-21
|
|
53
|
+
|
|
54
|
+
Array→Blocks rename, new simple array field
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- Simple array field for flat lists (text, number, url)
|
|
58
|
+
|
|
59
|
+
### Breaking
|
|
60
|
+
- type:"array" with objects renamed to type:"blocks". Update collection/single configs.
|
|
61
|
+
|
|
62
|
+
### Migration
|
|
63
|
+
|
|
64
|
+
```sql
|
|
65
|
+
Config-only: rename type:"array" to type:"blocks" in field definitions. Stored data unchanged.
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 0.1.5 — 2026-02-21
|
|
69
|
+
|
|
70
|
+
Simplified entry versioning
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- Auto-save now updates draft in-place instead of creating new versions
|
|
74
|
+
- Ctrl/Cmd+S shortcut for immediate save
|
|
75
|
+
- Simplified status badge — no version numbers, green dot for published
|
|
76
|
+
- Version history shows only meaningful changes with semantic grouping
|
|
77
|
+
- Cleaning migration removes duplicate versions with identical data
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
- Auto-save no longer creates dozens of empty versions
|
|
81
|
+
- Pruning no longer deletes important versions to make room for empty ones
|
|
82
|
+
|
|
83
|
+
### Migration
|
|
84
|
+
|
|
85
|
+
```sql
|
|
86
|
+
Removes duplicate entry versions where data is identical to the previous version. Preserves published, scheduled, and latest draft versions.
|
|
87
|
+
```
|
|
88
|
+
|
|
6
89
|
## 0.1.4 — 2026-02-19
|
|
7
90
|
|
|
8
91
|
Build & reactivity fixes
|
package/ROADMAP.md
CHANGED
|
@@ -53,34 +53,45 @@
|
|
|
53
53
|
- [x] `[fix]` `[P0]` Prepack: remove dist/paraglide/.gitignore before publint (publish validation) <!-- files: package.json -->
|
|
54
54
|
- [x] `[fix]` `[P1]` Collection entries: {#key} wrapper on query blocks to force re-fetch on param change <!-- files: src/lib/admin/client/collection/collection-entries.svelte -->
|
|
55
55
|
|
|
56
|
-
## 0.2.0 —
|
|
56
|
+
## 0.2.1–0.5.0 — Hybrid Editor System
|
|
57
|
+
|
|
58
|
+
> Szczegóły w **[ROADMAP-EDITOR.md](./ROADMAP-EDITOR.md)**
|
|
59
|
+
|
|
60
|
+
- **0.2.1** — array→blocks rename + simple array `[breaking]`
|
|
61
|
+
- **0.2.2** — Structured Content field (TipTap JSON output)
|
|
62
|
+
- **0.3.0** — Bard-style inline blocks
|
|
63
|
+
- **0.4.0** — Zone system (layout orchestration)
|
|
64
|
+
- **0.4.1** — Accessibility layer (ATAG Part B)
|
|
65
|
+
- **0.5.0** — Frontend rendering
|
|
66
|
+
|
|
67
|
+
## 0.5.1 — Patches & dashboard
|
|
68
|
+
|
|
69
|
+
- [x] `[feature]` `[P1]` Restore archived entries — banner, read-only mode, list actions
|
|
70
|
+
- [x] `[feature]` `[P2]` Dashboard: changelog modal, orphaned entries redesign, grid layout
|
|
71
|
+
- [x] `[fix]` `[P1]` Translation flow — reactive status, switcher UX, dynamic ref, copyFrom crash, panel scroll
|
|
72
|
+
- [x] `[fix]` `[P1]` False "Niezapisane zmiany" on entry load
|
|
73
|
+
- [x] `[fix]` `[P2]` Hide translation dots for non-required empty fields
|
|
74
|
+
|
|
75
|
+
## 0.6.0 — Plugin system _(deferred from 0.2.0)_
|
|
57
76
|
|
|
58
77
|
- [ ] `[feature]` `[P0]` Wire plugin hooks into CRUD operations (before/afterCreate, Update, Delete) <!-- files: src/lib/types/plugins.ts, src/lib/core/server/entries/operations/ -->
|
|
59
78
|
- [ ] `[feature]` `[P0]` Plugin registration API — public surface for external plugins
|
|
60
79
|
- [ ] `[chore]` `[P1]` Plugin system documentation
|
|
61
80
|
|
|
62
|
-
## 0.
|
|
63
|
-
|
|
64
|
-
- [ ] `[feature]` `[P1]` Server-side pagination API (formalize 0.1.0 fix)
|
|
65
|
-
- [ ] `[feature]` `[P1]` Improved type generation <!-- files: src/lib/core/server/generator/ -->
|
|
66
|
-
- [ ] `[feature]` `[P1]` Proper filtering API (SQL-level, not JS post-query)
|
|
67
|
-
- [ ] `[feature]` `[breaking]` `[P1]` Simple array field — `type: 'array'` with `of: 'text' | 'number' | ...` for flat lists (tags, categories) <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/core/fields/fieldSchemaToTs.ts -->
|
|
68
|
-
- [ ] `[feature]` `[breaking]` `[P1]` Rename array → blocks — current array becomes `type: 'blocks'`, keeps `of: ObjectField[]` and accordion/DnD UI <!-- files: src/lib/types/fields.ts, src/lib/admin/components/fields/array-field.svelte, src/lib/admin/components/fields/field-renderer.svelte, src/lib/core/server/fields/resolve*.ts -->
|
|
69
|
-
|
|
70
|
-
## 0.3.0 — Admin experience
|
|
81
|
+
## 0.6.1 — Admin experience
|
|
71
82
|
|
|
72
83
|
- [ ] `[feature]` `[P1]` Admin overlay — built-in admin bar on site (quick edit, preview, audit)
|
|
73
84
|
- [ ] `[feature]` `[P1]` Media gallery virtualization/pagination <!-- files: src/lib/admin/components/media/files-list.svelte -->
|
|
74
85
|
- [ ] `[feature]` `[P2]` Image styles UI — preview generated variants in editor
|
|
75
86
|
|
|
76
|
-
## 0.
|
|
87
|
+
## 0.7.0 — SEO module
|
|
77
88
|
|
|
78
89
|
- [ ] `[feature]` `[P1]` SERP preview + character limits for title/description <!-- files: src/lib/admin/components/fields/seo-field.svelte -->
|
|
79
90
|
- [ ] `[feature]` `[P1]` Global SEO settings
|
|
80
91
|
- [ ] `[feature]` `[P1]` Dedicated frontend SEO components <!-- files: src/lib/sveltekit/components/seo.svelte -->
|
|
81
92
|
- [ ] `[feature]` `[P2]` Sitemap generation
|
|
82
93
|
|
|
83
|
-
## 0.
|
|
94
|
+
## 0.8.0 — WCAG/ATAG compliance
|
|
84
95
|
|
|
85
96
|
- [ ] `[chore]` `[P0]` Full WCAG/ATAG audit
|
|
86
97
|
- [ ] `[feature]` `[P0]` Accessibility rework based on audit findings
|
|
@@ -96,8 +107,10 @@
|
|
|
96
107
|
|
|
97
108
|
## Backlog
|
|
98
109
|
|
|
110
|
+
- [ ] `[feature]` `[P1]` Server-side pagination API (formalize 0.1.0 fix)
|
|
111
|
+
- [ ] `[feature]` `[P1]` Improved type generation <!-- files: src/lib/core/server/generator/ -->
|
|
112
|
+
- [ ] `[feature]` `[P1]` Proper filtering API (SQL-level, not JS post-query)
|
|
99
113
|
- [ ] `[feature]` `[P1]` Ban/unban UI — reason + expiry, `banUser`/`unbanUser` <!-- files: src/lib/admin/client/users/ban-user-dialog.svelte -->
|
|
100
114
|
- [ ] `[feature]` `[P1]` Impersonation UI — impersonate/stop bar <!-- files: src/lib/admin/client/users/impersonation-bar.svelte -->
|
|
101
|
-
- [ ] `[feature]` `[P2]` Alternative richtext editor — Word-like mode, single richtext field instead of blocks
|
|
102
115
|
- [ ] `[chore]` `[P2]` Caching/performance layer (scope TBD)
|
|
103
116
|
- [ ] `[feature]` `[P2]` API/CLI for configuration (setup DX for less technical users)
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { getInvitationByToken, markInvitationUsed } from '../remote/invite.js';
|
|
2
|
-
import {
|
|
2
|
+
import { auth } from '../../server/auth.js';
|
|
3
3
|
import { json } from '@sveltejs/kit';
|
|
4
4
|
export const POST = async ({ request }) => {
|
|
5
|
-
const auth = getCMS().auth;
|
|
6
|
-
if (!auth) {
|
|
7
|
-
return json({ error: 'Auth adapter not configured' }, { status: 500 });
|
|
8
|
-
}
|
|
9
5
|
const { token, name, password } = await request.json();
|
|
10
6
|
if (!token || !name || !password) {
|
|
11
7
|
return json({ error: 'Token, name and password are required' }, { status: 400 });
|
package/dist/admin/api/invite.js
CHANGED
|
@@ -2,9 +2,10 @@ import { requireRole } from '../remote/middleware/auth.js';
|
|
|
2
2
|
import { createInvitation, getPendingInvitations, deleteInvitation, checkEmailExists, getInvitationById } from '../remote/invite.js';
|
|
3
3
|
import { getCMS } from '../../core/cms.js';
|
|
4
4
|
import { json } from '@sveltejs/kit';
|
|
5
|
+
import { inviteEmailTemplate } from '../email/invite-template.js';
|
|
5
6
|
export const POST = async ({ request, url }) => {
|
|
6
7
|
const { user } = requireRole('admin');
|
|
7
|
-
const { email, role } = await request.json();
|
|
8
|
+
const { email, role, lang } = await request.json();
|
|
8
9
|
if (!email || !role) {
|
|
9
10
|
return json({ error: 'Email and role are required' }, { status: 400 });
|
|
10
11
|
}
|
|
@@ -19,13 +20,8 @@ export const POST = async ({ request, url }) => {
|
|
|
19
20
|
const inv = await createInvitation(email, role, user.id);
|
|
20
21
|
const inviteUrl = `${url.origin}/admin/accept-invite?token=${inv.token}`;
|
|
21
22
|
try {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
subject: 'You have been invited to includio CMS',
|
|
25
|
-
html: `<p>You have been invited to join the CMS as <strong>${role}</strong>.</p>
|
|
26
|
-
<p><a href="${inviteUrl}">Click here to accept the invitation</a></p>
|
|
27
|
-
<p>This link expires in 7 days.</p>`
|
|
28
|
-
});
|
|
23
|
+
const { subject, html } = inviteEmailTemplate({ inviteUrl, role, lang });
|
|
24
|
+
await emailAdapter.sendMail({ to: [email], subject, html });
|
|
29
25
|
}
|
|
30
26
|
catch (err) {
|
|
31
27
|
await deleteInvitation(inv.id);
|
|
@@ -40,7 +36,7 @@ export const GET = async () => {
|
|
|
40
36
|
};
|
|
41
37
|
export const PATCH = async ({ request, url }) => {
|
|
42
38
|
requireRole('admin');
|
|
43
|
-
const { id } = await request.json();
|
|
39
|
+
const { id, lang } = await request.json();
|
|
44
40
|
if (!id) {
|
|
45
41
|
return json({ error: 'Invitation id is required' }, { status: 400 });
|
|
46
42
|
}
|
|
@@ -54,13 +50,8 @@ export const PATCH = async ({ request, url }) => {
|
|
|
54
50
|
}
|
|
55
51
|
const inviteUrl = `${url.origin}/admin/accept-invite?token=${inv.token}`;
|
|
56
52
|
try {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
subject: 'You have been invited to includio CMS',
|
|
60
|
-
html: `<p>You have been invited to join the CMS as <strong>${inv.role}</strong>.</p>
|
|
61
|
-
<p><a href="${inviteUrl}">Click here to accept the invitation</a></p>
|
|
62
|
-
<p>This link expires in 7 days.</p>`
|
|
63
|
-
});
|
|
53
|
+
const { subject, html } = inviteEmailTemplate({ inviteUrl, role: inv.role, lang });
|
|
54
|
+
await emailAdapter.sendMail({ to: [inv.email], subject, html });
|
|
64
55
|
}
|
|
65
56
|
catch (err) {
|
|
66
57
|
return json({ error: 'Failed to send email: ' + (err instanceof Error ? err.message : 'Unknown error') }, { status: 502 });
|
|
@@ -1,70 +1,40 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import * as Tabs from '../../../components/ui/tabs/index.js';
|
|
3
2
|
import { accountLang } from './lang.js';
|
|
4
3
|
import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
|
|
5
|
-
import {
|
|
6
|
-
import { goto } from '$app/navigation';
|
|
4
|
+
import { getBreadcrumbs } from '../../state/breadcrumbs.svelte.js';
|
|
7
5
|
import ProfileSection from './profile-section.svelte';
|
|
8
6
|
import SecuritySection from './security-section.svelte';
|
|
9
7
|
import PreferencesSection from './preferences-section.svelte';
|
|
10
8
|
import SessionsSection from './sessions-section.svelte';
|
|
11
|
-
import UserCircle from '@tabler/icons-svelte/icons/user-circle';
|
|
12
|
-
import Shield from '@tabler/icons-svelte/icons/shield';
|
|
13
|
-
import Settings from '@tabler/icons-svelte/icons/settings';
|
|
14
|
-
import Devices from '@tabler/icons-svelte/icons/devices';
|
|
15
9
|
|
|
16
10
|
const interfaceLanguage = useInterfaceLanguage();
|
|
17
|
-
|
|
18
|
-
let activeTab = $derived($page.url.searchParams.get('tab') || 'profile');
|
|
19
|
-
|
|
20
11
|
const lang = $derived(accountLang[interfaceLanguage.current]);
|
|
12
|
+
const breadcrumbs = getBreadcrumbs();
|
|
21
13
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const tabs = [
|
|
29
|
-
{ value: 'profile', icon: UserCircle },
|
|
30
|
-
{ value: 'security', icon: Shield },
|
|
31
|
-
{ value: 'preferences', icon: Settings },
|
|
32
|
-
{ value: 'sessions', icon: Devices }
|
|
33
|
-
] as const;
|
|
14
|
+
$effect(() => {
|
|
15
|
+
breadcrumbs.state = [
|
|
16
|
+
{ label: lang.title }
|
|
17
|
+
];
|
|
18
|
+
});
|
|
34
19
|
</script>
|
|
35
20
|
|
|
36
|
-
<div class="
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
<Tabs.Root value={activeTab} onValueChange={handleTabChange} class="flex flex-col gap-6 md:flex-row">
|
|
40
|
-
<Tabs.List
|
|
41
|
-
class="inline-flex h-auto w-full shrink-0 flex-row items-start justify-start gap-1 overflow-x-auto border-none bg-transparent p-0 shadow-none md:w-44 md:flex-col md:overflow-visible dark:border-none dark:bg-transparent dark:shadow-none"
|
|
42
|
-
>
|
|
43
|
-
{#each tabs as tab}
|
|
44
|
-
{@const Icon = tab.icon}
|
|
45
|
-
<Tabs.Trigger
|
|
46
|
-
value={tab.value}
|
|
47
|
-
class="text-muted-foreground hover:bg-muted/50 hover:text-foreground data-[state=active]:bg-muted data-[state=active]:text-foreground h-auto w-full flex-none justify-start gap-2 rounded-md border-none px-3 py-2 text-sm font-medium shadow-none ring-0 transition-colors focus-visible:ring-0 focus-visible:ring-offset-0 data-[state=active]:shadow-none"
|
|
48
|
-
>
|
|
49
|
-
<Icon class="size-4" />
|
|
50
|
-
{lang.tabs[tab.value]}
|
|
51
|
-
</Tabs.Trigger>
|
|
52
|
-
{/each}
|
|
53
|
-
</Tabs.List>
|
|
21
|
+
<div class="acct-content">
|
|
22
|
+
<div class="acct-inner">
|
|
23
|
+
<h1 class="mb-6 text-2xl font-bold">{lang.title}</h1>
|
|
54
24
|
|
|
55
|
-
<div class="
|
|
56
|
-
<
|
|
25
|
+
<div class="flex flex-col gap-5">
|
|
26
|
+
<div class="acct-fade-up">
|
|
57
27
|
<ProfileSection />
|
|
58
|
-
</
|
|
59
|
-
<
|
|
28
|
+
</div>
|
|
29
|
+
<div class="acct-fade-up">
|
|
60
30
|
<SecuritySection />
|
|
61
|
-
</
|
|
62
|
-
<
|
|
31
|
+
</div>
|
|
32
|
+
<div class="acct-fade-up">
|
|
63
33
|
<PreferencesSection />
|
|
64
|
-
</
|
|
65
|
-
<
|
|
34
|
+
</div>
|
|
35
|
+
<div class="acct-fade-up">
|
|
66
36
|
<SessionsSection />
|
|
67
|
-
</
|
|
37
|
+
</div>
|
|
68
38
|
</div>
|
|
69
|
-
</
|
|
39
|
+
</div>
|
|
70
40
|
</div>
|
|
@@ -1,44 +1,33 @@
|
|
|
1
1
|
export declare const accountLang: Record<string, {
|
|
2
2
|
title: string;
|
|
3
|
-
tabs: {
|
|
4
|
-
profile: string;
|
|
5
|
-
security: string;
|
|
6
|
-
preferences: string;
|
|
7
|
-
sessions: string;
|
|
8
|
-
};
|
|
9
3
|
profile: {
|
|
10
4
|
title: string;
|
|
11
5
|
name: string;
|
|
12
6
|
email: string;
|
|
7
|
+
emailHint: string;
|
|
13
8
|
role: string;
|
|
14
|
-
memberSince: string;
|
|
15
9
|
save: string;
|
|
16
10
|
saved: string;
|
|
17
11
|
};
|
|
18
12
|
security: {
|
|
19
|
-
title: string;
|
|
20
13
|
changePassword: string;
|
|
21
14
|
currentPassword: string;
|
|
22
15
|
newPassword: string;
|
|
23
16
|
confirmPassword: string;
|
|
24
17
|
updatePassword: string;
|
|
25
18
|
passwordUpdated: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
passwordHint: string;
|
|
20
|
+
showPassword: string;
|
|
21
|
+
hidePassword: string;
|
|
22
|
+
strengthWeak: string;
|
|
23
|
+
strengthMedium: string;
|
|
24
|
+
strengthStrong: string;
|
|
25
|
+
strengthVeryStrong: string;
|
|
26
|
+
strengthLabel: string;
|
|
34
27
|
};
|
|
35
|
-
|
|
28
|
+
language: {
|
|
36
29
|
title: string;
|
|
37
|
-
|
|
38
|
-
themeLight: string;
|
|
39
|
-
themeDark: string;
|
|
40
|
-
themeSystem: string;
|
|
41
|
-
language: string;
|
|
30
|
+
select: string;
|
|
42
31
|
};
|
|
43
32
|
sessions: {
|
|
44
33
|
title: string;
|
|
@@ -49,11 +38,14 @@ export declare const accountLang: Record<string, {
|
|
|
49
38
|
signOutEverywhereDesc: string;
|
|
50
39
|
sessionRevoked: string;
|
|
51
40
|
allSessionsRevoked: string;
|
|
41
|
+
online: string;
|
|
52
42
|
};
|
|
53
43
|
errors: {
|
|
44
|
+
nameRequired: string;
|
|
54
45
|
passwordMismatch: string;
|
|
55
46
|
passwordMinLength: string;
|
|
47
|
+
passwordRequirements: string;
|
|
56
48
|
currentPasswordRequired: string;
|
|
57
|
-
|
|
49
|
+
confirmPasswordRequired: string;
|
|
58
50
|
};
|
|
59
51
|
}>;
|
|
@@ -1,120 +1,104 @@
|
|
|
1
1
|
export const accountLang = {
|
|
2
2
|
pl: {
|
|
3
3
|
title: 'Ustawienia konta',
|
|
4
|
-
tabs: {
|
|
5
|
-
profile: 'Profil',
|
|
6
|
-
security: 'Bezpieczeństwo',
|
|
7
|
-
preferences: 'Preferencje',
|
|
8
|
-
sessions: 'Sesje'
|
|
9
|
-
},
|
|
10
4
|
profile: {
|
|
11
5
|
title: 'Profil',
|
|
12
|
-
name: '
|
|
13
|
-
email: '
|
|
6
|
+
name: 'Nazwa',
|
|
7
|
+
email: 'Adres e-mail',
|
|
8
|
+
emailHint: 'Zarządzane przez dostawcę logowania',
|
|
14
9
|
role: 'Rola',
|
|
15
|
-
|
|
16
|
-
save: 'Zapisz',
|
|
10
|
+
save: 'Zapisz zmiany',
|
|
17
11
|
saved: 'Zapisano'
|
|
18
12
|
},
|
|
19
13
|
security: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
currentPassword: 'Obecne hasło',
|
|
14
|
+
changePassword: 'Zmiana hasła',
|
|
15
|
+
currentPassword: 'Aktualne hasło',
|
|
23
16
|
newPassword: 'Nowe hasło',
|
|
24
|
-
confirmPassword: 'Potwierdź hasło',
|
|
17
|
+
confirmPassword: 'Potwierdź nowe hasło',
|
|
25
18
|
updatePassword: 'Zmień hasło',
|
|
26
19
|
passwordUpdated: 'Hasło zostało zmienione',
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
passwordHint: 'Min. 8 znaków, wielka litera, cyfra i znak specjalny',
|
|
21
|
+
showPassword: 'Pokaż hasło',
|
|
22
|
+
hidePassword: 'Ukryj hasło',
|
|
23
|
+
strengthWeak: 'Słabe',
|
|
24
|
+
strengthMedium: 'Średnie',
|
|
25
|
+
strengthStrong: 'Silne',
|
|
26
|
+
strengthVeryStrong: 'Bardzo silne',
|
|
27
|
+
strengthLabel: 'Siła hasła'
|
|
35
28
|
},
|
|
36
|
-
|
|
37
|
-
title: '
|
|
38
|
-
|
|
39
|
-
themeLight: 'Jasny',
|
|
40
|
-
themeDark: 'Ciemny',
|
|
41
|
-
themeSystem: 'Systemowy',
|
|
42
|
-
language: 'Język'
|
|
29
|
+
language: {
|
|
30
|
+
title: 'Język interfejsu',
|
|
31
|
+
select: 'Wybierz język'
|
|
43
32
|
},
|
|
44
33
|
sessions: {
|
|
45
34
|
title: 'Aktywne sesje',
|
|
46
|
-
currentSession: '
|
|
35
|
+
currentSession: 'Ten komputer',
|
|
47
36
|
lastActive: 'Ostatnio aktywna',
|
|
48
37
|
revoke: 'Zakończ',
|
|
49
|
-
signOutEverywhere: 'Wyloguj
|
|
38
|
+
signOutEverywhere: 'Wyloguj ze wszystkich urządzeń',
|
|
50
39
|
signOutEverywhereDesc: 'Zakończ wszystkie sesje oprócz obecnej',
|
|
51
40
|
sessionRevoked: 'Sesja została zakończona',
|
|
52
|
-
allSessionsRevoked: 'Wszystkie sesje zostały zakończone'
|
|
41
|
+
allSessionsRevoked: 'Wszystkie sesje zostały zakończone',
|
|
42
|
+
online: 'Online'
|
|
53
43
|
},
|
|
54
44
|
errors: {
|
|
45
|
+
nameRequired: 'Nazwa jest wymagana',
|
|
55
46
|
passwordMismatch: 'Hasła nie są zgodne',
|
|
56
|
-
passwordMinLength: 'Hasło musi mieć min.
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
passwordMinLength: 'Hasło musi mieć min. 8 znaków',
|
|
48
|
+
passwordRequirements: 'Hasło musi zawierać wielką literę, cyfrę i znak specjalny',
|
|
49
|
+
currentPasswordRequired: 'Aktualne hasło jest wymagane',
|
|
50
|
+
confirmPasswordRequired: 'Potwierdź nowe hasło'
|
|
59
51
|
}
|
|
60
52
|
},
|
|
61
53
|
en: {
|
|
62
54
|
title: 'Account Settings',
|
|
63
|
-
tabs: {
|
|
64
|
-
profile: 'Profile',
|
|
65
|
-
security: 'Security',
|
|
66
|
-
preferences: 'Preferences',
|
|
67
|
-
sessions: 'Sessions'
|
|
68
|
-
},
|
|
69
55
|
profile: {
|
|
70
56
|
title: 'Profile',
|
|
71
57
|
name: 'Name',
|
|
72
|
-
email: 'Email',
|
|
58
|
+
email: 'Email address',
|
|
59
|
+
emailHint: 'Managed by login provider',
|
|
73
60
|
role: 'Role',
|
|
74
|
-
|
|
75
|
-
save: 'Save',
|
|
61
|
+
save: 'Save changes',
|
|
76
62
|
saved: 'Saved'
|
|
77
63
|
},
|
|
78
64
|
security: {
|
|
79
|
-
title: 'Security',
|
|
80
65
|
changePassword: 'Change password',
|
|
81
66
|
currentPassword: 'Current password',
|
|
82
67
|
newPassword: 'New password',
|
|
83
|
-
confirmPassword: 'Confirm password',
|
|
84
|
-
updatePassword: '
|
|
68
|
+
confirmPassword: 'Confirm new password',
|
|
69
|
+
updatePassword: 'Change password',
|
|
85
70
|
passwordUpdated: 'Password updated',
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
71
|
+
passwordHint: 'Min. 8 characters, uppercase, number and special character',
|
|
72
|
+
showPassword: 'Show password',
|
|
73
|
+
hidePassword: 'Hide password',
|
|
74
|
+
strengthWeak: 'Weak',
|
|
75
|
+
strengthMedium: 'Medium',
|
|
76
|
+
strengthStrong: 'Strong',
|
|
77
|
+
strengthVeryStrong: 'Very strong',
|
|
78
|
+
strengthLabel: 'Password strength'
|
|
94
79
|
},
|
|
95
|
-
|
|
96
|
-
title: '
|
|
97
|
-
|
|
98
|
-
themeLight: 'Light',
|
|
99
|
-
themeDark: 'Dark',
|
|
100
|
-
themeSystem: 'System',
|
|
101
|
-
language: 'Language'
|
|
80
|
+
language: {
|
|
81
|
+
title: 'Interface language',
|
|
82
|
+
select: 'Select language'
|
|
102
83
|
},
|
|
103
84
|
sessions: {
|
|
104
85
|
title: 'Active sessions',
|
|
105
|
-
currentSession: '
|
|
86
|
+
currentSession: 'This computer',
|
|
106
87
|
lastActive: 'Last active',
|
|
107
88
|
revoke: 'Revoke',
|
|
108
|
-
signOutEverywhere: 'Sign out
|
|
89
|
+
signOutEverywhere: 'Sign out from all devices',
|
|
109
90
|
signOutEverywhereDesc: 'End all sessions except the current one',
|
|
110
91
|
sessionRevoked: 'Session revoked',
|
|
111
|
-
allSessionsRevoked: 'All sessions revoked'
|
|
92
|
+
allSessionsRevoked: 'All sessions revoked',
|
|
93
|
+
online: 'Online'
|
|
112
94
|
},
|
|
113
95
|
errors: {
|
|
96
|
+
nameRequired: 'Name is required',
|
|
114
97
|
passwordMismatch: 'Passwords do not match',
|
|
115
|
-
passwordMinLength: 'Password must be at least
|
|
98
|
+
passwordMinLength: 'Password must be at least 8 characters',
|
|
99
|
+
passwordRequirements: 'Password must contain an uppercase letter, a number and a special character',
|
|
116
100
|
currentPasswordRequired: 'Current password is required',
|
|
117
|
-
|
|
101
|
+
confirmPasswordRequired: 'Please confirm your new password'
|
|
118
102
|
}
|
|
119
103
|
}
|
|
120
104
|
};
|