@planetaexo/design-system 0.9.5 → 0.10.1

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
@@ -1373,7 +1373,7 @@ function AdventureCard({ adventure }) {
1373
1373
  (adventure.description || adventure.detailsSlot) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1374
1374
  /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-1" }),
1375
1375
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1376
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (_f = adventure.itineraryLabel) != null ? _f : "Itinerary" }),
1376
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (_f = adventure.itineraryLabel) != null ? _f : "Details" }),
1377
1377
  adventure.description && !adventure.detailsSlot && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base text-foreground/80 leading-snug font-sans", children: adventure.description }),
1378
1378
  adventure.detailsSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
1379
1379
  "text-foreground",
@@ -2216,13 +2216,206 @@ function Offer({
2216
2216
  ] }) })
2217
2217
  ] });
2218
2218
  }
2219
+ function getInitial(name) {
2220
+ return name && name.length > 0 ? name.charAt(0).toUpperCase() : "?";
2221
+ }
2222
+ function CompactAgentCard({
2223
+ name,
2224
+ avatar,
2225
+ email,
2226
+ whatsappUrl,
2227
+ label,
2228
+ nameFallback,
2229
+ legacyContactUrl,
2230
+ legacyContactLabel,
2231
+ className
2232
+ }) {
2233
+ const hasAgent = !!name;
2234
+ const displayName = hasAgent ? name : nameFallback != null ? nameFallback : "No agent assigned";
2235
+ const showLegacyContact = hasAgent && !email && !whatsappUrl && !!legacyContactUrl;
2236
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2237
+ "div",
2238
+ {
2239
+ className: cn(
2240
+ "rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0",
2241
+ className
2242
+ ),
2243
+ children: [
2244
+ hasAgent && avatar ? (
2245
+ // eslint-disable-next-line @next/next/no-img-element
2246
+ /* @__PURE__ */ jsxRuntime.jsx(
2247
+ "img",
2248
+ {
2249
+ src: avatar,
2250
+ alt: displayName,
2251
+ className: "h-10 w-10 shrink-0 rounded-full object-cover ring-2 ring-primary/20"
2252
+ }
2253
+ )
2254
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
2255
+ "div",
2256
+ {
2257
+ className: cn(
2258
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full font-heading font-bold text-sm uppercase",
2259
+ hasAgent ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
2260
+ ),
2261
+ children: getInitial(name)
2262
+ }
2263
+ ),
2264
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 min-w-0 flex-1", children: [
2265
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: label != null ? label : "Your Agent" }),
2266
+ /* @__PURE__ */ jsxRuntime.jsx(
2267
+ "p",
2268
+ {
2269
+ className: cn(
2270
+ "text-sm font-sans truncate",
2271
+ hasAgent ? "font-semibold text-foreground" : "italic text-muted-foreground"
2272
+ ),
2273
+ children: displayName
2274
+ }
2275
+ )
2276
+ ] }),
2277
+ hasAgent && (email || whatsappUrl) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto shrink-0 flex items-center gap-1.5", children: [
2278
+ email && /* @__PURE__ */ jsxRuntime.jsx(
2279
+ "a",
2280
+ {
2281
+ href: `mailto:${email}`,
2282
+ className: "flex items-center justify-center h-8 w-8 rounded-full bg-primary/10 text-primary transition-colors hover:bg-primary/20",
2283
+ "aria-label": `Email ${displayName}`,
2284
+ title: email,
2285
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MailIcon, { className: "w-3.5 h-3.5" })
2286
+ }
2287
+ ),
2288
+ whatsappUrl && /* @__PURE__ */ jsxRuntime.jsx(
2289
+ "a",
2290
+ {
2291
+ href: whatsappUrl,
2292
+ target: "_blank",
2293
+ rel: "noopener noreferrer",
2294
+ className: "flex items-center justify-center h-8 w-8 rounded-full bg-[#25D366]/15 text-[#25D366] transition-colors hover:bg-[#25D366]/25",
2295
+ "aria-label": `WhatsApp ${displayName}`,
2296
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "w-3.5 h-3.5", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("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" }) })
2297
+ }
2298
+ )
2299
+ ] }),
2300
+ showLegacyContact && /* @__PURE__ */ jsxRuntime.jsxs(
2301
+ "a",
2302
+ {
2303
+ href: legacyContactUrl,
2304
+ target: "_blank",
2305
+ rel: "noopener noreferrer",
2306
+ 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",
2307
+ children: [
2308
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleIcon, { className: "w-3.5 h-3.5" }),
2309
+ legacyContactLabel != null ? legacyContactLabel : "Contact"
2310
+ ]
2311
+ }
2312
+ )
2313
+ ]
2314
+ }
2315
+ );
2316
+ }
2317
+ function WideAgentCard({
2318
+ name,
2319
+ avatar,
2320
+ email,
2321
+ whatsappUrl,
2322
+ label,
2323
+ nameFallback,
2324
+ helperText,
2325
+ className
2326
+ }) {
2327
+ const hasAgent = !!name;
2328
+ const displayName = hasAgent ? name : nameFallback != null ? nameFallback : "No agent assigned";
2329
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2330
+ "div",
2331
+ {
2332
+ className: cn(
2333
+ "rounded-2xl border border-border bg-card p-5 flex flex-col gap-4",
2334
+ className
2335
+ ),
2336
+ children: [
2337
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
2338
+ hasAgent && avatar ? (
2339
+ // eslint-disable-next-line @next/next/no-img-element
2340
+ /* @__PURE__ */ jsxRuntime.jsx(
2341
+ "img",
2342
+ {
2343
+ src: avatar,
2344
+ alt: displayName,
2345
+ className: "w-16 h-16 rounded-full object-cover ring-2 ring-primary/20"
2346
+ }
2347
+ )
2348
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-bold text-primary font-heading", children: getInitial(name) }) }),
2349
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2350
+ label && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: label }),
2351
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm font-sans text-foreground mt-0.5", children: [
2352
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-foreground font-heading", children: displayName }),
2353
+ helperText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2354
+ " ",
2355
+ helperText
2356
+ ] })
2357
+ ] })
2358
+ ] })
2359
+ ] }),
2360
+ (whatsappUrl || email) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2361
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
2362
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
2363
+ whatsappUrl && /* @__PURE__ */ jsxRuntime.jsxs(
2364
+ "a",
2365
+ {
2366
+ href: whatsappUrl,
2367
+ target: "_blank",
2368
+ rel: "noopener noreferrer",
2369
+ 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",
2370
+ children: [
2371
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "w-4 h-4 shrink-0 text-[#25D366]", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("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" }) }),
2372
+ "WhatsApp"
2373
+ ]
2374
+ }
2375
+ ),
2376
+ email && /* @__PURE__ */ jsxRuntime.jsxs(
2377
+ "a",
2378
+ {
2379
+ href: `mailto:${email}`,
2380
+ 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",
2381
+ children: [
2382
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MailIcon, { className: "w-4 h-4 shrink-0 text-primary" }),
2383
+ "Email"
2384
+ ]
2385
+ }
2386
+ )
2387
+ ] })
2388
+ ] })
2389
+ ]
2390
+ }
2391
+ );
2392
+ }
2393
+ function AgentContactCard(props) {
2394
+ if (props.layout === "wide") return /* @__PURE__ */ jsxRuntime.jsx(WideAgentCard, __spreadValues({}, props));
2395
+ return /* @__PURE__ */ jsxRuntime.jsx(CompactAgentCard, __spreadValues({}, props));
2396
+ }
2219
2397
  var STATUS_STYLES = {
2220
2398
  pending: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400",
2221
2399
  confirmed: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400",
2222
2400
  cancelled: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400",
2223
- completed: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"
2401
+ completed: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400",
2402
+ pendingRegistration: "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400",
2403
+ pendingPayment: "bg-warning/15 text-warning-foreground dark:bg-warning/20 dark:text-warning",
2404
+ pendingPaymentOverdue: "bg-destructive/15 text-destructive dark:bg-destructive/25 dark:text-destructive",
2405
+ complete: "bg-success/15 text-success dark:bg-success/20 dark:text-success"
2406
+ };
2407
+ var STATUS_DEFAULT_LABELS = {
2408
+ pending: "Pending",
2409
+ confirmed: "Confirmed",
2410
+ cancelled: "Cancelled",
2411
+ completed: "Completed",
2412
+ pendingRegistration: "Pending registration",
2413
+ pendingPayment: "Pending payment",
2414
+ pendingPaymentOverdue: "Payment overdue",
2415
+ complete: "Complete"
2224
2416
  };
