@tinacms/schema-tools 0.0.0-e70425b-20241028042614 → 0.0.0-e96d36b-20251210035710

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.
@@ -28,6 +28,7 @@ export declare class TinaSchema {
28
28
  } & Schema);
29
29
  getIsTitleFieldName: (collection: string) => string;
30
30
  getCollectionsByName: (collectionNames: string[]) => Collection<true>[];
31
+ findReferencesFromCollection(name: string): Record<string, string[]>;
31
32
  getCollection: (collectionName: string) => Collection<true>;
32
33
  getCollections: () => Collection<true>[];
33
34
  getCollectionByFullPath: (filepath: string) => Collection<true>;
@@ -59,7 +60,26 @@ export declare class TinaSchema {
59
60
  *
60
61
  */
61
62
  getTemplatesForCollectable: (collection: Collectable) => CollectionTemplateable;
62
- walkFields: (cb: (args: {
63
+ /**
64
+ * Walk all fields in tina schema
65
+ *
66
+ * @param cb callback function invoked for each field
67
+ */
68
+ walkFields(cb: (args: {
69
+ field: any;
70
+ collection: any;
71
+ path: string;
72
+ isListItem?: boolean;
73
+ }) => void): void;
74
+ /**
75
+ * Walk all fields in Tina Schema
76
+ *
77
+ * This is a legacy version to preserve backwards compatibility for the tina generated schema. It does not
78
+ * traverse fields in object lists in rich-text templates.
79
+ *
80
+ * @param cb callback function invoked for each field
81
+ */
82
+ legacyWalkFields: (cb: (args: {
63
83
  field: TinaField;
64
84
  collection: Collection;
65
85
  path: string[];
@@ -1,4 +1,8 @@
1
- /**
2
-
3
- */
4
- export declare function addNamespaceToSchema<T extends object | string>(maybeNode: T, namespace?: string[]): T;
1
+ type Node = {
2
+ name?: string;
3
+ value?: string;
4
+ namespace?: string[];
5
+ [key: string]: any;
6
+ };
7
+ export declare function addNamespaceToSchema<T extends Node | string>(maybeNode: T, namespace?: string[]): T;
8
+ export {};
@@ -13,7 +13,7 @@ export declare const resolveForm: ({ collection, basename, template, schema, }:
13
13
  fields: {
14
14
  [key: string]: unknown;
15
15
  name: string;
16
- component: NonNullable<import("../types/index").TinaField<true>["ui"]>["component"];
16
+ component: NonNullable<import("..").TinaField<true>["ui"]>["component"];
17
17
  type: string;
18
18
  }[];
19
19
  };
@@ -1,5 +1,23 @@
1
1
  import type { FC } from 'react';
2
2
  import type React from 'react';
3
+ export declare const CONTENT_FORMATS: readonly ["mdx", "md", "markdown", "json", "yaml", "yml", "toml"];
4
+ export type ContentFormat = (typeof CONTENT_FORMATS)[number];
5
+ export type ContentFrontmatterFormat = 'yaml' | 'toml' | 'json';
6
+ export type Parser = {
7
+ type: 'mdx';
8
+ } | {
9
+ type: 'markdown';
10
+ /**
11
+ * Tina will escape entities like `<` and `[` by default. You can choose to turn
12
+ * off all escaping, or specify HTML, so `<div>` will not be turned into `\<div>`
13
+ */
14
+ skipEscaping?: 'all' | 'html' | 'none';
15
+ } | {
16
+ /**
17
+ * Experimental: Returns the native Slate.js document as JSON. Ideal to retain the pure editor content structure.
18
+ */
19
+ type: 'slatejson';
20
+ };
3
21
  type Meta = {
4
22
  active?: boolean;
5
23
  dirty?: boolean;
@@ -107,10 +125,35 @@ export type UIField<Type, List extends boolean> = {
107
125
  * @deprecated use `defaultItem` at the collection level instead
108
126
  */
109
127
  defaultValue?: List extends true ? Type[] : Type;
128
+ /**
129
+ * The color format for the color picker component.
130
+ * Can be 'hex' or 'rgb'.
131
+ */
132
+ colorFormat?: 'hex' | 'rgb';
133
+ /**
134
+ * The widget style for the color picker component.
135
+ * Can be 'sketch' or 'block'.
136
+ */
137
+ widget?: 'sketch' | 'block';
138
+ /**
139
+ * The width of the color picker component.
140
+ * Accepts CSS width values (e.g., '350px').
141
+ */
142
+ width?: string;
143
+ /**
144
+ * Preset colors for the color picker component.
145
+ * An array of color strings (e.g., ['#D0021B', '#F5A623']).
146
+ */
147
+ colors?: string[];
110
148
  };
111
149
  type FieldGeneric<Type, List extends boolean | undefined, ExtraFieldUIProps = {}> = List extends true ? {
112
150
  list: true;
113
151
  ui?: UIField<Type, true> & ExtraFieldUIProps;
152
+ /**
153
+ * Defines where new items will be added in the list.
154
+ * If not specified, defaults to `append`.
155
+ */
156
+ addItemBehavior?: 'append' | 'prepend';
114
157
  } : List extends false ? {
115
158
  list?: false;
116
159
  ui?: UIField<Type, false> & ExtraFieldUIProps;
@@ -150,14 +193,24 @@ type DateFormatProps = {
150
193
  * dateFormat: 'YYYY MM DD'
151
194
  * ```
152
195
  */
153
- dateFormat?: string;
154
- timeFormat?: string;
196
+ dateFormat?: string | boolean;
197
+ timeFormat?: string | boolean;
155
198
  };
156
199
  export type DateTimeField = (FieldGeneric<string, undefined, DateFormatProps> | FieldGeneric<string, true, DateFormatProps> | FieldGeneric<string, false, DateFormatProps>) & BaseField & {
157
200
  type: 'datetime';
158
201
  };
159
202
  export type ImageField = (FieldGeneric<string, undefined> | FieldGeneric<string, true> | FieldGeneric<string, false>) & BaseField & {
160
203
  type: 'image';
204
+ /**
205
+ * A function that returns the upload directory path based on the form values.
206
+ * This is used to organize uploaded images into specific folders.
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * uploadDir: (formValues) => `uploads/${formValues.category}`
211
+ * ```
212
+ */
213
+ uploadDir?: (formValues: Record<string, any>) => string;
161
214
  };
162
215
  type ReferenceFieldOptions = {
163
216
  optionComponent?: OptionComponent;
@@ -185,7 +238,7 @@ export type ReferenceField = (FieldGeneric<string, undefined, ReferenceFieldOpti
185
238
  export type PasswordField = (FieldGeneric<string, undefined> | FieldGeneric<string, false>) & BaseField & {
186
239
  type: 'password';
187
240
  };
188
- type toolbarItemName = 'heading' | 'link' | 'image' | 'quote' | 'ul' | 'ol' | 'code' | 'codeBlock' | 'bold' | 'italic' | 'raw' | 'embed' | 'mermaid';
241
+ type ToolbarOverrideType = 'heading' | 'link' | 'image' | 'quote' | 'ul' | 'ol' | 'code' | 'codeBlock' | 'bold' | 'italic' | 'raw' | 'embed' | 'mermaid' | 'table';
189
242
  type RichTextAst = {
190
243
  type: 'root';
191
244
  children: Record<string, unknown>[];
@@ -198,24 +251,21 @@ export type RichTextField<WithNamespace extends boolean = false> = (FieldGeneric
198
251
  * will be stored as frontmatter
199
252
  */
200
253
  isBody?: boolean;
201
- toolbarOverride?: toolbarItemName[];
254
+ /**@deprecated use overrides.toolbar */
255
+ toolbarOverride?: ToolbarOverrideType[];
202
256
  templates?: RichTextTemplate<WithNamespace>[];
257
+ overrides?: {
258
+ toolbar?: ToolbarOverrideType[];
259
+ /**Default set to true */
260
+ showFloatingToolbar?: boolean;
261
+ };
203
262
  /**
204
263
  * By default, Tina parses markdown with MDX, this is a more strict parser
205
264
  * that allows you to use structured content inside markdown (via `templates`).
206
265
  *
207
266
  * Specify `"markdown"` if you're having problems with Tina parsing your content.
208
267
  */
209
- parser?: {
210
- type: 'markdown';
211
- /**
212
- * Tina will escape entities like `<` and `[` by default. You can choose to turn
213
- * off all escaping, or specify HTML, so `<div>` will not be turned into `\<div>`
214
- */
215
- skipEscaping?: 'all' | 'html' | 'none';
216
- } | {
217
- type: 'mdx';
218
- };
268
+ parser?: Parser;
219
269
  };
220
270
  export type RichTextTemplate<WithNamespace extends boolean = false> = Template<WithNamespace> & {
221
271
  inline?: boolean;
@@ -371,7 +421,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
371
421
  /**
372
422
  * The Schema is used to define the shape of the content.
373
423
  *
374
- * https://tina.io/docs/reference/schema/
424
+ * https://tina.io/docs/r/the-config-file/
375
425
  */
376
426
  schema: Schema;
377
427
  /**
@@ -394,7 +444,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
394
444
  token?: string | null;
395
445
  ui?: {
396
446
  /**
397
- * When using Tina Cloud's branching feature, provide the URL for your given branch
447
+ * When using TinaCloud's branching feature, provide the URL for your given branch
398
448
  *
399
449
  * Eg. If you're deplying to Vercel, and your repo name is 'my-app',
400
450
  * Vercel's preview URL would be based on the branch:
@@ -408,11 +458,27 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
408
458
  * ```
409
459
  * [more info](https://vercel.com/docs/concepts/deployments/generated-urls#url-with-git-branch)
410
460
  */
411
- previewUrl: (context: {
461
+ previewUrl?: (context: {
412
462
  branch: string;
413
463
  }) => {
414
464
  url: string;
415
465
  };
466
+ /**
467
+ * Opt out of update checks - this will prevent the CMS for checking for new versions
468
+ * If true, the CMS will not check for updates.
469
+ * Defaults to false if not specified.
470
+ */
471
+ optOutOfUpdateCheck?: boolean;
472
+ /**
473
+ * Regular expression pattern that folder names must match when creating new folders.
474
+ * Only applies to newly created folders, not existing ones.
475
+ *
476
+ * @example "^[a-z0-9-]+$" - allows lowercase letters, numbers, and hyphens only
477
+ * @example "^[A-Za-z0-9_-]+$" - allows letters, numbers, underscores, and hyphens
478
+ */
479
+ regexValidation?: {
480
+ folderNameRegex?: string;
481
+ };
416
482
  };
417
483
  /**
418
484
  * Configurations for the autogenerated GraphQL HTTP client
@@ -492,7 +558,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
492
558
  } | {
493
559
  /**
494
560
  * Use Git-backed assets for media, these values will
495
- * [Learn more](https://tina.io/docs/reference/media/repo-based/)
561
+ * [Learn more](https://tina.io/docs/r/repo-based-media/)
496
562
  */
497
563
  tina: {
498
564
  /**
@@ -512,6 +578,54 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
512
578
  loadCustomStore?: never;
513
579
  accept?: string | string[];
514
580
  };
581
+ /**
582
+ * Configuration for repository-related UI features.
583
+ *
584
+ * This allows you to configure how the CMS displays repository information
585
+ * and generates links to view file history in your Git provider (e.g., GitHub, GitLab).
586
+ *
587
+ * @example
588
+ *
589
+ * repoProvider: {
590
+ * defaultBranchName: 'main',
591
+ * historyUrl: ({ relativePath, branch }) => ({
592
+ * url: `https://github.com/owner/repo/commits/${branch}/${relativePath}`
593
+ * })
594
+ * }
595
+ * */
596
+ repoProvider?: {
597
+ /**
598
+ * The default branch name to use when in local mode or when no branch is specified.
599
+ * When not in local mode, TinaCMS will use the branch selected in the editor.
600
+ *
601
+ * This is typically your main/master branch name (e.g., "main", "master").
602
+ */
603
+ defaultBranchName?: string;
604
+ /**
605
+ * A function that generates a URL to view the commit history for a specific file.
606
+ *
607
+ * This URL is used to link to your Git provider's history view (e.g., GitHub's commits page).
608
+ * The function receives the file's relative path and current branch, and should return
609
+ * a URL object with the full URL to the history page.
610
+ *
611
+ * @param context - Context object containing file and branch information
612
+ * @param context.relativePath - The relative path of the file from the repository root
613
+ * @param context.branch - The current branch name
614
+ * @returns An object with a `url` property containing the full URL to the history page
615
+ *
616
+ * @example
617
+ *s
618
+ * historyUrl: ({ relativePath, branch }) => ({
619
+ * url: `https://github.com/tinacms/tinacms/commits/${branch}/examples/next-2024/${relativePath}`
620
+ * })
621
+ * */
622
+ historyUrl?: (context: {
623
+ relativePath: string;
624
+ branch: string;
625
+ }) => {
626
+ url: string;
627
+ };
628
+ };
515
629
  search?: ({
516
630
  /**
517
631
  * An instance of a search client like Algolia
@@ -521,7 +635,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
521
635
  } | {
522
636
  searchClient?: never;
523
637
  /**
524
- * Use the Tina Cloud search index
638
+ * Use the TinaCloud search index
525
639
  */
526
640
  tina: {
527
641
  /**
@@ -548,7 +662,7 @@ export interface Config<CMSCallback = undefined, FormifyCallback = undefined, Do
548
662
  maxSearchIndexFieldLength?: number;
549
663
  };
550
664
  /**
551
- * Used to override the default Tina Cloud API URL
665
+ * Used to override the default TinaCloud API URL
552
666
  *
553
667
  * [mostly for internal use only]
554
668
  */
@@ -567,7 +681,7 @@ export interface Schema<WithNamespace extends boolean = false> {
567
681
  /**
568
682
  * Collections represent a type of content (EX, blog post, page, author, etc). We recommend using singular naming in a collection (Ex: use post and not posts).
569
683
  *
570
- * https://tina.io/docs/reference/collections/
684
+ * https://tina.io/docs/r/content-modelling-collections/
571
685
  */
572
686
  collections: Collection<WithNamespace>[];
573
687
  /**
@@ -581,7 +695,7 @@ interface BaseCollection {
581
695
  name: string;
582
696
  path: string;
583
697
  indexes?: IndexType[];
584
- format?: 'json' | 'md' | 'markdown' | 'mdx' | 'yaml' | 'yml' | 'toml';
698
+ format?: ContentFormat;
585
699
  ui?: UICollection;
586
700
  /**
587
701
  * @deprecated - use `ui.defaultItem` on the each `template` instead
@@ -590,7 +704,7 @@ interface BaseCollection {
590
704
  /**
591
705
  * This format will be used to parse the markdown frontmatter
592
706
  */
593
- frontmatterFormat?: 'yaml' | 'toml' | 'json';
707
+ frontmatterFormat?: ContentFrontmatterFormat;
594
708
  /**
595
709
  * The delimiters used to parse the frontmatter.
596
710
  */
@@ -606,7 +720,7 @@ type TemplateCollection<WithNamespace extends boolean = false> = {
606
720
  /**
607
721
  * In most cases, just using fields is enough, however templates can be used when there are multiple variants of the same collection or object. For example in a "page" collection there might be a need for a marketing page template and a content page template, both under the collection "page".
608
722
  *
609
- * https://tina.io/docs/reference/templates/
723
+ * https://tina.io/docs/r/content-modelling-templates/
610
724
  */
611
725
  templates: Template<WithNamespace>[];
612
726
  fields?: undefined;
@@ -615,7 +729,7 @@ type FieldCollection<WithNamespace extends boolean = false> = {
615
729
  /**
616
730
  * Fields define the shape of the content and the user input.
617
731
  *
618
- * https://tina.io/docs/reference/fields/
732
+ * https://tina.io/docs/r/string-fields/
619
733
  */
620
734
  fields: TinaField<WithNamespace>[];
621
735
  templates?: undefined;
@@ -630,6 +744,7 @@ type Document = {
630
744
  relativePath: string;
631
745
  filename: string;
632
746
  extension: string;
747
+ hasReferences?: boolean;
633
748
  };
634
749
  };
635
750
  export interface UICollection<Form = any, CMS = any, TinaForm = any> {
@@ -671,6 +786,7 @@ export interface UICollection<Form = any, CMS = any, TinaForm = any> {
671
786
  allowedActions?: {
672
787
  create?: boolean;
673
788
  delete?: boolean;
789
+ createFolder?: boolean;
674
790
  createNestedFolder?: boolean;
675
791
  };
676
792
  /**
@@ -1 +1,9 @@
1
1
  export declare const normalizePath: (filepath: string) => string;
2
+ /**
3
+ * Returns the given path such that:
4
+ * - The path separator is converted from '\' to '/' if necessary.
5
+ * - Duplicate '/' are removed
6
+ * - Leading and trailing '/' are cleared
7
+ * @param filepath Filepath to convert to its canonical form
8
+ */
9
+ export declare const canonicalPath: (filepath: string) => string;
@@ -1,6 +1,3 @@
1
- /**
2
-
3
- */
4
1
  import { z } from 'zod';
5
2
  import type { TinaField as TinaFieldType } from '../types/index';
6
3
  export declare const TinaFieldZod: z.ZodType<TinaFieldType>;
@@ -1,26 +1,23 @@
1
- /**
2
-
3
- */
4
1
  import { z } from 'zod';
5
2
  export declare const CollectionBaseSchema: z.ZodObject<{
6
3
  label: z.ZodOptional<z.ZodString>;
7
4
  name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
8
5
  path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
9
- format: z.ZodOptional<z.ZodEnum<["json", "md", "markdown", "mdx", "toml", "yaml", "yml"]>>;
6
+ format: z.ZodOptional<z.ZodEnum<["mdx", "md", "markdown", "json", "yaml", "yml", "toml"]>>;
10
7
  isAuthCollection: z.ZodOptional<z.ZodBoolean>;
11
8
  isDetached: z.ZodOptional<z.ZodBoolean>;
12
9
  }, "strip", z.ZodTypeAny, {
13
10
  name?: string;
14
11
  label?: string;
15
12
  path?: string;
16
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
13
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
17
14
  isDetached?: boolean;
18
15
  isAuthCollection?: boolean;
19
16
  }, {
20
17
  name?: string;
21
18
  label?: string;
22
19
  path?: string;
23
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
20
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
24
21
  isDetached?: boolean;
25
22
  isAuthCollection?: boolean;
26
23
  }>;
@@ -29,7 +26,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
29
26
  label: z.ZodOptional<z.ZodString>;
30
27
  name: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
31
28
  path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
32
- format: z.ZodOptional<z.ZodEnum<["json", "md", "markdown", "mdx", "toml", "yaml", "yml"]>>;
29
+ format: z.ZodOptional<z.ZodEnum<["mdx", "md", "markdown", "json", "yaml", "yml", "toml"]>>;
33
30
  isAuthCollection: z.ZodOptional<z.ZodBoolean>;
34
31
  isDetached: z.ZodOptional<z.ZodBoolean>;
35
32
  }, {
@@ -73,7 +70,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
73
70
  fields?: import("..").TinaField[];
74
71
  label?: string;
75
72
  path?: string;
76
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
73
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
77
74
  isDetached?: boolean;
78
75
  isAuthCollection?: boolean;
79
76
  }, {
@@ -86,7 +83,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
86
83
  fields?: import("..").TinaField[];
87
84
  label?: string;
88
85
  path?: string;
89
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
86
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
90
87
  isDetached?: boolean;
91
88
  isAuthCollection?: boolean;
92
89
  }>, {
@@ -99,7 +96,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
99
96
  fields?: import("..").TinaField[];
100
97
  label?: string;
101
98
  path?: string;
102
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
99
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
103
100
  isDetached?: boolean;
104
101
  isAuthCollection?: boolean;
105
102
  }, {
@@ -112,7 +109,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
112
109
  fields?: import("..").TinaField[];
113
110
  label?: string;
114
111
  path?: string;
115
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
112
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
116
113
  isDetached?: boolean;
117
114
  isAuthCollection?: boolean;
118
115
  }>, "many">;
@@ -190,6 +187,29 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
190
187
  searchClient?: any;
191
188
  indexBatchSize?: number;
192
189
  }>>;
190
+ ui: z.ZodOptional<z.ZodObject<{
191
+ previewUrl: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
192
+ optOutOfUpdateCheck: z.ZodOptional<z.ZodBoolean>;
193
+ regexValidation: z.ZodOptional<z.ZodObject<{
194
+ folderNameRegex: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
195
+ }, "strip", z.ZodTypeAny, {
196
+ folderNameRegex?: string;
197
+ }, {
198
+ folderNameRegex?: string;
199
+ }>>;
200
+ }, "strip", z.ZodTypeAny, {
201
+ previewUrl?: (...args: unknown[]) => unknown;
202
+ optOutOfUpdateCheck?: boolean;
203
+ regexValidation?: {
204
+ folderNameRegex?: string;
205
+ };
206
+ }, {
207
+ previewUrl?: (...args: unknown[]) => unknown;
208
+ optOutOfUpdateCheck?: boolean;
209
+ regexValidation?: {
210
+ folderNameRegex?: string;
211
+ };
212
+ }>>;
193
213
  }, "strip", z.ZodTypeAny, {
194
214
  search?: {
195
215
  maxSearchIndexFieldLength?: number;
@@ -201,6 +221,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
201
221
  searchClient?: any;
202
222
  indexBatchSize?: number;
203
223
  };
224
+ ui?: {
225
+ previewUrl?: (...args: unknown[]) => unknown;
226
+ optOutOfUpdateCheck?: boolean;
227
+ regexValidation?: {
228
+ folderNameRegex?: string;
229
+ };
230
+ };
204
231
  client?: {
205
232
  referenceDepth?: number;
206
233
  };
@@ -223,6 +250,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
223
250
  searchClient?: any;
224
251
  indexBatchSize?: number;
225
252
  };
253
+ ui?: {
254
+ previewUrl?: (...args: unknown[]) => unknown;
255
+ optOutOfUpdateCheck?: boolean;
256
+ regexValidation?: {
257
+ folderNameRegex?: string;
258
+ };
259
+ };
226
260
  client?: {
227
261
  referenceDepth?: number;
228
262
  };
@@ -246,7 +280,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
246
280
  fields?: import("..").TinaField[];
247
281
  label?: string;
248
282
  path?: string;
249
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
283
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
250
284
  isDetached?: boolean;
251
285
  isAuthCollection?: boolean;
252
286
  }[];
@@ -261,6 +295,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
261
295
  searchClient?: any;
262
296
  indexBatchSize?: number;
263
297
  };
298
+ ui?: {
299
+ previewUrl?: (...args: unknown[]) => unknown;
300
+ optOutOfUpdateCheck?: boolean;
301
+ regexValidation?: {
302
+ folderNameRegex?: string;
303
+ };
304
+ };
264
305
  client?: {
265
306
  referenceDepth?: number;
266
307
  };
@@ -284,7 +325,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
284
325
  fields?: import("..").TinaField[];
285
326
  label?: string;
286
327
  path?: string;
287
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
328
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
288
329
  isDetached?: boolean;
289
330
  isAuthCollection?: boolean;
290
331
  }[];
@@ -299,6 +340,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
299
340
  searchClient?: any;
300
341
  indexBatchSize?: number;
301
342
  };
343
+ ui?: {
344
+ previewUrl?: (...args: unknown[]) => unknown;
345
+ optOutOfUpdateCheck?: boolean;
346
+ regexValidation?: {
347
+ folderNameRegex?: string;
348
+ };
349
+ };
302
350
  client?: {
303
351
  referenceDepth?: number;
304
352
  };
@@ -322,7 +370,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
322
370
  fields?: import("..").TinaField[];
323
371
  label?: string;
324
372
  path?: string;
325
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
373
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
326
374
  isDetached?: boolean;
327
375
  isAuthCollection?: boolean;
328
376
  }[];
@@ -337,6 +385,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
337
385
  searchClient?: any;
338
386
  indexBatchSize?: number;
339
387
  };
388
+ ui?: {
389
+ previewUrl?: (...args: unknown[]) => unknown;
390
+ optOutOfUpdateCheck?: boolean;
391
+ regexValidation?: {
392
+ folderNameRegex?: string;
393
+ };
394
+ };
340
395
  client?: {
341
396
  referenceDepth?: number;
342
397
  };
@@ -360,7 +415,7 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
360
415
  fields?: import("..").TinaField[];
361
416
  label?: string;
362
417
  path?: string;
363
- format?: "markdown" | "mdx" | "json" | "md" | "yaml" | "yml" | "toml";
418
+ format?: "mdx" | "md" | "markdown" | "json" | "yaml" | "yml" | "toml";
364
419
  isDetached?: boolean;
365
420
  isAuthCollection?: boolean;
366
421
  }[];
@@ -375,6 +430,13 @@ export declare const TinaCloudSchemaZod: z.ZodEffects<z.ZodObject<{
375
430
  searchClient?: any;
376
431
  indexBatchSize?: number;
377
432
  };
433
+ ui?: {
434
+ previewUrl?: (...args: unknown[]) => unknown;
435
+ optOutOfUpdateCheck?: boolean;
436
+ regexValidation?: {
437
+ folderNameRegex?: string;
438
+ };
439
+ };
378
440
  client?: {
379
441
  referenceDepth?: number;
380
442
  };
@@ -77,6 +77,29 @@ export declare const tinaConfigZod: z.ZodObject<{
77
77
  searchClient?: any;
78
78
  indexBatchSize?: number;
79
79
  }>>;
80
+ ui: z.ZodOptional<z.ZodObject<{
81
+ previewUrl: z.ZodOptional<z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodUnknown>>;
82
+ optOutOfUpdateCheck: z.ZodOptional<z.ZodBoolean>;
83
+ regexValidation: z.ZodOptional<z.ZodObject<{
84
+ folderNameRegex: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
85
+ }, "strip", z.ZodTypeAny, {
86
+ folderNameRegex?: string;
87
+ }, {
88
+ folderNameRegex?: string;
89
+ }>>;
90
+ }, "strip", z.ZodTypeAny, {
91
+ previewUrl?: (...args: unknown[]) => unknown;
92
+ optOutOfUpdateCheck?: boolean;
93
+ regexValidation?: {
94
+ folderNameRegex?: string;
95
+ };
96
+ }, {
97
+ previewUrl?: (...args: unknown[]) => unknown;
98
+ optOutOfUpdateCheck?: boolean;
99
+ regexValidation?: {
100
+ folderNameRegex?: string;
101
+ };
102
+ }>>;
80
103
  }, "strip", z.ZodTypeAny, {
81
104
  search?: {
82
105
  maxSearchIndexFieldLength?: number;
@@ -88,6 +111,13 @@ export declare const tinaConfigZod: z.ZodObject<{
88
111
  searchClient?: any;
89
112
  indexBatchSize?: number;
90
113
  };
114
+ ui?: {
115
+ previewUrl?: (...args: unknown[]) => unknown;
116
+ optOutOfUpdateCheck?: boolean;
117
+ regexValidation?: {
118
+ folderNameRegex?: string;
119
+ };
120
+ };
91
121
  client?: {
92
122
  referenceDepth?: number;
93
123
  };
@@ -110,6 +140,13 @@ export declare const tinaConfigZod: z.ZodObject<{
110
140
  searchClient?: any;
111
141
  indexBatchSize?: number;
112
142
  };
143
+ ui?: {
144
+ previewUrl?: (...args: unknown[]) => unknown;
145
+ optOutOfUpdateCheck?: boolean;
146
+ regexValidation?: {
147
+ folderNameRegex?: string;
148
+ };
149
+ };
113
150
  client?: {
114
151
  referenceDepth?: number;
115
152
  };
@@ -0,0 +1,3 @@
1
+ export declare const duplicateFieldErrorMessage: (fields: string) => string;
2
+ export declare const duplicateTemplateErrorMessage: (templates: string) => string;
3
+ export declare const duplicateCollectionErrorMessage: (collection: string) => string;