@elytracms/studio 0.0.52 → 0.0.53
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/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 +15 -15
- package/dist/lib/ai/index.js +15 -15
- package/dist/lib/ai/knowledge.d.ts +1 -1
- 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-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 +3 -3
- 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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Editor } from '@tiptap/react';
|
|
2
|
-
import type { LinkTarget } from './link-control';
|
|
2
|
+
import type { LinkTarget } from './link-control.js';
|
|
3
3
|
interface RichTextToolbarProps {
|
|
4
4
|
editor: Editor;
|
|
5
5
|
/** Internal-link destinations across the workspace (empty ⇒ external-only). */
|
|
@@ -3,10 +3,10 @@ import { useEditorState } from '@tiptap/react';
|
|
|
3
3
|
import { Blocks, Bold, ChevronDown, Code, ImagePlus, Italic, Pilcrow, Redo2, Strikethrough, Underline, Undo2, } from 'lucide-react';
|
|
4
4
|
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Toolbar, ToolbarGroup, ToolbarSeparator, } from '@elytracms/studio/ui';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
|
-
import { ToolbarButton } from './toolbar-button';
|
|
7
|
-
import { LinkControl } from './link-control';
|
|
8
|
-
import { toolbarStateFromEditor } from './toolbar-state';
|
|
9
|
-
import { BLOCK_COMMANDS, isBlockCommandActive } from './block-commands';
|
|
6
|
+
import { ToolbarButton } from './toolbar-button.js';
|
|
7
|
+
import { LinkControl } from './link-control.js';
|
|
8
|
+
import { toolbarStateFromEditor } from './toolbar-state.js';
|
|
9
|
+
import { BLOCK_COMMANDS, isBlockCommandActive } from './block-commands.js';
|
|
10
10
|
/**
|
|
11
11
|
* The CMS rich-text toolbar (EC-314) — a compact, Notion-grade control strip that
|
|
12
12
|
* reads its active/enabled state reactively from the editor (`useEditorState`) so a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RefObject } from 'react';
|
|
2
2
|
import type { CmsDocument, CollectionDef } from '@elytracms/core/cms-core';
|
|
3
|
-
import type { AdvanceDirection, CellCoord } from './cell-edit';
|
|
3
|
+
import type { AdvanceDirection, CellCoord } from './cell-edit.js';
|
|
4
4
|
/**
|
|
5
5
|
* Table-level cell-edit controller (EC-168). Owns the state machine the cells
|
|
6
6
|
* render from:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useRef, useState } from 'react';
|
|
2
2
|
import { resolveField } from '@elytracms/core/cms-core';
|
|
3
|
-
import { cellErrorMessage, cellKey, nextEditableCell } from './cell-edit';
|
|
4
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
3
|
+
import { cellErrorMessage, cellKey, nextEditableCell } from './cell-edit.js';
|
|
4
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
5
5
|
export function useCellEdit({ collection, docs, editableFields, }) {
|
|
6
6
|
const source = useCollectionView();
|
|
7
7
|
const [activeKey, setActiveKey] = useState(null);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
-
import type { CompareState } from './document-editor-context';
|
|
2
|
+
import type { CompareState } from './document-editor-context.js';
|
|
3
3
|
export interface CompareSelection {
|
|
4
4
|
/** The open version comparison, or null when none (the sticky Compare tab). */
|
|
5
5
|
compare: CompareState | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { QueryKey } from '@tanstack/react-query';
|
|
2
2
|
import type { CmsDocument, CollectionDef, DocumentRef } from '@elytracms/core/cms-core';
|
|
3
3
|
import type { CollectionViewSource } from '@elytracms/studio/lib/collection-view/collection-view-source';
|
|
4
|
-
import type { DiscardDraftStatus } from './discard-draft';
|
|
4
|
+
import type { DiscardDraftStatus } from './discard-draft.js';
|
|
5
5
|
export interface DiscardController {
|
|
6
6
|
status: DiscardDraftStatus;
|
|
7
7
|
/** The hint shown when the item is disabled (view-read-only / up-to-date / loading). */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
3
|
-
import { discardDraftStatus } from './discard-draft';
|
|
4
|
-
import { useRestoreVersion } from './use-restore-version';
|
|
3
|
+
import { discardDraftStatus } from './discard-draft.js';
|
|
4
|
+
import { useRestoreVersion } from './use-restore-version.js';
|
|
5
5
|
/**
|
|
6
6
|
* EC-316 / EC-325 — the "Discard changes" controller. Reverting the draft to the
|
|
7
7
|
* published content IS a whole-document restore of the pinned published version,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DocumentRef } from '@elytracms/core/cms-core';
|
|
2
|
-
import type { DocumentVersionsView } from './cms-store';
|
|
2
|
+
import type { DocumentVersionsView } from './cms-store.js';
|
|
3
3
|
/** The one cache key for a document's version history — shared so the Versions
|
|
4
4
|
* pane and the EC-298 compare view read through a single deduped query. */
|
|
5
5
|
export declare function documentVersionsKey(projectId: string | undefined, ref: DocumentRef): readonly ["documentVersions", string, string, string];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useOperationQuery } from '@elytracms/studio/lib/query';
|
|
3
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
3
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
4
4
|
/**
|
|
5
5
|
* Recorded-version freshness (EC-322): re-read on exactly the commands that
|
|
6
6
|
* change a document's version history or its live pin — NOT the whole `documents`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EmbedInspectorApi, EmbedInspectorPayload } from './rich-text/embed-inspector-context';
|
|
1
|
+
import type { EmbedInspectorApi, EmbedInspectorPayload } from './rich-text/embed-inspector-context.js';
|
|
2
2
|
/**
|
|
3
3
|
* 0.0.41 — the selection-driven embed-inspector host. A `componentEmbed` node
|
|
4
4
|
* selection in a rich-text field swaps the inspector sidebar for the embed's prop
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { QueryKey } from '@tanstack/react-query';
|
|
2
2
|
import type { CmsDocument, DocumentRef } from '@elytracms/core/cms-core';
|
|
3
3
|
import type { CollectionViewSource } from '@elytracms/studio/lib/collection-view/collection-view-source';
|
|
4
|
-
import type { DocumentVersionsView } from './cms-store';
|
|
5
|
-
import type { PublishedSnapshotState } from './versions-model';
|
|
4
|
+
import type { DocumentVersionsView } from './cms-store.js';
|
|
5
|
+
import type { PublishedSnapshotState } from './versions-model.js';
|
|
6
6
|
export type Perspective = 'draft' | 'published';
|
|
7
7
|
/**
|
|
8
8
|
* EC-226 — which document the fieldset renders, given the active perspective and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
|
-
import { useDocumentVersionsQuery } from './use-document-versions';
|
|
3
|
-
import { derivePublishedSnapshot, publishedVersionSnapshot } from './versions-model';
|
|
2
|
+
import { useDocumentVersionsQuery } from './use-document-versions.js';
|
|
3
|
+
import { derivePublishedSnapshot, publishedVersionSnapshot } from './versions-model.js';
|
|
4
4
|
/**
|
|
5
5
|
* EC-226 — which document the fieldset renders, given the active perspective and
|
|
6
6
|
* the pinned published snapshot's load state. A pure decision so "never present
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
import { useOperationCache } from '@elytracms/studio/lib/query';
|
|
3
|
-
import { flushDirtyDraft } from './discard-draft';
|
|
3
|
+
import { flushDirtyDraft } from './discard-draft.js';
|
|
4
4
|
/**
|
|
5
5
|
* EC-325 — the version-restore sequence, single-sourced. The Versions pane's
|
|
6
6
|
* per-version restore, the Compare view's scoped/whole restore, and the header's
|
|
@@ -13,7 +13,7 @@ import { translate } from '@elytracms/studio/lib/i18n';
|
|
|
13
13
|
* The shared `@elytracms/core/content` diff engine it uses stays eager (many other
|
|
14
14
|
* critical-path modules import it), so what defers here is the compare UI itself.
|
|
15
15
|
*/
|
|
16
|
-
const VersionCompareImpl = lazy(() => import('./version-compare').then((module) => ({ default: module.VersionCompare })));
|
|
16
|
+
const VersionCompareImpl = lazy(() => import('./version-compare.js').then((module) => ({ default: module.VersionCompare })));
|
|
17
17
|
function CompareFallback() {
|
|
18
18
|
return (_jsx("div", { className: "grid min-h-0 flex-1 place-items-center p-8", children: _jsx(Text, { size: "sm", tone: "muted", children: translate('cms.version.loadingCompare') }) }));
|
|
19
19
|
}
|
|
@@ -4,12 +4,12 @@ import { ArrowRight, ChevronDown, ChevronLeft, ChevronRight, RotateCcw } from 'l
|
|
|
4
4
|
import { diffDocuments } from '@elytracms/core/content';
|
|
5
5
|
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
|
|
6
6
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
7
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
8
|
-
import { DocumentDiffView } from './document-diff-view';
|
|
9
|
-
import { useDocumentEditor } from './document-editor-context';
|
|
10
|
-
import { useDocumentVersionsQuery } from './use-document-versions';
|
|
11
|
-
import { useRestoreVersion } from './use-restore-version';
|
|
12
|
-
import { formatVersionTimestamp } from './versions-model';
|
|
7
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
8
|
+
import { DocumentDiffView } from './document-diff-view.js';
|
|
9
|
+
import { useDocumentEditor } from './document-editor-context.js';
|
|
10
|
+
import { useDocumentVersionsQuery } from './use-document-versions.js';
|
|
11
|
+
import { useRestoreVersion } from './use-restore-version.js';
|
|
12
|
+
import { formatVersionTimestamp } from './versions-model.js';
|
|
13
13
|
/**
|
|
14
14
|
* EC-298/317 — the version compare view: the sticky **Compare** content tab. This
|
|
15
15
|
* shell owns the version SELECTION chrome (the two re-pickable sides, the base
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CmsDocument } from '@elytracms/core/cms-core';
|
|
2
|
-
import type { DocumentVersionsView } from './cms-store';
|
|
2
|
+
import type { DocumentVersionsView } from './cms-store.js';
|
|
3
3
|
/**
|
|
4
4
|
* Does a recorded snapshot equal the working draft, by VALUE (EC-224)? Decides
|
|
5
5
|
* whether the Versions pane shows "unpublished changes".
|
|
@@ -6,11 +6,11 @@ import { documentsSemanticEqual } from '@elytracms/core/content';
|
|
|
6
6
|
import { useOperationCache } from '@elytracms/studio/lib/query';
|
|
7
7
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
8
8
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
9
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
10
|
-
import { useDocumentEditor } from './document-editor-context';
|
|
11
|
-
import { useDocumentVersionsQuery } from './use-document-versions';
|
|
12
|
-
import { useRestoreVersion } from './use-restore-version';
|
|
13
|
-
import { formatVersionTimestamp } from './versions-model';
|
|
9
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
10
|
+
import { useDocumentEditor } from './document-editor-context.js';
|
|
11
|
+
import { useDocumentVersionsQuery } from './use-document-versions.js';
|
|
12
|
+
import { useRestoreVersion } from './use-restore-version.js';
|
|
13
|
+
import { formatVersionTimestamp } from './versions-model.js';
|
|
14
14
|
/**
|
|
15
15
|
* EC-224 — the document-level **Versions** inspector pane. Re-homes the EC-180
|
|
16
16
|
* VersionsPanel at the document level (the Sanity model): the continuous draft
|
|
@@ -3,8 +3,8 @@ import { ArrowDown, ArrowUp, Check, List, ListTree, SlidersHorizontal } from 'lu
|
|
|
3
3
|
import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Row, SegmentedControl, Text, } from '@elytracms/studio/ui';
|
|
4
4
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
5
5
|
import { moveColumn, resolveColumns, toggleColumn } from '@elytracms/studio/lib/cms-views';
|
|
6
|
-
import { fieldLabel } from './cms-labels';
|
|
7
|
-
import { useCollectionView } from '../collection-view/collection-view-context';
|
|
6
|
+
import { fieldLabel } from './cms-labels.js';
|
|
7
|
+
import { useCollectionView } from '../collection-view/collection-view-context.js';
|
|
8
8
|
/**
|
|
9
9
|
* The view selector of the collection table (EC-169) — a segmented control that
|
|
10
10
|
* switches between the built-in "All documents" default and the project's
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo, useReducer, useRef } from 'react';
|
|
3
3
|
import { Collaboration, createSequentialClock, createSequentialIds } from '@elytracms/core/collaboration';
|
|
4
4
|
import { createRequiredContext } from '@elytracms/studio/lib/required-context';
|
|
5
|
-
import { seedCollabSession } from './collab-seed';
|
|
5
|
+
import { seedCollabSession } from './collab-seed.js';
|
|
6
6
|
const { Context: CollabContext, useRequired: useCollab } = createRequiredContext('Collab');
|
|
7
7
|
const ME = { id: 'u-you', name: 'You' };
|
|
8
8
|
export function CollabProvider({ projectId, children, }) {
|
|
@@ -2,8 +2,8 @@ import { useCallback, useMemo } from 'react';
|
|
|
2
2
|
import { isHierarchical, urlForDocument } from '@elytracms/core/cms-core';
|
|
3
3
|
import { studioPath } from '@elytracms/studio/router';
|
|
4
4
|
import { resolveDeploymentFrontendUrl, resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace';
|
|
5
|
-
import { useCms } from '../cms/cms-store';
|
|
6
|
-
import { useOptionalAssets } from '../assets/assets-store';
|
|
5
|
+
import { useCms } from '../cms/cms-store.js';
|
|
6
|
+
import { useOptionalAssets } from '../assets/assets-store.js';
|
|
7
7
|
import { usePublishedDocuments } from '@elytracms/studio/lib/cms/published-documents';
|
|
8
8
|
/**
|
|
9
9
|
* Assemble a {@link CollectionViewSource} for a `cmsDocuments` collection from the
|
|
@@ -9,9 +9,9 @@ import { previewSpecs } from '@elytracms/studio/lib/registry/preview';
|
|
|
9
9
|
import { Badge, Button, Code, Field, Row, Spacer, Stack, TabButton, Text } from '@elytracms/studio/ui';
|
|
10
10
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
11
11
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
12
|
-
import { getCanvasStylesheetUrl } from '../builder/canvas-stylesheet';
|
|
13
|
-
import { useCanvasViewports, viewportWidth } from '../builder/canvas-breakpoints';
|
|
14
|
-
import { PropValueControl } from '../cms/prop-fields';
|
|
12
|
+
import { getCanvasStylesheetUrl } from '../builder/canvas-stylesheet.js';
|
|
13
|
+
import { useCanvasViewports, viewportWidth } from '../builder/canvas-breakpoints.js';
|
|
14
|
+
import { PropValueControl } from '../cms/prop-fields.js';
|
|
15
15
|
/** Preview state for a manifest: the fixture selection + the live prop overrides. */
|
|
16
16
|
export function usePreviewState(manifest) {
|
|
17
17
|
const specs = useMemo(() => previewSpecs(manifest), [manifest]);
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { BookOpen, Layers, MousePointerClick, Sparkles } from 'lucide-react';
|
|
3
3
|
import { getStudioRegistry, registryHealth } from '@elytracms/studio/lib/registry';
|
|
4
4
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
5
|
-
import { RegistryBrowser } from './registry-browser';
|
|
6
|
-
import { deriveComponentStats } from './taxonomy';
|
|
5
|
+
import { RegistryBrowser } from './registry-browser.js';
|
|
6
|
+
import { deriveComponentStats } from './taxonomy.js';
|
|
7
7
|
import { Badge, Card, Code, Heading, Panel, PanelHeader, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
|
|
8
8
|
/**
|
|
9
9
|
* The Components section landing view (EC-050, overhauled EC-320). Serves BOTH
|
|
@@ -6,8 +6,8 @@ import { componentStatus, getStudioRegistry } from '@elytracms/studio/lib/regist
|
|
|
6
6
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
7
7
|
import { Code, Input, Row, SegmentedControl, Spacer, Stack, Text } from '@elytracms/studio/ui';
|
|
8
8
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
9
|
-
import { ComponentStatusDot } from './component-status';
|
|
10
|
-
import { deriveTaxonomy } from './taxonomy';
|
|
9
|
+
import { ComponentStatusDot } from './component-status.js';
|
|
10
|
+
import { deriveTaxonomy } from './taxonomy.js';
|
|
11
11
|
/**
|
|
12
12
|
* The registry browser sidebar (EC-050, taxonomy overhaul EC-320). A searchable,
|
|
13
13
|
* two-level tree: namespace (base / project) → category (the manifest's declared
|
|
@@ -6,11 +6,11 @@ import { Button, Code, Dialog, DialogContent, DialogDescription, DialogFooter, D
|
|
|
6
6
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
7
7
|
import { localizedLabel, translate } from '@elytracms/studio/lib/i18n';
|
|
8
8
|
import { getInstantiatedKit } from '@elytracms/studio/lib/starters/kit-session';
|
|
9
|
-
import { CmsSessionGate } from '../project-session';
|
|
10
|
-
import { CmsProvider, useCms } from '../cms/cms-store';
|
|
11
|
-
import { stageDocument } from '../cms/document-staging';
|
|
12
|
-
import { resolveCmsInitialCollections } from '../app-views/default-modules';
|
|
13
|
-
import { appendToBlockDocument, buildBlockDocument, canAppendTo, collectionsWithBlocks, isComponentAllowed, } from './transfer';
|
|
9
|
+
import { CmsSessionGate } from '../project-session.js';
|
|
10
|
+
import { CmsProvider, useCms } from '../cms/cms-store.js';
|
|
11
|
+
import { stageDocument } from '../cms/document-staging.js';
|
|
12
|
+
import { resolveCmsInitialCollections } from '../app-views/default-modules.js';
|
|
13
|
+
import { appendToBlockDocument, buildBlockDocument, canAppendTo, collectionsWithBlocks, isComponentAllowed, } from './transfer.js';
|
|
14
14
|
/** Existing documents offered per target, beyond which the rest are hidden (filter to find them). */
|
|
15
15
|
const MAX_EXISTING_TARGETS = 8;
|
|
16
16
|
/**
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { isBlocksField, isFieldLocalized, seedDefaults } from '@elytracms/core/cms-core';
|
|
2
2
|
import { blockRootsOf, maxNodeIdSeq } from '@elytracms/core/project-graph';
|
|
3
|
-
import { makeNodeIdCounter } from '../builder/builder-store';
|
|
4
|
-
import { applyCellValue } from '../cms/cell-edit';
|
|
5
|
-
import { mintDocumentId } from '../cms/cms-store';
|
|
6
|
-
import { embedNodeFrom } from './component-preview';
|
|
3
|
+
import { makeNodeIdCounter } from '../builder/builder-store.js';
|
|
4
|
+
import { applyCellValue } from '../cms/cell-edit.js';
|
|
5
|
+
import { mintDocumentId } from '../cms/cms-store.js';
|
|
6
|
+
import { embedNodeFrom } from './component-preview.js';
|
|
7
7
|
/**
|
|
8
8
|
* Collections that can receive a transferred combination — those declaring a
|
|
9
9
|
* `blocks` (composition) field. The first blocks field wins (a collection with a
|
|
@@ -4,8 +4,8 @@ import { roleGrantsCapability } from '@elytracms/core/persistence';
|
|
|
4
4
|
import { Avatar, Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Row, Stack, Text, } from '@elytracms/studio/ui';
|
|
5
5
|
import { STUDIO_PROJECT_ROUTE, studioPath, useNavigate } from '@elytracms/studio/router';
|
|
6
6
|
import { useT } from '@elytracms/studio/lib/i18n';
|
|
7
|
-
import { useAuth, useProjectRole } from './auth-context';
|
|
8
|
-
import { useTheme } from './theme-context';
|
|
7
|
+
import { useAuth, useProjectRole } from './auth-context.js';
|
|
8
|
+
import { useTheme } from './theme-context.js';
|
|
9
9
|
/**
|
|
10
10
|
* Current-user affordance in the shell header (EC-150): who is signed in,
|
|
11
11
|
* their role on the active project (badge), theme switch, and sign-out. Role
|
|
@@ -3,8 +3,8 @@ import { useState } from 'react';
|
|
|
3
3
|
import { Rocket, X } from 'lucide-react';
|
|
4
4
|
import { Button, Row, Spacer, Text } from '@elytracms/studio/ui';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
|
-
import { resolveBackendConfig } from '../lib/persistence/backend-mode';
|
|
7
|
-
import { missingInstantPublishVars } from '../lib/delivery/instant-publish';
|
|
6
|
+
import { resolveBackendConfig } from '../lib/persistence/backend-mode.js';
|
|
7
|
+
import { missingInstantPublishVars } from '../lib/delivery/instant-publish.js';
|
|
8
8
|
import { useOperationQuery } from '@elytracms/studio/lib/query';
|
|
9
9
|
/**
|
|
10
10
|
* EC-268: a boot-up health check for instant publish (EC-146). When the studio is
|
|
@@ -4,7 +4,7 @@ import { SESSION_EXPIRED_MESSAGE, SIGN_IN_AGAIN_LABEL, isSessionExpiredError, si
|
|
|
4
4
|
import { Badge, Button, Row, Stack, Text } from '@elytracms/studio/ui';
|
|
5
5
|
import { operationErrorLabel } from '@elytracms/studio/lib/persona/labels';
|
|
6
6
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
7
|
-
import { useOptionalAuth } from './auth-context';
|
|
7
|
+
import { useOptionalAuth } from './auth-context.js';
|
|
8
8
|
/**
|
|
9
9
|
* Shared error surface for failed/denied operations (EC-141). Every studio
|
|
10
10
|
* surface renders rejected commands through this banner so a structured
|
|
@@ -4,11 +4,11 @@ import { Globe, LogIn, TerminalSquare } from 'lucide-react';
|
|
|
4
4
|
import { Badge, Button, Card, Code, Heading, Row, Spacer, Stack, Text } from '@elytracms/studio/ui';
|
|
5
5
|
import { hasProjectSession } from '@elytracms/studio/lib/auth';
|
|
6
6
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
7
|
-
import { PlaygroundBadge } from './playground-badge';
|
|
8
|
-
import { SignInNeededBadge } from './sign-in-needed-badge';
|
|
9
|
-
import { SectionStateView } from './section-state';
|
|
10
|
-
import { useStudio } from './studio-context';
|
|
11
|
-
import { useRecentProjects, useSwitcherEntries } from './workspace-projects';
|
|
7
|
+
import { PlaygroundBadge } from './playground-badge.js';
|
|
8
|
+
import { SignInNeededBadge } from './sign-in-needed-badge.js';
|
|
9
|
+
import { SectionStateView } from './section-state.js';
|
|
10
|
+
import { useStudio } from './studio-context.js';
|
|
11
|
+
import { useRecentProjects, useSwitcherEntries } from './workspace-projects.js';
|
|
12
12
|
/**
|
|
13
13
|
* Studio launcher / project list (brief §4.3, §8.1; reframed by EC-154). The
|
|
14
14
|
* Studio's front door: lists the workspace's projects and routes into a
|
|
@@ -5,7 +5,7 @@ import { isPlaygroundMode } from '@elytracms/studio/lib/persistence';
|
|
|
5
5
|
import { configureContentSession } from '@elytracms/studio/lib/data';
|
|
6
6
|
import { resolveDeploymentRoutes } from '@elytracms/studio/lib/workspace';
|
|
7
7
|
import { createRequiredContext } from '@elytracms/studio/lib/required-context';
|
|
8
|
-
import { HydrationBoundary, useHydrationPhase } from './use-hydration-phase';
|
|
8
|
+
import { HydrationBoundary, useHydrationPhase } from './use-hydration-phase.js';
|
|
9
9
|
const { Context: ProjectSessionContext, useRequired: useProjectSession } = createRequiredContext('ProjectSession');
|
|
10
10
|
export function ProjectSessionProvider({ projectId, children, }) {
|
|
11
11
|
const playground = isPlaygroundMode();
|
|
@@ -4,9 +4,9 @@ import { Check, ChevronsUpDown, FolderOpen } from 'lucide-react';
|
|
|
4
4
|
import { hasProjectSession } from '@elytracms/studio/lib/auth';
|
|
5
5
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
6
6
|
import { Badge, Button, Code, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, Row, Spacer, Stack, Text, } from '@elytracms/studio/ui';
|
|
7
|
-
import { useStudio } from './studio-context';
|
|
8
|
-
import { useRecentProjects, useSwitcherEntries } from './workspace-projects';
|
|
9
|
-
import { SignInNeededBadge } from './sign-in-needed-badge';
|
|
7
|
+
import { useStudio } from './studio-context.js';
|
|
8
|
+
import { useRecentProjects, useSwitcherEntries } from './workspace-projects.js';
|
|
9
|
+
import { SignInNeededBadge } from './sign-in-needed-badge.js';
|
|
10
10
|
/**
|
|
11
11
|
* The project switcher (EC-033, reframed by EC-154): with a workspace config
|
|
12
12
|
* the list is config-driven — configured projects ∩ the user's grants, plus
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { RotateCcw } from 'lucide-react';
|
|
3
3
|
import { Button } from '@elytracms/studio/ui';
|
|
4
4
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
5
|
-
import { SectionStateView } from './section-state';
|
|
5
|
+
import { SectionStateView } from './section-state.js';
|
|
6
6
|
/**
|
|
7
7
|
* The shared error/loading status gate for a rail module (EC-319/EC-323,
|
|
8
8
|
* repointed onto `SectionStateView` in EC-327). The assets, users, and
|
|
@@ -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 { useRedirects } from './redirects-store';
|
|
5
|
-
import { redirectsCollectionDef } from './redirects-schema';
|
|
6
|
-
import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source';
|
|
4
|
+
import { useRedirects } from './redirects-store.js';
|
|
5
|
+
import { redirectsCollectionDef } from './redirects-schema.js';
|
|
6
|
+
import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
|
|
7
7
|
/** The redirects rail is not localized — one implicit locale keeps the lens honest. */
|
|
8
8
|
const REDIRECTS_LOCALE = 'en';
|
|
9
9
|
const REDIRECTS_LOCALE_CONFIG = {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
3
|
-
import { RedirectsProvider, useRedirects } from './redirects-store';
|
|
4
|
-
import { useRedirectsCollectionViewSource } from './redirects-collection-view-source';
|
|
5
|
-
import { CollectionViewProvider } from '../collection-view/collection-view-context';
|
|
6
|
-
import { RailStoreStatus } from '../rail-store-status';
|
|
7
|
-
import { LoadedCollectionTable } from '../cms/collection-table';
|
|
8
|
-
import { PortableDetailEditor } from '../cms/detail-editor';
|
|
3
|
+
import { RedirectsProvider, useRedirects } from './redirects-store.js';
|
|
4
|
+
import { useRedirectsCollectionViewSource } from './redirects-collection-view-source.js';
|
|
5
|
+
import { CollectionViewProvider } from '../collection-view/collection-view-context.js';
|
|
6
|
+
import { RailStoreStatus } from '../rail-store-status.js';
|
|
7
|
+
import { LoadedCollectionTable } from '../cms/collection-table.js';
|
|
8
|
+
import { PortableDetailEditor } from '../cms/detail-editor.js';
|
|
9
9
|
/**
|
|
10
10
|
* The studio Redirects module (EC-303). Editorial redirects as data — the reuse
|
|
11
11
|
* proof (with the users rail) that the portable interaction surfaces serve any
|
|
@@ -6,9 +6,9 @@ import { cn } from '@elytracms/studio/lib/utils';
|
|
|
6
6
|
import { readCollapsedViews, storeCollapsedViews } from '@elytracms/studio/lib/rail';
|
|
7
7
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
8
8
|
import { Text } from '@elytracms/studio/ui';
|
|
9
|
-
import { activeViewIdFromPath, isNavViewVisible, useStudioNav } from './app-views/sidebar';
|
|
10
|
-
import { useFieldRenderers } from './cms/field-renderer';
|
|
11
|
-
import { useProjectRole } from './auth-context';
|
|
9
|
+
import { activeViewIdFromPath, isNavViewVisible, useStudioNav } from './app-views/sidebar.js';
|
|
10
|
+
import { useFieldRenderers } from './cms/field-renderer.js';
|
|
11
|
+
import { useProjectRole } from './auth-context.js';
|
|
12
12
|
/**
|
|
13
13
|
* Vertical section rail (brief §8.1), driven by the configurable sidebar (EC-237):
|
|
14
14
|
* a consumer-extendable tree of views / groups / separators resolved over the
|
|
@@ -3,7 +3,7 @@ import { Link, STUDIO_PROJECT_ROUTE } from '@elytracms/studio/router';
|
|
|
3
3
|
import { availabilityOf, SECTIONS, sectionStateSchema } from '@elytracms/core/studio-core';
|
|
4
4
|
import { Code, Row, Stack, Text } from '@elytracms/studio/ui';
|
|
5
5
|
import { cn } from '@elytracms/studio/lib/utils';
|
|
6
|
-
import { resolveSectionState, SectionStateView } from './section-state';
|
|
6
|
+
import { resolveSectionState, SectionStateView } from './section-state.js';
|
|
7
7
|
/** Parse a `?state=` search param into a SectionState (undefined when absent/invalid). */
|
|
8
8
|
export function parseSectionState(raw) {
|
|
9
9
|
const parsed = sectionStateSchema.safeParse(raw);
|
|
@@ -6,13 +6,13 @@ import { studioSearch } from '@elytracms/studio/router/search';
|
|
|
6
6
|
import { Button, Heading, Stack, Text } from '@elytracms/studio/ui';
|
|
7
7
|
import { DataProvider } from '@elytracms/studio/lib/data';
|
|
8
8
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
9
|
-
import { useStudio } from './studio-context';
|
|
10
|
-
import { StudioShell } from './studio-shell';
|
|
11
|
-
import { AssetsProvider } from './assets/assets-store';
|
|
12
|
-
import { CollabProvider } from './collab/collab-context';
|
|
13
|
-
import { ProjectSessionProvider } from './project-session';
|
|
14
|
-
import { flatPath } from './app-views/module';
|
|
15
|
-
import { landingViewId, useStudioNav } from './app-views/sidebar';
|
|
9
|
+
import { useStudio } from './studio-context.js';
|
|
10
|
+
import { StudioShell } from './studio-shell.js';
|
|
11
|
+
import { AssetsProvider } from './assets/assets-store.js';
|
|
12
|
+
import { CollabProvider } from './collab/collab-context.js';
|
|
13
|
+
import { ProjectSessionProvider } from './project-session.js';
|
|
14
|
+
import { flatPath } from './app-views/module.js';
|
|
15
|
+
import { landingViewId, useStudioNav } from './app-views/sidebar.js';
|
|
16
16
|
/**
|
|
17
17
|
* EC-223 Stage 6 (catch-all routing): the studio's per-project route component.
|
|
18
18
|
*
|
|
@@ -5,15 +5,15 @@ import { useCallback, useEffect, useState } from 'react';
|
|
|
5
5
|
import { Row, Spacer, Toaster } from '@elytracms/studio/ui';
|
|
6
6
|
import { readRailCollapsed, storeRailCollapsed } from '@elytracms/studio/lib/rail';
|
|
7
7
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
8
|
-
import { CurrentUserMenu } from './current-user-menu';
|
|
9
|
-
import { DeliveryHealthBanner } from './delivery-health-banner';
|
|
10
|
-
import { PlaygroundBadge } from './playground-badge';
|
|
11
|
-
import { DevLoginBadge } from './dev-login-badge';
|
|
12
|
-
import { AiPanelToggle } from './ai/ai-panel-toggle';
|
|
13
|
-
import { ProjectSwitcher } from './project-switcher';
|
|
14
|
-
import { SectionNav } from './section-nav';
|
|
15
|
-
import { activeViewIdFromPath, useStudioNav } from './app-views/sidebar';
|
|
16
|
-
import { BreadcrumbProvider, useBreadcrumbTrail } from './breadcrumb-context';
|
|
8
|
+
import { CurrentUserMenu } from './current-user-menu.js';
|
|
9
|
+
import { DeliveryHealthBanner } from './delivery-health-banner.js';
|
|
10
|
+
import { PlaygroundBadge } from './playground-badge.js';
|
|
11
|
+
import { DevLoginBadge } from './dev-login-badge.js';
|
|
12
|
+
import { AiPanelToggle } from './ai/ai-panel-toggle.js';
|
|
13
|
+
import { ProjectSwitcher } from './project-switcher.js';
|
|
14
|
+
import { SectionNav } from './section-nav.js';
|
|
15
|
+
import { activeViewIdFromPath, useStudioNav } from './app-views/sidebar.js';
|
|
16
|
+
import { BreadcrumbProvider, useBreadcrumbTrail } from './breadcrumb-context.js';
|
|
17
17
|
/**
|
|
18
18
|
* The Studio shell (brief §4.3, §8.1): a persistent top bar + section rail that
|
|
19
19
|
* preserve the active project while the user moves between surfaces. The top bar
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { Button, Stack, Text } from '@elytracms/studio/ui';
|
|
4
4
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
5
|
-
import { OperationErrorBanner } from './operation-error';
|
|
5
|
+
import { OperationErrorBanner } from './operation-error.js';
|
|
6
6
|
/**
|
|
7
7
|
* `loader`'s IDENTITY is the refetch trigger — memoize it (`useCallback`) over
|
|
8
8
|
* whatever inputs should re-hydrate (e.g. `projectId`), exactly like the
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { studioPath } from '@elytracms/studio/router';
|
|
3
|
-
import { useAuth } from '../auth-context';
|
|
4
|
-
import { useUsers } from './users-store';
|
|
5
|
-
import { usersCollectionDef } from './users-schema';
|
|
6
|
-
import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source';
|
|
3
|
+
import { useAuth } from '../auth-context.js';
|
|
4
|
+
import { useUsers } from './users-store.js';
|
|
5
|
+
import { usersCollectionDef } from './users-schema.js';
|
|
6
|
+
import { metaBagProjection, normalizeOkResult, useRailViewSource } from '../rail-view-source.js';
|
|
7
7
|
/** The users rail is not localized — one implicit locale keeps the lens honest. */
|
|
8
8
|
const USERS_LOCALE = 'en';
|
|
9
9
|
const USERS_LOCALE_CONFIG = { default: USERS_LOCALE, locales: [USERS_LOCALE] };
|
|
@@ -2,15 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { ShieldAlert } from 'lucide-react';
|
|
3
3
|
import { Heading, Stack, Text } from '@elytracms/studio/ui';
|
|
4
4
|
import { translate } from '@elytracms/studio/lib/i18n';
|
|
5
|
-
import { useAuth, useProjectRole } from '../auth-context';
|
|
6
|
-
import { UsersProvider, useUsers } from './users-store';
|
|
7
|
-
import { useUsersCollectionViewSource } from './users-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 { PortableDetailEditor } from '../cms/detail-editor';
|
|
12
|
-
import { AccountSettings } from '../account/account-settings';
|
|
13
|
-
import { InviteUserBar } from './invite-user-bar';
|
|
5
|
+
import { useAuth, useProjectRole } from '../auth-context.js';
|
|
6
|
+
import { UsersProvider, useUsers } from './users-store.js';
|
|
7
|
+
import { useUsersCollectionViewSource } from './users-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 { PortableDetailEditor } from '../cms/detail-editor.js';
|
|
12
|
+
import { AccountSettings } from '../account/account-settings.js';
|
|
13
|
+
import { InviteUserBar } from './invite-user-bar.js';
|
|
14
14
|
/**
|
|
15
15
|
* The studio Users module (EC-240). An admin-only section for managing who has
|
|
16
16
|
* access to this deployment and their role. AD-19: it is the **reuse proof** for
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { getWorkspaceState, selectSwitcherProjects } from '@elytracms/studio/lib/workspace';
|
|
3
|
-
import { useStudio } from './studio-context';
|
|
3
|
+
import { useStudio } from './studio-context.js';
|
|
4
4
|
/**
|
|
5
5
|
* Config-driven project source for the switcher + launcher (EC-154, reframed for
|
|
6
6
|
* EC-179). The decision logic is the pure `selectSwitcherProjects`; this hook
|
package/dist/customization.d.ts
CHANGED
|
@@ -38,18 +38,18 @@
|
|
|
38
38
|
* createStudio(config, studioConfig)
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
export { defineStudio } from './components/app-views/studio-config';
|
|
42
|
-
export type { StudioConfig, CustomFieldRenderer, CustomFieldRendererProps, } from './components/app-views/studio-config';
|
|
43
|
-
export { nav } from './components/app-views/default-modules';
|
|
44
|
-
export type { CmsViewConfig, BuiltinViewConfig, CustomViewConfig, } from './components/app-views/default-modules';
|
|
45
|
-
export type { AppViewContext, AppViewModule, SidebarNode } from './components/app-views/module';
|
|
46
|
-
export { createStudio } from './lib/workspace';
|
|
41
|
+
export { defineStudio } from './components/app-views/studio-config.js';
|
|
42
|
+
export type { StudioConfig, CustomFieldRenderer, CustomFieldRendererProps, } from './components/app-views/studio-config.js';
|
|
43
|
+
export { nav } from './components/app-views/default-modules.js';
|
|
44
|
+
export type { CmsViewConfig, BuiltinViewConfig, CustomViewConfig, } from './components/app-views/default-modules.js';
|
|
45
|
+
export type { AppViewContext, AppViewModule, SidebarNode } from './components/app-views/module.js';
|
|
46
|
+
export { createStudio } from './lib/workspace/index.js';
|
|
47
47
|
/** A ready-made example renderer; a consuming repo may use it or author its own. */
|
|
48
|
-
export { colorFieldRenderer } from './components/cms/field-renderer';
|
|
48
|
+
export { colorFieldRenderer } from './components/cms/field-renderer.js';
|
|
49
49
|
/**
|
|
50
50
|
* Studio-UI localization (EC-241): author a translation catalog for `defineStudio({
|
|
51
51
|
* i18n })`. `msg` is only needed to build an in-repo *source* catalog with translator
|
|
52
52
|
* hints; a plain `MessageCatalog` (flat key → string) is all a consumer supplies.
|
|
53
53
|
*/
|
|
54
|
-
export { msg } from './lib/i18n';
|
|
55
|
-
export type { MessageCatalog, SourceMessage, StudioI18nConfig } from './lib/i18n';
|
|
54
|
+
export { msg } from './lib/i18n/index.js';
|
|
55
|
+
export type { MessageCatalog, SourceMessage, StudioI18nConfig } from './lib/i18n/index.js';
|