import { I as ImageConfig, C as CollectionConfig, e as SchemaField } from './config-CWvboaLE.js'; /** * @fileoverview Field type definitions for the Fields API * * This module defines the FieldDefinition interface and per-field-type * config interfaces for the builder pattern API. * * @module @writenex/astro/fields/types */ type FieldKind = "text" | "slug" | "url" | "number" | "integer" | "select" | "multiselect" | "checkbox" | "date" | "datetime" | "image" | "file" | "object" | "array" | "blocks" | "relationship" | "path-reference" | "markdoc" | "mdx" | "conditional" | "child" | "cloud-image" | "empty" | "empty-content" | "empty-document" | "ignored"; interface ValidationOptions { isRequired?: boolean; min?: number; max?: number; minLength?: number; maxLength?: number; pattern?: string; patternDescription?: string; } interface BaseFieldConfig { label?: string; description?: string; validation?: ValidationOptions; defaultValue?: unknown; } interface TextFieldConfig extends BaseFieldConfig { multiline?: boolean; placeholder?: string; } interface SlugFieldConfig extends BaseFieldConfig { name?: { label?: string; placeholder?: string; }; pathname?: { label?: string; placeholder?: string; }; } interface UrlFieldConfig extends BaseFieldConfig { placeholder?: string; } interface NumberFieldConfig extends BaseFieldConfig { placeholder?: number; } interface IntegerFieldConfig extends BaseFieldConfig { placeholder?: number; } interface SelectFieldConfig extends BaseFieldConfig { options: string[]; defaultValue?: string; } interface MultiselectFieldConfig extends BaseFieldConfig { options: string[]; defaultValue?: string[]; } interface CheckboxFieldConfig extends BaseFieldConfig { defaultValue?: boolean; } interface DateFieldConfig extends BaseFieldConfig { defaultValue?: string; } interface DatetimeFieldConfig extends BaseFieldConfig { defaultValue?: string; } interface ImageFieldConfig extends BaseFieldConfig { directory?: string; publicPath?: string; } interface FileFieldConfig extends BaseFieldConfig { directory?: string; publicPath?: string; } interface ObjectFieldConfig extends BaseFieldConfig { fields: Record; } interface ArrayFieldConfig extends BaseFieldConfig { itemField: FieldDefinition; itemLabel?: string; } interface BlocksFieldConfig extends BaseFieldConfig { blockTypes: Record; itemLabel?: string; } interface RelationshipFieldConfig extends BaseFieldConfig { collection: string; } interface PathReferenceFieldConfig extends BaseFieldConfig { contentTypes?: string[]; } interface MarkdocFieldConfig extends BaseFieldConfig { } interface MdxFieldConfig extends BaseFieldConfig { } interface ConditionalFieldConfig extends BaseFieldConfig { matchField: string; matchValue: unknown; showField: FieldDefinition; } interface ChildFieldConfig extends BaseFieldConfig { } interface CloudImageFieldConfig extends BaseFieldConfig { provider?: string; } type FieldDefinition = ({ fieldKind: "text"; } & TextFieldConfig) | ({ fieldKind: "slug"; } & SlugFieldConfig) | ({ fieldKind: "url"; } & UrlFieldConfig) | ({ fieldKind: "number"; } & NumberFieldConfig) | ({ fieldKind: "integer"; } & IntegerFieldConfig) | ({ fieldKind: "select"; } & SelectFieldConfig) | ({ fieldKind: "multiselect"; } & MultiselectFieldConfig) | ({ fieldKind: "checkbox"; } & CheckboxFieldConfig) | ({ fieldKind: "date"; } & DateFieldConfig) | ({ fieldKind: "datetime"; } & DatetimeFieldConfig) | ({ fieldKind: "image"; } & ImageFieldConfig) | ({ fieldKind: "file"; } & FileFieldConfig) | ({ fieldKind: "object"; } & ObjectFieldConfig) | ({ fieldKind: "array"; } & ArrayFieldConfig) | ({ fieldKind: "blocks"; } & BlocksFieldConfig) | ({ fieldKind: "relationship"; } & RelationshipFieldConfig) | ({ fieldKind: "path-reference"; } & PathReferenceFieldConfig) | ({ fieldKind: "markdoc"; } & MarkdocFieldConfig) | ({ fieldKind: "mdx"; } & MdxFieldConfig) | ({ fieldKind: "conditional"; } & ConditionalFieldConfig) | ({ fieldKind: "child"; } & ChildFieldConfig) | ({ fieldKind: "cloud-image"; } & CloudImageFieldConfig) | ({ fieldKind: "empty"; } & BaseFieldConfig) | ({ fieldKind: "empty-content"; } & BaseFieldConfig) | ({ fieldKind: "empty-document"; } & BaseFieldConfig) | ({ fieldKind: "ignored"; } & BaseFieldConfig); interface CollectionSchemaConfig { name: string; path: string; filePattern?: string; previewUrl?: string; schema: Record; images?: ImageConfig; } interface SingletonSchemaConfig { name: string; path: string; previewUrl?: string; schema: Record; images?: ImageConfig; } declare function collection(config: CollectionSchemaConfig): CollectionConfig; declare function singleton(config: SingletonSchemaConfig): { name: string; path: string; previewUrl?: string; schema: Record; images?: ImageConfig; }; /** * @fileoverview Fields builder API for @writenex/astro * * This module provides a TypeScript-first builder pattern for defining * content schema fields. Each field type is a method on the `fields` object. * * @module @writenex/astro/fields/fields */ declare const fields: { text(config?: TextFieldConfig): FieldDefinition; slug(config?: SlugFieldConfig): FieldDefinition; url(config?: UrlFieldConfig): FieldDefinition; number(config?: NumberFieldConfig): FieldDefinition; integer(config?: IntegerFieldConfig): FieldDefinition; select(config: SelectFieldConfig): FieldDefinition; multiselect(config: MultiselectFieldConfig): FieldDefinition; checkbox(config?: CheckboxFieldConfig): FieldDefinition; date(config?: DateFieldConfig): FieldDefinition; datetime(config?: DatetimeFieldConfig): FieldDefinition; image(config?: ImageFieldConfig): FieldDefinition; file(config?: FileFieldConfig): FieldDefinition; object(config: ObjectFieldConfig): FieldDefinition; array(config: ArrayFieldConfig): FieldDefinition; blocks(config: BlocksFieldConfig): FieldDefinition; relationship(config: RelationshipFieldConfig): FieldDefinition; pathReference(config?: PathReferenceFieldConfig): FieldDefinition; markdoc(config?: MarkdocFieldConfig): FieldDefinition; mdx(config?: MdxFieldConfig): FieldDefinition; conditional(config: ConditionalFieldConfig): FieldDefinition; child(config?: ChildFieldConfig): FieldDefinition; cloudImage(config?: CloudImageFieldConfig): FieldDefinition; empty(config?: BaseFieldConfig): FieldDefinition; emptyContent(config?: BaseFieldConfig): FieldDefinition; emptyDocument(config?: BaseFieldConfig): FieldDefinition; ignored(config?: BaseFieldConfig): FieldDefinition; }; type Fields = typeof fields; export { type ArrayFieldConfig as A, type BaseFieldConfig as B, type CheckboxFieldConfig as C, type DateFieldConfig as D, type FieldDefinition as F, type ImageFieldConfig as I, type MarkdocFieldConfig as M, type NumberFieldConfig as N, type ObjectFieldConfig as O, type PathReferenceFieldConfig as P, type RelationshipFieldConfig as R, type SelectFieldConfig as S, type TextFieldConfig as T, type UrlFieldConfig as U, type ValidationOptions as V, type BlocksFieldConfig as a, type ChildFieldConfig as b, type CloudImageFieldConfig as c, type CollectionSchemaConfig as d, type ConditionalFieldConfig as e, type DatetimeFieldConfig as f, type FieldKind as g, type Fields as h, type FileFieldConfig as i, type IntegerFieldConfig as j, type MdxFieldConfig as k, type MultiselectFieldConfig as l, type SingletonSchemaConfig as m, type SlugFieldConfig as n, collection as o, fields as p, singleton as s };