@asdp/ferryui 0.1.22-dev.8633 → 0.1.22-dev.8641

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.js CHANGED
@@ -21,6 +21,77 @@ var PhoneInputComponent__default = /*#__PURE__*/_interopDefault(PhoneInputCompon
21
21
  var Select__default = /*#__PURE__*/_interopDefault(Select);
22
22
  var moment__default = /*#__PURE__*/_interopDefault(moment);
23
23
 
24
+ // src/components/ModalIllustration/ModalIllustration.constants.ts
25
+ var DEFAULT_LABELS = {
26
+ id: {
27
+ defaultImageAlt: "Ilustrasi",
28
+ defaultTitle: "Informasi",
29
+ defaultButtonText: "Tutup"
30
+ },
31
+ en: {
32
+ defaultImageAlt: "Illustration",
33
+ defaultTitle: "Information",
34
+ defaultButtonText: "Close"
35
+ }
36
+ };
37
+ var PRESET_CONTENT = {
38
+ RADIUS: {
39
+ id: {
40
+ title: "Anda berada di luar area pemesanan",
41
+ message: "Pemesanan tiket tidak dapat dilakukan dari lokasi Anda saat ini. Fitur pembatasan wilayah sedang aktif untuk mencegah pemesanan tidak sah.",
42
+ imageSrc: "/assets/images/illustrations/radius.svg",
43
+ imageAlt: "Radius Limitation Illustration"
44
+ },
45
+ en: {
46
+ title: "You are outside the booking area",
47
+ message: "Ticket booking cannot be done from your current location. Location restriction feature is active to prevent unauthorized booking.",
48
+ imageSrc: "/assets/images/illustrations/radius.svg",
49
+ imageAlt: "Radius Limitation Illustration"
50
+ }
51
+ },
52
+ SESSION_EXPIRED: {
53
+ id: {
54
+ title: "Sesi anda telah berakhir",
55
+ message: "Waktu sesi Anda telah habis untuk alasan keamanan. Silakan klik tombol dibawah untuk masuk kembali.",
56
+ imageSrc: "/assets/images/illustrations/sessionexp.svg",
57
+ imageAlt: "Session Expired Illustration"
58
+ },
59
+ en: {
60
+ title: "Your session has expired",
61
+ message: "Your session time has run out for security reasons. Please click the button below to sign in again.",
62
+ imageSrc: "/assets/images/illustrations/sessionexp.svg",
63
+ imageAlt: "Session Expired Illustration"
64
+ }
65
+ },
66
+ PURCHASE_PERIOD_EXPIRED: {
67
+ id: {
68
+ title: "Waktu pembelian telah berakhir",
69
+ message: "Pemesanan tiket ditutup 1 jam sebelum jadwal keberangkatan. Silakan pilih jadwal keberangkatan lain yang masih tersedia.",
70
+ imageSrc: "/assets/images/illustrations/pay.svg",
71
+ imageAlt: "Purchase Period Expired Illustration"
72
+ },
73
+ en: {
74
+ title: "Purchase period has expired",
75
+ message: "Ticket booking closes 1 hour before departure schedule. Please choose another available departure schedule.",
76
+ imageSrc: "/assets/images/illustrations/pay.svg",
77
+ imageAlt: "Purchase Period Expired Illustration"
78
+ }
79
+ },
80
+ TRANSACTION_LIMIT: {
81
+ id: {
82
+ title: "Anda mencapai batas transaksi tertunda",
83
+ message: "Anda telah mencapai batas transaksi tertunda. Pemesanan dapat dilakukan kembali setelah transaksi sebelumnya diselesaikan.",
84
+ imageSrc: "/assets/images/illustrations/mobile-pay.svg",
85
+ imageAlt: "Transaction Limit Illustration"
86
+ },
87
+ en: {
88
+ title: "Pending transaction limit reached",
89
+ message: "You have reached the pending transaction limit. Booking can be done again after the previous transaction is completed.",
90
+ imageSrc: "/assets/images/illustrations/mobile-pay.svg",
91
+ imageAlt: "Transaction Limit Illustration"
92
+ }
93
+ }
94
+ };
24
95
  var useStyles = reactComponents.makeStyles({
25
96
  dialogSurface: {
26
97
  maxWidth: "600px",
@@ -51,96 +122,82 @@ var ModalIllustration = ({
51
122
  title,
52
123
  message,
53
124
  imageSrc = "/assets/images/illustrations/radius.svg",
54
- imageAlt = "Illustration",
125
+ imageAlt,
55
126
  imageWidth = 361,
56
127
  imageHeight = 203,
57
128
  primaryButton,
58
- secondaryButton
129
+ secondaryButton,
130
+ language = "id",
131
+ labels
59
132
  }) => {
60
133
  const styles = useStyles();
61
- return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Dialog, { open, onOpenChange: (_, data) => !data.open && onClose(), modalType: "modal", children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
62
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTitle, { children: title }),
63
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { children: [
64
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.iconContainer, children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(
66
- "img",
67
- {
68
- src: imageSrc,
69
- alt: imageAlt,
70
- width: imageWidth,
71
- height: imageHeight,
72
- className: styles.image
73
- }
74
- ),
75
- typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { textAlign: "center" }, children: message }) : message
76
- ] }),
77
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.buttonContainer, children: [
78
- /* @__PURE__ */ jsxRuntime.jsx(
79
- reactComponents.Button,
80
- {
81
- style: { width: "100%" },
82
- type: "button",
83
- appearance: primaryButton.appearance || "primary",
84
- onClick: primaryButton.onClick,
85
- children: primaryButton.text
86
- }
87
- ),
88
- secondaryButton && /* @__PURE__ */ jsxRuntime.jsx(
89
- reactComponents.Button,
90
- {
91
- style: { width: "100%" },
92
- type: "button",
93
- appearance: secondaryButton.appearance || "outline",
94
- onClick: secondaryButton.onClick,
95
- children: secondaryButton.text
96
- }
97
- )
98
- ] })
99
- ] })
100
- ] }) }) });
134
+ const mergedLabels = { ...DEFAULT_LABELS[language], ...labels };
135
+ const displayImageAlt = imageAlt || mergedLabels.defaultImageAlt;
136
+ return /* @__PURE__ */ jsxRuntime.jsx(
137
+ reactComponents.Dialog,
138
+ {
139
+ open,
140
+ onOpenChange: (_, data) => !data.open && onClose(),
141
+ modalType: "modal",
142
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
143
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTitle, { children: title }),
144
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { children: [
145
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.iconContainer, children: [
146
+ /* @__PURE__ */ jsxRuntime.jsx(
147
+ "img",
148
+ {
149
+ src: imageSrc,
150
+ alt: displayImageAlt,
151
+ width: imageWidth,
152
+ height: imageHeight,
153
+ className: styles.image
154
+ }
155
+ ),
156
+ typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { textAlign: "center" }, children: message }) : message
157
+ ] }),
158
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.buttonContainer, children: [
159
+ /* @__PURE__ */ jsxRuntime.jsx(
160
+ reactComponents.Button,
161
+ {
162
+ style: { width: "100%" },
163
+ type: "button",
164
+ appearance: primaryButton.appearance || "primary",
165
+ onClick: primaryButton.onClick,
166
+ children: primaryButton.text
167
+ }
168
+ ),
169
+ secondaryButton && /* @__PURE__ */ jsxRuntime.jsx(
170
+ reactComponents.Button,
171
+ {
172
+ style: { width: "100%" },
173
+ type: "button",
174
+ appearance: secondaryButton.appearance || "outline",
175
+ onClick: secondaryButton.onClick,
176
+ children: secondaryButton.text
177
+ }
178
+ )
179
+ ] })
180
+ ] })
181
+ ] }) })
182
+ }
183
+ );
101
184
  };
102
185
 
103
186
  // src/components/ModalIllustration/presets.ts
