@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,138 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `settings.adminFeatures` surface (T16) — the superAdmin "Admin Features"
|
|
5
|
+
* runtime feature-flag manager (plan §4). An area-grouped toggle list for the
|
|
6
|
+
* ACTIVE site: each admin feature-area can be switched off at runtime without a
|
|
7
|
+
* redeploy, hiding its surfaces from the nav + router for everyone on that site.
|
|
8
|
+
*
|
|
9
|
+
* Precedence made visible (`effective = configCeiling ∧ runtimeFlag ∧ role`):
|
|
10
|
+
* - Areas the host disabled in `kywi.config.ts` (the config ceiling) are shown
|
|
11
|
+
* LOCKED with a "disabled in kywi.config.ts" badge — a runtime toggle can
|
|
12
|
+
* never re-enable a config-disabled area (config beats runtime).
|
|
13
|
+
* - Everything else is a live toggle persisted to the per-site `admin.features`
|
|
14
|
+
* settings key via `PUT /admin-features` (superAdmin-only).
|
|
15
|
+
*
|
|
16
|
+
* Self-lockout escape hatch: THIS surface stays reachable even when the
|
|
17
|
+
* `settings` area is toggled off (see `isSurfaceVisible` / `resolveSurface`), so
|
|
18
|
+
* a superAdmin can always come back here and switch things on again.
|
|
19
|
+
*/
|
|
20
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
21
|
+
import { ADMIN_AREAS } from '../../registry.js';
|
|
22
|
+
import { useAdminContext } from '../../context.js';
|
|
23
|
+
import { LoadingState, ErrorState, SuccessFlash, ConfigNote } from './states.js';
|
|
24
|
+
/** Human labels for each feature-area (the flag/config granularity). */
|
|
25
|
+
const AREA_LABELS = {
|
|
26
|
+
dashboard: 'Dashboard',
|
|
27
|
+
contentTree: 'Site Tree',
|
|
28
|
+
content: 'Content',
|
|
29
|
+
approvals: 'Approvals',
|
|
30
|
+
changesets: 'Changesets',
|
|
31
|
+
search: 'Search',
|
|
32
|
+
media: 'Media',
|
|
33
|
+
users: 'Users',
|
|
34
|
+
forms: 'Forms',
|
|
35
|
+
taxonomy: 'Categories & Tags',
|
|
36
|
+
trash: 'Trash',
|
|
37
|
+
comments: 'Comments',
|
|
38
|
+
translations: 'Translations',
|
|
39
|
+
feeds: 'Feeds',
|
|
40
|
+
audiences: 'Audiences',
|
|
41
|
+
experiments: 'Experiments',
|
|
42
|
+
layouts: 'Layouts',
|
|
43
|
+
extensions: 'Extensions',
|
|
44
|
+
plugins: 'Plugins',
|
|
45
|
+
webServices: 'Web Services',
|
|
46
|
+
settings: 'Settings',
|
|
47
|
+
contentTypes: 'Content Types',
|
|
48
|
+
};
|
|
49
|
+
export default function AdminFeaturesSurface(_props) {
|
|
50
|
+
const { fetch: adminFetch, runtime } = useAdminContext();
|
|
51
|
+
const rt = runtime;
|
|
52
|
+
const ceiling = rt.admin;
|
|
53
|
+
const [flags, setFlags] = useState({});
|
|
54
|
+
const [siteId, setSiteId] = useState('');
|
|
55
|
+
const [loading, setLoading] = useState(true);
|
|
56
|
+
const [error, setError] = useState(null);
|
|
57
|
+
const [savingArea, setSavingArea] = useState(null);
|
|
58
|
+
const [saveError, setSaveError] = useState(null);
|
|
59
|
+
const [saved, setSaved] = useState(false);
|
|
60
|
+
const load = useCallback(async () => {
|
|
61
|
+
setLoading(true);
|
|
62
|
+
setError(null);
|
|
63
|
+
try {
|
|
64
|
+
const res = await adminFetch('/api/v1/admin-features');
|
|
65
|
+
if (!res.ok)
|
|
66
|
+
throw new Error(`Failed to load admin features (${res.status}).`);
|
|
67
|
+
const body = (await res.json());
|
|
68
|
+
setFlags(body.data?.flags ?? {});
|
|
69
|
+
setSiteId(body.data?.siteId ?? '');
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
setError(e instanceof Error ? e.message : 'Failed to load admin features.');
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
setLoading(false);
|
|
76
|
+
}
|
|
77
|
+
}, [adminFetch]);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
void load();
|
|
80
|
+
}, [load]);
|
|
81
|
+
// The flags GET returns the resolved DB-UUID siteId; `runtime.sites` is keyed
|
|
82
|
+
// by CONFIG ids (which may be slugs), so a UUID often won't match. Fall back to
|
|
83
|
+
// a friendly label rather than surfacing a raw UUID.
|
|
84
|
+
const siteName = useMemo(() => {
|
|
85
|
+
const s = rt.sites.find(site => site.id === siteId);
|
|
86
|
+
return s?.name ?? 'the active site';
|
|
87
|
+
}, [rt.sites, siteId]);
|
|
88
|
+
const persist = useCallback(async (next, area) => {
|
|
89
|
+
const prev = flags;
|
|
90
|
+
setSavingArea(area);
|
|
91
|
+
setSaveError(null);
|
|
92
|
+
setSaved(false);
|
|
93
|
+
setFlags(next); // optimistic
|
|
94
|
+
try {
|
|
95
|
+
const res = await adminFetch('/api/v1/admin-features', {
|
|
96
|
+
method: 'PUT',
|
|
97
|
+
body: JSON.stringify(next),
|
|
98
|
+
});
|
|
99
|
+
if (!res.ok)
|
|
100
|
+
throw new Error(`Save failed (${res.status}).`);
|
|
101
|
+
const body = (await res.json());
|
|
102
|
+
if (body.data?.flags)
|
|
103
|
+
setFlags(body.data.flags);
|
|
104
|
+
setSaved(true);
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
setFlags(prev); // revert on failure
|
|
108
|
+
setSaveError(e instanceof Error ? e.message : 'Save failed.');
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
setSavingArea(null);
|
|
112
|
+
}
|
|
113
|
+
}, [adminFetch, flags]);
|
|
114
|
+
function toggleArea(area, enabled) {
|
|
115
|
+
void persist({ ...flags, [area]: enabled }, area);
|
|
116
|
+
}
|
|
117
|
+
if (loading)
|
|
118
|
+
return _jsx(LoadingState, { label: "Loading admin features\u2026" });
|
|
119
|
+
if (error)
|
|
120
|
+
return _jsx(ErrorState, { message: error, onRetry: () => void load() });
|
|
121
|
+
const masterOff = ceiling.enabled === false;
|
|
122
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Admin Features" }) }), _jsxs("div", { className: "kywi-admin-settings-section", children: [_jsxs(ConfigNote, { children: ["Runtime feature toggles for ", _jsx("strong", { children: siteName || 'this site' }), ". Turning a feature off hides its pages from the admin for everyone on this site \u2014 it is a UI gate, not a security boundary (the underlying API stays governed by roles). Features disabled in", ' ', _jsx("code", { children: "kywi.config.ts" }), " are locked here (config beats runtime). Admin Features itself can never lock itself out."] }), saved && _jsx(SuccessFlash, { message: "Saved." }), saveError && _jsx(ErrorState, { message: saveError }), _jsx("ul", { className: "kywi-admin-feature-list", style: { listStyle: 'none', margin: 0, padding: 0 }, children: ADMIN_AREAS.map(area => {
|
|
123
|
+
const configEnabled = !masterOff && ceiling.features[area] !== false;
|
|
124
|
+
const locked = !configEnabled;
|
|
125
|
+
const runtimeEnabled = flags[area] !== false;
|
|
126
|
+
const checked = configEnabled && runtimeEnabled;
|
|
127
|
+
const inputId = `admin-feature-${area}`;
|
|
128
|
+
return (_jsxs("li", { className: "kywi-form-field", style: {
|
|
129
|
+
display: 'flex',
|
|
130
|
+
alignItems: 'center',
|
|
131
|
+
justifyContent: 'space-between',
|
|
132
|
+
gap: 'var(--kywi-space-4)',
|
|
133
|
+
padding: 'var(--kywi-space-3) 0',
|
|
134
|
+
borderBottom: '1px solid var(--kywi-border, #e5e7eb)',
|
|
135
|
+
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: '2px' }, children: [_jsx("label", { className: "kywi-label", htmlFor: inputId, style: { margin: 0 }, children: AREA_LABELS[area] }), _jsxs("code", { className: "kywi-field-hint", style: { margin: 0 }, children: [area, locked && ' · disabled in kywi.config.ts'] })] }), _jsx("input", { id: inputId, type: "checkbox", role: "switch", checked: checked, disabled: locked || savingArea !== null, "aria-label": `${AREA_LABELS[area]} ${checked ? 'enabled' : 'disabled'}`, onChange: e => toggleArea(area, e.target.checked) })] }, area));
|
|
136
|
+
}) })] })] }));
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=admin-features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-features.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/admin-features.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-ax.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-ax.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAkErD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,MAAM,EAAE,YAAY,2CAqG7D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `settings.ax` surface — the Agent Experience status page, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/settings/ax/page.tsx` (0.2.0 T12). Markup / classes /
|
|
6
|
+
* copy / inline styles (including the local `Badge`/`SurfaceRow` helpers)
|
|
7
|
+
* unchanged; wiring substitution (plan §1.3): `adminFetch` →
|
|
8
|
+
* `useAdminContext().fetch`. `AdminShellWrapper` is gone — chrome is rendered
|
|
9
|
+
* once by `KywiAdminApp` (T14).
|
|
10
|
+
*/
|
|
11
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
12
|
+
import { useAdminContext } from '../../context.js';
|
|
13
|
+
import { LoadingState, ErrorState, DefList, DefRow, ConfigNote } from './states.js';
|
|
14
|
+
function Badge({ on }) {
|
|
15
|
+
return (_jsx("span", { style: {
|
|
16
|
+
display: 'inline-block',
|
|
17
|
+
whiteSpace: 'nowrap',
|
|
18
|
+
flexShrink: 0,
|
|
19
|
+
padding: '2px 10px',
|
|
20
|
+
borderRadius: '999px',
|
|
21
|
+
fontSize: '12px',
|
|
22
|
+
fontWeight: 600,
|
|
23
|
+
background: on ? 'var(--kywi-color-success-bg, #dcfce7)' : 'var(--kywi-color-muted-bg, #f1f5f9)',
|
|
24
|
+
color: on ? 'var(--kywi-color-success-fg, #166534)' : 'var(--kywi-color-muted-fg, #64748b)',
|
|
25
|
+
}, children: on ? 'Enabled' : 'Disabled' }));
|
|
26
|
+
}
|
|
27
|
+
/** A surface row: name on the left; enabled badge + a preview link on the right. */
|
|
28
|
+
function SurfaceRow({ label, on, href }) {
|
|
29
|
+
return (_jsxs("div", { style: {
|
|
30
|
+
display: 'flex',
|
|
31
|
+
justifyContent: 'space-between',
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
gap: 'var(--kywi-space-3, 12px)',
|
|
34
|
+
padding: 'var(--kywi-space-3, 12px) 0',
|
|
35
|
+
borderBottom: '1px solid var(--kywi-color-border, #e2e8f0)',
|
|
36
|
+
}, children: [_jsx("span", { style: { fontWeight: 500, fontFamily: 'var(--kywi-font-mono, ui-monospace, monospace)', fontSize: '13px' }, children: label }), _jsxs("span", { style: { display: 'flex', gap: 'var(--kywi-space-3, 12px)', alignItems: 'center', whiteSpace: 'nowrap' }, children: [href && on ? (_jsxs("a", { href: href, target: "_blank", rel: "noreferrer", style: { whiteSpace: 'nowrap', fontSize: '13px' }, children: [href, " \u2197"] })) : null, _jsx(Badge, { on: on })] })] }));
|
|
37
|
+
}
|
|
38
|
+
export default function SettingsAxSurface(_props) {
|
|
39
|
+
const { fetch: adminFetch } = useAdminContext();
|
|
40
|
+
const [status, setStatus] = useState(null);
|
|
41
|
+
const [loading, setLoading] = useState(true);
|
|
42
|
+
const [error, setError] = useState(null);
|
|
43
|
+
const load = useCallback(async () => {
|
|
44
|
+
setLoading(true);
|
|
45
|
+
setError(null);
|
|
46
|
+
try {
|
|
47
|
+
const res = await adminFetch('/api/v1/ax/status');
|
|
48
|
+
if (!res.ok)
|
|
49
|
+
throw new Error(`Failed to load AX status (${res.status})`);
|
|
50
|
+
const body = await res.json();
|
|
51
|
+
setStatus(body.data);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
setError(e instanceof Error ? e.message : 'Failed to load AX status');
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
setLoading(false);
|
|
58
|
+
}
|
|
59
|
+
}, [adminFetch]);
|
|
60
|
+
useEffect(() => { load(); }, [load]);
|
|
61
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Agent Experience" }) }), loading ? (_jsx(LoadingState, { label: "Loading AX status\u2026" })) : error || !status ? (_jsx(ErrorState, { message: error ?? 'AX status unavailable.', onRetry: load })) : (_jsxs("div", { className: "kywi-settings-grid", children: [_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "AX status", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Status" }), _jsxs("div", { style: { display: 'flex', gap: 'var(--kywi-space-5, 20px)', marginBottom: 'var(--kywi-space-5, 20px)', flexWrap: 'wrap' }, children: [_jsxs("div", { className: "kywi-cache-stat", children: [_jsx("span", { className: "kywi-cache-stat-num", children: status.counts.published }), _jsx("span", { className: "kywi-cache-stat-label", children: "published nodes" })] }), _jsxs("div", { className: "kywi-cache-stat", children: [_jsx("span", { className: "kywi-cache-stat-num", children: status.counts.indexable }), _jsx("span", { className: "kywi-cache-stat-label", children: "indexable in sitemap" })] }), _jsxs("div", { className: "kywi-cache-stat", children: [_jsx("span", { className: "kywi-cache-stat-num", children: status.counts.excluded }), _jsx("span", { className: "kywi-cache-stat-label", children: "excluded from search & AX" })] })] }), _jsx(DefList, { children: _jsx(DefRow, { term: "Agent Experience", children: _jsx(Badge, { on: status.enabled }) }) }), _jsx("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4, 16px)' }, children: "Every surface is a deterministic projection of the published content tree. Caches refresh automatically when content is published, updated, or deleted \u2014 there is no manual regeneration step." })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "AX surfaces", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Surfaces & preview" }), _jsxs("div", { children: [_jsx(SurfaceRow, { label: "llms.txt", on: status.surfaces.llmsTxt, href: status.urls.llmsTxt }), _jsx(SurfaceRow, { label: "llms-full.txt", on: status.surfaces.llmsFull, href: status.urls.llmsFull }), _jsx(SurfaceRow, { label: "sitemap.xml", on: status.surfaces.sitemap, href: status.urls.sitemap }), _jsx(SurfaceRow, { label: "robots.txt", on: status.surfaces.robots, href: status.urls.robots }), _jsx(SurfaceRow, { label: "JSON-LD", on: status.surfaces.jsonLd }), _jsx(SurfaceRow, { label: "Markdown negotiation", on: status.surfaces.markdown })] }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4, 16px)' }, children: ["JSON-LD is emitted inline on public pages (view a page\u2019s source for the", ' ', _jsx("code", { children: "application/ld+json" }), " block). Markdown negotiation serves", ' ', _jsx("code", { children: "text/markdown" }), " for a page when requested with an ", _jsx("code", { children: "Accept" }), " header or a ", _jsx("code", { children: ".md" }), " suffix."] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "AX curation", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Curation" }), _jsxs(ConfigNote, { children: ["AX curation (which surfaces are enabled, the content-type\u00A0\u2192\u00A0schema.org JSON-LD mapping, robots policies, llms.txt sections) is config-as-code. Edit it under", ' ', _jsx("code", { children: "ax" }), " in ", _jsx("code", { children: "kywi.config.ts" }), "; it is versioned with the site and read-only here."] }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4, 16px)' }, children: ["Per-page controls (", _jsx("em", { children: "Exclude from search & AX" }), ", sitemap priority, change frequency) live on each node\u2019s ", _jsx("strong", { children: "SEO" }), " tab in the content editor."] })] })] }))] }));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=settings-ax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-ax.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-ax.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-cache.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-cache.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAcrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,YAAY,2CAsGhE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `settings.cache` surface — live cache status + clear, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/settings/cache/page.tsx` (0.2.0 T12). Markup /
|
|
6
|
+
* classes / copy unchanged; wiring substitution (plan §1.3): `adminFetch` →
|
|
7
|
+
* `useAdminContext().fetch`. `AdminShellWrapper` is gone — chrome is rendered
|
|
8
|
+
* once by `KywiAdminApp` (T14).
|
|
9
|
+
*/
|
|
10
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
11
|
+
import { useAdminContext } from '../../context.js';
|
|
12
|
+
import { LoadingState, ErrorState, SuccessFlash, DefList, DefRow } from './states.js';
|
|
13
|
+
function ttl(v) {
|
|
14
|
+
return v != null ? `${v}s` : '—';
|
|
15
|
+
}
|
|
16
|
+
export default function SettingsCacheSurface(_props) {
|
|
17
|
+
const { fetch: adminFetch } = useAdminContext();
|
|
18
|
+
const [status, setStatus] = useState(null);
|
|
19
|
+
const [loading, setLoading] = useState(true);
|
|
20
|
+
const [error, setError] = useState(null);
|
|
21
|
+
const [clearing, setClearing] = useState(false);
|
|
22
|
+
const [clearError, setClearError] = useState(null);
|
|
23
|
+
const [cleared, setCleared] = useState(false);
|
|
24
|
+
const load = useCallback(async () => {
|
|
25
|
+
setLoading(true);
|
|
26
|
+
setError(null);
|
|
27
|
+
try {
|
|
28
|
+
const res = await adminFetch('/api/v1/cache/status');
|
|
29
|
+
if (!res.ok)
|
|
30
|
+
throw new Error(`Failed to load cache status (${res.status})`);
|
|
31
|
+
const body = await res.json();
|
|
32
|
+
setStatus(body.data);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
setError(e instanceof Error ? e.message : 'Failed to load cache status');
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
setLoading(false);
|
|
39
|
+
}
|
|
40
|
+
}, [adminFetch]);
|
|
41
|
+
useEffect(() => { load(); }, [load]);
|
|
42
|
+
const handleClear = useCallback(async () => {
|
|
43
|
+
setClearing(true);
|
|
44
|
+
setClearError(null);
|
|
45
|
+
setCleared(false);
|
|
46
|
+
try {
|
|
47
|
+
const res = await adminFetch('/api/v1/cache/clear', { method: 'POST' });
|
|
48
|
+
if (!res.ok)
|
|
49
|
+
throw new Error(`Failed to clear cache (${res.status})`);
|
|
50
|
+
const body = await res.json();
|
|
51
|
+
setCleared(true);
|
|
52
|
+
// Reflect the post-clear entry count without a full reload flash.
|
|
53
|
+
setStatus(prev => (prev ? { ...prev, entries: (body.data?.entries ?? prev.entries) } : prev));
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
setClearError(e instanceof Error ? e.message : 'Failed to clear cache');
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
setClearing(false);
|
|
60
|
+
}
|
|
61
|
+
}, [adminFetch]);
|
|
62
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Cache" }) }), loading ? (_jsx(LoadingState, { label: "Loading cache status\u2026" })) : error || !status ? (_jsx(ErrorState, { message: error ?? 'Cache status unavailable.', onRetry: load })) : (_jsxs("div", { className: "kywi-settings-grid", children: [_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Cache status", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Status" }), cleared && _jsx(SuccessFlash, { message: "Cache cleared." }), clearError && _jsx(ErrorState, { message: clearError }), _jsxs("div", { className: "kywi-cache-stat", style: { marginBottom: 'var(--kywi-space-5)' }, children: [_jsx("span", { className: "kywi-cache-stat-num", children: status.entries != null ? status.entries : '—' }), _jsx("span", { className: "kywi-cache-stat-label", children: status.entries != null ? 'cached entries' : 'entry count not reported by this provider' })] }), _jsx(DefList, { children: _jsx(DefRow, { term: "Provider", mono: true, children: status.provider }) }), _jsx("div", { className: "kywi-form-actions", children: _jsx("button", { type: "button", className: "kywi-btn kywi-btn-danger", onClick: handleClear, disabled: clearing, children: clearing ? 'Clearing…' : 'Clear cache' }) })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Cache TTLs", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Time-to-live" }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Default", mono: true, children: ttl(status.ttl.default) }), _jsx(DefRow, { term: "Content", mono: true, children: ttl(status.ttl.content) }), _jsx(DefRow, { term: "Feeds", mono: true, children: ttl(status.ttl.feed) }), _jsx(DefRow, { term: "Navigation", mono: true, children: ttl(status.ttl.nav) })] }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["TTLs are defined in ", _jsx("code", { children: "kywi.config.ts" }), " under ", _jsx("code", { children: "cache" }), "."] })] })] }))] }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=settings-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-cache.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-cache.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-email.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-email.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAsBrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,YAAY,2CA0IhE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `settings.email` surface — email status + send-test, ported verbatim from
|
|
5
|
+
* `apps/reference/app/admin/settings/email/page.tsx` (0.2.0 T12). Markup /
|
|
6
|
+
* classes / copy / inline styles unchanged; wiring substitution (plan §1.3):
|
|
7
|
+
* `adminFetch` → `useAdminContext().fetch`. `AdminShellWrapper` is gone — chrome
|
|
8
|
+
* is rendered once by `KywiAdminApp` (T14).
|
|
9
|
+
*/
|
|
10
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
11
|
+
import { useAdminContext } from '../../context.js';
|
|
12
|
+
import { LoadingState, ErrorState, SuccessFlash, ConfigNote, DefList, DefRow } from './states.js';
|
|
13
|
+
const CONFIG_SNIPPET = `email: {
|
|
14
|
+
provider: 'smtp',
|
|
15
|
+
from: 'noreply@yoursite.com',
|
|
16
|
+
smtp: {
|
|
17
|
+
host: 'smtp.example.com',
|
|
18
|
+
port: 587,
|
|
19
|
+
secure: false,
|
|
20
|
+
auth: { user: 'USER', pass: 'PASS' },
|
|
21
|
+
},
|
|
22
|
+
},`;
|
|
23
|
+
export default function SettingsEmailSurface(_props) {
|
|
24
|
+
const { fetch: adminFetch } = useAdminContext();
|
|
25
|
+
const [status, setStatus] = useState(null);
|
|
26
|
+
const [loading, setLoading] = useState(true);
|
|
27
|
+
const [error, setError] = useState(null);
|
|
28
|
+
const [to, setTo] = useState('');
|
|
29
|
+
const [sending, setSending] = useState(false);
|
|
30
|
+
const [sendError, setSendError] = useState(null);
|
|
31
|
+
const [sent, setSent] = useState(false);
|
|
32
|
+
const load = useCallback(async () => {
|
|
33
|
+
setLoading(true);
|
|
34
|
+
setError(null);
|
|
35
|
+
try {
|
|
36
|
+
const res = await adminFetch('/api/v1/email/status');
|
|
37
|
+
if (!res.ok)
|
|
38
|
+
throw new Error(`Failed to load email status (${res.status})`);
|
|
39
|
+
const body = await res.json();
|
|
40
|
+
setStatus(body.data);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
setError(e instanceof Error ? e.message : 'Failed to load email status');
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
setLoading(false);
|
|
47
|
+
}
|
|
48
|
+
}, [adminFetch]);
|
|
49
|
+
useEffect(() => { load(); }, [load]);
|
|
50
|
+
const handleSendTest = useCallback(async (e) => {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
setSending(true);
|
|
53
|
+
setSendError(null);
|
|
54
|
+
setSent(false);
|
|
55
|
+
try {
|
|
56
|
+
const res = await adminFetch('/api/v1/email/test', {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
headers: { 'Content-Type': 'application/json' },
|
|
59
|
+
body: JSON.stringify({ to: to.trim() }),
|
|
60
|
+
});
|
|
61
|
+
if (!res.ok) {
|
|
62
|
+
const body = await res.json().catch(() => null);
|
|
63
|
+
throw new Error(body?.error?.message ?? `Send failed (${res.status})`);
|
|
64
|
+
}
|
|
65
|
+
setSent(true);
|
|
66
|
+
}
|
|
67
|
+
catch (e2) {
|
|
68
|
+
setSendError(e2 instanceof Error ? e2.message : 'Failed to send test email');
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
setSending(false);
|
|
72
|
+
}
|
|
73
|
+
}, [to, adminFetch]);
|
|
74
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Email" }) }), loading ? (_jsx(LoadingState, { label: "Loading email status\u2026" })) : error || !status ? (_jsx(ErrorState, { message: error ?? 'Email status unavailable.', onRetry: load })) : !status.configured ? (
|
|
75
|
+
// ── Unconfigured: setup instructions ──────────────────────────────
|
|
76
|
+
_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Email not configured", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Email is not configured" }), _jsxs("p", { style: { color: 'var(--kywi-text-muted)', marginBottom: 'var(--kywi-space-4)' }, children: ["No email provider is set up, so transactional email (password resets, form notifications, comment alerts) and test sends are unavailable. Email is optional \u2014 add an ", _jsx("code", { children: "email" }), " block to ", _jsx("code", { children: "kywi.config.ts" }), " to enable it:"] }), _jsx("pre", { style: {
|
|
77
|
+
background: 'var(--kywi-surface-sunken)',
|
|
78
|
+
border: '1px solid var(--kywi-border)',
|
|
79
|
+
borderRadius: 'var(--kywi-radius-md)',
|
|
80
|
+
padding: 'var(--kywi-space-4)',
|
|
81
|
+
overflowX: 'auto',
|
|
82
|
+
fontFamily: 'var(--kywi-font-mono)',
|
|
83
|
+
fontSize: 'var(--kywi-text-sm)',
|
|
84
|
+
lineHeight: 'var(--kywi-leading-snug)',
|
|
85
|
+
}, children: _jsx("code", { children: CONFIG_SNIPPET }) }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["Restart the server after editing the config. The SMTP provider uses nodemailer;", _jsx("code", { children: " provider: 'console'" }), " logs emails instead of sending them (useful in dev)."] })] })) : (
|
|
86
|
+
// ── Configured: read-only config + send test ──────────────────────
|
|
87
|
+
_jsxs("div", { className: "kywi-settings-grid", children: [_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Email configuration", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Configuration" }), _jsxs(ConfigNote, { children: ["Defined in ", _jsx("code", { children: "kywi.config.ts" }), ". Secrets (SMTP password) are never shown."] }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Provider", mono: true, children: status.provider }), _jsx(DefRow, { term: "From", mono: true, children: status.from }), status.smtp && (_jsxs(_Fragment, { children: [_jsx(DefRow, { term: "SMTP host", mono: true, children: status.smtp.host }), _jsx(DefRow, { term: "SMTP port", mono: true, children: String(status.smtp.port) }), _jsx(DefRow, { term: "TLS (secure)", mono: true, children: status.smtp.secure ? 'yes' : 'no' }), _jsx(DefRow, { term: "Authenticated", mono: true, children: status.smtp.auth ? 'yes' : 'no' })] }))] })] }), _jsxs("form", { className: "kywi-admin-settings-section", onSubmit: handleSendTest, "aria-label": "Send test email", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Send test email" }), sent && _jsx(SuccessFlash, { message: `Test email sent to ${to.trim()}.` }), sendError && _jsx(ErrorState, { message: sendError }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "email-test-to", children: "Recipient" }), _jsx("input", { id: "email-test-to", className: "kywi-input", type: "email", required: true, value: to, onChange: e => { setTo(e.target.value); setSent(false); }, placeholder: "you@example.com" }), _jsx("p", { className: "kywi-field-hint", children: "Sends a one-off test message via the configured provider." })] }), _jsx("div", { className: "kywi-form-actions", children: _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: sending || !to.trim(), children: sending ? 'Sending…' : 'Send test email' }) })] })] }))] }));
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=settings-email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-email.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-email.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-general.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-general.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAoBrD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,MAAM,EAAE,YAAY,2CAiJlE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* `settings.general` surface — the editable per-site General settings, ported
|
|
5
|
+
* verbatim from `apps/reference/app/admin/settings/page.tsx` (0.2.0 T12). Markup
|
|
6
|
+
* / classes / copy unchanged; wiring substitutions (plan §1.3): `adminFetch` →
|
|
7
|
+
* `useAdminContext().fetch`; `next/link` `<Link>` → a plain `<a>` (the same
|
|
8
|
+
* declarative-anchor pattern the migrated dashboard/search surfaces use).
|
|
9
|
+
* `AdminShellWrapper` is gone — chrome is rendered once by `KywiAdminApp` (T14).
|
|
10
|
+
*/
|
|
11
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
12
|
+
import { useAdminContext } from '../../context.js';
|
|
13
|
+
import { LoadingState, ErrorState, SuccessFlash, DefList, DefRow } from './states.js';
|
|
14
|
+
export default function SettingsGeneralSurface(_props) {
|
|
15
|
+
const { fetch: adminFetch } = useAdminContext();
|
|
16
|
+
const [site, setSite] = useState(null);
|
|
17
|
+
const [general, setGeneral] = useState({});
|
|
18
|
+
const [description, setDescription] = useState('');
|
|
19
|
+
const [timezone, setTimezone] = useState('');
|
|
20
|
+
const [loading, setLoading] = useState(true);
|
|
21
|
+
const [error, setError] = useState(null);
|
|
22
|
+
const [saving, setSaving] = useState(false);
|
|
23
|
+
const [saveError, setSaveError] = useState(null);
|
|
24
|
+
const [saved, setSaved] = useState(false);
|
|
25
|
+
const load = useCallback(async () => {
|
|
26
|
+
setLoading(true);
|
|
27
|
+
setError(null);
|
|
28
|
+
try {
|
|
29
|
+
const sitesRes = await adminFetch('/api/v1/sites');
|
|
30
|
+
if (!sitesRes.ok)
|
|
31
|
+
throw new Error(`Could not load sites (${sitesRes.status})`);
|
|
32
|
+
const sitesBody = await sitesRes.json();
|
|
33
|
+
const current = (sitesBody.data ?? [])[0];
|
|
34
|
+
if (!current)
|
|
35
|
+
throw new Error('No site is configured.');
|
|
36
|
+
setSite(current);
|
|
37
|
+
const settingsRes = await adminFetch(`/api/v1/sites/${current.id}/settings`);
|
|
38
|
+
if (!settingsRes.ok)
|
|
39
|
+
throw new Error(`Could not load settings (${settingsRes.status})`);
|
|
40
|
+
const settingsBody = await settingsRes.json();
|
|
41
|
+
const g = (settingsBody.data?.general ?? {});
|
|
42
|
+
setGeneral(g);
|
|
43
|
+
setDescription(g.description ?? '');
|
|
44
|
+
setTimezone(g.timezone ?? '');
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
setError(e instanceof Error ? e.message : 'Failed to load settings');
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
setLoading(false);
|
|
51
|
+
}
|
|
52
|
+
}, [adminFetch]);
|
|
53
|
+
useEffect(() => { load(); }, [load]);
|
|
54
|
+
const handleSave = useCallback(async (e) => {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
if (!site)
|
|
57
|
+
return;
|
|
58
|
+
setSaving(true);
|
|
59
|
+
setSaveError(null);
|
|
60
|
+
setSaved(false);
|
|
61
|
+
try {
|
|
62
|
+
// Merge into the existing `general` group so seeded keys (siteName,
|
|
63
|
+
// defaultLocale) are preserved — the API upserts by key.
|
|
64
|
+
const nextGeneral = {
|
|
65
|
+
...general,
|
|
66
|
+
description: description.trim(),
|
|
67
|
+
timezone: timezone.trim(),
|
|
68
|
+
};
|
|
69
|
+
const res = await adminFetch(`/api/v1/sites/${site.id}/settings`, {
|
|
70
|
+
method: 'PUT',
|
|
71
|
+
headers: { 'Content-Type': 'application/json' },
|
|
72
|
+
body: JSON.stringify({ general: nextGeneral }),
|
|
73
|
+
});
|
|
74
|
+
if (!res.ok) {
|
|
75
|
+
const body = await res.json().catch(() => null);
|
|
76
|
+
throw new Error(body?.error?.message ?? `Save failed (${res.status})`);
|
|
77
|
+
}
|
|
78
|
+
const body = await res.json();
|
|
79
|
+
setGeneral((body.data?.general ?? nextGeneral));
|
|
80
|
+
setSaved(true);
|
|
81
|
+
}
|
|
82
|
+
catch (e2) {
|
|
83
|
+
setSaveError(e2 instanceof Error ? e2.message : 'Failed to save settings');
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
setSaving(false);
|
|
87
|
+
}
|
|
88
|
+
}, [site, general, description, timezone, adminFetch]);
|
|
89
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "General Settings" }) }), loading ? (_jsx(LoadingState, { label: "Loading settings\u2026" })) : error || !site ? (_jsx(ErrorState, { message: error ?? 'No site is configured.', onRetry: load })) : (_jsxs("div", { className: "kywi-settings-grid", children: [_jsxs("form", { className: "kywi-admin-settings-section", onSubmit: handleSave, children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "General" }), saved && _jsx(SuccessFlash, { message: "Settings saved." }), saveError && _jsx(ErrorState, { message: saveError }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "settings-description", children: "Site description" }), _jsx("textarea", { id: "settings-description", className: "kywi-input", rows: 3, value: description, onChange: e => { setDescription(e.target.value); setSaved(false); }, placeholder: "A short description of this site" }), _jsx("p", { className: "kywi-field-hint", children: "Stored per-site; used for metadata and admin context." })] }), _jsxs("div", { className: "kywi-form-field", children: [_jsx("label", { className: "kywi-label", htmlFor: "settings-timezone", children: "Timezone" }), _jsx("input", { id: "settings-timezone", className: "kywi-input", type: "text", value: timezone, onChange: e => { setTimezone(e.target.value); setSaved(false); }, placeholder: "e.g. America/New_York" }), _jsx("p", { className: "kywi-field-hint", children: "IANA timezone name. Stored per-site." })] }), _jsx("div", { className: "kywi-form-actions", children: _jsx("button", { type: "submit", className: "kywi-btn kywi-btn-primary", disabled: saving, children: saving ? 'Saving…' : 'Save changes' }) })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Site identity", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Site identity" }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Name", children: site.name }), _jsx(DefRow, { term: "Domain", mono: true, children: site.domain }), _jsx(DefRow, { term: "Slug", mono: true, children: site.slug }), _jsx(DefRow, { term: "Default locale", mono: true, children: site.defaultLocale }), _jsx(DefRow, { term: "Theme", mono: true, children: site.theme }), _jsx(DefRow, { term: "Home page", muted: true, children: "Root of the Site Tree (\u201CHome\u201D)" })] }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["Identity fields are edited under", ' ', _jsx("a", { href: "/admin/settings/sites", children: "Settings \u2192 Sites" }), ". The home page is the root node of the ", _jsx("a", { href: "/admin/content-tree", children: "Site Tree" }), "."] })] })] }))] }));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=settings-general.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-general.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-general.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-site.d.ts","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-site.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,YAAY,2CAwF/D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useAdminContext } from '../../context.js';
|
|
4
|
+
import { ConfigNote, DefList, DefRow } from './states.js';
|
|
5
|
+
export default function SettingsSiteSurface(_props) {
|
|
6
|
+
const { runtime } = useAdminContext();
|
|
7
|
+
const config = runtime;
|
|
8
|
+
const media = config.overview.media;
|
|
9
|
+
const cache = config.overview.cache;
|
|
10
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "kywi-admin-page-header", children: _jsx("h1", { children: "Site Settings" }) }), _jsxs(ConfigNote, { children: ["These values are defined in ", _jsx("code", { children: "kywi.config.ts" }), " and are read-only at runtime. Editable, per-site values live under ", _jsx("a", { href: "/admin/settings", children: "General" }), "."] }), _jsxs("div", { className: "kywi-settings-grid", children: [_jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Platform", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Platform" }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Deployment mode", mono: true, children: config.mode }), _jsx(DefRow, { term: "Database", mono: true, children: config.overview.db.provider }), _jsx(DefRow, { term: "Auth providers", mono: true, children: config.overview.auth.providers.join(', ') || '—' })] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Media", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Media" }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Provider", mono: true, children: media.provider }), _jsx(DefRow, { term: "Max upload size", mono: true, children: media.maxUploadSizeMb ? `${media.maxUploadSizeMb} MB` : '—' }), _jsx(DefRow, { term: "Image sizes", mono: true, children: media.imageSizes && Object.keys(media.imageSizes).length > 0
|
|
11
|
+
? Object.keys(media.imageSizes).join(', ')
|
|
12
|
+
: '—' })] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Cache", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Cache" }), _jsxs(DefList, { children: [_jsx(DefRow, { term: "Provider", mono: true, children: cache.provider }), _jsx(DefRow, { term: "Default TTL", mono: true, children: cache.defaultTtl != null ? `${cache.defaultTtl}s` : '—' })] }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["Live status and cache clearing under ", _jsx("a", { href: "/admin/settings/cache", children: "Settings \u2192 Cache" }), "."] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Themes", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Themes" }), _jsx(DefList, { children: config.overview.themes.map(t => (_jsx(DefRow, { term: t.name, mono: true, children: t.regions.map(r => r.name).join(', ') || '—' }, t.name))) })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Content types", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Content types" }), _jsx(DefList, { children: config.contentTypes.map(ct => (_jsx(DefRow, { term: ct.label ?? ct.name, mono: true, children: ct.baseType }, ct.name))) }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["Manage fields under ", _jsx("a", { href: "/admin/content-types", children: "Settings \u2192 Content Types" }), "."] })] }), _jsxs("section", { className: "kywi-admin-settings-section", "aria-label": "Configured sites", children: [_jsx("h2", { className: "kywi-admin-settings-section-title", children: "Configured sites" }), _jsx(DefList, { children: config.sites.map(s => (_jsxs(DefRow, { term: s.name, mono: true, children: [s.domain, " \u00B7 ", s.defaultLocale] }, s.id))) }), _jsxs("p", { className: "kywi-field-hint", style: { marginTop: 'var(--kywi-space-4)' }, children: ["Create and edit sites under ", _jsx("a", { href: "/admin/settings/sites", children: "Settings \u2192 Sites" }), "."] })] })] })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=settings-site.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-site.js","sourceRoot":"","sources":["../../../../src/admin/surfaces/settings/settings-site.tsx"],"names":[],"mappings":"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"}
|