@elytracms/studio 0.0.52 → 0.0.54
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/components/account/account-settings.js +4 -4
- package/dist/components/account/credential-panel.js +1 -1
- package/dist/components/account/self-account-view-source.js +3 -3
- package/dist/components/ai/ai-chat-panel-lazy.js +1 -1
- package/dist/components/ai/ai-chat-panel.js +4 -4
- package/dist/components/ai/ai-cms-panel.js +1 -1
- package/dist/components/ai/proposal-card.js +4 -4
- package/dist/components/ai/translate-document-action.js +1 -1
- package/dist/components/ai/translate-document-dialog.d.ts +1 -1
- package/dist/components/app-views/default-modules.d.ts +3 -3
- package/dist/components/app-views/default-modules.js +20 -20
- package/dist/components/app-views/sidebar.d.ts +1 -1
- package/dist/components/app-views/sidebar.js +2 -2
- package/dist/components/app-views/studio-config.d.ts +1 -1
- package/dist/components/assets/asset-detail.js +9 -9
- package/dist/components/assets/asset-grid.js +7 -7
- package/dist/components/assets/asset-thumb.d.ts +1 -1
- package/dist/components/assets/asset-thumb.js +2 -2
- package/dist/components/assets/assets-collection-view-source.js +3 -3
- package/dist/components/assets/assets-module.js +8 -8
- package/dist/components/assets/assets-store.d.ts +1 -1
- package/dist/components/assets/assets-store.js +1 -1
- package/dist/components/builder/blocks-model.js +1 -1
- package/dist/components/builder/blocks-panel.d.ts +1 -1
- package/dist/components/builder/blocks-panel.js +6 -6
- package/dist/components/builder/canvas.js +11 -11
- package/dist/components/builder/clipboard-actions.js +2 -2
- package/dist/components/builder/composition-field-editor-lazy.d.ts +1 -1
- package/dist/components/builder/composition-field-editor-lazy.js +1 -1
- package/dist/components/builder/composition-field-editor.d.ts +1 -1
- package/dist/components/builder/composition-field-editor.js +9 -9
- package/dist/components/builder/insert-context.d.ts +2 -2
- package/dist/components/builder/insert-context.js +2 -2
- package/dist/components/builder/insert-menu.d.ts +2 -2
- package/dist/components/builder/insert-menu.js +1 -1
- package/dist/components/builder/layout-inspector.js +1 -1
- package/dist/components/builder/page-tree.js +5 -5
- package/dist/components/builder/property-inspector.js +3 -3
- package/dist/components/builder/reuse-context.d.ts +1 -1
- package/dist/components/builder/reuse-context.js +3 -3
- package/dist/components/builder/spacing-handles.js +2 -2
- package/dist/components/cms/asset-picker.js +4 -4
- package/dist/components/cms/bulk-actions.js +1 -1
- package/dist/components/cms/bulk-bar.d.ts +1 -1
- package/dist/components/cms/bulk-bar.js +3 -3
- package/dist/components/cms/cell-edit.js +1 -1
- package/dist/components/cms/cell.js +2 -2
- package/dist/components/cms/cms-index.js +1 -1
- package/dist/components/cms/cms-store.d.ts +2 -2
- package/dist/components/cms/cms-store.js +6 -6
- package/dist/components/cms/collection-table.js +17 -17
- package/dist/components/cms/detail-editor.js +31 -31
- package/dist/components/cms/document-diff-view.js +4 -4
- package/dist/components/cms/editable-cell.d.ts +1 -1
- package/dist/components/cms/editable-cell.js +6 -6
- package/dist/components/cms/field-control.js +15 -15
- package/dist/components/cms/field-renderer.d.ts +2 -2
- package/dist/components/cms/filter-builder.js +3 -3
- package/dist/components/cms/import-export.js +1 -1
- package/dist/components/cms/issues-pane.js +1 -1
- package/dist/components/cms/prop-fields.js +3 -3
- package/dist/components/cms/reference-confirm.js +1 -1
- package/dist/components/cms/relation-picker.js +1 -1
- package/dist/components/cms/rich-text/block-commands.d.ts +1 -1
- package/dist/components/cms/rich-text/component-embed.js +2 -2
- package/dist/components/cms/rich-text/editor.js +8 -8
- package/dist/components/cms/rich-text/embed-inspector.d.ts +1 -1
- package/dist/components/cms/rich-text/embed-inspector.js +2 -2
- package/dist/components/cms/rich-text/embed-picker.js +1 -1
- package/dist/components/cms/rich-text/embed-props.js +1 -1
- package/dist/components/cms/rich-text/extensions.d.ts +1 -1
- package/dist/components/cms/rich-text/extensions.js +4 -4
- package/dist/components/cms/rich-text/index.d.ts +1 -1
- package/dist/components/cms/rich-text/index.js +1 -1
- package/dist/components/cms/rich-text/insert.d.ts +1 -1
- package/dist/components/cms/rich-text/lazy.d.ts +1 -1
- package/dist/components/cms/rich-text/lazy.js +1 -1
- package/dist/components/cms/rich-text/slash-command.js +1 -1
- package/dist/components/cms/rich-text/toolbar.d.ts +1 -1
- package/dist/components/cms/rich-text/toolbar.js +4 -4
- package/dist/components/cms/use-cell-edit.d.ts +1 -1
- package/dist/components/cms/use-cell-edit.js +2 -2
- package/dist/components/cms/use-compare-selection.d.ts +1 -1
- package/dist/components/cms/use-discard-controller.d.ts +1 -1
- package/dist/components/cms/use-discard-controller.js +2 -2
- package/dist/components/cms/use-document-versions.d.ts +1 -1
- package/dist/components/cms/use-document-versions.js +1 -1
- package/dist/components/cms/use-embed-inspector-host.d.ts +1 -1
- package/dist/components/cms/use-published-perspective.d.ts +2 -2
- package/dist/components/cms/use-published-perspective.js +2 -2
- package/dist/components/cms/use-restore-version.js +1 -1
- package/dist/components/cms/version-compare-lazy.js +1 -1
- package/dist/components/cms/version-compare.js +6 -6
- package/dist/components/cms/versions-model.d.ts +1 -1
- package/dist/components/cms/versions-pane.js +5 -5
- package/dist/components/cms/view-bar.js +2 -2
- package/dist/components/collab/collab-context.js +1 -1
- package/dist/components/collection-view/cms-collection-view-source.js +2 -2
- package/dist/components/components/component-preview.js +3 -3
- package/dist/components/components/components-index.js +2 -2
- package/dist/components/components/registry-browser.js +2 -2
- package/dist/components/components/transfer-dialog.js +5 -5
- package/dist/components/components/transfer.js +4 -4
- package/dist/components/current-user-menu.js +2 -2
- package/dist/components/delivery-health-banner.js +2 -2
- package/dist/components/operation-error.js +1 -1
- package/dist/components/project-list.js +5 -5
- package/dist/components/project-session.js +1 -1
- package/dist/components/project-switcher.js +3 -3
- package/dist/components/rail-store-status.js +1 -1
- package/dist/components/redirects/redirects-collection-view-source.js +3 -3
- package/dist/components/redirects/redirects-module.js +6 -6
- package/dist/components/section-nav.js +3 -3
- package/dist/components/section-surface.js +1 -1
- package/dist/components/studio-project-screen.js +7 -7
- package/dist/components/studio-shell.js +9 -9
- package/dist/components/use-hydration-phase.js +1 -1
- package/dist/components/users/users-collection-view-source.js +4 -4
- package/dist/components/users/users-module.js +9 -9
- package/dist/components/workspace-projects.js +1 -1
- package/dist/customization.d.ts +9 -9
- package/dist/customization.js +5 -5
- package/dist/lib/ai/anthropic-provider.d.ts +1 -1
- package/dist/lib/ai/apply-content.d.ts +1 -1
- package/dist/lib/ai/apply-content.js +3 -3
- package/dist/lib/ai/chat-state.d.ts +2 -2
- package/dist/lib/ai/config.d.ts +1 -1
- package/dist/lib/ai/convex-session-headers.d.ts +68 -0
- package/dist/lib/ai/convex-session-headers.js +79 -0
- package/dist/lib/ai/convex-session-headers.js.map +1 -0
- package/dist/lib/ai/convex-session.d.ts +82 -0
- package/dist/lib/ai/convex-session.js +92 -0
- package/dist/lib/ai/convex-session.js.map +1 -0
- package/dist/lib/ai/create-flow.d.ts +2 -2
- package/dist/lib/ai/create-flow.js +3 -3
- package/dist/lib/ai/fake-provider.d.ts +1 -1
- package/dist/lib/ai/index.d.ts +27 -16
- package/dist/lib/ai/index.js +27 -16
- package/dist/lib/ai/index.js.map +1 -1
- package/dist/lib/ai/knowledge.d.ts +1 -1
- package/dist/lib/ai/node-handler.d.ts +29 -0
- package/dist/lib/ai/node-handler.js +48 -0
- package/dist/lib/ai/node-handler.js.map +1 -0
- package/dist/lib/ai/provenance.d.ts +1 -1
- package/dist/lib/ai/route-provider.d.ts +1 -1
- package/dist/lib/ai/route.d.ts +1 -1
- package/dist/lib/ai/shape.d.ts +1 -1
- package/dist/lib/ai/translate-document.d.ts +1 -1
- package/dist/lib/ai/translate-document.js +3 -3
- package/dist/lib/ai/vite.d.ts +32 -0
- package/dist/lib/ai/vite.js +97 -0
- package/dist/lib/ai/vite.js.map +1 -0
- package/dist/lib/ai-panel.js +1 -1
- package/dist/lib/assets/index.d.ts +4 -4
- package/dist/lib/assets/index.js +4 -4
- package/dist/lib/assets/upload.d.ts +2 -2
- package/dist/lib/assets/upload.js +2 -2
- package/dist/lib/auth/convex-auth-adapter.d.ts +2 -2
- package/dist/lib/auth/convex-auth-adapter.js +1 -1
- package/dist/lib/auth/dev-auto-login-adapter.d.ts +1 -1
- package/dist/lib/auth/index.d.ts +9 -9
- package/dist/lib/auth/index.js +10 -10
- package/dist/lib/auth/local-auth-adapter.d.ts +1 -1
- package/dist/lib/auth/route-guard.d.ts +1 -1
- package/dist/lib/auth-errors.d.ts +1 -1
- package/dist/lib/clipboard/index.d.ts +3 -3
- package/dist/lib/clipboard/index.js +3 -3
- package/dist/lib/cms/published-documents.d.ts +1 -1
- package/dist/lib/cms-views/index.d.ts +2 -2
- package/dist/lib/cms-views/index.js +2 -2
- package/dist/lib/collection-view/collection-view-source.d.ts +4 -4
- package/dist/lib/data/collection-content.js +1 -1
- package/dist/lib/data/data-store.js +6 -6
- package/dist/lib/data/index.d.ts +4 -4
- package/dist/lib/data/index.js +4 -4
- package/dist/lib/data/sample-capture.js +4 -4
- package/dist/lib/data/sources-store.d.ts +1 -1
- package/dist/lib/diff-view-preference.js +1 -1
- package/dist/lib/dnd/gap-drag.d.ts +1 -1
- package/dist/lib/i18n/i18n.d.ts +1 -1
- package/dist/lib/i18n/i18n.js +1 -1
- package/dist/lib/i18n/index.d.ts +4 -4
- package/dist/lib/i18n/index.js +3 -3
- package/dist/lib/i18n/messages.en.d.ts +1 -1
- package/dist/lib/i18n/messages.en.js +1 -1
- package/dist/lib/locale/binding-fallback.d.ts +1 -1
- package/dist/lib/locale/binding-fallback.js +2 -2
- package/dist/lib/locale/index.d.ts +6 -6
- package/dist/lib/locale/index.js +6 -6
- package/dist/lib/locale/locale-switcher.js +3 -3
- package/dist/lib/locale/use-studio-locale.js +1 -1
- package/dist/lib/operations/asset-repository.d.ts +1 -1
- package/dist/lib/operations/cms-persistence.d.ts +1 -1
- package/dist/lib/operations/cms-persistence.js +1 -1
- package/dist/lib/operations/index.d.ts +6 -6
- package/dist/lib/operations/index.js +6 -6
- package/dist/lib/operations/session-hydration.d.ts +1 -1
- package/dist/lib/operations/session-hydration.js +1 -1
- package/dist/lib/operations/studio-operations.d.ts +1 -1
- package/dist/lib/operations/studio-operations.js +3 -3
- package/dist/lib/persistence/convex-adapter.js +2 -2
- package/dist/lib/persistence/convex-blob-storage.d.ts +1 -1
- package/dist/lib/persistence/convex-blob-storage.js +1 -1
- package/dist/lib/persistence/deployment-readiness.d.ts +2 -2
- package/dist/lib/persistence/index.d.ts +6 -6
- package/dist/lib/persistence/index.js +7 -7
- package/dist/lib/persona/labels.js +1 -1
- package/dist/lib/query/index.d.ts +2 -2
- package/dist/lib/query/index.js +1 -1
- package/dist/lib/rail.js +1 -1
- package/dist/lib/references/impact.d.ts +1 -1
- package/dist/lib/references/impact.js +1 -1
- package/dist/lib/references/index.d.ts +3 -3
- package/dist/lib/references/index.js +3 -3
- package/dist/lib/references/references-store.d.ts +2 -2
- package/dist/lib/references/references-store.js +3 -3
- package/dist/lib/registry/index.js +2 -2
- package/dist/lib/theme.js +1 -1
- package/dist/lib/webhooks/config.d.ts +1 -1
- package/dist/lib/webhooks/config.js +2 -2
- package/dist/lib/webhooks/dispatcher.js +2 -2
- package/dist/lib/webhooks/index.d.ts +6 -6
- package/dist/lib/webhooks/index.js +4 -4
- package/dist/lib/workspace/index.d.ts +7 -7
- package/dist/lib/workspace/index.js +3 -3
- package/dist/lib/workspace/switcher-source.d.ts +1 -1
- package/dist/router/index.d.ts +1 -1
- package/dist/router/index.js +1 -1
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/button.js +1 -1
- package/dist/ui/card.js +1 -1
- package/dist/ui/collapsible-section.js +2 -2
- package/dist/ui/dialog.js +1 -1
- package/dist/ui/dropdown-menu.js +1 -1
- package/dist/ui/field.js +1 -1
- package/dist/ui/index.d.ts +19 -19
- package/dist/ui/index.js +19 -19
- package/dist/ui/input.js +1 -1
- package/dist/ui/inspector.js +1 -1
- package/dist/ui/layout.js +1 -1
- package/dist/ui/panel.js +2 -2
- package/dist/ui/popover.js +1 -1
- package/dist/ui/row-item.js +2 -2
- package/dist/ui/segmented-control.js +1 -1
- package/dist/ui/separator.js +1 -1
- package/dist/ui/toolbar.js +2 -2
- package/dist/ui/typography.js +1 -1
- package/package.json +13 -5
- package/dist/components/assets/asset-library.d.ts +0 -14
- package/dist/components/assets/asset-library.js +0 -202
- package/dist/components/assets/asset-library.js.map +0 -1
- package/dist/components/backend-gate.d.ts +0 -19
- package/dist/components/backend-gate.js +0 -64
- package/dist/components/backend-gate.js.map +0 -1
- package/dist/components/builder/composition-scope.d.ts +0 -16
- package/dist/components/builder/composition-scope.js +0 -7
- package/dist/components/builder/composition-scope.js.map +0 -1
- package/dist/components/cms/alias-selector.d.ts +0 -20
- package/dist/components/cms/alias-selector.js +0 -34
- package/dist/components/cms/alias-selector.js.map +0 -1
- package/dist/components/cms/collections-sidebar.d.ts +0 -18
- package/dist/components/cms/collections-sidebar.js +0 -36
- package/dist/components/cms/collections-sidebar.js.map +0 -1
- package/dist/components/cms/new-page-dialog.d.ts +0 -22
- package/dist/components/cms/new-page-dialog.js +0 -42
- package/dist/components/cms/new-page-dialog.js.map +0 -1
- package/dist/components/cms/rich-text/embed-control.d.ts +0 -17
- package/dist/components/cms/rich-text/embed-control.js +0 -62
- package/dist/components/cms/rich-text/embed-control.js.map +0 -1
- package/dist/components/cms/rich-text/image-control.d.ts +0 -16
- package/dist/components/cms/rich-text/image-control.js +0 -36
- package/dist/components/cms/rich-text/image-control.js.map +0 -1
- package/dist/components/components/fixture-runner.d.ts +0 -10
- package/dist/components/components/fixture-runner.js +0 -27
- package/dist/components/components/fixture-runner.js.map +0 -1
- package/dist/components/references/builder-deep-link.d.ts +0 -12
- package/dist/components/references/builder-deep-link.js +0 -53
- package/dist/components/references/builder-deep-link.js.map +0 -1
- package/dist/components/routes/redirect-chain.d.ts +0 -9
- package/dist/components/routes/redirect-chain.js +0 -16
- package/dist/components/routes/redirect-chain.js.map +0 -1
- package/dist/components/routes/redirect-manager.d.ts +0 -13
- package/dist/components/routes/redirect-manager.js +0 -24
- package/dist/components/routes/redirect-manager.js.map +0 -1
- package/dist/components/routes/route-list.d.ts +0 -35
- package/dist/components/routes/route-list.js +0 -69
- package/dist/components/routes/route-list.js.map +0 -1
- package/dist/components/routes/routes-shell.d.ts +0 -14
- package/dist/components/routes/routes-shell.js +0 -68
- package/dist/components/routes/routes-shell.js.map +0 -1
- package/dist/components/sections.d.ts +0 -37
- package/dist/components/sections.js +0 -62
- package/dist/components/sections.js.map +0 -1
- package/dist/components/users/user-search.d.ts +0 -8
- package/dist/components/users/user-search.js +0 -13
- package/dist/components/users/user-search.js.map +0 -1
- package/dist/components/workspace-gate.d.ts +0 -12
- package/dist/components/workspace-gate.js +0 -28
- package/dist/components/workspace-gate.js.map +0 -1
- package/dist/lib/cms-views/views-store.d.ts +0 -70
- package/dist/lib/cms-views/views-store.js +0 -129
- package/dist/lib/cms-views/views-store.js.map +0 -1
- package/dist/lib/operations/graph-commands.d.ts +0 -136
- package/dist/lib/operations/graph-commands.js +0 -85
- package/dist/lib/operations/graph-commands.js.map +0 -1
- package/dist/lib/operations/graph-persistence.d.ts +0 -27
- package/dist/lib/operations/graph-persistence.js +0 -35
- package/dist/lib/operations/graph-persistence.js.map +0 -1
- package/dist/lib/routing/index.d.ts +0 -10
- package/dist/lib/routing/index.js +0 -11
- package/dist/lib/routing/index.js.map +0 -1
- package/dist/lib/routing/routing-analysis.d.ts +0 -26
- package/dist/lib/routing/routing-analysis.js +0 -37
- package/dist/lib/routing/routing-analysis.js.map +0 -1
- package/dist/lib/routing/routing-store.d.ts +0 -50
- package/dist/lib/routing/routing-store.js +0 -72
- package/dist/lib/routing/routing-store.js.map +0 -1
- package/dist/lib/working-graph.d.ts +0 -82
- package/dist/lib/working-graph.js +0 -113
- package/dist/lib/working-graph.js.map +0 -1
|
@@ -3,10 +3,10 @@ import { UserCog } from 'lucide-react';
|
|
|
3
3
|
import { Heading, Stack, Text } from '@elytracms/studio/ui';
|
|
4
4
|
import { listStoreState, useOperationQuery } from '@elytracms/studio/lib/query';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
|
-
import { useAuth } from '../auth-context';
|
|
7
|
-
import { PortableDetailEditor } from '../cms/detail-editor';
|
|
8
|
-
import { CredentialPanel } from './credential-panel';
|
|
9
|
-
import { useSelfAccountViewSource } from './self-account-view-source';
|
|
6
|
+
import { useAuth } from '../auth-context.js';
|
|
7
|
+
import { PortableDetailEditor } from '../cms/detail-editor.js';
|
|
8
|
+
import { CredentialPanel } from './credential-panel.js';
|
|
9
|
+
import { useSelfAccountViewSource } from './self-account-view-source.js';
|
|
10
10
|
/**
|
|
11
11
|
* The **account-settings** surface (EC-240 H-tail items 1–4). A member — admin or
|
|
12
12
|
* not — opens their OWN record here (via the user menu → `users/<selfId>`). It is
|
|
@@ -3,7 +3,7 @@ import { useState } from 'react';
|
|
|
3
3
|
import { KeyRound, ShieldCheck } from 'lucide-react';
|
|
4
4
|
import { Button, Card, CardContent, Field, Heading, Input, Row, Stack, Text, toast, } from '@elytracms/studio/ui';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
|
-
import { useAuth } from '../auth-context';
|
|
6
|
+
import { useAuth } from '../auth-context.js';
|
|
7
7
|
/**
|
|
8
8
|
* The credential seam (EC-240 H-tail item 3) — part of the account **property
|
|
9
9
|
* surface**, never a modal. Two blocks:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { studioPath } from '@elytracms/studio/router';
|
|
3
|
-
import { useAuth } from '../auth-context';
|
|
4
|
-
import { selfAccountCollectionDef } from './self-account-schema';
|
|
5
|
-
import { normalizeOkResult, useRailViewSource } from '../rail-view-source';
|
|
3
|
+
import { useAuth } from '../auth-context.js';
|
|
4
|
+
import { selfAccountCollectionDef } from './self-account-schema.js';
|
|
5
|
+
import { normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
|
|
6
6
|
/** The account surface is not localized — one implicit locale keeps the lens honest. */
|
|
7
7
|
const ACCOUNT_LOCALE = 'en';
|
|
8
8
|
const ACCOUNT_LOCALE_CONFIG = { default: ACCOUNT_LOCALE, locales: [ACCOUNT_LOCALE] };
|
|
@@ -11,7 +11,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
|
|
|
11
11
|
* critical path (pinned by the `lib/ai` bundle test). Same pattern as
|
|
12
12
|
* `version-compare-lazy` / `rich-text/lazy`.
|
|
13
13
|
*/
|
|
14
|
-
const AiChatPanelImpl = lazy(() => import('./ai-chat-panel').then((module) => ({ default: module.AiChatPanel })));
|
|
14
|
+
const AiChatPanelImpl = lazy(() => import('./ai-chat-panel.js').then((module) => ({ default: module.AiChatPanel })));
|
|
15
15
|
function AiPanelFallback() {
|
|
16
16
|
return (_jsx("aside", { className: "flex h-full min-h-0 w-[360px] shrink-0 flex-col border-l border-border bg-card", children: _jsx("div", { className: "grid min-h-0 flex-1 place-items-center p-6", children: _jsx(Text, { size: "sm", tone: "muted", children: translate('ai.panel.loading') }) }) }));
|
|
17
17
|
}
|
|
@@ -8,10 +8,10 @@ import { STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio
|
|
|
8
8
|
import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
|
|
9
9
|
import { getStudioOperations } from '@elytracms/studio/lib/operations';
|
|
10
10
|
import { AiRouteError, chatReducer, initialChatState, resolveAiConfig, resolveKnowledge, runCreateFlow, } from '@elytracms/studio/lib/ai';
|
|
11
|
-
import { useCms } from '../cms/cms-store';
|
|
12
|
-
import { validateComposition, validateRichTextEmbeds } from '../cms/cms-composition-validators';
|
|
13
|
-
import { AssistantTurn, Conversation, ConversationEmpty, PromptInput, ToolStatus, UserTurn, } from './chat-ui';
|
|
14
|
-
import { ProposalCard } from './proposal-card';
|
|
11
|
+
import { useCms } from '../cms/cms-store.js';
|
|
12
|
+
import { validateComposition, validateRichTextEmbeds } from '../cms/cms-composition-validators.js';
|
|
13
|
+
import { AssistantTurn, Conversation, ConversationEmpty, PromptInput, ToolStatus, UserTurn, } from './chat-ui.js';
|
|
14
|
+
import { ProposalCard } from './proposal-card.js';
|
|
15
15
|
import { setAiPanelOpen } from '@elytracms/studio/lib/ai-panel';
|
|
16
16
|
/**
|
|
17
17
|
* The AI assistant chat panel (EC-199) — the right-hand collapsible surface in the CMS
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
|
|
4
4
|
import { useAiPanelOpen } from '@elytracms/studio/lib/ai-panel';
|
|
5
|
-
import { AiChatPanel } from './ai-chat-panel-lazy';
|
|
5
|
+
import { AiChatPanel } from './ai-chat-panel-lazy.js';
|
|
6
6
|
/**
|
|
7
7
|
* The CMS-area mount of the AI assistant (EC-199): a right-hand sibling of the CMS
|
|
8
8
|
* content, shown on BOTH the collection list and the document editor. Gated twice —
|
|
@@ -6,10 +6,10 @@ import { resolveLabel } from '@elytracms/core/cms-core';
|
|
|
6
6
|
import { Badge, Button, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
|
|
7
7
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
8
8
|
import { proposalDocuments } from '@elytracms/studio/lib/ai';
|
|
9
|
-
import { useCms } from '../cms/cms-store';
|
|
10
|
-
import { useCmsCollectionViewSource } from '../collection-view/cms-collection-view-source';
|
|
11
|
-
import { CollectionViewProvider } from '../collection-view/collection-view-context';
|
|
12
|
-
import { DocumentDiffView } from '../cms/document-diff-view';
|
|
9
|
+
import { useCms } from '../cms/cms-store.js';
|
|
10
|
+
import { useCmsCollectionViewSource } from '../collection-view/cms-collection-view-source.js';
|
|
11
|
+
import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
|
|
12
|
+
import { DocumentDiffView } from '../cms/document-diff-view.js';
|
|
13
13
|
/**
|
|
14
14
|
* The AI proposal review (EC-199): a valid, leash-compliant draft the editor reviews
|
|
15
15
|
* as a DIFF (the shared EC-317 {@link DocumentDiffView} — never a second renderer)
|
|
@@ -16,7 +16,7 @@ import { resolveDeploymentAi } from '@elytracms/studio/lib/workspace';
|
|
|
16
16
|
* the translation engine + operations write) loads ONLY when the editor opens it, via a
|
|
17
17
|
* dynamic `import()`, so an unconfigured studio pulls none of it onto the critical path.
|
|
18
18
|
*/
|
|
19
|
-
const TranslateDocumentDialog = lazy(() => import('./translate-document-dialog').then((m) => ({ default: m.TranslateDocumentDialog })));
|
|
19
|
+
const TranslateDocumentDialog = lazy(() => import('./translate-document-dialog.js').then((m) => ({ default: m.TranslateDocumentDialog })));
|
|
20
20
|
export function TranslateDocumentAction(props) {
|
|
21
21
|
const [open, setOpen] = useState(false);
|
|
22
22
|
const { collection, localeConfig, localesEnabled, projectId } = props;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TranslateDocumentActionProps } from './translate-document-action';
|
|
1
|
+
import type { TranslateDocumentActionProps } from './translate-document-action.js';
|
|
2
2
|
export declare function TranslateDocumentDialog({ projectId, collection, docRef, document, localeConfig, onApplied, open, onOpenChange, }: TranslateDocumentActionProps & {
|
|
3
3
|
open: boolean;
|
|
4
4
|
onOpenChange: (open: boolean) => void;
|
|
@@ -4,7 +4,7 @@ import type { CollectionDef, CollectionFieldOverride, CollectionFormMeta } from
|
|
|
4
4
|
import type { SectionId } from '@elytracms/core/studio-core';
|
|
5
5
|
import type { InstantiatedKit } from '@elytracms/core/starter-kits';
|
|
6
6
|
import type { HydratedCms } from '@elytracms/studio/lib/operations';
|
|
7
|
-
import { type AppViewContext, type AppViewDeepLink, type AppViewModule, type NavPermission, type SidebarViewNode } from './module';
|
|
7
|
+
import { type AppViewContext, type AppViewDeepLink, type AppViewModule, type NavPermission, type SidebarViewNode } from './module.js';
|
|
8
8
|
/**
|
|
9
9
|
* EC-237/239 — the studio's BUILT-IN views + the consumer-facing `nav` namespace,
|
|
10
10
|
* an instance of the EC-236 customization seam.
|
|
@@ -188,9 +188,9 @@ export declare const nav: {
|
|
|
188
188
|
/** A fully custom view — pass your own `render` (and optional `parsePath`). */
|
|
189
189
|
readonly view: (config: CustomViewConfig) => SidebarViewNode;
|
|
190
190
|
/** A labelled group of views (a header with sub-entries). */
|
|
191
|
-
readonly group: (label: string, children: SidebarViewNode[]) => import("./module").SidebarGroupNode;
|
|
191
|
+
readonly group: (label: string, children: SidebarViewNode[]) => import("./module.js").SidebarGroupNode;
|
|
192
192
|
/** A divider between rail sections. */
|
|
193
|
-
readonly separator: () => import("./module").SidebarSeparatorNode;
|
|
193
|
+
readonly separator: () => import("./module.js").SidebarSeparatorNode;
|
|
194
194
|
};
|
|
195
195
|
/**
|
|
196
196
|
* The CMS schema source for a project mount (bug fix, playground-collections):
|
|
@@ -8,26 +8,26 @@ import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
|
8
8
|
import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
|
|
9
9
|
import { isPlaygroundMode } from '@elytracms/studio/lib/persistence';
|
|
10
10
|
import { resolveDeploymentCollections } from '@elytracms/studio/lib/workspace';
|
|
11
|
-
import { cmsDeepLink, componentsDeepLink, usersDeepLink, redirectsDeepLink, assetsDeepLink, groupNode, separatorNode, viewNode, } from './module';
|
|
12
|
-
import { SectionSurface } from '../section-surface';
|
|
13
|
-
import { SectionStateView } from '../section-state';
|
|
14
|
-
import { SettingsForm } from '../settings-form';
|
|
15
|
-
import { AssetsModule } from '../assets/assets-module';
|
|
16
|
-
import { UsersModule } from '../users/users-module';
|
|
17
|
-
import { RedirectsModule } from '../redirects/redirects-module';
|
|
18
|
-
import { redirectsCollectionDef } from '../redirects/redirects-schema';
|
|
19
|
-
import { ExtensionsView } from '../extensions/extensions-view';
|
|
20
|
-
import { RegistryBrowser } from '../components/registry-browser';
|
|
21
|
-
import { ComponentsIndex } from '../components/components-index';
|
|
22
|
-
import { ComponentDetail } from '../components/component-detail';
|
|
23
|
-
import { CmsSessionGate } from '../project-session';
|
|
24
|
-
import { CmsProvider, useCms } from '../cms/cms-store';
|
|
25
|
-
import { AiCmsPanel } from '../ai/ai-cms-panel';
|
|
26
|
-
import { focusCollectionList } from '../cms/collection-focus';
|
|
27
|
-
import { CmsIndex } from '../cms/cms-index';
|
|
28
|
-
import { CollectionTable } from '../cms/collection-table';
|
|
29
|
-
import { DetailEditor } from '../cms/detail-editor';
|
|
30
|
-
import { OperationErrorBanner } from '../operation-error';
|
|
11
|
+
import { cmsDeepLink, componentsDeepLink, usersDeepLink, redirectsDeepLink, assetsDeepLink, groupNode, separatorNode, viewNode, } from './module.js';
|
|
12
|
+
import { SectionSurface } from '../section-surface.js';
|
|
13
|
+
import { SectionStateView } from '../section-state.js';
|
|
14
|
+
import { SettingsForm } from '../settings-form.js';
|
|
15
|
+
import { AssetsModule } from '../assets/assets-module.js';
|
|
16
|
+
import { UsersModule } from '../users/users-module.js';
|
|
17
|
+
import { RedirectsModule } from '../redirects/redirects-module.js';
|
|
18
|
+
import { redirectsCollectionDef } from '../redirects/redirects-schema.js';
|
|
19
|
+
import { ExtensionsView } from '../extensions/extensions-view.js';
|
|
20
|
+
import { RegistryBrowser } from '../components/registry-browser.js';
|
|
21
|
+
import { ComponentsIndex } from '../components/components-index.js';
|
|
22
|
+
import { ComponentDetail } from '../components/component-detail.js';
|
|
23
|
+
import { CmsSessionGate } from '../project-session.js';
|
|
24
|
+
import { CmsProvider, useCms } from '../cms/cms-store.js';
|
|
25
|
+
import { AiCmsPanel } from '../ai/ai-cms-panel.js';
|
|
26
|
+
import { focusCollectionList } from '../cms/collection-focus.js';
|
|
27
|
+
import { CmsIndex } from '../cms/cms-index.js';
|
|
28
|
+
import { CollectionTable } from '../cms/collection-table.js';
|
|
29
|
+
import { DetailEditor } from '../cms/detail-editor.js';
|
|
30
|
+
import { OperationErrorBanner } from '../operation-error.js';
|
|
31
31
|
function slugify(label) {
|
|
32
32
|
return label.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'view';
|
|
33
33
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LucideIcon } from 'lucide-react';
|
|
2
2
|
import type { CustomizationIssue, Project, SectionAvailability } from '@elytracms/core/studio-core';
|
|
3
3
|
import type { CollectionDef } from '@elytracms/core/cms-core';
|
|
4
|
-
import { type AppViewModule, type NavPermission, type NavPermissionContext, type SidebarNode } from './module';
|
|
4
|
+
import { type AppViewModule, type NavPermission, type NavPermissionContext, type SidebarNode } from './module.js';
|
|
5
5
|
/**
|
|
6
6
|
* EC-237 — resolving the configurable section rail, an instance of the EC-236
|
|
7
7
|
* customization seam.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { resolveOverrides } from '@elytracms/core/studio-core';
|
|
3
3
|
import { resolveDeploymentCollections, resolveDeploymentSidebar } from '@elytracms/studio/lib/workspace';
|
|
4
|
-
import { firstAvailableView, moduleAvailability, viewNode, } from './module';
|
|
5
|
-
import { DEFAULT_VIEWS } from './default-modules';
|
|
4
|
+
import { firstAvailableView, moduleAvailability, viewNode, } from './module.js';
|
|
5
|
+
import { DEFAULT_VIEWS } from './default-modules.js';
|
|
6
6
|
/** The default rail: every non-hidden built-in view as a plain entry, in canonical order. */
|
|
7
7
|
function defaultRail() {
|
|
8
8
|
return DEFAULT_VIEWS.filter((view) => !view.hidden).map(viewNode);
|
|
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import type { FieldDef } from '@elytracms/core/cms-core';
|
|
3
3
|
import type { StudioI18nConfig } from '@elytracms/studio/lib/i18n';
|
|
4
4
|
import type { StudioAiConfig } from '@elytracms/studio/lib/ai';
|
|
5
|
-
import type { SidebarNode } from './module';
|
|
5
|
+
import type { SidebarNode } from './module.js';
|
|
6
6
|
/**
|
|
7
7
|
* EC-236 — the studio customization config: the single, studio-only home for
|
|
8
8
|
* everything a consuming repo customizes about the builder UI.
|
|
@@ -5,15 +5,15 @@ import { Link, STUDIO_PROJECT_ROUTE, useNavigate } from '@elytracms/studio/route
|
|
|
5
5
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
6
6
|
import { buildAssetReferenceImpact, loadInboundAssetReferenceViews } from '@elytracms/studio/lib/references';
|
|
7
7
|
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Field, Heading, Panel, PanelBody, PanelHeader, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
|
|
8
|
-
import { FieldControl } from '../cms/field-control';
|
|
9
|
-
import { fieldLabel } from '../cms/cms-labels';
|
|
10
|
-
import { ReferenceImpactRows } from '../cms/reference-confirm';
|
|
11
|
-
import { ReferencesPanel } from '../references/references-panel';
|
|
12
|
-
import { useSetBreadcrumb } from '../breadcrumb-context';
|
|
13
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
14
|
-
import { FocalCropPreviews, FocalPointPicker, useAssetRecord } from './asset-thumb';
|
|
15
|
-
import { assetMetaFieldsOf, formatBytes, pruneMeta } from './asset-metadata';
|
|
16
|
-
import { useAssets } from './assets-store';
|
|
8
|
+
import { FieldControl } from '../cms/field-control.js';
|
|
9
|
+
import { fieldLabel } from '../cms/cms-labels.js';
|
|
10
|
+
import { ReferenceImpactRows } from '../cms/reference-confirm.js';
|
|
11
|
+
import { ReferencesPanel } from '../references/references-panel.js';
|
|
12
|
+
import { useSetBreadcrumb } from '../breadcrumb-context.js';
|
|
13
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
14
|
+
import { FocalCropPreviews, FocalPointPicker, useAssetRecord } from './asset-thumb.js';
|
|
15
|
+
import { assetMetaFieldsOf, formatBytes, pruneMeta } from './asset-metadata.js';
|
|
16
|
+
import { useAssets } from './assets-store.js';
|
|
17
17
|
/**
|
|
18
18
|
* The assets rail's DETAIL surface (EC-319). Pragmatic call: assets don't fit
|
|
19
19
|
* the portable `PortableDetailEditor` shell cleanly — there's no dirty/Save/
|
|
@@ -5,13 +5,13 @@ import { Link, STUDIO_PROJECT_ROUTE } from '@elytracms/studio/router';
|
|
|
5
5
|
import { applyViewState } from '@elytracms/studio/lib/cms-views';
|
|
6
6
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
7
7
|
import { Code, Grid, Panel, Row, Separator, Spacer, Stack, Text } from '@elytracms/studio/ui';
|
|
8
|
-
import { FilterControl } from '../cms/filter-builder';
|
|
9
|
-
import { ViewTabs } from '../cms/view-bar';
|
|
10
|
-
import { useSetBreadcrumb } from '../breadcrumb-context';
|
|
11
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
12
|
-
import { AssetThumb } from './asset-thumb';
|
|
13
|
-
import { formatBytes } from './asset-metadata';
|
|
14
|
-
import { useAssets } from './assets-store';
|
|
8
|
+
import { FilterControl } from '../cms/filter-builder.js';
|
|
9
|
+
import { ViewTabs } from '../cms/view-bar.js';
|
|
10
|
+
import { useSetBreadcrumb } from '../breadcrumb-context.js';
|
|
11
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
12
|
+
import { AssetThumb } from './asset-thumb.js';
|
|
13
|
+
import { formatBytes } from './asset-metadata.js';
|
|
14
|
+
import { useAssets } from './assets-store.js';
|
|
15
15
|
/**
|
|
16
16
|
* The assets rail's GRID surface (EC-319) — the thumbnail-first counterpart to
|
|
17
17
|
* `LoadedCollectionTable`, over the SAME portable `CollectionViewSource` (the
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AssetRecord } from '@elytracms/core/persistence';
|
|
2
|
-
import type { FocalPoint } from './focal-point';
|
|
2
|
+
import type { FocalPoint } from './focal-point.js';
|
|
3
3
|
/** Resolve an asset record by id from the ambient library, if one is mounted. */
|
|
4
4
|
export declare function useAssetRecord(assetId: string | null | undefined): AssetRecord | undefined;
|
|
5
5
|
/**
|
|
@@ -4,8 +4,8 @@ import { Image } from 'lucide-react';
|
|
|
4
4
|
import { Text } from '@elytracms/studio/ui';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
6
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
7
|
-
import { useOptionalAssets } from './assets-store';
|
|
8
|
-
import { CENTER_FOCAL_POINT, focalPointFromPoint, focalPointObjectPosition, } from './focal-point';
|
|
7
|
+
import { useOptionalAssets } from './assets-store.js';
|
|
8
|
+
import { CENTER_FOCAL_POINT, focalPointFromPoint, focalPointObjectPosition, } from './focal-point.js';
|
|
9
9
|
/** Resolve an asset record by id from the ambient library, if one is mounted. */
|
|
10
10
|
export function useAssetRecord(assetId) {
|
|
11
11
|
const store = useOptionalAssets();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { createCollectionRegistry, validateDocument } from '@elytracms/core/cms-core';
|
|
3
3
|
import { studioPath } from '@elytracms/studio/router';
|
|
4
|
-
import { useAssets } from './assets-store';
|
|
5
|
-
import { SYSTEM_ASSET_FIELDS } from './asset-metadata';
|
|
6
|
-
import { normalizeOkResult, useRailViewSource } from '../rail-view-source';
|
|
4
|
+
import { useAssets } from './assets-store.js';
|
|
5
|
+
import { SYSTEM_ASSET_FIELDS } from './asset-metadata.js';
|
|
6
|
+
import { normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
|
|
7
7
|
/** The assets rail is not localized in v1 (EC-301: asset metadata is non-localized). */
|
|
8
8
|
const ASSETS_LOCALE = 'en';
|
|
9
9
|
const ASSETS_LOCALE_CONFIG = {
|
|
@@ -3,14 +3,14 @@ import { useRef, useState } from 'react';
|
|
|
3
3
|
import { LayoutGrid, List, RotateCcw, Upload, X } from 'lucide-react';
|
|
4
4
|
import { Badge, Button, Panel, PanelBody, PanelHeader, Row, SegmentedControl, Stack, Text, } from '@elytracms/studio/ui';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
|
-
import { useAssets } from './assets-store';
|
|
7
|
-
import { useAssetsCollectionViewSource } from './assets-collection-view-source';
|
|
8
|
-
import { CollectionViewProvider } from '../collection-view/collection-view-context';
|
|
9
|
-
import { RailStoreStatus } from '../rail-store-status';
|
|
10
|
-
import { LoadedCollectionTable } from '../cms/collection-table';
|
|
11
|
-
import { AssetGridView } from './asset-grid';
|
|
12
|
-
import { AssetDetail } from './asset-detail';
|
|
13
|
-
import { readAssetsViewMode, storeAssetsViewMode, } from './assets-view-preference';
|
|
6
|
+
import { useAssets } from './assets-store.js';
|
|
7
|
+
import { useAssetsCollectionViewSource } from './assets-collection-view-source.js';
|
|
8
|
+
import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
|
|
9
|
+
import { RailStoreStatus } from '../rail-store-status.js';
|
|
10
|
+
import { LoadedCollectionTable } from '../cms/collection-table.js';
|
|
11
|
+
import { AssetGridView } from './asset-grid.js';
|
|
12
|
+
import { AssetDetail } from './asset-detail.js';
|
|
13
|
+
import { readAssetsViewMode, storeAssetsViewMode, } from './assets-view-preference.js';
|
|
14
14
|
/**
|
|
15
15
|
* The studio Assets module (EC-319). The reuse proof (alongside users/redirects)
|
|
16
16
|
* that the portable list surface serves a rail with an entirely different
|
|
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
|
|
|
2
2
|
import type { AssetRecord } from '@elytracms/core/persistence';
|
|
3
3
|
import type { DeleteAssetResult, UploadState, UploadableFile } from '@elytracms/studio/lib/assets';
|
|
4
4
|
import type { ReferenceEntryView } from '@elytracms/studio/lib/references';
|
|
5
|
-
import type { AssetMetadataPatch, UpdateAssetMetadataResult } from './asset-metadata';
|
|
5
|
+
import type { AssetMetadataPatch, UpdateAssetMetadataResult } from './asset-metadata.js';
|
|
6
6
|
/**
|
|
7
7
|
* Asset library store (EC-151, EC-141). Asset *metadata* mutations go through
|
|
8
8
|
* the shared operations client (`assets.*` commands — validate → authorize →
|
|
@@ -5,7 +5,7 @@ import { loadInboundAssetReferenceViews } from '@elytracms/studio/lib/references
|
|
|
5
5
|
import { getStudioOperations, operationsAssetRepository } from '@elytracms/studio/lib/operations';
|
|
6
6
|
import { listStoreState, useOperationCache, useOperationQuery } from '@elytracms/studio/lib/query';
|
|
7
7
|
import { createRequiredContext } from '@elytracms/studio/lib/required-context';
|
|
8
|
-
import { updateAssetMetadata } from './asset-metadata';
|
|
8
|
+
import { updateAssetMetadata } from './asset-metadata.js';
|
|
9
9
|
const { Context: AssetsContext, useRequired: useAssets } = createRequiredContext('Assets', { article: 'an' });
|
|
10
10
|
const EMPTY_ASSETS = [];
|
|
11
11
|
/** Cache key for a project's asset library (shared by the query and its patches). */
|
|
@@ -2,7 +2,7 @@ import { cloneWithNewIds } from '@elytracms/core/project-graph';
|
|
|
2
2
|
import { isCanvasEligible, propValueValidator } from '@elytracms/core/component-registry';
|
|
3
3
|
import { componentStatus } from '@elytracms/studio/lib/registry';
|
|
4
4
|
import { nodeFromProps, previewSpecs } from '@elytracms/studio/lib/registry/preview';
|
|
5
|
-
import { LAYOUT_PRESETS, nodeFromManifest } from './node-factory';
|
|
5
|
+
import { LAYOUT_PRESETS, nodeFromManifest } from './node-factory.js';
|
|
6
6
|
/**
|
|
7
7
|
* Intersect two component-id allow-lists. `undefined` means "no constraint from
|
|
8
8
|
* this source", so the result is the other list (copied); two present lists yield
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { InsertTarget } from '@elytracms/core/project-graph';
|
|
2
2
|
import type { ClipboardFragment } from '@elytracms/core/clipboard';
|
|
3
3
|
import type { StudioRegistry } from '@elytracms/studio/lib/registry';
|
|
4
|
-
import type { BlockTile } from './blocks-model';
|
|
4
|
+
import type { BlockTile } from './blocks-model.js';
|
|
5
5
|
/**
|
|
6
6
|
* Blocks panel (EC-164): the visual insert surface. Every registry component
|
|
7
7
|
* and each of its fixture variations is a tile with a live, scaled render —
|
|
@@ -4,14 +4,14 @@ import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
4
4
|
import { buildFragmentFromRegistryFixture, buildFragmentFromSubtree, } from '@elytracms/core/clipboard';
|
|
5
5
|
import { getStudioRegistry } from '@elytracms/studio/lib/registry';
|
|
6
6
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
7
|
-
import { useCollab } from '../collab/collab-context';
|
|
8
|
-
import { useStudioClipboard } from './clipboard-actions';
|
|
9
|
-
import { beginDrag, endDrag, onDragSessionEnd } from './drag-session';
|
|
7
|
+
import { useCollab } from '../collab/collab-context.js';
|
|
8
|
+
import { useStudioClipboard } from './clipboard-actions.js';
|
|
9
|
+
import { beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
|
|
10
10
|
import { Code, Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, Input, Row, Text, } from '@elytracms/studio/ui';
|
|
11
11
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
12
|
-
import { useBuilder } from './builder-store';
|
|
13
|
-
import { blockGroups, presetTiles } from './blocks-model';
|
|
14
|
-
import { ScaledFixtureThumbnail } from './fixture-thumbnail';
|
|
12
|
+
import { useBuilder } from './builder-store.js';
|
|
13
|
+
import { blockGroups, presetTiles } from './blocks-model.js';
|
|
14
|
+
import { ScaledFixtureThumbnail } from './fixture-thumbnail.js';
|
|
15
15
|
/**
|
|
16
16
|
* "Copy exact configuration" (EC-175, vision 3.3): the EC-174 fragment for a
|
|
17
17
|
* blocks-panel tile. Tiles backed by a declared manifest fixture go through
|
|
@@ -5,23 +5,23 @@ import { renderPageComposition } from '@elytracms/core/runtime-renderer';
|
|
|
5
5
|
import { useParams } from '@elytracms/studio/router';
|
|
6
6
|
import { getNode, getParentInfo, staticProp } from '@elytracms/core/project-graph';
|
|
7
7
|
import { canNestInto, containerFlowAxis, dropIndicatorFor, dropPositionForPoint, resolveDrop, } from '@elytracms/studio/lib/dnd/drop-rules';
|
|
8
|
-
import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session';
|
|
8
|
+
import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
|
|
9
9
|
import { PRESERVE_NODE_ATTR, collectPreservedPairs, richTextDocFromDom, } from '@elytracms/core/rich-text';
|
|
10
10
|
import { getStudioRegistry } from '@elytracms/studio/lib/registry';
|
|
11
11
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
12
|
-
import { useOptionalAssets } from '../assets/assets-store';
|
|
12
|
+
import { useOptionalAssets } from '../assets/assets-store.js';
|
|
13
13
|
import { resolveCanvasLink, resolveCanvasListing, resolveCanvasRelation, useData, } from '@elytracms/studio/lib/data';
|
|
14
14
|
import { cmsBindingFallback, useStudioLocale } from '@elytracms/studio/lib/locale';
|
|
15
15
|
import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
|
|
16
|
-
import { getCanvasStylesheetUrl } from './canvas-stylesheet';
|
|
17
|
-
import { useBuilder } from './builder-store';
|
|
18
|
-
import { useReuse } from './reuse-context';
|
|
19
|
-
import { reuseEmbedRef } from './reuse';
|
|
20
|
-
import { useCanvasViewports, viewportWidth } from './canvas-breakpoints';
|
|
21
|
-
import { ClipboardNoticeOverlay, attachClipboardListeners, useStudioClipboard, } from './clipboard-actions';
|
|
22
|
-
import { createInlineEditSession, createInlineRichTextSession, findInlineTextHost, resolveInlineEditableProp, resolveInlineRichTextProp, } from './inline-edit';
|
|
23
|
-
import { RichTextToolbar } from './rich-text-toolbar';
|
|
24
|
-
import { SpacingHandles, hasSpacingHandles } from './spacing-handles';
|
|
16
|
+
import { getCanvasStylesheetUrl } from './canvas-stylesheet.js';
|
|
17
|
+
import { useBuilder } from './builder-store.js';
|
|
18
|
+
import { useReuse } from './reuse-context.js';
|
|
19
|
+
import { reuseEmbedRef } from './reuse.js';
|
|
20
|
+
import { useCanvasViewports, viewportWidth } from './canvas-breakpoints.js';
|
|
21
|
+
import { ClipboardNoticeOverlay, attachClipboardListeners, useStudioClipboard, } from './clipboard-actions.js';
|
|
22
|
+
import { createInlineEditSession, createInlineRichTextSession, findInlineTextHost, resolveInlineEditableProp, resolveInlineRichTextProp, } from './inline-edit.js';
|
|
23
|
+
import { RichTextToolbar } from './rich-text-toolbar.js';
|
|
24
|
+
import { SpacingHandles, hasSpacingHandles } from './spacing-handles.js';
|
|
25
25
|
/** Selection/hover outlines, scoped to the per-node editable wrappers. */
|
|
26
26
|
const OUTLINE_CSS = `
|
|
27
27
|
/* The canvas backdrop is deliberately always light/site-like (see the
|
|
@@ -8,9 +8,9 @@ import { getStudioRegistry } from '@elytracms/studio/lib/registry';
|
|
|
8
8
|
import { shortId } from '@elytracms/studio/lib/persona/labels';
|
|
9
9
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
10
10
|
import { useData } from '@elytracms/studio/lib/data';
|
|
11
|
-
import { useCollab } from '../collab/collab-context';
|
|
11
|
+
import { useCollab } from '../collab/collab-context.js';
|
|
12
12
|
import { Badge, Row, Text } from '@elytracms/studio/ui';
|
|
13
|
-
import { makeNodeIdCounter, useBuilder } from './builder-store';
|
|
13
|
+
import { makeNodeIdCounter, useBuilder } from './builder-store.js';
|
|
14
14
|
let currentNotice = null;
|
|
15
15
|
const noticeListeners = new Set();
|
|
16
16
|
export function publishClipboardNotice(notice) {
|
|
@@ -14,6 +14,6 @@ import type { ComponentProps } from 'react';
|
|
|
14
14
|
* detail editor's seam is unchanged — it still imports `CompositionFieldEditor`,
|
|
15
15
|
* now the lazy-wrapped one, and renders it behind the same `canvasField` gate.
|
|
16
16
|
*/
|
|
17
|
-
declare const CompositionFieldEditorImpl: import("react").LazyExoticComponent<typeof import("./composition-field-editor").CompositionFieldEditor>;
|
|
17
|
+
declare const CompositionFieldEditorImpl: import("react").LazyExoticComponent<typeof import("./composition-field-editor.js").CompositionFieldEditor>;
|
|
18
18
|
export declare function CompositionFieldEditor(props: ComponentProps<typeof CompositionFieldEditorImpl>): import("react").JSX.Element;
|
|
19
19
|
export {};
|
|
@@ -17,7 +17,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
|
|
|
17
17
|
* detail editor's seam is unchanged — it still imports `CompositionFieldEditor`,
|
|
18
18
|
* now the lazy-wrapped one, and renders it behind the same `canvasField` gate.
|
|
19
19
|
*/
|
|
20
|
-
const CompositionFieldEditorImpl = lazy(() => import('./composition-field-editor').then((module) => ({
|
|
20
|
+
const CompositionFieldEditorImpl = lazy(() => import('./composition-field-editor.js').then((module) => ({
|
|
21
21
|
default: module.CompositionFieldEditor,
|
|
22
22
|
})));
|
|
23
23
|
function CanvasFallback() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BlocksFieldDef } from '@elytracms/core/cms-core';
|
|
2
|
-
import type { InspectorPane } from '../inspector/inspector-sidebar';
|
|
2
|
+
import type { InspectorPane } from '../inspector/inspector-sidebar.js';
|
|
3
3
|
export declare function CompositionFieldEditor({ field, value, onChange, readOnly, trailingPanes, }: {
|
|
4
4
|
field: BlocksFieldDef;
|
|
5
5
|
value: unknown;
|
|
@@ -5,15 +5,15 @@ import { DEFAULT_SLOT, blockRootsOf } from '@elytracms/core/project-graph';
|
|
|
5
5
|
import { Button, Panel, Row, Spacer, Text, Toolbar, ToolbarGroup, ToolbarSeparator } from '@elytracms/studio/ui';
|
|
6
6
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
7
7
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
8
|
-
import { BuilderProvider, useBuilder } from './builder-store';
|
|
9
|
-
import { useCanvasViewports } from './canvas-breakpoints';
|
|
10
|
-
import { BuilderCanvas } from './canvas';
|
|
11
|
-
import { PageTree } from './page-tree';
|
|
12
|
-
import { PropertyInspector } from './property-inspector';
|
|
13
|
-
import { InspectorSidebar } from '../inspector/inspector-sidebar';
|
|
14
|
-
import { InsertMenu } from './insert-menu';
|
|
15
|
-
import { resolveInsertContext } from './insert-context';
|
|
16
|
-
import { ReuseProvider } from './reuse-context';
|
|
8
|
+
import { BuilderProvider, useBuilder } from './builder-store.js';
|
|
9
|
+
import { useCanvasViewports } from './canvas-breakpoints.js';
|
|
10
|
+
import { BuilderCanvas } from './canvas.js';
|
|
11
|
+
import { PageTree } from './page-tree.js';
|
|
12
|
+
import { PropertyInspector } from './property-inspector.js';
|
|
13
|
+
import { InspectorSidebar } from '../inspector/inspector-sidebar.js';
|
|
14
|
+
import { InsertMenu } from './insert-menu.js';
|
|
15
|
+
import { resolveInsertContext } from './insert-context.js';
|
|
16
|
+
import { ReuseProvider } from './reuse-context.js';
|
|
17
17
|
/**
|
|
18
18
|
* EC-188 — the block-field surface: one canvas engine mounted on a composition
|
|
19
19
|
* **field value** (AD-12), not the project graph.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { InsertContext } from './insert-menu';
|
|
2
|
-
import { useBuilder } from './builder-store';
|
|
1
|
+
import type { InsertContext } from './insert-menu.js';
|
|
2
|
+
import { useBuilder } from './builder-store.js';
|
|
3
3
|
/**
|
|
4
4
|
* Where an insert lands: the canvas insert-context resolution, shared by every
|
|
5
5
|
* surface that mounts the canvas engine.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getNode, getParentInfo } from '@elytracms/core/project-graph';
|
|
2
2
|
import { getStudioRegistry } from '@elytracms/studio/lib/registry';
|
|
3
3
|
import { shortId } from '@elytracms/studio/lib/persona/labels';
|
|
4
|
-
import { intersectAllow } from './blocks-model';
|
|
5
|
-
import { useBuilder } from './builder-store';
|
|
4
|
+
import { intersectAllow } from './blocks-model.js';
|
|
5
|
+
import { useBuilder } from './builder-store.js';
|
|
6
6
|
/**
|
|
7
7
|
* Where an insert lands: the canvas insert-context resolution, shared by every
|
|
8
8
|
* surface that mounts the canvas engine.
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* max-height behaviours carried over from the old dialog) lives in
|
|
6
6
|
* `blocks-panel.tsx`.
|
|
7
7
|
*/
|
|
8
|
-
export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel';
|
|
9
|
-
export type { InsertContext } from './blocks-panel';
|
|
8
|
+
export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel.js';
|
|
9
|
+
export type { InsertContext } from './blocks-panel.js';
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* max-height behaviours carried over from the old dialog) lives in
|
|
6
6
|
* `blocks-panel.tsx`.
|
|
7
7
|
*/
|
|
8
|
-
export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel';
|
|
8
|
+
export { BlocksPanel as InsertMenu, preventOutsideDismiss } from './blocks-panel.js';
|
|
9
9
|
//# sourceMappingURL=insert-menu.js.map
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { CONTAINER_ALIGNMENTS, GRID_MAX_COLUMNS, SPACING_TOKEN_NAMES, STACK_COMPONENT_ID, STACK_ON_MOBILE_PROP, gridStacksOnMobile, isLayoutContainerNode, isSpacingTokenName, isStaticProp, spacingTokenFromLegacyGap, staticProp, } from '@elytracms/core/project-graph';
|
|
3
3
|
import { Field, InspectorSection, Select, Stack } from '@elytracms/studio/ui';
|
|
4
4
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
5
|
-
import { useBuilder } from './builder-store';
|
|
5
|
+
import { useBuilder } from './builder-store.js';
|
|
6
6
|
/**
|
|
7
7
|
* Contextual layout inspector (EC-162): when a `Stack`/`Grid` container is
|
|
8
8
|
* selected, the Settings tab shows its canonical layout values — direction,
|
|
@@ -9,11 +9,11 @@ import { translate } from '@elytracms/studio/lib/i18n';
|
|
|
9
9
|
import { useData } from '@elytracms/studio/lib/data';
|
|
10
10
|
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Row, Spacer, Text, } from '@elytracms/studio/ui';
|
|
11
11
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
12
|
-
import { useCollab } from '../collab/collab-context';
|
|
13
|
-
import { useBuilder } from './builder-store';
|
|
14
|
-
import { attachClipboardListeners, useStudioClipboard } from './clipboard-actions';
|
|
15
|
-
import { useReuse } from './reuse-context';
|
|
16
|
-
import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session';
|
|
12
|
+
import { useCollab } from '../collab/collab-context.js';
|
|
13
|
+
import { useBuilder } from './builder-store.js';
|
|
14
|
+
import { attachClipboardListeners, useStudioClipboard } from './clipboard-actions.js';
|
|
15
|
+
import { useReuse } from './reuse-context.js';
|
|
16
|
+
import { activeDrag, beginDrag, endDrag, onDragSessionEnd } from './drag-session.js';
|
|
17
17
|
function flatten(node, depth, rows, meta) {
|
|
18
18
|
rows.push({ id: node.id, componentId: node.componentId, depth, ...meta, condition: node.condition });
|
|
19
19
|
for (const children of Object.values(node.slots ?? {})) {
|
|
@@ -6,9 +6,9 @@ import { Badge, Code, Field, InspectorSection, PanelHeader, Row, Spacer, Stack,
|
|
|
6
6
|
import { humanizeName } from '@elytracms/studio/lib/utils';
|
|
7
7
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
8
8
|
import { componentDisplayName } from '@elytracms/studio/lib/persona/labels';
|
|
9
|
-
import { PropValueControl } from '../cms/prop-fields';
|
|
10
|
-
import { useBuilder } from './builder-store';
|
|
11
|
-
import { LayoutSection, layoutManagedPropNames } from './layout-inspector';
|
|
9
|
+
import { PropValueControl } from '../cms/prop-fields.js';
|
|
10
|
+
import { useBuilder } from './builder-store.js';
|
|
11
|
+
import { LayoutSection, layoutManagedPropNames } from './layout-inspector.js';
|
|
12
12
|
export function PropertyInspector() {
|
|
13
13
|
const builder = useBuilder();
|
|
14
14
|
const studio = getStudioRegistry();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { ReuseCapability } from './reuse';
|
|
2
|
+
import type { ReuseCapability } from './reuse.js';
|
|
3
3
|
/**
|
|
4
4
|
* In-canvas reuse gestures (EC-282): "Make reusable" promotes a selected block to
|
|
5
5
|
* a new reusable document and replaces it in place with a transcluding embed;
|
|
@@ -5,9 +5,9 @@ import { readDocumentRef } from '@elytracms/core/cms-core';
|
|
|
5
5
|
import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, Field, Input, Stack, toast, } from '@elytracms/studio/ui';
|
|
6
6
|
import { getStudioRegistry } from '@elytracms/studio/lib/registry';
|
|
7
7
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
8
|
-
import { useCms } from '../cms/cms-store';
|
|
9
|
-
import { useBuilder } from './builder-store';
|
|
10
|
-
import { buildReusableValues, makeEmbedNode, resolveReuseCapability } from './reuse';
|
|
8
|
+
import { useCms } from '../cms/cms-store.js';
|
|
9
|
+
import { useBuilder } from './builder-store.js';
|
|
10
|
+
import { buildReusableValues, makeEmbedNode, resolveReuseCapability } from './reuse.js';
|
|
11
11
|
const ReuseContext = createContext(null);
|
|
12
12
|
export function useReuse() {
|
|
13
13
|
return useContext(ReuseContext);
|