104
- var MODAL_PRESETS = {
105
- /**
106
- * Modal for radius/location restriction
107
- */
108
- RADIUS: {
109
- title: "Anda berada di luar area pemesanan",
110
- message: "Pemesanan tiket tidak dapat dilakukan dari lokasi Anda saat ini. Fitur pembatasan wilayah sedang aktif untuk mencegah pemesanan tidak sah.",
111
- imageSrc: "/assets/images/illustrations/radius.svg",
112
- imageAlt: "Radius Limitation Illustration"
113
- },
114
- /**
115
- * Modal for expired session
116
- */
117
- SESSION_EXPIRED: {
118
- title: "Sesi anda telah berakhir",
119
- message: "Waktu sesi Anda telah habis untuk alasan keamanan. Silakan klik tombol dibawah untuk masuk kembali.",
120
- imageSrc: "/assets/images/illustrations/sessionexp.svg",
121
- imageAlt: "Session Expired Illustration"
122
- },
123
- /**
124
- * Modal for purchase period expired
125
- */
126
- PURCHASE_PERIOD_EXPIRED: {
127
- title: "Waktu pembelian telah berakhir",
128
- message: "Pemesanan tiket ditutup 1 jam sebelum jadwal keberangkatan. Silakan pilih jadwal keberangkatan lain yang masih tersedia.",
129
- imageSrc: "/assets/images/illustrations/pay.svg",
130
- imageAlt: "Purchase Period Expired Illustration"
131
- },
132
- /**
133
- * Modal for transaction limit reached
134
- */
135
- TRANSACTION_LIMIT: {
136
- title: "Anda mencapai batas transaksi tertunda",
137
- message: "Anda telah mencapai batas transaksi tertunda. Pemesanan dapat dilakukan kembali setelah transaksi sebelumnya diselesaikan.",
138
- imageSrc: "/assets/images/illustrations/mobile-pay.svg",
139
- imageAlt: "Transaction Limit Illustration"
140
- }
187
+ var getModalPreset = (presetKey, language = "id") => {
188
+ const content = PRESET_CONTENT[presetKey][language];
189
+ return {
190
+ title: content.title,
191
+ message: content.message,
192
+ imageSrc: content.imageSrc,
193
+ imageAlt: content.imageAlt
194
+ };
141
195
  };
142
- var getModalPreset = (presetKey) => {
143
- return MODAL_PRESETS[presetKey];
196
+ var MODAL_PRESETS = {
197
+ RADIUS: getModalPreset("RADIUS", "id"),
198
+ SESSION_EXPIRED: getModalPreset("SESSION_EXPIRED", "id"),
199
+ PURCHASE_PERIOD_EXPIRED: getModalPreset("PURCHASE_PERIOD_EXPIRED", "id"),
200
+ TRANSACTION_LIMIT: getModalPreset("TRANSACTION_LIMIT", "id")
144
201
  };
145
202
  var useStyles2 = reactComponents.makeStyles({
146
203
  carousel: {},
@@ -263,7 +320,7 @@ var CarouselWithCustomNav = ({
263
320
  };
264
321
 
265
322
  // src/components/CardPromo/CardPromo.constants.ts
266
- var DEFAULT_LABELS = {
323
+ var DEFAULT_LABELS2 = {
267
324
  id: {
268
325
  defaultImageAlt: "Gambar Promo",
269
326
  defaultButtonText: "Lihat Detail"
@@ -374,7 +431,7 @@ var CardPromo = ({
374
431
  labels
375
432
  }) => {
376
433
  const classes = useStyles3();
377
- const mergedLabels = { ...DEFAULT_LABELS[language], ...labels };
434
+ const mergedLabels = { ...DEFAULT_LABELS2[language], ...labels };
378
435
  const displayImageAlt = imageAlt || mergedLabels.defaultImageAlt;
379
436
  const displayButtonText = buttonText || mergedLabels.defaultButtonText;
380
437
  const ariaLabel = totalCards ? `Card ${index + 1} of ${totalCards}` : `Promo card ${index + 1}`;
@@ -473,6 +530,20 @@ var CardPromo = ({
473
530
  }
474
531
  );
475
532
  };
533
+
534
+ // src/components/CardBanner/CardBanner.constants.ts
535
+ var DEFAULT_LABELS3 = {
536
+ id: {
537
+ bannerAriaLabel: "Banner {index} dari {total}",
538
+ bannerAriaLabelSingle: "Banner {index}",
539
+ loadingBanner: "Memuat banner"
540
+ },
541
+ en: {
542
+ bannerAriaLabel: "Banner {index} of {total}",
543
+ bannerAriaLabelSingle: "Banner {index}",
544
+ loadingBanner: "Loading banner"
545
+ }
546
+ };
476
547
  var useStyles4 = reactComponents.makeStyles({
477
548
  bannerCard: {
478
549
  overflow: "hidden",
@@ -500,41 +571,50 @@ var CardBanner = ({
500
571
  index = 0,
501
572
  totalBanners,
502
573
  onClick,
503
- isLoading = false
574
+ isLoading = false,
575
+ language = "id",
576
+ labels
504
577
  }) => {
505
578
  const classes = useStyles4();
506
- const ariaLabel = totalBanners ? `Banner ${index + 1} of ${totalBanners}` : `Banner ${index + 1}`;
579
+ const mergedLabels = {
580
+ ...DEFAULT_LABELS3[language],
581
+ ...labels
582
+ };
583
+ const ariaLabel = totalBanners ? mergedLabels.bannerAriaLabel.replace("{index}", (index + 1).toString()).replace("{total}", totalBanners.toString()) : mergedLabels.bannerAriaLabelSingle.replace(
584
+ "{index}",
585
+ (index + 1).toString()
586
+ );
507
587
  if (isLoading) {
508
- return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.CarouselCard, { className: classes.bannerCard, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { "aria-label": "Loading banner", style: { width: "100%", height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
509
- reactComponents.SkeletonItem,
588
+ return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.CarouselCard, { className: classes.bannerCard, children: /* @__PURE__ */ jsxRuntime.jsx(
589
+ reactComponents.Skeleton,
510
590
  {
511
- shape: "rectangle",
512
- style: {
513
- width: "100%",
514
- height: "100%",
515
- borderRadius: reactComponents.tokens.borderRadiusXLarge
516
- }
591
+ "aria-label": mergedLabels.loadingBanner,
592
+ style: { width: "100%", height: "100%" },
593
+ children: /* @__PURE__ */ jsxRuntime.jsx(
594
+ reactComponents.SkeletonItem,
595
+ {
596
+ shape: "rectangle",
597
+ style: {
598
+ width: "100%",
599
+ height: "100%",
600
+ borderRadius: reactComponents.tokens.borderRadiusXLarge
601
+ }
602
+ }
603
+ )
517
604
  }
518
- ) }) });
605
+ ) });
519
606
  }
520
- return /* @__PURE__ */ jsxRuntime.jsx(
521
- reactComponents.CarouselCard,
607
+ return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.CarouselCard, { className: classes.bannerCard, "aria-label": ariaLabel, children: /* @__PURE__ */ jsxRuntime.jsx(
608
+ "img",
522
609
  {
523
- className: classes.bannerCard,
524
- "aria-label": ariaLabel,
525
- children: /* @__PURE__ */ jsxRuntime.jsx(
526
- "img",
527
- {
528
- className: classes.bannerImage,
529
- src: imageUrl,
530
- alt,
531
- role: "presentation",
532
- onClick,
533
- style: { cursor: onClick ? "pointer" : "default" }
534
- }
535
- )
610
+ className: classes.bannerImage,
611
+ src: imageUrl,
612
+ alt,
613
+ role: "presentation",
614
+ onClick,
615
+ style: { cursor: onClick ? "pointer" : "default" }
536
616
  }
537
- );
617
+ ) });
538
618
  };
539
619
  function useWindowSize() {
540
620
  const [windowSize, setWindowSize] = React5.useState({
@@ -680,7 +760,7 @@ var extendedTokens = {
680
760
  colorBrandForegroundLinkSelected: customBrand[110]});
681
761
 
682
762
  // src/components/CardTicket/CardTicket.constants.ts
683
- var DEFAULT_LABELS2 = {
763
+ var DEFAULT_LABELS4 = {
684
764
  id: {
685
765
  availableSeatsLabel: "Tersedia",
686
766
  estimationPrefix: "Estimasi",
@@ -922,7 +1002,7 @@ var CardTicket = ({
922
1002
  }) => {
923
1003
  const styles = useStyles5();
924
1004
  const { width } = useWindowSize();
925
- const mergedLabels = { ...DEFAULT_LABELS2[language], ...labels };
1005
+ const mergedLabels = { ...DEFAULT_LABELS4[language], ...labels };
926
1006
  const getCircularVerticalConfig = () => {
927
1007
  if (width <= 1600) return { count: 6, spacing: 60, top: 10 };
928
1008
  return { count: 5, spacing: 60, top: 18 };
@@ -1426,6 +1506,56 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1426
1506
  }
1427
1507
  );
1428
1508
  var BackgroundTicketCardVertical_default = BackgroundTicketCardVertical;
1509
+
1510
+ // src/components/CardServiceMenu/CardServiceMenu.constants.ts
1511
+ var DEFAULT_LABELS5 = {
1512
+ id: {
1513
+ ferryLabel: "Ferry",
1514
+ ferryDescription: "Layanan penyeberangan ferry ASDP",
1515
+ ifcsLabel: "IFCS",
1516
+ ifcsDescription: "Integrated Ferry Control System",
1517
+ skptLabel: "SKPT",
1518
+ skptDescription: "Sistem Karcis Penumpang Terpadu",
1519
+ hotelLabel: "Hotel",
1520
+ hotelDescription: "Layanan pemesanan hotel",
1521
+ otherLabel: "Lainnya",
1522
+ otherDescription: "Layanan lainnya"
1523
+ },
1524
+ en: {
1525
+ ferryLabel: "Ferry",
1526
+ ferryDescription: "ASDP Ferry Crossing Service",
1527
+ ifcsLabel: "IFCS",
1528
+ ifcsDescription: "Integrated Ferry Control System",
1529
+ skptLabel: "SKPT",
1530
+ skptDescription: "Integrated Passenger Ticketing System",
1531
+ hotelLabel: "Hotel",
1532
+ hotelDescription: "Hotel Booking Service",
1533
+ otherLabel: "Other",
1534
+ otherDescription: "Other Services"
1535
+ }
1536
+ };
1537
+ var ALIAS_MENU_ITEMS = {
1538
+ ferry: {
1539
+ id: "ferry",
1540
+ logo: "/assets/images/icons/ferry.svg"
1541
+ },
1542
+ ifcs: {
1543
+ id: "ifcs",
1544
+ logo: "/assets/logo/asdp-default.svg"
1545
+ },
1546
+ skpt: {
1547
+ id: "skpt",
1548
+ logo: "/assets/logo/asdp-default.svg"
1549
+ },
1550
+ hotel: {
1551
+ id: "hotel",
1552
+ logo: "/assets/images/icons/hotel.svg"
1553
+ },
1554
+ other: {
1555
+ id: "other",
1556
+ logo: "/assets/images/icons/other.svg"
1557
+ }
1558
+ };
1429
1559
  var useStyles6 = reactComponents.makeStyles({
1430
1560
  card: {
1431
1561
  width: "100%",
@@ -1518,66 +1648,26 @@ var useStyles6 = reactComponents.makeStyles({
1518
1648
  }
1519
1649
  }
1520
1650
  });
1521
- var SERVICE_MENU_ITEMS = {
1522
- ferry: {
1523
- id: "ferry",
1524
- logo: "/assets/images/icons/ferry.svg",
1525
- labels: {
1526
- id: { label: "Ferry", description: "Layanan penyeberangan ferry ASDP" },
1527
- en: { label: "Ferry", description: "ASDP Ferry Crossing Service" }
1528
- }
1529
- },
1530
- ifcs: {
1531
- id: "ifcs",
1532
- logo: "/assets/logo/asdp-default.svg",
1533
- labels: {
1534
- id: { label: "IFCS", description: "Integrated Ferry Control System" },
1535
- en: { label: "IFCS", description: "Integrated Ferry Control System" }
1536
- }
1537
- },
1538
- skpt: {
1539
- id: "skpt",
1540
- logo: "/assets/logo/asdp-default.svg",
1541
- labels: {
1542
- id: { label: "SKPT", description: "Sistem Karcis Penumpang Terpadu" },
1543
- en: { label: "SKPT", description: "Integrated Passenger Ticketing System" }
1544
- }
1545
- },
1546
- hotel: {
1547
- id: "hotel",
1548
- logo: "/assets/images/icons/hotel.svg",
1549
- labels: {
1550
- id: { label: "Hotel", description: "Layanan pemesanan hotel" },
1551
- en: { label: "Hotel", description: "Hotel Booking Service" }
1552
- }
1553
- },
1554
- other: {
1555
- id: "other",
1556
- logo: "/assets/images/icons/other.svg",
1557
- labels: {
1558
- id: { label: "Lainnya", description: "Layanan lainnya" },
1559
- en: { label: "Other", description: "Other Services" }
1560
- }
1561
- }
1562
- };
1563
1651
  var CardServiceMenu = ({
1564
1652
  activeServiceId = "ferry",
1565
1653
  language = "id",
1566
1654
  onServiceClick,
1567
1655
  showDescriptions = true,
1568
- className
1656
+ className,
1657
+ labels
1569
1658
  }) => {
1570
1659
  const styles = useStyles6();
1660
+ const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
1571
1661
  const getMenuItemClass = (serviceId) => {
1572
1662
  const isActive = activeServiceId === serviceId;
1573
- return reactComponents.mergeClasses(
1574
- styles.menuItem,
1575
- isActive && styles.menuItemActive
1576
- );
1663
+ return reactComponents.mergeClasses(styles.menuItem, isActive && styles.menuItemActive);
1577
1664
  };
1578
- const menuItems = Object.values(SERVICE_MENU_ITEMS);
1665
+ const menuItems = Object.values(ALIAS_MENU_ITEMS);
1579
1666
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: reactComponents.mergeClasses(styles.card, className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.menuList, children: menuItems.map((item, index) => {
1580
- const { label, description } = item.labels[language];
1667
+ const labelKey = `${item.id}Label`;
1668
+ const descriptionKey = `${item.id}Description`;
1669
+ const label = mergedLabels[labelKey];
1670
+ const description = mergedLabels[descriptionKey];
1581
1671
  return /* @__PURE__ */ jsxRuntime.jsxs(React5__default.default.Fragment, { children: [
1582
1672
  /* @__PURE__ */ jsxRuntime.jsxs(
1583
1673
  reactComponents.Button,
@@ -1585,14 +1675,7 @@ var CardServiceMenu = ({
1585
1675
  className: getMenuItemClass(item.id),
1586
1676
  onClick: () => onServiceClick?.(item.id),
1587
1677
  children: [
1588
- /* @__PURE__ */ jsxRuntime.jsx(
1589
- "img",
1590
- {
1591
- src: item.logo,
1592
- alt: label,
1593
- className: styles.logo
1594
- }
1595
- ),
1678
+ /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.logo, alt: label, className: styles.logo }),
1596
1679
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
1597
1680
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: label }),
1598
1681
  showDescriptions && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.description, children: description })
@@ -1698,6 +1781,26 @@ var DatePickerInput = React5.forwardRef(
1698
1781
  );
1699
1782
  DatePickerInput.displayName = "DatePickerInput";
1700
1783
  var DatePickerInput_default = DatePickerInput;
1784
+
1785
+ // src/components/InputDynamic/InputDynamic.constants.ts
1786
+ var DEFAULT_LABELS6 = {
1787
+ id: {
1788
+ emailOrPhonePlaceholder: "Email atau Nomor HP",
1789
+ emailPlaceholder: "Email",
1790
+ phonePlaceholder: "Nomor HP",
1791
+ identityPlaceholder: "Email, KTP, SIM, Passport, atau Nomor Telepon",
1792
+ identityPhonePlaceholder: "Nomor telepon",
1793
+ identityIdPlaceholder: "KTP, SIM, atau Passport"
1794
+ },
1795
+ en: {
1796
+ emailOrPhonePlaceholder: "Email or Phone Number",
1797
+ emailPlaceholder: "Email",
1798
+ phonePlaceholder: "Phone Number",
1799
+ identityPlaceholder: "Email, ID Card, Driving License, Passport, or Phone Number",
1800
+ identityPhonePlaceholder: "Phone Number",
1801
+ identityIdPlaceholder: "ID Card, Driving License, or Passport"
1802
+ }
1803
+ };
1701
1804
  var PhoneInput = PhoneInputComponent__default.default.default || PhoneInputComponent__default.default;
1702
1805
  var useStyles7 = reactComponents.makeStyles({
1703
1806
  field: {
@@ -1940,13 +2043,18 @@ var InputDynamic = ({
1940
2043
  autoComplete,
1941
2044
  onInput,
1942
2045
  contentAfter,
1943
- onChange
2046
+ onChange,
2047
+ language = "id",
2048
+ labels
1944
2049
  }) => {
1945
2050
  const styles = useStyles7();
2051
+ const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
1946
2052
  const [showPassword, setShowPassword] = React5.useState(false);
1947
2053
  const [isPhoneMode, setIsPhoneMode] = React5.useState(false);
1948
2054
  const [emailOrPhoneType, setEmailOrPhoneType] = React5.useState("none");
1949
- const [identityType, setIdentityType] = React5.useState("id");
2055
+ const [identityType, setIdentityType] = React5.useState(
2056
+ "id"
2057
+ );
1950
2058
  const [lastPhoneValue, setLastPhoneValue] = React5.useState("");
1951
2059
  const [lastEmailOrPhoneValue, setLastEmailOrPhoneValue] = React5.useState("");
1952
2060
  const inputRef = React5.useRef(null);
@@ -2111,13 +2219,13 @@ var InputDynamic = ({
2111
2219
  updateEmailOrPhoneType(field.value);
2112
2220
  const stringValue = typeof field.value === "string" ? field.value : "";
2113
2221
  let inputType = "text";
2114
- let inputPlaceholder = placeholder || "Email atau Nomor HP";
2222
+ let inputPlaceholder = placeholder || mergedLabels.emailOrPhonePlaceholder;
2115
2223
  if (emailOrPhoneType === "email") {
2116
2224
  inputType = "email";
2117
- inputPlaceholder = placeholder || "Email";
2225
+ inputPlaceholder = placeholder || mergedLabels.emailPlaceholder;
2118
2226
  } else if (emailOrPhoneType === "phone") {
2119
2227
  inputType = "tel";
2120
- inputPlaceholder = placeholder || "Nomor HP";
2228
+ inputPlaceholder = placeholder || mergedLabels.phonePlaceholder;
2121
2229
  }
2122
2230
  const normalizePhoneNumber = (val) => {
2123
2231
  if (!val) return val;
@@ -2218,16 +2326,16 @@ var InputDynamic = ({
2218
2326
  updateIdentityType(field.value);
2219
2327
  const stringValue = typeof field.value === "string" ? field.value : "";
2220
2328
  let inputType = "text";
2221
- let inputPlaceholder = placeholder || "Email, KTP, SIM, Passport, atau Nomor Telepon";
2329
+ let inputPlaceholder = placeholder || mergedLabels.identityPlaceholder;
2222
2330
  if (identityType === "email") {
2223
2331
  inputType = "email";
2224
- inputPlaceholder = placeholder || "Email";
2332
+ inputPlaceholder = placeholder || mergedLabels.emailPlaceholder;
2225
2333
  } else if (identityType === "phone") {
2226
2334
  inputType = "tel";
2227
- inputPlaceholder = placeholder || "Nomor telepon";
2335
+ inputPlaceholder = placeholder || mergedLabels.identityPhonePlaceholder;
2228
2336
  } else if (identityType === "id") {
2229
2337
  inputType = "text";
2230
- inputPlaceholder = placeholder || "KTP, SIM, atau Passport";
2338
+ inputPlaceholder = placeholder || mergedLabels.identityIdPlaceholder;
2231
2339
  }
2232
2340
  const cleanPhoneValue = (val) => {
2233
2341
  if (!val) return val;
@@ -2333,7 +2441,9 @@ var InputDynamic = ({
2333
2441
  autoCapitalize: "off",
2334
2442
  spellCheck: "false"
2335
2443
  },
2336
- value: isMultiSelect ? options.filter((option) => field.value?.includes(option.value)) : options.find((option) => option.value === field.value) || null,
2444
+ value: isMultiSelect ? options.filter(
2445
+ (option) => field.value?.includes(option.value)
2446
+ ) : options.find((option) => option.value === field.value) || null,
2337
2447
  onChange: (selectedOption) => {
2338
2448
  if (isMultiSelect) {
2339
2449
  const values = selectedOption ? selectedOption.map((opt) => opt.value) : [];
@@ -2358,21 +2468,27 @@ var InputDynamic = ({
2358
2468
  return stringVal;
2359
2469
  };
2360
2470
  const cleanedFieldValue = cleanPhoneValue(field.value || "");
2361
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`, children: /* @__PURE__ */ jsxRuntime.jsx(
2362
- PhoneInput,
2471
+ return /* @__PURE__ */ jsxRuntime.jsx(
2472
+ "div",
2363
2473
  {
2364
- country: defaultCountry.toLowerCase(),
2365
- value: cleanedFieldValue,
2366
- onChange: (value, data) => {
2367
- const cleanedValue = cleanPhoneValue(value || "");
2368
- field.onChange(cleanedValue);
2369
- },
2370
- placeholder: placeholder || "Nomor telepon",
2371
- disabled,
2372
- enableSearch: true,
2373
- disableSearchIcon: true
2474
+ className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
2475
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2476
+ PhoneInput,
2477
+ {
2478
+ country: defaultCountry.toLowerCase(),
2479
+ value: cleanedFieldValue,
2480
+ onChange: (value, data) => {
2481
+ const cleanedValue = cleanPhoneValue(value || "");
2482
+ field.onChange(cleanedValue);
2483
+ },
2484
+ placeholder: placeholder || "Nomor telepon",
2485
+ disabled,
2486
+ enableSearch: true,
2487
+ disableSearchIcon: true
2488
+ }
2489
+ )
2374
2490
  }
2375
- ) });
2491
+ );
2376
2492
  }
2377
2493
  case "file":
2378
2494
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2417,15 +2533,23 @@ var InputDynamic = ({
2417
2533
  );
2418
2534
  }
2419
2535
  case "radio":
2420
- return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.RadioGroup, { ...field, disabled, layout: layout ?? "vertical", children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
2421
- reactComponents.Radio,
2536
+ return /* @__PURE__ */ jsxRuntime.jsx(
2537
+ reactComponents.RadioGroup,
2422
2538
  {
2423
- value: option.value,
2424
- label: option.label,
2425
- disabled: option.disabled
2426
- },
2427
- option.value
2428
- )) });
2539
+ ...field,
2540
+ disabled,
2541
+ layout: layout ?? "vertical",
2542
+ children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
2543
+ reactComponents.Radio,
2544
+ {
2545
+ value: option.value,
2546
+ label: option.label,
2547
+ disabled: option.disabled
2548
+ },
2549
+ option.value
2550
+ ))
2551
+ }
2552
+ );
2429
2553
  case "radiobutton":
2430
2554
  return /* @__PURE__ */ jsxRuntime.jsx(
2431
2555
  reactComponents.RadioGroup,
@@ -2560,7 +2684,9 @@ var InputDynamic = ({
2560
2684
  if (otpIndex2) {
2561
2685
  let lastFilledIndex = 0;
2562
2686
  for (let i = 1; i <= 6; i++) {
2563
- const input = document.querySelector(`[data-otp-index="${i}"]`);
2687
+ const input = document.querySelector(
2688
+ `[data-otp-index="${i}"]`
2689
+ );
2564
2690
  if (input && input.value) {
2565
2691
  lastFilledIndex = i;
2566
2692
  } else {
@@ -2760,7 +2886,15 @@ var InputDynamic = ({
2760
2886
  children: [
2761
2887
  label && type !== "checkbox" && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Label, { required, children: label }),
2762
2888
  renderInput(field, error?.message),
2763
- helperText && !error && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Text, { size: 200, style: { textAlign: "left" }, className: styles.helperText, children: helperText })
2889
+ helperText && !error && /* @__PURE__ */ jsxRuntime.jsx(
2890
+ reactComponents.Text,
2891
+ {
2892
+ size: 200,
2893
+ style: { textAlign: "left" },
2894
+ className: styles.helperText,
2895
+ children: helperText
2896
+ }
2897
+ )
2764
2898
  ]
2765
2899
  }
2766
2900
  )
@@ -3012,7 +3146,7 @@ var DEFAULT_COUNTRY_CODES = [
3012
3146
  ];
3013
3147
 
3014
3148
  // src/components/CardTicketSearch/CardTicketSearch.constants.ts
3015
- var DEFAULT_LABELS3 = {
3149
+ var DEFAULT_LABELS7 = {
3016
3150
  id: {
3017
3151
  fromLabel: "Dari",
3018
3152
  toLabel: "Ke",
@@ -3188,7 +3322,7 @@ var CardTicketSearch = ({
3188
3322
  }) => {
3189
3323
  const styles = useStyles8();
3190
3324
  const labels = React5__default.default.useMemo(
3191
- () => ({ ...DEFAULT_LABELS3[language], ...customLabels }),
3325
+ () => ({ ...DEFAULT_LABELS7[language], ...customLabels }),
3192
3326
  [language, customLabels]
3193
3327
  );
3194
3328
  const { control, setValue, getValues, handleSubmit } = reactHookForm.useForm({
@@ -3574,7 +3708,7 @@ var CardTicketSearch = ({
3574
3708
  };
3575
3709
 
3576
3710
  // src/components/CardTicketSearchSummary/CardTicketSearchSummary.constants.ts
3577
- var DEFAULT_LABELS4 = {
3711
+ var DEFAULT_LABELS8 = {
3578
3712
  id: {
3579
3713
  originHarbor: "Pelabuhan Keberangkatan",
3580
3714
  destinationHarbor: "Pelabuhan Tujuan",
@@ -3675,7 +3809,7 @@ var CardTicketSearchSummary = ({
3675
3809
  children
3676
3810
  }) => {
3677
3811
  const styles = useStyles9();
3678
- const mergedLabels = { ...DEFAULT_LABELS4[language], ...labels };
3812
+ const mergedLabels = { ...DEFAULT_LABELS8[language], ...labels };
3679
3813
  const { width } = useWindowSize();
3680
3814
  const getCircularConfig = () => {
3681
3815
  if (width <= parseInt(extendedTokens.breakpointXs))
@@ -4000,7 +4134,7 @@ var CardTicketSearchSummary = ({
4000
4134
  };
4001
4135
 
4002
4136
  // src/components/ModalSearchHarbor/ModalSearchHarbor.constants.ts
4003
- var DEFAULT_LABELS5 = {
4137
+ var DEFAULT_LABELS9 = {
4004
4138
  id: {
4005
4139
  title: "Pilih Pelabuhan",
4006
4140
  searchPlaceholder: "Cari Pelabuhan...",
@@ -4152,7 +4286,7 @@ var ModalSearchHarbor = ({
4152
4286
  onClearLastSearched
4153
4287
  }) => {
4154
4288
  const styles = useStyles10();
4155
- const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
4289
+ const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
4156
4290
  const handleSelect = (harbor) => {
4157
4291
  onAddLastSearched(harbor);
4158
4292
  onSelectHarbor(harbor);
@@ -4300,7 +4434,7 @@ var ModalSearchHarbor = ({
4300
4434
  };
4301
4435
 
4302
4436
  // src/components/ModalSelectDate/ModalSelectDate.constants.ts
4303
- var DEFAULT_LABELS6 = {
4437
+ var DEFAULT_LABELS10 = {
4304
4438
  id: {
4305
4439
  title: "Pilih Tanggal",
4306
4440
  oneWay: "Sekali Jalan",
@@ -4433,7 +4567,7 @@ var ModalSelectDate = ({
4433
4567
  showRoundtrip = true
4434
4568
  }) => {
4435
4569
  const styles = useStyles11();
4436
- const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
4570
+ const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
4437
4571
  React5.useEffect(() => {
4438
4572
  moment__default.default.locale(language === "id" ? "id" : "en");
4439
4573
  }, [language]);
@@ -4654,6 +4788,24 @@ var ModalSelectDate = ({
4654
4788
  }
4655
4789
  );
4656
4790
  };
4791
+
4792
+ // src/components/ModalService/ModalService.constants.ts
4793
+ var DEFAULT_LABELS11 = {
4794
+ id: {
4795
+ title: "Pilih Kelas Layanan",
4796
+ loading: "Memuat...",
4797
+ error: "Gagal memuat layanan",
4798
+ selectAll: "Pilih Semua",
4799
+ saveButton: "Simpan"
4800
+ },
4801
+ en: {
4802
+ title: "Select Service Class",
4803
+ loading: "Loading...",
4804
+ error: "Error loading services",
4805
+ selectAll: "Select All",
4806
+ saveButton: "Save"
4807
+ }
4808
+ };
4657
4809
  var useStyles12 = reactComponents.makeStyles({
4658
4810
  dialogSurface: {
4659
4811
  maxWidth: "600px",
@@ -4728,9 +4880,11 @@ var useStyles12 = reactComponents.makeStyles({
4728
4880
  }
4729
4881
  });
4730
4882
  var ModalService = ({
4883
+ language = "id",
4884
+ labels,
4731
4885
  open,
4732
4886
  onClose,
4733
- title = "Pilih Kelas Layanan",
4887
+ title,
4734
4888
  services,
4735
4889
  selectedServiceIds,
4736
4890
  onSave,
@@ -4738,6 +4892,8 @@ var ModalService = ({
4738
4892
  isError = false
4739
4893
  }) => {
4740
4894
  const styles = useStyles12();
4895
+ const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
4896
+ const displayTitle = title || mergedLabels.title;
4741
4897
  const [selectedServices, setSelectedServices] = React5.useState(selectedServiceIds);
4742
4898
  React5.useEffect(() => {
4743
4899
  if (open) {
@@ -4769,85 +4925,80 @@ var ModalService = ({
4769
4925
  }
4770
4926
  };
4771
4927
  const handleSave = () => {
4772
- const selectedServiceItems = services.filter((s) => selectedServices.includes(s.id));
4928
+ const selectedServiceItems = services.filter(
4929
+ (s) => selectedServices.includes(s.id)
4930
+ );
4773
4931
  onSave(selectedServiceItems);
4774
4932
  };
4775
- return /* @__PURE__ */ jsxRuntime.jsx(
4776
- reactComponents.Dialog,
4777
- {
4778
- open,
4779
- onOpenChange: (_, data) => !data.open && onClose(),
4780
- children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
4781
- /* @__PURE__ */ jsxRuntime.jsx(
4782
- reactComponents.DialogTitle,
4933
+ return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Dialog, { open, onOpenChange: (_, data) => !data.open && onClose(), children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
4934
+ /* @__PURE__ */ jsxRuntime.jsx(
4935
+ reactComponents.DialogTitle,
4936
+ {
4937
+ action: /* @__PURE__ */ jsxRuntime.jsx(
4938
+ reactComponents.Button,
4783
4939
  {
4784
- action: /* @__PURE__ */ jsxRuntime.jsx(
4785
- reactComponents.Button,
4786
- {
4787
- appearance: "subtle",
4788
- "aria-label": "close",
4789
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
4790
- onClick: handleClose,
4791
- className: styles.closeButton
4792
- }
4793
- ),
4794
- children: title
4940
+ appearance: "subtle",
4941
+ "aria-label": "close",
4942
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
4943
+ onClick: handleClose,
4944
+ className: styles.closeButton
4795
4945
  }
4796
4946
  ),
4797
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Loading..." }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Error loading services" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4798
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
4799
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
4800
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: "Pilih Semua" }),
4947
+ children: displayTitle
4948
+ }
4949
+ ),
4950
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.loading }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4951
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
4952
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
4953
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.selectAll }),
4954
+ /* @__PURE__ */ jsxRuntime.jsx(
4955
+ reactComponents.Checkbox,
4956
+ {
4957
+ checked: selectedServices.length === services.length,
4958
+ onChange: handleToggleAll
4959
+ }
4960
+ )
4961
+ ] }),
4962
+ services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
4963
+ "div",
4964
+ {
4965
+ className: styles.serviceItem,
4966
+ onClick: () => handleToggleService(service.id),
4967
+ children: [
4968
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
4969
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
4970
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceType, children: service.serviceTypeCode }),
4971
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
4972
+ ] }),
4801
4973
  /* @__PURE__ */ jsxRuntime.jsx(
4802
4974
  reactComponents.Checkbox,
4803
4975
  {
4804
- checked: selectedServices.length === services.length,
4805
- onChange: handleToggleAll
4976
+ checked: selectedServices.includes(service.id),
4977
+ onChange: () => handleToggleService(service.id)
4806
4978
  }
4807
4979
  )
4808
- ] }),
4809
- services.map((service) => /* @__PURE__ */ jsxRuntime.jsxs(
4810
- "div",
4811
- {
4812
- className: styles.serviceItem,
4813
- onClick: () => handleToggleService(service.id),
4814
- children: [
4815
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceContent, children: [
4816
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.serviceName, children: service.serviceTypeName }),
4817
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceType, children: service.serviceTypeCode }),
4818
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.serviceDescription, children: service.serviceDescription })
4819
- ] }),
4820
- /* @__PURE__ */ jsxRuntime.jsx(
4821
- reactComponents.Checkbox,
4822
- {
4823
- checked: selectedServices.includes(service.id),
4824
- onChange: () => handleToggleService(service.id)
4825
- }
4826
- )
4827
- ]
4828
- },
4829
- service.id
4830
- ))
4831
- ] }),
4832
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.footer, children: /* @__PURE__ */ jsxRuntime.jsx(
4833
- reactComponents.Button,
4834
- {
4835
- appearance: "primary",
4836
- size: "medium",
4837
- className: styles.saveButton,
4838
- onClick: handleSave,
4839
- disabled: selectedServices.length === 0,
4840
- children: "Simpan"
4841
- }
4842
- ) })
4843
- ] }) })
4844
- ] }) })
4845
- }
4846
- );
4980
+ ]
4981
+ },
4982
+ service.id
4983
+ ))
4984
+ ] }),
4985
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.footer, children: /* @__PURE__ */ jsxRuntime.jsx(
4986
+ reactComponents.Button,
4987
+ {
4988
+ appearance: "primary",
4989
+ size: "medium",
4990
+ className: styles.saveButton,
4991
+ onClick: handleSave,
4992
+ disabled: selectedServices.length === 0,
4993
+ children: mergedLabels.saveButton
4994
+ }
4995
+ ) })
4996
+ ] }) })
4997
+ ] }) }) });
4847
4998
  };
4848
4999
 
4849
5000
  // src/components/ModalTotalPassengers/ModalTotalPassengers.constants.ts
4850
- var DEFAULT_LABELS7 = {
5001
+ var DEFAULT_LABELS12 = {
4851
5002
  id: {
4852
5003
  title: "Pilih Jumlah Penumpang",
4853
5004
  infoMessage: "Anda dapat menambahkan hingga {maxPassengers} penumpang pada golongan kendaraan ini.",
@@ -4954,7 +5105,7 @@ var ModalTotalPassengers = ({
4954
5105
  infoMessage
4955
5106
  }) => {
4956
5107
  const styles = useStyles13();
4957
- const mergedLabels = { ...DEFAULT_LABELS7[language], ...labels };
5108
+ const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
4958
5109
  const [passengers, setPassengers] = React5.useState([]);
4959
5110
  const [openItems, setOpenItems] = React5.useState([]);
4960
5111
  const defaultInfoMessage = mergedLabels.infoMessage.replace(
@@ -5219,7 +5370,7 @@ var ModalTotalPassengers = ({
5219
5370
  };
5220
5371
 
5221
5372
  // src/components/ModalTypeOfService/ModalTypeOfService.constants.ts
5222
- var DEFAULT_LABELS8 = {
5373
+ var DEFAULT_LABELS13 = {
5223
5374
  id: {
5224
5375
  title: "Pilih Tipe Layanan",
5225
5376
  cancelButton: "Batal",
@@ -5300,7 +5451,7 @@ var ModalTypeOfService = ({
5300
5451
  renderImage
5301
5452
  }) => {
5302
5453
  const styles = useStyles14();
5303
- const mergedLabels = { ...DEFAULT_LABELS8[language], ...labels };
5454
+ const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
5304
5455
  const [selectedServiceTitle, setSelectedServiceTitle] = React5.useState(
5305
5456
  selectedService?.title || ""
5306
5457
  );
@@ -5653,7 +5804,7 @@ var SortMenu = ({
5653
5804
  };
5654
5805
 
5655
5806
  // src/components/ModalFilterTicket/ModalFilterTicket.constants.ts
5656
- var DEFAULT_LABELS9 = {
5807
+ var DEFAULT_LABELS14 = {
5657
5808
  id: {
5658
5809
  title: "Filter dengan",
5659
5810
  serviceTypeLabel: "Jenis Layanan",
@@ -5818,7 +5969,7 @@ var ModalFilterTicket = ({
5818
5969
  maxDuration = DEFAULT_DURATION_RANGE.max
5819
5970
  }) => {
5820
5971
  const styles = useStyles16();
5821
- const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
5972
+ const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
5822
5973
  const [rangeReady, setRangeReady] = React5.useState(false);
5823
5974
  React5.useEffect(() => {
5824
5975
  if (open) {
@@ -6124,7 +6275,7 @@ var ModalFilterTicket = ({
6124
6275
  };
6125
6276
 
6126
6277
  // src/components/DateFilter/DateFilter.constants.ts
6127
- var DEFAULT_LABELS10 = {
6278
+ var DEFAULT_LABELS15 = {
6128
6279
  prevButtonAriaLabel: "Previous dates",
6129
6280
  nextButtonAriaLabel: "Next dates",
6130
6281
  calendarButtonAriaLabel: "Open calendar"
@@ -6213,7 +6364,7 @@ var DateFilter = ({
6213
6364
  }) => {
6214
6365
  const styles = useStyles17();
6215
6366
  const scrollRef = React5.useRef(null);
6216
- const mergedLabels = { ...DEFAULT_LABELS10, ...labels };
6367
+ const mergedLabels = { ...DEFAULT_LABELS15, ...labels };
6217
6368
  const handlePrev = () => {
6218
6369
  scrollRef.current?.scrollBy({ left: -scrollAmount, behavior: "smooth" });
6219
6370
  };
@@ -6271,7 +6422,7 @@ var DateFilter = ({
6271
6422
  };
6272
6423
 
6273
6424
  // src/components/ModalSearchTicket/ModalSearchTicket.constants.ts
6274
- var DEFAULT_LABELS11 = {
6425
+ var DEFAULT_LABELS16 = {
6275
6426
  id: {
6276
6427
  title: "Cari Jadwal Lainnya",
6277
6428
  fromLabel: "Dari",
@@ -6432,7 +6583,7 @@ var ModalSearchTicket = ({
6432
6583
  ...props
6433
6584
  }) => {
6434
6585
  const styles = useStyles18();
6435
- const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
6586
+ const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
6436
6587
  const { control, setValue, handleSubmit, watch } = reactHookForm.useForm({
6437
6588
  defaultValues: {
6438
6589
  ...DEFAULT_FORM_VALUES,
@@ -6867,6 +7018,18 @@ var ModalSearchTicket = ({
6867
7018
  }
6868
7019
  );
6869
7020
  };
7021
+
7022
+ // src/components/Stepper/Stepper.constants.ts
7023
+ var DEFAULT_LABELS17 = {
7024
+ id: {
7025
+ stepperBackgroundAlt: "Latar Belakang Stepper",
7026
+ ferryIconAlt: "Ikon Kapal"
7027
+ },
7028
+ en: {
7029
+ stepperBackgroundAlt: "Stepper Background",
7030
+ ferryIconAlt: "Ferry Icon"
7031
+ }
7032
+ };
6870
7033
  var useStyles19 = reactComponents.makeStyles({
6871
7034
  stepperWrapper: {
6872
7035
  position: "relative",
@@ -6988,9 +7151,12 @@ var useStyles19 = reactComponents.makeStyles({
6988
7151
  var Stepper = ({
6989
7152
  steps,
6990
7153
  currentStep,
6991
- className
7154
+ className,
7155
+ language = "id",
7156
+ labels
6992
7157
  }) => {
6993
7158
  const styles = useStyles19();
7159
+ const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
6994
7160
  const currentStepIndex = React5.useMemo(() => {
6995
7161
  if (typeof currentStep === "number") {
6996
7162
  return steps.findIndex((step) => step.number === currentStep);
@@ -7009,7 +7175,8 @@ var Stepper = ({
7009
7175
  const status = getStepStatus(stepNumber);
7010
7176
  const baseClass = styles.stepCircle;
7011
7177
  if (status === "active") return `${baseClass} ${styles.stepCircleActive}`;
7012
- if (status === "completed") return `${baseClass} ${styles.stepCircleCompleted}`;
7178
+ if (status === "completed")
7179
+ return `${baseClass} ${styles.stepCircleCompleted}`;
7013
7180
  return `${baseClass} ${styles.stepCircleInactive}`;
7014
7181
  };
7015
7182
  const getConnectorClass = (currentStepNumber) => {
@@ -7023,7 +7190,7 @@ var Stepper = ({
7023
7190
  "img",
7024
7191
  {
7025
7192
  src: "/assets/images/reservation/stepper_bg.svg",
7026
- alt: "Stepper Background",
7193
+ alt: mergedLabels.stepperBackgroundAlt,
7027
7194
  className: styles.stepperBackground
7028
7195
  }
7029
7196
  ),
@@ -7033,7 +7200,7 @@ var Stepper = ({
7033
7200
  "img",
7034
7201
  {
7035
7202
  src: "/assets/images/reservation/ferry_step.svg",
7036
- alt: "Ferry",
7203
+ alt: mergedLabels.ferryIconAlt,
7037
7204
  className: styles.ferryIcon
7038
7205
  }
7039
7206
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: getCircleClass(step.number), children: step.number }),
@@ -7045,7 +7212,7 @@ var Stepper = ({
7045
7212
  };
7046
7213
 
7047
7214
  // src/components/CardOrdererInfo/CardOrdererInfo.constants.ts
7048
- var DEFAULT_LABELS12 = {
7215
+ var DEFAULT_LABELS18 = {
7049
7216
  id: {
7050
7217
  title: "Informasi Pemesan",
7051
7218
  ordererName: "Nama Pemesan",
@@ -7090,7 +7257,7 @@ var CardOrdererInfo = ({
7090
7257
  className
7091
7258
  }) => {
7092
7259
  const styles = useStyles20();
7093
- const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
7260
+ const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
7094
7261
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
7095
7262
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { children: mergedLabels.title }),
7096
7263
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
@@ -7109,6 +7276,24 @@ var CardOrdererInfo = ({
7109
7276
  ] })
7110
7277
  ] });
7111
7278
  };
7279
+
7280
+ // src/components/ModalListPassenger/ModalListPassenger.constants.ts
7281
+ var DEFAULT_LABELS19 = {
7282
+ id: {
7283
+ title: "Detail Penumpang",
7284
+ sameAsOrderer: "Sama Dengan Pemesan",
7285
+ searchPlaceholder: "Cari Penumpang",
7286
+ addPassengerButton: "Tambah Penumpang",
7287
+ cancelButton: "Batal"
7288
+ },
7289
+ en: {
7290
+ title: "Passenger Details",
7291
+ sameAsOrderer: "Same as Orderer",
7292
+ searchPlaceholder: "Search Passenger",
7293
+ addPassengerButton: "Add Passenger",
7294
+ cancelButton: "Cancel"
7295
+ }
7296
+ };
7112
7297
  var useStyles21 = reactComponents.makeStyles({
7113
7298
  dialogSurface: {
7114
7299
  maxWidth: "600px",
@@ -7150,9 +7335,11 @@ var useStyles21 = reactComponents.makeStyles({
7150
7335
  }
7151
7336
  });
7152
7337
  var ModalListPassenger = ({
7338
+ language = "id",
7339
+ labels,
7153
7340
  open,
7154
7341
  onClose,
7155
- title = "Detail Penumpang",
7342
+ title,
7156
7343
  passengers,
7157
7344
  searchQuery,
7158
7345
  onSearchChange,
@@ -7163,6 +7350,8 @@ var ModalListPassenger = ({
7163
7350
  onSameAsOrdererChange
7164
7351
  }) => {
7165
7352
  const styles = useStyles21();
7353
+ const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
7354
+ const displayTitle = title || mergedLabels.title;
7166
7355
  const handleClose = () => {
7167
7356
  onClose();
7168
7357
  onSearchChange("");
@@ -7174,7 +7363,7 @@ var ModalListPassenger = ({
7174
7363
  const filteredPassengers = passengers.filter((passenger) => {
7175
7364
  if (!searchQuery) return true;
7176
7365
  const query = searchQuery.toLowerCase();
7177
- return passenger.name?.toLowerCase().includes(query) || passenger.category?.toLowerCase().includes(query);
7366
+ return passenger.name && passenger.name.toLowerCase().includes(query) || passenger.category && passenger.category.toLowerCase().includes(query);
7178
7367
  });
7179
7368
  return /* @__PURE__ */ jsxRuntime.jsx(
7180
7369
  reactComponents.Dialog,
@@ -7192,12 +7381,12 @@ var ModalListPassenger = ({
7192
7381
  action: /* @__PURE__ */ jsxRuntime.jsx(
7193
7382
  reactComponents.Switch,
7194
7383
  {
7195
- label: "Sama Dengan Pemesan",
7384
+ label: mergedLabels.sameAsOrderer,
7196
7385
  checked: sameAsOrderer,
7197
7386
  onChange: (_, data) => onSameAsOrdererChange(data.checked)
7198
7387
  }
7199
7388
  ),
7200
- children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: title })
7389
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: displayTitle })
7201
7390
  }
7202
7391
  ),
7203
7392
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { className: styles.content, children: [
@@ -7206,7 +7395,7 @@ var ModalListPassenger = ({
7206
7395
  {
7207
7396
  className: styles.searchInput,
7208
7397
  contentBefore: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:search-24-regular" }),
7209
- placeholder: "Cari Penumpang",
7398
+ placeholder: mergedLabels.searchPlaceholder,
7210
7399
  value: searchQuery,
7211
7400
  onChange: (_, data) => onSearchChange(data.value),
7212
7401
  size: "large"
@@ -7257,7 +7446,7 @@ var ModalListPassenger = ({
7257
7446
  size: "large",
7258
7447
  shape: "circular",
7259
7448
  onClick: onAddPassenger,
7260
- children: "Tambah Penumpang"
7449
+ children: mergedLabels.addPassengerButton
7261
7450
  }
7262
7451
  ),
7263
7452
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7267,7 +7456,7 @@ var ModalListPassenger = ({
7267
7456
  size: "large",
7268
7457
  shape: "circular",
7269
7458
  onClick: handleClose,
7270
- children: "Batal"
7459
+ children: mergedLabels.cancelButton
7271
7460
  }
7272
7461
  )
7273
7462
  ] })
@@ -7276,6 +7465,76 @@ var ModalListPassenger = ({
7276
7465
  }
7277
7466
  );
7278
7467
  };
7468
+
7469
+ // src/components/ModalPassengerForm/ModalPassengerForm.constants.ts
7470
+ var DEFAULT_LABELS20 = {
7471
+ id: {
7472
+ title: "Detail Penumpang",
7473
+ titleLabel: "Title",
7474
+ titlePlaceholder: "Pilih",
7475
+ nameLabel: "Nama Lengkap",
7476
+ namePlaceholder: "Masukkan Nama",
7477
+ idTypeLabel: "Jenis ID",
7478
+ idTypePlaceholder: "Pilih",
7479
+ idNumberLabel: "Nomor Identitas",
7480
+ idNumberPlaceholder: "Masukkan Nomor Identitas",
7481
+ ageLabel: "Usia",
7482
+ agePlaceholder: "Masukkan Usia",
7483
+ dateLabel: "Tanggal Lahir",
7484
+ datePlaceholder: "Masukkan Tanggal Lahir",
7485
+ cityLabel: "Kota Kabupaten",
7486
+ cityPlaceholder: "Masukkan Nama Kota/Kabupaten",
7487
+ ticketClassLabel: "Kelas penumpang",
7488
+ saveButton: "Simpan",
7489
+ cancelButton: "Batal",
7490
+ errors: {
7491
+ requiredTitle: "Title harus dipilih",
7492
+ requiredName: "Nama lengkap harus diisi",
7493
+ minLengthName: "Nama minimal 3 karakter",
7494
+ requiredIdType: "Jenis ID harus dipilih",
7495
+ requiredIdNumber: "Nomor identitas harus diisi",
7496
+ minLengthIdNumber: "Nomor identitas minimal 6 karakter",
7497
+ requiredAge: "Usia harus diisi",
7498
+ minAge: "Usia minimal 1 tahun",
7499
+ maxAge: "Usia maksimal 150 tahun",
7500
+ requiredDate: "Tanggal lahir harus diisi",
7501
+ requiredCity: "Kota/Kabupaten harus diisi"
7502
+ }
7503
+ },
7504
+ en: {
7505
+ title: "Passenger Details",
7506
+ titleLabel: "Title",
7507
+ titlePlaceholder: "Select",
7508
+ nameLabel: "Full Name",
7509
+ namePlaceholder: "Enter Name",
7510
+ idTypeLabel: "ID Type",
7511
+ idTypePlaceholder: "Select",
7512
+ idNumberLabel: "Identity Number",
7513
+ idNumberPlaceholder: "Enter Identity Number",
7514
+ ageLabel: "Age",
7515
+ agePlaceholder: "Enter Age",
7516
+ dateLabel: "Date of Birth",
7517
+ datePlaceholder: "Enter Date of Birth",
7518
+ cityLabel: "City/Regency",
7519
+ cityPlaceholder: "Enter City/Regency Name",
7520
+ ticketClassLabel: "Passenger Class",
7521
+ saveButton: "Save",
7522
+ cancelButton: "Cancel",
7523
+ errors: {
7524
+ requiredTitle: "Title is required",
7525
+ requiredName: "Full name is required",
7526
+ minLengthName: "Name must be at least 3 characters",
7527
+ requiredIdType: "ID type is required",
7528
+ requiredIdNumber: "Identity number is required",
7529
+ minLengthIdNumber: "Identity number must be at least 6 characters",
7530
+ requiredAge: "Age is required",
7531
+ minAge: "Age must be at least 1 year",
7532
+ maxAge: "Age must be at most 150 years",
7533
+ requiredDate: "Date of birth is required",
7534
+ requiredCity: "City/Regency is required"
7535
+ }
7536
+ }
7537
+ };
7279
7538
  var useStyles22 = reactComponents.makeStyles({
7280
7539
  dialogSurface: {
7281
7540
  maxWidth: "600px",
@@ -7295,9 +7554,11 @@ var useStyles22 = reactComponents.makeStyles({
7295
7554
  }
7296
7555
  });
7297
7556
  var ModalPassengerForm = ({
7557
+ language = "id",
7558
+ labels,
7298
7559
  open,
7299
7560
  onClose,
7300
- title = "Detail Penumpang",
7561
+ title,
7301
7562
  onSubmit,
7302
7563
  defaultValues,
7303
7564
  isAdultForm = true,
@@ -7307,6 +7568,12 @@ var ModalPassengerForm = ({
7307
7568
  ticketClassOptions
7308
7569
  }) => {
7309
7570
  const styles = useStyles22();
7571
+ const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
7572
+ const mergedErrors = {
7573
+ ...DEFAULT_LABELS20[language].errors,
7574
+ ...labels?.errors
7575
+ };
7576
+ const displayTitle = title || mergedLabels.title;
7310
7577
  const { control, handleSubmit, reset } = reactHookForm.useForm({
7311
7578
  defaultValues
7312
7579
  });
@@ -7331,7 +7598,7 @@ var ModalPassengerForm = ({
7331
7598
  }
7332
7599
  },
7333
7600
  children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
7334
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTitle, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: title }) }),
7601
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTitle, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: displayTitle }) }),
7335
7602
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit(handleFormSubmit), children: [
7336
7603
  /* @__PURE__ */ jsxRuntime.jsx(
7337
7604
  InputDynamic_default,
@@ -7339,13 +7606,13 @@ var ModalPassengerForm = ({
7339
7606
  name: "title",
7340
7607
  control,
7341
7608
  type: "select",
7342
- label: "Title",
7343
- placeholder: "Pilih",
7609
+ label: mergedLabels.titleLabel,
7610
+ placeholder: mergedLabels.titlePlaceholder,
7344
7611
  options: titleOptions,
7345
7612
  size: "large",
7346
7613
  required: true,
7347
7614
  validationRules: {
7348
- required: "Title harus dipilih"
7615
+ required: mergedErrors.requiredTitle
7349
7616
  }
7350
7617
  }
7351
7618
  ),
@@ -7355,15 +7622,15 @@ var ModalPassengerForm = ({
7355
7622
  name: "name",
7356
7623
  control,
7357
7624
  type: "text",
7358
- label: "Nama Lengkap",
7359
- placeholder: "Masukkan Nama",
7625
+ label: mergedLabels.nameLabel,
7626
+ placeholder: mergedLabels.namePlaceholder,
7360
7627
  size: "large",
7361
7628
  required: true,
7362
7629
  validationRules: {
7363
- required: "Nama lengkap harus diisi",
7630
+ required: mergedErrors.requiredName,
7364
7631
  minLength: {
7365
7632
  value: 3,
7366
- message: "Nama minimal 3 karakter"
7633
+ message: mergedErrors.minLengthName
7367
7634
  }
7368
7635
  }
7369
7636
  }
@@ -7375,13 +7642,13 @@ var ModalPassengerForm = ({
7375
7642
  name: "idType",
7376
7643
  control,
7377
7644
  type: "select",
7378
- label: "Jenis ID",
7379
- placeholder: "Pilih",
7645
+ label: mergedLabels.idTypeLabel,
7646
+ placeholder: mergedLabels.idTypePlaceholder,
7380
7647
  options: idTypeOptions,
7381
7648
  size: "large",
7382
7649
  required: true,
7383
7650
  validationRules: {
7384
- required: "Jenis ID harus dipilih"
7651
+ required: mergedErrors.requiredIdType
7385
7652
  }
7386
7653
  }
7387
7654
  ),
@@ -7391,15 +7658,15 @@ var ModalPassengerForm = ({
7391
7658
  name: "idNumber",
7392
7659
  control,
7393
7660
  type: "text",
7394
- label: "Nomor Identitas",
7395
- placeholder: "Masukkan Nomor Identitas",
7661
+ label: mergedLabels.idNumberLabel,
7662
+ placeholder: mergedLabels.idNumberPlaceholder,
7396
7663
  size: "large",
7397
7664
  required: true,
7398
7665
  validationRules: {
7399
- required: "Nomor identitas harus diisi",
7666
+ required: mergedErrors.requiredIdNumber,
7400
7667
  minLength: {
7401
7668
  value: 6,
7402
- message: "Nomor identitas minimal 6 karakter"
7669
+ message: mergedErrors.minLengthIdNumber
7403
7670
  }
7404
7671
  }
7405
7672
  }
@@ -7410,19 +7677,19 @@ var ModalPassengerForm = ({
7410
7677
  name: "age",
7411
7678
  control,
7412
7679
  type: "number",
7413
- label: "Usia",
7414
- placeholder: "Masukkan Usia",
7680
+ label: mergedLabels.ageLabel,
7681
+ placeholder: mergedLabels.agePlaceholder,
7415
7682
  size: "large",
7416
7683
  required: true,
7417
7684
  validationRules: {
7418
- required: "Usia harus diisi",
7685
+ required: mergedErrors.requiredAge,
7419
7686
  min: {
7420
7687
  value: 1,
7421
- message: "Usia minimal 1 tahun"
7688
+ message: mergedErrors.minAge
7422
7689
  },
7423
7690
  max: {
7424
7691
  value: 150,
7425
- message: "Usia maksimal 150 tahun"
7692
+ message: mergedErrors.maxAge
7426
7693
  }
7427
7694
  }
7428
7695
  }
@@ -7433,12 +7700,12 @@ var ModalPassengerForm = ({
7433
7700
  name: "date",
7434
7701
  control,
7435
7702
  type: "date",
7436
- label: "Tanggal Lahir",
7437
- placeholder: "Masukkan Tanggal Lahir",
7703
+ label: mergedLabels.dateLabel,
7704
+ placeholder: mergedLabels.datePlaceholder,
7438
7705
  size: "large",
7439
7706
  required: true,
7440
7707
  validationRules: {
7441
- required: "Tanggal lahir harus diisi"
7708
+ required: mergedErrors.requiredDate
7442
7709
  }
7443
7710
  }
7444
7711
  ) }),
@@ -7448,13 +7715,13 @@ var ModalPassengerForm = ({
7448
7715
  name: "cityId",
7449
7716
  control,
7450
7717
  type: "select",
7451
- label: "Kota Kabupaten",
7718
+ label: mergedLabels.cityLabel,
7452
7719
  options: cityOptions,
7453
- placeholder: "Masukkan Nama Kota/Kabupaten",
7720
+ placeholder: mergedLabels.cityPlaceholder,
7454
7721
  size: "large",
7455
7722
  required: true,
7456
7723
  validationRules: {
7457
- required: "Kota/Kabupaten harus diisi"
7724
+ required: mergedErrors.requiredCity
7458
7725
  }
7459
7726
  }
7460
7727
  ),
@@ -7467,14 +7734,23 @@ var ModalPassengerForm = ({
7467
7734
  name: "ticketClass",
7468
7735
  control,
7469
7736
  type: "radiobutton",
7470
- label: "Kelas penumpang",
7737
+ label: mergedLabels.ticketClassLabel,
7471
7738
  options: ticketClassOptions,
7472
7739
  required: true,
7473
7740
  disabled: true
7474
7741
  }
7475
7742
  ),
7476
7743
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.actions, children: [
7477
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Button, { appearance: "primary", size: "large", shape: "circular", type: "submit", children: "Simpan" }),
7744
+ /* @__PURE__ */ jsxRuntime.jsx(
7745
+ reactComponents.Button,
7746
+ {
7747
+ appearance: "primary",
7748
+ size: "large",
7749
+ shape: "circular",
7750
+ type: "submit",
7751
+ children: mergedLabels.saveButton
7752
+ }
7753
+ ),
7478
7754
  /* @__PURE__ */ jsxRuntime.jsx(
7479
7755
  reactComponents.Button,
7480
7756
  {
@@ -7483,7 +7759,7 @@ var ModalPassengerForm = ({
7483
7759
  shape: "circular",
7484
7760
  type: "button",
7485
7761
  onClick: handleClose,
7486
- children: "Batal"
7762
+ children: mergedLabels.cancelButton
7487
7763
  }
7488
7764
  )
7489
7765
  ] })
@@ -7494,7 +7770,7 @@ var ModalPassengerForm = ({
7494
7770
  };
7495
7771
 
7496
7772
  // src/components/CardPassengerList/CardPassengerList.constants.ts
7497
- var DEFAULT_LABELS13 = {
7773
+ var DEFAULT_LABELS21 = {
7498
7774
  id: {
7499
7775
  defaultTitle: "Data Penumpang",
7500
7776
  passengerPrefix: "Penumpang"
@@ -7616,7 +7892,7 @@ var CardPassengerList = ({
7616
7892
  className
7617
7893
  }) => {
7618
7894
  const styles = useStyles23();
7619
- const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
7895
+ const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
7620
7896
  const displayTitle = title || mergedLabels.defaultTitle;
7621
7897
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
7622
7898
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -7687,6 +7963,26 @@ var CardPassengerList = ({
7687
7963
  }) })
7688
7964
  ] });
7689
7965
  };
7966
+
7967
+ // src/components/CardVehicleDetail/CardVehicleDetail.constants.ts
7968
+ var DEFAULT_LABELS22 = {
7969
+ id: {
7970
+ title: "Detail Kendaraan",
7971
+ vehicleNumberLabel: "Nomor Kendaraan",
7972
+ vehicleNumberPlaceholder: "Contoh: B1234CD",
7973
+ hasLoadLabel: "Apakah kendaraan membawa muatan?",
7974
+ yesLabel: "Ya",
7975
+ noLabel: "Tidak"
7976
+ },
7977
+ en: {
7978
+ title: "Vehicle Details",
7979
+ vehicleNumberLabel: "Vehicle Number",
7980
+ vehicleNumberPlaceholder: "Example: B1234CD",
7981
+ hasLoadLabel: "Does the vehicle carry a load?",
7982
+ yesLabel: "Yes",
7983
+ noLabel: "No"
7984
+ }
7985
+ };
7690
7986
  var useStyles24 = reactComponents.makeStyles({
7691
7987
  card: {
7692
7988
  padding: "1.5rem",
@@ -7722,14 +8018,27 @@ var CardVehicleDetail = ({
7722
8018
  vehicleNumberName = "vehicleNumber",
7723
8019
  showLoadOption = false,
7724
8020
  hasLoad,
7725
- onHasLoadChange
8021
+ onHasLoadChange,
8022
+ language = "id",
8023
+ labels
7726
8024
  }) => {
7727
8025
  const styles = useStyles24();
8026
+ const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
7728
8027
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
7729
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
7730
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: "Detail Kendaraan" }),
7731
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, marginLeft: "1rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) })
7732
- ] }),
8028
+ /* @__PURE__ */ jsxRuntime.jsxs(
8029
+ "div",
8030
+ {
8031
+ style: {
8032
+ display: "flex",
8033
+ justifyContent: "space-between",
8034
+ alignItems: "center"
8035
+ },
8036
+ children: [
8037
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: mergedLabels.title }),
8038
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, marginLeft: "1rem" }, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) })
8039
+ ]
8040
+ }
8041
+ ),
7733
8042
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.vehicleType, children: [
7734
8043
  /* @__PURE__ */ jsxRuntime.jsx(
7735
8044
  "img",
@@ -7744,19 +8053,19 @@ var CardVehicleDetail = ({
7744
8053
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: serviceTitle })
7745
8054
  ] }),
7746
8055
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.25rem" }, children: [
7747
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { color: reactComponents.tokens.colorNeutralForeground1 }, children: "Nomor Kendaraan" }),
8056
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { style: { color: reactComponents.tokens.colorNeutralForeground1 }, children: mergedLabels.vehicleNumberLabel }),
7748
8057
  /* @__PURE__ */ jsxRuntime.jsx(
7749
8058
  InputDynamic_default,
7750
8059
  {
7751
8060
  control,
7752
8061
  name: vehicleNumberName,
7753
- placeholder: "Contoh: B1234CD",
8062
+ placeholder: mergedLabels.vehicleNumberPlaceholder,
7754
8063
  type: "text"
7755
8064
  }
7756
8065
  )
7757
8066
  ] }),
7758
8067
  showLoadOption && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.radioGroup, children: [
7759
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.question, children: "Apakah kendaraan membawa muatan?" }),
8068
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.question, children: mergedLabels.hasLoadLabel }),
7760
8069
  /* @__PURE__ */ jsxRuntime.jsxs(
7761
8070
  reactComponents.RadioGroup,
7762
8071
  {
@@ -7764,14 +8073,112 @@ var CardVehicleDetail = ({
7764
8073
  onChange: (_, data) => onHasLoadChange?.(data.value),
7765
8074
  layout: "horizontal",
7766
8075
  children: [
7767
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "true", label: "Ya" }),
7768
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "false", label: "Tidak" })
8076
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "true", label: mergedLabels.yesLabel }),
8077
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "false", label: mergedLabels.noLabel })
7769
8078
  ]
7770
8079
  }
7771
8080
  )
7772
8081
  ] })
7773
8082
  ] });
7774
8083
  };
8084
+
8085
+ // src/components/CardVehicleOwnerForm/CardVehicleOwnerForm.constants.ts
8086
+ var DEFAULT_LABELS23 = {
8087
+ id: {
8088
+ title: "Informasi Pemilik & Muatan",
8089
+ addOwnerButton: "Tambah Pemilik",
8090
+ ownerInfoTitle: "Informasi Pemilik {index}",
8091
+ senderNameLabel: "Nama Pengirim",
8092
+ senderTypeCompany: "Perusahaan",
8093
+ senderTypeIndividual: "Perseorangan",
8094
+ selectCompanyPlaceholder: "Pilih Nama Perusahaan",
8095
+ inputSenderNamePlaceholder: "Masukkan Nama Pengirim",
8096
+ estimatedWeightLabel: "Data Estimasi Berat Muatan dan Kendaraan (Ton)",
8097
+ inputNumberPlaceholder: "Masukkan Angka",
8098
+ originCityLabel: "Kota Asal",
8099
+ destinationCityLabel: "Kota Tujuan",
8100
+ selectPlaceholder: "Pilih",
8101
+ cargoOwnerTitle: "Nama Perusahaan Pemilik Barang",
8102
+ cargoOwnerCompanyPlaceholder: "Pilih Nama Perusahaan Pemilik Barang",
8103
+ cargoOwnerIndividualPlaceholder: "Masukkan Nama Pemilik Barang",
8104
+ otherCompanyHelperText: 'Apabila nama perusahaan belum tersedia dapat memilih "Lainnya" dan silakan isi nama perusahaan',
8105
+ logisticsCompanyTitle: "Nama Perusahaan Logistik",
8106
+ logisticsCompanyPlaceholder: "Pilih Nama Perusahaan Logistik",
8107
+ logisticsIndividualPlaceholder: "Masukkan Nama Logistik",
8108
+ cargoReceiverTitle: "Nama Perusahaan Penerima Barang",
8109
+ cargoReceiverCompanyPlaceholder: "Pilih Nama Perusahaan Penerima Barang",
8110
+ cargoReceiverIndividualPlaceholder: "Masukkan Nama Penerima Barang",
8111
+ totalWeightLabel: "Berat Muatan dan Kendaraan (Ton)",
8112
+ cargoListTitle: "Daftar Muatan",
8113
+ cargoItemTitle: "Muatan {index}",
8114
+ commodityLabel: "Data Komoditas",
8115
+ commodityHelperTextPrefix: "Pahami definisi, jenis dan contoh komoditas",
8116
+ hereLinkText: "disini",
8117
+ cargoTypeLabel: "Data Jenis Muatan",
8118
+ cargoTypeHelperText: 'Apabila jenis muatan belum tersedia dapat memilih "Lainnya" dan silakan isi jenis muatannya.',
8119
+ cargoQuantityLabel: "Jumlah Muatan",
8120
+ priceLabel: "Harga",
8121
+ industryTypeLabel: "Data Jenis Industri",
8122
+ industryTypeHelperText: 'Apabila jenis industri belum tersedia dapat memilih "Lainnya" dan silakan isi jenis muatannya.',
8123
+ cargoCategoryLabel: "Kategori Muatan",
8124
+ cargoCategoryHelperTextPrefix: "Pahami definisi, jenis dan contoh kategori muatan",
8125
+ deleteCargoButton: "Hapus Muatan",
8126
+ addCargoButton: "Tambah Muatan",
8127
+ cargoTypeOptions: {
8128
+ karung: "Karung",
8129
+ kg: "Kg",
8130
+ ton: "Ton",
8131
+ unit: "Unit"
8132
+ }
8133
+ },
8134
+ en: {
8135
+ title: "Owner & Cargo Information",
8136
+ addOwnerButton: "Add Owner",
8137
+ ownerInfoTitle: "Owner Information {index}",
8138
+ senderNameLabel: "Sender Name",
8139
+ senderTypeCompany: "Company",
8140
+ senderTypeIndividual: "Individual",
8141
+ selectCompanyPlaceholder: "Select Company Name",
8142
+ inputSenderNamePlaceholder: "Enter Sender Name",
8143
+ estimatedWeightLabel: "Estimated Cargo & Vehicle Weight (Ton)",
8144
+ inputNumberPlaceholder: "Enter Number",
8145
+ originCityLabel: "Origin City",
8146
+ destinationCityLabel: "Destination City",
8147
+ selectPlaceholder: "Select",
8148
+ cargoOwnerTitle: "Cargo Owner Company Name",
8149
+ cargoOwnerCompanyPlaceholder: "Select Cargo Owner Company",
8150
+ cargoOwnerIndividualPlaceholder: "Enter Cargo Owner Name",
8151
+ otherCompanyHelperText: 'If the company name is not available, select "Other" and enter the company name',
8152
+ logisticsCompanyTitle: "Logistics Company Name",
8153
+ logisticsCompanyPlaceholder: "Select Logistics Company",
8154
+ logisticsIndividualPlaceholder: "Enter Logistics Name",
8155
+ cargoReceiverTitle: "Cargo Receiver Company Name",
8156
+ cargoReceiverCompanyPlaceholder: "Select Cargo Receiver Company",
8157
+ cargoReceiverIndividualPlaceholder: "Enter Cargo Receiver Name",
8158
+ totalWeightLabel: "Cargo & Vehicle Weight (Ton)",
8159
+ cargoListTitle: "Cargo List",
8160
+ cargoItemTitle: "Cargo {index}",
8161
+ commodityLabel: "Commodity Data",
8162
+ commodityHelperTextPrefix: "Understand definition, types and examples of commodities",
8163
+ hereLinkText: "here",
8164
+ cargoTypeLabel: "Cargo Type Data",
8165
+ cargoTypeHelperText: 'If the cargo type is not available, select "Other" and enter the cargo type.',
8166
+ cargoQuantityLabel: "Cargo Quantity",
8167
+ priceLabel: "Price",
8168
+ industryTypeLabel: "Industry Type Data",
8169
+ industryTypeHelperText: 'If the industry type is not available, select "Other" and enter the industry type.',
8170
+ cargoCategoryLabel: "Cargo Category",
8171
+ cargoCategoryHelperTextPrefix: "Understand definition, types and examples of cargo categories",
8172
+ deleteCargoButton: "Delete Cargo",
8173
+ addCargoButton: "Add Cargo",
8174
+ cargoTypeOptions: {
8175
+ karung: "Sack",
8176
+ kg: "Kg",
8177
+ ton: "Ton",
8178
+ unit: "Unit"
8179
+ }
8180
+ }
8181
+ };
7775
8182
  var useStyles25 = reactComponents.makeStyles({
7776
8183
  card: {
7777
8184
  padding: "1.5rem",
@@ -7827,13 +8234,16 @@ var CardVehicleOwnerForm = ({
7827
8234
  onDeleteCargo,
7828
8235
  onUpdateCargoQuantity,
7829
8236
  companyOptions = [],
7830
- cityOptions = []
8237
+ cityOptions = [],
8238
+ language = "id",
8239
+ labels
7831
8240
  }) => {
7832
8241
  const styles = useStyles25();
8242
+ const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
7833
8243
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
7834
8244
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.header, children: [
7835
8245
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", flex: 1 }, children: [
7836
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { style: { marginRight: "1rem" }, children: "Informasi Pemilik & Muatan" }),
8246
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { style: { marginRight: "1rem" }, children: mergedLabels.title }),
7837
8247
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { style: { flex: 1 } })
7838
8248
  ] }),
7839
8249
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7843,639 +8253,768 @@ var CardVehicleOwnerForm = ({
7843
8253
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-24-regular" }),
7844
8254
  style: { color: reactComponents.tokens.colorNeutralForeground2 },
7845
8255
  onClick: onAddOwner,
7846
- children: "Tambah Pemilik"
8256
+ children: mergedLabels.addOwnerButton
7847
8257
  }
7848
8258
  )
7849
8259
  ] }),
7850
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { collapsible: true, defaultOpenItems: owners.map((o) => String(o.id)), multiple: true, children: owners.map((owner, index) => /* @__PURE__ */ jsxRuntime.jsxs(
7851
- reactComponents.AccordionItem,
8260
+ /* @__PURE__ */ jsxRuntime.jsx(
8261
+ reactComponents.Accordion,
7852
8262
  {
7853
- value: String(owner.id),
7854
- className: styles.accordion,
7855
- children: [
7856
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionHeader, { className: styles.accordionHeader, expandIconPosition: "end", children: /* @__PURE__ */ jsxRuntime.jsxs(
7857
- "div",
7858
- {
7859
- style: {
7860
- display: "flex",
7861
- justifyContent: "space-between",
7862
- alignItems: "center",
7863
- width: "100%"
7864
- },
7865
- children: [
7866
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1Strong, { children: [
7867
- "Informasi Pemilik ",
7868
- index + 1
7869
- ] }),
7870
- owners.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
7871
- reactComponents.Button,
7872
- {
7873
- appearance: "transparent",
7874
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
7875
- onClick: (e) => {
7876
- e.stopPropagation();
7877
- onDeleteOwner(owner.id);
7878
- },
7879
- style: { color: reactComponents.tokens.colorPaletteRedForeground1 }
7880
- }
7881
- )
7882
- ]
7883
- }
7884
- ) }),
7885
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.form, children: [
7886
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
7887
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { lg: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Nama Pengirim" }) }),
7888
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { lg: 6, children: [
7889
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: "2rem", marginBottom: "0.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
7890
- reactComponents.RadioGroup,
7891
- {
7892
- layout: "horizontal",
7893
- value: owner.senderType,
7894
- onChange: (_, data) => onUpdateOwner(owner.id, {
7895
- senderType: data.value
7896
- }),
7897
- children: [
7898
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perusahaan", label: "Perusahaan" }),
7899
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perseorangan", label: "Perseorangan" })
7900
- ]
7901
- }
7902
- ) }),
7903
- /* @__PURE__ */ jsxRuntime.jsx(
7904
- InputDynamic_default,
7905
- {
7906
- control,
7907
- name: `owners.${index}.senderName`,
7908
- placeholder: owner.senderType === "Perusahaan" ? "Pilih Nama Perusahaan" : "Masukkan Nama Pengirim",
7909
- size: "large",
7910
- type: owner.senderType === "Perusahaan" ? "select" : "text",
7911
- options: owner.senderType === "Perusahaan" ? companyOptions : []
7912
- }
7913
- )
7914
- ] }),
7915
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { lg: 6, children: [
7916
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: "1rem" } }),
7917
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
7918
- "Data Estimasi Berat Muatan dan Kendaraan (Ton)",
7919
- " ",
7920
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
7921
- ] }),
7922
- /* @__PURE__ */ jsxRuntime.jsx(
7923
- InputDynamic_default,
7924
- {
7925
- control,
7926
- name: `owners.${index}.estimatedWeight`,
7927
- placeholder: "Masukkan Angka",
7928
- size: "large",
7929
- type: "number"
7930
- }
7931
- )
7932
- ] })
7933
- ] }),
7934
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
7935
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
7936
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Kota Asal" }),
7937
- /* @__PURE__ */ jsxRuntime.jsx(
7938
- InputDynamic_default,
7939
- {
7940
- control,
7941
- name: `looseCargoOwners.${index}.originCity`,
7942
- placeholder: "Pilih",
7943
- type: "select",
7944
- options: cityOptions
7945
- }
7946
- )
7947
- ] }),
7948
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
7949
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Kota Tujuan" }),
7950
- /* @__PURE__ */ jsxRuntime.jsx(
7951
- InputDynamic_default,
7952
- {
7953
- control,
7954
- name: `looseCargoOwners.${index}.destinationCity`,
7955
- placeholder: "Pilih",
7956
- type: "select",
7957
- options: cityOptions
7958
- }
7959
- )
7960
- ] })
7961
- ] }),
7962
- hasLoad && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7963
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
7964
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
7965
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
7966
- "Nama Perusahaan Pemilik Barang ",
7967
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
7968
- ] }),
7969
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: "2rem", marginBottom: "0.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
7970
- reactComponents.RadioGroup,
7971
- {
7972
- layout: "horizontal",
7973
- value: owner.cargoOwnerType || "Perusahaan",
7974
- onChange: (_, data) => onUpdateOwner(owner.id, {
7975
- cargoOwnerType: data.value
7976
- }),
7977
- children: [
7978
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perusahaan", label: "Perusahaan" }),
7979
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perseorangan", label: "Perseorangan" })
7980
- ]
7981
- }
7982
- ) }),
7983
- /* @__PURE__ */ jsxRuntime.jsx(
7984
- InputDynamic_default,
7985
- {
7986
- control,
7987
- name: `looseCargoOwners.${index}.cargoOwnerName`,
7988
- placeholder: owner.cargoOwnerType === "Perusahaan" ? "Pilih Nama Perusahaan Pemilik Barang" : "Masukkan Nama Pemilik Barang",
7989
- size: "large",
7990
- type: owner.cargoOwnerType === "Perusahaan" ? "select" : "text",
7991
- options: owner.cargoOwnerType === "Perusahaan" ? companyOptions : []
7992
- }
7993
- ),
7994
- /* @__PURE__ */ jsxRuntime.jsx(
7995
- reactComponents.Caption1,
8263
+ collapsible: true,
8264
+ defaultOpenItems: owners.map((o) => String(o.id)),
8265
+ multiple: true,
8266
+ children: owners.map((owner, index) => /* @__PURE__ */ jsxRuntime.jsxs(
8267
+ reactComponents.AccordionItem,
8268
+ {
8269
+ value: String(owner.id),
8270
+ className: styles.accordion,
8271
+ children: [
8272
+ /* @__PURE__ */ jsxRuntime.jsx(
8273
+ reactComponents.AccordionHeader,
8274
+ {
8275
+ className: styles.accordionHeader,
8276
+ expandIconPosition: "end",
8277
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
8278
+ "div",
7996
8279
  {
7997
8280
  style: {
7998
- color: reactComponents.tokens.colorNeutralForeground3,
7999
- marginTop: "0.25rem"
8281
+ display: "flex",
8282
+ justifyContent: "space-between",
8283
+ alignItems: "center",
8284
+ width: "100%"
8000
8285
  },
8001
- children: 'Apabila nama perusahaan belum tersedia dapat memilih "Lainnya" dan silakan isi nama perusahaan'
8002
- }
8003
- )
8004
- ] }),
8005
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8006
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8007
- "Nama Perusahaan Logistik ",
8008
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8009
- ] }),
8010
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: "2rem", marginBottom: "0.5rem" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
8011
- reactComponents.RadioGroup,
8012
- {
8013
- layout: "horizontal",
8014
- value: owner.logisticsCompanyType || "Perseorangan",
8015
- onChange: (_, data) => onUpdateOwner(owner.id, {
8016
- logisticsCompanyType: data.value
8017
- }),
8018
8286
  children: [
8019
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perusahaan", label: "Perusahaan" }),
8020
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perseorangan", label: "Perseorangan" })
8287
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.ownerInfoTitle.replace(
8288
+ "{index}",
8289
+ (index + 1).toString()
8290
+ ) }),
8291
+ owners.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
8292
+ reactComponents.Button,
8293
+ {
8294
+ appearance: "transparent",
8295
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
8296
+ onClick: (e) => {
8297
+ e.stopPropagation();
8298
+ onDeleteOwner(owner.id);
8299
+ },
8300
+ style: { color: reactComponents.tokens.colorPaletteRedForeground1 }
8301
+ }
8302
+ )
8021
8303
  ]
8022
8304
  }
8023
- ) }),
8024
- /* @__PURE__ */ jsxRuntime.jsx(
8025
- InputDynamic_default,
8026
- {
8027
- control,
8028
- name: `looseCargoOwners.${index}.logisticsCompanyName`,
8029
- placeholder: owner.logisticsCompanyType === "Perusahaan" ? "Pilih Nama Perusahaan Logistik" : "Masukkan Nama Logistik",
8030
- size: "large",
8031
- type: owner.logisticsCompanyType === "Perusahaan" ? "select" : "text",
8032
- options: owner.logisticsCompanyType === "Perusahaan" ? companyOptions : []
8033
- }
8034
- ),
8035
- /* @__PURE__ */ jsxRuntime.jsx(
8036
- reactComponents.Caption1,
8037
- {
8038
- style: {
8039
- color: reactComponents.tokens.colorNeutralForeground3,
8040
- marginTop: "0.25rem"
8041
- },
8042
- children: 'Apabila nama perusahaan belum tersedia dapat memilih "Lainnya" dan silakan isi nama perusahaan'
8043
- }
8044
8305
  )
8045
- ] })
8046
- ] }),
8047
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8048
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Nama Perusahaan Penerima Barang" }) }),
8049
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8050
- /* @__PURE__ */ jsxRuntime.jsxs(
8051
- reactComponents.RadioGroup,
8052
- {
8053
- layout: "horizontal",
8054
- value: owner.cargoReceiverType || "Perusahaan",
8055
- onChange: (_, data) => onUpdateOwner(owner.id, {
8056
- cargoReceiverType: data.value
8057
- }),
8058
- children: [
8059
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perusahaan", label: "Perusahaan" }),
8060
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: "Perseorangan", label: "Perseorangan" })
8061
- ]
8062
- }
8063
- ),
8064
- /* @__PURE__ */ jsxRuntime.jsx(
8065
- InputDynamic_default,
8066
- {
8067
- control,
8068
- name: `looseCargoOwners.${index}.cargoReceiverName`,
8069
- placeholder: owner.cargoReceiverType === "Perusahaan" ? "Pilih Nama Perusahaan Penerima Barang" : "Masukkan Nama Penerima Barang",
8070
- size: "large",
8071
- type: owner.cargoReceiverType === "Perusahaan" ? "select" : "text",
8072
- options: owner.cargoReceiverType === "Perusahaan" ? companyOptions : []
8073
- }
8074
- ),
8075
- /* @__PURE__ */ jsxRuntime.jsx(
8076
- reactComponents.Caption1,
8077
- {
8078
- style: {
8079
- color: reactComponents.tokens.colorNeutralForeground3,
8080
- marginTop: "0.25rem"
8081
- },
8082
- children: 'Apabila nama perusahaan belum tersedia dapat memilih "Lainnya" dan silakan isi nama perusahaan'
8083
- }
8084
- )
8085
- ] }),
8086
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8087
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: ".5rem" } }),
8088
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8089
- "Berat Muatan dan Kendaraan (Ton)",
8090
- " ",
8091
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8092
- ] }),
8093
- /* @__PURE__ */ jsxRuntime.jsx(
8094
- InputDynamic_default,
8095
- {
8096
- control,
8097
- name: `looseCargoOwners.${index}.cargoWeight`,
8098
- placeholder: "Masukkan Angka",
8099
- type: "number",
8100
- size: "large"
8101
- }
8102
- )
8103
- ] })
8104
- ] }),
8105
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Daftar Muatan" }) }) }),
8106
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { xs: 12, children: [
8107
- /* @__PURE__ */ jsxRuntime.jsx(
8108
- reactComponents.Accordion,
8109
- {
8110
- collapsible: true,
8111
- defaultOpenItems: owner.cargoItems?.map((cargo) => `cargo-${cargo.id}`) || [],
8112
- multiple: true,
8113
- children: owner.cargoItems?.map((cargo, cargoIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
8114
- reactComponents.AccordionItem,
8306
+ }
8307
+ ),
8308
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.form, children: [
8309
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8310
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { lg: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.senderNameLabel }) }),
8311
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { lg: 6, children: [
8312
+ /* @__PURE__ */ jsxRuntime.jsx(
8313
+ "div",
8115
8314
  {
8116
- value: `cargo-${cargo.id}`,
8117
- className: styles.accordion,
8118
- children: [
8119
- /* @__PURE__ */ jsxRuntime.jsx(
8120
- reactComponents.AccordionHeader,
8121
- {
8122
- className: styles.accordionHeader,
8123
- expandIconPosition: "end",
8124
- children: /* @__PURE__ */ jsxRuntime.jsx(
8125
- "div",
8315
+ style: {
8316
+ display: "flex",
8317
+ gap: "2rem",
8318
+ marginBottom: "0.5rem"
8319
+ },
8320
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
8321
+ reactComponents.RadioGroup,
8322
+ {
8323
+ layout: "horizontal",
8324
+ value: owner.senderType,
8325
+ onChange: (_, data) => onUpdateOwner(owner.id, {
8326
+ senderType: data.value
8327
+ }),
8328
+ children: [
8329
+ /* @__PURE__ */ jsxRuntime.jsx(
8330
+ reactComponents.Radio,
8126
8331
  {
8127
- style: {
8128
- display: "flex",
8129
- justifyContent: "space-between",
8130
- alignItems: "center",
8131
- width: "100%"
8132
- },
8133
- children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1Strong, { children: [
8134
- "Muatan ",
8135
- cargoIndex + 1
8136
- ] })
8332
+ value: "Perusahaan",
8333
+ label: mergedLabels.senderTypeCompany
8334
+ }
8335
+ ),
8336
+ /* @__PURE__ */ jsxRuntime.jsx(
8337
+ reactComponents.Radio,
8338
+ {
8339
+ value: "Perseorangan",
8340
+ label: mergedLabels.senderTypeIndividual
8137
8341
  }
8138
8342
  )
8139
- }
8140
- ),
8141
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.form, children: [
8142
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8143
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8144
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8145
- "Data Komoditas ",
8146
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8147
- ] }),
8343
+ ]
8344
+ }
8345
+ )
8346
+ }
8347
+ ),
8348
+ /* @__PURE__ */ jsxRuntime.jsx(
8349
+ InputDynamic_default,
8350
+ {
8351
+ control,
8352
+ name: `owners.${index}.senderName`,
8353
+ placeholder: owner.senderType === "Perusahaan" ? mergedLabels.selectCompanyPlaceholder : mergedLabels.inputSenderNamePlaceholder,
8354
+ size: "large",
8355
+ type: owner.senderType === "Perusahaan" ? "select" : "text",
8356
+ options: owner.senderType === "Perusahaan" ? companyOptions : []
8357
+ }
8358
+ )
8359
+ ] }),
8360
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { lg: 6, children: [
8361
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: "1rem" } }),
8362
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8363
+ mergedLabels.estimatedWeightLabel,
8364
+ " ",
8365
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8366
+ ] }),
8367
+ /* @__PURE__ */ jsxRuntime.jsx(
8368
+ InputDynamic_default,
8369
+ {
8370
+ control,
8371
+ name: `owners.${index}.estimatedWeight`,
8372
+ placeholder: mergedLabels.inputNumberPlaceholder,
8373
+ size: "large",
8374
+ type: "number"
8375
+ }
8376
+ )
8377
+ ] })
8378
+ ] }),
8379
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8380
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8381
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.originCityLabel }),
8382
+ /* @__PURE__ */ jsxRuntime.jsx(
8383
+ InputDynamic_default,
8384
+ {
8385
+ control,
8386
+ name: `looseCargoOwners.${index}.originCity`,
8387
+ placeholder: mergedLabels.selectPlaceholder,
8388
+ type: "select",
8389
+ options: cityOptions
8390
+ }
8391
+ )
8392
+ ] }),
8393
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8394
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.destinationCityLabel }),
8395
+ /* @__PURE__ */ jsxRuntime.jsx(
8396
+ InputDynamic_default,
8397
+ {
8398
+ control,
8399
+ name: `looseCargoOwners.${index}.destinationCity`,
8400
+ placeholder: mergedLabels.selectPlaceholder,
8401
+ type: "select",
8402
+ options: cityOptions
8403
+ }
8404
+ )
8405
+ ] })
8406
+ ] }),
8407
+ hasLoad && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8408
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8409
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8410
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8411
+ mergedLabels.cargoOwnerTitle,
8412
+ " ",
8413
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8414
+ ] }),
8415
+ /* @__PURE__ */ jsxRuntime.jsx(
8416
+ "div",
8417
+ {
8418
+ style: {
8419
+ display: "flex",
8420
+ gap: "2rem",
8421
+ marginBottom: "0.5rem"
8422
+ },
8423
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
8424
+ reactComponents.RadioGroup,
8425
+ {
8426
+ layout: "horizontal",
8427
+ value: owner.cargoOwnerType || "Perusahaan",
8428
+ onChange: (_, data) => onUpdateOwner(owner.id, {
8429
+ cargoOwnerType: data.value
8430
+ }),
8431
+ children: [
8148
8432
  /* @__PURE__ */ jsxRuntime.jsx(
8149
- InputDynamic_default,
8433
+ reactComponents.Radio,
8150
8434
  {
8151
- control,
8152
- name: `looseCargoOwners.${index}.cargo.${cargoIndex}.commodity`,
8153
- placeholder: "Pilih",
8154
- type: "select",
8155
- options: []
8435
+ value: "Perusahaan",
8436
+ label: mergedLabels.senderTypeCompany
8156
8437
  }
8157
8438
  ),
8158
- /* @__PURE__ */ jsxRuntime.jsxs(
8159
- reactComponents.Caption1,
8439
+ /* @__PURE__ */ jsxRuntime.jsx(
8440
+ reactComponents.Radio,
8160
8441
  {
8161
- style: {
8162
- color: reactComponents.tokens.colorNeutralForeground3,
8163
- marginTop: "0.25rem"
8164
- },
8165
- children: [
8166
- "Pahami definisi, jenis dan contoh komoditas",
8167
- " ",
8168
- /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: styles.link, children: "disini" })
8169
- ]
8442
+ value: "Perseorangan",
8443
+ label: mergedLabels.senderTypeIndividual
8170
8444
  }
8171
8445
  )
8172
- ] }),
8173
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8174
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8175
- "Data Jenis Muatan",
8176
- " ",
8177
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8178
- ] }),
8446
+ ]
8447
+ }
8448
+ )
8449
+ }
8450
+ ),
8451
+ /* @__PURE__ */ jsxRuntime.jsx(
8452
+ InputDynamic_default,
8453
+ {
8454
+ control,
8455
+ name: `looseCargoOwners.${index}.cargoOwnerName`,
8456
+ placeholder: owner.cargoOwnerType === "Perusahaan" ? mergedLabels.cargoOwnerCompanyPlaceholder : mergedLabels.cargoOwnerIndividualPlaceholder,
8457
+ size: "large",
8458
+ type: owner.cargoOwnerType === "Perusahaan" ? "select" : "text",
8459
+ options: owner.cargoOwnerType === "Perusahaan" ? companyOptions : []
8460
+ }
8461
+ ),
8462
+ /* @__PURE__ */ jsxRuntime.jsx(
8463
+ reactComponents.Caption1,
8464
+ {
8465
+ style: {
8466
+ color: reactComponents.tokens.colorNeutralForeground3,
8467
+ marginTop: "0.25rem"
8468
+ },
8469
+ children: mergedLabels.otherCompanyHelperText
8470
+ }
8471
+ )
8472
+ ] }),
8473
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8474
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8475
+ mergedLabels.logisticsCompanyTitle,
8476
+ " ",
8477
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8478
+ ] }),
8479
+ /* @__PURE__ */ jsxRuntime.jsx(
8480
+ "div",
8481
+ {
8482
+ style: {
8483
+ display: "flex",
8484
+ gap: "2rem",
8485
+ marginBottom: "0.5rem"
8486
+ },
8487
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
8488
+ reactComponents.RadioGroup,
8489
+ {
8490
+ layout: "horizontal",
8491
+ value: owner.logisticsCompanyType || "Perseorangan",
8492
+ onChange: (_, data) => onUpdateOwner(owner.id, {
8493
+ logisticsCompanyType: data.value
8494
+ }),
8495
+ children: [
8179
8496
  /* @__PURE__ */ jsxRuntime.jsx(
8180
- InputDynamic_default,
8497
+ reactComponents.Radio,
8181
8498
  {
8182
- control,
8183
- name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`,
8184
- placeholder: "Pilih",
8185
- type: "select",
8186
- options: [
8187
- { value: "karung", label: "Karung" },
8188
- { value: "kg", label: "Kg" },
8189
- { value: "ton", label: "Ton" },
8190
- { value: "unit", label: "Unit" }
8191
- ]
8499
+ value: "Perusahaan",
8500
+ label: mergedLabels.senderTypeCompany
8192
8501
  }
8193
8502
  ),
8194
8503
  /* @__PURE__ */ jsxRuntime.jsx(
8195
- reactComponents.Caption1,
8504
+ reactComponents.Radio,
8196
8505
  {
8197
- style: {
8198
- color: reactComponents.tokens.colorNeutralForeground3,
8199
- marginTop: "0.25rem"
8200
- },
8201
- children: 'Apabila jenis muatan belum tersedia dapat memilih "Lainnya" dan silakan isi jenis muatannya.'
8506
+ value: "Perseorangan",
8507
+ label: mergedLabels.senderTypeIndividual
8202
8508
  }
8203
8509
  )
8204
- ] }),
8205
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8206
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Jumlah Muatan" }),
8207
- /* @__PURE__ */ jsxRuntime.jsxs(
8208
- "div",
8209
- {
8210
- style: {
8211
- display: "flex",
8212
- alignItems: "center",
8213
- border: `1px solid ${reactComponents.tokens.colorNeutralStroke1}`,
8214
- borderRadius: reactComponents.tokens.borderRadiusMedium,
8215
- height: "40px",
8216
- padding: "0 12px",
8217
- backgroundColor: reactComponents.tokens.colorNeutralBackground1
8218
- },
8219
- children: [
8220
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 0.5 } }),
8221
- /* @__PURE__ */ jsxRuntime.jsxs(
8222
- "div",
8223
- {
8224
- style: {
8225
- display: "flex",
8226
- alignItems: "center",
8227
- gap: "12px"
8510
+ ]
8511
+ }
8512
+ )
8513
+ }
8514
+ ),
8515
+ /* @__PURE__ */ jsxRuntime.jsx(
8516
+ InputDynamic_default,
8517
+ {
8518
+ control,
8519
+ name: `looseCargoOwners.${index}.logisticsCompanyName`,
8520
+ placeholder: owner.logisticsCompanyType === "Perusahaan" ? mergedLabels.logisticsCompanyPlaceholder : mergedLabels.logisticsIndividualPlaceholder,
8521
+ size: "large",
8522
+ type: owner.logisticsCompanyType === "Perusahaan" ? "select" : "text",
8523
+ options: owner.logisticsCompanyType === "Perusahaan" ? companyOptions : []
8524
+ }
8525
+ ),
8526
+ /* @__PURE__ */ jsxRuntime.jsx(
8527
+ reactComponents.Caption1,
8528
+ {
8529
+ style: {
8530
+ color: reactComponents.tokens.colorNeutralForeground3,
8531
+ marginTop: "0.25rem"
8532
+ },
8533
+ children: mergedLabels.otherCompanyHelperText
8534
+ }
8535
+ )
8536
+ ] })
8537
+ ] }),
8538
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8539
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, md: 12, lg: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.cargoReceiverTitle }) }),
8540
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8541
+ /* @__PURE__ */ jsxRuntime.jsxs(
8542
+ reactComponents.RadioGroup,
8543
+ {
8544
+ layout: "horizontal",
8545
+ value: owner.cargoReceiverType || "Perusahaan",
8546
+ onChange: (_, data) => onUpdateOwner(owner.id, {
8547
+ cargoReceiverType: data.value
8548
+ }),
8549
+ children: [
8550
+ /* @__PURE__ */ jsxRuntime.jsx(
8551
+ reactComponents.Radio,
8552
+ {
8553
+ value: "Perusahaan",
8554
+ label: mergedLabels.senderTypeCompany
8555
+ }
8556
+ ),
8557
+ /* @__PURE__ */ jsxRuntime.jsx(
8558
+ reactComponents.Radio,
8559
+ {
8560
+ value: "Perseorangan",
8561
+ label: mergedLabels.senderTypeIndividual
8562
+ }
8563
+ )
8564
+ ]
8565
+ }
8566
+ ),
8567
+ /* @__PURE__ */ jsxRuntime.jsx(
8568
+ InputDynamic_default,
8569
+ {
8570
+ control,
8571
+ name: `looseCargoOwners.${index}.cargoReceiverName`,
8572
+ placeholder: owner.cargoReceiverType === "Perusahaan" ? mergedLabels.cargoReceiverCompanyPlaceholder : mergedLabels.cargoReceiverIndividualPlaceholder,
8573
+ size: "large",
8574
+ type: owner.cargoReceiverType === "Perusahaan" ? "select" : "text",
8575
+ options: owner.cargoReceiverType === "Perusahaan" ? companyOptions : []
8576
+ }
8577
+ ),
8578
+ /* @__PURE__ */ jsxRuntime.jsx(
8579
+ reactComponents.Caption1,
8580
+ {
8581
+ style: {
8582
+ color: reactComponents.tokens.colorNeutralForeground3,
8583
+ marginTop: "0.25rem"
8584
+ },
8585
+ children: mergedLabels.otherCompanyHelperText
8586
+ }
8587
+ )
8588
+ ] }),
8589
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { children: [
8590
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: ".5rem" } }),
8591
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8592
+ mergedLabels.totalWeightLabel,
8593
+ " ",
8594
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8595
+ ] }),
8596
+ /* @__PURE__ */ jsxRuntime.jsx(
8597
+ InputDynamic_default,
8598
+ {
8599
+ control,
8600
+ name: `looseCargoOwners.${index}.cargoWeight`,
8601
+ placeholder: mergedLabels.inputNumberPlaceholder,
8602
+ type: "number",
8603
+ size: "large"
8604
+ }
8605
+ )
8606
+ ] })
8607
+ ] }),
8608
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.cargoListTitle }) }) }),
8609
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { xs: 12, children: [
8610
+ /* @__PURE__ */ jsxRuntime.jsx(
8611
+ reactComponents.Accordion,
8612
+ {
8613
+ collapsible: true,
8614
+ defaultOpenItems: owner.cargoItems?.map(
8615
+ (cargo) => `cargo-${cargo.id}`
8616
+ ) || [],
8617
+ multiple: true,
8618
+ children: owner.cargoItems?.map((cargo, cargoIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
8619
+ reactComponents.AccordionItem,
8620
+ {
8621
+ value: `cargo-${cargo.id}`,
8622
+ className: styles.accordion,
8623
+ children: [
8624
+ /* @__PURE__ */ jsxRuntime.jsx(
8625
+ reactComponents.AccordionHeader,
8626
+ {
8627
+ className: styles.accordionHeader,
8628
+ expandIconPosition: "end",
8629
+ children: /* @__PURE__ */ jsxRuntime.jsx(
8630
+ "div",
8631
+ {
8632
+ style: {
8633
+ display: "flex",
8634
+ justifyContent: "space-between",
8635
+ alignItems: "center",
8636
+ width: "100%"
8637
+ },
8638
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.cargoItemTitle.replace(
8639
+ "{index}",
8640
+ (cargoIndex + 1).toString()
8641
+ ) })
8642
+ }
8643
+ )
8644
+ }
8645
+ ),
8646
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.form, children: [
8647
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8648
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8649
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8650
+ mergedLabels.commodityLabel,
8651
+ " ",
8652
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8653
+ ] }),
8654
+ /* @__PURE__ */ jsxRuntime.jsx(
8655
+ InputDynamic_default,
8656
+ {
8657
+ control,
8658
+ name: `looseCargoOwners.${index}.cargo.${cargoIndex}.commodity`,
8659
+ placeholder: mergedLabels.selectPlaceholder,
8660
+ type: "select",
8661
+ options: []
8662
+ }
8663
+ ),
8664
+ /* @__PURE__ */ jsxRuntime.jsxs(
8665
+ reactComponents.Caption1,
8666
+ {
8667
+ style: {
8668
+ color: reactComponents.tokens.colorNeutralForeground3,
8669
+ marginTop: "0.25rem"
8670
+ },
8671
+ children: [
8672
+ mergedLabels.commodityHelperTextPrefix,
8673
+ " ",
8674
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: styles.link, children: mergedLabels.hereLinkText })
8675
+ ]
8676
+ }
8677
+ )
8678
+ ] }),
8679
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8680
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8681
+ mergedLabels.cargoTypeLabel,
8682
+ " ",
8683
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8684
+ ] }),
8685
+ /* @__PURE__ */ jsxRuntime.jsx(
8686
+ InputDynamic_default,
8687
+ {
8688
+ control,
8689
+ name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`,
8690
+ placeholder: mergedLabels.selectPlaceholder,
8691
+ type: "select",
8692
+ options: [
8693
+ {
8694
+ value: "karung",
8695
+ label: mergedLabels.cargoTypeOptions.karung
8696
+ },
8697
+ {
8698
+ value: "kg",
8699
+ label: mergedLabels.cargoTypeOptions.kg
8700
+ },
8701
+ {
8702
+ value: "ton",
8703
+ label: mergedLabels.cargoTypeOptions.ton
8228
8704
  },
8229
- children: [
8230
- /* @__PURE__ */ jsxRuntime.jsx(
8231
- reactComponents.Button,
8232
- {
8233
- appearance: "transparent",
8234
- icon: /* @__PURE__ */ jsxRuntime.jsx(
8235
- react.Icon,
8705
+ {
8706
+ value: "unit",
8707
+ label: mergedLabels.cargoTypeOptions.unit
8708
+ }
8709
+ ]
8710
+ }
8711
+ ),
8712
+ /* @__PURE__ */ jsxRuntime.jsx(
8713
+ reactComponents.Caption1,
8714
+ {
8715
+ style: {
8716
+ color: reactComponents.tokens.colorNeutralForeground3,
8717
+ marginTop: "0.25rem"
8718
+ },
8719
+ children: mergedLabels.cargoTypeHelperText
8720
+ }
8721
+ )
8722
+ ] }),
8723
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8724
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.cargoQuantityLabel }),
8725
+ /* @__PURE__ */ jsxRuntime.jsxs(
8726
+ "div",
8727
+ {
8728
+ style: {
8729
+ display: "flex",
8730
+ alignItems: "center",
8731
+ border: `1px solid ${reactComponents.tokens.colorNeutralStroke1}`,
8732
+ borderRadius: reactComponents.tokens.borderRadiusMedium,
8733
+ height: "40px",
8734
+ padding: "0 12px",
8735
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1
8736
+ },
8737
+ children: [
8738
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 0.5 } }),
8739
+ /* @__PURE__ */ jsxRuntime.jsxs(
8740
+ "div",
8741
+ {
8742
+ style: {
8743
+ display: "flex",
8744
+ alignItems: "center",
8745
+ gap: "12px"
8746
+ },
8747
+ children: [
8748
+ /* @__PURE__ */ jsxRuntime.jsx(
8749
+ reactComponents.Button,
8236
8750
  {
8237
- icon: "fluent:subtract-circle-24-regular",
8751
+ appearance: "transparent",
8752
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
8753
+ react.Icon,
8754
+ {
8755
+ icon: "fluent:subtract-circle-24-regular",
8756
+ style: {
8757
+ fontSize: "24px",
8758
+ color: reactComponents.tokens.colorNeutralForeground4
8759
+ }
8760
+ }
8761
+ ),
8762
+ size: "small",
8763
+ onClick: () => {
8764
+ const currentVal = getValues(
8765
+ `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`
8766
+ ) || 0;
8767
+ const currentQty = Number(currentVal);
8768
+ if (currentQty > 0) {
8769
+ const newVal = currentQty - 1;
8770
+ setValue(
8771
+ `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8772
+ newVal
8773
+ );
8774
+ onUpdateCargoQuantity(
8775
+ owner.id,
8776
+ cargo.id,
8777
+ newVal
8778
+ );
8779
+ }
8780
+ },
8238
8781
  style: {
8239
- fontSize: "24px",
8240
- color: reactComponents.tokens.colorNeutralForeground4
8782
+ minWidth: "32px",
8783
+ padding: "0"
8241
8784
  }
