|
2 | 2 |
|
3 | 3 | import { z } from 'zod'; |
4 | 4 | import { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod'; |
| 5 | +import { SortItemSchema } from '../shared/enums.zod'; |
5 | 6 | import { I18nLabelSchema, AriaPropsSchema } from './i18n.zod'; |
6 | 7 | import { PageRegionSchema, PageVariableSchema } from './page.zod'; |
| 8 | +import { AppBrandingSchema } from './app.zod'; |
7 | 9 |
|
8 | 10 | /** |
9 | 11 | * Interface Page Type Schema |
@@ -32,10 +34,7 @@ export const InterfacePageTypeSchema = z.enum([ |
32 | 34 | export const RecordReviewConfigSchema = z.object({ |
33 | 35 | object: z.string().describe('Target object for review'), |
34 | 36 | filter: z.any().optional().describe('Filter criteria for review queue'), |
35 | | - sort: z.array(z.object({ |
36 | | - field: z.string().describe('Field name to sort by'), |
37 | | - order: z.enum(['asc', 'desc']).describe('Sort direction'), |
38 | | - })).optional().describe('Sort order for review queue'), |
| 37 | + sort: z.array(SortItemSchema).optional().describe('Sort order for review queue'), |
39 | 38 | displayFields: z.array(z.string()).optional() |
40 | 39 | .describe('Fields to display on the review page'), |
41 | 40 | actions: z.array(z.object({ |
@@ -92,10 +91,9 @@ export const InterfacePageSchema = z.object({ |
92 | 91 | /** |
93 | 92 | * Interface Branding Schema |
94 | 93 | * Visual branding overrides for an interface. |
| 94 | + * Extends AppBrandingSchema with interface-specific properties (coverImage). |
95 | 95 | */ |
96 | | -export const InterfaceBrandingSchema = z.object({ |
97 | | - primaryColor: z.string().optional().describe('Primary theme color hex code'), |
98 | | - logo: z.string().optional().describe('Custom logo URL'), |
| 96 | +export const InterfaceBrandingSchema = AppBrandingSchema.extend({ |
99 | 97 | coverImage: z.string().optional().describe('Cover image URL for the interface landing'), |
100 | 98 | }); |
101 | 99 |
|
|
0 commit comments