@planetaexo/design-system 0.10.0 → 0.11.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.d.cts CHANGED
@@ -319,6 +319,8 @@ interface BookingDepositInfo {
319
319
  interface BookingDetailsProps {
320
320
  bookingId: string;
321
321
  status: BookingStatus;
322
+ /** Texto exibido no badge de status. Quando ausente, usa um default em inglês baseado no `status`. */
323
+ statusLabel?: string;
322
324
  createdAt: string;
323
325
  contact: BookingContact;
324
326
  /** Dados completos do agente para renderizar o `AgentContactCard` (avatar + email + whatsapp).
@@ -395,7 +397,7 @@ interface BookingDetailsProps {
395
397
  signOutLabel?: string;
396
398
  className?: string;
397
399
  }
398
- declare function BookingDetails({ bookingId, status, createdAt, contact, agent, agentName, agentContactUrl, agentNameFallback, agentLabel, agentContactLabel, contactSectionLabel, payBalanceLabel, balanceDueLabel, cannotRemoveLastTravellerLabel, adventures, summaryLineItems, subtotal, total, depositInfo, onAddContactAsTraveller, onEditTraveller, onRemoveTraveller, onAddSuggestedTraveller, onAddTraveller, onUnassignFromAdventure, onCopyFormLink, onSubmitAddTraveller, onSubmitEditTraveller, onConfirmRemoveTraveller, travellerFormConfig, addTravellerSaving, editTravellerSaving, removeTravellerSaving, travellerFormError, onPayBalance, onCancelRequest, logoSrc, logoAlt, onSignOut, signOutLabel, className, }: BookingDetailsProps): react_jsx_runtime.JSX.Element;
400
+ declare function BookingDetails({ bookingId, status, statusLabel, createdAt, contact, agent, agentName, agentContactUrl, agentNameFallback, agentLabel, agentContactLabel, contactSectionLabel, payBalanceLabel, balanceDueLabel, cannotRemoveLastTravellerLabel, adventures, summaryLineItems, subtotal, total, depositInfo, onAddContactAsTraveller, onEditTraveller, onRemoveTraveller, onAddSuggestedTraveller, onAddTraveller, onUnassignFromAdventure, onCopyFormLink, onSubmitAddTraveller, onSubmitEditTraveller, onConfirmRemoveTraveller, travellerFormConfig, addTravellerSaving, editTravellerSaving, removeTravellerSaving, travellerFormError, onPayBalance, onCancelRequest, logoSrc, logoAlt, onSignOut, signOutLabel, className, }: BookingDetailsProps): react_jsx_runtime.JSX.Element;
399
401
 
400
402
  interface AgentContactCardProps {
401
403
  layout: "compact" | "wide";
@@ -811,8 +813,28 @@ interface RegistrationSuccessCardProps {
811
813
  partnerLabel?: string;
812
814
  travellerLabel?: string;
813
815
  };
816
+ /**
817
+ * Visual density of the card.
818
+ * - `"comfortable"` (default): standard spacing — used by the post-submit web flow.
819
+ * - `"compact"`: tighter gaps and smaller terms typography, optimized for A4 PDF export.
820
+ */
821
+ density?: "compact" | "comfortable";
822
+ /**
823
+ * Optional submission timestamp block, rendered after the header.
824
+ * Both fields are pre-formatted strings (e.g. `"27/04/2026 14:32 (UTC-3)"`).
825
+ * `lastUpdatedAt` should be omitted by the caller when it equals `submittedAt`.
826
+ */
827
+ submissionTimestamps?: {
828
+ submittedAt?: string;
829
+ lastUpdatedAt?: string;
830
+ };
831
+ /** i18n-friendly labels for the timestamp block. Defaults to English. */
832
+ submissionTimestampsLabels?: {
833
+ submittedAt?: string;
834
+ lastUpdatedAt?: string;
835
+ };
814
836
  }
815
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
837
+ declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, density, submissionTimestamps, submissionTimestampsLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
816
838
 
817
839
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
818
840
  label: string;
package/dist/index.d.ts CHANGED
@@ -319,6 +319,8 @@ interface BookingDepositInfo {
319
319
  interface BookingDetailsProps {
320
320
  bookingId: string;
321
321
  status: BookingStatus;
322
+ /** Texto exibido no badge de status. Quando ausente, usa um default em inglês baseado no `status`. */
323
+ statusLabel?: string;
322
324
  createdAt: string;
323
325
  contact: BookingContact;
324
326
  /** Dados completos do agente para renderizar o `AgentContactCard` (avatar + email + whatsapp).
@@ -395,7 +397,7 @@ interface BookingDetailsProps {
395
397
  signOutLabel?: string;
396
398
  className?: string;
397
399
  }
398
- declare function BookingDetails({ bookingId, status, createdAt, contact, agent, agentName, agentContactUrl, agentNameFallback, agentLabel, agentContactLabel, contactSectionLabel, payBalanceLabel, balanceDueLabel, cannotRemoveLastTravellerLabel, adventures, summaryLineItems, subtotal, total, depositInfo, onAddContactAsTraveller, onEditTraveller, onRemoveTraveller, onAddSuggestedTraveller, onAddTraveller, onUnassignFromAdventure, onCopyFormLink, onSubmitAddTraveller, onSubmitEditTraveller, onConfirmRemoveTraveller, travellerFormConfig, addTravellerSaving, editTravellerSaving, removeTravellerSaving, travellerFormError, onPayBalance, onCancelRequest, logoSrc, logoAlt, onSignOut, signOutLabel, className, }: BookingDetailsProps): react_jsx_runtime.JSX.Element;
400
+ declare function BookingDetails({ bookingId, status, statusLabel, createdAt, contact, agent, agentName, agentContactUrl, agentNameFallback, agentLabel, agentContactLabel, contactSectionLabel, payBalanceLabel, balanceDueLabel, cannotRemoveLastTravellerLabel, adventures, summaryLineItems, subtotal, total, depositInfo, onAddContactAsTraveller, onEditTraveller, onRemoveTraveller, onAddSuggestedTraveller, onAddTraveller, onUnassignFromAdventure, onCopyFormLink, onSubmitAddTraveller, onSubmitEditTraveller, onConfirmRemoveTraveller, travellerFormConfig, addTravellerSaving, editTravellerSaving, removeTravellerSaving, travellerFormError, onPayBalance, onCancelRequest, logoSrc, logoAlt, onSignOut, signOutLabel, className, }: BookingDetailsProps): react_jsx_runtime.JSX.Element;
399
401
 
400
402
  interface AgentContactCardProps {
401
403
  layout: "compact" | "wide";
@@ -811,8 +813,28 @@ interface RegistrationSuccessCardProps {
811
813
  partnerLabel?: string;
812
814
  travellerLabel?: string;
813
815
  };
816
+ /**
817
+ * Visual density of the card.
818
+ * - `"comfortable"` (default): standard spacing — used by the post-submit web flow.
819
+ * - `"compact"`: tighter gaps and smaller terms typography, optimized for A4 PDF export.
820
+ */
821
+ density?: "compact" | "comfortable";
822
+ /**
823
+ * Optional submission timestamp block, rendered after the header.
824
+ * Both fields are pre-formatted strings (e.g. `"27/04/2026 14:32 (UTC-3)"`).
825
+ * `lastUpdatedAt` should be omitted by the caller when it equals `submittedAt`.
826
+ */
827
+ submissionTimestamps?: {
828
+ submittedAt?: string;
829
+ lastUpdatedAt?: string;
830
+ };
831
+ /** i18n-friendly labels for the timestamp block. Defaults to English. */
832
+ submissionTimestampsLabels?: {
833
+ submittedAt?: string;
834
+ lastUpdatedAt?: string;
835
+ };
814
836
  }
815
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
837
+ declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, density, submissionTimestamps, submissionTimestampsLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
816
838
 
817
839
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
818
840
  label: string;
package/dist/index.js CHANGED
@@ -2383,7 +2383,18 @@ var STATUS_STYLES = {
2383
2383
  pendingPaymentOverdue: "bg-destructive/15 text-destructive dark:bg-destructive/25 dark:text-destructive",
2384
2384
  complete: "bg-success/15 text-success dark:bg-success/20 dark:text-success"
2385
2385
  };
2386
- function StatusBadge({ status }) {
2386
+ var STATUS_DEFAULT_LABELS = {
2387
+ pending: "Pending",
2388
+ confirmed: "Confirmed",
2389
+ cancelled: "Cancelled",
2390
+ completed: "Completed",
2391
+ pendingRegistration: "Pending registration",
2392
+ pendingPayment: "Pending payment",
2393
+ pendingPaymentOverdue: "Payment overdue",
2394
+ complete: "Complete"
2395
+ };
2396
+ function StatusBadge({ status, label }) {
2397
+ var _a;
2387
2398
  return /* @__PURE__ */ jsx(
2388
2399
  "span",
2389
2400
  {
@@ -2391,7 +2402,7 @@ function StatusBadge({ status }) {
2391
2402
  "inline-flex items-center rounded-full px-3 py-1 text-xs font-bold font-heading uppercase tracking-wider",
2392
2403
  STATUS_STYLES[status]
2393
2404
  ),
2394
- children: status
2405
+ children: (_a = label != null ? label : STATUS_DEFAULT_LABELS[status]) != null ? _a : status
2395
2406
  }
2396
2407
  );
2397
2408
  }
@@ -3224,6 +3235,7 @@ function OrderSummary({
3224
3235
  function BookingDetails({
3225
3236
  bookingId,
3226
3237
  status,
3238
+ statusLabel,
3227
3239
  createdAt,
3228
3240
  contact,
3229
3241
  agent,
@@ -3379,7 +3391,7 @@ function BookingDetails({
3379
3391
  createdAt
3380
3392
  ] })
3381
3393
  ] }),
3382
- /* @__PURE__ */ jsx(StatusBadge, { status })
3394
+ /* @__PURE__ */ jsx(StatusBadge, { status, label: statusLabel })
3383
3395
  ] }),
