34 lines
940 B
TypeScript
34 lines
940 B
TypeScript
![]() |
import { z } from 'zod'
|
||
|
import { optionBaseSchema, blockBaseSchema } from '../../shared'
|
||
|
import { InputBlockType } from '../constants'
|
||
|
|
||
|
export const ratingInputOptionsSchema = optionBaseSchema.merge(
|
||
|
z.object({
|
||
|
buttonType: z.literal('Icons').or(z.literal('Numbers')).optional(),
|
||
|
length: z.number().optional(),
|
||
|
labels: z
|
||
|
.object({
|
||
|
left: z.string().optional(),
|
||
|
right: z.string().optional(),
|
||
|
button: z.string().optional(),
|
||
|
})
|
||
|
.optional(),
|
||
|
customIcon: z
|
||
|
.object({
|
||
|
isEnabled: z.boolean().optional(),
|
||
|
svg: z.string().optional(),
|
||
|
})
|
||
|
.optional(),
|
||
|
isOneClickSubmitEnabled: z.boolean().optional(),
|
||
|
})
|
||
|
)
|
||
|
|
||
|
export const ratingInputBlockSchema = blockBaseSchema.merge(
|
||
|
z.object({
|
||
|
type: z.literal(InputBlockType.RATING),
|
||
|
options: ratingInputOptionsSchema.optional(),
|
||
|
})
|
||
|
)
|
||
|
|
||
|
export type RatingInputBlock = z.infer<typeof ratingInputBlockSchema>
|