2
0
Files
bot/packages/models/src/features/blocks/inputs/rating.ts

41 lines
1017 B
TypeScript
Raw Normal View History

2022-06-07 19:09:08 +02:00
import { z } from 'zod'
import {
defaultButtonLabel,
2022-06-11 07:27:38 +02:00
InputBlockType,
2022-06-07 19:09:08 +02:00
optionBaseSchema,
2022-06-11 07:27:38 +02:00
blockBaseSchema,
2022-06-07 19:09:08 +02:00
} from '../shared'
export const defaultRatingInputOptions: RatingInputOptions = {
buttonType: 'Numbers',
length: 10,
labels: { button: defaultButtonLabel },
customIcon: { isEnabled: false },
}
export const ratingInputOptionsSchema = optionBaseSchema.and(
z.object({
buttonType: z.literal('Icons').or(z.literal('Numbers')),
length: z.number(),
labels: z.object({
left: z.string().optional(),
right: z.string().optional(),
button: z.string(),
}),
customIcon: z.object({
isEnabled: z.boolean(),
svg: z.string().optional(),
}),
})
)
2022-06-11 07:27:38 +02:00
export const ratingInputBlockSchema = blockBaseSchema.and(
2022-06-07 19:09:08 +02:00
z.object({
2022-06-11 07:27:38 +02:00
type: z.literal(InputBlockType.RATING),
2022-06-07 19:09:08 +02:00
options: ratingInputOptionsSchema,
})
)
2022-06-11 07:27:38 +02:00
export type RatingInputBlock = z.infer<typeof ratingInputBlockSchema>
2022-06-07 19:09:08 +02:00
export type RatingInputOptions = z.infer<typeof ratingInputOptionsSchema>