@planetaexo/design-system 0.58.3 → 0.59.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
@@ -1326,7 +1326,7 @@ function AdventureCard({
1326
1326
  labels,
1327
1327
  interactionsDisabled
1328
1328
  }) {
1329
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
1329
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
1330
1330
  const isControlled = (_b = (_a = adventure.optionals) == null ? void 0 : _a.some((o) => o.onCheckedChange !== void 0)) != null ? _b : false;
1331
1331
  const [checkedInternal, setCheckedInternal] = React31__namespace.useState(
1332
1332
  new Set((_d = (_c = adventure.optionals) == null ? void 0 : _c.filter((o) => o.defaultChecked).map((o) => o.id)) != null ? _d : [])
@@ -1528,22 +1528,48 @@ function AdventureCard({
1528
1528
  ), children: adventure.detailsSlot })
1529
1529
  ] })
1530
1530
  ] }),
1531
+ adventure.rooms && adventure.rooms.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1532
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_p = adventure.accommodationsLabel) != null ? _p : "Accommodations" }),
1533
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-3", children: adventure.rooms.map((room, i) => {
1534
+ var _a2, _b2;
1535
+ const bedLabel = (_b2 = (_a2 = adventure.bedArrangementLabels) == null ? void 0 : _a2[room.bedArrangement]) != null ? _b2 : room.bedArrangement === "DOUBLE" ? "Double" : room.bedArrangement === "TWIN" ? "Twin" : room.bedArrangement === "SINGLE" ? "Single" : "Triple";
1536
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-3", children: [
1537
+ room.imageUrl && // eslint-disable-next-line @next/next/no-img-element
1538
+ /* @__PURE__ */ jsxRuntime.jsx(
1539
+ "img",
1540
+ {
1541
+ src: room.imageUrl,
1542
+ alt: room.roomName,
1543
+ className: "w-20 h-16 object-cover rounded shrink-0"
1544
+ }
1545
+ ),
1546
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
1547
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold text-foreground", children: `${room.qty}\xD7 ${room.roomName}` }),
1548
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm text-foreground/70 flex items-center gap-2 flex-wrap", children: [
1549
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: room.accommodationName }),
1550
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-2 py-0.5 text-xs font-semibold bg-primary/10 text-primary rounded uppercase tracking-wide", children: bedLabel })
1551
+ ] }),
1552
+ room.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/70 mt-1 leading-snug", children: room.description })
1553
+ ] })
1554
+ ] }, i);
1555
+ }) })
1556
+ ] }),
1531
1557
  adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1532
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_p = adventure.includedLabel) != null ? _p : "What's included" }),
1558
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_q = adventure.includedLabel) != null ? _q : "What's included" }),
1533
1559
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
1534
1560
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "w-4 h-4 text-primary shrink-0 mt-1" }),
1535
1561
  item
1536
1562
  ] }, i)) })
1537
1563
  ] }),
1538
1564
  adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1539
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_q = adventure.notIncludedLabel) != null ? _q : "What's not included" }),
1565
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_r = adventure.notIncludedLabel) != null ? _r : "What's not included" }),
1540
1566
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
1541
1567
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "w-4 h-4 text-destructive shrink-0 mt-1" }),
1542
1568
  item
1543
1569
  ] }, i)) })
1544
1570
  ] }),
1545
1571
  adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1546
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_r = adventure.cancellationPolicyLabel) != null ? _r : "Cancellation policy" }),
1572
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_s = adventure.cancellationPolicyLabel) != null ? _s : "Cancellation policy" }),
1547
1573
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.cancellationPolicy.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-muted-foreground font-sans", children: [
1548
1574
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5" }),
1549
1575
  item
@@ -4092,7 +4118,14 @@ var DEFAULT_LABELS = {
4092
4118
  notIncludedHeading: "O que n\xE3o est\xE1 incluso",
4093
4119
  childBadge: "child",
4094
4120
  adultsUnit: "adult(s)",
4095
- childrenUnit: "child(ren)"
4121
+ childrenUnit: "child(ren)",
4122
+ accommodationsHeading: "ACCOMMODATIONS",
4123
+ bedArrangementLabels: {
4124
+ DOUBLE: "Double",
4125
+ TWIN: "Twin",
4126
+ SINGLE: "Single",
4127
+ TRIPLE: "Triple"
4128
+ }
4096
4129
  };
