feat: replace Select component with Combobox for subscription selection and update validation schema

This commit is contained in:
Ardeman 2025-03-04 09:00:10 +08:00
parent 78287cc6c5
commit 8aeb7a3197

View File

@ -5,12 +5,22 @@ import { RemixFormProvider, useRemixForm } from 'remix-hook-form'
import { z } from 'zod' import { z } from 'zod'
import { Button } from '~/components/ui/button' import { Button } from '~/components/ui/button'
import { Select } from '~/components/ui/select' import { Combobox } from '~/components/ui/combobox'
import { useNewsContext } from '~/contexts/news' import { useNewsContext } from '~/contexts/news'
import type { loader } from '~/routes/_layout' import type { loader } from '~/routes/_layout'
export const subscribeSchema = z.object({ export const subscribeSchema = z.object({
subscribe_plan: z.string().min(1, 'Pilih salah satu subscription'), subscribe_plan: z
.object({
id: z.string(),
code: z.string(),
name: z.string(),
})
.optional()
.nullable()
.refine((data) => !!data, {
message: 'Please select a subscription',
}),
}) })
export type TSubscribeSchema = z.infer<typeof subscribeSchema> export type TSubscribeSchema = z.infer<typeof subscribeSchema>
@ -54,7 +64,7 @@ export default function FormSubscription() {
className="w-full max-w-md" className="w-full max-w-md"
action="/actions/subscribe" action="/actions/subscribe"
> >
<Select <Combobox
id="subscribe_plan" id="subscribe_plan"
name="subscribe_plan" name="subscribe_plan"
label="Subscription" label="Subscription"