import { Form, Select, SubmitButton } from '@fluid-design/fluid-ui'; import { ShoppingCartIcon } from '@heroicons/react/24/outline'; import { useState } from 'react'; import * as Yup from 'yup'; import { defaultFormClassName } from '@/components/form'; import { CodeFrameComponentWrap } from '@/components/framework/CodeFrameComponentWrap'; import clsxm from '@/lib/clsxm'; import { food } from '@/lib/data/food'; import { reservationTime } from '@/lib/data/reservation-time'; import { states } from '@/lib/data/states'; import { useToast } from '@/lib/useToast'; const Demo = ({ className = '' }) => { const [present] = useToast(); const [isSubmitted, setIsSubmitted] = useState(false); const validationSchema = Yup.object().shape({ state: Yup.object().required('State is required'), reservationTime: Yup.string().required('Reservation time is required'), food: Yup.array().min(1, 'You must select at least one food'), }); return ( { present('Order submitted!'); setTimeout(() => { setSubmitting(false); setIsSubmitted(true); setTimeout(() => { setIsSubmitted(false); }, 2000); }, 2000); }} initialValues={{ state: states[5], reservationTime: '', food: [], }} validationSchema={validationSchema} > ); }; const CustomSelect = ({ className = '' }) => { return ( null} initialValues={{ food: food.slice(0, 2), }} > ( clsxm( 'flex flex-row justify-start items-center gap-2 px-2 py-1', 'bg-lime-50 dark:bg-lime-900', active && 'bg-lime-100 dark:bg-lime-800', selected && 'bg-lime-600 text-lime-50 dark:bg-lime-400 dark:text-lime-900', disabled && 'bg-lime-200 dark:bg-lime-700' ) } disabled={item.unavailable} > {({ active, selected, disabled }) => ( <> {selected && '✓'} {disabled && '🚫'} {item.name} {' • '} {item.calories} calories > )} )} renderSelectedItem={({ item, remove }) => ( {item.name} )} /> ); }; const Basic = ({ className = '' }) => { const cars = [ 'Audi', 'BMW', 'Chevrolet', 'Dodge', 'Ford', 'Honda', 'Toyota', 'Tesla', 'Volkswagen', ]; return ( null} initialValues={{ car: '', }} > ); }; Demo.displayName = 'Demo'; Basic.displayName = 'Basic'; CustomSelect.displayName = 'CustomSelect'; export const SelectExamples = Object.assign({}, { Demo, CustomSelect, Basic });