8242
8785
  }
8243
8786
  ),
8244
- size: "small",
8245
- onClick: () => {
8246
- const currentVal = getValues(
8247
- `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`
8248
- ) || 0;
8249
- const currentQty = Number(currentVal);
8250
- if (currentQty > 0) {
8251
- const newVal = currentQty - 1;
8252
- setValue(
8253
- `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8254
- newVal
8255
- );
8256
- onUpdateCargoQuantity(owner.id, cargo.id, newVal);
8257
- }
8258
- },
8259
- style: { minWidth: "32px", padding: "0" }
8260
- }
8261
- ),
8262
- /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "40px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
8263
- reactHookForm.Controller,
8264
- {
8265
- name: `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8266
- control,
8267
- render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsx(
8268
- "input",
8787
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "40px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
8788
+ reactHookForm.Controller,
8269
8789
  {
8270
- ...field,
8271
- type: "number",
8272
- style: {
8273
- border: "none",
8274
- width: "100%",
8275
- textAlign: "center",
8276
- outline: "none",
8277
- backgroundColor: "transparent",
8278
- color: reactComponents.tokens.colorNeutralForeground1,
8279
- fontSize: reactComponents.tokens.fontSizeBase400,
8280
- fontFamily: reactComponents.tokens.fontFamilyBase
8281
- },
8282
- onWheel: (e) => e.target.blur()
8790
+ name: `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8791
+ control,
8792
+ render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsx(
8793
+ "input",
8794
+ {
8795
+ ...field,
8796
+ type: "number",
8797
+ style: {
8798
+ border: "none",
8799
+ width: "100%",
8800
+ textAlign: "center",
8801
+ outline: "none",
8802
+ backgroundColor: "transparent",
8803
+ color: reactComponents.tokens.colorNeutralForeground1,
8804
+ fontSize: reactComponents.tokens.fontSizeBase400,
8805
+ fontFamily: reactComponents.tokens.fontFamilyBase
8806
+ },
8807
+ onWheel: (e) => e.target.blur()
8808
+ }
8809
+ )
8283
8810
  }
8284
- )
8285
- }
8286
- ) }),
8287
- /* @__PURE__ */ jsxRuntime.jsx(
8288
- reactComponents.Button,
8289
- {
8290
- appearance: "transparent",
8291
- icon: /* @__PURE__ */ jsxRuntime.jsx(
8292
- react.Icon,
8811
+ ) }),
8812
+ /* @__PURE__ */ jsxRuntime.jsx(
8813
+ reactComponents.Button,
8293
8814
  {
8294
- icon: "fluent:add-circle-24-regular",
8815
+ appearance: "transparent",
8816
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
8817
+ react.Icon,
8818
+ {
8819
+ icon: "fluent:add-circle-24-regular",
8820
+ style: {
8821
+ fontSize: "24px",
8822
+ color: reactComponents.tokens.colorBrandStroke1
8823
+ }
8824
+ }
8825
+ ),
8826
+ size: "small",
8827
+ onClick: () => {
8828
+ const currentVal = getValues(
8829
+ `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`
8830
+ ) || 0;
8831
+ const currentQty = Number(currentVal);
8832
+ const newVal = currentQty + 1;
8833
+ setValue(
8834
+ `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8835
+ newVal
8836
+ );
8837
+ onUpdateCargoQuantity(
8838
+ owner.id,
8839
+ cargo.id,
8840
+ newVal
8841
+ );
8842
+ },
8295
8843
  style: {
8296
- fontSize: "24px",
8297
- color: reactComponents.tokens.colorBrandStroke1
8844
+ minWidth: "32px",
8845
+ padding: "0"
8298
8846
  }
8299
8847
  }
8300
- ),
8301
- size: "small",
8302
- onClick: () => {
8303
- const currentVal = getValues(
8304
- `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`
8305
- ) || 0;
8306
- const currentQty = Number(currentVal);
8307
- const newVal = currentQty + 1;
8308
- setValue(
8309
- `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
8310
- newVal
8311
- );
8312
- onUpdateCargoQuantity(owner.id, cargo.id, newVal);
8313
- },
8314
- style: { minWidth: "32px", padding: "0" }
8315
- }
8316
- )
8317
- ]
8318
- }
8319
- ),
8320
- /* @__PURE__ */ jsxRuntime.jsx(
8321
- "div",
8322
- {
8323
- style: {
8324
- flex: 1,
8325
- textAlign: "left",
8326
- color: reactComponents.tokens.colorNeutralForeground1,
8327
- fontSize: reactComponents.tokens.fontSizeBase300,
8328
- paddingRight: "8px"
8329
- },
8330
- children: (() => {
8331
- const type = watch(
8332
- `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`
8333
- );
8334
- if (type === "karung") return "Karung";
8335
- if (type === "kg") return "Kg";
8336
- if (type === "ton") return "Ton";
8337
- if (type === "unit") return "Unit";
8338
- return "";
8339
- })()
8340
- }
8341
- )
8342
- ]
8343
- }
8344
- )
8345
- ] }),
8346
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8347
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: "Harga" }),
8348
- /* @__PURE__ */ jsxRuntime.jsx(
8349
- InputDynamic_default,
8350
- {
8351
- control,
8352
- name: `owners.${index}.price`,
8353
- placeholder: "Rp. 0",
8354
- disabled: true,
8355
- size: "large",
8356
- type: "text"
8357
- }
8358
- )
8359
- ] })
8360
- ] }),
8361
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8362
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 6, children: [
8363
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8364
- "Data Jenis Industri",
8365
- " ",
8366
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8848
+ )
8849
+ ]
8850
+ }
8851
+ ),
8852
+ /* @__PURE__ */ jsxRuntime.jsx(
8853
+ "div",
8854
+ {
8855
+ style: {
8856
+ flex: 1,
8857
+ textAlign: "left",
8858
+ color: reactComponents.tokens.colorNeutralForeground1,
8859
+ fontSize: reactComponents.tokens.fontSizeBase300,
8860
+ paddingRight: "8px"
8861
+ },
8862
+ children: (() => {
8863
+ const type = watch(
8864
+ `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`
8865
+ );
8866
+ if (type === "karung")
8867
+ return mergedLabels.cargoTypeOptions.karung;
8868
+ if (type === "kg")
8869
+ return mergedLabels.cargoTypeOptions.kg;
8870
+ if (type === "ton")
8871
+ return mergedLabels.cargoTypeOptions.ton;
8872
+ if (type === "unit")
8873
+ return mergedLabels.cargoTypeOptions.unit;
8874
+ return "";
8875
+ })()
8876
+ }
8877
+ )
8878
+ ]
8879
+ }
8880
+ )
8881
+ ] }),
8882
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 3, children: [
8883
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.label, children: mergedLabels.priceLabel }),
8884
+ /* @__PURE__ */ jsxRuntime.jsx(
8885
+ InputDynamic_default,
8886
+ {
8887
+ control,
8888
+ name: `owners.${index}.price`,
8889
+ placeholder: "Rp. 0",
8890
+ disabled: true,
8891
+ size: "large",
8892
+ type: "text"
8893
+ }
8894
+ )
8895
+ ] })
8367
8896
  ] }),
8368
- /* @__PURE__ */ jsxRuntime.jsx(
8369
- InputDynamic_default,
8370
- {
8371
- control,
8372
- name: `looseCargoOwners.${index}.cargo.${cargoIndex}.industryType`,
8373
- placeholder: "Pilih",
8374
- type: "select",
8375
- options: []
8376
- }
8377
- ),
8378
- /* @__PURE__ */ jsxRuntime.jsx(
8379
- reactComponents.Caption1,
8380
- {
8381
- style: {
8382
- color: reactComponents.tokens.colorNeutralForeground3,
8383
- marginTop: "0.25rem"
8384
- },
8385
- children: 'Apabila jenis industri belum tersedia dapat memilih "Lainnya" dan silakan isi jenis muatannya.'
8386
- }
8387
- )
8388
- ] }),
8389
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 6, children: [
8390
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8391
- "Kategori Muatan ",
8392
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8897
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
8898
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 6, children: [
8899
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8900
+ mergedLabels.industryTypeLabel,
8901
+ " ",
8902
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8903
+ ] }),
8904
+ /* @__PURE__ */ jsxRuntime.jsx(
8905
+ InputDynamic_default,
8906
+ {
8907
+ control,
8908
+ name: `looseCargoOwners.${index}.cargo.${cargoIndex}.industryType`,
8909
+ placeholder: mergedLabels.selectPlaceholder,
8910
+ type: "select",
8911
+ options: []
8912
+ }
8913
+ ),
8914
+ /* @__PURE__ */ jsxRuntime.jsx(
8915
+ reactComponents.Caption1,
8916
+ {
8917
+ style: {
8918
+ color: reactComponents.tokens.colorNeutralForeground3,
8919
+ marginTop: "0.25rem"
8920
+ },
8921
+ children: mergedLabels.industryTypeHelperText
8922
+ }
8923
+ )
8924
+ ] }),
8925
+ /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { md: 6, children: [
8926
+ /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.label, children: [
8927
+ mergedLabels.cargoCategoryLabel,
8928
+ " ",
8929
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "red" }, children: "*" })
8930
+ ] }),
8931
+ /* @__PURE__ */ jsxRuntime.jsx(
8932
+ InputDynamic_default,
8933
+ {
8934
+ control,
8935
+ name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoCategory`,
8936
+ placeholder: mergedLabels.selectPlaceholder,
8937
+ type: "select",
8938
+ options: []
8939
+ }
8940
+ ),
8941
+ /* @__PURE__ */ jsxRuntime.jsxs(
8942
+ reactComponents.Caption1,
8943
+ {
8944
+ style: {
8945
+ color: reactComponents.tokens.colorNeutralForeground3,
8946
+ marginTop: "0.25rem"
8947
+ },
8948
+ children: [
8949
+ mergedLabels.cargoCategoryHelperTextPrefix,
8950
+ " ",
8951
+ /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: styles.link, children: mergedLabels.hereLinkText })
8952
+ ]
8953
+ }
8954
+ )
8955
+ ] })
8393
8956
  ] }),
