@planetaexo/design-system 0.5.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -2264,7 +2264,7 @@ function AdventureSection({
2264
2264
  onAddTraveller,
2265
2265
  onUnassignFromAdventure
2266
2266
  }) {
2267
- var _a, _b, _c;
2267
+ var _a, _b, _c, _d;
2268
2268
  const [detailsOpen, setDetailsOpen] = React22__namespace.useState(false);
2269
2269
  const [addModalOpen, setAddModalOpen] = React22__namespace.useState(false);
2270
2270
  const [newTraveller, setNewTraveller] = React22__namespace.useState({
@@ -2309,7 +2309,7 @@ function AdventureSection({
2309
2309
  ] })
2310
2310
  ] })
2311
2311
  ] }),
2312
- /* @__PURE__ */ jsxRuntime.jsxs(
2312
+ (adventure.included && adventure.included.length > 0 || adventure.notIncluded && adventure.notIncluded.length > 0 || adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs(
2313
2313
  "button",
2314
2314
  {
2315
2315
  type: "button",
@@ -2341,11 +2341,28 @@ function AdventureSection({
2341
2341
  tag
2342
2342
  )) })
2343
2343
  ] }),
2344
+ (adventure.detailsSlot || adventure.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-2", children: [
2345
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_d = adventure.itineraryLabel) != null ? _d : "Itinerary" }),
2346
+ adventure.detailsSlot ? /* @__PURE__ */ jsxRuntime.jsx(
2347
+ "div",
2348
+ {
2349
+ className: cn(
2350
+ "text-foreground",
2351
+ "[&_p]:text-sm [&_p]:text-foreground/80 [&_p]:leading-relaxed [&_p]:mb-2",
2352
+ "[&_h2]:text-lg [&_h2]:font-bold [&_h2]:text-foreground [&_h2]:mb-2 [&_h2]:mt-4",
2353
+ "[&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-foreground [&_h3]:mb-1 [&_h3]:mt-3",
2354
+ "[&_strong]:font-bold [&_strong]:text-foreground",
2355
+ "[&_em]:italic",
2356
+ "[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2",
2357
+ "[&_ul]:list-disc [&_ul]:pl-5 [&_ul]:space-y-1",
2358
+ "[&_ol]:list-decimal [&_ol]:pl-5 [&_ol]:space-y-1",
2359
+ "[&_li]:text-sm [&_li]:text-foreground/80 [&_li]:leading-relaxed"
2360
+ ),
2361
+ children: adventure.detailsSlot
2362
+ }
2363
+ ) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed font-sans", children: adventure.description })
2364
+ ] }),
2344
2365
  detailsOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-5 bg-muted/10", children: [
2345
- adventure.description && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
2346
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Itinerary" }),
2347
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed font-sans", children: adventure.description })
2348
- ] }),
2349
2366
  adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
2350
2367
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "O que est\xE1 incluso" }),
2351
2368
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2404,7 +2421,12 @@ function AdventureSection({
2404
2421
  {
2405
2422
  type: "button",
2406
2423
  onClick: () => onAddContactAsTraveller(adventure.id),
2407
- 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",
2424
+ disabled: adventure.addContactAsTravellerDisabled,
2425
+ className: cn(
2426
+ "flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-muted-foreground transition-colors",
2427
+ "hover:border-primary hover:text-primary hover:bg-primary/5",
2428
+ "disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none disabled:hover:border-border disabled:hover:text-muted-foreground disabled:hover:bg-transparent"
2429
+ ),
2408
2430
  children: [
2409
2431
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserPlusIcon, { className: "w-3 h-3" }),
2410
2432
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Add contact as traveller" }),
@@ -2536,24 +2558,27 @@ function AdventureSection({
2536
2558
  adventure.travellers.length > 0 && totalSlots > 0 && (() => {
2537
2559
  const completed = adventure.travellers.filter((t) => t.status === "completed").length;
2538
2560
  const percent = Math.round(completed / totalSlots * 100);
2539
- const isComplete = completed === totalSlots;
2561
+ const isComplete = completed >= totalSlots;
2562
+ const isEmpty = completed === 0;
2563
+ const barColor = isComplete ? "bg-success" : isEmpty ? "bg-destructive" : "bg-warning";
2564
+ const textColor = isComplete ? "text-success" : isEmpty ? "text-destructive" : "text-warning";
2540
2565
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mt-1", children: [
2541
2566
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 h-2 rounded-full bg-muted overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
2542
2567
  "div",
2543
2568
  {
2544
- className: "h-full rounded-full bg-primary transition-all duration-500",
2569
+ className: cn("h-full rounded-full transition-all duration-500", barColor),
2545
2570
  style: { width: `${percent}%` }
2546
2571
  }
2547
2572
  ) }),
2548
2573
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
2549
2574
  "text-xs font-semibold font-ui shrink-0 flex items-center gap-1",
2550
- isComplete ? "text-primary" : "text-destructive"
2575
+ textColor
2551
2576
  ), children: [
2552
2577
  completed,
2553
2578
  " of ",
2554
2579
  totalSlots,
2555
2580
  " travellers registered",
2556
- !isComplete && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangleIcon, { className: "w-3 h-3" })
2581
+ isComplete ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "w-3 h-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangleIcon, { className: "w-3 h-3" })
2557
2582
  ] })