4097
4130
  function BookingAdventureCard({
4098
4131
  tag,
@@ -4112,10 +4145,11 @@ function BookingAdventureCard({
4112
4145
  notIncluded,
4113
4146
  lineItems,
4114
4147
  subtotal,
4148
+ rooms,
4115
4149
  labels,
4116
4150
  className
4117
4151
  }) {
4118
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
4152
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
4119
4153
  const l = {
4120
4154
  travellersHeading: (_a = labels == null ? void 0 : labels.travellersHeading) != null ? _a : DEFAULT_LABELS.travellersHeading,
4121
4155
  detailsHeading: (_b = labels == null ? void 0 : labels.detailsHeading) != null ? _b : DEFAULT_LABELS.detailsHeading,
@@ -4128,7 +4162,14 @@ function BookingAdventureCard({
4128
4162
  notIncludedHeading: (_i = labels == null ? void 0 : labels.notIncludedHeading) != null ? _i : DEFAULT_LABELS.notIncludedHeading,
4129
4163
  childBadge: (_j = labels == null ? void 0 : labels.childBadge) != null ? _j : DEFAULT_LABELS.childBadge,
4130
4164
  adultsUnit: (_k = labels == null ? void 0 : labels.adultsUnit) != null ? _k : DEFAULT_LABELS.adultsUnit,
4131
- childrenUnit: (_l = labels == null ? void 0 : labels.childrenUnit) != null ? _l : DEFAULT_LABELS.childrenUnit
4165
+ childrenUnit: (_l = labels == null ? void 0 : labels.childrenUnit) != null ? _l : DEFAULT_LABELS.childrenUnit,
4166
+ accommodationsHeading: (_m = labels == null ? void 0 : labels.accommodationsHeading) != null ? _m : DEFAULT_LABELS.accommodationsHeading,
4167
+ bedArrangementLabels: {
4168
+ DOUBLE: (_o = (_n = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _n.DOUBLE) != null ? _o : DEFAULT_LABELS.bedArrangementLabels.DOUBLE,
4169
+ TWIN: (_q = (_p = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _p.TWIN) != null ? _q : DEFAULT_LABELS.bedArrangementLabels.TWIN,
4170
+ SINGLE: (_s = (_r = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _r.SINGLE) != null ? _s : DEFAULT_LABELS.bedArrangementLabels.SINGLE,
4171
+ TRIPLE: (_u = (_t = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _t.TRIPLE) != null ? _u : DEFAULT_LABELS.bedArrangementLabels.TRIPLE
4172
+ }
4132
4173
  };
4133
4174
  const hasTravellers = !!travellers && travellers.length > 0;
4134
4175
  const hasItinerary = !!itinerary && itinerary.length > 0;
@@ -4136,6 +4177,7 @@ function BookingAdventureCard({
4136
4177
  const hasIncluded = !!included && included.length > 0;
4137
4178
  const hasNotIncluded = !!notIncluded && notIncluded.length > 0;
4138
4179
  const hasLineItems = lineItems.length > 0;
4180
+ const hasRooms = !!rooms && rooms.length > 0;
4139
4181
  const dateRange = endDate ? `${startDate} \u2192 ${endDate}` : startDate;
4140
4182
  const showSlots = !!slots;
4141
4183
  const slotsText = showSlots ? [
@@ -4432,6 +4474,118 @@ function BookingAdventureCard({
4432
4474
  );
4433
4475
  })
4434
4476
  ] }),
4477
+ hasRooms && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4478
+ /* @__PURE__ */ jsxRuntime.jsx(
4479
+ "hr",
4480
+ {
4481
+ style: {
4482
+ border: "none",
4483
+ borderTop: `1px solid ${emailTokens.border}`,
4484
+ marginBottom: "10px"
4485
+ }
4486
+ }
4487
+ ),
4488
+ /* @__PURE__ */ jsxRuntime.jsx(
4489
+ "p",
4490
+ {
4491
+ style: {
4492
+ fontSize: "10px",
4493
+ fontWeight: 700,
4494
+ color: emailTokens.mutedForeground,
4495
+ textTransform: "uppercase",
4496
+ letterSpacing: "0.1em",
4497
+ margin: "0 0 10px 0"
4498
+ },
4499
+ children: l.accommodationsHeading
4500
+ }
4501
+ ),
4502
+ rooms.map((room, i) => /* @__PURE__ */ jsxRuntime.jsx(
4503
+ "table",
4504
+ {
4505
+ cellPadding: 0,
4506
+ cellSpacing: 0,
4507
+ style: {
4508
+ borderCollapse: "collapse",
4509
+ width: "100%",
4510
+ marginBottom: i < rooms.length - 1 ? "10px" : "0"
4511
+ },
4512
+ children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
4513
+ room.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(
4514
+ "td",
4515
+ {
4516
+ style: {
4517
+ width: "80px",
4518
+ verticalAlign: "top",
4519
+ paddingRight: "10px"
4520
+ },
4521
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4522
+ "img",
4523
+ {
4524
+ src: room.imageUrl,
4525
+ alt: room.roomName,
4526
+ style: {
4527
+ width: "80px",
4528
+ height: "60px",
4529
+ objectFit: "cover",
4530
+ display: "block",
4531
+ borderRadius: "6px"
4532
+ }
4533
+ }
4534
+ )
4535
+ }
4536
+ ),
4537
+ /* @__PURE__ */ jsxRuntime.jsxs("td", { style: { verticalAlign: "top" }, children: [
4538
+ /* @__PURE__ */ jsxRuntime.jsx(
4539
+ "div",
4540
+ {
4541
+ style: {
4542
+ fontSize: "14px",
4543
+ fontWeight: 600,
4544
+ color: emailTokens.foreground,
4545
+ marginBottom: "2px"
4546
+ },
4547
+ children: `${room.qty}\xD7 ${room.roomName}`
4548
+ }
4549
+ ),
4550
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { fontSize: "12px", color: emailTokens.mutedForeground }, children: [
4551
+ room.accommodationName,
4552
+ /* @__PURE__ */ jsxRuntime.jsx(
4553
+ "span",
4554
+ {
4555
+ style: {
4556
+ display: "inline-block",
4557
+ marginLeft: "8px",
4558
+ padding: "1px 6px",
4559
+ fontSize: "10px",
4560
+ fontWeight: 600,
4561
+ color: emailTokens.primary,
4562
+ backgroundColor: emailTokens.primaryLight,
4563
+ borderRadius: "4px",
4564
+ textTransform: "uppercase",
4565
+ letterSpacing: "0.05em"
4566
+ },
4567
+ children: l.bedArrangementLabels[room.bedArrangement]
4568
+ }
4569
+ )
4570
+ ] }),
4571
+ room.description && /* @__PURE__ */ jsxRuntime.jsx(
4572
+ "div",
4573
+ {
4574
+ style: {
4575
+ fontSize: "12px",
4576
+ color: emailTokens.bodyText,
4577
+ marginTop: "4px",
4578
+ lineHeight: "1.4"
4579
+ },
4580
+ children: room.description
4581
+ }
4582
+ )
4583
+ ] })
4584
+ ] }) })
4585
+ },
4586
+ i
4587
+ ))
4588
+ ] }),
4435
4589
  (hasDescription || hasItinerary) && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: "4px" }, children: [
4436
4590
  /* @__PURE__ */ jsxRuntime.jsx(
4437
4591
  "hr",
@@ -4684,8 +4838,21 @@ function BookingAdventureCard({
4684
4838
  }
4685
4839
  );
4686
4840
  }
4687
- function BookingSummary({ heading, rows, footer, className }) {
4688
- var _a, _b;
4841
+ var DEFAULT_BED_LABELS = {
4842
+ DOUBLE: "Double",
4843
+ TWIN: "Twin",
4844
+ SINGLE: "Single",
4845
+ TRIPLE: "Triple"
4846
+ };
4847
+ function BookingSummary({ heading, rows, rooms, roomsHeading, bedArrangementLabels, footer, className }) {
4848
+ var _a, _b, _c, _d, _e, _f;
4849
+ const hasRooms = !!rooms && rooms.length > 0;
4850
+ const bedLabels = {
4851
+ DOUBLE: (_a = bedArrangementLabels == null ? void 0 : bedArrangementLabels.DOUBLE) != null ? _a : DEFAULT_BED_LABELS.DOUBLE,
4852
+ TWIN: (_b = bedArrangementLabels == null ? void 0 : bedArrangementLabels.TWIN) != null ? _b : DEFAULT_BED_LABELS.TWIN,
4853
+ SINGLE: (_c = bedArrangementLabels == null ? void 0 : bedArrangementLabels.SINGLE) != null ? _c : DEFAULT_BED_LABELS.SINGLE,
4854
+ TRIPLE: (_d = bedArrangementLabels == null ? void 0 : bedArrangementLabels.TRIPLE) != null ? _d : DEFAULT_BED_LABELS.TRIPLE
4855
+ };
4689
4856
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: { marginBottom: "24px" }, children: [
4690
4857
  heading && /* @__PURE__ */ jsxRuntime.jsx(
4691
4858
  "p",
@@ -4720,7 +4887,7 @@ function BookingSummary({ heading, rows, footer, className }) {
4720
4887
  children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
4721
4888
  rows.map((row, i) => {
4722
4889
  var _a2;
4723
- const isLastRowWithoutFooter = i === rows.length - 1 && !footer;
4890
+ const isLastRowWithoutFooter = i === rows.length - 1 && !footer && !hasRooms;
4724
4891
  return /* @__PURE__ */ jsxRuntime.jsxs(
4725
4892
  "tr",
4726
4893
  {
@@ -4758,6 +4925,50 @@ function BookingSummary({ heading, rows, footer, className }) {
4758
4925
  i
4759
4926
  );
4760
4927
  }),
4928
+ hasRooms && /* @__PURE__ */ jsxRuntime.jsx(
4929
+ "tr",
4930
+ {
4931
+ style: !footer ? {} : { borderBottom: `1px solid ${emailTokens.border}` },
4932
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
4933
+ "td",
4934
+ {
4935
+ colSpan: 2,
4936
+ style: {
4937
+ padding: "12px 20px",
4938
+ backgroundColor: emailTokens.muted
4939
+ },
4940
+ children: [
4941
+ /* @__PURE__ */ jsxRuntime.jsx(
4942
+ "div",
4943
+ {
4944
+ style: {
4945
+ fontSize: "10px",
4946
+ fontWeight: 700,
4947
+ color: emailTokens.mutedForeground,
4948
+ textTransform: "uppercase",
4949
+ letterSpacing: "0.1em",
4950
+ marginBottom: "6px"
4951
+ },
4952
+ children: roomsHeading != null ? roomsHeading : "Accommodations"
4953
+ }
4954
+ ),
4955
+ rooms.map((room, i) => /* @__PURE__ */ jsxRuntime.jsx(
4956
+ "div",
4957
+ {
4958
+ style: {
4959
+ fontSize: "14px",
4960
+ color: emailTokens.foreground,
4961
+ marginBottom: i < rooms.length - 1 ? "4px" : 0
4962
+ },
4963
+ children: `${room.qty}\xD7 ${room.roomName} \u2014 ${bedLabels[room.bedArrangement]}`
4964
+ },
4965
+ i
4966
+ ))
4967
+ ]
4968
+ }
4969
+ )
4970
+ }
4971
+ ),
4761
4972
  footer && /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
4762
4973
  "td",
4763
4974
  {
@@ -4765,8 +4976,8 @@ function BookingSummary({ heading, rows, footer, className }) {
4765
4976
  style: {
4766
4977
  padding: "12px 20px",
4767
4978
  textAlign: "center",
4768
- fontWeight: (_a = footer.fontWeight) != null ? _a : 600,
4769
- color: (_b = footer.color) != null ? _b : emailTokens.foreground,
4979
+ fontWeight: (_e = footer.fontWeight) != null ? _e : 600,
4980
+ color: (_f = footer.color) != null ? _f : emailTokens.foreground,
4770
4981
  backgroundColor: footer.backgroundColor
4771
4982
  },
4772
4983
  children: footer.text
@@ -6433,6 +6644,13 @@ var DEFAULT_LABELS9 = {
6433
6644
  datesLabel: "Dates",
6434
6645
  numberOfPeopleLabel: "Number of Travellers",
6435
6646
  optionalsLabel: "Optionals",
6647
+ accommodationsHeading: "Accommodations",
6648
+ bedArrangementLabels: {
6649
+ DOUBLE: "Double",
6650
+ TWIN: "Twin",
6651
+ SINGLE: "Single",
6652
+ TRIPLE: "Triple"
6653
+ },
6436
6654
  registrationPendingNotice: "The travellers' registration details will be sent to you as soon as all travellers have completed their forms.",
6437
6655
  mustReplyToConfirm: "Please reply to this email to confirm the booking.",
6438
6656
  closingAgent: (agentName, contact) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -6456,6 +6674,7 @@ function PartnerBookingCreatedEmail({
6456
6674
  dateRange,
6457
6675
  travellersCount,
6458
6676
  optionals,
6677
+ rooms,
6459
6678
  booker,
6460
6679
  agent,
6461
6680
  logoUrl,
@@ -6520,7 +6739,16 @@ function PartnerBookingCreatedEmail({
6520
6739
  /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "16px" }, children: l.greeting(partnerName) }),
6521
6740
  /* @__PURE__ */ jsxRuntime.jsx("p", { style: { marginBottom: "24px" }, children: l.intro(adventureName) }),
6522
6741
  sectionDivider,
6523
- /* @__PURE__ */ jsxRuntime.jsx(BookingSummary, { heading: l.summaryHeading, rows: summaryRows }),
6742
+ /* @__PURE__ */ jsxRuntime.jsx(
6743
+ BookingSummary,
6744
+ {
6745
+ heading: l.summaryHeading,
6746
+ rows: summaryRows,
6747
+ rooms,
6748
+ roomsHeading: l.accommodationsHeading,
6749
+ bedArrangementLabels: l.bedArrangementLabels
6750
+ }
6751
+ ),
6524
6752
  sectionDivider,
6525
6753
  /* @__PURE__ */ jsxRuntime.jsxs(
6526
6754
  "div",