alinea 1.7.0-preview.9 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/.init/content/pages/welcome.json +1 -1
  2. package/dist/LICENSES.md +78 -78
  3. package/dist/adapter/next/handler.js +1 -1
  4. package/dist/backend/api/OAuth2.d.ts +6 -0
  5. package/dist/backend/api/OAuth2.js +35 -13
  6. package/dist/backend/router/Router.d.ts +15 -0
  7. package/dist/backend/router/Router.js +3 -0
  8. package/dist/backend/util/ExecGit.d.ts +2 -2
  9. package/dist/bundled.d.ts +297 -235
  10. package/dist/chunks/{chunk-JZK53UUC.js → chunk-2X5P2RZV.js} +10 -5
  11. package/dist/chunks/{chunk-POPX5CXB.js → chunk-WKC37UOZ.js} +12 -6
  12. package/dist/cli/Serve.js +1 -1
  13. package/dist/cli/bin.js +1 -1
  14. package/dist/cli/serve/CreateLocalServer.js +34 -2
  15. package/dist/cloud/CloudRemote.d.ts +2 -2
  16. package/dist/cloud/CloudRemote.js +8 -2
  17. package/dist/core/Graph.d.ts +1 -1
  18. package/dist/core/Type.d.ts +2 -0
  19. package/dist/core/db/EntryIndex.d.ts +3 -1
  20. package/dist/core/db/EntryIndex.js +15 -3
  21. package/dist/core/db/LocalDB.d.ts +1 -1
  22. package/dist/core/db/Operation.js +3 -1
  23. package/dist/core/db/WriteableGraph.d.ts +1 -1
  24. package/dist/core/media/IsImage.d.ts +1 -1
  25. package/dist/core/media/MediaTypes.d.ts +1 -1
  26. package/dist/core/media/Summary.d.ts +2 -2
  27. package/dist/core/shape/ListShape.d.ts +1 -1
  28. package/dist/core/source/FSSource.d.ts +2 -2
  29. package/dist/core/source/Source.d.ts +2 -2
  30. package/dist/core/source/Tree.d.ts +3 -3
  31. package/dist/core/source/Utils.js +4 -1
  32. package/dist/core/util/ArrayBuffers.d.ts +1 -1
  33. package/dist/core/util/BufferToBase64.d.ts +2 -2
  34. package/dist/core/util/JWT.d.ts +11 -2
  35. package/dist/core/util/JWT.js +16 -12
  36. package/dist/dashboard/DashboardNav.d.ts +8 -8
  37. package/dist/dashboard/Routes.d.ts +25 -25
  38. package/dist/dashboard/atoms/DbAtoms.d.ts +1 -1
  39. package/dist/dashboard/atoms/Edits.d.ts +3 -3
  40. package/dist/dashboard/atoms/EntryEditorAtoms.d.ts +27 -27
  41. package/dist/dashboard/atoms/EntryEditorAtoms.js +3 -1
  42. package/dist/dashboard/atoms/EntrySummaryAtoms.d.ts +1 -1
  43. package/dist/dashboard/atoms/NavigationAtoms.d.ts +9 -9
  44. package/dist/dashboard/atoms/PreferencesAtoms.d.ts +1 -1
  45. package/dist/dashboard/atoms/RouterAtoms.d.ts +1 -1
  46. package/dist/dashboard/boot/LoadWorker.js +3 -2
  47. package/dist/dashboard/editor/DefaultViews.d.ts +1 -1
  48. package/dist/dashboard/editor/UseField.js +8 -1
  49. package/dist/dashboard/hook/UseNav.d.ts +4 -4
  50. package/dist/dashboard/hook/UseRoot.d.ts +2 -2
  51. package/dist/dashboard/hook/UseWorkspace.d.ts +3 -3
  52. package/dist/dashboard/util/Loader.d.ts +1 -1
  53. package/dist/dashboard/view/InputLabel.d.ts +1 -1
  54. package/dist/dashboard/view/explorer/ExplorerRow.d.ts +1 -1
  55. package/dist/field/link/EntryLink.d.ts +1 -1
  56. package/dist/field/link/FileLink.d.ts +2 -2
  57. package/dist/field/link/LinkField.view.js +18 -0
  58. package/dist/field/link/UrlLink.d.ts +1 -1
  59. package/dist/field/richtext/Extensions.d.ts +1 -0
  60. package/dist/field/richtext/Extensions.js +118 -9
  61. package/dist/field/richtext/Toolbar.d.ts +6 -0
  62. package/dist/field/richtext/Toolbar.js +7 -0
  63. package/dist/index.css +4 -0
  64. package/dist/picker/url/UrlPicker.js +1 -1
  65. package/dist/query.d.ts +85 -85
  66. package/dist/test/example.d.ts +58 -58
  67. package/dist/test/schema/DemoHome.d.ts +17 -17
  68. package/dist/test/schema/DemoRecipe.d.ts +10 -10
  69. package/dist/test/schema/DemoRecipes.d.ts +2 -2
  70. package/dist/ui/Button.stories.d.ts +1 -1
  71. package/dist/ui/Ellipsis.d.ts +1 -1
  72. package/dist/ui/Stack.d.ts +4 -4
  73. package/dist/ui/Typo.d.ts +2 -2
  74. package/dist/ui/icons/IcRoundAttachFile.d.ts +2 -0
  75. package/dist/ui/icons/IcRoundAttachFile.js +10 -0
  76. package/dist/ui/icons/IcRoundFormatPaint.d.ts +2 -0
  77. package/dist/ui/icons/IcRoundFormatPaint.js +10 -0
  78. package/dist/ui/icons/IcRoundPanorama.d.ts +2 -0
  79. package/dist/ui/icons/IcRoundPanorama.js +10 -0
  80. package/dist/ui/util/CreateTypo.d.ts +2 -2
  81. package/llms-full.txt +4278 -0
  82. package/package.json +10 -5
  83. package/readme.md +4 -0