3384
3396
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
3385
3397
  /* @__PURE__ */ jsxs(InfoCard, { label: "Contact", children: [
@@ -4842,13 +4854,27 @@ function FormSection2({
4842
4854
  children,
4843
4855
  className
4844
4856
  }) {
4845
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", className), children: [
4846
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
4847
- /* @__PURE__ */ jsx("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: title }),
4848
- /* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
4849
- ] }),
4850
- children
4851
- ] });
4857
+ return /* @__PURE__ */ jsxs(
4858
+ "div",
4859
+ {
4860
+ className: cn("flex flex-col gap-5", className),
4861
+ style: { breakInside: "avoid" },
4862
+ children: [
4863
+ /* @__PURE__ */ jsxs(
4864
+ "div",
4865
+ {
4866
+ className: "flex items-center gap-4",
4867
+ style: { breakAfter: "avoid-page" },
4868
+ children: [
4869
+ /* @__PURE__ */ jsx("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: title }),
4870
+ /* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
4871
+ ]
4872
+ }
4873
+ ),
4874
+ children
4875
+ ]
4876
+ }
4877
+ );
4852
4878
  }
4853
4879
  function isFieldEmpty(field, value) {
4854
4880
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
@@ -5762,10 +5788,14 @@ function RegistrationSuccessCard({
5762
5788
  adventure,
5763
5789
  booking,
5764
5790
  traveller,
5765
- tripInfoLabels
5791
+ tripInfoLabels,
5792
+ density = "comfortable",
5793
+ submissionTimestamps,
5794
+ submissionTimestampsLabels
5766
5795
  }) {
5767
- var _a, _b, _c, _d, _e, _f, _g, _h;
5796
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
5768
5797
  const isMinimal = variant === "minimal";
5798
+ const isCompact = density === "compact";
5769
5799
  const sorted = isMinimal ? [] : [...fields].sort((a, b) => {
5770
5800
  var _a2, _b2;
5771
5801
  return ((_a2 = a.order) != null ? _a2 : 0) - ((_b2 = b.order) != null ? _b2 : 0);
@@ -5779,62 +5809,114 @@ function RegistrationSuccessCard({
5779
5809
  partnerLabel: (_d = tripInfoLabels == null ? void 0 : tripInfoLabels.partnerLabel) != null ? _d : "Partner",
5780
5810
  travellerLabel: (_e = tripInfoLabels == null ? void 0 : tripInfoLabels.travellerLabel) != null ? _e : "Traveller"
5781
5811
  };
5782
- return /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl border border-border bg-card p-6 sm:p-8 flex flex-col gap-10", className), children: [
5783
- actions && /* @__PURE__ */ jsx("div", { className: "flex gap-3 justify-end", children: actions }),
5784
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
5785
- logo !== null && /* eslint-disable-next-line @next/next/no-img-element */
5786
- /* @__PURE__ */ jsx(
5787
- "img",
5788
- {
5789
- src: logo != null ? logo : "/logo-planetaexo.png",
5790
- alt: logoAlt,
5791
- className: "h-10 w-auto object-contain"
5792
- }
5812
+ const STL = {
5813
+ submittedAt: (_f = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.submittedAt) != null ? _f : "Submitted",
5814
+ lastUpdatedAt: (_g = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.lastUpdatedAt) != null ? _g : "Last updated"
5815
+ };
5816
+ const hasTimestamps = !isMinimal && !!submissionTimestamps && (!!submissionTimestamps.submittedAt || !!submissionTimestamps.lastUpdatedAt);
5817
+ return /* @__PURE__ */ jsxs(
5818
+ "div",
5819
+ {
5820
+ className: cn(
5821
+ "rounded-xl border border-border bg-card p-6 sm:p-8 flex flex-col",
5822
+ isCompact ? "gap-6" : "gap-10",
5823
+ className
5793
5824
  ),
5794
- logo === void 0 && /* @__PURE__ */ jsx("div", { className: "inline-flex h-14 w-14 items-center justify-center rounded-full bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(CircleCheckIcon, { size: 28 }) }),
5795
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: title }),
5796
- message && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-ui", children: message })
5797
- ] }),
5798
- hasTripInfo && /* @__PURE__ */ jsx(FormSection2, { title: TL.sectionTitle, children: /* @__PURE__ */ jsxs("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: [
5799
- adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5800
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.adventureLabel }),
5801
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5802
- ] }),
5803
- dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5804
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5805
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
5806
- ] }),
5807
- (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5808
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.partnerLabel }),
5809
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: adventure.partnerName })
5810
- ] }),
5811
- booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5812
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.bookingLabel }),
5813
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-mono tabular-nums text-right min-w-0 break-words", children: booking.id })
5814
- ] }),
5815
- traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5816
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.travellerLabel }),
5817
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
5818
- ] })
5819
- ] }) }),
5820
- sorted.length > 0 && /* @__PURE__ */ jsx(FormSection2, { title: answersTitle, children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: sorted.map((f) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5821
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
5822
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
5823
- f,
5824
- answers[f.id]
5825
- ) })
5826
- ] }, f.id)) }) }),
5827
- !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_f = termsLabels == null ? void 0 : termsLabels.title) != null ? _f : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
5828
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5829
- /* @__PURE__ */ jsx("div", { className: cn(
5830
- "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5831
- terms.accepted ? "bg-primary" : "bg-destructive"
5832
- ), children: terms.accepted ? "\u2713" : "\u2717" }),
5833
- /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_g = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _g : "Accepted" : (_h = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _h : "Not accepted" })
5834
- ] }),
5835
- termsLayout === "full" && terms.markdown.trim().length > 0 && /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-muted/30 p-4", children: /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed text-foreground font-ui", children: terms.markdown }) })
5836
- ] }) })
5837
- ] });
5825
+ children: [
5826
+ actions && /* @__PURE__ */ jsx("div", { className: "flex gap-3 justify-end", children: actions }),
5827
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
5828
+ logo !== null && /* eslint-disable-next-line @next/next/no-img-element */
5829
+ /* @__PURE__ */ jsx(
5830
+ "img",
5831
+ {
5832
+ src: logo != null ? logo : "/logo-planetaexo.png",
5833
+ alt: logoAlt,
5834
+ className: "h-10 w-auto object-contain"
5835
+ }
5836
+ ),
5837
+ logo === void 0 && /* @__PURE__ */ jsx("div", { className: "inline-flex h-14 w-14 items-center justify-center rounded-full bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(CircleCheckIcon, { size: 28 }) }),
5838
+ /* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: title }),
5839
+ message && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-ui", children: message })
5840
+ ] }),
5841
+ hasTimestamps && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end gap-0.5 text-xs text-muted-foreground font-ui", children: [
5842
+ (submissionTimestamps == null ? void 0 : submissionTimestamps.submittedAt) && /* @__PURE__ */ jsxs("div", { children: [
5843
+ /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
5844
+ STL.submittedAt,
5845
+ ":"
5846
+ ] }),
5847
+ " ",
5848
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: submissionTimestamps.submittedAt })
5849
+ ] }),
5850
+ (submissionTimestamps == null ? void 0 : submissionTimestamps.lastUpdatedAt) && /* @__PURE__ */ jsxs("div", { children: [
5851
+ /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
5852
+ STL.lastUpdatedAt,
5853
+ ":"
5854
+ ] }),
5855
+ " ",
5856
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: submissionTimestamps.lastUpdatedAt })
5857
+ ] })
5858
+ ] }),
5859
+ hasTripInfo && /* @__PURE__ */ jsx(FormSection2, { title: TL.sectionTitle, children: /* @__PURE__ */ jsxs("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: [
5860
+ adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5861
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.adventureLabel }),
5862
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5863
+ ] }),
5864
+ dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5865
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5866
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
5867
+ ] }),
5868
+ (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5869
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.partnerLabel }),
5870
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: adventure.partnerName })
5871
+ ] }),
5872
+ booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5873
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.bookingLabel }),
5874
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-mono tabular-nums text-right min-w-0 break-words", children: booking.id })
5875
+ ] }),
5876
+ traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5877
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.travellerLabel }),
5878
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
5879
+ ] })
5880
+ ] }) }),
5881
+ sorted.length > 0 && /* @__PURE__ */ jsx(FormSection2, { title: answersTitle, children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: sorted.map((f) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5882
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
5883
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
5884
+ f,
5885
+ answers[f.id]
5886
+ ) })
5887
+ ] }, f.id)) }) }),
5888
+ !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_h = termsLabels == null ? void 0 : termsLabels.title) != null ? _h : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
5889
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5890
+ /* @__PURE__ */ jsx("div", { className: cn(
5891
+ "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5892
+ terms.accepted ? "bg-primary" : "bg-destructive"
5893
+ ), children: terms.accepted ? "\u2713" : "\u2717" }),
5894
+ /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_i = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _i : "Accepted" : (_j = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _j : "Not accepted" })
5895
+ ] }),
5896
+ termsLayout === "full" && terms.markdown.trim().length > 0 && /* @__PURE__ */ jsx(
5897
+ "div",
5898
+ {
5899
+ className: cn(
5900
+ "rounded-lg border border-border bg-muted/30",
5901
+ isCompact ? "p-3" : "p-4"
5902
+ ),
5903
+ style: { breakInside: "auto" },
5904
+ children: /* @__PURE__ */ jsx(
5905
+ "p",
5906
+ {
5907
+ className: cn(
5908
+ "whitespace-pre-wrap break-words text-foreground font-ui",
5909
+ isCompact ? "text-xs leading-snug" : "text-sm leading-relaxed"
5910
+ ),
5911
+ children: terms.markdown
5912
+ }
5913
+ )
5914
+ }
5915
+ )
5916
+ ] }) })
5917
+ ]
5918
+ }
5919
+ );
5838
5920
  }
5839
5921
  var OTPCodeInput = ({
5840
5922
  value,