2225
- function StatusBadge({ status }) {
2417
+ function StatusBadge({ status, label }) {
2418
+ var _a;
2226
2419
  return /* @__PURE__ */ jsxRuntime.jsx(
2227
2420
  "span",
2228
2421
  {
@@ -2230,7 +2423,7 @@ function StatusBadge({ status }) {
2230
2423
  "inline-flex items-center rounded-full px-3 py-1 text-xs font-bold font-heading uppercase tracking-wider",
2231
2424
  STATUS_STYLES[status]
2232
2425
  ),
2233
- children: status
2426
+ children: (_a = label != null ? label : STATUS_DEFAULT_LABELS[status]) != null ? _a : status
2234
2427
  }
2235
2428
  );
2236
2429
  }
@@ -2285,7 +2478,7 @@ function AdventureSection({
2285
2478
  onRequestOpenDeleteModal,
2286
2479
  cannotRemoveLastTravellerLabel
2287
2480
  }) {
2288
- var _a, _b, _c, _d, _e, _f, _g;
2481
+ var _a, _b, _c, _d, _e, _f, _g, _h;
2289
2482
  const [detailsOpen, setDetailsOpen] = React22__namespace.useState(false);
2290
2483
  const handleCopyUrl = (url) => {
2291
2484
  if (onCopyFormLink) {
@@ -2357,7 +2550,7 @@ function AdventureSection({
2357
2550
  ] }),
2358
2551
  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: [
2359
2552
  (adventure.detailsSlot || adventure.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
2360
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Itinerary" }),
2553
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_e = adventure.itineraryLabel) != null ? _e : "Details" }),
2361
2554
  adventure.detailsSlot ? /* @__PURE__ */ jsxRuntime.jsx(
2362
2555
  "div",
2363
2556
  {
@@ -2462,8 +2655,8 @@ function AdventureSection({
2462
2655
  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",
2463
2656
  children: [
2464
2657
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PlusIcon, { className: "w-3 h-3" }),
2465
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: (_e = adventure.addTravellerLabel) != null ? _e : "More travellers" }),
2466
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: (_g = (_f = adventure.addTravellerShortLabel) != null ? _f : adventure.addTravellerLabel) != null ? _g : "Add" })
2658
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: (_f = adventure.addTravellerLabel) != null ? _f : "More travellers" }),
2659
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: (_h = (_g = adventure.addTravellerShortLabel) != null ? _g : adventure.addTravellerLabel) != null ? _h : "Add" })
2467
2660
  ]