8394
- /* @__PURE__ */ jsxRuntime.jsx(
8395
- InputDynamic_default,
8396
- {
8397
- control,
8398
- name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoCategory`,
8399
- placeholder: "Pilih",
8400
- type: "select",
8401
- options: []
8402
- }
8403
- ),
8404
- /* @__PURE__ */ jsxRuntime.jsxs(
8405
- reactComponents.Caption1,
8957
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: (owner.cargoItems?.length || 0) > 1 && /* @__PURE__ */ jsxRuntime.jsx(
8958
+ reactComponents.Button,
8406
8959
  {
8960
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
8961
+ onClick: (e) => {
8962
+ e.stopPropagation();
8963
+ onDeleteCargo(owner.id, cargo.id);
8964
+ },
8965
+ onKeyDown: (e) => {
8966
+ if (e.key === "Enter" || e.key === " ") {
8967
+ e.stopPropagation();
8968
+ onDeleteCargo(owner.id, cargo.id);
8969
+ }
8970
+ },
8971
+ size: "medium",
8972
+ shape: "circular",
8407
8973
  style: {
8408
- color: reactComponents.tokens.colorNeutralForeground3,
8409
- marginTop: "0.25rem"
8974
+ border: `1px solid ${reactComponents.tokens.colorPaletteRedForeground1}`,
8975
+ color: reactComponents.tokens.colorPaletteRedForeground1,
8976
+ width: "100%"
8410
8977
  },
8411
- children: [
8412
- "Pahami definisi, jenis dan contoh kategori muatan",
8413
- " ",
8414
- /* @__PURE__ */ jsxRuntime.jsx("a", { href: "#", className: styles.link, children: "disini" })
8415
- ]
8416
- }
8417
- )
8418
- ] })
8419
- ] }),
8420
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: (owner.cargoItems?.length || 0) > 1 && /* @__PURE__ */ jsxRuntime.jsx(
8421
- reactComponents.Button,
8422
- {
8423
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
8424
- onClick: (e) => {
8425
- e.stopPropagation();
8426
- onDeleteCargo(owner.id, cargo.id);
8427
- },
8428
- onKeyDown: (e) => {
8429
- if (e.key === "Enter" || e.key === " ") {
8430
- e.stopPropagation();
8431
- onDeleteCargo(owner.id, cargo.id);
8978
+ children: mergedLabels.deleteCargoButton
8432
8979
  }
8433
- },
8434
- size: "medium",
8435
- shape: "circular",
8436
- style: {
8437
- border: `1px solid ${reactComponents.tokens.colorPaletteRedForeground1}`,
8438
- color: reactComponents.tokens.colorPaletteRedForeground1,
8439
- width: "100%"
8440
- },
8441
- children: "Hapus Muatan"
8442
- }
8443
- ) }) })
8444
- ] }) })
8445
- ]
8446
- },
8447
- cargo.id
8448
- ))
8449
- }
8450
- ),
8451
- /* @__PURE__ */ jsxRuntime.jsx(
8452
- reactComponents.Button,
8453
- {
8454
- appearance: "secondary",
8455
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-24-regular" }),
8456
- shape: "circular",
8457
- style: {
8458
- borderColor: reactComponents.tokens.colorBrandStroke1,
8459
- color: reactComponents.tokens.colorBrandBackground,
8460
- marginTop: "1rem",
8461
- width: "100%"
8462
- },
8463
- onClick: () => onAddCargo(owner.id),
8464
- children: "Tambah Muatan"
8465
- }
8466
- )
8980
+ ) }) })
8981
+ ] }) })
8982
+ ]
8983
+ },
8984
+ cargo.id
8985
+ ))
8986
+ }
8987
+ ),
8988
+ /* @__PURE__ */ jsxRuntime.jsx(
8989
+ reactComponents.Button,
8990
+ {
8991
+ appearance: "secondary",
8992
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-24-regular" }),
8993
+ shape: "circular",
8994
+ style: {
8995
+ borderColor: reactComponents.tokens.colorBrandStroke1,
8996
+ color: reactComponents.tokens.colorBrandBackground,
8997
+ marginTop: "1rem",
8998
+ width: "100%"
8999
+ },
9000
+ onClick: () => onAddCargo(owner.id),
9001
+ children: mergedLabels.addCargoButton
9002
+ }
9003
+ )
9004
+ ] }) })
9005
+ ] })
8467
9006
  ] }) })
8468
- ] })
8469
- ] }) })
8470
- ]
8471
- },
8472
- owner.id
8473
- )) })
9007
+ ]
9008
+ },
9009
+ owner.id
9010
+ ))
9011
+ }
9012
+ )
8474
9013
  ] });
8475
9014
  };
8476
9015
 
8477
9016
  // src/components/CardBookingTicket/CardBookingTicket.constants.ts
8478
- var DEFAULT_LABELS14 = {
9017
+ var DEFAULT_LABELS24 = {
8479
9018
  id: {
8480
9019
  bookingDetails: "Booking Details",
8481
9020
  routeTitle: "Rute Perjalanan",
@@ -8632,7 +9171,7 @@ var CardBookingTicket = ({
8632
9171
  className
8633
9172
  }) => {
8634
9173
  const styles = useStyles26();
8635
- const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
9174
+ const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
8636
9175
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.bookingDetail, children: [
8637
9176
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.bookingDetailTop, children: [
8638
9177
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.bookingDetails }),
@@ -8769,14 +9308,60 @@ var CardBookingTicket = ({
8769
9308
  };
8770
9309
 
8771
9310
  // src/components/CardFAQ/CardFAQ.constants.ts
8772
- var DEFAULT_LABELS15 = {
9311
+ var DEFAULT_LABELS25 = {
8773
9312
  id: {
8774
- title: "FAQ"
9313
+ title: "Pertanyaan yang sering diajukan"
8775
9314
  },
8776
9315
  en: {
8777
- title: "FAQ"
9316
+ title: "Frequently Asked Questions"
8778
9317
  }
8779
9318
  };
9319
+ var DEFAULT_FAQ_ITEMS = {
9320
+ id: [
9321
+ {
9322
+ value: "1",
9323
+ question: "Bagaimana cara memesan tiket?",
9324
+ answer: "Anda dapat memesan tiket melalui halaman pencarian tiket dengan memilih pelabuhan asal, tujuan, dan tanggal keberangkatan."
9325
+ },
9326
+ {
9327
+ value: "2",
9328
+ question: "Apakah bisa mengajukan refund?",
9329
+ answer: "Ya, pengajuan refund dapat dilakukan melalui menu Riwayat Pesanan sesuai dengan syarat dan ketentuan yang berlaku."
9330
+ },
9331
+ {
9332
+ value: "3",
9333
+ question: "Metode pembayaran apa saja yang tersedia?",
9334
+ answer: "Kami mendukung berbagai metode pembayaran termasuk Virtual Account, E-Wallet, dan Kartu Kredit/Debit."
9335
+ },
9336
+ {
9337
+ value: "4",
9338
+ question: "Apakah tiket perlu dicetak?",
9339
+ answer: "Tidak perlu. Anda dapat menunjukkan E-Tiket atau QR Code pada saat check-in di pelabuhan."
9340
+ }
9341
+ ],
9342
+ en: [
9343
+ {
9344
+ value: "1",
9345
+ question: "How to book a ticket?",
9346
+ answer: "You can book tickets through the ticket search page by selecting origin, destination, and departure date."
9347
+ },
9348
+ {
9349
+ value: "2",
9350
+ question: "Can I request a refund?",
9351
+ answer: "Yes, refund requests can be made via the Order History menu subject to applicable terms and conditions."
9352
+ },
9353
+ {
9354
+ value: "3",
9355
+ question: "What payment methods are available?",
9356
+ answer: "We support various payment methods including Virtual Account, E-Wallet, and Credit/Debit Cards."
9357
+ },
9358
+ {
9359
+ value: "4",
9360
+ question: "Do I need to print the ticket?",
9361
+ answer: "No physically printed ticket needed. You can show your E-Ticket or QR Code during check-in at the port."
9362
+ }
9363
+ ]
9364
+ };
8780
9365
  var useStyles27 = reactComponents.makeStyles({
8781
9366
  faqSection: {
8782
9367
  // marginTop: '2rem', // Let parent control spacing if needed, or keep consistent
@@ -8795,38 +9380,18 @@ var useStyles27 = reactComponents.makeStyles({
8795
9380
  fontWeight: reactComponents.tokens.fontWeightBold
8796
9381
  }
8797
9382
  });
8798
- var FAQ_ITEMS = [
8799
- {
8800
- value: "1",
8801
- question: "FAQ 1",
8802
- answer: "Lorem ipsum dolor, sit amet consectetur adipisicing elit. Minus saepe repudiandae dolore pariatur veniam! Aliquam nesciunt saepe, optio inventore fuga quam dignissimos possimus, dolorem alias, blanditiis veniam voluptatibus eaque ex?"
8803
- },
8804
- {
8805
- value: "2",
8806
- question: "FAQ 2",
8807
- answer: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae dolor consequatur, sit facere ex, ullam quos natus sapiente nihil cum libero velit, labore necessitatibus rem? Tenetur omnis tempora alias totam."
8808
- },
8809
- {
8810
- value: "3",
8811
- question: "FAQ 3",
8812
- answer: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Recusandae officiis modi quaerat eum illo, consectetur aperiam atque? Corrupti cupiditate sequi iusto reiciendis dignissimos, eius, nihil temporibus eaque delectus, saepe ullam!"
8813
- },
8814
- {
8815
- value: "4",
8816
- question: "FAQ 4",
8817
- answer: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint maiores debitis, earum animi dolorum unde asperiores accusantium nemo consectetur nulla reiciendis eveniet pariatur autem rerum adipisci sequi officia vero ipsam!"
8818
- }
8819
- ];
8820
9383
  var CardFAQ = ({
8821
9384
  language = "id",
8822
9385
  labels,
9386
+ items,
8823
9387
  className
8824
9388
  }) => {
8825
9389
  const styles = useStyles27();
8826
- const mergedLabels = { ...DEFAULT_LABELS15[language], ...labels };
9390
+ const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
9391
+ const faqItems = items || DEFAULT_FAQ_ITEMS[language];
8827
9392
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.faqCard, children: [
8828
9393
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.title }),
8829
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { collapsible: true, children: FAQ_ITEMS.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
9394
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { collapsible: true, children: faqItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
8830
9395
  reactComponents.AccordionItem,
8831
9396
  {
8832
9397
  value: item.value,
@@ -8859,7 +9424,7 @@ var CardFAQ = ({
8859
9424
  };
8860
9425
 
8861
9426
  // src/components/CardAddon/CardAddon.constants.ts
8862
- var DEFAULT_LABELS16 = {
9427
+ var DEFAULT_LABELS26 = {
8863
9428
  id: {
8864
9429
  viewDetail: "Lihat detail",
8865
9430
  totalPrice: "Total Harga",
@@ -9047,7 +9612,7 @@ var CardAddon = ({
9047
9612
  className
9048
9613
  }) => {
9049
9614
  const styles = useStyles28();
9050
- const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
9615
+ const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
9051
9616
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.gapRow, children: [
9052
9617
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.titleDivider, children: [
9053
9618
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { className: styles.textTitle, children: title }),
@@ -9239,7 +9804,7 @@ var CardAddon = ({
9239
9804
  };
9240
9805
 
9241
9806
  // src/components/CardMealCatalog/CardMealCatalog.constants.ts
9242
- var DEFAULT_LABELS17 = {
9807
+ var DEFAULT_LABELS27 = {
9243
9808
  id: {
9244
9809
  addButton: "Tambah"
9245
9810
  },
@@ -9387,7 +9952,7 @@ var CardMealCatalog = ({
9387
9952
  className
9388
9953
  }) => {
9389
9954
  const styles = useStyles29();
9390
- const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
9955
+ const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
9391
9956
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
9392
9957
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.banner, children: [
9393
9958
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.bannerOverlay }),
@@ -9477,7 +10042,7 @@ var CardMealCatalog = ({
9477
10042
  };
9478
10043
 
9479
10044
  // src/components/CardReview/CardReview.constants.ts
9480
- var DEFAULT_LABELS18 = {
10045
+ var DEFAULT_LABELS28 = {
9481
10046
  id: {},
9482
10047
  en: {}
9483
10048
  };
@@ -9533,7 +10098,7 @@ var CardReview = ({
9533
10098
  headerAction
9534
10099
  }) => {
9535
10100
  const styles = useStyles30();
9536
- ({ ...DEFAULT_LABELS18[language], ...labels });
10101
+ ({ ...DEFAULT_LABELS28[language], ...labels });
9537
10102
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
9538
10103
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
9539
10104
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: title }),
@@ -9580,7 +10145,7 @@ var CardReview = ({
9580
10145
  };
9581
10146
 
9582
10147
  // src/components/CardReviewPassenger/CardReviewPassenger.constants.ts
9583
- var DEFAULT_LABELS19 = {
10148
+ var DEFAULT_LABELS29 = {
9584
10149
  id: {
9585
10150
  title: "Penumpang",
9586
10151
  idNumber: "Nomor ID"
@@ -9689,7 +10254,7 @@ var CardReviewPassenger = ({
9689
10254
  className
9690
10255
  }) => {
9691
10256
  const styles = useStyles31();
9692
- const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
10257
+ const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
9693
10258
  const displayTitle = title || mergedLabels.title;
9694
10259
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
9695
10260
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -9732,7 +10297,7 @@ var CardReviewPassenger = ({
9732
10297
  };
9733
10298
 
9734
10299
  // src/components/CardPriceDetails/CardPriceDetails.constants.ts
9735
- var DEFAULT_LABELS20 = {
10300
+ var DEFAULT_LABELS30 = {
9736
10301
  id: {
9737
10302
  defaultTitle: "Rincian Harga",
9738
10303
  totalPayment: "Total Pembayaran",
@@ -9747,7 +10312,8 @@ var DEFAULT_LABELS20 = {
9747
10312
  agreementLinkFerizy: "Syarat & Ketentuan",
9748
10313
  agreementCovidInfo: "Ketentuan persyaratan menyeberang sesuai dengan\xA0",
9749
10314
  agreementCovidLink: "Surat Edaran Satgas Covid-19 Nomor 23 Tahun 2022.",
9750
- agreementFinal: "Bahwa apabila saya didapati tidak memenuhi ketentuan persyaratan menyeberang pada butir 2 (dua) diatas yang mengakibatkan saya terlambat atau tidak dapat melakukan Check-In di pelabuhan tepat waktu, maka saya menerima dan menyetujui untuk diproses sesuai dengan Syarat & Ketentuan Ferizy sebagaimana tersebut pada butir 1 (satu) di atas."
10315
+ agreementFinal: "Bahwa apabila saya didapati tidak memenuhi ketentuan persyaratan menyeberang pada butir 2 (dua) diatas yang mengakibatkan saya terlambat atau tidak dapat melakukan Check-In di pelabuhan tepat waktu, maka saya menerima dan menyetujui untuk diproses sesuai dengan Syarat & Ketentuan Ferizy sebagaimana tersebut pada butir 1 (satu) di atas.",
10316
+ currencyPrefix: "Rp. "
9751
10317
  },
9752
10318
  en: {
9753
10319
  defaultTitle: "Price Details",
@@ -9763,7 +10329,8 @@ var DEFAULT_LABELS20 = {
9763
10329
  agreementLinkFerizy: "Ferizy Terms & Conditions",
9764
10330
  agreementCovidInfo: "Crossing requirement provisions in accordance with\xA0",
9765
10331
  agreementCovidLink: "Covid-19 Task Force Circular Letter Number 23 of 2022.",
9766
- agreementFinal: "That if I am found not to meet the crossing requirement provisions in point 2 (two) above which results in me being late or unable to Check-In at the port on time, then I accept and agree to be processed in accordance with the Ferizy Terms & Conditions as mentioned in point 1 (one) above."
10332
+ agreementFinal: "That if I am found not to meet the crossing requirement provisions in point 2 (two) above which results in me being late or unable to Check-In at the port on time, then I accept and agree to be processed in accordance with the Ferizy Terms & Conditions as mentioned in point 1 (one) above.",
10333
+ currencyPrefix: "Rp. "
9767
10334
  }
9768
10335
  };
9769
10336
  var useStyles32 = reactComponents.makeStyles({
@@ -9785,11 +10352,11 @@ var useStyles32 = reactComponents.makeStyles({
9785
10352
  }
9786
10353
  });
9787
10354
  var PriceDetailsTerms = ({
9788
- language = "id"
10355
+ language = "id",
10356
+ labels
9789
10357
  }) => {
9790
10358
  const styles = useStyles32();
9791
10359
  const linkColor = reactComponents.tokens.colorBrandBackground;
9792
- const labels = DEFAULT_LABELS20[language];
9793
10360
  const bookingTerms = labels.bookingTerms;
9794
10361
  const agreementTerms = [
9795
10362
  /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -9889,7 +10456,7 @@ var CardPriceDetails = ({
9889
10456
  labels
9890
10457
  }) => {
9891
10458
  const styles = useStyles33();
9892
- const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
10459
+ const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
9893
10460
  const displayTitle = title || mergedLabels.defaultTitle;
9894
10461
  const getVariantClass = (variant) => {
9895
10462
  switch (variant) {
@@ -9908,10 +10475,10 @@ var CardPriceDetails = ({
9908
10475
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
9909
10476
  isTaxLike ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { className: variantClass, children: item.name }) : /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: reactComponents.mergeClasses(styles.label, variantClass), children: item.name }),
9910
10477
  isTaxLike ? /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1Strong, { className: reactComponents.mergeClasses(styles.value, variantClass), children: [
9911
- "Rp. ",
10478
+ mergedLabels.currencyPrefix,
9912
10479
  item.price.toLocaleString("id-ID")
9913
10480
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: reactComponents.mergeClasses(styles.value, variantClass), children: [
9914
- item.isRedeem ? "-" : "Rp. ",
10481
+ item.isRedeem ? "-" : mergedLabels.currencyPrefix,
9915
10482
  item.price.toLocaleString("id-ID")
9916
10483
  ] })
9917
10484
  ] }),
@@ -9937,18 +10504,18 @@ var CardPriceDetails = ({
9937
10504
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.totalRow, children: [
9938
10505
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.totalLabel, children: mergedLabels.totalPayment }),
9939
10506
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle1, { className: styles.totalValue, children: [
9940
- "Rp. ",
10507
+ mergedLabels.currencyPrefix,
9941
10508
  total.toLocaleString("id-ID")
9942
10509
  ] })
9943
10510
  ] }),
9944
10511
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
9945
- /* @__PURE__ */ jsxRuntime.jsx(PriceDetailsTerms, { language })
10512
+ /* @__PURE__ */ jsxRuntime.jsx(PriceDetailsTerms, { language, labels: mergedLabels })
9946
10513
  ] })
9947
10514
  ] });
9948
10515
  };
9949
10516
 
9950
10517
  // src/components/CardPaymentMethodList/CardPaymentMethodList.constants.ts
9951
- var DEFAULT_LABELS21 = {
10518
+ var DEFAULT_LABELS31 = {
9952
10519
  id: {},
9953
10520
  en: {}
9954
10521
  };
@@ -10013,7 +10580,7 @@ var CardPaymentMethodList = ({
10013
10580
  onSelect
10014
10581
  }) => {
10015
10582
  const styles = useStyles34();
10016
- ({ ...DEFAULT_LABELS21[language], ...labels });
10583
+ ({ ...DEFAULT_LABELS31[language], ...labels });
10017
10584
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container}`, children: methods.map((category, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
10018
10585
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) }),
10019
10586
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { multiple: true, collapsible: true, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.AccordionItem, { value: category.value, children: [
@@ -10060,7 +10627,7 @@ var CardPaymentMethodList = ({
10060
10627
  };
10061
10628
 
10062
10629
  // src/components/CardPaymentGuide/CardPaymentGuide.constants.ts
10063
- var DEFAULT_LABELS22 = {
10630
+ var DEFAULT_LABELS32 = {
10064
10631
  id: {
10065
10632
  title: "Cara Pembayaran"
10066
10633
  },
@@ -10106,7 +10673,7 @@ var CardPaymentGuide = ({
10106
10673
  className
10107
10674
  }) => {
10108
10675
  const styles = useStyles35();
10109
- const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
10676
+ const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
10110
10677
  const displayTitle = title || mergedLabels.title;
10111
10678
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
10112
10679
  title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.title, children: displayTitle }) }),
@@ -10125,7 +10692,7 @@ var CardPaymentGuide = ({
10125
10692
  };
10126
10693
 
10127
10694
  // src/components/CardPaymentInfo/CardPaymentInfo.constants.ts
10128
- var DEFAULT_LABELS23 = {
10695
+ var DEFAULT_LABELS33 = {
10129
10696
  id: {
10130
10697
  expiryPrefix: "Kode virtual akun berlaku sampai",
10131
10698
  copyCodeButton: "Salin Kode",
@@ -10224,7 +10791,7 @@ var CardPaymentInfo = ({
10224
10791
  onCheckStatus
10225
10792
  }) => {
10226
10793
  const styles = useStyles36();
10227
- const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
10794
+ const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
10228
10795
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
10229
10796
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
10230
10797
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.expiryPrefix }),
@@ -10285,7 +10852,7 @@ var CardPaymentInfo = ({
10285
10852
  };
10286
10853
 
10287
10854
  // src/components/CardStatusOrder/CardStatusOrder.constants.ts
10288
- var DEFAULT_LABELS24 = {
10855
+ var DEFAULT_LABELS34 = {
10289
10856
  id: {
10290
10857
  detailTitle: "Detail Pemesanan",
10291
10858
  statusLabel: "Status",
@@ -10384,7 +10951,7 @@ var CardStatusOrder = ({
10384
10951
  className
10385
10952
  }) => {
10386
10953
  const styles = useStyles37();
10387
- const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10954
+ const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
10388
10955
  const displayStatus = statusLabel || mergedLabels.defaultStatus;
10389
10956
  const displayTitle = title || mergedLabels.defaultTitle;
10390
10957
  const displayDescription = description || mergedLabels.defaultDescription;
@@ -10479,6 +11046,32 @@ var CardStatusOrder = ({
10479
11046
  ) }) })
10480
11047
  ] }) });
10481
11048
  };
11049
+
11050
+ // src/components/ModalPriceDetail/ModalPriceDetail.constants.ts
11051
+ var DEFAULT_LABELS35 = {
11052
+ id: {
11053
+ title: "Rincian Harga",
11054
+ addonHeader: "Add On",
11055
+ subTotalLabel: "Sub Tagihan",
11056
+ totalTagihanLabel: "Total Tagihan",
11057
+ ppnLabel: "PPN (Pajak Pertambahan Nilai) 11%",
11058
+ ppnNote: "*PPN 11% dikenakan untuk biaya layanan dan biaya admin",
11059
+ grandTotalLabel: "Total Pembayaran",
11060
+ currencyPrefix: "Rp.",
11061
+ currencyCode: "IDR."
11062
+ },
11063
+ en: {
11064
+ title: "Price Details",
11065
+ addonHeader: "Add On",
11066
+ subTotalLabel: "Sub Total",
11067
+ totalTagihanLabel: "Total Bill",
11068
+ ppnLabel: "VAT (Value Added Tax) 11%",
11069
+ ppnNote: "*VAT 11% is charged for service fees and admin fees",
11070
+ grandTotalLabel: "Total Payment",
11071
+ currencyPrefix: "Rp.",
11072
+ currencyCode: "IDR."
11073
+ }
11074
+ };
10482
11075
  var useStyles38 = reactComponents.makeStyles({
10483
11076
  surface: {
10484
11077
  width: "680px",
@@ -10495,7 +11088,10 @@ var useStyles38 = reactComponents.makeStyles({
10495
11088
  card: {
10496
11089
  backgroundColor: reactComponents.tokens.colorNeutralBackground1,
10497
11090
  ...reactComponents.shorthands.border("1px", "solid", reactComponents.tokens.colorNeutralStroke2),
10498
- ...reactComponents.shorthands.padding(reactComponents.tokens.spacingVerticalXXL, reactComponents.tokens.spacingHorizontalXXL),
11091
+ ...reactComponents.shorthands.padding(
11092
+ reactComponents.tokens.spacingVerticalXXL,
11093
+ reactComponents.tokens.spacingHorizontalXXL
11094
+ ),
10499
11095
  boxShadow: "none"
10500
11096
  },
10501
11097
  content: {
@@ -10592,6 +11188,8 @@ var useStyles38 = reactComponents.makeStyles({
10592
11188
  }
10593
11189
  });
10594
11190
  var ModalPriceDetail = ({
11191
+ language = "id",
11192
+ labels,
10595
11193
  isOpen,
10596
11194
  onOpenChange,
10597
11195
  detailItems,
@@ -10602,99 +11200,133 @@ var ModalPriceDetail = ({
10602
11200
  ...props
10603
11201
  }) => {
10604
11202
  const styles = useStyles38();
10605
- return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Dialog, { open: isOpen, onOpenChange: (_, data) => onOpenChange(data.open), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
10606
- /* @__PURE__ */ jsxRuntime.jsx(
10607
- reactComponents.DialogTitle,
10608
- {
10609
- className: styles.dialogTitle,
10610
- action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
10611
- reactComponents.Button,
11203
+ const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
11204
+ return /* @__PURE__ */ jsxRuntime.jsx(
11205
+ reactComponents.Dialog,
11206
+ {
11207
+ open: isOpen,
11208
+ onOpenChange: (_, data) => onOpenChange(data.open),
11209
+ ...props,
11210
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
11211
+ /* @__PURE__ */ jsxRuntime.jsx(
11212
+ reactComponents.DialogTitle,
10612
11213
  {
10613
- appearance: "subtle",
10614
- "aria-label": "close",
10615
- icon: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
10616
- "path",
11214
+ className: styles.dialogTitle,
11215
+ action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
11216
+ reactComponents.Button,
10617
11217
  {
10618
- d: "M18 6L6 18M6 6L18 18",
10619
- stroke: "currentColor",
10620
- strokeWidth: "2",
10621
- strokeLinecap: "round",
10622
- strokeLinejoin: "round"
11218
+ appearance: "subtle",
11219
+ "aria-label": "close",
11220
+ icon: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
11221
+ "path",
11222
+ {
11223
+ d: "M18 6L6 18M6 6L18 18",
11224
+ stroke: "currentColor",
11225
+ strokeWidth: "2",
11226
+ strokeLinecap: "round",
11227
+ strokeLinejoin: "round"
11228
+ }
11229
+ ) })
10623
11230
  }
10624
- ) })
11231
+ ) }),
11232
+ children: mergedLabels.title
10625
11233
  }
10626
- ) }),
10627
- children: "Rincian Harga"
10628
- }
10629
- ),
10630
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.section, children: [
10631
- detailItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
10632
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
10633
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
10634
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.vehicleTitle, children: item.label }),
10635
- item.badge && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Badge, { size: "medium", shape: "rounded", className: styles.badge, children: item.badge })
11234
+ ),
11235
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.section, children: [
11236
+ detailItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
11237
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11238
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
11239
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.vehicleTitle, children: item.label }),
11240
+ item.badge && /* @__PURE__ */ jsxRuntime.jsx(
11241
+ reactComponents.Badge,
11242
+ {
11243
+ size: "medium",
11244
+ shape: "rounded",
11245
+ className: styles.badge,
11246
+ children: item.badge
11247
+ }
11248
+ )
11249
+ ] }),
11250
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
11251
+ mergedLabels.currencyPrefix,
11252
+ " ",
11253
+ item.price.toLocaleString("id-ID")
11254
+ ] })
11255
+ ] }),
11256
+ item.list && item.list.map((subItem) => /* @__PURE__ */ jsxRuntime.jsxs(
11257
+ "div",
11258
+ {
11259
+ className: styles.passengerDetail,
11260
+ children: [
11261
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: subItem.label }),
11262
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { float: "right" }, children: [
11263
+ mergedLabels.currencyCode,
11264
+ " ",
11265
+ item.price.toLocaleString("id-ID")
11266
+ ] })
11267
+ ]
11268
+ },
11269
+ subItem.key
11270
+ ))
11271
+ ] }, item.key)),
11272
+ addonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11273
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.addonHeader, children: mergedLabels.addonHeader }),
11274
+ addonItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11275
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.itemLabel, children: item.label }),
11276
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
11277
+ mergedLabels.currencyCode,
11278
+ " ",
11279
+ item.price.toLocaleString("id-ID")
11280
+ ] })
11281
+ ] }, item.key))
10636
11282
  ] }),
