alinea 2.0.0-preview.9 → 2.0.0-rc2
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/.init/.mcp.json +11 -0
- package/dist/.init/AGENTS.md +17 -0
- package/dist/.init/CLAUDE.md +1 -0
- package/dist/.init/content/pages/welcome.json +1 -1
- package/dist/.init/package.json +1 -1
- package/dist/.init/src/cms.ts +4 -2
- package/dist/.init-pm/bun.lock +0 -0
- package/dist/.mcp/later/dev.json +1 -0
- package/dist/.mcp/lock/dev.json +1 -0
- package/dist/.mcp/online/dev.json +1 -0
- package/dist/LICENSES.md +2239 -294
- package/dist/adapter/next/cms.d.ts +2 -2
- package/dist/adapter/next/cms.js +66 -32
- package/dist/adapter/next/context.js +5 -6
- package/dist/adapter/next/dashboardUrl.d.ts +6 -0
- package/dist/adapter/next/dashboardUrl.js +13 -0
- package/dist/adapter/next/devCache.d.ts +16 -0
- package/dist/adapter/next/devCache.js +32 -0
- package/dist/adapter/next/handler.js +18 -4
- package/dist/adapter/next/syncCheck.d.ts +15 -2
- package/dist/adapter/next/syncCheck.js +26 -9
- package/dist/adapter/next/with-alinea.js +27 -20
- package/dist/backend/CommitEntries.d.ts +17 -0
- package/dist/backend/CommitEntries.js +39 -0
- package/dist/backend/Handler.d.ts +15 -1
- package/dist/backend/Handler.js +106 -32
- package/dist/backend/api/BasicAuth.js +5 -1
- package/dist/backend/api/BlobStore.d.ts +21 -0
- package/dist/backend/api/BlobStore.js +63 -0
- package/dist/backend/api/CreateBackend.js +10 -8
- package/dist/backend/api/DatabaseApi.d.ts +4 -1
- package/dist/backend/api/DatabaseApi.js +104 -7
- package/dist/backend/api/GithubApi.d.ts +13 -0
- package/dist/backend/api/GithubApi.js +217 -54
- package/dist/backend/api/OAuth2.js +21 -26
- package/dist/backend/api/ProxyMedia.js +3 -0
- package/dist/backend/api/database.js +6 -6
- package/dist/backend/store/GeneratedDatabase.js +4 -2
- package/dist/backend/store/GeneratedDatabaseNode.d.ts +5 -1
- package/dist/backend/store/GeneratedDatabaseNode.js +9 -19
- package/dist/backend/store/GeneratedRelease.d.ts +1 -1
- package/dist/backend/store/GeneratedRelease.js +3 -4
- package/dist/backend/util/JWKS.d.ts +4 -0
- package/dist/backend/util/JWKS.js +40 -0
- package/dist/backend/util/Syncable.d.ts +6 -0
- package/dist/backend/util/Syncable.js +3 -1
- package/dist/bundled.d.ts +7124 -1459
- package/dist/chunks/{node-sqlite-XVNTNMCY.js → bun-sqlite-RI6BYU5S.js} +3 -3
- package/dist/chunks/ccitt-Y7TDCCPM.js +90 -0
- package/dist/chunks/{chunk-ASYKC6IE.js → chunk-2PP7WJUJ.js} +2 -12
- package/dist/chunks/{chunk-DWR5A5KL.js → chunk-4VKHBA57.js} +25 -6
- package/dist/chunks/{chunk-QJGGYF6E.js → chunk-4ZA6KZHS.js} +5 -5
- package/dist/chunks/{chunk-OFEKTDRF.js → chunk-7DDPSWRY.js} +8383 -5156
- package/dist/chunks/{chunk-ETWOY4AL.js → chunk-A2I6MCCS.js} +1 -1
- package/dist/chunks/chunk-CYVOGRSD.js +218 -0
- package/dist/chunks/{chunk-TIJTT5ZI.js → chunk-G43W7AME.js} +1 -0
- package/dist/chunks/{chunk-KMLLLZ6X.js → chunk-NP4M2257.js} +1 -0
- package/dist/chunks/{chunk-D6RGFNUW.js → chunk-PMGIIYDD.js} +14215 -8950
- package/dist/chunks/{chunk-IYAQC63Y.js → chunk-PSSMQKAH.js} +1607 -744
- package/dist/chunks/{chunk-AIU6CMVT.js → chunk-PTYZMV5G.js} +1 -1
- package/dist/chunks/{chunk-66YZ47TY.js → chunk-RAR44T5O.js} +1 -1
- package/dist/chunks/chunk-RE6CDK2M.js +254 -0
- package/dist/chunks/{chunk-UPY2RUZF.js → chunk-TWBREZWC.js} +30 -0
- package/dist/chunks/{chunk-QSN6RH6X.js → chunk-VA6NC3MI.js} +1 -1
- package/dist/chunks/dist-IDG44KDI.js +7499 -0
- package/dist/chunks/jpeg-OJTBZV3C.js +292 -0
- package/dist/chunks/jpx-4VRYG2JB.js +667 -0
- package/dist/chunks/{bun-sqlite-5SHXN3AT.js → node-sqlite-C7VJ2NSN.js} +3 -3
- package/dist/cli/Generate.d.ts +2 -1
- package/dist/cli/Generate.js +55 -24
- package/dist/cli/Init.d.ts +43 -2
- package/dist/cli/Init.js +144 -28
- package/dist/cli/Mcp.d.ts +25 -0
- package/dist/cli/Mcp.js +106 -0
- package/dist/cli/Serve.d.ts +1 -1
- package/dist/cli/Serve.js +14 -6
- package/dist/cli/bin.js +33 -11
- package/dist/cli/build/BuildEmitter.d.ts +5 -1
- package/dist/cli/build/BuildEmitter.js +8 -3
- package/dist/cli/generate/CompileConfig.js +10 -6
- package/dist/cli/generate/CopyStaticFiles.d.ts +1 -1
- package/dist/cli/generate/CopyStaticFiles.js +27 -14
- package/dist/cli/generate/DevDB.d.ts +4 -1
- package/dist/cli/generate/DevDB.js +15 -7
- package/dist/cli/generate/GenerateContext.d.ts +3 -0
- package/dist/cli/generate/GenerateDashboard.d.ts +1 -1
- package/dist/cli/generate/GenerateDashboard.js +20 -6
- package/dist/cli/generate/GeneratedPaths.d.ts +21 -0
- package/dist/cli/generate/GeneratedPaths.js +33 -0
- package/dist/cli/generate/LinkMediaFiles.d.ts +7 -0
- package/dist/cli/generate/LinkMediaFiles.js +52 -0
- package/dist/cli/generate/MediaLocations.d.ts +18 -0
- package/dist/cli/generate/MediaLocations.js +69 -0
- package/dist/cli/serve/CreateLocalServer.d.ts +2 -1
- package/dist/cli/serve/CreateLocalServer.js +41 -11
- package/dist/cli/serve/DevLock.d.ts +11 -0
- package/dist/cli/serve/DevLock.js +42 -0
- package/dist/cli/serve/DevServer.d.ts +3 -2
- package/dist/cli/serve/DevServer.js +18 -6
- package/dist/cli/serve/LiveReload.d.ts +1 -1
- package/dist/cli/serve/LiveReload.js +3 -2
- package/dist/cli/serve/ServeContext.d.ts +0 -1
- package/dist/cli/serve/StartServer.d.ts +2 -1
- package/dist/cli/serve/StartServer.js +4 -2
- package/dist/cli/serve/mcp/DevMcp.d.ts +16 -0
- package/dist/cli/serve/mcp/DevMcp.js +50 -0
- package/dist/cli/serve/mcp/McpGraph.d.ts +35 -0
- package/dist/cli/serve/mcp/McpGraph.js +64 -0
- package/dist/cli/serve/mcp/McpInput.d.ts +11 -0
- package/dist/cli/serve/mcp/McpInput.js +254 -0
- package/dist/cli/serve/mcp/McpInstructions.d.ts +1 -0
- package/dist/cli/serve/mcp/McpInstructions.js +16 -0
- package/dist/cli/serve/mcp/McpSchema.d.ts +31 -0
- package/dist/cli/serve/mcp/McpSchema.js +184 -0
- package/dist/cli/serve/mcp/McpServer.d.ts +47 -0
- package/dist/cli/serve/mcp/McpServer.js +112 -0
- package/dist/cli/serve/mcp/McpTools.d.ts +25 -0
- package/dist/cli/serve/mcp/McpTools.js +618 -0
- package/dist/cli/static/dashboard/entry.js +2 -1
- package/dist/cli/static/init/agents.md +13 -0
- package/dist/cli/static/init/cms.js +4 -2
- package/dist/cli/util/ForwardCommand.js +4 -12
- package/dist/cli/util/PublicDefines.d.ts +1 -0
- package/dist/cli/util/PublicDefines.js +2 -1
- package/dist/cli/util/RunForwarded.d.ts +13 -0
- package/dist/cli/util/RunForwarded.js +166 -0
- package/dist/cli/util/WarnPublicEnv.js +2 -0
- package/dist/cloud/CloudHandshake.js +9 -46
- package/dist/cloud/CloudRemote.js +21 -7
- package/dist/cms.d.ts +21 -0
- package/dist/cms.js +49 -0
- package/dist/components/Alert.d.ts +29 -0
- package/dist/components/Alert.js +86 -0
- package/dist/components/AppShell.d.ts +15 -0
- package/dist/components/AppShell.js +38 -0
- package/dist/components/AsyncList.d.ts +52 -0
- package/dist/components/AsyncList.js +69 -0
- package/dist/components/Badge.d.ts +13 -0
- package/dist/components/Badge.js +53 -0
- package/dist/components/Blockquote.d.ts +7 -0
- package/dist/components/Blockquote.js +26 -0
- package/dist/components/Breadcrumbs.d.ts +39 -3
- package/dist/components/Breadcrumbs.js +103 -22
- package/dist/components/Button.d.ts +33 -8
- package/dist/components/Button.js +73 -23
- package/dist/components/Calendar.d.ts +28 -3
- package/dist/components/Calendar.js +163 -54
- package/dist/components/Checkbox.d.ts +18 -7
- package/dist/components/Checkbox.js +84 -38
- package/dist/components/CheckboxGroup.d.ts +11 -5
- package/dist/components/CheckboxGroup.js +55 -19
- package/dist/components/Code.d.ts +10 -0
- package/dist/components/Code.js +49 -0
- package/dist/components/Collapsible.d.ts +25 -0
- package/dist/components/Collapsible.js +146 -0
- package/dist/components/ColorSwatch.d.ts +9 -2
- package/dist/components/ColorSwatch.js +20 -20
- package/dist/components/ColorSwatchPicker.d.ts +18 -3
- package/dist/components/ColorSwatchPicker.js +31 -27
- package/dist/components/ComboBox.d.ts +46 -10
- package/dist/components/ComboBox.js +223 -94
- package/dist/components/Command.d.ts +66 -0
- package/dist/components/Command.js +237 -0
- package/dist/components/ContentCard.d.ts +32 -0
- package/dist/components/ContentCard.js +221 -0
- package/dist/components/ContentGrid.d.ts +58 -0
- package/dist/components/ContentGrid.js +220 -0
- package/dist/components/DataList.d.ts +27 -0
- package/dist/components/DataList.js +68 -0
- package/dist/components/DateField.d.ts +19 -4
- package/dist/components/DateField.js +51 -44
- package/dist/components/DatePicker.d.ts +17 -4
- package/dist/components/DatePicker.js +61 -68
- package/dist/components/DateRangePicker.d.ts +19 -4
- package/dist/components/DateRangePicker.js +69 -80
- package/dist/components/Dialog.d.ts +64 -3
- package/dist/components/Dialog.js +215 -20
- package/dist/components/DropZone.d.ts +25 -3
- package/dist/components/DropZone.js +99 -18
- package/dist/components/DropdownMenu.d.ts +78 -0
- package/dist/components/DropdownMenu.js +318 -0
- package/dist/components/Empty.d.ts +46 -0
- package/dist/components/Empty.js +93 -0
- package/dist/components/Field.d.ts +34 -0
- package/dist/components/Field.js +166 -0
- package/dist/components/FileTrigger.d.ts +21 -0
- package/dist/components/FileTrigger.js +53 -0
- package/dist/components/FoldIcon.js +2 -1
- package/dist/components/Form.d.ts +23 -0
- package/dist/components/Form.js +64 -0
- package/dist/components/Heading.d.ts +13 -0
- package/dist/components/Heading.js +48 -0
- package/dist/components/Icon.d.ts +1 -1
- package/dist/components/Icon.js +3 -3
- package/dist/components/Kbd.d.ts +8 -0
- package/dist/components/Kbd.js +27 -0
- package/dist/components/Link.d.ts +21 -4
- package/dist/components/Link.js +22 -20
- package/dist/components/List.d.ts +23 -63
- package/dist/components/List.js +131 -251
- package/dist/components/MediaPreview.d.ts +35 -0
- package/dist/components/MediaPreview.js +227 -0
- package/dist/components/MultipleSelect.d.ts +27 -20
- package/dist/components/MultipleSelect.js +234 -216
- package/dist/components/NavRail.d.ts +41 -0
- package/dist/components/NavRail.js +121 -0
- package/dist/components/NumberField.d.ts +23 -5
- package/dist/components/NumberField.js +103 -60
- package/dist/components/Page.d.ts +57 -0
- package/dist/components/Page.js +130 -0
- package/dist/components/Popover.d.ts +39 -5
- package/dist/components/Popover.js +146 -22
- package/dist/components/PreviewFrame.d.ts +46 -0
- package/dist/components/PreviewFrame.js +182 -0
- package/dist/components/RadioGroup.d.ts +20 -7
- package/dist/components/RadioGroup.js +121 -31
- package/dist/components/Resizable.d.ts +51 -0
- package/dist/components/Resizable.js +1349 -0
- package/dist/components/SearchField.d.ts +42 -6
- package/dist/components/SearchField.js +117 -56
- package/dist/components/Select.d.ts +38 -10
- package/dist/components/Select.js +179 -101
- package/dist/components/Sheet.d.ts +52 -0
- package/dist/components/Sheet.js +216 -0
- package/dist/components/Sidebar.d.ts +56 -0
- package/dist/components/Sidebar.js +136 -0
- package/dist/components/SortableList.d.ts +84 -0
- package/dist/components/SortableList.js +368 -0
- package/dist/components/Spinner.d.ts +8 -0
- package/dist/components/Spinner.js +86 -0
- package/dist/components/Stack.d.ts +20 -0
- package/dist/components/Stack.js +45 -0
- package/dist/components/Surface.js +13 -3
- package/dist/components/Switch.d.ts +15 -4
- package/dist/components/Switch.js +30 -18
- package/dist/components/Table.d.ts +121 -14
- package/dist/components/Table.js +537 -96
- package/dist/components/Tabs.d.ts +33 -12
- package/dist/components/Tabs.js +68 -51
- package/dist/components/TagGroup.d.ts +26 -9
- package/dist/components/TagGroup.js +97 -31
- package/dist/components/Text.d.ts +16 -0
- package/dist/components/Text.js +44 -0
- package/dist/components/TextField.d.ts +33 -9
- package/dist/components/TextField.js +152 -47
- package/dist/components/TimeField.d.ts +25 -4
- package/dist/components/TimeField.js +82 -42
- package/dist/components/Timestamp.d.ts +17 -0
- package/dist/components/Timestamp.js +131 -0
- package/dist/components/Toggle.d.ts +15 -7
- package/dist/components/Toggle.js +4 -54
- package/dist/components/ToggleGroup.d.ts +33 -0
- package/dist/components/ToggleGroup.js +90 -0
- package/dist/components/Toolbar.d.ts +27 -8
- package/dist/components/Toolbar.js +51 -40
- package/dist/components/Tooltip.d.ts +22 -4
- package/dist/components/Tooltip.js +78 -34
- package/dist/components/Tree.d.ts +47 -20
- package/dist/components/Tree.js +230 -98
- package/dist/components/internal/Accept.d.ts +5 -0
- package/dist/components/internal/Accept.js +17 -0
- package/dist/components/internal/DateControl.d.ts +18 -0
- package/dist/components/internal/DateControl.js +92 -0
- package/dist/components/internal/DateValue.d.ts +16 -0
- package/dist/components/internal/DateValue.js +40 -0
- package/dist/components/internal/FormScope.d.ts +2 -0
- package/dist/components/internal/FormScope.js +8 -0
- package/dist/components/internal/ListBoxGroup.d.ts +12 -0
- package/dist/components/internal/ListBoxGroup.js +46 -0
- package/dist/components/internal/ListBoxOption.d.ts +20 -0
- package/dist/components/internal/ListBoxOption.js +111 -0
- package/dist/components/internal/Locale.d.ts +7 -0
- package/dist/components/internal/Locale.js +18 -0
- package/dist/components/internal/Placement.d.ts +3 -0
- package/dist/components/internal/Placement.js +13 -0
- package/dist/components/internal/PopoverSurface.d.ts +21 -0
- package/dist/components/internal/PopoverSurface.js +67 -0
- package/dist/components/internal/SelectionCheckbox.d.ts +8 -0
- package/dist/components/internal/SelectionCheckbox.js +57 -0
- package/dist/components/internal/Slot.d.ts +7 -0
- package/dist/components/internal/Slot.js +26 -0
- package/dist/components/internal/ToggleButton.d.ts +26 -0
- package/dist/components/internal/ToggleButton.js +68 -0
- package/dist/components/internal/Trigger.d.ts +16 -0
- package/dist/components/internal/Trigger.js +34 -0
- package/dist/components/internal/sortableDrag.d.ts +19 -0
- package/dist/components/internal/sortableDrag.js +175 -0
- package/dist/components/internal/useDragDrop.d.ts +22 -0
- package/dist/components/internal/useDragDrop.js +110 -0
- package/dist/components/types.d.ts +110 -0
- package/dist/components/types.js +0 -0
- package/dist/components.d.ts +33 -5
- package/dist/components.js +32 -5
- package/dist/config.d.ts +2 -0
- package/dist/config.js +12 -0
- package/dist/core/Client.js +12 -1
- package/dist/core/Config.d.ts +60 -2
- package/dist/core/Config.js +162 -9
- package/dist/core/Connection.d.ts +13 -1
- package/dist/core/Connection.js +9 -1
- package/dist/core/DashboardEntry.d.ts +19 -0
- package/dist/core/DashboardEntry.js +0 -0
- package/dist/core/Document.d.ts +12 -2
- package/dist/core/Document.js +39 -7
- package/dist/core/EntryFields.d.ts +11 -0
- package/dist/core/EntrySeed.d.ts +5 -1
- package/dist/core/EntrySeed.js +5 -6
- package/dist/core/Expr.d.ts +11 -0
- package/dist/core/Field.d.ts +39 -3
- package/dist/core/Field.js +25 -2
- package/dist/core/Filter.d.ts +31 -1
- package/dist/core/Filter.js +5 -0
- package/dist/core/Graph.d.ts +36 -8
- package/dist/core/Infer.d.ts +17 -0
- package/dist/core/Internal.d.ts +3 -0
- package/dist/core/Internal.js +4 -0
- package/dist/core/Overview.d.ts +315 -0
- package/dist/core/Overview.js +48 -0
- package/dist/core/Role.d.ts +6 -1
- package/dist/core/Role.js +55 -53
- package/dist/core/Root.d.ts +32 -3
- package/dist/core/Root.js +17 -7
- package/dist/core/Schema.js +7 -2
- package/dist/core/Scope.d.ts +14 -0
- package/dist/core/Scope.js +88 -10
- package/dist/core/TextDoc.d.ts +14 -1
- package/dist/core/Type.d.ts +71 -11
- package/dist/core/Type.js +67 -17
- package/dist/core/Validation.d.ts +60 -0
- package/dist/core/Validation.js +116 -0
- package/dist/core/Workspace.d.ts +1 -0
- package/dist/core/Workspace.js +5 -1
- package/dist/core/db/EntryReference.d.ts +8 -1
- package/dist/core/db/LinkResolver.d.ts +3 -0
- package/dist/core/db/LocalStore.d.ts +19 -0
- package/dist/core/db/Operation.d.ts +28 -1
- package/dist/core/db/Operation.js +161 -25
- package/dist/core/db/SyncStats.d.ts +16 -0
- package/dist/core/db/SyncStats.js +56 -0
- package/dist/core/db/WriteableGraph.d.ts +6 -14
- package/dist/core/db/WriteableGraph.js +5 -3
- package/dist/core/field/CreateField.d.ts +2 -3
- package/dist/core/field/ListField.js +29 -10
- package/dist/core/field/RecordField.js +12 -4
- package/dist/core/field/RichTextField.js +81 -24
- package/dist/core/field/ScalarField.d.ts +2 -2
- package/dist/core/field/UnionField.js +27 -4
- package/dist/core/media/CompressPdf.browser.d.ts +5 -0
- package/dist/core/media/CompressPdf.browser.js +13 -0
- package/dist/core/media/CompressPdf.d.ts +6 -0
- package/dist/core/media/CompressPdf.js +45 -0
- package/dist/core/media/CreatePreview.browser.d.ts +5 -1
- package/dist/core/media/CreatePreview.browser.js +16 -0
- package/dist/core/media/CreatePreview.d.ts +2 -1
- package/dist/core/media/CreatePreview.js +2 -0
- package/dist/core/media/FileAccept.d.ts +7 -0
- package/dist/core/media/FileAccept.js +29 -0
- package/dist/core/media/FileKinds.d.ts +10 -0
- package/dist/core/media/FileKinds.js +25 -0
- package/dist/core/media/ImageTransform.d.ts +78 -0
- package/dist/core/media/ImageTransform.js +108 -0
- package/dist/core/media/MediaRoot.js +4 -4
- package/dist/core/media/MediaTypes.d.ts +137 -9
- package/dist/core/media/MediaTypes.js +277 -51
- package/dist/core/media/Pdf.d.ts +15 -0
- package/dist/core/media/Pdf.js +31 -0
- package/dist/core/media/Summary.d.ts +9 -9
- package/dist/core/media/Summary.js +10 -10
- package/dist/core/media/TransformImage.browser.d.ts +7 -0
- package/dist/core/media/TransformImage.browser.js +38 -0
- package/dist/core/media/TransformImage.d.ts +7 -0
- package/dist/core/media/TransformImage.js +38 -0
- package/dist/core/source/GithubSource.d.ts +4 -0
- package/dist/core/source/GithubSource.js +127 -25
- package/dist/core/source/GithubUsage.d.ts +21 -0
- package/dist/core/source/GithubUsage.js +47 -0
- package/dist/core/source/Source.d.ts +2 -0
- package/dist/core/source/Source.js +11 -0
- package/dist/core/text/MarkdownToTextDoc.d.ts +29 -0
- package/dist/core/text/MarkdownToTextDoc.js +524 -0
- package/dist/core/text/TextDocToMarkdown.d.ts +20 -0
- package/dist/core/text/TextDocToMarkdown.js +316 -0
- package/dist/core/util/Async.d.ts +2 -0
- package/dist/core/util/Async.js +12 -1
- package/dist/core/util/Checks.js +1 -1
- package/dist/core/util/JWT.d.ts +1 -1
- package/dist/core/util/Objects.d.ts +2 -0
- package/dist/core/util/Objects.js +7 -0
- package/dist/core/util/OrderKeys.d.ts +11 -0
- package/dist/core/util/OrderKeys.js +64 -0
- package/dist/core/util/Slugs.js +4 -3
- package/dist/core.d.ts +3 -0
- package/dist/core.js +8 -1
- package/dist/dashboard/App.css +56 -86
- package/dist/dashboard/App.d.ts +6 -2
- package/dist/dashboard/App.js +41 -20
- package/dist/dashboard/Href.d.ts +37 -0
- package/dist/dashboard/Href.js +46 -0
- package/dist/dashboard/ViewKeys.d.ts +2 -0
- package/dist/dashboard/ViewKeys.js +2 -0
- package/dist/dashboard/app/AccessDenied.js +26 -18
- package/dist/dashboard/app/ActivityStatus.d.ts +5 -4
- package/dist/dashboard/app/ActivityStatus.js +138 -153
- package/dist/dashboard/app/AppearanceToggle.js +31 -12
- package/dist/dashboard/app/AuthView.js +75 -63
- package/dist/dashboard/app/BlockSheet.d.ts +50 -0
- package/dist/dashboard/app/BlockSheet.js +207 -0
- package/dist/dashboard/app/BlockSheetStoryFrame.d.ts +6 -0
- package/dist/dashboard/app/BlockSheetStoryFrame.js +29 -0
- package/dist/dashboard/app/BlockTabs.d.ts +12 -0
- package/dist/dashboard/app/BlockTabs.js +26 -0
- package/dist/dashboard/app/CompactField.d.ts +19 -6
- package/dist/dashboard/app/CompactField.js +177 -50
- package/dist/dashboard/app/CroppedImage.d.ts +17 -0
- package/dist/dashboard/app/CroppedImage.js +73 -0
- package/dist/dashboard/app/DashboardErrorBoundary.js +27 -15
- package/dist/dashboard/app/DashboardLayout.d.ts +5 -3
- package/dist/dashboard/app/DashboardLayout.js +59 -37
- package/dist/dashboard/app/EntryActions.d.ts +11 -0
- package/dist/dashboard/app/EntryActions.js +30 -0
- package/dist/dashboard/app/EntryFields.d.ts +26 -13
- package/dist/dashboard/app/EntryFields.js +19 -9
- package/dist/dashboard/app/EntryForm.d.ts +6 -0
- package/dist/dashboard/app/EntryForm.js +28 -0
- package/dist/dashboard/app/EntryHeader.d.ts +2 -2
- package/dist/dashboard/app/EntryHeader.js +226 -144
- package/dist/dashboard/app/EntryHeaderActions.d.ts +4 -1
- package/dist/dashboard/app/EntryHeaderActions.js +8 -12
- package/dist/dashboard/app/EntryReferences.d.ts +13 -1
- package/dist/dashboard/app/EntryReferences.js +62 -55
- package/dist/dashboard/app/EntrySidebar.d.ts +7 -5
- package/dist/dashboard/app/EntrySidebar.js +104 -98
- package/dist/dashboard/app/EntrySidebarPreview.d.ts +4 -1
- package/dist/dashboard/app/EntrySidebarPreview.js +37 -106
- package/dist/dashboard/app/EntrySidebarToggle.js +5 -6
- package/dist/dashboard/app/EntryStatusIcon.d.ts +23 -0
- package/dist/dashboard/app/EntryStatusIcon.js +58 -0
- package/dist/dashboard/app/EntryTranslationBanner.js +37 -45
- package/dist/dashboard/app/EntryValidationModal.d.ts +13 -0
- package/dist/dashboard/app/EntryValidationModal.js +77 -0
- package/dist/dashboard/app/Explorer.d.ts +15 -6
- package/dist/dashboard/app/Explorer.js +276 -520
- package/dist/dashboard/app/ExplorerBatchActions.d.ts +19 -0
- package/dist/dashboard/app/ExplorerBatchActions.js +183 -0
- package/dist/dashboard/app/ExplorerBreadcrumbs.d.ts +13 -0
- package/dist/dashboard/app/ExplorerBreadcrumbs.js +119 -0
- package/dist/dashboard/app/ExplorerCards.d.ts +8 -3
- package/dist/dashboard/app/ExplorerCards.js +91 -289
- package/dist/dashboard/app/ExplorerControls.d.ts +20 -0
- package/dist/dashboard/app/ExplorerControls.js +170 -0
- package/dist/dashboard/app/ExplorerList.d.ts +7 -4
- package/dist/dashboard/app/ExplorerList.js +160 -95
- package/dist/dashboard/app/ExplorerModal.d.ts +2 -5
- package/dist/dashboard/app/ExplorerModal.js +7 -19
- package/dist/dashboard/app/ExplorerOverviewHeader.d.ts +6 -0
- package/dist/dashboard/app/ExplorerOverviewHeader.js +28 -0
- package/dist/dashboard/app/ExplorerPickerContent.d.ts +19 -3
- package/dist/dashboard/app/ExplorerPickerContent.js +87 -5
- package/dist/dashboard/app/ExplorerScope.d.ts +7 -0
- package/dist/dashboard/app/ExplorerScope.js +159 -0
- package/dist/dashboard/app/ExplorerTable.d.ts +8 -4
- package/dist/dashboard/app/ExplorerTable.js +150 -359
- package/dist/dashboard/app/ExplorerTabs.d.ts +12 -0
- package/dist/dashboard/app/ExplorerTabs.js +42 -0
- package/dist/dashboard/app/ExternalLinkPicker.js +45 -55
- package/dist/dashboard/app/FileKind.d.ts +8 -0
- package/dist/dashboard/app/FileKind.js +40 -0
- package/dist/dashboard/app/ImageEditor.d.ts +13 -0
- package/dist/dashboard/app/ImageEditor.js +302 -0
- package/dist/dashboard/app/ImageEditorCrop.d.ts +19 -0
- package/dist/dashboard/app/ImageEditorCrop.js +90 -0
- package/dist/dashboard/app/ImagePicker.d.ts +1 -1
- package/dist/dashboard/app/ImagePicker.js +30 -89
- package/dist/dashboard/app/LinkPicker.d.ts +1 -1
- package/dist/dashboard/app/LinkPicker.js +108 -126
- package/dist/dashboard/app/LocaleMenu.d.ts +4 -2
- package/dist/dashboard/app/LocaleMenu.js +59 -48
- package/dist/dashboard/app/MediaPreviewCell.d.ts +8 -0
- package/dist/dashboard/app/MediaPreviewCell.js +50 -0
- package/dist/dashboard/app/MoveConfirmDialog.d.ts +5 -0
- package/dist/dashboard/app/MoveConfirmDialog.js +79 -0
- package/dist/dashboard/app/MoveDialog.d.ts +10 -0
- package/dist/dashboard/app/MoveDialog.js +161 -0
- package/dist/dashboard/app/NodeEditor.d.ts +11 -0
- package/dist/dashboard/app/NodeEditor.js +13 -0
- package/dist/dashboard/app/OverviewCell.d.ts +15 -0
- package/dist/dashboard/app/OverviewCell.js +249 -0
- package/dist/dashboard/app/PendingUploadsDialog.d.ts +2 -0
- package/dist/dashboard/app/PendingUploadsDialog.js +49 -0
- package/dist/dashboard/app/PendingUploadsView.d.ts +20 -0
- package/dist/dashboard/app/PendingUploadsView.js +233 -0
- package/dist/dashboard/app/ReadOnlyBadge.d.ts +1 -1
- package/dist/dashboard/app/ReadOnlyBadge.js +1 -1
- package/dist/dashboard/app/RemoveDialog.d.ts +17 -0
- package/dist/dashboard/app/RemoveDialog.js +294 -0
- package/dist/dashboard/app/RemoveRedirect.d.ts +7 -0
- package/dist/dashboard/app/RemoveRedirect.js +123 -0
- package/dist/dashboard/app/SearchBar.d.ts +9 -0
- package/dist/dashboard/app/SearchBar.js +31 -0
- package/dist/dashboard/app/SidebarLayout.d.ts +2 -1
- package/dist/dashboard/app/SidebarLayout.js +28 -1133
- package/dist/dashboard/app/SidebarTree.d.ts +12 -6
- package/dist/dashboard/app/SidebarTree.js +220 -295
- package/dist/dashboard/app/ViewToggle.d.ts +1 -1
- package/dist/dashboard/app/ViewToggle.js +17 -10
- package/dist/dashboard/app/WorkspaceMenu.d.ts +5 -6
- package/dist/dashboard/app/WorkspaceMenu.js +76 -111
- package/dist/dashboard/app/WorkspaceRoots.d.ts +2 -4
- package/dist/dashboard/app/WorkspaceRoots.js +144 -172
- package/dist/dashboard/app/editor/FileEditor.js +161 -125
- package/dist/dashboard/app/editor/FilePreview.d.ts +8 -6
- package/dist/dashboard/app/editor/FilePreview.js +16 -143
- package/dist/dashboard/app/editor/MediaAltField.view.js +5 -5
- package/dist/dashboard/app/modals/CreateEntry.js +98 -106
- package/dist/dashboard/app/pages/EntryPage.d.ts +2 -1
- package/dist/dashboard/app/pages/EntryPage.js +139 -97
- package/dist/dashboard/app/pages/RootPage.js +4 -6
- package/dist/dashboard/app/pages/SplashPage.d.ts +19 -0
- package/dist/dashboard/app/pages/SplashPage.js +208 -193
- package/dist/dashboard/app/pages/UsersPage.d.ts +20 -1
- package/dist/dashboard/app/pages/UsersPage.js +182 -255
- package/dist/dashboard/app/ui/DashboardModal.d.ts +18 -12
- package/dist/dashboard/app/ui/DashboardModal.js +54 -69
- package/dist/dashboard/atoms/ReactiveNode.js +58 -19
- package/dist/dashboard/atoms/activity.d.ts +1 -0
- package/dist/dashboard/atoms/activity.js +8 -5
- package/dist/dashboard/atoms/auth.js +2 -2
- package/dist/dashboard/atoms/config.d.ts +5 -1
- package/dist/dashboard/atoms/core.d.ts +16 -2
- package/dist/dashboard/atoms/core.js +19 -7
- package/dist/dashboard/atoms/create.js +15 -14
- package/dist/dashboard/atoms/dashboard.d.ts +16 -0
- package/dist/dashboard/atoms/dashboard.js +11 -1
- package/dist/dashboard/atoms/editor.d.ts +7 -1
- package/dist/dashboard/atoms/editor.js +29 -42
- package/dist/dashboard/atoms/entry.d.ts +32 -42
- package/dist/dashboard/atoms/entry.js +240 -182
- package/dist/dashboard/atoms/entryTable.d.ts +10 -0
- package/dist/dashboard/atoms/entryTable.js +43 -0
- package/dist/dashboard/atoms/explorer.d.ts +212 -36
- package/dist/dashboard/atoms/explorer.js +597 -259
- package/dist/dashboard/atoms/graph.d.ts +5 -0
- package/dist/dashboard/atoms/graph.js +27 -2
- package/dist/dashboard/atoms/link.d.ts +2 -0
- package/dist/dashboard/atoms/link.js +11 -5
- package/dist/dashboard/atoms/move.d.ts +64 -0
- package/dist/dashboard/atoms/move.js +128 -0
- package/dist/dashboard/atoms/moveConfirmation.d.ts +34 -0
- package/dist/dashboard/atoms/moveConfirmation.js +95 -0
- package/dist/dashboard/atoms/nav.d.ts +36 -12
- package/dist/dashboard/atoms/nav.js +280 -53
- package/dist/dashboard/atoms/overview.d.ts +228 -0
- package/dist/dashboard/atoms/overview.js +519 -0
- package/dist/dashboard/atoms/remove.d.ts +112 -0
- package/dist/dashboard/atoms/remove.js +268 -0
- package/dist/dashboard/atoms/root.d.ts +44 -22
- package/dist/dashboard/atoms/root.js +294 -164
- package/dist/dashboard/atoms/upload.d.ts +105 -3
- package/dist/dashboard/atoms/upload.js +266 -11
- package/dist/dashboard/atoms/user.js +1 -1
- package/dist/dashboard/atoms/utils.d.ts +12 -4
- package/dist/dashboard/atoms/utils.js +35 -2
- package/dist/dashboard/boot/ActivityEvent.d.ts +1 -1
- package/dist/dashboard/boot/Boot.d.ts +2 -0
- package/dist/dashboard/boot/Boot.js +33 -18
- package/dist/dashboard/boot/BootDev.js +13 -10
- package/dist/dashboard/boot/BootProd.d.ts +6 -1
- package/dist/dashboard/boot/BootProd.js +3 -2
- package/dist/dashboard/boot/DashboardWorker.d.ts +7 -0
- package/dist/dashboard/boot/DashboardWorker.js +108 -24
- package/dist/dashboard/boot/LoadWorker.js +21 -11
- package/dist/dashboard/boot/SyncEvent.d.ts +7 -0
- package/dist/dashboard/boot/SyncEvent.js +14 -0
- package/dist/dashboard/boot/WorkerDB.d.ts +1 -0
- package/dist/dashboard/boot/WorkerDB.js +3 -0
- package/dist/dashboard/cms/EntryTable.d.ts +56 -0
- package/dist/dashboard/cms/EntryTable.js +273 -0
- package/dist/dashboard/cms/FieldChrome.d.ts +21 -0
- package/dist/dashboard/cms/FieldChrome.js +26 -0
- package/dist/dashboard/cms/ViewProps.d.ts +42 -0
- package/dist/dashboard/cms/ViewProps.js +0 -0
- package/dist/dashboard/cms/hooks.d.ts +120 -0
- package/dist/dashboard/cms/hooks.js +132 -0
- package/dist/dashboard/contexts.d.ts +59 -0
- package/dist/dashboard/contexts.js +43 -0
- package/dist/dashboard/editor/UseField.d.ts +29 -6
- package/dist/dashboard/fixture/cms.d.ts +2 -2
- package/dist/dashboard/hook/UseEntryEditor.d.ts +4 -1
- package/dist/dashboard/hook/UseEntryEditor.js +7 -3
- package/dist/dashboard/hook/UseGraph.d.ts +3 -1
- package/dist/dashboard/hook/UseLocale.d.ts +3 -1
- package/dist/dashboard/hook/UseRoot.d.ts +3 -1
- package/dist/dashboard/hook/UseSearchShortcut.d.ts +11 -0
- package/dist/dashboard/hook/UseSearchShortcut.js +32 -0
- package/dist/dashboard/hook/UseWorkspace.d.ts +3 -1
- package/dist/dashboard/hooks.d.ts +16 -98
- package/dist/dashboard/hooks.js +15 -90
- package/dist/dashboard/icons.d.ts +11 -0
- package/dist/dashboard/icons.js +125 -0
- package/dist/dashboard.d.ts +23 -1
- package/dist/dashboard.js +5 -2
- package/dist/database/BrowserEntryStore.d.ts +17 -24
- package/dist/database/BrowserEntryStore.js +139 -137
- package/dist/database/DatabaseTables.js +2 -2
- package/dist/database/EntryDatabase.d.ts +15 -1
- package/dist/database/EntryDatabase.js +61 -10
- package/dist/database/EntryStore.js +32 -20
- package/dist/database/EntryTransaction.d.ts +0 -5
- package/dist/database/EntryTransaction.js +173 -58
- package/dist/database/EntryUrlAliases.d.ts +4 -0
- package/dist/database/EntryUrlAliases.js +16 -10
- package/dist/database/Version.d.ts +2 -2
- package/dist/database/Version.js +1 -1
- package/dist/database/driver/RuntimeDatabase.js +3 -3
- package/dist/database/driver/WasmDatabase.d.ts +5 -18
- package/dist/database/driver/WasmDatabase.js +16 -15
- package/dist/database/entry/EntryTable.d.ts +5 -3
- package/dist/database/entry/EntryTable.js +34 -10
- package/dist/database/query/Condition.d.ts +9 -1
- package/dist/database/query/Condition.js +25 -6
- package/dist/database/query/EntryQuery.d.ts +4 -0
- package/dist/database/query/EntryQuery.js +148 -25
- package/dist/database/query/EntryReferences.d.ts +1 -1
- package/dist/database/query/EntryReferences.js +3 -2
- package/dist/database/query/Relation.d.ts +13 -1
- package/dist/database/query/Relation.js +33 -5
- package/dist/database/query/ResolveQuery.d.ts +1 -1
- package/dist/database/query/ResolveQuery.js +27 -18
- package/dist/database/query/Search.d.ts +10 -1
- package/dist/database/query/Search.js +83 -10
- package/dist/database/sync/Derive.d.ts +2 -1
- package/dist/database/sync/Derive.js +15 -10
- package/dist/database/sync/EntryParser.js +8 -7
- package/dist/database/sync/EntrySyncer.d.ts +3 -0
- package/dist/database/sync/EntrySyncer.js +10 -7
- package/dist/database/sync/Ingest.d.ts +2 -1
- package/dist/database/sync/Ingest.js +79 -49
- package/dist/database/sync/SyncQueries.d.ts +3 -2
- package/dist/database/sync/SyncQueries.js +19 -19
- package/dist/field/check/CheckField.js +3 -1
- package/dist/field/check/CheckField.view.js +13 -11
- package/dist/field/code/CodeField.d.ts +9 -0
- package/dist/field/code/CodeField.view.d.ts +3 -1
- package/dist/field/code/CodeField.view.js +30 -20
- package/dist/field/code/SimpleCodeEditor.js +0 -18
- package/dist/field/date/DateField.view.js +9 -25
- package/dist/field/link/EntryLink.d.ts +8 -9
- package/dist/field/link/FileLink.d.ts +11 -8
- package/dist/field/link/FileLink.js +7 -6
- package/dist/field/link/ImageLink.d.ts +16 -16
- package/dist/field/link/ImageLink.js +14 -23
- package/dist/field/link/Link.d.ts +1 -1
- package/dist/field/link/Link.js +2 -2
- package/dist/field/link/LinkField.d.ts +10 -5
- package/dist/field/link/LinkField.js +2 -0
- package/dist/field/link/LinkField.view.js +501 -684
- package/dist/field/link/UrlLink.d.ts +5 -4
- package/dist/field/link.d.ts +1 -0
- package/dist/field/list/ListField.d.ts +9 -5
- package/dist/field/list/ListField.js +10 -5
- package/dist/field/list/ListField.view.d.ts +15 -0
- package/dist/field/list/ListField.view.js +525 -645
- package/dist/field/localiser/LocalisedField.view.js +37 -88
- package/dist/field/localiser/LocalisedFieldTab.d.ts +7 -0
- package/dist/field/localiser/LocalisedFieldTab.js +30 -0
- package/dist/field/localiser/LocalisedFieldTabs.js +5 -5
- package/dist/field/localiser/Localiser.d.ts +17 -1
- package/dist/field/localiser/Localiser.js +152 -7
- package/dist/field/localiser/SelectLocale.d.ts +5 -0
- package/dist/field/localiser/SelectLocale.js +12 -0
- package/dist/field/metadata/MetadataAudit.d.ts +39 -0
- package/dist/field/metadata/MetadataAudit.js +124 -0
- package/dist/field/metadata/MetadataField.d.ts +20 -30
- package/dist/field/metadata/MetadataField.js +24 -107
- package/dist/field/metadata/MetadataField.view.d.ts +1 -0
- package/dist/field/metadata/MetadataField.view.js +36 -38
- package/dist/field/number/NumberField.view.js +9 -9
- package/dist/field/object/ObjectField.d.ts +3 -1
- package/dist/field/object/ObjectField.view.js +35 -25
- package/dist/field/path/PathField.view.js +3 -3
- package/dist/field/path/SlugField.d.ts +1 -2
- package/dist/field/path/SlugField.js +5 -7
- package/dist/field/richtext/PickTextAnchor.js +10 -10
- package/dist/field/richtext/PickTextLink.js +28 -41
- package/dist/field/richtext/RichTextBlock.d.ts +3 -1
- package/dist/field/richtext/RichTextBlock.js +190 -78
- package/dist/field/richtext/RichTextBlockHost.js +1 -1
- package/dist/field/richtext/RichTextExtensions.js +26 -20
- package/dist/field/richtext/RichTextField.story.d.ts +1 -0
- package/dist/field/richtext/RichTextField.view.js +13 -6
- package/dist/field/richtext/RichTextInsertMenu.js +59 -36
- package/dist/field/richtext/RichTextToolbar.js +82 -34
- package/dist/field/richtext/Toolbar.d.ts +9 -1
- package/dist/field/richtext/Toolbar.js +12 -2
- package/dist/field/richtext.d.ts +2 -0
- package/dist/field/richtext.js +2 -0
- package/dist/field/select/SelectField.view.js +15 -79
- package/dist/field/tabs/Tabs.d.ts +12 -3
- package/dist/field/tabs/Tabs.js +11 -2
- package/dist/field/tabs/Tabs.view.js +8 -8
- package/dist/field/text/TextField.view.js +9 -8
- package/dist/field/time/TimeField.view.js +10 -18
- package/dist/field/views.js +4 -0
- package/dist/field.d.ts +2 -2
- package/dist/field.js +3 -2
- package/dist/index.css +5408 -5223
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/next.cjs +27 -20
- package/dist/next.d.ts +2 -0
- package/dist/next.edge.d.ts +2 -0
- package/dist/picker/entry/EntryPicker.d.ts +11 -4
- package/dist/picker/entry/EntryPicker.js +15 -1
- package/dist/picker/url/UrlPicker.js +1 -0
- package/dist/preview/react.js +3 -0
- package/dist/preview/widget.d.ts +3 -0
- package/dist/preview/widget.js +26 -8
- package/dist/query.d.ts +41 -266
- package/dist/query.js +4 -0
- package/dist/types.d.ts +12 -5
- package/dist/ui/RichText.js +31 -1
- package/dist/ui/Stack.d.ts +4 -2
- package/docs/ai-agents.md +316 -0
- package/docs/ai-setup.md +297 -0
- package/docs/cli.md +96 -0
- package/docs/components/alert.md +122 -0
- package/docs/components/app-shell.md +77 -0
- package/docs/components/badge.md +89 -0
- package/docs/components/blockquote.md +24 -0
- package/docs/components/breadcrumb.md +83 -0
- package/docs/components/button.md +142 -0
- package/docs/components/calendar.md +32 -0
- package/docs/components/checkbox-group.md +38 -0
- package/docs/components/checkbox.md +61 -0
- package/docs/components/code.md +37 -0
- package/docs/components/collapsible.md +53 -0
- package/docs/components/color-swatch-picker.md +47 -0
- package/docs/components/combo-box.md +146 -0
- package/docs/components/command.md +101 -0
- package/docs/components/content-card.md +64 -0
- package/docs/components/content-grid.md +71 -0
- package/docs/components/data-list.md +64 -0
- package/docs/components/date-field.md +34 -0
- package/docs/components/date-picker.md +35 -0
- package/docs/components/date-range-picker.md +34 -0
- package/docs/components/dialog.md +233 -0
- package/docs/components/drop-zone.md +45 -0
- package/docs/components/dropdown-menu.md +223 -0
- package/docs/components/empty.md +81 -0
- package/docs/components/field.md +66 -0
- package/docs/components/file-trigger.md +33 -0
- package/docs/components/fold-icon.md +34 -0
- package/docs/components/form.md +67 -0
- package/docs/components/heading.md +33 -0
- package/docs/components/icon.md +43 -0
- package/docs/components/kbd.md +29 -0
- package/docs/components/link.md +45 -0
- package/docs/components/list.md +105 -0
- package/docs/components/media-preview.md +43 -0
- package/docs/components/multiple-select.md +48 -0
- package/docs/components/nav-rail.md +79 -0
- package/docs/components/number-field.md +53 -0
- package/docs/components/page.md +97 -0
- package/docs/components/popover.md +71 -0
- package/docs/components/preview-frame.md +63 -0
- package/docs/components/radio-group.md +47 -0
- package/docs/components/resizable-panel-group.md +63 -0
- package/docs/components/search-field.md +54 -0
- package/docs/components/select.md +127 -0
- package/docs/components/sidebar.md +104 -0
- package/docs/components/sortable-list.md +110 -0
- package/docs/components/spinner.md +29 -0
- package/docs/components/stack.md +42 -0
- package/docs/components/surface.md +54 -0
- package/docs/components/switch.md +52 -0
- package/docs/components/table.md +262 -0
- package/docs/components/tabs.md +120 -0
- package/docs/components/tag-group.md +56 -0
- package/docs/components/text-field.md +142 -0
- package/docs/components/text.md +44 -0
- package/docs/components/time-field.md +41 -0
- package/docs/components/timestamp.md +45 -0
- package/docs/components/toggle-group.md +46 -0
- package/docs/components/toggle.md +37 -0
- package/docs/components/toolbar.md +96 -0
- package/docs/components/tooltip.md +78 -0
- package/docs/components/tree.md +67 -0
- package/docs/components.md +169 -0
- package/docs/configuration.md +177 -0
- package/docs/content-model.md +87 -0
- package/docs/custom-fields.md +359 -0
- package/docs/dashboard-ui.md +3 -0
- package/docs/deploy/alinea-cloud.md +26 -0
- package/docs/deploy/self-host.md +195 -0
- package/docs/deploy.md +127 -0
- package/docs/editing-content.md +195 -0
- package/docs/fields/check.md +40 -0
- package/docs/fields/code.md +35 -0
- package/docs/fields/date.md +90 -0
- package/docs/fields/entry.md +179 -0
- package/docs/fields/file.md +60 -0
- package/docs/fields/image.md +138 -0
- package/docs/fields/link.md +121 -0
- package/docs/fields/list.md +149 -0
- package/docs/fields/number.md +58 -0
- package/docs/fields/object.md +93 -0
- package/docs/fields/path.md +105 -0
- package/docs/fields/rich-text.md +267 -0
- package/docs/fields/select.md +99 -0
- package/docs/fields/tabs.md +111 -0
- package/docs/fields/text.md +46 -0
- package/docs/fields/url.md +51 -0
- package/docs/fields.md +231 -0
- package/docs/get-started.md +3 -0
- package/docs/guides.md +3 -0
- package/docs/index.md +140 -0
- package/docs/instant-publishing.md +61 -0
- package/docs/internationalization.md +218 -0
- package/docs/introduction.md +5 -0
- package/docs/live-previews.md +151 -0
- package/docs/mcp.md +500 -0
- package/docs/overviews.md +580 -0
- package/docs/query/advanced.md +123 -0
- package/docs/query/examples.md +231 -0
- package/docs/query/filtering.md +162 -0
- package/docs/query/related.md +178 -0
- package/docs/query/structural.md +165 -0
- package/docs/query.md +190 -0
- package/docs/quickstart.md +203 -0
- package/docs/reference.md +3 -0
- package/docs/roles-permissions.md +234 -0
- package/docs/schema/document.md +100 -0
- package/docs/schema/type.md +133 -0
- package/docs/schema.md +66 -0
- package/docs/tutorial/step-1-landing-page.md +244 -0
- package/docs/tutorial/step-2-block-list.md +364 -0
- package/docs/tutorial/step-3-layout-root.md +200 -0
- package/docs/tutorial/step-4-blog.md +384 -0
- package/docs/tutorial/step-5-catch-all.md +222 -0
- package/docs/tutorial.md +21 -0
- package/docs/typescript.md +115 -0
- package/docs/upgrading.md +368 -0
- package/docs/workspaces/media.md +134 -0
- package/docs/workspaces/root.md +127 -0
- package/docs/workspaces.md +98 -0
- package/llms-full.txt +13007 -3217
- package/package.json +25 -6
- package/readme.md +136 -55
- package/dist/adapter/next/previews.spec.d.ts +0 -1
- package/dist/chunks/chunk-AC4U3IMS.js +0 -205
- package/dist/chunks/chunk-DNJX6CRV.js +0 -129
- package/dist/chunks/chunk-NIVGVRDS.js +0 -6363
- package/dist/chunks/chunk-S4AU6SRS.js +0 -5503
- package/dist/chunks/chunk-SJBZFMQ2.js +0 -2966
- package/dist/components/Disclosure.d.ts +0 -5
- package/dist/components/Disclosure.js +0 -106
- package/dist/components/Label.d.ts +0 -48
- package/dist/components/Label.js +0 -210
- package/dist/components/Menu.d.ts +0 -16
- package/dist/components/Menu.js +0 -95
- package/dist/components/Modal.d.ts +0 -7
- package/dist/components/Modal.js +0 -58
- package/dist/components/ProgressCircle.d.ts +0 -6
- package/dist/components/ProgressCircle.js +0 -96
- package/dist/dashboard/app/AppShell.d.ts +0 -4
- package/dist/dashboard/app/AppShell.js +0 -29
- package/dist/dashboard/app/Badge.d.ts +0 -8
- package/dist/dashboard/app/Badge.js +0 -42
- package/dist/dashboard/app/EditorBackButton.d.ts +0 -5
- package/dist/dashboard/app/EditorBackButton.js +0 -33
- package/dist/dashboard/app/EntrySidebarPreview.spec.d.ts +0 -1
- package/dist/dashboard/app/ExplorerFileCard.d.ts +0 -10
- package/dist/dashboard/app/ExplorerFileCard.js +0 -115
- package/dist/dashboard/app/StatusBadge.d.ts +0 -6
- package/dist/dashboard/app/StatusBadge.js +0 -26
- package/dist/dashboard/app/WorkspaceMenu.spec.d.ts +0 -1
- package/dist/dashboard/app/WorkspaceMenu.stories.d.ts +0 -7
- package/dist/dashboard/app/ui/Rail.d.ts +0 -18
- package/dist/dashboard/app/ui/Rail.js +0 -41
- package/dist/dashboard/app/ui/Sidebar.d.ts +0 -15
- package/dist/dashboard/app/ui/Sidebar.js +0 -55
- package/dist/field/link/LinkField.spec.d.ts +0 -1
- package/dist/field/link/LinkField.stories.d.ts +0 -15
- package/dist/field/list/ListField.spec.d.ts +0 -1
- package/dist/field/list/ListField.stories.d.ts +0 -7
- package/dist/field/richtext/RichTextField.spec.d.ts +0 -1
- package/dist/chunks/{chunk-MOWR65LM.js → chunk-PYDOMKJZ.js} +71 -71
package/dist/core/Root.js
CHANGED
|
@@ -3,11 +3,12 @@ import {
|
|
|
3
3
|
boolean,
|
|
4
4
|
object,
|
|
5
5
|
string
|
|
6
|
-
} from "../chunks/chunk-
|
|
6
|
+
} from "../chunks/chunk-TWBREZWC.js";
|
|
7
7
|
import "../chunks/chunk-CQ52GEHY.js";
|
|
8
8
|
|
|
9
9
|
// src/core/Root.ts
|
|
10
10
|
import { getRoot, hasRoot, internalRoot } from "./Internal.js";
|
|
11
|
+
import { Overview } from "./Overview.js";
|
|
11
12
|
import { Schema } from "./Schema.js";
|
|
12
13
|
import { Type } from "./Type.js";
|
|
13
14
|
var Root;
|
|
@@ -24,10 +25,10 @@ var Root;
|
|
|
24
25
|
return getRoot(root2);
|
|
25
26
|
}
|
|
26
27
|
Root2.data = data;
|
|
27
|
-
function
|
|
28
|
-
return root2.
|
|
28
|
+
function fieldI18n(root2) {
|
|
29
|
+
return root2.fieldI18n;
|
|
29
30
|
}
|
|
30
|
-
Root2.
|
|
31
|
+
Root2.fieldI18n = fieldI18n;
|
|
31
32
|
function preview(root2) {
|
|
32
33
|
return getRoot(root2).preview;
|
|
33
34
|
}
|
|
@@ -36,6 +37,10 @@ var Root;
|
|
|
36
37
|
return getRoot(root2).i18n?.locales[0];
|
|
37
38
|
}
|
|
38
39
|
Root2.defaultLocale = defaultLocale;
|
|
40
|
+
function childrenOrder(root2) {
|
|
41
|
+
return root2.overview?.sort ?? root2.orderChildrenBy;
|
|
42
|
+
}
|
|
43
|
+
Root2.childrenOrder = childrenOrder;
|
|
39
44
|
function isRoot(value) {
|
|
40
45
|
return Boolean(value && hasRoot(value));
|
|
41
46
|
}
|
|
@@ -81,15 +86,20 @@ var Root;
|
|
|
81
86
|
}
|
|
82
87
|
Root2.validate = validate;
|
|
83
88
|
function referencedViews(root2) {
|
|
84
|
-
const { view } = data(root2);
|
|
85
|
-
return
|
|
89
|
+
const { view, overview } = data(root2);
|
|
90
|
+
return [
|
|
91
|
+
...typeof view === "string" ? [view] : [],
|
|
92
|
+
...Overview.referencedViews(overview)
|
|
93
|
+
];
|
|
86
94
|
}
|
|
87
95
|
Root2.referencedViews = referencedViews;
|
|
88
96
|
})(Root || (Root = {}));
|
|
89
97
|
function root(label, config = {}) {
|
|
98
|
+
const { i18n } = config;
|
|
99
|
+
const data = i18n?.translate === "fields" ? { ...config, label, i18n: void 0, fieldI18n: i18n } : { ...config, label };
|
|
90
100
|
const instance = {
|
|
91
101
|
...config.children,
|
|
92
|
-
[internalRoot]:
|
|
102
|
+
[internalRoot]: data
|
|
93
103
|
};
|
|
94
104
|
return instance;
|
|
95
105
|
}
|
package/dist/core/Schema.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../chunks/chunk-CQ52GEHY.js";
|
|
2
2
|
|
|
3
3
|
// src/core/Schema.ts
|
|
4
|
-
import { getType } from "./Internal.js";
|
|
4
|
+
import { getReplaced, getType } from "./Internal.js";
|
|
5
5
|
import { Type } from "./Type.js";
|
|
6
6
|
import { isValidIdentifier } from "./util/Identifiers.js";
|
|
7
7
|
import { entries, values } from "./util/Objects.js";
|
|
@@ -47,7 +47,12 @@ var Schema;
|
|
|
47
47
|
}
|
|
48
48
|
Schema2.validate = validate;
|
|
49
49
|
function typeNames(schema2) {
|
|
50
|
-
|
|
50
|
+
const names = new Map(entries(schema2).map(([key, type]) => [type, key]));
|
|
51
|
+
for (const [key, type] of entries(schema2)) {
|
|
52
|
+
const replaced = getReplaced(type);
|
|
53
|
+
if (replaced && !names.has(replaced)) names.set(replaced, key);
|
|
54
|
+
}
|
|
55
|
+
return names;
|
|
51
56
|
}
|
|
52
57
|
Schema2.typeNames = typeNames;
|
|
53
58
|
function contained(schema2, contains) {
|
package/dist/core/Scope.d.ts
CHANGED
|
@@ -21,11 +21,25 @@ export declare class Scope {
|
|
|
21
21
|
constructor(config: Config);
|
|
22
22
|
workspaceOf(root: HasRoot): HasWorkspace;
|
|
23
23
|
keyOf(entity: Entity): string;
|
|
24
|
+
/** The type of a field and its path in there, such as `seo.title` */
|
|
25
|
+
fieldOf(field: Field): [type: string, path: string] | undefined;
|
|
24
26
|
locationOf(entity: Entity): string[] | undefined;
|
|
25
27
|
nameOf(entity: Entity): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Where a field stores its value in the entry data, eg. `['seo', 'title']`
|
|
30
|
+
* for a field of an object field
|
|
31
|
+
*/
|
|
32
|
+
dataPathOf(field: Field): Array<string> | undefined;
|
|
26
33
|
/** Configured spellings of a locale, matched case-insensitively. */
|
|
27
34
|
locales(locale: string): Array<string>;
|
|
28
35
|
stringify(input: any): string;
|
|
29
36
|
parse<Result>(input: string): Result;
|
|
37
|
+
/**
|
|
38
|
+
* Recognize the entities of a previous build of this config by their key.
|
|
39
|
+
* The dev server replaces the config of its database when the schema
|
|
40
|
+
* changes, while the handler of the previous config still answers queries
|
|
41
|
+
* that name its own types and fields.
|
|
42
|
+
*/
|
|
43
|
+
adopt(previous: Scope): void;
|
|
30
44
|
}
|
|
31
45
|
export declare function getScope(config: Config): Scope;
|
package/dist/core/Scope.js
CHANGED
|
@@ -4,10 +4,13 @@ import "../chunks/chunk-CQ52GEHY.js";
|
|
|
4
4
|
import { Expr } from "./Expr.js";
|
|
5
5
|
import {
|
|
6
6
|
getExpr,
|
|
7
|
+
getReplaced,
|
|
7
8
|
getRoot,
|
|
8
|
-
|
|
9
|
+
getType,
|
|
10
|
+
hasExpr,
|
|
11
|
+
hasType
|
|
9
12
|
} from "./Internal.js";
|
|
10
|
-
import { entries } from "./util/Objects.js";
|
|
13
|
+
import { entries, values } from "./util/Objects.js";
|
|
11
14
|
var scopes = /* @__PURE__ */ new WeakMap();
|
|
12
15
|
var ENTITY_KEY = "@alinea.Entity";
|
|
13
16
|
var EXPR_KEY = "@alinea.Expr";
|
|
@@ -38,6 +41,10 @@ var Scope = class {
|
|
|
38
41
|
#keys = /* @__PURE__ */ new Map();
|
|
39
42
|
#paths = /* @__PURE__ */ new Map();
|
|
40
43
|
#locales = /* @__PURE__ */ new Map();
|
|
44
|
+
#nested = /* @__PURE__ */ new Map();
|
|
45
|
+
#nestedKeys = /* @__PURE__ */ new Map();
|
|
46
|
+
#shared = /* @__PURE__ */ new Set();
|
|
47
|
+
#adopted = /* @__PURE__ */ new WeakMap();
|
|
41
48
|
constructor(config) {
|
|
42
49
|
for (const [workspaceName, workspace] of entries(config.workspaces)) {
|
|
43
50
|
this.#insert(workspace, ScopeKey.workspace(workspaceName));
|
|
@@ -60,31 +67,84 @@ var Scope = class {
|
|
|
60
67
|
this.#insert(field, ScopeKey.field(typeName, fieldName));
|
|
61
68
|
}
|
|
62
69
|
}
|
|
70
|
+
for (const [typeName, type] of entries(config.schema))
|
|
71
|
+
for (const [fieldName, field] of entries(type))
|
|
72
|
+
this.#insertNested(field, ["Field", typeName, fieldName]);
|
|
73
|
+
for (const type of values(config.schema)) {
|
|
74
|
+
const replaced = getReplaced(type);
|
|
75
|
+
if (replaced) this.#adopted.set(replaced, type);
|
|
76
|
+
}
|
|
77
|
+
for (const [field, path] of this.#nested)
|
|
78
|
+
this.#nestedKeys.set(path.join("."), field);
|
|
79
|
+
}
|
|
80
|
+
// Fields of object fields get a key, eg. Field.Type.object.field, so roles
|
|
81
|
+
// can target them and queries can select them. They are kept apart from the
|
|
82
|
+
// other entities, which have a name. A field instance used in more than one
|
|
83
|
+
// place has no single key, so it can't be targeted.
|
|
84
|
+
#insertNested(field, path) {
|
|
85
|
+
if (!hasType(field)) return;
|
|
86
|
+
for (const [name, inner] of entries(getType(field).allFields)) {
|
|
87
|
+
const location = [...path, name];
|
|
88
|
+
if (this.#nested.has(inner)) {
|
|
89
|
+
this.#nested.delete(inner);
|
|
90
|
+
this.#shared.add(inner);
|
|
91
|
+
} else if (!this.#paths.has(inner) && !this.#shared.has(inner)) {
|
|
92
|
+
this.#nested.set(inner, location);
|
|
93
|
+
}
|
|
94
|
+
this.#insertNested(inner, location);
|
|
95
|
+
}
|
|
63
96
|
}
|
|
64
97
|
workspaceOf(root) {
|
|
65
|
-
const path = this.#paths.get(root);
|
|
98
|
+
const path = this.#paths.get(this.#current(root));
|
|
66
99
|
if (!path) throw new Error(`Root not found in scope: ${root}`);
|
|
67
100
|
return this.#keys.get(path[0]);
|
|
68
101
|
}
|
|
69
102
|
keyOf(entity) {
|
|
70
|
-
|
|
103
|
+
entity = this.#current(entity);
|
|
104
|
+
if (this.#shared.has(entity))
|
|
105
|
+
throw new Error(
|
|
106
|
+
"Field is used in more than one place, target the field containing it"
|
|
107
|
+
);
|
|
108
|
+
const path = this.#paths.get(entity) ?? this.#nested.get(entity);
|
|
71
109
|
if (!path) throw new Error(`Entity not found in scope: ${entity}`);
|
|
72
110
|
return path.join(".");
|
|
73
111
|
}
|
|
112
|
+
/** The type of a field and its path in there, such as `seo.title` */
|
|
113
|
+
fieldOf(field) {
|
|
114
|
+
field = this.#current(field);
|
|
115
|
+
const path = this.#paths.get(field) ?? this.#nested.get(field);
|
|
116
|
+
if (path?.[0] !== "Field") return;
|
|
117
|
+
return [path[1], path.slice(2).join(".")];
|
|
118
|
+
}
|
|
74
119
|
locationOf(entity) {
|
|
75
|
-
return this.#paths.get(entity)?.slice(1);
|
|
120
|
+
return this.#paths.get(this.#current(entity))?.slice(1);
|
|
76
121
|
}
|
|
77
122
|
nameOf(entity) {
|
|
78
|
-
return this.#paths.get(entity)?.at(-1);
|
|
123
|
+
return this.#paths.get(this.#current(entity))?.at(-1);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Where a field stores its value in the entry data, eg. `['seo', 'title']`
|
|
127
|
+
* for a field of an object field
|
|
128
|
+
*/
|
|
129
|
+
dataPathOf(field) {
|
|
130
|
+
field = this.#current(field);
|
|
131
|
+
if (this.#shared.has(field))
|
|
132
|
+
throw new Error(
|
|
133
|
+
"Field is used in more than one place, select the field containing it"
|
|
134
|
+
);
|
|
135
|
+
const path = this.#paths.get(field) ?? this.#nested.get(field);
|
|
136
|
+
if (path?.[0] !== "Field") return;
|
|
137
|
+
return path.slice(2);
|
|
79
138
|
}
|
|
80
139
|
/** Configured spellings of a locale, matched case-insensitively. */
|
|
81
140
|
locales(locale) {
|
|
82
141
|
return this.#locales.get(locale.toLowerCase()) ?? [locale];
|
|
83
142
|
}
|
|
84
143
|
stringify(input) {
|
|
85
|
-
const result = JSON.stringify(input, (key,
|
|
86
|
-
|
|
87
|
-
|
|
144
|
+
const result = JSON.stringify(input, (key, raw) => {
|
|
145
|
+
const value = this.#current(raw);
|
|
146
|
+
const path = this.#paths.get(value) ?? this.#nested.get(value);
|
|
147
|
+
if (path) return { [ENTITY_KEY]: path.join(".") };
|
|
88
148
|
if (value && typeof value === "object" && hasExpr(value))
|
|
89
149
|
return { [EXPR_KEY]: getExpr(value) };
|
|
90
150
|
return value;
|
|
@@ -97,7 +157,8 @@ var Scope = class {
|
|
|
97
157
|
const props = Object.keys(value);
|
|
98
158
|
if (props.length === 1) {
|
|
99
159
|
const [key2] = props;
|
|
100
|
-
if (key2 === ENTITY_KEY)
|
|
160
|
+
if (key2 === ENTITY_KEY)
|
|
161
|
+
return this.#keys.get(value[key2]) ?? this.#nestedKeys.get(value[key2]);
|
|
101
162
|
if (key2 === EXPR_KEY) return new Expr(value[key2]);
|
|
102
163
|
}
|
|
103
164
|
}
|
|
@@ -105,6 +166,23 @@ var Scope = class {
|
|
|
105
166
|
});
|
|
106
167
|
return result;
|
|
107
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Recognize the entities of a previous build of this config by their key.
|
|
171
|
+
* The dev server replaces the config of its database when the schema
|
|
172
|
+
* changes, while the handler of the previous config still answers queries
|
|
173
|
+
* that name its own types and fields.
|
|
174
|
+
*/
|
|
175
|
+
adopt(previous) {
|
|
176
|
+
for (const [key, entity] of [...previous.#keys, ...previous.#nestedKeys]) {
|
|
177
|
+
const current = this.#keys.get(key) ?? this.#nestedKeys.get(key);
|
|
178
|
+
if (current && current !== entity) this.#adopted.set(entity, current);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/** The entity of this config for an entity of an adopted build */
|
|
182
|
+
#current(entity) {
|
|
183
|
+
if (!entity || typeof entity !== "object") return entity;
|
|
184
|
+
return this.#adopted.get(entity) ?? entity;
|
|
185
|
+
}
|
|
108
186
|
#insert(entity, key) {
|
|
109
187
|
const exists = this.#paths.get(entity);
|
|
110
188
|
const segments = key.split(".");
|
package/dist/core/TextDoc.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
declare const blocks: unique symbol;
|
|
2
|
+
/**
|
|
3
|
+
* Rich text content. `Blocks` is the schema of the blocks that can appear in
|
|
4
|
+
* the document, so rich text views such as `<RichText />` can infer which
|
|
5
|
+
* block components they accept. It only exists at the type level.
|
|
6
|
+
*/
|
|
7
|
+
export type TextDoc<Blocks = {}> = Array<Node> & {
|
|
8
|
+
[blocks]?(schema: Blocks): void;
|
|
9
|
+
};
|
|
2
10
|
export type Node = TextNode | ElementNode | BlockNode;
|
|
3
11
|
export declare namespace Node {
|
|
4
12
|
const type = "_type";
|
|
@@ -62,7 +70,12 @@ export interface ImageNode extends ElementNode {
|
|
|
62
70
|
export interface BlockNode {
|
|
63
71
|
_id: string;
|
|
64
72
|
_type: string;
|
|
73
|
+
/** A label editors give the block, its anchor follows it by default */
|
|
74
|
+
_label?: string;
|
|
75
|
+
/** Lets links point to the block, unique within the entry */
|
|
76
|
+
_anchor?: string;
|
|
65
77
|
}
|
|
66
78
|
export declare namespace BlockNode {
|
|
67
79
|
const id = "_id";
|
|
68
80
|
}
|
|
81
|
+
export {};
|
package/dist/core/Type.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import type { EntryActionProps } from './DashboardEntry.js';
|
|
1
2
|
import type { ComponentType } from 'react';
|
|
2
3
|
import type { Config } from './Config.js';
|
|
3
4
|
import type { EntryStatus } from './Entry.js';
|
|
4
5
|
import type { Expr } from './Expr.js';
|
|
5
|
-
import { Field, type EntryAnchorTarget, type FieldAnchorContext, type FieldLocalizeContext, type FieldBeforeSaveContext } from './Field.js';
|
|
6
|
+
import { Field, type EntryAnchorTarget, type FieldAnchorContext, type FieldInitialContext, type FieldLocalizeContext, type FieldBeforeSaveContext } from './Field.js';
|
|
6
7
|
import { type HasType } from './Internal.js';
|
|
7
8
|
import type { Label } from './Label.js';
|
|
8
9
|
import type { OrderBy } from './OrderBy.js';
|
|
10
|
+
import { type OverviewOptions } from './Overview.js';
|
|
9
11
|
import type { Preview } from './Preview.js';
|
|
10
12
|
import { Section } from './Section.js';
|
|
11
13
|
import type { View } from './View.js';
|
|
12
14
|
import type { EntryReferenceTarget } from './db/EntryReference.js';
|
|
13
15
|
import type { SummaryProps } from './media/Summary.js';
|
|
14
|
-
import type { Expand } from './util/Types.js';
|
|
16
|
+
import type { Expand, UnionToIntersection } from './util/Types.js';
|
|
15
17
|
export interface EntryUrlInput {
|
|
16
18
|
config: Config;
|
|
17
19
|
data: Record<string, unknown>;
|
|
@@ -35,18 +37,25 @@ export declare namespace Type {
|
|
|
35
37
|
function label(type: Type): Label;
|
|
36
38
|
function contains(type: Type): Array<string | Type>;
|
|
37
39
|
function insertOrder(type: Type): 'first' | 'last' | 'free';
|
|
40
|
+
function overview(type: Type): OverviewOptions | undefined;
|
|
41
|
+
/** The default order of children: `overview.sort`, or `orderChildrenBy` */
|
|
42
|
+
function childrenOrder(type: Type): OrderBy | Array<OrderBy> | undefined;
|
|
38
43
|
function isHidden(type: Type): boolean;
|
|
44
|
+
function isCollapsed(type: Type): boolean;
|
|
45
|
+
function expands(type: Type): boolean;
|
|
39
46
|
function searchableText(type: Type, value: any): string;
|
|
40
|
-
function anchors(type: Type, value: Record<string, unknown>, path?: Array<string>): Array<EntryAnchorTarget>;
|
|
41
|
-
function references(type: Type, value: Record<string, unknown>, path?: Array<string>): Array<EntryReferenceTarget>;
|
|
47
|
+
function anchors(type: Type, value: Record<string, unknown>, path?: Array<string>, labels?: Array<string>): Array<EntryAnchorTarget>;
|
|
48
|
+
function references(type: Type, value: Record<string, unknown>, path?: Array<string>, labels?: Array<string>): Array<EntryReferenceTarget>;
|
|
42
49
|
function fields(type: Type): Record<string, Field>;
|
|
43
50
|
function sections(type: Type): Section[];
|
|
51
|
+
/** The tabs of the type, see `TypeConfig.tabs` */
|
|
52
|
+
function tabs(type: Type): Record<string, Type> | undefined;
|
|
44
53
|
function isContainer(type: Type): boolean;
|
|
45
54
|
function field(type: Type, name: string): Field | undefined;
|
|
46
55
|
function isType(type: any): type is Type;
|
|
47
56
|
function sharedData(type: Type, entryData: Record<string, unknown>): Record<string, unknown> | undefined;
|
|
48
57
|
function initialValue(type: Type): Record<string, unknown>;
|
|
49
|
-
function withInitialValue(type: Type, value: Record<string, unknown
|
|
58
|
+
function withInitialValue(type: Type, value: Record<string, unknown>, context?: FieldInitialContext): Record<string, unknown>;
|
|
50
59
|
function normalizeAnchors(type: Type, value: Record<string, unknown>, context?: FieldAnchorContext): Record<string, unknown>;
|
|
51
60
|
function localizeLinks(type: Type, value: Record<string, unknown>, context: FieldLocalizeContext): Record<string, unknown>;
|
|
52
61
|
function beforeSave(type: Type, value: Record<string, unknown>, context: Omit<FieldBeforeSaveContext<unknown>, 'value'>): Record<string, unknown>;
|
|
@@ -61,35 +70,86 @@ export interface FieldsDefinition {
|
|
|
61
70
|
}
|
|
62
71
|
export interface TypeConfig<Definition> {
|
|
63
72
|
fields: Definition;
|
|
73
|
+
/**
|
|
74
|
+
* Tabs next to the fields, eg.
|
|
75
|
+
* `{analytics: Field.tab('Analytics', {view: '@/views/Analytics'})}`.
|
|
76
|
+
* Entries show them in the entry editor, list rows and rich text blocks in
|
|
77
|
+
* their settings sheet. The fields of a tab are stored and queried like the
|
|
78
|
+
* other fields.
|
|
79
|
+
*/
|
|
80
|
+
tabs?: Record<string, Type>;
|
|
64
81
|
/** Accepts entries of these types as children */
|
|
65
82
|
contains?: Array<string | Type>;
|
|
66
|
-
/**
|
|
83
|
+
/** How the dashboard lists the children of entries of this type */
|
|
84
|
+
overview?: OverviewOptions;
|
|
85
|
+
/**
|
|
86
|
+
* Components rendered in the header of the entry editor, next to the
|
|
87
|
+
* publish button, eg. a button that exports or sends the entry. They can
|
|
88
|
+
* read the fields of the entry with the hooks of `alinea/cms`.
|
|
89
|
+
*/
|
|
90
|
+
actions?: Array<View<EntryActionProps>>;
|
|
91
|
+
/**
|
|
92
|
+
* Order children entries in the sidebar content tree
|
|
93
|
+
* @deprecated Use `overview.sort`
|
|
94
|
+
*/
|
|
67
95
|
orderChildrenBy?: OrderBy | Array<OrderBy>;
|
|
68
96
|
/** Entries do not show up in the sidebar content tree */
|
|
69
97
|
hidden?: true;
|
|
98
|
+
/**
|
|
99
|
+
* How entries show their children in the sidebar content tree. By default
|
|
100
|
+
* they expand when the entry is opened. With `true` they stay collapsed
|
|
101
|
+
* until the arrow is clicked, useful for entries with many children that
|
|
102
|
+
* are browsed in their overview instead. With `false` they are expanded
|
|
103
|
+
* from the start.
|
|
104
|
+
*/
|
|
105
|
+
collapsed?: boolean;
|
|
70
106
|
/** An icon (React component) to represent this type in the dashboard */
|
|
71
107
|
icon?: ComponentType;
|
|
72
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* A React component, or a path to one, that replaces the form of entries of
|
|
110
|
+
* this type below the entry header. It edits the fields of the entry with
|
|
111
|
+
* the hooks of `alinea/cms`.
|
|
112
|
+
*/
|
|
73
113
|
view?: View<{
|
|
74
114
|
type: Type;
|
|
75
115
|
}>;
|
|
76
116
|
/** The default dashboard view for entries of this type */
|
|
77
117
|
defaultView?: EntryDefaultView;
|
|
78
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* A React component used to view a row of this type in the dashboard
|
|
120
|
+
* @deprecated Not used by the dashboard, configure the columns of the
|
|
121
|
+
* parent's overview with `overview.columns`
|
|
122
|
+
*/
|
|
79
123
|
summaryRow?: View<SummaryProps>;
|
|
80
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* A React component used to view a thumbnail of this type in the dashboard
|
|
126
|
+
* @deprecated Not used by the dashboard, configure the card image of the
|
|
127
|
+
* parent's overview with `overview.thumbnail`
|
|
128
|
+
*/
|
|
81
129
|
summaryThumb?: View<SummaryProps>;
|
|
82
130
|
/** The position where new children will be inserted */
|
|
83
131
|
insertOrder?: 'first' | 'last' | 'free';
|
|
84
132
|
entryUrl?: (meta: EntryUrlMeta) => string;
|
|
85
133
|
preview?: Preview;
|
|
86
134
|
}
|
|
135
|
+
/** Types that only hold children can leave out their fields */
|
|
136
|
+
export interface ContainerTypeConfig<Definition> extends Omit<TypeConfig<Definition>, 'fields' | 'contains'> {
|
|
137
|
+
fields?: Definition;
|
|
138
|
+
/** Accepts entries of these types as children */
|
|
139
|
+
contains: Array<string | Type>;
|
|
140
|
+
}
|
|
87
141
|
export interface TypeInternal extends TypeConfig<FieldsDefinition> {
|
|
88
142
|
label: string;
|
|
89
143
|
allFields: Record<string, Field>;
|
|
90
144
|
sections: Array<Section>;
|
|
91
145
|
}
|
|
146
|
+
/** The fields of the tabs of a type, see `TypeConfig.tabs` */
|
|
147
|
+
export type TabFields<Tabs> = [keyof Tabs] extends [never] ? {} : UnionToIntersection<{
|
|
148
|
+
[K in keyof Tabs]: Tabs[K] extends Type<infer F> ? F : never;
|
|
149
|
+
}[keyof Tabs]>;
|
|
92
150
|
/** Create a new type */
|
|
93
|
-
export declare function type<Fields extends FieldsDefinition>(label: string, config: TypeConfig<Fields>
|
|
94
|
-
|
|
151
|
+
export declare function type<Fields extends FieldsDefinition = {}, Tabs extends Record<string, Type> = {}>(label: string, config: (TypeConfig<Fields> | ContainerTypeConfig<Fields>) & {
|
|
152
|
+
tabs?: Tabs;
|
|
153
|
+
}): Type<Fields & TabFields<Tabs>>;
|
|
154
|
+
export declare function createType<Fields extends FieldsDefinition = {}>(label: string, { fields: definition, ...config }: TypeConfig<Fields> | ContainerTypeConfig<Fields>): Type<Fields>;
|
|
95
155
|
export {};
|
package/dist/core/Type.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
+
instance,
|
|
2
3
|
object,
|
|
3
|
-
string
|
|
4
|
-
|
|
4
|
+
string,
|
|
5
|
+
union
|
|
6
|
+
} from "../chunks/chunk-TWBREZWC.js";
|
|
5
7
|
import "../chunks/chunk-CQ52GEHY.js";
|
|
6
8
|
|
|
7
9
|
// src/core/Type.ts
|
|
@@ -9,6 +11,7 @@ import {
|
|
|
9
11
|
Field
|
|
10
12
|
} from "./Field.js";
|
|
11
13
|
import { getType, hasType, internalType } from "./Internal.js";
|
|
14
|
+
import { Overview } from "./Overview.js";
|
|
12
15
|
import { Section, section } from "./Section.js";
|
|
13
16
|
import { isValidIdentifier } from "./util/Identifiers.js";
|
|
14
17
|
import { entries, fromEntries, isRecord, keys, values } from "./util/Objects.js";
|
|
@@ -26,10 +29,27 @@ var Type;
|
|
|
26
29
|
return getType(type2).insertOrder ?? "free";
|
|
27
30
|
}
|
|
28
31
|
Type2.insertOrder = insertOrder;
|
|
32
|
+
function overview(type2) {
|
|
33
|
+
return getType(type2).overview;
|
|
34
|
+
}
|
|
35
|
+
Type2.overview = overview;
|
|
36
|
+
function childrenOrder(type2) {
|
|
37
|
+
const { overview: overview2, orderChildrenBy } = getType(type2);
|
|
38
|
+
return overview2?.sort ?? orderChildrenBy;
|
|
39
|
+
}
|
|
40
|
+
Type2.childrenOrder = childrenOrder;
|
|
29
41
|
function isHidden(type2) {
|
|
30
42
|
return Boolean(getType(type2).hidden);
|
|
31
43
|
}
|
|
32
44
|
Type2.isHidden = isHidden;
|
|
45
|
+
function isCollapsed(type2) {
|
|
46
|
+
return getType(type2).collapsed === true;
|
|
47
|
+
}
|
|
48
|
+
Type2.isCollapsed = isCollapsed;
|
|
49
|
+
function expands(type2) {
|
|
50
|
+
return getType(type2).collapsed === false;
|
|
51
|
+
}
|
|
52
|
+
Type2.expands = expands;
|
|
33
53
|
function searchableText(type2, value) {
|
|
34
54
|
const self = value || {};
|
|
35
55
|
let res = "";
|
|
@@ -39,22 +59,26 @@ var Type;
|
|
|
39
59
|
return res.trim();
|
|
40
60
|
}
|
|
41
61
|
Type2.searchableText = searchableText;
|
|
42
|
-
function anchors(type2, value, path = []) {
|
|
62
|
+
function anchors(type2, value, path = [], labels = []) {
|
|
43
63
|
const self = value || {};
|
|
44
64
|
return entries(fields(type2)).flatMap(([key, field2]) => {
|
|
65
|
+
const label2 = Field.label(field2);
|
|
45
66
|
return Field.anchors(field2, self[key], {
|
|
46
67
|
path: [...path, key],
|
|
47
|
-
label:
|
|
68
|
+
label: label2,
|
|
69
|
+
labels: [...labels, label2]
|
|
48
70
|
});
|
|
49
71
|
});
|
|
50
72
|
}
|
|
51
73
|
Type2.anchors = anchors;
|
|
52
|
-
function references(type2, value, path = []) {
|
|
74
|
+
function references(type2, value, path = [], labels = []) {
|
|
53
75
|
const self = value || {};
|
|
54
76
|
return entries(fields(type2)).flatMap(([key, field2]) => {
|
|
77
|
+
const label2 = Field.label(field2);
|
|
55
78
|
return Field.references(field2, self[key], {
|
|
56
79
|
path: [...path, key],
|
|
57
|
-
label:
|
|
80
|
+
label: label2,
|
|
81
|
+
labels: [...labels, label2]
|
|
58
82
|
});
|
|
59
83
|
});
|
|
60
84
|
}
|
|
@@ -67,6 +91,11 @@ var Type;
|
|
|
67
91
|
return getType(type2).sections;
|
|
68
92
|
}
|
|
69
93
|
Type2.sections = sections;
|
|
94
|
+
function tabs(type2) {
|
|
95
|
+
const { tabs: tabs2 } = getType(type2);
|
|
96
|
+
return tabs2 && keys(tabs2).length > 0 ? tabs2 : void 0;
|
|
97
|
+
}
|
|
98
|
+
Type2.tabs = tabs;
|
|
70
99
|
function isContainer(type2) {
|
|
71
100
|
return Boolean(getType(type2).contains);
|
|
72
101
|
}
|
|
@@ -96,12 +125,12 @@ var Type;
|
|
|
96
125
|
return res;
|
|
97
126
|
}
|
|
98
127
|
Type2.initialValue = initialValue;
|
|
99
|
-
function withInitialValue(type2, value) {
|
|
128
|
+
function withInitialValue(type2, value, context) {
|
|
100
129
|
const merged = mergeInitialValue(value, initialValue(type2));
|
|
101
130
|
let next = merged;
|
|
102
131
|
for (const [key, field2] of entries(fields(type2))) {
|
|
103
132
|
const before = merged[key];
|
|
104
|
-
const after = Field.withInitialValue(field2, before);
|
|
133
|
+
const after = Field.withInitialValue(field2, before, context);
|
|
105
134
|
if (after === before) continue;
|
|
106
135
|
if (next === merged) next = { ...merged };
|
|
107
136
|
next[key] = after;
|
|
@@ -164,7 +193,7 @@ var Type;
|
|
|
164
193
|
Type2.defaultView = defaultView;
|
|
165
194
|
const TypeOptions = object({
|
|
166
195
|
defaultView: string.optional,
|
|
167
|
-
view: string.optional,
|
|
196
|
+
view: union(string, instance(Function)).optional,
|
|
168
197
|
summaryRow: string.optional,
|
|
169
198
|
summaryThumb: string.optional
|
|
170
199
|
});
|
|
@@ -181,12 +210,16 @@ var Type;
|
|
|
181
210
|
}
|
|
182
211
|
Type2.validate = validate;
|
|
183
212
|
function referencedViews(type2) {
|
|
184
|
-
const { view, summaryRow, summaryThumb } = getType(type2);
|
|
213
|
+
const { view, summaryRow, summaryThumb, overview: overview2, actions } = getType(type2);
|
|
185
214
|
return [
|
|
186
215
|
view,
|
|
187
216
|
summaryRow,
|
|
188
217
|
summaryThumb,
|
|
189
|
-
...
|
|
218
|
+
...actions ?? [],
|
|
219
|
+
...Overview.referencedViews(overview2),
|
|
220
|
+
...viewsOfDefinition(getType(type2).fields),
|
|
221
|
+
// Tabs are left out of the fields, their views are bundled too
|
|
222
|
+
...values(getType(type2).tabs ?? {}).flatMap(referencedViews)
|
|
190
223
|
].filter((v) => typeof v === "string");
|
|
191
224
|
}
|
|
192
225
|
Type2.referencedViews = referencedViews;
|
|
@@ -219,11 +252,14 @@ function viewsOfDefinition(definition) {
|
|
|
219
252
|
});
|
|
220
253
|
}
|
|
221
254
|
function type(label, config) {
|
|
222
|
-
const
|
|
223
|
-
Type.validate(
|
|
224
|
-
return
|
|
255
|
+
const instance2 = createType(label, config);
|
|
256
|
+
Type.validate(instance2);
|
|
257
|
+
return instance2;
|
|
225
258
|
}
|
|
226
|
-
function createType(label,
|
|
259
|
+
function createType(label, {
|
|
260
|
+
fields: definition = {},
|
|
261
|
+
...config
|
|
262
|
+
}) {
|
|
227
263
|
const sections = [];
|
|
228
264
|
let current = {};
|
|
229
265
|
const addCurrent = () => {
|
|
@@ -231,10 +267,10 @@ function createType(label, config) {
|
|
|
231
267
|
current = {};
|
|
232
268
|
};
|
|
233
269
|
const fields = [];
|
|
234
|
-
if (typeof
|
|
270
|
+
if (typeof definition !== "object") {
|
|
235
271
|
throw new Error("Type fields must be an object");
|
|
236
272
|
}
|
|
237
|
-
for (const [key, value] of entries(
|
|
273
|
+
for (const [key, value] of entries(definition)) {
|
|
238
274
|
if (Field.isField(value)) {
|
|
239
275
|
current[key] = value;
|
|
240
276
|
fields.push([key, value]);
|
|
@@ -247,11 +283,25 @@ function createType(label, config) {
|
|
|
247
283
|
}
|
|
248
284
|
}
|
|
249
285
|
addCurrent();
|
|
286
|
+
const taken = new Set(fields.map(([key]) => key));
|
|
287
|
+
const tabFields = values(config.tabs ?? {}).flatMap(
|
|
288
|
+
(tab) => entries(Type.fields(tab))
|
|
289
|
+
);
|
|
290
|
+
for (const [key, value] of tabFields) {
|
|
291
|
+
const own = Section.isSection(value) ? entries(Section.fields(value)) : Field.isField(value) ? [[key, value]] : [];
|
|
292
|
+
for (const [name, field] of own) {
|
|
293
|
+
if (taken.has(name))
|
|
294
|
+
throw new Error(`Field "${name}" is defined twice in Type "${label}"`);
|
|
295
|
+
taken.add(name);
|
|
296
|
+
fields.push([name, field]);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
250
299
|
const allFields = fromEntries(fields);
|
|
251
300
|
return {
|
|
252
301
|
...allFields,
|
|
253
302
|
[internalType]: {
|
|
254
303
|
...config,
|
|
304
|
+
fields: definition,
|
|
255
305
|
allFields,
|
|
256
306
|
sections,
|
|
257
307
|
label
|