2468
2661
  }
2469
2662
  )
@@ -2957,7 +3150,8 @@ function OrderSummary({
2957
3150
  summaryLineItems,
2958
3151
  subtotal,
2959
3152
  total,
2960
- depositInfo
3153
+ depositInfo,
3154
+ balanceDueLabel
2961
3155
  }) {
2962
3156
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
2963
3157
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Order Summary" }),
@@ -3053,7 +3247,7 @@ function OrderSummary({
3053
3247
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.remainingAmount })
3054
3248
  ] }),
3055
3249
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3056
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Balance due" }),
3250
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: balanceDueLabel != null ? balanceDueLabel : "Balance due" }),
3057
3251
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.balanceDueDate })
3058
3252
  ] })
3059
3253
  ] })
@@ -3062,13 +3256,18 @@ function OrderSummary({
3062
3256
  function BookingDetails({
3063
3257
  bookingId,
3064
3258
  status,
3259
+ statusLabel,
3065
3260
  createdAt,
3066
3261
  contact,
3262
+ agent,
3067
3263
  agentName,
3068
3264
  agentContactUrl,
3069
3265
  agentNameFallback,
3070
3266
  agentLabel,
3071
3267
  agentContactLabel,
3268
+ contactSectionLabel,
3269
+ payBalanceLabel,
3270
+ balanceDueLabel,
3072
3271
  cannotRemoveLastTravellerLabel,
3073
3272
  adventures,
3074
3273
  summaryLineItems,
@@ -3098,7 +3297,7 @@ function BookingDetails({
3098
3297
  signOutLabel,
3099
3298
  className
3100
3299
  }) {
3101
- var _a, _b, _c;
3300
+ var _a, _b, _c, _d;
3102
3301
  const people = totalPeople(adventures);
3103
3302
  const hasSubmitAddTraveller = !!onSubmitAddTraveller;
3104
3303
  const hasSubmitEditTraveller = !!onSubmitEditTraveller;
@@ -3213,56 +3412,27 @@ function BookingDetails({
3213
3412
  createdAt
3214
3413
  ] })
3215
3414
  ] }),
3216
- /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status })
3415
+ /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status, label: statusLabel })
3217
3416
  ] }),
