@planetaexo/design-system 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/separator.tsx","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/calendar.tsx","../src/components/FloatingInput.tsx","../src/lib/phone-countries.ts","../src/components/PhoneCountrySelect.tsx","../src/components/Offer.tsx","../src/components/BookingDetails.tsx","../src/components/BookingConfirmationEmail.tsx","../src/components/BookingConfirmation.tsx"],"names":["twMerge","clsx","jsx","SeparatorPrimitive","cva","ButtonPrimitive","DialogPrimitive","jsxs","XIcon","getDefaultClassNames","DayPicker","_a","_b","className","props","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","React","React2","React3","React4","CalendarIcon","MapPinIcon","Fragment","CheckIcon","MailIcon","PhoneIcon","SearchIcon","format","CheckCircle2Icon","UsersIcon","ArrowLeftIcon","MapIcon","React5","CompassIcon","ChevronUpIcon","UserPlusIcon","PlusIcon","ExternalLinkIcon","CopyIcon","PencilIcon","Trash2Icon","UserMinusIcon","AlertTriangleIcon","MessageCircleIcon","CreditCardIcon","AlertCircleIcon","DEFAULT_LOGO"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from \"lucide-react\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n locale,\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n locale={locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(locale?.code, { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-popover opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-muted-foreground select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: ({ ...props }) => (\n <CalendarDayButton locale={locale} {...props} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n locale,\n ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString(locale?.code)}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n FloatingInput — text input com label flutuante na borda\n ----------------------------------------------------------------------- */\nexport interface FloatingInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string;\n error?: string;\n}\n\nexport const FloatingInput = React.forwardRef<HTMLInputElement, FloatingInputProps>(\n ({ label, error, id, className, required, ...props }, ref) => {\n const inputId = id ?? React.useId();\n\n return (\n <div className={cn(\"relative\", className)}>\n <input\n id={inputId}\n ref={ref}\n placeholder=\" \"\n className={cn(\n \"peer block w-full rounded-lg border border-border bg-background\",\n \"px-3 pt-5 pb-2 text-base text-foreground font-ui\",\n \"transition-colors placeholder-transparent\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n error && \"border-destructive focus:border-destructive focus:ring-destructive\"\n )}\n required={required}\n {...props}\n />\n <label\n htmlFor={inputId}\n className={cn(\n \"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n /* When peer has content or is focused, float up */\n \"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n {error && (\n <p className=\"mt-1 text-xs text-destructive font-ui\">{error}</p>\n )}\n </div>\n );\n }\n);\nFloatingInput.displayName = \"FloatingInput\";\n\n/* -----------------------------------------------------------------------\n FloatingSelect — select com label flutuante na borda\n ----------------------------------------------------------------------- */\nexport interface FloatingSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement> {\n label: string;\n error?: string;\n children: React.ReactNode;\n}\n\nexport const FloatingSelect = React.forwardRef<HTMLSelectElement, FloatingSelectProps>(\n ({ label, error, id, className, required, children, ...props }, ref) => {\n const inputId = id ?? React.useId();\n\n return (\n <div className={cn(\"relative\", className)}>\n <select\n id={inputId}\n ref={ref}\n className={cn(\n \"peer block w-full appearance-none rounded-lg border border-border bg-background\",\n \"px-3 pt-5 pb-2 text-base text-foreground font-ui\",\n \"transition-colors\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n error && \"border-destructive\"\n )}\n required={required}\n {...props}\n >\n {children}\n </select>\n {/* Custom chevron */}\n <div className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2\">\n <svg\n className=\"h-4 w-4 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n <label\n htmlFor={inputId}\n className={cn(\n \"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n \"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n {error && (\n <p className=\"mt-1 text-xs text-destructive font-ui\">{error}</p>\n )}\n </div>\n );\n }\n);\nFloatingSelect.displayName = \"FloatingSelect\";\n","export interface PhoneCountry {\n code: string; // ISO 3166-1 alpha-2\n name: string;\n flag: string; // emoji\n dial: string; // e.g. \"+55\"\n}\n\n/* Priority countries shown first */\nexport const PHONE_PRIORITY: PhoneCountry[] = [\n { code: \"BR\", name: \"Brasil\", flag: \"🇧🇷\", dial: \"+55\" },\n { code: \"DE\", name: \"Deutschland\", flag: \"🇩🇪\", dial: \"+49\" },\n { code: \"FR\", name: \"France\", flag: \"🇫🇷\", dial: \"+33\" },\n { code: \"US\", name: \"United States\", flag: \"🇺🇸\", dial: \"+1\" },\n { code: \"GB\", name: \"United Kingdom\", flag: \"🇬🇧\", dial: \"+44\" },\n { code: \"NL\", name: \"Netherlands\", flag: \"🇳🇱\", dial: \"+31\" },\n];\n\n/* Rest of the world — alphabetical by English name */\nexport const PHONE_REST: PhoneCountry[] = [\n { code: \"AF\", name: \"Afghanistan\", flag: \"🇦🇫\", dial: \"+93\" },\n { code: \"AL\", name: \"Albania\", flag: \"🇦🇱\", dial: \"+355\" },\n { code: \"DZ\", name: \"Algeria\", flag: \"🇩🇿\", dial: \"+213\" },\n { code: \"AD\", name: \"Andorra\", flag: \"🇦🇩\", dial: \"+376\" },\n { code: \"AO\", name: \"Angola\", flag: \"🇦🇴\", dial: \"+244\" },\n { code: \"AG\", name: \"Antigua and Barbuda\", flag: \"🇦🇬\", dial: \"+1268\" },\n { code: \"AR\", name: \"Argentina\", flag: \"🇦🇷\", dial: \"+54\" },\n { code: \"AM\", name: \"Armenia\", flag: \"🇦🇲\", dial: \"+374\" },\n { code: \"AU\", name: \"Australia\", flag: \"🇦🇺\", dial: \"+61\" },\n { code: \"AT\", name: \"Austria\", flag: \"🇦🇹\", dial: \"+43\" },\n { code: \"AZ\", name: \"Azerbaijan\", flag: \"🇦🇿\", dial: \"+994\" },\n { code: \"BS\", name: \"Bahamas\", flag: \"🇧🇸\", dial: \"+1242\" },\n { code: \"BH\", name: \"Bahrain\", flag: \"🇧🇭\", dial: \"+973\" },\n { code: \"BD\", name: \"Bangladesh\", flag: \"🇧🇩\", dial: \"+880\" },\n { code: \"BB\", name: \"Barbados\", flag: \"🇧🇧\", dial: \"+1246\" },\n { code: \"BY\", name: \"Belarus\", flag: \"🇧🇾\", dial: \"+375\" },\n { code: \"BE\", name: \"Belgium\", flag: \"🇧🇪\", dial: \"+32\" },\n { code: \"BZ\", name: \"Belize\", flag: \"🇧🇿\", dial: \"+501\" },\n { code: \"BJ\", name: \"Benin\", flag: \"🇧🇯\", dial: \"+229\" },\n { code: \"BT\", name: \"Bhutan\", flag: \"🇧🇹\", dial: \"+975\" },\n { code: \"BO\", name: \"Bolivia\", flag: \"🇧🇴\", dial: \"+591\" },\n { code: \"BA\", name: \"Bosnia and Herzegovina\", flag: \"🇧🇦\", dial: \"+387\" },\n { code: \"BW\", name: \"Botswana\", flag: \"🇧🇼\", dial: \"+267\" },\n { code: \"BN\", name: \"Brunei\", flag: \"🇧🇳\", dial: \"+673\" },\n { code: \"BG\", name: \"Bulgaria\", flag: \"🇧🇬\", dial: \"+359\" },\n { code: \"BF\", name: \"Burkina Faso\", flag: \"🇧🇫\", dial: \"+226\" },\n { code: \"BI\", name: \"Burundi\", flag: \"🇧🇮\", dial: \"+257\" },\n { code: \"CV\", name: \"Cabo Verde\", flag: \"🇨🇻\", dial: \"+238\" },\n { code: \"KH\", name: \"Cambodia\", flag: \"🇰🇭\", dial: \"+855\" },\n { code: \"CM\", name: \"Cameroon\", flag: \"🇨🇲\", dial: \"+237\" },\n { code: \"CA\", name: \"Canada\", flag: \"🇨🇦\", dial: \"+1\" },\n { code: \"CF\", name: \"Central African Republic\", flag: \"🇨🇫\", dial: \"+236\" },\n { code: \"TD\", name: \"Chad\", flag: \"🇹🇩\", dial: \"+235\" },\n { code: \"CL\", name: \"Chile\", flag: \"🇨🇱\", dial: \"+56\" },\n { code: \"CN\", name: \"China\", flag: \"🇨🇳\", dial: \"+86\" },\n { code: \"CO\", name: \"Colombia\", flag: \"🇨🇴\", dial: \"+57\" },\n { code: \"KM\", name: \"Comoros\", flag: \"🇰🇲\", dial: \"+269\" },\n { code: \"CG\", name: \"Congo\", flag: \"🇨🇬\", dial: \"+242\" },\n { code: \"CD\", name: \"Congo (DRC)\", flag: \"🇨🇩\", dial: \"+243\" },\n { code: \"CR\", name: \"Costa Rica\", flag: \"🇨🇷\", dial: \"+506\" },\n { code: \"HR\", name: \"Croatia\", flag: \"🇭🇷\", dial: \"+385\" },\n { code: \"CU\", name: \"Cuba\", flag: \"🇨🇺\", dial: \"+53\" },\n { code: \"CY\", name: \"Cyprus\", flag: \"🇨🇾\", dial: \"+357\" },\n { code: \"CZ\", name: \"Czech Republic\", flag: \"🇨🇿\", dial: \"+420\" },\n { code: \"DK\", name: \"Denmark\", flag: \"🇩🇰\", dial: \"+45\" },\n { code: \"DJ\", name: \"Djibouti\", flag: \"🇩🇯\", dial: \"+253\" },\n { code: \"DM\", name: \"Dominica\", flag: \"🇩🇲\", dial: \"+1767\" },\n { code: \"DO\", name: \"Dominican Republic\", flag: \"🇩🇴\", dial: \"+1809\" },\n { code: \"EC\", name: \"Ecuador\", flag: \"🇪🇨\", dial: \"+593\" },\n { code: \"EG\", name: \"Egypt\", flag: \"🇪🇬\", dial: \"+20\" },\n { code: \"SV\", name: \"El Salvador\", flag: \"🇸🇻\", dial: \"+503\" },\n { code: \"GQ\", name: \"Equatorial Guinea\", flag: \"🇬🇶\", dial: \"+240\" },\n { code: \"ER\", name: \"Eritrea\", flag: \"🇪🇷\", dial: \"+291\" },\n { code: \"EE\", name: \"Estonia\", flag: \"🇪🇪\", dial: \"+372\" },\n { code: \"SZ\", name: \"Eswatini\", flag: \"🇸🇿\", dial: \"+268\" },\n { code: \"ET\", name: \"Ethiopia\", flag: \"🇪🇹\", dial: \"+251\" },\n { code: \"FJ\", name: \"Fiji\", flag: \"🇫🇯\", dial: \"+679\" },\n { code: \"FI\", name: \"Finland\", flag: \"🇫🇮\", dial: \"+358\" },\n { code: \"GA\", name: \"Gabon\", flag: \"🇬🇦\", dial: \"+241\" },\n { code: \"GM\", name: \"Gambia\", flag: \"🇬🇲\", dial: \"+220\" },\n { code: \"GE\", name: \"Georgia\", flag: \"🇬🇪\", dial: \"+995\" },\n { code: \"GH\", name: \"Ghana\", flag: \"🇬🇭\", dial: \"+233\" },\n { code: \"GR\", name: \"Greece\", flag: \"🇬🇷\", dial: \"+30\" },\n { code: \"GD\", name: \"Grenada\", flag: \"🇬🇩\", dial: \"+1473\" },\n { code: \"GT\", name: \"Guatemala\", flag: \"🇬🇹\", dial: \"+502\" },\n { code: \"GN\", name: \"Guinea\", flag: \"🇬🇳\", dial: \"+224\" },\n { code: \"GW\", name: \"Guinea-Bissau\", flag: \"🇬🇼\", dial: \"+245\" },\n { code: \"GY\", name: \"Guyana\", flag: \"🇬🇾\", dial: \"+592\" },\n { code: \"HT\", name: \"Haiti\", flag: \"🇭🇹\", dial: \"+509\" },\n { code: \"HN\", name: \"Honduras\", flag: \"🇭🇳\", dial: \"+504\" },\n { code: \"HU\", name: \"Hungary\", flag: \"🇭🇺\", dial: \"+36\" },\n { code: \"IS\", name: \"Iceland\", flag: \"🇮🇸\", dial: \"+354\" },\n { code: \"IN\", name: \"India\", flag: \"🇮🇳\", dial: \"+91\" },\n { code: \"ID\", name: \"Indonesia\", flag: \"🇮🇩\", dial: \"+62\" },\n { code: \"IR\", name: \"Iran\", flag: \"🇮🇷\", dial: \"+98\" },\n { code: \"IQ\", name: \"Iraq\", flag: \"🇮🇶\", dial: \"+964\" },\n { code: \"IE\", name: \"Ireland\", flag: \"🇮🇪\", dial: \"+353\" },\n { code: \"IL\", name: \"Israel\", flag: \"🇮🇱\", dial: \"+972\" },\n { code: \"IT\", name: \"Italy\", flag: \"🇮🇹\", dial: \"+39\" },\n { code: \"JM\", name: \"Jamaica\", flag: \"🇯🇲\", dial: \"+1876\" },\n { code: \"JP\", name: \"Japan\", flag: \"🇯🇵\", dial: \"+81\" },\n { code: \"JO\", name: \"Jordan\", flag: \"🇯🇴\", dial: \"+962\" },\n { code: \"KZ\", name: \"Kazakhstan\", flag: \"🇰🇿\", dial: \"+7\" },\n { code: \"KE\", name: \"Kenya\", flag: \"🇰🇪\", dial: \"+254\" },\n { code: \"KI\", name: \"Kiribati\", flag: \"🇰🇮\", dial: \"+686\" },\n { code: \"KW\", name: \"Kuwait\", flag: \"🇰🇼\", dial: \"+965\" },\n { code: \"KG\", name: \"Kyrgyzstan\", flag: \"🇰🇬\", dial: \"+996\" },\n { code: \"LA\", name: \"Laos\", flag: \"🇱🇦\", dial: \"+856\" },\n { code: \"LV\", name: \"Latvia\", flag: \"🇱🇻\", dial: \"+371\" },\n { code: \"LB\", name: \"Lebanon\", flag: \"🇱🇧\", dial: \"+961\" },\n { code: \"LS\", name: \"Lesotho\", flag: \"🇱🇸\", dial: \"+266\" },\n { code: \"LR\", name: \"Liberia\", flag: \"🇱🇷\", dial: \"+231\" },\n { code: \"LY\", name: \"Libya\", flag: \"🇱🇾\", dial: \"+218\" },\n { code: \"LI\", name: \"Liechtenstein\", flag: \"🇱🇮\", dial: \"+423\" },\n { code: \"LT\", name: \"Lithuania\", flag: \"🇱🇹\", dial: \"+370\" },\n { code: \"LU\", name: \"Luxembourg\", flag: \"🇱🇺\", dial: \"+352\" },\n { code: \"MG\", name: \"Madagascar\", flag: \"🇲🇬\", dial: \"+261\" },\n { code: \"MW\", name: \"Malawi\", flag: \"🇲🇼\", dial: \"+265\" },\n { code: \"MY\", name: \"Malaysia\", flag: \"🇲🇾\", dial: \"+60\" },\n { code: \"MV\", name: \"Maldives\", flag: \"🇲🇻\", dial: \"+960\" },\n { code: \"ML\", name: \"Mali\", flag: \"🇲🇱\", dial: \"+223\" },\n { code: \"MT\", name: \"Malta\", flag: \"🇲🇹\", dial: \"+356\" },\n { code: \"MH\", name: \"Marshall Islands\", flag: \"🇲🇭\", dial: \"+692\" },\n { code: \"MR\", name: \"Mauritania\", flag: \"🇲🇷\", dial: \"+222\" },\n { code: \"MU\", name: \"Mauritius\", flag: \"🇲🇺\", dial: \"+230\" },\n { code: \"MX\", name: \"Mexico\", flag: \"🇲🇽\", dial: \"+52\" },\n { code: \"FM\", name: \"Micronesia\", flag: \"🇫🇲\", dial: \"+691\" },\n { code: \"MD\", name: \"Moldova\", flag: \"🇲🇩\", dial: \"+373\" },\n { code: \"MC\", name: \"Monaco\", flag: \"🇲🇨\", dial: \"+377\" },\n { code: \"MN\", name: \"Mongolia\", flag: \"🇲🇳\", dial: \"+976\" },\n { code: \"ME\", name: \"Montenegro\", flag: \"🇲🇪\", dial: \"+382\" },\n { code: \"MA\", name: \"Morocco\", flag: \"🇲🇦\", dial: \"+212\" },\n { code: \"MZ\", name: \"Mozambique\", flag: \"🇲🇿\", dial: \"+258\" },\n { code: \"MM\", name: \"Myanmar\", flag: \"🇲🇲\", dial: \"+95\" },\n { code: \"NA\", name: \"Namibia\", flag: \"🇳🇦\", dial: \"+264\" },\n { code: \"NR\", name: \"Nauru\", flag: \"🇳🇷\", dial: \"+674\" },\n { code: \"NP\", name: \"Nepal\", flag: \"🇳🇵\", dial: \"+977\" },\n { code: \"NZ\", name: \"New Zealand\", flag: \"🇳🇿\", dial: \"+64\" },\n { code: \"NI\", name: \"Nicaragua\", flag: \"🇳🇮\", dial: \"+505\" },\n { code: \"NE\", name: \"Niger\", flag: \"🇳🇪\", dial: \"+227\" },\n { code: \"NG\", name: \"Nigeria\", flag: \"🇳🇬\", dial: \"+234\" },\n { code: \"KP\", name: \"North Korea\", flag: \"🇰🇵\", dial: \"+850\" },\n { code: \"MK\", name: \"North Macedonia\", flag: \"🇲🇰\", dial: \"+389\" },\n { code: \"NO\", name: \"Norway\", flag: \"🇳🇴\", dial: \"+47\" },\n { code: \"OM\", name: \"Oman\", flag: \"🇴🇲\", dial: \"+968\" },\n { code: \"PK\", name: \"Pakistan\", flag: \"🇵🇰\", dial: \"+92\" },\n { code: \"PW\", name: \"Palau\", flag: \"🇵🇼\", dial: \"+680\" },\n { code: \"PS\", name: \"Palestine\", flag: \"🇵🇸\", dial: \"+970\" },\n { code: \"PA\", name: \"Panama\", flag: \"🇵🇦\", dial: \"+507\" },\n { code: \"PG\", name: \"Papua New Guinea\", flag: \"🇵🇬\", dial: \"+675\" },\n { code: \"PY\", name: \"Paraguay\", flag: \"🇵🇾\", dial: \"+595\" },\n { code: \"PE\", name: \"Peru\", flag: \"🇵🇪\", dial: \"+51\" },\n { code: \"PH\", name: \"Philippines\", flag: \"🇵🇭\", dial: \"+63\" },\n { code: \"PL\", name: \"Poland\", flag: \"🇵🇱\", dial: \"+48\" },\n { code: \"PT\", name: \"Portugal\", flag: \"🇵🇹\", dial: \"+351\" },\n { code: \"QA\", name: \"Qatar\", flag: \"🇶🇦\", dial: \"+974\" },\n { code: \"RO\", name: \"Romania\", flag: \"🇷🇴\", dial: \"+40\" },\n { code: \"RU\", name: \"Russia\", flag: \"🇷🇺\", dial: \"+7\" },\n { code: \"RW\", name: \"Rwanda\", flag: \"🇷🇼\", dial: \"+250\" },\n { code: \"KN\", name: \"Saint Kitts and Nevis\", flag: \"🇰🇳\", dial: \"+1869\" },\n { code: \"LC\", name: \"Saint Lucia\", flag: \"🇱🇨\", dial: \"+1758\" },\n { code: \"VC\", name: \"Saint Vincent and Grenadines\",flag: \"🇻🇨\", dial: \"+1784\"},\n { code: \"WS\", name: \"Samoa\", flag: \"🇼🇸\", dial: \"+685\" },\n { code: \"SM\", name: \"San Marino\", flag: \"🇸🇲\", dial: \"+378\" },\n { code: \"ST\", name: \"São Tomé and Príncipe\", flag: \"🇸🇹\", dial: \"+239\" },\n { code: \"SA\", name: \"Saudi Arabia\", flag: \"🇸🇦\", dial: \"+966\" },\n { code: \"SN\", name: \"Senegal\", flag: \"🇸🇳\", dial: \"+221\" },\n { code: \"RS\", name: \"Serbia\", flag: \"🇷🇸\", dial: \"+381\" },\n { code: \"SC\", name: \"Seychelles\", flag: \"🇸🇨\", dial: \"+248\" },\n { code: \"SL\", name: \"Sierra Leone\", flag: \"🇸🇱\", dial: \"+232\" },\n { code: \"SG\", name: \"Singapore\", flag: \"🇸🇬\", dial: \"+65\" },\n { code: \"SK\", name: \"Slovakia\", flag: \"🇸🇰\", dial: \"+421\" },\n { code: \"SI\", name: \"Slovenia\", flag: \"🇸🇮\", dial: \"+386\" },\n { code: \"SB\", name: \"Solomon Islands\", flag: \"🇸🇧\", dial: \"+677\" },\n { code: \"SO\", name: \"Somalia\", flag: \"🇸🇴\", dial: \"+252\" },\n { code: \"ZA\", name: \"South Africa\", flag: \"🇿🇦\", dial: \"+27\" },\n { code: \"KR\", name: \"South Korea\", flag: \"🇰🇷\", dial: \"+82\" },\n { code: \"SS\", name: \"South Sudan\", flag: \"🇸🇸\", dial: \"+211\" },\n { code: \"ES\", name: \"Spain\", flag: \"🇪🇸\", dial: \"+34\" },\n { code: \"LK\", name: \"Sri Lanka\", flag: \"🇱🇰\", dial: \"+94\" },\n { code: \"SD\", name: \"Sudan\", flag: \"🇸🇩\", dial: \"+249\" },\n { code: \"SR\", name: \"Suriname\", flag: \"🇸🇷\", dial: \"+597\" },\n { code: \"SE\", name: \"Sweden\", flag: \"🇸🇪\", dial: \"+46\" },\n { code: \"CH\", name: \"Switzerland\", flag: \"🇨🇭\", dial: \"+41\" },\n { code: \"SY\", name: \"Syria\", flag: \"🇸🇾\", dial: \"+963\" },\n { code: \"TW\", name: \"Taiwan\", flag: \"🇹🇼\", dial: \"+886\" },\n { code: \"TJ\", name: \"Tajikistan\", flag: \"🇹🇯\", dial: \"+992\" },\n { code: \"TZ\", name: \"Tanzania\", flag: \"🇹🇿\", dial: \"+255\" },\n { code: \"TH\", name: \"Thailand\", flag: \"🇹🇭\", dial: \"+66\" },\n { code: \"TL\", name: \"Timor-Leste\", flag: \"🇹🇱\", dial: \"+670\" },\n { code: \"TG\", name: \"Togo\", flag: \"🇹🇬\", dial: \"+228\" },\n { code: \"TO\", name: \"Tonga\", flag: \"🇹🇴\", dial: \"+676\" },\n { code: \"TT\", name: \"Trinidad and Tobago\", flag: \"🇹🇹\", dial: \"+1868\" },\n { code: \"TN\", name: \"Tunisia\", flag: \"🇹🇳\", dial: \"+216\" },\n { code: \"TR\", name: \"Turkey\", flag: \"🇹🇷\", dial: \"+90\" },\n { code: \"TM\", name: \"Turkmenistan\", flag: \"🇹🇲\", dial: \"+993\" },\n { code: \"TV\", name: \"Tuvalu\", flag: \"🇹🇻\", dial: \"+688\" },\n { code: \"UG\", name: \"Uganda\", flag: \"🇺🇬\", dial: \"+256\" },\n { code: \"UA\", name: \"Ukraine\", flag: \"🇺🇦\", dial: \"+380\" },\n { code: \"AE\", name: \"United Arab Emirates\", flag: \"🇦🇪\", dial: \"+971\" },\n { code: \"UY\", name: \"Uruguay\", flag: \"🇺🇾\", dial: \"+598\" },\n { code: \"UZ\", name: \"Uzbekistan\", flag: \"🇺🇿\", dial: \"+998\" },\n { code: \"VU\", name: \"Vanuatu\", flag: \"🇻🇺\", dial: \"+678\" },\n { code: \"VA\", name: \"Vatican City\", flag: \"🇻🇦\", dial: \"+379\" },\n { code: \"VE\", name: \"Venezuela\", flag: \"🇻🇪\", dial: \"+58\" },\n { code: \"VN\", name: \"Vietnam\", flag: \"🇻🇳\", dial: \"+84\" },\n { code: \"YE\", name: \"Yemen\", flag: \"🇾🇪\", dial: \"+967\" },\n { code: \"ZM\", name: \"Zambia\", flag: \"🇿🇲\", dial: \"+260\" },\n { code: \"ZW\", name: \"Zimbabwe\", flag: \"🇿🇼\", dial: \"+263\" },\n];\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [...PHONE_PRIORITY, ...PHONE_REST];\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { PHONE_COUNTRIES, PHONE_PRIORITY, PHONE_REST } from \"@/lib/phone-countries\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PhoneCountrySelectProps {\n value: string; // ISO code e.g. \"BR\"\n onChange: (code: string) => void;\n className?: string;\n}\n\nexport function PhoneCountrySelect({\n value,\n onChange,\n className,\n}: PhoneCountrySelectProps) {\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const selected =\n PHONE_COUNTRIES.find((c) => c.code === value) ?? PHONE_COUNTRIES[0];\n\n /* Close on click outside */\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n /* Scroll selected item into view when opening */\n React.useEffect(() => {\n if (!open || !listRef.current) return;\n const activeEl = listRef.current.querySelector(\"[data-selected=true]\");\n activeEl?.scrollIntoView({ block: \"nearest\" });\n }, [open]);\n\n const handleSelect = (code: string) => {\n onChange(code);\n setOpen(false);\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative shrink-0\", className)}>\n {/* Trigger — shows only flag + dial code */}\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n \"flex h-14 items-center gap-1.5 rounded-l-lg border border-r-0 border-border bg-muted\",\n \"px-3 font-ui text-sm text-foreground transition-colors\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n <span className=\"text-base leading-none\">{selected.flag}</span>\n <span className=\"tabular-nums\">{selected.dial}</span>\n <ChevronDownIcon\n className={cn(\n \"h-3.5 w-3.5 text-muted-foreground transition-transform\",\n open && \"rotate-180\"\n )}\n />\n </button>\n\n {/* Dropdown list */}\n {open && (\n <div\n ref={listRef}\n role=\"listbox\"\n className={cn(\n \"absolute left-0 top-[calc(100%+4px)] z-50\",\n \"w-64 max-h-64 overflow-y-auto\",\n \"rounded-lg border border-border bg-background shadow-lg\",\n \"py-1\"\n )}\n >\n {/* Priority countries */}\n {PHONE_PRIORITY.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n role=\"option\"\n data-selected={c.code === value}\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center gap-2.5 px-3 py-2 text-sm font-ui text-left\",\n \"transition-colors hover:bg-muted focus:outline-none focus:bg-muted\",\n c.code === value && \"bg-primary/8 text-primary font-semibold\"\n )}\n >\n <span className=\"text-base leading-none shrink-0\">{c.flag}</span>\n <span className=\"w-10 shrink-0 tabular-nums text-muted-foreground\">\n {c.dial}\n </span>\n <span className=\"truncate text-foreground\">{c.name}</span>\n </button>\n ))}\n\n {/* Divider */}\n <div className=\"my-1 h-px bg-border\" />\n\n {/* Rest alphabetical */}\n {PHONE_REST.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n role=\"option\"\n data-selected={c.code === value}\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center gap-2.5 px-3 py-2 text-sm font-ui text-left\",\n \"transition-colors hover:bg-muted focus:outline-none focus:bg-muted\",\n c.code === value && \"bg-primary/8 text-primary font-semibold\"\n )}\n >\n <span className=\"text-base leading-none shrink-0\">{c.flag}</span>\n <span className=\"w-10 shrink-0 tabular-nums text-muted-foreground\">\n {c.dial}\n </span>\n <span className=\"truncate text-foreground\">{c.name}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport {\n CalendarIcon,\n MapPinIcon,\n CheckIcon,\n XIcon,\n ChevronRightIcon,\n ChevronDownIcon,\n MailIcon,\n PhoneIcon,\n MapIcon,\n CheckCircle2Icon,\n ArrowLeftIcon,\n UsersIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogClose,\n} from \"@/components/ui/dialog\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { FloatingInput } from \"./FloatingInput\";\nimport { PhoneCountrySelect } from \"./PhoneCountrySelect\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface OfferSummaryLineItem {\n label: string;\n price: string;\n /** Rendered in success green with a − prefix */\n isDiscount?: boolean;\n}\n\nexport interface OfferOptionalItem {\n id: string;\n label: string;\n /** e.g. \"R$150.00 per person\" */\n pricePerPerson: string;\n defaultChecked?: boolean;\n}\n\nexport interface OfferAdventureItem {\n id: string;\n /** Short reference code shown as a badge, e.g. \"EX012345\" */\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n /** Start date string, e.g. \"April 23, 2026\" */\n dateFrom: string;\n /** End date string, e.g. \"April 26, 2026\" */\n dateTo: string;\n location?: string;\n /** Optional add-ons that replace the former tags section */\n optionals?: OfferOptionalItem[];\n slots?: { adults: number; children?: number };\n description?: string;\n included?: string[];\n notIncluded?: string[];\n cancellationPolicy?: string[];\n totalPrice: string;\n lineItems?: OfferSummaryLineItem[];\n /** Called when user clicks \"Remove from proposal\" */\n onRemove?: () => void;\n /** Extra rich content below the standard blocks (e.g. traveller table, HTML itinerary from the host app). */\n detailsSlot?: React.ReactNode;\n}\n\nexport interface OfferDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n}\n\nexport interface OfferAgentInfo {\n name: string;\n company?: string;\n avatar?: string;\n whatsappUrl?: string;\n email?: string;\n scheduleUrl?: string;\n}\n\nexport interface OfferProps {\n /** Logo URL (defaults to /logo-planetaexo.png) */\n logo?: string;\n logoAlt?: string;\n title: string;\n /** Shown below the title (e.g. agent + validity). */\n subtitle?: React.ReactNode;\n adventures: OfferAdventureItem[];\n subtotal?: string;\n total: string;\n depositInfo?: OfferDepositInfo;\n agent?: OfferAgentInfo;\n onContinue?: () => void;\n continueLabel?: string;\n /** When true, only `onContinue` runs — no embedded booking wizard (host app handles checkout). */\n externalBookingFlow?: boolean;\n /** Inserted after per-adventure summaries, before subtotal (e.g. coupon picker). */\n summaryNotesSlot?: React.ReactNode;\n /** Shown after subtotal, before deposit (e.g. coupon discount). */\n summaryDiscountLine?: { label: string; amount: string };\n /** Disable the primary continue button. */\n continueDisabled?: boolean;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Internal: AdventureCard\n ----------------------------------------------------------------------- */\n\nfunction AdventureCard({ adventure }: { adventure: OfferAdventureItem }) {\n const [checked, setChecked] = React.useState<Set<string>>(\n new Set(adventure.optionals?.filter((o) => o.defaultChecked).map((o) => o.id) ?? [])\n );\n\n const toggleOptional = (id: string) =>\n setChecked((prev) => {\n const next = new Set(prev);\n next.has(id) ? next.delete(id) : next.add(id);\n return next;\n });\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Cover image */}\n <div className=\"aspect-[16/7] overflow-hidden bg-muted\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={adventure.image}\n alt={adventure.imageAlt ?? adventure.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n <div className=\"p-5 lg:p-6 flex flex-col gap-2.5\">\n {/* Reference + Remove row */}\n <div className=\"flex items-center justify-between gap-2 min-h-[22px]\">\n {adventure.reference ? (\n <span className=\"inline-flex items-center rounded-md bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary font-heading tracking-wide\">\n {adventure.reference}\n </span>\n ) : (\n <span />\n )}\n {adventure.onRemove && (\n <button\n type=\"button\"\n onClick={adventure.onRemove}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1 text-xs text-muted-foreground font-ui hover:border-destructive hover:text-destructive transition-colors\"\n >\n <XIcon className=\"w-3 h-3\" />\n Remove\n </button>\n )}\n </div>\n\n {/* Title */}\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug mt-0.5\">\n {adventure.title}\n </h3>\n\n {/* Date range */}\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <CalendarIcon className=\"w-3.5 h-3.5 text-primary shrink-0\" />\n {adventure.dateFrom} → {adventure.dateTo}\n </p>\n\n {/* Location */}\n {adventure.location && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <MapPinIcon className=\"w-3.5 h-3.5 text-primary shrink-0\" />\n {adventure.location}\n </p>\n )}\n\n {/* Optionals */}\n {adventure.optionals && adventure.optionals.length > 0 && (\n <div className=\"mt-2 rounded-xl border border-border bg-muted/30 p-4 flex flex-col gap-3\">\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Available optionals\n </p>\n <div className=\"flex flex-col gap-2\">\n {adventure.optionals.map((opt) => (\n <label\n key={opt.id}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"checkbox\"\n checked={checked.has(opt.id)}\n onChange={() => toggleOptional(opt.id)}\n className=\"h-4 w-4 shrink-0 rounded border-border accent-primary cursor-pointer\"\n />\n <span className=\"text-sm font-sans text-foreground/80 group-hover:text-foreground transition-colors leading-snug\">\n {opt.label}{\" \"}\n <span className=\"text-muted-foreground font-semibold\">({opt.pricePerPerson})</span>\n </span>\n </label>\n ))}\n </div>\n </div>\n )}\n\n {/* Description */}\n {adventure.description && (\n <>\n <Separator className=\"my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Itinerary\n </p>\n <p className=\"text-base text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n </>\n )}\n\n {/* What's included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">O que está incluso</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-foreground/80 font-sans\">\n <CheckIcon className=\"w-4 h-4 text-primary shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* What's not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">O que não está incluso</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-foreground/80 font-sans\">\n <XIcon className=\"w-4 h-4 text-destructive shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Cancellation policy */}\n {adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">Política de cancelamento</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.cancellationPolicy.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-muted-foreground font-sans\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {adventure.detailsSlot && (\n <>\n <Separator className=\"my-1\" />\n <div className=\"flex flex-col gap-3 text-foreground\">{adventure.detailsSlot}</div>\n </>\n )}\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: OfferSidebar\n ----------------------------------------------------------------------- */\n\nfunction OfferSidebar({\n total,\n agent,\n onBook,\n bookLabel,\n bookDisabled,\n}: {\n total: string;\n agent?: OfferAgentInfo;\n onBook?: () => void;\n bookLabel: string;\n bookDisabled?: boolean;\n}) {\n return (\n <div className=\"flex flex-col gap-4\">\n {/* Pricing card — hidden on mobile where the floating footer handles it */}\n <div className=\"hidden lg:flex rounded-2xl border border-border bg-card p-5 flex-col gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-widest text-muted-foreground font-heading mb-1\">\n Booking Total\n </p>\n <p className=\"text-3xl font-black text-primary font-heading leading-none\">{total}</p>\n </div>\n <button\n type=\"button\"\n disabled={bookDisabled}\n onClick={onBook}\n className={cn(\n \"w-full rounded-full bg-primary py-3 text-sm font-bold tracking-wide uppercase\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bookDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n\n {/* Agent card */}\n {agent && (\n <div className=\"rounded-2xl border border-border bg-card p-5 flex flex-col gap-4\">\n <div className=\"flex flex-col items-center gap-3 text-center\">\n {agent.avatar ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={agent.avatar}\n alt={agent.name}\n className=\"w-16 h-16 rounded-full object-cover ring-2 ring-primary/20\"\n />\n ) : (\n <div className=\"w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center\">\n <span className=\"text-xl font-bold text-primary font-heading\">\n {agent.name.charAt(0)}\n </span>\n </div>\n )}\n <div>\n <p className=\"text-sm text-foreground font-sans\">Need help with your offer?</p>\n <p className=\"text-sm font-sans text-foreground mt-0.5\">\n Contact{\" \"}\n <span className=\"font-bold text-foreground font-heading\">{agent.name}</span> your\n travel advisor\n {agent.company && (\n <>\n {\" \"}at{\" \"}\n <span className=\"font-bold text-foreground font-heading\">{agent.company}</span>\n </>\n )}\n </p>\n </div>\n </div>\n\n <Separator />\n\n <div className=\"flex flex-col gap-2\">\n {agent.whatsappUrl && (\n <a\n href={agent.whatsappUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <svg className=\"w-4 h-4 shrink-0 text-[#25D366]\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\" />\n </svg>\n WhatsApp\n </a>\n )}\n {agent.email && (\n <a\n href={`mailto:${agent.email}`}\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <MailIcon className=\"w-4 h-4 shrink-0 text-primary\" />\n Email\n </a>\n )}\n {agent.scheduleUrl && (\n <a\n href={agent.scheduleUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <PhoneIcon className=\"w-4 h-4 shrink-0 text-primary\" />\n Schedule a call\n </a>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: Summary section\n ----------------------------------------------------------------------- */\n\nfunction OfferSummarySection({\n adventures,\n subtotal,\n total,\n depositInfo,\n onContinue,\n continueLabel,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n}: {\n adventures: OfferAdventureItem[];\n subtotal?: string;\n total: string;\n depositInfo?: OfferDepositInfo;\n onContinue?: () => void;\n continueLabel: string;\n summaryNotesSlot?: React.ReactNode;\n summaryDiscountLine?: { label: string; amount: string };\n continueDisabled?: boolean;\n}) {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-5 flex flex-col gap-4\">\n <h3 className=\"font-bold text-foreground font-heading text-base\">Summary</h3>\n <Separator />\n\n <div className=\"flex flex-col gap-4\">\n {adventures.map((adventure, i) => (\n <div key={adventure.id}>\n <div className=\"flex items-start justify-between gap-3\">\n <span className=\"text-sm font-semibold text-foreground font-heading leading-tight\">\n {adventure.title}\n </span>\n <span className=\"text-sm font-semibold text-foreground font-heading shrink-0\">\n {adventure.totalPrice}\n </span>\n </div>\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <div className=\"mt-2 flex flex-col gap-1.5 pl-3 border-l-2 border-border ml-1\">\n {adventure.lineItems.map((item, j) => (\n <div key={j} className=\"flex items-start justify-between gap-3\">\n <span className=\"text-xs text-muted-foreground font-sans leading-tight\">\n {item.label}\n </span>\n <span className={cn(\"text-xs font-sans shrink-0\", item.isDiscount ? \"text-success\" : \"text-muted-foreground\")}>\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n </div>\n )}\n {i < adventures.length - 1 && <Separator className=\"mt-4\" />}\n </div>\n ))}\n </div>\n\n {summaryNotesSlot}\n\n <Separator />\n\n {subtotal && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">Subtotal</span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">{subtotal}</span>\n </div>\n )}\n\n {summaryDiscountLine && (\n <div className=\"flex items-center justify-between text-success\">\n <span className=\"text-sm font-sans\">{summaryDiscountLine.label}</span>\n <span className=\"text-sm font-semibold font-sans shrink-0\">−{summaryDiscountLine.amount}</span>\n </div>\n )}\n\n {depositInfo && (\n <div className=\"flex flex-col gap-1.5 rounded-lg bg-muted/50 border border-border p-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Deposit ({depositInfo.depositPercent}%)</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.depositAmount}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Remaining balance</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.remainingAmount}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Balance due</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.balanceDueDate}</span>\n </div>\n </div>\n )}\n\n <div className=\"flex items-center justify-between pt-1\">\n <span className=\"text-base font-bold text-foreground font-heading\">Total</span>\n <span className=\"text-2xl font-black text-primary font-heading\">{total}</span>\n </div>\n\n <button\n type=\"button\"\n disabled={continueDisabled}\n onClick={onContinue}\n className={cn(\n \"w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n continueDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {continueLabel}\n </button>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Country list + CountrySearchField\n ----------------------------------------------------------------------- */\n\nconst COUNTRIES = [\n { code: \"AF\", name: \"Afghanistan\" }, { code: \"AL\", name: \"Albania\" },\n { code: \"DZ\", name: \"Algeria\" }, { code: \"AO\", name: \"Angola\" },\n { code: \"AR\", name: \"Argentina\" }, { code: \"AM\", name: \"Armenia\" },\n { code: \"AU\", name: \"Australia\" }, { code: \"AT\", name: \"Austria\" },\n { code: \"AZ\", name: \"Azerbaijan\" }, { code: \"BE\", name: \"Belgium\" },\n { code: \"BO\", name: \"Bolivia\" }, { code: \"BA\", name: \"Bosnia\" },\n { code: \"BR\", name: \"Brazil\" }, { code: \"BG\", name: \"Bulgaria\" },\n { code: \"KH\", name: \"Cambodia\" }, { code: \"CA\", name: \"Canada\" },\n { code: \"CL\", name: \"Chile\" }, { code: \"CN\", name: \"China\" },\n { code: \"CO\", name: \"Colombia\" }, { code: \"CR\", name: \"Costa Rica\" },\n { code: \"HR\", name: \"Croatia\" }, { code: \"CU\", name: \"Cuba\" },\n { code: \"CZ\", name: \"Czech Republic\" }, { code: \"DK\", name: \"Denmark\" },\n { code: \"DO\", name: \"Dominican Republic\" }, { code: \"EC\", name: \"Ecuador\" },\n { code: \"EG\", name: \"Egypt\" }, { code: \"SV\", name: \"El Salvador\" },\n { code: \"ET\", name: \"Ethiopia\" }, { code: \"FI\", name: \"Finland\" },\n { code: \"FR\", name: \"France\" }, { code: \"GE\", name: \"Georgia\" },\n { code: \"DE\", name: \"Germany\" }, { code: \"GH\", name: \"Ghana\" },\n { code: \"GR\", name: \"Greece\" }, { code: \"GT\", name: \"Guatemala\" },\n { code: \"HN\", name: \"Honduras\" }, { code: \"HK\", name: \"Hong Kong\" },\n { code: \"HU\", name: \"Hungary\" }, { code: \"IS\", name: \"Iceland\" },\n { code: \"IN\", name: \"India\" }, { code: \"ID\", name: \"Indonesia\" },\n { code: \"IR\", name: \"Iran\" }, { code: \"IQ\", name: \"Iraq\" },\n { code: \"IE\", name: \"Ireland\" }, { code: \"IL\", name: \"Israel\" },\n { code: \"IT\", name: \"Italy\" }, { code: \"JM\", name: \"Jamaica\" },\n { code: \"JP\", name: \"Japan\" }, { code: \"JO\", name: \"Jordan\" },\n { code: \"KZ\", name: \"Kazakhstan\" }, { code: \"KE\", name: \"Kenya\" },\n { code: \"KW\", name: \"Kuwait\" }, { code: \"LB\", name: \"Lebanon\" },\n { code: \"LY\", name: \"Libya\" }, { code: \"MY\", name: \"Malaysia\" },\n { code: \"MX\", name: \"Mexico\" }, { code: \"MA\", name: \"Morocco\" },\n { code: \"MZ\", name: \"Mozambique\" }, { code: \"NP\", name: \"Nepal\" },\n { code: \"NL\", name: \"Netherlands\" }, { code: \"NZ\", name: \"New Zealand\" },\n { code: \"NI\", name: \"Nicaragua\" }, { code: \"NG\", name: \"Nigeria\" },\n { code: \"NO\", name: \"Norway\" }, { code: \"PK\", name: \"Pakistan\" },\n { code: \"PA\", name: \"Panama\" }, { code: \"PY\", name: \"Paraguay\" },\n { code: \"PE\", name: \"Peru\" }, { code: \"PH\", name: \"Philippines\" },\n { code: \"PL\", name: \"Poland\" }, { code: \"PT\", name: \"Portugal\" },\n { code: \"QA\", name: \"Qatar\" }, { code: \"RO\", name: \"Romania\" },\n { code: \"RU\", name: \"Russia\" }, { code: \"SA\", name: \"Saudi Arabia\" },\n { code: \"SN\", name: \"Senegal\" }, { code: \"RS\", name: \"Serbia\" },\n { code: \"SG\", name: \"Singapore\" }, { code: \"ZA\", name: \"South Africa\" },\n { code: \"KR\", name: \"South Korea\" }, { code: \"ES\", name: \"Spain\" },\n { code: \"LK\", name: \"Sri Lanka\" }, { code: \"SE\", name: \"Sweden\" },\n { code: \"CH\", name: \"Switzerland\" }, { code: \"TW\", name: \"Taiwan\" },\n { code: \"TZ\", name: \"Tanzania\" }, { code: \"TH\", name: \"Thailand\" },\n { code: \"TN\", name: \"Tunisia\" }, { code: \"TR\", name: \"Turkey\" },\n { code: \"UA\", name: \"Ukraine\" }, { code: \"AE\", name: \"United Arab Emirates\" },\n { code: \"GB\", name: \"United Kingdom\" }, { code: \"US\", name: \"United States\" },\n { code: \"UY\", name: \"Uruguay\" }, { code: \"UZ\", name: \"Uzbekistan\" },\n { code: \"VE\", name: \"Venezuela\" }, { code: \"VN\", name: \"Vietnam\" },\n { code: \"YE\", name: \"Yemen\" }, { code: \"ZW\", name: \"Zimbabwe\" },\n] as const;\n\nfunction CountrySearchField({\n value,\n onChange,\n required,\n}: {\n value: string;\n onChange: (code: string) => void;\n required?: boolean;\n}) {\n const [query, setQuery] = React.useState(\"\");\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n\n const selected = COUNTRIES.find((c) => c.code === value);\n const isFloated = open || !!selected;\n\n const filtered = query.trim()\n ? COUNTRIES.filter((c) => c.name.toLowerCase().includes(query.toLowerCase()))\n : COUNTRIES;\n\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) {\n setOpen(false);\n setQuery(\"\");\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const handleOpen = () => {\n setOpen(true);\n setQuery(\"\");\n setTimeout(() => searchRef.current?.focus(), 0);\n };\n\n const handleSelect = (code: string) => {\n onChange(code);\n setOpen(false);\n setQuery(\"\");\n };\n\n return (\n <div ref={containerRef} className=\"relative w-full\">\n {/* Trigger */}\n <button\n type=\"button\"\n onClick={handleOpen}\n className={cn(\n \"relative flex w-full items-center rounded-lg border border-border bg-background h-14 px-3 text-left transition-colors\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n <span\n className={cn(\n \"pointer-events-none absolute left-3 transition-all duration-150 font-ui\",\n isFloated\n ? \"top-2 text-xs text-primary\"\n : \"top-1/2 -translate-y-1/2 text-base text-muted-foreground\"\n )}\n >\n Country{required && <span className=\"text-primary ml-0.5\">*</span>}\n </span>\n <span className={cn(\"flex-1 pt-3 text-base font-ui truncate\", selected ? \"text-foreground\" : \"invisible\")}>\n {selected?.name ?? \"—\"}\n </span>\n <ChevronDownIcon className={cn(\"h-4 w-4 shrink-0 text-muted-foreground transition-transform\", open && \"rotate-180\")} />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-50 rounded-xl border border-border bg-background shadow-lg overflow-hidden\">\n {/* Search */}\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n <SearchIcon className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n <input\n ref={searchRef}\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search country…\"\n className=\"flex-1 bg-transparent text-sm font-ui text-foreground placeholder:text-muted-foreground focus:outline-none\"\n />\n </div>\n {/* Results */}\n <div className=\"max-h-52 overflow-y-auto py-1\">\n {filtered.length === 0 ? (\n <p className=\"px-3 py-2 text-sm font-ui text-muted-foreground\">No countries found</p>\n ) : (\n filtered.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center px-3 py-2 text-sm font-ui text-left transition-colors hover:bg-muted\",\n c.code === value && \"bg-primary/10 text-primary font-semibold\"\n )}\n >\n {c.name}\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: BirthDateField — typed input + calendar dropdown for birthdays\n ----------------------------------------------------------------------- */\n\nfunction BirthDateField({\n label,\n required,\n value,\n onChange,\n}: {\n label: string;\n required?: boolean;\n value: Date | undefined;\n onChange: (date: Date | undefined) => void;\n}) {\n const [open, setOpen] = React.useState(false);\n const [text, setText] = React.useState(value ? format(value, \"dd/MM/yyyy\") : \"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputId = React.useId();\n\n /* Sync text when value changes from calendar selection */\n React.useEffect(() => {\n setText(value ? format(value, \"dd/MM/yyyy\") : \"\");\n }, [value]);\n\n /* Close on outside click */\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 8);\n let formatted = digits.slice(0, 2);\n if (digits.length > 2) formatted += \"/\" + digits.slice(2, 4);\n if (digits.length > 4) formatted += \"/\" + digits.slice(4, 8);\n setText(formatted);\n\n if (formatted.length === 10) {\n const [dd, mm, yyyy] = formatted.split(\"/\").map(Number);\n const d = new Date(yyyy, mm - 1, dd);\n if (!isNaN(d.getTime()) && d.getFullYear() === yyyy && d <= new Date()) {\n onChange(d);\n return;\n }\n }\n onChange(undefined);\n };\n\n return (\n <div ref={containerRef} className=\"relative w-full\">\n {/* Input row */}\n <div\n className={cn(\n \"flex items-center rounded-lg border border-border bg-background h-14 transition-colors\",\n open\n ? \"border-primary ring-1 ring-primary\"\n : \"focus-within:border-primary focus-within:ring-1 focus-within:ring-primary\"\n )}\n >\n <div className=\"relative flex-1 h-full\">\n {/* Label always floated */}\n <label\n htmlFor={inputId}\n className=\"pointer-events-none absolute left-3 top-2 text-xs text-muted-foreground font-ui\"\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n <input\n id={inputId}\n type=\"text\"\n inputMode=\"numeric\"\n value={text}\n onChange={handleTextChange}\n placeholder=\"dd/mm/yyyy\"\n className=\"block h-full w-full bg-transparent px-3 pt-5 pb-2 text-base text-foreground font-ui focus:outline-none placeholder:text-muted-foreground/50\"\n />\n </div>\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n tabIndex={-1}\n aria-label=\"Open calendar\"\n className=\"px-3 h-full flex items-center text-muted-foreground hover:text-primary transition-colors focus:outline-none\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Calendar dropdown */}\n {open && (\n <div className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-50 rounded-xl border border-border bg-background shadow-lg overflow-hidden\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(date) => {\n onChange(date);\n setOpen(false);\n }}\n defaultMonth={value ?? new Date(1990, 0, 1)}\n disabled={{ after: new Date() }}\n className=\"font-ui w-full\"\n autoFocus\n />\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: Booking Wizard\n Steps: responsible → travellers → payment → confirmed\n ----------------------------------------------------------------------- */\n\ntype BookingStep = \"responsible\" | \"travellers\" | \"payment\" | \"confirmed\";\n\nconst WIZARD_STEPS: { id: BookingStep; label: string }[] = [\n { id: \"responsible\", label: \"Responsible party details\" },\n { id: \"travellers\", label: \"Travellers\" },\n { id: \"payment\", label: \"Payment and terms\" },\n];\n\ninterface TravellerValues {\n firstName: string;\n lastName: string;\n dateOfBirth: Date | undefined;\n email: string;\n}\n\nfunction BookingWizard({\n adventures,\n total,\n depositInfo,\n onCancel,\n}: {\n adventures: OfferAdventureItem[];\n total: string;\n depositInfo?: OfferDepositInfo;\n onCancel?: () => void;\n}) {\n const [step, setStep] = React.useState<BookingStep>(\"responsible\");\n const [error, setError] = React.useState<string | null>(null);\n\n /* Step 1 — responsible party */\n const [responsible, setResponsible] = React.useState({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n phoneCountry: \"BR\",\n country: \"\",\n passport: \"\",\n notes: \"\",\n });\n\n /* Step 2 — travellers */\n const totalAdults = adventures.reduce((s, a) => s + (a.slots?.adults ?? 1), 0);\n const totalChildren = adventures.reduce((s, a) => s + (a.slots?.children ?? 0), 0);\n const totalPax = totalAdults + totalChildren;\n\n const [travellers, setTravellers] = React.useState<TravellerValues[]>(\n Array.from({ length: Math.max(totalPax, 1) }, () => ({\n firstName: \"\",\n lastName: \"\",\n dateOfBirth: undefined,\n email: \"\",\n }))\n );\n\n /* Step 3 — payment */\n const [payAmount, setPayAmount] = React.useState<\"deposit\" | \"full\">(\"full\");\n const [payMethod, setPayMethod] = React.useState<\"stripe\" | \"pix\" | \"bank\">(\"stripe\");\n const [termsAccepted, setTermsAccepted] = React.useState(false);\n const [termsModalOpen, setTermsModalOpen] = React.useState(false);\n\n const setR = <K extends keyof typeof responsible>(k: K, v: (typeof responsible)[K]) =>\n setResponsible((p) => ({ ...p, [k]: v }));\n\n const setT = (i: number, k: \"firstName\" | \"lastName\" | \"email\", v: string) =>\n setTravellers((prev) => prev.map((t, idx) => (idx === i ? { ...t, [k]: v } : t)));\n\n const setTDob = (i: number, v: Date | undefined) =>\n setTravellers((prev) => prev.map((t, idx) => (idx === i ? { ...t, dateOfBirth: v } : t)));\n\n const stepIndex = WIZARD_STEPS.findIndex((s) => s.id === step);\n\n const goNext = () => {\n setError(null);\n\n if (step === \"responsible\") {\n if (!responsible.firstName || !responsible.lastName || !responsible.email) {\n setError(\"Please fill in all required fields.\");\n return;\n }\n if (!responsible.passport) {\n setError(\"Please enter the document (CPF or passport) according to country.\");\n return;\n }\n setStep(\"travellers\");\n } else if (step === \"travellers\") {\n const missing = travellers.some((t) => !t.firstName || !t.lastName);\n if (missing) {\n setError(\"Please fill in first and last name for all passengers.\");\n return;\n }\n setStep(\"payment\");\n } else if (step === \"payment\") {\n if (!termsAccepted) {\n setError(\"You must accept the terms to complete.\");\n return;\n }\n setStep(\"confirmed\");\n }\n };\n\n const goPrev = () => {\n setError(null);\n if (step === \"travellers\") setStep(\"responsible\");\n else if (step === \"payment\") setStep(\"travellers\");\n };\n\n /* Deposit amount label */\n const depositLabel = depositInfo\n ? `Pay deposit (${depositInfo.depositPercent}%) — ${depositInfo.depositAmount}`\n : \"Pay deposit\";\n const fullLabel = `Pay full amount — ${total}`;\n\n if (step === \"confirmed\") {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-8 flex flex-col items-center gap-6 text-center\">\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10\">\n <CheckCircle2Icon className=\"w-10 h-10 text-primary\" />\n </div>\n <div>\n <h3 className=\"text-2xl font-black text-foreground font-heading\">Booking confirmed!</h3>\n <p className=\"mt-2 text-sm text-muted-foreground font-sans max-w-sm mx-auto leading-relaxed\">\n A confirmation email has been sent to{\" \"}\n <span className=\"font-semibold text-foreground\">{responsible.email || \"your email\"}</span>.\n Our team will be in touch shortly.\n </p>\n </div>\n <div className=\"rounded-xl border border-border bg-muted/30 px-6 py-4 w-full max-w-xs\">\n <p className=\"text-xs text-muted-foreground font-sans uppercase tracking-wider\">\n Booking reference\n </p>\n <p className=\"text-lg font-black text-primary font-heading mt-1\">\n PEX-{Math.random().toString(36).slice(2, 8).toUpperCase()}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"rounded-full border border-primary px-6 py-2.5 text-sm font-bold text-primary font-heading hover:bg-primary/10 transition-colors\"\n >\n Back to offer\n </button>\n </div>\n );\n }\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Step indicator */}\n <div className=\"border-b border-border px-5 py-4 bg-muted/20\">\n <h3 className=\"text-base font-bold text-foreground font-heading mb-2\">Booking details</h3>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {WIZARD_STEPS.map((s, i) => (\n <React.Fragment key={s.id}>\n <span\n className={cn(\n \"text-xs font-sans\",\n s.id === step\n ? \"text-primary font-semibold\"\n : i < stepIndex\n ? \"text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {s.label}\n </span>\n {i < WIZARD_STEPS.length - 1 && (\n <ChevronRightIcon className=\"w-3 h-3 text-muted-foreground shrink-0\" />\n )}\n </React.Fragment>\n ))}\n </div>\n </div>\n\n <div className=\"p-5 flex flex-col gap-5\">\n\n {/* ── Step 1: Responsible party ── */}\n {step === \"responsible\" && (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-sm text-muted-foreground font-sans\">\n Enter the responsible person's details. This person will receive booking confirmations\n and is accountable for all travellers.\n </p>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <FloatingInput label=\"First name\" required value={responsible.firstName} onChange={(e) => setR(\"firstName\", e.target.value)} />\n <FloatingInput label=\"Last name\" required value={responsible.lastName} onChange={(e) => setR(\"lastName\", e.target.value)} />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <FloatingInput label=\"Email\" type=\"email\" required value={responsible.email} onChange={(e) => setR(\"email\", e.target.value)} />\n <div className=\"flex w-full min-w-0\">\n <PhoneCountrySelect value={responsible.phoneCountry} onChange={(c) => setR(\"phoneCountry\", c)} className=\"shrink-0\" />\n <div className=\"relative min-w-0 flex-1\">\n <input\n id=\"wiz-phone\"\n type=\"tel\"\n placeholder=\" \"\n value={responsible.phone}\n onChange={(e) => setR(\"phone\", e.target.value)}\n className=\"peer block h-14 w-full rounded-r-lg border border-border bg-background px-3 pt-5 pb-2 text-base text-foreground font-ui transition-colors placeholder-transparent focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\"\n />\n <label htmlFor=\"wiz-phone\" className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-base text-muted-foreground font-ui transition-all duration-150 peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs\">\n Phone\n </label>\n </div>\n </div>\n </div>\n <CountrySearchField required value={responsible.country} onChange={(code) => setR(\"country\", code)} />\n <FloatingInput label=\"Passport / CPF\" required value={responsible.passport} onChange={(e) => setR(\"passport\", e.target.value)} />\n <div className=\"relative\">\n <textarea\n id=\"wiz-notes\"\n placeholder=\" \"\n rows={3}\n value={responsible.notes}\n onChange={(e) => setR(\"notes\", e.target.value)}\n className=\"peer block w-full resize-none rounded-lg border border-border bg-background px-3 pt-6 pb-3 text-base text-foreground font-ui transition-colors placeholder-transparent focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\"\n />\n <label htmlFor=\"wiz-notes\" className=\"pointer-events-none absolute left-3 top-4 text-base text-muted-foreground font-ui transition-all duration-150 peer-focus:top-2 peer-focus:text-xs peer-focus:text-primary peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs\">\n Notes (optional)\n </label>\n </div>\n </div>\n )}\n\n {/* ── Step 2: Traveller details ── */}\n {step === \"travellers\" && (\n <div className=\"flex flex-col gap-5\">\n <div className=\"flex items-center gap-2\">\n <UsersIcon className=\"w-5 h-5 text-primary shrink-0\" />\n <h4 className=\"font-bold text-foreground font-heading text-base\">Traveller details</h4>\n </div>\n\n {travellers.map((t, i) => {\n const isChild = i >= totalAdults;\n return (\n <div key={i} className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-bold text-foreground font-heading\">\n Traveller {i + 1}\n </p>\n <span className={cn(\n \"text-xs font-semibold font-heading rounded-full px-2.5 py-0.5\",\n isChild\n ? \"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400\"\n : \"bg-primary/10 text-primary\"\n )}>\n {isChild ? \"Criança\" : \"Adulto\"}\n </span>\n </div>\n\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <FloatingInput label=\"First name\" required value={t.firstName} onChange={(e) => setT(i, \"firstName\", e.target.value)} />\n <FloatingInput label=\"Last name\" required value={t.lastName} onChange={(e) => setT(i, \"lastName\", e.target.value)} />\n </div>\n\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <BirthDateField\n label=\"Date of birth\"\n required={isChild}\n value={t.dateOfBirth}\n onChange={(d) => setTDob(i, d)}\n />\n <FloatingInput\n label=\"Email\"\n type=\"email\"\n value={t.email}\n onChange={(e) => setT(i, \"email\", e.target.value)}\n />\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* ── Step 3: Payment and terms ── */}\n {step === \"payment\" && (\n <div className=\"flex flex-col gap-5\">\n <p className=\"text-sm text-muted-foreground font-sans\">\n When you confirm, we will open secure online payment (Stripe). Choose deposit vs full\n amount below when applicable.\n </p>\n\n {/* Amount selection */}\n {depositInfo && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-sm font-bold text-foreground font-heading\">\n What do you want to pay now?\n </p>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n {([\"deposit\", \"full\"] as const).map((opt) => (\n <button\n key={opt}\n type=\"button\"\n onClick={() => setPayAmount(opt)}\n className={cn(\n \"rounded-lg border-2 px-4 py-3 text-sm text-left font-sans transition-colors\",\n payAmount === opt\n ? \"border-primary bg-primary/5 text-foreground font-semibold\"\n : \"border-border bg-background text-muted-foreground hover:border-primary/40\"\n )}\n >\n {opt === \"deposit\" ? depositLabel : fullLabel}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Payment method */}\n <div className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest flex items-center gap-1.5\">\n <span>$</span> Payment method\n </p>\n <div className=\"flex flex-col gap-2\">\n {(\n [\n { id: \"stripe\", label: \"Credit / Debit card\", sub: \"Secure payment via Stripe\" },\n { id: \"pix\", label: \"PIX\", sub: \"Instant transfer — Brazil only\" },\n { id: \"bank\", label: \"Bank transfer\", sub: \"Wire / TED / DOC\" },\n ] as const\n ).map((m) => (\n <button\n key={m.id}\n type=\"button\"\n onClick={() => setPayMethod(m.id)}\n className={cn(\n \"flex items-start gap-3 rounded-lg border-2 px-4 py-3 text-left transition-colors\",\n payMethod === m.id\n ? \"border-primary bg-primary/5\"\n : \"border-border bg-background hover:border-primary/40\"\n )}\n >\n <span className={cn(\n \"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors\",\n payMethod === m.id ? \"border-primary\" : \"border-border\"\n )}>\n {payMethod === m.id && (\n <span className=\"h-2 w-2 rounded-full bg-primary\" />\n )}\n </span>\n <span className=\"flex flex-col gap-0.5\">\n <span className={cn(\n \"text-sm font-semibold font-sans\",\n payMethod === m.id ? \"text-primary\" : \"text-foreground\"\n )}>\n {m.label}\n </span>\n <span className=\"text-xs text-muted-foreground font-sans\">{m.sub}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Terms and conditions */}\n <div className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Terms and conditions\n </p>\n <label className=\"flex items-start gap-2.5 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={termsAccepted}\n onChange={(e) => setTermsAccepted(e.target.checked)}\n className=\"h-4 w-4 shrink-0 mt-0.5 rounded border-border accent-primary cursor-pointer\"\n />\n <span className=\"text-sm font-sans text-foreground/80 leading-snug\">\n I have read and accept the{\" \"}\n <button\n type=\"button\"\n onClick={() => setTermsModalOpen(true)}\n className=\"underline underline-offset-2 text-primary hover:text-primary/80 transition-colors font-semibold\"\n >\n terms and conditions\n </button>{\" \"}\n of the reservation.\n </span>\n </label>\n </div>\n\n {/* Terms modal */}\n <Dialog open={termsModalOpen} onOpenChange={setTermsModalOpen}>\n <DialogContent className=\"!max-w-[80vw] w-[80vw] max-h-[85vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle className=\"font-heading text-xl\">Terms and Conditions</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 text-sm font-sans text-foreground/80 leading-relaxed\">\n <p>\n These terms and conditions ("Terms") govern the booking of travel experiences\n offered through Planeta EXO ("Company"). By confirming a booking, you agree to\n these Terms in full.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">1. Bookings and payments</h4>\n <p>\n A booking is confirmed upon receipt of the required deposit or full payment. The deposit\n amount is specified in your offer. The remaining balance must be paid by the balance due\n date stated in your offer.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">2. Cancellation policy</h4>\n <p>\n Cancellations made more than 60 days before departure are eligible for a full refund of\n the deposit. Cancellations between 30 and 60 days forfeit 50% of the deposit.\n Cancellations within 30 days of departure are non-refundable.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">3. Changes and modifications</h4>\n <p>\n The Company reserves the right to modify itineraries due to weather, safety, or\n operational reasons. Equivalent alternatives will be offered wherever possible.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">4. Travel insurance</h4>\n <p>\n Comprehensive travel insurance is strongly recommended. The Company is not liable for\n costs arising from trip interruption, medical emergencies, or personal loss.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">5. Liability</h4>\n <p>\n Participation in adventure activities carries inherent risk. By booking, you acknowledge\n and accept these risks. The Company's liability is limited to the total booking amount.\n </p>\n <div className=\"pt-2\">\n <DialogClose\n render={\n <button\n type=\"button\"\n className=\"rounded-full bg-primary px-6 py-2.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors\"\n />\n }\n >\n Close\n </DialogClose>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n )}\n\n {/* Error */}\n {error && (\n <p className=\"text-sm text-destructive font-sans\">{error}</p>\n )}\n\n {/* Navigation */}\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3\">\n {stepIndex > 0 && (\n <button\n type=\"button\"\n onClick={goPrev}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-5 py-2.5 text-sm text-foreground font-sans hover:bg-muted/50 transition-colors\"\n >\n <ArrowLeftIcon className=\"w-3.5 h-3.5\" />\n Back\n </button>\n )}\n <button\n type=\"button\"\n onClick={goNext}\n className={cn(\n \"rounded-full bg-primary px-8 py-2.5 text-sm font-bold\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {step === \"payment\" ? \"Confirm booking\" : \"Next\"}\n </button>\n </div>\n {stepIndex === 0 && (\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"text-sm text-muted-foreground font-sans hover:text-foreground transition-colors self-start underline underline-offset-2\"\n >\n Cancel\n </button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/** Cartão de aventura isolado (mesmo layout que dentro de `Offer`). */\nexport function OfferAdventureCard({ adventure }: { adventure: OfferAdventureItem }) {\n return <AdventureCard adventure={adventure} />;\n}\n\n/* -----------------------------------------------------------------------\n Offer — main export\n ----------------------------------------------------------------------- */\n\nexport function Offer({\n logo = \"/logo-planetaexo.png\",\n logoAlt = \"Planeta EXO\",\n title,\n subtitle,\n adventures,\n subtotal,\n total,\n depositInfo,\n agent,\n onContinue,\n continueLabel = \"Book now\",\n externalBookingFlow,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n className,\n}: OfferProps) {\n const [showBooking, setShowBooking] = React.useState(false);\n\n const handleBook = () => {\n if (!externalBookingFlow) setShowBooking(true);\n onContinue?.();\n };\n\n return (\n <div className={cn(\"w-full max-w-5xl mx-auto flex flex-col gap-6 pb-20 lg:pb-0\", className)}>\n {/* ── Logo ── */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img src={logo} alt={logoAlt} className=\"w-[150px] h-auto object-contain mx-auto block\" />\n\n {/* ── Title ── */}\n <h1 className=\"text-2xl font-black text-foreground font-heading leading-tight\">{title}</h1>\n {subtitle && (\n <div className=\"text-sm text-muted-foreground font-sans space-y-1 leading-relaxed\">{subtitle}</div>\n )}\n\n {/* ── Two-column layout ── */}\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_280px] gap-6 lg:gap-8 items-start\">\n\n {/* Left: main content */}\n <div className=\"flex flex-col gap-6\">\n {/* Adventures */}\n <section className=\"flex flex-col gap-5\">\n <div className=\"flex items-center gap-2\">\n <MapIcon className=\"w-5 h-5 text-primary shrink-0\" />\n <h2 className=\"font-bold text-foreground font-heading text-base\">\n Included Adventures\n </h2>\n </div>\n {adventures.map((adventure) => (\n <AdventureCard key={adventure.id} adventure={adventure} />\n ))}\n </section>\n\n {/* Summary */}\n {!showBooking && (\n <OfferSummarySection\n adventures={adventures}\n subtotal={subtotal}\n total={total}\n depositInfo={depositInfo}\n onContinue={handleBook}\n continueLabel={continueLabel}\n summaryNotesSlot={summaryNotesSlot}\n summaryDiscountLine={summaryDiscountLine}\n continueDisabled={continueDisabled}\n />\n )}\n\n {/* Booking wizard */}\n {showBooking && !externalBookingFlow && (\n <BookingWizard\n adventures={adventures}\n total={total}\n depositInfo={depositInfo}\n onCancel={() => setShowBooking(false)}\n />\n )}\n </div>\n\n {/* Right: sticky sidebar */}\n <div className=\"lg:sticky lg:top-8\">\n <OfferSidebar\n total={total}\n agent={agent}\n onBook={handleBook}\n bookLabel={continueLabel}\n bookDisabled={continueDisabled}\n />\n </div>\n </div>\n\n {/* Mobile floating footer — price + book button */}\n {!showBooking && (\n <div className=\"fixed bottom-0 inset-x-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3 lg:hidden\">\n <div className=\"flex items-center justify-between gap-4 max-w-5xl mx-auto\">\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground font-heading\">\n Total\n </span>\n <span className=\"text-xl font-black text-primary font-heading leading-tight\">\n {total}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={handleBook}\n className={cn(\n \"rounded-full bg-primary px-6 py-3 text-sm font-bold tracking-wide uppercase\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {continueLabel}\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n CalendarIcon,\n MapPinIcon,\n CompassIcon,\n CheckIcon,\n XIcon,\n UsersIcon,\n PlusIcon,\n Trash2Icon,\n CreditCardIcon,\n AlertCircleIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n PencilIcon,\n UserPlusIcon,\n UserMinusIcon,\n AlertTriangleIcon,\n ExternalLinkIcon,\n CopyIcon,\n MessageCircleIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { FloatingInput, FloatingSelect } from \"./FloatingInput\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport type BookingStatus = \"pending\" | \"confirmed\" | \"cancelled\" | \"completed\";\n\nexport interface BookingTraveller {\n id: string;\n firstName: string;\n lastName: string;\n email?: string;\n status: \"completed\" | \"pending\";\n isChild?: boolean;\n formUrl?: string;\n}\n\nexport interface SuggestedTraveller {\n id: string;\n firstName: string;\n lastName: string;\n}\n\nexport interface BookingSummaryLineItem {\n label: string;\n price: string;\n isDiscount?: boolean;\n isBold?: boolean;\n}\n\nexport interface BookingAdventure {\n id: string;\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n location?: string;\n partner?: string;\n dateFrom: string;\n dateTo: string;\n slots?: { adults: number; children?: number; seniors?: number };\n tags?: string[];\n travellers: BookingTraveller[];\n description?: string;\n included?: string[];\n notIncluded?: string[];\n cancellationPolicy?: string[];\n lineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n suggestedTravellers?: SuggestedTraveller[];\n formName?: string;\n}\n\nexport interface BookingContact {\n name: string;\n email?: string;\n phone?: string;\n country?: string;\n passport?: string;\n}\n\nexport interface BookingDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n isPaidInFull?: boolean;\n}\n\nexport interface BookingDetailsProps {\n bookingId: string;\n status: BookingStatus;\n createdAt: string;\n contact: BookingContact;\n agentName?: string;\n agentContactUrl?: string;\n adventures: BookingAdventure[];\n summaryLineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: BookingDepositInfo;\n onAddContactAsTraveller?: (adventureId: string) => void;\n onEditTraveller?: (adventureId: string, travellerId: string) => void;\n onRemoveTraveller?: (adventureId: string, travellerId: string) => void;\n onAddSuggestedTraveller?: (adventureId: string, travellerId: string) => void;\n onPayBalance?: () => void;\n onCancelRequest?: () => void;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Helpers\n ----------------------------------------------------------------------- */\n\nconst STATUS_STYLES: Record<BookingStatus, string> = {\n pending: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\n confirmed: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\n cancelled: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\n completed: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\n};\n\nfunction StatusBadge({ status }: { status: BookingStatus }) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-3 py-1 text-xs font-bold font-heading uppercase tracking-wider\",\n STATUS_STYLES[status]\n )}\n >\n {status}\n </span>\n );\n}\n\nfunction totalPeople(adventures: BookingAdventure[]) {\n let adults = 0;\n let children = 0;\n let seniors = 0;\n for (const a of adventures) {\n adults += a.slots?.adults ?? 0;\n children += a.slots?.children ?? 0;\n seniors += a.slots?.seniors ?? 0;\n }\n return { adults, children, seniors, total: adults + children + seniors };\n}\n\n/* -----------------------------------------------------------------------\n Internal: InfoCard — small top-row stat card\n ----------------------------------------------------------------------- */\n\nfunction InfoCard({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"rounded-xl border border-border bg-card p-4 flex flex-col gap-1 min-w-0\">\n <span className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n {label}\n </span>\n <div className=\"text-sm font-sans text-foreground\">{children}</div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: AdventureSection — adventure card with accordion + travellers\n ----------------------------------------------------------------------- */\n\nfunction AdventureSection({\n adventure,\n onAddContactAsTraveller,\n onEditTraveller,\n onRemoveTraveller,\n onAddSuggestedTraveller,\n}: {\n adventure: BookingAdventure;\n onAddContactAsTraveller?: (adventureId: string) => void;\n onEditTraveller?: (adventureId: string, travellerId: string) => void;\n onRemoveTraveller?: (adventureId: string, travellerId: string) => void;\n onAddSuggestedTraveller?: (adventureId: string, travellerId: string) => void;\n}) {\n const [detailsOpen, setDetailsOpen] = React.useState(false);\n const [addModalOpen, setAddModalOpen] = React.useState(false);\n const [newTraveller, setNewTraveller] = React.useState({\n firstName: \"\",\n lastName: \"\",\n passport: \"\",\n type: \"adult\",\n email: \"\",\n dateOfBirth: \"\",\n phone: \"\",\n });\n const setField = <K extends keyof typeof newTraveller>(k: K, v: string) =>\n setNewTraveller((p) => ({ ...p, [k]: v }));\n\n const handleCopyUrl = (url: string) => {\n navigator.clipboard.writeText(url);\n };\n const people = adventure.slots;\n const peopleStr = [\n people?.adults ? `Adults: ${people.adults}` : null,\n people?.children ? `Children: ${people.children}` : null,\n people?.seniors ? `Seniors: ${people.seniors}` : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n\n const totalSlots =\n (people?.adults ?? 0) + (people?.children ?? 0) + (people?.seniors ?? 0);\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Adventure header */}\n <div className=\"p-5 lg:p-6 flex flex-col gap-2 bg-muted/60\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug\">\n {adventure.title}\n {adventure.reference && (\n <span className=\"text-xs font-normal text-muted-foreground/40 ml-1.5\">\n #{adventure.reference}\n </span>\n )}\n </h3>\n <div className=\"flex items-center gap-3 flex-wrap text-sm text-muted-foreground font-sans\">\n {adventure.partner && (\n <span className=\"flex items-center gap-1.5\">\n <CompassIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.partner}\n </span>\n )}\n {adventure.location && (\n <span className=\"flex items-center gap-1.5\">\n <MapPinIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.location}\n </span>\n )}\n </div>\n </div>\n\n {/* Details accordion trigger */}\n <button\n type=\"button\"\n onClick={() => setDetailsOpen((v) => !v)}\n className={cn(\n \"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-muted-foreground shrink-0 transition-colors\",\n \"hover:border-primary hover:text-primary\",\n detailsOpen && \"border-primary text-primary\"\n )}\n >\n Details\n {detailsOpen ? (\n <ChevronUpIcon className=\"w-3 h-3\" />\n ) : (\n <ChevronDownIcon className=\"w-3 h-3\" />\n )}\n </button>\n </div>\n\n {/* Date */}\n <div className=\"flex items-center gap-4 flex-wrap text-sm text-muted-foreground font-sans\">\n <span className=\"flex items-center gap-1.5\">\n <CalendarIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.dateFrom} → {adventure.dateTo}\n </span>\n </div>\n\n {/* Tags */}\n {adventure.tags && adventure.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {adventure.tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-semibold text-primary font-heading\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {/* Accordion: adventure details */}\n {detailsOpen && (\n <div className=\"border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-5 bg-muted/10\">\n {/* Itinerary */}\n {adventure.description && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Itinerary\n </h4>\n <p className=\"text-sm text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n )}\n\n {/* Included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n O que está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <CheckIcon className=\"w-4 h-4 text-primary shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n O que não está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <XIcon className=\"w-4 h-4 text-destructive shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Cancellation policy */}\n {adventure.cancellationPolicy &&\n adventure.cancellationPolicy.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Política de cancelamento\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.cancellationPolicy.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-muted-foreground font-sans\"\n >\n <span className=\"w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )}\n\n {/* Travellers */}\n <div className=\"border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-4\">\n {/* Header row */}\n <div className=\"flex items-center justify-between gap-3 flex-wrap\">\n <div className=\"flex items-center gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Travellers\n </h4>\n {adventure.formName && (\n <span className=\"text-xs font-semibold text-muted-foreground/50 font-heading tracking-wide\">\n · {adventure.formName}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n {onAddContactAsTraveller && (\n <button\n type=\"button\"\n onClick={() => onAddContactAsTraveller(adventure.id)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-muted-foreground hover:border-primary hover:text-primary hover:bg-primary/5 transition-colors\"\n >\n <UserPlusIcon className=\"w-3 h-3\" />\n <span className=\"hidden sm:inline\">Add contact as traveller</span>\n <span className=\"sm:hidden\">Add contact</span>\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setAddModalOpen(true)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-primary hover:border-primary hover:bg-primary/5 transition-colors\"\n >\n <PlusIcon className=\"w-3 h-3\" />\n <span className=\"hidden sm:inline\">More travellers</span>\n <span className=\"sm:hidden\">Add</span>\n </button>\n </div>\n </div>\n\n {/* Traveller rows */}\n <div className=\"flex flex-col divide-y divide-border\">\n {adventure.travellers.map((t) => (\n <div\n key={t.id}\n className=\"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 py-3 first:pt-0\"\n >\n {/* Top row on mobile / left on desktop: name + links */}\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n <div className=\"flex flex-col gap-0.5 min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <p className=\"text-sm font-semibold text-foreground font-ui truncate\">\n {t.firstName} {t.lastName}\n </p>\n {t.isChild && (\n <span className=\"text-xs font-semibold font-heading rounded-full px-2 py-0.5 bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400 shrink-0\">\n Child\n </span>\n )}\n </div>\n {t.formUrl && (\n <div className=\"flex items-center gap-2\">\n <a\n href={t.formUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-xs text-primary hover:text-primary/80 transition-colors font-ui\"\n >\n <ExternalLinkIcon className=\"w-3 h-3\" />\n Open\n </a>\n <button\n type=\"button\"\n onClick={() => handleCopyUrl(t.formUrl!)}\n className=\"flex items-center text-xs text-muted-foreground hover:text-primary transition-colors font-ui\"\n aria-label=\"Copy form URL\"\n >\n <CopyIcon className=\"w-3 h-3\" />\n </button>\n </div>\n )}\n </div>\n </div>\n\n {/* Bottom row on mobile / right on desktop: status + actions */}\n <div className=\"flex items-center gap-2 sm:gap-3 justify-between sm:justify-end\">\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-bold font-heading uppercase tracking-wider shrink-0\",\n t.status === \"completed\"\n ? \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\"\n )}\n >\n {t.status}\n </span>\n\n <div className=\"flex items-center gap-0.5 shrink-0\">\n {onEditTraveller && (\n <button\n type=\"button\"\n onClick={() => onEditTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors\"\n aria-label={`Edit ${t.firstName}`}\n >\n <PencilIcon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n {onRemoveTraveller && (\n <button\n type=\"button\"\n onClick={() => onRemoveTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors\"\n aria-label={`Delete ${t.firstName}`}\n >\n <Trash2Icon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n {onRemoveTraveller && (\n <button\n type=\"button\"\n onClick={() => onRemoveTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors\"\n aria-label={`Remove ${t.firstName} from adventure`}\n >\n <UserMinusIcon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add to this adventure — suggested travellers */}\n {adventure.suggestedTravellers && adventure.suggestedTravellers.length > 0 && (\n <div className=\"flex flex-col gap-2 pt-2\">\n <p className=\"text-xs text-muted-foreground font-ui\">\n Add to this adventure\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {adventure.suggestedTravellers.map((st) => (\n <button\n key={st.id}\n type=\"button\"\n onClick={() => onAddSuggestedTraveller?.(adventure.id, st.id)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-foreground hover:border-primary hover:text-primary hover:bg-primary/5 transition-colors\"\n >\n <PlusIcon className=\"w-3 h-3\" />\n {st.firstName} {st.lastName}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Progress bar */}\n {adventure.travellers.length > 0 && totalSlots > 0 && (() => {\n const completed = adventure.travellers.filter((t) => t.status === \"completed\").length;\n const percent = Math.round((completed / totalSlots) * 100);\n const isComplete = completed === totalSlots;\n return (\n <div className=\"flex items-center gap-3 mt-1\">\n <div className=\"flex-1 h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary transition-all duration-500\"\n style={{ width: `${percent}%` }}\n />\n </div>\n <span className={cn(\n \"text-xs font-semibold font-ui shrink-0 flex items-center gap-1\",\n isComplete ? \"text-primary\" : \"text-destructive\"\n )}>\n {completed} of {totalSlots} travellers registered\n {!isComplete && <AlertTriangleIcon className=\"w-3 h-3\" />}\n </span>\n </div>\n );\n })()}\n </div>\n\n {/* Add traveller modal */}\n <Dialog open={addModalOpen} onOpenChange={setAddModalOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"font-heading text-xl\">Add traveller</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 pt-2\">\n <FloatingInput\n label=\"First name\"\n required\n value={newTraveller.firstName}\n onChange={(e) => setField(\"firstName\", e.target.value)}\n />\n <FloatingInput\n label=\"Last name\"\n required\n value={newTraveller.lastName}\n onChange={(e) => setField(\"lastName\", e.target.value)}\n />\n <FloatingInput\n label=\"Passport (optional)\"\n value={newTraveller.passport}\n onChange={(e) => setField(\"passport\", e.target.value)}\n />\n <FloatingSelect\n label=\"Type (adult/child/senior)\"\n value={newTraveller.type}\n onChange={(e) => setField(\"type\", e.target.value)}\n >\n <option value=\"adult\">Adult</option>\n <option value=\"child\">Child</option>\n <option value=\"senior\">Senior</option>\n </FloatingSelect>\n <FloatingInput\n label=\"Email\"\n type=\"email\"\n required\n value={newTraveller.email}\n onChange={(e) => setField(\"email\", e.target.value)}\n />\n <FloatingInput\n label=\"Date of birth\"\n type=\"date\"\n value={newTraveller.dateOfBirth}\n onChange={(e) => setField(\"dateOfBirth\", e.target.value)}\n />\n <FloatingInput\n label=\"Phone (optional)\"\n type=\"tel\"\n value={newTraveller.phone}\n onChange={(e) => setField(\"phone\", e.target.value)}\n />\n <div className=\"flex items-center justify-end gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={() => setAddModalOpen(false)}\n className=\"text-sm font-ui text-muted-foreground hover:text-foreground transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setAddModalOpen(false);\n setNewTraveller({\n firstName: \"\",\n lastName: \"\",\n passport: \"\",\n type: \"adult\",\n email: \"\",\n dateOfBirth: \"\",\n phone: \"\",\n });\n }}\n className=\"rounded-full bg-primary px-6 py-2.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors\"\n >\n Add\n </button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: OrderSummary\n ----------------------------------------------------------------------- */\n\nfunction OrderSummary({\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n}: {\n adventures: BookingAdventure[];\n summaryLineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: BookingDepositInfo;\n}) {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4\">\n <h3 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Order Summary\n </h3>\n <Separator />\n\n {/* Per-adventure line items */}\n {adventures.map((adventure, i) => (\n <div key={adventure.id} className=\"flex flex-col gap-2\">\n <p className=\"text-base font-bold text-foreground font-heading\">\n {adventure.title}\n </p>\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <div className=\"flex flex-col gap-1.5 pl-3 border-l-2 border-primary/20 ml-1\">\n {adventure.lineItems.map((item, j) => (\n <div\n key={j}\n className=\"flex items-start justify-between gap-3\"\n >\n <span\n className={cn(\n \"text-sm font-sans leading-tight\",\n item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-sans shrink-0\",\n item.isDiscount\n ? \"text-green-600 dark:text-green-400\"\n : item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n </div>\n )}\n {adventure.subtotal && (\n <div className=\"flex items-center justify-between mt-1\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Subtotal this adventure\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {adventure.subtotal}\n </span>\n </div>\n )}\n {i < adventures.length - 1 && <Separator className=\"mt-2\" />}\n </div>\n ))}\n\n <Separator />\n\n {/* Global summary items (e.g. extras, coupons) */}\n {summaryLineItems && summaryLineItems.length > 0 && (\n <>\n {summaryLineItems.map((item, i) => (\n <div key={i} className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm font-sans\",\n item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-sans\",\n item.isDiscount\n ? \"text-green-600 dark:text-green-400\"\n : item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n <Separator />\n </>\n )}\n\n {subtotal && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Subtotal\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {subtotal}\n </span>\n </div>\n )}\n\n {/* Total */}\n <div className=\"flex items-center justify-between pt-1\">\n <span className=\"text-base font-bold text-foreground font-heading\">\n Total\n </span>\n <span className=\"text-2xl font-black text-primary font-heading\">\n {total}\n </span>\n </div>\n\n {/* Deposit info */}\n {depositInfo && (\n <div className=\"flex flex-col gap-2 rounded-lg bg-muted/50 border border-border p-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Deposit ({depositInfo.depositPercent}%)\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.depositAmount}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Remaining balance\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.remainingAmount}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Balance due\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.balanceDueDate}\n </span>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n BookingDetails — main export\n ----------------------------------------------------------------------- */\n\nexport function BookingDetails({\n bookingId,\n status,\n createdAt,\n contact,\n agentName,\n agentContactUrl,\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n onAddContactAsTraveller,\n onEditTraveller,\n onRemoveTraveller,\n onAddSuggestedTraveller,\n onPayBalance,\n onCancelRequest,\n className,\n}: BookingDetailsProps) {\n const people = totalPeople(adventures);\n\n return (\n <div\n className={cn(\"w-full max-w-5xl mx-auto flex flex-col gap-6 px-4 sm:px-6 lg:px-0\", className)}\n >\n {/* ── Header ── */}\n <div className=\"flex items-start justify-between gap-4 flex-wrap\">\n <div className=\"flex flex-col gap-1\">\n <h1 className=\"text-2xl font-black text-foreground font-heading leading-tight\">\n Booking{\" \"}\n <span className=\"text-primary\">#{bookingId}</span>\n </h1>\n <p className=\"text-sm text-muted-foreground font-sans\">\n Created on {createdAt}\n </p>\n </div>\n <StatusBadge status={status} />\n </div>\n\n {/* ── Info cards ── */}\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-3\">\n <InfoCard label=\"Contact\">\n <p className=\"font-semibold\">{contact.name}</p>\n {contact.email && (\n <p className=\"text-sm text-muted-foreground font-sans truncate\">{contact.email}</p>\n )}\n </InfoCard>\n {agentName && (\n <div className=\"rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary font-heading font-bold text-sm uppercase\">\n {agentName.charAt(0)}\n </div>\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n <span className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Your Agent\n </span>\n <p className=\"text-sm font-semibold text-foreground font-sans\">{agentName}</p>\n </div>\n {agentContactUrl && (\n <a\n href={agentContactUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"ml-auto shrink-0 flex items-center gap-1.5 rounded-full bg-primary/10 px-3.5 py-1.5 text-xs font-semibold text-primary font-ui transition-colors hover:bg-primary/20\"\n >\n <MessageCircleIcon className=\"w-3.5 h-3.5\" />\n Contact\n </a>\n )}\n </div>\n )}\n <InfoCard label=\"Total People\">\n <div className=\"flex items-center gap-2\">\n <UsersIcon className=\"w-4 h-4 text-primary shrink-0\" />\n <span className=\"font-semibold\">{people.total} person(s)</span>\n </div>\n <p className=\"text-sm text-muted-foreground font-sans\">\n {[\n people.adults > 0 ? `Adults: ${people.adults}` : null,\n people.children > 0 ? `Children: ${people.children}` : null,\n people.seniors > 0 ? `Seniors: ${people.seniors}` : null,\n ]\n .filter(Boolean)\n .join(\" · \")}\n </p>\n </InfoCard>\n </div>\n\n {/* ── Adventures ── */}\n <section className=\"flex flex-col gap-4\">\n <h2 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Adventures ({adventures.length})\n </h2>\n {adventures.map((adventure) => (\n <AdventureSection\n key={adventure.id}\n adventure={adventure}\n onAddContactAsTraveller={onAddContactAsTraveller}\n onEditTraveller={onEditTraveller}\n onRemoveTraveller={onRemoveTraveller}\n onAddSuggestedTraveller={onAddSuggestedTraveller}\n />\n ))}\n </section>\n\n {/* ── Order Summary ── */}\n <OrderSummary\n adventures={adventures}\n summaryLineItems={summaryLineItems}\n subtotal={subtotal}\n total={total}\n depositInfo={depositInfo}\n />\n\n {/* ── Responsible Person ── */}\n <div className=\"rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4\">\n <h3 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Responsible Person\n </h3>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-3\">\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Name\n </p>\n <p className=\"text-sm font-semibold text-foreground font-sans\">\n {contact.name}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Email\n </p>\n <p className=\"text-sm text-foreground font-sans truncate\">\n {contact.email ?? \"—\"}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Phone\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.phone ?? \"—\"}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Country\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.country ?? \"—\"}\n </p>\n </div>\n {contact.passport && (\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Passport / CPF\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.passport}\n </p>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Actions ── */}\n {(onPayBalance || onCancelRequest) && (\n <div className=\"flex flex-col items-center gap-4\">\n {depositInfo && !depositInfo.isPaidInFull && onPayBalance && (\n <button\n type=\"button\"\n onClick={onPayBalance}\n className={cn(\n \"w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"flex items-center justify-center gap-2\"\n )}\n >\n <CreditCardIcon className=\"w-4 h-4\" />\n Pay remaining balance — {depositInfo.remainingAmount}\n </button>\n )}\n\n {onCancelRequest && status !== \"cancelled\" && (\n <button\n type=\"button\"\n onClick={onCancelRequest}\n className=\"flex items-center gap-1.5 text-xs font-ui text-muted-foreground hover:text-destructive transition-colors underline underline-offset-2\"\n >\n <AlertCircleIcon className=\"w-3 h-3\" />\n Request cancellation\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface BookingConfirmationEmailProps {\n /** Nome do destinatário (ex: \"Maria\") */\n recipientName: string;\n /** URL do link para adicionar viajantes. Se omitido, o botão é renderizado sem link. */\n addTravellersUrl?: string;\n /** URL da logo PlanetaEXO. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */\n logoUrl?: string;\n /** Número da reserva */\n bookingNumber: string;\n /** Nome da atividade */\n activity: string;\n /** Nome da aventura */\n adventure: string;\n /** Data de início (formatada) */\n startingDate: string;\n /** Número de pessoas */\n numberOfPeople: number;\n /** Nome do host/anfitrião */\n host: string;\n /** className adicional no container */\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n BookingConfirmationEmail\n ----------------------------------------------------------------------- */\nconst DEFAULT_LOGO = \"/logo-planetaexo.png\";\n\nexport function BookingConfirmationEmail({\n recipientName,\n addTravellersUrl,\n logoUrl = DEFAULT_LOGO,\n bookingNumber,\n activity,\n adventure,\n startingDate,\n numberOfPeople,\n host,\n className,\n}: BookingConfirmationEmailProps) {\n const AddTravellersCta = addTravellersUrl ? (\n <a\n href={addTravellersUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading hover:bg-primary-800 transition-colors no-underline\"\n >\n Add travellers to your booking\n </a>\n ) : (\n <span\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading\"\n role=\"presentation\"\n >\n Add travellers to your booking\n </span>\n );\n\n return (\n <div\n className={cn(\n \"max-w-xl mx-auto bg-white text-foreground font-sans text-base leading-relaxed\",\n className\n )}\n >\n {/* Logo */}\n <div className=\"mt-8 mb-8 flex justify-center\">\n <img\n src={logoUrl}\n alt=\"PlanetaEXO\"\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n <p className=\"mb-4\">Hi {recipientName},</p>\n\n <p className=\"mb-4\">\n Thank you for booking your adventure with PlanetaEXO — we're really\n looking forward to your adventure.\n </p>\n\n <p className=\"mb-4\">\n To move forward, the first step is to add all travellers included in\n your booking. Once you do this, each person — including you — will\n receive an email with a link to complete their individual registration.\n </p>\n\n <div className=\"mb-8\">{AddTravellersCta}</div>\n\n <hr className=\"border-t border-border mb-8\" />\n\n <p className=\"mb-4 font-heading font-bold text-foreground\">\n 📝 Here's a quick summary of your booking:\n </p>\n\n <table className=\"w-full text-sm mb-8\">\n <tbody className=\"divide-y divide-border\">\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Booking Number:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{bookingNumber}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Activity:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{activity}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Adventure:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{adventure}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Starting Date:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{startingDate}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Number of People:\n </td>\n <td className=\"py-1 font-medium text-foreground\">\n {numberOfPeople}\n </td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">Host:</td>\n <td className=\"py-1 font-medium text-foreground\">{host}</td>\n </tr>\n </tbody>\n </table>\n\n <hr className=\"border-t border-border mb-8\" />\n\n <p className=\"mb-4\">\n After adding everyone, you will also receive your own registration\n email, just like the other travellers. Please make sure everyone\n completes this step so we can organise everything properly.\n </p>\n\n <p>\n If you have any questions, just reply to this email — happy to help.\n </p>\n </div>\n );\n}\n","import { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface ConfirmationLineItem {\n label: string;\n price: string;\n isDiscount?: boolean;\n}\n\nexport interface ConfirmationTraveller {\n id: string;\n firstName: string;\n lastName: string;\n isChild?: boolean;\n}\n\nexport interface ConfirmationAdventure {\n id: string;\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n partner?: string;\n location?: string;\n dateFrom: string;\n dateTo: string;\n slots?: { adults: number; children?: number };\n description?: string;\n included?: string[];\n notIncluded?: string[];\n lineItems?: ConfirmationLineItem[];\n subtotal?: string;\n travellers?: ConfirmationTraveller[];\n}\n\nexport interface ConfirmationDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n isPaidInFull?: boolean;\n}\n\nexport interface BookingConfirmationProps {\n /** Nome do destinatario (ex: \"Maria\") */\n recipientName: string;\n /** URL da logo. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */\n logoUrl?: string;\n /** Numero da reserva */\n bookingReference: string;\n /** Adventures included in the booking */\n adventures: ConfirmationAdventure[];\n /** Global line items (e.g. coupons, fees) */\n summaryLineItems?: ConfirmationLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: ConfirmationDepositInfo;\n /** Nome do agente responsavel */\n agent: string;\n /** URL para ver os detalhes completos do booking */\n viewBookingUrl?: string;\n /** className adicional no container */\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n BookingConfirmation — main export (email template)\n ----------------------------------------------------------------------- */\n\nconst DEFAULT_LOGO = \"/logo-planetaexo.png\";\n\nexport function BookingConfirmation({\n recipientName,\n logoUrl = DEFAULT_LOGO,\n bookingReference,\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n agent,\n viewBookingUrl,\n className,\n}: BookingConfirmationProps) {\n const allTravellers = adventures.flatMap((a) => a.travellers ?? []);\n\n const ViewBookingCta = viewBookingUrl ? (\n <a\n href={viewBookingUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors no-underline\"\n >\n View booking details\n </a>\n ) : (\n <span\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading\"\n role=\"presentation\"\n >\n View booking details\n </span>\n );\n\n return (\n <div\n className={cn(\n \"max-w-xl mx-auto bg-white text-foreground font-sans text-base leading-relaxed\",\n className\n )}\n >\n {/* ── Logo ── */}\n <div className=\"pt-10 pb-8 flex justify-center\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={logoUrl}\n alt=\"PlanetaEXO\"\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n {/* ── Greeting ── */}\n <div className=\"px-8\">\n <p className=\"mb-5 text-base\">Hi {recipientName},</p>\n\n <p className=\"mb-5 text-base\">\n Great news — your booking has been confirmed! Everything is set and\n we're getting ready for your adventure.\n </p>\n\n <p className=\"mb-8 text-base\">\n Below you'll find the full details of your reservation, including\n the adventures, travellers, and payment summary.\n </p>\n\n <div className=\"mb-10\">{ViewBookingCta}</div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Next steps ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 📋 Next Steps\n </p>\n <div className=\"rounded-xl border border-border p-5 flex flex-col gap-4\">\n {[\n \"Each traveller will receive a separate email with a link to complete their individual registration.\",\n \"Make sure everyone completes their registration so we can organise everything properly.\",\n \"You will receive a final confirmation once all travellers are registered and ready to go.\",\n ].map((step, i) => (\n <div key={i} className=\"flex items-start gap-3.5\">\n <span className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-primary/10 text-xs font-bold text-primary font-heading mt-0.5\">\n {i + 1}\n </span>\n <p className=\"text-sm text-foreground/80 leading-relaxed\">\n {step}\n </p>\n </div>\n ))}\n </div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Booking summary card ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 📝 Booking Summary\n </p>\n\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <table className=\"w-full text-sm\">\n <tbody>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Booking Number\n </td>\n <td className=\"py-3 px-5 font-semibold text-primary\">\n {bookingReference}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Adventures\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {adventures.length}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Total Travellers\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {allTravellers.length}\n </td>\n </tr>\n <tr>\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Agent\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {agent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Adventures (Offer-style cards) ── */}\n <div className=\"px-8 py-8 flex flex-col gap-6\">\n {adventures.map((adventure) => (\n <div\n key={adventure.id}\n className=\"rounded-2xl border border-border bg-card overflow-hidden\"\n >\n {/* Cover image */}\n <div className=\"aspect-[16/7] overflow-hidden bg-muted\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={adventure.image}\n alt={adventure.imageAlt ?? adventure.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Card body */}\n <div className=\"p-5 flex flex-col gap-2.5\">\n {/* Reference badge */}\n {adventure.reference && (\n <span className=\"inline-flex items-center rounded-md bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary font-heading tracking-wide self-start\">\n {adventure.reference}\n </span>\n )}\n\n {/* Title */}\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug mt-0.5\">\n {adventure.title}\n </h3>\n\n {/* Date range */}\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" ry=\"2\"/><line x1=\"16\" x2=\"16\" y1=\"2\" y2=\"6\"/><line x1=\"8\" x2=\"8\" y1=\"2\" y2=\"6\"/><line x1=\"3\" x2=\"21\" y1=\"10\" y2=\"10\"/></svg>\n {adventure.dateFrom} → {adventure.dateTo}\n </p>\n\n {/* Location */}\n {adventure.location && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"/><circle cx=\"12\" cy=\"10\" r=\"3\"/></svg>\n {adventure.location}\n </p>\n )}\n\n {/* Slots */}\n {adventure.slots && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></svg>\n {[\n adventure.slots.adults ? `${adventure.slots.adults} adult(s)` : null,\n adventure.slots.children ? `${adventure.slots.children} child(ren)` : null,\n ]\n .filter(Boolean)\n .join(\" · \")}\n </p>\n )}\n\n {/* Partner */}\n {adventure.partner && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"/></svg>\n {adventure.partner}\n </p>\n )}\n\n {/* Travellers */}\n {adventure.travellers && adventure.travellers.length > 0 && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Travellers\n </p>\n <div className=\"flex flex-col gap-1.5\">\n {adventure.travellers.map((t) => (\n <div\n key={t.id}\n className=\"flex items-center justify-between\"\n >\n <span className=\"text-sm font-medium text-foreground font-sans\">\n {t.firstName} {t.lastName}\n </span>\n {t.isChild && (\n <span className=\"text-[10px] font-semibold text-muted-foreground bg-muted rounded-full px-2 py-0.5 font-heading uppercase tracking-wide\">\n child\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n </>\n )}\n\n {/* Description / Itinerary */}\n {adventure.description && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Itinerary\n </p>\n <p className=\"text-sm text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n </>\n )}\n\n {/* What's included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n O que está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <svg className=\"w-4 h-4 text-primary shrink-0 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* What's not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n O que não está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <svg className=\"w-4 h-4 text-destructive shrink-0 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Line items / pricing */}\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Pricing\n </p>\n <div className=\"flex flex-col gap-1\">\n {adventure.lineItems.map((item, j) => (\n <div\n key={j}\n className=\"flex items-center justify-between\"\n >\n <span className=\"text-sm text-muted-foreground font-sans\">\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-medium font-sans whitespace-nowrap\",\n item.isDiscount\n ? \"text-green-600\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n {adventure.subtotal && (\n <div className=\"flex items-center justify-between pt-2 mt-1 border-t border-border\">\n <span className=\"text-sm font-bold text-foreground font-heading\">\n Subtotal\n </span>\n <span className=\"text-sm font-bold text-foreground font-heading whitespace-nowrap\">\n {adventure.subtotal}\n </span>\n </div>\n )}\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n ))}\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Payment summary ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 💰 Payment Summary\n </p>\n\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <table className=\"w-full text-sm\">\n <tbody>\n {/* Global line items */}\n {summaryLineItems &&\n summaryLineItems.map((item, i) => (\n <tr key={i} className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n {item.label}\n </td>\n <td\n className={cn(\n \"py-2.5 px-4 text-right font-medium whitespace-nowrap\",\n item.isDiscount ? \"text-green-600\" : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </td>\n </tr>\n ))}\n\n {/* Subtotal */}\n {subtotal && (\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground font-ui\">\n Subtotal\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {subtotal}\n </td>\n </tr>\n )}\n\n {/* Total */}\n <tr className=\"bg-muted/30\">\n <td className=\"py-4 px-4 font-bold text-foreground font-heading text-base\">\n Total\n </td>\n <td className=\"py-4 px-4 text-right font-bold text-primary font-heading text-xl whitespace-nowrap\">\n {total}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n {/* Deposit info */}\n {depositInfo && (\n <div className=\"rounded-xl border border-border mt-4 overflow-hidden\">\n <div className=\"px-4 py-3 bg-muted/30 border-b border-border\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Payment Details\n </p>\n </div>\n <table className=\"w-full text-sm\">\n <tbody>\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Deposit ({depositInfo.depositPercent}%)\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.depositAmount}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Remaining balance\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.remainingAmount}\n </td>\n </tr>\n <tr\n className={cn(\n depositInfo.isPaidInFull && \"border-b border-border\"\n )}\n >\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Balance due\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.balanceDueDate}\n </td>\n </tr>\n {depositInfo.isPaidInFull && (\n <tr>\n <td\n colSpan={2}\n className=\"py-3 px-4 text-center font-semibold text-green-600 bg-green-50\"\n >\n ✅ Paid in full\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Footer message ── */}\n <div className=\"px-8 py-8 pb-10\">\n <p className=\"mb-5 text-base\">\n All travellers have been registered for this booking. Each person will\n receive a separate email with their individual details and any\n pre-departure information.\n </p>\n\n <p className=\"text-base\">\n If you have any questions, just reply to this email or contact{\" \"}\n <span className=\"font-semibold\">{agent}</span> — happy to help.\n </p>\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/separator.tsx","../src/components/ui/button.tsx","../src/components/ui/dialog.tsx","../src/components/ui/calendar.tsx","../src/components/FloatingInput.tsx","../src/lib/phone-countries.ts","../src/components/PhoneCountrySelect.tsx","../src/components/Offer.tsx","../src/components/BookingDetails.tsx","../src/components/BookingConfirmationEmail.tsx","../src/components/BookingConfirmation.tsx"],"names":["twMerge","clsx","jsx","SeparatorPrimitive","cva","ButtonPrimitive","DialogPrimitive","jsxs","XIcon","getDefaultClassNames","DayPicker","_a","_b","className","props","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","React","React2","React3","React4","CalendarIcon","MapPinIcon","Fragment","CheckIcon","MailIcon","PhoneIcon","SearchIcon","format","CheckCircle2Icon","UsersIcon","ArrowLeftIcon","MapIcon","React5","CompassIcon","ChevronUpIcon","UserPlusIcon","PlusIcon","ExternalLinkIcon","CopyIcon","PencilIcon","Trash2Icon","UserMinusIcon","AlertTriangleIcon","MessageCircleIcon","CreditCardIcon","AlertCircleIcon","DEFAULT_LOGO"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { XIcon } from \"lucide-react\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-2 right-2\"\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-base leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from \"lucide-react\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n locale,\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-background p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n locale={locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(locale?.code, { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-popover opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-muted-foreground select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: ({ ...props }) => (\n <CalendarDayButton locale={locale} {...props} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n locale,\n ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString(locale?.code)}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n FloatingInput — text input com label flutuante na borda\n ----------------------------------------------------------------------- */\nexport interface FloatingInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string;\n error?: string;\n}\n\nexport const FloatingInput = React.forwardRef<HTMLInputElement, FloatingInputProps>(\n ({ label, error, id, className, required, ...props }, ref) => {\n const inputId = id ?? React.useId();\n\n return (\n <div className={cn(\"relative\", className)}>\n <input\n id={inputId}\n ref={ref}\n placeholder=\" \"\n className={cn(\n \"peer block w-full rounded-lg border border-border bg-background\",\n \"px-3 pt-5 pb-2 text-base text-foreground font-ui\",\n \"transition-colors placeholder-transparent\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n error && \"border-destructive focus:border-destructive focus:ring-destructive\"\n )}\n required={required}\n {...props}\n />\n <label\n htmlFor={inputId}\n className={cn(\n \"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n /* When peer has content or is focused, float up */\n \"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n {error && (\n <p className=\"mt-1 text-xs text-destructive font-ui\">{error}</p>\n )}\n </div>\n );\n }\n);\nFloatingInput.displayName = \"FloatingInput\";\n\n/* -----------------------------------------------------------------------\n FloatingSelect — select com label flutuante na borda\n ----------------------------------------------------------------------- */\nexport interface FloatingSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement> {\n label: string;\n error?: string;\n children: React.ReactNode;\n}\n\nexport const FloatingSelect = React.forwardRef<HTMLSelectElement, FloatingSelectProps>(\n ({ label, error, id, className, required, children, ...props }, ref) => {\n const inputId = id ?? React.useId();\n\n return (\n <div className={cn(\"relative\", className)}>\n <select\n id={inputId}\n ref={ref}\n className={cn(\n \"peer block w-full appearance-none rounded-lg border border-border bg-background\",\n \"px-3 pt-5 pb-2 text-base text-foreground font-ui\",\n \"transition-colors\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n error && \"border-destructive\"\n )}\n required={required}\n {...props}\n >\n {children}\n </select>\n {/* Custom chevron */}\n <div className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2\">\n <svg\n className=\"h-4 w-4 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n <label\n htmlFor={inputId}\n className={cn(\n \"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n \"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n {error && (\n <p className=\"mt-1 text-xs text-destructive font-ui\">{error}</p>\n )}\n </div>\n );\n }\n);\nFloatingSelect.displayName = \"FloatingSelect\";\n","export interface PhoneCountry {\n code: string; // ISO 3166-1 alpha-2\n name: string;\n flag: string; // emoji\n dial: string; // e.g. \"+55\"\n}\n\n/* Priority countries shown first */\nexport const PHONE_PRIORITY: PhoneCountry[] = [\n { code: \"BR\", name: \"Brasil\", flag: \"🇧🇷\", dial: \"+55\" },\n { code: \"DE\", name: \"Deutschland\", flag: \"🇩🇪\", dial: \"+49\" },\n { code: \"FR\", name: \"France\", flag: \"🇫🇷\", dial: \"+33\" },\n { code: \"US\", name: \"United States\", flag: \"🇺🇸\", dial: \"+1\" },\n { code: \"GB\", name: \"United Kingdom\", flag: \"🇬🇧\", dial: \"+44\" },\n { code: \"NL\", name: \"Netherlands\", flag: \"🇳🇱\", dial: \"+31\" },\n];\n\n/* Rest of the world — alphabetical by English name */\nexport const PHONE_REST: PhoneCountry[] = [\n { code: \"AF\", name: \"Afghanistan\", flag: \"🇦🇫\", dial: \"+93\" },\n { code: \"AL\", name: \"Albania\", flag: \"🇦🇱\", dial: \"+355\" },\n { code: \"DZ\", name: \"Algeria\", flag: \"🇩🇿\", dial: \"+213\" },\n { code: \"AD\", name: \"Andorra\", flag: \"🇦🇩\", dial: \"+376\" },\n { code: \"AO\", name: \"Angola\", flag: \"🇦🇴\", dial: \"+244\" },\n { code: \"AG\", name: \"Antigua and Barbuda\", flag: \"🇦🇬\", dial: \"+1268\" },\n { code: \"AR\", name: \"Argentina\", flag: \"🇦🇷\", dial: \"+54\" },\n { code: \"AM\", name: \"Armenia\", flag: \"🇦🇲\", dial: \"+374\" },\n { code: \"AU\", name: \"Australia\", flag: \"🇦🇺\", dial: \"+61\" },\n { code: \"AT\", name: \"Austria\", flag: \"🇦🇹\", dial: \"+43\" },\n { code: \"AZ\", name: \"Azerbaijan\", flag: \"🇦🇿\", dial: \"+994\" },\n { code: \"BS\", name: \"Bahamas\", flag: \"🇧🇸\", dial: \"+1242\" },\n { code: \"BH\", name: \"Bahrain\", flag: \"🇧🇭\", dial: \"+973\" },\n { code: \"BD\", name: \"Bangladesh\", flag: \"🇧🇩\", dial: \"+880\" },\n { code: \"BB\", name: \"Barbados\", flag: \"🇧🇧\", dial: \"+1246\" },\n { code: \"BY\", name: \"Belarus\", flag: \"🇧🇾\", dial: \"+375\" },\n { code: \"BE\", name: \"Belgium\", flag: \"🇧🇪\", dial: \"+32\" },\n { code: \"BZ\", name: \"Belize\", flag: \"🇧🇿\", dial: \"+501\" },\n { code: \"BJ\", name: \"Benin\", flag: \"🇧🇯\", dial: \"+229\" },\n { code: \"BT\", name: \"Bhutan\", flag: \"🇧🇹\", dial: \"+975\" },\n { code: \"BO\", name: \"Bolivia\", flag: \"🇧🇴\", dial: \"+591\" },\n { code: \"BA\", name: \"Bosnia and Herzegovina\", flag: \"🇧🇦\", dial: \"+387\" },\n { code: \"BW\", name: \"Botswana\", flag: \"🇧🇼\", dial: \"+267\" },\n { code: \"BN\", name: \"Brunei\", flag: \"🇧🇳\", dial: \"+673\" },\n { code: \"BG\", name: \"Bulgaria\", flag: \"🇧🇬\", dial: \"+359\" },\n { code: \"BF\", name: \"Burkina Faso\", flag: \"🇧🇫\", dial: \"+226\" },\n { code: \"BI\", name: \"Burundi\", flag: \"🇧🇮\", dial: \"+257\" },\n { code: \"CV\", name: \"Cabo Verde\", flag: \"🇨🇻\", dial: \"+238\" },\n { code: \"KH\", name: \"Cambodia\", flag: \"🇰🇭\", dial: \"+855\" },\n { code: \"CM\", name: \"Cameroon\", flag: \"🇨🇲\", dial: \"+237\" },\n { code: \"CA\", name: \"Canada\", flag: \"🇨🇦\", dial: \"+1\" },\n { code: \"CF\", name: \"Central African Republic\", flag: \"🇨🇫\", dial: \"+236\" },\n { code: \"TD\", name: \"Chad\", flag: \"🇹🇩\", dial: \"+235\" },\n { code: \"CL\", name: \"Chile\", flag: \"🇨🇱\", dial: \"+56\" },\n { code: \"CN\", name: \"China\", flag: \"🇨🇳\", dial: \"+86\" },\n { code: \"CO\", name: \"Colombia\", flag: \"🇨🇴\", dial: \"+57\" },\n { code: \"KM\", name: \"Comoros\", flag: \"🇰🇲\", dial: \"+269\" },\n { code: \"CG\", name: \"Congo\", flag: \"🇨🇬\", dial: \"+242\" },\n { code: \"CD\", name: \"Congo (DRC)\", flag: \"🇨🇩\", dial: \"+243\" },\n { code: \"CR\", name: \"Costa Rica\", flag: \"🇨🇷\", dial: \"+506\" },\n { code: \"HR\", name: \"Croatia\", flag: \"🇭🇷\", dial: \"+385\" },\n { code: \"CU\", name: \"Cuba\", flag: \"🇨🇺\", dial: \"+53\" },\n { code: \"CY\", name: \"Cyprus\", flag: \"🇨🇾\", dial: \"+357\" },\n { code: \"CZ\", name: \"Czech Republic\", flag: \"🇨🇿\", dial: \"+420\" },\n { code: \"DK\", name: \"Denmark\", flag: \"🇩🇰\", dial: \"+45\" },\n { code: \"DJ\", name: \"Djibouti\", flag: \"🇩🇯\", dial: \"+253\" },\n { code: \"DM\", name: \"Dominica\", flag: \"🇩🇲\", dial: \"+1767\" },\n { code: \"DO\", name: \"Dominican Republic\", flag: \"🇩🇴\", dial: \"+1809\" },\n { code: \"EC\", name: \"Ecuador\", flag: \"🇪🇨\", dial: \"+593\" },\n { code: \"EG\", name: \"Egypt\", flag: \"🇪🇬\", dial: \"+20\" },\n { code: \"SV\", name: \"El Salvador\", flag: \"🇸🇻\", dial: \"+503\" },\n { code: \"GQ\", name: \"Equatorial Guinea\", flag: \"🇬🇶\", dial: \"+240\" },\n { code: \"ER\", name: \"Eritrea\", flag: \"🇪🇷\", dial: \"+291\" },\n { code: \"EE\", name: \"Estonia\", flag: \"🇪🇪\", dial: \"+372\" },\n { code: \"SZ\", name: \"Eswatini\", flag: \"🇸🇿\", dial: \"+268\" },\n { code: \"ET\", name: \"Ethiopia\", flag: \"🇪🇹\", dial: \"+251\" },\n { code: \"FJ\", name: \"Fiji\", flag: \"🇫🇯\", dial: \"+679\" },\n { code: \"FI\", name: \"Finland\", flag: \"🇫🇮\", dial: \"+358\" },\n { code: \"GA\", name: \"Gabon\", flag: \"🇬🇦\", dial: \"+241\" },\n { code: \"GM\", name: \"Gambia\", flag: \"🇬🇲\", dial: \"+220\" },\n { code: \"GE\", name: \"Georgia\", flag: \"🇬🇪\", dial: \"+995\" },\n { code: \"GH\", name: \"Ghana\", flag: \"🇬🇭\", dial: \"+233\" },\n { code: \"GR\", name: \"Greece\", flag: \"🇬🇷\", dial: \"+30\" },\n { code: \"GD\", name: \"Grenada\", flag: \"🇬🇩\", dial: \"+1473\" },\n { code: \"GT\", name: \"Guatemala\", flag: \"🇬🇹\", dial: \"+502\" },\n { code: \"GN\", name: \"Guinea\", flag: \"🇬🇳\", dial: \"+224\" },\n { code: \"GW\", name: \"Guinea-Bissau\", flag: \"🇬🇼\", dial: \"+245\" },\n { code: \"GY\", name: \"Guyana\", flag: \"🇬🇾\", dial: \"+592\" },\n { code: \"HT\", name: \"Haiti\", flag: \"🇭🇹\", dial: \"+509\" },\n { code: \"HN\", name: \"Honduras\", flag: \"🇭🇳\", dial: \"+504\" },\n { code: \"HU\", name: \"Hungary\", flag: \"🇭🇺\", dial: \"+36\" },\n { code: \"IS\", name: \"Iceland\", flag: \"🇮🇸\", dial: \"+354\" },\n { code: \"IN\", name: \"India\", flag: \"🇮🇳\", dial: \"+91\" },\n { code: \"ID\", name: \"Indonesia\", flag: \"🇮🇩\", dial: \"+62\" },\n { code: \"IR\", name: \"Iran\", flag: \"🇮🇷\", dial: \"+98\" },\n { code: \"IQ\", name: \"Iraq\", flag: \"🇮🇶\", dial: \"+964\" },\n { code: \"IE\", name: \"Ireland\", flag: \"🇮🇪\", dial: \"+353\" },\n { code: \"IL\", name: \"Israel\", flag: \"🇮🇱\", dial: \"+972\" },\n { code: \"IT\", name: \"Italy\", flag: \"🇮🇹\", dial: \"+39\" },\n { code: \"JM\", name: \"Jamaica\", flag: \"🇯🇲\", dial: \"+1876\" },\n { code: \"JP\", name: \"Japan\", flag: \"🇯🇵\", dial: \"+81\" },\n { code: \"JO\", name: \"Jordan\", flag: \"🇯🇴\", dial: \"+962\" },\n { code: \"KZ\", name: \"Kazakhstan\", flag: \"🇰🇿\", dial: \"+7\" },\n { code: \"KE\", name: \"Kenya\", flag: \"🇰🇪\", dial: \"+254\" },\n { code: \"KI\", name: \"Kiribati\", flag: \"🇰🇮\", dial: \"+686\" },\n { code: \"KW\", name: \"Kuwait\", flag: \"🇰🇼\", dial: \"+965\" },\n { code: \"KG\", name: \"Kyrgyzstan\", flag: \"🇰🇬\", dial: \"+996\" },\n { code: \"LA\", name: \"Laos\", flag: \"🇱🇦\", dial: \"+856\" },\n { code: \"LV\", name: \"Latvia\", flag: \"🇱🇻\", dial: \"+371\" },\n { code: \"LB\", name: \"Lebanon\", flag: \"🇱🇧\", dial: \"+961\" },\n { code: \"LS\", name: \"Lesotho\", flag: \"🇱🇸\", dial: \"+266\" },\n { code: \"LR\", name: \"Liberia\", flag: \"🇱🇷\", dial: \"+231\" },\n { code: \"LY\", name: \"Libya\", flag: \"🇱🇾\", dial: \"+218\" },\n { code: \"LI\", name: \"Liechtenstein\", flag: \"🇱🇮\", dial: \"+423\" },\n { code: \"LT\", name: \"Lithuania\", flag: \"🇱🇹\", dial: \"+370\" },\n { code: \"LU\", name: \"Luxembourg\", flag: \"🇱🇺\", dial: \"+352\" },\n { code: \"MG\", name: \"Madagascar\", flag: \"🇲🇬\", dial: \"+261\" },\n { code: \"MW\", name: \"Malawi\", flag: \"🇲🇼\", dial: \"+265\" },\n { code: \"MY\", name: \"Malaysia\", flag: \"🇲🇾\", dial: \"+60\" },\n { code: \"MV\", name: \"Maldives\", flag: \"🇲🇻\", dial: \"+960\" },\n { code: \"ML\", name: \"Mali\", flag: \"🇲🇱\", dial: \"+223\" },\n { code: \"MT\", name: \"Malta\", flag: \"🇲🇹\", dial: \"+356\" },\n { code: \"MH\", name: \"Marshall Islands\", flag: \"🇲🇭\", dial: \"+692\" },\n { code: \"MR\", name: \"Mauritania\", flag: \"🇲🇷\", dial: \"+222\" },\n { code: \"MU\", name: \"Mauritius\", flag: \"🇲🇺\", dial: \"+230\" },\n { code: \"MX\", name: \"Mexico\", flag: \"🇲🇽\", dial: \"+52\" },\n { code: \"FM\", name: \"Micronesia\", flag: \"🇫🇲\", dial: \"+691\" },\n { code: \"MD\", name: \"Moldova\", flag: \"🇲🇩\", dial: \"+373\" },\n { code: \"MC\", name: \"Monaco\", flag: \"🇲🇨\", dial: \"+377\" },\n { code: \"MN\", name: \"Mongolia\", flag: \"🇲🇳\", dial: \"+976\" },\n { code: \"ME\", name: \"Montenegro\", flag: \"🇲🇪\", dial: \"+382\" },\n { code: \"MA\", name: \"Morocco\", flag: \"🇲🇦\", dial: \"+212\" },\n { code: \"MZ\", name: \"Mozambique\", flag: \"🇲🇿\", dial: \"+258\" },\n { code: \"MM\", name: \"Myanmar\", flag: \"🇲🇲\", dial: \"+95\" },\n { code: \"NA\", name: \"Namibia\", flag: \"🇳🇦\", dial: \"+264\" },\n { code: \"NR\", name: \"Nauru\", flag: \"🇳🇷\", dial: \"+674\" },\n { code: \"NP\", name: \"Nepal\", flag: \"🇳🇵\", dial: \"+977\" },\n { code: \"NZ\", name: \"New Zealand\", flag: \"🇳🇿\", dial: \"+64\" },\n { code: \"NI\", name: \"Nicaragua\", flag: \"🇳🇮\", dial: \"+505\" },\n { code: \"NE\", name: \"Niger\", flag: \"🇳🇪\", dial: \"+227\" },\n { code: \"NG\", name: \"Nigeria\", flag: \"🇳🇬\", dial: \"+234\" },\n { code: \"KP\", name: \"North Korea\", flag: \"🇰🇵\", dial: \"+850\" },\n { code: \"MK\", name: \"North Macedonia\", flag: \"🇲🇰\", dial: \"+389\" },\n { code: \"NO\", name: \"Norway\", flag: \"🇳🇴\", dial: \"+47\" },\n { code: \"OM\", name: \"Oman\", flag: \"🇴🇲\", dial: \"+968\" },\n { code: \"PK\", name: \"Pakistan\", flag: \"🇵🇰\", dial: \"+92\" },\n { code: \"PW\", name: \"Palau\", flag: \"🇵🇼\", dial: \"+680\" },\n { code: \"PS\", name: \"Palestine\", flag: \"🇵🇸\", dial: \"+970\" },\n { code: \"PA\", name: \"Panama\", flag: \"🇵🇦\", dial: \"+507\" },\n { code: \"PG\", name: \"Papua New Guinea\", flag: \"🇵🇬\", dial: \"+675\" },\n { code: \"PY\", name: \"Paraguay\", flag: \"🇵🇾\", dial: \"+595\" },\n { code: \"PE\", name: \"Peru\", flag: \"🇵🇪\", dial: \"+51\" },\n { code: \"PH\", name: \"Philippines\", flag: \"🇵🇭\", dial: \"+63\" },\n { code: \"PL\", name: \"Poland\", flag: \"🇵🇱\", dial: \"+48\" },\n { code: \"PT\", name: \"Portugal\", flag: \"🇵🇹\", dial: \"+351\" },\n { code: \"QA\", name: \"Qatar\", flag: \"🇶🇦\", dial: \"+974\" },\n { code: \"RO\", name: \"Romania\", flag: \"🇷🇴\", dial: \"+40\" },\n { code: \"RU\", name: \"Russia\", flag: \"🇷🇺\", dial: \"+7\" },\n { code: \"RW\", name: \"Rwanda\", flag: \"🇷🇼\", dial: \"+250\" },\n { code: \"KN\", name: \"Saint Kitts and Nevis\", flag: \"🇰🇳\", dial: \"+1869\" },\n { code: \"LC\", name: \"Saint Lucia\", flag: \"🇱🇨\", dial: \"+1758\" },\n { code: \"VC\", name: \"Saint Vincent and Grenadines\",flag: \"🇻🇨\", dial: \"+1784\"},\n { code: \"WS\", name: \"Samoa\", flag: \"🇼🇸\", dial: \"+685\" },\n { code: \"SM\", name: \"San Marino\", flag: \"🇸🇲\", dial: \"+378\" },\n { code: \"ST\", name: \"São Tomé and Príncipe\", flag: \"🇸🇹\", dial: \"+239\" },\n { code: \"SA\", name: \"Saudi Arabia\", flag: \"🇸🇦\", dial: \"+966\" },\n { code: \"SN\", name: \"Senegal\", flag: \"🇸🇳\", dial: \"+221\" },\n { code: \"RS\", name: \"Serbia\", flag: \"🇷🇸\", dial: \"+381\" },\n { code: \"SC\", name: \"Seychelles\", flag: \"🇸🇨\", dial: \"+248\" },\n { code: \"SL\", name: \"Sierra Leone\", flag: \"🇸🇱\", dial: \"+232\" },\n { code: \"SG\", name: \"Singapore\", flag: \"🇸🇬\", dial: \"+65\" },\n { code: \"SK\", name: \"Slovakia\", flag: \"🇸🇰\", dial: \"+421\" },\n { code: \"SI\", name: \"Slovenia\", flag: \"🇸🇮\", dial: \"+386\" },\n { code: \"SB\", name: \"Solomon Islands\", flag: \"🇸🇧\", dial: \"+677\" },\n { code: \"SO\", name: \"Somalia\", flag: \"🇸🇴\", dial: \"+252\" },\n { code: \"ZA\", name: \"South Africa\", flag: \"🇿🇦\", dial: \"+27\" },\n { code: \"KR\", name: \"South Korea\", flag: \"🇰🇷\", dial: \"+82\" },\n { code: \"SS\", name: \"South Sudan\", flag: \"🇸🇸\", dial: \"+211\" },\n { code: \"ES\", name: \"Spain\", flag: \"🇪🇸\", dial: \"+34\" },\n { code: \"LK\", name: \"Sri Lanka\", flag: \"🇱🇰\", dial: \"+94\" },\n { code: \"SD\", name: \"Sudan\", flag: \"🇸🇩\", dial: \"+249\" },\n { code: \"SR\", name: \"Suriname\", flag: \"🇸🇷\", dial: \"+597\" },\n { code: \"SE\", name: \"Sweden\", flag: \"🇸🇪\", dial: \"+46\" },\n { code: \"CH\", name: \"Switzerland\", flag: \"🇨🇭\", dial: \"+41\" },\n { code: \"SY\", name: \"Syria\", flag: \"🇸🇾\", dial: \"+963\" },\n { code: \"TW\", name: \"Taiwan\", flag: \"🇹🇼\", dial: \"+886\" },\n { code: \"TJ\", name: \"Tajikistan\", flag: \"🇹🇯\", dial: \"+992\" },\n { code: \"TZ\", name: \"Tanzania\", flag: \"🇹🇿\", dial: \"+255\" },\n { code: \"TH\", name: \"Thailand\", flag: \"🇹🇭\", dial: \"+66\" },\n { code: \"TL\", name: \"Timor-Leste\", flag: \"🇹🇱\", dial: \"+670\" },\n { code: \"TG\", name: \"Togo\", flag: \"🇹🇬\", dial: \"+228\" },\n { code: \"TO\", name: \"Tonga\", flag: \"🇹🇴\", dial: \"+676\" },\n { code: \"TT\", name: \"Trinidad and Tobago\", flag: \"🇹🇹\", dial: \"+1868\" },\n { code: \"TN\", name: \"Tunisia\", flag: \"🇹🇳\", dial: \"+216\" },\n { code: \"TR\", name: \"Turkey\", flag: \"🇹🇷\", dial: \"+90\" },\n { code: \"TM\", name: \"Turkmenistan\", flag: \"🇹🇲\", dial: \"+993\" },\n { code: \"TV\", name: \"Tuvalu\", flag: \"🇹🇻\", dial: \"+688\" },\n { code: \"UG\", name: \"Uganda\", flag: \"🇺🇬\", dial: \"+256\" },\n { code: \"UA\", name: \"Ukraine\", flag: \"🇺🇦\", dial: \"+380\" },\n { code: \"AE\", name: \"United Arab Emirates\", flag: \"🇦🇪\", dial: \"+971\" },\n { code: \"UY\", name: \"Uruguay\", flag: \"🇺🇾\", dial: \"+598\" },\n { code: \"UZ\", name: \"Uzbekistan\", flag: \"🇺🇿\", dial: \"+998\" },\n { code: \"VU\", name: \"Vanuatu\", flag: \"🇻🇺\", dial: \"+678\" },\n { code: \"VA\", name: \"Vatican City\", flag: \"🇻🇦\", dial: \"+379\" },\n { code: \"VE\", name: \"Venezuela\", flag: \"🇻🇪\", dial: \"+58\" },\n { code: \"VN\", name: \"Vietnam\", flag: \"🇻🇳\", dial: \"+84\" },\n { code: \"YE\", name: \"Yemen\", flag: \"🇾🇪\", dial: \"+967\" },\n { code: \"ZM\", name: \"Zambia\", flag: \"🇿🇲\", dial: \"+260\" },\n { code: \"ZW\", name: \"Zimbabwe\", flag: \"🇿🇼\", dial: \"+263\" },\n];\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [...PHONE_PRIORITY, ...PHONE_REST];\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { PHONE_COUNTRIES, PHONE_PRIORITY, PHONE_REST } from \"@/lib/phone-countries\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PhoneCountrySelectProps {\n value: string; // ISO code e.g. \"BR\"\n onChange: (code: string) => void;\n className?: string;\n}\n\nexport function PhoneCountrySelect({\n value,\n onChange,\n className,\n}: PhoneCountrySelectProps) {\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const selected =\n PHONE_COUNTRIES.find((c) => c.code === value) ?? PHONE_COUNTRIES[0];\n\n /* Close on click outside */\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n /* Scroll selected item into view when opening */\n React.useEffect(() => {\n if (!open || !listRef.current) return;\n const activeEl = listRef.current.querySelector(\"[data-selected=true]\");\n activeEl?.scrollIntoView({ block: \"nearest\" });\n }, [open]);\n\n const handleSelect = (code: string) => {\n onChange(code);\n setOpen(false);\n };\n\n return (\n <div ref={containerRef} className={cn(\"relative shrink-0\", className)}>\n {/* Trigger — shows only flag + dial code */}\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n \"flex h-14 items-center gap-1.5 rounded-l-lg border border-r-0 border-border bg-muted\",\n \"px-3 font-ui text-sm text-foreground transition-colors\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n <span className=\"text-base leading-none\">{selected.flag}</span>\n <span className=\"tabular-nums\">{selected.dial}</span>\n <ChevronDownIcon\n className={cn(\n \"h-3.5 w-3.5 text-muted-foreground transition-transform\",\n open && \"rotate-180\"\n )}\n />\n </button>\n\n {/* Dropdown list */}\n {open && (\n <div\n ref={listRef}\n role=\"listbox\"\n className={cn(\n \"absolute left-0 top-[calc(100%+4px)] z-50\",\n \"w-64 max-h-64 overflow-y-auto\",\n \"rounded-lg border border-border bg-background shadow-lg\",\n \"py-1\"\n )}\n >\n {/* Priority countries */}\n {PHONE_PRIORITY.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n role=\"option\"\n data-selected={c.code === value}\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center gap-2.5 px-3 py-2 text-sm font-ui text-left\",\n \"transition-colors hover:bg-muted focus:outline-none focus:bg-muted\",\n c.code === value && \"bg-primary/8 text-primary font-semibold\"\n )}\n >\n <span className=\"text-base leading-none shrink-0\">{c.flag}</span>\n <span className=\"w-10 shrink-0 tabular-nums text-muted-foreground\">\n {c.dial}\n </span>\n <span className=\"truncate text-foreground\">{c.name}</span>\n </button>\n ))}\n\n {/* Divider */}\n <div className=\"my-1 h-px bg-border\" />\n\n {/* Rest alphabetical */}\n {PHONE_REST.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n role=\"option\"\n data-selected={c.code === value}\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center gap-2.5 px-3 py-2 text-sm font-ui text-left\",\n \"transition-colors hover:bg-muted focus:outline-none focus:bg-muted\",\n c.code === value && \"bg-primary/8 text-primary font-semibold\"\n )}\n >\n <span className=\"text-base leading-none shrink-0\">{c.flag}</span>\n <span className=\"w-10 shrink-0 tabular-nums text-muted-foreground\">\n {c.dial}\n </span>\n <span className=\"truncate text-foreground\">{c.name}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport {\n CalendarIcon,\n MapPinIcon,\n CheckIcon,\n XIcon,\n ChevronRightIcon,\n ChevronDownIcon,\n MailIcon,\n PhoneIcon,\n MapIcon,\n CheckCircle2Icon,\n ArrowLeftIcon,\n UsersIcon,\n SearchIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogClose,\n} from \"@/components/ui/dialog\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { FloatingInput } from \"./FloatingInput\";\nimport { PhoneCountrySelect } from \"./PhoneCountrySelect\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface OfferSummaryLineItem {\n label: string;\n price: string;\n /** Rendered in success green with a − prefix */\n isDiscount?: boolean;\n}\n\nexport interface OfferOptionalItem {\n id: string;\n label: string;\n /** e.g. \"R$150.00 per person\" */\n pricePerPerson: string;\n defaultChecked?: boolean;\n}\n\nexport interface OfferAdventureItem {\n id: string;\n /** Short reference code shown as a badge, e.g. \"EX012345\" */\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n /** Start date string, e.g. \"April 23, 2026\" */\n dateFrom: string;\n /** End date string, e.g. \"April 26, 2026\" */\n dateTo: string;\n location?: string;\n /** Optional add-ons that replace the former tags section */\n optionals?: OfferOptionalItem[];\n slots?: { adults: number; children?: number };\n description?: string;\n included?: string[];\n notIncluded?: string[];\n cancellationPolicy?: string[];\n totalPrice: string;\n lineItems?: OfferSummaryLineItem[];\n /** Called when user clicks \"Remove from proposal\" */\n onRemove?: () => void;\n /** Extra rich content below the standard blocks (e.g. traveller table, HTML itinerary from the host app). */\n detailsSlot?: React.ReactNode;\n}\n\nexport interface OfferDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n}\n\nexport interface OfferAgentInfo {\n name: string;\n company?: string;\n avatar?: string;\n whatsappUrl?: string;\n email?: string;\n scheduleUrl?: string;\n}\n\nexport interface OfferProps {\n /** Logo URL (defaults to /logo-planetaexo.png) */\n logo?: string;\n logoAlt?: string;\n title: string;\n /** Shown below the title (e.g. agent + validity). */\n subtitle?: React.ReactNode;\n adventures: OfferAdventureItem[];\n subtotal?: string;\n total: string;\n depositInfo?: OfferDepositInfo;\n agent?: OfferAgentInfo;\n onContinue?: () => void;\n continueLabel?: string;\n /** When true, only `onContinue` runs — no embedded booking wizard (host app handles checkout). */\n externalBookingFlow?: boolean;\n /** Inserted after per-adventure summaries, before subtotal (e.g. coupon picker). */\n summaryNotesSlot?: React.ReactNode;\n /** Shown after subtotal, before deposit (e.g. coupon discount). */\n summaryDiscountLine?: { label: string; amount: string };\n /** Disable the primary continue button. */\n continueDisabled?: boolean;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Internal: AdventureCard\n ----------------------------------------------------------------------- */\n\nfunction AdventureCard({ adventure }: { adventure: OfferAdventureItem }) {\n const [checked, setChecked] = React.useState<Set<string>>(\n new Set(adventure.optionals?.filter((o) => o.defaultChecked).map((o) => o.id) ?? [])\n );\n\n const toggleOptional = (id: string) =>\n setChecked((prev) => {\n const next = new Set(prev);\n next.has(id) ? next.delete(id) : next.add(id);\n return next;\n });\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Cover image */}\n <div className=\"aspect-[16/7] overflow-hidden bg-muted\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={adventure.image}\n alt={adventure.imageAlt ?? adventure.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n <div className=\"p-5 lg:p-6 flex flex-col gap-2.5\">\n {/* Reference + Remove row */}\n <div className=\"flex items-center justify-between gap-2 min-h-[22px]\">\n {adventure.reference ? (\n <span className=\"inline-flex items-center rounded-md bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary font-heading tracking-wide\">\n {adventure.reference}\n </span>\n ) : (\n <span />\n )}\n {adventure.onRemove && (\n <button\n type=\"button\"\n onClick={adventure.onRemove}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1 text-xs text-muted-foreground font-ui hover:border-destructive hover:text-destructive transition-colors\"\n >\n <XIcon className=\"w-3 h-3\" />\n Remove\n </button>\n )}\n </div>\n\n {/* Title */}\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug mt-0.5\">\n {adventure.title}\n </h3>\n\n {/* Date range */}\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <CalendarIcon className=\"w-3.5 h-3.5 text-primary shrink-0\" />\n {adventure.dateFrom} → {adventure.dateTo}\n </p>\n\n {/* Location */}\n {adventure.location && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <MapPinIcon className=\"w-3.5 h-3.5 text-primary shrink-0\" />\n {adventure.location}\n </p>\n )}\n\n {/* Optionals */}\n {adventure.optionals && adventure.optionals.length > 0 && (\n <div className=\"mt-2 rounded-xl border border-border bg-muted/30 p-4 flex flex-col gap-3\">\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Available optionals\n </p>\n <div className=\"flex flex-col gap-2\">\n {adventure.optionals.map((opt) => (\n <label\n key={opt.id}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"checkbox\"\n checked={checked.has(opt.id)}\n onChange={() => toggleOptional(opt.id)}\n className=\"h-4 w-4 shrink-0 rounded border-border accent-primary cursor-pointer\"\n />\n <span className=\"text-sm font-sans text-foreground/80 group-hover:text-foreground transition-colors leading-snug\">\n {opt.label}{\" \"}\n <span className=\"text-muted-foreground font-semibold\">({opt.pricePerPerson})</span>\n </span>\n </label>\n ))}\n </div>\n </div>\n )}\n\n {/* Description */}\n {adventure.description && (\n <>\n <Separator className=\"my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Itinerary\n </p>\n <p className=\"text-base text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n </>\n )}\n\n {/* What's included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">O que está incluso</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-foreground/80 font-sans\">\n <CheckIcon className=\"w-4 h-4 text-primary shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* What's not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">O que não está incluso</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-foreground/80 font-sans\">\n <XIcon className=\"w-4 h-4 text-destructive shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Cancellation policy */}\n {adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-base font-bold text-foreground font-heading\">Política de cancelamento</h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.cancellationPolicy.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2 text-base text-muted-foreground font-sans\">\n <span className=\"w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {adventure.detailsSlot && (\n <>\n <Separator className=\"my-1\" />\n <div className=\"flex flex-col gap-3 text-foreground\">{adventure.detailsSlot}</div>\n </>\n )}\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: OfferSidebar\n ----------------------------------------------------------------------- */\n\nfunction OfferSidebar({\n total,\n agent,\n onBook,\n bookLabel,\n bookDisabled,\n}: {\n total: string;\n agent?: OfferAgentInfo;\n onBook?: () => void;\n bookLabel: string;\n bookDisabled?: boolean;\n}) {\n return (\n <div className=\"flex flex-col gap-4\">\n {/* Pricing card — hidden on mobile where the floating footer handles it */}\n <div className=\"hidden lg:flex rounded-2xl border border-border bg-card p-5 flex-col gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-widest text-muted-foreground font-heading mb-1\">\n Booking Total\n </p>\n <p className=\"text-3xl font-black text-primary font-heading leading-none\">{total}</p>\n </div>\n <button\n type=\"button\"\n disabled={bookDisabled}\n onClick={onBook}\n className={cn(\n \"w-full rounded-full bg-primary py-3 text-sm font-bold tracking-wide uppercase\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bookDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n\n {/* Agent card */}\n {agent && (\n <div className=\"rounded-2xl border border-border bg-card p-5 flex flex-col gap-4\">\n <div className=\"flex flex-col items-center gap-3 text-center\">\n {agent.avatar ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={agent.avatar}\n alt={agent.name}\n className=\"w-16 h-16 rounded-full object-cover ring-2 ring-primary/20\"\n />\n ) : (\n <div className=\"w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center\">\n <span className=\"text-xl font-bold text-primary font-heading\">\n {agent.name.charAt(0)}\n </span>\n </div>\n )}\n <div>\n <p className=\"text-sm text-foreground font-sans\">Need help with your offer?</p>\n <p className=\"text-sm font-sans text-foreground mt-0.5\">\n Contact{\" \"}\n <span className=\"font-bold text-foreground font-heading\">{agent.name}</span> your\n travel advisor\n {agent.company && (\n <>\n {\" \"}at{\" \"}\n <span className=\"font-bold text-foreground font-heading\">{agent.company}</span>\n </>\n )}\n </p>\n </div>\n </div>\n\n <Separator />\n\n <div className=\"flex flex-col gap-2\">\n {agent.whatsappUrl && (\n <a\n href={agent.whatsappUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <svg className=\"w-4 h-4 shrink-0 text-[#25D366]\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\" />\n </svg>\n WhatsApp\n </a>\n )}\n {agent.email && (\n <a\n href={`mailto:${agent.email}`}\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <MailIcon className=\"w-4 h-4 shrink-0 text-primary\" />\n Email\n </a>\n )}\n {agent.scheduleUrl && (\n <a\n href={agent.scheduleUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2.5 rounded-lg border border-border px-4 py-2.5 text-sm font-sans text-foreground hover:bg-muted/50 transition-colors\"\n >\n <PhoneIcon className=\"w-4 h-4 shrink-0 text-primary\" />\n Schedule a call\n </a>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: Summary section\n ----------------------------------------------------------------------- */\n\nfunction OfferSummarySection({\n adventures,\n subtotal,\n total,\n depositInfo,\n onContinue,\n continueLabel,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n}: {\n adventures: OfferAdventureItem[];\n subtotal?: string;\n total: string;\n depositInfo?: OfferDepositInfo;\n onContinue?: () => void;\n continueLabel: string;\n summaryNotesSlot?: React.ReactNode;\n summaryDiscountLine?: { label: string; amount: string };\n continueDisabled?: boolean;\n}) {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-5 flex flex-col gap-4\">\n <h3 className=\"font-bold text-foreground font-heading text-base\">Summary</h3>\n <Separator />\n\n <div className=\"flex flex-col gap-4\">\n {adventures.map((adventure, i) => (\n <div key={adventure.id}>\n <div className=\"flex items-start justify-between gap-3\">\n <span className=\"text-sm font-semibold text-foreground font-heading leading-tight\">\n {adventure.title}\n </span>\n <span className=\"text-sm font-semibold text-foreground font-heading shrink-0\">\n {adventure.totalPrice}\n </span>\n </div>\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <div className=\"mt-2 flex flex-col gap-1.5 pl-3 border-l-2 border-border ml-1\">\n {adventure.lineItems.map((item, j) => (\n <div key={j} className=\"flex items-start justify-between gap-3\">\n <span className=\"text-xs text-muted-foreground font-sans leading-tight\">\n {item.label}\n </span>\n <span className={cn(\"text-xs font-sans shrink-0\", item.isDiscount ? \"text-success\" : \"text-muted-foreground\")}>\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n </div>\n )}\n {i < adventures.length - 1 && <Separator className=\"mt-4\" />}\n </div>\n ))}\n </div>\n\n {summaryNotesSlot}\n\n <Separator />\n\n {subtotal && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">Subtotal</span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">{subtotal}</span>\n </div>\n )}\n\n {summaryDiscountLine && (\n <div className=\"flex items-center justify-between text-success\">\n <span className=\"text-sm font-sans\">{summaryDiscountLine.label}</span>\n <span className=\"text-sm font-semibold font-sans shrink-0\">−{summaryDiscountLine.amount}</span>\n </div>\n )}\n\n {depositInfo && (\n <div className=\"flex flex-col gap-1.5 rounded-lg bg-muted/50 border border-border p-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Deposit ({depositInfo.depositPercent}%)</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.depositAmount}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Remaining balance</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.remainingAmount}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs text-muted-foreground font-sans\">Balance due</span>\n <span className=\"text-xs font-semibold text-foreground font-sans\">{depositInfo.balanceDueDate}</span>\n </div>\n </div>\n )}\n\n <div className=\"flex items-center justify-between pt-1\">\n <span className=\"text-base font-bold text-foreground font-heading\">Total</span>\n <span className=\"text-2xl font-black text-primary font-heading\">{total}</span>\n </div>\n\n <button\n type=\"button\"\n disabled={continueDisabled}\n onClick={onContinue}\n className={cn(\n \"w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n continueDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {continueLabel}\n </button>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Country list + CountrySearchField\n ----------------------------------------------------------------------- */\n\nconst COUNTRIES = [\n { code: \"AF\", name: \"Afghanistan\" }, { code: \"AL\", name: \"Albania\" },\n { code: \"DZ\", name: \"Algeria\" }, { code: \"AO\", name: \"Angola\" },\n { code: \"AR\", name: \"Argentina\" }, { code: \"AM\", name: \"Armenia\" },\n { code: \"AU\", name: \"Australia\" }, { code: \"AT\", name: \"Austria\" },\n { code: \"AZ\", name: \"Azerbaijan\" }, { code: \"BE\", name: \"Belgium\" },\n { code: \"BO\", name: \"Bolivia\" }, { code: \"BA\", name: \"Bosnia\" },\n { code: \"BR\", name: \"Brazil\" }, { code: \"BG\", name: \"Bulgaria\" },\n { code: \"KH\", name: \"Cambodia\" }, { code: \"CA\", name: \"Canada\" },\n { code: \"CL\", name: \"Chile\" }, { code: \"CN\", name: \"China\" },\n { code: \"CO\", name: \"Colombia\" }, { code: \"CR\", name: \"Costa Rica\" },\n { code: \"HR\", name: \"Croatia\" }, { code: \"CU\", name: \"Cuba\" },\n { code: \"CZ\", name: \"Czech Republic\" }, { code: \"DK\", name: \"Denmark\" },\n { code: \"DO\", name: \"Dominican Republic\" }, { code: \"EC\", name: \"Ecuador\" },\n { code: \"EG\", name: \"Egypt\" }, { code: \"SV\", name: \"El Salvador\" },\n { code: \"ET\", name: \"Ethiopia\" }, { code: \"FI\", name: \"Finland\" },\n { code: \"FR\", name: \"France\" }, { code: \"GE\", name: \"Georgia\" },\n { code: \"DE\", name: \"Germany\" }, { code: \"GH\", name: \"Ghana\" },\n { code: \"GR\", name: \"Greece\" }, { code: \"GT\", name: \"Guatemala\" },\n { code: \"HN\", name: \"Honduras\" }, { code: \"HK\", name: \"Hong Kong\" },\n { code: \"HU\", name: \"Hungary\" }, { code: \"IS\", name: \"Iceland\" },\n { code: \"IN\", name: \"India\" }, { code: \"ID\", name: \"Indonesia\" },\n { code: \"IR\", name: \"Iran\" }, { code: \"IQ\", name: \"Iraq\" },\n { code: \"IE\", name: \"Ireland\" }, { code: \"IL\", name: \"Israel\" },\n { code: \"IT\", name: \"Italy\" }, { code: \"JM\", name: \"Jamaica\" },\n { code: \"JP\", name: \"Japan\" }, { code: \"JO\", name: \"Jordan\" },\n { code: \"KZ\", name: \"Kazakhstan\" }, { code: \"KE\", name: \"Kenya\" },\n { code: \"KW\", name: \"Kuwait\" }, { code: \"LB\", name: \"Lebanon\" },\n { code: \"LY\", name: \"Libya\" }, { code: \"MY\", name: \"Malaysia\" },\n { code: \"MX\", name: \"Mexico\" }, { code: \"MA\", name: \"Morocco\" },\n { code: \"MZ\", name: \"Mozambique\" }, { code: \"NP\", name: \"Nepal\" },\n { code: \"NL\", name: \"Netherlands\" }, { code: \"NZ\", name: \"New Zealand\" },\n { code: \"NI\", name: \"Nicaragua\" }, { code: \"NG\", name: \"Nigeria\" },\n { code: \"NO\", name: \"Norway\" }, { code: \"PK\", name: \"Pakistan\" },\n { code: \"PA\", name: \"Panama\" }, { code: \"PY\", name: \"Paraguay\" },\n { code: \"PE\", name: \"Peru\" }, { code: \"PH\", name: \"Philippines\" },\n { code: \"PL\", name: \"Poland\" }, { code: \"PT\", name: \"Portugal\" },\n { code: \"QA\", name: \"Qatar\" }, { code: \"RO\", name: \"Romania\" },\n { code: \"RU\", name: \"Russia\" }, { code: \"SA\", name: \"Saudi Arabia\" },\n { code: \"SN\", name: \"Senegal\" }, { code: \"RS\", name: \"Serbia\" },\n { code: \"SG\", name: \"Singapore\" }, { code: \"ZA\", name: \"South Africa\" },\n { code: \"KR\", name: \"South Korea\" }, { code: \"ES\", name: \"Spain\" },\n { code: \"LK\", name: \"Sri Lanka\" }, { code: \"SE\", name: \"Sweden\" },\n { code: \"CH\", name: \"Switzerland\" }, { code: \"TW\", name: \"Taiwan\" },\n { code: \"TZ\", name: \"Tanzania\" }, { code: \"TH\", name: \"Thailand\" },\n { code: \"TN\", name: \"Tunisia\" }, { code: \"TR\", name: \"Turkey\" },\n { code: \"UA\", name: \"Ukraine\" }, { code: \"AE\", name: \"United Arab Emirates\" },\n { code: \"GB\", name: \"United Kingdom\" }, { code: \"US\", name: \"United States\" },\n { code: \"UY\", name: \"Uruguay\" }, { code: \"UZ\", name: \"Uzbekistan\" },\n { code: \"VE\", name: \"Venezuela\" }, { code: \"VN\", name: \"Vietnam\" },\n { code: \"YE\", name: \"Yemen\" }, { code: \"ZW\", name: \"Zimbabwe\" },\n] as const;\n\nfunction CountrySearchField({\n value,\n onChange,\n required,\n}: {\n value: string;\n onChange: (code: string) => void;\n required?: boolean;\n}) {\n const [query, setQuery] = React.useState(\"\");\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n\n const selected = COUNTRIES.find((c) => c.code === value);\n const isFloated = open || !!selected;\n\n const filtered = query.trim()\n ? COUNTRIES.filter((c) => c.name.toLowerCase().includes(query.toLowerCase()))\n : COUNTRIES;\n\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) {\n setOpen(false);\n setQuery(\"\");\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const handleOpen = () => {\n setOpen(true);\n setQuery(\"\");\n setTimeout(() => searchRef.current?.focus(), 0);\n };\n\n const handleSelect = (code: string) => {\n onChange(code);\n setOpen(false);\n setQuery(\"\");\n };\n\n return (\n <div ref={containerRef} className=\"relative w-full\">\n {/* Trigger */}\n <button\n type=\"button\"\n onClick={handleOpen}\n className={cn(\n \"relative flex w-full items-center rounded-lg border border-border bg-background h-14 px-3 text-left transition-colors\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n <span\n className={cn(\n \"pointer-events-none absolute left-3 transition-all duration-150 font-ui\",\n isFloated\n ? \"top-2 text-xs text-primary\"\n : \"top-1/2 -translate-y-1/2 text-base text-muted-foreground\"\n )}\n >\n Country{required && <span className=\"text-primary ml-0.5\">*</span>}\n </span>\n <span className={cn(\"flex-1 pt-3 text-base font-ui truncate\", selected ? \"text-foreground\" : \"invisible\")}>\n {selected?.name ?? \"—\"}\n </span>\n <ChevronDownIcon className={cn(\"h-4 w-4 shrink-0 text-muted-foreground transition-transform\", open && \"rotate-180\")} />\n </button>\n\n {/* Dropdown */}\n {open && (\n <div className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-50 rounded-xl border border-border bg-background shadow-lg overflow-hidden\">\n {/* Search */}\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border\">\n <SearchIcon className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n <input\n ref={searchRef}\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search country…\"\n className=\"flex-1 bg-transparent text-sm font-ui text-foreground placeholder:text-muted-foreground focus:outline-none\"\n />\n </div>\n {/* Results */}\n <div className=\"max-h-52 overflow-y-auto py-1\">\n {filtered.length === 0 ? (\n <p className=\"px-3 py-2 text-sm font-ui text-muted-foreground\">No countries found</p>\n ) : (\n filtered.map((c) => (\n <button\n key={c.code}\n type=\"button\"\n onClick={() => handleSelect(c.code)}\n className={cn(\n \"flex w-full items-center px-3 py-2 text-sm font-ui text-left transition-colors hover:bg-muted\",\n c.code === value && \"bg-primary/10 text-primary font-semibold\"\n )}\n >\n {c.name}\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: BirthDateField — typed input + calendar dropdown for birthdays\n ----------------------------------------------------------------------- */\n\nfunction BirthDateField({\n label,\n required,\n value,\n onChange,\n}: {\n label: string;\n required?: boolean;\n value: Date | undefined;\n onChange: (date: Date | undefined) => void;\n}) {\n const [open, setOpen] = React.useState(false);\n const [text, setText] = React.useState(value ? format(value, \"dd/MM/yyyy\") : \"\");\n const containerRef = React.useRef<HTMLDivElement>(null);\n const inputId = React.useId();\n\n /* Sync text when value changes from calendar selection */\n React.useEffect(() => {\n setText(value ? format(value, \"dd/MM/yyyy\") : \"\");\n }, [value]);\n\n /* Close on outside click */\n React.useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 8);\n let formatted = digits.slice(0, 2);\n if (digits.length > 2) formatted += \"/\" + digits.slice(2, 4);\n if (digits.length > 4) formatted += \"/\" + digits.slice(4, 8);\n setText(formatted);\n\n if (formatted.length === 10) {\n const [dd, mm, yyyy] = formatted.split(\"/\").map(Number);\n const d = new Date(yyyy, mm - 1, dd);\n if (!isNaN(d.getTime()) && d.getFullYear() === yyyy && d <= new Date()) {\n onChange(d);\n return;\n }\n }\n onChange(undefined);\n };\n\n return (\n <div ref={containerRef} className=\"relative w-full\">\n {/* Input row */}\n <div\n className={cn(\n \"flex items-center rounded-lg border border-border bg-background h-14 transition-colors\",\n open\n ? \"border-primary ring-1 ring-primary\"\n : \"focus-within:border-primary focus-within:ring-1 focus-within:ring-primary\"\n )}\n >\n <div className=\"relative flex-1 h-full\">\n {/* Label always floated */}\n <label\n htmlFor={inputId}\n className=\"pointer-events-none absolute left-3 top-2 text-xs text-muted-foreground font-ui\"\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n <input\n id={inputId}\n type=\"text\"\n inputMode=\"numeric\"\n value={text}\n onChange={handleTextChange}\n placeholder=\"dd/mm/yyyy\"\n className=\"block h-full w-full bg-transparent px-3 pt-5 pb-2 text-base text-foreground font-ui focus:outline-none placeholder:text-muted-foreground/50\"\n />\n </div>\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n tabIndex={-1}\n aria-label=\"Open calendar\"\n className=\"px-3 h-full flex items-center text-muted-foreground hover:text-primary transition-colors focus:outline-none\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Calendar dropdown */}\n {open && (\n <div className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-50 rounded-xl border border-border bg-background shadow-lg overflow-hidden\">\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(date) => {\n onChange(date);\n setOpen(false);\n }}\n defaultMonth={value ?? new Date(1990, 0, 1)}\n disabled={{ after: new Date() }}\n className=\"font-ui w-full\"\n autoFocus\n />\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: Booking Wizard\n Steps: responsible → travellers → payment → confirmed\n ----------------------------------------------------------------------- */\n\ntype BookingStep = \"responsible\" | \"travellers\" | \"payment\" | \"confirmed\";\n\nconst WIZARD_STEPS: { id: BookingStep; label: string }[] = [\n { id: \"responsible\", label: \"Responsible party details\" },\n { id: \"travellers\", label: \"Travellers\" },\n { id: \"payment\", label: \"Payment and terms\" },\n];\n\ninterface TravellerValues {\n firstName: string;\n lastName: string;\n dateOfBirth: Date | undefined;\n email: string;\n}\n\nfunction BookingWizard({\n adventures,\n total,\n depositInfo,\n onCancel,\n}: {\n adventures: OfferAdventureItem[];\n total: string;\n depositInfo?: OfferDepositInfo;\n onCancel?: () => void;\n}) {\n const [step, setStep] = React.useState<BookingStep>(\"responsible\");\n const [error, setError] = React.useState<string | null>(null);\n\n /* Step 1 — responsible party */\n const [responsible, setResponsible] = React.useState({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n phone: \"\",\n phoneCountry: \"BR\",\n country: \"\",\n passport: \"\",\n notes: \"\",\n });\n\n /* Step 2 — travellers */\n const totalAdults = adventures.reduce((s, a) => s + (a.slots?.adults ?? 1), 0);\n const totalChildren = adventures.reduce((s, a) => s + (a.slots?.children ?? 0), 0);\n const totalPax = totalAdults + totalChildren;\n\n const [travellers, setTravellers] = React.useState<TravellerValues[]>(\n Array.from({ length: Math.max(totalPax, 1) }, () => ({\n firstName: \"\",\n lastName: \"\",\n dateOfBirth: undefined,\n email: \"\",\n }))\n );\n\n /* Step 3 — payment */\n const [payAmount, setPayAmount] = React.useState<\"deposit\" | \"full\">(\"full\");\n const [payMethod, setPayMethod] = React.useState<\"stripe\" | \"pix\" | \"bank\">(\"stripe\");\n const [termsAccepted, setTermsAccepted] = React.useState(false);\n const [termsModalOpen, setTermsModalOpen] = React.useState(false);\n\n const setR = <K extends keyof typeof responsible>(k: K, v: (typeof responsible)[K]) =>\n setResponsible((p) => ({ ...p, [k]: v }));\n\n const setT = (i: number, k: \"firstName\" | \"lastName\" | \"email\", v: string) =>\n setTravellers((prev) => prev.map((t, idx) => (idx === i ? { ...t, [k]: v } : t)));\n\n const setTDob = (i: number, v: Date | undefined) =>\n setTravellers((prev) => prev.map((t, idx) => (idx === i ? { ...t, dateOfBirth: v } : t)));\n\n const stepIndex = WIZARD_STEPS.findIndex((s) => s.id === step);\n\n const goNext = () => {\n setError(null);\n\n if (step === \"responsible\") {\n if (!responsible.firstName || !responsible.lastName || !responsible.email) {\n setError(\"Please fill in all required fields.\");\n return;\n }\n if (!responsible.passport) {\n setError(\"Please enter the document (CPF or passport) according to country.\");\n return;\n }\n setStep(\"travellers\");\n } else if (step === \"travellers\") {\n const missing = travellers.some((t) => !t.firstName || !t.lastName);\n if (missing) {\n setError(\"Please fill in first and last name for all passengers.\");\n return;\n }\n setStep(\"payment\");\n } else if (step === \"payment\") {\n if (!termsAccepted) {\n setError(\"You must accept the terms to complete.\");\n return;\n }\n setStep(\"confirmed\");\n }\n };\n\n const goPrev = () => {\n setError(null);\n if (step === \"travellers\") setStep(\"responsible\");\n else if (step === \"payment\") setStep(\"travellers\");\n };\n\n /* Deposit amount label */\n const depositLabel = depositInfo\n ? `Pay deposit (${depositInfo.depositPercent}%) — ${depositInfo.depositAmount}`\n : \"Pay deposit\";\n const fullLabel = `Pay full amount — ${total}`;\n\n if (step === \"confirmed\") {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-8 flex flex-col items-center gap-6 text-center\">\n <div className=\"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10\">\n <CheckCircle2Icon className=\"w-10 h-10 text-primary\" />\n </div>\n <div>\n <h3 className=\"text-2xl font-black text-foreground font-heading\">Booking confirmed!</h3>\n <p className=\"mt-2 text-sm text-muted-foreground font-sans max-w-sm mx-auto leading-relaxed\">\n A confirmation email has been sent to{\" \"}\n <span className=\"font-semibold text-foreground\">{responsible.email || \"your email\"}</span>.\n Our team will be in touch shortly.\n </p>\n </div>\n <div className=\"rounded-xl border border-border bg-muted/30 px-6 py-4 w-full max-w-xs\">\n <p className=\"text-xs text-muted-foreground font-sans uppercase tracking-wider\">\n Booking reference\n </p>\n <p className=\"text-lg font-black text-primary font-heading mt-1\">\n PEX-{Math.random().toString(36).slice(2, 8).toUpperCase()}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"rounded-full border border-primary px-6 py-2.5 text-sm font-bold text-primary font-heading hover:bg-primary/10 transition-colors\"\n >\n Back to offer\n </button>\n </div>\n );\n }\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Step indicator */}\n <div className=\"border-b border-border px-5 py-4 bg-muted/20\">\n <h3 className=\"text-base font-bold text-foreground font-heading mb-2\">Booking details</h3>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {WIZARD_STEPS.map((s, i) => (\n <React.Fragment key={s.id}>\n <span\n className={cn(\n \"text-xs font-sans\",\n s.id === step\n ? \"text-primary font-semibold\"\n : i < stepIndex\n ? \"text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {s.label}\n </span>\n {i < WIZARD_STEPS.length - 1 && (\n <ChevronRightIcon className=\"w-3 h-3 text-muted-foreground shrink-0\" />\n )}\n </React.Fragment>\n ))}\n </div>\n </div>\n\n <div className=\"p-5 flex flex-col gap-5\">\n\n {/* ── Step 1: Responsible party ── */}\n {step === \"responsible\" && (\n <div className=\"flex flex-col gap-4\">\n <p className=\"text-sm text-muted-foreground font-sans\">\n Enter the responsible person's details. This person will receive booking confirmations\n and is accountable for all travellers.\n </p>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <FloatingInput label=\"First name\" required value={responsible.firstName} onChange={(e) => setR(\"firstName\", e.target.value)} />\n <FloatingInput label=\"Last name\" required value={responsible.lastName} onChange={(e) => setR(\"lastName\", e.target.value)} />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <FloatingInput label=\"Email\" type=\"email\" required value={responsible.email} onChange={(e) => setR(\"email\", e.target.value)} />\n <div className=\"flex w-full min-w-0\">\n <PhoneCountrySelect value={responsible.phoneCountry} onChange={(c) => setR(\"phoneCountry\", c)} className=\"shrink-0\" />\n <div className=\"relative min-w-0 flex-1\">\n <input\n id=\"wiz-phone\"\n type=\"tel\"\n placeholder=\" \"\n value={responsible.phone}\n onChange={(e) => setR(\"phone\", e.target.value)}\n className=\"peer block h-14 w-full rounded-r-lg border border-border bg-background px-3 pt-5 pb-2 text-base text-foreground font-ui transition-colors placeholder-transparent focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\"\n />\n <label htmlFor=\"wiz-phone\" className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-base text-muted-foreground font-ui transition-all duration-150 peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs\">\n Phone\n </label>\n </div>\n </div>\n </div>\n <CountrySearchField required value={responsible.country} onChange={(code) => setR(\"country\", code)} />\n <FloatingInput label=\"Passport / CPF\" required value={responsible.passport} onChange={(e) => setR(\"passport\", e.target.value)} />\n <div className=\"relative\">\n <textarea\n id=\"wiz-notes\"\n placeholder=\" \"\n rows={3}\n value={responsible.notes}\n onChange={(e) => setR(\"notes\", e.target.value)}\n className=\"peer block w-full resize-none rounded-lg border border-border bg-background px-3 pt-6 pb-3 text-base text-foreground font-ui transition-colors placeholder-transparent focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\"\n />\n <label htmlFor=\"wiz-notes\" className=\"pointer-events-none absolute left-3 top-4 text-base text-muted-foreground font-ui transition-all duration-150 peer-focus:top-2 peer-focus:text-xs peer-focus:text-primary peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs\">\n Notes (optional)\n </label>\n </div>\n </div>\n )}\n\n {/* ── Step 2: Traveller details ── */}\n {step === \"travellers\" && (\n <div className=\"flex flex-col gap-5\">\n <div className=\"flex items-center gap-2\">\n <UsersIcon className=\"w-5 h-5 text-primary shrink-0\" />\n <h4 className=\"font-bold text-foreground font-heading text-base\">Traveller details</h4>\n </div>\n\n {travellers.map((t, i) => {\n const isChild = i >= totalAdults;\n return (\n <div key={i} className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-bold text-foreground font-heading\">\n Traveller {i + 1}\n </p>\n <span className={cn(\n \"text-xs font-semibold font-heading rounded-full px-2.5 py-0.5\",\n isChild\n ? \"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400\"\n : \"bg-primary/10 text-primary\"\n )}>\n {isChild ? \"Criança\" : \"Adulto\"}\n </span>\n </div>\n\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <FloatingInput label=\"First name\" required value={t.firstName} onChange={(e) => setT(i, \"firstName\", e.target.value)} />\n <FloatingInput label=\"Last name\" required value={t.lastName} onChange={(e) => setT(i, \"lastName\", e.target.value)} />\n </div>\n\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <BirthDateField\n label=\"Date of birth\"\n required={isChild}\n value={t.dateOfBirth}\n onChange={(d) => setTDob(i, d)}\n />\n <FloatingInput\n label=\"Email\"\n type=\"email\"\n value={t.email}\n onChange={(e) => setT(i, \"email\", e.target.value)}\n />\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* ── Step 3: Payment and terms ── */}\n {step === \"payment\" && (\n <div className=\"flex flex-col gap-5\">\n <p className=\"text-sm text-muted-foreground font-sans\">\n When you confirm, we will open secure online payment (Stripe). Choose deposit vs full\n amount below when applicable.\n </p>\n\n {/* Amount selection */}\n {depositInfo && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-sm font-bold text-foreground font-heading\">\n What do you want to pay now?\n </p>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2\">\n {([\"deposit\", \"full\"] as const).map((opt) => (\n <button\n key={opt}\n type=\"button\"\n onClick={() => setPayAmount(opt)}\n className={cn(\n \"rounded-lg border-2 px-4 py-3 text-sm text-left font-sans transition-colors\",\n payAmount === opt\n ? \"border-primary bg-primary/5 text-foreground font-semibold\"\n : \"border-border bg-background text-muted-foreground hover:border-primary/40\"\n )}\n >\n {opt === \"deposit\" ? depositLabel : fullLabel}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Payment method */}\n <div className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest flex items-center gap-1.5\">\n <span>$</span> Payment method\n </p>\n <div className=\"flex flex-col gap-2\">\n {(\n [\n { id: \"stripe\", label: \"Credit / Debit card\", sub: \"Secure payment via Stripe\" },\n { id: \"pix\", label: \"PIX\", sub: \"Instant transfer — Brazil only\" },\n { id: \"bank\", label: \"Bank transfer\", sub: \"Wire / TED / DOC\" },\n ] as const\n ).map((m) => (\n <button\n key={m.id}\n type=\"button\"\n onClick={() => setPayMethod(m.id)}\n className={cn(\n \"flex items-start gap-3 rounded-lg border-2 px-4 py-3 text-left transition-colors\",\n payMethod === m.id\n ? \"border-primary bg-primary/5\"\n : \"border-border bg-background hover:border-primary/40\"\n )}\n >\n <span className={cn(\n \"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors\",\n payMethod === m.id ? \"border-primary\" : \"border-border\"\n )}>\n {payMethod === m.id && (\n <span className=\"h-2 w-2 rounded-full bg-primary\" />\n )}\n </span>\n <span className=\"flex flex-col gap-0.5\">\n <span className={cn(\n \"text-sm font-semibold font-sans\",\n payMethod === m.id ? \"text-primary\" : \"text-foreground\"\n )}>\n {m.label}\n </span>\n <span className=\"text-xs text-muted-foreground font-sans\">{m.sub}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n\n {/* Terms and conditions */}\n <div className=\"rounded-xl border border-border p-4 flex flex-col gap-3\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Terms and conditions\n </p>\n <label className=\"flex items-start gap-2.5 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={termsAccepted}\n onChange={(e) => setTermsAccepted(e.target.checked)}\n className=\"h-4 w-4 shrink-0 mt-0.5 rounded border-border accent-primary cursor-pointer\"\n />\n <span className=\"text-sm font-sans text-foreground/80 leading-snug\">\n I have read and accept the{\" \"}\n <button\n type=\"button\"\n onClick={() => setTermsModalOpen(true)}\n className=\"underline underline-offset-2 text-primary hover:text-primary/80 transition-colors font-semibold\"\n >\n terms and conditions\n </button>{\" \"}\n of the reservation.\n </span>\n </label>\n </div>\n\n {/* Terms modal */}\n <Dialog open={termsModalOpen} onOpenChange={setTermsModalOpen}>\n <DialogContent className=\"!max-w-[80vw] w-[80vw] max-h-[85vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle className=\"font-heading text-xl\">Terms and Conditions</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 text-sm font-sans text-foreground/80 leading-relaxed\">\n <p>\n These terms and conditions ("Terms") govern the booking of travel experiences\n offered through Planeta EXO ("Company"). By confirming a booking, you agree to\n these Terms in full.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">1. Bookings and payments</h4>\n <p>\n A booking is confirmed upon receipt of the required deposit or full payment. The deposit\n amount is specified in your offer. The remaining balance must be paid by the balance due\n date stated in your offer.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">2. Cancellation policy</h4>\n <p>\n Cancellations made more than 60 days before departure are eligible for a full refund of\n the deposit. Cancellations between 30 and 60 days forfeit 50% of the deposit.\n Cancellations within 30 days of departure are non-refundable.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">3. Changes and modifications</h4>\n <p>\n The Company reserves the right to modify itineraries due to weather, safety, or\n operational reasons. Equivalent alternatives will be offered wherever possible.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">4. Travel insurance</h4>\n <p>\n Comprehensive travel insurance is strongly recommended. The Company is not liable for\n costs arising from trip interruption, medical emergencies, or personal loss.\n </p>\n <h4 className=\"font-bold text-foreground font-heading text-base\">5. Liability</h4>\n <p>\n Participation in adventure activities carries inherent risk. By booking, you acknowledge\n and accept these risks. The Company's liability is limited to the total booking amount.\n </p>\n <div className=\"pt-2\">\n <DialogClose\n render={\n <button\n type=\"button\"\n className=\"rounded-full bg-primary px-6 py-2.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors\"\n />\n }\n >\n Close\n </DialogClose>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n )}\n\n {/* Error */}\n {error && (\n <p className=\"text-sm text-destructive font-sans\">{error}</p>\n )}\n\n {/* Navigation */}\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3\">\n {stepIndex > 0 && (\n <button\n type=\"button\"\n onClick={goPrev}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-5 py-2.5 text-sm text-foreground font-sans hover:bg-muted/50 transition-colors\"\n >\n <ArrowLeftIcon className=\"w-3.5 h-3.5\" />\n Back\n </button>\n )}\n <button\n type=\"button\"\n onClick={goNext}\n className={cn(\n \"rounded-full bg-primary px-8 py-2.5 text-sm font-bold\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {step === \"payment\" ? \"Confirm booking\" : \"Next\"}\n </button>\n </div>\n {stepIndex === 0 && (\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"text-sm text-muted-foreground font-sans hover:text-foreground transition-colors self-start underline underline-offset-2\"\n >\n Cancel\n </button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/** Cartão de aventura isolado (mesmo layout que dentro de `Offer`). */\nexport function OfferAdventureCard({ adventure }: { adventure: OfferAdventureItem }) {\n return <AdventureCard adventure={adventure} />;\n}\n\n/* -----------------------------------------------------------------------\n Offer — main export\n ----------------------------------------------------------------------- */\n\nexport function Offer({\n logo = \"/logo-planetaexo.png\",\n logoAlt = \"Planeta EXO\",\n title,\n subtitle,\n adventures,\n subtotal,\n total,\n depositInfo,\n agent,\n onContinue,\n continueLabel = \"Book now\",\n externalBookingFlow,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n className,\n}: OfferProps) {\n const [showBooking, setShowBooking] = React.useState(false);\n\n const handleBook = () => {\n if (!externalBookingFlow) setShowBooking(true);\n onContinue?.();\n };\n\n return (\n <div className={cn(\"w-full max-w-5xl mx-auto flex flex-col gap-6 pb-20 lg:pb-0\", className)}>\n {/* ── Logo ── */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img src={logo} alt={logoAlt} className=\"w-[150px] h-auto object-contain mx-auto block\" />\n\n {/* ── Title ── */}\n <h1 className=\"text-2xl font-black text-foreground font-heading leading-tight\">{title}</h1>\n {subtitle && (\n <div className=\"text-sm text-muted-foreground font-sans space-y-1 leading-relaxed\">{subtitle}</div>\n )}\n\n {/* ── Two-column layout ── */}\n <div className=\"grid grid-cols-1 lg:grid-cols-[1fr_280px] gap-6 lg:gap-8 items-start\">\n\n {/* Left: main content */}\n <div className=\"flex flex-col gap-6\">\n {/* Adventures */}\n <section className=\"flex flex-col gap-5\">\n <div className=\"flex items-center gap-2\">\n <MapIcon className=\"w-5 h-5 text-primary shrink-0\" />\n <h2 className=\"font-bold text-foreground font-heading text-base\">\n Included Adventures\n </h2>\n </div>\n {adventures.map((adventure) => (\n <AdventureCard key={adventure.id} adventure={adventure} />\n ))}\n </section>\n\n {/* Summary */}\n {!showBooking && (\n <OfferSummarySection\n adventures={adventures}\n subtotal={subtotal}\n total={total}\n depositInfo={depositInfo}\n onContinue={handleBook}\n continueLabel={continueLabel}\n summaryNotesSlot={summaryNotesSlot}\n summaryDiscountLine={summaryDiscountLine}\n continueDisabled={continueDisabled}\n />\n )}\n\n {/* Booking wizard */}\n {showBooking && !externalBookingFlow && (\n <BookingWizard\n adventures={adventures}\n total={total}\n depositInfo={depositInfo}\n onCancel={() => setShowBooking(false)}\n />\n )}\n </div>\n\n {/* Right: sticky sidebar */}\n <div className=\"lg:sticky lg:top-8\">\n <OfferSidebar\n total={total}\n agent={agent}\n onBook={handleBook}\n bookLabel={continueLabel}\n bookDisabled={continueDisabled}\n />\n </div>\n </div>\n\n {/* Mobile floating footer — price + book button */}\n {!showBooking && (\n <div className=\"fixed bottom-0 inset-x-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3 lg:hidden\">\n <div className=\"flex items-center justify-between gap-4 max-w-5xl mx-auto\">\n <div className=\"flex flex-col\">\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground font-heading\">\n Total\n </span>\n <span className=\"text-xl font-black text-primary font-heading leading-tight\">\n {total}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={handleBook}\n className={cn(\n \"rounded-full bg-primary px-6 py-3 text-sm font-bold tracking-wide uppercase\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {continueLabel}\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n CalendarIcon,\n MapPinIcon,\n CompassIcon,\n CheckIcon,\n XIcon,\n UsersIcon,\n PlusIcon,\n Trash2Icon,\n CreditCardIcon,\n AlertCircleIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n PencilIcon,\n UserPlusIcon,\n UserMinusIcon,\n AlertTriangleIcon,\n ExternalLinkIcon,\n CopyIcon,\n MessageCircleIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { FloatingInput, FloatingSelect } from \"./FloatingInput\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport type BookingStatus = \"pending\" | \"confirmed\" | \"cancelled\" | \"completed\";\n\nexport interface BookingTraveller {\n id: string;\n firstName: string;\n lastName: string;\n email?: string;\n status: \"completed\" | \"pending\";\n isChild?: boolean;\n formUrl?: string;\n}\n\nexport interface SuggestedTraveller {\n id: string;\n firstName: string;\n lastName: string;\n}\n\nexport interface BookingSummaryLineItem {\n label: string;\n price: string;\n isDiscount?: boolean;\n isBold?: boolean;\n}\n\nexport interface BookingAdventure {\n id: string;\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n location?: string;\n partner?: string;\n dateFrom: string;\n dateTo: string;\n slots?: { adults: number; children?: number; seniors?: number };\n tags?: string[];\n travellers: BookingTraveller[];\n description?: string;\n included?: string[];\n notIncluded?: string[];\n cancellationPolicy?: string[];\n lineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n suggestedTravellers?: SuggestedTraveller[];\n formName?: string;\n}\n\nexport interface BookingContact {\n name: string;\n email?: string;\n phone?: string;\n country?: string;\n passport?: string;\n}\n\nexport interface BookingDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n isPaidInFull?: boolean;\n}\n\nexport interface BookingDetailsProps {\n bookingId: string;\n status: BookingStatus;\n createdAt: string;\n contact: BookingContact;\n agentName?: string;\n agentContactUrl?: string;\n adventures: BookingAdventure[];\n summaryLineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: BookingDepositInfo;\n onAddContactAsTraveller?: (adventureId: string) => void;\n onEditTraveller?: (adventureId: string, travellerId: string) => void;\n onRemoveTraveller?: (adventureId: string, travellerId: string) => void;\n onAddSuggestedTraveller?: (adventureId: string, travellerId: string) => void;\n onPayBalance?: () => void;\n onCancelRequest?: () => void;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Helpers\n ----------------------------------------------------------------------- */\n\nconst STATUS_STYLES: Record<BookingStatus, string> = {\n pending: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\",\n confirmed: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\",\n cancelled: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400\",\n completed: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400\",\n};\n\nfunction StatusBadge({ status }: { status: BookingStatus }) {\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-3 py-1 text-xs font-bold font-heading uppercase tracking-wider\",\n STATUS_STYLES[status]\n )}\n >\n {status}\n </span>\n );\n}\n\nfunction totalPeople(adventures: BookingAdventure[]) {\n let adults = 0;\n let children = 0;\n let seniors = 0;\n for (const a of adventures) {\n adults += a.slots?.adults ?? 0;\n children += a.slots?.children ?? 0;\n seniors += a.slots?.seniors ?? 0;\n }\n return { adults, children, seniors, total: adults + children + seniors };\n}\n\n/* -----------------------------------------------------------------------\n Internal: InfoCard — small top-row stat card\n ----------------------------------------------------------------------- */\n\nfunction InfoCard({\n label,\n children,\n}: {\n label: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"rounded-xl border border-border bg-card p-4 flex flex-col gap-1 min-w-0\">\n <span className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n {label}\n </span>\n <div className=\"text-sm font-sans text-foreground\">{children}</div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: AdventureSection — adventure card with accordion + travellers\n ----------------------------------------------------------------------- */\n\nfunction AdventureSection({\n adventure,\n onAddContactAsTraveller,\n onEditTraveller,\n onRemoveTraveller,\n onAddSuggestedTraveller,\n}: {\n adventure: BookingAdventure;\n onAddContactAsTraveller?: (adventureId: string) => void;\n onEditTraveller?: (adventureId: string, travellerId: string) => void;\n onRemoveTraveller?: (adventureId: string, travellerId: string) => void;\n onAddSuggestedTraveller?: (adventureId: string, travellerId: string) => void;\n}) {\n const [detailsOpen, setDetailsOpen] = React.useState(false);\n const [addModalOpen, setAddModalOpen] = React.useState(false);\n const [newTraveller, setNewTraveller] = React.useState({\n firstName: \"\",\n lastName: \"\",\n passport: \"\",\n type: \"adult\",\n email: \"\",\n dateOfBirth: \"\",\n phone: \"\",\n });\n const setField = <K extends keyof typeof newTraveller>(k: K, v: string) =>\n setNewTraveller((p) => ({ ...p, [k]: v }));\n\n const handleCopyUrl = (url: string) => {\n navigator.clipboard.writeText(url);\n };\n const people = adventure.slots;\n const peopleStr = [\n people?.adults ? `Adults: ${people.adults}` : null,\n people?.children ? `Children: ${people.children}` : null,\n people?.seniors ? `Seniors: ${people.seniors}` : null,\n ]\n .filter(Boolean)\n .join(\" · \");\n\n const totalSlots =\n (people?.adults ?? 0) + (people?.children ?? 0) + (people?.seniors ?? 0);\n\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\n {/* Adventure header */}\n <div className=\"p-5 lg:p-6 flex flex-col gap-2 bg-muted/60\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug\">\n {adventure.title}\n {adventure.reference && (\n <span className=\"text-xs font-normal text-muted-foreground/40 ml-1.5\">\n #{adventure.reference}\n </span>\n )}\n </h3>\n <div className=\"flex items-center gap-3 flex-wrap text-sm text-muted-foreground font-sans\">\n {adventure.partner && (\n <span className=\"flex items-center gap-1.5\">\n <CompassIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.partner}\n </span>\n )}\n {adventure.location && (\n <span className=\"flex items-center gap-1.5\">\n <MapPinIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.location}\n </span>\n )}\n </div>\n </div>\n\n {/* Details accordion trigger */}\n <button\n type=\"button\"\n onClick={() => setDetailsOpen((v) => !v)}\n className={cn(\n \"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-muted-foreground shrink-0 transition-colors\",\n \"hover:border-primary hover:text-primary\",\n detailsOpen && \"border-primary text-primary\"\n )}\n >\n Details\n {detailsOpen ? (\n <ChevronUpIcon className=\"w-3 h-3\" />\n ) : (\n <ChevronDownIcon className=\"w-3 h-3\" />\n )}\n </button>\n </div>\n\n {/* Date */}\n <div className=\"flex items-center gap-4 flex-wrap text-sm text-muted-foreground font-sans\">\n <span className=\"flex items-center gap-1.5\">\n <CalendarIcon className=\"w-3.5 h-3.5 shrink-0 text-primary\" />\n {adventure.dateFrom} → {adventure.dateTo}\n </span>\n </div>\n\n {/* Tags */}\n {adventure.tags && adventure.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 mt-1\">\n {adventure.tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center rounded-full bg-primary/10 px-2.5 py-0.5 text-xs font-semibold text-primary font-heading\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {/* Accordion: adventure details */}\n {detailsOpen && (\n <div className=\"border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-5 bg-muted/10\">\n {/* Itinerary */}\n {adventure.description && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Itinerary\n </h4>\n <p className=\"text-sm text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n )}\n\n {/* Included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n O que está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <CheckIcon className=\"w-4 h-4 text-primary shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n O que não está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <XIcon className=\"w-4 h-4 text-destructive shrink-0 mt-1\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Cancellation policy */}\n {adventure.cancellationPolicy &&\n adventure.cancellationPolicy.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Política de cancelamento\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.cancellationPolicy.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-muted-foreground font-sans\"\n >\n <span className=\"w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5\" />\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )}\n\n {/* Travellers */}\n <div className=\"border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-4\">\n {/* Header row */}\n <div className=\"flex items-center justify-between gap-3 flex-wrap\">\n <div className=\"flex items-center gap-2\">\n <h4 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Travellers\n </h4>\n {adventure.formName && (\n <span className=\"text-xs font-semibold text-muted-foreground/50 font-heading tracking-wide\">\n · {adventure.formName}\n </span>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n {onAddContactAsTraveller && (\n <button\n type=\"button\"\n onClick={() => onAddContactAsTraveller(adventure.id)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-muted-foreground hover:border-primary hover:text-primary hover:bg-primary/5 transition-colors\"\n >\n <UserPlusIcon className=\"w-3 h-3\" />\n <span className=\"hidden sm:inline\">Add contact as traveller</span>\n <span className=\"sm:hidden\">Add contact</span>\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setAddModalOpen(true)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-primary hover:border-primary hover:bg-primary/5 transition-colors\"\n >\n <PlusIcon className=\"w-3 h-3\" />\n <span className=\"hidden sm:inline\">More travellers</span>\n <span className=\"sm:hidden\">Add</span>\n </button>\n </div>\n </div>\n\n {/* Traveller rows */}\n <div className=\"flex flex-col divide-y divide-border\">\n {adventure.travellers.map((t) => (\n <div\n key={t.id}\n className=\"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 py-3 first:pt-0\"\n >\n {/* Top row on mobile / left on desktop: name + links */}\n <div className=\"flex items-center gap-3 min-w-0 flex-1\">\n <div className=\"flex flex-col gap-0.5 min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <p className=\"text-sm font-semibold text-foreground font-ui truncate\">\n {t.firstName} {t.lastName}\n </p>\n {t.isChild && (\n <span className=\"text-xs font-semibold font-heading rounded-full px-2 py-0.5 bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400 shrink-0\">\n Child\n </span>\n )}\n </div>\n {t.formUrl && (\n <div className=\"flex items-center gap-2\">\n <a\n href={t.formUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-xs text-primary hover:text-primary/80 transition-colors font-ui\"\n >\n <ExternalLinkIcon className=\"w-3 h-3\" />\n Open\n </a>\n <button\n type=\"button\"\n onClick={() => handleCopyUrl(t.formUrl!)}\n className=\"flex items-center text-xs text-muted-foreground hover:text-primary transition-colors font-ui\"\n aria-label=\"Copy form URL\"\n >\n <CopyIcon className=\"w-3 h-3\" />\n </button>\n </div>\n )}\n </div>\n </div>\n\n {/* Bottom row on mobile / right on desktop: status + actions */}\n <div className=\"flex items-center gap-2 sm:gap-3 justify-between sm:justify-end\">\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-bold font-heading uppercase tracking-wider shrink-0\",\n t.status === \"completed\"\n ? \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400\"\n )}\n >\n {t.status}\n </span>\n\n <div className=\"flex items-center gap-0.5 shrink-0\">\n {onEditTraveller && (\n <button\n type=\"button\"\n onClick={() => onEditTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors\"\n aria-label={`Edit ${t.firstName}`}\n >\n <PencilIcon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n {onRemoveTraveller && (\n <button\n type=\"button\"\n onClick={() => onRemoveTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors\"\n aria-label={`Delete ${t.firstName}`}\n >\n <Trash2Icon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n {onRemoveTraveller && (\n <button\n type=\"button\"\n onClick={() => onRemoveTraveller(adventure.id, t.id)}\n className=\"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors\"\n aria-label={`Remove ${t.firstName} from adventure`}\n >\n <UserMinusIcon className=\"w-3.5 h-3.5\" />\n </button>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Add to this adventure — suggested travellers */}\n {adventure.suggestedTravellers && adventure.suggestedTravellers.length > 0 && (\n <div className=\"flex flex-col gap-2 pt-2\">\n <p className=\"text-xs text-muted-foreground font-ui\">\n Add to this adventure\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {adventure.suggestedTravellers.map((st) => (\n <button\n key={st.id}\n type=\"button\"\n onClick={() => onAddSuggestedTraveller?.(adventure.id, st.id)}\n className=\"flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-foreground hover:border-primary hover:text-primary hover:bg-primary/5 transition-colors\"\n >\n <PlusIcon className=\"w-3 h-3\" />\n {st.firstName} {st.lastName}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Progress bar */}\n {adventure.travellers.length > 0 && totalSlots > 0 && (() => {\n const completed = adventure.travellers.filter((t) => t.status === \"completed\").length;\n const percent = Math.round((completed / totalSlots) * 100);\n const isComplete = completed === totalSlots;\n return (\n <div className=\"flex items-center gap-3 mt-1\">\n <div className=\"flex-1 h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary transition-all duration-500\"\n style={{ width: `${percent}%` }}\n />\n </div>\n <span className={cn(\n \"text-xs font-semibold font-ui shrink-0 flex items-center gap-1\",\n isComplete ? \"text-primary\" : \"text-destructive\"\n )}>\n {completed} of {totalSlots} travellers registered\n {!isComplete && <AlertTriangleIcon className=\"w-3 h-3\" />}\n </span>\n </div>\n );\n })()}\n </div>\n\n {/* Add traveller modal */}\n <Dialog open={addModalOpen} onOpenChange={setAddModalOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle className=\"font-heading text-xl\">Add traveller</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 pt-2\">\n <FloatingInput\n label=\"First name\"\n required\n value={newTraveller.firstName}\n onChange={(e) => setField(\"firstName\", e.target.value)}\n />\n <FloatingInput\n label=\"Last name\"\n required\n value={newTraveller.lastName}\n onChange={(e) => setField(\"lastName\", e.target.value)}\n />\n <FloatingInput\n label=\"Passport (optional)\"\n value={newTraveller.passport}\n onChange={(e) => setField(\"passport\", e.target.value)}\n />\n <FloatingSelect\n label=\"Type (adult/child/senior)\"\n value={newTraveller.type}\n onChange={(e) => setField(\"type\", e.target.value)}\n >\n <option value=\"adult\">Adult</option>\n <option value=\"child\">Child</option>\n <option value=\"senior\">Senior</option>\n </FloatingSelect>\n <FloatingInput\n label=\"Email\"\n type=\"email\"\n required\n value={newTraveller.email}\n onChange={(e) => setField(\"email\", e.target.value)}\n />\n <FloatingInput\n label=\"Date of birth\"\n type=\"date\"\n value={newTraveller.dateOfBirth}\n onChange={(e) => setField(\"dateOfBirth\", e.target.value)}\n />\n <FloatingInput\n label=\"Phone (optional)\"\n type=\"tel\"\n value={newTraveller.phone}\n onChange={(e) => setField(\"phone\", e.target.value)}\n />\n <div className=\"flex items-center justify-end gap-3 pt-2\">\n <button\n type=\"button\"\n onClick={() => setAddModalOpen(false)}\n className=\"text-sm font-ui text-muted-foreground hover:text-foreground transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setAddModalOpen(false);\n setNewTraveller({\n firstName: \"\",\n lastName: \"\",\n passport: \"\",\n type: \"adult\",\n email: \"\",\n dateOfBirth: \"\",\n phone: \"\",\n });\n }}\n className=\"rounded-full bg-primary px-6 py-2.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors\"\n >\n Add\n </button>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Internal: OrderSummary\n ----------------------------------------------------------------------- */\n\nfunction OrderSummary({\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n}: {\n adventures: BookingAdventure[];\n summaryLineItems?: BookingSummaryLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: BookingDepositInfo;\n}) {\n return (\n <div className=\"rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4\">\n <h3 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Order Summary\n </h3>\n <Separator />\n\n {/* Per-adventure line items */}\n {adventures.map((adventure, i) => (\n <div key={adventure.id} className=\"flex flex-col gap-2\">\n <p className=\"text-base font-bold text-foreground font-heading\">\n {adventure.title}\n </p>\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <div className=\"flex flex-col gap-1.5 pl-3 border-l-2 border-primary/20 ml-1\">\n {adventure.lineItems.map((item, j) => (\n <div\n key={j}\n className=\"flex items-start justify-between gap-3\"\n >\n <span\n className={cn(\n \"text-sm font-sans leading-tight\",\n item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-sans shrink-0\",\n item.isDiscount\n ? \"text-green-600 dark:text-green-400\"\n : item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n </div>\n )}\n {adventure.subtotal && (\n <div className=\"flex items-center justify-between mt-1\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Subtotal this adventure\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {adventure.subtotal}\n </span>\n </div>\n )}\n {i < adventures.length - 1 && <Separator className=\"mt-2\" />}\n </div>\n ))}\n\n <Separator />\n\n {/* Global summary items (e.g. extras, coupons) */}\n {summaryLineItems && summaryLineItems.length > 0 && (\n <>\n {summaryLineItems.map((item, i) => (\n <div key={i} className=\"flex items-center justify-between\">\n <span\n className={cn(\n \"text-sm font-sans\",\n item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-sans\",\n item.isDiscount\n ? \"text-green-600 dark:text-green-400\"\n : item.isBold\n ? \"font-semibold text-foreground\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n <Separator />\n </>\n )}\n\n {subtotal && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Subtotal\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {subtotal}\n </span>\n </div>\n )}\n\n {/* Total */}\n <div className=\"flex items-center justify-between pt-1\">\n <span className=\"text-base font-bold text-foreground font-heading\">\n Total\n </span>\n <span className=\"text-2xl font-black text-primary font-heading\">\n {total}\n </span>\n </div>\n\n {/* Deposit info */}\n {depositInfo && (\n <div className=\"flex flex-col gap-2 rounded-lg bg-muted/50 border border-border p-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Deposit ({depositInfo.depositPercent}%)\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.depositAmount}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Remaining balance\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.remainingAmount}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm text-muted-foreground font-sans\">\n Balance due\n </span>\n <span className=\"text-sm font-semibold text-foreground font-sans\">\n {depositInfo.balanceDueDate}\n </span>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n BookingDetails — main export\n ----------------------------------------------------------------------- */\n\nexport function BookingDetails({\n bookingId,\n status,\n createdAt,\n contact,\n agentName,\n agentContactUrl,\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n onAddContactAsTraveller,\n onEditTraveller,\n onRemoveTraveller,\n onAddSuggestedTraveller,\n onPayBalance,\n onCancelRequest,\n className,\n}: BookingDetailsProps) {\n const people = totalPeople(adventures);\n\n return (\n <div\n className={cn(\"w-full max-w-5xl mx-auto flex flex-col gap-6 px-4 sm:px-6 lg:px-0\", className)}\n >\n {/* ── Header ── */}\n <div className=\"flex items-start justify-between gap-4 flex-wrap\">\n <div className=\"flex flex-col gap-1\">\n <h1 className=\"text-2xl font-black text-foreground font-heading leading-tight\">\n Booking{\" \"}\n <span className=\"text-primary\">#{bookingId}</span>\n </h1>\n <p className=\"text-sm text-muted-foreground font-sans\">\n Created on {createdAt}\n </p>\n </div>\n <StatusBadge status={status} />\n </div>\n\n {/* ── Info cards ── */}\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-3\">\n <InfoCard label=\"Contact\">\n <p className=\"font-semibold\">{contact.name}</p>\n {contact.email && (\n <p className=\"text-sm text-muted-foreground font-sans truncate\">{contact.email}</p>\n )}\n </InfoCard>\n {agentName && (\n <div className=\"rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0\">\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary/10 text-primary font-heading font-bold text-sm uppercase\">\n {agentName.charAt(0)}\n </div>\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n <span className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Your Agent\n </span>\n <p className=\"text-sm font-semibold text-foreground font-sans\">{agentName}</p>\n </div>\n {agentContactUrl && (\n <a\n href={agentContactUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"ml-auto shrink-0 flex items-center gap-1.5 rounded-full bg-primary/10 px-3.5 py-1.5 text-xs font-semibold text-primary font-ui transition-colors hover:bg-primary/20\"\n >\n <MessageCircleIcon className=\"w-3.5 h-3.5\" />\n Contact\n </a>\n )}\n </div>\n )}\n <InfoCard label=\"Total People\">\n <div className=\"flex items-center gap-2\">\n <UsersIcon className=\"w-4 h-4 text-primary shrink-0\" />\n <span className=\"font-semibold\">{people.total} person(s)</span>\n </div>\n <p className=\"text-sm text-muted-foreground font-sans\">\n {[\n people.adults > 0 ? `Adults: ${people.adults}` : null,\n people.children > 0 ? `Children: ${people.children}` : null,\n people.seniors > 0 ? `Seniors: ${people.seniors}` : null,\n ]\n .filter(Boolean)\n .join(\" · \")}\n </p>\n </InfoCard>\n </div>\n\n {/* ── Adventures ── */}\n <section className=\"flex flex-col gap-4\">\n <h2 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Adventures ({adventures.length})\n </h2>\n {adventures.map((adventure) => (\n <AdventureSection\n key={adventure.id}\n adventure={adventure}\n onAddContactAsTraveller={onAddContactAsTraveller}\n onEditTraveller={onEditTraveller}\n onRemoveTraveller={onRemoveTraveller}\n onAddSuggestedTraveller={onAddSuggestedTraveller}\n />\n ))}\n </section>\n\n {/* ── Order Summary ── */}\n <OrderSummary\n adventures={adventures}\n summaryLineItems={summaryLineItems}\n subtotal={subtotal}\n total={total}\n depositInfo={depositInfo}\n />\n\n {/* ── Responsible Person ── */}\n <div className=\"rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4\">\n <h3 className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Responsible Person\n </h3>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-3\">\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Name\n </p>\n <p className=\"text-sm font-semibold text-foreground font-sans\">\n {contact.name}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Email\n </p>\n <p className=\"text-sm text-foreground font-sans truncate\">\n {contact.email ?? \"—\"}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Phone\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.phone ?? \"—\"}\n </p>\n </div>\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Country\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.country ?? \"—\"}\n </p>\n </div>\n {contact.passport && (\n <div>\n <p className=\"text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5\">\n Passport / CPF\n </p>\n <p className=\"text-sm text-foreground font-sans\">\n {contact.passport}\n </p>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Actions ── */}\n {(onPayBalance || onCancelRequest) && (\n <div className=\"flex flex-col items-center gap-4\">\n {depositInfo && !depositInfo.isPaidInFull && onPayBalance && (\n <button\n type=\"button\"\n onClick={onPayBalance}\n className={cn(\n \"w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide\",\n \"text-primary-foreground font-heading transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"flex items-center justify-center gap-2\"\n )}\n >\n <CreditCardIcon className=\"w-4 h-4\" />\n Pay remaining balance — {depositInfo.remainingAmount}\n </button>\n )}\n\n {onCancelRequest && status !== \"cancelled\" && (\n <button\n type=\"button\"\n onClick={onCancelRequest}\n className=\"flex items-center gap-1.5 text-xs font-ui text-muted-foreground hover:text-destructive transition-colors underline underline-offset-2\"\n >\n <AlertCircleIcon className=\"w-3 h-3\" />\n Request cancellation\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface BookingConfirmationEmailProps {\n /** Nome do destinatário (ex: \"Maria\") */\n recipientName: string;\n /** URL do link para adicionar viajantes. Se omitido, o botão é renderizado sem link. */\n addTravellersUrl?: string;\n /** URL da logo PlanetaEXO. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */\n logoUrl?: string;\n /** Número da reserva */\n bookingNumber: string;\n /** Nome da atividade */\n activity: string;\n /** Nome da aventura */\n adventure: string;\n /** Data de início (formatada) */\n startingDate: string;\n /** Número de pessoas */\n numberOfPeople: number;\n /** Nome do host/anfitrião */\n host: string;\n /** className adicional no container */\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n BookingConfirmationEmail\n ----------------------------------------------------------------------- */\nconst DEFAULT_LOGO = \"/logo-planetaexo.png\";\n\nexport function BookingConfirmationEmail({\n recipientName,\n addTravellersUrl,\n logoUrl = DEFAULT_LOGO,\n bookingNumber,\n activity,\n adventure,\n startingDate,\n numberOfPeople,\n host,\n className,\n}: BookingConfirmationEmailProps) {\n const AddTravellersCta = addTravellersUrl ? (\n <a\n href={addTravellersUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading hover:bg-primary-800 transition-colors no-underline\"\n >\n Add travellers to your booking\n </a>\n ) : (\n <span\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading\"\n role=\"presentation\"\n >\n Add travellers to your booking\n </span>\n );\n\n return (\n <div\n className={cn(\n \"max-w-xl mx-auto bg-white text-foreground font-sans text-base leading-relaxed\",\n className\n )}\n >\n {/* Logo */}\n <div className=\"mt-8 mb-8 flex justify-center\">\n <img\n src={logoUrl}\n alt=\"PlanetaEXO\"\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n <p className=\"mb-4\">Hi {recipientName},</p>\n\n <p className=\"mb-4\">\n Thank you for booking your adventure with PlanetaEXO — we're really\n looking forward to your adventure.\n </p>\n\n <p className=\"mb-4\">\n To move forward, the first step is to add all travellers included in\n your booking. Once you do this, each person — including you — will\n receive an email with a link to complete their individual registration.\n </p>\n\n <div className=\"mb-8\">{AddTravellersCta}</div>\n\n <hr className=\"border-t border-border mb-8\" />\n\n <p className=\"mb-4 font-heading font-bold text-foreground\">\n 📝 Here's a quick summary of your booking:\n </p>\n\n <table className=\"w-full text-sm mb-8\">\n <tbody className=\"divide-y divide-border\">\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Booking Number:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{bookingNumber}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Activity:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{activity}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Adventure:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{adventure}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Starting Date:\n </td>\n <td className=\"py-1 font-medium text-foreground\">{startingDate}</td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">\n Number of People:\n </td>\n <td className=\"py-1 font-medium text-foreground\">\n {numberOfPeople}\n </td>\n </tr>\n <tr>\n <td className=\"py-1 pr-4 text-muted-foreground font-ui\">Host:</td>\n <td className=\"py-1 font-medium text-foreground\">{host}</td>\n </tr>\n </tbody>\n </table>\n\n <hr className=\"border-t border-border mb-8\" />\n\n <p className=\"mb-4\">\n After adding everyone, you will also receive your own registration\n email, just like the other travellers. Please make sure everyone\n completes this step so we can organise everything properly.\n </p>\n\n <p>\n If you have any questions, just reply to this email — happy to help.\n </p>\n </div>\n );\n}\n","import { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface ConfirmationLineItem {\n label: string;\n price: string;\n isDiscount?: boolean;\n}\n\nexport interface ConfirmationTraveller {\n id: string;\n firstName: string;\n lastName: string;\n isChild?: boolean;\n}\n\nexport interface ConfirmationAdventure {\n id: string;\n reference?: string;\n image: string;\n imageAlt?: string;\n title: string;\n partner?: string;\n location?: string;\n dateFrom: string;\n dateTo: string;\n slots?: { adults: number; children?: number };\n description?: string;\n included?: string[];\n notIncluded?: string[];\n lineItems?: ConfirmationLineItem[];\n subtotal?: string;\n travellers?: ConfirmationTraveller[];\n}\n\nexport interface ConfirmationDepositInfo {\n depositPercent: number;\n depositAmount: string;\n remainingAmount: string;\n balanceDueDate: string;\n isPaidInFull?: boolean;\n}\n\nexport interface BookingConfirmationProps {\n /** Nome do destinatario (ex: \"Maria\") */\n recipientName: string;\n /** URL da logo. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */\n logoUrl?: string;\n /** Numero da reserva */\n bookingReference: string;\n /** Adventures included in the booking */\n adventures: ConfirmationAdventure[];\n /** Global line items (e.g. coupons, fees) */\n summaryLineItems?: ConfirmationLineItem[];\n subtotal?: string;\n total: string;\n depositInfo?: ConfirmationDepositInfo;\n /** Nome do agente responsavel */\n agent: string;\n /** URL para ver os detalhes completos do booking */\n viewBookingUrl?: string;\n /** className adicional no container */\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n BookingConfirmation — main export (email template)\n ----------------------------------------------------------------------- */\n\nconst DEFAULT_LOGO = \"/logo-planetaexo.png\";\n\nexport function BookingConfirmation({\n recipientName,\n logoUrl = DEFAULT_LOGO,\n bookingReference,\n adventures,\n summaryLineItems,\n subtotal,\n total,\n depositInfo,\n agent,\n viewBookingUrl,\n className,\n}: BookingConfirmationProps) {\n const allTravellers = adventures.flatMap((a) => a.travellers ?? []);\n\n const ViewBookingCta = viewBookingUrl ? (\n <a\n href={viewBookingUrl}\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors no-underline\"\n >\n View booking details\n </a>\n ) : (\n <span\n className=\"inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading\"\n role=\"presentation\"\n >\n View booking details\n </span>\n );\n\n return (\n <div\n className={cn(\n \"max-w-xl mx-auto bg-white text-foreground font-sans text-base leading-relaxed\",\n className\n )}\n >\n {/* ── Logo ── */}\n <div className=\"pt-10 pb-8 flex justify-center\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={logoUrl}\n alt=\"PlanetaEXO\"\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n {/* ── Greeting ── */}\n <div className=\"px-8\">\n <p className=\"mb-5 text-base\">Hi {recipientName},</p>\n\n <p className=\"mb-5 text-base\">\n Great news — your booking has been confirmed! Everything is set and\n we're getting ready for your adventure.\n </p>\n\n <p className=\"mb-8 text-base\">\n Below you'll find the full details of your reservation, including\n the adventures, travellers, and payment summary.\n </p>\n\n <div className=\"mb-10\">{ViewBookingCta}</div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Next steps ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 📋 Next Steps\n </p>\n <div className=\"rounded-xl border border-border p-5 flex flex-col gap-4\">\n {[\n \"Each traveller will receive a separate email with a link to complete their individual registration.\",\n \"Make sure everyone completes their registration so we can organise everything properly.\",\n \"You will receive a final confirmation once all travellers are registered and ready to go.\",\n ].map((step, i) => (\n <div key={i} className=\"flex items-start gap-3.5\">\n <span className=\"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-primary/10 text-xs font-bold text-primary font-heading mt-0.5\">\n {i + 1}\n </span>\n <p className=\"text-sm text-foreground/80 leading-relaxed\">\n {step}\n </p>\n </div>\n ))}\n </div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Booking summary card ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 📝 Booking Summary\n </p>\n\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <table className=\"w-full text-sm\">\n <tbody>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Booking Number\n </td>\n <td className=\"py-3 px-5 font-semibold text-primary\">\n {bookingReference}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Adventures\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {adventures.length}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Total Travellers\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {allTravellers.length}\n </td>\n </tr>\n <tr>\n <td className=\"py-3 px-5 text-muted-foreground font-ui bg-muted/30\">\n Agent\n </td>\n <td className=\"py-3 px-5 font-medium text-foreground\">\n {agent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Adventures (Offer-style cards) ── */}\n <div className=\"px-8 py-8 flex flex-col gap-6\">\n {adventures.map((adventure) => (\n <div\n key={adventure.id}\n className=\"rounded-2xl border border-border bg-card overflow-hidden\"\n >\n {/* Cover image */}\n <div className=\"aspect-[16/7] overflow-hidden bg-muted\">\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={adventure.image}\n alt={adventure.imageAlt ?? adventure.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Card body */}\n <div className=\"p-5 flex flex-col gap-2.5\">\n {/* Reference badge */}\n {adventure.reference && (\n <span className=\"inline-flex items-center rounded-md bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary font-heading tracking-wide self-start\">\n {adventure.reference}\n </span>\n )}\n\n {/* Title */}\n <h3 className=\"text-xl font-bold text-foreground font-heading leading-snug mt-0.5\">\n {adventure.title}\n </h3>\n\n {/* Date range */}\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" ry=\"2\"/><line x1=\"16\" x2=\"16\" y1=\"2\" y2=\"6\"/><line x1=\"8\" x2=\"8\" y1=\"2\" y2=\"6\"/><line x1=\"3\" x2=\"21\" y1=\"10\" y2=\"10\"/></svg>\n {adventure.dateFrom} → {adventure.dateTo}\n </p>\n\n {/* Location */}\n {adventure.location && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"/><circle cx=\"12\" cy=\"10\" r=\"3\"/></svg>\n {adventure.location}\n </p>\n )}\n\n {/* Slots */}\n {adventure.slots && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/><circle cx=\"9\" cy=\"7\" r=\"4\"/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"/></svg>\n {[\n adventure.slots.adults ? `${adventure.slots.adults} adult(s)` : null,\n adventure.slots.children ? `${adventure.slots.children} child(ren)` : null,\n ]\n .filter(Boolean)\n .join(\" · \")}\n </p>\n )}\n\n {/* Partner */}\n {adventure.partner && (\n <p className=\"flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none\">\n <svg className=\"w-3.5 h-3.5 text-primary shrink-0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><polygon points=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"/></svg>\n {adventure.partner}\n </p>\n )}\n\n {/* Travellers */}\n {adventure.travellers && adventure.travellers.length > 0 && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Travellers\n </p>\n <div className=\"flex flex-col gap-1.5\">\n {adventure.travellers.map((t) => (\n <div\n key={t.id}\n className=\"flex items-center justify-between\"\n >\n <span className=\"text-sm font-medium text-foreground font-sans\">\n {t.firstName} {t.lastName}\n </span>\n {t.isChild && (\n <span className=\"text-[10px] font-semibold text-muted-foreground bg-muted rounded-full px-2 py-0.5 font-heading uppercase tracking-wide\">\n child\n </span>\n )}\n </div>\n ))}\n </div>\n </div>\n </>\n )}\n\n {/* Description / Itinerary */}\n {adventure.description && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Itinerary\n </p>\n <p className=\"text-sm text-foreground/80 leading-relaxed font-sans\">\n {adventure.description}\n </p>\n </div>\n </>\n )}\n\n {/* What's included */}\n {adventure.included && adventure.included.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n O que está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.included.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <svg className=\"w-4 h-4 text-primary shrink-0 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* What's not included */}\n {adventure.notIncluded && adventure.notIncluded.length > 0 && (\n <div className=\"flex flex-col gap-2.5 mt-1\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n O que não está incluso\n </h4>\n <ul className=\"flex flex-col gap-1.5\">\n {adventure.notIncluded.map((item, i) => (\n <li\n key={i}\n className=\"flex items-start gap-2 text-sm text-foreground/80 font-sans\"\n >\n <svg className=\"w-4 h-4 text-destructive shrink-0 mt-0.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n {item}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Line items / pricing */}\n {adventure.lineItems && adventure.lineItems.length > 0 && (\n <>\n <hr className=\"border-t border-border my-1\" />\n <div>\n <p className=\"text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2\">\n Pricing\n </p>\n <div className=\"flex flex-col gap-1\">\n {adventure.lineItems.map((item, j) => (\n <div\n key={j}\n className=\"flex items-center justify-between\"\n >\n <span className=\"text-sm text-muted-foreground font-sans\">\n {item.label}\n </span>\n <span\n className={cn(\n \"text-sm font-medium font-sans whitespace-nowrap\",\n item.isDiscount\n ? \"text-green-600\"\n : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </span>\n </div>\n ))}\n {adventure.subtotal && (\n <div className=\"flex items-center justify-between pt-2 mt-1 border-t border-border\">\n <span className=\"text-sm font-bold text-foreground font-heading\">\n Subtotal\n </span>\n <span className=\"text-sm font-bold text-foreground font-heading whitespace-nowrap\">\n {adventure.subtotal}\n </span>\n </div>\n )}\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n ))}\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Payment summary ── */}\n <div className=\"px-8 py-8\">\n <p className=\"mb-5 font-heading font-bold text-foreground text-lg\">\n 💰 Payment Summary\n </p>\n\n <div className=\"rounded-xl border border-border overflow-hidden\">\n <table className=\"w-full text-sm\">\n <tbody>\n {/* Global line items */}\n {summaryLineItems &&\n summaryLineItems.map((item, i) => (\n <tr key={i} className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n {item.label}\n </td>\n <td\n className={cn(\n \"py-2.5 px-4 text-right font-medium whitespace-nowrap\",\n item.isDiscount ? \"text-green-600\" : \"text-foreground\"\n )}\n >\n {item.isDiscount ? \"−\" : \"\"}\n {item.price}\n </td>\n </tr>\n ))}\n\n {/* Subtotal */}\n {subtotal && (\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground font-ui\">\n Subtotal\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {subtotal}\n </td>\n </tr>\n )}\n\n {/* Total */}\n <tr className=\"bg-muted/30\">\n <td className=\"py-4 px-4 font-bold text-foreground font-heading text-base\">\n Total\n </td>\n <td className=\"py-4 px-4 text-right font-bold text-primary font-heading text-xl whitespace-nowrap\">\n {total}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n {/* Deposit info */}\n {depositInfo && (\n <div className=\"rounded-xl border border-border mt-4 overflow-hidden\">\n <div className=\"px-4 py-3 bg-muted/30 border-b border-border\">\n <p className=\"text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest\">\n Payment Details\n </p>\n </div>\n <table className=\"w-full text-sm\">\n <tbody>\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Deposit ({depositInfo.depositPercent}%)\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.depositAmount}\n </td>\n </tr>\n <tr className=\"border-b border-border\">\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Remaining balance\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.remainingAmount}\n </td>\n </tr>\n <tr\n className={cn(\n depositInfo.isPaidInFull && \"border-b border-border\"\n )}\n >\n <td className=\"py-2.5 px-4 text-muted-foreground\">\n Balance due\n </td>\n <td className=\"py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap\">\n {depositInfo.balanceDueDate}\n </td>\n </tr>\n {depositInfo.isPaidInFull && (\n <tr>\n <td\n colSpan={2}\n className=\"py-3 px-4 text-center font-semibold text-green-600 bg-green-50\"\n >\n ✅ Paid in full\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n <hr className=\"border-t border-border mx-8\" />\n\n {/* ── Footer message ── */}\n <div className=\"px-8 py-8 pb-10\">\n <p className=\"mb-5 text-base\">\n All travellers have been registered for this booking. Each person will\n receive a separate email with their individual details and any\n pre-departure information.\n </p>\n\n <p className=\"text-base\">\n If you have any questions, just reply to this email or contact{\" \"}\n <span className=\"font-semibold\">{agent}</span> — happy to help.\n </p>\n </div>\n </div>\n );\n}\n"]}
|