@kywi-software/core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -2
- package/dist/admin/app.d.ts +10 -1
- package/dist/admin/app.d.ts.map +1 -1
- package/dist/admin/app.js +2 -2
- package/dist/admin/app.js.map +1 -1
- package/dist/admin/approval-queue.d.ts +3 -1
- package/dist/admin/approval-queue.d.ts.map +1 -1
- package/dist/admin/approval-queue.js +2 -2
- package/dist/admin/approval-queue.js.map +1 -1
- package/dist/admin/audience-list.d.ts.map +1 -1
- package/dist/admin/audience-list.js +9 -1
- package/dist/admin/audience-list.js.map +1 -1
- package/dist/admin/chrome.d.ts +7 -1
- package/dist/admin/chrome.d.ts.map +1 -1
- package/dist/admin/chrome.js +2 -1
- package/dist/admin/chrome.js.map +1 -1
- package/dist/admin/content-editor-api.d.ts +27 -1
- package/dist/admin/content-editor-api.d.ts.map +1 -1
- package/dist/admin/content-editor-api.js +60 -2
- package/dist/admin/content-editor-api.js.map +1 -1
- package/dist/admin/content-form.d.ts +62 -6
- package/dist/admin/content-form.d.ts.map +1 -1
- package/dist/admin/content-form.js +118 -13
- package/dist/admin/content-form.js.map +1 -1
- package/dist/admin/content-permissions-tab.d.ts +13 -0
- package/dist/admin/content-permissions-tab.d.ts.map +1 -0
- package/dist/admin/content-permissions-tab.js +90 -0
- package/dist/admin/content-permissions-tab.js.map +1 -0
- package/dist/admin/context.d.ts +8 -0
- package/dist/admin/context.d.ts.map +1 -1
- package/dist/admin/context.js.map +1 -1
- package/dist/admin/feed-builder.d.ts.map +1 -1
- package/dist/admin/feed-builder.js +20 -1
- package/dist/admin/feed-builder.js.map +1 -1
- package/dist/admin/field-components.d.ts.map +1 -1
- package/dist/admin/field-components.js +26 -1
- package/dist/admin/field-components.js.map +1 -1
- package/dist/admin/form-builder.js +6 -1
- package/dist/admin/form-builder.js.map +1 -1
- package/dist/admin/form-helpers.d.ts.map +1 -1
- package/dist/admin/form-helpers.js +2 -0
- package/dist/admin/form-helpers.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/layout-editor/component-actions.d.ts +18 -0
- package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-actions.js +19 -0
- package/dist/admin/layout-editor/component-actions.js.map +1 -1
- package/dist/admin/layout-editor/component-picker-field.d.ts +20 -0
- package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -0
- package/dist/admin/layout-editor/component-picker-field.js +16 -0
- package/dist/admin/layout-editor/component-picker-field.js.map +1 -0
- package/dist/admin/layout-editor/drag-utils.d.ts +48 -0
- package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
- package/dist/admin/layout-editor/drag-utils.js +43 -0
- package/dist/admin/layout-editor/drag-utils.js.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts +9 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +41 -15
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-state.d.ts +9 -1
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +34 -0
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/editor.css +83 -0
- package/dist/admin/layout-editor/form-picker-field.d.ts +17 -0
- package/dist/admin/layout-editor/form-picker-field.d.ts.map +1 -0
- package/dist/admin/layout-editor/form-picker-field.js +35 -0
- package/dist/admin/layout-editor/form-picker-field.js.map +1 -0
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +95 -28
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/mode-toggle.d.ts.map +1 -1
- package/dist/admin/layout-editor/mode-toggle.js +1 -1
- package/dist/admin/layout-editor/mode-toggle.js.map +1 -1
- package/dist/admin/layout-editor/module-overlay.d.ts +10 -1
- package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-overlay.js +3 -3
- package/dist/admin/layout-editor/module-overlay.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +10 -1
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +25 -2
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/section-insert-line.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-insert-line.js +1 -1
- package/dist/admin/layout-editor/section-insert-line.js.map +1 -1
- package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-overlay.js +1 -1
- package/dist/admin/layout-editor/section-overlay.js.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts +9 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.js +45 -2
- package/dist/admin/layout-editor/section-template-picker.js.map +1 -1
- package/dist/admin/registry.d.ts.map +1 -1
- package/dist/admin/registry.js +11 -0
- package/dist/admin/registry.js.map +1 -1
- package/dist/admin/server.d.ts +15 -2
- package/dist/admin/server.d.ts.map +1 -1
- package/dist/admin/server.js +37 -1
- package/dist/admin/server.js.map +1 -1
- package/dist/admin/shell.d.ts.map +1 -1
- package/dist/admin/shell.js +62 -3
- package/dist/admin/shell.js.map +1 -1
- package/dist/admin/styles/admin.css +105 -27
- package/dist/admin/surface-matcher.d.ts +27 -0
- package/dist/admin/surface-matcher.d.ts.map +1 -1
- package/dist/admin/surface-matcher.js +11 -0
- package/dist/admin/surface-matcher.js.map +1 -1
- package/dist/admin/surfaces/approvals/approvals-data.d.ts +29 -9
- package/dist/admin/surfaces/approvals/approvals-data.d.ts.map +1 -1
- package/dist/admin/surfaces/approvals/approvals-data.js +65 -22
- package/dist/admin/surfaces/approvals/approvals-data.js.map +1 -1
- package/dist/admin/surfaces/approvals/approvals-index.d.ts.map +1 -1
- package/dist/admin/surfaces/approvals/approvals-index.js +47 -14
- package/dist/admin/surfaces/approvals/approvals-index.js.map +1 -1
- package/dist/admin/surfaces/content/content-edit.d.ts.map +1 -1
- package/dist/admin/surfaces/content/content-edit.js +34 -8
- package/dist/admin/surfaces/content/content-edit.js.map +1 -1
- package/dist/admin/surfaces/content/content-index.d.ts.map +1 -1
- package/dist/admin/surfaces/content/content-index.js +29 -2
- package/dist/admin/surfaces/content/content-index.js.map +1 -1
- package/dist/admin/surfaces/content/content-new.d.ts.map +1 -1
- package/dist/admin/surfaces/content/content-new.js +6 -4
- package/dist/admin/surfaces/content/content-new.js.map +1 -1
- package/dist/admin/surfaces/contentTree/content-tree.d.ts.map +1 -1
- package/dist/admin/surfaces/contentTree/content-tree.js +25 -2
- package/dist/admin/surfaces/contentTree/content-tree.js.map +1 -1
- package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -1
- package/dist/admin/surfaces/contentTypes/content-types-designer.js +78 -47
- package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -1
- package/dist/admin/surfaces/feeds/feed-editor.d.ts.map +1 -1
- package/dist/admin/surfaces/feeds/feed-editor.js +21 -4
- package/dist/admin/surfaces/feeds/feed-editor.js.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.js +7 -4
- package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
- package/dist/admin/surfaces/login.d.ts.map +1 -1
- package/dist/admin/surfaces/login.js +2 -1
- package/dist/admin/surfaces/login.js.map +1 -1
- package/dist/admin/surfaces/media/media-client.d.ts.map +1 -1
- package/dist/admin/surfaces/media/media-client.js +10 -2
- package/dist/admin/surfaces/media/media-client.js.map +1 -1
- package/dist/admin/surfaces/settings/settings-site.d.ts.map +1 -1
- package/dist/admin/surfaces/settings/settings-site.js +39 -2
- package/dist/admin/surfaces/settings/settings-site.js.map +1 -1
- package/dist/admin/surfaces/settings/settings-sites.js +18 -0
- package/dist/admin/surfaces/settings/settings-sites.js.map +1 -1
- package/dist/admin/surfaces/trash/trash-index.d.ts.map +1 -1
- package/dist/admin/surfaces/trash/trash-index.js +45 -8
- package/dist/admin/surfaces/trash/trash-index.js.map +1 -1
- package/dist/admin/surfaces/users/users-data.d.ts +11 -0
- package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-data.js +20 -1
- package/dist/admin/surfaces/users/users-data.js.map +1 -1
- package/dist/admin/surfaces/webServices/web-services-data.d.ts +11 -1
- package/dist/admin/surfaces/webServices/web-services-data.d.ts.map +1 -1
- package/dist/admin/surfaces/webServices/web-services-data.js +13 -0
- package/dist/admin/surfaces/webServices/web-services-data.js.map +1 -1
- package/dist/admin/surfaces/webServices/webhooks.d.ts +3 -0
- package/dist/admin/surfaces/webServices/webhooks.d.ts.map +1 -0
- package/dist/admin/surfaces/webServices/webhooks.js +69 -0
- package/dist/admin/surfaces/webServices/webhooks.js.map +1 -0
- package/dist/admin/webhook-manager.d.ts +32 -0
- package/dist/admin/webhook-manager.d.ts.map +1 -0
- package/dist/admin/webhook-manager.js +62 -0
- package/dist/admin/webhook-manager.js.map +1 -0
- package/dist/api/admin-features-routes.d.ts.map +1 -1
- package/dist/api/admin-features-routes.js +30 -0
- package/dist/api/admin-features-routes.js.map +1 -1
- package/dist/api/api-key-routes.d.ts.map +1 -1
- package/dist/api/api-key-routes.js +6 -1
- package/dist/api/api-key-routes.js.map +1 -1
- package/dist/api/auth.d.ts +8 -0
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +11 -1
- package/dist/api/auth.js.map +1 -1
- package/dist/api/comment-routes.d.ts.map +1 -1
- package/dist/api/comment-routes.js +102 -47
- package/dist/api/comment-routes.js.map +1 -1
- package/dist/api/config-routes.d.ts +10 -2
- package/dist/api/config-routes.d.ts.map +1 -1
- package/dist/api/config-routes.js +46 -25
- package/dist/api/config-routes.js.map +1 -1
- package/dist/api/content-routes.d.ts.map +1 -1
- package/dist/api/content-routes.js +41 -0
- package/dist/api/content-routes.js.map +1 -1
- package/dist/api/content-schemas.d.ts.map +1 -1
- package/dist/api/content-schemas.js +34 -1
- package/dist/api/content-schemas.js.map +1 -1
- package/dist/api/content-type-routes.d.ts.map +1 -1
- package/dist/api/content-type-routes.js +58 -3
- package/dist/api/content-type-routes.js.map +1 -1
- package/dist/api/feed-routes.d.ts +180 -0
- package/dist/api/feed-routes.d.ts.map +1 -1
- package/dist/api/feed-routes.js +10 -2
- package/dist/api/feed-routes.js.map +1 -1
- package/dist/api/form-routes.d.ts +6 -0
- package/dist/api/form-routes.d.ts.map +1 -1
- package/dist/api/form-routes.js +93 -14
- package/dist/api/form-routes.js.map +1 -1
- package/dist/api/graphql/resolvers.d.ts +4 -4
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +12 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/media-routes.d.ts.map +1 -1
- package/dist/api/media-routes.js +18 -1
- package/dist/api/media-routes.js.map +1 -1
- package/dist/api/webhook-routes.d.ts.map +1 -1
- package/dist/api/webhook-routes.js +19 -2
- package/dist/api/webhook-routes.js.map +1 -1
- package/dist/api/workflow-routes.d.ts.map +1 -1
- package/dist/api/workflow-routes.js +163 -4
- package/dist/api/workflow-routes.js.map +1 -1
- package/dist/auth/roles.d.ts +28 -0
- package/dist/auth/roles.d.ts.map +1 -1
- package/dist/auth/roles.js +49 -0
- package/dist/auth/roles.js.map +1 -1
- package/dist/config/reserved-field-names.d.ts +29 -0
- package/dist/config/reserved-field-names.d.ts.map +1 -0
- package/dist/config/reserved-field-names.js +59 -0
- package/dist/config/reserved-field-names.js.map +1 -0
- package/dist/config/types.d.ts +31 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/db/analytics-queries.d.ts +1 -1
- package/dist/db/api-key-queries.d.ts +7 -2
- package/dist/db/api-key-queries.d.ts.map +1 -1
- package/dist/db/api-key-queries.js +8 -2
- package/dist/db/api-key-queries.js.map +1 -1
- package/dist/db/apply-snapshot.d.ts +58 -0
- package/dist/db/apply-snapshot.d.ts.map +1 -0
- package/dist/db/apply-snapshot.js +142 -0
- package/dist/db/apply-snapshot.js.map +1 -0
- package/dist/db/audit-queries.d.ts +3 -3
- package/dist/db/category-queries.d.ts +3 -3
- package/dist/db/changeset-audit-queries.d.ts +2 -2
- package/dist/db/changeset-queries.d.ts +5 -5
- package/dist/db/changeset-queries.d.ts.map +1 -1
- package/dist/db/changeset-queries.js +24 -7
- package/dist/db/changeset-queries.js.map +1 -1
- package/dist/db/content-queries.d.ts +6 -0
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +8 -0
- package/dist/db/content-queries.js.map +1 -1
- package/dist/db/content-type-queries.d.ts +20 -0
- package/dist/db/content-type-queries.d.ts.map +1 -1
- package/dist/db/content-type-queries.js +32 -0
- package/dist/db/content-type-queries.js.map +1 -1
- package/dist/db/dashboard-queries.d.ts.map +1 -1
- package/dist/db/dashboard-queries.js +5 -1
- package/dist/db/dashboard-queries.js.map +1 -1
- package/dist/db/dynamic-schema.d.ts.map +1 -1
- package/dist/db/dynamic-schema.js +2 -0
- package/dist/db/dynamic-schema.js.map +1 -1
- package/dist/db/extension-queries.d.ts +8 -8
- package/dist/db/feed-queries.d.ts +3 -3
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/media-queries.d.ts +31 -7
- package/dist/db/media-queries.d.ts.map +1 -1
- package/dist/db/media-queries.js +13 -1
- package/dist/db/media-queries.js.map +1 -1
- package/dist/db/membership-dedupe.d.ts +26 -0
- package/dist/db/membership-dedupe.d.ts.map +1 -0
- package/dist/db/membership-dedupe.js +68 -0
- package/dist/db/membership-dedupe.js.map +1 -0
- package/dist/db/revision-queries.d.ts +122 -0
- package/dist/db/revision-queries.d.ts.map +1 -0
- package/dist/db/revision-queries.js +213 -0
- package/dist/db/revision-queries.js.map +1 -0
- package/dist/db/schema-apply.d.ts +8 -0
- package/dist/db/schema-apply.d.ts.map +1 -1
- package/dist/db/schema-apply.js +17 -0
- package/dist/db/schema-apply.js.map +1 -1
- package/dist/db/schema-field-queries.d.ts +2 -0
- package/dist/db/schema-field-queries.d.ts.map +1 -1
- package/dist/db/schema-field-queries.js +4 -0
- package/dist/db/schema-field-queries.js.map +1 -1
- package/dist/db/site-plugin-queries.d.ts +2 -2
- package/dist/db/user-queries.d.ts +12 -0
- package/dist/db/user-queries.d.ts.map +1 -1
- package/dist/db/user-queries.js +18 -4
- package/dist/db/user-queries.js.map +1 -1
- package/dist/db/version-queries.d.ts +37 -0
- package/dist/db/version-queries.d.ts.map +1 -1
- package/dist/db/version-queries.js +36 -0
- package/dist/db/version-queries.js.map +1 -1
- package/dist/db/webhook-queries.d.ts +27 -5
- package/dist/db/webhook-queries.d.ts.map +1 -1
- package/dist/db/webhook-queries.js +17 -0
- package/dist/db/webhook-queries.js.map +1 -1
- package/dist/db/workflow-queries.d.ts +2 -2
- package/dist/experiments/schema.d.ts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/webhook-retry.d.ts +22 -1
- package/dist/hooks/webhook-retry.d.ts.map +1 -1
- package/dist/hooks/webhook-retry.js +38 -1
- package/dist/hooks/webhook-retry.js.map +1 -1
- package/dist/host/index.d.ts +28 -0
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +56 -1
- package/dist/host/index.js.map +1 -1
- package/dist/layout/comments-module.d.ts +18 -0
- package/dist/layout/comments-module.d.ts.map +1 -0
- package/dist/layout/comments-module.js +130 -0
- package/dist/layout/comments-module.js.map +1 -0
- package/dist/layout/feed-hydration.d.ts +75 -0
- package/dist/layout/feed-hydration.d.ts.map +1 -0
- package/dist/layout/feed-hydration.js +158 -0
- package/dist/layout/feed-hydration.js.map +1 -0
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +2 -1
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/module-render-context.d.ts +13 -0
- package/dist/layout/module-render-context.d.ts.map +1 -0
- package/dist/layout/module-render-context.js +15 -0
- package/dist/layout/module-render-context.js.map +1 -0
- package/dist/layout/modules-extended.d.ts.map +1 -1
- package/dist/layout/modules-extended.js +92 -13
- package/dist/layout/modules-extended.js.map +1 -1
- package/dist/layout/registry.d.ts.map +1 -1
- package/dist/layout/registry.js +22 -6
- package/dist/layout/registry.js.map +1 -1
- package/dist/layout/renderer.d.ts +17 -1
- package/dist/layout/renderer.d.ts.map +1 -1
- package/dist/layout/renderer.js +11 -4
- package/dist/layout/renderer.js.map +1 -1
- package/dist/nav/index.d.ts +1 -0
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +4 -0
- package/dist/nav/index.js.map +1 -1
- package/dist/nav/url-resolver.d.ts +10 -2
- package/dist/nav/url-resolver.d.ts.map +1 -1
- package/dist/nav/url-resolver.js +17 -3
- package/dist/nav/url-resolver.js.map +1 -1
- package/dist/schema/base.d.ts +37 -1
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +20 -2
- package/dist/schema/base.js.map +1 -1
- package/dist/schema/generate.d.ts +8 -0
- package/dist/schema/generate.d.ts.map +1 -1
- package/dist/schema/generate.js +7 -4
- package/dist/schema/generate.js.map +1 -1
- package/dist/schema/mapper.d.ts.map +1 -1
- package/dist/schema/mapper.js +2 -0
- package/dist/schema/mapper.js.map +1 -1
- package/dist/schema/mysql-tables.d.ts +34 -0
- package/dist/schema/mysql-tables.d.ts.map +1 -1
- package/dist/schema/mysql-tables.js +14 -2
- package/dist/schema/mysql-tables.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/site/styles.css +384 -0
- package/package.json +2 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* The Kywi wordmark, inlined for package portability — in two ink variants.
|
|
5
|
+
*
|
|
6
|
+
* These ship inside the published `@kywi-software/core`. The copy-assets
|
|
7
|
+
* pipeline only handles `.css`, so the admin shell can NOT rely on the host app
|
|
8
|
+
* serving a static logo file. Embedding the SVG markup here keeps each mark
|
|
9
|
+
* self-contained: no external request, no runtime asset resolution, CSP-safe.
|
|
10
|
+
*
|
|
11
|
+
* The markup is the user's own trusted brand asset (a 1638×382 wordmark: an
|
|
12
|
+
* evergreen kiwi icon in lime / cream / brown plus a "kywi cms" wordmark),
|
|
13
|
+
* transcribed verbatim from `kywi-logo-admin.svg` / `kywi-logo-dark.svg` minus
|
|
14
|
+
* their XML prolog/DOCTYPE. It is static, not user input, so rendering via
|
|
15
|
+
* `dangerouslySetInnerHTML` is safe and avoids lossy hand-conversion to JSX.
|
|
16
|
+
* Each inner `<svg>` keeps `width/height="100%"` so the wrapper controls the
|
|
17
|
+
* rendered size via CSS; being SVG it stays crisp at 1x/2x.
|
|
18
|
+
*
|
|
19
|
+
* - {@link KywiLogo} — for the DARK sidebar. Its wordmark letterform fills
|
|
20
|
+
* are set to `currentColor`, so the type reads muted in whatever colour the
|
|
21
|
+
* container sets (the shell drives it to `--kywi-sidebar-fg-muted`, matching
|
|
22
|
+
* the nav links). The kiwi icon keeps its own lime/cream/brown accent.
|
|
23
|
+
* - {@link KywiLogoDark} — dark-inked wordmark for LIGHT surfaces (login card,
|
|
24
|
+
* mobile bar). Its type is baked dark ("kywi" near-black, "cms" sage) and it
|
|
25
|
+
* reads as-is; the icon is identical to the sidebar variant.
|
|
26
|
+
*/
|
|
27
|
+
// Sidebar variant: wordmark letterforms use `currentColor` (originally the sage
|
|
28
|
+
// rgb(147,162,155)); the kiwi icon fills are untouched.
|
|
29
|
+
const KYWI_LOGO_SVG = `<svg width="100%" height="100%" viewBox="0 0 1638 382" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" focusable="false" aria-hidden="true" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
30
|
+
<g transform="matrix(1,0,0,1,-250.883526,-1750.483759)">
|
|
31
|
+
<g transform="matrix(0.66353,0,0,0.655692,203.466438,1720.661519)">
|
|
32
|
+
<path d="M74.92,322.575C75.601,318.757 79.645,296.104 86.442,275.482C115.006,188.814 175.647,128.787 188.854,116.889C218.22,90.432 363.041,-50.037 569.452,155.549C703.517,289.08 704.387,488.05 555.462,566.43C553.357,567.538 392.947,689.673 213.746,583.105C43.965,482.139 72.03,343.287 74.92,322.575Z" style="fill:rgb(62,55,44);"/>
|
|
33
|
+
<path d="M622.793,283.427C624.831,289.979 633.104,314.652 637.073,343.563C653.923,466.31 574.822,569.529 425.492,562.674C353.307,559.36 242.682,510.807 200.178,357.586C139.356,138.327 280.068,44.311 418.446,75.75C516.931,98.126 591.345,193.822 622.793,283.427Z" style="fill:rgb(193,218,73);"/>
|
|
34
|
+
<path d="M513.544,331.501C515.68,362.402 541.857,357.135 536.46,377.489C530.389,400.387 502.743,368.874 474.123,406.181C462.208,421.713 449.434,390.522 418.593,410.662C410.614,415.873 397.039,436.291 383.991,417.269C381.736,413.98 383.969,378.816 332.521,381.787C329.873,381.94 314.326,386.555 308.577,373.462C299.347,352.442 344.149,351.621 322.124,306.696C313.914,289.95 288.374,279.134 300.802,263.699C310.083,252.173 330.664,265.662 337.813,246.598C340.238,240.132 349.192,237.008 353.407,237.989C366.262,240.981 375.58,245.57 391.303,232.294C393.17,230.718 403.174,209.249 418.44,220.584C424.595,225.154 433.191,260.255 477.539,249.694C478.982,249.351 505.368,235.637 508.697,257.461C509.66,263.781 492.767,290.998 507.761,305.244C514.775,311.908 516.058,312.588 513.544,331.501Z" style="fill:rgb(244,243,217);"/>
|
|
35
|
+
<path d="M119.148,271.464C119.332,273.524 119.29,273.364 119.332,273.524C125.74,298.318 152.643,461.656 295.403,537.699C323.233,552.524 324.014,552.265 326.603,551.41C373.737,581.279 392.348,580.442 405.791,590.057C407.429,591.229 436.994,590.842 412.572,593.906C406.06,594.723 274.615,623.968 155.846,500.206C80.323,421.507 99.405,314.009 119.148,271.464Z" style="fill:rgb(139,114,75);"/>
|
|
36
|
+
<path d="M119.148,271.464C121.59,264.353 131.492,235.515 163.698,188.711C180.541,164.232 138.783,222.452 161.728,313.44C205.714,487.866 316.653,543.983 326.603,551.41C324.014,552.265 323.233,552.524 295.403,537.699C152.643,461.656 125.74,298.318 119.332,273.524C119.29,273.364 119.332,273.524 119.148,271.464Z" style="fill:rgb(254,253,252);"/>
|
|
37
|
+
<path d="M258.489,331.134C257.677,331.009 244.579,332.963 245.37,312.495C246.546,282.073 296.918,309.915 295.456,312.473C295.409,312.556 286.979,319.492 277.222,325.002C268.5,329.928 268.326,329.362 258.489,331.134Z" style="fill:rgb(61,56,41);"/>
|
|
38
|
+
<path d="M466.752,477.448C466.642,476.515 464.315,465.346 467.053,443.361C467.078,443.163 467.389,440.662 469.423,442.587C504.021,475.329 497.843,486.63 497.622,487.538C497.075,489.791 475.196,510.764 466.752,477.448Z" style="fill:rgb(61,56,42);"/>
|
|
39
|
+
<path d="M402.881,483.562C402.676,484.303 402.348,498.978 384.577,495.114C356.356,488.979 392.378,440.566 394.341,441.811C395.166,442.334 402.306,462.043 403.106,475.539C403.349,479.646 403.252,479.557 402.881,483.562Z" style="fill:rgb(61,56,42);"/>
|
|
40
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:rgb(63,57,43);"/>
|
|
41
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:rgb(63,57,43);"/>
|
|
42
|
+
<path d="M361.493,181.511C358.775,179.804 328.451,160.759 339.807,147.761C365.046,118.87 373.517,182.868 371.505,185.503C369.954,187.535 369.637,185.685 361.493,181.511Z" style="fill:rgb(62,55,41);"/>
|
|
43
|
+
<path d="M286.603,197.29C295.295,203.17 299.223,207.121 309.195,226.63C311.297,230.741 308.128,229.682 303.502,229.584C294.128,229.385 270.292,228.46 266.643,215.468C265.721,212.187 270.091,191.401 286.603,197.29Z" style="fill:rgb(61,56,42);"/>
|
|
44
|
+
<path d="M556.809,211.504C555.748,215.289 552.365,227.362 513.492,234.708C509.548,235.454 522.913,204.35 537.6,198.827C541.112,197.507 554.005,197.82 556.809,211.504Z" style="fill:rgb(61,57,41);"/>
|
|
45
|
+
<path d="M306.443,398.045C307.789,397.956 320.925,397.092 323.301,397.998C324.533,398.467 324.796,399.308 317.029,413.227C300.015,443.721 287.206,430.037 285.699,415.47C284.043,399.462 304.801,398.377 306.443,398.045Z" style="fill:rgb(62,55,42);"/>
|
|
46
|
+
<path d="M561.502,443.234C557.706,442.53 545.449,440.259 532.771,404.461C531.968,402.192 538.911,404.569 539.414,404.741C588.763,421.635 572.295,441.201 561.502,443.234Z" style="fill:rgb(62,57,42);"/>
|
|
47
|
+
<path d="M556.456,309.405C556.705,309.316 568.964,303.637 577.472,305.622C584.121,307.174 585.878,312.713 586.164,313.613C591.909,331.72 574.377,334.052 540.714,320.037C535.817,317.999 555.082,310.073 556.456,309.405Z" style="fill:rgb(60,56,41);"/>
|
|
48
|
+
<path d="M200.51,189.534C200.844,190.113 203.454,194.634 200.889,197.874C200.475,198.397 197.132,198.154 200.51,189.534Z" style="fill:rgb(188,213,60);"/>
|
|
49
|
+
</g>
|
|
50
|
+
<g transform="matrix(1.057475,0,0,1.044982,-306.768598,358.301466)">
|
|
51
|
+
<path d="M921.275,1400.391C921.275,1397.013 930.881,1395.324 950.092,1395.324C968.036,1395.958 977.008,1397.33 977.008,1399.441L977.008,1521.041L1008.358,1463.091C1009.836,1459.924 1018.808,1458.341 1035.275,1458.341C1051.742,1458.341 1062.297,1459.396 1066.942,1461.508L1025.775,1528.641L1073.275,1617.624C1073.697,1618.469 1069.739,1619.155 1061.4,1619.683C1053.061,1620.21 1046.147,1620.474 1040.658,1620.474C1020.392,1620.474 1009.52,1619.524 1008.042,1617.624L976.692,1547.324L976.692,1617.308C976.692,1620.052 967.456,1621.424 948.983,1621.424C930.511,1621.424 921.275,1620.158 921.275,1617.624L921.275,1400.391Z" style="fill:currentColor;fill-rule:nonzero;"/>
|
|
52
|
+
<path d="M1067.258,1462.774C1067.258,1460.452 1076.917,1459.291 1096.233,1459.291C1115.55,1459.291 1125.525,1460.346 1126.158,1462.458L1148.958,1537.191L1170.808,1461.824C1171.653,1460.135 1178.197,1459.291 1190.442,1459.291C1218.52,1459.291 1231.925,1460.663 1230.658,1463.408L1156.242,1675.258C1156.031,1676.524 1150.278,1677.158 1138.983,1677.158C1127.689,1677.158 1117.186,1676.788 1107.475,1676.049C1097.764,1675.31 1093.12,1674.413 1093.542,1673.358L1121.092,1606.858L1067.258,1462.774Z" style="fill:currentColor;fill-rule:nonzero;"/>
|
|
53
|
+
<path d="M1412.742,1462.774C1412.742,1460.874 1418.547,1459.924 1430.158,1459.924C1456.336,1459.924 1469.214,1460.769 1468.792,1462.458L1437.758,1616.358C1437.125,1619.735 1425.408,1621.424 1402.608,1621.424C1379.808,1621.424 1368.092,1619.735 1367.458,1616.358L1354.475,1545.424L1338.325,1616.358C1337.692,1619.524 1325.606,1621.108 1302.067,1621.108C1278.528,1621.108 1266.442,1619.208 1265.808,1615.408L1237.625,1461.191C1236.992,1459.924 1246.07,1459.291 1264.858,1459.291C1283.436,1459.502 1292.725,1459.924 1292.725,1460.558L1307.292,1567.591L1333.575,1461.824C1333.997,1460.558 1340.964,1459.924 1354.475,1459.924C1367.986,1459.924 1374.953,1460.558 1375.375,1461.824L1401.342,1566.324L1412.742,1462.774Z" style="fill:currentColor;fill-rule:nonzero;"/>
|
|
54
|
+
<path d="M1544.475,1617.624C1544.475,1619.313 1534.817,1620.158 1515.5,1620.158C1496.183,1620.158 1486.525,1619.419 1486.525,1617.941L1486.525,1462.458C1486.525,1460.98 1496.183,1460.241 1515.5,1460.241C1534.817,1460.241 1544.475,1460.874 1544.475,1462.141L1544.475,1617.624Z" style="fill:currentColor;fill-rule:nonzero;"/>
|
|
55
|
+
<g transform="matrix(1.51344,0,0,1.51344,845.287816,1161.930237)">
|
|
56
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:currentColor;"/>
|
|
57
|
+
</g>
|
|
58
|
+
</g>
|
|
59
|
+
<g transform="matrix(1,0,0,1,-205,100)">
|
|
60
|
+
<text x="1551.595px" y="1942.447px" style="font-family:'AvenirNext-Regular', 'Avenir Next', sans-serif;font-size:316.667px;fill:currentColor;">c<tspan x="1703.595px 1967.378px " y="1942.447px 1942.447px ">ms</tspan></text>
|
|
61
|
+
</g>
|
|
62
|
+
</g>
|
|
63
|
+
</svg>`;
|
|
64
|
+
// Light-surface variant: wordmark baked dark ("kywi" rgb(25,36,30), "cms" sage);
|
|
65
|
+
// same kiwi icon. Reads as-is on light backgrounds (login card, mobile bar).
|
|
66
|
+
const KYWI_LOGO_DARK_SVG = `<svg width="100%" height="100%" viewBox="0 0 1638 382" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" focusable="false" aria-hidden="true" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
|
67
|
+
<g transform="matrix(1,0,0,1,-265.728614,-2746.180207)">
|
|
68
|
+
<g transform="matrix(0.66353,0,0,0.655692,218.311526,2716.357967)">
|
|
69
|
+
<path d="M74.92,322.575C75.601,318.757 79.645,296.104 86.442,275.482C115.006,188.814 175.647,128.787 188.854,116.889C218.22,90.432 363.041,-50.037 569.452,155.549C703.517,289.08 704.387,488.05 555.462,566.43C553.357,567.538 392.947,689.673 213.746,583.105C43.965,482.139 72.03,343.287 74.92,322.575Z" style="fill:rgb(62,55,44);"/>
|
|
70
|
+
<path d="M622.793,283.427C624.831,289.979 633.104,314.652 637.073,343.563C653.923,466.31 574.822,569.529 425.492,562.674C353.307,559.36 242.682,510.807 200.178,357.586C139.356,138.327 280.068,44.311 418.446,75.75C516.931,98.126 591.345,193.822 622.793,283.427Z" style="fill:rgb(193,218,73);"/>
|
|
71
|
+
<path d="M513.544,331.501C515.68,362.402 541.857,357.135 536.46,377.489C530.389,400.387 502.743,368.874 474.123,406.181C462.208,421.713 449.434,390.522 418.593,410.662C410.614,415.873 397.039,436.291 383.991,417.269C381.736,413.98 383.969,378.816 332.521,381.787C329.873,381.94 314.326,386.555 308.577,373.462C299.347,352.442 344.149,351.621 322.124,306.696C313.914,289.95 288.374,279.134 300.802,263.699C310.083,252.173 330.664,265.662 337.813,246.598C340.238,240.132 349.192,237.008 353.407,237.989C366.262,240.981 375.58,245.57 391.303,232.294C393.17,230.718 403.174,209.249 418.44,220.584C424.595,225.154 433.191,260.255 477.539,249.694C478.982,249.351 505.368,235.637 508.697,257.461C509.66,263.781 492.767,290.998 507.761,305.244C514.775,311.908 516.058,312.588 513.544,331.501Z" style="fill:rgb(244,243,217);"/>
|
|
72
|
+
<path d="M119.148,271.464C119.332,273.524 119.29,273.364 119.332,273.524C125.74,298.318 152.643,461.656 295.403,537.699C323.233,552.524 324.014,552.265 326.603,551.41C373.737,581.279 392.348,580.442 405.791,590.057C407.429,591.229 436.994,590.842 412.572,593.906C406.06,594.723 274.615,623.968 155.846,500.206C80.323,421.507 99.405,314.009 119.148,271.464Z" style="fill:rgb(139,114,75);"/>
|
|
73
|
+
<path d="M119.148,271.464C121.59,264.353 131.492,235.515 163.698,188.711C180.541,164.232 138.783,222.452 161.728,313.44C205.714,487.866 316.653,543.983 326.603,551.41C324.014,552.265 323.233,552.524 295.403,537.699C152.643,461.656 125.74,298.318 119.332,273.524C119.29,273.364 119.332,273.524 119.148,271.464Z" style="fill:rgb(254,253,252);"/>
|
|
74
|
+
<path d="M258.489,331.134C257.677,331.009 244.579,332.963 245.37,312.495C246.546,282.073 296.918,309.915 295.456,312.473C295.409,312.556 286.979,319.492 277.222,325.002C268.5,329.928 268.326,329.362 258.489,331.134Z" style="fill:rgb(61,56,41);"/>
|
|
75
|
+
<path d="M466.752,477.448C466.642,476.515 464.315,465.346 467.053,443.361C467.078,443.163 467.389,440.662 469.423,442.587C504.021,475.329 497.843,486.63 497.622,487.538C497.075,489.791 475.196,510.764 466.752,477.448Z" style="fill:rgb(61,56,42);"/>
|
|
76
|
+
<path d="M402.881,483.562C402.676,484.303 402.348,498.978 384.577,495.114C356.356,488.979 392.378,440.566 394.341,441.811C395.166,442.334 402.306,462.043 403.106,475.539C403.349,479.646 403.252,479.557 402.881,483.562Z" style="fill:rgb(61,56,42);"/>
|
|
77
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:rgb(63,57,43);"/>
|
|
78
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:rgb(63,57,43);"/>
|
|
79
|
+
<path d="M361.493,181.511C358.775,179.804 328.451,160.759 339.807,147.761C365.046,118.87 373.517,182.868 371.505,185.503C369.954,187.535 369.637,185.685 361.493,181.511Z" style="fill:rgb(62,55,41);"/>
|
|
80
|
+
<path d="M286.603,197.29C295.295,203.17 299.223,207.121 309.195,226.63C311.297,230.741 308.128,229.682 303.502,229.584C294.128,229.385 270.292,228.46 266.643,215.468C265.721,212.187 270.091,191.401 286.603,197.29Z" style="fill:rgb(61,56,42);"/>
|
|
81
|
+
<path d="M556.809,211.504C555.748,215.289 552.365,227.362 513.492,234.708C509.548,235.454 522.913,204.35 537.6,198.827C541.112,197.507 554.005,197.82 556.809,211.504Z" style="fill:rgb(61,57,41);"/>
|
|
82
|
+
<path d="M306.443,398.045C307.789,397.956 320.925,397.092 323.301,397.998C324.533,398.467 324.796,399.308 317.029,413.227C300.015,443.721 287.206,430.037 285.699,415.47C284.043,399.462 304.801,398.377 306.443,398.045Z" style="fill:rgb(62,55,42);"/>
|
|
83
|
+
<path d="M561.502,443.234C557.706,442.53 545.449,440.259 532.771,404.461C531.968,402.192 538.911,404.569 539.414,404.741C588.763,421.635 572.295,441.201 561.502,443.234Z" style="fill:rgb(62,57,42);"/>
|
|
84
|
+
<path d="M556.456,309.405C556.705,309.316 568.964,303.637 577.472,305.622C584.121,307.174 585.878,312.713 586.164,313.613C591.909,331.72 574.377,334.052 540.714,320.037C535.817,317.999 555.082,310.073 556.456,309.405Z" style="fill:rgb(60,56,41);"/>
|
|
85
|
+
<path d="M200.51,189.534C200.844,190.113 203.454,194.634 200.889,197.874C200.475,198.397 197.132,198.154 200.51,189.534Z" style="fill:rgb(188,213,60);"/>
|
|
86
|
+
</g>
|
|
87
|
+
<g transform="matrix(1.057475,0,0,1.044982,-291.92351,1353.997914)">
|
|
88
|
+
<path d="M921.275,1400.391C921.275,1397.013 930.881,1395.324 950.092,1395.324C968.036,1395.958 977.008,1397.33 977.008,1399.441L977.008,1521.041L1008.358,1463.091C1009.836,1459.924 1018.808,1458.341 1035.275,1458.341C1051.742,1458.341 1062.297,1459.396 1066.942,1461.508L1025.775,1528.641L1073.275,1617.624C1073.697,1618.469 1069.739,1619.155 1061.4,1619.683C1053.061,1620.21 1046.147,1620.474 1040.658,1620.474C1020.392,1620.474 1009.52,1619.524 1008.042,1617.624L976.692,1547.324L976.692,1617.308C976.692,1620.052 967.456,1621.424 948.983,1621.424C930.511,1621.424 921.275,1620.158 921.275,1617.624L921.275,1400.391Z" style="fill:rgb(25,36,30);fill-rule:nonzero;"/>
|
|
89
|
+
<path d="M1067.258,1462.774C1067.258,1460.452 1076.917,1459.291 1096.233,1459.291C1115.55,1459.291 1125.525,1460.346 1126.158,1462.458L1148.958,1537.191L1170.808,1461.824C1171.653,1460.135 1178.197,1459.291 1190.442,1459.291C1218.52,1459.291 1231.925,1460.663 1230.658,1463.408L1156.242,1675.258C1156.031,1676.524 1150.278,1677.158 1138.983,1677.158C1127.689,1677.158 1117.186,1676.788 1107.475,1676.049C1097.764,1675.31 1093.12,1674.413 1093.542,1673.358L1121.092,1606.858L1067.258,1462.774Z" style="fill:rgb(25,36,30);fill-rule:nonzero;"/>
|
|
90
|
+
<path d="M1412.742,1462.774C1412.742,1460.874 1418.547,1459.924 1430.158,1459.924C1456.336,1459.924 1469.214,1460.769 1468.792,1462.458L1437.758,1616.358C1437.125,1619.735 1425.408,1621.424 1402.608,1621.424C1379.808,1621.424 1368.092,1619.735 1367.458,1616.358L1354.475,1545.424L1338.325,1616.358C1337.692,1619.524 1325.606,1621.108 1302.067,1621.108C1278.528,1621.108 1266.442,1619.208 1265.808,1615.408L1237.625,1461.191C1236.992,1459.924 1246.07,1459.291 1264.858,1459.291C1283.436,1459.502 1292.725,1459.924 1292.725,1460.558L1307.292,1567.591L1333.575,1461.824C1333.997,1460.558 1340.964,1459.924 1354.475,1459.924C1367.986,1459.924 1374.953,1460.558 1375.375,1461.824L1401.342,1566.324L1412.742,1462.774Z" style="fill:rgb(25,36,30);fill-rule:nonzero;"/>
|
|
91
|
+
<path d="M1544.475,1617.624C1544.475,1619.313 1534.817,1620.158 1515.5,1620.158C1496.183,1620.158 1486.525,1619.419 1486.525,1617.941L1486.525,1462.458C1486.525,1460.98 1496.183,1460.241 1515.5,1460.241C1534.817,1460.241 1544.475,1460.874 1544.475,1462.141L1544.475,1617.624Z" style="fill:rgb(25,36,30);fill-rule:nonzero;"/>
|
|
92
|
+
<g transform="matrix(1.51344,0,0,1.51344,845.287816,1161.930237)">
|
|
93
|
+
<path d="M436.16,177.54C435.987,168.61 433.425,141.292 447.507,137.537C452.523,136.2 465.642,142.243 468.163,150.601C472.672,165.552 441.604,184.139 438.572,185.681C436.455,186.758 437.237,184.809 436.16,177.54Z" style="fill:rgb(25,36,30);"/>
|
|
94
|
+
</g>
|
|
95
|
+
</g>
|
|
96
|
+
<g transform="matrix(1,0,0,1,-190.154912,1095.696448)">
|
|
97
|
+
<text x="1551.595px" y="1942.447px" style="font-family:'AvenirNext-Regular', 'Avenir Next', sans-serif;font-size:316.667px;fill:rgb(147,162,155);">c<tspan x="1703.595px 1967.378px " y="1942.447px 1942.447px ">ms</tspan></text>
|
|
98
|
+
</g>
|
|
99
|
+
</g>
|
|
100
|
+
</svg>`;
|
|
101
|
+
function renderMark(svg, className, title) {
|
|
102
|
+
const a11y = title ? { role: 'img', 'aria-label': title } : { 'aria-hidden': true };
|
|
103
|
+
return _jsx("span", { className: className, ...a11y, dangerouslySetInnerHTML: { __html: svg } });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The sidebar wordmark. Its type inherits `currentColor` (the shell sets the
|
|
107
|
+
* container to `--kywi-sidebar-fg-muted`), so it reads muted on the dark
|
|
108
|
+
* sidebar exactly like the nav links; the kiwi icon keeps its accent colours.
|
|
109
|
+
* The wrapper carries the accessible name when `title` is given; the inner SVG
|
|
110
|
+
* is `aria-hidden`/`focusable="false"` so it never double-announces. Size it via
|
|
111
|
+
* `className` in CSS.
|
|
112
|
+
*/
|
|
113
|
+
export function KywiLogo({ className, title }) {
|
|
114
|
+
return renderMark(KYWI_LOGO_SVG, className, title);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The dark-inked wordmark for LIGHT surfaces (login card, mobile bar). Reads
|
|
118
|
+
* as-is (baked dark type); same a11y contract as {@link KywiLogo}.
|
|
119
|
+
*/
|
|
120
|
+
export function KywiLogoDark({ className, title }) {
|
|
121
|
+
return renderMark(KYWI_LOGO_DARK_SVG, className, title);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=kywi-logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kywi-logo.js","sourceRoot":"","sources":["../../src/admin/kywi-logo.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,wDAAwD;AACxD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCf,CAAA;AAEP,iFAAiF;AACjF,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCpB,CAAA;AASP,SAAS,UAAU,CAAC,GAAW,EAAE,SAAkB,EAAE,KAAc;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAY,CAAC,CAAC,CAAE,EAAE,aAAa,EAAE,IAAI,EAAY,CAAA;IACzG,OAAO,eAAM,SAAS,EAAE,SAAS,KAAM,IAAI,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,CAAA;AAC3F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAiB;IAC1D,OAAO,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAiB;IAC9D,OAAO,UAAU,CAAC,kBAAkB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC"}
|
|
@@ -34,6 +34,24 @@ export interface ClipboardPayload {
|
|
|
34
34
|
* At render time, the renderer resolves this componentId to fetch live props.
|
|
35
35
|
*/
|
|
36
36
|
export declare function buildConnectedModuleNode(componentId: string): ModuleNode;
|
|
37
|
+
/**
|
|
38
|
+
* Project a saved module component to the `{ props, style, moduleType }` shape
|
|
39
|
+
* the renderer's `ComponentResolver` (and the editor's canvas preview) expect.
|
|
40
|
+
* Returns null for a non-module component or one missing its moduleType, so an
|
|
41
|
+
* unresolvable reference falls through to its own inline rendering.
|
|
42
|
+
*
|
|
43
|
+
* The public site's `componentResolver` is just `id => resolveComponentDefinition(
|
|
44
|
+
* await getComponentById(db, id, siteId))`, keeping the host wiring trivial.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveComponentDefinition(component: {
|
|
47
|
+
type: string;
|
|
48
|
+
moduleType: string | null;
|
|
49
|
+
definition: unknown;
|
|
50
|
+
} | null | undefined): {
|
|
51
|
+
props: Record<string, unknown>;
|
|
52
|
+
style: Record<string, string>;
|
|
53
|
+
moduleType: string;
|
|
54
|
+
} | null;
|
|
37
55
|
/**
|
|
38
56
|
* Convert a connected module node (with componentId) into a disconnected
|
|
39
57
|
* inline node. Snapshots the component's current definition into the node.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-actions.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAKlE,yEAAyE;AACzE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,aAAa,CAAA;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CASxE;AAID;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,UAAU,CAeZ;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,GAAG,aAAa,EAClC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,wBAAwB,CAwB1B;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,oBAAoB,CAMtB;AAID,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CASxD;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAOlE;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,MAAM,EAAE,UAAU,GAAG,aAAa,GACjC,gBAAgB,CAKlB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,GACxB,UAAU,GAAG,aAAa,GAAG,IAAI,CAgBnC"}
|
|
1
|
+
{"version":3,"file":"component-actions.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAKlE,yEAAyE;AACzE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,aAAa,CAAA;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CASxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC7F;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ9F;AAID;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,gBAAgB,GAAG,IAAI,GACjC,UAAU,CAeZ;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,GAAG,aAAa,EAClC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,wBAAwB,CAwB1B;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,oBAAoB,CAMtB;AAID,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CASxD;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAOlE;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,MAAM,EAAE,UAAU,GAAG,aAAa,GACjC,gBAAgB,CAKlB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,GACxB,UAAU,GAAG,aAAa,GAAG,IAAI,CAgBnC"}
|
|
@@ -24,6 +24,25 @@ export function buildConnectedModuleNode(componentId) {
|
|
|
24
24
|
componentId,
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Project a saved module component to the `{ props, style, moduleType }` shape
|
|
29
|
+
* the renderer's `ComponentResolver` (and the editor's canvas preview) expect.
|
|
30
|
+
* Returns null for a non-module component or one missing its moduleType, so an
|
|
31
|
+
* unresolvable reference falls through to its own inline rendering.
|
|
32
|
+
*
|
|
33
|
+
* The public site's `componentResolver` is just `id => resolveComponentDefinition(
|
|
34
|
+
* await getComponentById(db, id, siteId))`, keeping the host wiring trivial.
|
|
35
|
+
*/
|
|
36
|
+
export function resolveComponentDefinition(component) {
|
|
37
|
+
if (!component || component.type !== 'module' || !component.moduleType)
|
|
38
|
+
return null;
|
|
39
|
+
const def = (component.definition ?? {});
|
|
40
|
+
return {
|
|
41
|
+
props: (def.props ?? {}),
|
|
42
|
+
style: (def.style ?? {}),
|
|
43
|
+
moduleType: component.moduleType,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
27
46
|
// ── Detach from Source ───────────────────────────────────────────
|
|
28
47
|
/**
|
|
29
48
|
* Convert a connected module node (with componentId) into a disconnected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-actions.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AA0B5C,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,UAAU,EAAE;QACxB,KAAK,EAAE,EAAE,WAAW,EAAE;QACtB,KAAK,EAAE,EAAE;QACT,WAAW;KACZ,CAAA;AACH,CAAC;AAED,oEAAoE;AAEpE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAgB,EAChB,SAAkC;IAElC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAEhD,MAAM,GAAG,GAAG,SAAS,CAAC,UAAqC,CAAA;IAC3D,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;IACnE,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAA2B,CAAA;IAClE,MAAM,aAAa,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAE1D,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI;QACvC,UAAU,EAAE,UAAU,EAAE;QACxB,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;KAC5C,CAAA;AACH,CAAC;AAED,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkC,EAClC,IAAY,EACZ,WAAoB;IAEpB,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClD,0BAA0B;QAC1B,OAAO;YACL,IAAI;YACJ,WAAW,EAAE,WAAW,IAAI,IAAI;YAChC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,MAA4C;SACzD,CAAA;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,MAAoB,CAAA;IACvC,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,IAAI;QAChC,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE;YAC9B,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE;SAC/B;KACF,CAAA;AACH,CAAC;AAED,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAsB,EACtB,IAAY,EACZ,QAAiB;IAEjB,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,QAAQ,IAAI,SAAS;QAC/B,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC;KACrC,CAAA;AACH,CAAC;AAED,oEAAoE;AAEpE,+CAA+C;AAC/C,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,UAAU,EAAE;QACxB,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KACtD,CAAA;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAS,WAAW,CAAC,MAAoB;IACvC,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACnD,CAAA;AACH,CAAC;AAED,oEAAoE;AAEpE;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA0B,EAC1B,MAAkC;IAElC,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;KAC7B,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAA4B,CAAA;QAElE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,MAA+B,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAC,MAAkC,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"component-actions.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface ComponentOption {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
moduleType?: string | null;
|
|
5
|
+
}
|
|
6
|
+
interface ComponentPickerFieldProps {
|
|
7
|
+
/** Module-type saved components to choose from (from the layout editor). */
|
|
8
|
+
components: ComponentOption[];
|
|
9
|
+
/** Called with the chosen component id — connects this node as a live instance. */
|
|
10
|
+
onSelect: (componentId: string) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Picker for connecting a placed `component` node to a saved reusable component
|
|
14
|
+
* (kywi-cms#46). Replaces the old raw "Component Slug" / "Component ID" text
|
|
15
|
+
* boxes with a real list. Selecting one links the node so it renders — and stays
|
|
16
|
+
* in sync with — the source component.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ComponentPickerField({ components, onSelect }: ComponentPickerFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=component-picker-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-picker-field.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-picker-field.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,UAAU,yBAAyB;IACjC,4EAA4E;IAC5E,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,mFAAmF;IACnF,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CA6BvF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Picker for connecting a placed `component` node to a saved reusable component
|
|
5
|
+
* (kywi-cms#46). Replaces the old raw "Component Slug" / "Component ID" text
|
|
6
|
+
* boxes with a real list. Selecting one links the node so it renders — and stays
|
|
7
|
+
* in sync with — the source component.
|
|
8
|
+
*/
|
|
9
|
+
export function ComponentPickerField({ components, onSelect }) {
|
|
10
|
+
if (components.length === 0) {
|
|
11
|
+
return (_jsx("div", { className: "kywi-editor-form-picker", children: _jsx("p", { className: "kywi-editor-form-picker-hint", children: "No saved components yet \u2014 select a module on the canvas and use \u201CSave as Component\u201D to create one, then insert it here." }) }));
|
|
12
|
+
}
|
|
13
|
+
return (_jsxs("div", { className: "kywi-editor-form-picker", children: [_jsx("label", { className: "kywi-editor-prop-label", htmlFor: "kywi-component-picker", children: "Component" }), _jsxs("select", { id: "kywi-component-picker", className: "kywi-editor-prop-input kywi-editor-form-picker-select", defaultValue: "", onChange: e => { if (e.target.value)
|
|
14
|
+
onSelect(e.target.value); }, children: [_jsx("option", { value: "", disabled: true, children: "\u2014 Select a component \u2014" }), components.map(c => (_jsxs("option", { value: c.id, children: [c.name, c.moduleType ? ` (${c.moduleType})` : ''] }, c.id)))] })] }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=component-picker-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-picker-field.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/component-picker-field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAgBZ;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAA6B;IACtF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CACL,cAAK,SAAS,EAAC,yBAAyB,YACtC,YAAG,SAAS,EAAC,8BAA8B,uJAGvC,GACA,CACP,CAAA;IACH,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,gBAAO,SAAS,EAAC,wBAAwB,EAAC,OAAO,EAAC,uBAAuB,0BAAkB,EAC3F,kBACE,EAAE,EAAC,uBAAuB,EAC1B,SAAS,EAAC,uDAAuD,EACjE,YAAY,EAAC,EAAE,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK;oBAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,aAE/D,iBAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,uDAAgC,EACxD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACnB,kBAAmB,KAAK,EAAE,CAAC,CAAC,EAAE,aAC3B,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,KADtC,CAAC,CAAC,EAAE,CAER,CACV,CAAC,IACK,IACL,CACP,CAAA;AACH,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* drag-utils.ts
|
|
3
3
|
* Shared drag/drop utilities for the Kywi layout overlay editor.
|
|
4
4
|
*/
|
|
5
|
+
import type { EditorAction } from './editor-state.js';
|
|
5
6
|
/** The visual state of an active drop zone. */
|
|
6
7
|
export type DropFeedbackState = 'idle' | 'line' | 'placeholder';
|
|
7
8
|
/** Public shape returned by createDwellTimer(). */
|
|
@@ -55,4 +56,51 @@ export declare function createDwellTimer(dwellMs?: number, onExpand?: (zoneId: s
|
|
|
55
56
|
* Column values are grid units out of 12.
|
|
56
57
|
*/
|
|
57
58
|
export declare const SECTION_TEMPLATES: SectionTemplate[];
|
|
59
|
+
/**
|
|
60
|
+
* The custom `data.current` shape draggable/droppable dnd-kit nodes in this
|
|
61
|
+
* editor carry (in addition to whatever `@dnd-kit/sortable`'s `useSortable`
|
|
62
|
+
* merges in under `.sortable`). `ModulePalette` items only ever appear as
|
|
63
|
+
* `active`; column drop zones and existing canvas modules can appear as
|
|
64
|
+
* either `active` or `over`.
|
|
65
|
+
*/
|
|
66
|
+
export interface EditorDragDatum {
|
|
67
|
+
source?: 'palette' | 'canvas';
|
|
68
|
+
moduleType?: string;
|
|
69
|
+
moduleId?: string;
|
|
70
|
+
instanceId?: string;
|
|
71
|
+
/** The column a canvas module currently lives in, or a drop zone represents. */
|
|
72
|
+
columnId?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Position within that column: for `active`, the dragged module's current
|
|
75
|
+
* index; for `over`, the index to insert/move to. A column's own (empty
|
|
76
|
+
* space) droppable zone reports its length here so dropping in blank space
|
|
77
|
+
* below existing modules appends, instead of always inserting at the top.
|
|
78
|
+
*/
|
|
79
|
+
index?: number;
|
|
80
|
+
}
|
|
81
|
+
interface DragEndLike {
|
|
82
|
+
data: {
|
|
83
|
+
current?: Record<string, unknown> | undefined;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Turn a dnd-kit `DragEndEvent`'s `active`/`over` pair into the editor action
|
|
88
|
+
* it implies, or `null` for a drop that doesn't resolve to anything (dropped
|
|
89
|
+
* outside any zone, or missing data).
|
|
90
|
+
*
|
|
91
|
+
* kywi-cms#20: dropping a module (from the palette, or moving one already on
|
|
92
|
+
* the canvas) onto a column that already contains a module used to be a
|
|
93
|
+
* silent no-op. `over` resolved to the *existing module's* sortable node, and
|
|
94
|
+
* that node's custom data only ever carried `{ source, moduleId, instanceId }`
|
|
95
|
+
* — no `columnId`, so the `if (moduleType && columnId)` / `if (fromColumnId &&
|
|
96
|
+
* toColumnId)` guards below always failed for that case (a drop onto genuinely
|
|
97
|
+
* empty column space worked, because the column's own droppable wrapper *did*
|
|
98
|
+
* carry `columnId`). Least-surprise fix consistent with the reducer's existing
|
|
99
|
+
* index-based insertion (`ADD_MODULE`/`MOVE_MODULE` both splice at an index):
|
|
100
|
+
* every module now also reports its own `columnId` + `index`, so dropping
|
|
101
|
+
* directly on an occupied module inserts the dragged module *before* it
|
|
102
|
+
* (pushing it down) instead of being swallowed.
|
|
103
|
+
*/
|
|
104
|
+
export declare function resolveDragEndAction(active: DragEndLike, over: DragEndLike | null | undefined): EditorAction | null;
|
|
105
|
+
export {};
|
|
58
106
|
//# sourceMappingURL=drag-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag-utils.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/drag-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"drag-utils.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/drag-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,+CAA+C;AAC/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhE,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4DAA4D;IAC5D,SAAS,IAAI,IAAI,CAAC;IAClB,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,wDAAwD;IACxD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAWnC;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,MAAY,EACrB,QAAQ,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAe,GAC5C,eAAe,CAsDjB;AAID;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAQ9C,CAAC;AAIF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,UAAU,WAAW;IACnB,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,YAAY,GAAG,IAAI,CAwBrB"}
|
|
@@ -95,4 +95,47 @@ export const SECTION_TEMPLATES = [
|
|
|
95
95
|
{ label: 'Asymmetric', columns: [8, 4] },
|
|
96
96
|
{ label: 'Quarters', columns: [3, 3, 3, 3] },
|
|
97
97
|
];
|
|
98
|
+
/**
|
|
99
|
+
* Turn a dnd-kit `DragEndEvent`'s `active`/`over` pair into the editor action
|
|
100
|
+
* it implies, or `null` for a drop that doesn't resolve to anything (dropped
|
|
101
|
+
* outside any zone, or missing data).
|
|
102
|
+
*
|
|
103
|
+
* kywi-cms#20: dropping a module (from the palette, or moving one already on
|
|
104
|
+
* the canvas) onto a column that already contains a module used to be a
|
|
105
|
+
* silent no-op. `over` resolved to the *existing module's* sortable node, and
|
|
106
|
+
* that node's custom data only ever carried `{ source, moduleId, instanceId }`
|
|
107
|
+
* — no `columnId`, so the `if (moduleType && columnId)` / `if (fromColumnId &&
|
|
108
|
+
* toColumnId)` guards below always failed for that case (a drop onto genuinely
|
|
109
|
+
* empty column space worked, because the column's own droppable wrapper *did*
|
|
110
|
+
* carry `columnId`). Least-surprise fix consistent with the reducer's existing
|
|
111
|
+
* index-based insertion (`ADD_MODULE`/`MOVE_MODULE` both splice at an index):
|
|
112
|
+
* every module now also reports its own `columnId` + `index`, so dropping
|
|
113
|
+
* directly on an occupied module inserts the dragged module *before* it
|
|
114
|
+
* (pushing it down) instead of being swallowed.
|
|
115
|
+
*/
|
|
116
|
+
export function resolveDragEndAction(active, over) {
|
|
117
|
+
if (!over)
|
|
118
|
+
return null;
|
|
119
|
+
const activeData = active.data.current;
|
|
120
|
+
const overData = over.data.current;
|
|
121
|
+
const source = activeData?.source;
|
|
122
|
+
if (source === 'palette') {
|
|
123
|
+
const moduleType = activeData?.moduleType;
|
|
124
|
+
const columnId = overData?.columnId;
|
|
125
|
+
const index = overData?.index ?? 0;
|
|
126
|
+
if (!moduleType || !columnId)
|
|
127
|
+
return null;
|
|
128
|
+
return { type: 'ADD_MODULE', columnId, index, moduleType };
|
|
129
|
+
}
|
|
130
|
+
if (source === 'canvas') {
|
|
131
|
+
const fromColumnId = activeData?.columnId;
|
|
132
|
+
const fromIndex = activeData?.index;
|
|
133
|
+
const toColumnId = overData?.columnId;
|
|
134
|
+
const toIndex = overData?.index ?? 0;
|
|
135
|
+
if (!fromColumnId || !toColumnId || fromIndex === undefined)
|
|
136
|
+
return null;
|
|
137
|
+
return { type: 'MOVE_MODULE', fromColumnId, fromIndex, toColumnId, toIndex };
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
98
141
|
//# sourceMappingURL=drag-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag-utils.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/drag-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"drag-utils.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/drag-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { EditorState, EditorAction } from './editor-state.js';
|
|
3
|
+
/** Resolve a connected component node to its live definition for canvas preview. */
|
|
4
|
+
type ComponentPreviewResolver = (componentId: string) => {
|
|
5
|
+
props: Record<string, unknown>;
|
|
6
|
+
style: Record<string, string>;
|
|
7
|
+
moduleType: string;
|
|
8
|
+
} | null;
|
|
3
9
|
interface EditorCanvasProps {
|
|
4
10
|
state: EditorState;
|
|
5
11
|
dispatch: React.Dispatch<EditorAction>;
|
|
@@ -8,9 +14,11 @@ interface EditorCanvasProps {
|
|
|
8
14
|
style?: Record<string, string>;
|
|
9
15
|
}>>;
|
|
10
16
|
onInsertSection: (regionName: string) => void;
|
|
17
|
+
/** Resolve connected component nodes so they preview as their real module (kywi-cms#46). */
|
|
18
|
+
resolveComponent?: ComponentPreviewResolver;
|
|
11
19
|
/** When true, render enhanced overlay handles with grab/resize/select affordances. */
|
|
12
20
|
overlayHandles?: boolean;
|
|
13
21
|
}
|
|
14
|
-
export declare function EditorCanvas({ state, dispatch, moduleComponents, onInsertSection, overlayHandles, }: EditorCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export declare function EditorCanvas({ state, dispatch, moduleComponents, onInsertSection, resolveComponent, overlayHandles, }: EditorCanvasProps): import("react/jsx-runtime").JSX.Element;
|
|
15
23
|
export {};
|
|
16
24
|
//# sourceMappingURL=editor-canvas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-canvas.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-canvas.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"editor-canvas.d.ts","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-canvas.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAelE,oFAAoF;AACpF,KAAK,wBAAwB,GAAG,CAC9B,WAAW,EAAE,MAAM,KAChB;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAA;AAEjG,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IACtC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC,CAAA;IACzH,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,4FAA4F;IAC5F,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,sFAAsF;IACtF,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AA8GD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAsB,GACvB,EAAE,iBAAiB,2CAmFnB"}
|
|
@@ -10,6 +10,29 @@ import { SectionInsertLine } from './section-insert-line.js';
|
|
|
10
10
|
import { ColumnOverlay } from './column-overlay.js';
|
|
11
11
|
import { ColumnResizeHandle } from './column-resize-handle.js';
|
|
12
12
|
import { ModuleOverlay } from './module-overlay.js';
|
|
13
|
+
import { ModuleEditorContext } from '../../layout/module-render-context.js';
|
|
14
|
+
/**
|
|
15
|
+
* Render a node's live preview in the canvas. A connected component node
|
|
16
|
+
* (`node.componentId`) resolves to its source component's module + props so the
|
|
17
|
+
* editor shows the real content instead of an empty Component placeholder,
|
|
18
|
+
* mirroring the public renderer's ModuleRenderer (kywi-cms#46).
|
|
19
|
+
*/
|
|
20
|
+
function ModulePreview({ node, moduleComponents, resolveComponent, }) {
|
|
21
|
+
if (node.componentId && resolveComponent) {
|
|
22
|
+
const resolved = resolveComponent(node.componentId);
|
|
23
|
+
if (resolved) {
|
|
24
|
+
const Resolved = moduleComponents[resolved.moduleType];
|
|
25
|
+
if (Resolved) {
|
|
26
|
+
return _jsx(Resolved, { props: { ...resolved.props, ...node.props }, style: { ...resolved.style, ...node.style } });
|
|
27
|
+
}
|
|
28
|
+
return _jsxs("div", { className: "kywi-module kywi-module-unknown", children: ["Unknown: ", resolved.moduleType] });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const Component = moduleComponents[node.type];
|
|
32
|
+
return Component
|
|
33
|
+
? _jsx(Component, { props: node.props, style: node.style })
|
|
34
|
+
: _jsxs("div", { className: "kywi-module kywi-module-unknown", children: ["Unknown: ", node.type] });
|
|
35
|
+
}
|
|
13
36
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
14
37
|
function getRegions(state) {
|
|
15
38
|
if (!state.activeVariant)
|
|
@@ -25,21 +48,24 @@ function getRegions(state) {
|
|
|
25
48
|
return state.layout.regions;
|
|
26
49
|
}
|
|
27
50
|
// ── DroppableColumn ───────────────────────────────────────────────────────────
|
|
28
|
-
function DroppableColumn({ column, state, dispatch, moduleComponents, }) {
|
|
51
|
+
function DroppableColumn({ column, state, dispatch, moduleComponents, resolveComponent, }) {
|
|
52
|
+
// kywi-cms#20: this droppable represents the column's own (empty) space —
|
|
53
|
+
// dropping directly there appends to the end of the column instead of always
|
|
54
|
+
// inserting at the top, which `index: 0` (the old implicit default) would do
|
|
55
|
+
// even when the column already has modules. A drop directly onto an existing
|
|
56
|
+
// module is instead resolved via that module's own droppable, which carries
|
|
57
|
+
// its own columnId + index (see ModuleOverlay below / drag-utils.ts).
|
|
29
58
|
const { setNodeRef } = useDroppable({
|
|
30
59
|
id: `column-${column.id}`,
|
|
31
|
-
data: { columnId: column.id },
|
|
60
|
+
data: { columnId: column.id, index: column.nodes.length },
|
|
32
61
|
});
|
|
33
62
|
const moduleIds = column.nodes.map(n => n.id);
|
|
34
|
-
return (_jsx(ColumnOverlay, { columnId: column.id, width: column.width, children: _jsxs("div", { ref: setNodeRef, style: { minHeight: 40 }, children: [column.nodes.length === 0 && (_jsx("div", { className: "kywi-editor-column-empty", children: "Drag a module here" })), _jsx(SortableContext, { items: moduleIds, strategy: verticalListSortingStrategy, children: column.nodes.map(node => {
|
|
35
|
-
|
|
36
|
-
return (_jsx(ModuleOverlay, { moduleId: node.id, instanceId: node.instanceId, isSelected: state.selectedId === node.id, typeLabel: node.type, onSelect: () => dispatch({ type: 'SELECT', id: node.id, selectionType: 'module' }), children: Component
|
|
37
|
-
? _jsx(Component, { props: node.props, style: node.style })
|
|
38
|
-
: _jsxs("div", { className: "kywi-module kywi-module-unknown", children: ["Unknown: ", node.type] }) }, node.id));
|
|
63
|
+
return (_jsx(ColumnOverlay, { columnId: column.id, width: column.width, children: _jsxs("div", { ref: setNodeRef, style: { minHeight: 40 }, children: [column.nodes.length === 0 && (_jsx("div", { className: "kywi-editor-column-empty", children: "Drag a module here" })), _jsx(SortableContext, { items: moduleIds, strategy: verticalListSortingStrategy, children: column.nodes.map((node, index) => {
|
|
64
|
+
return (_jsx(ModuleOverlay, { moduleId: node.id, instanceId: node.instanceId, columnId: column.id, index: index, isSelected: state.selectedId === node.id, typeLabel: node.type, onSelect: () => dispatch({ type: 'SELECT', id: node.id, selectionType: 'module' }), children: _jsx(ModulePreview, { node: node, moduleComponents: moduleComponents, ...(resolveComponent ? { resolveComponent } : {}) }) }, node.id));
|
|
39
65
|
}) })] }) }));
|
|
40
66
|
}
|
|
41
67
|
// ── EditorCanvas ──────────────────────────────────────────────────────────────
|
|
42
|
-
export function EditorCanvas({ state, dispatch, moduleComponents, onInsertSection, overlayHandles = false, }) {
|
|
68
|
+
export function EditorCanvas({ state, dispatch, moduleComponents, onInsertSection, resolveComponent, overlayHandles = false, }) {
|
|
43
69
|
const regions = getRegions(state);
|
|
44
70
|
const canvasClassName = overlayHandles
|
|
45
71
|
? 'kywi-editor-canvas-content kywi-editor-canvas-content--overlay'
|
|
@@ -48,12 +74,12 @@ export function EditorCanvas({ state, dispatch, moduleComponents, onInsertSectio
|
|
|
48
74
|
// document yet" from "regions exist but happen to render nothing" so the
|
|
49
75
|
// canvas never looks like a rendering bug when it's really just empty.
|
|
50
76
|
const totalSections = Object.values(regions).reduce((count, sections) => count + sections.filter(isLayoutSection).length, 0);
|
|
51
|
-
return (_jsxs("div", { className: canvasClassName, onClick: () => dispatch({ type: 'DESELECT' }), children: [totalSections === 0 && (_jsxs("div", { className: "kywi-editor-canvas-empty", "data-testid": "editor-canvas-empty", children: [_jsx("p", { className: "kywi-editor-canvas-empty-title", children: "This page currently renders its body content." }), _jsx("p", { className: "kywi-editor-canvas-empty-copy", children: "Add a section to design it with the layout engine." }), _jsx("button", { type: "button", className: "kywi-editor-canvas-empty-cta", onClick: (event) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
77
|
+
return (_jsx(ModuleEditorContext.Provider, { value: true, children: _jsxs("div", { className: canvasClassName, onClick: () => dispatch({ type: 'DESELECT' }), children: [totalSections === 0 && (_jsxs("div", { className: "kywi-editor-canvas-empty", "data-testid": "editor-canvas-empty", children: [_jsx("p", { className: "kywi-editor-canvas-empty-title", children: "This page currently renders its body content." }), _jsx("p", { className: "kywi-editor-canvas-empty-copy", children: "Add a section to design it with the layout engine." }), _jsx("button", { type: "button", className: "kywi-editor-canvas-empty-cta", onClick: (event) => {
|
|
78
|
+
event.stopPropagation();
|
|
79
|
+
onInsertSection(Object.keys(regions)[0] ?? 'main');
|
|
80
|
+
}, children: "+ Add Section" })] })), Object.entries(regions).map(([regionName, sections]) => (_jsxs(RegionOverlay, { name: regionName, children: [sections.filter(isLayoutSection).map((section) => (_jsxs(React.Fragment, { children: [_jsx(SectionInsertLine, { onInsert: () => onInsertSection(regionName) }), _jsx(SectionOverlay, { sectionId: section.id, onAddColumn: () => dispatch({ type: 'ADD_COLUMN', sectionId: section.id }), onDelete: () => dispatch({ type: 'REMOVE_SECTION', sectionId: section.id }), children: section.columns.map((column, ci) => (_jsxs(React.Fragment, { children: [_jsx(DroppableColumn, { column: column, state: state, dispatch: dispatch, moduleComponents: moduleComponents, ...(resolveComponent ? { resolveComponent } : {}) }), ci < section.columns.length - 1 && (_jsx(ColumnResizeHandle, { leftWidth: column.width, rightWidth: section.columns[ci + 1].width, onResize: (lw, rw) => {
|
|
81
|
+
const widths = section.columns.map((c, i) => i === ci ? lw : i === ci + 1 ? rw : c.width);
|
|
82
|
+
dispatch({ type: 'RESIZE_COLUMNS', sectionId: section.id, widths });
|
|
83
|
+
} }))] }, column.id))) })] }, section.id))), _jsx(SectionInsertLine, { onInsert: () => onInsertSection(regionName) })] }, regionName)))] }) }));
|
|
58
84
|
}
|
|
59
85
|
//# sourceMappingURL=editor-canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-canvas.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-canvas.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"editor-canvas.js","sourceRoot":"","sources":["../../../src/admin/layout-editor/editor-canvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Core reducer for the Kywi layout overlay editor.
|
|
4
4
|
* All editor components dispatch actions through this reducer.
|
|
5
5
|
*/
|
|
6
|
-
import type { LayoutDocument } from '../../layout/types.js';
|
|
6
|
+
import type { LayoutDocument, LayoutSection, ModuleNode } from '../../layout/types.js';
|
|
7
7
|
export type SelectionType = 'module' | 'column' | 'section' | null;
|
|
8
8
|
export interface DragState {
|
|
9
9
|
isDragging: boolean;
|
|
@@ -25,6 +25,10 @@ export type EditorAction = {
|
|
|
25
25
|
type: 'ADD_SECTION';
|
|
26
26
|
regionName: string;
|
|
27
27
|
columns: number[];
|
|
28
|
+
} | {
|
|
29
|
+
type: 'ADD_SECTIONS';
|
|
30
|
+
regionName: string;
|
|
31
|
+
sections: LayoutSection[];
|
|
28
32
|
} | {
|
|
29
33
|
type: 'REMOVE_SECTION';
|
|
30
34
|
sectionId: string;
|
|
@@ -49,6 +53,10 @@ export type EditorAction = {
|
|
|
49
53
|
} | {
|
|
50
54
|
type: 'REMOVE_MODULE';
|
|
51
55
|
moduleId: string;
|
|
56
|
+
} | {
|
|
57
|
+
type: 'REPLACE_MODULE';
|
|
58
|
+
moduleId: string;
|
|
59
|
+
node: ModuleNode;
|
|
52
60
|
} | {
|
|
53
61
|
type: 'UPDATE_PROPS';
|
|
54
62
|
moduleId: string;
|