UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 21.5 kB
{"version":3,"file":"collection-fields.mjs","names":[],"sources":["../../src/schemas/collection-fields.ts"],"sourcesContent":["import z from \"zod\";\nimport { resolvedAdminCopySchema } from \"../libs/i18n/index.js\";\n\nexport const fieldInputSchema = z.object({\n\tkey: z.string(),\n\ttype: z.union([\n\t\tz.literal(\"text\"),\n\t\tz.literal(\"rich-text\"),\n\t\tz.literal(\"media\"),\n\t\tz.literal(\"number\"),\n\t\tz.literal(\"range\"),\n\t\tz.literal(\"checkbox\"),\n\t\tz.literal(\"select\"),\n\t\tz.literal(\"textarea\"),\n\t\tz.literal(\"json\"),\n\t\tz.literal(\"code\"),\n\t\tz.literal(\"color\"),\n\t\tz.literal(\"datetime\"),\n\t\tz.literal(\"link\"),\n\t\tz.literal(\"repeater\"),\n\t\tz.literal(\"user\"),\n\t\tz.literal(\"relation\"),\n\t]),\n\ttranslations: z.record(z.string(), z.any()).optional(),\n\tvalue: z.any().optional(),\n\n\tget groups() {\n\t\treturn z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tref: z.string(),\n\t\t\t\t\torder: z.number().optional(),\n\t\t\t\t\topen: z.boolean().optional(),\n\t\t\t\t\tget fields() {\n\t\t\t\t\t\treturn z.array(fieldInputSchema);\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional();\n\t},\n});\nexport type FieldInputSchema = z.infer<typeof fieldInputSchema>;\n\nexport const fieldConfigSchema = z.object({\n\tkey: z.string().meta({\n\t\tdescription: \"Unique identifier for the field\",\n\t\texample: \"pageTitle\",\n\t}),\n\ttype: z.string().meta({\n\t\tdescription: \"Type of the field (text, checkbox, media, etc.)\",\n\t\texample: \"text\",\n\t}),\n\tcollection: z\n\t\t.union([z.string(), z.array(z.string())])\n\t\t.nullable()\n\t\t.meta({\n\t\t\tdescription: \"Collection key for relation fields\",\n\t\t\texample: [\"page\", \"blog\"],\n\t\t})\n\t\t.optional(),\n\tdetails: z.object({\n\t\tlabel: resolvedAdminCopySchema\n\t\t\t.meta({\n\t\t\t\tdescription: \"Display label for the field\",\n\t\t\t\texample: {\n\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\tkey: \"collections.page.fields.pageTitle.label\",\n\t\t\t\t\tdefaultMessage: \"Page title\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.optional(),\n\t\tsummary: resolvedAdminCopySchema\n\t\t\t.meta({\n\t\t\t\tdescription: \"Description text for the field\",\n\t\t\t\texample: {\n\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\tkey: \"collections.page.fields.pageTitle.summary\",\n\t\t\t\t\tdefaultMessage: \"The title of the page.\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.optional(),\n\t\tplaceholder: resolvedAdminCopySchema\n\t\t\t.meta({\n\t\t\t\tdescription: \"Placeholder text for input fields\",\n\t\t\t\texample: {\n\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\tkey: \"collections.page.fields.pageTitle.placeholder\",\n\t\t\t\t\tdefaultMessage: \"Enter page title...\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.optional(),\n\t\ttrue: resolvedAdminCopySchema\n\t\t\t.meta({\n\t\t\t\tdescription: \"Label for true value in boolean fields\",\n\t\t\t\texample: {\n\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\tkey: \"collections.page.fields.featured.trueLabel\",\n\t\t\t\t\tdefaultMessage: \"Yes\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.optional(),\n\t\tfalse: resolvedAdminCopySchema\n\t\t\t.meta({\n\t\t\t\tdescription: \"Label for false value in boolean fields\",\n\t\t\t\texample: {\n\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\tkey: \"collections.page.fields.featured.falseLabel\",\n\t\t\t\t\tdefaultMessage: \"No\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.optional(),\n\t}),\n\tai: z\n\t\t.object({\n\t\t\tenabled: z.boolean().meta({\n\t\t\t\tdescription: \"Whether AI generation is enabled for this field\",\n\t\t\t\texample: true,\n\t\t\t}),\n\t\t\tguidance: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tkey: z.string().meta({\n\t\t\t\t\t\tdescription: \"Unique key for the guidance option\",\n\t\t\t\t\t\texample: \"improve\",\n\t\t\t\t\t}),\n\t\t\t\t\tlabel: resolvedAdminCopySchema.meta({\n\t\t\t\t\t\tdescription: \"Display label for the guidance option\",\n\t\t\t\t\t\texample: {\n\t\t\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\t\t\tkey: \"core.ai.guidance.improve.label\",\n\t\t\t\t\t\t\tdefaultMessage: \"Improve\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}),\n\t\t\t),\n\t\t})\n\t\t.optional(),\n\tlocalized: z\n\t\t.boolean()\n\t\t.meta({\n\t\t\tdescription: \"Whether the field supports localized content\",\n\t\t\texample: true,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\ttime: z\n\t\t.boolean()\n\t\t.meta({\n\t\t\tdescription: \"Whether datetime fields include time selection\",\n\t\t\texample: true,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tmultiple: z\n\t\t.boolean()\n\t\t.meta({\n\t\t\tdescription:\n\t\t\t\t\"Whether relation fields can store more than one related item\",\n\t\t\texample: true,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tthumbs: z\n\t\t.union([z.literal(1), z.literal(2)])\n\t\t.meta({\n\t\t\tdescription: \"Number of slider thumbs used by range fields\",\n\t\t\texample: 2,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tmin: z\n\t\t.number()\n\t\t.meta({\n\t\t\tdescription: \"Minimum value for range fields\",\n\t\t\texample: 0,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tmax: z\n\t\t.number()\n\t\t.meta({\n\t\t\tdescription: \"Maximum value for range fields\",\n\t\t\texample: 100,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tstep: z\n\t\t.number()\n\t\t.meta({\n\t\t\tdescription: \"Step size for range fields\",\n\t\t\texample: 0.5,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tindex: z\n\t\t.literal(true)\n\t\t.meta({\n\t\t\tdescription: \"Whether Lucid generates an index for the field\",\n\t\t\texample: true,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tdefault: z\n\t\t.any()\n\t\t.meta({\n\t\t\tdescription: \"Default value for the field\",\n\t\t\texample: \"Welcome to our website\",\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\toutput: z\n\t\t.enum([\"nested\", \"inline\"])\n\t\t.meta({\n\t\t\tdescription:\n\t\t\t\t\"How section/collapsible fields shape their children in client document responses\",\n\t\t\texample: \"nested\",\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tdefaultOpen: z\n\t\t.boolean()\n\t\t.meta({\n\t\t\tdescription: \"Whether a collapsible renders expanded by default\",\n\t\t\texample: false,\n\t\t})\n\t\t.nullable()\n\t\t.optional(),\n\tui: z\n\t\t.object({\n\t\t\thidden: z\n\t\t\t\t.boolean()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Whether the field is hidden in the UI\",\n\t\t\t\t\texample: false,\n\t\t\t\t})\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t\twidth: z\n\t\t\t\t.union([\n\t\t\t\t\tz.literal(12),\n\t\t\t\t\tz.literal(8),\n\t\t\t\t\tz.literal(6),\n\t\t\t\t\tz.literal(4),\n\t\t\t\t\tz.literal(3),\n\t\t\t\t])\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Admin layout width on a fixed 12-column grid\",\n\t\t\t\t\texample: 6,\n\t\t\t\t})\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t\tdisabled: z\n\t\t\t\t.boolean()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Whether the field is disabled for editing\",\n\t\t\t\t\texample: false,\n\t\t\t\t})\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t\tcondition: z\n\t\t\t\t.object({\n\t\t\t\t\taction: z\n\t\t\t\t\t\t.enum([\"show\", \"hide\"])\n\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"Whether matching the condition shows or hides the field\",\n\t\t\t\t\t\t\texample: \"show\",\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.optional(),\n\t\t\t\t\ttranslationScope: z\n\t\t\t\t\t\t.enum([\"same\", \"default\", \"any\"])\n\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"How localized target field values are resolved while evaluating the condition\",\n\t\t\t\t\t\t\texample: \"same\",\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.optional(),\n\t\t\t\t\tgroups: z\n\t\t\t\t\t\t.array(\n\t\t\t\t\t\t\tz.array(\n\t\t\t\t\t\t\t\tz.object({\n\t\t\t\t\t\t\t\t\tfield: z.string().meta({\n\t\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t\t\"Key of the sibling or ancestor-scope field the rule evaluates against\",\n\t\t\t\t\t\t\t\t\t\texample: \"menuType\",\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\toperator: z\n\t\t\t\t\t\t\t\t\t\t.enum([\n\t\t\t\t\t\t\t\t\t\t\t\"equals\",\n\t\t\t\t\t\t\t\t\t\t\t\"notEquals\",\n\t\t\t\t\t\t\t\t\t\t\t\"isEmpty\",\n\t\t\t\t\t\t\t\t\t\t\t\"isNotEmpty\",\n\t\t\t\t\t\t\t\t\t\t\t\"contains\",\n\t\t\t\t\t\t\t\t\t\t\t\"notContains\",\n\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\t\t\t\t\tdescription: \"Comparison operator for the rule\",\n\t\t\t\t\t\t\t\t\t\t\texample: \"equals\",\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\tvalue: z\n\t\t\t\t\t\t\t\t\t\t.union([z.string(), z.number(), z.boolean(), z.null()])\n\t\t\t\t\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\t\t\t\t\tdescription: \"Value the rule compares against\",\n\t\t\t\t\t\t\t\t\t\t\texample: \"docs\",\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t.optional(),\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.meta({\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"Condition rule groups. Groups are OR'd, rules within a group are AND'd\",\n\t\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t})\n\t\t.optional(),\n\tvalidation: z\n\t\t.object({\n\t\t\trequired: z\n\t\t\t\t.boolean()\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Whether the field is required\",\n\t\t\t\t\texample: true,\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tzod: z\n\t\t\t\t.any()\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Custom Zod validation schema for the field\",\n\t\t\t\t\texample: \"z.string().min(2).max(128)\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\ttype: z\n\t\t\t\t.string()\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Media type constraint for media fields\",\n\t\t\t\t\texample: \"image\",\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tmaxGroups: z\n\t\t\t\t.number()\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Maximum groups allowed in a repeater\",\n\t\t\t\t\texample: 3,\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tminGroups: z\n\t\t\t\t.number()\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Minimum groups required in a repeater\",\n\t\t\t\t\texample: 1,\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\textensions: z\n\t\t\t\t.array(z.string())\n\t\t\t\t.nullable()\n\t\t\t\t.meta({\n\t\t\t\t\tdescription: \"Allowed file extensions for media fields\",\n\t\t\t\t\texample: [\"jpg\", \"png\", \"webp\"],\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\twidth: z\n\t\t\t\t.object({\n\t\t\t\t\tmin: z.number().nullable().meta({\n\t\t\t\t\t\tdescription: \"Minimum width for media\",\n\t\t\t\t\t\texample: 800,\n\t\t\t\t\t}),\n\t\t\t\t\tmax: z.number().nullable().meta({\n\t\t\t\t\t\tdescription: \"Maximum width for media\",\n\t\t\t\t\t\texample: 1920,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t\t.optional()\n\t\t\t\t.nullable(),\n\t\t\theight: z\n\t\t\t\t.object({\n\t\t\t\t\tmin: z.number().nullable().meta({\n\t\t\t\t\t\tdescription: \"Minimum height for media\",\n\t\t\t\t\t\texample: 600,\n\t\t\t\t\t}),\n\t\t\t\t\tmax: z.number().nullable().meta({\n\t\t\t\t\t\tdescription: \"Maximum height for media\",\n\t\t\t\t\t\texample: 1080,\n\t\t\t\t\t}),\n\t\t\t\t})\n\t\t\t\t.optional()\n\t\t\t\t.nullable(),\n\t\t})\n\t\t.optional(),\n\tfields: z\n\t\t.any()\n\t\t.meta({\n\t\t\tdescription: \"Nested fields for repeater or tab field types\",\n\t\t\texample: [],\n\t\t})\n\t\t.optional(),\n\toptions: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tlabel: resolvedAdminCopySchema.meta({\n\t\t\t\t\tdescription: \"Display label for the option\",\n\t\t\t\t\texample: {\n\t\t\t\t\t\ttype: \"lucid.copy\",\n\t\t\t\t\t\tscope: \"admin\",\n\t\t\t\t\t\tkey: \"collections.page.fields.status.options.draft.label\",\n\t\t\t\t\t\tdefaultMessage: \"Draft\",\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tvalue: z.string().meta({\n\t\t\t\t\tdescription: \"Value of the option when selected\",\n\t\t\t\t\texample: \"option_a\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t)\n\t\t.nullable()\n\t\t.meta({\n\t\t\tdescription: \"Options for select field types\",\n\t\t\texample: [{ label: { en: \"Option A\" }, value: \"option_a\" }],\n\t\t})\n\t\t.optional(),\n\tpresets: z\n\t\t.array(z.string())\n\t\t.nullable()\n\t\t.meta({\n\t\t\tdescription: \"Preset values for color fields\",\n\t\t\texample: [\"#ff0000\", \"#00ff00\", \"#0000ff\"],\n\t\t})\n\t\t.optional(),\n\tlanguages: z\n\t\t.array(z.string())\n\t\t.nullable()\n\t\t.meta({\n\t\t\tdescription: \"Language options for code fields\",\n\t\t\texample: [\"javascript\", \"typescript\", \"css\"],\n\t\t})\n\t\t.optional(),\n});\n\nexport const groupResponseBaseSchema = z.object({\n\tref: z.string().meta({\n\t\tdescription: \"Unique reference for this field group\",\n\t\texample: \"3243243\",\n\t}),\n\torder: z.number().meta({\n\t\tdescription: \"The order/position of this group in its parent\",\n\t\texample: 0,\n\t}),\n\topen: z.boolean().meta({\n\t\tdescription: \"Whether this group is expanded in the UI\",\n\t\texample: true,\n\t}),\n});\nexport const groupResponseSchema = groupResponseBaseSchema.extend({\n\tget fields() {\n\t\treturn z.array(z.any());\n\t},\n});\nexport const groupClientResponseSchema = groupResponseBaseSchema.extend({\n\tget fields() {\n\t\treturn z.record(z.any(), z.any());\n\t},\n});\n\nexport const fieldResponseBaseSchema = z.object({\n\tkey: z.string().meta({\n\t\tdescription: \"The fields key\",\n\t\texample: \"pageTitle\",\n\t}),\n\ttype: z.string().meta({\n\t\tdescription: \"The type of field (e.g., text, number, media)\",\n\t\texample: \"text\",\n\t}),\n\tgroupRef: z\n\t\t.string()\n\t\t.meta({\n\t\t\tdescription:\n\t\t\t\t\"Reference to the group this field belongs to, if applicable\",\n\t\t\texample: \"3243243\",\n\t\t})\n\t\t.optional(),\n\ttranslations: z\n\t\t.record(z.any(), z.any())\n\t\t.meta({\n\t\t\tdescription: \"Translations of the field value for different locales\",\n\t\t\texample: {\n\t\t\t\ten: \"Welcome to our website\",\n\t\t\t\tfr: \"Bienvenue sur notre site web\",\n\t\t\t},\n\t\t})\n\t\t.optional(),\n\tvalue: z\n\t\t.any()\n\t\t.meta({\n\t\t\tdescription: \"The value of the field\",\n\t\t\texample: \"Welcome to our website\",\n\t\t})\n\t\t.optional(),\n});\nexport const fieldResponseSchema = fieldResponseBaseSchema.extend({\n\tget groups() {\n\t\treturn z.array(groupResponseSchema);\n\t},\n});\nexport const fieldClientResponseSchema = fieldResponseBaseSchema.extend({\n\tget groups() {\n\t\treturn z.array(groupClientResponseSchema);\n\t},\n});\n"],"mappings":"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"}