@panneau/protocol 5.0.0-alpha.0 → 5.0.0-alpha.2

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/README.md +13 -8
  2. package/dist/conformance/index.d.ts.map +1 -1
  3. package/dist/conformance/index.js +27 -0
  4. package/dist/conformance/index.js.map +1 -1
  5. package/dist/constants.d.ts +21 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +73 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/index.d.ts +3 -8
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +17 -13
  12. package/dist/mock/example.d.ts.map +1 -1
  13. package/dist/mock/example.js +4 -0
  14. package/dist/mock/example.js.map +1 -1
  15. package/dist/mock/index.d.ts.map +1 -1
  16. package/dist/mock/index.js +5 -1
  17. package/dist/mock/index.js.map +1 -1
  18. package/dist/openapi.d.ts +2 -0
  19. package/dist/openapi.d.ts.map +1 -1
  20. package/dist/openapi.js +13 -2
  21. package/dist/openapi.js.map +1 -1
  22. package/dist/problem.d.ts +7 -0
  23. package/dist/problem.d.ts.map +1 -0
  24. package/dist/problem.js +22 -0
  25. package/dist/problem.js.map +1 -0
  26. package/dist/query.d.ts +26 -2
  27. package/dist/query.d.ts.map +1 -1
  28. package/dist/query.js +37 -6
  29. package/dist/query.js.map +1 -1
  30. package/dist/rules.d.ts.map +1 -1
  31. package/dist/rules.js +1 -1
  32. package/dist/rules.js.map +1 -1
  33. package/dist/runtime/index.d.ts +11 -0
  34. package/dist/runtime/index.d.ts.map +1 -0
  35. package/dist/runtime/index.js +10 -0
  36. package/dist/schemas/action.d.ts +0 -3
  37. package/dist/schemas/action.d.ts.map +1 -1
  38. package/dist/schemas/action.js +1 -11
  39. package/dist/schemas/action.js.map +1 -1
  40. package/dist/schemas/api.d.ts.map +1 -1
  41. package/dist/schemas/api.js +1 -1
  42. package/dist/schemas/api.js.map +1 -1
  43. package/dist/schemas/boot.d.ts +0 -5
  44. package/dist/schemas/boot.d.ts.map +1 -1
  45. package/dist/schemas/boot.js +1 -6
  46. package/dist/schemas/boot.js.map +1 -1
  47. package/dist/schemas/definition.d.ts +54 -1
  48. package/dist/schemas/definition.d.ts.map +1 -1
  49. package/dist/schemas/definition.js +2 -5
  50. package/dist/schemas/definition.js.map +1 -1
  51. package/dist/schemas/field.d.ts +0 -6
  52. package/dist/schemas/field.d.ts.map +1 -1
  53. package/dist/schemas/field.js +2 -35
  54. package/dist/schemas/field.js.map +1 -1
  55. package/dist/schemas/index.d.ts +224 -1
  56. package/dist/schemas/index.d.ts.map +1 -1
  57. package/dist/schemas/index.js +15 -6
  58. package/dist/schemas/index.js.map +1 -1
  59. package/dist/schemas/layout.d.ts +0 -3
  60. package/dist/schemas/layout.d.ts.map +1 -1
  61. package/dist/schemas/layout.js +1 -13
  62. package/dist/schemas/layout.js.map +1 -1
  63. package/dist/schemas/list.d.ts +0 -3
  64. package/dist/schemas/list.d.ts.map +1 -1
  65. package/dist/schemas/list.js +2 -9
  66. package/dist/schemas/list.js.map +1 -1
  67. package/dist/schemas/theme.d.ts +179 -0
  68. package/dist/schemas/theme.d.ts.map +1 -0
  69. package/dist/schemas/theme.js +66 -0
  70. package/dist/schemas/theme.js.map +1 -0
  71. package/dist/themes.d.ts +11 -0
  72. package/dist/themes.d.ts.map +1 -0
  73. package/dist/themes.js +80 -0
  74. package/dist/themes.js.map +1 -0
  75. package/dist/validate.d.ts +0 -3
  76. package/dist/validate.d.ts.map +1 -1
  77. package/dist/validate.js +2 -7
  78. package/dist/validate.js.map +1 -1
  79. package/package.json +7 -1
  80. package/schema/boot.schema.json +255 -12
  81. package/schema/definition.schema.json +255 -12
  82. package/schema/openapi.json +422 -15
  83. package/schema/theme.schema.json +234 -0
@@ -29,7 +29,7 @@ var Problem = z.looseObject({
29
29
  }).meta({ description: "An error, as RFC 9457 problem details (`application/problem+json`)." });