10637
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
10638
- "Rp. ",
10639
- item.price.toLocaleString("id-ID")
10640
- ] })
10641
- ] }),
10642
- item.list && item.list.map((subItem) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.passengerDetail, children: [
10643
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: subItem.label }),
10644
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { float: "right" }, children: [
10645
- "IDR. ",
10646
- item.price.toLocaleString("id-ID")
10647
- ] })
10648
- ] }, subItem.key))
10649
- ] }, item.key)),
10650
- addonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10651
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.addonHeader, children: "Add On" }),
10652
- addonItems.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
10653
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.itemLabel, children: item.label }),
10654
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
10655
- "IDR. ",
10656
- item.price.toLocaleString("id-ID")
10657
- ] })
10658
- ] }, item.key))
10659
- ] }),
10660
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.divider }),
10661
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
10662
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalLabel, children: "Sub Tagihan" }),
10663
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalValue, children: [
10664
- "IDR.",
10665
- subTotal.toLocaleString("id-ID")
10666
- ] })
10667
- ] }),
10668
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
10669
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalTagihanLabel, children: "Total Tagihan" }),
10670
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalTagihanValue, children: [
10671
- "IDR.",
10672
- subTotal.toLocaleString("id-ID")
10673
- ] })
10674
- ] }),
10675
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: reactComponents.tokens.spacingVerticalL }, children: [
10676
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
10677
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.ppnLabel, children: "PPN (Pajak Pertambahan Nilai) 11%" }),
10678
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.ppnValue, children: [
10679
- "IDR.",
10680
- taxAmount.toLocaleString("id-ID")
10681
- ] })
10682
- ] }),
10683
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.ppnNote, children: "*PPN 11% dikenakan untuk biaya layanan dan biaya admin" })
10684
- ] }),
10685
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, style: { marginTop: reactComponents.tokens.spacingVerticalXXL }, children: [
10686
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.grandTotalLabel, children: "Total Pembayaran" }),
10687
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.grandTotalValue, children: [
10688
- "Rp.",
10689
- grandTotal.toLocaleString("id-ID")
10690
- ] })
10691
- ] })
10692
- ] }) }) })
10693
- ] }) }) });
11283
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.divider }),
11284
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11285
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalLabel, children: mergedLabels.subTotalLabel }),
11286
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalValue, children: [
11287
+ mergedLabels.currencyCode,
11288
+ subTotal.toLocaleString("id-ID")
11289
+ ] })
11290
+ ] }),
11291
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11292
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalTagihanLabel, children: mergedLabels.totalTagihanLabel }),
11293
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalTagihanValue, children: [
11294
+ mergedLabels.currencyCode,
11295
+ subTotal.toLocaleString("id-ID")
11296
+ ] })
11297
+ ] }),
11298
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: reactComponents.tokens.spacingVerticalL }, children: [
11299
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11300
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.ppnLabel, children: mergedLabels.ppnLabel }),
11301
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.ppnValue, children: [
11302
+ mergedLabels.currencyCode,
11303
+ taxAmount.toLocaleString("id-ID")
11304
+ ] })
11305
+ ] }),
11306
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.ppnNote, children: mergedLabels.ppnNote })
11307
+ ] }),
11308
+ /* @__PURE__ */ jsxRuntime.jsxs(
11309
+ "div",
11310
+ {
11311
+ className: styles.row,
11312
+ style: { marginTop: reactComponents.tokens.spacingVerticalXXL },
11313
+ children: [
11314
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.grandTotalLabel, children: mergedLabels.grandTotalLabel }),
11315
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.grandTotalValue, children: [
11316
+ mergedLabels.currencyPrefix,
11317
+ grandTotal.toLocaleString("id-ID")
11318
+ ] })
11319
+ ]
11320
+ }
11321
+ )
11322
+ ] }) }) })
11323
+ ] }) })
11324
+ }
11325
+ );
10694
11326
  };