3218
3417
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
3219
3418
  /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Contact", children: [
3220
3419
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: contact.name }),
3221
3420
  contact.email && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans truncate", children: contact.email })
3222
3421
  ] }),
3223
- (() => {
3224
- const hasAgent = !!agentName;
3225
- const displayName = hasAgent ? agentName : agentNameFallback != null ? agentNameFallback : "No agent assigned";
3226
- const initial = hasAgent ? agentName.charAt(0) : "?";
3227
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-border bg-card p-4 flex items-center gap-3.5 min-w-0", children: [
3228
- /* @__PURE__ */ jsxRuntime.jsx(
3229
- "div",
3230
- {
3231
- className: cn(
3232
- "flex h-10 w-10 shrink-0 items-center justify-center rounded-full font-heading font-bold text-sm uppercase",
3233
- hasAgent ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
3234
- ),
3235
- children: initial
3236
- }
3237
- ),
3238
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 min-w-0", children: [
3239
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: agentLabel != null ? agentLabel : "Your Agent" }),
3240
- /* @__PURE__ */ jsxRuntime.jsx(
3241
- "p",
3242
- {
3243
- className: cn(
3244
- "text-sm font-sans truncate",
3245
- hasAgent ? "font-semibold text-foreground" : "italic text-muted-foreground"
3246
- ),
3247
- children: displayName
3248
- }
3249
- )
3250
- ] }),
3251
- hasAgent && agentContactUrl && /* @__PURE__ */ jsxRuntime.jsxs(
3252
- "a",
3253
- {
3254
- href: agentContactUrl,
3255
- target: "_blank",
3256
- rel: "noopener noreferrer",
3257
- 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",
3258
- children: [
3259
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleIcon, { className: "w-3.5 h-3.5" }),
3260
- agentContactLabel != null ? agentContactLabel : "Contact"
3261
- ]
3262
- }
3263
- )
3264
- ] });
3265
- })(),
3422
+ /* @__PURE__ */ jsxRuntime.jsx(
3423
+ AgentContactCard,
3424
+ {
3425
+ layout: "compact",
3426
+ name: (_a = agent == null ? void 0 : agent.name) != null ? _a : agentName,
3427
+ avatar: agent == null ? void 0 : agent.avatar,
3428
+ email: agent == null ? void 0 : agent.email,
3429
+ whatsappUrl: agent == null ? void 0 : agent.whatsappUrl,
3430
+ label: agentLabel,
3431
+ nameFallback: agentNameFallback,
3432
+ legacyContactUrl: agentContactUrl,
3433
+ legacyContactLabel: agentContactLabel
3434
+ }
3435
+ ),
3266
3436
  /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Total People", children: [
3267
3437
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3268
3438
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UsersIcon, { className: "w-4 h-4 text-primary shrink-0" }),
@@ -3313,11 +3483,12 @@ function BookingDetails({
3313
3483
  summaryLineItems,
3314
3484
  subtotal,
3315
3485
  total,
3316
- depositInfo
3486
+ depositInfo,
3487
+ balanceDueLabel
3317
3488
  }
3318
3489
  ),
3319
3490
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
3320
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Responsible Person" }),
3491
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: contactSectionLabel != null ? contactSectionLabel : "Responsible Person" }),
3321
3492
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-3", children: [
3322
3493
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3323
3494
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Name" }),
@@ -3325,15 +3496,15 @@ function BookingDetails({
3325
3496
  ] }),
3326
3497
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3327
3498
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Email" }),
3328
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_a = contact.email) != null ? _a : "\u2014" })
3499
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_b = contact.email) != null ? _b : "\u2014" })
3329
3500
  ] }),
