@kywi-software/core 0.1.0 → 0.2.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/dist/admin/app.d.ts +69 -0
- package/dist/admin/app.d.ts.map +1 -0
- package/dist/admin/app.js +98 -0
- package/dist/admin/app.js.map +1 -0
- package/dist/admin/chrome.d.ts +37 -0
- package/dist/admin/chrome.d.ts.map +1 -0
- package/dist/admin/chrome.js +162 -0
- package/dist/admin/chrome.js.map +1 -0
- package/dist/admin/context.d.ts +58 -0
- package/dist/admin/context.d.ts.map +1 -0
- package/dist/admin/context.js +31 -0
- package/dist/admin/context.js.map +1 -0
- package/dist/admin/index.d.ts +9 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +12 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/kywi-logo.d.ts +21 -0
- package/dist/admin/kywi-logo.d.ts.map +1 -0
- package/dist/admin/kywi-logo.js +123 -0
- package/dist/admin/kywi-logo.js.map +1 -0
- package/dist/admin/nav.d.ts +21 -1
- package/dist/admin/nav.d.ts.map +1 -1
- package/dist/admin/nav.js +45 -88
- package/dist/admin/nav.js.map +1 -1
- package/dist/admin/primitives.d.ts +52 -0
- package/dist/admin/primitives.d.ts.map +1 -0
- package/dist/admin/primitives.js +78 -0
- package/dist/admin/primitives.js.map +1 -0
- package/dist/admin/registry.d.ts +130 -0
- package/dist/admin/registry.d.ts.map +1 -0
- package/dist/admin/registry.js +456 -0
- package/dist/admin/registry.js.map +1 -0
- package/dist/admin/server.d.ts +154 -0
- package/dist/admin/server.d.ts.map +1 -0
- package/dist/admin/server.js +121 -0
- package/dist/admin/server.js.map +1 -0
- package/dist/admin/shell.d.ts +27 -1
- package/dist/admin/shell.d.ts.map +1 -1
- package/dist/admin/shell.js +71 -6
- package/dist/admin/shell.js.map +1 -1
- package/dist/admin/styles/admin.css +113 -23
- package/dist/admin/surface-matcher.d.ts +51 -0
- package/dist/admin/surface-matcher.d.ts.map +1 -0
- package/dist/admin/surface-matcher.js +181 -0
- package/dist/admin/surface-matcher.js.map +1 -0
- package/dist/admin/surfaces/approvals/approvals-data.d.ts +17 -0
- package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -0
- package/dist/admin/surfaces/approvals/approvals-data.js +55 -0
- package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -0
- package/dist/admin/surfaces/approvals/approvals-index.d.ts +3 -0
- package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -0
- package/dist/admin/surfaces/approvals/approvals-index.js +75 -0
- package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-data.d.ts +107 -0
- package/dist/admin/surfaces/audiences/audiences-data.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-data.js +216 -0
- package/dist/admin/surfaces/audiences/audiences-data.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-detail.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-detail.js +78 -0
- package/dist/admin/surfaces/audiences/audiences-detail.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-edit.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-edit.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-edit.js +55 -0
- package/dist/admin/surfaces/audiences/audiences-edit.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-fields.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-fields.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-fields.js +56 -0
- package/dist/admin/surfaces/audiences/audiences-fields.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-list.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-list.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-list.js +50 -0
- package/dist/admin/surfaces/audiences/audiences-list.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-new.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-new.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-new.js +54 -0
- package/dist/admin/surfaces/audiences/audiences-new.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-preview-tokens.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-preview-tokens.js +123 -0
- package/dist/admin/surfaces/audiences/audiences-preview-tokens.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-selfid-widget.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-selfid-widget.js +50 -0
- package/dist/admin/surfaces/audiences/audiences-selfid-widget.js.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-test.d.ts +3 -0
- package/dist/admin/surfaces/audiences/audiences-test.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/audiences-test.js +39 -0
- package/dist/admin/surfaces/audiences/audiences-test.js.map +1 -0
- package/dist/admin/surfaces/audiences/states.d.ts +10 -0
- package/dist/admin/surfaces/audiences/states.d.ts.map +1 -0
- package/dist/admin/surfaces/audiences/states.js +11 -0
- package/dist/admin/surfaces/audiences/states.js.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-data.d.ts +35 -0
- package/dist/admin/surfaces/changesets/changesets-data.d.ts.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-data.js +151 -0
- package/dist/admin/surfaces/changesets/changesets-data.js.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-detail.d.ts +3 -0
- package/dist/admin/surfaces/changesets/changesets-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-detail.js +84 -0
- package/dist/admin/surfaces/changesets/changesets-detail.js.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-index.d.ts +3 -0
- package/dist/admin/surfaces/changesets/changesets-index.d.ts.map +1 -0
- package/dist/admin/surfaces/changesets/changesets-index.js +62 -0
- package/dist/admin/surfaces/changesets/changesets-index.js.map +1 -0
- package/dist/admin/surfaces/comments/comment-moderation.d.ts +18 -0
- package/dist/admin/surfaces/comments/comment-moderation.d.ts.map +1 -0
- package/dist/admin/surfaces/comments/comment-moderation.js +36 -0
- package/dist/admin/surfaces/comments/comment-moderation.js.map +1 -0
- package/dist/admin/surfaces/comments/comments-data.d.ts +23 -0
- package/dist/admin/surfaces/comments/comments-data.d.ts.map +1 -0
- package/dist/admin/surfaces/comments/comments-data.js +81 -0
- package/dist/admin/surfaces/comments/comments-data.js.map +1 -0
- package/dist/admin/surfaces/comments/comments-index.d.ts +3 -0
- package/dist/admin/surfaces/comments/comments-index.d.ts.map +1 -0
- package/dist/admin/surfaces/comments/comments-index.js +73 -0
- package/dist/admin/surfaces/comments/comments-index.js.map +1 -0
- package/dist/admin/surfaces/content/content-edit.d.ts +3 -0
- package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -0
- package/dist/admin/surfaces/content/content-edit.js +321 -0
- package/dist/admin/surfaces/content/content-edit.js.map +1 -0
- package/dist/admin/surfaces/content/content-index.d.ts +3 -0
- package/dist/admin/surfaces/content/content-index.d.ts.map +1 -0
- package/dist/admin/surfaces/content/content-index.js +21 -0
- package/dist/admin/surfaces/content/content-index.js.map +1 -0
- package/dist/admin/surfaces/content/content-list.d.ts +3 -0
- package/dist/admin/surfaces/content/content-list.d.ts.map +1 -0
- package/dist/admin/surfaces/content/content-list.js +70 -0
- package/dist/admin/surfaces/content/content-list.js.map +1 -0
- package/dist/admin/surfaces/content/content-new.d.ts +3 -0
- package/dist/admin/surfaces/content/content-new.d.ts.map +1 -0
- package/dist/admin/surfaces/content/content-new.js +109 -0
- package/dist/admin/surfaces/content/content-new.js.map +1 -0
- package/dist/admin/surfaces/content/content-translation-bar.d.ts +12 -0
- package/dist/admin/surfaces/content/content-translation-bar.d.ts.map +1 -0
- package/dist/admin/surfaces/content/content-translation-bar.js +65 -0
- package/dist/admin/surfaces/content/content-translation-bar.js.map +1 -0
- package/dist/admin/surfaces/content/runtime-content-types.d.ts +41 -0
- package/dist/admin/surfaces/content/runtime-content-types.d.ts.map +1 -0
- package/dist/admin/surfaces/content/runtime-content-types.js +51 -0
- package/dist/admin/surfaces/content/runtime-content-types.js.map +1 -0
- package/dist/admin/surfaces/contentTree/content-tree.d.ts +3 -0
- package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -0
- package/dist/admin/surfaces/contentTree/content-tree.js +179 -0
- package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -0
- package/dist/admin/surfaces/contentTree/move-to-picker.d.ts +12 -0
- package/dist/admin/surfaces/contentTree/move-to-picker.d.ts.map +1 -0
- package/dist/admin/surfaces/contentTree/move-to-picker.js +77 -0
- package/dist/admin/surfaces/contentTree/move-to-picker.js.map +1 -0
- package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts +3 -0
- package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -0
- package/dist/admin/surfaces/contentTypes/content-types-designer.js +260 -0
- package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -0
- package/dist/admin/surfaces/contentTypes/content-types-list.d.ts +3 -0
- package/dist/admin/surfaces/contentTypes/content-types-list.d.ts.map +1 -0
- package/dist/admin/surfaces/contentTypes/content-types-list.js +69 -0
- package/dist/admin/surfaces/contentTypes/content-types-list.js.map +1 -0
- package/dist/admin/surfaces/dashboard/dashboard-index.d.ts +3 -0
- package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -0
- package/dist/admin/surfaces/dashboard/dashboard-index.js +100 -0
- package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-data.d.ts +12 -0
- package/dist/admin/surfaces/experiments/experiments-data.d.ts.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-data.js +89 -0
- package/dist/admin/surfaces/experiments/experiments-data.js.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-detail.d.ts +3 -0
- package/dist/admin/surfaces/experiments/experiments-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-detail.js +87 -0
- package/dist/admin/surfaces/experiments/experiments-detail.js.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-list.d.ts +3 -0
- package/dist/admin/surfaces/experiments/experiments-list.d.ts.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-list.js +37 -0
- package/dist/admin/surfaces/experiments/experiments-list.js.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-new.d.ts +3 -0
- package/dist/admin/surfaces/experiments/experiments-new.d.ts.map +1 -0
- package/dist/admin/surfaces/experiments/experiments-new.js +33 -0
- package/dist/admin/surfaces/experiments/experiments-new.js.map +1 -0
- package/dist/admin/surfaces/experiments/states.d.ts +10 -0
- package/dist/admin/surfaces/experiments/states.d.ts.map +1 -0
- package/dist/admin/surfaces/experiments/states.js +11 -0
- package/dist/admin/surfaces/experiments/states.js.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-data.d.ts +59 -0
- package/dist/admin/surfaces/extensions/extensions-data.d.ts.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-data.js +71 -0
- package/dist/admin/surfaces/extensions/extensions-data.js.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-import-export.d.ts +3 -0
- package/dist/admin/surfaces/extensions/extensions-import-export.d.ts.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-import-export.js +77 -0
- package/dist/admin/surfaces/extensions/extensions-import-export.js.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-list.d.ts +3 -0
- package/dist/admin/surfaces/extensions/extensions-list.d.ts.map +1 -0
- package/dist/admin/surfaces/extensions/extensions-list.js +106 -0
- package/dist/admin/surfaces/extensions/extensions-list.js.map +1 -0
- package/dist/admin/surfaces/extensions/form-modal.d.ts +17 -0
- package/dist/admin/surfaces/extensions/form-modal.d.ts.map +1 -0
- package/dist/admin/surfaces/extensions/form-modal.js +27 -0
- package/dist/admin/surfaces/extensions/form-modal.js.map +1 -0
- package/dist/admin/surfaces/feeds/feed-editor.d.ts +8 -0
- package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -0
- package/dist/admin/surfaces/feeds/feed-editor.js +120 -0
- package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-data.d.ts +35 -0
- package/dist/admin/surfaces/feeds/feeds-data.d.ts.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-data.js +81 -0
- package/dist/admin/surfaces/feeds/feeds-data.js.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-detail.d.ts +3 -0
- package/dist/admin/surfaces/feeds/feeds-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-detail.js +36 -0
- package/dist/admin/surfaces/feeds/feeds-detail.js.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-list.d.ts +3 -0
- package/dist/admin/surfaces/feeds/feeds-list.d.ts.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-list.js +49 -0
- package/dist/admin/surfaces/feeds/feeds-list.js.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-new.d.ts +3 -0
- package/dist/admin/surfaces/feeds/feeds-new.d.ts.map +1 -0
- package/dist/admin/surfaces/feeds/feeds-new.js +7 -0
- package/dist/admin/surfaces/feeds/feeds-new.js.map +1 -0
- package/dist/admin/surfaces/forms/form-editor.d.ts +5 -0
- package/dist/admin/surfaces/forms/form-editor.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/form-editor.js +59 -0
- package/dist/admin/surfaces/forms/form-editor.js.map +1 -0
- package/dist/admin/surfaces/forms/forms-data.d.ts +52 -0
- package/dist/admin/surfaces/forms/forms-data.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/forms-data.js +106 -0
- package/dist/admin/surfaces/forms/forms-data.js.map +1 -0
- package/dist/admin/surfaces/forms/forms-edit.d.ts +3 -0
- package/dist/admin/surfaces/forms/forms-edit.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/forms-edit.js +40 -0
- package/dist/admin/surfaces/forms/forms-edit.js.map +1 -0
- package/dist/admin/surfaces/forms/forms-list.d.ts +3 -0
- package/dist/admin/surfaces/forms/forms-list.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/forms-list.js +53 -0
- package/dist/admin/surfaces/forms/forms-list.js.map +1 -0
- package/dist/admin/surfaces/forms/forms-new.d.ts +3 -0
- package/dist/admin/surfaces/forms/forms-new.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/forms-new.js +7 -0
- package/dist/admin/surfaces/forms/forms-new.js.map +1 -0
- package/dist/admin/surfaces/forms/forms-submissions.d.ts +3 -0
- package/dist/admin/surfaces/forms/forms-submissions.d.ts.map +1 -0
- package/dist/admin/surfaces/forms/forms-submissions.js +125 -0
- package/dist/admin/surfaces/forms/forms-submissions.js.map +1 -0
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts +8 -0
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -0
- package/dist/admin/surfaces/layouts/layout-editor-client.js +77 -0
- package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-data.d.ts +53 -0
- package/dist/admin/surfaces/layouts/layouts-data.d.ts.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-data.js +61 -0
- package/dist/admin/surfaces/layouts/layouts-data.js.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-detail.d.ts +3 -0
- package/dist/admin/surfaces/layouts/layouts-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-detail.js +38 -0
- package/dist/admin/surfaces/layouts/layouts-detail.js.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-list.d.ts +3 -0
- package/dist/admin/surfaces/layouts/layouts-list.d.ts.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-list.js +62 -0
- package/dist/admin/surfaces/layouts/layouts-list.js.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-new.d.ts +3 -0
- package/dist/admin/surfaces/layouts/layouts-new.d.ts.map +1 -0
- package/dist/admin/surfaces/layouts/layouts-new.js +7 -0
- package/dist/admin/surfaces/layouts/layouts-new.js.map +1 -0
- package/dist/admin/surfaces/login.d.ts +20 -0
- package/dist/admin/surfaces/login.d.ts.map +1 -0
- package/dist/admin/surfaces/login.js +93 -0
- package/dist/admin/surfaces/login.js.map +1 -0
- package/dist/admin/surfaces/media/library.d.ts +3 -0
- package/dist/admin/surfaces/media/library.d.ts.map +1 -0
- package/dist/admin/surfaces/media/library.js +7 -0
- package/dist/admin/surfaces/media/library.js.map +1 -0
- package/dist/admin/surfaces/media/media-client.d.ts +4 -0
- package/dist/admin/surfaces/media/media-client.d.ts.map +1 -0
- package/dist/admin/surfaces/media/media-client.js +203 -0
- package/dist/admin/surfaces/media/media-client.js.map +1 -0
- package/dist/admin/surfaces/media/upload.d.ts +3 -0
- package/dist/admin/surfaces/media/upload.d.ts.map +1 -0
- package/dist/admin/surfaces/media/upload.js +7 -0
- package/dist/admin/surfaces/media/upload.js.map +1 -0
- package/dist/admin/surfaces/plugins/plugins-data.d.ts +37 -0
- package/dist/admin/surfaces/plugins/plugins-data.d.ts.map +1 -0
- package/dist/admin/surfaces/plugins/plugins-data.js +31 -0
- package/dist/admin/surfaces/plugins/plugins-data.js.map +1 -0
- package/dist/admin/surfaces/plugins/plugins-index.d.ts +3 -0
- package/dist/admin/surfaces/plugins/plugins-index.d.ts.map +1 -0
- package/dist/admin/surfaces/plugins/plugins-index.js +72 -0
- package/dist/admin/surfaces/plugins/plugins-index.js.map +1 -0
- package/dist/admin/surfaces/search/search-index.d.ts +3 -0
- package/dist/admin/surfaces/search/search-index.d.ts.map +1 -0
- package/dist/admin/surfaces/search/search-index.js +76 -0
- package/dist/admin/surfaces/search/search-index.js.map +1 -0
- package/dist/admin/surfaces/settings/admin-features.d.ts +3 -0
- package/dist/admin/surfaces/settings/admin-features.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/admin-features.js +138 -0
- package/dist/admin/surfaces/settings/admin-features.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-ax.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-ax.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-ax.js +63 -0
- package/dist/admin/surfaces/settings/settings-ax.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-cache.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-cache.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-cache.js +64 -0
- package/dist/admin/surfaces/settings/settings-cache.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-email.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-email.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-email.js +89 -0
- package/dist/admin/surfaces/settings/settings-email.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-general.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-general.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-general.js +91 -0
- package/dist/admin/surfaces/settings/settings-general.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-site.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-site.js +14 -0
- package/dist/admin/surfaces/settings/settings-site.js.map +1 -0
- package/dist/admin/surfaces/settings/settings-sites.d.ts +3 -0
- package/dist/admin/surfaces/settings/settings-sites.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/settings-sites.js +134 -0
- package/dist/admin/surfaces/settings/settings-sites.js.map +1 -0
- package/dist/admin/surfaces/settings/states.d.ts +33 -0
- package/dist/admin/surfaces/settings/states.d.ts.map +1 -0
- package/dist/admin/surfaces/settings/states.js +33 -0
- package/dist/admin/surfaces/settings/states.js.map +1 -0
- package/dist/admin/surfaces/taxonomy/categories.d.ts +3 -0
- package/dist/admin/surfaces/taxonomy/categories.d.ts.map +1 -0
- package/dist/admin/surfaces/taxonomy/categories.js +162 -0
- package/dist/admin/surfaces/taxonomy/categories.js.map +1 -0
- package/dist/admin/surfaces/taxonomy/tags.d.ts +3 -0
- package/dist/admin/surfaces/taxonomy/tags.d.ts.map +1 -0
- package/dist/admin/surfaces/taxonomy/tags.js +112 -0
- package/dist/admin/surfaces/taxonomy/tags.js.map +1 -0
- package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts +39 -0
- package/dist/admin/surfaces/taxonomy/taxonomy-ui.d.ts.map +1 -0
- package/dist/admin/surfaces/taxonomy/taxonomy-ui.js +66 -0
- package/dist/admin/surfaces/taxonomy/taxonomy-ui.js.map +1 -0
- package/dist/admin/surfaces/translations/states.d.ts +10 -0
- package/dist/admin/surfaces/translations/states.d.ts.map +1 -0
- package/dist/admin/surfaces/translations/states.js +11 -0
- package/dist/admin/surfaces/translations/states.js.map +1 -0
- package/dist/admin/surfaces/translations/translations-index.d.ts +3 -0
- package/dist/admin/surfaces/translations/translations-index.d.ts.map +1 -0
- package/dist/admin/surfaces/translations/translations-index.js +99 -0
- package/dist/admin/surfaces/translations/translations-index.js.map +1 -0
- package/dist/admin/surfaces/trash/trash-index.d.ts +3 -0
- package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -0
- package/dist/admin/surfaces/trash/trash-index.js +96 -0
- package/dist/admin/surfaces/trash/trash-index.js.map +1 -0
- package/dist/admin/surfaces/users/users-data.d.ts +51 -0
- package/dist/admin/surfaces/users/users-data.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-data.js +60 -0
- package/dist/admin/surfaces/users/users-data.js.map +1 -0
- package/dist/admin/surfaces/users/users-detail.d.ts +3 -0
- package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-detail.js +148 -0
- package/dist/admin/surfaces/users/users-detail.js.map +1 -0
- package/dist/admin/surfaces/users/users-groups.d.ts +3 -0
- package/dist/admin/surfaces/users/users-groups.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-groups.js +136 -0
- package/dist/admin/surfaces/users/users-groups.js.map +1 -0
- package/dist/admin/surfaces/users/users-list.d.ts +3 -0
- package/dist/admin/surfaces/users/users-list.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-list.js +119 -0
- package/dist/admin/surfaces/users/users-list.js.map +1 -0
- package/dist/admin/surfaces/users/users-new.d.ts +3 -0
- package/dist/admin/surfaces/users/users-new.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-new.js +78 -0
- package/dist/admin/surfaces/users/users-new.js.map +1 -0
- package/dist/admin/surfaces/users/users-permissions.d.ts +3 -0
- package/dist/admin/surfaces/users/users-permissions.d.ts.map +1 -0
- package/dist/admin/surfaces/users/users-permissions.js +135 -0
- package/dist/admin/surfaces/users/users-permissions.js.map +1 -0
- package/dist/admin/surfaces/webServices/api-keys.d.ts +3 -0
- package/dist/admin/surfaces/webServices/api-keys.d.ts.map +1 -0
- package/dist/admin/surfaces/webServices/api-keys.js +65 -0
- package/dist/admin/surfaces/webServices/api-keys.js.map +1 -0
- package/dist/admin/surfaces/webServices/oauth.d.ts +3 -0
- package/dist/admin/surfaces/webServices/oauth.d.ts.map +1 -0
- package/dist/admin/surfaces/webServices/oauth.js +75 -0
- package/dist/admin/surfaces/webServices/oauth.js.map +1 -0
- package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts +8 -0
- package/dist/admin/surfaces/webServices/secret-reveal-modal.d.ts.map +1 -0
- package/dist/admin/surfaces/webServices/secret-reveal-modal.js +30 -0
- package/dist/admin/surfaces/webServices/secret-reveal-modal.js.map +1 -0
- package/dist/admin/surfaces/webServices/web-services-data.d.ts +38 -0
- package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -0
- package/dist/admin/surfaces/webServices/web-services-data.js +52 -0
- package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -0
- package/dist/api/admin-features-routes.d.ts +10 -0
- package/dist/api/admin-features-routes.d.ts.map +1 -0
- package/dist/api/admin-features-routes.js +61 -0
- package/dist/api/admin-features-routes.js.map +1 -0
- package/dist/api/graphql/resolvers.d.ts +6 -6
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/config/define.d.ts +22 -1
- package/dist/config/define.d.ts.map +1 -1
- package/dist/config/define.js +44 -0
- package/dist/config/define.js.map +1 -1
- package/dist/config/parse.d.ts.map +1 -1
- package/dist/config/parse.js +8 -2
- package/dist/config/parse.js.map +1 -1
- package/dist/config/types.d.ts +60 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +20 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/config/validate.js +60 -0
- package/dist/config/validate.js.map +1 -1
- package/dist/db/admin-features-queries.d.ts +29 -0
- package/dist/db/admin-features-queries.d.ts.map +1 -0
- package/dist/db/admin-features-queries.js +46 -0
- package/dist/db/admin-features-queries.js.map +1 -0
- package/dist/db/analytics-queries.d.ts +2 -2
- package/dist/db/audit-queries.d.ts +3 -3
- package/dist/db/category-queries.d.ts +6 -6
- package/dist/db/changeset-audit-queries.d.ts +2 -2
- package/dist/db/changeset-queries.d.ts +8 -8
- package/dist/db/extension-queries.d.ts +17 -17
- package/dist/db/feed-queries.d.ts +6 -6
- package/dist/db/media-queries.d.ts +12 -12
- package/dist/db/site-admin-queries.d.ts +1 -1
- package/dist/db/site-queries.d.ts +3 -3
- package/dist/db/tag-queries.d.ts +4 -4
- package/dist/db/webhook-queries.d.ts +8 -8
- package/dist/db/workflow-queries.d.ts +5 -5
- package/dist/experiments/schema.d.ts +1 -1
- package/dist/host-client/index.d.ts +1 -0
- package/dist/host-client/index.d.ts.map +1 -1
- package/dist/host-client/index.js +4 -0
- package/dist/host-client/index.js.map +1 -1
- package/dist/host-client/json.d.ts +36 -0
- package/dist/host-client/json.d.ts.map +1 -0
- package/dist/host-client/json.js +106 -0
- package/dist/host-client/json.js.map +1 -0
- package/dist/layout/modules-extended.d.ts.map +1 -1
- package/dist/layout/modules-extended.js +9 -8
- package/dist/layout/modules-extended.js.map +1 -1
- package/dist/layout/modules.js +5 -5
- package/dist/layout/modules.js.map +1 -1
- package/dist/schema/base.d.ts +1 -1
- package/dist/scope/breadcrumbs.d.ts.map +1 -1
- package/dist/scope/breadcrumbs.js +4 -1
- package/dist/scope/breadcrumbs.js.map +1 -1
- package/dist/scope/head-foot.d.ts +12 -4
- package/dist/scope/head-foot.d.ts.map +1 -1
- package/dist/scope/head-foot.js +14 -6
- package/dist/scope/head-foot.js.map +1 -1
- package/dist/scope/jsonld.d.ts.map +1 -1
- package/dist/scope/jsonld.js +1 -11
- package/dist/scope/jsonld.js.map +1 -1
- package/dist/scope/kywi-form.d.ts.map +1 -1
- package/dist/scope/kywi-form.js +3 -3
- package/dist/scope/kywi-form.js.map +1 -1
- package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
- package/dist/scope/kywi-wizard-form.js +3 -3
- package/dist/scope/kywi-wizard-form.js.map +1 -1
- package/dist/scope/rendering.d.ts.map +1 -1
- package/dist/scope/rendering.js +7 -6
- package/dist/scope/rendering.js.map +1 -1
- package/dist/util/jsonld.d.ts +13 -0
- package/dist/util/jsonld.d.ts.map +1 -0
- package/dist/util/jsonld.js +15 -0
- package/dist/util/jsonld.js.map +1 -0
- package/dist/util/sanitize.d.ts +6 -0
- package/dist/util/sanitize.d.ts.map +1 -0
- package/dist/util/sanitize.js +156 -0
- package/dist/util/sanitize.js.map +1 -0
- package/package.json +12 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `users.detail` surface — the edit-user form, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/users/[id]/page.tsx` (0.2.0 T9). Markup / copy
|
|
6
|
+
* unchanged; wiring substitutions (plan §1.3): `useParams` → `props.params`,
|
|
7
|
+
* `useRouter().push` → `useAdminContext().navigate`, `adminFetch` →
|
|
8
|
+
* `useAdminContext().fetch`, `getAdminUser()` → `useAdminContext().user`.
|
|
9
|
+
* `AdminShellWrapper` is gone — chrome is rendered once by `KywiAdminApp`
|
|
10
|
+
* (T14). Reuses core's existing `UserForm` — only the page orchestration is
|
|
11
|
+
* migrated here.
|
|
12
|
+
*/
|
|
13
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
14
|
+
import { useAdminContext } from '../../context.js';
|
|
15
|
+
import { UserForm } from '../../user-form.js';
|
|
16
|
+
import { LoadingState, ErrorState } from '../../primitives.js';
|
|
17
|
+
import { fetchData, loadGroupsWithMembers, loadSites, fullName, KYWI_ROLES, } from './users-data.js';
|
|
18
|
+
const ROLES = [...KYWI_ROLES];
|
|
19
|
+
export default function UsersDetailSurface({ params }) {
|
|
20
|
+
const { fetch: adminFetch, user: currentUser, navigate } = useAdminContext();
|
|
21
|
+
const userId = params.id ?? '';
|
|
22
|
+
const currentUserId = currentUser?.id ?? null;
|
|
23
|
+
const isSelf = currentUserId === userId;
|
|
24
|
+
const [data, setData] = useState(null);
|
|
25
|
+
const [loading, setLoading] = useState(true);
|
|
26
|
+
const [loadError, setLoadError] = useState(null);
|
|
27
|
+
const [submitError, setSubmitError] = useState(null);
|
|
28
|
+
const [submitting, setSubmitting] = useState(false);
|
|
29
|
+
const load = useCallback(async () => {
|
|
30
|
+
setLoading(true);
|
|
31
|
+
setLoadError(null);
|
|
32
|
+
try {
|
|
33
|
+
const [user, groupData, sites, memberships] = await Promise.all([
|
|
34
|
+
fetchData(adminFetch, `/api/v1/users/${userId}`),
|
|
35
|
+
loadGroupsWithMembers(adminFetch),
|
|
36
|
+
loadSites(adminFetch),
|
|
37
|
+
fetchData(adminFetch, `/api/v1/users/${userId}/sites`),
|
|
38
|
+
]);
|
|
39
|
+
const currentGroupIds = groupData.groups
|
|
40
|
+
.filter((g) => (groupData.membersByGroup[g.id] ?? []).includes(userId))
|
|
41
|
+
.map(g => g.id);
|
|
42
|
+
setData({
|
|
43
|
+
user,
|
|
44
|
+
groups: groupData.groups.map(g => ({ id: g.id, name: g.name })),
|
|
45
|
+
sites: sites.map(s => ({ id: s.id, name: s.name })),
|
|
46
|
+
currentGroupIds,
|
|
47
|
+
currentSiteIds: memberships.map(m => m.siteId),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
setLoadError(e instanceof Error ? e.message : 'Failed to load user');
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
setLoading(false);
|
|
55
|
+
}
|
|
56
|
+
}, [userId, adminFetch]);
|
|
57
|
+
useEffect(() => { load(); }, [load]);
|
|
58
|
+
const handleSubmit = useCallback(async (values) => {
|
|
59
|
+
if (!data)
|
|
60
|
+
return;
|
|
61
|
+
setSubmitting(true);
|
|
62
|
+
setSubmitError(null);
|
|
63
|
+
try {
|
|
64
|
+
const patch = {
|
|
65
|
+
email: values.email,
|
|
66
|
+
firstName: values.firstName,
|
|
67
|
+
lastName: values.lastName,
|
|
68
|
+
};
|
|
69
|
+
// Do not send role/active for your own account — the API forbids
|
|
70
|
+
// self-demotion / self-deactivation and the form locks these anyway.
|
|
71
|
+
if (!isSelf) {
|
|
72
|
+
patch.role = values.role;
|
|
73
|
+
patch.isActive = values.isActive;
|
|
74
|
+
}
|
|
75
|
+
const res = await adminFetch(`/api/v1/users/${userId}`, {
|
|
76
|
+
method: 'PUT',
|
|
77
|
+
headers: { 'Content-Type': 'application/json' },
|
|
78
|
+
body: JSON.stringify(patch),
|
|
79
|
+
});
|
|
80
|
+
if (!res.ok) {
|
|
81
|
+
const body = await res.json().catch(() => null);
|
|
82
|
+
throw new Error(body?.error?.message ?? `Save failed (${res.status})`);
|
|
83
|
+
}
|
|
84
|
+
// Reconcile group memberships
|
|
85
|
+
const nextGroups = new Set(values.groupIds);
|
|
86
|
+
const prevGroups = new Set(data.currentGroupIds);
|
|
87
|
+
const groupOps = [];
|
|
88
|
+
for (const gid of nextGroups) {
|
|
89
|
+
if (!prevGroups.has(gid))
|
|
90
|
+
groupOps.push(adminFetch(`/api/v1/groups/${gid}/members/${userId}`, { method: 'POST' }));
|
|
91
|
+
}
|
|
92
|
+
for (const gid of prevGroups) {
|
|
93
|
+
if (!nextGroups.has(gid))
|
|
94
|
+
groupOps.push(adminFetch(`/api/v1/groups/${gid}/members/${userId}`, { method: 'DELETE' }));
|
|
95
|
+
}
|
|
96
|
+
// Reconcile site memberships
|
|
97
|
+
const nextSites = new Set(values.siteIds);
|
|
98
|
+
const prevSites = new Set(data.currentSiteIds);
|
|
99
|
+
const siteOps = [];
|
|
100
|
+
for (const sid of nextSites) {
|
|
101
|
+
if (!prevSites.has(sid))
|
|
102
|
+
siteOps.push(adminFetch(`/api/v1/users/${userId}/sites/${sid}`, { method: 'POST' }));
|
|
103
|
+
}
|
|
104
|
+
for (const sid of prevSites) {
|
|
105
|
+
if (!nextSites.has(sid))
|
|
106
|
+
siteOps.push(adminFetch(`/api/v1/users/${userId}/sites/${sid}`, { method: 'DELETE' }));
|
|
107
|
+
}
|
|
108
|
+
await Promise.all([...groupOps, ...siteOps]);
|
|
109
|
+
navigate('/admin/users');
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
setSubmitError(e instanceof Error ? e.message : 'Failed to save user');
|
|
113
|
+
setSubmitting(false);
|
|
114
|
+
}
|
|
115
|
+
}, [data, isSelf, navigate, userId, adminFetch]);
|
|
116
|
+
const handleDelete = useCallback(async () => {
|
|
117
|
+
if (!data)
|
|
118
|
+
return;
|
|
119
|
+
if (!window.confirm(`Delete ${fullName(data.user)}? This cannot be undone.`))
|
|
120
|
+
return;
|
|
121
|
+
setSubmitting(true);
|
|
122
|
+
setSubmitError(null);
|
|
123
|
+
try {
|
|
124
|
+
const res = await adminFetch(`/api/v1/users/${userId}`, { method: 'DELETE' });
|
|
125
|
+
if (!res.ok) {
|
|
126
|
+
const body = await res.json().catch(() => null);
|
|
127
|
+
throw new Error(body?.error?.message ?? `Delete failed (${res.status})`);
|
|
128
|
+
}
|
|
129
|
+
navigate('/admin/users');
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
setSubmitError(e instanceof Error ? e.message : 'Failed to delete user');
|
|
133
|
+
setSubmitting(false);
|
|
134
|
+
}
|
|
135
|
+
}, [data, navigate, userId, adminFetch]);
|
|
136
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "kywi-admin-page-header", children: [_jsx("h1", { children: data ? `Edit ${fullName(data.user)}` : 'Edit User' }), data && !isSelf && (_jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger", onClick: handleDelete, disabled: submitting, children: "Delete User" }))] }), loading ? (_jsx(LoadingState, { label: "Loading user\u2026" })) : loadError ? (_jsx(ErrorState, { message: loadError, onRetry: load })) : data ? (_jsxs(_Fragment, { children: [isSelf && (_jsx("div", { className: "kywi-admin-callout kywi-admin-callout-info", children: _jsx("p", { children: "This is your own account. You cannot change your role, deactivate, or delete yourself." }) })), submitError && _jsx(ErrorState, { message: submitError }), _jsx(UserForm, { roles: ROLES, groups: data.groups, sites: data.sites, selfEdit: isSelf, user: {
|
|
137
|
+
id: data.user.id,
|
|
138
|
+
email: data.user.email,
|
|
139
|
+
firstName: data.user.firstName,
|
|
140
|
+
lastName: data.user.lastName,
|
|
141
|
+
role: data.user.role,
|
|
142
|
+
isActive: data.user.isActive,
|
|
143
|
+
groupIds: data.currentGroupIds,
|
|
144
|
+
siteIds: data.currentSiteIds,
|
|
145
|
+
forcePasswordReset: false,
|
|
146
|
+
}, onSubmit: handleSubmit, onCancel: () => navigate('/admin/users'), isSubmitting: submitting })] })) : null] }));
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=users-detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-detail.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-detail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-groups.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-groups.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAgBrD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAM,EAAE,YAAY,2CAgJ9D"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `users.groups` surface — group management (create/rename/delete + member
|
|
5
|
+
* add/remove), ported verbatim from `apps/reference/app/admin/users/groups/
|
|
6
|
+
* page.tsx` (0.2.0 T9). Markup / copy unchanged; wiring substitutions (plan
|
|
7
|
+
* §1.3): `adminFetch` → `useAdminContext().fetch`. `AdminShellWrapper` is gone
|
|
8
|
+
* — chrome is rendered once by `KywiAdminApp` (T14).
|
|
9
|
+
*/
|
|
10
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
11
|
+
import { useAdminContext } from '../../context.js';
|
|
12
|
+
import { GroupManager } from '../../group-manager.js';
|
|
13
|
+
import { LoadingState, ErrorState } from '../../primitives.js';
|
|
14
|
+
import { fetchData, loadUsers, loadGroupsWithMembers, fullName, KYWI_ROLES, } from './users-data.js';
|
|
15
|
+
const ROLES = [...KYWI_ROLES];
|
|
16
|
+
export default function UsersGroupsSurface(_props) {
|
|
17
|
+
const { fetch: adminFetch } = useAdminContext();
|
|
18
|
+
const [groups, setGroups] = useState([]);
|
|
19
|
+
const [membersByGroup, setMembersByGroup] = useState({});
|
|
20
|
+
const [users, setUsers] = useState([]);
|
|
21
|
+
const [selectedGroupId, setSelectedGroupId] = useState(null);
|
|
22
|
+
const [loading, setLoading] = useState(true);
|
|
23
|
+
const [error, setError] = useState(null);
|
|
24
|
+
const [busy, setBusy] = useState(false);
|
|
25
|
+
const load = useCallback(async (selectId) => {
|
|
26
|
+
setLoading(true);
|
|
27
|
+
setError(null);
|
|
28
|
+
try {
|
|
29
|
+
const [groupData, userList] = await Promise.all([loadGroupsWithMembers(adminFetch), loadUsers(adminFetch)]);
|
|
30
|
+
setGroups(groupData.groups);
|
|
31
|
+
setMembersByGroup(groupData.membersByGroup);
|
|
32
|
+
setUsers(userList);
|
|
33
|
+
setSelectedGroupId(prev => {
|
|
34
|
+
if (selectId !== undefined)
|
|
35
|
+
return selectId;
|
|
36
|
+
if (prev && groupData.groups.some(g => g.id === prev))
|
|
37
|
+
return prev;
|
|
38
|
+
return groupData.groups[0]?.id ?? null;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
setError(e instanceof Error ? e.message : 'Failed to load groups');
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
setLoading(false);
|
|
46
|
+
}
|
|
47
|
+
}, [adminFetch]);
|
|
48
|
+
useEffect(() => { load(); }, [load]);
|
|
49
|
+
const refreshMembers = useCallback(async (groupId) => {
|
|
50
|
+
try {
|
|
51
|
+
const ids = await fetchData(adminFetch, `/api/v1/groups/${groupId}/members`);
|
|
52
|
+
setMembersByGroup(prev => ({ ...prev, [groupId]: ids }));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
/* leave stale on failure; surfaced by the next full load */
|
|
56
|
+
}
|
|
57
|
+
}, [adminFetch]);
|
|
58
|
+
const withBusy = useCallback(async (fn) => {
|
|
59
|
+
setBusy(true);
|
|
60
|
+
setError(null);
|
|
61
|
+
try {
|
|
62
|
+
await fn();
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
setError(e instanceof Error ? e.message : 'Action failed');
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
setBusy(false);
|
|
69
|
+
}
|
|
70
|
+
}, []);
|
|
71
|
+
const post = useCallback(async (path, body) => {
|
|
72
|
+
return adminFetch(path, {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
...(body ? { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) } : {}),
|
|
75
|
+
});
|
|
76
|
+
}, [adminFetch]);
|
|
77
|
+
const handleCreate = useCallback((form) => withBusy(async () => {
|
|
78
|
+
const res = await post('/api/v1/groups', form);
|
|
79
|
+
if (!res.ok)
|
|
80
|
+
throw new Error(`Create failed (${res.status})`);
|
|
81
|
+
const created = (await res.json()).data;
|
|
82
|
+
await load(created.id);
|
|
83
|
+
}), [withBusy, load, post]);
|
|
84
|
+
const handleRename = useCallback((id, form) => withBusy(async () => {
|
|
85
|
+
const res = await adminFetch(`/api/v1/groups/${id}`, {
|
|
86
|
+
method: 'PUT',
|
|
87
|
+
headers: { 'Content-Type': 'application/json' },
|
|
88
|
+
body: JSON.stringify(form),
|
|
89
|
+
});
|
|
90
|
+
if (!res.ok)
|
|
91
|
+
throw new Error(`Save failed (${res.status})`);
|
|
92
|
+
await load(id);
|
|
93
|
+
}), [withBusy, load, adminFetch]);
|
|
94
|
+
const handleDelete = useCallback((id) => {
|
|
95
|
+
const group = groups.find(g => g.id === id);
|
|
96
|
+
if (!window.confirm(`Delete group "${group?.name ?? id}"? Members are not deleted.`))
|
|
97
|
+
return;
|
|
98
|
+
void withBusy(async () => {
|
|
99
|
+
const res = await adminFetch(`/api/v1/groups/${id}`, { method: 'DELETE' });
|
|
100
|
+
if (!res.ok)
|
|
101
|
+
throw new Error(`Delete failed (${res.status})`);
|
|
102
|
+
await load(null);
|
|
103
|
+
});
|
|
104
|
+
}, [groups, withBusy, load, adminFetch]);
|
|
105
|
+
const handleAddMember = useCallback((userId) => {
|
|
106
|
+
if (!selectedGroupId)
|
|
107
|
+
return;
|
|
108
|
+
void withBusy(async () => {
|
|
109
|
+
const res = await post(`/api/v1/groups/${selectedGroupId}/members/${userId}`);
|
|
110
|
+
if (!res.ok)
|
|
111
|
+
throw new Error(`Add member failed (${res.status})`);
|
|
112
|
+
await refreshMembers(selectedGroupId);
|
|
113
|
+
});
|
|
114
|
+
}, [selectedGroupId, withBusy, refreshMembers, post]);
|
|
115
|
+
const handleRemoveMember = useCallback((userId) => {
|
|
116
|
+
if (!selectedGroupId)
|
|
117
|
+
return;
|
|
118
|
+
void withBusy(async () => {
|
|
119
|
+
const res = await adminFetch(`/api/v1/groups/${selectedGroupId}/members/${userId}`, { method: 'DELETE' });
|
|
120
|
+
if (!res.ok)
|
|
121
|
+
throw new Error(`Remove member failed (${res.status})`);
|
|
122
|
+
await refreshMembers(selectedGroupId);
|
|
123
|
+
});
|
|
124
|
+
}, [selectedGroupId, withBusy, refreshMembers, adminFetch]);
|
|
125
|
+
const groupItems = useMemo(() => groups.map(g => ({
|
|
126
|
+
id: g.id,
|
|
127
|
+
name: g.name,
|
|
128
|
+
type: g.type,
|
|
129
|
+
defaultRole: g.defaultRole,
|
|
130
|
+
memberCount: (membersByGroup[g.id] ?? []).length,
|
|
131
|
+
})), [groups, membersByGroup]);
|
|
132
|
+
const userItems = useMemo(() => users.map(u => ({ id: u.id, name: fullName(u), email: u.email })), [users]);
|
|
133
|
+
const memberIds = selectedGroupId ? membersByGroup[selectedGroupId] ?? [] : [];
|
|
134
|
+
return loading ? (_jsx(LoadingState, { label: "Loading groups\u2026" })) : error && groups.length === 0 ? (_jsx(ErrorState, { message: error, onRetry: () => load() })) : (_jsxs(_Fragment, { children: [error && _jsx(ErrorState, { message: error }), _jsx(GroupManager, { groups: groupItems, users: userItems, roles: ROLES, selectedGroupId: selectedGroupId, memberIds: memberIds, isBusy: busy, onSelectGroup: setSelectedGroupId, onCreateGroup: handleCreate, onRenameGroup: handleRename, onDeleteGroup: handleDelete, onAddMember: handleAddMember, onRemoveMember: handleRemoveMember })] }));
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=users-groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-groups.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-groups.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-list.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-list.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAgBrD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAM,EAAE,YAAY,2CAiI5D"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `users.list` surface — the all-users list, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/users/page.tsx` (0.2.0 T9). Markup / copy
|
|
6
|
+
* unchanged; wiring substitutions (plan §1.3): `useRouter().push` →
|
|
7
|
+
* `useAdminContext().navigate`, `adminFetch` → `useAdminContext().fetch`,
|
|
8
|
+
* `getAdminUser()` → `useAdminContext().user`. `AdminShellWrapper` is gone —
|
|
9
|
+
* chrome is rendered once by `KywiAdminApp` (T14).
|
|
10
|
+
*/
|
|
11
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
12
|
+
import { useAdminContext } from '../../context.js';
|
|
13
|
+
import { UserListView } from '../../user-list.js';
|
|
14
|
+
import { LoadingState, ErrorState } from '../../primitives.js';
|
|
15
|
+
import { loadUsers, loadGroupsWithMembers, buildUserGroupNames, fullName, KYWI_ROLES, } from './users-data.js';
|
|
16
|
+
const PAGE_SIZE = 20;
|
|
17
|
+
const ROLES = [...KYWI_ROLES];
|
|
18
|
+
export default function UsersListSurface(_props) {
|
|
19
|
+
const { fetch: adminFetch, user, navigate } = useAdminContext();
|
|
20
|
+
const [rawUsers, setRawUsers] = useState([]);
|
|
21
|
+
const [groupNamesByUser, setGroupNamesByUser] = useState({});
|
|
22
|
+
const [loading, setLoading] = useState(true);
|
|
23
|
+
const [error, setError] = useState(null);
|
|
24
|
+
const [search, setSearch] = useState('');
|
|
25
|
+
const [roleFilter, setRoleFilter] = useState(undefined);
|
|
26
|
+
const [statusFilter, setStatusFilter] = useState(undefined);
|
|
27
|
+
const [page, setPage] = useState(1);
|
|
28
|
+
const currentUserId = user?.id ?? null;
|
|
29
|
+
const load = useCallback(async () => {
|
|
30
|
+
setLoading(true);
|
|
31
|
+
setError(null);
|
|
32
|
+
try {
|
|
33
|
+
const [users, groupData] = await Promise.all([loadUsers(adminFetch), loadGroupsWithMembers(adminFetch)]);
|
|
34
|
+
setRawUsers(users);
|
|
35
|
+
setGroupNamesByUser(buildUserGroupNames(groupData.groups, groupData.membersByGroup));
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
setError(e instanceof Error ? e.message : 'Failed to load users');
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
setLoading(false);
|
|
42
|
+
}
|
|
43
|
+
}, [adminFetch]);
|
|
44
|
+
useEffect(() => { load(); }, [load]);
|
|
45
|
+
// ── Derived: filter → paginate ──────────────────────────────────────────
|
|
46
|
+
const filtered = useMemo(() => {
|
|
47
|
+
const q = search.trim().toLowerCase();
|
|
48
|
+
return rawUsers.filter(u => {
|
|
49
|
+
if (roleFilter && u.role !== roleFilter)
|
|
50
|
+
return false;
|
|
51
|
+
if (statusFilter === 'active' && !u.isActive)
|
|
52
|
+
return false;
|
|
53
|
+
if (statusFilter === 'inactive' && u.isActive)
|
|
54
|
+
return false;
|
|
55
|
+
if (q) {
|
|
56
|
+
const hay = `${u.firstName} ${u.lastName} ${u.email}`.toLowerCase();
|
|
57
|
+
if (!hay.includes(q))
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
});
|
|
62
|
+
}, [rawUsers, search, roleFilter, statusFilter]);
|
|
63
|
+
const total = filtered.length;
|
|
64
|
+
const totalPages = total === 0 ? 1 : Math.ceil(total / PAGE_SIZE);
|
|
65
|
+
const safePage = Math.min(page, totalPages);
|
|
66
|
+
const pageSlice = filtered.slice((safePage - 1) * PAGE_SIZE, safePage * PAGE_SIZE);
|
|
67
|
+
const items = pageSlice.map(u => ({
|
|
68
|
+
id: u.id,
|
|
69
|
+
email: u.email,
|
|
70
|
+
firstName: u.firstName,
|
|
71
|
+
lastName: u.lastName,
|
|
72
|
+
role: u.role,
|
|
73
|
+
isActive: u.isActive,
|
|
74
|
+
lastLoginAt: u.lastLoginAt,
|
|
75
|
+
groups: groupNamesByUser[u.id] ?? [],
|
|
76
|
+
}));
|
|
77
|
+
// ── Bulk actions (per-user PUT). Skip self to respect API safety rails. ──
|
|
78
|
+
const handleBulkAction = useCallback(async (action, ids, role) => {
|
|
79
|
+
const targets = ids.filter(id => {
|
|
80
|
+
if ((action === 'deactivate' || action === 'changeRole') && id === currentUserId)
|
|
81
|
+
return false;
|
|
82
|
+
return true;
|
|
83
|
+
});
|
|
84
|
+
const patch = action === 'activate'
|
|
85
|
+
? { isActive: true }
|
|
86
|
+
: action === 'deactivate'
|
|
87
|
+
? { isActive: false }
|
|
88
|
+
: { role };
|
|
89
|
+
await Promise.all(targets.map(id => adminFetch(`/api/v1/users/${id}`, {
|
|
90
|
+
method: 'PUT',
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
body: JSON.stringify(patch),
|
|
93
|
+
})));
|
|
94
|
+
await load();
|
|
95
|
+
}, [currentUserId, load, adminFetch]);
|
|
96
|
+
const handleExportCsv = useCallback(() => {
|
|
97
|
+
const header = ['Name', 'Email', 'Role', 'Status', 'Groups', 'Last Login'];
|
|
98
|
+
const rows = filtered.map(u => [
|
|
99
|
+
fullName(u),
|
|
100
|
+
u.email,
|
|
101
|
+
u.role,
|
|
102
|
+
u.isActive ? 'Active' : 'Inactive',
|
|
103
|
+
(groupNamesByUser[u.id] ?? []).join('; '),
|
|
104
|
+
u.lastLoginAt ?? 'Never',
|
|
105
|
+
]);
|
|
106
|
+
const csv = [header, ...rows]
|
|
107
|
+
.map(cols => cols.map(c => `"${String(c).replace(/"/g, '""')}"`).join(','))
|
|
108
|
+
.join('\n');
|
|
109
|
+
const blob = new Blob([csv], { type: 'text/csv' });
|
|
110
|
+
const url = URL.createObjectURL(blob);
|
|
111
|
+
const a = document.createElement('a');
|
|
112
|
+
a.href = url;
|
|
113
|
+
a.download = 'users.csv';
|
|
114
|
+
a.click();
|
|
115
|
+
URL.revokeObjectURL(url);
|
|
116
|
+
}, [filtered, groupNamesByUser]);
|
|
117
|
+
return loading ? (_jsx(LoadingState, { label: "Loading users\u2026" })) : error ? (_jsx(ErrorState, { message: error, onRetry: load })) : (_jsx(UserListView, { users: items, meta: { total, page: safePage, pageSize: PAGE_SIZE, totalPages }, roles: ROLES, onSearch: q => { setSearch(q); setPage(1); }, onFilterRole: r => { setRoleFilter(r); setPage(1); }, onFilterStatus: s => { setStatusFilter(s); setPage(1); }, onPageChange: setPage, onUserClick: id => navigate(`/admin/users/${id}`), onNewClick: () => navigate('/admin/users/new'), onBulkAction: handleBulkAction, onExportCsv: handleExportCsv }));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=users-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-list.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-new.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-new.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AASrD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,YAAY,2CAyF3D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `users.new` surface — the create-user form, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/users/new/page.tsx` (0.2.0 T9). Markup / copy
|
|
6
|
+
* unchanged; wiring substitutions (plan §1.3): `useRouter().push` →
|
|
7
|
+
* `useAdminContext().navigate`, `adminFetch` → `useAdminContext().fetch`.
|
|
8
|
+
* `AdminShellWrapper` is gone — chrome is rendered once by `KywiAdminApp`
|
|
9
|
+
* (T14). Reuses core's existing `UserForm` — only the page orchestration is
|
|
10
|
+
* migrated here.
|
|
11
|
+
*/
|
|
12
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
13
|
+
import { useAdminContext } from '../../context.js';
|
|
14
|
+
import { UserForm } from '../../user-form.js';
|
|
15
|
+
import { LoadingState, ErrorState } from '../../primitives.js';
|
|
16
|
+
import { loadGroups, loadSites } from './users-data.js';
|
|
17
|
+
// Least-privilege first, so a new user defaults to the safest role.
|
|
18
|
+
const CREATE_ROLES = ['reader', 'author', 'editor', 'siteAdmin', 'superAdmin'];
|
|
19
|
+
export default function UsersNewSurface(_props) {
|
|
20
|
+
const { fetch: adminFetch, navigate } = useAdminContext();
|
|
21
|
+
const [groups, setGroups] = useState([]);
|
|
22
|
+
const [sites, setSites] = useState([]);
|
|
23
|
+
const [loading, setLoading] = useState(true);
|
|
24
|
+
const [loadError, setLoadError] = useState(null);
|
|
25
|
+
const [submitError, setSubmitError] = useState(null);
|
|
26
|
+
const [submitting, setSubmitting] = useState(false);
|
|
27
|
+
const load = useCallback(async () => {
|
|
28
|
+
setLoading(true);
|
|
29
|
+
setLoadError(null);
|
|
30
|
+
try {
|
|
31
|
+
const [g, s] = await Promise.all([loadGroups(adminFetch), loadSites(adminFetch)]);
|
|
32
|
+
setGroups(g.map(x => ({ id: x.id, name: x.name })));
|
|
33
|
+
setSites(s.map(x => ({ id: x.id, name: x.name })));
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
setLoadError(e instanceof Error ? e.message : 'Failed to load form data');
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
setLoading(false);
|
|
40
|
+
}
|
|
41
|
+
}, [adminFetch]);
|
|
42
|
+
useEffect(() => { load(); }, [load]);
|
|
43
|
+
const handleSubmit = useCallback(async (values) => {
|
|
44
|
+
setSubmitting(true);
|
|
45
|
+
setSubmitError(null);
|
|
46
|
+
try {
|
|
47
|
+
const res = await adminFetch('/api/v1/users', {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: { 'Content-Type': 'application/json' },
|
|
50
|
+
body: JSON.stringify({
|
|
51
|
+
email: values.email,
|
|
52
|
+
password: values.password,
|
|
53
|
+
firstName: values.firstName,
|
|
54
|
+
lastName: values.lastName,
|
|
55
|
+
role: values.role,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
const body = await res.json().catch(() => null);
|
|
60
|
+
throw new Error(body?.error?.message ?? `Create failed (${res.status})`);
|
|
61
|
+
}
|
|
62
|
+
const created = (await res.json()).data;
|
|
63
|
+
// Reconcile memberships. The server already grants membership in the
|
|
64
|
+
// default site; these calls add the explicitly-checked groups/sites.
|
|
65
|
+
await Promise.all([
|
|
66
|
+
...values.groupIds.map(gid => adminFetch(`/api/v1/groups/${gid}/members/${created.id}`, { method: 'POST' })),
|
|
67
|
+
...values.siteIds.map(sid => adminFetch(`/api/v1/users/${created.id}/sites/${sid}`, { method: 'POST' })),
|
|
68
|
+
]);
|
|
69
|
+
navigate('/admin/users');
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
setSubmitError(e instanceof Error ? e.message : 'Failed to create user');
|
|
73
|
+
setSubmitting(false);
|
|
74
|
+
}
|
|
75
|
+
}, [adminFetch, navigate]);
|
|
76
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "New User" }) }), loading ? (_jsx(LoadingState, { label: "Preparing form\u2026" })) : loadError ? (_jsx(ErrorState, { message: loadError, onRetry: load })) : (_jsxs(_Fragment, { children: [submitError && _jsx(ErrorState, { message: submitError }), _jsx(UserForm, { roles: CREATE_ROLES, groups: groups, sites: sites, onSubmit: handleSubmit, onCancel: () => navigate('/admin/users'), isSubmitting: submitting })] }))] }));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=users-new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-new.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-new.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-permissions.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/users/users-permissions.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA4BrD,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAM,EAAE,YAAY,2CAgInE"}
|