2558
2583
  ] });
2559
2584
  })()
@@ -2790,162 +2815,196 @@ function BookingDetails({
2790
2815
  onUnassignFromAdventure,
2791
2816
  onPayBalance,
2792
2817
  onCancelRequest,
2818
+ logoSrc,
2819
+ logoAlt,
2820
+ onSignOut,
2821
+ signOutLabel,
2793
2822
  className
2794
2823
  }) {
2795
2824
  var _a, _b, _c;
2796
2825
  const people = totalPeople(adventures);
2797
- return /* @__PURE__ */ jsxRuntime.jsxs(
2798
- "div",
2799
- {
2800
- className: cn("w-full max-w-5xl mx-auto flex flex-col gap-6 px-4 sm:px-6 lg:px-0", className),
2801
- children: [
2802
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4 flex-wrap", children: [
2803
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
2804
- /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-2xl font-black text-foreground font-heading leading-tight", children: [
2805
- "Booking",
2806
- " ",
2807
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-primary", children: [
2808
- "#",
2809
- bookingId
2826
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2827
+ (logoSrc || onSignOut) && /* @__PURE__ */ jsxRuntime.jsx("header", { className: "w-full border-b border-border bg-card/50 backdrop-blur-sm sticky top-0 z-30", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-5xl mx-auto px-4 sm:px-6 lg:px-0 h-14 flex items-center justify-between gap-4", children: [
2828
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
2829
+ logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(
2830
+ "img",
2831
+ {
2832
+ src: logoSrc,
2833
+ alt: logoAlt != null ? logoAlt : "",
2834
+ className: "h-11 w-auto object-contain shrink-0"
2835
+ }
2836
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
2837
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 flex justify-end", children: onSignOut && /* @__PURE__ */ jsxRuntime.jsxs(
2838
+ "button",
2839
+ {
2840
+ type: "button",
2841
+ onClick: onSignOut,
2842
+ className: "inline-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",
2843
+ children: [
2844
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOutIcon, { className: "w-3.5 h-3.5" }),
2845
+ signOutLabel != null ? signOutLabel : "Sign out"
2846
+ ]
2847
+ }
2848
+ ) })
2849
+ ] }) }),
2850
+ /* @__PURE__ */ jsxRuntime.jsxs(
2851
+ "div",
2852
+ {
2853
+ className: cn(
2854
+ "w-full max-w-5xl mx-auto flex flex-col gap-6 px-4 sm:px-6 lg:px-0 py-8 sm:py-12",
2855
+ className
2856
+ ),
2857
+ children: [
2858
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4 flex-wrap", children: [
2859
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
2860
+ /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "text-2xl font-black text-foreground font-heading leading-tight", children: [
2861
+ "Booking",
2862
+ " ",
2863
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-primary", children: [
2864
+ "#",
2865
+ bookingId
2866
+ ] })
2867
+ ] }),
2868
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground font-sans", children: [
2869
+ "Created on ",
2870
+ createdAt
2810
2871
  ] })
2811
2872
  ] }),
2812
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground font-sans", children: [
2813
- "Created on ",
2814
- createdAt
2815
- ] })
2873
+ /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status })
2816
2874
  ] }),
