94 lines
2.6 KiB
TypeScript
94 lines
2.6 KiB
TypeScript
"use client"
|
|
import React from "react"
|
|
import { useWatch } from "react-hook-form"
|
|
import { useIntl } from "react-intl"
|
|
|
|
import { dt } from "@/lib/dt"
|
|
|
|
import DatePicker from "@/components/DatePicker"
|
|
import { SearchIcon } from "@/components/Icons"
|
|
import Button from "@/components/TempDesignSystem/Button"
|
|
import Body from "@/components/TempDesignSystem/Text/Body"
|
|
import Caption from "@/components/TempDesignSystem/Text/Caption"
|
|
|
|
import Search from "./Search"
|
|
import Voucher from "./Voucher"
|
|
|
|
import styles from "./formContent.module.css"
|
|
import inputStyles from "./Search/search.module.css"
|
|
|
|
import type { BookingWidgetFormContentProps } from "@/types/components/form/bookingwidget"
|
|
|
|
export default function FormContent({
|
|
locations,
|
|
formId,
|
|
formState,
|
|
}: BookingWidgetFormContentProps) {
|
|
const intl = useIntl()
|
|
const selectedDate = useWatch({ name: "date" })
|
|
|
|
const rooms = intl.formatMessage({ id: "Guests & Rooms" })
|
|
|
|
const nights = dt(selectedDate.to).diff(dt(selectedDate.from), "days")
|
|
|
|
return (
|
|
<>
|
|
<div className={styles.input}>
|
|
<div className={styles.inputContainer}>
|
|
<div className={styles.where}>
|
|
<Search locations={locations} />
|
|
</div>
|
|
<div className={styles.when}>
|
|
<Caption color="red" textTransform="bold">
|
|
{intl.formatMessage(
|
|
{ id: "booking.nights" },
|
|
{ totalNights: nights }
|
|
)}
|
|
</Caption>
|
|
<DatePicker />
|
|
</div>
|
|
<div className={styles.rooms}>
|
|
<Caption color="red" textTransform="bold">
|
|
{rooms}
|
|
</Caption>
|
|
<Body asChild>
|
|
<input
|
|
type="text"
|
|
placeholder={rooms}
|
|
className={inputStyles.input}
|
|
/>
|
|
</Body>
|
|
</div>
|
|
</div>
|
|
<div className={styles.voucherContainer}>
|
|
<Voucher />
|
|
</div>
|
|
<div className={styles.buttonContainer}>
|
|
<Button
|
|
className={styles.button}
|
|
disabled={!formState.isValid}
|
|
form={formId}
|
|
intent="primary"
|
|
theme="base"
|
|
type="submit"
|
|
>
|
|
<Caption
|
|
color="white"
|
|
textTransform="bold"
|
|
className={styles.buttonText}
|
|
>
|
|
{intl.formatMessage({ id: "Search" })}
|
|
</Caption>
|
|
<div className={styles.icon}>
|
|
<SearchIcon color="white" width={28} height={28} />
|
|
</div>
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
<div className={styles.voucherRow}>
|
|
<Voucher />
|
|
</div>
|
|
</>
|
|
)
|
|
}
|