@planetaexo/design-system 0.5.4 → 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 +218 -162
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +219 -163
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
2575
|
+
textColor
|
|
2551
2576
|
), children: [
|
|
2552
2577
|
completed,
|
|
2553
2578
|
" of ",
|
|
2554
2579
|
totalSlots,
|
|
2555
2580
|
" travellers registered",
|
|
2556
|
-
|
|
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
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
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.
|
|
2813
|
-
"Created on ",
|
|
2814
|
-
createdAt
|
|
2815
|
-
] })
|
|
2873
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status })
|
|
2816
2874
|
] }),
|
|
2817
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
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
|
-
|
|
2825
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
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
|
-
|
|
2831
|
-
|
|
2921
|
+
adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2922
|
+
AdventureSection,
|
|
2923
|
+
{
|
|
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",
|
|
2832
2975
|
{
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
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.
|
|
2839
|
-
"
|
|
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
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
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
|
|
@@ -5164,16 +5223,13 @@ function RegistrationSuccessCard({
|
|
|
5164
5223
|
answers[f.id]
|
|
5165
5224
|
) })
|
|
5166
5225
|
] }, f.id)) }) }),
|
|
5167
|
-
terms && /* @__PURE__ */ jsxRuntime.
|
|
5168
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? "Accepted" : "Not accepted" })
|
|
5175
|
-
] })
|
|
5176
|
-
] })
|
|
5226
|
+
terms && /* @__PURE__ */ jsxRuntime.jsx(FormSection2, { title: "Terms & Conditions", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm font-ui", children: [
|
|
5227
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
|
|
5228
|
+
"inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
|
|
5229
|
+
terms.accepted ? "bg-primary" : "bg-destructive"
|
|
5230
|
+
), children: terms.accepted ? "\u2713" : "\u2717" }),
|
|
5231
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? "Accepted" : "Not accepted" })
|
|
5232
|
+
] }) })
|
|
5177
5233
|
] });
|
|
5178
5234
|
}
|
|
5179
5235
|
var OTPCodeInput = ({
|