2817
- /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status })
2818
- ] }),
2819
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
2820
- /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Contact", children: [
2821
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: contact.name }),
2822
- contact.email && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans truncate", children: contact.email })
2875
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
2876
+ /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Contact", children: [
2877
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: contact.name }),
2878
+ contact.email && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans truncate", children: contact.email })
2879
+ ] }),
2880
+ agentName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0", children: [
2881
+ /* @__PURE__ */ jsxRuntime.jsx("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", children: agentName.charAt(0) }),
2882
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 min-w-0", children: [
2883
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Your Agent" }),
2884
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-foreground font-sans", children: agentName })
2885
+ ] }),
2886
+ agentContactUrl && /* @__PURE__ */ jsxRuntime.jsxs(
2887
+ "a",
2888
+ {
2889
+ href: agentContactUrl,
2890
+ target: "_blank",
2891
+ rel: "noopener noreferrer",
2892
+ 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",
2893
+ children: [
2894
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleIcon, { className: "w-3.5 h-3.5" }),
2895
+ "Contact"
2896
+ ]
2897
+ }
2898
+ )
2899
+ ] }),
2900
+ /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Total People", children: [
2901
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2902
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UsersIcon, { className: "w-4 h-4 text-primary shrink-0" }),
2903
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
2904
+ people.total,
2905
+ " person(s)"
2906
+ ] })
2907
+ ] }),
2908
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans", children: [
2909
+ people.adults > 0 ? `Adults: ${people.adults}` : null,
2910
+ people.children > 0 ? `Children: ${people.children}` : null,
2911
+ people.seniors > 0 ? `Seniors: ${people.seniors}` : null
2912
+ ].filter(Boolean).join(" \xB7 ") })
2913
+ ] })
2823
2914
  ] }),
2824
- agentName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0", children: [
2825
- /* @__PURE__ */ jsxRuntime.jsx("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", children: agentName.charAt(0) }),
2826
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 min-w-0", children: [
2827
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Your Agent" }),
2828
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-foreground font-sans", children: agentName })
2915
+ /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-4", children: [
2916
+ /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: [
2917
+ "Adventures (",
2918
+ adventures.length,
2919
+ ")"
2829
2920
  ] }),
2830
- agentContactUrl && /* @__PURE__ */ jsxRuntime.jsxs(
2831
- "a",
2921
+ adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(
2922
+ AdventureSection,
2832
2923
  {
2833
- href: agentContactUrl,
2834
- target: "_blank",
2835
- rel: "noopener noreferrer",
2836
- 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",
2924
+ adventure,
2925
+ onAddContactAsTraveller,
2926
+ onEditTraveller,
2927
+ onRemoveTraveller,
2928
+ onAddSuggestedTraveller,
2929
+ onAddTraveller,
2930
+ onUnassignFromAdventure
2931
+ },
2932
+ adventure.id
2933
+ ))
2934
+ ] }),
2935
+ /* @__PURE__ */ jsxRuntime.jsx(
2936
+ OrderSummary,
2937
+ {
2938
+ adventures,
2939
+ summaryLineItems,
2940
+ subtotal,
2941
+ total,
2942
+ depositInfo
2943
+ }
2944
+ ),
2945
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
2946
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Responsible Person" }),
2947
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-3", children: [
2948
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2949
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Name" }),
2950
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-foreground font-sans", children: contact.name })
2951
+ ] }),
2952
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2953
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Email" }),
2954
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_a = contact.email) != null ? _a : "\u2014" })
2955
+ ] }),
2956
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2957
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Phone" }),
2958
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_b = contact.phone) != null ? _b : "\u2014" })
2959
+ ] }),
2960
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2961
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Country" }),
2962
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_c = contact.country) != null ? _c : "\u2014" })
2963
+ ] }),
2964
+ contact.passport && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2965
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Passport / CPF" }),
2966
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: contact.passport })
2967
+ ] })
2968
+ ] })
2969
+ ] }),
2970
+ (onPayBalance || onCancelRequest) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
2971
+ depositInfo && !depositInfo.isPaidInFull && // Se consumer passar remainingAmountValue, só mostra botão quando saldo > 0.
2972
+ // Quando undefined, mantém comportamento antigo (backward compat).
2973
+ (depositInfo.remainingAmountValue === void 0 || depositInfo.remainingAmountValue > 0) && onPayBalance && /* @__PURE__ */ jsxRuntime.jsxs(
2974
+ "button",
2975
+ {
2976
+ type: "button",
2977
+ onClick: onPayBalance,
2978
+ className: cn(
2979
+ "w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide",
2980
+ "text-primary-foreground font-heading transition-colors hover:bg-primary/90",
2981
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
2982
+ "flex items-center justify-center gap-2"
2983
+ ),
2837
2984
  children: [
2838
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleIcon, { className: "w-3.5 h-3.5" }),
2839
- "Contact"
2985
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCardIcon, { className: "w-4 h-4" }),
2986
+ "Pay remaining balance \u2014 ",
2987
+ depositInfo.remainingAmount
2988
+ ]
2989
+ }
2990
+ ),
2991
+ onCancelRequest && status !== "cancelled" && /* @__PURE__ */ jsxRuntime.jsxs(
2992
+ "button",
2993
+ {
2994
+ type: "button",
2995
+ onClick: onCancelRequest,
2996
+ className: "flex items-center gap-1.5 text-xs font-ui text-muted-foreground hover:text-destructive transition-colors underline underline-offset-2",
2997
+ children: [
2998
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircleIcon, { className: "w-3 h-3" }),
2999
+ "Request cancellation"
2840
3000
  ]
2841
3001
  }
