@planetaexo/design-system 0.3.3 → 0.3.5

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.js.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/CountrySearchField.tsx","../src/components/Offer.tsx","../src/components/BookingDetails.tsx","../src/components/BookingConfirmation.tsx","../src/components/BookingConfirmationEmail.tsx","../src/components/CounterField.tsx","../src/components/ui/popover.tsx","../src/components/DatePickerField.tsx","../src/components/BookingForm.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/accordion.tsx","../src/components/FilterPanel.tsx","../src/components/Itinerary.tsx","../src/components/MenuTrip.tsx","../src/components/PhotoGallery.tsx","../src/components/ui/badge.tsx","../src/components/PricingTrip.tsx","../src/components/SiteHeader.tsx","../src/components/ThemeToggle.tsx","../src/components/TripCard.tsx","../src/components/TripHeader.tsx","../src/components/TripPage.tsx","../src/components/ActivityCard.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/LeadCapturePopup.tsx"],"names":["SeparatorPrimitive","jsx","ButtonPrimitive","DialogPrimitive","_a","_b","className","props","React","React2","jsxs","React3","ChevronDownIcon","React4","React5","XIcon","Fragment","ChevronRightIcon","React6","MapPinIcon","CalendarIcon","CheckIcon","UsersIcon","DEFAULT_LABELS","DEFAULT_LOGO","PlusIcon","PopoverPrimitive","React7","format","React8","CheckboxPrimitive","React9","AccordionPrimitive","ChevronUpIcon","MinusIcon","React10","React11","ChevronLeftIcon","React12","React13","cva","React14","React15","SearchIcon","React16","React17","MoonIcon","SunIcon","ClockIcon","sizeConfig","InputPrimitive","useState","useRef","useCallback","useEffect","e"],"mappings":"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","file":"index.js","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 { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface CountryOption {\n code: string;\n name: string;\n}\n\nexport interface CountrySearchFieldProps {\n value: string;\n onChange: (code: string) => void;\n required?: boolean;\n label?: string;\n countries?: CountryOption[];\n placeholder?: string;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Default country list\n ----------------------------------------------------------------------- */\n\nexport const COUNTRIES: CountryOption[] = [\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];\n\n/* -----------------------------------------------------------------------\n CountrySearchField\n ----------------------------------------------------------------------- */\n\nexport function CountrySearchField({\n value,\n onChange,\n required,\n label = \"Country\",\n countries,\n placeholder = \"Search country…\",\n className,\n}: CountrySearchFieldProps) {\n const list = countries ?? COUNTRIES;\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 = list.find((c) => c.code === value);\n const isFloated = open || !!selected;\n\n const filtered = query.trim()\n ? list.filter((c) => c.name.toLowerCase().includes(query.toLowerCase()))\n : list;\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={cn(\"relative w-full\", className)}>\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 {label}{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={placeholder}\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","\"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} 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\";\nimport { CountrySearchField, COUNTRIES } from \"./CountrySearchField\";\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 /** Uncontrolled: estado inicial gerenciado internamente pelo DS. */\n defaultChecked?: boolean;\n /** Controlled: quando presente, o host app é dono do estado de seleção. */\n checked?: boolean;\n /** Controlled: chamado ao marcar/desmarcar. Ignorado se `checked` não for passado. */\n onCheckedChange?: (id: string, checked: boolean) => void;\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 * @deprecated Prefira `checkoutSlot` para manter o padrão visual do DS. */\n externalBookingFlow?: boolean;\n /** Conteúdo de checkout do host app. Quando presente, substitui o BookingWizard interno:\n * o sumário some e este slot aparece no lugar — mesmo comportamento visual do DS. */\n checkoutSlot?: React.ReactNode;\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 isControlled = adventure.optionals?.some((o) => o.onCheckedChange !== undefined) ?? false;\n\n const [checkedInternal, setCheckedInternal] = React.useState<Set<string>>(\n new Set(adventure.optionals?.filter((o) => o.defaultChecked).map((o) => o.id) ?? [])\n );\n\n const isChecked = (opt: OfferOptionalItem) =>\n isControlled ? (opt.checked ?? false) : checkedInternal.has(opt.id);\n\n const toggleOptional = (opt: OfferOptionalItem) => {\n if (isControlled) {\n opt.onCheckedChange?.(opt.id, !opt.checked);\n } else {\n setCheckedInternal((prev) => {\n const next = new Set(prev);\n next.has(opt.id) ? next.delete(opt.id) : next.add(opt.id);\n return next;\n });\n }\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={isChecked(opt)}\n onChange={() => toggleOptional(opt)}\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/* CountrySearchField + COUNTRIES imported from ./CountrySearchField */\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 Exported: BookingShell — shell visual do checkout (card + step indicator + navegação)\n Host apps injetam o conteúdo real de cada etapa via children.\n ----------------------------------------------------------------------- */\n\nexport interface BookingShellProps {\n /** Labels de cada etapa, em ordem */\n steps: string[];\n /** Índice 0-based da etapa atual */\n currentStep: number;\n /** Título exibido no cabeçalho */\n title?: string;\n /** Conteúdo da etapa atual */\n children: React.ReactNode;\n onNext?: () => void;\n onBack?: () => void;\n onCancel?: () => void;\n nextLabel?: string;\n backLabel?: string;\n cancelLabel?: string;\n nextDisabled?: boolean;\n nextBlockedMessage?: string | null;\n error?: string | null;\n successMessage?: string | null;\n}\n\nexport function BookingShell({\n steps,\n currentStep,\n title = \"Booking details\",\n children,\n onNext,\n onBack,\n onCancel,\n nextLabel = \"Next\",\n backLabel = \"Back\",\n cancelLabel = \"Cancel\",\n nextDisabled,\n nextBlockedMessage,\n error,\n successMessage,\n}: BookingShellProps) {\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\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\">{title}</h3>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {steps.map((label, i) => (\n <React.Fragment key={i}>\n <span\n className={cn(\n \"text-xs font-sans\",\n i === currentStep\n ? \"text-primary font-semibold\"\n : i < currentStep\n ? \"text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {label}\n </span>\n {i < 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 <div>{children}</div>\n\n {error && (\n <p className=\"text-sm text-destructive font-sans\">{error}</p>\n )}\n\n {successMessage && (\n <div className=\"text-sm font-sans rounded-lg px-3 py-2 bg-primary/10 border border-primary/30 text-primary\">\n {successMessage}\n </div>\n )}\n\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3\">\n {currentStep > 0 && (\n <button\n type=\"button\"\n onClick={onBack}\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 {backLabel}\n </button>\n )}\n <button\n type=\"button\"\n onClick={onNext}\n disabled={nextDisabled}\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 nextDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {nextLabel}\n </button>\n </div>\n {nextDisabled && nextBlockedMessage && (\n <div className=\"text-xs text-amber-400 bg-amber-500/10 border border-amber-500/30 rounded-lg px-3 py-2\">\n {nextBlockedMessage}\n </div>\n )}\n {currentStep === 0 && onCancel && (\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 {cancelLabel}\n </button>\n )}\n </div>\n </div>\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 <BookingShell\n steps={WIZARD_STEPS.map((s) => s.label)}\n currentStep={stepIndex}\n title=\"Booking details\"\n onNext={goNext}\n onBack={goPrev}\n onCancel={onCancel}\n nextLabel={step === \"payment\" ? \"Confirm booking\" : \"Next\"}\n backLabel=\"Back\"\n cancelLabel=\"Cancel\"\n error={error}\n >\n <div className=\"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 (&quot;Terms&quot;) govern the booking of travel experiences\n offered through Planeta EXO (&quot;Company&quot;). 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&apos;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 </div>\n </BookingShell>\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 checkoutSlot,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n className,\n}: OfferProps) {\n // Usado apenas quando não há checkoutSlot (wizard interno ou externalBookingFlow legado).\n const [showBooking, setShowBooking] = React.useState(false);\n\n // Checkout visível se o host app passou um slot OU se o wizard interno foi ativado.\n const isShowingCheckout = !!checkoutSlot || showBooking;\n\n const handleBook = () => {\n // checkoutSlot: host app controla a exibição via prop — DS não precisa gerenciar estado.\n // wizard interno: DS gerencia showBooking.\n // externalBookingFlow legado: apenas dispara onContinue.\n if (!checkoutSlot && !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 — some quando o checkout está visível */}\n {!isShowingCheckout && (\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 {/* Checkout: slot do host app (com sua lógica real) ou wizard interno (demo) */}\n {isShowingCheckout && (\n checkoutSlot ?? (\n <BookingWizard\n adventures={adventures}\n total={total}\n depositInfo={depositInfo}\n onCancel={() => setShowBooking(false)}\n />\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 — some quando o checkout está visível */}\n {!isShowingCheckout && (\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","import { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface BookingConfirmationLabels {\n ctaButton?: string;\n logoAlt?: string;\n greeting?: (recipientName: string) => string;\n confirmationMessage?: string;\n detailsIntro?: string;\n nextStepsHeading?: string;\n nextSteps?: [string, string, string];\n bookingSummaryHeading?: string;\n bookingNumberLabel?: string;\n adventuresLabel?: string;\n totalTravellersLabel?: string;\n agentLabel?: string;\n adultsUnit?: string;\n childrenUnit?: string;\n travellersLabel?: string;\n childBadge?: string;\n itineraryLabel?: string;\n includedLabel?: string;\n notIncludedLabel?: string;\n pricingLabel?: string;\n subtotalLabel?: string;\n totalLabel?: string;\n paymentSummaryHeading?: string;\n paymentDetailsHeading?: string;\n depositLabel?: (percent: number) => string;\n remainingBalanceLabel?: string;\n balanceDueLabel?: string;\n paidInFullLabel?: string;\n footerMessage?: string;\n footerContact?: (agent: string) => string;\n}\n\nconst DEFAULT_LABELS: Required<BookingConfirmationLabels> = {\n ctaButton: \"View booking details\",\n logoAlt: \"PlanetaEXO\",\n greeting: (recipientName: string) => `Hi ${recipientName},`,\n confirmationMessage:\n \"Great news \\u2014 your booking has been confirmed! Everything is set and we\\u2019re getting ready for your adventure.\",\n detailsIntro:\n \"Below you\\u2019ll find the full details of your reservation, including the adventures, travellers, and payment summary.\",\n nextStepsHeading: \"\\uD83D\\uDCCB Next Steps\",\n nextSteps: [\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 ],\n bookingSummaryHeading: \"\\uD83D\\uDCDD Booking Summary\",\n bookingNumberLabel: \"Booking Number\",\n adventuresLabel: \"Adventures\",\n totalTravellersLabel: \"Total Travellers\",\n agentLabel: \"Agent\",\n adultsUnit: \"adult(s)\",\n childrenUnit: \"child(ren)\",\n travellersLabel: \"Travellers\",\n childBadge: \"child\",\n itineraryLabel: \"Itinerary\",\n includedLabel: \"O que est\\u00e1 incluso\",\n notIncludedLabel: \"O que n\\u00e3o est\\u00e1 incluso\",\n pricingLabel: \"Pricing\",\n subtotalLabel: \"Subtotal\",\n totalLabel: \"Total\",\n paymentSummaryHeading: \"\\uD83D\\uDCB0 Payment Summary\",\n paymentDetailsHeading: \"Payment Details\",\n depositLabel: (percent: number) => `Deposit (${percent}%)`,\n remainingBalanceLabel: \"Remaining balance\",\n balanceDueLabel: \"Balance due\",\n paidInFullLabel: \"\\u2705 Paid in full\",\n footerMessage:\n \"All travellers have been registered for this booking. Each person will receive a separate email with their individual details and any pre-departure information.\",\n footerContact: (agent: string) =>\n `If you have any questions, just reply to this email or contact ${agent} \\u2014 happy to help.`,\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 /** Optional label overrides for i18n */\n labels?: Partial<BookingConfirmationLabels>;\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 labels,\n className,\n}: BookingConfirmationProps) {\n const l = { ...DEFAULT_LABELS, ...labels };\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 {l.ctaButton}\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 {l.ctaButton}\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={l.logoAlt}\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\">{l.greeting(recipientName)}</p>\n\n <p className=\"mb-5 text-base\">\n {l.confirmationMessage}\n </p>\n\n <p className=\"mb-8 text-base\">\n {l.detailsIntro}\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 {l.nextStepsHeading}\n </p>\n <div className=\"rounded-xl border border-border p-5 flex flex-col gap-4\">\n {l.nextSteps.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 {l.bookingSummaryHeading}\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 {l.bookingNumberLabel}\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 {l.adventuresLabel}\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 {l.totalTravellersLabel}\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 {l.agentLabel}\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} ${l.adultsUnit}` : null,\n adventure.slots.children ? `${adventure.slots.children} ${l.childrenUnit}` : 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 {l.travellersLabel}\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 {l.childBadge}\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 {l.itineraryLabel}\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 {l.includedLabel}\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 {l.notIncludedLabel}\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 {l.pricingLabel}\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 {l.subtotalLabel}\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 {l.paymentSummaryHeading}\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 {l.subtotalLabel}\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 {l.totalLabel}\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 {l.paymentDetailsHeading}\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 {l.depositLabel(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 {l.remainingBalanceLabel}\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 {l.balanceDueLabel}\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 {l.paidInFullLabel}\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 {l.footerMessage}\n </p>\n\n <p className=\"text-base\">\n {l.footerContact(agent)}\n </p>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface BookingConfirmationEmailLabels {\n ctaButton?: string;\n logoAlt?: string;\n greeting?: (recipientName: string) => string;\n thankYouMessage?: string;\n addTravellersInstruction?: string;\n summaryHeading?: string;\n bookingNumberLabel?: string;\n activityLabel?: string;\n adventureLabel?: string;\n startingDateLabel?: string;\n numberOfPeopleLabel?: string;\n hostLabel?: string;\n postCtaMessage?: string;\n closingMessage?: string;\n}\n\nconst DEFAULT_LABELS: Required<BookingConfirmationEmailLabels> = {\n ctaButton: \"Add travellers to your booking\",\n logoAlt: \"PlanetaEXO\",\n greeting: (recipientName: string) => `Hi ${recipientName},`,\n thankYouMessage:\n \"Thank you for booking your adventure with PlanetaEXO \\u2014 we\\u2019re really looking forward to your adventure.\",\n addTravellersInstruction:\n \"To move forward, the first step is to add all travellers included in your booking. Once you do this, each person \\u2014 including you \\u2014 will receive an email with a link to complete their individual registration.\",\n summaryHeading: \"\\uD83D\\uDCDD Here\\u2019s a quick summary of your booking:\",\n bookingNumberLabel: \"Booking Number:\",\n activityLabel: \"Activity:\",\n adventureLabel: \"Adventure:\",\n startingDateLabel: \"Starting Date:\",\n numberOfPeopleLabel: \"Number of People:\",\n hostLabel: \"Host:\",\n postCtaMessage:\n \"After adding everyone, you will also receive your own registration email, just like the other travellers. Please make sure everyone completes this step so we can organise everything properly.\",\n closingMessage:\n \"If you have any questions, just reply to this email \\u2014 happy to help.\",\n};\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 /** Optional label overrides for i18n */\n labels?: Partial<BookingConfirmationEmailLabels>;\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 labels,\n className,\n}: BookingConfirmationEmailProps) {\n const l = { ...DEFAULT_LABELS, ...labels };\n\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 {l.ctaButton}\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 {l.ctaButton}\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={l.logoAlt}\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n <p className=\"mb-4\">{l.greeting(recipientName)}</p>\n\n <p className=\"mb-4\">\n {l.thankYouMessage}\n </p>\n\n <p className=\"mb-4\">\n {l.addTravellersInstruction}\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 {l.summaryHeading}\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 {l.bookingNumberLabel}\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 {l.activityLabel}\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 {l.adventureLabel}\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 {l.startingDateLabel}\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 {l.numberOfPeopleLabel}\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\">{l.hostLabel}</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 {l.postCtaMessage}\n </p>\n\n <p>\n {l.closingMessage}\n </p>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { MinusIcon, PlusIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CounterFieldProps {\n label: string;\n sublabel?: string;\n required?: boolean;\n value: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n className?: string;\n}\n\nexport function CounterField({\n label,\n sublabel,\n required,\n value,\n min = 0,\n max = 99,\n onChange,\n className,\n}: CounterFieldProps) {\n const decrement = () => {\n if (value > min) onChange(value - 1);\n };\n\n const increment = () => {\n if (value < max) onChange(value + 1);\n };\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n <label className=\"text-sm font-ui text-foreground\">\n {label}\n {sublabel && (\n <span className=\"text-muted-foreground font-normal ml-1\">{sublabel}</span>\n )}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n\n <div className=\"flex items-center justify-between rounded-lg border border-border bg-background px-4 py-3 h-14\">\n <span className=\"text-xl font-semibold text-foreground tabular-nums w-8 font-ui\">\n {value}\n </span>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={decrement}\n disabled={value <= min}\n aria-label={`Diminuir ${label}`}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-border\",\n \"text-foreground transition-colors\",\n \"hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-30\"\n )}\n >\n <MinusIcon className=\"h-3.5 w-3.5\" />\n </button>\n\n <button\n type=\"button\"\n onClick={increment}\n disabled={value >= max}\n aria-label={`Aumentar ${label}`}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-border\",\n \"text-foreground transition-colors\",\n \"hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-30\"\n )}\n >\n <PlusIcon className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 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 </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface DatePickerFieldProps {\n label: string;\n required?: boolean;\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n fromDate?: Date;\n className?: string;\n}\n\nexport function DatePickerField({\n label,\n required,\n value,\n onChange,\n placeholder = \"Select a date\",\n disabled,\n fromDate,\n className,\n}: DatePickerFieldProps) {\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [calendarWidth, setCalendarWidth] = React.useState<number | undefined>();\n const hasValue = !!value;\n\n /* Measure trigger width so calendar matches it exactly */\n React.useEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver(([entry]) => {\n setCalendarWidth(entry.contentRect.width);\n });\n observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div ref={containerRef} className={cn(\"w-full\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n {/*\n PopoverTrigger (@base-ui/react) already renders as <button>.\n No asChild + <button> to avoid nested-button HTML error.\n */}\n <PopoverTrigger\n disabled={disabled}\n className={cn(\n \"relative flex w-full items-center rounded-lg border border-border bg-background\",\n \"px-3 text-left text-base font-ui transition-colors h-14\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n {/* Floating label */}\n <span\n className={cn(\n \"pointer-events-none absolute left-3 transition-all duration-150 font-ui\",\n hasValue || open\n ? \"top-2 text-xs text-primary\"\n : \"top-1/2 -translate-y-1/2 text-base text-muted-foreground\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </span>\n\n {/* Selected date value (invisible placeholder preserves layout) */}\n <span\n className={cn(\n \"flex-1 truncate mt-3\",\n hasValue ? \"text-foreground\" : \"invisible\"\n )}\n >\n {hasValue ? format(value, \"dd MMM yyyy\") : placeholder}\n </span>\n\n {/* Calendar icon — vertically centered via items-center on parent */}\n <CalendarIcon className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground\" />\n </PopoverTrigger>\n\n <PopoverContent\n className=\"p-0\"\n align=\"start\"\n style={calendarWidth ? { width: calendarWidth } : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(date) => {\n onChange?.(date);\n setOpen(false);\n }}\n fromDate={fromDate ?? new Date()}\n className=\"font-ui w-full\"\n autoFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { CounterField } from \"./CounterField\";\nimport { FloatingInput, FloatingSelect } from \"./FloatingInput\";\nimport { DatePickerField } from \"./DatePickerField\";\nimport { PhoneCountrySelect } from \"./PhoneCountrySelect\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface BookingFormValues {\n adults: number;\n children: number;\n travelDate: Date | undefined;\n budget: string;\n project: string;\n civility: \"ms\" | \"mr\" | \"\";\n lastName: string;\n firstName: string;\n country: string;\n phoneCountry: string;\n phone: string;\n email: string;\n}\n\nexport interface BookingFormProps {\n /** Initial values */\n defaultValues?: Partial<BookingFormValues>;\n /** Called with form values on submit */\n onSubmit?: (values: BookingFormValues) => void;\n /** Submit button label */\n submitLabel?: string;\n /** Loading state */\n loading?: boolean;\n /** Show the header with title and subtitle. @default true */\n showHeader?: boolean;\n /** Override the header title */\n title?: string;\n /** Override the header subtitle */\n subtitle?: string;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Section divider\n ----------------------------------------------------------------------- */\nfunction FormSection({\n title,\n children,\n className,\n}: {\n title: string;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn(\"flex flex-col gap-5\", className)}>\n <div className=\"flex items-center gap-4\">\n <h3 className=\"text-base font-bold text-foreground whitespace-nowrap font-heading\">\n {title}\n </h3>\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n {children}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n BookingForm\n ----------------------------------------------------------------------- */\nconst defaultInitial: BookingFormValues = {\n adults: 2,\n children: 0,\n travelDate: undefined,\n budget: \"\",\n project: \"\",\n civility: \"\",\n phoneCountry: \"BR\",\n lastName: \"\",\n firstName: \"\",\n country: \"France\",\n phone: \"\",\n email: \"\",\n};\n\nexport function BookingForm({\n defaultValues,\n onSubmit,\n submitLabel = \"Send my request\",\n loading = false,\n showHeader = true,\n title = \"Check availability for your trip\",\n subtitle = \"Free enquiry – no commitment\",\n className,\n}: BookingFormProps) {\n const [values, setValues] = React.useState<BookingFormValues>({\n ...defaultInitial,\n ...defaultValues,\n });\n\n const set = <K extends keyof BookingFormValues>(\n key: K,\n value: BookingFormValues[K]\n ) => setValues((prev) => ({ ...prev, [key]: value }));\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.(values);\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\"flex flex-col gap-10\", className)}\n noValidate\n >\n {/* ── Header ───────────────────────────────────────────────────────── */}\n {showHeader && (\n <div>\n <h2 className=\"text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight\">\n {title}\n </h2>\n <p className=\"mt-1.5 text-sm text-muted-foreground font-ui\">{subtitle}</p>\n </div>\n )}\n\n {/* ── Section 1: Travelers ─────────────────────────────────────────── */}\n <FormSection title=\"Who's joining the adventure?\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <CounterField\n label=\"Adults\"\n required\n value={values.adults}\n min={1}\n onChange={(v) => set(\"adults\", v)}\n />\n <CounterField\n label=\"Children\"\n sublabel=\"(under 12)\"\n value={values.children}\n min={0}\n onChange={(v) => set(\"children\", v)}\n />\n </div>\n </FormSection>\n\n {/* ── Section 2: Trip details ──────────────────────────────────────── */}\n <FormSection title=\"Your next trip\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <DatePickerField\n label=\"Travel date\"\n required\n value={values.travelDate}\n onChange={(d) => set(\"travelDate\", d)}\n placeholder=\"Pick a date\"\n />\n\n <FloatingInput\n label=\"Budget (per person)\"\n required\n type=\"number\"\n min={0}\n value={values.budget}\n onChange={(e) => set(\"budget\", e.target.value)}\n />\n </div>\n </FormSection>\n\n {/* ── Section 3: Project description ──────────────────────────────── */}\n <FormSection title=\"Tell us about your trip\">\n <div className=\"relative\">\n <textarea\n id=\"project\"\n placeholder=\" \"\n rows={5}\n value={values.project}\n onChange={(e) => set(\"project\", e.target.value)}\n className={cn(\n \"peer block w-full resize-none rounded-lg border border-border bg-background\",\n \"px-3 pt-6 pb-3 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 )}\n />\n <label\n htmlFor=\"project\"\n className={cn(\n \"pointer-events-none absolute left-3 top-4\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n \"peer-focus:top-2 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n Your trip in a few words{\" \"}\n <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n </div>\n </FormSection>\n\n {/* ── Section 4: Contact ───────────────────────────────────────────── */}\n <FormSection title=\"Contact details\">\n {/* Civility */}\n <div\n role=\"radiogroup\"\n aria-label=\"Title\"\n className=\"flex flex-wrap items-center gap-x-6 gap-y-3\"\n >\n {([\"ms\", \"mr\"] as const).map((c) => (\n <label\n key={c}\n className=\"flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground\"\n >\n <input\n type=\"radio\"\n name=\"civility\"\n value={c}\n checked={values.civility === c}\n onChange={() => set(\"civility\", c)}\n className=\"h-4 w-4 shrink-0 accent-primary cursor-pointer\"\n />\n {c === \"ms\" ? \"Ms.\" : \"Mr.\"}\n </label>\n ))}\n </div>\n\n {/* Name row — min-w-0 evita overlap em grelhas estreitas */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 min-w-0\">\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"Last name\"\n required\n value={values.lastName}\n onChange={(e) => set(\"lastName\", e.target.value)}\n />\n </div>\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"First name\"\n required\n value={values.firstName}\n onChange={(e) => set(\"firstName\", e.target.value)}\n />\n </div>\n <div className=\"min-w-0 sm:col-span-2 lg:col-span-1\">\n <FloatingSelect\n label=\"Country of residence\"\n required\n value={values.country}\n onChange={(e) => set(\"country\", e.target.value)}\n >\n <option value=\"\" disabled hidden />\n <option value=\"France\">France</option>\n <option value=\"Belgium\">Belgium</option>\n <option value=\"Switzerland\">Switzerland</option>\n <option value=\"Canada\">Canada</option>\n <option value=\"Luxembourg\">Luxembourg</option>\n <option value=\"United Kingdom\">United Kingdom</option>\n <option value=\"United States\">United States</option>\n <option value=\"Other\">Other</option>\n </FloatingSelect>\n </div>\n </div>\n\n {/* Phone + Email */}\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n {/* Phone with country code select */}\n <div className=\"flex w-full min-w-0\">\n <PhoneCountrySelect\n value={values.phoneCountry}\n onChange={(code) => set(\"phoneCountry\", code)}\n className=\"shrink-0\"\n />\n\n {/* Phone number input */}\n <div className=\"relative min-w-0 flex-1\">\n <input\n id=\"phone\"\n type=\"tel\"\n placeholder=\" \"\n value={values.phone}\n onChange={(e) => set(\"phone\", e.target.value)}\n className={cn(\n \"peer block h-14 w-full rounded-r-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 )}\n />\n <label\n htmlFor=\"phone\"\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 peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n Phone <span className=\"text-primary\">*</span>\n </label>\n </div>\n </div>\n\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"Email\"\n required\n type=\"email\"\n value={values.email}\n onChange={(e) => set(\"email\", e.target.value)}\n />\n </div>\n </div>\n </FormSection>\n\n {/* ── Submit ─────────────────────────────────────────────────────────── */}\n <div className=\"flex justify-center pt-2\">\n <button\n type=\"submit\"\n disabled={loading}\n className={cn(\n \"inline-flex items-center justify-center gap-2 rounded-full px-10 py-3.5\",\n \"bg-primary text-primary-foreground font-ui font-semibold text-sm\",\n \"transition-colors hover:bg-primary/90 focus-visible:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-60\"\n )}\n >\n {loading ? (\n <>\n <svg className=\"h-4 w-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v4l3-3-3-3v4a8 8 0 00-8 8h4z\"\n />\n </svg>\n Sending…\n </>\n ) : (\n submitLabel\n )}\n </button>\n </div>\n </form>\n );\n}\n","\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n >\n <CheckIcon\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, ChevronUpIcon, PlusIcon, MinusIcon } from \"lucide-react\"\n\n// ─── Variant context ─────────────────────────────────────────────────────────\n\ntype AccordionVariant = \"default\" | \"faq\"\n\nconst AccordionVariantContext = React.createContext<AccordionVariant>(\"default\")\n\n// ─── Accordion ────────────────────────────────────────────────────────────────\n\ninterface AccordionProps extends Omit<AccordionPrimitive.Root.Props, \"openMultiple\"> {\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = \"default\", ...props }: AccordionProps) {\n return (\n <AccordionVariantContext.Provider value={variant}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n className={cn(\n \"flex w-full flex-col\",\n variant === \"faq\" && \"gap-3\",\n className\n )}\n {...props}\n />\n </AccordionVariantContext.Provider>\n )\n}\n\n// ─── AccordionItem ────────────────────────────────────────────────────────────\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n const variant = React.useContext(AccordionVariantContext)\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n variant === \"default\" && \"not-last:border-b\",\n variant === \"faq\" && \"rounded-lg border border-border bg-card\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ─── AccordionTrigger ─────────────────────────────────────────────────────────\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n const variant = React.useContext(AccordionVariantContext)\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-center justify-between text-left transition-all outline-none\",\n \"focus-visible:ring-3 focus-visible:ring-ring/50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n variant === \"default\" && [\n \"rounded-lg border border-transparent py-2.5 text-sm font-medium\",\n \"hover:underline focus-visible:border-ring\",\n \"**:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n ],\n variant === \"faq\" && [\n \"px-5 py-4 text-base font-bold\",\n \"hover:bg-muted/30 rounded-lg\",\n ],\n className\n )}\n {...props}\n >\n {children}\n\n {variant === \"default\" && (\n <>\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )}\n\n {variant === \"faq\" && (\n <>\n <PlusIcon className=\"pointer-events-none shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:hidden\" />\n <MinusIcon className=\"pointer-events-none hidden shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:inline\" />\n </>\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\n// ─── AccordionContent ─────────────────────────────────────────────────────────\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n const variant = React.useContext(AccordionVariantContext)\n\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--accordion-panel-height) pt-0 data-ending-style:h-0 data-starting-style:h-0\",\n \"[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n variant === \"default\" && \"pb-2.5\",\n variant === \"faq\" && \"px-5 pb-5 text-base text-muted-foreground leading-relaxed\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\nexport type { AccordionVariant }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface FilterItem {\n id: string;\n label: string;\n /** Contagem de resultados disponíveis */\n count?: number;\n}\n\nexport interface FilterGroup {\n id: string;\n label: string;\n /** Ícone SVG exibido ao lado do título */\n icon?: React.ReactNode;\n items: FilterItem[];\n /** Abre este grupo por padrão */\n defaultOpen?: boolean;\n}\n\nexport interface FilterPanelProps {\n groups: FilterGroup[];\n /** Estado controlado: { groupId: string[] } */\n value?: Record<string, string[]>;\n onChange?: (value: Record<string, string[]>) => void;\n onClearAll?: () => void;\n /** Exibe o link \"Remove all filters\" mesmo sem seleção */\n alwaysShowClear?: boolean;\n title?: string;\n className?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function FilterPanel({\n groups,\n value,\n onChange,\n onClearAll,\n alwaysShowClear = false,\n title = \"Filters\",\n className,\n}: FilterPanelProps) {\n // Internal state when uncontrolled\n const [internalValue, setInternalValue] = React.useState<Record<string, string[]>>(\n () =>\n Object.fromEntries(groups.map((g) => [g.id, []]))\n );\n\n const selected = value ?? internalValue;\n\n const handleToggle = (groupId: string, itemId: string) => {\n const current = selected[groupId] ?? [];\n const next = current.includes(itemId)\n ? current.filter((id) => id !== itemId)\n : [...current, itemId];\n const nextValue = { ...selected, [groupId]: next };\n if (onChange) {\n onChange(nextValue);\n } else {\n setInternalValue(nextValue);\n }\n };\n\n const handleClearAll = () => {\n const cleared = Object.fromEntries(groups.map((g) => [g.id, []]));\n if (onChange) {\n onChange(cleared);\n } else {\n setInternalValue(cleared);\n }\n onClearAll?.();\n };\n\n const totalSelected = Object.values(selected).flat().length;\n const showClear = alwaysShowClear || totalSelected > 0;\n\n const defaultOpenValues = groups\n .filter((g) => g.defaultOpen)\n .map((g) => g.id);\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {/* Title */}\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-base font-bold text-foreground font-ui\">{title}</h3>\n {totalSelected > 0 && (\n <span className=\"inline-flex h-5 w-5 items-center justify-center rounded-full bg-primary text-[10px] font-bold text-primary-foreground\">\n {totalSelected}\n </span>\n )}\n </div>\n\n {/* Accordion groups */}\n <Accordion\n defaultValue={defaultOpenValues}\n className=\"flex flex-col gap-2\"\n >\n {groups.map((group) => {\n const groupSelected = selected[group.id] ?? [];\n\n return (\n <AccordionItem\n key={group.id}\n value={group.id}\n className=\"border-0 border-b border-border last:border-b-0\"\n >\n <AccordionTrigger className=\"px-0 py-3.5 hover:no-underline transition-colors\">\n <span className=\"flex items-center gap-2.5\">\n {group.icon && (\n <span className=\"text-primary shrink-0\">{group.icon}</span>\n )}\n <span className=\"text-sm font-bold text-foreground font-ui\">\n {group.label}\n </span>\n {groupSelected.length > 0 && (\n <span className=\"ml-1 inline-flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-primary-foreground\">\n {groupSelected.length}\n </span>\n )}\n </span>\n </AccordionTrigger>\n\n <AccordionContent className=\"px-4 pb-3 pt-1\">\n <ul className=\"flex flex-col gap-0.5\">\n {group.items.map((item) => {\n const checked = groupSelected.includes(item.id);\n const checkboxId = `filter-${group.id}-${item.id}`;\n\n return (\n <li key={item.id}>\n <label\n htmlFor={checkboxId}\n className=\"flex cursor-pointer items-center gap-3 rounded-md px-1 py-2 transition-colors hover:bg-muted/50\"\n >\n <Checkbox\n id={checkboxId}\n checked={checked}\n onCheckedChange={() => handleToggle(group.id, item.id)}\n className=\"shrink-0\"\n />\n <span className=\"flex-1 text-sm text-foreground font-ui\">\n {item.label}\n </span>\n {item.count !== undefined && (\n <span className=\"text-xs font-medium text-primary font-ui\">\n ({item.count})\n </span>\n )}\n </label>\n </li>\n );\n })}\n </ul>\n </AccordionContent>\n </AccordionItem>\n );\n })}\n </Accordion>\n\n {/* Clear all */}\n {showClear && (\n <button\n onClick={handleClearAll}\n className=\"self-start text-sm text-muted-foreground underline underline-offset-2 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring font-ui\"\n >\n Remove all filters\n </button>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MapPinIcon,\n CarIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from \"@/components/ui/dialog\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface ItineraryRoute {\n distance: string; // \"210km\"\n duration: string; // \"3h50\"\n}\n\nexport interface ItineraryStop {\n dayNumber: number;\n title: string;\n location?: string;\n coverImage: string;\n images?: string[];\n description?: React.ReactNode;\n route?: ItineraryRoute;\n}\n\nexport interface ItineraryProps {\n title?: string;\n subtitle?: string;\n stops: ItineraryStop[];\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n ItineraryDayCard\n ----------------------------------------------------------------------- */\nfunction ItineraryDayCard({\n stop,\n onOpen,\n}: {\n stop: ItineraryStop;\n onOpen: () => void;\n}) {\n const hasDescription = !!stop.description;\n\n return (\n <div\n onClick={onOpen}\n className=\"group relative flex-none w-56 sm:w-64 h-80 rounded-2xl overflow-hidden cursor-pointer shadow-sm hover:shadow-lg transition-shadow duration-300\"\n >\n {/* Cover image */}\n <img\n src={stop.coverImage}\n alt={stop.title}\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n\n {/* Day badge */}\n <div className=\"absolute top-3 right-3 z-10 rounded-md bg-primary px-2 py-1\">\n <span className=\"text-xs font-semibold text-primary-foreground font-ui\">\n Day {stop.dayNumber}\n </span>\n </div>\n\n {/* Default overlay — gradient + title */}\n <div\n className={cn(\n \"absolute inset-x-0 bottom-0 z-10 bg-gradient-to-t from-black/70 via-black/20 to-transparent p-4 transition-opacity duration-300\",\n hasDescription && \"group-hover:opacity-0\"\n )}\n >\n <h3 className=\"text-base font-bold text-white leading-tight font-heading\">\n {stop.title}\n </h3>\n {stop.location && (\n <p className=\"mt-0.5 flex items-center gap-1 text-xs text-white/80 font-ui\">\n <MapPinIcon className=\"h-3 w-3 shrink-0\" />\n {stop.location}\n </p>\n )}\n {stop.route && (\n <p className=\"mt-1 flex items-center gap-1.5 text-xs text-white/80 font-ui\">\n <CarIcon className=\"h-3 w-3 shrink-0\" />\n {stop.route.distance} · {stop.route.duration}\n </p>\n )}\n </div>\n\n {/* Hover panel — slides up from bottom */}\n {hasDescription && (\n <div className=\"absolute inset-x-0 bottom-0 z-20 bg-background translate-y-full group-hover:translate-y-0 transition-transform duration-300 ease-out p-4\">\n <h3 className=\"text-sm font-bold text-foreground font-heading leading-tight\">\n {stop.title}\n </h3>\n {stop.location && (\n <p className=\"mt-0.5 flex items-center gap-1 text-xs text-muted-foreground font-ui\">\n <MapPinIcon className=\"h-3 w-3 shrink-0 text-primary\" />\n {stop.location}\n </p>\n )}\n {/* Use div instead of p to avoid nested <p> when description contains <p> tags */}\n <div className=\"mt-2 line-clamp-3 text-xs text-foreground/80 leading-relaxed [&_p]:inline [&_strong]:font-semibold\">\n {stop.description}\n </div>\n <span className=\"mt-2 inline-block text-xs font-semibold text-primary font-ui\">\n Read more →\n </span>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n ItineraryModal\n ----------------------------------------------------------------------- */\nfunction ItineraryModal({\n stop,\n allStops,\n onClose,\n onPrev,\n onNext,\n}: {\n stop: ItineraryStop | null;\n allStops: ItineraryStop[];\n onClose: () => void;\n onPrev: () => void;\n onNext: () => void;\n}) {\n const [imgIndex, setImgIndex] = React.useState(0);\n\n const images = stop ? [stop.coverImage, ...(stop.images ?? [])] : [];\n const isFirst = stop?.dayNumber === allStops[0]?.dayNumber;\n const isLast = stop?.dayNumber === allStops[allStops.length - 1]?.dayNumber;\n\n React.useEffect(() => {\n setImgIndex(0);\n }, [stop?.dayNumber]);\n\n if (!stop) return null;\n\n return (\n <Dialog open={!!stop} onOpenChange={(open) => !open && onClose()}>\n <DialogContent\n className={cn(\n /* Override shadcn defaults: remove padding, gap, grid, max-w-sm */\n \"p-0 gap-0 sm:max-w-2xl max-w-[calc(100%-2rem)] overflow-hidden rounded-2xl\",\n /* Outer flex column: [header+body] / [footer] */\n \"flex flex-col\"\n )}\n >\n {/* Accessible title (sr-only since we show it visually below) */}\n <DialogTitle className=\"sr-only\">\n {stop.title} — Day {stop.dayNumber}\n </DialogTitle>\n <DialogDescription className=\"sr-only\">\n Itinerary details for Day {stop.dayNumber}\n </DialogDescription>\n\n {/* ── Main area: two columns on desktop ─────────────────────── */}\n <div className=\"flex flex-col sm:flex-row flex-1 min-h-0\">\n\n {/* Left: text */}\n <div className=\"flex flex-col flex-1 p-6 sm:p-8 overflow-y-auto max-h-[50vh] sm:max-h-[70vh]\">\n <h2 className=\"text-xl font-bold text-foreground font-heading leading-tight\">\n {stop.title}\n </h2>\n\n {stop.location && (\n <p className=\"mt-1.5 flex items-center gap-1.5 text-sm text-muted-foreground font-ui\">\n <MapPinIcon className=\"h-4 w-4 shrink-0 text-primary\" />\n {stop.location}\n </p>\n )}\n\n <p className=\"mt-4 text-sm font-bold text-foreground font-heading\">\n Day {stop.dayNumber}\n </p>\n\n {stop.description && (\n <div className=\"mt-2 text-sm text-foreground/80 leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2\">\n {stop.description}\n </div>\n )}\n\n {stop.route && (\n <div className=\"mt-4 flex items-center gap-2 text-sm text-muted-foreground font-ui\">\n <CarIcon className=\"h-4 w-4 shrink-0 text-primary\" />\n <span>{stop.route.distance} · {stop.route.duration}</span>\n </div>\n )}\n </div>\n\n {/* Right: image carousel */}\n {images.length > 0 && (\n <div className=\"relative sm:w-72 sm:shrink-0 h-52 sm:h-auto bg-muted overflow-hidden\">\n <img\n key={imgIndex}\n src={images[imgIndex]}\n alt={`${stop.title} ${imgIndex + 1}`}\n className=\"h-full w-full object-cover\"\n />\n\n {images.length > 1 && (\n <>\n <button\n type=\"button\"\n onClick={() =>\n setImgIndex((i) => (i - 1 + images.length) % images.length)\n }\n className=\"absolute left-2 top-1/2 -translate-y-1/2 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 shadow hover:bg-background transition-colors\"\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setImgIndex((i) => (i + 1) % images.length)\n }\n className=\"absolute right-2 top-1/2 -translate-y-1/2 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 shadow hover:bg-background transition-colors\"\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Dot indicators */}\n <div className=\"absolute bottom-3 inset-x-0 flex justify-center gap-1.5\">\n {images.map((_, i) => (\n <button\n type=\"button\"\n key={i}\n onClick={() => setImgIndex(i)}\n className={cn(\n \"h-1.5 rounded-full transition-all\",\n i === imgIndex ? \"w-4 bg-white\" : \"w-1.5 bg-white/50\"\n )}\n />\n ))}\n </div>\n </>\n )}\n </div>\n )}\n </div>\n\n {/* ── Footer: prev / next day ────────────────────────────────── */}\n <div className=\"flex items-center justify-between border-t border-border px-6 py-3 bg-background shrink-0\">\n <button\n type=\"button\"\n onClick={onPrev}\n disabled={isFirst}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-ui transition-colors\",\n isFirst\n ? \"text-muted-foreground/40 pointer-events-none\"\n : \"text-foreground hover:text-primary\"\n )}\n >\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-current\">\n <ChevronLeftIcon className=\"h-3.5 w-3.5\" />\n </span>\n Last day\n </button>\n\n <button\n type=\"button\"\n onClick={onNext}\n disabled={isLast}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-ui transition-colors\",\n isLast\n ? \"text-muted-foreground/40 pointer-events-none\"\n : \"text-foreground hover:text-primary\"\n )}\n >\n Next day\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-current\">\n <ChevronRightIcon className=\"h-3.5 w-3.5\" />\n </span>\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\n/* -----------------------------------------------------------------------\n Itinerary — main component\n ----------------------------------------------------------------------- */\nexport function Itinerary({ title, subtitle, stops, className }: ItineraryProps) {\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n const activeStop = activeIndex !== null ? stops[activeIndex] : null;\n\n const scrollBy = (dir: \"left\" | \"right\") => {\n if (!scrollRef.current) return;\n const amount = 280;\n scrollRef.current.scrollBy({\n left: dir === \"right\" ? amount : -amount,\n behavior: \"smooth\",\n });\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n {/* Header */}\n {(title || subtitle) && (\n <div className=\"mb-6 text-center px-4\">\n {title && (\n <h2 className=\"text-2xl sm:text-3xl font-bold text-foreground font-heading\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"mt-2 text-sm text-muted-foreground max-w-md mx-auto leading-relaxed\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/* Scrollable strip + arrows */}\n <div className=\"relative group/strip\">\n {/* Left arrow */}\n <button\n type=\"button\"\n onClick={() => scrollBy(\"left\")}\n aria-label=\"Scroll left\"\n className={cn(\n \"absolute left-0 top-1/2 -translate-y-1/2 z-20\",\n \"-translate-x-1/2 sm:-translate-x-5\",\n \"flex h-9 w-9 items-center justify-center rounded-full\",\n \"bg-background border border-border shadow-md\",\n \"transition-opacity hover:bg-muted\",\n \"opacity-0 group-hover/strip:opacity-100\"\n )}\n >\n <ChevronLeftIcon className=\"h-4 w-4 text-foreground\" />\n </button>\n\n {/* Right arrow */}\n <button\n type=\"button\"\n onClick={() => scrollBy(\"right\")}\n aria-label=\"Scroll right\"\n className={cn(\n \"absolute right-0 top-1/2 -translate-y-1/2 z-20\",\n \"translate-x-1/2 sm:translate-x-5\",\n \"flex h-9 w-9 items-center justify-center rounded-full\",\n \"bg-background border border-border shadow-md\",\n \"transition-opacity hover:bg-muted\",\n \"opacity-0 group-hover/strip:opacity-100\"\n )}\n >\n <ChevronRightIcon className=\"h-4 w-4 text-foreground\" />\n </button>\n\n {/* Cards row */}\n <div\n ref={scrollRef}\n className={cn(\n \"flex gap-3 sm:gap-4 overflow-x-auto pb-4\",\n \"snap-x snap-mandatory scroll-smooth\",\n \"[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"px-4 sm:px-2\"\n )}\n >\n {stops.map((stop, i) => (\n <div key={stop.dayNumber} className=\"snap-start shrink-0\">\n <ItineraryDayCard stop={stop} onOpen={() => setActiveIndex(i)} />\n </div>\n ))}\n </div>\n </div>\n\n {/* Modal */}\n <ItineraryModal\n stop={activeStop}\n allStops={stops}\n onClose={() => setActiveIndex(null)}\n onPrev={() =>\n setActiveIndex((i) => (i !== null ? Math.max(0, i - 1) : 0))\n }\n onNext={() =>\n setActiveIndex((i) =>\n i !== null ? Math.min(stops.length - 1, i + 1) : 0\n )\n }\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 MenuTripSection {\n id: string;\n label: string;\n}\n\nexport type MenuTripVariant = \"pill\" | \"underline\" | \"outlined\" | \"floating\";\n\nexport interface MenuTripProps {\n sections: MenuTripSection[];\n activeSection?: string;\n onSelect?: (id: string) => void;\n variant?: MenuTripVariant;\n /** Whether labels use bold font weight. @default true */\n bold?: boolean;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n MenuTrip\n ----------------------------------------------------------------------- */\nexport function MenuTrip({\n sections,\n activeSection,\n onSelect,\n variant = \"pill\",\n bold = true,\n className,\n}: MenuTripProps) {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n /* Scroll active pill into view — horizontal only, never affects page scroll */\n React.useEffect(() => {\n if (!scrollRef.current || !activeSection) return;\n const container = scrollRef.current;\n const btn = container.querySelector<HTMLElement>(\n `[data-section=\"${activeSection}\"]`\n );\n if (!btn) return;\n const btnLeft = btn.offsetLeft;\n const btnRight = btnLeft + btn.offsetWidth;\n const cLeft = container.scrollLeft;\n const cRight = cLeft + container.offsetWidth;\n if (btnLeft < cLeft) {\n container.scrollTo({ left: btnLeft - 16, behavior: \"smooth\" });\n } else if (btnRight > cRight) {\n container.scrollTo({ left: btnRight - container.offsetWidth + 16, behavior: \"smooth\" });\n }\n }, [activeSection]);\n\n if (variant === \"underline\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"border-b border-border\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-end gap-0\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"relative px-4 py-2.5 text-sm font-ui whitespace-nowrap transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n \"after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:transition-all\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"text-foreground after:bg-primary\"\n : \"text-muted-foreground hover:text-foreground after:bg-transparent\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n if (variant === \"outlined\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-2\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full border px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"border-foreground bg-foreground text-background\"\n : \"border-border bg-background text-muted-foreground hover:border-foreground/50 hover:text-foreground\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n /* ── Floating: container has background, pills are ghost when inactive ── */\n if (variant === \"floating\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"py-1 px-0.5\", /* padding so shadow isn't clipped by overflow */\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-0.5 rounded-full border border-border/40 bg-background/90 backdrop-blur-md shadow-sm px-1.5 py-1.5\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"bg-foreground text-background shadow-sm\"\n : \"text-foreground/60 hover:text-foreground hover:bg-muted/60\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n /* ── Default: pill ── */\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-1 p-1\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"bg-foreground text-background shadow-sm\"\n : \"bg-white text-foreground/70 hover:text-foreground shadow-sm\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ZoomInIcon,\n XIcon,\n LayoutGridIcon,\n ChevronUpIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport type PhotoGalleryVariant = \"grid\" | \"masonry\" | \"filmstrip\" | \"featured\";\n\nexport interface PhotoGalleryPhoto {\n src: string;\n alt?: string;\n /** Caption displayed in the lightbox bottom-left */\n caption?: string;\n /** Photo credit / author displayed in the lightbox bottom-right */\n credit?: string;\n}\n\nexport interface PhotoGalleryProps {\n /** Array of photo URLs or photo objects */\n photos: (string | PhotoGalleryPhoto)[];\n /** Visual layout variant */\n variant?: PhotoGalleryVariant;\n /**\n * How many photos to show before the \"See more\" button.\n * Pass `Infinity` to always show all (no toggle).\n * @default 6\n */\n initialVisible?: number;\n /** Called when a photo is clicked (in addition to opening the lightbox) */\n onPhotoClick?: (src: string, index: number) => void;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Helpers\n ----------------------------------------------------------------------- */\n\nfunction normalise(p: string | PhotoGalleryPhoto): PhotoGalleryPhoto {\n return typeof p === \"string\" ? { src: p } : p;\n}\n\n/**\n * Derive adaptive grid columns based on TOTAL photo count.\n * Using total (not visible) prevents column count from jumping when\n * the Show more button is clicked.\n */\nfunction gridCols(total: number) {\n if (total === 1) return \"grid-cols-1\";\n if (total === 2) return \"grid-cols-2\";\n return \"grid-cols-3\";\n}\n\n/* -----------------------------------------------------------------------\n Lightbox — with navigation, dot indicators and keyboard support\n ----------------------------------------------------------------------- */\n\nfunction Lightbox({\n photos,\n initialIndex,\n onClose,\n}: {\n photos: PhotoGalleryPhoto[];\n initialIndex: number;\n onClose: () => void;\n}) {\n const [index, setIndex] = React.useState(initialIndex);\n const total = photos.length;\n const photo = photos[index];\n\n const prev = React.useCallback(\n () => setIndex((i) => (i - 1 + total) % total),\n [total],\n );\n const next = React.useCallback(\n () => setIndex((i) => (i + 1) % total),\n [total],\n );\n\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n if (e.key === \"ArrowLeft\") prev();\n if (e.key === \"ArrowRight\") next();\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [onClose, prev, next]);\n\n return (\n <div\n className=\"fixed inset-0 z-50 bg-black/92 flex flex-col items-center justify-center\"\n onClick={onClose}\n >\n {/* ── Close — top right ── */}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"absolute top-5 right-5 flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors z-10\"\n aria-label=\"Close lightbox\"\n >\n <XIcon className=\"h-5 w-5\" />\n </button>\n\n {/* ── Prev — left side ── */}\n {total > 1 && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); prev(); }}\n className=\"absolute left-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10\"\n aria-label=\"Previous photo\"\n >\n <ChevronLeftIcon className=\"h-5 w-5\" />\n </button>\n )}\n\n {/* ── Next — right side ── */}\n {total > 1 && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); next(); }}\n className=\"absolute right-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10\"\n aria-label=\"Next photo\"\n >\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n )}\n\n {/* ── Photo ── */}\n <img\n src={photo.src}\n alt={photo.alt ?? `Photo ${index + 1}`}\n className=\"max-w-[calc(100%-6rem)] max-h-[calc(100vh-11rem)] object-contain rounded-lg shadow-2xl\"\n onClick={(e) => e.stopPropagation()}\n />\n\n {/* ── Caption + credit — centered below photo ── */}\n {(photo.caption || photo.credit) && (\n <div\n className=\"mt-4 flex flex-col items-center gap-0.5 px-16 text-center\"\n onClick={(e) => e.stopPropagation()}\n >\n {photo.caption && (\n <p className=\"text-sm text-white/90 font-ui leading-snug max-w-xl\">\n {photo.caption}\n </p>\n )}\n {photo.credit && (\n <p className=\"text-xs text-white/45 font-ui\">\n © {photo.credit}\n </p>\n )}\n </div>\n )}\n\n {/* ── Bottom nav: dots + prev/next ── */}\n {total > 1 && (\n <div\n className=\"absolute bottom-5 inset-x-0 flex items-center justify-center gap-3 px-5\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* Prev */}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); prev(); }}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors\"\n aria-label=\"Previous photo\"\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Dots */}\n <div className=\"flex items-center gap-1.5\">\n {photos.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); setIndex(i); }}\n aria-label={`Go to photo ${i + 1}`}\n className={cn(\n \"h-1.5 rounded-full transition-all duration-300 focus-visible:outline-none\",\n i === index\n ? \"w-6 bg-primary\"\n : \"w-1.5 bg-white/40 hover:bg-white/70\",\n )}\n />\n ))}\n </div>\n\n {/* Next */}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); next(); }}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors\"\n aria-label=\"Next photo\"\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Shared photo tile\n ----------------------------------------------------------------------- */\n\nfunction PhotoTile({\n photo,\n index,\n className,\n onClick,\n}: {\n photo: PhotoGalleryPhoto;\n index: number;\n className?: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"relative overflow-hidden group block w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n aria-label={photo.alt ?? `Photo ${index + 1}`}\n >\n <img\n src={photo.src}\n alt={photo.alt ?? `Photo ${index + 1}`}\n className=\"w-full h-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-8 w-8 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n );\n}\n\n/* -----------------------------------------------------------------------\n Show-more / show-less button\n ----------------------------------------------------------------------- */\n\nfunction ShowMoreButton({\n count,\n expanded,\n onClick,\n}: {\n count: number;\n expanded: boolean;\n onClick: () => void;\n}) {\n return (\n <div className=\"flex justify-center py-4\">\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex items-center gap-2 rounded-full border border-border bg-background px-5 py-2.5\",\n \"text-sm font-semibold text-foreground shadow-sm\",\n \"hover:bg-muted transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n )}\n >\n {expanded ? (\n <>\n <ChevronUpIcon className=\"h-4 w-4 text-muted-foreground\" />\n Show less\n </>\n ) : (\n <>\n <LayoutGridIcon className=\"h-4 w-4 text-muted-foreground\" />\n See more ({count})\n </>\n )}\n </button>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Grid\n Columns are locked to total photo count so expanding never changes\n the number of columns, only adds rows below.\n ----------------------------------------------------------------------- */\n\nfunction GridGallery({\n photos,\n initialVisible,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n initialVisible: number;\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n const cols = gridCols(photos.length); // locked — never changes\n const hasMore = photos.length > initialVisible;\n const visible = expanded || !hasMore ? photos : photos.slice(0, initialVisible);\n\n return (\n <>\n <div className={cn(\"grid\", cols)}>\n {visible.map((p, i) => (\n <PhotoTile\n key={i}\n photo={p}\n index={i}\n className=\"aspect-[4/3]\"\n onClick={() => onOpen(i)}\n />\n ))}\n </div>\n {hasMore && (\n <ShowMoreButton\n count={photos.length - initialVisible}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Masonry\n CSS columns layout, each photo keeps its natural ratio.\n ----------------------------------------------------------------------- */\n\nfunction MasonryGallery({\n photos,\n initialVisible,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n initialVisible: number;\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n const hasMore = photos.length > initialVisible;\n const visible = expanded || !hasMore ? photos : photos.slice(0, initialVisible);\n\n return (\n <>\n <div className=\"columns-2 sm:columns-3 gap-1 [&>*]:break-inside-avoid [&>*]:mb-1\">\n {visible.map((p, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => onOpen(i)}\n className=\"relative overflow-hidden group block w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 1}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 1}`}\n className=\"w-full h-auto object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n {hasMore && (\n <ShowMoreButton\n count={photos.length - initialVisible}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Filmstrip\n Horizontal scrollable row of fixed-height thumbnails.\n ----------------------------------------------------------------------- */\n\nfunction FilmstripGallery({\n photos,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n onOpen: (i: number) => void;\n}) {\n return (\n <div className=\"overflow-x-auto flex gap-1 snap-x snap-mandatory pb-1 scrollbar-none\">\n {photos.map((p, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => onOpen(i)}\n className=\"relative shrink-0 overflow-hidden group h-56 w-auto aspect-[4/3] snap-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 1}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 1}`}\n className=\"h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Featured\n One large landscape photo on the left (col-span-2) + two portrait\n photos stacked on the right. Extra photos revealed as a horizontal\n filmstrip when \"See more\" is clicked.\n ----------------------------------------------------------------------- */\n\nfunction FeaturedGallery({\n photos,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n const featured = photos.slice(0, 3); // 1 large + 2 stacked\n const extra = photos.slice(3); // overflow → filmstrip\n\n return (\n <>\n {/* 1 large + 2 stacked */}\n <div className=\"grid grid-cols-3 gap-1.5 h-72 sm:h-80 lg:h-96 rounded-xl overflow-hidden\">\n {/* Large photo — spans 2 columns */}\n {featured[0] && (\n <PhotoTile\n photo={featured[0]}\n index={0}\n className=\"col-span-2 h-full\"\n onClick={() => onOpen(0)}\n />\n )}\n {/* Two stacked portrait photos */}\n <div className=\"flex flex-col gap-1.5 h-full\">\n {featured[1] && (\n <PhotoTile\n photo={featured[1]}\n index={1}\n className=\"flex-1 min-h-0\"\n onClick={() => onOpen(1)}\n />\n )}\n {featured[2] && (\n <PhotoTile\n photo={featured[2]}\n index={2}\n className=\"flex-1 min-h-0\"\n onClick={() => onOpen(2)}\n />\n )}\n </div>\n </div>\n\n {/* Horizontal filmstrip — extra photos on expand */}\n {expanded && extra.length > 0 && (\n <div className=\"mt-1.5 overflow-x-auto flex gap-1.5 snap-x snap-mandatory scrollbar-none rounded-xl overflow-hidden pb-0\">\n {extra.map((p, i) => (\n <button\n key={i + 3}\n type=\"button\"\n onClick={() => onOpen(i + 3)}\n className=\"relative shrink-0 overflow-hidden group h-40 sm:h-48 aspect-[4/3] snap-start rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 4}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 4}`}\n className=\"h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n )}\n\n {/* Show more / show less */}\n {extra.length > 0 && (\n <ShowMoreButton\n count={extra.length}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n PhotoGallery — main export\n ----------------------------------------------------------------------- */\n\nexport function PhotoGallery({\n photos,\n variant = \"grid\",\n initialVisible = 6,\n onPhotoClick,\n className,\n}: PhotoGalleryProps) {\n const [lightboxIndex, setLightboxIndex] = React.useState<number | null>(null);\n const normalised = React.useMemo(() => photos.map(normalise), [photos]);\n\n const handleOpen = (index: number) => {\n setLightboxIndex(index);\n onPhotoClick?.(normalised[index].src, index);\n };\n\n if (normalised.length === 0) return null;\n\n return (\n <div className={cn(\"w-full\", className)}>\n {variant === \"grid\" && (\n <GridGallery\n photos={normalised}\n initialVisible={initialVisible}\n onOpen={handleOpen}\n />\n )}\n\n {variant === \"masonry\" && (\n <MasonryGallery\n photos={normalised}\n initialVisible={initialVisible}\n onOpen={handleOpen}\n />\n )}\n\n {variant === \"filmstrip\" && (\n <FilmstripGallery photos={normalised} onOpen={handleOpen} />\n )}\n\n {variant === \"featured\" && (\n <FeaturedGallery photos={normalised} onOpen={handleOpen} />\n )}\n\n {lightboxIndex !== null && (\n <Lightbox\n photos={normalised}\n initialIndex={lightboxIndex}\n onClose={() => setLightboxIndex(null)}\n />\n )}\n </div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface PricingOption {\n label: string;\n price: string;\n originalPrice?: string;\n unit?: string;\n}\n\nexport type PricingTripVariant = \"card\" | \"bar\" | \"compact\";\n\nexport interface PricingTripProps {\n priceFrom: string;\n currency?: string;\n /** e.g. \"May – August · until mid-August with sufficient water levels\" */\n season?: string;\n departureTimes?: string[];\n pricingOptions?: PricingOption[];\n onBook?: () => void;\n bookLabel?: string;\n variant?: PricingTripVariant;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n PricingTrip\n ----------------------------------------------------------------------- */\nexport function PricingTrip({\n priceFrom,\n currency = \"CHF\",\n season,\n departureTimes,\n pricingOptions,\n onBook,\n bookLabel = \"Check availability\",\n variant = \"card\",\n className,\n}: PricingTripProps) {\n const [showPricing, setShowPricing] = React.useState(false);\n\n /* ── Compact ── just price + button in one tight row */\n if (variant === \"compact\") {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n <div>\n <p className=\"text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5\">\n from\n </p>\n <p className=\"text-lg font-bold text-foreground font-heading leading-none\">\n {currency} <span className=\"text-primary\">{priceFrom}</span>\n </p>\n </div>\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"flex-1 rounded-full bg-primary px-4 py-2 text-sm font-semibold\",\n \"text-primary-foreground font-ui transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n );\n }\n\n /* ── Bar ── horizontal strip for sticky top bars */\n if (variant === \"bar\") {\n return (\n <div\n className={cn(\n \"flex items-center gap-4 rounded-2xl border border-border bg-card px-5 py-3 shadow-sm\",\n className\n )}\n >\n {/* Season / duration hint */}\n {season && (\n <div className=\"hidden sm:flex items-center gap-1.5 text-sm text-muted-foreground font-ui shrink-0\">\n <CalendarIcon className=\"h-3.5 w-3.5 text-primary shrink-0\" />\n <span className=\"truncate max-w-[180px]\">{season}</span>\n </div>\n )}\n\n {/* Departure times */}\n {departureTimes && departureTimes.length > 0 && (\n <div className=\"hidden md:flex items-center gap-1.5 shrink-0\">\n <ClockIcon className=\"h-3.5 w-3.5 text-primary shrink-0\" />\n <div className=\"flex gap-1\">\n {departureTimes.map((t) => (\n <Badge key={t} variant=\"outline\" className=\"font-ui text-xs px-1.5 py-0.5\">\n {t}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"flex-1\" />\n\n {/* Price */}\n <div className=\"shrink-0 text-right\">\n <span className=\"block text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5\">\n from\n </span>\n <span className=\"text-xl font-bold text-foreground font-heading leading-none\">\n {currency} <span className=\"text-primary\">{priceFrom}</span>\n </span>\n </div>\n\n {/* CTA */}\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"shrink-0 flex items-center gap-2 rounded-full bg-primary px-5 py-2.5\",\n \"text-sm font-semibold text-primary-foreground font-ui\",\n \"transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n <CalendarIcon className=\"h-4 w-4 shrink-0\" />\n {bookLabel}\n </button>\n </div>\n );\n }\n\n /* ── Default: card ── full sidebar card */\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {/* Price */}\n <div>\n <p className=\"text-xs text-muted-foreground font-ui uppercase tracking-wide\">From</p>\n <p className=\"text-3xl font-bold text-foreground font-heading\">\n {currency}{\" \"}\n <span className=\"text-primary\">{priceFrom}</span>\n <span className=\"text-base font-normal text-muted-foreground font-ui\"> / guest</span>\n </p>\n </div>\n\n {/* Season */}\n {season && (\n <div className=\"flex items-start gap-2 text-sm text-muted-foreground font-ui\">\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-primary mt-0.5\" />\n <span>{season}</span>\n </div>\n )}\n\n {/* Departure times */}\n {departureTimes && departureTimes.length > 0 && (\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-xs font-semibold text-foreground font-ui uppercase tracking-wide\">\n Departure times\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {departureTimes.map((t) => (\n <Badge key={t} variant=\"outline\" className=\"font-ui text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {/* Pricing options toggle */}\n {pricingOptions && pricingOptions.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <button\n type=\"button\"\n onClick={() => setShowPricing((v) => !v)}\n className=\"flex items-center gap-1 text-xs text-primary font-ui text-left hover:underline underline-offset-2\"\n >\n {showPricing ? (\n <>Show pricing options <ChevronUpIcon className=\"h-3 w-3\" /></>\n ) : (\n <>Show pricing options <ChevronDownIcon className=\"h-3 w-3\" /></>\n )}\n </button>\n {showPricing && (\n <div className=\"rounded-lg border border-border overflow-hidden\">\n {pricingOptions.map((opt, i) => (\n <div\n key={i}\n className={cn(\n \"flex items-center justify-between px-3 py-2.5 text-sm\",\n i < pricingOptions.length - 1 && \"border-b border-border\"\n )}\n >\n <span className=\"text-foreground font-ui\">{opt.label}</span>\n <div className=\"flex items-center gap-1.5 text-right\">\n {opt.originalPrice && (\n <span className=\"text-xs text-muted-foreground line-through font-ui\">\n {currency} {opt.originalPrice}\n </span>\n )}\n <span className=\"font-bold text-foreground font-ui\">\n {currency} {opt.price}\n {opt.unit && (\n <span className=\"text-xs font-normal text-muted-foreground\">\n {\" \"}/ {opt.unit}\n </span>\n )}\n </span>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* CTA */}\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"w-full rounded-full bg-primary py-3 text-center text-sm font-semibold\",\n \"text-primary-foreground font-ui transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { SearchIcon, UserIcon, ChevronDownIcon, MenuIcon, XIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface SiteHeaderSubItem {\n label: string;\n href?: string;\n}\n\nexport interface SiteHeaderLink {\n label: string;\n href?: string;\n items?: SiteHeaderSubItem[];\n}\n\nexport interface SiteHeaderLanguage {\n code: string; // \"EN\", \"PT\", \"NL\"\n label: string; // \"English\", \"Português\"\n}\n\nexport type SiteHeaderVariant = \"transparent\" | \"white\" | \"dark\";\n\nexport interface SiteHeaderProps {\n variant?: SiteHeaderVariant;\n links?: SiteHeaderLink[];\n logoSrc?: string;\n logoAlt?: string;\n languages?: SiteHeaderLanguage[];\n currentLanguage?: string;\n onLanguageChange?: (code: string) => void;\n onSearch?: () => void;\n onAccount?: () => void;\n /** \"overlay\" = absolute (inside a relative parent); \"fixed\" = fixed to viewport */\n position?: \"overlay\" | \"fixed\" | \"static\";\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Variant tokens\n ----------------------------------------------------------------------- */\nconst VARIANT: Record<\n SiteHeaderVariant,\n {\n header: string;\n navItem: string;\n navItemOpen: string;\n chevron: string;\n lang: string;\n langOpen: string;\n langChevron: string;\n icon: string;\n mobileTrigger: string;\n mobileDrawer: string;\n mobileLink: string;\n mobileSub: string;\n mobileLangActive: string;\n mobileLangIdle: string;\n logoBlend: string;\n }\n> = {\n transparent: {\n header: \"\",\n navItem: \"text-white hover:text-white/80\",\n navItemOpen: \"text-white bg-white/10\",\n chevron: \"text-white/50\",\n lang: \"text-white/70 hover:text-white\",\n langOpen: \"text-white bg-white/10\",\n langChevron: \"text-white/40\",\n icon: \"text-white/60 hover:text-white hover:bg-white/10\",\n mobileTrigger: \"text-white/70 hover:text-primary-400 hover:bg-white/8\",\n mobileDrawer: \"bg-primary-900 border-t border-white/10\",\n mobileLink: \"text-white hover:text-primary-400 border-b border-white/10\",\n mobileSub: \"text-white/70 font-bold hover:text-primary-400 border-b border-white/8\",\n mobileLangActive: \"text-primary-400 font-semibold\",\n mobileLangIdle: \"text-white/40 hover:text-primary-400\",\n logoBlend: \"mix-blend-screen\",\n },\n white: {\n header: \"bg-white border-b border-border shadow-sm\",\n navItem: \"text-foreground/70 hover:text-foreground\",\n navItemOpen: \"text-foreground bg-muted\",\n chevron: \"text-foreground/35\",\n lang: \"text-foreground/60 hover:text-foreground\",\n langOpen: \"text-foreground bg-muted\",\n langChevron: \"text-foreground/30\",\n icon: \"text-foreground/50 hover:text-foreground hover:bg-muted\",\n mobileTrigger: \"text-foreground/50 hover:text-foreground hover:bg-muted\",\n mobileDrawer: \"bg-white border-t border-border\",\n mobileLink: \"text-foreground/80 hover:text-foreground border-b border-border\",\n mobileSub: \"text-foreground/50 font-bold hover:text-foreground border-b border-border/40\",\n mobileLangActive: \"text-primary font-semibold\",\n mobileLangIdle: \"text-muted-foreground hover:text-foreground\",\n logoBlend: \"invert mix-blend-multiply\",\n },\n dark: {\n header: \"bg-neutral-950 border-b border-white/10\",\n navItem: \"text-white/70 hover:text-white\",\n navItemOpen: \"text-white bg-white/10\",\n chevron: \"text-white/40\",\n lang: \"text-white/60 hover:text-white\",\n langOpen: \"text-white bg-white/10\",\n langChevron: \"text-white/30\",\n icon: \"text-white/50 hover:text-white hover:bg-white/10\",\n mobileTrigger: \"text-white/50 hover:text-white hover:bg-white/10\",\n mobileDrawer: \"bg-neutral-950 border-t border-white/10\",\n mobileLink: \"text-white/80 hover:text-white border-b border-white/8\",\n mobileSub: \"text-white/45 font-bold hover:text-white border-b border-white/5\",\n mobileLangActive: \"text-white font-semibold\",\n mobileLangIdle: \"text-white/35 hover:text-white/60\",\n logoBlend: \"mix-blend-screen\",\n },\n};\n\n/* -----------------------------------------------------------------------\n Default data\n ----------------------------------------------------------------------- */\nexport const DEFAULT_HEADER_LINKS: SiteHeaderLink[] = [\n { label: \"All trips\", href: \"#\" },\n {\n label: \"Destinations\",\n items: [\n { label: \"Europe\", href: \"#\" },\n { label: \"South America\", href: \"#\" },\n { label: \"Africa\", href: \"#\" },\n { label: \"Asia\", href: \"#\" },\n { label: \"North America\", href: \"#\" },\n { label: \"Oceania\", href: \"#\" },\n ],\n },\n {\n label: \"Travel themes\",\n items: [\n { label: \"Adventure\", href: \"#\" },\n { label: \"Cultural\", href: \"#\" },\n { label: \"Wildlife\", href: \"#\" },\n { label: \"Beach & Coast\", href: \"#\" },\n { label: \"Trekking\", href: \"#\" },\n ],\n },\n {\n label: \"About\",\n items: [\n { label: \"About us\", href: \"#\" },\n { label: \"Sustainability\", href: \"#\" },\n { label: \"Jobs\", href: \"#\" },\n { label: \"FAQ\", href: \"#\" },\n { label: \"Contact\", href: \"#\" },\n { label: \"Gift Card\", href: \"#\" },\n ],\n },\n { label: \"Blog\", href: \"#\" },\n];\n\nexport const DEFAULT_LANGUAGES: SiteHeaderLanguage[] = [\n { code: \"EN\", label: \"English\" },\n { code: \"PT\", label: \"Português\" },\n { code: \"NL\", label: \"Nederlands\" },\n { code: \"DE\", label: \"Deutsch\" },\n { code: \"FR\", label: \"Français\" },\n { code: \"ES\", label: \"Español\" },\n];\n\n/* -----------------------------------------------------------------------\n Dropdown panel (shared, always white)\n ----------------------------------------------------------------------- */\nfunction NavDropdown({\n items,\n onClose,\n onMouseEnter,\n onMouseLeave,\n}: {\n items: SiteHeaderSubItem[];\n onClose: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}) {\n return (\n <div\n className=\"absolute top-[calc(100%+8px)] left-0 min-w-[200px] rounded-xl bg-white shadow-2xl border border-black/8 py-1.5 z-50\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {items.map((item) => (\n <a\n key={item.label}\n href={item.href ?? \"#\"}\n onClick={onClose}\n className=\"block px-5 py-2.5 text-sm text-foreground/75 font-ui font-bold hover:text-foreground hover:bg-muted transition-colors whitespace-nowrap\"\n >\n {item.label}\n </a>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Language dropdown (shared, always white)\n ----------------------------------------------------------------------- */\nfunction LangDropdown({\n languages,\n activeLang,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: {\n languages: SiteHeaderLanguage[];\n activeLang: string;\n onSelect: (code: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}) {\n return (\n <div\n className=\"absolute top-[calc(100%+8px)] right-0 min-w-[160px] rounded-xl bg-white shadow-2xl border border-black/8 py-1.5 z-50\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {languages.map((lang) => (\n <button\n key={lang.code}\n type=\"button\"\n onClick={() => onSelect(lang.code)}\n className={cn(\n \"flex items-center gap-3 w-full px-5 py-2.5 text-sm font-ui text-left transition-colors hover:bg-muted\",\n lang.code === activeLang ? \"text-primary font-semibold\" : \"text-foreground\"\n )}\n >\n <span className=\"font-semibold w-8 shrink-0\">{lang.code}</span>\n <span className=\"text-muted-foreground\">{lang.label}</span>\n </button>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n SiteHeader\n ----------------------------------------------------------------------- */\nexport function SiteHeader({\n variant = \"transparent\",\n links = DEFAULT_HEADER_LINKS,\n logoSrc = \"/logo-planetaexo.png\",\n logoAlt = \"Planeta Exo\",\n languages = DEFAULT_LANGUAGES,\n currentLanguage = \"EN\",\n onLanguageChange,\n onSearch,\n onAccount,\n position = variant === \"transparent\" ? \"overlay\" : \"fixed\",\n className,\n}: SiteHeaderProps) {\n const t = VARIANT[variant];\n\n const [openMenu, setOpenMenu] = React.useState<string | null>(null);\n const [langOpen, setLangOpen] = React.useState(false);\n const [mobileOpen, setMobileOpen] = React.useState(false);\n const [openMobileSection, setOpenMobileSection] = React.useState<string | null>(null);\n const [activeLang, setActiveLang] = React.useState(currentLanguage);\n\n const toggleMobileSection = (label: string) =>\n setOpenMobileSection((prev) => (prev === label ? null : label));\n\n const menuCloseTimer = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n const langCloseTimer = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const handleMenuEnter = (label: string) => {\n clearTimeout(menuCloseTimer.current);\n setOpenMenu(label);\n };\n\n const handleMenuLeave = () => {\n menuCloseTimer.current = setTimeout(() => setOpenMenu(null), 120);\n };\n\n const handleLangEnter = () => {\n clearTimeout(langCloseTimer.current);\n setLangOpen(true);\n };\n\n const handleLangLeave = () => {\n langCloseTimer.current = setTimeout(() => setLangOpen(false), 120);\n };\n\n const closeAll = () => {\n clearTimeout(menuCloseTimer.current);\n clearTimeout(langCloseTimer.current);\n setOpenMenu(null);\n setLangOpen(false);\n };\n\n React.useEffect(() => () => {\n clearTimeout(menuCloseTimer.current);\n clearTimeout(langCloseTimer.current);\n }, []);\n\n const handleLangSelect = (code: string) => {\n setActiveLang(code);\n onLanguageChange?.(code);\n setLangOpen(false);\n };\n\n const positionClass =\n position === \"overlay\" ? \"absolute\" :\n position === \"fixed\" ? \"fixed\" :\n \"relative\";\n\n return (\n <header\n className={cn(\n positionClass,\n \"top-0 left-0 right-0 z-40\",\n t.header,\n className\n )}\n >\n {/* Extended gradient overlay — only for transparent variant */}\n {variant === \"transparent\" && (\n <div className=\"absolute inset-x-0 top-0 h-52 bg-gradient-to-b from-black/55 via-black/20 to-transparent pointer-events-none\" />\n )}\n\n <div className=\"relative flex items-center gap-2 px-6 sm:px-10 h-[72px]\">\n\n {/* Logo */}\n <a href=\"#\" className=\"shrink-0 flex items-center mr-4\">\n <img\n src={logoSrc}\n alt={logoAlt}\n className={cn(\"h-11 w-auto select-none\", t.logoBlend)}\n draggable={false}\n />\n </a>\n\n {/* Desktop nav */}\n <nav className=\"hidden lg:flex items-center gap-0.5 mx-auto\">\n {links.map((link) => {\n const hasDropdown = !!(link.items?.length);\n const isOpen = openMenu === link.label;\n return (\n <div\n key={link.label}\n className=\"relative\"\n onMouseEnter={() => hasDropdown && handleMenuEnter(link.label)}\n onMouseLeave={handleMenuLeave}\n >\n <a\n href={link.href ?? \"#\"}\n onClick={hasDropdown ? (e) => e.preventDefault() : undefined}\n className={cn(\n \"flex items-center gap-1 px-3.5 py-1.5 rounded-full\",\n \"text-base font-ui font-black transition-colors whitespace-nowrap\",\n t.navItem,\n isOpen && t.navItemOpen\n )}\n >\n {link.label}\n {hasDropdown && (\n <ChevronDownIcon\n className={cn(\n \"h-3.5 w-3.5 transition-transform duration-150 shrink-0\",\n t.chevron,\n isOpen && \"rotate-180\"\n )}\n />\n )}\n </a>\n {isOpen && link.items && (\n <NavDropdown\n items={link.items}\n onClose={closeAll}\n onMouseEnter={() => handleMenuEnter(link.label)}\n onMouseLeave={handleMenuLeave}\n />\n )}\n </div>\n );\n })}\n </nav>\n\n {/* Right actions */}\n <div className=\"flex items-center gap-1 ml-auto lg:ml-0 shrink-0\">\n\n {/* Language selector — desktop only */}\n {languages.length > 0 && (\n <div\n className=\"relative hidden lg:block\"\n onMouseEnter={handleLangEnter}\n onMouseLeave={handleLangLeave}\n >\n <button\n type=\"button\"\n aria-label=\"Language\"\n className={cn(\n \"flex items-center gap-0.5 px-2.5 py-1.5 rounded-full\",\n \"text-sm font-ui transition-colors\",\n t.lang,\n langOpen && t.langOpen\n )}\n >\n {activeLang}\n <ChevronDownIcon\n className={cn(\n \"h-3 w-3 transition-transform duration-150\",\n t.langChevron,\n langOpen && \"rotate-180\"\n )}\n />\n </button>\n\n {langOpen && (\n <LangDropdown\n languages={languages}\n activeLang={activeLang}\n onSelect={handleLangSelect}\n onMouseEnter={handleLangEnter}\n onMouseLeave={handleLangLeave}\n />\n )}\n </div>\n )}\n\n {/* Search — always visible */}\n <button\n type=\"button\"\n onClick={onSearch}\n aria-label=\"Search\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.icon\n )}\n >\n <SearchIcon className=\"h-[18px] w-[18px]\" />\n </button>\n\n {/* Account — always visible */}\n <button\n type=\"button\"\n onClick={onAccount}\n aria-label=\"Account\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.icon\n )}\n >\n <UserIcon className=\"h-[18px] w-[18px]\" />\n </button>\n\n {/* Hamburger — mobile only */}\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n className={cn(\n \"flex lg:hidden h-9 w-9 items-center justify-center rounded-full transition-colors ml-0.5\",\n t.mobileTrigger\n )}\n >\n <MenuIcon className=\"h-[18px] w-[18px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Mobile full-screen overlay ────────────────────────────────────── */}\n {mobileOpen && (\n <div\n className={cn(\n \"fixed inset-0 z-50 lg:hidden flex flex-col\",\n variant === \"white\" ? \"bg-white\" : \"bg-primary-900\"\n )}\n >\n {/* Drawer header */}\n <div className=\"flex items-center justify-between px-6 h-[72px] shrink-0 border-b border-white/8\">\n <a href=\"#\" className=\"shrink-0 flex items-center\" onClick={() => setMobileOpen(false)}>\n <img\n src={logoSrc}\n alt={logoAlt}\n className={cn(\"h-11 w-auto select-none\", t.logoBlend)}\n draggable={false}\n />\n </a>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n aria-label=\"Close menu\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.mobileTrigger\n )}\n >\n <XIcon className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Nav links — scrollable */}\n <nav className=\"flex-1 overflow-y-auto px-6 py-6 flex flex-col gap-1\">\n {links.map((link) => {\n const hasDropdown = !!(link.items?.length);\n const isExpanded = openMobileSection === link.label;\n return (\n <div key={link.label}>\n {hasDropdown ? (\n <button\n type=\"button\"\n onClick={() => toggleMobileSection(link.label)}\n className={cn(\n \"flex items-center justify-between w-full py-4 text-xl font-ui font-black transition-colors border-b border-white/8\",\n t.mobileLink\n )}\n >\n {link.label}\n <ChevronDownIcon\n className={cn(\n \"h-5 w-5 transition-transform duration-200 opacity-40\",\n isExpanded && \"rotate-180\"\n )}\n />\n </button>\n ) : (\n <a\n href={link.href ?? \"#\"}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"flex items-center py-4 text-xl font-ui font-black transition-colors border-b border-white/8\",\n t.mobileLink\n )}\n >\n {link.label}\n </a>\n )}\n\n {/* Expanded sub-items */}\n {hasDropdown && isExpanded && (\n <div className=\"flex flex-col gap-0 pl-4 pb-2\">\n {link.items!.map((item) => (\n <a\n key={item.label}\n href={item.href ?? \"#\"}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"py-3 text-base font-ui font-bold transition-colors border-b\",\n t.mobileSub\n )}\n >\n {item.label}\n </a>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </nav>\n\n {/* Footer: language + action icons */}\n <div className={cn(\n \"shrink-0 px-6 py-5 flex items-center justify-between border-t\",\n variant === \"white\" ? \"border-border\" : \"border-white/10\"\n )}>\n {/* Language selector */}\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {languages.map((lang, i) => {\n const isActive = lang.code === activeLang;\n return (\n <React.Fragment key={lang.code}>\n {i > 0 && (\n <span className={cn(\n \"text-xs select-none\",\n variant === \"white\" ? \"text-border\" : \"text-white/15\"\n )}>·</span>\n )}\n <button\n type=\"button\"\n onClick={() => handleLangSelect(lang.code)}\n className={cn(\n \"font-ui font-black transition-all duration-150 rounded-full\",\n isActive\n ? cn(\n \"text-sm px-3 py-1 border\",\n variant === \"white\"\n ? \"text-primary border-primary bg-primary/8\"\n : \"text-primary-400 border-primary-400/50 bg-primary-400/10\"\n )\n : cn(\n \"text-xs px-2 py-1\",\n variant === \"white\"\n ? \"text-muted-foreground hover:text-foreground\"\n : \"text-white/35 hover:text-white/70\"\n )\n )}\n >\n {lang.code}\n </button>\n </React.Fragment>\n );\n })}\n </div>\n\n {/* Icons */}\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => { onSearch?.(); setMobileOpen(false); }}\n aria-label=\"Search\"\n className={cn(\"flex h-9 w-9 items-center justify-center rounded-full transition-colors\", t.icon)}\n >\n <SearchIcon className=\"h-[18px] w-[18px]\" />\n </button>\n <button\n type=\"button\"\n onClick={() => { onAccount?.(); setMobileOpen(false); }}\n aria-label=\"Account\"\n className={cn(\"flex h-9 w-9 items-center justify-center rounded-full transition-colors\", t.icon)}\n >\n <UserIcon className=\"h-[18px] w-[18px]\" />\n </button>\n </div>\n </div>\n </div>\n )}\n </header>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { SunIcon, MoonIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function ThemeToggle({ className }: { className?: string }) {\n const [dark, setDark] = React.useState(false);\n\n React.useEffect(() => {\n const saved = localStorage.getItem(\"theme\");\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const isDark = saved === \"dark\" || (!saved && prefersDark);\n setDark(isDark);\n document.documentElement.classList.toggle(\"dark\", isDark);\n }, []);\n\n const toggle = () => {\n const next = !dark;\n setDark(next);\n document.documentElement.classList.toggle(\"dark\", next);\n localStorage.setItem(\"theme\", next ? \"dark\" : \"light\");\n };\n\n return (\n <button\n type=\"button\"\n onClick={toggle}\n aria-label={dark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-md\",\n \"bg-card border border-border text-muted-foreground shadow-sm\",\n \"hover:text-foreground hover:bg-muted transition-colors\",\n className\n )}\n >\n {dark ? <SunIcon className=\"h-4 w-4\" /> : <MoonIcon className=\"h-4 w-4\" />}\n </button>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nfunction CalendarIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n );\n}\n\nfunction TrendingIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" />\n <polyline points=\"17 6 23 6 23 12\" />\n </svg>\n );\n}\n\nfunction ArrowIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n <polyline points=\"12 5 19 12 12 19\" />\n </svg>\n );\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type TripCardStatus = \"sold-out\" | \"trending\";\n\nexport type TripCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TripCardCta {\n /** Texto do link (ex: \"Discover this trip\" ou \"5 dates available\") */\n label: string;\n onClick?: () => void;\n href?: string;\n}\n\nexport interface TripCardProps {\n /** URL da imagem de capa */\n image: string;\n imageAlt?: string;\n /** Badge de status exibido no topo esquerdo */\n status?: TripCardStatus;\n /** Número de noites */\n nights?: number;\n /** Período (ex: \"Feb - Mar\") */\n period?: string;\n /** Título da viagem */\n title: string;\n /** Descrição curta */\n description?: string;\n /** Link/CTA de ação */\n cta?: TripCardCta;\n /** Preço exibido ao lado do CTA (ex: \"from € 769\") */\n price?: string;\n size?: TripCardSize;\n className?: string;\n}\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\nconst sizeConfig: Record<TripCardSize, { card: string; title: string; meta: string; description: string }> = {\n sm: {\n card: \"h-72 w-56\",\n title: \"text-lg font-bold\",\n meta: \"text-xs\",\n description: \"text-xs\",\n },\n md: {\n card: \"h-96 w-72\",\n title: \"text-xl font-bold\",\n meta: \"text-xs\",\n description: \"text-sm\",\n },\n lg: {\n card: \"h-[28rem] w-96\",\n title: \"text-2xl font-bold\",\n meta: \"text-sm\",\n description: \"text-sm\",\n },\n};\n\n// ─── Status badge config ──────────────────────────────────────────────────────\n\nconst statusConfig: Record<TripCardStatus, { label: string; icon: React.ReactNode }> = {\n \"sold-out\": {\n label: \"All seats taken\",\n icon: <CalendarIcon />,\n },\n trending: {\n label: \"Trending\",\n icon: <TrendingIcon />,\n },\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function TripCard({\n image,\n imageAlt = \"\",\n status,\n nights,\n period,\n title,\n description,\n cta,\n price,\n size = \"md\",\n className,\n}: TripCardProps) {\n const s = sizeConfig[size];\n const statusInfo = status ? statusConfig[status] : null;\n\n const meta = [\n nights ? `${nights} nights` : null,\n period ?? null,\n ]\n .filter(Boolean)\n .join(\" | \");\n\n return (\n <div\n className={cn(\n \"group relative flex flex-col justify-between overflow-hidden rounded-2xl\",\n \"shadow-md transition-shadow duration-300 hover:shadow-xl\",\n s.card,\n className\n )}\n >\n {/* Full-bleed image */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={imageAlt}\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n\n {/* Bottom gradient overlay */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\" />\n\n {/* Status badge — top left */}\n {statusInfo && (\n <div className=\"relative z-10 p-3\">\n <div className=\"inline-flex items-center gap-1.5 rounded-xl bg-card/90 px-3 py-1.5 backdrop-blur-sm shadow-sm\">\n <span className=\"text-primary\">{statusInfo.icon}</span>\n <span className=\"text-xs font-semibold text-foreground font-ui\">\n {statusInfo.label}\n </span>\n </div>\n </div>\n )}\n\n {/* Spacer when no badge */}\n {!statusInfo && <div className=\"relative z-10\" />}\n\n {/* Bottom content */}\n <div className=\"relative z-10 flex flex-col gap-1.5 p-5\">\n {/* Meta */}\n {meta && (\n <p className={cn(\"text-white/70 font-medium font-ui\", s.meta)}>{meta}</p>\n )}\n\n {/* Title */}\n <h3 className={cn(\"text-white leading-snug\", s.title)}>{title}</h3>\n\n {/* Description */}\n {description && (\n <p className={cn(\"text-white/80 leading-relaxed mt-0.5\", s.description)}>\n {description}\n </p>\n )}\n\n {/* CTA row */}\n {(cta || price) && (\n <div className=\"mt-3 flex items-center justify-between gap-4\">\n {cta && (\n <button\n onClick={cta.onClick}\n className={cn(\n \"group/cta inline-flex items-center gap-1.5 border-b border-white/70 pb-0.5\",\n \"text-sm font-semibold text-white transition-colors hover:border-white hover:text-white\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\",\n \"font-ui\"\n )}\n >\n {cta.label}\n <span className=\"transition-transform duration-150 group-hover/cta:translate-x-0.5\">\n <ArrowIcon />\n </span>\n </button>\n )}\n {price && (\n <p className=\"text-sm font-semibold text-white/90 whitespace-nowrap font-ui\">\n {price}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MapPinIcon,\n MoonIcon,\n SunIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { SiteHeader, type SiteHeaderLink } from \"@/components/SiteHeader\";\n\n/* -----------------------------------------------------------------------\n HLS player hook\n Detects .m3u8 URLs and uses hls.js for adaptive streaming.\n Falls back to native <video src> for plain MP4 / native HLS (Safari).\n ----------------------------------------------------------------------- */\nfunction useHlsVideo(\n videoRef: React.RefObject<HTMLVideoElement | null>,\n src: string | undefined\n) {\n React.useEffect(() => {\n if (!src || !videoRef.current) return;\n const video = videoRef.current;\n\n /* Only activate hls.js for HLS manifests */\n if (!src.includes(\".m3u8\")) return;\n\n let hlsInstance: import(\"hls.js\").default | null = null;\n\n import(\"hls.js\").then(({ default: Hls }) => {\n /* Safari supports HLS natively — no need for hls.js */\n if (!Hls.isSupported()) {\n video.src = src;\n return;\n }\n hlsInstance = new Hls({\n /* Start with low-quality level to show first frame ASAP */\n startLevel: 0,\n /* Limit initial buffer to 10s — faster start */\n maxBufferLength: 10,\n maxMaxBufferLength: 30,\n });\n hlsInstance.loadSource(src);\n hlsInstance.attachMedia(video);\n hlsInstance.on(Hls.Events.MANIFEST_PARSED, () => {\n video.play().catch(() => {});\n });\n });\n\n return () => {\n hlsInstance?.destroy();\n };\n }, [src, videoRef]);\n}\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface TripDuration {\n /** Total number of days */\n days: number;\n /** Number of nights — defaults to days - 1 */\n nights?: number;\n}\n\nexport interface TripHeaderProps {\n /** Hero image array — shows a carousel when more than one image */\n images: string[];\n /** Optional video URL — plays as background instead of the image carousel */\n videoUrl?: string;\n /** Main trip title */\n title: string;\n /** Breadcrumb trail displayed above the title */\n breadcrumb?: Array<{ label: string; href?: string }>;\n /** Destination name shown with a map pin icon */\n destination?: string;\n /** Duration shown with a moon/sun icon */\n duration?: TripDuration;\n /** Legacy tagline — shown only when destination/duration are not provided */\n tagline?: string;\n /** Pass true (or a links array) to render the transparent SiteHeader over the hero */\n siteHeader?: boolean | SiteHeaderLink[];\n /** Alinhado ao TripPage — reservado para densidade / hero v2 */\n uiVariant?: \"v1\" | \"v2\";\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n TripHeader\n ----------------------------------------------------------------------- */\nexport function TripHeader({\n images,\n videoUrl,\n title,\n breadcrumb,\n destination,\n duration,\n tagline,\n siteHeader,\n uiVariant = \"v1\",\n className,\n}: TripHeaderProps) {\n const [heroIndex, setHeroIndex] = React.useState(0);\n /* Tracks whether the video has buffered enough to play — drives the crossfade */\n const [videoReady, setVideoReady] = React.useState(false);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n\n const isHls = !!videoUrl?.includes(\".m3u8\");\n\n const validImages = React.useMemo(\n () => images.map((u) => u?.trim()).filter(Boolean) as string[],\n [images]\n );\n const hasHeroImage = validImages.length > 0;\n const heroSrc = (i: number) => validImages[i] ?? \"\";\n const safeIndex = Math.min(heroIndex, Math.max(0, validImages.length - 1));\n const currentSrc = heroSrc(safeIndex);\n const showCarousel = !videoUrl && validImages.length > 1;\n\n const nights = duration\n ? (duration.nights ?? Math.max(duration.days - 1, 1))\n : null;\n\n const hasMeta = !!(destination || duration);\n\n /* Activate HLS.js for .m3u8 streams (adaptive bitrate) */\n useHlsVideo(videoRef, isHls ? videoUrl : undefined);\n\n /* Pause video when scrolled out of view — saves CPU / mobile battery */\n React.useEffect(() => {\n if (!videoUrl) return;\n const el = videoRef.current;\n if (!el) return;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n el.play().catch(() => {});\n } else {\n el.pause();\n }\n },\n { threshold: 0.1 }\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, [videoUrl]);\n\n return (\n <div\n className={cn(\"w-full\", className)}\n data-trip-header-variant={uiVariant}\n >\n {/* ── Hero image / video ──────────────────────────────────────────── */}\n <div\n className={cn(\n \"relative w-full overflow-hidden\",\n hasHeroImage ? \"bg-muted\" : \"bg-zinc-900\",\n siteHeader ? \"h-[80vh] min-h-[520px]\" : \"h-[70vh] min-h-[420px]\"\n )}\n >\n {/* Sem imagem nem vídeo: fundo escuro legível com título branco por cima */}\n {!videoUrl && !hasHeroImage && (\n <div\n className=\"absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950\"\n aria-hidden\n />\n )}\n {/* Media */}\n {videoUrl ? (\n <>\n {/*\n Poster image — shown instantly while the video downloads.\n fetchPriority=\"high\" ensures it's treated as an LCP resource.\n Fades out once the video is ready to play.\n */}\n {hasHeroImage ? (\n <img\n src={validImages[0]}\n alt=\"\"\n aria-hidden\n fetchPriority=\"high\"\n className={cn(\n \"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\",\n videoReady ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n />\n ) : (\n <div\n className=\"absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950 transition-opacity duration-700\"\n aria-hidden\n />\n )}\n {/*\n Video starts loading immediately (preload=\"auto\").\n poster= is a native browser fallback for non-JS contexts.\n Fades in once canplay fires.\n */}\n <video\n ref={videoRef}\n /* For plain MP4: set src directly.\n For HLS (.m3u8): src is managed by hls.js — leave it unset. */\n src={isHls ? undefined : videoUrl}\n autoPlay\n muted\n loop\n playsInline\n preload=\"auto\"\n poster={hasHeroImage ? validImages[0] : undefined}\n onCanPlay={() => setVideoReady(true)}\n className={cn(\n \"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\",\n videoReady ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </>\n ) : hasHeroImage ? (\n <img\n src={currentSrc}\n alt={title}\n fetchPriority={safeIndex === 0 ? \"high\" : \"auto\"}\n className=\"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\"\n />\n ) : null}\n\n {/* Gradient */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/85 via-black/20 to-transparent\" />\n\n {/* SiteHeader overlay */}\n {siteHeader && (\n <SiteHeader\n links={Array.isArray(siteHeader) ? siteHeader : undefined}\n position=\"overlay\"\n />\n )}\n\n {/* Carousel controls */}\n {!videoUrl && showCarousel && (\n <>\n <button\n type=\"button\"\n onClick={() =>\n setHeroIndex(\n (i) => (i - 1 + validImages.length) % validImages.length\n )\n }\n className=\"absolute left-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors\"\n aria-label=\"Imagem anterior\"\n >\n <ChevronLeftIcon className=\"h-5 w-5\" />\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setHeroIndex((i) => (i + 1) % validImages.length)\n }\n className=\"absolute right-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors\"\n aria-label=\"Próxima imagem\"\n >\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n <div className=\"absolute bottom-5 right-5 flex gap-1.5\">\n {validImages.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setHeroIndex(i)}\n className={cn(\n \"h-1.5 rounded-full transition-all\",\n i === safeIndex\n ? \"w-5 bg-white\"\n : \"w-1.5 bg-white/50\"\n )}\n />\n ))}\n </div>\n </>\n )}\n </div>\n\n {/* ── Hero text — overlaps hero via negative margin ───────────────── */}\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6\">\n <div\n className={cn(\n \"relative z-10 pb-10\",\n siteHeader ? \"-mt-44\" : \"-mt-36\"\n )}\n >\n {/* Breadcrumb */}\n {breadcrumb && breadcrumb.length > 0 && (\n <div className=\"mb-3 flex items-center gap-1.5 flex-wrap\">\n {breadcrumb.map((crumb, i) => (\n <React.Fragment key={i}>\n {i > 0 && (\n <ChevronRightIcon className=\"h-3 w-3 text-white/50 shrink-0\" />\n )}\n <span className=\"text-xs text-white/70 font-ui hover:text-white/90 cursor-default\">\n {crumb.label}\n </span>\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"text-3xl sm:text-5xl font-bold text-white font-heading leading-tight\">\n {title}\n </h1>\n\n {/* Destination + Duration */}\n {hasMeta ? (\n <div className=\"mt-3 flex items-center gap-5 flex-wrap\">\n {destination && (\n <div className=\"flex items-center gap-1.5 text-white/85\">\n <MapPinIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {destination}\n </span>\n </div>\n )}\n {duration && nights !== null && (\n <div className=\"flex items-center gap-1.5 text-white/85\">\n <MoonIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {nights} {nights === 1 ? \"noite\" : \"noites\"}\n </span>\n <span className=\"text-white/40\">·</span>\n <SunIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {duration.days} {duration.days === 1 ? \"dia\" : \"dias\"}\n </span>\n </div>\n )}\n </div>\n ) : tagline ? (\n <p className=\"mt-2 text-sm sm:text-base text-white/80 font-ui\">\n {tagline}\n </p>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ClockIcon,\n MapPinIcon,\n CheckIcon,\n ChevronRightIcon,\n StarIcon,\n InfoIcon,\n PackageIcon,\n SunIcon,\n UsersIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from \"@/components/ui/accordion\";\nimport { MenuTrip } from \"@/components/MenuTrip\";\nimport { PricingTrip } from \"@/components/PricingTrip\";\nimport { BookingForm } from \"@/components/BookingForm\";\nimport { PhotoGallery } from \"@/components/PhotoGallery\";\nimport { TripHeader, type TripDuration } from \"@/components/TripHeader\";\nimport type { SiteHeaderLink } from \"@/components/SiteHeader\";\nimport type { PhotoGalleryPhoto } from \"@/components/PhotoGallery\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface TripHighlight {\n label: string;\n icon?: React.ReactNode;\n}\n\nexport interface TripInfoGroup {\n title: string;\n icon?: React.ReactNode;\n items: string[];\n}\n\nexport interface TripItineraryStep {\n label: string;\n duration?: string;\n description: React.ReactNode;\n isTransfer?: boolean;\n}\n\nexport interface TripReview {\n author: string;\n text: string;\n rating?: number; // 1-5, defaults to 5\n}\n\nexport interface TripPricingOption {\n label: string;\n originalPrice?: string;\n price: string;\n unit?: string; // \"guest\", \"group\", etc.\n}\n\nexport interface TripMeetingPoint {\n name: string;\n address: string;\n type?: \"start\" | \"alternative\" | \"activity\";\n}\n\nexport interface TripFaq {\n question: string;\n answer: React.ReactNode;\n}\n\nexport type { TripDuration };\n\nexport interface TripPageProps {\n /* Hero */\n title: string;\n /** Legacy tagline — shown only when destination/duration are not provided */\n tagline?: string;\n /** Destination name shown with a map-pin icon in the hero */\n destination?: string;\n /** Duration shown with moon/sun icons in the hero */\n duration?: TripDuration;\n images: string[];\n /** Optional video URL — plays as background instead of the image carousel */\n videoUrl?: string;\n /** Breadcrumb trail displayed above the title */\n breadcrumb?: Array<{ label: string; href?: string }>;\n highlights?: TripHighlight[];\n\n /* Info groups: facts, requirements, tips */\n infoGroups?: TripInfoGroup[];\n\n /* Overview */\n recommendedFor?: string;\n overview?: React.ReactNode;\n\n /* Itinerary */\n itinerary?: TripItineraryStep[];\n\n /* Photo gallery — shown full-width after itinerary */\n gallery?: (string | PhotoGalleryPhoto)[];\n\n /* Included / What to bring */\n included?: string[];\n whatToBring?: string[];\n\n /* Weather */\n weather?: React.ReactNode;\n\n /* Meeting points */\n meetingPoints?: TripMeetingPoint[];\n\n /* FAQ */\n faqs?: TripFaq[];\n\n /* Reviews */\n reviews?: TripReview[];\n\n /* Booking */\n priceFrom: string;\n currency?: string;\n season?: string;\n departureTimes?: string[];\n pricingOptions?: TripPricingOption[];\n onBook?: () => void;\n bookLabel?: string;\n\n /** Pass true (or a links array) to render the transparent SiteHeader over the hero */\n siteHeader?: boolean | SiteHeaderLink[];\n\n /** Preset de layout (ilha WP / styleguide). @default v1 */\n uiVariant?: \"v1\" | \"v2\";\n /** Feature flags para ramos de UI sem duplicar componentes. */\n features?: Record<string, boolean>;\n\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Internal sub-components\n ----------------------------------------------------------------------- */\n\n/** Star rating row */\nfunction Stars({ count = 5 }: { count?: number }) {\n return (\n <span className=\"flex gap-0.5\">\n {Array.from({ length: 5 }).map((_, i) => (\n <StarIcon\n key={i}\n className={cn(\n \"h-3.5 w-3.5\",\n i < count ? \"fill-primary text-primary\" : \"fill-muted text-muted\"\n )}\n />\n ))}\n </span>\n );\n}\n\n/** Itinerary vertical timeline */\nfunction ItineraryTimeline({ steps }: { steps: TripItineraryStep[] }) {\n return (\n <ol className=\"relative flex flex-col gap-0\">\n {steps.map((step, i) => (\n <li key={i} className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Vertical line */}\n {i < steps.length - 1 && (\n <div className=\"absolute left-3.5 top-7 bottom-0 w-px bg-border\" />\n )}\n\n {/* Dot */}\n <div className=\"relative z-10 mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-full border-2 border-primary bg-background\">\n <span className=\"text-[10px] font-bold text-primary font-ui\">\n {i + 1}\n </span>\n </div>\n\n {/* Content */}\n <div className=\"flex flex-col gap-1 pt-0.5 flex-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n {step.label}\n </h4>\n {step.duration && (\n <Badge variant=\"outline\" className=\"text-xs font-ui h-5 px-2\">\n <ClockIcon className=\"h-3 w-3 mr-1\" />\n {step.duration}\n </Badge>\n )}\n {step.isTransfer && (\n <Badge variant=\"secondary\" className=\"text-xs font-ui h-5 px-2\">\n Transfer\n </Badge>\n )}\n </div>\n <div className=\"text-sm text-muted-foreground leading-relaxed [&_p:not(:last-child)]:mb-2 [&_strong]:text-foreground [&_strong]:font-semibold\">\n {step.description}\n </div>\n </div>\n </li>\n ))}\n </ol>\n );\n}\n\n/** Included / gear checklist */\nfunction Checklist({ items, icon }: { items: string[]; icon?: React.ReactNode }) {\n return (\n <ul className=\"flex flex-col gap-2\">\n {items.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2.5 text-sm text-foreground\">\n <span className=\"mt-0.5 shrink-0 text-primary\">\n {icon ?? <CheckIcon className=\"h-4 w-4\" />}\n </span>\n {item}\n </li>\n ))}\n </ul>\n );\n}\n\n\n/* -----------------------------------------------------------------------\n TripPage\n ----------------------------------------------------------------------- */\nexport function TripPage({\n title,\n tagline,\n destination,\n duration,\n images,\n videoUrl,\n breadcrumb,\n highlights,\n infoGroups,\n recommendedFor,\n overview,\n itinerary,\n gallery,\n included,\n whatToBring,\n weather,\n meetingPoints,\n faqs,\n reviews,\n priceFrom,\n currency = \"CHF\",\n season,\n departureTimes,\n pricingOptions,\n onBook,\n bookLabel,\n siteHeader,\n uiVariant = \"v1\",\n features,\n className,\n}: TripPageProps) {\n const [activeSection, setActiveSection] = React.useState(\"\");\n /*\n * navFloating — true as soon as the TripHeader scrolls off the viewport.\n * Controls the MenuTrip visibility.\n * isFloating — true when highlights + separator have scrolled off.\n * Controls the PricingTrip sidebar switch from sticky → fixed.\n * These are intentionally separate so the nav appears earlier and the\n * sidebar transition does not displace the nav placeholder.\n */\n const [navFloating, setNavFloating] = React.useState(false);\n /* navHidden — hides the MenuTrip only when the booking form itself enters view */\n const [navHidden, setNavHidden] = React.useState(false);\n const [isFloating, setIsFloating] = React.useState(false);\n const [sidebarPos, setSidebarPos] = React.useState<{ left: number; width: number } | null>(null);\n const [pricingBarVisible, setPricingBarVisible] = React.useState(false);\n const navRef = React.useRef<HTMLDivElement>(null);\n /* navSentinelRef — placed at the very top of the constrained container */\n const navSentinelRef = React.useRef<HTMLDivElement>(null);\n /* sentinelRef — placed after highlights + separator (triggers sidebar float) */\n const sentinelRef = React.useRef<HTMLDivElement>(null);\n const sidebarPlaceholderRef = React.useRef<HTMLDivElement>(null);\n const pricingBarRef = React.useRef<HTMLDivElement>(null);\n const galleryRef = React.useRef<HTMLElement>(null);\n\n /* Build section list once from props */\n const sections = React.useMemo(\n () =>\n [\n { id: \"key-info\", label: \"Key info\", show: !!infoGroups?.length },\n { id: \"overview\", label: \"Overview\", show: !!overview },\n { id: \"itinerary\", label: \"Itinerary\", show: !!itinerary?.length },\n { id: \"included\", label: \"Included\", show: !!(included?.length || whatToBring?.length) },\n { id: \"what-to-bring\", label: \"What to bring\", show: !!whatToBring?.length },\n { id: \"weather\", label: \"Weather\", show: !!weather },\n { id: \"meeting\", label: \"Meeting point\", show: !!meetingPoints?.length },\n { id: \"faq\", label: \"FAQ\", show: !!faqs?.length },\n { id: \"gallery\", label: \"Photos\", show: !!gallery?.length },\n ].filter((s) => s.show),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n /* navFloating: fires as soon as the TripHeader scrolls off */\n React.useEffect(() => {\n const sentinel = navSentinelRef.current;\n if (!sentinel) return;\n const update = () => setNavFloating(sentinel.getBoundingClientRect().top < 1);\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n update();\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, []);\n\n /* isFloating: fires after highlights + separator scroll off (sidebar trigger) */\n React.useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n const update = () => setIsFloating(sentinel.getBoundingClientRect().top < 1);\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n update();\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, []);\n\n /* Measure sidebar placeholder position for fixed duplicate.\n Re-runs on resize AND when isFloating changes (layout may shift). */\n React.useEffect(() => {\n const measure = () => {\n if (!sidebarPlaceholderRef.current) return;\n const rect = sidebarPlaceholderRef.current.getBoundingClientRect();\n setSidebarPos({ left: rect.left, width: rect.width });\n };\n measure();\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isFloating]);\n\n /* Hide fixed sidebar when gallery overlaps it (earlier threshold) */\n React.useEffect(() => {\n const check = () => {\n const target = galleryRef.current ?? pricingBarRef.current;\n if (!target) return;\n setPricingBarVisible(target.getBoundingClientRect().top < window.innerHeight * 0.75);\n };\n document.addEventListener(\"scroll\", check, { passive: true, capture: true });\n check();\n return () => document.removeEventListener(\"scroll\", check, { capture: true });\n }, []);\n\n /* Hide MenuTrip nav only when the booking form itself enters the viewport */\n React.useEffect(() => {\n const check = () => {\n if (!pricingBarRef.current) return;\n setNavHidden(pricingBarRef.current.getBoundingClientRect().top < window.innerHeight * 0.92);\n };\n document.addEventListener(\"scroll\", check, { passive: true, capture: true });\n check();\n return () => document.removeEventListener(\"scroll\", check, { capture: true });\n }, []);\n\n /* Scroll-spy: check section positions on every scroll */\n React.useEffect(() => {\n if (sections.length === 0) return;\n setActiveSection(sections[0].id);\n const update = () => {\n const navH = (navRef.current?.offsetHeight ?? 56) + 20;\n for (const { id } of [...sections].reverse()) {\n const el = document.getElementById(`trip-section-${id}`);\n if (el && el.getBoundingClientRect().top <= navH) {\n setActiveSection(id);\n return;\n }\n }\n setActiveSection(sections[0].id);\n };\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, [sections]);\n\n /* Scroll to booking form — mirrors scrollToSection logic */\n const scrollToBookingForm = () => {\n const el = document.getElementById(\"trip-booking-form\");\n if (!el) return;\n const navHeight = (navRef.current?.offsetHeight ?? 56) + 16;\n const scrollEl = navRef.current?.closest(\"main\");\n const elTop = el.getBoundingClientRect().top;\n const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;\n const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;\n const target = currentScroll + (elTop - containerTop) - navHeight;\n if (scrollEl) {\n scrollEl.scrollTo({ top: target, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: target, behavior: \"smooth\" });\n }\n };\n\n /* Click nav → smooth-scroll with offset */\n const scrollToSection = (id: string) => {\n const el = document.getElementById(`trip-section-${id}`);\n if (!el) return;\n const navHeight = navRef.current?.offsetHeight ?? 56;\n /* Find scroll container (main or window) */\n const scrollEl = navRef.current?.closest(\"main\");\n const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;\n const elTop = el.getBoundingClientRect().top;\n const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;\n const target = currentScroll + (elTop - containerTop) - navHeight - 12;\n if (scrollEl) {\n scrollEl.scrollTo({ top: target, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: target, behavior: \"smooth\" });\n }\n };\n\n return (\n <div\n className={cn(\"w-full overflow-x-hidden\", className)}\n data-ui-variant={uiVariant}\n data-features={features ? JSON.stringify(features) : undefined}\n >\n {/* ── TripHeader ──────────────────────────────────────────────────── */}\n <TripHeader\n images={images}\n videoUrl={videoUrl}\n title={title}\n breadcrumb={breadcrumb}\n destination={destination}\n duration={duration}\n tagline={tagline}\n siteHeader={siteHeader}\n uiVariant={uiVariant}\n />\n\n {/* ── All content — constrained container ─────────────────────── */}\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6\">\n\n {/* Highlights */}\n {highlights && highlights.length > 0 && (\n <div className=\"mt-6 flex flex-wrap justify-center gap-6 py-2\">\n {highlights.map((h, i) => (\n <div key={i} className=\"flex flex-col items-center gap-2 text-center\">\n {h.icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full border-2 border-border text-foreground\">\n {h.icon}\n </div>\n )}\n <span className=\"text-sm font-semibold text-foreground font-ui\">{h.label}</span>\n </div>\n ))}\n </div>\n )}\n\n {/*\n Nav sentinel — placed right before the inline MenuTrip so navFloating\n fires exactly when the MenuTrip reaches the top of the viewport.\n */}\n <div ref={navSentinelRef} className=\"h-px\" aria-hidden />\n\n {/*\n Inline MenuTrip — replaces the separator between highlights and content.\n When navFloating is true it becomes invisible (opacity-0, pointer-events-none)\n so it keeps its height in the layout (no reflow) while the fixed copy floats.\n When there are no sections, a plain separator is shown instead.\n */}\n {sections.length > 0 ? (\n <div\n className={cn(\n \"py-2 flex justify-center transition-opacity duration-150\",\n navFloating ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n >\n <MenuTrip\n sections={sections}\n activeSection={activeSection}\n onSelect={scrollToSection}\n variant=\"floating\"\n />\n </div>\n ) : (\n <Separator className=\"my-6\" />\n )}\n\n {/* Sidebar sentinel — fires after the MenuTrip scrolls off (sidebar trigger) */}\n <div ref={sentinelRef} className=\"h-px -mt-px\" aria-hidden />\n\n {/* Main layout: content + sidebar placeholder */}\n <div className=\"flex flex-col lg:flex-row gap-8 mt-4\">\n {/* Content column */}\n <div className=\"flex-1 min-w-0 space-y-12 pb-12\">\n\n {/* Key Info */}\n {infoGroups && infoGroups.length > 0 && (\n <section id=\"trip-section-key-info\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">Key info</h2>\n <div className=\"space-y-6\">\n {infoGroups.map((group, i) => (\n <div key={i}>\n <div className=\"flex items-center gap-2 mb-3\">\n {group.icon && <span className=\"text-primary\">{group.icon}</span>}\n <h3 className=\"text-base font-bold text-foreground font-heading\">{group.title}</h3>\n </div>\n <Checklist items={group.items} />\n {i < infoGroups.length - 1 && <Separator className=\"mt-6\" />}\n </div>\n ))}\n </div>\n </section>\n )}\n\n {/* Overview */}\n {overview && (\n <section id=\"trip-section-overview\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4\">Overview</h2>\n {recommendedFor && (\n <div className=\"flex items-start gap-2.5 rounded-xl bg-primary/8 border border-primary/20 p-4 mb-4\">\n <UsersIcon className=\"h-4 w-4 text-primary mt-0.5 shrink-0\" />\n <p className=\"text-sm text-foreground font-ui\">\n <span className=\"font-semibold\">Recommended for: </span>\n {recommendedFor}\n </p>\n </div>\n )}\n <div className=\"text-sm text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline\">\n {overview}\n </div>\n </section>\n )}\n\n {/* Itinerary */}\n {itinerary && itinerary.length > 0 && (\n <section id=\"trip-section-itinerary\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">Itinerary</h2>\n <ItineraryTimeline steps={itinerary} />\n </section>\n )}\n\n {/* Included */}\n {included && included.length > 0 && (\n <section id=\"trip-section-included\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <PackageIcon className=\"h-5 w-5 text-primary\" />\n Included\n </h2>\n <Checklist items={included} />\n </section>\n )}\n\n {/* What to bring */}\n {whatToBring && whatToBring.length > 0 && (\n <section id=\"trip-section-what-to-bring\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <PackageIcon className=\"h-5 w-5 text-primary\" />\n What to bring\n </h2>\n <Checklist items={whatToBring} icon={<InfoIcon className=\"h-4 w-4\" />} />\n </section>\n )}\n\n {/* Weather */}\n {weather && (\n <section id=\"trip-section-weather\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <SunIcon className=\"h-5 w-5 text-primary\" />\n Weather\n </h2>\n <div className=\"flex items-start gap-3 rounded-xl bg-muted/60 border border-border p-5\">\n <div className=\"text-sm text-foreground leading-relaxed space-y-2 [&_strong]:font-semibold\">\n {weather}\n </div>\n </div>\n </section>\n )}\n\n {/* Meeting point */}\n {meetingPoints && meetingPoints.length > 0 && (\n <section id=\"trip-section-meeting\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <MapPinIcon className=\"h-5 w-5 text-primary\" />\n Meeting point\n </h2>\n <div className=\"space-y-3\">\n {meetingPoints.map((mp, i) => (\n <div key={i} className=\"flex items-start gap-3 rounded-xl border border-border p-4\">\n <div className=\"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary/10\">\n <MapPinIcon className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n {mp.type && (\n <p className=\"text-xs text-muted-foreground font-ui uppercase tracking-wide mb-0.5\">\n {mp.type === \"activity\" ? \"Activity location\" : mp.type === \"alternative\" ? \"Alternative meeting point\" : \"Meeting point\"}\n </p>\n )}\n <p className=\"text-sm font-bold text-foreground font-heading\">{mp.name}</p>\n <p className=\"text-xs text-muted-foreground font-ui mt-0.5\">{mp.address}</p>\n </div>\n </div>\n ))}\n </div>\n </section>\n )}\n\n {/* FAQ */}\n {faqs && faqs.length > 0 && (\n <section id=\"trip-section-faq\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">FAQ</h2>\n <Accordion variant=\"faq\">\n {faqs.map((faq, i) => (\n <AccordionItem key={i} value={`faq-${i}`}>\n <AccordionTrigger>{faq.question}</AccordionTrigger>\n <AccordionContent>{faq.answer}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </section>\n )}\n\n {/* Reviews */}\n {reviews && reviews.length > 0 && (\n <div>\n <Separator className=\"mb-10\" />\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-5\">What our guests think</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n {reviews.map((r, i) => (\n <div key={i} className=\"flex flex-col gap-3 rounded-xl border border-border p-5\">\n <Stars count={r.rating ?? 5} />\n <p className=\"text-sm text-foreground leading-relaxed line-clamp-4\">&ldquo;{r.text}&rdquo;</p>\n <p className=\"text-xs font-semibold text-muted-foreground font-ui mt-auto\">— {r.author}</p>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Sidebar — placeholder reserves space; inline when not yet floating */}\n <div ref={sidebarPlaceholderRef} className=\"hidden lg:block lg:w-72 xl:w-80 shrink-0\">\n {!isFloating && (\n <div className=\"sticky top-20 rounded-2xl border border-border bg-card p-6 shadow-sm\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n season={season}\n departureTimes={departureTimes}\n pricingOptions={pricingOptions}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Check availability\"}\n variant=\"card\"\n />\n </div>\n )}\n </div>\n </div>\n </div>{/* end constrained container */}\n\n {/* ── Nav — fixed when navFloating, slides in from top ───────────── */}\n {sections.length > 0 && (\n <div\n ref={navRef}\n className={cn(\n \"fixed top-0 left-0 right-0 z-20 py-3 transition-all duration-200\",\n navFloating && !navHidden\n ? \"translate-y-0 opacity-100\"\n : \"-translate-y-full opacity-0 pointer-events-none\"\n )}\n >\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6 flex justify-center\">\n <MenuTrip\n sections={sections}\n activeSection={activeSection}\n onSelect={scrollToSection}\n variant=\"floating\"\n />\n </div>\n </div>\n )}\n\n {/* ── Fixed sidebar — floats over gallery once user has scrolled ── */}\n {isFloating && !pricingBarVisible && sidebarPos && (\n <div\n className=\"hidden lg:block fixed z-20\"\n style={{ top: \"5rem\", left: sidebarPos.left, width: sidebarPos.width }}\n >\n <div className=\"rounded-2xl border border-border bg-card p-6 shadow-sm\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n season={season}\n departureTimes={departureTimes}\n pricingOptions={pricingOptions}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Check availability\"}\n variant=\"card\"\n />\n </div>\n </div>\n )}\n\n {/* ── Gallery — full viewport width, after all content ─────────── */}\n {gallery && gallery.length > 0 && (\n <section ref={galleryRef} id=\"trip-section-gallery\" className=\"scroll-mt-20\">\n <PhotoGallery\n photos={gallery}\n variant=\"grid\"\n initialVisible={6}\n />\n </section>\n )}\n\n {/* ── Booking form — appears after gallery, triggers sidebar hide ── */}\n {gallery && gallery.length > 0 && (\n <div ref={pricingBarRef} className=\"mx-auto w-full max-w-5xl px-4 sm:px-6 py-12\">\n <div id=\"trip-booking-form\" className=\"rounded-2xl border border-border bg-card p-8 shadow-sm\">\n <BookingForm onSubmit={onBook ? (values) => onBook() : undefined} />\n </div>\n </div>\n )}\n\n\n {/* ── Mobile booking bar — uses PricingTrip (compact) ──────────── */}\n <div className=\"fixed bottom-0 inset-x-0 z-30 lg:hidden border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Book now\"}\n variant=\"compact\"\n />\n </div>\n <div className=\"h-20 lg:hidden\" />\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type ActivityCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ActivityCardProps {\n /** URL da imagem de capa */\n image: string;\n imageAlt?: string;\n /** Texto do badge sobreposto na imagem (ex: \"Activity\", \"Tour\") */\n badge?: string;\n /** Ícone sobreposto no canto superior esquerdo da imagem */\n icon?: React.ReactNode;\n /** Título principal do card */\n title: string;\n /** Descrição curta */\n description?: string;\n /** Texto do botão de preço (ex: \"From CHF 63 .-\") */\n price?: string;\n /** Callback ao clicar no card */\n onClick?: () => void;\n /** Tamanho do card */\n size?: ActivityCardSize;\n className?: string;\n}\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\nconst sizeConfig: Record<\n ActivityCardSize,\n { card: string; image: string; title: string; description: string; price: string }\n> = {\n sm: {\n card: \"w-56\",\n image: \"h-36\",\n title: \"text-sm font-bold\",\n description: \"text-xs\",\n price: \"text-xs py-2\",\n },\n md: {\n card: \"w-72\",\n image: \"h-52\",\n title: \"text-base font-bold\",\n description: \"text-sm\",\n price: \"text-sm py-2.5\",\n },\n lg: {\n card: \"w-96\",\n image: \"h-64\",\n title: \"text-lg font-bold\",\n description: \"text-sm\",\n price: \"text-sm py-3\",\n },\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ActivityCard({\n image,\n imageAlt = \"\",\n badge,\n icon,\n title,\n description,\n price,\n onClick,\n size = \"md\",\n className,\n}: ActivityCardProps) {\n const s = sizeConfig[size];\n\n return (\n <div\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n onClick\n ? (e) => (e.key === \"Enter\" || e.key === \" \") && onClick()\n : undefined\n }\n className={cn(\n \"group flex flex-col overflow-hidden rounded-[1.25rem] bg-card\",\n \"border border-border shadow-md transition-shadow duration-200\",\n onClick && \"cursor-pointer hover:shadow-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n s.card,\n className\n )}\n >\n {/* Image area */}\n <div className={cn(\"relative w-full shrink-0 overflow-hidden\", s.image)}>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={imageAlt}\n className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n\n {/* Top-left icon */}\n {icon && (\n <div className=\"absolute left-3 top-3 flex h-8 w-8 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm\">\n {icon}\n </div>\n )}\n\n {/* Top-right badge */}\n {badge && (\n <div className=\"absolute right-3 top-3\">\n <Badge\n variant=\"secondary\"\n className=\"rounded-full bg-card/90 text-foreground backdrop-blur-sm shadow-sm border-0 font-medium font-ui\"\n >\n {badge}\n </Badge>\n </div>\n )}\n </div>\n\n {/* Content area */}\n <div className=\"flex flex-1 flex-col gap-2 p-4\">\n <p className={cn(\"text-foreground leading-snug font-ui\", s.title)}>{title}</p>\n\n {description && (\n <p className={cn(\"text-muted-foreground leading-relaxed\", s.description)}>\n {description}\n </p>\n )}\n\n {price && (\n <div className=\"mt-auto pt-2\">\n <div\n className={cn(\n \"w-full rounded-full bg-muted text-center font-semibold text-foreground font-ui\",\n s.price\n )}\n >\n {price}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\";\n\nimport { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { XIcon, SendIcon, CheckCircleIcon, Loader2Icon } from \"lucide-react\";\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface LeadCapturePopupConfig {\n /** Hero image URL displayed at the top of the popup */\n imageUrl?: string;\n /** Main heading text */\n heading?: string;\n /** Subtitle / supporting text below the heading */\n subtitle?: string;\n /** Label for the name field */\n nameLabel?: string;\n /** Placeholder for the name field */\n namePlaceholder?: string;\n /** Label for the email field */\n emailLabel?: string;\n /** Placeholder for the email field */\n emailPlaceholder?: string;\n /** Label for the travel date question */\n travelDateLabel?: string;\n /** Options for the travel date dropdown */\n travelDateOptions?: string[];\n /** Submit button text */\n submitLabel?: string;\n /** Success heading after submission */\n successHeading?: string;\n /** Success message after submission */\n successMessage?: string;\n /** Privacy disclaimer text (supports basic HTML) */\n privacyText?: string;\n\n /* --- Trigger settings --- */\n /** Trigger type: \"delay\" | \"exit_intent\" | \"scroll\" */\n trigger?: \"delay\" | \"exit_intent\" | \"scroll\";\n /** Delay in seconds before showing (for \"delay\" trigger) */\n delaySeconds?: number;\n /** Scroll percentage to trigger (for \"scroll\" trigger) */\n scrollPercent?: number;\n /** Days to suppress popup after dismissal (cookie) */\n dismissDays?: number;\n\n /* --- Style overrides --- */\n /** Accent color override (hex or CSS color) */\n accentColor?: string;\n /** Overlay opacity 0-100 */\n overlayOpacity?: number;\n /** Position: \"center\" | \"bottom-right\" */\n position?: \"center\" | \"bottom-right\";\n\n /* --- Submission --- */\n /** REST endpoint to POST form data to */\n ajaxUrl?: string;\n /** WordPress nonce for the AJAX request */\n nonce?: string;\n}\n\nconst DEFAULTS: Required<\n Pick<\n LeadCapturePopupConfig,\n | \"heading\"\n | \"subtitle\"\n | \"nameLabel\"\n | \"namePlaceholder\"\n | \"emailLabel\"\n | \"emailPlaceholder\"\n | \"travelDateLabel\"\n | \"travelDateOptions\"\n | \"submitLabel\"\n | \"successHeading\"\n | \"successMessage\"\n | \"privacyText\"\n | \"trigger\"\n | \"delaySeconds\"\n | \"scrollPercent\"\n | \"dismissDays\"\n | \"overlayOpacity\"\n | \"position\"\n >\n> = {\n heading: \"Where will your next adventure take you?\",\n subtitle:\n \"Tell us about your dream trip and our travel experts will craft the perfect itinerary for you.\",\n nameLabel: \"Your name\",\n namePlaceholder: \"e.g. Maria Silva\",\n emailLabel: \"Email\",\n emailPlaceholder: \"you@example.com\",\n travelDateLabel: \"When are you planning to travel?\",\n travelDateOptions: [\n \"In the next 30 days\",\n \"1 – 3 months from now\",\n \"3 – 6 months from now\",\n \"6 – 12 months from now\",\n \"I'm just exploring\",\n ],\n submitLabel: \"Send my request\",\n successHeading: \"Thank you!\",\n successMessage:\n \"One of our travel experts will reach out soon to help plan your perfect trip.\",\n privacyText:\n 'By submitting you agree to our <a href=\"/privacy-policy\" target=\"_blank\" rel=\"noopener\">Privacy Policy</a>.',\n trigger: \"delay\",\n delaySeconds: 5,\n scrollPercent: 50,\n dismissDays: 7,\n overlayOpacity: 40,\n position: \"center\",\n};\n\n/* ------------------------------------------------------------------ */\n/* Cookie helpers */\n/* ------------------------------------------------------------------ */\n\nconst COOKIE_NAME = \"pexo_lead_popup_dismissed\";\n\nfunction isDismissed(): boolean {\n return document.cookie.includes(`${COOKIE_NAME}=1`);\n}\n\nfunction setDismissed(days: number): void {\n const expires = new Date(Date.now() + days * 86400000).toUTCString();\n document.cookie = `${COOKIE_NAME}=1; expires=${expires}; path=/; SameSite=Lax`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function LeadCapturePopup({\n config: _config,\n}: {\n config: LeadCapturePopupConfig;\n}) {\n const config = { ...DEFAULTS, ..._config };\n\n const [open, setOpen] = useState(false);\n const [closing, setClosing] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const [name, setName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [travelDate, setTravelDate] = useState(\"\");\n\n const panelRef = useRef<HTMLDivElement>(null);\n const nameRef = useRef<HTMLInputElement>(null);\n\n /* ---- Trigger logic ---- */\n const show = useCallback(() => {\n if (isDismissed()) return;\n setOpen(true);\n }, []);\n\n useEffect(() => {\n if (isDismissed()) return;\n\n if (config.trigger === \"delay\") {\n const t = setTimeout(show, (config.delaySeconds ?? 5) * 1000);\n return () => clearTimeout(t);\n }\n\n if (config.trigger === \"exit_intent\") {\n const handler = (e: MouseEvent) => {\n if (e.clientY <= 5) show();\n };\n document.addEventListener(\"mouseout\", handler);\n return () => document.removeEventListener(\"mouseout\", handler);\n }\n\n if (config.trigger === \"scroll\") {\n const handler = () => {\n const pct =\n (window.scrollY /\n (document.documentElement.scrollHeight - window.innerHeight)) *\n 100;\n if (pct >= (config.scrollPercent ?? 50)) {\n show();\n window.removeEventListener(\"scroll\", handler);\n }\n };\n window.addEventListener(\"scroll\", handler, { passive: true });\n return () => window.removeEventListener(\"scroll\", handler);\n }\n }, [config.trigger, config.delaySeconds, config.scrollPercent, show]);\n\n /* ---- Focus trap on open ---- */\n useEffect(() => {\n if (open && !submitted) {\n requestAnimationFrame(() => nameRef.current?.focus());\n }\n }, [open, submitted]);\n\n /* ---- Close with animation ---- */\n const close = useCallback(() => {\n setClosing(true);\n setDismissed(config.dismissDays);\n setTimeout(() => {\n setOpen(false);\n setClosing(false);\n }, 250);\n }, [config.dismissDays]);\n\n /* ---- ESC key ---- */\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") close();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [open, close]);\n\n /* ---- Overlay click ---- */\n const onOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close]\n );\n\n /* ---- Submit ---- */\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n if (!name.trim() || !email.trim() || !travelDate) {\n setError(\"Please fill in all fields.\");\n return;\n }\n\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n setError(\"Please enter a valid email address.\");\n return;\n }\n\n setSubmitting(true);\n\n try {\n if (config.ajaxUrl) {\n const res = await fetch(config.ajaxUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n name: name.trim(),\n email: email.trim(),\n travel_date: travelDate,\n nonce: config.nonce ?? \"\",\n }),\n });\n if (!res.ok) throw new Error(\"Server error\");\n }\n setSubmitted(true);\n setDismissed(config.dismissDays);\n } catch {\n setError(\"Something went wrong. Please try again.\");\n } finally {\n setSubmitting(false);\n }\n };\n\n if (!open) return null;\n\n /* ---- Accent color CSS variable ---- */\n const accentStyle = config.accentColor\n ? ({ \"--popup-accent\": config.accentColor } as React.CSSProperties)\n : undefined;\n\n const isCenter = config.position === \"center\";\n\n return (\n <div\n className={cn(\n \"pexo-lead-popup fixed inset-0 z-[99999] flex\",\n isCenter ? \"items-center justify-center\" : \"items-end justify-end\",\n closing ? \"animate-fade-out\" : \"animate-fade-in\"\n )}\n style={{\n backgroundColor: `rgba(0,0,0,${(config.overlayOpacity ?? 40) / 100})`,\n backdropFilter: \"blur(4px)\",\n WebkitBackdropFilter: \"blur(4px)\",\n }}\n onClick={onOverlayClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={config.heading}\n >\n <div\n ref={panelRef}\n className={cn(\n \"relative flex flex-col overflow-hidden bg-background text-foreground shadow-2xl ring-1 ring-foreground/5\",\n isCenter\n ? \"m-4 w-full max-w-md rounded-2xl sm:max-w-lg\"\n : \"m-4 w-full max-w-sm rounded-2xl sm:m-6\",\n closing\n ? isCenter\n ? \"animate-zoom-out\"\n : \"animate-slide-out-right\"\n : isCenter\n ? \"animate-zoom-in\"\n : \"animate-slide-in-right\"\n )}\n style={accentStyle}\n >\n {/* ---- Close button ---- */}\n <button\n onClick={close}\n className=\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm transition-colors hover:bg-black/50\"\n aria-label=\"Close\"\n >\n <XIcon className=\"h-4 w-4\" />\n </button>\n\n {/* ---- Hero image ---- */}\n {config.imageUrl && (\n <div className=\"relative h-44 w-full shrink-0 overflow-hidden sm:h-52\">\n <img\n src={config.imageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n loading=\"eager\"\n />\n {/* Gradient overlay for text readability */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/50 to-transparent\" />\n </div>\n )}\n\n {/* ---- Body ---- */}\n <div className=\"flex flex-1 flex-col gap-5 p-5 sm:p-6\">\n {!submitted ? (\n <>\n {/* Heading */}\n <div className=\"space-y-1.5\">\n <h2 className=\"font-heading text-lg font-bold leading-tight tracking-tight text-foreground sm:text-xl\">\n {config.heading}\n </h2>\n {config.subtitle && (\n <p className=\"text-sm leading-relaxed text-muted-foreground\">\n {config.subtitle}\n </p>\n )}\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n {/* Name */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-name\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.nameLabel}\n </Label>\n <Input\n ref={nameRef}\n id=\"pexo-lead-name\"\n type=\"text\"\n placeholder={config.namePlaceholder}\n value={name}\n onChange={(e) => setName(e.target.value)}\n autoComplete=\"name\"\n className=\"h-10 rounded-lg border-border/60 bg-muted/30 px-3 text-sm focus-visible:border-primary focus-visible:ring-primary/30\"\n />\n </div>\n\n {/* Email */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-email\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.emailLabel}\n </Label>\n <Input\n id=\"pexo-lead-email\"\n type=\"email\"\n placeholder={config.emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n autoComplete=\"email\"\n className=\"h-10 rounded-lg border-border/60 bg-muted/30 px-3 text-sm focus-visible:border-primary focus-visible:ring-primary/30\"\n />\n </div>\n\n {/* Travel date */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-travel\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.travelDateLabel}\n </Label>\n <select\n id=\"pexo-lead-travel\"\n value={travelDate}\n onChange={(e) => setTravelDate(e.target.value)}\n className={cn(\n \"h-10 w-full appearance-none rounded-lg border border-border/60 bg-muted/30 px-3 text-sm text-foreground outline-none transition-colors\",\n \"focus-visible:border-primary focus-visible:ring-3 focus-visible:ring-primary/30\",\n !travelDate && \"text-muted-foreground\"\n )}\n style={{\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"right 0.75rem center\",\n paddingRight: \"2.5rem\",\n }}\n >\n <option value=\"\" disabled>\n Select a timeframe…\n </option>\n {config.travelDateOptions.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </div>\n\n {/* Error */}\n {error && (\n <p className=\"text-xs font-medium text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n\n {/* Submit */}\n <Button\n type=\"submit\"\n disabled={submitting}\n className={cn(\n \"h-11 w-full gap-2 rounded-lg text-sm font-bold tracking-wide\",\n config.accentColor\n ? \"border-transparent text-white\"\n : \"bg-primary text-primary-foreground hover:bg-primary/90\"\n )}\n style={\n config.accentColor\n ? { backgroundColor: config.accentColor }\n : undefined\n }\n >\n {submitting ? (\n <Loader2Icon className=\"h-4 w-4 animate-spin\" />\n ) : (\n <SendIcon className=\"h-4 w-4\" />\n )}\n {submitting ? \"Sending…\" : config.submitLabel}\n </Button>\n\n {/* Privacy text */}\n {config.privacyText && (\n <p\n className=\"text-center text-[11px] leading-relaxed text-muted-foreground [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:text-foreground\"\n dangerouslySetInnerHTML={{ __html: config.privacyText }}\n />\n )}\n </form>\n </>\n ) : (\n /* ---- Success state ---- */\n <div className=\"flex flex-1 flex-col items-center justify-center gap-4 py-8 text-center\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-full bg-primary/10\">\n <CheckCircleIcon className=\"h-8 w-8 text-primary\" />\n </div>\n <div className=\"space-y-1.5\">\n <h2 className=\"font-heading text-lg font-bold text-foreground\">\n {config.successHeading}\n </h2>\n <p className=\"text-sm leading-relaxed text-muted-foreground\">\n {config.successMessage}\n </p>\n </div>\n <Button\n onClick={close}\n variant=\"outline\"\n className=\"mt-2 h-10 px-6 text-sm\"\n >\n Close\n </Button>\n </div>\n )}\n </div>\n </div>\n\n {/* ---- Scoped keyframe animations ---- */}\n <style>{`\n @keyframes pexo-fade-in { from { opacity: 0 } to { opacity: 1 } }\n @keyframes pexo-fade-out { from { opacity: 1 } to { opacity: 0 } }\n @keyframes pexo-zoom-in { from { opacity: 0; transform: scale(0.92) } to { opacity: 1; transform: scale(1) } }\n @keyframes pexo-zoom-out { from { opacity: 1; transform: scale(1) } to { opacity: 0; transform: scale(0.92) } }\n @keyframes pexo-slide-in-right { from { opacity: 0; transform: translateX(100%) } to { opacity: 1; transform: translateX(0) } }\n @keyframes pexo-slide-out-right { from { opacity: 1; transform: translateX(0) } to { opacity: 0; transform: translateX(100%) } }\n\n .pexo-lead-popup .animate-fade-in { animation: pexo-fade-in 0.3s ease-out both }\n .pexo-lead-popup .animate-fade-out { animation: pexo-fade-out 0.25s ease-in both }\n .pexo-lead-popup .animate-zoom-in { animation: pexo-zoom-in 0.35s cubic-bezier(0.16,1,0.3,1) both }\n .pexo-lead-popup .animate-zoom-out { animation: pexo-zoom-out 0.25s ease-in both }\n .pexo-lead-popup .animate-slide-in-right { animation: pexo-slide-in-right 0.4s cubic-bezier(0.16,1,0.3,1) both }\n .pexo-lead-popup .animate-slide-out-right { animation: pexo-slide-out-right 0.3s ease-in both }\n\n /* Ensure popup fonts inherit from design system */\n .pexo-lead-popup { font-family: var(--font-sans, \"Literata\", Georgia, serif); }\n .pexo-lead-popup h1, .pexo-lead-popup h2, .pexo-lead-popup h3 { font-family: var(--font-heading, \"ArcaMajora3\", sans-serif); }\n .pexo-lead-popup button, .pexo-lead-popup label { font-family: var(--font-ui, \"ArcaMajora3\", sans-serif); }\n .pexo-lead-popup select { font-family: var(--font-sans, \"Literata\", Georgia, serif); }\n `}</style>\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/CountrySearchField.tsx","../src/components/Offer.tsx","../src/components/BookingDetails.tsx","../src/components/BookingConfirmation.tsx","../src/components/BookingConfirmationEmail.tsx","../src/components/CounterField.tsx","../src/components/ui/popover.tsx","../src/components/DatePickerField.tsx","../src/components/BookingForm.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/accordion.tsx","../src/components/FilterPanel.tsx","../src/components/Itinerary.tsx","../src/components/MenuTrip.tsx","../src/components/PhotoGallery.tsx","../src/components/ui/badge.tsx","../src/components/PricingTrip.tsx","../src/components/SiteHeader.tsx","../src/components/ThemeToggle.tsx","../src/components/TripCard.tsx","../src/components/TripHeader.tsx","../src/components/TripPage.tsx","../src/components/ActivityCard.tsx","../src/components/Alert.tsx","../src/components/PaymentModalShell.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/LeadCapturePopup.tsx"],"names":["SeparatorPrimitive","jsx","ButtonPrimitive","DialogPrimitive","_a","_b","className","props","React","React2","jsxs","React3","ChevronDownIcon","React4","React5","XIcon","Fragment","ChevronRightIcon","React6","MapPinIcon","CalendarIcon","CheckIcon","UsersIcon","DEFAULT_LABELS","DEFAULT_LOGO","PlusIcon","PopoverPrimitive","React7","format","React8","CheckboxPrimitive","React9","AccordionPrimitive","ChevronUpIcon","MinusIcon","React10","React11","ChevronLeftIcon","React12","React13","cva","React14","React15","SearchIcon","React16","React17","MoonIcon","SunIcon","ClockIcon","sizeConfig","InputPrimitive","useState","useRef","useCallback","useEffect","e"],"mappings":"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","file":"index.js","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 { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface CountryOption {\n code: string;\n name: string;\n}\n\nexport interface CountrySearchFieldProps {\n value: string;\n onChange: (code: string) => void;\n required?: boolean;\n label?: string;\n countries?: CountryOption[];\n placeholder?: string;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Default country list\n ----------------------------------------------------------------------- */\n\nexport const COUNTRIES: CountryOption[] = [\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];\n\n/* -----------------------------------------------------------------------\n CountrySearchField\n ----------------------------------------------------------------------- */\n\nexport function CountrySearchField({\n value,\n onChange,\n required,\n label = \"Country\",\n countries,\n placeholder = \"Search country…\",\n className,\n}: CountrySearchFieldProps) {\n const list = countries ?? COUNTRIES;\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 = list.find((c) => c.code === value);\n const isFloated = open || !!selected;\n\n const filtered = query.trim()\n ? list.filter((c) => c.name.toLowerCase().includes(query.toLowerCase()))\n : list;\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={cn(\"relative w-full\", className)}>\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 {label}{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={placeholder}\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","\"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} 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\";\nimport { CountrySearchField, COUNTRIES } from \"./CountrySearchField\";\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 /** Uncontrolled: estado inicial gerenciado internamente pelo DS. */\n defaultChecked?: boolean;\n /** Controlled: quando presente, o host app é dono do estado de seleção. */\n checked?: boolean;\n /** Controlled: chamado ao marcar/desmarcar. Ignorado se `checked` não for passado. */\n onCheckedChange?: (id: string, checked: boolean) => void;\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 * @deprecated Prefira `checkoutSlot` para manter o padrão visual do DS. */\n externalBookingFlow?: boolean;\n /** Conteúdo de checkout do host app. Quando presente, substitui o BookingWizard interno:\n * o sumário some e este slot aparece no lugar — mesmo comportamento visual do DS. */\n checkoutSlot?: React.ReactNode;\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 isControlled = adventure.optionals?.some((o) => o.onCheckedChange !== undefined) ?? false;\n\n const [checkedInternal, setCheckedInternal] = React.useState<Set<string>>(\n new Set(adventure.optionals?.filter((o) => o.defaultChecked).map((o) => o.id) ?? [])\n );\n\n const isChecked = (opt: OfferOptionalItem) =>\n isControlled ? (opt.checked ?? false) : checkedInternal.has(opt.id);\n\n const toggleOptional = (opt: OfferOptionalItem) => {\n if (isControlled) {\n opt.onCheckedChange?.(opt.id, !opt.checked);\n } else {\n setCheckedInternal((prev) => {\n const next = new Set(prev);\n next.has(opt.id) ? next.delete(opt.id) : next.add(opt.id);\n return next;\n });\n }\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={isChecked(opt)}\n onChange={() => toggleOptional(opt)}\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/* CountrySearchField + COUNTRIES imported from ./CountrySearchField */\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 Exported: BookingShell — shell visual do checkout (card + step indicator + navegação)\n Host apps injetam o conteúdo real de cada etapa via children.\n ----------------------------------------------------------------------- */\n\nexport interface BookingShellProps {\n /** Labels de cada etapa, em ordem */\n steps: string[];\n /** Índice 0-based da etapa atual */\n currentStep: number;\n /** Título exibido no cabeçalho */\n title?: string;\n /** Conteúdo da etapa atual */\n children: React.ReactNode;\n onNext?: () => void;\n onBack?: () => void;\n onCancel?: () => void;\n nextLabel?: string;\n backLabel?: string;\n cancelLabel?: string;\n nextDisabled?: boolean;\n nextBlockedMessage?: string | null;\n error?: string | null;\n successMessage?: string | null;\n}\n\nexport function BookingShell({\n steps,\n currentStep,\n title = \"Booking details\",\n children,\n onNext,\n onBack,\n onCancel,\n nextLabel = \"Next\",\n backLabel = \"Back\",\n cancelLabel = \"Cancel\",\n nextDisabled,\n nextBlockedMessage,\n error,\n successMessage,\n}: BookingShellProps) {\n return (\n <div className=\"rounded-2xl border border-border bg-card overflow-hidden\">\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\">{title}</h3>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {steps.map((label, i) => (\n <React.Fragment key={i}>\n <span\n className={cn(\n \"text-xs font-sans\",\n i === currentStep\n ? \"text-primary font-semibold\"\n : i < currentStep\n ? \"text-foreground\"\n : \"text-muted-foreground\"\n )}\n >\n {label}\n </span>\n {i < 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 <div>{children}</div>\n\n {error && (\n <p className=\"text-sm text-destructive font-sans\">{error}</p>\n )}\n\n {successMessage && (\n <div className=\"text-sm font-sans rounded-lg px-3 py-2 bg-primary/10 border border-primary/30 text-primary\">\n {successMessage}\n </div>\n )}\n\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-3\">\n {currentStep > 0 && (\n <button\n type=\"button\"\n onClick={onBack}\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 {backLabel}\n </button>\n )}\n <button\n type=\"button\"\n onClick={onNext}\n disabled={nextDisabled}\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 nextDisabled && \"opacity-50 pointer-events-none\"\n )}\n >\n {nextLabel}\n </button>\n </div>\n {nextDisabled && nextBlockedMessage && (\n <div className=\"text-xs text-amber-400 bg-amber-500/10 border border-amber-500/30 rounded-lg px-3 py-2\">\n {nextBlockedMessage}\n </div>\n )}\n {currentStep === 0 && onCancel && (\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 {cancelLabel}\n </button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Exported: PaymentAmountSelector — deposit vs full amount selection\n ----------------------------------------------------------------------- */\n\nexport interface PaymentAmountSelectorProps {\n title?: string;\n depositLabel: string;\n fullLabel: string;\n value: \"deposit\" | \"full\";\n onChange: (value: \"deposit\" | \"full\") => void;\n}\n\nexport function PaymentAmountSelector({\n title = \"What do you want to pay now?\",\n depositLabel,\n fullLabel,\n value,\n onChange,\n}: PaymentAmountSelectorProps) {\n return (\n <div className=\"flex flex-col gap-2\">\n <p className=\"text-sm font-bold text-foreground font-heading\">{title}</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={() => onChange(opt)}\n className={cn(\n \"rounded-lg border-2 px-4 py-3 text-sm text-left font-sans transition-colors\",\n value === 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\n/* -----------------------------------------------------------------------\n Exported: PaymentMethodSelector — radio-style list of payment methods\n ----------------------------------------------------------------------- */\n\nexport interface PaymentMethodOption {\n id: string;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface PaymentMethodSelectorProps {\n title?: string;\n methods: PaymentMethodOption[];\n value: string;\n onChange: (value: string) => void;\n}\n\nexport function PaymentMethodSelector({\n title = \"Payment method\",\n methods,\n value,\n onChange,\n}: PaymentMethodSelectorProps) {\n return (\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 {title}\n </p>\n <div className=\"flex flex-col gap-2\">\n {methods.map((m) => (\n <button\n key={m.id}\n type=\"button\"\n disabled={m.disabled}\n onClick={() => !m.disabled && onChange(m.id)}\n className={cn(\n \"flex items-start gap-3 rounded-lg border-2 px-4 py-3 text-left transition-colors\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n value === m.id\n ? \"border-primary bg-primary/5\"\n : \"border-border bg-background hover:border-primary/40\"\n )}\n >\n <span\n className={cn(\n \"mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors\",\n value === m.id ? \"border-primary\" : \"border-border\"\n )}\n >\n {value === m.id && <span className=\"h-2 w-2 rounded-full bg-primary\" />}\n </span>\n <span className=\"flex flex-col gap-0.5\">\n <span\n className={cn(\n \"text-sm font-semibold font-sans\",\n value === m.id ? \"text-primary\" : \"text-foreground\"\n )}\n >\n {m.label}\n </span>\n {m.description && (\n <span className=\"text-xs text-muted-foreground font-sans\">{m.description}</span>\n )}\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Exported: TermsSection — checkbox + label slot + optional warning\n ----------------------------------------------------------------------- */\n\nexport interface TermsSectionProps {\n title?: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n /** Conteúdo do label — pode incluir links/botões do host app */\n label: React.ReactNode;\n /** Mensagem de aviso exibida quando não marcado */\n warningMessage?: string | null;\n}\n\nexport function TermsSection({\n title = \"Terms and conditions\",\n checked,\n onChange,\n label,\n warningMessage,\n}: TermsSectionProps) {\n return (\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 {title}\n </p>\n <label className=\"flex items-start gap-2.5 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={(e) => onChange(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\">{label}</span>\n </label>\n {!checked && warningMessage && (\n <p className=\"text-xs text-amber-400 flex items-center gap-1\">{warningMessage}</p>\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 <BookingShell\n steps={WIZARD_STEPS.map((s) => s.label)}\n currentStep={stepIndex}\n title=\"Booking details\"\n onNext={goNext}\n onBack={goPrev}\n onCancel={onCancel}\n nextLabel={step === \"payment\" ? \"Confirm booking\" : \"Next\"}\n backLabel=\"Back\"\n cancelLabel=\"Cancel\"\n error={error}\n >\n <div className=\"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 {depositInfo && (\n <PaymentAmountSelector\n depositLabel={depositLabel}\n fullLabel={fullLabel}\n value={payAmount}\n onChange={setPayAmount}\n />\n )}\n\n <PaymentMethodSelector\n methods={[\n { id: \"stripe\", label: \"Credit / Debit card\", description: \"Secure payment via Stripe\" },\n { id: \"pix\", label: \"PIX\", description: \"Instant transfer — Brazil only\" },\n { id: \"bank\", label: \"Bank transfer\", description: \"Wire / TED / DOC\" },\n ]}\n value={payMethod}\n onChange={(v) => setPayMethod(v as typeof payMethod)}\n />\n\n <TermsSection\n checked={termsAccepted}\n onChange={setTermsAccepted}\n label={\n <>\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 </>\n }\n />\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 (&quot;Terms&quot;) govern the booking of travel experiences\n offered through Planeta EXO (&quot;Company&quot;). 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&apos;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 </div>\n </BookingShell>\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 checkoutSlot,\n summaryNotesSlot,\n summaryDiscountLine,\n continueDisabled,\n className,\n}: OfferProps) {\n // Usado apenas quando não há checkoutSlot (wizard interno ou externalBookingFlow legado).\n const [showBooking, setShowBooking] = React.useState(false);\n\n // Checkout visível se o host app passou um slot OU se o wizard interno foi ativado.\n const isShowingCheckout = !!checkoutSlot || showBooking;\n\n const handleBook = () => {\n // checkoutSlot: host app controla a exibição via prop — DS não precisa gerenciar estado.\n // wizard interno: DS gerencia showBooking.\n // externalBookingFlow legado: apenas dispara onContinue.\n if (!checkoutSlot && !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 — some quando o checkout está visível */}\n {!isShowingCheckout && (\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 {/* Checkout: slot do host app (com sua lógica real) ou wizard interno (demo) */}\n {isShowingCheckout && (\n checkoutSlot ?? (\n <BookingWizard\n adventures={adventures}\n total={total}\n depositInfo={depositInfo}\n onCancel={() => setShowBooking(false)}\n />\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 — some quando o checkout está visível */}\n {!isShowingCheckout && (\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","import { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface BookingConfirmationLabels {\n ctaButton?: string;\n logoAlt?: string;\n greeting?: (recipientName: string) => string;\n confirmationMessage?: string;\n detailsIntro?: string;\n nextStepsHeading?: string;\n nextSteps?: [string, string, string];\n bookingSummaryHeading?: string;\n bookingNumberLabel?: string;\n adventuresLabel?: string;\n totalTravellersLabel?: string;\n agentLabel?: string;\n adultsUnit?: string;\n childrenUnit?: string;\n travellersLabel?: string;\n childBadge?: string;\n itineraryLabel?: string;\n includedLabel?: string;\n notIncludedLabel?: string;\n pricingLabel?: string;\n subtotalLabel?: string;\n totalLabel?: string;\n paymentSummaryHeading?: string;\n paymentDetailsHeading?: string;\n depositLabel?: (percent: number) => string;\n remainingBalanceLabel?: string;\n balanceDueLabel?: string;\n paidInFullLabel?: string;\n footerMessage?: string;\n footerContact?: (agent: string) => string;\n}\n\nconst DEFAULT_LABELS: Required<BookingConfirmationLabels> = {\n ctaButton: \"View booking details\",\n logoAlt: \"PlanetaEXO\",\n greeting: (recipientName: string) => `Hi ${recipientName},`,\n confirmationMessage:\n \"Great news \\u2014 your booking has been confirmed! Everything is set and we\\u2019re getting ready for your adventure.\",\n detailsIntro:\n \"Below you\\u2019ll find the full details of your reservation, including the adventures, travellers, and payment summary.\",\n nextStepsHeading: \"\\uD83D\\uDCCB Next Steps\",\n nextSteps: [\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 ],\n bookingSummaryHeading: \"\\uD83D\\uDCDD Booking Summary\",\n bookingNumberLabel: \"Booking Number\",\n adventuresLabel: \"Adventures\",\n totalTravellersLabel: \"Total Travellers\",\n agentLabel: \"Agent\",\n adultsUnit: \"adult(s)\",\n childrenUnit: \"child(ren)\",\n travellersLabel: \"Travellers\",\n childBadge: \"child\",\n itineraryLabel: \"Itinerary\",\n includedLabel: \"O que est\\u00e1 incluso\",\n notIncludedLabel: \"O que n\\u00e3o est\\u00e1 incluso\",\n pricingLabel: \"Pricing\",\n subtotalLabel: \"Subtotal\",\n totalLabel: \"Total\",\n paymentSummaryHeading: \"\\uD83D\\uDCB0 Payment Summary\",\n paymentDetailsHeading: \"Payment Details\",\n depositLabel: (percent: number) => `Deposit (${percent}%)`,\n remainingBalanceLabel: \"Remaining balance\",\n balanceDueLabel: \"Balance due\",\n paidInFullLabel: \"\\u2705 Paid in full\",\n footerMessage:\n \"All travellers have been registered for this booking. Each person will receive a separate email with their individual details and any pre-departure information.\",\n footerContact: (agent: string) =>\n `If you have any questions, just reply to this email or contact ${agent} \\u2014 happy to help.`,\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 /** Optional label overrides for i18n */\n labels?: Partial<BookingConfirmationLabels>;\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 labels,\n className,\n}: BookingConfirmationProps) {\n const l = { ...DEFAULT_LABELS, ...labels };\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 {l.ctaButton}\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 {l.ctaButton}\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={l.logoAlt}\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\">{l.greeting(recipientName)}</p>\n\n <p className=\"mb-5 text-base\">\n {l.confirmationMessage}\n </p>\n\n <p className=\"mb-8 text-base\">\n {l.detailsIntro}\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 {l.nextStepsHeading}\n </p>\n <div className=\"rounded-xl border border-border p-5 flex flex-col gap-4\">\n {l.nextSteps.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 {l.bookingSummaryHeading}\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 {l.bookingNumberLabel}\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 {l.adventuresLabel}\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 {l.totalTravellersLabel}\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 {l.agentLabel}\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} ${l.adultsUnit}` : null,\n adventure.slots.children ? `${adventure.slots.children} ${l.childrenUnit}` : 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 {l.travellersLabel}\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 {l.childBadge}\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 {l.itineraryLabel}\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 {l.includedLabel}\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 {l.notIncludedLabel}\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 {l.pricingLabel}\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 {l.subtotalLabel}\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 {l.paymentSummaryHeading}\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 {l.subtotalLabel}\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 {l.totalLabel}\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 {l.paymentDetailsHeading}\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 {l.depositLabel(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 {l.remainingBalanceLabel}\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 {l.balanceDueLabel}\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 {l.paidInFullLabel}\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 {l.footerMessage}\n </p>\n\n <p className=\"text-base\">\n {l.footerContact(agent)}\n </p>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport interface BookingConfirmationEmailLabels {\n ctaButton?: string;\n logoAlt?: string;\n greeting?: (recipientName: string) => string;\n thankYouMessage?: string;\n addTravellersInstruction?: string;\n summaryHeading?: string;\n bookingNumberLabel?: string;\n activityLabel?: string;\n adventureLabel?: string;\n startingDateLabel?: string;\n numberOfPeopleLabel?: string;\n hostLabel?: string;\n postCtaMessage?: string;\n closingMessage?: string;\n}\n\nconst DEFAULT_LABELS: Required<BookingConfirmationEmailLabels> = {\n ctaButton: \"Add travellers to your booking\",\n logoAlt: \"PlanetaEXO\",\n greeting: (recipientName: string) => `Hi ${recipientName},`,\n thankYouMessage:\n \"Thank you for booking your adventure with PlanetaEXO \\u2014 we\\u2019re really looking forward to your adventure.\",\n addTravellersInstruction:\n \"To move forward, the first step is to add all travellers included in your booking. Once you do this, each person \\u2014 including you \\u2014 will receive an email with a link to complete their individual registration.\",\n summaryHeading: \"\\uD83D\\uDCDD Here\\u2019s a quick summary of your booking:\",\n bookingNumberLabel: \"Booking Number:\",\n activityLabel: \"Activity:\",\n adventureLabel: \"Adventure:\",\n startingDateLabel: \"Starting Date:\",\n numberOfPeopleLabel: \"Number of People:\",\n hostLabel: \"Host:\",\n postCtaMessage:\n \"After adding everyone, you will also receive your own registration email, just like the other travellers. Please make sure everyone completes this step so we can organise everything properly.\",\n closingMessage:\n \"If you have any questions, just reply to this email \\u2014 happy to help.\",\n};\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 /** Optional label overrides for i18n */\n labels?: Partial<BookingConfirmationEmailLabels>;\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 labels,\n className,\n}: BookingConfirmationEmailProps) {\n const l = { ...DEFAULT_LABELS, ...labels };\n\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 {l.ctaButton}\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 {l.ctaButton}\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={l.logoAlt}\n className=\"h-[70px] w-auto object-contain\"\n />\n </div>\n\n <p className=\"mb-4\">{l.greeting(recipientName)}</p>\n\n <p className=\"mb-4\">\n {l.thankYouMessage}\n </p>\n\n <p className=\"mb-4\">\n {l.addTravellersInstruction}\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 {l.summaryHeading}\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 {l.bookingNumberLabel}\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 {l.activityLabel}\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 {l.adventureLabel}\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 {l.startingDateLabel}\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 {l.numberOfPeopleLabel}\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\">{l.hostLabel}</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 {l.postCtaMessage}\n </p>\n\n <p>\n {l.closingMessage}\n </p>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { MinusIcon, PlusIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CounterFieldProps {\n label: string;\n sublabel?: string;\n required?: boolean;\n value: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n className?: string;\n}\n\nexport function CounterField({\n label,\n sublabel,\n required,\n value,\n min = 0,\n max = 99,\n onChange,\n className,\n}: CounterFieldProps) {\n const decrement = () => {\n if (value > min) onChange(value - 1);\n };\n\n const increment = () => {\n if (value < max) onChange(value + 1);\n };\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n <label className=\"text-sm font-ui text-foreground\">\n {label}\n {sublabel && (\n <span className=\"text-muted-foreground font-normal ml-1\">{sublabel}</span>\n )}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </label>\n\n <div className=\"flex items-center justify-between rounded-lg border border-border bg-background px-4 py-3 h-14\">\n <span className=\"text-xl font-semibold text-foreground tabular-nums w-8 font-ui\">\n {value}\n </span>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={decrement}\n disabled={value <= min}\n aria-label={`Diminuir ${label}`}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-border\",\n \"text-foreground transition-colors\",\n \"hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-30\"\n )}\n >\n <MinusIcon className=\"h-3.5 w-3.5\" />\n </button>\n\n <button\n type=\"button\"\n onClick={increment}\n disabled={value >= max}\n aria-label={`Aumentar ${label}`}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-border\",\n \"text-foreground transition-colors\",\n \"hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:pointer-events-none disabled:opacity-30\"\n )}\n >\n <PlusIcon className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({ ...props }: PopoverPrimitive.Root.Props) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n ...props\n}: PopoverPrimitive.Popup.Props &\n Pick<\n PopoverPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n \"z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-lg bg-popover p-2.5 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 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 </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-0.5 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn(\"font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: PopoverPrimitive.Description.Props) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface DatePickerFieldProps {\n label: string;\n required?: boolean;\n value?: Date;\n onChange?: (date: Date | undefined) => void;\n placeholder?: string;\n disabled?: boolean;\n fromDate?: Date;\n className?: string;\n}\n\nexport function DatePickerField({\n label,\n required,\n value,\n onChange,\n placeholder = \"Select a date\",\n disabled,\n fromDate,\n className,\n}: DatePickerFieldProps) {\n const [open, setOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [calendarWidth, setCalendarWidth] = React.useState<number | undefined>();\n const hasValue = !!value;\n\n /* Measure trigger width so calendar matches it exactly */\n React.useEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver(([entry]) => {\n setCalendarWidth(entry.contentRect.width);\n });\n observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div ref={containerRef} className={cn(\"w-full\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n {/*\n PopoverTrigger (@base-ui/react) already renders as <button>.\n No asChild + <button> to avoid nested-button HTML error.\n */}\n <PopoverTrigger\n disabled={disabled}\n className={cn(\n \"relative flex w-full items-center rounded-lg border border-border bg-background\",\n \"px-3 text-left text-base font-ui transition-colors h-14\",\n \"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n open && \"border-primary ring-1 ring-primary\"\n )}\n >\n {/* Floating label */}\n <span\n className={cn(\n \"pointer-events-none absolute left-3 transition-all duration-150 font-ui\",\n hasValue || open\n ? \"top-2 text-xs text-primary\"\n : \"top-1/2 -translate-y-1/2 text-base text-muted-foreground\"\n )}\n >\n {label}\n {required && <span className=\"text-primary ml-0.5\">*</span>}\n </span>\n\n {/* Selected date value (invisible placeholder preserves layout) */}\n <span\n className={cn(\n \"flex-1 truncate mt-3\",\n hasValue ? \"text-foreground\" : \"invisible\"\n )}\n >\n {hasValue ? format(value, \"dd MMM yyyy\") : placeholder}\n </span>\n\n {/* Calendar icon — vertically centered via items-center on parent */}\n <CalendarIcon className=\"ml-2 h-4 w-4 shrink-0 text-muted-foreground\" />\n </PopoverTrigger>\n\n <PopoverContent\n className=\"p-0\"\n align=\"start\"\n style={calendarWidth ? { width: calendarWidth } : undefined}\n >\n <Calendar\n mode=\"single\"\n selected={value}\n onSelect={(date) => {\n onChange?.(date);\n setOpen(false);\n }}\n fromDate={fromDate ?? new Date()}\n className=\"font-ui w-full\"\n autoFocus\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { CounterField } from \"./CounterField\";\nimport { FloatingInput, FloatingSelect } from \"./FloatingInput\";\nimport { DatePickerField } from \"./DatePickerField\";\nimport { PhoneCountrySelect } from \"./PhoneCountrySelect\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface BookingFormValues {\n adults: number;\n children: number;\n travelDate: Date | undefined;\n budget: string;\n project: string;\n civility: \"ms\" | \"mr\" | \"\";\n lastName: string;\n firstName: string;\n country: string;\n phoneCountry: string;\n phone: string;\n email: string;\n}\n\nexport interface BookingFormProps {\n /** Initial values */\n defaultValues?: Partial<BookingFormValues>;\n /** Called with form values on submit */\n onSubmit?: (values: BookingFormValues) => void;\n /** Submit button label */\n submitLabel?: string;\n /** Loading state */\n loading?: boolean;\n /** Show the header with title and subtitle. @default true */\n showHeader?: boolean;\n /** Override the header title */\n title?: string;\n /** Override the header subtitle */\n subtitle?: string;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Section divider\n ----------------------------------------------------------------------- */\nfunction FormSection({\n title,\n children,\n className,\n}: {\n title: string;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn(\"flex flex-col gap-5\", className)}>\n <div className=\"flex items-center gap-4\">\n <h3 className=\"text-base font-bold text-foreground whitespace-nowrap font-heading\">\n {title}\n </h3>\n <div className=\"h-px flex-1 bg-border\" />\n </div>\n {children}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n BookingForm\n ----------------------------------------------------------------------- */\nconst defaultInitial: BookingFormValues = {\n adults: 2,\n children: 0,\n travelDate: undefined,\n budget: \"\",\n project: \"\",\n civility: \"\",\n phoneCountry: \"BR\",\n lastName: \"\",\n firstName: \"\",\n country: \"France\",\n phone: \"\",\n email: \"\",\n};\n\nexport function BookingForm({\n defaultValues,\n onSubmit,\n submitLabel = \"Send my request\",\n loading = false,\n showHeader = true,\n title = \"Check availability for your trip\",\n subtitle = \"Free enquiry – no commitment\",\n className,\n}: BookingFormProps) {\n const [values, setValues] = React.useState<BookingFormValues>({\n ...defaultInitial,\n ...defaultValues,\n });\n\n const set = <K extends keyof BookingFormValues>(\n key: K,\n value: BookingFormValues[K]\n ) => setValues((prev) => ({ ...prev, [key]: value }));\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.(values);\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\"flex flex-col gap-10\", className)}\n noValidate\n >\n {/* ── Header ───────────────────────────────────────────────────────── */}\n {showHeader && (\n <div>\n <h2 className=\"text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight\">\n {title}\n </h2>\n <p className=\"mt-1.5 text-sm text-muted-foreground font-ui\">{subtitle}</p>\n </div>\n )}\n\n {/* ── Section 1: Travelers ─────────────────────────────────────────── */}\n <FormSection title=\"Who's joining the adventure?\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <CounterField\n label=\"Adults\"\n required\n value={values.adults}\n min={1}\n onChange={(v) => set(\"adults\", v)}\n />\n <CounterField\n label=\"Children\"\n sublabel=\"(under 12)\"\n value={values.children}\n min={0}\n onChange={(v) => set(\"children\", v)}\n />\n </div>\n </FormSection>\n\n {/* ── Section 2: Trip details ──────────────────────────────────────── */}\n <FormSection title=\"Your next trip\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <DatePickerField\n label=\"Travel date\"\n required\n value={values.travelDate}\n onChange={(d) => set(\"travelDate\", d)}\n placeholder=\"Pick a date\"\n />\n\n <FloatingInput\n label=\"Budget (per person)\"\n required\n type=\"number\"\n min={0}\n value={values.budget}\n onChange={(e) => set(\"budget\", e.target.value)}\n />\n </div>\n </FormSection>\n\n {/* ── Section 3: Project description ──────────────────────────────── */}\n <FormSection title=\"Tell us about your trip\">\n <div className=\"relative\">\n <textarea\n id=\"project\"\n placeholder=\" \"\n rows={5}\n value={values.project}\n onChange={(e) => set(\"project\", e.target.value)}\n className={cn(\n \"peer block w-full resize-none rounded-lg border border-border bg-background\",\n \"px-3 pt-6 pb-3 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 )}\n />\n <label\n htmlFor=\"project\"\n className={cn(\n \"pointer-events-none absolute left-3 top-4\",\n \"text-base text-muted-foreground font-ui transition-all duration-150\",\n \"peer-focus:top-2 peer-focus:text-xs peer-focus:text-primary\",\n \"peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n Your trip in a few words{\" \"}\n <span className=\"text-muted-foreground font-normal\">(optional)</span>\n </label>\n </div>\n </FormSection>\n\n {/* ── Section 4: Contact ───────────────────────────────────────────── */}\n <FormSection title=\"Contact details\">\n {/* Civility */}\n <div\n role=\"radiogroup\"\n aria-label=\"Title\"\n className=\"flex flex-wrap items-center gap-x-6 gap-y-3\"\n >\n {([\"ms\", \"mr\"] as const).map((c) => (\n <label\n key={c}\n className=\"flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground\"\n >\n <input\n type=\"radio\"\n name=\"civility\"\n value={c}\n checked={values.civility === c}\n onChange={() => set(\"civility\", c)}\n className=\"h-4 w-4 shrink-0 accent-primary cursor-pointer\"\n />\n {c === \"ms\" ? \"Ms.\" : \"Mr.\"}\n </label>\n ))}\n </div>\n\n {/* Name row — min-w-0 evita overlap em grelhas estreitas */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 min-w-0\">\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"Last name\"\n required\n value={values.lastName}\n onChange={(e) => set(\"lastName\", e.target.value)}\n />\n </div>\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"First name\"\n required\n value={values.firstName}\n onChange={(e) => set(\"firstName\", e.target.value)}\n />\n </div>\n <div className=\"min-w-0 sm:col-span-2 lg:col-span-1\">\n <FloatingSelect\n label=\"Country of residence\"\n required\n value={values.country}\n onChange={(e) => set(\"country\", e.target.value)}\n >\n <option value=\"\" disabled hidden />\n <option value=\"France\">France</option>\n <option value=\"Belgium\">Belgium</option>\n <option value=\"Switzerland\">Switzerland</option>\n <option value=\"Canada\">Canada</option>\n <option value=\"Luxembourg\">Luxembourg</option>\n <option value=\"United Kingdom\">United Kingdom</option>\n <option value=\"United States\">United States</option>\n <option value=\"Other\">Other</option>\n </FloatingSelect>\n </div>\n </div>\n\n {/* Phone + Email */}\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n {/* Phone with country code select */}\n <div className=\"flex w-full min-w-0\">\n <PhoneCountrySelect\n value={values.phoneCountry}\n onChange={(code) => set(\"phoneCountry\", code)}\n className=\"shrink-0\"\n />\n\n {/* Phone number input */}\n <div className=\"relative min-w-0 flex-1\">\n <input\n id=\"phone\"\n type=\"tel\"\n placeholder=\" \"\n value={values.phone}\n onChange={(e) => set(\"phone\", e.target.value)}\n className={cn(\n \"peer block h-14 w-full rounded-r-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 )}\n />\n <label\n htmlFor=\"phone\"\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 peer-not-placeholder-shown:text-muted-foreground\"\n )}\n >\n Phone <span className=\"text-primary\">*</span>\n </label>\n </div>\n </div>\n\n <div className=\"min-w-0\">\n <FloatingInput\n label=\"Email\"\n required\n type=\"email\"\n value={values.email}\n onChange={(e) => set(\"email\", e.target.value)}\n />\n </div>\n </div>\n </FormSection>\n\n {/* ── Submit ─────────────────────────────────────────────────────────── */}\n <div className=\"flex justify-center pt-2\">\n <button\n type=\"submit\"\n disabled={loading}\n className={cn(\n \"inline-flex items-center justify-center gap-2 rounded-full px-10 py-3.5\",\n \"bg-primary text-primary-foreground font-ui font-semibold text-sm\",\n \"transition-colors hover:bg-primary/90 focus-visible:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-60\"\n )}\n >\n {loading ? (\n <>\n <svg className=\"h-4 w-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v4l3-3-3-3v4a8 8 0 00-8 8h4z\"\n />\n </svg>\n Sending…\n </>\n ) : (\n submitLabel\n )}\n </button>\n </div>\n </form>\n );\n}\n","\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CheckIcon } from \"lucide-react\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none [&>svg]:size-3.5\"\n >\n <CheckIcon\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, ChevronUpIcon, PlusIcon, MinusIcon } from \"lucide-react\"\n\n// ─── Variant context ─────────────────────────────────────────────────────────\n\ntype AccordionVariant = \"default\" | \"faq\"\n\nconst AccordionVariantContext = React.createContext<AccordionVariant>(\"default\")\n\n// ─── Accordion ────────────────────────────────────────────────────────────────\n\ninterface AccordionProps extends Omit<AccordionPrimitive.Root.Props, \"openMultiple\"> {\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = \"default\", ...props }: AccordionProps) {\n return (\n <AccordionVariantContext.Provider value={variant}>\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n className={cn(\n \"flex w-full flex-col\",\n variant === \"faq\" && \"gap-3\",\n className\n )}\n {...props}\n />\n </AccordionVariantContext.Provider>\n )\n}\n\n// ─── AccordionItem ────────────────────────────────────────────────────────────\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n const variant = React.useContext(AccordionVariantContext)\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n variant === \"default\" && \"not-last:border-b\",\n variant === \"faq\" && \"rounded-lg border border-border bg-card\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ─── AccordionTrigger ─────────────────────────────────────────────────────────\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n const variant = React.useContext(AccordionVariantContext)\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-center justify-between text-left transition-all outline-none\",\n \"focus-visible:ring-3 focus-visible:ring-ring/50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n variant === \"default\" && [\n \"rounded-lg border border-transparent py-2.5 text-sm font-medium\",\n \"hover:underline focus-visible:border-ring\",\n \"**:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n ],\n variant === \"faq\" && [\n \"px-5 py-4 text-base font-bold\",\n \"hover:bg-muted/30 rounded-lg\",\n ],\n className\n )}\n {...props}\n >\n {children}\n\n {variant === \"default\" && (\n <>\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )}\n\n {variant === \"faq\" && (\n <>\n <PlusIcon className=\"pointer-events-none shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:hidden\" />\n <MinusIcon className=\"pointer-events-none hidden shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:inline\" />\n </>\n )}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\n// ─── AccordionContent ─────────────────────────────────────────────────────────\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n const variant = React.useContext(AccordionVariantContext)\n\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--accordion-panel-height) pt-0 data-ending-style:h-0 data-starting-style:h-0\",\n \"[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n variant === \"default\" && \"pb-2.5\",\n variant === \"faq\" && \"px-5 pb-5 text-base text-muted-foreground leading-relaxed\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\nexport type { AccordionVariant }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface FilterItem {\n id: string;\n label: string;\n /** Contagem de resultados disponíveis */\n count?: number;\n}\n\nexport interface FilterGroup {\n id: string;\n label: string;\n /** Ícone SVG exibido ao lado do título */\n icon?: React.ReactNode;\n items: FilterItem[];\n /** Abre este grupo por padrão */\n defaultOpen?: boolean;\n}\n\nexport interface FilterPanelProps {\n groups: FilterGroup[];\n /** Estado controlado: { groupId: string[] } */\n value?: Record<string, string[]>;\n onChange?: (value: Record<string, string[]>) => void;\n onClearAll?: () => void;\n /** Exibe o link \"Remove all filters\" mesmo sem seleção */\n alwaysShowClear?: boolean;\n title?: string;\n className?: string;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function FilterPanel({\n groups,\n value,\n onChange,\n onClearAll,\n alwaysShowClear = false,\n title = \"Filters\",\n className,\n}: FilterPanelProps) {\n // Internal state when uncontrolled\n const [internalValue, setInternalValue] = React.useState<Record<string, string[]>>(\n () =>\n Object.fromEntries(groups.map((g) => [g.id, []]))\n );\n\n const selected = value ?? internalValue;\n\n const handleToggle = (groupId: string, itemId: string) => {\n const current = selected[groupId] ?? [];\n const next = current.includes(itemId)\n ? current.filter((id) => id !== itemId)\n : [...current, itemId];\n const nextValue = { ...selected, [groupId]: next };\n if (onChange) {\n onChange(nextValue);\n } else {\n setInternalValue(nextValue);\n }\n };\n\n const handleClearAll = () => {\n const cleared = Object.fromEntries(groups.map((g) => [g.id, []]));\n if (onChange) {\n onChange(cleared);\n } else {\n setInternalValue(cleared);\n }\n onClearAll?.();\n };\n\n const totalSelected = Object.values(selected).flat().length;\n const showClear = alwaysShowClear || totalSelected > 0;\n\n const defaultOpenValues = groups\n .filter((g) => g.defaultOpen)\n .map((g) => g.id);\n\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {/* Title */}\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-base font-bold text-foreground font-ui\">{title}</h3>\n {totalSelected > 0 && (\n <span className=\"inline-flex h-5 w-5 items-center justify-center rounded-full bg-primary text-[10px] font-bold text-primary-foreground\">\n {totalSelected}\n </span>\n )}\n </div>\n\n {/* Accordion groups */}\n <Accordion\n defaultValue={defaultOpenValues}\n className=\"flex flex-col gap-2\"\n >\n {groups.map((group) => {\n const groupSelected = selected[group.id] ?? [];\n\n return (\n <AccordionItem\n key={group.id}\n value={group.id}\n className=\"border-0 border-b border-border last:border-b-0\"\n >\n <AccordionTrigger className=\"px-0 py-3.5 hover:no-underline transition-colors\">\n <span className=\"flex items-center gap-2.5\">\n {group.icon && (\n <span className=\"text-primary shrink-0\">{group.icon}</span>\n )}\n <span className=\"text-sm font-bold text-foreground font-ui\">\n {group.label}\n </span>\n {groupSelected.length > 0 && (\n <span className=\"ml-1 inline-flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[9px] font-bold text-primary-foreground\">\n {groupSelected.length}\n </span>\n )}\n </span>\n </AccordionTrigger>\n\n <AccordionContent className=\"px-4 pb-3 pt-1\">\n <ul className=\"flex flex-col gap-0.5\">\n {group.items.map((item) => {\n const checked = groupSelected.includes(item.id);\n const checkboxId = `filter-${group.id}-${item.id}`;\n\n return (\n <li key={item.id}>\n <label\n htmlFor={checkboxId}\n className=\"flex cursor-pointer items-center gap-3 rounded-md px-1 py-2 transition-colors hover:bg-muted/50\"\n >\n <Checkbox\n id={checkboxId}\n checked={checked}\n onCheckedChange={() => handleToggle(group.id, item.id)}\n className=\"shrink-0\"\n />\n <span className=\"flex-1 text-sm text-foreground font-ui\">\n {item.label}\n </span>\n {item.count !== undefined && (\n <span className=\"text-xs font-medium text-primary font-ui\">\n ({item.count})\n </span>\n )}\n </label>\n </li>\n );\n })}\n </ul>\n </AccordionContent>\n </AccordionItem>\n );\n })}\n </Accordion>\n\n {/* Clear all */}\n {showClear && (\n <button\n onClick={handleClearAll}\n className=\"self-start text-sm text-muted-foreground underline underline-offset-2 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring font-ui\"\n >\n Remove all filters\n </button>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MapPinIcon,\n CarIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from \"@/components/ui/dialog\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface ItineraryRoute {\n distance: string; // \"210km\"\n duration: string; // \"3h50\"\n}\n\nexport interface ItineraryStop {\n dayNumber: number;\n title: string;\n location?: string;\n coverImage: string;\n images?: string[];\n description?: React.ReactNode;\n route?: ItineraryRoute;\n}\n\nexport interface ItineraryProps {\n title?: string;\n subtitle?: string;\n stops: ItineraryStop[];\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n ItineraryDayCard\n ----------------------------------------------------------------------- */\nfunction ItineraryDayCard({\n stop,\n onOpen,\n}: {\n stop: ItineraryStop;\n onOpen: () => void;\n}) {\n const hasDescription = !!stop.description;\n\n return (\n <div\n onClick={onOpen}\n className=\"group relative flex-none w-56 sm:w-64 h-80 rounded-2xl overflow-hidden cursor-pointer shadow-sm hover:shadow-lg transition-shadow duration-300\"\n >\n {/* Cover image */}\n <img\n src={stop.coverImage}\n alt={stop.title}\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n\n {/* Day badge */}\n <div className=\"absolute top-3 right-3 z-10 rounded-md bg-primary px-2 py-1\">\n <span className=\"text-xs font-semibold text-primary-foreground font-ui\">\n Day {stop.dayNumber}\n </span>\n </div>\n\n {/* Default overlay — gradient + title */}\n <div\n className={cn(\n \"absolute inset-x-0 bottom-0 z-10 bg-gradient-to-t from-black/70 via-black/20 to-transparent p-4 transition-opacity duration-300\",\n hasDescription && \"group-hover:opacity-0\"\n )}\n >\n <h3 className=\"text-base font-bold text-white leading-tight font-heading\">\n {stop.title}\n </h3>\n {stop.location && (\n <p className=\"mt-0.5 flex items-center gap-1 text-xs text-white/80 font-ui\">\n <MapPinIcon className=\"h-3 w-3 shrink-0\" />\n {stop.location}\n </p>\n )}\n {stop.route && (\n <p className=\"mt-1 flex items-center gap-1.5 text-xs text-white/80 font-ui\">\n <CarIcon className=\"h-3 w-3 shrink-0\" />\n {stop.route.distance} · {stop.route.duration}\n </p>\n )}\n </div>\n\n {/* Hover panel — slides up from bottom */}\n {hasDescription && (\n <div className=\"absolute inset-x-0 bottom-0 z-20 bg-background translate-y-full group-hover:translate-y-0 transition-transform duration-300 ease-out p-4\">\n <h3 className=\"text-sm font-bold text-foreground font-heading leading-tight\">\n {stop.title}\n </h3>\n {stop.location && (\n <p className=\"mt-0.5 flex items-center gap-1 text-xs text-muted-foreground font-ui\">\n <MapPinIcon className=\"h-3 w-3 shrink-0 text-primary\" />\n {stop.location}\n </p>\n )}\n {/* Use div instead of p to avoid nested <p> when description contains <p> tags */}\n <div className=\"mt-2 line-clamp-3 text-xs text-foreground/80 leading-relaxed [&_p]:inline [&_strong]:font-semibold\">\n {stop.description}\n </div>\n <span className=\"mt-2 inline-block text-xs font-semibold text-primary font-ui\">\n Read more →\n </span>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n ItineraryModal\n ----------------------------------------------------------------------- */\nfunction ItineraryModal({\n stop,\n allStops,\n onClose,\n onPrev,\n onNext,\n}: {\n stop: ItineraryStop | null;\n allStops: ItineraryStop[];\n onClose: () => void;\n onPrev: () => void;\n onNext: () => void;\n}) {\n const [imgIndex, setImgIndex] = React.useState(0);\n\n const images = stop ? [stop.coverImage, ...(stop.images ?? [])] : [];\n const isFirst = stop?.dayNumber === allStops[0]?.dayNumber;\n const isLast = stop?.dayNumber === allStops[allStops.length - 1]?.dayNumber;\n\n React.useEffect(() => {\n setImgIndex(0);\n }, [stop?.dayNumber]);\n\n if (!stop) return null;\n\n return (\n <Dialog open={!!stop} onOpenChange={(open) => !open && onClose()}>\n <DialogContent\n className={cn(\n /* Override shadcn defaults: remove padding, gap, grid, max-w-sm */\n \"p-0 gap-0 sm:max-w-2xl max-w-[calc(100%-2rem)] overflow-hidden rounded-2xl\",\n /* Outer flex column: [header+body] / [footer] */\n \"flex flex-col\"\n )}\n >\n {/* Accessible title (sr-only since we show it visually below) */}\n <DialogTitle className=\"sr-only\">\n {stop.title} — Day {stop.dayNumber}\n </DialogTitle>\n <DialogDescription className=\"sr-only\">\n Itinerary details for Day {stop.dayNumber}\n </DialogDescription>\n\n {/* ── Main area: two columns on desktop ─────────────────────── */}\n <div className=\"flex flex-col sm:flex-row flex-1 min-h-0\">\n\n {/* Left: text */}\n <div className=\"flex flex-col flex-1 p-6 sm:p-8 overflow-y-auto max-h-[50vh] sm:max-h-[70vh]\">\n <h2 className=\"text-xl font-bold text-foreground font-heading leading-tight\">\n {stop.title}\n </h2>\n\n {stop.location && (\n <p className=\"mt-1.5 flex items-center gap-1.5 text-sm text-muted-foreground font-ui\">\n <MapPinIcon className=\"h-4 w-4 shrink-0 text-primary\" />\n {stop.location}\n </p>\n )}\n\n <p className=\"mt-4 text-sm font-bold text-foreground font-heading\">\n Day {stop.dayNumber}\n </p>\n\n {stop.description && (\n <div className=\"mt-2 text-sm text-foreground/80 leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2\">\n {stop.description}\n </div>\n )}\n\n {stop.route && (\n <div className=\"mt-4 flex items-center gap-2 text-sm text-muted-foreground font-ui\">\n <CarIcon className=\"h-4 w-4 shrink-0 text-primary\" />\n <span>{stop.route.distance} · {stop.route.duration}</span>\n </div>\n )}\n </div>\n\n {/* Right: image carousel */}\n {images.length > 0 && (\n <div className=\"relative sm:w-72 sm:shrink-0 h-52 sm:h-auto bg-muted overflow-hidden\">\n <img\n key={imgIndex}\n src={images[imgIndex]}\n alt={`${stop.title} ${imgIndex + 1}`}\n className=\"h-full w-full object-cover\"\n />\n\n {images.length > 1 && (\n <>\n <button\n type=\"button\"\n onClick={() =>\n setImgIndex((i) => (i - 1 + images.length) % images.length)\n }\n className=\"absolute left-2 top-1/2 -translate-y-1/2 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 shadow hover:bg-background transition-colors\"\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setImgIndex((i) => (i + 1) % images.length)\n }\n className=\"absolute right-2 top-1/2 -translate-y-1/2 flex h-8 w-8 items-center justify-center rounded-full bg-background/80 shadow hover:bg-background transition-colors\"\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Dot indicators */}\n <div className=\"absolute bottom-3 inset-x-0 flex justify-center gap-1.5\">\n {images.map((_, i) => (\n <button\n type=\"button\"\n key={i}\n onClick={() => setImgIndex(i)}\n className={cn(\n \"h-1.5 rounded-full transition-all\",\n i === imgIndex ? \"w-4 bg-white\" : \"w-1.5 bg-white/50\"\n )}\n />\n ))}\n </div>\n </>\n )}\n </div>\n )}\n </div>\n\n {/* ── Footer: prev / next day ────────────────────────────────── */}\n <div className=\"flex items-center justify-between border-t border-border px-6 py-3 bg-background shrink-0\">\n <button\n type=\"button\"\n onClick={onPrev}\n disabled={isFirst}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-ui transition-colors\",\n isFirst\n ? \"text-muted-foreground/40 pointer-events-none\"\n : \"text-foreground hover:text-primary\"\n )}\n >\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-current\">\n <ChevronLeftIcon className=\"h-3.5 w-3.5\" />\n </span>\n Last day\n </button>\n\n <button\n type=\"button\"\n onClick={onNext}\n disabled={isLast}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-ui transition-colors\",\n isLast\n ? \"text-muted-foreground/40 pointer-events-none\"\n : \"text-foreground hover:text-primary\"\n )}\n >\n Next day\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-current\">\n <ChevronRightIcon className=\"h-3.5 w-3.5\" />\n </span>\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\n/* -----------------------------------------------------------------------\n Itinerary — main component\n ----------------------------------------------------------------------- */\nexport function Itinerary({ title, subtitle, stops, className }: ItineraryProps) {\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n const activeStop = activeIndex !== null ? stops[activeIndex] : null;\n\n const scrollBy = (dir: \"left\" | \"right\") => {\n if (!scrollRef.current) return;\n const amount = 280;\n scrollRef.current.scrollBy({\n left: dir === \"right\" ? amount : -amount,\n behavior: \"smooth\",\n });\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n {/* Header */}\n {(title || subtitle) && (\n <div className=\"mb-6 text-center px-4\">\n {title && (\n <h2 className=\"text-2xl sm:text-3xl font-bold text-foreground font-heading\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"mt-2 text-sm text-muted-foreground max-w-md mx-auto leading-relaxed\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/* Scrollable strip + arrows */}\n <div className=\"relative group/strip\">\n {/* Left arrow */}\n <button\n type=\"button\"\n onClick={() => scrollBy(\"left\")}\n aria-label=\"Scroll left\"\n className={cn(\n \"absolute left-0 top-1/2 -translate-y-1/2 z-20\",\n \"-translate-x-1/2 sm:-translate-x-5\",\n \"flex h-9 w-9 items-center justify-center rounded-full\",\n \"bg-background border border-border shadow-md\",\n \"transition-opacity hover:bg-muted\",\n \"opacity-0 group-hover/strip:opacity-100\"\n )}\n >\n <ChevronLeftIcon className=\"h-4 w-4 text-foreground\" />\n </button>\n\n {/* Right arrow */}\n <button\n type=\"button\"\n onClick={() => scrollBy(\"right\")}\n aria-label=\"Scroll right\"\n className={cn(\n \"absolute right-0 top-1/2 -translate-y-1/2 z-20\",\n \"translate-x-1/2 sm:translate-x-5\",\n \"flex h-9 w-9 items-center justify-center rounded-full\",\n \"bg-background border border-border shadow-md\",\n \"transition-opacity hover:bg-muted\",\n \"opacity-0 group-hover/strip:opacity-100\"\n )}\n >\n <ChevronRightIcon className=\"h-4 w-4 text-foreground\" />\n </button>\n\n {/* Cards row */}\n <div\n ref={scrollRef}\n className={cn(\n \"flex gap-3 sm:gap-4 overflow-x-auto pb-4\",\n \"snap-x snap-mandatory scroll-smooth\",\n \"[&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"px-4 sm:px-2\"\n )}\n >\n {stops.map((stop, i) => (\n <div key={stop.dayNumber} className=\"snap-start shrink-0\">\n <ItineraryDayCard stop={stop} onOpen={() => setActiveIndex(i)} />\n </div>\n ))}\n </div>\n </div>\n\n {/* Modal */}\n <ItineraryModal\n stop={activeStop}\n allStops={stops}\n onClose={() => setActiveIndex(null)}\n onPrev={() =>\n setActiveIndex((i) => (i !== null ? Math.max(0, i - 1) : 0))\n }\n onNext={() =>\n setActiveIndex((i) =>\n i !== null ? Math.min(stops.length - 1, i + 1) : 0\n )\n }\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 MenuTripSection {\n id: string;\n label: string;\n}\n\nexport type MenuTripVariant = \"pill\" | \"underline\" | \"outlined\" | \"floating\";\n\nexport interface MenuTripProps {\n sections: MenuTripSection[];\n activeSection?: string;\n onSelect?: (id: string) => void;\n variant?: MenuTripVariant;\n /** Whether labels use bold font weight. @default true */\n bold?: boolean;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n MenuTrip\n ----------------------------------------------------------------------- */\nexport function MenuTrip({\n sections,\n activeSection,\n onSelect,\n variant = \"pill\",\n bold = true,\n className,\n}: MenuTripProps) {\n const scrollRef = React.useRef<HTMLDivElement>(null);\n\n /* Scroll active pill into view — horizontal only, never affects page scroll */\n React.useEffect(() => {\n if (!scrollRef.current || !activeSection) return;\n const container = scrollRef.current;\n const btn = container.querySelector<HTMLElement>(\n `[data-section=\"${activeSection}\"]`\n );\n if (!btn) return;\n const btnLeft = btn.offsetLeft;\n const btnRight = btnLeft + btn.offsetWidth;\n const cLeft = container.scrollLeft;\n const cRight = cLeft + container.offsetWidth;\n if (btnLeft < cLeft) {\n container.scrollTo({ left: btnLeft - 16, behavior: \"smooth\" });\n } else if (btnRight > cRight) {\n container.scrollTo({ left: btnRight - container.offsetWidth + 16, behavior: \"smooth\" });\n }\n }, [activeSection]);\n\n if (variant === \"underline\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"border-b border-border\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-end gap-0\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"relative px-4 py-2.5 text-sm font-ui whitespace-nowrap transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n \"after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:rounded-full after:transition-all\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"text-foreground after:bg-primary\"\n : \"text-muted-foreground hover:text-foreground after:bg-transparent\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n if (variant === \"outlined\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-2\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full border px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"border-foreground bg-foreground text-background\"\n : \"border-border bg-background text-muted-foreground hover:border-foreground/50 hover:text-foreground\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n /* ── Floating: container has background, pills are ghost when inactive ── */\n if (variant === \"floating\") {\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n \"py-1 px-0.5\", /* padding so shadow isn't clipped by overflow */\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-0.5 rounded-full border border-border/40 bg-background/90 backdrop-blur-md shadow-sm px-1.5 py-1.5\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"bg-foreground text-background shadow-sm\"\n : \"text-foreground/60 hover:text-foreground hover:bg-muted/60\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n /* ── Default: pill ── */\n return (\n <div\n ref={scrollRef}\n className={cn(\n \"overflow-x-auto [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]\",\n className\n )}\n >\n <div className=\"inline-flex min-w-max items-center gap-1 p-1\">\n {sections.map((s) => (\n <button\n key={s.id}\n data-section={s.id}\n type=\"button\"\n onClick={() => onSelect?.(s.id)}\n className={cn(\n \"rounded-full px-4 py-1.5 text-sm font-ui whitespace-nowrap transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n bold ? \"font-semibold\" : \"font-normal\",\n activeSection === s.id\n ? \"bg-foreground text-background shadow-sm\"\n : \"bg-white text-foreground/70 hover:text-foreground shadow-sm\"\n )}\n >\n {s.label}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ZoomInIcon,\n XIcon,\n LayoutGridIcon,\n ChevronUpIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\n\nexport type PhotoGalleryVariant = \"grid\" | \"masonry\" | \"filmstrip\" | \"featured\";\n\nexport interface PhotoGalleryPhoto {\n src: string;\n alt?: string;\n /** Caption displayed in the lightbox bottom-left */\n caption?: string;\n /** Photo credit / author displayed in the lightbox bottom-right */\n credit?: string;\n}\n\nexport interface PhotoGalleryProps {\n /** Array of photo URLs or photo objects */\n photos: (string | PhotoGalleryPhoto)[];\n /** Visual layout variant */\n variant?: PhotoGalleryVariant;\n /**\n * How many photos to show before the \"See more\" button.\n * Pass `Infinity` to always show all (no toggle).\n * @default 6\n */\n initialVisible?: number;\n /** Called when a photo is clicked (in addition to opening the lightbox) */\n onPhotoClick?: (src: string, index: number) => void;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Helpers\n ----------------------------------------------------------------------- */\n\nfunction normalise(p: string | PhotoGalleryPhoto): PhotoGalleryPhoto {\n return typeof p === \"string\" ? { src: p } : p;\n}\n\n/**\n * Derive adaptive grid columns based on TOTAL photo count.\n * Using total (not visible) prevents column count from jumping when\n * the Show more button is clicked.\n */\nfunction gridCols(total: number) {\n if (total === 1) return \"grid-cols-1\";\n if (total === 2) return \"grid-cols-2\";\n return \"grid-cols-3\";\n}\n\n/* -----------------------------------------------------------------------\n Lightbox — with navigation, dot indicators and keyboard support\n ----------------------------------------------------------------------- */\n\nfunction Lightbox({\n photos,\n initialIndex,\n onClose,\n}: {\n photos: PhotoGalleryPhoto[];\n initialIndex: number;\n onClose: () => void;\n}) {\n const [index, setIndex] = React.useState(initialIndex);\n const total = photos.length;\n const photo = photos[index];\n\n const prev = React.useCallback(\n () => setIndex((i) => (i - 1 + total) % total),\n [total],\n );\n const next = React.useCallback(\n () => setIndex((i) => (i + 1) % total),\n [total],\n );\n\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n if (e.key === \"ArrowLeft\") prev();\n if (e.key === \"ArrowRight\") next();\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [onClose, prev, next]);\n\n return (\n <div\n className=\"fixed inset-0 z-50 bg-black/92 flex flex-col items-center justify-center\"\n onClick={onClose}\n >\n {/* ── Close — top right ── */}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"absolute top-5 right-5 flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors z-10\"\n aria-label=\"Close lightbox\"\n >\n <XIcon className=\"h-5 w-5\" />\n </button>\n\n {/* ── Prev — left side ── */}\n {total > 1 && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); prev(); }}\n className=\"absolute left-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10\"\n aria-label=\"Previous photo\"\n >\n <ChevronLeftIcon className=\"h-5 w-5\" />\n </button>\n )}\n\n {/* ── Next — right side ── */}\n {total > 1 && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); next(); }}\n className=\"absolute right-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10\"\n aria-label=\"Next photo\"\n >\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n )}\n\n {/* ── Photo ── */}\n <img\n src={photo.src}\n alt={photo.alt ?? `Photo ${index + 1}`}\n className=\"max-w-[calc(100%-6rem)] max-h-[calc(100vh-11rem)] object-contain rounded-lg shadow-2xl\"\n onClick={(e) => e.stopPropagation()}\n />\n\n {/* ── Caption + credit — centered below photo ── */}\n {(photo.caption || photo.credit) && (\n <div\n className=\"mt-4 flex flex-col items-center gap-0.5 px-16 text-center\"\n onClick={(e) => e.stopPropagation()}\n >\n {photo.caption && (\n <p className=\"text-sm text-white/90 font-ui leading-snug max-w-xl\">\n {photo.caption}\n </p>\n )}\n {photo.credit && (\n <p className=\"text-xs text-white/45 font-ui\">\n © {photo.credit}\n </p>\n )}\n </div>\n )}\n\n {/* ── Bottom nav: dots + prev/next ── */}\n {total > 1 && (\n <div\n className=\"absolute bottom-5 inset-x-0 flex items-center justify-center gap-3 px-5\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* Prev */}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); prev(); }}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors\"\n aria-label=\"Previous photo\"\n >\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </button>\n\n {/* Dots */}\n <div className=\"flex items-center gap-1.5\">\n {photos.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); setIndex(i); }}\n aria-label={`Go to photo ${i + 1}`}\n className={cn(\n \"h-1.5 rounded-full transition-all duration-300 focus-visible:outline-none\",\n i === index\n ? \"w-6 bg-primary\"\n : \"w-1.5 bg-white/40 hover:bg-white/70\",\n )}\n />\n ))}\n </div>\n\n {/* Next */}\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); next(); }}\n className=\"flex h-9 w-9 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors\"\n aria-label=\"Next photo\"\n >\n <ChevronRightIcon className=\"h-4 w-4\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Shared photo tile\n ----------------------------------------------------------------------- */\n\nfunction PhotoTile({\n photo,\n index,\n className,\n onClick,\n}: {\n photo: PhotoGalleryPhoto;\n index: number;\n className?: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"relative overflow-hidden group block w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n className,\n )}\n aria-label={photo.alt ?? `Photo ${index + 1}`}\n >\n <img\n src={photo.src}\n alt={photo.alt ?? `Photo ${index + 1}`}\n className=\"w-full h-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-8 w-8 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n );\n}\n\n/* -----------------------------------------------------------------------\n Show-more / show-less button\n ----------------------------------------------------------------------- */\n\nfunction ShowMoreButton({\n count,\n expanded,\n onClick,\n}: {\n count: number;\n expanded: boolean;\n onClick: () => void;\n}) {\n return (\n <div className=\"flex justify-center py-4\">\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex items-center gap-2 rounded-full border border-border bg-background px-5 py-2.5\",\n \"text-sm font-semibold text-foreground shadow-sm\",\n \"hover:bg-muted transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n )}\n >\n {expanded ? (\n <>\n <ChevronUpIcon className=\"h-4 w-4 text-muted-foreground\" />\n Show less\n </>\n ) : (\n <>\n <LayoutGridIcon className=\"h-4 w-4 text-muted-foreground\" />\n See more ({count})\n </>\n )}\n </button>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Grid\n Columns are locked to total photo count so expanding never changes\n the number of columns, only adds rows below.\n ----------------------------------------------------------------------- */\n\nfunction GridGallery({\n photos,\n initialVisible,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n initialVisible: number;\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n const cols = gridCols(photos.length); // locked — never changes\n const hasMore = photos.length > initialVisible;\n const visible = expanded || !hasMore ? photos : photos.slice(0, initialVisible);\n\n return (\n <>\n <div className={cn(\"grid\", cols)}>\n {visible.map((p, i) => (\n <PhotoTile\n key={i}\n photo={p}\n index={i}\n className=\"aspect-[4/3]\"\n onClick={() => onOpen(i)}\n />\n ))}\n </div>\n {hasMore && (\n <ShowMoreButton\n count={photos.length - initialVisible}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Masonry\n CSS columns layout, each photo keeps its natural ratio.\n ----------------------------------------------------------------------- */\n\nfunction MasonryGallery({\n photos,\n initialVisible,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n initialVisible: number;\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n const hasMore = photos.length > initialVisible;\n const visible = expanded || !hasMore ? photos : photos.slice(0, initialVisible);\n\n return (\n <>\n <div className=\"columns-2 sm:columns-3 gap-1 [&>*]:break-inside-avoid [&>*]:mb-1\">\n {visible.map((p, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => onOpen(i)}\n className=\"relative overflow-hidden group block w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 1}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 1}`}\n className=\"w-full h-auto object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n {hasMore && (\n <ShowMoreButton\n count={photos.length - initialVisible}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Filmstrip\n Horizontal scrollable row of fixed-height thumbnails.\n ----------------------------------------------------------------------- */\n\nfunction FilmstripGallery({\n photos,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n onOpen: (i: number) => void;\n}) {\n return (\n <div className=\"overflow-x-auto flex gap-1 snap-x snap-mandatory pb-1 scrollbar-none\">\n {photos.map((p, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => onOpen(i)}\n className=\"relative shrink-0 overflow-hidden group h-56 w-auto aspect-[4/3] snap-start focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 1}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 1}`}\n className=\"h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Variant — Featured\n One large landscape photo on the left (col-span-2) + two portrait\n photos stacked on the right. Extra photos revealed as a horizontal\n filmstrip when \"See more\" is clicked.\n ----------------------------------------------------------------------- */\n\nfunction FeaturedGallery({\n photos,\n onOpen,\n}: {\n photos: PhotoGalleryPhoto[];\n onOpen: (i: number) => void;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n const featured = photos.slice(0, 3); // 1 large + 2 stacked\n const extra = photos.slice(3); // overflow → filmstrip\n\n return (\n <>\n {/* 1 large + 2 stacked */}\n <div className=\"grid grid-cols-3 gap-1.5 h-72 sm:h-80 lg:h-96 rounded-xl overflow-hidden\">\n {/* Large photo — spans 2 columns */}\n {featured[0] && (\n <PhotoTile\n photo={featured[0]}\n index={0}\n className=\"col-span-2 h-full\"\n onClick={() => onOpen(0)}\n />\n )}\n {/* Two stacked portrait photos */}\n <div className=\"flex flex-col gap-1.5 h-full\">\n {featured[1] && (\n <PhotoTile\n photo={featured[1]}\n index={1}\n className=\"flex-1 min-h-0\"\n onClick={() => onOpen(1)}\n />\n )}\n {featured[2] && (\n <PhotoTile\n photo={featured[2]}\n index={2}\n className=\"flex-1 min-h-0\"\n onClick={() => onOpen(2)}\n />\n )}\n </div>\n </div>\n\n {/* Horizontal filmstrip — extra photos on expand */}\n {expanded && extra.length > 0 && (\n <div className=\"mt-1.5 overflow-x-auto flex gap-1.5 snap-x snap-mandatory scrollbar-none rounded-xl overflow-hidden pb-0\">\n {extra.map((p, i) => (\n <button\n key={i + 3}\n type=\"button\"\n onClick={() => onOpen(i + 3)}\n className=\"relative shrink-0 overflow-hidden group h-40 sm:h-48 aspect-[4/3] snap-start rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n aria-label={p.alt ?? `Photo ${i + 4}`}\n >\n <img\n src={p.src}\n alt={p.alt ?? `Photo ${i + 4}`}\n className=\"h-full w-full object-cover transition-transform duration-700 group-hover:scale-105\"\n loading=\"lazy\"\n />\n <div className=\"absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 flex items-center justify-center\">\n <ZoomInIcon className=\"h-7 w-7 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-300 drop-shadow-lg\" />\n </div>\n </button>\n ))}\n </div>\n )}\n\n {/* Show more / show less */}\n {extra.length > 0 && (\n <ShowMoreButton\n count={extra.length}\n expanded={expanded}\n onClick={() => setExpanded((v) => !v)}\n />\n )}\n </>\n );\n}\n\n/* -----------------------------------------------------------------------\n PhotoGallery — main export\n ----------------------------------------------------------------------- */\n\nexport function PhotoGallery({\n photos,\n variant = \"grid\",\n initialVisible = 6,\n onPhotoClick,\n className,\n}: PhotoGalleryProps) {\n const [lightboxIndex, setLightboxIndex] = React.useState<number | null>(null);\n const normalised = React.useMemo(() => photos.map(normalise), [photos]);\n\n const handleOpen = (index: number) => {\n setLightboxIndex(index);\n onPhotoClick?.(normalised[index].src, index);\n };\n\n if (normalised.length === 0) return null;\n\n return (\n <div className={cn(\"w-full\", className)}>\n {variant === \"grid\" && (\n <GridGallery\n photos={normalised}\n initialVisible={initialVisible}\n onOpen={handleOpen}\n />\n )}\n\n {variant === \"masonry\" && (\n <MasonryGallery\n photos={normalised}\n initialVisible={initialVisible}\n onOpen={handleOpen}\n />\n )}\n\n {variant === \"filmstrip\" && (\n <FilmstripGallery photos={normalised} onOpen={handleOpen} />\n )}\n\n {variant === \"featured\" && (\n <FeaturedGallery photos={normalised} onOpen={handleOpen} />\n )}\n\n {lightboxIndex !== null && (\n <Lightbox\n photos={normalised}\n initialIndex={lightboxIndex}\n onClose={() => setLightboxIndex(null)}\n />\n )}\n </div>\n );\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon, ChevronDownIcon, ChevronUpIcon, ClockIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface PricingOption {\n label: string;\n price: string;\n originalPrice?: string;\n unit?: string;\n}\n\nexport type PricingTripVariant = \"card\" | \"bar\" | \"compact\";\n\nexport interface PricingTripProps {\n priceFrom: string;\n currency?: string;\n /** e.g. \"May – August · until mid-August with sufficient water levels\" */\n season?: string;\n departureTimes?: string[];\n pricingOptions?: PricingOption[];\n onBook?: () => void;\n bookLabel?: string;\n variant?: PricingTripVariant;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n PricingTrip\n ----------------------------------------------------------------------- */\nexport function PricingTrip({\n priceFrom,\n currency = \"CHF\",\n season,\n departureTimes,\n pricingOptions,\n onBook,\n bookLabel = \"Check availability\",\n variant = \"card\",\n className,\n}: PricingTripProps) {\n const [showPricing, setShowPricing] = React.useState(false);\n\n /* ── Compact ── just price + button in one tight row */\n if (variant === \"compact\") {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n <div>\n <p className=\"text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5\">\n from\n </p>\n <p className=\"text-lg font-bold text-foreground font-heading leading-none\">\n {currency} <span className=\"text-primary\">{priceFrom}</span>\n </p>\n </div>\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"flex-1 rounded-full bg-primary px-4 py-2 text-sm font-semibold\",\n \"text-primary-foreground font-ui transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n );\n }\n\n /* ── Bar ── horizontal strip for sticky top bars */\n if (variant === \"bar\") {\n return (\n <div\n className={cn(\n \"flex items-center gap-4 rounded-2xl border border-border bg-card px-5 py-3 shadow-sm\",\n className\n )}\n >\n {/* Season / duration hint */}\n {season && (\n <div className=\"hidden sm:flex items-center gap-1.5 text-sm text-muted-foreground font-ui shrink-0\">\n <CalendarIcon className=\"h-3.5 w-3.5 text-primary shrink-0\" />\n <span className=\"truncate max-w-[180px]\">{season}</span>\n </div>\n )}\n\n {/* Departure times */}\n {departureTimes && departureTimes.length > 0 && (\n <div className=\"hidden md:flex items-center gap-1.5 shrink-0\">\n <ClockIcon className=\"h-3.5 w-3.5 text-primary shrink-0\" />\n <div className=\"flex gap-1\">\n {departureTimes.map((t) => (\n <Badge key={t} variant=\"outline\" className=\"font-ui text-xs px-1.5 py-0.5\">\n {t}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"flex-1\" />\n\n {/* Price */}\n <div className=\"shrink-0 text-right\">\n <span className=\"block text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5\">\n from\n </span>\n <span className=\"text-xl font-bold text-foreground font-heading leading-none\">\n {currency} <span className=\"text-primary\">{priceFrom}</span>\n </span>\n </div>\n\n {/* CTA */}\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"shrink-0 flex items-center gap-2 rounded-full bg-primary px-5 py-2.5\",\n \"text-sm font-semibold text-primary-foreground font-ui\",\n \"transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n <CalendarIcon className=\"h-4 w-4 shrink-0\" />\n {bookLabel}\n </button>\n </div>\n );\n }\n\n /* ── Default: card ── full sidebar card */\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {/* Price */}\n <div>\n <p className=\"text-xs text-muted-foreground font-ui uppercase tracking-wide\">From</p>\n <p className=\"text-3xl font-bold text-foreground font-heading\">\n {currency}{\" \"}\n <span className=\"text-primary\">{priceFrom}</span>\n <span className=\"text-base font-normal text-muted-foreground font-ui\"> / guest</span>\n </p>\n </div>\n\n {/* Season */}\n {season && (\n <div className=\"flex items-start gap-2 text-sm text-muted-foreground font-ui\">\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-primary mt-0.5\" />\n <span>{season}</span>\n </div>\n )}\n\n {/* Departure times */}\n {departureTimes && departureTimes.length > 0 && (\n <div className=\"flex flex-col gap-1.5\">\n <p className=\"text-xs font-semibold text-foreground font-ui uppercase tracking-wide\">\n Departure times\n </p>\n <div className=\"flex flex-wrap gap-1.5\">\n {departureTimes.map((t) => (\n <Badge key={t} variant=\"outline\" className=\"font-ui text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n </div>\n )}\n\n {/* Pricing options toggle */}\n {pricingOptions && pricingOptions.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <button\n type=\"button\"\n onClick={() => setShowPricing((v) => !v)}\n className=\"flex items-center gap-1 text-xs text-primary font-ui text-left hover:underline underline-offset-2\"\n >\n {showPricing ? (\n <>Show pricing options <ChevronUpIcon className=\"h-3 w-3\" /></>\n ) : (\n <>Show pricing options <ChevronDownIcon className=\"h-3 w-3\" /></>\n )}\n </button>\n {showPricing && (\n <div className=\"rounded-lg border border-border overflow-hidden\">\n {pricingOptions.map((opt, i) => (\n <div\n key={i}\n className={cn(\n \"flex items-center justify-between px-3 py-2.5 text-sm\",\n i < pricingOptions.length - 1 && \"border-b border-border\"\n )}\n >\n <span className=\"text-foreground font-ui\">{opt.label}</span>\n <div className=\"flex items-center gap-1.5 text-right\">\n {opt.originalPrice && (\n <span className=\"text-xs text-muted-foreground line-through font-ui\">\n {currency} {opt.originalPrice}\n </span>\n )}\n <span className=\"font-bold text-foreground font-ui\">\n {currency} {opt.price}\n {opt.unit && (\n <span className=\"text-xs font-normal text-muted-foreground\">\n {\" \"}/ {opt.unit}\n </span>\n )}\n </span>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n\n {/* CTA */}\n <button\n type=\"button\"\n onClick={onBook}\n className={cn(\n \"w-full rounded-full bg-primary py-3 text-center text-sm font-semibold\",\n \"text-primary-foreground font-ui transition-colors hover:bg-primary/90\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n >\n {bookLabel}\n </button>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { SearchIcon, UserIcon, ChevronDownIcon, MenuIcon, XIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface SiteHeaderSubItem {\n label: string;\n href?: string;\n}\n\nexport interface SiteHeaderLink {\n label: string;\n href?: string;\n items?: SiteHeaderSubItem[];\n}\n\nexport interface SiteHeaderLanguage {\n code: string; // \"EN\", \"PT\", \"NL\"\n label: string; // \"English\", \"Português\"\n}\n\nexport type SiteHeaderVariant = \"transparent\" | \"white\" | \"dark\";\n\nexport interface SiteHeaderProps {\n variant?: SiteHeaderVariant;\n links?: SiteHeaderLink[];\n logoSrc?: string;\n logoAlt?: string;\n languages?: SiteHeaderLanguage[];\n currentLanguage?: string;\n onLanguageChange?: (code: string) => void;\n onSearch?: () => void;\n onAccount?: () => void;\n /** \"overlay\" = absolute (inside a relative parent); \"fixed\" = fixed to viewport */\n position?: \"overlay\" | \"fixed\" | \"static\";\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Variant tokens\n ----------------------------------------------------------------------- */\nconst VARIANT: Record<\n SiteHeaderVariant,\n {\n header: string;\n navItem: string;\n navItemOpen: string;\n chevron: string;\n lang: string;\n langOpen: string;\n langChevron: string;\n icon: string;\n mobileTrigger: string;\n mobileDrawer: string;\n mobileLink: string;\n mobileSub: string;\n mobileLangActive: string;\n mobileLangIdle: string;\n logoBlend: string;\n }\n> = {\n transparent: {\n header: \"\",\n navItem: \"text-white hover:text-white/80\",\n navItemOpen: \"text-white bg-white/10\",\n chevron: \"text-white/50\",\n lang: \"text-white/70 hover:text-white\",\n langOpen: \"text-white bg-white/10\",\n langChevron: \"text-white/40\",\n icon: \"text-white/60 hover:text-white hover:bg-white/10\",\n mobileTrigger: \"text-white/70 hover:text-primary-400 hover:bg-white/8\",\n mobileDrawer: \"bg-primary-900 border-t border-white/10\",\n mobileLink: \"text-white hover:text-primary-400 border-b border-white/10\",\n mobileSub: \"text-white/70 font-bold hover:text-primary-400 border-b border-white/8\",\n mobileLangActive: \"text-primary-400 font-semibold\",\n mobileLangIdle: \"text-white/40 hover:text-primary-400\",\n logoBlend: \"mix-blend-screen\",\n },\n white: {\n header: \"bg-white border-b border-border shadow-sm\",\n navItem: \"text-foreground/70 hover:text-foreground\",\n navItemOpen: \"text-foreground bg-muted\",\n chevron: \"text-foreground/35\",\n lang: \"text-foreground/60 hover:text-foreground\",\n langOpen: \"text-foreground bg-muted\",\n langChevron: \"text-foreground/30\",\n icon: \"text-foreground/50 hover:text-foreground hover:bg-muted\",\n mobileTrigger: \"text-foreground/50 hover:text-foreground hover:bg-muted\",\n mobileDrawer: \"bg-white border-t border-border\",\n mobileLink: \"text-foreground/80 hover:text-foreground border-b border-border\",\n mobileSub: \"text-foreground/50 font-bold hover:text-foreground border-b border-border/40\",\n mobileLangActive: \"text-primary font-semibold\",\n mobileLangIdle: \"text-muted-foreground hover:text-foreground\",\n logoBlend: \"invert mix-blend-multiply\",\n },\n dark: {\n header: \"bg-neutral-950 border-b border-white/10\",\n navItem: \"text-white/70 hover:text-white\",\n navItemOpen: \"text-white bg-white/10\",\n chevron: \"text-white/40\",\n lang: \"text-white/60 hover:text-white\",\n langOpen: \"text-white bg-white/10\",\n langChevron: \"text-white/30\",\n icon: \"text-white/50 hover:text-white hover:bg-white/10\",\n mobileTrigger: \"text-white/50 hover:text-white hover:bg-white/10\",\n mobileDrawer: \"bg-neutral-950 border-t border-white/10\",\n mobileLink: \"text-white/80 hover:text-white border-b border-white/8\",\n mobileSub: \"text-white/45 font-bold hover:text-white border-b border-white/5\",\n mobileLangActive: \"text-white font-semibold\",\n mobileLangIdle: \"text-white/35 hover:text-white/60\",\n logoBlend: \"mix-blend-screen\",\n },\n};\n\n/* -----------------------------------------------------------------------\n Default data\n ----------------------------------------------------------------------- */\nexport const DEFAULT_HEADER_LINKS: SiteHeaderLink[] = [\n { label: \"All trips\", href: \"#\" },\n {\n label: \"Destinations\",\n items: [\n { label: \"Europe\", href: \"#\" },\n { label: \"South America\", href: \"#\" },\n { label: \"Africa\", href: \"#\" },\n { label: \"Asia\", href: \"#\" },\n { label: \"North America\", href: \"#\" },\n { label: \"Oceania\", href: \"#\" },\n ],\n },\n {\n label: \"Travel themes\",\n items: [\n { label: \"Adventure\", href: \"#\" },\n { label: \"Cultural\", href: \"#\" },\n { label: \"Wildlife\", href: \"#\" },\n { label: \"Beach & Coast\", href: \"#\" },\n { label: \"Trekking\", href: \"#\" },\n ],\n },\n {\n label: \"About\",\n items: [\n { label: \"About us\", href: \"#\" },\n { label: \"Sustainability\", href: \"#\" },\n { label: \"Jobs\", href: \"#\" },\n { label: \"FAQ\", href: \"#\" },\n { label: \"Contact\", href: \"#\" },\n { label: \"Gift Card\", href: \"#\" },\n ],\n },\n { label: \"Blog\", href: \"#\" },\n];\n\nexport const DEFAULT_LANGUAGES: SiteHeaderLanguage[] = [\n { code: \"EN\", label: \"English\" },\n { code: \"PT\", label: \"Português\" },\n { code: \"NL\", label: \"Nederlands\" },\n { code: \"DE\", label: \"Deutsch\" },\n { code: \"FR\", label: \"Français\" },\n { code: \"ES\", label: \"Español\" },\n];\n\n/* -----------------------------------------------------------------------\n Dropdown panel (shared, always white)\n ----------------------------------------------------------------------- */\nfunction NavDropdown({\n items,\n onClose,\n onMouseEnter,\n onMouseLeave,\n}: {\n items: SiteHeaderSubItem[];\n onClose: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}) {\n return (\n <div\n className=\"absolute top-[calc(100%+8px)] left-0 min-w-[200px] rounded-xl bg-white shadow-2xl border border-black/8 py-1.5 z-50\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {items.map((item) => (\n <a\n key={item.label}\n href={item.href ?? \"#\"}\n onClick={onClose}\n className=\"block px-5 py-2.5 text-sm text-foreground/75 font-ui font-bold hover:text-foreground hover:bg-muted transition-colors whitespace-nowrap\"\n >\n {item.label}\n </a>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n Language dropdown (shared, always white)\n ----------------------------------------------------------------------- */\nfunction LangDropdown({\n languages,\n activeLang,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: {\n languages: SiteHeaderLanguage[];\n activeLang: string;\n onSelect: (code: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}) {\n return (\n <div\n className=\"absolute top-[calc(100%+8px)] right-0 min-w-[160px] rounded-xl bg-white shadow-2xl border border-black/8 py-1.5 z-50\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {languages.map((lang) => (\n <button\n key={lang.code}\n type=\"button\"\n onClick={() => onSelect(lang.code)}\n className={cn(\n \"flex items-center gap-3 w-full px-5 py-2.5 text-sm font-ui text-left transition-colors hover:bg-muted\",\n lang.code === activeLang ? \"text-primary font-semibold\" : \"text-foreground\"\n )}\n >\n <span className=\"font-semibold w-8 shrink-0\">{lang.code}</span>\n <span className=\"text-muted-foreground\">{lang.label}</span>\n </button>\n ))}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------\n SiteHeader\n ----------------------------------------------------------------------- */\nexport function SiteHeader({\n variant = \"transparent\",\n links = DEFAULT_HEADER_LINKS,\n logoSrc = \"/logo-planetaexo.png\",\n logoAlt = \"Planeta Exo\",\n languages = DEFAULT_LANGUAGES,\n currentLanguage = \"EN\",\n onLanguageChange,\n onSearch,\n onAccount,\n position = variant === \"transparent\" ? \"overlay\" : \"fixed\",\n className,\n}: SiteHeaderProps) {\n const t = VARIANT[variant];\n\n const [openMenu, setOpenMenu] = React.useState<string | null>(null);\n const [langOpen, setLangOpen] = React.useState(false);\n const [mobileOpen, setMobileOpen] = React.useState(false);\n const [openMobileSection, setOpenMobileSection] = React.useState<string | null>(null);\n const [activeLang, setActiveLang] = React.useState(currentLanguage);\n\n const toggleMobileSection = (label: string) =>\n setOpenMobileSection((prev) => (prev === label ? null : label));\n\n const menuCloseTimer = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n const langCloseTimer = React.useRef<ReturnType<typeof setTimeout>>(undefined);\n\n const handleMenuEnter = (label: string) => {\n clearTimeout(menuCloseTimer.current);\n setOpenMenu(label);\n };\n\n const handleMenuLeave = () => {\n menuCloseTimer.current = setTimeout(() => setOpenMenu(null), 120);\n };\n\n const handleLangEnter = () => {\n clearTimeout(langCloseTimer.current);\n setLangOpen(true);\n };\n\n const handleLangLeave = () => {\n langCloseTimer.current = setTimeout(() => setLangOpen(false), 120);\n };\n\n const closeAll = () => {\n clearTimeout(menuCloseTimer.current);\n clearTimeout(langCloseTimer.current);\n setOpenMenu(null);\n setLangOpen(false);\n };\n\n React.useEffect(() => () => {\n clearTimeout(menuCloseTimer.current);\n clearTimeout(langCloseTimer.current);\n }, []);\n\n const handleLangSelect = (code: string) => {\n setActiveLang(code);\n onLanguageChange?.(code);\n setLangOpen(false);\n };\n\n const positionClass =\n position === \"overlay\" ? \"absolute\" :\n position === \"fixed\" ? \"fixed\" :\n \"relative\";\n\n return (\n <header\n className={cn(\n positionClass,\n \"top-0 left-0 right-0 z-40\",\n t.header,\n className\n )}\n >\n {/* Extended gradient overlay — only for transparent variant */}\n {variant === \"transparent\" && (\n <div className=\"absolute inset-x-0 top-0 h-52 bg-gradient-to-b from-black/55 via-black/20 to-transparent pointer-events-none\" />\n )}\n\n <div className=\"relative flex items-center gap-2 px-6 sm:px-10 h-[72px]\">\n\n {/* Logo */}\n <a href=\"#\" className=\"shrink-0 flex items-center mr-4\">\n <img\n src={logoSrc}\n alt={logoAlt}\n className={cn(\"h-11 w-auto select-none\", t.logoBlend)}\n draggable={false}\n />\n </a>\n\n {/* Desktop nav */}\n <nav className=\"hidden lg:flex items-center gap-0.5 mx-auto\">\n {links.map((link) => {\n const hasDropdown = !!(link.items?.length);\n const isOpen = openMenu === link.label;\n return (\n <div\n key={link.label}\n className=\"relative\"\n onMouseEnter={() => hasDropdown && handleMenuEnter(link.label)}\n onMouseLeave={handleMenuLeave}\n >\n <a\n href={link.href ?? \"#\"}\n onClick={hasDropdown ? (e) => e.preventDefault() : undefined}\n className={cn(\n \"flex items-center gap-1 px-3.5 py-1.5 rounded-full\",\n \"text-base font-ui font-black transition-colors whitespace-nowrap\",\n t.navItem,\n isOpen && t.navItemOpen\n )}\n >\n {link.label}\n {hasDropdown && (\n <ChevronDownIcon\n className={cn(\n \"h-3.5 w-3.5 transition-transform duration-150 shrink-0\",\n t.chevron,\n isOpen && \"rotate-180\"\n )}\n />\n )}\n </a>\n {isOpen && link.items && (\n <NavDropdown\n items={link.items}\n onClose={closeAll}\n onMouseEnter={() => handleMenuEnter(link.label)}\n onMouseLeave={handleMenuLeave}\n />\n )}\n </div>\n );\n })}\n </nav>\n\n {/* Right actions */}\n <div className=\"flex items-center gap-1 ml-auto lg:ml-0 shrink-0\">\n\n {/* Language selector — desktop only */}\n {languages.length > 0 && (\n <div\n className=\"relative hidden lg:block\"\n onMouseEnter={handleLangEnter}\n onMouseLeave={handleLangLeave}\n >\n <button\n type=\"button\"\n aria-label=\"Language\"\n className={cn(\n \"flex items-center gap-0.5 px-2.5 py-1.5 rounded-full\",\n \"text-sm font-ui transition-colors\",\n t.lang,\n langOpen && t.langOpen\n )}\n >\n {activeLang}\n <ChevronDownIcon\n className={cn(\n \"h-3 w-3 transition-transform duration-150\",\n t.langChevron,\n langOpen && \"rotate-180\"\n )}\n />\n </button>\n\n {langOpen && (\n <LangDropdown\n languages={languages}\n activeLang={activeLang}\n onSelect={handleLangSelect}\n onMouseEnter={handleLangEnter}\n onMouseLeave={handleLangLeave}\n />\n )}\n </div>\n )}\n\n {/* Search — always visible */}\n <button\n type=\"button\"\n onClick={onSearch}\n aria-label=\"Search\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.icon\n )}\n >\n <SearchIcon className=\"h-[18px] w-[18px]\" />\n </button>\n\n {/* Account — always visible */}\n <button\n type=\"button\"\n onClick={onAccount}\n aria-label=\"Account\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.icon\n )}\n >\n <UserIcon className=\"h-[18px] w-[18px]\" />\n </button>\n\n {/* Hamburger — mobile only */}\n <button\n type=\"button\"\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n className={cn(\n \"flex lg:hidden h-9 w-9 items-center justify-center rounded-full transition-colors ml-0.5\",\n t.mobileTrigger\n )}\n >\n <MenuIcon className=\"h-[18px] w-[18px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Mobile full-screen overlay ────────────────────────────────────── */}\n {mobileOpen && (\n <div\n className={cn(\n \"fixed inset-0 z-50 lg:hidden flex flex-col\",\n variant === \"white\" ? \"bg-white\" : \"bg-primary-900\"\n )}\n >\n {/* Drawer header */}\n <div className=\"flex items-center justify-between px-6 h-[72px] shrink-0 border-b border-white/8\">\n <a href=\"#\" className=\"shrink-0 flex items-center\" onClick={() => setMobileOpen(false)}>\n <img\n src={logoSrc}\n alt={logoAlt}\n className={cn(\"h-11 w-auto select-none\", t.logoBlend)}\n draggable={false}\n />\n </a>\n <button\n type=\"button\"\n onClick={() => setMobileOpen(false)}\n aria-label=\"Close menu\"\n className={cn(\n \"flex h-9 w-9 items-center justify-center rounded-full transition-colors\",\n t.mobileTrigger\n )}\n >\n <XIcon className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Nav links — scrollable */}\n <nav className=\"flex-1 overflow-y-auto px-6 py-6 flex flex-col gap-1\">\n {links.map((link) => {\n const hasDropdown = !!(link.items?.length);\n const isExpanded = openMobileSection === link.label;\n return (\n <div key={link.label}>\n {hasDropdown ? (\n <button\n type=\"button\"\n onClick={() => toggleMobileSection(link.label)}\n className={cn(\n \"flex items-center justify-between w-full py-4 text-xl font-ui font-black transition-colors border-b border-white/8\",\n t.mobileLink\n )}\n >\n {link.label}\n <ChevronDownIcon\n className={cn(\n \"h-5 w-5 transition-transform duration-200 opacity-40\",\n isExpanded && \"rotate-180\"\n )}\n />\n </button>\n ) : (\n <a\n href={link.href ?? \"#\"}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"flex items-center py-4 text-xl font-ui font-black transition-colors border-b border-white/8\",\n t.mobileLink\n )}\n >\n {link.label}\n </a>\n )}\n\n {/* Expanded sub-items */}\n {hasDropdown && isExpanded && (\n <div className=\"flex flex-col gap-0 pl-4 pb-2\">\n {link.items!.map((item) => (\n <a\n key={item.label}\n href={item.href ?? \"#\"}\n onClick={() => setMobileOpen(false)}\n className={cn(\n \"py-3 text-base font-ui font-bold transition-colors border-b\",\n t.mobileSub\n )}\n >\n {item.label}\n </a>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </nav>\n\n {/* Footer: language + action icons */}\n <div className={cn(\n \"shrink-0 px-6 py-5 flex items-center justify-between border-t\",\n variant === \"white\" ? \"border-border\" : \"border-white/10\"\n )}>\n {/* Language selector */}\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {languages.map((lang, i) => {\n const isActive = lang.code === activeLang;\n return (\n <React.Fragment key={lang.code}>\n {i > 0 && (\n <span className={cn(\n \"text-xs select-none\",\n variant === \"white\" ? \"text-border\" : \"text-white/15\"\n )}>·</span>\n )}\n <button\n type=\"button\"\n onClick={() => handleLangSelect(lang.code)}\n className={cn(\n \"font-ui font-black transition-all duration-150 rounded-full\",\n isActive\n ? cn(\n \"text-sm px-3 py-1 border\",\n variant === \"white\"\n ? \"text-primary border-primary bg-primary/8\"\n : \"text-primary-400 border-primary-400/50 bg-primary-400/10\"\n )\n : cn(\n \"text-xs px-2 py-1\",\n variant === \"white\"\n ? \"text-muted-foreground hover:text-foreground\"\n : \"text-white/35 hover:text-white/70\"\n )\n )}\n >\n {lang.code}\n </button>\n </React.Fragment>\n );\n })}\n </div>\n\n {/* Icons */}\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => { onSearch?.(); setMobileOpen(false); }}\n aria-label=\"Search\"\n className={cn(\"flex h-9 w-9 items-center justify-center rounded-full transition-colors\", t.icon)}\n >\n <SearchIcon className=\"h-[18px] w-[18px]\" />\n </button>\n <button\n type=\"button\"\n onClick={() => { onAccount?.(); setMobileOpen(false); }}\n aria-label=\"Account\"\n className={cn(\"flex h-9 w-9 items-center justify-center rounded-full transition-colors\", t.icon)}\n >\n <UserIcon className=\"h-[18px] w-[18px]\" />\n </button>\n </div>\n </div>\n </div>\n )}\n </header>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { SunIcon, MoonIcon } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\nexport function ThemeToggle({ className }: { className?: string }) {\n const [dark, setDark] = React.useState(false);\n\n React.useEffect(() => {\n const saved = localStorage.getItem(\"theme\");\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const isDark = saved === \"dark\" || (!saved && prefersDark);\n setDark(isDark);\n document.documentElement.classList.toggle(\"dark\", isDark);\n }, []);\n\n const toggle = () => {\n const next = !dark;\n setDark(next);\n document.documentElement.classList.toggle(\"dark\", next);\n localStorage.setItem(\"theme\", next ? \"dark\" : \"light\");\n };\n\n return (\n <button\n type=\"button\"\n onClick={toggle}\n aria-label={dark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-md\",\n \"bg-card border border-border text-muted-foreground shadow-sm\",\n \"hover:text-foreground hover:bg-muted transition-colors\",\n className\n )}\n >\n {dark ? <SunIcon className=\"h-4 w-4\" /> : <MoonIcon className=\"h-4 w-4\" />}\n </button>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n// ─── Icons ────────────────────────────────────────────────────────────────────\n\nfunction CalendarIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n );\n}\n\nfunction TrendingIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" />\n <polyline points=\"17 6 23 6 23 12\" />\n </svg>\n );\n}\n\nfunction ArrowIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n <polyline points=\"12 5 19 12 12 19\" />\n </svg>\n );\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type TripCardStatus = \"sold-out\" | \"trending\";\n\nexport type TripCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TripCardCta {\n /** Texto do link (ex: \"Discover this trip\" ou \"5 dates available\") */\n label: string;\n onClick?: () => void;\n href?: string;\n}\n\nexport interface TripCardProps {\n /** URL da imagem de capa */\n image: string;\n imageAlt?: string;\n /** Badge de status exibido no topo esquerdo */\n status?: TripCardStatus;\n /** Número de noites */\n nights?: number;\n /** Período (ex: \"Feb - Mar\") */\n period?: string;\n /** Título da viagem */\n title: string;\n /** Descrição curta */\n description?: string;\n /** Link/CTA de ação */\n cta?: TripCardCta;\n /** Preço exibido ao lado do CTA (ex: \"from € 769\") */\n price?: string;\n size?: TripCardSize;\n className?: string;\n}\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\nconst sizeConfig: Record<TripCardSize, { card: string; title: string; meta: string; description: string }> = {\n sm: {\n card: \"h-72 w-56\",\n title: \"text-lg font-bold\",\n meta: \"text-xs\",\n description: \"text-xs\",\n },\n md: {\n card: \"h-96 w-72\",\n title: \"text-xl font-bold\",\n meta: \"text-xs\",\n description: \"text-sm\",\n },\n lg: {\n card: \"h-[28rem] w-96\",\n title: \"text-2xl font-bold\",\n meta: \"text-sm\",\n description: \"text-sm\",\n },\n};\n\n// ─── Status badge config ──────────────────────────────────────────────────────\n\nconst statusConfig: Record<TripCardStatus, { label: string; icon: React.ReactNode }> = {\n \"sold-out\": {\n label: \"All seats taken\",\n icon: <CalendarIcon />,\n },\n trending: {\n label: \"Trending\",\n icon: <TrendingIcon />,\n },\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function TripCard({\n image,\n imageAlt = \"\",\n status,\n nights,\n period,\n title,\n description,\n cta,\n price,\n size = \"md\",\n className,\n}: TripCardProps) {\n const s = sizeConfig[size];\n const statusInfo = status ? statusConfig[status] : null;\n\n const meta = [\n nights ? `${nights} nights` : null,\n period ?? null,\n ]\n .filter(Boolean)\n .join(\" | \");\n\n return (\n <div\n className={cn(\n \"group relative flex flex-col justify-between overflow-hidden rounded-2xl\",\n \"shadow-md transition-shadow duration-300 hover:shadow-xl\",\n s.card,\n className\n )}\n >\n {/* Full-bleed image */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={imageAlt}\n className=\"absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105\"\n />\n\n {/* Bottom gradient overlay */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent\" />\n\n {/* Status badge — top left */}\n {statusInfo && (\n <div className=\"relative z-10 p-3\">\n <div className=\"inline-flex items-center gap-1.5 rounded-xl bg-card/90 px-3 py-1.5 backdrop-blur-sm shadow-sm\">\n <span className=\"text-primary\">{statusInfo.icon}</span>\n <span className=\"text-xs font-semibold text-foreground font-ui\">\n {statusInfo.label}\n </span>\n </div>\n </div>\n )}\n\n {/* Spacer when no badge */}\n {!statusInfo && <div className=\"relative z-10\" />}\n\n {/* Bottom content */}\n <div className=\"relative z-10 flex flex-col gap-1.5 p-5\">\n {/* Meta */}\n {meta && (\n <p className={cn(\"text-white/70 font-medium font-ui\", s.meta)}>{meta}</p>\n )}\n\n {/* Title */}\n <h3 className={cn(\"text-white leading-snug\", s.title)}>{title}</h3>\n\n {/* Description */}\n {description && (\n <p className={cn(\"text-white/80 leading-relaxed mt-0.5\", s.description)}>\n {description}\n </p>\n )}\n\n {/* CTA row */}\n {(cta || price) && (\n <div className=\"mt-3 flex items-center justify-between gap-4\">\n {cta && (\n <button\n onClick={cta.onClick}\n className={cn(\n \"group/cta inline-flex items-center gap-1.5 border-b border-white/70 pb-0.5\",\n \"text-sm font-semibold text-white transition-colors hover:border-white hover:text-white\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\",\n \"font-ui\"\n )}\n >\n {cta.label}\n <span className=\"transition-transform duration-150 group-hover/cta:translate-x-0.5\">\n <ArrowIcon />\n </span>\n </button>\n )}\n {price && (\n <p className=\"text-sm font-semibold text-white/90 whitespace-nowrap font-ui\">\n {price}\n </p>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n MapPinIcon,\n MoonIcon,\n SunIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { SiteHeader, type SiteHeaderLink } from \"@/components/SiteHeader\";\n\n/* -----------------------------------------------------------------------\n HLS player hook\n Detects .m3u8 URLs and uses hls.js for adaptive streaming.\n Falls back to native <video src> for plain MP4 / native HLS (Safari).\n ----------------------------------------------------------------------- */\nfunction useHlsVideo(\n videoRef: React.RefObject<HTMLVideoElement | null>,\n src: string | undefined\n) {\n React.useEffect(() => {\n if (!src || !videoRef.current) return;\n const video = videoRef.current;\n\n /* Only activate hls.js for HLS manifests */\n if (!src.includes(\".m3u8\")) return;\n\n let hlsInstance: import(\"hls.js\").default | null = null;\n\n import(\"hls.js\").then(({ default: Hls }) => {\n /* Safari supports HLS natively — no need for hls.js */\n if (!Hls.isSupported()) {\n video.src = src;\n return;\n }\n hlsInstance = new Hls({\n /* Start with low-quality level to show first frame ASAP */\n startLevel: 0,\n /* Limit initial buffer to 10s — faster start */\n maxBufferLength: 10,\n maxMaxBufferLength: 30,\n });\n hlsInstance.loadSource(src);\n hlsInstance.attachMedia(video);\n hlsInstance.on(Hls.Events.MANIFEST_PARSED, () => {\n video.play().catch(() => {});\n });\n });\n\n return () => {\n hlsInstance?.destroy();\n };\n }, [src, videoRef]);\n}\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface TripDuration {\n /** Total number of days */\n days: number;\n /** Number of nights — defaults to days - 1 */\n nights?: number;\n}\n\nexport interface TripHeaderProps {\n /** Hero image array — shows a carousel when more than one image */\n images: string[];\n /** Optional video URL — plays as background instead of the image carousel */\n videoUrl?: string;\n /** Main trip title */\n title: string;\n /** Breadcrumb trail displayed above the title */\n breadcrumb?: Array<{ label: string; href?: string }>;\n /** Destination name shown with a map pin icon */\n destination?: string;\n /** Duration shown with a moon/sun icon */\n duration?: TripDuration;\n /** Legacy tagline — shown only when destination/duration are not provided */\n tagline?: string;\n /** Pass true (or a links array) to render the transparent SiteHeader over the hero */\n siteHeader?: boolean | SiteHeaderLink[];\n /** Alinhado ao TripPage — reservado para densidade / hero v2 */\n uiVariant?: \"v1\" | \"v2\";\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n TripHeader\n ----------------------------------------------------------------------- */\nexport function TripHeader({\n images,\n videoUrl,\n title,\n breadcrumb,\n destination,\n duration,\n tagline,\n siteHeader,\n uiVariant = \"v1\",\n className,\n}: TripHeaderProps) {\n const [heroIndex, setHeroIndex] = React.useState(0);\n /* Tracks whether the video has buffered enough to play — drives the crossfade */\n const [videoReady, setVideoReady] = React.useState(false);\n const videoRef = React.useRef<HTMLVideoElement>(null);\n\n const isHls = !!videoUrl?.includes(\".m3u8\");\n\n const validImages = React.useMemo(\n () => images.map((u) => u?.trim()).filter(Boolean) as string[],\n [images]\n );\n const hasHeroImage = validImages.length > 0;\n const heroSrc = (i: number) => validImages[i] ?? \"\";\n const safeIndex = Math.min(heroIndex, Math.max(0, validImages.length - 1));\n const currentSrc = heroSrc(safeIndex);\n const showCarousel = !videoUrl && validImages.length > 1;\n\n const nights = duration\n ? (duration.nights ?? Math.max(duration.days - 1, 1))\n : null;\n\n const hasMeta = !!(destination || duration);\n\n /* Activate HLS.js for .m3u8 streams (adaptive bitrate) */\n useHlsVideo(videoRef, isHls ? videoUrl : undefined);\n\n /* Pause video when scrolled out of view — saves CPU / mobile battery */\n React.useEffect(() => {\n if (!videoUrl) return;\n const el = videoRef.current;\n if (!el) return;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n el.play().catch(() => {});\n } else {\n el.pause();\n }\n },\n { threshold: 0.1 }\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, [videoUrl]);\n\n return (\n <div\n className={cn(\"w-full\", className)}\n data-trip-header-variant={uiVariant}\n >\n {/* ── Hero image / video ──────────────────────────────────────────── */}\n <div\n className={cn(\n \"relative w-full overflow-hidden\",\n hasHeroImage ? \"bg-muted\" : \"bg-zinc-900\",\n siteHeader ? \"h-[80vh] min-h-[520px]\" : \"h-[70vh] min-h-[420px]\"\n )}\n >\n {/* Sem imagem nem vídeo: fundo escuro legível com título branco por cima */}\n {!videoUrl && !hasHeroImage && (\n <div\n className=\"absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950\"\n aria-hidden\n />\n )}\n {/* Media */}\n {videoUrl ? (\n <>\n {/*\n Poster image — shown instantly while the video downloads.\n fetchPriority=\"high\" ensures it's treated as an LCP resource.\n Fades out once the video is ready to play.\n */}\n {hasHeroImage ? (\n <img\n src={validImages[0]}\n alt=\"\"\n aria-hidden\n fetchPriority=\"high\"\n className={cn(\n \"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\",\n videoReady ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n />\n ) : (\n <div\n className=\"absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950 transition-opacity duration-700\"\n aria-hidden\n />\n )}\n {/*\n Video starts loading immediately (preload=\"auto\").\n poster= is a native browser fallback for non-JS contexts.\n Fades in once canplay fires.\n */}\n <video\n ref={videoRef}\n /* For plain MP4: set src directly.\n For HLS (.m3u8): src is managed by hls.js — leave it unset. */\n src={isHls ? undefined : videoUrl}\n autoPlay\n muted\n loop\n playsInline\n preload=\"auto\"\n poster={hasHeroImage ? validImages[0] : undefined}\n onCanPlay={() => setVideoReady(true)}\n className={cn(\n \"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\",\n videoReady ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n </>\n ) : hasHeroImage ? (\n <img\n src={currentSrc}\n alt={title}\n fetchPriority={safeIndex === 0 ? \"high\" : \"auto\"}\n className=\"absolute inset-0 h-full w-full object-cover transition-opacity duration-700\"\n />\n ) : null}\n\n {/* Gradient */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/85 via-black/20 to-transparent\" />\n\n {/* SiteHeader overlay */}\n {siteHeader && (\n <SiteHeader\n links={Array.isArray(siteHeader) ? siteHeader : undefined}\n position=\"overlay\"\n />\n )}\n\n {/* Carousel controls */}\n {!videoUrl && showCarousel && (\n <>\n <button\n type=\"button\"\n onClick={() =>\n setHeroIndex(\n (i) => (i - 1 + validImages.length) % validImages.length\n )\n }\n className=\"absolute left-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors\"\n aria-label=\"Imagem anterior\"\n >\n <ChevronLeftIcon className=\"h-5 w-5\" />\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setHeroIndex((i) => (i + 1) % validImages.length)\n }\n className=\"absolute right-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors\"\n aria-label=\"Próxima imagem\"\n >\n <ChevronRightIcon className=\"h-5 w-5\" />\n </button>\n <div className=\"absolute bottom-5 right-5 flex gap-1.5\">\n {validImages.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => setHeroIndex(i)}\n className={cn(\n \"h-1.5 rounded-full transition-all\",\n i === safeIndex\n ? \"w-5 bg-white\"\n : \"w-1.5 bg-white/50\"\n )}\n />\n ))}\n </div>\n </>\n )}\n </div>\n\n {/* ── Hero text — overlaps hero via negative margin ───────────────── */}\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6\">\n <div\n className={cn(\n \"relative z-10 pb-10\",\n siteHeader ? \"-mt-44\" : \"-mt-36\"\n )}\n >\n {/* Breadcrumb */}\n {breadcrumb && breadcrumb.length > 0 && (\n <div className=\"mb-3 flex items-center gap-1.5 flex-wrap\">\n {breadcrumb.map((crumb, i) => (\n <React.Fragment key={i}>\n {i > 0 && (\n <ChevronRightIcon className=\"h-3 w-3 text-white/50 shrink-0\" />\n )}\n <span className=\"text-xs text-white/70 font-ui hover:text-white/90 cursor-default\">\n {crumb.label}\n </span>\n </React.Fragment>\n ))}\n </div>\n )}\n\n {/* Title */}\n <h1 className=\"text-3xl sm:text-5xl font-bold text-white font-heading leading-tight\">\n {title}\n </h1>\n\n {/* Destination + Duration */}\n {hasMeta ? (\n <div className=\"mt-3 flex items-center gap-5 flex-wrap\">\n {destination && (\n <div className=\"flex items-center gap-1.5 text-white/85\">\n <MapPinIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {destination}\n </span>\n </div>\n )}\n {duration && nights !== null && (\n <div className=\"flex items-center gap-1.5 text-white/85\">\n <MoonIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {nights} {nights === 1 ? \"noite\" : \"noites\"}\n </span>\n <span className=\"text-white/40\">·</span>\n <SunIcon className=\"h-4 w-4 shrink-0 text-primary-400\" />\n <span className=\"text-sm font-ui font-semibold\">\n {duration.days} {duration.days === 1 ? \"dia\" : \"dias\"}\n </span>\n </div>\n )}\n </div>\n ) : tagline ? (\n <p className=\"mt-2 text-sm sm:text-base text-white/80 font-ui\">\n {tagline}\n </p>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ClockIcon,\n MapPinIcon,\n CheckIcon,\n ChevronRightIcon,\n StarIcon,\n InfoIcon,\n PackageIcon,\n SunIcon,\n UsersIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Separator } from \"@/components/ui/separator\";\nimport {\n Accordion,\n AccordionItem,\n AccordionTrigger,\n AccordionContent,\n} from \"@/components/ui/accordion\";\nimport { MenuTrip } from \"@/components/MenuTrip\";\nimport { PricingTrip } from \"@/components/PricingTrip\";\nimport { BookingForm } from \"@/components/BookingForm\";\nimport { PhotoGallery } from \"@/components/PhotoGallery\";\nimport { TripHeader, type TripDuration } from \"@/components/TripHeader\";\nimport type { SiteHeaderLink } from \"@/components/SiteHeader\";\nimport type { PhotoGalleryPhoto } from \"@/components/PhotoGallery\";\n\n/* -----------------------------------------------------------------------\n Types\n ----------------------------------------------------------------------- */\nexport interface TripHighlight {\n label: string;\n icon?: React.ReactNode;\n}\n\nexport interface TripInfoGroup {\n title: string;\n icon?: React.ReactNode;\n items: string[];\n}\n\nexport interface TripItineraryStep {\n label: string;\n duration?: string;\n description: React.ReactNode;\n isTransfer?: boolean;\n}\n\nexport interface TripReview {\n author: string;\n text: string;\n rating?: number; // 1-5, defaults to 5\n}\n\nexport interface TripPricingOption {\n label: string;\n originalPrice?: string;\n price: string;\n unit?: string; // \"guest\", \"group\", etc.\n}\n\nexport interface TripMeetingPoint {\n name: string;\n address: string;\n type?: \"start\" | \"alternative\" | \"activity\";\n}\n\nexport interface TripFaq {\n question: string;\n answer: React.ReactNode;\n}\n\nexport type { TripDuration };\n\nexport interface TripPageProps {\n /* Hero */\n title: string;\n /** Legacy tagline — shown only when destination/duration are not provided */\n tagline?: string;\n /** Destination name shown with a map-pin icon in the hero */\n destination?: string;\n /** Duration shown with moon/sun icons in the hero */\n duration?: TripDuration;\n images: string[];\n /** Optional video URL — plays as background instead of the image carousel */\n videoUrl?: string;\n /** Breadcrumb trail displayed above the title */\n breadcrumb?: Array<{ label: string; href?: string }>;\n highlights?: TripHighlight[];\n\n /* Info groups: facts, requirements, tips */\n infoGroups?: TripInfoGroup[];\n\n /* Overview */\n recommendedFor?: string;\n overview?: React.ReactNode;\n\n /* Itinerary */\n itinerary?: TripItineraryStep[];\n\n /* Photo gallery — shown full-width after itinerary */\n gallery?: (string | PhotoGalleryPhoto)[];\n\n /* Included / What to bring */\n included?: string[];\n whatToBring?: string[];\n\n /* Weather */\n weather?: React.ReactNode;\n\n /* Meeting points */\n meetingPoints?: TripMeetingPoint[];\n\n /* FAQ */\n faqs?: TripFaq[];\n\n /* Reviews */\n reviews?: TripReview[];\n\n /* Booking */\n priceFrom: string;\n currency?: string;\n season?: string;\n departureTimes?: string[];\n pricingOptions?: TripPricingOption[];\n onBook?: () => void;\n bookLabel?: string;\n\n /** Pass true (or a links array) to render the transparent SiteHeader over the hero */\n siteHeader?: boolean | SiteHeaderLink[];\n\n /** Preset de layout (ilha WP / styleguide). @default v1 */\n uiVariant?: \"v1\" | \"v2\";\n /** Feature flags para ramos de UI sem duplicar componentes. */\n features?: Record<string, boolean>;\n\n className?: string;\n}\n\n/* -----------------------------------------------------------------------\n Internal sub-components\n ----------------------------------------------------------------------- */\n\n/** Star rating row */\nfunction Stars({ count = 5 }: { count?: number }) {\n return (\n <span className=\"flex gap-0.5\">\n {Array.from({ length: 5 }).map((_, i) => (\n <StarIcon\n key={i}\n className={cn(\n \"h-3.5 w-3.5\",\n i < count ? \"fill-primary text-primary\" : \"fill-muted text-muted\"\n )}\n />\n ))}\n </span>\n );\n}\n\n/** Itinerary vertical timeline */\nfunction ItineraryTimeline({ steps }: { steps: TripItineraryStep[] }) {\n return (\n <ol className=\"relative flex flex-col gap-0\">\n {steps.map((step, i) => (\n <li key={i} className=\"relative flex gap-4 pb-8 last:pb-0\">\n {/* Vertical line */}\n {i < steps.length - 1 && (\n <div className=\"absolute left-3.5 top-7 bottom-0 w-px bg-border\" />\n )}\n\n {/* Dot */}\n <div className=\"relative z-10 mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-full border-2 border-primary bg-background\">\n <span className=\"text-[10px] font-bold text-primary font-ui\">\n {i + 1}\n </span>\n </div>\n\n {/* Content */}\n <div className=\"flex flex-col gap-1 pt-0.5 flex-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h4 className=\"text-sm font-bold text-foreground font-heading\">\n {step.label}\n </h4>\n {step.duration && (\n <Badge variant=\"outline\" className=\"text-xs font-ui h-5 px-2\">\n <ClockIcon className=\"h-3 w-3 mr-1\" />\n {step.duration}\n </Badge>\n )}\n {step.isTransfer && (\n <Badge variant=\"secondary\" className=\"text-xs font-ui h-5 px-2\">\n Transfer\n </Badge>\n )}\n </div>\n <div className=\"text-sm text-muted-foreground leading-relaxed [&_p:not(:last-child)]:mb-2 [&_strong]:text-foreground [&_strong]:font-semibold\">\n {step.description}\n </div>\n </div>\n </li>\n ))}\n </ol>\n );\n}\n\n/** Included / gear checklist */\nfunction Checklist({ items, icon }: { items: string[]; icon?: React.ReactNode }) {\n return (\n <ul className=\"flex flex-col gap-2\">\n {items.map((item, i) => (\n <li key={i} className=\"flex items-start gap-2.5 text-sm text-foreground\">\n <span className=\"mt-0.5 shrink-0 text-primary\">\n {icon ?? <CheckIcon className=\"h-4 w-4\" />}\n </span>\n {item}\n </li>\n ))}\n </ul>\n );\n}\n\n\n/* -----------------------------------------------------------------------\n TripPage\n ----------------------------------------------------------------------- */\nexport function TripPage({\n title,\n tagline,\n destination,\n duration,\n images,\n videoUrl,\n breadcrumb,\n highlights,\n infoGroups,\n recommendedFor,\n overview,\n itinerary,\n gallery,\n included,\n whatToBring,\n weather,\n meetingPoints,\n faqs,\n reviews,\n priceFrom,\n currency = \"CHF\",\n season,\n departureTimes,\n pricingOptions,\n onBook,\n bookLabel,\n siteHeader,\n uiVariant = \"v1\",\n features,\n className,\n}: TripPageProps) {\n const [activeSection, setActiveSection] = React.useState(\"\");\n /*\n * navFloating — true as soon as the TripHeader scrolls off the viewport.\n * Controls the MenuTrip visibility.\n * isFloating — true when highlights + separator have scrolled off.\n * Controls the PricingTrip sidebar switch from sticky → fixed.\n * These are intentionally separate so the nav appears earlier and the\n * sidebar transition does not displace the nav placeholder.\n */\n const [navFloating, setNavFloating] = React.useState(false);\n /* navHidden — hides the MenuTrip only when the booking form itself enters view */\n const [navHidden, setNavHidden] = React.useState(false);\n const [isFloating, setIsFloating] = React.useState(false);\n const [sidebarPos, setSidebarPos] = React.useState<{ left: number; width: number } | null>(null);\n const [pricingBarVisible, setPricingBarVisible] = React.useState(false);\n const navRef = React.useRef<HTMLDivElement>(null);\n /* navSentinelRef — placed at the very top of the constrained container */\n const navSentinelRef = React.useRef<HTMLDivElement>(null);\n /* sentinelRef — placed after highlights + separator (triggers sidebar float) */\n const sentinelRef = React.useRef<HTMLDivElement>(null);\n const sidebarPlaceholderRef = React.useRef<HTMLDivElement>(null);\n const pricingBarRef = React.useRef<HTMLDivElement>(null);\n const galleryRef = React.useRef<HTMLElement>(null);\n\n /* Build section list once from props */\n const sections = React.useMemo(\n () =>\n [\n { id: \"key-info\", label: \"Key info\", show: !!infoGroups?.length },\n { id: \"overview\", label: \"Overview\", show: !!overview },\n { id: \"itinerary\", label: \"Itinerary\", show: !!itinerary?.length },\n { id: \"included\", label: \"Included\", show: !!(included?.length || whatToBring?.length) },\n { id: \"what-to-bring\", label: \"What to bring\", show: !!whatToBring?.length },\n { id: \"weather\", label: \"Weather\", show: !!weather },\n { id: \"meeting\", label: \"Meeting point\", show: !!meetingPoints?.length },\n { id: \"faq\", label: \"FAQ\", show: !!faqs?.length },\n { id: \"gallery\", label: \"Photos\", show: !!gallery?.length },\n ].filter((s) => s.show),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n /* navFloating: fires as soon as the TripHeader scrolls off */\n React.useEffect(() => {\n const sentinel = navSentinelRef.current;\n if (!sentinel) return;\n const update = () => setNavFloating(sentinel.getBoundingClientRect().top < 1);\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n update();\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, []);\n\n /* isFloating: fires after highlights + separator scroll off (sidebar trigger) */\n React.useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n const update = () => setIsFloating(sentinel.getBoundingClientRect().top < 1);\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n update();\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, []);\n\n /* Measure sidebar placeholder position for fixed duplicate.\n Re-runs on resize AND when isFloating changes (layout may shift). */\n React.useEffect(() => {\n const measure = () => {\n if (!sidebarPlaceholderRef.current) return;\n const rect = sidebarPlaceholderRef.current.getBoundingClientRect();\n setSidebarPos({ left: rect.left, width: rect.width });\n };\n measure();\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isFloating]);\n\n /* Hide fixed sidebar when gallery overlaps it (earlier threshold) */\n React.useEffect(() => {\n const check = () => {\n const target = galleryRef.current ?? pricingBarRef.current;\n if (!target) return;\n setPricingBarVisible(target.getBoundingClientRect().top < window.innerHeight * 0.75);\n };\n document.addEventListener(\"scroll\", check, { passive: true, capture: true });\n check();\n return () => document.removeEventListener(\"scroll\", check, { capture: true });\n }, []);\n\n /* Hide MenuTrip nav only when the booking form itself enters the viewport */\n React.useEffect(() => {\n const check = () => {\n if (!pricingBarRef.current) return;\n setNavHidden(pricingBarRef.current.getBoundingClientRect().top < window.innerHeight * 0.92);\n };\n document.addEventListener(\"scroll\", check, { passive: true, capture: true });\n check();\n return () => document.removeEventListener(\"scroll\", check, { capture: true });\n }, []);\n\n /* Scroll-spy: check section positions on every scroll */\n React.useEffect(() => {\n if (sections.length === 0) return;\n setActiveSection(sections[0].id);\n const update = () => {\n const navH = (navRef.current?.offsetHeight ?? 56) + 20;\n for (const { id } of [...sections].reverse()) {\n const el = document.getElementById(`trip-section-${id}`);\n if (el && el.getBoundingClientRect().top <= navH) {\n setActiveSection(id);\n return;\n }\n }\n setActiveSection(sections[0].id);\n };\n document.addEventListener(\"scroll\", update, { passive: true, capture: true });\n return () => document.removeEventListener(\"scroll\", update, { capture: true });\n }, [sections]);\n\n /* Scroll to booking form — mirrors scrollToSection logic */\n const scrollToBookingForm = () => {\n const el = document.getElementById(\"trip-booking-form\");\n if (!el) return;\n const navHeight = (navRef.current?.offsetHeight ?? 56) + 16;\n const scrollEl = navRef.current?.closest(\"main\");\n const elTop = el.getBoundingClientRect().top;\n const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;\n const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;\n const target = currentScroll + (elTop - containerTop) - navHeight;\n if (scrollEl) {\n scrollEl.scrollTo({ top: target, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: target, behavior: \"smooth\" });\n }\n };\n\n /* Click nav → smooth-scroll with offset */\n const scrollToSection = (id: string) => {\n const el = document.getElementById(`trip-section-${id}`);\n if (!el) return;\n const navHeight = navRef.current?.offsetHeight ?? 56;\n /* Find scroll container (main or window) */\n const scrollEl = navRef.current?.closest(\"main\");\n const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;\n const elTop = el.getBoundingClientRect().top;\n const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;\n const target = currentScroll + (elTop - containerTop) - navHeight - 12;\n if (scrollEl) {\n scrollEl.scrollTo({ top: target, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: target, behavior: \"smooth\" });\n }\n };\n\n return (\n <div\n className={cn(\"w-full overflow-x-hidden\", className)}\n data-ui-variant={uiVariant}\n data-features={features ? JSON.stringify(features) : undefined}\n >\n {/* ── TripHeader ──────────────────────────────────────────────────── */}\n <TripHeader\n images={images}\n videoUrl={videoUrl}\n title={title}\n breadcrumb={breadcrumb}\n destination={destination}\n duration={duration}\n tagline={tagline}\n siteHeader={siteHeader}\n uiVariant={uiVariant}\n />\n\n {/* ── All content — constrained container ─────────────────────── */}\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6\">\n\n {/* Highlights */}\n {highlights && highlights.length > 0 && (\n <div className=\"mt-6 flex flex-wrap justify-center gap-6 py-2\">\n {highlights.map((h, i) => (\n <div key={i} className=\"flex flex-col items-center gap-2 text-center\">\n {h.icon && (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full border-2 border-border text-foreground\">\n {h.icon}\n </div>\n )}\n <span className=\"text-sm font-semibold text-foreground font-ui\">{h.label}</span>\n </div>\n ))}\n </div>\n )}\n\n {/*\n Nav sentinel — placed right before the inline MenuTrip so navFloating\n fires exactly when the MenuTrip reaches the top of the viewport.\n */}\n <div ref={navSentinelRef} className=\"h-px\" aria-hidden />\n\n {/*\n Inline MenuTrip — replaces the separator between highlights and content.\n When navFloating is true it becomes invisible (opacity-0, pointer-events-none)\n so it keeps its height in the layout (no reflow) while the fixed copy floats.\n When there are no sections, a plain separator is shown instead.\n */}\n {sections.length > 0 ? (\n <div\n className={cn(\n \"py-2 flex justify-center transition-opacity duration-150\",\n navFloating ? \"opacity-0 pointer-events-none\" : \"opacity-100\"\n )}\n >\n <MenuTrip\n sections={sections}\n activeSection={activeSection}\n onSelect={scrollToSection}\n variant=\"floating\"\n />\n </div>\n ) : (\n <Separator className=\"my-6\" />\n )}\n\n {/* Sidebar sentinel — fires after the MenuTrip scrolls off (sidebar trigger) */}\n <div ref={sentinelRef} className=\"h-px -mt-px\" aria-hidden />\n\n {/* Main layout: content + sidebar placeholder */}\n <div className=\"flex flex-col lg:flex-row gap-8 mt-4\">\n {/* Content column */}\n <div className=\"flex-1 min-w-0 space-y-12 pb-12\">\n\n {/* Key Info */}\n {infoGroups && infoGroups.length > 0 && (\n <section id=\"trip-section-key-info\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">Key info</h2>\n <div className=\"space-y-6\">\n {infoGroups.map((group, i) => (\n <div key={i}>\n <div className=\"flex items-center gap-2 mb-3\">\n {group.icon && <span className=\"text-primary\">{group.icon}</span>}\n <h3 className=\"text-base font-bold text-foreground font-heading\">{group.title}</h3>\n </div>\n <Checklist items={group.items} />\n {i < infoGroups.length - 1 && <Separator className=\"mt-6\" />}\n </div>\n ))}\n </div>\n </section>\n )}\n\n {/* Overview */}\n {overview && (\n <section id=\"trip-section-overview\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4\">Overview</h2>\n {recommendedFor && (\n <div className=\"flex items-start gap-2.5 rounded-xl bg-primary/8 border border-primary/20 p-4 mb-4\">\n <UsersIcon className=\"h-4 w-4 text-primary mt-0.5 shrink-0\" />\n <p className=\"text-sm text-foreground font-ui\">\n <span className=\"font-semibold\">Recommended for: </span>\n {recommendedFor}\n </p>\n </div>\n )}\n <div className=\"text-sm text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline\">\n {overview}\n </div>\n </section>\n )}\n\n {/* Itinerary */}\n {itinerary && itinerary.length > 0 && (\n <section id=\"trip-section-itinerary\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">Itinerary</h2>\n <ItineraryTimeline steps={itinerary} />\n </section>\n )}\n\n {/* Included */}\n {included && included.length > 0 && (\n <section id=\"trip-section-included\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <PackageIcon className=\"h-5 w-5 text-primary\" />\n Included\n </h2>\n <Checklist items={included} />\n </section>\n )}\n\n {/* What to bring */}\n {whatToBring && whatToBring.length > 0 && (\n <section id=\"trip-section-what-to-bring\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <PackageIcon className=\"h-5 w-5 text-primary\" />\n What to bring\n </h2>\n <Checklist items={whatToBring} icon={<InfoIcon className=\"h-4 w-4\" />} />\n </section>\n )}\n\n {/* Weather */}\n {weather && (\n <section id=\"trip-section-weather\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <SunIcon className=\"h-5 w-5 text-primary\" />\n Weather\n </h2>\n <div className=\"flex items-start gap-3 rounded-xl bg-muted/60 border border-border p-5\">\n <div className=\"text-sm text-foreground leading-relaxed space-y-2 [&_strong]:font-semibold\">\n {weather}\n </div>\n </div>\n </section>\n )}\n\n {/* Meeting point */}\n {meetingPoints && meetingPoints.length > 0 && (\n <section id=\"trip-section-meeting\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2\">\n <MapPinIcon className=\"h-5 w-5 text-primary\" />\n Meeting point\n </h2>\n <div className=\"space-y-3\">\n {meetingPoints.map((mp, i) => (\n <div key={i} className=\"flex items-start gap-3 rounded-xl border border-border p-4\">\n <div className=\"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary/10\">\n <MapPinIcon className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n {mp.type && (\n <p className=\"text-xs text-muted-foreground font-ui uppercase tracking-wide mb-0.5\">\n {mp.type === \"activity\" ? \"Activity location\" : mp.type === \"alternative\" ? \"Alternative meeting point\" : \"Meeting point\"}\n </p>\n )}\n <p className=\"text-sm font-bold text-foreground font-heading\">{mp.name}</p>\n <p className=\"text-xs text-muted-foreground font-ui mt-0.5\">{mp.address}</p>\n </div>\n </div>\n ))}\n </div>\n </section>\n )}\n\n {/* FAQ */}\n {faqs && faqs.length > 0 && (\n <section id=\"trip-section-faq\" className=\"scroll-mt-20\">\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-6\">FAQ</h2>\n <Accordion variant=\"faq\">\n {faqs.map((faq, i) => (\n <AccordionItem key={i} value={`faq-${i}`}>\n <AccordionTrigger>{faq.question}</AccordionTrigger>\n <AccordionContent>{faq.answer}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </section>\n )}\n\n {/* Reviews */}\n {reviews && reviews.length > 0 && (\n <div>\n <Separator className=\"mb-10\" />\n <h2 className=\"text-xl font-bold text-foreground font-heading mb-5\">What our guests think</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n {reviews.map((r, i) => (\n <div key={i} className=\"flex flex-col gap-3 rounded-xl border border-border p-5\">\n <Stars count={r.rating ?? 5} />\n <p className=\"text-sm text-foreground leading-relaxed line-clamp-4\">&ldquo;{r.text}&rdquo;</p>\n <p className=\"text-xs font-semibold text-muted-foreground font-ui mt-auto\">— {r.author}</p>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Sidebar — placeholder reserves space; inline when not yet floating */}\n <div ref={sidebarPlaceholderRef} className=\"hidden lg:block lg:w-72 xl:w-80 shrink-0\">\n {!isFloating && (\n <div className=\"sticky top-20 rounded-2xl border border-border bg-card p-6 shadow-sm\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n season={season}\n departureTimes={departureTimes}\n pricingOptions={pricingOptions}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Check availability\"}\n variant=\"card\"\n />\n </div>\n )}\n </div>\n </div>\n </div>{/* end constrained container */}\n\n {/* ── Nav — fixed when navFloating, slides in from top ───────────── */}\n {sections.length > 0 && (\n <div\n ref={navRef}\n className={cn(\n \"fixed top-0 left-0 right-0 z-20 py-3 transition-all duration-200\",\n navFloating && !navHidden\n ? \"translate-y-0 opacity-100\"\n : \"-translate-y-full opacity-0 pointer-events-none\"\n )}\n >\n <div className=\"mx-auto w-full max-w-5xl px-4 sm:px-6 flex justify-center\">\n <MenuTrip\n sections={sections}\n activeSection={activeSection}\n onSelect={scrollToSection}\n variant=\"floating\"\n />\n </div>\n </div>\n )}\n\n {/* ── Fixed sidebar — floats over gallery once user has scrolled ── */}\n {isFloating && !pricingBarVisible && sidebarPos && (\n <div\n className=\"hidden lg:block fixed z-20\"\n style={{ top: \"5rem\", left: sidebarPos.left, width: sidebarPos.width }}\n >\n <div className=\"rounded-2xl border border-border bg-card p-6 shadow-sm\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n season={season}\n departureTimes={departureTimes}\n pricingOptions={pricingOptions}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Check availability\"}\n variant=\"card\"\n />\n </div>\n </div>\n )}\n\n {/* ── Gallery — full viewport width, after all content ─────────── */}\n {gallery && gallery.length > 0 && (\n <section ref={galleryRef} id=\"trip-section-gallery\" className=\"scroll-mt-20\">\n <PhotoGallery\n photos={gallery}\n variant=\"grid\"\n initialVisible={6}\n />\n </section>\n )}\n\n {/* ── Booking form — appears after gallery, triggers sidebar hide ── */}\n {gallery && gallery.length > 0 && (\n <div ref={pricingBarRef} className=\"mx-auto w-full max-w-5xl px-4 sm:px-6 py-12\">\n <div id=\"trip-booking-form\" className=\"rounded-2xl border border-border bg-card p-8 shadow-sm\">\n <BookingForm onSubmit={onBook ? (values) => onBook() : undefined} />\n </div>\n </div>\n )}\n\n\n {/* ── Mobile booking bar — uses PricingTrip (compact) ──────────── */}\n <div className=\"fixed bottom-0 inset-x-0 z-30 lg:hidden border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3\">\n <PricingTrip\n priceFrom={priceFrom}\n currency={currency}\n onBook={gallery?.length ? scrollToBookingForm : onBook}\n bookLabel={bookLabel ?? \"Book now\"}\n variant=\"compact\"\n />\n </div>\n <div className=\"h-20 lg:hidden\" />\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/components/ui/badge\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type ActivityCardSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ActivityCardProps {\n /** URL da imagem de capa */\n image: string;\n imageAlt?: string;\n /** Texto do badge sobreposto na imagem (ex: \"Activity\", \"Tour\") */\n badge?: string;\n /** Ícone sobreposto no canto superior esquerdo da imagem */\n icon?: React.ReactNode;\n /** Título principal do card */\n title: string;\n /** Descrição curta */\n description?: string;\n /** Texto do botão de preço (ex: \"From CHF 63 .-\") */\n price?: string;\n /** Callback ao clicar no card */\n onClick?: () => void;\n /** Tamanho do card */\n size?: ActivityCardSize;\n className?: string;\n}\n\n// ─── Size config ──────────────────────────────────────────────────────────────\n\nconst sizeConfig: Record<\n ActivityCardSize,\n { card: string; image: string; title: string; description: string; price: string }\n> = {\n sm: {\n card: \"w-56\",\n image: \"h-36\",\n title: \"text-sm font-bold\",\n description: \"text-xs\",\n price: \"text-xs py-2\",\n },\n md: {\n card: \"w-72\",\n image: \"h-52\",\n title: \"text-base font-bold\",\n description: \"text-sm\",\n price: \"text-sm py-2.5\",\n },\n lg: {\n card: \"w-96\",\n image: \"h-64\",\n title: \"text-lg font-bold\",\n description: \"text-sm\",\n price: \"text-sm py-3\",\n },\n};\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function ActivityCard({\n image,\n imageAlt = \"\",\n badge,\n icon,\n title,\n description,\n price,\n onClick,\n size = \"md\",\n className,\n}: ActivityCardProps) {\n const s = sizeConfig[size];\n\n return (\n <div\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n onClick\n ? (e) => (e.key === \"Enter\" || e.key === \" \") && onClick()\n : undefined\n }\n className={cn(\n \"group flex flex-col overflow-hidden rounded-[1.25rem] bg-card\",\n \"border border-border shadow-md transition-shadow duration-200\",\n onClick && \"cursor-pointer hover:shadow-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n s.card,\n className\n )}\n >\n {/* Image area */}\n <div className={cn(\"relative w-full shrink-0 overflow-hidden\", s.image)}>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image}\n alt={imageAlt}\n className=\"h-full w-full object-cover transition-transform duration-300 group-hover:scale-105\"\n />\n\n {/* Top-left icon */}\n {icon && (\n <div className=\"absolute left-3 top-3 flex h-8 w-8 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm\">\n {icon}\n </div>\n )}\n\n {/* Top-right badge */}\n {badge && (\n <div className=\"absolute right-3 top-3\">\n <Badge\n variant=\"secondary\"\n className=\"rounded-full bg-card/90 text-foreground backdrop-blur-sm shadow-sm border-0 font-medium font-ui\"\n >\n {badge}\n </Badge>\n </div>\n )}\n </div>\n\n {/* Content area */}\n <div className=\"flex flex-1 flex-col gap-2 p-4\">\n <p className={cn(\"text-foreground leading-snug font-ui\", s.title)}>{title}</p>\n\n {description && (\n <p className={cn(\"text-muted-foreground leading-relaxed\", s.description)}>\n {description}\n </p>\n )}\n\n {price && (\n <div className=\"mt-auto pt-2\">\n <div\n className={cn(\n \"w-full rounded-full bg-muted text-center font-semibold text-foreground font-ui\",\n s.price\n )}\n >\n {price}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n Alert — inline alert com variante semântica\n ----------------------------------------------------------------------- */\n\nexport type AlertVariant = \"error\" | \"warning\" | \"success\" | \"info\";\n\nexport interface AlertProps {\n variant?: AlertVariant;\n children: React.ReactNode;\n className?: string;\n}\n\nconst VARIANT_STYLES: Record<AlertVariant, string> = {\n error: \"text-destructive border-destructive/30 bg-destructive/5\",\n warning: \"text-amber-400 border-amber-500/30 bg-amber-500/10\",\n success: \"text-primary border-primary/30 bg-primary/10\",\n info: \"text-muted-foreground border-primary/25 bg-primary/5\",\n};\n\nexport function Alert({ variant = \"info\", children, className }: AlertProps) {\n return (\n <div\n className={cn(\n \"rounded-lg border px-3 py-2 text-sm font-sans leading-snug\",\n VARIANT_STYLES[variant],\n className\n )}\n >\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/* -----------------------------------------------------------------------\n PaymentModalShell — backdrop + card + header + spinner de loading\n Host apps injectam o formulário de pagamento real via children.\n ----------------------------------------------------------------------- */\n\nexport interface PaymentModalShellProps {\n open: boolean;\n title: string;\n subtitle?: string;\n /** Referência da reserva exibida abaixo do subtitle (e.g. \"#12345\") */\n bookingRef?: string | number;\n /** Quando true exibe spinner e oculta children */\n busy?: boolean;\n busyMessage?: string;\n onClose?: () => void;\n closeLabel?: string;\n /** Quando true desabilita o botão de fechar */\n closeDisabled?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function PaymentModalShell({\n open,\n title,\n subtitle,\n bookingRef,\n busy,\n busyMessage,\n onClose,\n closeLabel = \"Cancel\",\n closeDisabled,\n children,\n className,\n}: PaymentModalShellProps) {\n if (!open) return null;\n\n return (\n <div\n className=\"fixed inset-0 z-[100] flex items-center justify-center bg-black/70 p-4\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <div\n className={cn(\n \"relative w-full max-w-md rounded-2xl border border-border bg-card p-6 shadow-xl\",\n \"max-h-[90vh] overflow-y-auto\",\n className\n )}\n >\n {/* Close button */}\n {onClose && (\n <button\n type=\"button\"\n onClick={() => !closeDisabled && onClose()}\n disabled={closeDisabled}\n aria-label={closeLabel}\n className=\"absolute right-4 top-4 text-xl leading-none text-muted-foreground hover:text-foreground disabled:opacity-40 transition-colors\"\n >\n ×\n </button>\n )}\n\n {/* Header */}\n <h2 className=\"pr-8 text-lg font-bold text-foreground font-heading\">{title}</h2>\n {subtitle && (\n <p className=\"mt-1 text-sm text-muted-foreground font-sans\">{subtitle}</p>\n )}\n {bookingRef != null && (\n <p className=\"mt-1 text-xs text-muted-foreground font-sans\">#{bookingRef}</p>\n )}\n\n {/* Body */}\n {busy ? (\n <div className=\"mt-8 flex flex-col items-center gap-4 py-6\">\n <span className=\"h-10 w-10 animate-spin rounded-full border-2 border-primary/30 border-t-primary\" />\n {busyMessage && (\n <p className=\"text-center text-sm text-muted-foreground font-sans\">{busyMessage}</p>\n )}\n </div>\n ) : (\n <div className=\"mt-6\">{children}</div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\";\n\nimport { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { XIcon, SendIcon, CheckCircleIcon, Loader2Icon } from \"lucide-react\";\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface LeadCapturePopupConfig {\n /** Hero image URL displayed at the top of the popup */\n imageUrl?: string;\n /** Main heading text */\n heading?: string;\n /** Subtitle / supporting text below the heading */\n subtitle?: string;\n /** Label for the name field */\n nameLabel?: string;\n /** Placeholder for the name field */\n namePlaceholder?: string;\n /** Label for the email field */\n emailLabel?: string;\n /** Placeholder for the email field */\n emailPlaceholder?: string;\n /** Label for the travel date question */\n travelDateLabel?: string;\n /** Options for the travel date dropdown */\n travelDateOptions?: string[];\n /** Submit button text */\n submitLabel?: string;\n /** Success heading after submission */\n successHeading?: string;\n /** Success message after submission */\n successMessage?: string;\n /** Privacy disclaimer text (supports basic HTML) */\n privacyText?: string;\n\n /* --- Trigger settings --- */\n /** Trigger type: \"delay\" | \"exit_intent\" | \"scroll\" */\n trigger?: \"delay\" | \"exit_intent\" | \"scroll\";\n /** Delay in seconds before showing (for \"delay\" trigger) */\n delaySeconds?: number;\n /** Scroll percentage to trigger (for \"scroll\" trigger) */\n scrollPercent?: number;\n /** Days to suppress popup after dismissal (cookie) */\n dismissDays?: number;\n\n /* --- Style overrides --- */\n /** Accent color override (hex or CSS color) */\n accentColor?: string;\n /** Overlay opacity 0-100 */\n overlayOpacity?: number;\n /** Position: \"center\" | \"bottom-right\" */\n position?: \"center\" | \"bottom-right\";\n\n /* --- Submission --- */\n /** REST endpoint to POST form data to */\n ajaxUrl?: string;\n /** WordPress nonce for the AJAX request */\n nonce?: string;\n}\n\nconst DEFAULTS: Required<\n Pick<\n LeadCapturePopupConfig,\n | \"heading\"\n | \"subtitle\"\n | \"nameLabel\"\n | \"namePlaceholder\"\n | \"emailLabel\"\n | \"emailPlaceholder\"\n | \"travelDateLabel\"\n | \"travelDateOptions\"\n | \"submitLabel\"\n | \"successHeading\"\n | \"successMessage\"\n | \"privacyText\"\n | \"trigger\"\n | \"delaySeconds\"\n | \"scrollPercent\"\n | \"dismissDays\"\n | \"overlayOpacity\"\n | \"position\"\n >\n> = {\n heading: \"Where will your next adventure take you?\",\n subtitle:\n \"Tell us about your dream trip and our travel experts will craft the perfect itinerary for you.\",\n nameLabel: \"Your name\",\n namePlaceholder: \"e.g. Maria Silva\",\n emailLabel: \"Email\",\n emailPlaceholder: \"you@example.com\",\n travelDateLabel: \"When are you planning to travel?\",\n travelDateOptions: [\n \"In the next 30 days\",\n \"1 – 3 months from now\",\n \"3 – 6 months from now\",\n \"6 – 12 months from now\",\n \"I'm just exploring\",\n ],\n submitLabel: \"Send my request\",\n successHeading: \"Thank you!\",\n successMessage:\n \"One of our travel experts will reach out soon to help plan your perfect trip.\",\n privacyText:\n 'By submitting you agree to our <a href=\"/privacy-policy\" target=\"_blank\" rel=\"noopener\">Privacy Policy</a>.',\n trigger: \"delay\",\n delaySeconds: 5,\n scrollPercent: 50,\n dismissDays: 7,\n overlayOpacity: 40,\n position: \"center\",\n};\n\n/* ------------------------------------------------------------------ */\n/* Cookie helpers */\n/* ------------------------------------------------------------------ */\n\nconst COOKIE_NAME = \"pexo_lead_popup_dismissed\";\n\nfunction isDismissed(): boolean {\n return document.cookie.includes(`${COOKIE_NAME}=1`);\n}\n\nfunction setDismissed(days: number): void {\n const expires = new Date(Date.now() + days * 86400000).toUTCString();\n document.cookie = `${COOKIE_NAME}=1; expires=${expires}; path=/; SameSite=Lax`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function LeadCapturePopup({\n config: _config,\n}: {\n config: LeadCapturePopupConfig;\n}) {\n const config = { ...DEFAULTS, ..._config };\n\n const [open, setOpen] = useState(false);\n const [closing, setClosing] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const [name, setName] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [travelDate, setTravelDate] = useState(\"\");\n\n const panelRef = useRef<HTMLDivElement>(null);\n const nameRef = useRef<HTMLInputElement>(null);\n\n /* ---- Trigger logic ---- */\n const show = useCallback(() => {\n if (isDismissed()) return;\n setOpen(true);\n }, []);\n\n useEffect(() => {\n if (isDismissed()) return;\n\n if (config.trigger === \"delay\") {\n const t = setTimeout(show, (config.delaySeconds ?? 5) * 1000);\n return () => clearTimeout(t);\n }\n\n if (config.trigger === \"exit_intent\") {\n const handler = (e: MouseEvent) => {\n if (e.clientY <= 5) show();\n };\n document.addEventListener(\"mouseout\", handler);\n return () => document.removeEventListener(\"mouseout\", handler);\n }\n\n if (config.trigger === \"scroll\") {\n const handler = () => {\n const pct =\n (window.scrollY /\n (document.documentElement.scrollHeight - window.innerHeight)) *\n 100;\n if (pct >= (config.scrollPercent ?? 50)) {\n show();\n window.removeEventListener(\"scroll\", handler);\n }\n };\n window.addEventListener(\"scroll\", handler, { passive: true });\n return () => window.removeEventListener(\"scroll\", handler);\n }\n }, [config.trigger, config.delaySeconds, config.scrollPercent, show]);\n\n /* ---- Focus trap on open ---- */\n useEffect(() => {\n if (open && !submitted) {\n requestAnimationFrame(() => nameRef.current?.focus());\n }\n }, [open, submitted]);\n\n /* ---- Close with animation ---- */\n const close = useCallback(() => {\n setClosing(true);\n setDismissed(config.dismissDays);\n setTimeout(() => {\n setOpen(false);\n setClosing(false);\n }, 250);\n }, [config.dismissDays]);\n\n /* ---- ESC key ---- */\n useEffect(() => {\n if (!open) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") close();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [open, close]);\n\n /* ---- Overlay click ---- */\n const onOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close]\n );\n\n /* ---- Submit ---- */\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n if (!name.trim() || !email.trim() || !travelDate) {\n setError(\"Please fill in all fields.\");\n return;\n }\n\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n setError(\"Please enter a valid email address.\");\n return;\n }\n\n setSubmitting(true);\n\n try {\n if (config.ajaxUrl) {\n const res = await fetch(config.ajaxUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n name: name.trim(),\n email: email.trim(),\n travel_date: travelDate,\n nonce: config.nonce ?? \"\",\n }),\n });\n if (!res.ok) throw new Error(\"Server error\");\n }\n setSubmitted(true);\n setDismissed(config.dismissDays);\n } catch {\n setError(\"Something went wrong. Please try again.\");\n } finally {\n setSubmitting(false);\n }\n };\n\n if (!open) return null;\n\n /* ---- Accent color CSS variable ---- */\n const accentStyle = config.accentColor\n ? ({ \"--popup-accent\": config.accentColor } as React.CSSProperties)\n : undefined;\n\n const isCenter = config.position === \"center\";\n\n return (\n <div\n className={cn(\n \"pexo-lead-popup fixed inset-0 z-[99999] flex\",\n isCenter ? \"items-center justify-center\" : \"items-end justify-end\",\n closing ? \"animate-fade-out\" : \"animate-fade-in\"\n )}\n style={{\n backgroundColor: `rgba(0,0,0,${(config.overlayOpacity ?? 40) / 100})`,\n backdropFilter: \"blur(4px)\",\n WebkitBackdropFilter: \"blur(4px)\",\n }}\n onClick={onOverlayClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={config.heading}\n >\n <div\n ref={panelRef}\n className={cn(\n \"relative flex flex-col overflow-hidden bg-background text-foreground shadow-2xl ring-1 ring-foreground/5\",\n isCenter\n ? \"m-4 w-full max-w-md rounded-2xl sm:max-w-lg\"\n : \"m-4 w-full max-w-sm rounded-2xl sm:m-6\",\n closing\n ? isCenter\n ? \"animate-zoom-out\"\n : \"animate-slide-out-right\"\n : isCenter\n ? \"animate-zoom-in\"\n : \"animate-slide-in-right\"\n )}\n style={accentStyle}\n >\n {/* ---- Close button ---- */}\n <button\n onClick={close}\n className=\"absolute top-3 right-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm transition-colors hover:bg-black/50\"\n aria-label=\"Close\"\n >\n <XIcon className=\"h-4 w-4\" />\n </button>\n\n {/* ---- Hero image ---- */}\n {config.imageUrl && (\n <div className=\"relative h-44 w-full shrink-0 overflow-hidden sm:h-52\">\n <img\n src={config.imageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n loading=\"eager\"\n />\n {/* Gradient overlay for text readability */}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/50 to-transparent\" />\n </div>\n )}\n\n {/* ---- Body ---- */}\n <div className=\"flex flex-1 flex-col gap-5 p-5 sm:p-6\">\n {!submitted ? (\n <>\n {/* Heading */}\n <div className=\"space-y-1.5\">\n <h2 className=\"font-heading text-lg font-bold leading-tight tracking-tight text-foreground sm:text-xl\">\n {config.heading}\n </h2>\n {config.subtitle && (\n <p className=\"text-sm leading-relaxed text-muted-foreground\">\n {config.subtitle}\n </p>\n )}\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-4\">\n {/* Name */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-name\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.nameLabel}\n </Label>\n <Input\n ref={nameRef}\n id=\"pexo-lead-name\"\n type=\"text\"\n placeholder={config.namePlaceholder}\n value={name}\n onChange={(e) => setName(e.target.value)}\n autoComplete=\"name\"\n className=\"h-10 rounded-lg border-border/60 bg-muted/30 px-3 text-sm focus-visible:border-primary focus-visible:ring-primary/30\"\n />\n </div>\n\n {/* Email */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-email\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.emailLabel}\n </Label>\n <Input\n id=\"pexo-lead-email\"\n type=\"email\"\n placeholder={config.emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n autoComplete=\"email\"\n className=\"h-10 rounded-lg border-border/60 bg-muted/30 px-3 text-sm focus-visible:border-primary focus-visible:ring-primary/30\"\n />\n </div>\n\n {/* Travel date */}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"pexo-lead-travel\" className=\"text-xs uppercase tracking-wider text-muted-foreground\">\n {config.travelDateLabel}\n </Label>\n <select\n id=\"pexo-lead-travel\"\n value={travelDate}\n onChange={(e) => setTravelDate(e.target.value)}\n className={cn(\n \"h-10 w-full appearance-none rounded-lg border border-border/60 bg-muted/30 px-3 text-sm text-foreground outline-none transition-colors\",\n \"focus-visible:border-primary focus-visible:ring-3 focus-visible:ring-primary/30\",\n !travelDate && \"text-muted-foreground\"\n )}\n style={{\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"right 0.75rem center\",\n paddingRight: \"2.5rem\",\n }}\n >\n <option value=\"\" disabled>\n Select a timeframe…\n </option>\n {config.travelDateOptions.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </div>\n\n {/* Error */}\n {error && (\n <p className=\"text-xs font-medium text-destructive\" role=\"alert\">\n {error}\n </p>\n )}\n\n {/* Submit */}\n <Button\n type=\"submit\"\n disabled={submitting}\n className={cn(\n \"h-11 w-full gap-2 rounded-lg text-sm font-bold tracking-wide\",\n config.accentColor\n ? \"border-transparent text-white\"\n : \"bg-primary text-primary-foreground hover:bg-primary/90\"\n )}\n style={\n config.accentColor\n ? { backgroundColor: config.accentColor }\n : undefined\n }\n >\n {submitting ? (\n <Loader2Icon className=\"h-4 w-4 animate-spin\" />\n ) : (\n <SendIcon className=\"h-4 w-4\" />\n )}\n {submitting ? \"Sending…\" : config.submitLabel}\n </Button>\n\n {/* Privacy text */}\n {config.privacyText && (\n <p\n className=\"text-center text-[11px] leading-relaxed text-muted-foreground [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:text-foreground\"\n dangerouslySetInnerHTML={{ __html: config.privacyText }}\n />\n )}\n </form>\n </>\n ) : (\n /* ---- Success state ---- */\n <div className=\"flex flex-1 flex-col items-center justify-center gap-4 py-8 text-center\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-full bg-primary/10\">\n <CheckCircleIcon className=\"h-8 w-8 text-primary\" />\n </div>\n <div className=\"space-y-1.5\">\n <h2 className=\"font-heading text-lg font-bold text-foreground\">\n {config.successHeading}\n </h2>\n <p className=\"text-sm leading-relaxed text-muted-foreground\">\n {config.successMessage}\n </p>\n </div>\n <Button\n onClick={close}\n variant=\"outline\"\n className=\"mt-2 h-10 px-6 text-sm\"\n >\n Close\n </Button>\n </div>\n )}\n </div>\n </div>\n\n {/* ---- Scoped keyframe animations ---- */}\n <style>{`\n @keyframes pexo-fade-in { from { opacity: 0 } to { opacity: 1 } }\n @keyframes pexo-fade-out { from { opacity: 1 } to { opacity: 0 } }\n @keyframes pexo-zoom-in { from { opacity: 0; transform: scale(0.92) } to { opacity: 1; transform: scale(1) } }\n @keyframes pexo-zoom-out { from { opacity: 1; transform: scale(1) } to { opacity: 0; transform: scale(0.92) } }\n @keyframes pexo-slide-in-right { from { opacity: 0; transform: translateX(100%) } to { opacity: 1; transform: translateX(0) } }\n @keyframes pexo-slide-out-right { from { opacity: 1; transform: translateX(0) } to { opacity: 0; transform: translateX(100%) } }\n\n .pexo-lead-popup .animate-fade-in { animation: pexo-fade-in 0.3s ease-out both }\n .pexo-lead-popup .animate-fade-out { animation: pexo-fade-out 0.25s ease-in both }\n .pexo-lead-popup .animate-zoom-in { animation: pexo-zoom-in 0.35s cubic-bezier(0.16,1,0.3,1) both }\n .pexo-lead-popup .animate-zoom-out { animation: pexo-zoom-out 0.25s ease-in both }\n .pexo-lead-popup .animate-slide-in-right { animation: pexo-slide-in-right 0.4s cubic-bezier(0.16,1,0.3,1) both }\n .pexo-lead-popup .animate-slide-out-right { animation: pexo-slide-out-right 0.3s ease-in both }\n\n /* Ensure popup fonts inherit from design system */\n .pexo-lead-popup { font-family: var(--font-sans, \"Literata\", Georgia, serif); }\n .pexo-lead-popup h1, .pexo-lead-popup h2, .pexo-lead-popup h3 { font-family: var(--font-heading, \"ArcaMajora3\", sans-serif); }\n .pexo-lead-popup button, .pexo-lead-popup label { font-family: var(--font-ui, \"ArcaMajora3\", sans-serif); }\n .pexo-lead-popup select { font-family: var(--font-sans, \"Literata\", Georgia, serif); }\n `}</style>\n </div>\n );\n}\n"]}