package/dist/bundled.d.ts CHANGED
@@ -221,6 +221,7 @@ declare module 'alinea/backend/api/OAuth2' {
221
221
  import { Request, Response } from '@alinea/iso';
222
222
  import { Config } from 'alinea/core/Config';
223
223
  import type { AuthApi, AuthedContext, RequestContext } from 'alinea/core/Connection';
224
+ import { JWTPayload } from 'alinea/core/util/JWT';
224
225
  export interface OAuth2Options {
225
226
  /**
226
227
  * OAuth2 clientId
@@ -256,6 +257,11 @@ declare module 'alinea/backend/api/OAuth2' {
256
257
  * Required for revoking tokens. Not supported by all servers.
257
258
  */
258
259
  revocationEndpoint?: string;
260
+ /**
261
+ * Extra claims to validate, such as `iss` or `aud`,
262
+ * If the claims are invalid, an error should be thrown.
263
+ */
264
+ validateClaims?(claims: JWTPayload): void;
259
265
  }
260
266
  export class OAuth2 implements AuthApi {
261
267
  #private;
@@ -443,6 +449,11 @@ declare module 'alinea/backend/router/Router' {
443
449
  url: URL;
444
450
  params: Record<string, unknown>;
445
451
  }>;
452
+ options(path: string): Route<globalThis.Request, {
453
+ request: globalThis.Request;
454
+ url: URL;
455
+ params: Record<string, unknown>;
456
+ }>;
446
457
  all(path: string): Route<globalThis.Request, {
447
458
  request: globalThis.Request;
448
459
  url: URL;
@@ -470,6 +481,11 @@ declare module 'alinea/backend/router/Router' {
470
481
  url: URL;
471
482
  params: Record<string, unknown>;
472
483
  }>;
484
+ options(path: string): Route<globalThis.Request, {
485
+ request: globalThis.Request;
486
+ url: URL;
487
+ params: Record<string, unknown>;
488
+ }>;
473
489
  all(path: string): Route<globalThis.Request, {
474
490
  request: globalThis.Request;
475
491
  url: URL;
@@ -497,6 +513,11 @@ declare module 'alinea/backend/router/Router' {
497
513
  url: URL;
498
514
  params: Record<string, unknown>;
499
515
  }>;
516
+ options(path: string): Route<globalThis.Request, {
517
+ request: globalThis.Request;
518
+ url: URL;
519
+ params: Record<string, unknown>;
520
+ }>;
500
521
  all(path: string): Route<globalThis.Request, {
501
522
  request: globalThis.Request;
502
523
  url: URL;
@@ -562,10 +583,10 @@ declare module 'alinea/backend/util/ExecGit' {
562
583
  import PLazy from 'p-lazy';
563
584
  export function execGit(cwd: string, args: string[]): Promise<string>;
564
585
  export function gitUser(cwd: string): PLazy<{
565
- name: string;
566
- email: string;
567
586
  sub: string;
568
587
  roles: string[];
588
+ name: string;
589
+ email: string;
569
590
  }>;
570
591
 
571
592
  }
@@ -1105,12 +1126,12 @@ declare module 'alinea/cloud/CloudRemote' {
1105
1126
  }>;
1106
1127
  authenticate(request: Request): Promise<globalThis.Response>;
1107
1128
  prepareUpload(file: string): Promise<{
1108
- method: string | undefined;
1109
- url: string;
1110
1129
  entryId: string;
1111
1130
  location: string;
1112
1131
  previewUrl: string;
1113
1132
  provider: string;
1133
+ method: string | undefined;
1134
+ url: string;
1114
1135
  }>;
1115
1136
  getDraft(draftKey: DraftKey): Promise<Draft | undefined>;
1116
1137
  storeDraft(draft: Draft): Promise<void>;
@@ -1518,6 +1539,7 @@ declare module 'alinea/core/db/EntryIndex' {
1518
1539
  filter(filter: EntryCondition): Generator<Entry>;
1519
1540
  }
1520
1541
  export class EntryNode extends Map<string | null, EntryLanguageNode> {
1542
+ graph: EntryGraph;
1521
1543
  entryType: Type;
1522
1544
  parent: EntryNode | null;
1523
1545
  children: () => Iterable<EntryNode>;
@@ -1529,7 +1551,7 @@ declare module 'alinea/core/db/EntryIndex' {
1529
1551
  readonly root: string;
1530
1552
  readonly type: string;
1531
1553
  readonly level: number;
1532
- constructor(entryType: Type, parent: EntryNode | null, children: () => Iterable<EntryNode>, collection: EntryCollection);
1554
+ constructor(graph: EntryGraph, entryType: Type, parent: EntryNode | null, children: () => Iterable<EntryNode>, collection: EntryCollection);
1533
1555
  filter(filter: EntryCondition): Generator<Entry>;
1534
1556
  }
1535
1557
  export class EntryGraph {
@@ -1537,6 +1559,7 @@ declare module 'alinea/core/db/EntryIndex' {
1537
1559
  nodes: Array<EntryNode>;
1538
1560
  constructor(config: Config, versionData: Map<string, EntryVersionData>, seeds: Map<string, Seed>);
1539
1561
  byId(id: string): EntryNode | undefined;
1562
+ get config(): Config;
1540
1563
  byDir(dir: string): EntryNode | undefined;
1541
1564
  withChanges(batch: ChangesBatch): EntryGraph;
1542
1565
  filter({ search, ...filter }: EntryCondition): Generator<Entry>;
@@ -1747,7 +1770,7 @@ declare module 'alinea/core/db/LocalDB' {
1747
1770
  indexChanges(batch: ChangesBatch): Promise<string>;
1748
1771
  applyChanges(batch: ChangesBatch): Promise<void>;
1749
1772
  getTreeIfDifferent(sha: string): Promise<import("alinea/core/source/Tree").ReadonlyTree | undefined>;
1750
- getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array], any, any>;
1773
+ getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array<ArrayBufferLike>], any, any>;
1751
1774
  sync(): Promise<string>;
1752
1775
  syncWith(remote: SyncApi): Promise<string>;
1753
1776
  logEntries(): Promise<void>;
@@ -1994,7 +2017,7 @@ declare module 'alinea/core/db/WriteableGraph' {
1994
2017
  _index: string;
1995
2018
  _workspace: string;
1996
2019
  _root: string;
1997
- _status: import("alinea/core/Entry").EntryStatus;
2020
+ _status: import("alinea/core").EntryStatus;
1998
2021
  _parentId: string | null;
1999
2022
  _locale: string | null;
2000
2023
  _path: string;
@@ -2619,7 +2642,7 @@ declare module 'alinea/core/Graph' {
2619
2642
  get<Selection extends SelectionGuard = undefined, const Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): Promise<QueryResult<Selection, Type, Include>>;
2620
2643
  count<Selection extends SelectionGuard = undefined, const Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): Promise<number>;
2621
2644
  }
2622
- export function querySource(query: unknown): "children" | "parent" | "parents" | "translations" | "next" | "previous" | "siblings" | "entryMultiple" | "entrySingle" | undefined;
2645
+ export function querySource(query: unknown): "children" | "entryMultiple" | "entrySingle" | "next" | "parent" | "parents" | "previous" | "siblings" | "translations" | undefined;
2623
2646
  export {};
2624
2647
 
2625
2648
  }
@@ -2786,7 +2809,7 @@ declare module 'alinea/core/media/CreatePreview' {
2786
2809
  declare module 'alinea/core/media/IsImage' {
2787
2810
 
2788
2811
  export const imageExtensions: string[];
2789
- export function isImage(pathOrExtension: string): boolean | "" | undefined;
2812
+ export function isImage(pathOrExtension: string): "" | boolean | undefined;
2790
2813
 
2791
2814
  }
2792
2815
 
@@ -2815,7 +2838,7 @@ declare module 'alinea/core/media/MediaTypes' {
2815
2838
  }>;
2816
2839
  export type MediaFile = Type.Infer<typeof MediaFile>;
2817
2840
  export const MediaFile: Type<{
2818
- title: import("alinea/field/text/TextField").TextField;
2841
+ title: import("alinea/field/text").TextField;
2819
2842
  path: import("alinea/field/hidden").HiddenField<string>;
2820
2843
  location: import("alinea/field/hidden").HiddenField<string>;
2821
2844
  previewUrl: import("alinea/field/hidden").HiddenField<string>;
@@ -2859,14 +2882,14 @@ declare module 'alinea/core/media/Summary' {
2859
2882
  width: import("alinea/field/hidden").HiddenField<number>;
2860
2883
  height: import("alinea/field/hidden").HiddenField<number>;
2861
2884
  parents: {
2862
- edge: "parents";
2885
+ edge: 'parents';
2863
2886
  select: {
2864
2887
  id: import("alinea/core/Expr").Expr<string>;
2865
2888
  title: import("alinea/core/Expr").Expr<string>;
2866
2889
  };
2867
2890
  };
2868
2891
  childrenAmount: {
2869
- edge: "children";
2892
+ edge: 'children';
2870
2893
  count: true;
2871
2894
  };
2872
2895
  };
@@ -3440,7 +3463,7 @@ declare module 'alinea/core/shape/ListShape' {
3440
3463
  watch(parent: Y.Map<any>, key: string): (fun: () => void) => () => void;
3441
3464
  mutator(parent: Y.Map<any>, key: string): {
3442
3465
  replace: (id: string, row: Row) => void;
3443
- push: (row: Omit<Row, "_id" | "_index">, insertAt?: number) => void;
3466
+ push: (row: Omit<Row, '_id' | '_index'>, insertAt?: number) => void;
3444
3467
  remove(id: string): void;
3445
3468
  move: (oldIndex: number, newIndex: number) => void;
3446
3469
  read: (id: string) => Row | undefined;
@@ -3731,7 +3754,7 @@ declare module 'alinea/core/source/FSSource' {
3731
3754
  #private;
3732
3755
  constructor(cwd: string);
3733
3756
  getTree(): Promise<ReadonlyTree>;
3734
- getFile(current: ReadonlyTree, builder: WriteableTree, file: string): Promise<readonly [string, Buffer] | undefined>;
3757
+ getFile(current: ReadonlyTree, builder: WriteableTree, file: string): Promise<readonly [string, Buffer<ArrayBufferLike>] | undefined>;
3735
3758
  getTreeIfDifferent(sha: string): Promise<ReadonlyTree | undefined>;
3736
3759
  getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array]>;
3737
3760
  applyChanges(batch: ChangesBatch): Promise<void>;
@@ -3741,7 +3764,7 @@ declare module 'alinea/core/source/FSSource' {
3741
3764
  constructor(cwd: string);
3742
3765
  refresh: () => Promise<ReadonlyTree>;
3743
3766
  getTree(): Promise<ReadonlyTree>;
3744
- getFile(current: ReadonlyTree, builder: WriteableTree, file: string): Promise<readonly [string, Buffer] | undefined>;
3767
+ getFile(current: ReadonlyTree, builder: WriteableTree, file: string): Promise<readonly [string, Buffer<ArrayBufferLike>] | undefined>;
3745
3768
  getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array]>;
3746
3769
  }
3747
3770
 
@@ -3920,10 +3943,10 @@ declare module 'alinea/core/source/Source' {
3920
3943
  from: ReadonlyTree;
3921
3944
  into: ReadonlyTree;
3922
3945
  changes: (import("alinea/core/source/Change").DeleteChange | {
3923
- contents: Uint8Array | undefined;
3924
- op: "add";
3925
3946
  path: string;
3926
3947
  sha: string;
3948
+ op: 'add';
3949
+ contents: Uint8Array<ArrayBufferLike> | undefined;
3927
3950
  })[];
3928
3951
  }>;
3929
3952
  }
@@ -3974,7 +3997,7 @@ declare module 'alinea/core/source/Tree' {
3974
3997
  entries?: Array<Entry>;
3975
3998
  }
3976
3999
  export class Leaf {
3977
- readonly type: "blob";
4000
+ readonly type: 'blob';
3978
4001
  readonly sha: string;
3979
4002
  readonly mode: string;
3980
4003
  constructor({ sha, mode }: BaseEntry);
@@ -3982,10 +4005,10 @@ declare module 'alinea/core/source/Tree' {
3982
4005
  toJSON(): BaseEntry;
3983
4006
  }
3984
4007
  class TreeBase<Node extends TreeBase<Node>> {
3985
- readonly type: "tree";
4008
+ readonly type: 'tree';
3986
4009
  readonly mode: string;
3987
4010
  sha: string | undefined;
3988
- protected nodes: Map<string, Leaf | Node>;
4011
+ protected nodes: Map<string, Node | Leaf>;
3989
4012
  constructor(sha?: string);
3990
4013
  get(path: string): Node | Leaf | undefined;
3991
4014
  getNode(path: string): Node;
@@ -4193,6 +4216,8 @@ declare module 'alinea/core/Type' {
4193
4216
  path: string;
4194
4217
  parentPaths: Array<string>;
4195
4218
  locale?: string | null;
4219
+ workspace: string;
4220
+ root: string;
4196
4221
  }
4197
4222
  export type Type<Definition = object> = Definition & HasType;
4198
4223
  type TypeRow<Definition> = Expand<{
@@ -4279,7 +4304,7 @@ declare module 'alinea/core/User' {
4279
4304
  declare module 'alinea/core/util/ArrayBuffers' {
4280
4305
 
4281
4306
  export function arrayBufferToHex(arrayBuffer: ArrayBuffer): string;
4282
- export function concat(...arrays: Uint8Array[]): Uint8Array;
4307
+ export function concat(...arrays: Uint8Array[]): Uint8Array<ArrayBuffer>;
4283
4308
 
4284
4309
  }
4285
4310
 
@@ -4306,14 +4331,14 @@ declare module 'alinea/core/util/BufferToBase64' {
4306
4331
  * @param {CompressionFormat | ''} format an optional compression format with `deflate` as default.
4307
4332
  * @returns {Promise<ArrayBuffer>} the buffer representing the optionally decompressed base64.
4308
4333
  */
4309
- export const decode: (btoa: string, format?: CompressionFormat | "") => Promise<ArrayBuffer>;
4334
+ export const decode: (btoa: string, format?: CompressionFormat | '') => Promise<ArrayBuffer>;
4310
4335
  /**
4311
4336
  * Given a generic buffer, optionally compress it and returns its `base64` representation.
4312
4337
  * @param {ArrayBuffer | Uint8Array} buffer a generic buffer to optionally compress and return as base64.
4313
4338
  * @param {CompressionFormat | ''} format an optional compression format with `deflate` as default.
4314
4339
  * @returns {Promise<string>} the base64 representation of the optionally compressed buffer.
4315
4340
  */
4316
- export const encode: (buffer: ArrayBuffer | Uint8Array, format?: CompressionFormat | "") => Promise<string>;
4341
+ export const encode: (buffer: ArrayBuffer | Uint8Array, format?: CompressionFormat | '') => Promise<string>;
4317
4342
 
4318
4343
  }
4319
4344
 
@@ -4597,7 +4622,16 @@ declare module 'alinea/core/util/JWT' {
4597
4622
  crit?: string[];
4598
4623
  [key: string]: any;
4599
4624
  };
4600
- type JWTPayload = Record<string, any>;
4625
+ export type JWTRegisteredClaims = {
4626
+ iss?: string;
4627
+ sub?: string;
4628
+ aud?: string | string[];
4629
+ exp?: number;
4630
+ nbf?: number;
4631
+ iat?: number;
4632
+ jti?: string;
4633
+ };
4634
+ export type JWTPayload = JWTRegisteredClaims & Record<string, unknown>;
4601
4635
  type JWT = {
4602
4636
  header: JWTHeader;
4603
4637
  payload: JWTPayload;
@@ -4622,7 +4656,7 @@ declare module 'alinea/core/util/JWT' {
4622
4656
  * @param options - Options for signing, including algorithm and header.
4623
4657
  * @returns The signed JWT as a string.
4624
4658
  */
4625
- export function sign(payload: JWTPayload, secret: string | JsonWebKey, options?: SignOptions): Promise<string>;
4659
+ export function sign<Payload extends object>(payload: Payload & JWTRegisteredClaims, secret: string | JsonWebKey, options?: SignOptions): Promise<string>;
4626
4660
  /**
4627
4661
  * Options for verifying a JWT.
4628
4662
  * @property algorithms - Allowed algorithms for verification.
@@ -5000,11 +5034,11 @@ declare module 'alinea/dashboard/atoms/Edits' {
5000
5034
  resetChanges: import("jotai").WritableAtom<null, [], void> & {
5001
5035
  init: null;
5002
5036
  };
5003
- yUpdate: import("jotai").Atom<Uint8Array>;
5037
+ yUpdate: import("jotai").Atom<Uint8Array<ArrayBufferLike>>;
5004
5038
  constructor(type: Type, entry: Entry);
5005
5039
  hasData(): boolean;
5006
5040
  /** A Y.js update that contains our own edits */
5007
- getLocalUpdate(): Uint8Array;
5041
+ getLocalUpdate(): Uint8Array<ArrayBufferLike>;
5008
5042
  /** Update entry field data */
5009
5043
  applyEntryData(entryData: Record<string, any>): void;
5010
5044
  /** The field data */
@@ -5086,6 +5120,27 @@ declare module 'alinea/dashboard/atoms/EntryEditorAtoms' {
5086
5120
  DeleteEntry = 10
5087
5121
  }
5088
5122
  export const entryEditorAtoms: import("jotai/vanilla/utils/atomFamily").AtomFamily<EntryEditorParams, import("jotai").Atom<Promise<{
5123
+ parents: Array<{
5124
+ id: string;
5125
+ path: string;
5126
+ status: EntryStatus;
5127
+ main: boolean;
5128
+ }>;
5129
+ client: Connection;
5130
+ config: Config;
5131
+ entryId: string;
5132
+ versions: Array<Version>;
5133
+ statuses: Record<EntryStatus, Version>;
5134
+ availableStatuses: Array<EntryStatus>;
5135
+ translations: Array<{
5136
+ locale: string;
5137
+ entryId: string;
5138
+ }>;
5139
+ untranslated: boolean;
5140
+ canPublish: boolean;
5141
+ canDelete: boolean;
5142
+ parentNeedsTranslation: boolean;
5143
+ edits: Edits;
5089
5144
  transition: import("jotai").PrimitiveAtom<EntryTransition | undefined> & {
5090
5145
  init: EntryTransition | undefined;
5091
5146
  };
@@ -5163,6 +5218,8 @@ declare module 'alinea/dashboard/atoms/EntryEditorAtoms' {
5163
5218
  view: import("alinea/core/View").View<import("alinea/dashboard/view/EntryEdit").EntryEditProps & {
5164
5219
  type: Type;
5165
5220
  }> | undefined;
5221
+ } | undefined>>>;
5222
+ export interface EntryData {
5166
5223
  parents: Array<{
5167
5224
  id: string;
5168
5225
  path: string;
@@ -5184,8 +5241,9 @@ declare module 'alinea/dashboard/atoms/EntryEditorAtoms' {
5184
5241
  canDelete: boolean;
5185
5242
  parentNeedsTranslation: boolean;
5186
5243
  edits: Edits;
5187
- } | undefined>>>;
5188
- export interface EntryData {
5244
+ }
5245
+ export type EntryEditor = ReturnType<typeof createEntryEditor>;
5246
+ export function createEntryEditor(entryData: EntryData): {
5189
5247
  parents: Array<{
5190
5248
  id: string;
5191
5249
  path: string;
@@ -5207,9 +5265,6 @@ declare module 'alinea/dashboard/atoms/EntryEditorAtoms' {
5207
5265
  canDelete: boolean;
5208
5266
  parentNeedsTranslation: boolean;
5209
5267
  edits: Edits;
5210
- }
5211
- export type EntryEditor = ReturnType<typeof createEntryEditor>;
5212
- export function createEntryEditor(entryData: EntryData): {
5213
5268
  transition: import("jotai").PrimitiveAtom<EntryTransition | undefined> & {
5214
5269
  init: EntryTransition | undefined;
5215
5270
  };
@@ -5287,27 +5342,6 @@ declare module 'alinea/dashboard/atoms/EntryEditorAtoms' {
5287
5342
  view: import("alinea/core/View").View<import("alinea/dashboard/view/EntryEdit").EntryEditProps & {
5288
5343
  type: Type;
5289
5344
  }> | undefined;
5290
- parents: Array<{
5291
- id: string;
5292
- path: string;
5293
- status: EntryStatus;
5294
- main: boolean;
5295
- }>;
5296
- client: Connection;
5297
- config: Config;
5298
- entryId: string;
5299
- versions: Array<Version>;
5300
- statuses: Record<EntryStatus, Version>;
5301
- availableStatuses: Array<EntryStatus>;
5302
- translations: Array<{
5303
- locale: string;
5304
- entryId: string;
5305
- }>;
5306
- untranslated: boolean;
5307
- canPublish: boolean;
5308
- canDelete: boolean;
5309
- parentNeedsTranslation: boolean;
5310
- edits: Edits;
5311
5345
  };
5312
5346
  export {};
5313
5347
 
@@ -5443,17 +5477,17 @@ declare module 'alinea/dashboard/atoms/NavigationAtoms' {
5443
5477
 
5444
5478
  import { type EntryLocation } from 'alinea/dashboard/DashboardNav';
5445
5479
  export const workspaceAtom: import("jotai").Atom<{
5446
- label: string;
5447
- color: string;
5448
- roots: import("alinea/core/Workspace").RootsDefinition;
5449
5480
  source: string;
5450
5481
  mediaDir?: string;
5451
5482
  icon?: import("react").ComponentType;
5452
5483
  preview?: import("alinea/core/Preview").Preview;
5484
+ roots: import("alinea/core/Workspace").RootsDefinition;
5485
+ label: string;
5486
+ color: string;
5453
5487
  name: string;
5454
5488
  }>;
5455
5489
  export const rootAtom: import("jotai").Atom<{
5456
- label: string;
5490
+ name: string;
5457
5491
  contains?: Array<string | import("alinea").Type>;
5458
5492
  orderChildrenBy?: import("alinea/core/OrderBy").OrderBy | Array<import("alinea/core/OrderBy").OrderBy>;
5459
5493
  icon?: import("react").ComponentType;
@@ -5463,16 +5497,16 @@ declare module 'alinea/dashboard/atoms/NavigationAtoms' {
5463
5497
  }>;
5464
5498
  isMediaRoot?: boolean;
5465
5499
  preview?: import("alinea/core/Preview").Preview;
5466
- name: string;
5500
+ label: string;
5467
5501
  }>;
5468
5502
  export const preferredLanguageAtom: import("jotai").WritableAtom<string | null, [string | typeof import("jotai/utils").RESET | ((prev: string | null) => string | typeof import("jotai/utils").RESET | null) | null], void>;
5469
5503
  export const localeAtom: import("jotai").Atom<string | null>;
5470
5504
  export const entryLocationAtom: import("jotai").Atom<EntryLocation>;
5471
5505
  export const navAtom: import("jotai").Atom<{
5472
- matchEntry: "/entry/*";
5473
- matchEntryId: "/:action/:workspace/:root?/:id?";
5474
- matchWorkspace: "/:action/:workspace";
5475
- matchRoot: "/:action/:workspace/:root";
5506
+ matchEntry: '/entry/*';
5507
+ matchEntryId: '/:action/:workspace/:root?/:id?';
5508
+ matchWorkspace: '/:action/:workspace';
5509
+ matchRoot: '/:action/:workspace/:root';
5476
5510
  root: ({ id, ...location }: EntryLocation) => string;
5477
5511
  entry: (location: EntryLocation) => string;
5478
5512
  draft: (location: EntryLocation) => string;
@@ -5503,7 +5537,7 @@ declare module 'alinea/dashboard/atoms/PreferencesAtoms' {
5503
5537
  size: number;
5504
5538
  language: Language;
5505
5539
  }
5506
- export const preferencesAtom: import("jotai").WritableAtom<Preferences, [Preferences | typeof import("jotai/utils").RESET | ((prev: Preferences) => Preferences | typeof import("jotai/utils").RESET)], void>;
5540
+ export const preferencesAtom: import("jotai").WritableAtom<Preferences, [typeof import("jotai/utils").RESET | Preferences | ((prev: Preferences) => typeof import("jotai/utils").RESET | Preferences)], void>;
5507
5541
  export const schemePreferenceAtom: import("jotai").WritableAtom<ColorScheme, [scheme: ColorScheme], void>;
5508
5542
  export const toggleSchemePreferenceAtom: import("jotai").WritableAtom<null, [], void> & {
5509
5543
  init: null;
@@ -5556,7 +5590,7 @@ declare module 'alinea/dashboard/atoms/RouterAtoms' {
5556
5590
  cancelled: PrimitiveAtom<boolean> & {
5557
5591
  init: boolean;
5558
5592
  };
5559
- match: import("jotai").WritableAtom<Match | Promise<Match>, [Promise<Match>, Match], void>;
5593
+ match: import("jotai").WritableAtom<Promise<Match> | Match, [Promise<Match>, Match], void>;
5560
5594
  }
5561
5595
  export interface RouterProviderProps {
5562
5596
  router: Router;
@@ -5708,16 +5742,16 @@ declare module 'alinea/dashboard/DashboardNav' {
5708
5742
  locale?: string | null;
5709
5743
  };
5710
5744
  export const navMatchers: {
5711
- readonly matchEntry: "/entry/*";
5712
- readonly matchEntryId: "/:action/:workspace/:root?/:id?";
5713
- readonly matchWorkspace: "/:action/:workspace";
5714
- readonly matchRoot: "/:action/:workspace/:root";
5745
+ readonly matchEntry: '/entry/*';
5746
+ readonly matchEntryId: '/:action/:workspace/:root?/:id?';
5747
+ readonly matchWorkspace: '/:action/:workspace';
5748
+ readonly matchRoot: '/:action/:workspace/:root';
5715
5749
  };
5716
5750
  export function dashboardNav(defaults: Partial<EntryLocation>): {
5717
- matchEntry: "/entry/*";
5718
- matchEntryId: "/:action/:workspace/:root?/:id?";
5719
- matchWorkspace: "/:action/:workspace";
5720
- matchRoot: "/:action/:workspace/:root";
5751
+ matchEntry: '/entry/*';
5752
+ matchEntryId: '/:action/:workspace/:root?/:id?';
5753
+ matchWorkspace: '/:action/:workspace';
5754
+ matchRoot: '/:action/:workspace/:root';
5721
5755
  root: ({ id, ...location }: EntryLocation) => string;
5722
5756
  entry: (location: EntryLocation) => string;
5723
5757
  draft: (location: EntryLocation) => string;
@@ -5766,7 +5800,7 @@ declare module 'alinea/dashboard/editor/DefaultViews' {
5766
5800
  import { FileEntry } from 'alinea/dashboard/view/media/FileEntry';
5767
5801
  import { FileSummaryRow } from 'alinea/dashboard/view/media/FileSummary';
5768
5802
  export const defaultViews: {
5769
- [x: string]: typeof CheckInput | typeof CodeInput | typeof SingleLinkInput | typeof MultipleLinksInput | typeof ListInput | typeof MetadataInput | typeof NumberInput | typeof ObjectInput | typeof PathInput | typeof RichTextInput | typeof SelectInput | typeof TabsView | typeof TextInput | typeof TimeInput | typeof MediaExplorer | typeof FileEntry | typeof FileSummaryRow;
5803
+ [x: string]: typeof TabsView | typeof CheckInput | typeof CodeInput | typeof SingleLinkInput | typeof MultipleLinksInput | typeof ListInput | typeof MetadataInput | typeof NumberInput | typeof ObjectInput | typeof PathInput | typeof RichTextInput | typeof SelectInput | typeof TextInput | typeof TimeInput | typeof MediaExplorer | typeof FileEntry | typeof FileSummaryRow;
5770
5804
  };
5771
5805
 
5772
5806
  }
@@ -5952,10 +5986,10 @@ declare module 'alinea/dashboard/hook/UseLocale' {
5952
5986
  declare module 'alinea/dashboard/hook/UseNav' {
5953
5987
 
5954
5988
  export const useNav: () => {
5955
- matchEntry: "/entry/*";
5956
- matchEntryId: "/:action/:workspace/:root?/:id?";
5957
- matchWorkspace: "/:action/:workspace";
5958
- matchRoot: "/:action/:workspace/:root";
5989
+ matchEntry: '/entry/*';
5990
+ matchEntryId: '/:action/:workspace/:root?/:id?';
5991
+ matchWorkspace: '/:action/:workspace';
5992
+ matchRoot: '/:action/:workspace/:root';
5959
5993
  root: ({ id, ...location }: import("alinea/dashboard/DashboardNav").EntryLocation) => string;
5960
5994
  entry: (location: import("alinea/dashboard/DashboardNav").EntryLocation) => string;
5961
5995
  draft: (location: import("alinea/dashboard/DashboardNav").EntryLocation) => string;
@@ -5984,7 +6018,7 @@ declare module 'alinea/dashboard/hook/UsePreferences' {
5984
6018
  declare module 'alinea/dashboard/hook/UseRoot' {
5985
6019
 
5986
6020
  export const useRoot: () => {
5987
- label: string;
6021
+ name: string;
5988
6022
  contains?: Array<string | import("alinea").Type>;
5989
6023
  orderChildrenBy?: import("alinea/core/OrderBy").OrderBy | Array<import("alinea/core/OrderBy").OrderBy>;
5990
6024
  icon?: import("react").ComponentType;
@@ -5994,7 +6028,7 @@ declare module 'alinea/dashboard/hook/UseRoot' {
5994
6028
  }>;
5995
6029
  isMediaRoot?: boolean;
5996
6030
  preview?: import("alinea/core/Preview").Preview;
5997
- name: string;
6031
+ label: string;
5998
6032
  };
5999
6033
 
6000
6034
  }
@@ -6055,13 +6089,13 @@ declare module 'alinea/dashboard/hook/UseUploads' {
6055
6089
  declare module 'alinea/dashboard/hook/UseWorkspace' {
6056
6090
 
6057
6091
  export const useWorkspace: () => {
6058
- label: string;
6059
- color: string;
6060
- roots: import("alinea/core/Workspace").RootsDefinition;
6061
6092
  source: string;
6062
6093
  mediaDir?: string;
6063
6094
  icon?: import("react").ComponentType;
6064
6095
  preview?: import("alinea/core/Preview").Preview;
6096
+ roots: import("alinea/core/Workspace").RootsDefinition;
6097
+ label: string;
6098
+ color: string;
6065
6099
  name: string;
6066
6100
  };
6067
6101
 
@@ -6083,13 +6117,34 @@ declare module 'alinea/dashboard/Routes' {
6083
6117
  import { Route, Router } from 'alinea/dashboard/atoms/RouterAtoms';
6084
6118
  export const entryRoute: Route<{
6085
6119
  editor: {
6120
+ parents: Array<{
6121
+ id: string;
6122
+ path: string;
6123
+ status: import("alinea/core").EntryStatus;
6124
+ main: boolean;
6125
+ }>;
6126
+ client: import("alinea/core/Connection").Connection;
6127
+ config: import("alinea/core/Config").Config;
6128
+ entryId: string;
6129
+ versions: Array<import("alinea/dashboard/atoms/EntryEditorAtoms").Version>;
6130
+ statuses: Record<import("alinea/core").EntryStatus, import("alinea/dashboard/atoms/EntryEditorAtoms").Version>;
6131
+ availableStatuses: Array<import("alinea/core").EntryStatus>;
6132
+ translations: Array<{
6133
+ locale: string;
6134
+ entryId: string;
6135
+ }>;
6136
+ untranslated: boolean;
6137
+ canPublish: boolean;
6138
+ canDelete: boolean;
6139
+ parentNeedsTranslation: boolean;
6140
+ edits: import("alinea/dashboard/atoms/Edits").Edits;
6086
6141
  transition: import("jotai").PrimitiveAtom<import("alinea/dashboard/atoms/EntryEditorAtoms").EntryTransition | undefined> & {
6087
6142
  init: import("alinea/dashboard/atoms/EntryEditorAtoms").EntryTransition | undefined;
6088
6143
  };
6089
6144
  revisionId: string;
6090
- activeStatus: import("alinea/core/Entry").EntryStatus;
6091
- statusInUrl: import("jotai").Atom<import("alinea/core/Entry").EntryStatus | undefined>;
6092
- selectedStatus: import("jotai").Atom<import("alinea/core/Entry").EntryStatus>;
6145
+ activeStatus: import("alinea/core").EntryStatus;
6146
+ statusInUrl: import("jotai").Atom<import("alinea/core").EntryStatus | undefined>;
6147
+ selectedStatus: import("jotai").Atom<import("alinea/core").EntryStatus>;
6093
6148
  entryData: import("alinea/dashboard/atoms/EntryEditorAtoms").EntryData;
6094
6149
  editMode: import("jotai").PrimitiveAtom<import("alinea/dashboard/atoms/EntryEditorAtoms").EditMode> & {
6095
6150
  init: import("alinea/dashboard/atoms/EntryEditorAtoms").EditMode;
@@ -6160,34 +6215,13 @@ declare module 'alinea/dashboard/Routes' {
6160
6215
  view: import("alinea/core/View").View<import("alinea/dashboard/view/EntryEdit").EntryEditProps & {
6161
6216
  type: import("alinea").Type;
6162
6217
  }> | undefined;
6163
- parents: Array<{
6164
- id: string;
6165
- path: string;
6166
- status: import("alinea/core/Entry").EntryStatus;
6167
- main: boolean;
6168
- }>;
6169
- client: import("alinea/core/Connection").Connection;
6170
- config: import("alinea/core/Config").Config;
6171
- entryId: string;
6172
- versions: Array<import("alinea/dashboard/atoms/EntryEditorAtoms").Version>;
6173
- statuses: Record<import("alinea/core/Entry").EntryStatus, import("alinea/dashboard/atoms/EntryEditorAtoms").Version>;
6174
- availableStatuses: Array<import("alinea/core/Entry").EntryStatus>;
6175
- translations: Array<{
6176
- locale: string;
6177
- entryId: string;
6178
- }>;
6179
- untranslated: boolean;
6180
- canPublish: boolean;
6181
- canDelete: boolean;
6182
- parentNeedsTranslation: boolean;
6183
- edits: import("alinea/dashboard/atoms/Edits").Edits;
6184
6218
  } | undefined;
6185
6219
  }>;
6186
6220
  export const editRoute: Route<{
6187
- locale: string | undefined;
6188
6221
  id: string;
6189
6222
  root: string;
6190
6223
  workspace: string;
6224
+ locale: string | undefined;
6191
6225
  } | null>;
6192
6226
  export const router: Router;
6193
6227
 
@@ -6251,7 +6285,7 @@ declare module 'alinea/dashboard/util/Loader' {
6251
6285
  isLoading: boolean;
6252
6286
  isSuccess: boolean;
6253
6287
  }
6254
- export function loader<Value>(asynAtom: Atom<Promise<Value>>): import("jotai").WritableAtom<(get: <Value_1>(atom: Atom<Value_1>) => Value_1, { setSelf }: {
6288
+ export function loader<Value>(asynAtom: Atom<Promise<Value>>): import("jotai").WritableAtom<(get: <Value>(atom: Atom<Value>) => Value, { setSelf }: {
6255
6289
  readonly signal: AbortSignal;
6256
6290
  readonly setSelf: <A extends unknown[]>(...args: A) => unknown;
6257
6291
  }) => LoaderState<Value>, [value: Value], void> & {
@@ -6653,7 +6687,7 @@ declare module 'alinea/dashboard/view/explorer/ExplorerRow' {
6653
6687
  summaryView: 'summaryRow' | 'summaryThumb';
6654
6688
  defaultView: ComponentType<SummaryProps>;
6655
6689
  };
6656
- export const ExplorerRow: import("react").NamedExoticComponent<ExplorerRowProps>;
6690
+ export const ExplorerRow: import("react").MemoExoticComponent<({ schema, query, batchSize, amount, from, summaryView, defaultView }: ExplorerRowProps) => import("react/jsx-runtime").JSX.Element>;
6657
6691
 
6658
6692
  }
6659
6693
 
@@ -6696,7 +6730,7 @@ declare module 'alinea/dashboard/view/InputLabel' {
6696
6730
  isFolded?: boolean;
6697
6731
  toggleFold?: () => void;
6698
6732
  };
6699
- export const LabelHeader: import("react").NamedExoticComponent<LabelHeaderProps>;
6733
+ export const LabelHeader: import("react").MemoExoticComponent<({ label, help, size, focused, shared, readOnly, required, error, isFolded, toggleFold }: LabelHeaderProps) => import("react/jsx-runtime").JSX.Element>;
6700
6734
  export interface InputLabelProps extends PropsWithChildren {
6701
6735
  label?: ReactNode;
6702
6736
  asLabel?: boolean;
@@ -7237,7 +7271,7 @@ declare module 'alinea/field/link/EntryLink' {
7237
7271
  }
7238
7272
  interface EntryOptions<Fields> extends LinkFieldOptions<EntryReference & InferStoredValue<Fields>>, Omit<EntryPickerOptions<Fields>, 'label' | 'selection'> {
7239
7273
  }
7240
- export function entry<Fields = undefined>(label: Label, options?: WithoutLabel<EntryOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<EntryReference & InferStoredValue<Fields>, EntryLink<{ [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: { [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; }[K]; } : never>>;
7274
+ export function entry<Fields = undefined>(label: Label, options?: WithoutLabel<EntryOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<EntryReference & InferStoredValue<Fields>, EntryLink<{ [K in keyof Fields as Fields[K] extends import("alinea/core/Expr").Expr<any> ? K : never]: Fields[K] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: T[K]; } : never>>;
7241
7275
  export namespace entry {
7242
7276
  type EntryRow<Fields> = EntryLink<Type.Infer<Fields>> & ListRow;
7243
7277
  interface EntryOptions<Fields> extends LinkFieldOptions<Array<EntryReference & ListRow & InferStoredValue<Fields>>>, Omit<EntryPickerOptions<Fields>, 'label' | 'selection'> {
@@ -7275,11 +7309,11 @@ declare module 'alinea/field/link/FileLink' {
7275
7309
  export function filePicker<Fields>(multiple: boolean, options: Omit<EntryPickerOptions<Fields>, 'selection'>): import("alinea/core/Picker").Picker<EntryReference, EntryPickerOptions<Fields>>;
7276
7310
  export interface FileOptions<Fields> extends LinkFieldOptions<EntryReference & InferStoredValue<Fields>>, Omit<EntryPickerOptions<Fields>, 'label' | 'selection'> {
7277
7311
  }
7278
- export function file<Fields = undefined>(label: Label, options?: WithoutLabel<FileOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<EntryReference & InferStoredValue<Fields>, FileLink<{ [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: { [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; }[K]; } : never>>;
7312
+ export function file<Fields = undefined>(label: Label, options?: WithoutLabel<FileOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<EntryReference & InferStoredValue<Fields>, FileLink<{ [K in keyof Fields as Fields[K] extends import("alinea/core/Expr").Expr<any> ? K : never]: Fields[K] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: T[K]; } : never>>;
7279
7313
  export namespace file {
7280
7314
  interface FilesOptions<Fields> extends LinkFieldOptions<Array<EntryReference & ListRow & InferStoredValue<Fields>>>, Omit<EntryPickerOptions<Fields>, 'label' | 'selection'> {
7281
7315
  }
7282
- function multiple<Fields = undefined>(label: Label, options?: WithoutLabel<FilesOptions<Fields>>): import("alinea/field/link/LinkField").LinksField<EntryReference & ListRow & InferStoredValue<Fields>, FileLink<{ [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: { [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; }[K]; } : never>>;
7316
+ function multiple<Fields = undefined>(label: Label, options?: WithoutLabel<FilesOptions<Fields>>): import("alinea/field/link/LinkField").LinksField<EntryReference & ListRow & InferStoredValue<Fields>, FileLink<{ [K in keyof Fields as Fields[K] extends import("alinea/core/Expr").Expr<any> ? K : never]: Fields[K] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: T[K]; } : never>>;
7283
7317
  }
7284
7318
 
7285
7319
  }
@@ -7487,7 +7521,7 @@ declare module 'alinea/field/link/UrlLink' {
7487
7521
  }
7488
7522
  export interface UrlOptions<Fields> extends LinkFieldOptions<UrlReference & InferStoredValue<Fields>>, UrlPickerOptions<Fields> {
7489
7523
  }
7490
- export function url<Fields>(label: Label, options?: WithoutLabel<UrlOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<UrlReference & InferStoredValue<Fields>, UrlLink<{ [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: { [K_1 in keyof Fields as Fields[K_1] extends import("alinea/core/Expr").Expr<any> ? K_1 : never]: Fields[K_1] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; }[K]; } : never>>;
7524
+ export function url<Fields>(label: Label, options?: WithoutLabel<UrlOptions<Fields>>): import("alinea/field/link/LinkField").LinkField<UrlReference & InferStoredValue<Fields>, UrlLink<{ [K in keyof Fields as Fields[K] extends import("alinea/core/Expr").Expr<any> ? K : never]: Fields[K] extends import("alinea/core/Expr").Expr<infer T_1> ? T_1 : never; } extends infer T ? { [K in keyof T]: T[K]; } : never>>;
7491
7525
  export namespace url {
7492
7526
  type UrlRows<Fields> = UrlLink<Type.Infer<Fields>> & ListRow;
7493
7527
  export interface UrlOptions<Fields> extends LinkFieldOptions<Array<UrlReference & ListRow & InferStoredValue<Fields>>>, UrlPickerOptions<Fields> {
@@ -7800,6 +7834,7 @@ declare module 'alinea/field/richtext/Extensions' {
7800
7834
  TableCell: import("@tiptap/core").Node<import("@tiptap/extension-table-cell").TableCellOptions, any>;
7801
7835
  TableHeader: import("@tiptap/core").Node<import("@tiptap/extension-table-header").TableHeaderOptions, any>;
7802
7836
  TableRow: import("@tiptap/core").Node<import("@tiptap/extension-table-row").TableRowOptions, any>;
7837
+ Highlight: import("@tiptap/core").Mark<import("@tiptap/extension-highlight").HighlightOptions, any>;
7803
7838
  };
7804
7839
 
7805
7840
  }
@@ -8105,6 +8140,12 @@ declare module 'alinea/field/richtext/Toolbar' {
8105
8140
  active: ({ editor }: import("alinea/field/richtext/RichTextToolbar").RichTextToolbarContext) => boolean;
8106
8141
  onSelect: ({ exec }: import("alinea/field/richtext/RichTextToolbar").RichTextToolbarContext) => boolean;
8107
8142
  };
8143
+ highlight: {
8144
+ icon: () => import("react/jsx-runtime").JSX.Element;
8145
+ title: string;
8146
+ active: ({ editor }: import("alinea/field/richtext/RichTextToolbar").RichTextToolbarContext) => boolean;
8147
+ onSelect: ({ exec }: import("alinea/field/richtext/RichTextToolbar").RichTextToolbarContext) => boolean;
8148
+ };
8108
8149
  };
8109
8150
  };
8110
8151
  export const alignment: {
@@ -8754,20 +8795,18 @@ declare module 'alinea/query' {
8754
8795
  export function children<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include> & {
8755
8796
  depth?: number;
8756
8797
  }): {
8757
- type?: Type | undefined;
8758
- select?: Selection | undefined;
8759
- include?: Include | undefined;
8760
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8798
+ depth?: number;
8799
+ edge: 'children';
8761
8800
  first?: true;
8762
8801
  get?: true;
8763
8802
  count?: true;
8764
- id?: import("alinea/core/Filter").Condition<string>;
8765
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8766
- path?: import("alinea/core/Filter").Condition<string>;
8767
- url?: import("alinea/core/Filter").Condition<string>;
8768
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8769
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8770
- level?: import("alinea/core/Filter").Condition<number>;
8803
+ id?: string | import("alinea/core/Filter").Ops<string>;
8804
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8805
+ path?: string | import("alinea/core/Filter").Ops<string>;
8806
+ url?: string | import("alinea/core/Filter").Ops<string>;
8807
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8808
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8809
+ level?: number | import("alinea/core/Filter").Ops<number>;
8771
8810
  location?: import("alinea/core/Graph").Location;
8772
8811
  locale?: string | null;
8773
8812
  preferredLocale?: string;
@@ -8780,26 +8819,26 @@ declare module 'alinea/query' {
8780
8819
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8781
8820
  status?: import("alinea/core/Graph").Status;
8782
8821
  preview?: import("alinea/core/Preview").PreviewRequest;
8783
- depth?: number;
8784
- edge: "children";
8822
+ type?: Type | undefined;
8823
+ select?: Selection | undefined;
8824
+ include?: Include | undefined;
8825
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8785
8826
  };
8786
8827
  export function parents<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include> & {
8787
8828
  depth?: number;
8788
8829
  }): {
8789
- type?: Type | undefined;
8790
- select?: Selection | undefined;
8791
- include?: Include | undefined;
8792
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8830
+ depth?: number;
8831
+ edge: 'parents';
8793
8832
  first?: true;
8794
8833
  get?: true;
8795
8834
  count?: true;
8796
- id?: import("alinea/core/Filter").Condition<string>;
8797
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8798
- path?: import("alinea/core/Filter").Condition<string>;
8799
- url?: import("alinea/core/Filter").Condition<string>;
8800
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8801
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8802
- level?: import("alinea/core/Filter").Condition<number>;
8835
+ id?: string | import("alinea/core/Filter").Ops<string>;
8836
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8837
+ path?: string | import("alinea/core/Filter").Ops<string>;
8838
+ url?: string | import("alinea/core/Filter").Ops<string>;
8839
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8840
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8841
+ level?: number | import("alinea/core/Filter").Ops<number>;
8803
8842
  location?: import("alinea/core/Graph").Location;
8804
8843
  locale?: string | null;
8805
8844
  preferredLocale?: string;
@@ -8812,26 +8851,26 @@ declare module 'alinea/query' {
8812
8851
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8813
8852
  status?: import("alinea/core/Graph").Status;
8814
8853
  preview?: import("alinea/core/Preview").PreviewRequest;
8815
- depth?: number;
8816
- edge: "parents";
8854
+ type?: Type | undefined;
8855
+ select?: Selection | undefined;
8856
+ include?: Include | undefined;
8857
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8817
8858
  };
8818
8859
  export function translations<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include> & {
8819
8860
  includeSelf?: boolean;
8820
8861
  }): {
8821
- type?: Type | undefined;
8822
- select?: Selection | undefined;
8823
- include?: Include | undefined;
8824
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8862
+ includeSelf?: boolean;
8863
+ edge: 'translations';
8825
8864
  first?: true;
8826
8865
  get?: true;
8827
8866
  count?: true;
8828
- id?: import("alinea/core/Filter").Condition<string>;
8829
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8830
- path?: import("alinea/core/Filter").Condition<string>;
8831
- url?: import("alinea/core/Filter").Condition<string>;
8832
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8833
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8834
- level?: import("alinea/core/Filter").Condition<number>;
8867
+ id?: string | import("alinea/core/Filter").Ops<string>;
8868
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8869
+ path?: string | import("alinea/core/Filter").Ops<string>;
8870
+ url?: string | import("alinea/core/Filter").Ops<string>;
8871
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8872
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8873
+ level?: number | import("alinea/core/Filter").Ops<number>;
8835
8874
  location?: import("alinea/core/Graph").Location;
8836
8875
  locale?: string | null;
8837
8876
  preferredLocale?: string;
@@ -8844,26 +8883,26 @@ declare module 'alinea/query' {
8844
8883
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8845
8884
  status?: import("alinea/core/Graph").Status;
8846
8885
  preview?: import("alinea/core/Preview").PreviewRequest;
8847
- includeSelf?: boolean;
8848
- edge: "translations";
8886
+ type?: Type | undefined;
8887
+ select?: Selection | undefined;
8888
+ include?: Include | undefined;
8889
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8849
8890
  };
8850
8891
  export function siblings<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include> & {
8851
8892
  includeSelf?: boolean;
8852
8893
  }): {
8853
- type?: Type | undefined;
8854
- select?: Selection | undefined;
8855
- include?: Include | undefined;
8856
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8894
+ includeSelf?: boolean;
8895
+ edge: 'siblings';
8857
8896
  first?: true;
8858
8897
  get?: true;
8859
8898
  count?: true;
8860
- id?: import("alinea/core/Filter").Condition<string>;
8861
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8862
- path?: import("alinea/core/Filter").Condition<string>;
8863
- url?: import("alinea/core/Filter").Condition<string>;
8864
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8865
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8866
- level?: import("alinea/core/Filter").Condition<number>;
8899
+ id?: string | import("alinea/core/Filter").Ops<string>;
8900
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8901
+ path?: string | import("alinea/core/Filter").Ops<string>;
8902
+ url?: string | import("alinea/core/Filter").Ops<string>;
8903
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8904
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8905
+ level?: number | import("alinea/core/Filter").Ops<number>;
8867
8906
  location?: import("alinea/core/Graph").Location;
8868
8907
  locale?: string | null;
8869
8908
  preferredLocale?: string;
@@ -8876,24 +8915,23 @@ declare module 'alinea/query' {
8876
8915
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8877
8916
  status?: import("alinea/core/Graph").Status;
8878
8917
  preview?: import("alinea/core/Preview").PreviewRequest;
8879
- includeSelf?: boolean;
8880
- edge: "siblings";
8881
- };
8882
- export function parent<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8883
8918
  type?: Type | undefined;
8884
8919
  select?: Selection | undefined;
8885
8920
  include?: Include | undefined;
8886
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8921
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8922
+ };
8923
+ export function parent<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8924
+ edge: 'parent';
8887
8925
  first?: true;
8888
8926
  get?: true;
8889
8927
  count?: true;
8890
- id?: import("alinea/core/Filter").Condition<string>;
8891
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8892
- path?: import("alinea/core/Filter").Condition<string>;
8893
- url?: import("alinea/core/Filter").Condition<string>;
8894
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8895
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8896
- level?: import("alinea/core/Filter").Condition<number>;
8928
+ id?: string | import("alinea/core/Filter").Ops<string>;
8929
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8930
+ path?: string | import("alinea/core/Filter").Ops<string>;
8931
+ url?: string | import("alinea/core/Filter").Ops<string>;
8932
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8933
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8934
+ level?: number | import("alinea/core/Filter").Ops<number>;
8897
8935
  location?: import("alinea/core/Graph").Location;
8898
8936
  locale?: string | null;
8899
8937
  preferredLocale?: string;
@@ -8906,23 +8944,23 @@ declare module 'alinea/query' {
8906
8944
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8907
8945
  status?: import("alinea/core/Graph").Status;
8908
8946
  preview?: import("alinea/core/Preview").PreviewRequest;
8909
- edge: "parent";
8910
- };
8911
- export function next<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8912
8947
  type?: Type | undefined;
8913
8948
  select?: Selection | undefined;
8914
8949
  include?: Include | undefined;
8915
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8950
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8951
+ };
8952
+ export function next<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8953
+ edge: 'next';
8916
8954
  first?: true;
8917
8955
  get?: true;
8918
8956
  count?: true;
8919
- id?: import("alinea/core/Filter").Condition<string>;
8920
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8921
- path?: import("alinea/core/Filter").Condition<string>;
8922
- url?: import("alinea/core/Filter").Condition<string>;
8923
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8924
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8925
- level?: import("alinea/core/Filter").Condition<number>;
8957
+ id?: string | import("alinea/core/Filter").Ops<string>;
8958
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8959
+ path?: string | import("alinea/core/Filter").Ops<string>;
8960
+ url?: string | import("alinea/core/Filter").Ops<string>;
8961
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8962
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8963
+ level?: number | import("alinea/core/Filter").Ops<number>;
8926
8964
  location?: import("alinea/core/Graph").Location;
8927
8965
  locale?: string | null;
8928
8966
  preferredLocale?: string;
@@ -8935,23 +8973,23 @@ declare module 'alinea/query' {
8935
8973
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8936
8974
  status?: import("alinea/core/Graph").Status;
8937
8975
  preview?: import("alinea/core/Preview").PreviewRequest;
8938
- edge: "next";
8939
- };
8940
- export function previous<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8941
8976
  type?: Type | undefined;
8942
8977
  select?: Selection | undefined;
8943
8978
  include?: Include | undefined;
8944
- filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea/core/Type").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8979
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8980
+ };
8981
+ export function previous<Selection extends SelectionGuard = undefined, Type extends TypeGuard = undefined, Include extends IncludeGuard = undefined>(query: GraphQuery<Selection, Type, Include>): {
8982
+ edge: 'previous';
8945
8983
  first?: true;
8946
8984
  get?: true;
8947
8985
  count?: true;
8948
- id?: import("alinea/core/Filter").Condition<string>;
8949
- parentId?: import("alinea/core/Filter").Condition<string | null>;
8950
- path?: import("alinea/core/Filter").Condition<string>;
8951
- url?: import("alinea/core/Filter").Condition<string>;
8952
- workspace?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Workspace").Workspace;
8953
- root?: import("alinea/core/Filter").Condition<string> | import("alinea/core/Root").Root;
8954
- level?: import("alinea/core/Filter").Condition<number>;
8986
+ id?: string | import("alinea/core/Filter").Ops<string>;
8987
+ parentId?: string | import("alinea/core/Filter").Ops<string | null> | null;
8988
+ path?: string | import("alinea/core/Filter").Ops<string>;
8989
+ url?: string | import("alinea/core/Filter").Ops<string>;
8990
+ workspace?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Workspace;
8991
+ root?: (string | import("alinea/core/Filter").Ops<string>) | import("alinea").Root;
8992
+ level?: number | import("alinea/core/Filter").Ops<number>;
8955
8993
  location?: import("alinea/core/Graph").Location;
8956
8994
  locale?: string | null;
8957
8995
  preferredLocale?: string;
@@ -8964,7 +9002,10 @@ declare module 'alinea/query' {
8964
9002
  orderBy?: import("alinea/core/Graph").Order | Array<import("alinea/core/Graph").Order>;
8965
9003
  status?: import("alinea/core/Graph").Status;
8966
9004
  preview?: import("alinea/core/Preview").PreviewRequest;
8967
- edge: "previous";
9005
+ type?: Type | undefined;
9006
+ select?: Selection | undefined;
9007
+ include?: Include | undefined;
9008
+ filter?: import("alinea/core/Filter").Filter<import("alinea/core/EntryFields").EntryFields & import("alinea/core/Infer").StoredRow<Type extends import("alinea").Type<infer V> ? V : Type extends any[] ? Type[number] : unknown>> | undefined;
8968
9009
  };
8969
9010
 
8970
9011
  }
@@ -9046,7 +9087,7 @@ declare module 'alinea/test/example' {
9046
9087
  Fields: import("alinea").Type<import("alinea/core/Document").Document & {
9047
9088
  text: import("alinea/field/text").TextField;
9048
9089
  hello: import("alinea/field/text").TextField;
9049
- richText: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9090
+ richText: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9050
9091
  select: import("alinea/field/select").SelectField<"a" | "b" | null>;
9051
9092
  number: import("alinea/field/number").NumberField;
9052
9093
  check: import("alinea/field/check").CheckField;
@@ -9067,7 +9108,7 @@ declare module 'alinea/test/example' {
9067
9108
  fieldA: string;
9068
9109
  fieldB: string;
9069
9110
  }>>;
9070
- list: import("alinea/core/field/ListField").ListField<({
9111
+ list: import("alinea/core").ListField<({
9071
9112
  _type: "Image";
9072
9113
  image: import("alinea").EntryReference;
9073
9114
  } | {
@@ -9084,23 +9125,21 @@ declare module 'alinea/test/example' {
9084
9125
  }) & import("alinea/core/shape/ListShape").ListRow, import("alinea/field/list").ListOptions<{
9085
9126
  Text: import("alinea").Type<{
9086
9127
  title: import("alinea/field/text").TextField;
9087
- text: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9128
+ text: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9088
9129
  }>;
9089
9130
  Image: import("alinea").Type<{
9090
9131
  image: import("alinea/field/link").ImageField<undefined>;
9091
9132
  }>;
9092
9133
  }>>;
9093
- withInitial: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9094
- nested: import("alinea/core/field/RichTextField").RichTextField<{
9134
+ withInitial: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9135
+ nested: import("alinea/core").RichTextField<{
9095
9136
  Inner: import("alinea").Type<{
9096
9137
  checkbox1: import("alinea/field/check").CheckField;
9097
9138
  checkbox2: import("alinea/field/check").CheckField;
9098
9139
  title: import("alinea/field/text").TextField;
9099
- content: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9140
+ content: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9100
9141
  }>;
9101
9142
  NestLayout: import("alinea").Type<{
9102
- tabA: import("alinea/field/text").TextField;
9103
- tabB: import("alinea/field/text").TextField;
9104
9143
  object: import("alinea/field/object").ObjectField<{
9105
9144
  fieldA: import("alinea/field/text").TextField;
9106
9145
  fieldB: import("alinea/field/text").TextField;
@@ -9108,17 +9147,17 @@ declare module 'alinea/test/example' {
9108
9147
  fieldA: import("alinea/field/text").TextField;
9109
9148
  fieldB: import("alinea/field/text").TextField;
9110
9149
  };
9150
+ tabA: import("alinea/field/text").TextField;
9151
+ tabB: import("alinea/field/text").TextField;
9111
9152
  }>;
9112
- }, import("alinea/field/richtext/RichTextField").RichTextOptions<{
9153
+ }, import("alinea/field/richtext").RichTextOptions<{
9113
9154
  Inner: import("alinea").Type<{
9114
9155
  checkbox1: import("alinea/field/check").CheckField;
9115
9156
  checkbox2: import("alinea/field/check").CheckField;
9116
9157
  title: import("alinea/field/text").TextField;
9117
- content: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9158
+ content: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9118
9159
  }>;
9119
9160
  NestLayout: import("alinea").Type<{
9120
- tabA: import("alinea/field/text").TextField;
9121
- tabB: import("alinea/field/text").TextField;
9122
9161
  object: import("alinea/field/object").ObjectField<{
9123
9162
  fieldA: import("alinea/field/text").TextField;
9124
9163
  fieldB: import("alinea/field/text").TextField;
@@ -9126,13 +9165,17 @@ declare module 'alinea/test/example' {
9126
9165
  fieldA: import("alinea/field/text").TextField;
9127
9166
  fieldB: import("alinea/field/text").TextField;
9128
9167
  };
9168
+ tabA: import("alinea/field/text").TextField;
9169
+ tabB: import("alinea/field/text").TextField;
9129
9170
  }>;
9130
9171
  }>>;
9131
9172
  }>;
9132
9173
  Page: import("alinea").Type<import("alinea/core/Document").Document & {
9174
+ title: import("alinea/field/text").TextField;
9175
+ path: import("alinea/field/path").PathField;
9133
9176
  name: import("alinea/field/path").PathField & import("alinea/field/text").TextField;
9134
9177
  entryLink: import("alinea/field/link/LinkField").LinksField<import("alinea/field/link").LinkRow, import("alinea").Link<{}>>;
9135
- list: import("alinea/core/field/ListField").ListField<{
9178
+ list: import("alinea/core").ListField<{
9136
9179
  _type: "item";
9137
9180
  itemId: string;
9138
9181
  } & import("alinea/core/shape/ListShape").ListRow, {
@@ -9144,8 +9187,6 @@ declare module 'alinea/test/example' {
9144
9187
  }>;
9145
9188
  }>>;
9146
9189
  name2: import("alinea/field/text").TextField;
9147
- title: import("alinea/field/text").TextField;
9148
- path: import("alinea/field/path").PathField;
9149
9190
  }>;
9150
9191
  Container: import("alinea").Type<{
9151
9192
  title: import("alinea/field/text").TextField;
@@ -9236,23 +9277,23 @@ declare module 'alinea/test/schema/DemoHome' {
9236
9277
  hero: import("alinea/field/object").ObjectField<{
9237
9278
  header: import("alinea/field/object").ObjectField<{
9238
9279
  image: import("alinea/field/link").ImageField<undefined>;
9239
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9280
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9240
9281
  }> & {
9241
9282
  image: import("alinea/field/link").ImageField<undefined>;
9242
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9283
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9243
9284
  };
9244
9285
  title: import("alinea/field/text").TextField;
9245
- text: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9286
+ text: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9246
9287
  }> & {
9247
9288
  header: import("alinea/field/object").ObjectField<{
9248
9289
  image: import("alinea/field/link").ImageField<undefined>;
9249
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9290
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9250
9291
  }> & {
9251
9292
  image: import("alinea/field/link").ImageField<undefined>;
9252
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9293
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9253
9294
  };
9254
9295
  title: import("alinea/field/text").TextField;
9255
- text: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9296
+ text: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9256
9297
  };
9257
9298
  }>;
9258
9299
 
@@ -9265,14 +9306,14 @@ declare module 'alinea/test/schema/DemoRecipe' {
9265
9306
  path: import("alinea/field/path").PathField;
9266
9307
  header: import("alinea/field/object").ObjectField<{
9267
9308
  image: import("alinea/field/link").ImageField<undefined>;
9268
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9309
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9269
9310
  }> & {
9270
9311
  image: import("alinea/field/link").ImageField<undefined>;
9271
- credit: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9312
+ credit: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9272
9313
  };
9273
- intro: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9274
- ingredients: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9275
- instructions: import("alinea/core/field/RichTextField").RichTextField<{}, import("alinea/field/richtext/RichTextField").RichTextOptions<{}>>;
9314
+ intro: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9315
+ ingredients: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9316
+ instructions: import("alinea/core").RichTextField<{}, import("alinea/field/richtext").RichTextOptions<{}>>;
9276
9317
  }>;
9277
9318
 
9278
9319
  }
@@ -9436,7 +9477,7 @@ declare module 'alinea/ui/Button.stories' {
9436
9477
  export function Buttons(): import("react/jsx-runtime").JSX.Element;
9437
9478
  const _default: {
9438
9479
  title: string;
9439
- decorators: ((Story: import("react").FunctionComponent) => import("react/jsx-runtime").JSX.Element)[];
9480
+ decorators: ((Story: import("react").FunctionComponent<{}>) => import("react/jsx-runtime").JSX.Element)[];
9440
9481
  };
9441
9482
  export default _default;
9442
9483
 
@@ -9475,7 +9516,7 @@ declare module 'alinea/ui/DropdownMenu' {
9475
9516
  declare module 'alinea/ui/Ellipsis' {
9476
9517
 
9477
9518
  import { type HTMLProps } from 'react';
9478
- export const Ellipsis: import("react").NamedExoticComponent<HTMLProps<HTMLDivElement>>;
9519
+ export const Ellipsis: import("react").MemoExoticComponent<({ children, ...props }: HTMLProps<HTMLDivElement>) => import("react/jsx-runtime").JSX.Element>;
9479
9520
 
9480
9521
  }
9481
9522
 
@@ -9902,6 +9943,13 @@ declare module 'alinea/ui/icons/IcRoundArrowUpward' {
9902
9943
 
9903
9944
  }
9904
9945
 
9946
+ declare module 'alinea/ui/icons/IcRoundAttachFile' {
9947
+
9948
+ import { SVGProps } from "react";
9949
+ export function IcRoundAttachFile(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
9950
+
9951
+ }
9952
+
9905
9953
  declare module 'alinea/ui/icons/IcRoundCheck' {
9906
9954
 
9907
9955
  import type { SVGProps } from 'react';
@@ -10035,6 +10083,13 @@ declare module 'alinea/ui/icons/IcRoundFormatListNumbered' {
10035
10083
 
10036
10084
  }
10037
10085
 
10086
+ declare module 'alinea/ui/icons/IcRoundFormatPaint' {
10087
+
10088
+ import { SVGProps } from "react";
10089
+ export function IcRoundFormatPaint(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
10090
+
10091
+ }
10092
+
10038
10093
  declare module 'alinea/ui/icons/IcRoundHamburger' {
10039
10094
 
10040
10095
  import type { SVGProps } from 'react';
@@ -10173,6 +10228,13 @@ declare module 'alinea/ui/icons/IcRoundOpenInNew' {
10173
10228
 
10174
10229
  }
10175
10230
 
10231
+ declare module 'alinea/ui/icons/IcRoundPanorama' {
10232
+
10233
+ import { SVGProps } from "react";
10234
+ export function IcRoundPanorama(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
10235
+
10236
+ }
10237
+
10176
10238
  declare module 'alinea/ui/icons/IcRoundPermMedia' {
10177
10239
 
10178
10240
  import type { SVGProps } from 'react';
@@ -10666,16 +10728,16 @@ declare module 'alinea/ui/Stack' {
10666
10728
  }>;
10667
10729
  export const VStack: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<HTMLProps<HTMLDivElement>, "wrap"> & {
10668
10730
  gap?: number | string;
10669
- direction?: CSSProperties["flexDirection"];
10670
- align?: CSSProperties["alignItems"];
10671
- justify?: CSSProperties["justifyContent"];
10731
+ direction?: CSSProperties['flexDirection'];
10732
+ align?: CSSProperties['alignItems'];
10733
+ justify?: CSSProperties['justifyContent'];
10672
10734
  horizontal?: boolean;
10673
10735
  wrap?: boolean;
10674
10736
  center?: boolean;
10675
10737
  full?: boolean;
10676
10738
  autoWidth?: boolean;
10677
10739
  }, "ref"> & {
10678
- ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
10740
+ ref?: import("react").RefObject<HTMLDivElement> | ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | null | undefined;
10679
10741
  }, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
10680
10742
  export const HStack: typeof VStack;
10681
10743
  export namespace Stack {
@@ -10736,7 +10798,7 @@ declare module 'alinea/ui/TextLabel' {
10736
10798
  declare module 'alinea/ui/Typo' {
10737
10799
 
10738
10800
  export const Typo: (({ children, align }: import("react").PropsWithChildren<{
10739
- align?: "left" | "right" | "center";
10801
+ align?: 'left' | 'right' | 'center';
10740
10802
  }>) => import("react/jsx-runtime").JSX.Element) & {
10741
10803
  H1: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{
10742
10804
  flat?: boolean;
@@ -10763,7 +10825,7 @@ declare module 'alinea/ui/Typo' {
10763
10825
  light?: boolean;
10764
10826
  }, "p">;
10765
10827
  Link: import("react").ForwardRefExoticComponent<Omit<import("react").HTMLProps<HTMLAnchorElement>, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
10766
- link: import("@alinea/styler").GenericStyles | import("@alinea/styler").Styler<string>;
10828
+ link: import("@alinea/styler").Styler<string> | import("@alinea/styler").GenericStyles;
10767
10829
  Monospace: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{}, "span">;
10768
10830
  Small: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{
10769
10831
  flat?: boolean;
@@ -10821,7 +10883,7 @@ declare module 'alinea/ui/util/CreateTypo' {
10821
10883
  small?: ComponentType<any>;
10822
10884
  }
10823
10885
  export function createTypo(styles: TypoStyles, overrides?: Overrides): (({ children, align }: PropsWithChildren<{
10824
- align?: "left" | "right" | "center";
10886
+ align?: 'left' | 'right' | 'center';
10825
10887
  }>) => import("react/jsx-runtime").JSX.Element) & {
10826
10888
  H1: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{
10827
10889
  flat?: boolean;
@@ -10848,7 +10910,7 @@ declare module 'alinea/ui/util/CreateTypo' {
10848
10910
  light?: boolean;
10849
10911
  }, "p">;
10850
10912
  Link: import("react").ForwardRefExoticComponent<Omit<HTMLProps<HTMLAnchorElement>, "ref"> & import("react").RefAttributes<HTMLAnchorElement>>;
10851
- link: GenericStyles | Styler<string>;
10913
+ link: Styler<string> | GenericStyles;
10852
10914
  Monospace: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{}, "span">;
10853
10915
  Small: import("alinea/ui/util/PropsWithAs").ComponentWithAs<{
10854
10916
  flat?: boolean;