2842
3002
  )
2843
- ] }),
2844
- /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Total People", children: [
2845
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2846
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UsersIcon, { className: "w-4 h-4 text-primary shrink-0" }),
2847
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
2848
- people.total,
2849
- " person(s)"
2850
- ] })
2851
- ] }),
2852
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans", children: [
2853
- people.adults > 0 ? `Adults: ${people.adults}` : null,
2854
- people.children > 0 ? `Children: ${people.children}` : null,
2855
- people.seniors > 0 ? `Seniors: ${people.seniors}` : null
2856
- ].filter(Boolean).join(" \xB7 ") })
2857
3003
  ] })
2858
- ] }),
2859
- /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-4", children: [
2860
- /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: [
2861
- "Adventures (",
2862
- adventures.length,
2863
- ")"
2864
- ] }),
2865
- adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(
2866
- AdventureSection,
2867
- {
2868
- adventure,
2869
- onAddContactAsTraveller,
2870
- onEditTraveller,
2871
- onRemoveTraveller,
2872
- onAddSuggestedTraveller,
2873
- onAddTraveller,
2874
- onUnassignFromAdventure
2875
- },
2876
- adventure.id
2877
- ))
2878
- ] }),
2879
- /* @__PURE__ */ jsxRuntime.jsx(
2880
- OrderSummary,
2881
- {
2882
- adventures,
2883
- summaryLineItems,
2884
- subtotal,
2885
- total,
2886
- depositInfo
2887
- }
2888
- ),
2889
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
2890
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Responsible Person" }),
2891
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-3", children: [
2892
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2893
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Name" }),
2894
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-foreground font-sans", children: contact.name })
2895
- ] }),
2896
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2897
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Email" }),
2898
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_a = contact.email) != null ? _a : "\u2014" })
2899
- ] }),
2900
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2901
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Phone" }),
2902
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_b = contact.phone) != null ? _b : "\u2014" })
2903
- ] }),
2904
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2905
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Country" }),
2906
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_c = contact.country) != null ? _c : "\u2014" })
2907
- ] }),
2908
- contact.passport && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2909
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Passport / CPF" }),
2910
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: contact.passport })
2911
- ] })
2912
- ] })
2913
- ] }),
2914
- (onPayBalance || onCancelRequest) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
2915
- depositInfo && !depositInfo.isPaidInFull && onPayBalance && /* @__PURE__ */ jsxRuntime.jsxs(
2916
- "button",
2917
- {
2918
- type: "button",
2919
- onClick: onPayBalance,
2920
- className: cn(
2921
- "w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide",
2922
- "text-primary-foreground font-heading transition-colors hover:bg-primary/90",
2923
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
2924
- "flex items-center justify-center gap-2"
2925
- ),
2926
- children: [
2927
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCardIcon, { className: "w-4 h-4" }),
2928
- "Pay remaining balance \u2014 ",
2929
- depositInfo.remainingAmount
2930
- ]
2931
- }
2932
- ),
2933
- onCancelRequest && status !== "cancelled" && /* @__PURE__ */ jsxRuntime.jsxs(
2934
- "button",
2935
- {
2936
- type: "button",
2937
- onClick: onCancelRequest,
2938
- className: "flex items-center gap-1.5 text-xs font-ui text-muted-foreground hover:text-destructive transition-colors underline underline-offset-2",
2939
- children: [
2940
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircleIcon, { className: "w-3 h-3" }),
2941
- "Request cancellation"
2942
- ]
2943
- }
2944
- )
2945
- ] })
2946
- ]
2947
- }
2948
- );
3004
+ ]
3005
+ }
3006
+ )
3007
+ ] });
2949
3008
  }
2950
3009
 
2951
3010
  // src/lib/emailAssets.ts