3330
3501
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3331
3502
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Phone" }),
3332
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_b = contact.phone) != null ? _b : "\u2014" })
3503
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_c = contact.phone) != null ? _c : "\u2014" })
3333
3504
  ] }),
3334
3505
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3335
3506
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Country" }),
3336
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_c = contact.country) != null ? _c : "\u2014" })
3507
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_d = contact.country) != null ? _d : "\u2014" })
3337
3508
  ] }),
3338
3509
  contact.passport && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3339
3510
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Passport / CPF" }),
@@ -3344,24 +3515,38 @@ function BookingDetails({
3344
3515
  (onPayBalance || onCancelRequest) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
3345
3516
  depositInfo && !depositInfo.isPaidInFull && // Se consumer passar remainingAmountValue, só mostra botão quando saldo > 0.
3346
3517
  // Quando undefined, mantém comportamento antigo (backward compat).
3347
- (depositInfo.remainingAmountValue === void 0 || depositInfo.remainingAmountValue > 0) && onPayBalance && /* @__PURE__ */ jsxRuntime.jsxs(
3348
- "button",
3349
- {
3350
- type: "button",
3351
- onClick: onPayBalance,
3352
- className: cn(
3353
- "w-full rounded-full bg-primary py-3.5 text-center text-sm font-bold uppercase tracking-wide",
3354
- "text-primary-foreground font-heading transition-colors hover:bg-primary/90",
3355
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
3356
- "flex items-center justify-center gap-2"
3357
- ),
3358
- children: [
3359
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCardIcon, { className: "w-4 h-4" }),
3360
- "Pay remaining balance \u2014 ",
3361
- depositInfo.remainingAmount
3362
- ]
3363
- }
3364
- ),
3518
+ (depositInfo.remainingAmountValue === void 0 || depositInfo.remainingAmountValue > 0) && onPayBalance && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full flex flex-col items-center gap-1.5", children: [
3519
+ /* @__PURE__ */ jsxRuntime.jsxs(
3520
+ "button",
3521
+ {
3522
+ type: "button",
3523
+ onClick: onPayBalance,
3524
+ className: cn(
3525
+ "w-full rounded-full py-3.5 text-center text-sm font-bold uppercase tracking-wide font-heading",
3526
+ depositInfo.isOverdue ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "bg-primary text-primary-foreground hover:bg-primary/90",
3527
+ "transition-colors",
3528
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
3529
+ "flex items-center justify-center gap-2"
3530
+ ),
3531
+ children: [
3532
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CreditCardIcon, { className: "w-4 h-4" }),
3533
+ payBalanceLabel != null ? payBalanceLabel : "Pay remaining balance",
3534
+ " \u2014 ",
3535
+ depositInfo.remainingAmount
3536
+ ]
3537
+ }
3538
+ ),
3539
+ depositInfo.dueDateLabel && /* @__PURE__ */ jsxRuntime.jsx(
3540
+ "p",
3541
+ {
3542
+ className: cn(
3543
+ "text-xs font-sans",
3544
+ depositInfo.isOverdue ? "text-destructive font-semibold" : "text-muted-foreground"
3545
+ ),
3546
+ children: depositInfo.dueDateLabel
3547
+ }
3548
+ )
3549
+ ] }),
3365
3550
  onCancelRequest && status !== "cancelled" && /* @__PURE__ */ jsxRuntime.jsxs(
3366
3551
  "button",
3367
3552
  {
@@ -3513,7 +3698,7 @@ var DEFAULT_LABELS = {
3513
3698
  childrenUnit: "child(ren)",
3514
3699
  travellersLabel: "Travellers",
3515
3700
  childBadge: "child",
3516
- itineraryLabel: "Itinerary",
3701
+ itineraryLabel: "Details",
3517
3702
  includedLabel: "O que est\xE1 incluso",
3518
3703
  notIncludedLabel: "O que n\xE3o est\xE1 incluso",
3519
3704
  pricingLabel: "Pricing",
@@ -9222,6 +9407,7 @@ function LeadCapturePopup({
9222
9407
  }
9223
9408
 
9224
9409
  exports.ActivityCard = ActivityCard;
9410
+ exports.AgentContactCard = AgentContactCard;
9225
9411
  exports.Alert = Alert;
9226
9412
  exports.BirthDateField = BirthDateField;
9227
9413
  exports.BookingConfirmation = BookingConfirmation;