10695
11327
 
10696
11328
  // src/components/CardProfileMenu/CardProfileMenu.constants.ts
10697
- var DEFAULT_LABELS25 = {
11329
+ var DEFAULT_LABELS36 = {
10698
11330
  id: {},
10699
11331
  en: {}
10700
11332
  };
@@ -10757,7 +11389,7 @@ var CardProfileMenu = ({
10757
11389
  onTabSelect
10758
11390
  }) => {
10759
11391
  const styles = useStyles39();
10760
- ({ ...DEFAULT_LABELS25[language], ...labels });
11392
+ ({ ...DEFAULT_LABELS36[language], ...labels });
10761
11393
  const handleTabSelect = (_, data) => {
10762
11394
  onTabSelect(data.value);
10763
11395
  };
@@ -10807,9 +11439,9 @@ exports.CardServiceMenu = CardServiceMenu;
10807
11439
  exports.CardStatusOrder = CardStatusOrder;
10808
11440
  exports.CardTicket = CardTicket;
10809
11441
  exports.CardTicketSearch = CardTicketSearch;
10810
- exports.CardTicketSearchDefaultLabels = DEFAULT_LABELS3;
11442
+ exports.CardTicketSearchDefaultLabels = DEFAULT_LABELS7;
10811
11443
  exports.CardTicketSearchSummary = CardTicketSearchSummary;
10812
- exports.CardTicketSearchSummaryDefaultLabels = DEFAULT_LABELS4;
11444
+ exports.CardTicketSearchSummaryDefaultLabels = DEFAULT_LABELS8;
10813
11445
  exports.CardVehicleDetail = CardVehicleDetail;
10814
11446
  exports.CardVehicleOwnerForm = CardVehicleOwnerForm;
10815
11447
  exports.CarouselWithCustomNav = CarouselWithCustomNav;
@@ -10823,11 +11455,11 @@ exports.DEFAULT_SORT_OPTIONS = DEFAULT_SORT_OPTIONS;
10823
11455
  exports.DEFAULT_TIME_SLOTS = DEFAULT_TIME_SLOTS;
10824
11456
  exports.DEFAULT_VEHICLE_ICONS = DEFAULT_VEHICLE_ICONS;
10825
11457
  exports.DateFilter = DateFilter;
10826
- exports.DateFilterDefaultLabels = DEFAULT_LABELS10;
11458
+ exports.DateFilterDefaultLabels = DEFAULT_LABELS15;
10827
11459
  exports.InputDynamic = InputDynamic_default;
10828
11460
  exports.MODAL_PRESETS = MODAL_PRESETS;
10829
11461
  exports.ModalFilterTicket = ModalFilterTicket;
10830
- exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS9;
11462
+ exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS14;
10831
11463
  exports.ModalIllustration = ModalIllustration;
10832
11464
  exports.ModalListPassenger = ModalListPassenger;
10833
11465
  exports.ModalPassengerForm = ModalPassengerForm;