30
30
  var Selection = z.union([z.looseObject({ ids: z.array(Id).min(1) }), z.looseObject({
31
31
  query: z.looseObject({
32
- filter: z.record(z.string(), z.unknown()).optional(),
32
+ filter: z.record(z.string(), z.unknown()).optional().meta({ description: "The `filter` of the list query, by filter id: a value, a list of values, or the bounds of a range (`{ \"from\": \"2026-01-01\", \"to\": \"2026-01-31\" }`)." }),
33
33
  q: z.string().optional()
34
34
  }),
35
35
  except: z.array(Id).optional()
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":[],"sources":["../../src/schemas/api.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { Abilities, Id, RouteReference } from './common';\nimport { User } from './definition';\n\nexport const Item = z\n .looseObject({\n id: Id,\n version: z.string().nullable().meta({\n description: 'Changes on every update. `null` when the backend has no versions.',\n }),\n abilities: Abilities,\n })\n .meta({\n description: 'An item of a resource. Its other properties are the values of its fields.',\n });\n\nexport const Pagination = z.looseObject({\n page: z.number().int().positive(),\n perPage: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n lastPage: z.number().int().positive(),\n});\n\nexport const ItemResponse = z.looseObject({ data: Item });\n\nexport const ListResponse = z.looseObject({ data: z.array(Item), meta: Pagination });\n\nexport const Problem = z\n .looseObject({\n type: z.string().meta({ description: 'A URI reference that identifies the problem type.' }),\n title: z.string(),\n status: z.number().int().min(400).max(599),\n detail: z.string().optional(),\n instance: z.string().optional(),\n errors: z\n .record(z.string(), z.array(z.string()))\n .optional()\n .meta({ description: '`422`: messages keyed by the dot path of the invalid value.' }),\n current: Item.optional().meta({ description: '`412`: the current version of the item.' }),\n })\n .meta({ description: 'An error, as RFC 9457 problem details (`application/problem+json`).' });\n\nexport const Selection = z.union([\n z.looseObject({ ids: z.array(Id).min(1) }),\n z.looseObject({\n query: z.looseObject({\n filter: z.record(z.string(), z.unknown()).optional(),\n q: z.string().optional(),\n }),\n except: z.array(Id).optional(),\n }),\n]);\n\nexport const ActionRequest = z.looseObject({\n selection: Selection.optional().meta({\n description: 'Omitted for actions on the whole resource.',\n }),\n values: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ActionItemResult = z.looseObject({\n id: Id,\n status: z.enum(['failed', 'skipped']),\n message: z.string().optional(),\n reason: z\n .string()\n .optional()\n .meta({ description: '`skipped`: `forbidden`, `not_found` or `unchanged`.' }),\n});\n\nexport const ActionResult = z.looseObject({\n message: z.string().optional(),\n summary: z\n .looseObject({\n succeeded: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n })\n .optional(),\n results: z\n .array(ActionItemResult)\n .optional()\n .meta({ description: 'The items that did not succeed.' }),\n refresh: z.enum(['none', 'items', 'list']).optional(),\n redirect: z.union([z.string(), RouteReference]).nullable().optional(),\n download: z\n .looseObject({\n url: z.string(),\n filename: z.string().optional(),\n expiresAt: z.string().optional(),\n })\n .nullable()\n .optional(),\n});\n\nexport const ActionRun = z.looseObject({\n id: Id,\n action: z.string(),\n resource: z.string(),\n status: z.enum(['queued', 'running', 'succeeded', 'partial', 'failed', 'cancelled']),\n progress: z.number().int().nonnegative(),\n total: z.number().int().nonnegative().nullable(),\n result: ActionResult.optional().meta({ description: 'Set once the run has finished.' }),\n createdAt: z.string().optional(),\n finishedAt: z.string().nullable().optional(),\n});\n\nexport const ActionRunResponse = z.looseObject({ run: ActionRun });\n\nexport const MediaTransform = z.looseObject({\n crop: z\n .looseObject({ x: z.number(), y: z.number(), width: z.number(), height: z.number() })\n .optional()\n .meta({ description: 'In pixels of the original image.' }),\n rotate: z.union([z.literal(0), z.literal(90), z.literal(180), z.literal(270)]).optional(),\n flipX: z.boolean().optional(),\n flipY: z.boolean().optional(),\n focalPoint: z\n .looseObject({ x: z.number().min(0).max(1), y: z.number().min(0).max(1) })\n .optional()\n .meta({ description: 'Relative to the width and height, from 0 to 1.' }),\n});\n\nexport const Media = Item.extend({\n type: z\n .string()\n .meta({ description: '`image`, `video`, `audio`, `document`, `font`, or another type.' }),\n name: z.string(),\n mime: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n thumbnailUrl: z.string().nullable().optional(),\n variants: z\n .record(\n z.string(),\n z.looseObject({\n url: z.string(),\n width: z.number().optional(),\n height: z.number().optional(),\n }),\n )\n .optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n transform: MediaTransform.nullable().optional(),\n tags: z.array(z.string()).optional(),\n});\n\nexport const MediaResponse = z.looseObject({ data: Media });\n\nexport const MediaListResponse = z.looseObject({ data: z.array(Media), meta: Pagination });\n\nexport const Session = z.looseObject({ user: User });\n\nexport const SearchResponse = z.looseObject({\n data: z.array(\n z.looseObject({\n resource: z.string(),\n items: z.array(Item),\n total: z.number().int().nonnegative().optional(),\n }),\n ),\n});\n\nexport const PreviewResponse = z.looseObject({ url: z.string(), expiresAt: z.string().optional() });\n\nexport type Item = z.infer<typeof Item>;\nexport type Pagination = z.infer<typeof Pagination>;\nexport type ItemResponse = z.infer<typeof ItemResponse>;\nexport type ListResponse = z.infer<typeof ListResponse>;\nexport type Problem = z.infer<typeof Problem>;\nexport type Selection = z.infer<typeof Selection>;\nexport type ActionRequest = z.infer<typeof ActionRequest>;\nexport type ActionItemResult = z.infer<typeof ActionItemResult>;\nexport type ActionResult = z.infer<typeof ActionResult>;\nexport type ActionRun = z.infer<typeof ActionRun>;\nexport type ActionRunResponse = z.infer<typeof ActionRunResponse>;\nexport type MediaTransform = z.infer<typeof MediaTransform>;\nexport type Media = z.infer<typeof Media>;\nexport type MediaResponse = z.infer<typeof MediaResponse>;\nexport type MediaListResponse = z.infer<typeof MediaListResponse>;\nexport type Session = z.infer<typeof Session>;\nexport type SearchResponse = z.infer<typeof SearchResponse>;\nexport type PreviewResponse = z.infer<typeof PreviewResponse>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../src/schemas/api.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { Abilities, Id, RouteReference } from './common';\nimport { User } from './definition';\n\nexport const Item = z\n .looseObject({\n id: Id,\n version: z.string().nullable().meta({\n description: 'Changes on every update. `null` when the backend has no versions.',\n }),\n abilities: Abilities,\n })\n .meta({\n description: 'An item of a resource. Its other properties are the values of its fields.',\n });\n\nexport const Pagination = z.looseObject({\n page: z.number().int().positive(),\n perPage: z.number().int().positive(),\n total: z.number().int().nonnegative(),\n lastPage: z.number().int().positive(),\n});\n\nexport const ItemResponse = z.looseObject({ data: Item });\n\nexport const ListResponse = z.looseObject({ data: z.array(Item), meta: Pagination });\n\nexport const Problem = z\n .looseObject({\n type: z.string().meta({ description: 'A URI reference that identifies the problem type.' }),\n title: z.string(),\n status: z.number().int().min(400).max(599),\n detail: z.string().optional(),\n instance: z.string().optional(),\n errors: z\n .record(z.string(), z.array(z.string()))\n .optional()\n .meta({ description: '`422`: messages keyed by the dot path of the invalid value.' }),\n current: Item.optional().meta({ description: '`412`: the current version of the item.' }),\n })\n .meta({ description: 'An error, as RFC 9457 problem details (`application/problem+json`).' });\n\nexport const Selection = z.union([\n z.looseObject({ ids: z.array(Id).min(1) }),\n z.looseObject({\n query: z.looseObject({\n filter: z.record(z.string(), z.unknown()).optional().meta({\n description:\n 'The `filter` of the list query, by filter id: a value, a list of values, or the bounds of a range (`{ \"from\": \"2026-01-01\", \"to\": \"2026-01-31\" }`).',\n }),\n q: z.string().optional(),\n }),\n except: z.array(Id).optional(),\n }),\n]);\n\nexport const ActionRequest = z.looseObject({\n selection: Selection.optional().meta({\n description: 'Omitted for actions on the whole resource.',\n }),\n values: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ActionItemResult = z.looseObject({\n id: Id,\n status: z.enum(['failed', 'skipped']),\n message: z.string().optional(),\n reason: z\n .string()\n .optional()\n .meta({ description: '`skipped`: `forbidden`, `not_found` or `unchanged`.' }),\n});\n\nexport const ActionResult = z.looseObject({\n message: z.string().optional(),\n summary: z\n .looseObject({\n succeeded: z.number().int().nonnegative(),\n failed: z.number().int().nonnegative(),\n skipped: z.number().int().nonnegative(),\n })\n .optional(),\n results: z\n .array(ActionItemResult)\n .optional()\n .meta({ description: 'The items that did not succeed.' }),\n refresh: z.enum(['none', 'items', 'list']).optional(),\n redirect: z.union([z.string(), RouteReference]).nullable().optional(),\n download: z\n .looseObject({\n url: z.string(),\n filename: z.string().optional(),\n expiresAt: z.string().optional(),\n })\n .nullable()\n .optional(),\n});\n\nexport const ActionRun = z.looseObject({\n id: Id,\n action: z.string(),\n resource: z.string(),\n status: z.enum(['queued', 'running', 'succeeded', 'partial', 'failed', 'cancelled']),\n progress: z.number().int().nonnegative(),\n total: z.number().int().nonnegative().nullable(),\n result: ActionResult.optional().meta({ description: 'Set once the run has finished.' }),\n createdAt: z.string().optional(),\n finishedAt: z.string().nullable().optional(),\n});\n\nexport const ActionRunResponse = z.looseObject({ run: ActionRun });\n\nexport const MediaTransform = z.looseObject({\n crop: z\n .looseObject({ x: z.number(), y: z.number(), width: z.number(), height: z.number() })\n .optional()\n .meta({ description: 'In pixels of the original image.' }),\n rotate: z.union([z.literal(0), z.literal(90), z.literal(180), z.literal(270)]).optional(),\n flipX: z.boolean().optional(),\n flipY: z.boolean().optional(),\n focalPoint: z\n .looseObject({ x: z.number().min(0).max(1), y: z.number().min(0).max(1) })\n .optional()\n .meta({ description: 'Relative to the width and height, from 0 to 1.' }),\n});\n\nexport const Media = Item.extend({\n type: z\n .string()\n .meta({ description: '`image`, `video`, `audio`, `document`, `font`, or another type.' }),\n name: z.string(),\n mime: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n thumbnailUrl: z.string().nullable().optional(),\n variants: z\n .record(\n z.string(),\n z.looseObject({\n url: z.string(),\n width: z.number().optional(),\n height: z.number().optional(),\n }),\n )\n .optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n transform: MediaTransform.nullable().optional(),\n tags: z.array(z.string()).optional(),\n});\n\nexport const MediaResponse = z.looseObject({ data: Media });\n\nexport const MediaListResponse = z.looseObject({ data: z.array(Media), meta: Pagination });\n\nexport const Session = z.looseObject({ user: User });\n\nexport const SearchResponse = z.looseObject({\n data: z.array(\n z.looseObject({\n resource: z.string(),\n items: z.array(Item),\n total: z.number().int().nonnegative().optional(),\n }),\n ),\n});\n\nexport const PreviewResponse = z.looseObject({ url: z.string(), expiresAt: z.string().optional() });\n\nexport type Item = z.infer<typeof Item>;\nexport type Pagination = z.infer<typeof Pagination>;\nexport type ItemResponse = z.infer<typeof ItemResponse>;\nexport type ListResponse = z.infer<typeof ListResponse>;\nexport type Problem = z.infer<typeof Problem>;\nexport type Selection = z.infer<typeof Selection>;\nexport type ActionRequest = z.infer<typeof ActionRequest>;\nexport type ActionItemResult = z.infer<typeof ActionItemResult>;\nexport type ActionResult = z.infer<typeof ActionResult>;\nexport type ActionRun = z.infer<typeof ActionRun>;\nexport type ActionRunResponse = z.infer<typeof ActionRunResponse>;\nexport type MediaTransform = z.infer<typeof MediaTransform>;\nexport type Media = z.infer<typeof Media>;\nexport type MediaResponse = z.infer<typeof MediaResponse>;\nexport type MediaListResponse = z.infer<typeof MediaListResponse>;\nexport type Session = z.infer<typeof Session>;\nexport type SearchResponse = z.infer<typeof SearchResponse>;\nexport type PreviewResponse = z.infer<typeof PreviewResponse>;\n"],"mappings":"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"}
@@ -1,10 +1,5 @@
1
1
  import { z } from 'zod';
2
2
  import { Definition } from './definition';
3
- /**
4
- * Id of the element that holds the boot config in the page: a
5
- * `<script type="application/json" id="panneau-boot">` element whose text is the JSON object.
6
- */
7
- export declare const BOOT_CONFIG_ELEMENT_ID = "panneau-boot";
8
3
  export declare const BootConfig: z.ZodObject<{
9
4
  protocol: z.ZodLiteral<1>;
10
5
  apiBaseUrl: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/schemas/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAErD,eAAO,MAAM,UAAU;;;;;gBAsBT,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC;;iBASxC,CAAC;AAEP,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/schemas/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,eAAO,MAAM,UAAU;;;;;gBAsBT,CAAC,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC;;iBASxC,CAAC;AAEP,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -2,11 +2,6 @@ import "../version.js";
2
2
  import { Definition } from "./definition.js";
3
3
  import { z } from "zod";
4
4
  //#region src/schemas/boot.ts
5
- /**
6
- * Id of the element that holds the boot config in the page: a
7
- * `<script type="application/json" id="panneau-boot">` element whose text is the JSON object.
8
- */
9
- var BOOT_CONFIG_ELEMENT_ID = "panneau-boot";
10
5
  var BootConfig = z.looseObject({
11
6
  protocol: z.literal(1),
12
7
  apiBaseUrl: z.string().min(1).meta({ description: "URL of the API (`/panneau/api`), where the app fetches `{apiBaseUrl}/definition`. A path or an absolute URL." }),
@@ -16,6 +11,6 @@ var BootConfig = z.looseObject({
16
11
  loginUrl: z.string().nullable().optional().meta({ description: "Where to send unauthenticated users when the API answers `401` before the definition is loaded. Afterwards, `auth.loginUrl` of the definition is used." })
17
12
  }).meta({ description: "What a server writes in the page so the app can start, in the element `#panneau-boot`." });
18
13
  //#endregion
19
- export { BOOT_CONFIG_ELEMENT_ID, BootConfig };
14
+ export { BootConfig };
20
15
 
21
16
  //# sourceMappingURL=boot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","names":[],"sources":["../../src/schemas/boot.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PROTOCOL_VERSION } from '../version';\nimport { Definition } from './definition';\n\n/**\n * Id of the element that holds the boot config in the page: a\n * `<script type=\"application/json\" id=\"panneau-boot\">` element whose text is the JSON object.\n */\nexport const BOOT_CONFIG_ELEMENT_ID = 'panneau-boot';\n\nexport const BootConfig = z\n .looseObject({\n protocol: z.literal(PROTOCOL_VERSION),\n apiBaseUrl: z.string().min(1).meta({\n description:\n 'URL of the API (`/panneau/api`), where the app fetches `{apiBaseUrl}/definition`. A path or an absolute URL.',\n }),\n basePath: z\n .string()\n .regex(/^\\/([^/?#]+(\\/[^/?#]+)*)?\\/?$/, 'A path that starts with `/`.')\n .meta({\n description:\n 'Path of the app in the site (`/panneau`, or `/` on its own domain). Client routes are under it.',\n }),\n locale: z\n .string()\n .min(2)\n .meta({ description: 'BCP 47 locale of the UI, used before the definition loads.' }),\n // The type is written out so that declaration files reference the definition's schema.\n definition: Definition.optional().meta({\n description:\n 'The definition for the current user, inlined so the app skips the first `GET /definition`.',\n }) as z.ZodOptional<typeof Definition>,\n loginUrl: z.string().nullable().optional().meta({\n description:\n 'Where to send unauthenticated users when the API answers `401` before the definition is loaded. Afterwards, `auth.loginUrl` of the definition is used.',\n }),\n })\n .meta({\n description:\n 'What a server writes in the page so the app can start, in the element `#panneau-boot`.',\n });\n\nexport type BootConfig = z.infer<typeof BootConfig>;\n/** A boot config as a backend writes it, before defaults are applied. */\nexport type BootConfigInput = z.input<typeof BootConfig>;\n"],"mappings":";;;;;;;;AASA,IAAa,yBAAyB;AAEtC,IAAa,aAAa,EACrB,YAAY;CACT,UAAU,EAAE,QAAA,CAAwB;CACpC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAC/B,aACI,+GACR,CAAC;CACD,UAAU,EACL,OAAO,CAAC,CACR,MAAM,iCAAiC,8BAA8B,CAAC,CACtE,KAAK,EACF,aACI,kGACR,CAAC;CACL,QAAQ,EACH,OAAO,CAAC,CACR,IAAI,CAAC,CAAC,CACN,KAAK,EAAE,aAAa,6DAA6D,CAAC;CAEvF,YAAY,WAAW,SAAS,CAAC,CAAC,KAAK,EACnC,aACI,6FACR,CAAC;CACD,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAC5C,aACI,yJACR,CAAC;AACL,CAAC,CAAC,CACD,KAAK,EACF,aACI,yFACR,CAAC"}
1
+ {"version":3,"file":"boot.js","names":[],"sources":["../../src/schemas/boot.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PROTOCOL_VERSION } from '../version';\nimport { Definition } from './definition';\n\nexport const BootConfig = z\n .looseObject({\n protocol: z.literal(PROTOCOL_VERSION),\n apiBaseUrl: z.string().min(1).meta({\n description:\n 'URL of the API (`/panneau/api`), where the app fetches `{apiBaseUrl}/definition`. A path or an absolute URL.',\n }),\n basePath: z\n .string()\n .regex(/^\\/([^/?#]+(\\/[^/?#]+)*)?\\/?$/, 'A path that starts with `/`.')\n .meta({\n description:\n 'Path of the app in the site (`/panneau`, or `/` on its own domain). Client routes are under it.',\n }),\n locale: z\n .string()\n .min(2)\n .meta({ description: 'BCP 47 locale of the UI, used before the definition loads.' }),\n // The type is written out so that declaration files reference the definition's schema.\n definition: Definition.optional().meta({\n description:\n 'The definition for the current user, inlined so the app skips the first `GET /definition`.',\n }) as z.ZodOptional<typeof Definition>,\n loginUrl: z.string().nullable().optional().meta({\n description:\n 'Where to send unauthenticated users when the API answers `401` before the definition is loaded. Afterwards, `auth.loginUrl` of the definition is used.',\n }),\n })\n .meta({\n description:\n 'What a server writes in the page so the app can start, in the element `#panneau-boot`.',\n });\n\nexport type BootConfig = z.infer<typeof BootConfig>;\n/** A boot config as a backend writes it, before defaults are applied. */\nexport type BootConfigInput = z.input<typeof BootConfig>;\n"],"mappings":";;;;AAKA,IAAa,aAAa,EACrB,YAAY;CACT,UAAU,EAAE,QAAA,CAAwB;CACpC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAC/B,aACI,+GACR,CAAC;CACD,UAAU,EACL,OAAO,CAAC,CACR,MAAM,iCAAiC,8BAA8B,CAAC,CACtE,KAAK,EACF,aACI,kGACR,CAAC;CACL,QAAQ,EACH,OAAO,CAAC,CACR,IAAI,CAAC,CAAC,CACN,KAAK,EAAE,aAAa,6DAA6D,CAAC;CAEvF,YAAY,WAAW,SAAS,CAAC,CAAC,KAAK,EACnC,aACI,6FACR,CAAC;CACD,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAC5C,aACI,yJACR,CAAC;AACL,CAAC,CAAC,CACD,KAAK,EACF,aACI,yFACR,CAAC"}
@@ -435,11 +435,64 @@ export declare const Definition: z.ZodObject<{
435
435
  maxSize: z.ZodOptional<z.ZodNumber>;
436
436
  }, z.core.$loose>>;
437
437
  theme: z.ZodOptional<z.ZodObject<{
438
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
438
439
  colorScheme: z.ZodOptional<z.ZodEnum<{
439
- light: "light";
440
440
  dark: "dark";
441
441
  auto: "auto";
442
+ light: "light";
442
443
  }>>;
444
+ density: z.ZodOptional<z.ZodEnum<{
445
+ auto: "auto";
446
+ compact: "compact";
447
+ comfortable: "comfortable";
448
+ touch: "touch";
449
+ }>>;
450
+ extends: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
451
+ label: z.ZodOptional<z.ZodString>;
452
+ dark: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
453
+ palette: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
454
+ tones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
455
+ text: z.ZodString;
456
+ subtle: z.ZodString;
457
+ border: z.ZodString;
458
+ outline: z.ZodString;
459
+ solid: z.ZodString;
460
+ solidHover: z.ZodString;
461
+ solidText: z.ZodString;
462
+ dark: z.ZodOptional<z.ZodObject<{
463
+ text: z.ZodOptional<z.ZodString>;
464
+ subtle: z.ZodOptional<z.ZodString>;
465
+ border: z.ZodOptional<z.ZodString>;
466
+ outline: z.ZodOptional<z.ZodString>;
467
+ solid: z.ZodOptional<z.ZodString>;
468
+ solidHover: z.ZodOptional<z.ZodString>;
469
+ solidText: z.ZodOptional<z.ZodString>;
470
+ }, z.core.$loose>>;
471
+ }, z.core.$loose>]>>>;
472
+ components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
473
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
474
+ }, z.core.$loose>>>;
475
+ densities: z.ZodOptional<z.ZodObject<{
476
+ compact: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
477
+ comfortable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
478
+ touch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
479
+ }, z.core.$loose>>;
480
+ fonts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
481
+ family: z.ZodString;
482
+ src: z.ZodString;
483
+ weight: z.ZodOptional<z.ZodString>;
484
+ style: z.ZodOptional<z.ZodString>;
485
+ display: z.ZodOptional<z.ZodEnum<{
486
+ optional: "optional";
487
+ auto: "auto";
488
+ block: "block";
489
+ swap: "swap";
490
+ fallback: "fallback";
491
+ }>>;
492
+ unicodeRange: z.ZodOptional<z.ZodString>;
493
+ }, z.core.$loose>, z.ZodObject<{
494
+ stylesheet: z.ZodString;
495
+ }, z.core.$loose>]>>>;
443
496
  }, z.core.$loose>>;
444
497
  user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
445
498
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/schemas/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,IAAI;;;;;;iBAMf,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;iBAef,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;cAYG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;iBAIjB,CAAC;AAElD,eAAO,MAAM,IAAI;;;;;iBAQf,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;iBAQjB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;iBAIlB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAhCC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyEiC,CAAC;AAEpG,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/schemas/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,IAAI;;;;;;iBAMf,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;iBAef,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;cAYG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;iBAIjB,CAAC;AAElD,eAAO,MAAM,IAAI;;;;;iBAQf,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;iBAQjB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;iBAIlB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAhCC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuEiC,CAAC;AAEpG,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import "../version.js";
2
2
  import { Abilities, Id } from "./common.js";
3
3
  import { Resource } from "./resource.js";
4
+ import { DefinitionTheme } from "./theme.js";
4
5
  import { z } from "zod";
5
6
  //#region src/schemas/definition.ts
6
7
  var User = z.looseObject({
@@ -74,11 +75,7 @@ var Definition = z.looseObject({
74
75
  dashboard: z.looseObject({ widgets: z.array(Widget) }).optional(),
75
76
  search: z.looseObject({ enabled: z.boolean() }).optional(),
76
77
  uploads: Uploads.optional(),
77
- theme: z.looseObject({ colorScheme: z.enum([
78
- "light",
79
- "dark",
80
- "auto"
81
- ]).optional() }).optional(),
78
+ theme: DefinitionTheme.optional(),
82
79
  user: User.nullable().optional()
83
80
  }).superRefine((definition, context) => {
84
81
  const ids = /* @__PURE__ */ new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","names":[],"sources":["../../src/schemas/definition.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PROTOCOL_VERSION } from '../version';\nimport { Abilities, Id } from './common';\nimport { Resource } from './resource';\n\nexport const User = z.looseObject({\n id: Id,\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n abilities: Abilities.optional(),\n});\n\nexport const AuthProvider = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n url: z.string().optional().meta({ description: 'Where the login with this provider starts.' }),\n icon: z.string().optional(),\n});\n\nexport const Auth = z.looseObject({\n mode: z.enum(['panneau', 'external']).meta({\n description: \"`panneau`: Panneau's own login pages. `external`: the site handles login.\",\n }),\n loginUrl: z\n .string()\n .nullable()\n .optional()\n .meta({ description: '`external`: where unauthenticated users are sent.' }),\n password: z.boolean().optional(),\n providers: z.array(AuthProvider).optional(),\n passwordReset: z.boolean().optional(),\n twoFactor: z.boolean().optional(),\n passkeys: z.boolean().optional(),\n emailVerification: z.boolean().optional(),\n});\n\nexport const MenuItem = z\n .looseObject({\n type: z.string().min(1).meta({\n description: 'Built-in: `resources`, `resource`, `page`, `link`, `separator`, `group`.',\n }),\n label: z.string().optional(),\n icon: z.string().optional(),\n resource: z.string().optional(),\n page: z.string().optional(),\n url: z.string().optional(),\n external: z.boolean().optional(),\n // The return type is written out so that declaration files keep the recursion.\n get children(): z.ZodOptional<z.ZodArray<typeof MenuItem>> {\n return z.array(MenuItem).optional();\n },\n })\n .meta({ description: 'An entry of a menu.' });\n\nexport const Page = z.looseObject({\n component: z\n .string()\n .min(1)\n .meta({ description: 'A page provided by a plugin, or a built-in page.' }),\n path: z.string().optional().meta({ description: 'Path of a custom page.' }),\n label: z.string().optional(),\n props: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Widget = z.looseObject({\n id: z.string().min(1),\n type: z.string().min(1).meta({\n description: 'Built-in: `stat`, `chart`, `recent-items`, `shortcuts`, `welcome`.',\n }),\n label: z.string().optional(),\n width: z.number().int().min(1).max(12).optional(),\n settings: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Uploads = z.looseObject({\n mode: z.enum(['multipart', 'tus', 'presigned']),\n endpoint: z.string().optional(),\n maxSize: z.number().int().positive().optional(),\n});\n\nexport const Definition = z\n .looseObject({\n protocol: z.literal(PROTOCOL_VERSION),\n name: z.string(),\n locale: z\n .string()\n .min(2)\n .meta({ description: 'BCP 47 locale of the labels and messages.' }),\n locales: z\n .array(z.string().min(2))\n .min(1)\n .meta({ description: 'Locales of localized content fields.' }),\n api: z.looseObject({ baseUrl: z.string() }),\n resources: z.array(Resource),\n pages: z.record(z.string(), Page).optional(),\n menus: z.record(z.string(), z.array(MenuItem)).optional(),\n routes: z.record(z.string(), z.string()).optional().meta({\n description: 'Named paths of the frontend, for `link` actions and redirects.',\n }),\n auth: Auth.optional(),\n dashboard: z.looseObject({ widgets: z.array(Widget) }).optional(),\n search: z.looseObject({ enabled: z.boolean() }).optional(),\n uploads: Uploads.optional(),\n theme: z\n .looseObject({ colorScheme: z.enum(['light', 'dark', 'auto']).optional() })\n .optional(),\n user: User.nullable().optional(),\n })\n .superRefine((definition, context) => {\n const ids = new Set<string>();\n definition.resources.forEach((resource, index) => {\n if (ids.has(resource.id)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate resource id \\`${resource.id}\\`.`,\n path: ['resources', index, 'id'],\n });\n }\n ids.add(resource.id);\n });\n })\n .meta({ description: 'Everything a frontend needs to render the admin for the current user.' });\n\nexport type User = z.infer<typeof User>;\nexport type AuthProvider = z.infer<typeof AuthProvider>;\nexport type Auth = z.infer<typeof Auth>;\nexport type MenuItem = z.infer<typeof MenuItem>;\nexport type Page = z.infer<typeof Page>;\nexport type Widget = z.infer<typeof Widget>;\nexport type Uploads = z.infer<typeof Uploads>;\nexport type Definition = z.infer<typeof Definition>;\n/** A definition as a backend writes it, before defaults are applied. */\nexport type DefinitionInput = z.input<typeof Definition>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"definition.js","names":[],"sources":["../../src/schemas/definition.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PROTOCOL_VERSION } from '../version';\nimport { Abilities, Id } from './common';\nimport { Resource } from './resource';\nimport { DefinitionTheme } from './theme';\n\nexport const User = z.looseObject({\n id: Id,\n name: z.string(),\n email: z.string().optional(),\n avatarUrl: z.string().optional(),\n abilities: Abilities.optional(),\n});\n\nexport const AuthProvider = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n url: z.string().optional().meta({ description: 'Where the login with this provider starts.' }),\n icon: z.string().optional(),\n});\n\nexport const Auth = z.looseObject({\n mode: z.enum(['panneau', 'external']).meta({\n description: \"`panneau`: Panneau's own login pages. `external`: the site handles login.\",\n }),\n loginUrl: z\n .string()\n .nullable()\n .optional()\n .meta({ description: '`external`: where unauthenticated users are sent.' }),\n password: z.boolean().optional(),\n providers: z.array(AuthProvider).optional(),\n passwordReset: z.boolean().optional(),\n twoFactor: z.boolean().optional(),\n passkeys: z.boolean().optional(),\n emailVerification: z.boolean().optional(),\n});\n\nexport const MenuItem = z\n .looseObject({\n type: z.string().min(1).meta({\n description: 'Built-in: `resources`, `resource`, `page`, `link`, `separator`, `group`.',\n }),\n label: z.string().optional(),\n icon: z.string().optional(),\n resource: z.string().optional(),\n page: z.string().optional(),\n url: z.string().optional(),\n external: z.boolean().optional(),\n // The return type is written out so that declaration files keep the recursion.\n get children(): z.ZodOptional<z.ZodArray<typeof MenuItem>> {\n return z.array(MenuItem).optional();\n },\n })\n .meta({ description: 'An entry of a menu.' });\n\nexport const Page = z.looseObject({\n component: z\n .string()\n .min(1)\n .meta({ description: 'A page provided by a plugin, or a built-in page.' }),\n path: z.string().optional().meta({ description: 'Path of a custom page.' }),\n label: z.string().optional(),\n props: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Widget = z.looseObject({\n id: z.string().min(1),\n type: z.string().min(1).meta({\n description: 'Built-in: `stat`, `chart`, `recent-items`, `shortcuts`, `welcome`.',\n }),\n label: z.string().optional(),\n width: z.number().int().min(1).max(12).optional(),\n settings: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const Uploads = z.looseObject({\n mode: z.enum(['multipart', 'tus', 'presigned']),\n endpoint: z.string().optional(),\n maxSize: z.number().int().positive().optional(),\n});\n\nexport const Definition = z\n .looseObject({\n protocol: z.literal(PROTOCOL_VERSION),\n name: z.string(),\n locale: z\n .string()\n .min(2)\n .meta({ description: 'BCP 47 locale of the labels and messages.' }),\n locales: z\n .array(z.string().min(2))\n .min(1)\n .meta({ description: 'Locales of localized content fields.' }),\n api: z.looseObject({ baseUrl: z.string() }),\n resources: z.array(Resource),\n pages: z.record(z.string(), Page).optional(),\n menus: z.record(z.string(), z.array(MenuItem)).optional(),\n routes: z.record(z.string(), z.string()).optional().meta({\n description: 'Named paths of the frontend, for `link` actions and redirects.',\n }),\n auth: Auth.optional(),\n dashboard: z.looseObject({ widgets: z.array(Widget) }).optional(),\n search: z.looseObject({ enabled: z.boolean() }).optional(),\n uploads: Uploads.optional(),\n theme: DefinitionTheme.optional(),\n user: User.nullable().optional(),\n })\n .superRefine((definition, context) => {\n const ids = new Set<string>();\n definition.resources.forEach((resource, index) => {\n if (ids.has(resource.id)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate resource id \\`${resource.id}\\`.`,\n path: ['resources', index, 'id'],\n });\n }\n ids.add(resource.id);\n });\n })\n .meta({ description: 'Everything a frontend needs to render the admin for the current user.' });\n\nexport type User = z.infer<typeof User>;\nexport type AuthProvider = z.infer<typeof AuthProvider>;\nexport type Auth = z.infer<typeof Auth>;\nexport type MenuItem = z.infer<typeof MenuItem>;\nexport type Page = z.infer<typeof Page>;\nexport type Widget = z.infer<typeof Widget>;\nexport type Uploads = z.infer<typeof Uploads>;\nexport type Definition = z.infer<typeof Definition>;\n/** A definition as a backend writes it, before defaults are applied. */\nexport type DefinitionInput = z.input<typeof Definition>;\n"],"mappings":"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"}
@@ -1,9 +1,5 @@
1
1
  import { z } from 'zod';
2
2
  import { Condition } from './common';
3
- /** Field types every Panneau frontend renders. Plugins add others. */
4
- export declare const BUILT_IN_FIELD_TYPES: readonly ["text", "textarea", "richtext", "number", "boolean", "date", "datetime", "time", "select", "email", "url", "color", "media", "relation", "group", "repeater", "slug"];
5
- /** Validation rules that both frontends and backends check. */
6
- export declare const PORTABLE_RULES: readonly ["required", "min", "max", "pattern", "email", "url", "in", "accept", "maxSize", "before", "after"];
7
3
  export declare const Rule: z.ZodUnion<readonly [z.ZodObject<{
8
4
  rule: z.ZodLiteral<"required">;
9
5
  message: z.ZodOptional<z.ZodString>;
@@ -137,8 +133,6 @@ export declare const Field: z.ZodObject<{
137
133
  types: z.ZodOptional<z.ZodArray<typeof BlockType>>;
138
134
  settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
135
  }, z.core.$loose>;
140
- export type BuiltInFieldType = (typeof BUILT_IN_FIELD_TYPES)[number];
141
- export type PortableRule = (typeof PORTABLE_RULES)[number];
142
136
  export type Rule = z.infer<typeof Rule>;
143
137
  export type BlockType = z.infer<typeof BlockType>;
144
138
  export type Field = z.infer<typeof Field>;
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/schemas/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAU,MAAM,UAAU,CAAC;AAE7C,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,iLAkBvB,CAAC;AAEX,+DAA+D;AAC/D,eAAO,MAAM,cAAc,8GAYjB,CAAC;AAYX,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCX,CAAC;AAEP,eAAO,MAAM,SAAS;;;;YAKJ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;iBAGxC,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwCI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;WAMxC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;;iBAQhB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/schemas/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,SAAS,EAAU,MAAM,UAAU,CAAC;AAY7C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCX,CAAC;AAEP,eAAO,MAAM,SAAS;;;;YAKJ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;iBAGxC,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwCI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;WAMxC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;;iBAQhB,CAAC;AAEjD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC"}
@@ -1,40 +1,7 @@
1
+ import { PORTABLE_RULES } from "../constants.js";
1
2
  import { Condition, Option } from "./common.js";
2
3
  import { z } from "zod";
3
4
  //#region src/schemas/field.ts
4
- /** Field types every Panneau frontend renders. Plugins add others. */
5
- var BUILT_IN_FIELD_TYPES = [
6
- "text",
7
- "textarea",
8
- "richtext",
9
- "number",
10
- "boolean",
11
- "date",
12
- "datetime",
13
- "time",
14
- "select",
15
- "email",
16
- "url",
17
- "color",
18
- "media",
19
- "relation",
20
- "group",
21
- "repeater",
22
- "slug"
23
- ];
24
- /** Validation rules that both frontends and backends check. */
25
- var PORTABLE_RULES = [
26
- "required",
27
- "min",
28
- "max",
29
- "pattern",
30
- "email",
31
- "url",
32
- "in",
33
- "accept",
34
- "maxSize",
35
- "before",
36
- "after"
37
- ];
38
5
  var message = z.string().optional().meta({ description: "Message shown when the rule fails, instead of the default one." });
39
6
  var DateBound = z.union([z.string().meta({ description: "An ISO 8601 date or date-time." }), z.looseObject({ field: z.string().min(1) }).meta({ description: "Another field of the form." })]);
40
7
  var Rule = z.union([
@@ -122,6 +89,6 @@ var Field = z.looseObject({
122
89
  settings: z.record(z.string(), z.unknown()).optional()
123
90
  }).meta({ description: "A field of a form." });
124
91
  //#endregion
125
- export { BUILT_IN_FIELD_TYPES, BlockType, Field, PORTABLE_RULES, Rule };
92
+ export { BlockType, Field, Rule };
126
93
 
127
94
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":[],"sources":["../../src/schemas/field.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { Condition, Option } from './common';\n\n/** Field types every Panneau frontend renders. Plugins add others. */\nexport const BUILT_IN_FIELD_TYPES = [\n 'text',\n 'textarea',\n 'richtext',\n 'number',\n 'boolean',\n 'date',\n 'datetime',\n 'time',\n 'select',\n 'email',\n 'url',\n 'color',\n 'media',\n 'relation',\n 'group',\n 'repeater',\n 'slug',\n] as const;\n\n/** Validation rules that both frontends and backends check. */\nexport const PORTABLE_RULES = [\n 'required',\n 'min',\n 'max',\n 'pattern',\n 'email',\n 'url',\n 'in',\n 'accept',\n 'maxSize',\n 'before',\n 'after',\n] as const;\n\nconst message = z\n .string()\n .optional()\n .meta({ description: 'Message shown when the rule fails, instead of the default one.' });\n\nconst DateBound = z.union([\n z.string().meta({ description: 'An ISO 8601 date or date-time.' }),\n z.looseObject({ field: z.string().min(1) }).meta({ description: 'Another field of the form.' }),\n]);\n\nexport const Rule = z\n .union([\n z.looseObject({ rule: z.literal('required'), message }),\n z.looseObject({ rule: z.enum(['min', 'max']), value: z.number(), message }),\n z.looseObject({\n rule: z.literal('pattern'),\n value: z.string(),\n flags: z.string().optional(),\n message,\n }),\n z.looseObject({ rule: z.enum(['email', 'url']), message }),\n z.looseObject({\n rule: z.literal('in'),\n value: z.array(z.union([z.string(), z.number(), z.boolean()])),\n message,\n }),\n z.looseObject({ rule: z.literal('accept'), value: z.array(z.string().min(1)), message }),\n z.looseObject({ rule: z.literal('maxSize'), value: z.number().int().positive(), message }),\n z.looseObject({ rule: z.enum(['before', 'after']), value: DateBound, message }),\n z\n .looseObject({\n rule: z\n .string()\n .refine((rule) => !(PORTABLE_RULES as readonly string[]).includes(rule)),\n message,\n })\n .meta({\n description:\n \"A rule added in a later version of the protocol. Clients that don't know it ignore it; the server still enforces it.\",\n }),\n ])\n .meta({\n description:\n 'A portable validation rule. `min` and `max` apply to numbers, and to the length of text and arrays. `accept` lists MIME types (`image/*`). `maxSize` is in bytes.',\n });\n\nexport const BlockType = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n icon: z.string().optional(),\n // Return types are written out so that declaration files keep the recursion.\n get fields(): z.ZodArray<typeof Field> {\n return z.array(Field);\n },\n});\n\nexport const Field = z\n .looseObject({\n name: z.string().min(1),\n type: z\n .string()\n .min(1)\n .meta({ description: 'A built-in field type, or a type provided by a plugin.' }),\n label: z.string().optional(),\n help: z.string().optional(),\n placeholder: z.string().optional(),\n default: z.unknown().optional(),\n localized: z\n .boolean()\n .optional()\n .meta({ description: 'The value is an object keyed by locale.' }),\n readOnly: z.boolean().optional(),\n createOnly: z.boolean().optional(),\n updateOnly: z.boolean().optional(),\n rules: z.array(Rule).optional(),\n visibleWhen: Condition.optional(),\n options: z.array(Option).optional().meta({ description: '`select`: the choices.' }),\n multiple: z\n .boolean()\n .optional()\n .meta({ description: '`select`, `relation`, `media`: the value is an array.' }),\n resource: z\n .string()\n .optional()\n .meta({ description: '`relation`: id of the related resource.' }),\n accept: z\n .array(z.string())\n .optional()\n .meta({ description: '`media`: accepted MIME types.' }),\n from: z\n .string()\n .optional()\n .meta({ description: '`slug`: the field the slug is generated from.' }),\n display: z.string().optional().meta({\n description: 'Display used in lists, when it differs from the default one of the type.',\n }),\n get fields(): z.ZodOptional<z.ZodArray<typeof Field>> {\n return z\n .array(Field)\n .optional()\n .meta({ description: '`group` and `repeater`: the nested fields.' });\n },\n get types(): z.ZodOptional<z.ZodArray<typeof BlockType>> {\n return z\n .array(BlockType)\n .optional()\n .meta({ description: '`repeater`: typed blocks, each with its own fields.' });\n },\n settings: z.record(z.string(), z.unknown()).optional(),\n })\n .meta({ description: 'A field of a form.' });\n\nexport type BuiltInFieldType = (typeof BUILT_IN_FIELD_TYPES)[number];\nexport type PortableRule = (typeof PORTABLE_RULES)[number];\nexport type Rule = z.infer<typeof Rule>;\nexport type BlockType = z.infer<typeof BlockType>;\nexport type Field = z.infer<typeof Field>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../src/schemas/field.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { PORTABLE_RULES } from '../constants';\nimport { Condition, Option } from './common';\n\nconst message = z\n .string()\n .optional()\n .meta({ description: 'Message shown when the rule fails, instead of the default one.' });\n\nconst DateBound = z.union([\n z.string().meta({ description: 'An ISO 8601 date or date-time.' }),\n z.looseObject({ field: z.string().min(1) }).meta({ description: 'Another field of the form.' }),\n]);\n\nexport const Rule = z\n .union([\n z.looseObject({ rule: z.literal('required'), message }),\n z.looseObject({ rule: z.enum(['min', 'max']), value: z.number(), message }),\n z.looseObject({\n rule: z.literal('pattern'),\n value: z.string(),\n flags: z.string().optional(),\n message,\n }),\n z.looseObject({ rule: z.enum(['email', 'url']), message }),\n z.looseObject({\n rule: z.literal('in'),\n value: z.array(z.union([z.string(), z.number(), z.boolean()])),\n message,\n }),\n z.looseObject({ rule: z.literal('accept'), value: z.array(z.string().min(1)), message }),\n z.looseObject({ rule: z.literal('maxSize'), value: z.number().int().positive(), message }),\n z.looseObject({ rule: z.enum(['before', 'after']), value: DateBound, message }),\n z\n .looseObject({\n rule: z\n .string()\n .refine((rule) => !(PORTABLE_RULES as readonly string[]).includes(rule)),\n message,\n })\n .meta({\n description:\n \"A rule added in a later version of the protocol. Clients that don't know it ignore it; the server still enforces it.\",\n }),\n ])\n .meta({\n description:\n 'A portable validation rule. `min` and `max` apply to numbers, and to the length of text and arrays. `accept` lists MIME types (`image/*`). `maxSize` is in bytes.',\n });\n\nexport const BlockType = z.looseObject({\n id: z.string().min(1),\n label: z.string(),\n icon: z.string().optional(),\n // Return types are written out so that declaration files keep the recursion.\n get fields(): z.ZodArray<typeof Field> {\n return z.array(Field);\n },\n});\n\nexport const Field = z\n .looseObject({\n name: z.string().min(1),\n type: z\n .string()\n .min(1)\n .meta({ description: 'A built-in field type, or a type provided by a plugin.' }),\n label: z.string().optional(),\n help: z.string().optional(),\n placeholder: z.string().optional(),\n default: z.unknown().optional(),\n localized: z\n .boolean()\n .optional()\n .meta({ description: 'The value is an object keyed by locale.' }),\n readOnly: z.boolean().optional(),\n createOnly: z.boolean().optional(),\n updateOnly: z.boolean().optional(),\n rules: z.array(Rule).optional(),\n visibleWhen: Condition.optional(),\n options: z.array(Option).optional().meta({ description: '`select`: the choices.' }),\n multiple: z\n .boolean()\n .optional()\n .meta({ description: '`select`, `relation`, `media`: the value is an array.' }),\n resource: z\n .string()\n .optional()\n .meta({ description: '`relation`: id of the related resource.' }),\n accept: z\n .array(z.string())\n .optional()\n .meta({ description: '`media`: accepted MIME types.' }),\n from: z\n .string()\n .optional()\n .meta({ description: '`slug`: the field the slug is generated from.' }),\n display: z.string().optional().meta({\n description: 'Display used in lists, when it differs from the default one of the type.',\n }),\n get fields(): z.ZodOptional<z.ZodArray<typeof Field>> {\n return z\n .array(Field)\n .optional()\n .meta({ description: '`group` and `repeater`: the nested fields.' });\n },\n get types(): z.ZodOptional<z.ZodArray<typeof BlockType>> {\n return z\n .array(BlockType)\n .optional()\n .meta({ description: '`repeater`: typed blocks, each with its own fields.' });\n },\n settings: z.record(z.string(), z.unknown()).optional(),\n })\n .meta({ description: 'A field of a form.' });\n\nexport type Rule = z.infer<typeof Rule>;\nexport type BlockType = z.infer<typeof BlockType>;\nexport type Field = z.infer<typeof Field>;\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ export * from './layout';
9
9
  export * from './list';
10
10
  export * from './action';
11
11
  export * from './resource';
12
+ export * from './theme';
12
13
  export * from './definition';
13
14
  export * from './api';
14
15
  export * from './boot';
@@ -790,6 +791,175 @@ export declare const namedSchemas: {
790
791
  endpoint: z.ZodOptional<z.ZodString>;
791
792
  maxSize: z.ZodOptional<z.ZodNumber>;
792
793
  }, z.core.$loose>;
794
+ ThemeTokens: z.ZodRecord<z.ZodString, z.ZodString>;
795
+ ToneValues: z.ZodObject<{
796
+ text: z.ZodString;
797
+ subtle: z.ZodString;
798
+ border: z.ZodString;
799
+ outline: z.ZodString;
800
+ solid: z.ZodString;
801
+ solidHover: z.ZodString;
802
+ solidText: z.ZodString;
803
+ }, z.core.$loose>;
804
+ ToneInput: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
805
+ text: z.ZodString;
806
+ subtle: z.ZodString;
807
+ border: z.ZodString;
808
+ outline: z.ZodString;
809
+ solid: z.ZodString;
810
+ solidHover: z.ZodString;
811
+ solidText: z.ZodString;
812
+ dark: z.ZodOptional<z.ZodObject<{
813
+ text: z.ZodOptional<z.ZodString>;
814
+ subtle: z.ZodOptional<z.ZodString>;
815
+ border: z.ZodOptional<z.ZodString>;
816
+ outline: z.ZodOptional<z.ZodString>;
817
+ solid: z.ZodOptional<z.ZodString>;
818
+ solidHover: z.ZodOptional<z.ZodString>;
819
+ solidText: z.ZodOptional<z.ZodString>;
820
+ }, z.core.$loose>>;
821
+ }, z.core.$loose>]>;
822
+ ThemeFontFace: z.ZodObject<{
823
+ family: z.ZodString;
824
+ src: z.ZodString;
825
+ weight: z.ZodOptional<z.ZodString>;
826
+ style: z.ZodOptional<z.ZodString>;
827
+ display: z.ZodOptional<z.ZodEnum<{
828
+ optional: "optional";
829
+ auto: "auto";
830
+ block: "block";
831
+ swap: "swap";
832
+ fallback: "fallback";
833
+ }>>;
834
+ unicodeRange: z.ZodOptional<z.ZodString>;
835
+ }, z.core.$loose>;
836
+ ThemeFontStylesheet: z.ZodObject<{
837
+ stylesheet: z.ZodString;
838
+ }, z.core.$loose>;
839
+ ThemeFont: z.ZodUnion<readonly [z.ZodObject<{
840
+ family: z.ZodString;
841
+ src: z.ZodString;
842
+ weight: z.ZodOptional<z.ZodString>;
843
+ style: z.ZodOptional<z.ZodString>;
844
+ display: z.ZodOptional<z.ZodEnum<{
845
+ optional: "optional";
846
+ auto: "auto";
847
+ block: "block";
848
+ swap: "swap";
849
+ fallback: "fallback";
850
+ }>>;
851
+ unicodeRange: z.ZodOptional<z.ZodString>;
852
+ }, z.core.$loose>, z.ZodObject<{
853
+ stylesheet: z.ZodString;
854
+ }, z.core.$loose>]>;
855
+ Theme: z.ZodObject<{
856
+ label: z.ZodOptional<z.ZodString>;
857
+ tokens: z.ZodRecord<z.ZodString, z.ZodString>;
858
+ dark: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
859
+ palette: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
860
+ tones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
861
+ text: z.ZodString;
862
+ subtle: z.ZodString;
863
+ border: z.ZodString;
864
+ outline: z.ZodString;
865
+ solid: z.ZodString;
866
+ solidHover: z.ZodString;
867
+ solidText: z.ZodString;
868
+ dark: z.ZodOptional<z.ZodObject<{
869
+ text: z.ZodOptional<z.ZodString>;
870
+ subtle: z.ZodOptional<z.ZodString>;
871
+ border: z.ZodOptional<z.ZodString>;
872
+ outline: z.ZodOptional<z.ZodString>;
873
+ solid: z.ZodOptional<z.ZodString>;
874
+ solidHover: z.ZodOptional<z.ZodString>;
875
+ solidText: z.ZodOptional<z.ZodString>;
876
+ }, z.core.$loose>>;
877
+ }, z.core.$loose>]>>>;
878
+ components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
879
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
880
+ }, z.core.$loose>>>;
881
+ densities: z.ZodOptional<z.ZodObject<{
882
+ compact: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
883
+ comfortable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
884
+ touch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
885
+ }, z.core.$loose>>;
886
+ fonts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
887
+ family: z.ZodString;
888
+ src: z.ZodString;
889
+ weight: z.ZodOptional<z.ZodString>;
890
+ style: z.ZodOptional<z.ZodString>;
891
+ display: z.ZodOptional<z.ZodEnum<{
892
+ optional: "optional";
893
+ auto: "auto";
894
+ block: "block";
895
+ swap: "swap";
896
+ fallback: "fallback";
897
+ }>>;
898
+ unicodeRange: z.ZodOptional<z.ZodString>;
899
+ }, z.core.$loose>, z.ZodObject<{
900
+ stylesheet: z.ZodString;
901
+ }, z.core.$loose>]>>>;
902
+ }, z.core.$loose>;
903
+ DefinitionTheme: z.ZodObject<{
904
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
905
+ colorScheme: z.ZodOptional<z.ZodEnum<{
906
+ dark: "dark";
907
+ auto: "auto";
908
+ light: "light";
909
+ }>>;
910
+ density: z.ZodOptional<z.ZodEnum<{
911
+ auto: "auto";
912
+ compact: "compact";
913
+ comfortable: "comfortable";
914
+ touch: "touch";
915
+ }>>;
916
+ extends: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
917
+ label: z.ZodOptional<z.ZodString>;
918
+ dark: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
919
+ palette: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
920
+ tones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
921
+ text: z.ZodString;
922
+ subtle: z.ZodString;
923
+ border: z.ZodString;
924
+ outline: z.ZodString;
925
+ solid: z.ZodString;
926
+ solidHover: z.ZodString;
927
+ solidText: z.ZodString;
928
+ dark: z.ZodOptional<z.ZodObject<{
929
+ text: z.ZodOptional<z.ZodString>;
930
+ subtle: z.ZodOptional<z.ZodString>;
931
+ border: z.ZodOptional<z.ZodString>;
932
+ outline: z.ZodOptional<z.ZodString>;
933
+ solid: z.ZodOptional<z.ZodString>;
934
+ solidHover: z.ZodOptional<z.ZodString>;
935
+ solidText: z.ZodOptional<z.ZodString>;
936
+ }, z.core.$loose>>;
937
+ }, z.core.$loose>]>>>;
938
+ components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
939
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
940
+ }, z.core.$loose>>>;
941
+ densities: z.ZodOptional<z.ZodObject<{
942
+ compact: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
943
+ comfortable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
944
+ touch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
945
+ }, z.core.$loose>>;
946
+ fonts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
947
+ family: z.ZodString;
948
+ src: z.ZodString;
949
+ weight: z.ZodOptional<z.ZodString>;
950
+ style: z.ZodOptional<z.ZodString>;
951
+ display: z.ZodOptional<z.ZodEnum<{
952
+ optional: "optional";
953
+ auto: "auto";
954
+ block: "block";
955
+ swap: "swap";
956
+ fallback: "fallback";
957
+ }>>;
958
+ unicodeRange: z.ZodOptional<z.ZodString>;
959
+ }, z.core.$loose>, z.ZodObject<{
960
+ stylesheet: z.ZodString;
961
+ }, z.core.$loose>]>>>;
962
+ }, z.core.$loose>;
793
963
  Definition: z.ZodObject<{
794
964
  protocol: z.ZodLiteral<1>;
795
965
  name: z.ZodString;
@@ -1163,11 +1333,64 @@ export declare const namedSchemas: {
1163
1333
  maxSize: z.ZodOptional<z.ZodNumber>;
1164
1334
  }, z.core.$loose>>;
1165
1335
  theme: z.ZodOptional<z.ZodObject<{
1336
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1166
1337
  colorScheme: z.ZodOptional<z.ZodEnum<{
1167
- light: "light";
1168
1338
  dark: "dark";
1169
1339
  auto: "auto";
1340
+ light: "light";
1170
1341
  }>>;
1342
+ density: z.ZodOptional<z.ZodEnum<{
1343
+ auto: "auto";
1344
+ compact: "compact";
1345
+ comfortable: "comfortable";
1346
+ touch: "touch";
1347
+ }>>;
1348
+ extends: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1349
+ label: z.ZodOptional<z.ZodString>;
1350
+ dark: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1351
+ palette: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1352
+ tones: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
1353
+ text: z.ZodString;
1354
+ subtle: z.ZodString;
1355
+ border: z.ZodString;
1356
+ outline: z.ZodString;
1357
+ solid: z.ZodString;
1358
+ solidHover: z.ZodString;
1359
+ solidText: z.ZodString;
1360
+ dark: z.ZodOptional<z.ZodObject<{
1361
+ text: z.ZodOptional<z.ZodString>;
1362
+ subtle: z.ZodOptional<z.ZodString>;
1363
+ border: z.ZodOptional<z.ZodString>;
1364
+ outline: z.ZodOptional<z.ZodString>;
1365
+ solid: z.ZodOptional<z.ZodString>;
1366
+ solidHover: z.ZodOptional<z.ZodString>;
1367
+ solidText: z.ZodOptional<z.ZodString>;
1368
+ }, z.core.$loose>>;
1369
+ }, z.core.$loose>]>>>;
1370
+ components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1371
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
1372
+ }, z.core.$loose>>>;
1373
+ densities: z.ZodOptional<z.ZodObject<{
1374
+ compact: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1375
+ comfortable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1376
+ touch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1377
+ }, z.core.$loose>>;
1378
+ fonts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
1379
+ family: z.ZodString;
1380
+ src: z.ZodString;
1381
+ weight: z.ZodOptional<z.ZodString>;
1382
+ style: z.ZodOptional<z.ZodString>;
1383
+ display: z.ZodOptional<z.ZodEnum<{
1384
+ optional: "optional";
1385
+ auto: "auto";
1386
+ block: "block";
1387
+ swap: "swap";
1388
+ fallback: "fallback";
1389
+ }>>;
1390
+ unicodeRange: z.ZodOptional<z.ZodString>;
1391
+ }, z.core.$loose>, z.ZodObject<{
1392
+ stylesheet: z.ZodString;
1393
+ }, z.core.$loose>]>>>;
1171
1394
  }, z.core.$loose>>;
1172
1395
  user: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1173
1396
  id: z.ZodString;