@asdp/ferryui 0.1.22-dev.8649 → 0.1.22-dev.8661

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
@@ -199,6 +199,20 @@ var MODAL_PRESETS = {
199
199
  PURCHASE_PERIOD_EXPIRED: getModalPreset("PURCHASE_PERIOD_EXPIRED", "id"),
200
200
  TRANSACTION_LIMIT: getModalPreset("TRANSACTION_LIMIT", "id")
201
201
  };
202
+
203
+ // src/components/CarouselWithCustomNav/CarouselWithCustomNav.constants.ts
204
+ var DEFAULT_LABELS2 = {
205
+ id: {
206
+ carouselAriaLabel: "Carousel",
207
+ slideAriaLabel: "Slide {index}",
208
+ announcementTemplate: "Carousel slide {index} dari {total}"
209
+ },
210
+ en: {
211
+ carouselAriaLabel: "Carousel",
212
+ slideAriaLabel: "Slide {index}",
213
+ announcementTemplate: "Carousel slide {index} of {total}"
214
+ }
215
+ };
202
216
  var useStyles2 = reactComponents.makeStyles({
203
217
  carousel: {},
204
218
  customCarouselNav: {
@@ -256,32 +270,49 @@ var useStyles2 = reactComponents.makeStyles({
256
270
  }
257
271
  }
258
272
  });
259
- var defaultAnnouncement = (index, totalSlides) => {
260
- return `Carousel slide ${index + 1} of ${totalSlides}`;
261
- };
262
273
  var CarouselWithCustomNav = ({
274
+ language = "id",
275
+ labels: customLabels,
263
276
  children,
264
277
  circular = true,
265
278
  draggable = true,
266
279
  align = "start",
267
280
  whitespace = false,
268
- announcement = defaultAnnouncement,
281
+ announcement: customAnnouncement,
269
282
  activeIndex: controlledIndex,
270
283
  onActiveIndexChange,
271
- ariaLabel = "Carousel",
284
+ ariaLabel: deprecatedAriaLabel,
272
285
  darkNavBackground = true,
273
286
  className,
274
287
  cardFocus = false
275
288
  }) => {
276
289
  const styles = useStyles2();
277
290
  const [internalIndex, setInternalIndex] = React5.useState(0);
291
+ const labels = React5__default.default.useMemo(
292
+ () => ({
293
+ ...DEFAULT_LABELS2[language],
294
+ ...customLabels,
295
+ ...deprecatedAriaLabel && { carouselAriaLabel: deprecatedAriaLabel }
296
+ }),
297
+ [language, customLabels, deprecatedAriaLabel]
298
+ );
278
299
  const activeIndex = controlledIndex !== void 0 ? controlledIndex : internalIndex;
279
- const handleIndexChange = React5.useCallback((index) => {
280
- if (controlledIndex === void 0) {
281
- setInternalIndex(index);
282
- }
283
- onActiveIndexChange?.(index);
284
- }, [controlledIndex, onActiveIndexChange]);
300
+ const handleIndexChange = React5.useCallback(
301
+ (index) => {
302
+ if (controlledIndex === void 0) {
303
+ setInternalIndex(index);
304
+ }
305
+ onActiveIndexChange?.(index);
306
+ },
307
+ [controlledIndex, onActiveIndexChange]
308
+ );
309
+ const defaultAnnouncement = React5.useCallback(
310
+ (index, totalSlides) => {
311
+ return labels.announcementTemplate.replace("{index}", (index + 1).toString()).replace("{total}", totalSlides.toString());
312
+ },
313
+ [labels.announcementTemplate]
314
+ );
315
+ const announcement = customAnnouncement || defaultAnnouncement;
285
316
  return /* @__PURE__ */ jsxRuntime.jsxs(
286
317
  reactComponents.Carousel,
287
318
  {
@@ -298,7 +329,7 @@ var CarouselWithCustomNav = ({
298
329
  reactComponents.CarouselSlider,
299
330
  {
300
331
  cardFocus,
301
- "aria-label": ariaLabel,
332
+ "aria-label": labels.carouselAriaLabel,
302
333
  children
303
334
  }
304
335
  ) }),
@@ -311,7 +342,15 @@ var CarouselWithCustomNav = ({
311
342
  },
312
343
  appearance: "brand",
313
344
  className: styles.carouselNavButton,
314
- children: (index) => /* @__PURE__ */ jsxRuntime.jsx(reactComponents.CarouselNavButton, { "aria-label": `Slide ${index + 1}` })
345
+ children: (index) => /* @__PURE__ */ jsxRuntime.jsx(
346
+ reactComponents.CarouselNavButton,
347
+ {
348
+ "aria-label": labels.slideAriaLabel.replace(
349
+ "{index}",
350
+ (index + 1).toString()
351
+ )
352
+ }
353
+ )
315
354
  }
316
355
  )
317
356
  ]
@@ -320,14 +359,20 @@ var CarouselWithCustomNav = ({
320
359
  };
321
360
 
322
361
  // src/components/CardPromo/CardPromo.constants.ts
323
- var DEFAULT_LABELS2 = {
362
+ var DEFAULT_LABELS3 = {
324
363
  id: {
325
364
  defaultImageAlt: "Gambar Promo",
326
- defaultButtonText: "Lihat Detail"
365
+ defaultButtonText: "Lihat Detail",
366
+ promoAriaLabel: "Promo {index} dari {total}",
367
+ promoAriaLabelSingle: "Promo {index}",
368
+ loadingContent: "Memuat konten"
327
369
  },
328
370
  en: {
329
371
  defaultImageAlt: "Promo Image",
330
- defaultButtonText: "View Details"
372
+ defaultButtonText: "View Details",
373
+ promoAriaLabel: "Promo {index} of {total}",
374
+ promoAriaLabelSingle: "Promo {index}",
375
+ loadingContent: "Loading content"
331
376
  }
332
377
  };
333
378
  var useStyles3 = reactComponents.makeStyles({
@@ -431,10 +476,13 @@ var CardPromo = ({
431
476
  labels
432
477
  }) => {
433
478
  const classes = useStyles3();
434
- const mergedLabels = { ...DEFAULT_LABELS2[language], ...labels };
479
+ const mergedLabels = { ...DEFAULT_LABELS3[language], ...labels };
435
480
  const displayImageAlt = imageAlt || mergedLabels.defaultImageAlt;
436
481
  const displayButtonText = buttonText || mergedLabels.defaultButtonText;
437
- const ariaLabel = totalCards ? `Card ${index + 1} of ${totalCards}` : `Promo card ${index + 1}`;
482
+ const ariaLabel = totalCards ? mergedLabels.promoAriaLabel.replace("{index}", (index + 1).toString()).replace("{total}", totalCards.toString()) : mergedLabels.promoAriaLabelSingle.replace(
483
+ "{index}",
484
+ (index + 1).toString()
485
+ );
438
486
  if (isLoading) {
439
487
  return /* @__PURE__ */ jsxRuntime.jsx(
440
488
  reactComponents.CarouselCard,
@@ -442,7 +490,7 @@ var CardPromo = ({
442
490
  autoSize: true,
443
491
  className: reactComponents.mergeClasses(classes.actionCard, className),
444
492
  style: { cursor: "default" },
445
- children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Skeleton, { "aria-label": "Loading content", children: [
493
+ children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Skeleton, { "aria-label": mergedLabels.loadingContent, children: [
446
494
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: reactComponents.mergeClasses(classes.imageContainer, imageClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
447
495
  reactComponents.SkeletonItem,
448
496
  {
@@ -532,7 +580,7 @@ var CardPromo = ({
532
580
  };
533
581
 
534
582
  // src/components/CardBanner/CardBanner.constants.ts
535
- var DEFAULT_LABELS3 = {
583
+ var DEFAULT_LABELS4 = {
536
584
  id: {
537
585
  bannerAriaLabel: "Banner {index} dari {total}",
538
586
  bannerAriaLabelSingle: "Banner {index}",
@@ -577,7 +625,7 @@ var CardBanner = ({
577
625
  }) => {
578
626
  const classes = useStyles4();
579
627
  const mergedLabels = {
580
- ...DEFAULT_LABELS3[language],
628
+ ...DEFAULT_LABELS4[language],
581
629
  ...labels
582
630
  };
583
631
  const ariaLabel = totalBanners ? mergedLabels.bannerAriaLabel.replace("{index}", (index + 1).toString()).replace("{total}", totalBanners.toString()) : mergedLabels.bannerAriaLabelSingle.replace(
@@ -760,7 +808,7 @@ var extendedTokens = {
760
808
  colorBrandForegroundLinkSelected: customBrand[110]});
761
809
 
762
810
  // src/components/CardTicket/CardTicket.constants.ts
763
- var DEFAULT_LABELS4 = {
811
+ var DEFAULT_LABELS5 = {
764
812
  id: {
765
813
  availableSeatsLabel: "Tersedia",
766
814
  estimationPrefix: "Estimasi",
@@ -769,7 +817,9 @@ var DEFAULT_LABELS4 = {
769
817
  totalPriceLabel: "Total harga",
770
818
  facilitiesLabel: "Fasilitas",
771
819
  selectTicketButton: "Pilih Tiket",
772
- timezoneLabel: "WIB"
820
+ timezoneLabel: "WIB",
821
+ currencySymbol: "IDR",
822
+ logoAlt: "Logo ASDP"
773
823
  },
774
824
  en: {
775
825
  availableSeatsLabel: "Available",
@@ -779,7 +829,9 @@ var DEFAULT_LABELS4 = {
779
829
  totalPriceLabel: "Total price",
780
830
  facilitiesLabel: "Facilities",
781
831
  selectTicketButton: "Select Ticket",
782
- timezoneLabel: "WIB"
832
+ timezoneLabel: "WIB",
833
+ currencySymbol: "IDR",
834
+ logoAlt: "ASDP Logo"
783
835
  }
784
836
  };
785
837
  var useStyles5 = reactComponents.makeStyles({
@@ -1002,7 +1054,7 @@ var CardTicket = ({
1002
1054
  }) => {
1003
1055
  const styles = useStyles5();
1004
1056
  const { width } = useWindowSize();
1005
- const mergedLabels = { ...DEFAULT_LABELS4[language], ...labels };
1057
+ const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
1006
1058
  const getCircularVerticalConfig = () => {
1007
1059
  if (width <= 1600) return { count: 6, spacing: 60, top: 10 };
1008
1060
  return { count: 5, spacing: 60, top: 18 };
@@ -1079,7 +1131,7 @@ var CardTicket = ({
1079
1131
  {
1080
1132
  src: "/assets/logo/asdp-default.svg",
1081
1133
  className: styles.asdpLogo,
1082
- alt: "asdp",
1134
+ alt: mergedLabels.logoAlt,
1083
1135
  height: 56,
1084
1136
  width: 82
1085
1137
  }
@@ -1284,8 +1336,11 @@ var CardTicket = ({
1284
1336
  justifyContent: "end"
1285
1337
  },
1286
1338
  children: [
1287
- "IDR\xA0",
1288
- totalPrice.toLocaleString("id-ID")
1339
+ mergedLabels.currencySymbol,
1340
+ "\xA0",
1341
+ totalPrice.toLocaleString(
1342
+ language === "id" ? "id-ID" : "en-US"
1343
+ )
1289
1344
  ]
1290
1345
  }
1291
1346
  )
@@ -1508,7 +1563,7 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxRuntime.jsxs(
1508
1563
  var BackgroundTicketCardVertical_default = BackgroundTicketCardVertical;
1509
1564
 
1510
1565
  // src/components/CardServiceMenu/CardServiceMenu.constants.ts
1511
- var DEFAULT_LABELS5 = {
1566
+ var DEFAULT_LABELS6 = {
1512
1567
  id: {
1513
1568
  ferryLabel: "Ferry",
1514
1569
  ferryDescription: "Layanan penyeberangan ferry ASDP",
@@ -1519,7 +1574,8 @@ var DEFAULT_LABELS5 = {
1519
1574
  hotelLabel: "Hotel",
1520
1575
  hotelDescription: "Layanan pemesanan hotel",
1521
1576
  otherLabel: "Lainnya",
1522
- otherDescription: "Layanan lainnya"
1577
+ otherDescription: "Layanan lainnya",
1578
+ serviceAriaLabel: "Layanan"
1523
1579
  },
1524
1580
  en: {
1525
1581
  ferryLabel: "Ferry",
@@ -1531,7 +1587,8 @@ var DEFAULT_LABELS5 = {
1531
1587
  hotelLabel: "Hotel",
1532
1588
  hotelDescription: "Hotel Booking Service",
1533
1589
  otherLabel: "Other",
1534
- otherDescription: "Other Services"
1590
+ otherDescription: "Other Services",
1591
+ serviceAriaLabel: "Service"
1535
1592
  }
1536
1593
  };
1537
1594
  var ALIAS_MENU_ITEMS = {
@@ -1657,7 +1714,7 @@ var CardServiceMenu = ({
1657
1714
  labels
1658
1715
  }) => {
1659
1716
  const styles = useStyles6();
1660
- const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
1717
+ const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
1661
1718
  const getMenuItemClass = (serviceId) => {
1662
1719
  const isActive = activeServiceId === serviceId;
1663
1720
  return reactComponents.mergeClasses(styles.menuItem, isActive && styles.menuItemActive);
@@ -1674,6 +1731,7 @@ var CardServiceMenu = ({
1674
1731
  {
1675
1732
  className: getMenuItemClass(item.id),
1676
1733
  onClick: () => onServiceClick?.(item.id),
1734
+ "aria-label": `${mergedLabels.serviceAriaLabel} ${label}`,
1677
1735
  children: [
1678
1736
  /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.logo, alt: label, className: styles.logo }),
1679
1737
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
@@ -1729,68 +1787,83 @@ var DatePickerInput = React5.forwardRef(
1729
1787
  }
1730
1788
  onClick?.(e);
1731
1789
  };
1732
- return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Popover, { open: isOpen, onOpenChange: (_, data) => setIsOpen(data.open), trapFocus: true, children: [
1733
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.PopoverTrigger, { disableButtonEnhancement: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1734
- reactComponents.Input,
1735
- {
1736
- ...restProps,
1737
- value: formatDate(field.value),
1738
- readOnly: true,
1739
- placeholder: placeholder || "Pilih tanggal",
1740
- disabled,
1741
- appearance,
1742
- size,
1743
- contentBefore,
1744
- onClick: handleInputClick,
1745
- style: {
1746
- cursor: disabled ? "not-allowed" : "pointer",
1747
- ...style
1748
- },
1749
- contentAfter: /* @__PURE__ */ jsxRuntime.jsx(
1750
- "div",
1790
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1791
+ reactComponents.Popover,
1792
+ {
1793
+ open: isOpen,
1794
+ onOpenChange: (_, data) => setIsOpen(data.open),
1795
+ trapFocus: true,
1796
+ children: [
1797
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.PopoverTrigger, { disableButtonEnhancement: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1798
+ reactComponents.Input,
1751
1799
  {
1752
- onClick: (e) => {
1753
- e.stopPropagation();
1754
- if (!disabled) {
1755
- setIsOpen(!isOpen);
1756
- }
1757
- },
1800
+ ...restProps,
1801
+ value: formatDate(field.value),
1802
+ readOnly: true,
1803
+ placeholder,
1804
+ disabled,
1805
+ appearance,
1806
+ size,
1807
+ contentBefore,
1808
+ onClick: handleInputClick,
1758
1809
  style: {
1759
1810
  cursor: disabled ? "not-allowed" : "pointer",
1760
- display: "flex",
1761
- alignItems: "center"
1811
+ ...style
1762
1812
  },
1763
- children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:calendar-24-regular" })
1813
+ contentAfter: /* @__PURE__ */ jsxRuntime.jsx(
1814
+ "div",
1815
+ {
1816
+ onClick: (e) => {
1817
+ e.stopPropagation();
1818
+ if (!disabled) {
1819
+ setIsOpen(!isOpen);
1820
+ }
1821
+ },
1822
+ style: {
1823
+ cursor: disabled ? "not-allowed" : "pointer",
1824
+ display: "flex",
1825
+ alignItems: "center"
1826
+ },
1827
+ children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:calendar-24-regular" })
1828
+ }
1829
+ )
1764
1830
  }
1765
- )
1766
- }
1767
- ) }),
1768
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.PopoverSurface, { tabIndex: -1, style: { maxWidth: "530px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
1769
- reactCalendarCompat.Calendar,
1770
- {
1771
- value: dateValue,
1772
- onSelectDate,
1773
- showGoToToday: true,
1774
- highlightSelectedMonth: true,
1775
- showMonthPickerAsOverlay: false,
1776
- maxDate: max ? new Date(max) : void 0
1777
- }
1778
- ) })
1779
- ] });
1831
+ ) }),
1832
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.PopoverSurface, { tabIndex: -1, style: { maxWidth: "530px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
1833
+ reactCalendarCompat.Calendar,
1834
+ {
1835
+ value: dateValue,
1836
+ onSelectDate,
1837
+ showGoToToday: true,
1838
+ highlightSelectedMonth: true,
1839
+ showMonthPickerAsOverlay: false,
1840
+ maxDate: max ? new Date(max) : void 0
1841
+ }
1842
+ ) })
1843
+ ]
1844
+ }
1845
+ );
1780
1846
  }
1781
1847
  );
1782
1848
  DatePickerInput.displayName = "DatePickerInput";
1783
1849
  var DatePickerInput_default = DatePickerInput;
1784
1850
 
1785
1851
  // src/components/InputDynamic/InputDynamic.constants.ts
1786
- var DEFAULT_LABELS6 = {
1852
+ var DEFAULT_LABELS7 = {
1787
1853
  id: {
1788
1854
  emailOrPhonePlaceholder: "Email atau Nomor HP",
1789
1855
  emailPlaceholder: "Email",
1790
1856
  phonePlaceholder: "Nomor HP",
1791
1857
  identityPlaceholder: "Email, KTP, SIM, Passport, atau Nomor Telepon",
1792
1858
  identityPhonePlaceholder: "Nomor telepon",
1793
- identityIdPlaceholder: "KTP, SIM, atau Passport"
1859
+ identityIdPlaceholder: "KTP, SIM, atau Passport",
1860
+ showPasswordAriaLabel: "Tampilkan kata sandi",
1861
+ hidePasswordAriaLabel: "Sembunyikan kata sandi",
1862
+ datePickerPlaceholder: "Pilih tanggal",
1863
+ phoneDefaultPlaceholder: "Nomor telepon",
1864
+ requiredFieldError: "Field ini wajib diisi",
1865
+ invalidEmailError: "Email tidak valid",
1866
+ emailOrPhoneRequiredError: "Email atau nomor HP wajib diisi"
1794
1867
  },
1795
1868
  en: {
1796
1869
  emailOrPhonePlaceholder: "Email or Phone Number",
@@ -1798,7 +1871,14 @@ var DEFAULT_LABELS6 = {
1798
1871
  phonePlaceholder: "Phone Number",
1799
1872
  identityPlaceholder: "Email, ID Card, Driving License, Passport, or Phone Number",
1800
1873
  identityPhonePlaceholder: "Phone Number",
1801
- identityIdPlaceholder: "ID Card, Driving License, or Passport"
1874
+ identityIdPlaceholder: "ID Card, Driving License, or Passport",
1875
+ showPasswordAriaLabel: "Show password",
1876
+ hidePasswordAriaLabel: "Hide password",
1877
+ datePickerPlaceholder: "Select date",
1878
+ phoneDefaultPlaceholder: "Phone number",
1879
+ requiredFieldError: "This field is required",
1880
+ invalidEmailError: "Invalid email",
1881
+ emailOrPhoneRequiredError: "Email or phone number is required"
1802
1882
  }
1803
1883
  };
1804
1884
  var PhoneInput = PhoneInputComponent__default.default.default || PhoneInputComponent__default.default;
@@ -2048,7 +2128,7 @@ var InputDynamic = ({
2048
2128
  labels
2049
2129
  }) => {
2050
2130
  const styles = useStyles7();
2051
- const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
2131
+ const mergedLabels = { ...DEFAULT_LABELS7[language], ...labels };
2052
2132
  const [showPassword, setShowPassword] = React5.useState(false);
2053
2133
  const [isPhoneMode, setIsPhoneMode] = React5.useState(false);
2054
2134
  const [emailOrPhoneType, setEmailOrPhoneType] = React5.useState("none");
@@ -2481,7 +2561,7 @@ var InputDynamic = ({
2481
2561
  const cleanedValue = cleanPhoneValue(value || "");
2482
2562
  field.onChange(cleanedValue);
2483
2563
  },
2484
- placeholder: placeholder || "Nomor telepon",
2564
+ placeholder: placeholder || mergedLabels.phoneDefaultPlaceholder,
2485
2565
  disabled,
2486
2566
  enableSearch: true,
2487
2567
  disableSearchIcon: true
@@ -2522,7 +2602,7 @@ var InputDynamic = ({
2522
2602
  DatePickerInput_default,
2523
2603
  {
2524
2604
  field,
2525
- placeholder,
2605
+ placeholder: placeholder || mergedLabels.datePickerPlaceholder,
2526
2606
  disabled,
2527
2607
  appearance: error ? "outline" : appearance,
2528
2608
  size,
@@ -2617,7 +2697,7 @@ var InputDynamic = ({
2617
2697
  {
2618
2698
  appearance: "transparent",
2619
2699
  icon: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:eye-off-24-filled" }) : /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:eye-24-filled" }),
2620
- "aria-label": showPassword ? "Hide password" : "Show password",
2700
+ "aria-label": showPassword ? mergedLabels.hidePasswordAriaLabel : mergedLabels.showPasswordAriaLabel,
2621
2701
  onClick: () => setShowPassword(!showPassword),
2622
2702
  tabIndex: -1,
2623
2703
  type: "button"
@@ -2782,7 +2862,7 @@ var InputDynamic = ({
2782
2862
  const getValidationRules = () => {
2783
2863
  const rules = {};
2784
2864
  if (required) {
2785
- rules.required = validationRules?.required || "Field ini wajib diisi";
2865
+ rules.required = validationRules?.required || mergedLabels.requiredFieldError;
2786
2866
  }
2787
2867
  if (validationRules?.minLength) {
2788
2868
  rules.minLength = validationRules.minLength;
@@ -2805,13 +2885,13 @@ var InputDynamic = ({
2805
2885
  if (type === "email") {
2806
2886
  rules.pattern = {
2807
2887
  value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
2808
- message: "Email tidak valid"
2888
+ message: mergedLabels.invalidEmailError
2809
2889
  };
2810
2890
  }
2811
2891
  if (type === "emailOrPhone") {
2812
2892
  rules.validate = (value) => {
2813
2893
  if (required && !value) {
2814
- return "Email atau nomor HP wajib diisi";
2894
+ return mergedLabels.emailOrPhoneRequiredError;
2815
2895
  }
2816
2896
  const stringValue = typeof value === "string" ? value : "";
2817
2897
  if (!stringValue) return true;
@@ -3146,7 +3226,7 @@ var DEFAULT_COUNTRY_CODES = [
3146
3226
  ];
3147
3227
 
3148
3228
  // src/components/CardTicketSearch/CardTicketSearch.constants.ts
3149
- var DEFAULT_LABELS7 = {
3229
+ var DEFAULT_LABELS8 = {
3150
3230
  id: {
3151
3231
  fromLabel: "Dari",
3152
3232
  toLabel: "Ke",
@@ -3163,7 +3243,17 @@ var DEFAULT_LABELS7 = {
3163
3243
  placeholderReturnDate: "Pilih Tanggal Kepulangan",
3164
3244
  placeholderTypeClass: "Pilih Kelas Layanan",
3165
3245
  placeholderTypeService: "Pilih Jenis Layanan",
3166
- placeholderPassenger: "Pilih Jumlah Penumpang"
3246
+ placeholderPassenger: "Pilih Jumlah Penumpang",
3247
+ errorOriginRequired: "Pelabuhan asal wajib diisi",
3248
+ errorDestinationRequired: "Pelabuhan tujuan wajib diisi",
3249
+ errorDepartureDateRequired: "Tanggal Berangkat wajib diisi",
3250
+ errorReturnDateRequired: "Tanggal Pulang wajib diisi",
3251
+ switchAriaLabel: "Tukar asal dan tujuan",
3252
+ ferryDescription: "Layanan Penyeberangan Ferry ASDP",
3253
+ ifcsDescription: "Sistem Kontrol Ferry Terintegrasi",
3254
+ skptDescription: "Sistem Tiket Penumpang Terintegrasi",
3255
+ hotelDescription: "Layanan Pemesanan Hotel",
3256
+ otherDescription: "Layanan Lainnya"
3167
3257
  },
3168
3258
  en: {
3169
3259
  fromLabel: "From",
@@ -3181,7 +3271,17 @@ var DEFAULT_LABELS7 = {
3181
3271
  placeholderReturnDate: "Select Return Date",
3182
3272
  placeholderTypeClass: "Select Service Class",
3183
3273
  placeholderTypeService: "Select Service Type",
3184
- placeholderPassenger: "Select Number of Passengers"
3274
+ placeholderPassenger: "Select Number of Passengers",
3275
+ errorOriginRequired: "Origin port is required",
3276
+ errorDestinationRequired: "Destination port is required",
3277
+ errorDepartureDateRequired: "Departure date is required",
3278
+ errorReturnDateRequired: "Return date is required",
3279
+ switchAriaLabel: "Swap origin and destination",
3280
+ ferryDescription: "ASDP Ferry Crossing Service",
3281
+ ifcsDescription: "Integrated Ferry Control System",
3282
+ skptDescription: "Integrated Passenger Ticketing System",
3283
+ hotelDescription: "Hotel Booking Service",
3284
+ otherDescription: "Other Services"
3185
3285
  }
3186
3286
  };
3187
3287
  var useStyles8 = reactComponents.makeStyles({
@@ -3322,7 +3422,7 @@ var CardTicketSearch = ({
3322
3422
  }) => {
3323
3423
  const styles = useStyles8();
3324
3424
  const labels = React5__default.default.useMemo(
3325
- () => ({ ...DEFAULT_LABELS7[language], ...customLabels }),
3425
+ () => ({ ...DEFAULT_LABELS8[language], ...customLabels }),
3326
3426
  [language, customLabels]
3327
3427
  );
3328
3428
  const { control, setValue, getValues, handleSubmit } = reactHookForm.useForm({
@@ -3351,7 +3451,17 @@ var CardTicketSearch = ({
3351
3451
  setValue("serviceClass", serviceClass);
3352
3452
  setValue("typeOfService", typeOfService);
3353
3453
  setValue("passenger", passenger);
3354
- }, [from, to, startDate, endDate, roundTrip, serviceClass, typeOfService, passenger, setValue]);
3454
+ }, [
3455
+ from,
3456
+ to,
3457
+ startDate,
3458
+ endDate,
3459
+ roundTrip,
3460
+ serviceClass,
3461
+ typeOfService,
3462
+ passenger,
3463
+ setValue
3464
+ ]);
3355
3465
  React5__default.default.useEffect(() => {
3356
3466
  if (onRoundTripChange) {
3357
3467
  onRoundTripChange(roundTripValue);
@@ -3428,114 +3538,151 @@ var CardTicketSearch = ({
3428
3538
  children: /* @__PURE__ */ jsxRuntime.jsx("form", { onSubmit: handleSubmit(handleFormSubmit), children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { width: "100%" }, className: styles.formInnerRow, children: [
3429
3539
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 6, xxl: 6, xxxl: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { gap: "16px" }, className: styles.formFieldRow, children: [
3430
3540
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
3431
- /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: [
3432
- /* @__PURE__ */ jsxRuntime.jsx(
3433
- InputDynamic_default,
3434
- {
3435
- name: "from",
3436
- label: labels.fromLabel,
3437
- control,
3438
- type: "text",
3439
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3440
- iconify_js.Icon,
3541
+ /* @__PURE__ */ jsxRuntime.jsxs(
3542
+ reactGridSystem.Col,
3543
+ {
3544
+ xs: 12,
3545
+ sm: 12,
3546
+ md: 12,
3547
+ lg: 12,
3548
+ xl: 12,
3549
+ xxl: 12,
3550
+ xxxl: 12,
3551
+ children: [
3552
+ /* @__PURE__ */ jsxRuntime.jsx(
3553
+ InputDynamic_default,
3441
3554
  {
3442
- icon: "fluent:vehicle-ship-16-filled",
3443
- color: reactComponents.tokens.colorBrandBackground
3555
+ name: "from",
3556
+ label: labels.fromLabel,
3557
+ control,
3558
+ type: "text",
3559
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3560
+ iconify_js.Icon,
3561
+ {
3562
+ icon: "fluent:vehicle-ship-16-filled",
3563
+ color: reactComponents.tokens.colorBrandBackground
3564
+ }
3565
+ ),
3566
+ appearance: "filled-lighter",
3567
+ size: "medium",
3568
+ placeholder: labels.placeholderPort,
3569
+ onClick: onFromClick,
3570
+ onChange: handleFromChange,
3571
+ validationRules: {
3572
+ required: labels.errorOriginRequired
3573
+ },
3574
+ required: true
3444
3575
  }
3445
3576
  ),
3446
- appearance: "filled-lighter",
3447
- size: "medium",
3448
- placeholder: labels.placeholderPort,
3449
- onClick: onFromClick,
3450
- onChange: handleFromChange,
3451
- validationRules: {
3452
- required: "Pelabuhan asal wajib diisi"
3453
- },
3454
- required: true
3455
- }
3456
- ),
3457
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.deviderButton, children: [
3458
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
3459
- " ",
3460
- /* @__PURE__ */ jsxRuntime.jsx(
3461
- reactComponents.Button,
3462
- {
3463
- onClick: onSwitchClick,
3464
- className: styles.buttonSwitch,
3465
- shape: "circular",
3466
- appearance: "secondary",
3467
- size: "large",
3468
- disabled: switchDisabled,
3469
- icon: /* @__PURE__ */ jsxRuntime.jsx(
3470
- "div",
3577
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.deviderButton, children: [
3578
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
3579
+ " ",
3580
+ /* @__PURE__ */ jsxRuntime.jsx(
3581
+ reactComponents.Button,
3471
3582
  {
3472
- className: `${styles.switchIcon} ${isRotating ? styles.switchIconRotate : ""}`,
3473
- children: /* @__PURE__ */ jsxRuntime.jsx(
3474
- "img",
3583
+ onClick: onSwitchClick,
3584
+ className: styles.buttonSwitch,
3585
+ shape: "circular",
3586
+ appearance: "secondary",
3587
+ size: "large",
3588
+ disabled: switchDisabled,
3589
+ "aria-label": labels.switchAriaLabel,
3590
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
3591
+ "div",
3475
3592
  {
3476
- src: "/assets/images/icons/switch.svg",
3477
- alt: "Switch",
3478
- width: 26,
3479
- height: 26
3593
+ className: `${styles.switchIcon} ${isRotating ? styles.switchIconRotate : ""}`,
3594
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3595
+ "img",
3596
+ {
3597
+ src: "/assets/images/icons/switch.svg",
3598
+ alt: labels.switchAriaLabel,
3599
+ width: 26,
3600
+ height: 26
3601
+ }
3602
+ )
3480
3603
  }
3481
3604
  )
3482
3605
  }
3483
3606
  )
3484
- }
3485
- )
3486
- ] })
3487
- ] }),
3488
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3489
- InputDynamic_default,
3607
+ ] })
3608
+ ]
3609
+ }
3610
+ ),
3611
+ /* @__PURE__ */ jsxRuntime.jsx(
3612
+ reactGridSystem.Col,
3490
3613
  {
3491
- name: "to",
3492
- label: labels.toLabel,
3493
- control,
3494
- type: "text",
3495
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3496
- iconify_js.Icon,
3614
+ xs: 12,
3615
+ sm: 12,
3616
+ md: 12,
3617
+ lg: 12,
3618
+ xl: 12,
3619
+ xxl: 12,
3620
+ xxxl: 12,
3621
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3622
+ InputDynamic_default,
3497
3623
  {
3498
- icon: "fluent:location-24-filled",
3499
- color: reactComponents.tokens.colorBrandBackground
3624
+ name: "to",
3625
+ label: labels.toLabel,
3626
+ control,
3627
+ type: "text",
3628
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3629
+ iconify_js.Icon,
3630
+ {
3631
+ icon: "fluent:location-24-filled",
3632
+ color: reactComponents.tokens.colorBrandBackground
3633
+ }
3634
+ ),
3635
+ disabled: toDisabled,
3636
+ appearance: "filled-lighter",
3637
+ size: "medium",
3638
+ placeholder: labels.placeholderDestinationPort,
3639
+ onClick: onToClick,
3640
+ validationRules: {
3641
+ required: labels.errorDestinationRequired
3642
+ },
3643
+ required: true
3500
3644
  }
3501
- ),
3502
- disabled: toDisabled,
3503
- appearance: "filled-lighter",
3504
- size: "medium",
3505
- placeholder: labels.placeholderDestinationPort,
3506
- onClick: onToClick,
3507
- validationRules: {
3508
- required: "Pelabuhan tujuan wajib diisi"
3509
- },
3510
- required: true
3645
+ )
3511
3646
  }
3512
- ) })
3647
+ )
3513
3648
  ] }) }) }),
3514
3649
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%" }, children: [
3515
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 7, sm: 7, md: 7, lg: 7, xl: 7, xxl: 7, xxxl: 7, children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { position: "relative", zIndex: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
3516
- InputDynamic_default,
3650
+ /* @__PURE__ */ jsxRuntime.jsx(
3651
+ reactGridSystem.Col,
3517
3652
  {
3518
- name: "startDate",
3519
- label: labels.departureDateLabel,
3520
- control,
3521
- type: "text",
3522
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3523
- iconify_js.Icon,
3653
+ xs: 7,
3654
+ sm: 7,
3655
+ md: 7,
3656
+ lg: 7,
3657
+ xl: 7,
3658
+ xxl: 7,
3659
+ xxxl: 7,
3660
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { style: { position: "relative", zIndex: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
3661
+ InputDynamic_default,
3524
3662
  {
3525
- icon: "fluent:calendar-24-filled",
3526
- color: reactComponents.tokens.colorBrandBackground
3663
+ name: "startDate",
3664
+ label: labels.departureDateLabel,
3665
+ control,
3666
+ type: "text",
3667
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3668
+ iconify_js.Icon,
3669
+ {
3670
+ icon: "fluent:calendar-24-filled",
3671
+ color: reactComponents.tokens.colorBrandBackground
3672
+ }
3673
+ ),
3674
+ appearance: "filled-lighter",
3675
+ size: "medium",
3676
+ placeholder: labels.placeholderDepartureDate,
3677
+ onClick: onStartDateClick,
3678
+ required: true,
3679
+ validationRules: {
3680
+ required: labels.errorDepartureDateRequired
3681
+ }
3527
3682
  }
3528
- ),
3529
- appearance: "filled-lighter",
3530
- size: "medium",
3531
- placeholder: labels.placeholderDepartureDate,
3532
- onClick: onStartDateClick,
3533
- required: true,
3534
- validationRules: {
3535
- required: "Tanggal Berangkat wajib diisi"
3536
- }
3683
+ ) })
3537
3684
  }
3538
- ) }) }),
3685
+ ),
3539
3686
  showRoundTrip && /* @__PURE__ */ jsxRuntime.jsx(
3540
3687
  reactGridSystem.Col,
3541
3688
  {
@@ -3560,32 +3707,44 @@ var CardTicketSearch = ({
3560
3707
  )
3561
3708
  }
3562
3709
  ),
3563
- roundTripValue && /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3564
- InputDynamic_default,
3710
+ roundTripValue && /* @__PURE__ */ jsxRuntime.jsx(
3711
+ reactGridSystem.Col,
3565
3712
  {
3566
- name: "endDate",
3567
- label: labels.returnDateLabel,
3568
- control,
3569
- type: "text",
3570
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3571
- iconify_js.Icon,
3713
+ xs: 12,
3714
+ sm: 12,
3715
+ md: 12,
3716
+ lg: 12,
3717
+ xl: 12,
3718
+ xxl: 12,
3719
+ xxxl: 12,
3720
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3721
+ InputDynamic_default,
3572
3722
  {
3573
- icon: "fluent:calendar-24-filled",
3574
- color: reactComponents.tokens.colorBrandBackground
3723
+ name: "endDate",
3724
+ label: labels.returnDateLabel,
3725
+ control,
3726
+ type: "text",
3727
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3728
+ iconify_js.Icon,
3729
+ {
3730
+ icon: "fluent:calendar-24-filled",
3731
+ color: reactComponents.tokens.colorBrandBackground
3732
+ }
3733
+ ),
3734
+ appearance: "filled-lighter",
3735
+ size: "medium",
3736
+ placeholder: labels.placeholderReturnDate,
3737
+ onClick: onEndDateClick,
3738
+ disabled: endDateDisabled,
3739
+ style: { borderColor: "transparent" },
3740
+ required: roundTripValue,
3741
+ validationRules: {
3742
+ required: labels.errorReturnDateRequired
3743
+ }
3575
3744
  }
3576
- ),
3577
- appearance: "filled-lighter",
3578
- size: "medium",
3579
- placeholder: labels.placeholderReturnDate,
3580
- onClick: onEndDateClick,
3581
- disabled: endDateDisabled,
3582
- style: { borderColor: "transparent" },
3583
- required: roundTripValue,
3584
- validationRules: {
3585
- required: "Tanggal Pulang wajib diisi"
3586
- }
3745
+ )
3587
3746
  }
3588
- ) })
3747
+ )
3589
3748
  ] }) }) })
3590
3749
  ] }) }),
3591
3750
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Visible, { xl: true, xxl: true, xxxl: true, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -3597,7 +3756,11 @@ var CardTicketSearch = ({
3597
3756
  xl: 1,
3598
3757
  xxl: 1,
3599
3758
  xxxl: 1,
3600
- style: { display: "flex", alignItems: "center", justifyContent: "center" },
3759
+ style: {
3760
+ display: "flex",
3761
+ alignItems: "center",
3762
+ justifyContent: "center"
3763
+ },
3601
3764
  children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, style: { height: "100%" } })
3602
3765
  }
3603
3766
  ) }),
@@ -3617,71 +3780,107 @@ var CardTicketSearch = ({
3617
3780
  className: styles.serviceCol,
3618
3781
  children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: [
3619
3782
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: [
3620
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3621
- InputDynamic_default,
3783
+ /* @__PURE__ */ jsxRuntime.jsx(
3784
+ reactGridSystem.Col,
3622
3785
  {
3623
- name: "serviceClass",
3624
- label: labels.serviceClassLabel,
3625
- control,
3626
- type: "text",
3627
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3628
- iconify_js.Icon,
3786
+ xs: 12,
3787
+ sm: 12,
3788
+ md: 12,
3789
+ lg: 12,
3790
+ xl: 12,
3791
+ xxl: 12,
3792
+ xxxl: 12,
3793
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3794
+ InputDynamic_default,
3629
3795
  {
3630
- icon: "fluent:ribbon-star-24-filled",
3631
- color: reactComponents.tokens.colorBrandBackground
3796
+ name: "serviceClass",
3797
+ label: labels.serviceClassLabel,
3798
+ control,
3799
+ type: "text",
3800
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3801
+ iconify_js.Icon,
3802
+ {
3803
+ icon: "fluent:ribbon-star-24-filled",
3804
+ color: reactComponents.tokens.colorBrandBackground
3805
+ }
3806
+ ),
3807
+ appearance: "filled-lighter",
3808
+ size: "medium",
3809
+ placeholder: labels.placeholderTypeClass,
3810
+ onClick: onServiceClassClick,
3811
+ required: true,
3812
+ disabled: serviceClassDisabled
3632
3813
  }
3633
- ),
3634
- appearance: "filled-lighter",
3635
- size: "medium",
3636
- placeholder: labels.placeholderTypeClass,
3637
- onClick: onServiceClassClick,
3638
- required: true,
3639
- disabled: serviceClassDisabled
3814
+ )
3640
3815
  }
3641
- ) }),
3642
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3643
- InputDynamic_default,
3816
+ ),
3817
+ /* @__PURE__ */ jsxRuntime.jsx(
3818
+ reactGridSystem.Col,
3644
3819
  {
3645
- name: "typeOfService",
3646
- label: labels.typeOfServiceLabel,
3647
- control,
3648
- type: "text",
3649
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3650
- iconify_js.Icon,
3820
+ xs: 12,
3821
+ sm: 12,
3822
+ md: 12,
3823
+ lg: 12,
3824
+ xl: 12,
3825
+ xxl: 12,
3826
+ xxxl: 12,
3827
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3828
+ InputDynamic_default,
3651
3829
  {
3652
- icon: "fluent:apps-list-24-filled",
3653
- color: reactComponents.tokens.colorBrandBackground
3830
+ name: "typeOfService",
3831
+ label: labels.typeOfServiceLabel,
3832
+ control,
3833
+ type: "text",
3834
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3835
+ iconify_js.Icon,
3836
+ {
3837
+ icon: "fluent:apps-list-24-filled",
3838
+ color: reactComponents.tokens.colorBrandBackground
3839
+ }
3840
+ ),
3841
+ appearance: "filled-lighter",
3842
+ size: "medium",
3843
+ placeholder: labels.placeholderTypeService,
3844
+ onClick: onTypeOfServiceClick,
3845
+ required: true,
3846
+ disabled: typeOfServiceDisabled
3654
3847
  }
3655
- ),
3656
- appearance: "filled-lighter",
3657
- size: "medium",
3658
- placeholder: labels.placeholderTypeService,
3659
- onClick: onTypeOfServiceClick,
3660
- required: true,
3661
- disabled: typeOfServiceDisabled
3848
+ )
3662
3849
  }
3663
- ) }),
3664
- showPassengerField && /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3665
- InputDynamic_default,
3850
+ ),
3851
+ showPassengerField && /* @__PURE__ */ jsxRuntime.jsx(
3852
+ reactGridSystem.Col,
3666
3853
  {
3667
- required: true,
3668
- name: "passenger",
3669
- label: labels.passengerLabel,
3670
- control,
3671
- type: "text",
3672
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3673
- iconify_js.Icon,
3854
+ xs: 12,
3855
+ sm: 12,
3856
+ md: 12,
3857
+ lg: 12,
3858
+ xl: 12,
3859
+ xxl: 12,
3860
+ xxxl: 12,
3861
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3862
+ InputDynamic_default,
3674
3863
  {
3675
- icon: "fluent:people-24-filled",
3676
- color: reactComponents.tokens.colorBrandBackground
3864
+ required: true,
3865
+ name: "passenger",
3866
+ label: labels.passengerLabel,
3867
+ control,
3868
+ type: "text",
3869
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
3870
+ iconify_js.Icon,
3871
+ {
3872
+ icon: "fluent:people-24-filled",
3873
+ color: reactComponents.tokens.colorBrandBackground
3874
+ }
3875
+ ),
3876
+ appearance: "filled-lighter",
3877
+ size: "medium",
3878
+ placeholder: labels.placeholderPassenger,
3879
+ onClick: onPassengerClick
3677
3880
  }
3678
- ),
3679
- appearance: "filled-lighter",
3680
- size: "medium",
3681
- placeholder: labels.placeholderPassenger,
3682
- onClick: onPassengerClick
3881
+ )
3683
3882
  }
3684
- ) })
3883
+ )
3685
3884
  ] }) }) }),
3686
3885
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
3687
3886
  reactComponents.Button,
@@ -3708,7 +3907,7 @@ var CardTicketSearch = ({
3708
3907
  };
3709
3908
 
3710
3909
  // src/components/CardTicketSearchSummary/CardTicketSearchSummary.constants.ts
3711
- var DEFAULT_LABELS8 = {
3910
+ var DEFAULT_LABELS9 = {
3712
3911
  id: {
3713
3912
  originHarbor: "Pelabuhan Keberangkatan",
3714
3913
  destinationHarbor: "Pelabuhan Tujuan",
@@ -3716,7 +3915,8 @@ var DEFAULT_LABELS8 = {
3716
3915
  serviceClass: "Kelas Layanan",
3717
3916
  typeOfService: "Jenis Layanan",
3718
3917
  totalPassengers: "Jumlah Penumpang",
3719
- changeSearchButton: "Ganti Pencarian"
3918
+ changeSearchButton: "Ganti Pencarian",
3919
+ swapAriaLabel: "Tukar asal dan tujuan"
3720
3920
  },
3721
3921
  en: {
3722
3922
  originHarbor: "Departure Port",
@@ -3725,7 +3925,8 @@ var DEFAULT_LABELS8 = {
3725
3925
  serviceClass: "Service Class",
3726
3926
  typeOfService: "Service Type",
3727
3927
  totalPassengers: "Total Passengers",
3728
- changeSearchButton: "Change Search"
3928
+ changeSearchButton: "Change Search",
3929
+ swapAriaLabel: "Swap origin and destination"
3729
3930
  }
3730
3931
  };
3731
3932
  var useStyles9 = reactComponents.makeStyles({
@@ -3809,7 +4010,7 @@ var CardTicketSearchSummary = ({
3809
4010
  children
3810
4011
  }) => {
3811
4012
  const styles = useStyles9();
3812
- const mergedLabels = { ...DEFAULT_LABELS8[language], ...labels };
4013
+ const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
3813
4014
  const { width } = useWindowSize();
3814
4015
  const getCircularConfig = () => {
3815
4016
  if (width <= parseInt(extendedTokens.breakpointXs))
@@ -3905,7 +4106,8 @@ var CardTicketSearchSummary = ({
3905
4106
  disabled: true,
3906
4107
  appearance: "secondary",
3907
4108
  size: "medium",
3908
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:arrow-swap-24-filled" })
4109
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:arrow-swap-24-filled" }),
4110
+ "aria-label": mergedLabels.swapAriaLabel
3909
4111
  }
3910
4112
  ) })
3911
4113
  }
@@ -4134,7 +4336,7 @@ var CardTicketSearchSummary = ({
4134
4336
  };
4135
4337
 
4136
4338
  // src/components/ModalSearchHarbor/ModalSearchHarbor.constants.ts
4137
- var DEFAULT_LABELS9 = {
4339
+ var DEFAULT_LABELS10 = {
4138
4340
  id: {
4139
4341
  title: "Pilih Pelabuhan",
4140
4342
  searchPlaceholder: "Cari Pelabuhan...",
@@ -4142,7 +4344,8 @@ var DEFAULT_LABELS9 = {
4142
4344
  clearAllButton: "Hapus Semua",
4143
4345
  allHarborsHeader: "Semua Pelabuhan",
4144
4346
  loadingData: "Memuat data...",
4145
- harborNotFound: "Pelabuhan tidak ditemukan"
4347
+ harborNotFound: "Pelabuhan tidak ditemukan",
4348
+ closeAriaLabel: "Tutup"
4146
4349
  },
4147
4350
  en: {
4148
4351
  title: "Select Harbor",
@@ -4151,7 +4354,8 @@ var DEFAULT_LABELS9 = {
4151
4354
  clearAllButton: "Clear All",
4152
4355
  allHarborsHeader: "All Harbors",
4153
4356
  loadingData: "Loading data...",
4154
- harborNotFound: "Harbor not found"
4357
+ harborNotFound: "Harbor not found",
4358
+ closeAriaLabel: "Close"
4155
4359
  }
4156
4360
  };
4157
4361
  var useStyles10 = reactComponents.makeStyles({
@@ -4286,7 +4490,7 @@ var ModalSearchHarbor = ({
4286
4490
  onClearLastSearched
4287
4491
  }) => {
4288
4492
  const styles = useStyles10();
4289
- const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
4493
+ const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
4290
4494
  const handleSelect = (harbor) => {
4291
4495
  onAddLastSearched(harbor);
4292
4496
  onSelectHarbor(harbor);
@@ -4313,7 +4517,7 @@ var ModalSearchHarbor = ({
4313
4517
  reactComponents.Button,
4314
4518
  {
4315
4519
  appearance: "subtle",
4316
- "aria-label": "close",
4520
+ "aria-label": mergedLabels.closeAriaLabel,
4317
4521
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
4318
4522
  onClick: handleClose,
4319
4523
  className: styles.closeButton
@@ -4434,16 +4638,18 @@ var ModalSearchHarbor = ({
4434
4638
  };
4435
4639
 
4436
4640
  // src/components/ModalSelectDate/ModalSelectDate.constants.ts
4437
- var DEFAULT_LABELS10 = {
4641
+ var DEFAULT_LABELS11 = {
4438
4642
  id: {
4439
4643
  title: "Pilih Tanggal",
4440
4644
  oneWay: "Sekali Jalan",
4441
- roundTrip: "Pulang Pergi"
4645
+ roundTrip: "Pulang Pergi",
4646
+ closeAriaLabel: "Tutup"
4442
4647
  },
4443
4648
  en: {
4444
4649
  title: "Select Date",
4445
4650
  oneWay: "One Way",
4446
- roundTrip: "Round Trip"
4651
+ roundTrip: "Round Trip",
4652
+ closeAriaLabel: "Close"
4447
4653
  }
4448
4654
  };
4449
4655
  var useStyles11 = reactComponents.makeStyles({
@@ -4567,7 +4773,7 @@ var ModalSelectDate = ({
4567
4773
  showRoundtrip = true
4568
4774
  }) => {
4569
4775
  const styles = useStyles11();
4570
- const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
4776
+ const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
4571
4777
  React5.useEffect(() => {
4572
4778
  moment__default.default.locale(language === "id" ? "id" : "en");
4573
4779
  }, [language]);
@@ -4731,7 +4937,7 @@ var ModalSelectDate = ({
4731
4937
  reactComponents.Button,
4732
4938
  {
4733
4939
  appearance: "subtle",
4734
- "aria-label": "close",
4940
+ "aria-label": mergedLabels.closeAriaLabel,
4735
4941
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
4736
4942
  onClick: handleClose,
4737
4943
  className: styles.closeButton
@@ -4790,20 +4996,22 @@ var ModalSelectDate = ({
4790
4996
  };
4791
4997
 
4792
4998
  // src/components/ModalService/ModalService.constants.ts
4793
- var DEFAULT_LABELS11 = {
4999
+ var DEFAULT_LABELS12 = {
4794
5000
  id: {
4795
5001
  title: "Pilih Kelas Layanan",
4796
5002
  loading: "Memuat...",
4797
5003
  error: "Gagal memuat layanan",
4798
5004
  selectAll: "Pilih Semua",
4799
- saveButton: "Simpan"
5005
+ saveButton: "Simpan",
5006
+ closeAriaLabel: "Tutup"
4800
5007
  },
4801
5008
  en: {
4802
5009
  title: "Select Service Class",
4803
5010
  loading: "Loading...",
4804
5011
  error: "Error loading services",
4805
5012
  selectAll: "Select All",
4806
- saveButton: "Save"
5013
+ saveButton: "Save",
5014
+ closeAriaLabel: "Close"
4807
5015
  }
4808
5016
  };
4809
5017
  var useStyles12 = reactComponents.makeStyles({
@@ -4892,7 +5100,7 @@ var ModalService = ({
4892
5100
  isError = false
4893
5101
  }) => {
4894
5102
  const styles = useStyles12();
4895
- const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
5103
+ const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
4896
5104
  const displayTitle = title || mergedLabels.title;
4897
5105
  const [selectedServices, setSelectedServices] = React5.useState(selectedServiceIds);
4898
5106
  React5.useEffect(() => {
@@ -4938,7 +5146,7 @@ var ModalService = ({
4938
5146
  reactComponents.Button,
4939
5147
  {
4940
5148
  appearance: "subtle",
4941
- "aria-label": "close",
5149
+ "aria-label": mergedLabels.closeAriaLabel,
4942
5150
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
4943
5151
  onClick: handleClose,
4944
5152
  className: styles.closeButton
@@ -4998,7 +5206,7 @@ var ModalService = ({
4998
5206
  };
4999
5207
 
5000
5208
  // src/components/ModalTotalPassengers/ModalTotalPassengers.constants.ts
5001
- var DEFAULT_LABELS12 = {
5209
+ var DEFAULT_LABELS13 = {
5002
5210
  id: {
5003
5211
  title: "Pilih Jumlah Penumpang",
5004
5212
  infoMessage: "Anda dapat menambahkan hingga {maxPassengers} penumpang pada golongan kendaraan ini.",
@@ -5006,7 +5214,8 @@ var DEFAULT_LABELS12 = {
5006
5214
  saveButton: "Simpan",
5007
5215
  economy: "Ekonomi",
5008
5216
  business: "Bisnis",
5009
- executive: "Eksekutif"
5217
+ executive: "Eksekutif",
5218
+ closeAriaLabel: "Tutup"
5010
5219
  },
5011
5220
  en: {
5012
5221
  title: "Select Total Passengers",
@@ -5015,7 +5224,8 @@ var DEFAULT_LABELS12 = {
5015
5224
  saveButton: "Save",
5016
5225
  economy: "Economy",
5017
5226
  business: "Business",
5018
- executive: "Executive"
5227
+ executive: "Executive",
5228
+ closeAriaLabel: "Close"
5019
5229
  }
5020
5230
  };
5021
5231
  var DEFAULT_SERVICE_CLASSES = [
@@ -5105,7 +5315,7 @@ var ModalTotalPassengers = ({
5105
5315
  infoMessage
5106
5316
  }) => {
5107
5317
  const styles = useStyles13();
5108
- const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
5318
+ const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
5109
5319
  const [passengers, setPassengers] = React5.useState([]);
5110
5320
  const [openItems, setOpenItems] = React5.useState([]);
5111
5321
  const defaultInfoMessage = mergedLabels.infoMessage.replace(
@@ -5256,7 +5466,7 @@ var ModalTotalPassengers = ({
5256
5466
  reactComponents.Button,
5257
5467
  {
5258
5468
  appearance: "subtle",
5259
- "aria-label": "close",
5469
+ "aria-label": mergedLabels.closeAriaLabel,
5260
5470
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-12-regular" }),
5261
5471
  onClick: onClose
5262
5472
  }
@@ -5370,18 +5580,20 @@ var ModalTotalPassengers = ({
5370
5580
  };
5371
5581
 
5372
5582
  // src/components/ModalTypeOfService/ModalTypeOfService.constants.ts
5373
- var DEFAULT_LABELS13 = {
5583
+ var DEFAULT_LABELS14 = {
5374
5584
  id: {
5375
5585
  title: "Pilih Tipe Layanan",
5376
5586
  cancelButton: "Batal",
5377
5587
  saveButton: "Simpan",
5378
- vehiclesAlt: "kendaraan"
5588
+ vehiclesAlt: "kendaraan",
5589
+ closeAriaLabel: "Tutup"
5379
5590
  },
5380
5591
  en: {
5381
5592
  title: "Select Service Type",
5382
5593
  cancelButton: "Cancel",
5383
5594
  saveButton: "Save",
5384
- vehiclesAlt: "vehicles"
5595
+ vehiclesAlt: "vehicles",
5596
+ closeAriaLabel: "Close"
5385
5597
  }
5386
5598
  };
5387
5599
  var DEFAULT_VEHICLE_ICONS = {
@@ -5451,7 +5663,7 @@ var ModalTypeOfService = ({
5451
5663
  renderImage
5452
5664
  }) => {
5453
5665
  const styles = useStyles14();
5454
- const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
5666
+ const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
5455
5667
  const [selectedServiceTitle, setSelectedServiceTitle] = React5.useState(
5456
5668
  selectedService?.title || ""
5457
5669
  );
@@ -5559,7 +5771,7 @@ var ModalTypeOfService = ({
5559
5771
  reactComponents.Button,
5560
5772
  {
5561
5773
  appearance: "subtle",
5562
- "aria-label": "close",
5774
+ "aria-label": mergedLabels.closeAriaLabel,
5563
5775
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
5564
5776
  onClick: onClose,
5565
5777
  className: styles.closeButton
@@ -5693,6 +5905,37 @@ var ModalTypeOfService = ({
5693
5905
  };
5694
5906
 
5695
5907
  // src/components/SortMenu/SortMenu.constants.ts
5908
+ var DEFAULT_LABELS15 = {
5909
+ id: {
5910
+ filterButtonText: "Filter",
5911
+ sortButtonText: "Urutkan Berdasarkan",
5912
+ clearFiltersText: "{count} Filter Dipilih",
5913
+ recommendation: "Rekomendasi",
5914
+ highestPrice: "Harga Tertinggi",
5915
+ lowestPrice: "Harga Terendah",
5916
+ earliestDeparture: "Keberangkatan Paling Awal",
5917
+ latestDeparture: "Keberangkatan Paling Akhir",
5918
+ resetSortAriaLabel: "Hapus pengurutan"
5919
+ },
5920
+ en: {
5921
+ filterButtonText: "Filter",
5922
+ sortButtonText: "Sort By",
5923
+ clearFiltersText: "{count} Filters Selected",
5924
+ recommendation: "Recommendation",
5925
+ highestPrice: "Highest Price",
5926
+ lowestPrice: "Lowest Price",
5927
+ earliestDeparture: "Earliest Departure",
5928
+ latestDeparture: "Latest Departure",
5929
+ resetSortAriaLabel: "Clear sort"
5930
+ }
5931
+ };
5932
+ var getSortOptions = (labels) => [
5933
+ { value: "rekomendasi", label: labels.recommendation },
5934
+ { value: "harga-tertinggi", label: labels.highestPrice },
5935
+ { value: "harga-terendah", label: labels.lowestPrice },
5936
+ { value: "keberangkatan-paling-awal", label: labels.earliestDeparture },
5937
+ { value: "keberangkatan-paling-akhir", label: labels.latestDeparture }
5938
+ ];
5696
5939
  var DEFAULT_SORT_OPTIONS = [
5697
5940
  { value: "rekomendasi", label: "Rekomendasi" },
5698
5941
  { value: "harga-tertinggi", label: "Harga Tertinggi" },
@@ -5728,17 +5971,50 @@ var useStyles15 = reactComponents.makeStyles({
5728
5971
  }
5729
5972
  });
5730
5973
  var SortMenu = ({
5974
+ language = "id",
5975
+ labels: customLabels,
5731
5976
  value,
5732
5977
  onChange,
5733
5978
  totalActiveFilters = 0,
5734
5979
  onFilterClick,
5735
5980
  onClearFilters,
5736
- sortOptions = DEFAULT_SORT_OPTIONS,
5737
- filterButtonText = "Filter",
5738
- sortButtonText = "Urutkan Berdasarkan",
5739
- clearFiltersText = "{count} Filter Dipilih"
5981
+ sortOptions: customSortOptions,
5982
+ filterButtonText: deprecatedFilterButtonText,
5983
+ sortButtonText: deprecatedSortButtonText,
5984
+ clearFiltersText: deprecatedClearFiltersText
5740
5985
  }) => {
5741
5986
  const styles = useStyles15();
5987
+ const labels = React5__default.default.useMemo(
5988
+ () => ({
5989
+ ...DEFAULT_LABELS15[language],
5990
+ ...customLabels,
5991
+ // Fallback to deprecated props if provided
5992
+ ...deprecatedFilterButtonText && {
5993
+ filterButtonText: deprecatedFilterButtonText
5994
+ },
5995
+ ...deprecatedSortButtonText && {
5996
+ sortButtonText: deprecatedSortButtonText
5997
+ },
5998
+ ...deprecatedClearFiltersText && {
5999
+ clearFiltersText: deprecatedClearFiltersText
6000
+ }
6001
+ }),
6002
+ [
6003
+ language,
6004
+ customLabels,
6005
+ deprecatedFilterButtonText,
6006
+ deprecatedSortButtonText,
6007
+ deprecatedClearFiltersText
6008
+ ]
6009
+ );
6010
+ const sortOptions = React5__default.default.useMemo(
6011
+ () => customSortOptions || getSortOptions(labels),
6012
+ [customSortOptions, labels]
6013
+ );
6014
+ const currentSortLabel = React5__default.default.useMemo(
6015
+ () => sortOptions.find((opt) => opt.value === value)?.label || labels.recommendation,
6016
+ [sortOptions, value, labels.recommendation]
6017
+ );
5742
6018
  const handleReset = () => {
5743
6019
  onChange("rekomendasi");
5744
6020
  };
@@ -5753,7 +6029,7 @@ var SortMenu = ({
5753
6029
  shape: "circular",
5754
6030
  className: styles.button,
5755
6031
  onClick: onFilterClick,
5756
- children: filterButtonText
6032
+ children: labels.filterButtonText
5757
6033
  }
5758
6034
  ),
5759
6035
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Menu, { children: [
@@ -5765,10 +6041,24 @@ var SortMenu = ({
5765
6041
  type: "button",
5766
6042
  shape: "circular",
5767
6043
  className: styles.button,
5768
- children: sortButtonText
6044
+ children: labels.sortButtonText
5769
6045
  }
5770
6046
  ) }),
5771
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MenuPopover, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MenuList, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.RadioGroup, { value, onChange: (_, data) => onChange(data.value), children: sortOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: option.value, label: option.label }, option.value)) }) }) })
6047
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MenuPopover, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MenuList, { children: /* @__PURE__ */ jsxRuntime.jsx(
6048
+ reactComponents.RadioGroup,
6049
+ {
6050
+ value,
6051
+ onChange: (_, data) => onChange(data.value),
6052
+ children: sortOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
6053
+ reactComponents.Radio,
6054
+ {
6055
+ value: option.value,
6056
+ label: option.label
6057
+ },
6058
+ option.value
6059
+ ))
6060
+ }
6061
+ ) }) })
5772
6062
  ] }),
5773
6063
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.divider }),
5774
6064
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -5781,7 +6071,8 @@ var SortMenu = ({
5781
6071
  type: "button",
5782
6072
  shape: "circular",
5783
6073
  className: styles.button,
5784
- children: getSortLabel(value)
6074
+ "aria-label": labels.resetSortAriaLabel,
6075
+ children: currentSortLabel
5785
6076
  }
5786
6077
  ),
5787
6078
  totalActiveFilters > 0 && onClearFilters && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -5796,7 +6087,10 @@ var SortMenu = ({
5796
6087
  onClick: onClearFilters,
5797
6088
  shape: "circular",
5798
6089
  className: styles.button,
5799
- children: clearFiltersText.replace("{count}", totalActiveFilters.toString())
6090
+ children: labels.clearFiltersText.replace(
6091
+ "{count}",
6092
+ totalActiveFilters.toString()
6093
+ )
5800
6094
  }
5801
6095
  )
5802
6096
  ] })
@@ -5804,7 +6098,7 @@ var SortMenu = ({
5804
6098
  };
5805
6099
 
5806
6100
  // src/components/ModalFilterTicket/ModalFilterTicket.constants.ts
5807
- var DEFAULT_LABELS14 = {
6101
+ var DEFAULT_LABELS16 = {
5808
6102
  id: {
5809
6103
  title: "Filter dengan",
5810
6104
  serviceTypeLabel: "Jenis Layanan",
@@ -5818,7 +6112,10 @@ var DEFAULT_LABELS14 = {
5818
6112
  durationLabel: "Durasi perjalanan",
5819
6113
  durationRangeText: (min, max) => `Perjalanan ${min} - ${max} jam`,
5820
6114
  resetButton: "Reset",
5821
- applyButton: "Terapkan"
6115
+ applyButton: "Terapkan",
6116
+ hourUnit: "jam",
6117
+ currencySymbol: "IDR",
6118
+ closeAriaLabel: "Tutup"
5822
6119
  },
5823
6120
  en: {
5824
6121
  title: "Filter by",
@@ -5833,7 +6130,10 @@ var DEFAULT_LABELS14 = {
5833
6130
  durationLabel: "Travel duration",
5834
6131
  durationRangeText: (min, max) => `${min} - ${max} hours trip`,
5835
6132
  resetButton: "Reset",
5836
- applyButton: "Apply"
6133
+ applyButton: "Apply",
6134
+ hourUnit: "hours",
6135
+ currencySymbol: "IDR",
6136
+ closeAriaLabel: "Close"
5837
6137
  }
5838
6138
  };
5839
6139
  var DEFAULT_SERVICE_TYPES = [
@@ -5969,7 +6269,7 @@ var ModalFilterTicket = ({
5969
6269
  maxDuration = DEFAULT_DURATION_RANGE.max
5970
6270
  }) => {
5971
6271
  const styles = useStyles16();
5972
- const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
6272
+ const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
5973
6273
  const [rangeReady, setRangeReady] = React5.useState(false);
5974
6274
  React5.useEffect(() => {
5975
6275
  if (open) {
@@ -6004,7 +6304,9 @@ var ModalFilterTicket = ({
6004
6304
  }
6005
6305
  };
6006
6306
  const formatPrice = (price) => {
6007
- return new Intl.NumberFormat("id-ID").format(price);
6307
+ return new Intl.NumberFormat(language === "id" ? "id-ID" : "en-US").format(
6308
+ price
6309
+ );
6008
6310
  };
6009
6311
  const renderPriceTrack = React5.useCallback(
6010
6312
  ({ props, children }) => {
@@ -6110,7 +6412,7 @@ var ModalFilterTicket = ({
6110
6412
  reactComponents.Button,
6111
6413
  {
6112
6414
  appearance: "subtle",
6113
- "aria-label": "close",
6415
+ "aria-label": mergedLabels.closeAriaLabel,
6114
6416
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
6115
6417
  className: styles.closeButton,
6116
6418
  onClick: () => onOpenChange(false)
@@ -6248,11 +6550,13 @@ var ModalFilterTicket = ({
6248
6550
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.sliderValues, children: [
6249
6551
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
6250
6552
  minDuration,
6251
- " jam"
6553
+ " ",
6554
+ mergedLabels.hourUnit
6252
6555
  ] }),
6253
6556
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
6254
6557
  maxDuration,
6255
- " jam"
6558
+ " ",
6559
+ mergedLabels.hourUnit
6256
6560
  ] })
6257
6561
  ] })
6258
6562
  ] })
@@ -6275,10 +6579,17 @@ var ModalFilterTicket = ({
6275
6579
  };
6276
6580
 
6277
6581
  // src/components/DateFilter/DateFilter.constants.ts
6278
- var DEFAULT_LABELS15 = {
6279
- prevButtonAriaLabel: "Previous dates",
6280
- nextButtonAriaLabel: "Next dates",
6281
- calendarButtonAriaLabel: "Open calendar"
6582
+ var DEFAULT_LABELS17 = {
6583
+ id: {
6584
+ prevButtonAriaLabel: "Tanggal sebelumnya",
6585
+ nextButtonAriaLabel: "Tanggal berikutnya",
6586
+ calendarButtonAriaLabel: "Buka kalender"
6587
+ },
6588
+ en: {
6589
+ prevButtonAriaLabel: "Previous dates",
6590
+ nextButtonAriaLabel: "Next dates",
6591
+ calendarButtonAriaLabel: "Open calendar"
6592
+ }
6282
6593
  };
6283
6594
  var DEFAULT_SCROLL_AMOUNT = 150;
6284
6595
  var useStyles17 = reactComponents.makeStyles({
@@ -6360,11 +6671,15 @@ var DateFilter = ({
6360
6671
  showNavigation = true,
6361
6672
  showCalendarButton = true,
6362
6673
  scrollAmount = DEFAULT_SCROLL_AMOUNT,
6674
+ language = "id",
6363
6675
  labels
6364
6676
  }) => {
6365
6677
  const styles = useStyles17();
6366
6678
  const scrollRef = React5.useRef(null);
6367
- const mergedLabels = { ...DEFAULT_LABELS15, ...labels };
6679
+ const mergedLabels = {
6680
+ ...DEFAULT_LABELS17[language],
6681
+ ...labels
6682
+ };
6368
6683
  const handlePrev = () => {
6369
6684
  scrollRef.current?.scrollBy({ left: -scrollAmount, behavior: "smooth" });
6370
6685
  };
@@ -6422,7 +6737,7 @@ var DateFilter = ({
6422
6737
  };
6423
6738
 
6424
6739
  // src/components/ModalSearchTicket/ModalSearchTicket.constants.ts
6425
- var DEFAULT_LABELS16 = {
6740
+ var DEFAULT_LABELS18 = {
6426
6741
  id: {
6427
6742
  title: "Cari Jadwal Lainnya",
6428
6743
  fromLabel: "Dari",
@@ -6444,7 +6759,8 @@ var DEFAULT_LABELS16 = {
6444
6759
  typeOfServicePlaceholder: "Pilih Jenis penumpang",
6445
6760
  passengerLabel: "Penumpang",
6446
6761
  passengerPlaceholder: "Pilih Penumpang",
6447
- searchButton: "Cari Tiket"
6762
+ searchButton: "Cari Tiket",
6763
+ closeAriaLabel: "Tutup"
6448
6764
  },
6449
6765
  en: {
6450
6766
  title: "Search Other Schedules",
@@ -6467,7 +6783,8 @@ var DEFAULT_LABELS16 = {
6467
6783
  typeOfServicePlaceholder: "Select Type of Passenger",
6468
6784
  passengerLabel: "Passenger",
6469
6785
  passengerPlaceholder: "Select Passenger",
6470
- searchButton: "Search Ticket"
6786
+ searchButton: "Search Ticket",
6787
+ closeAriaLabel: "Close"
6471
6788
  }
6472
6789
  };
6473
6790
  var DEFAULT_FORM_VALUES = {
@@ -6583,7 +6900,7 @@ var ModalSearchTicket = ({
6583
6900
  ...props
6584
6901
  }) => {
6585
6902
  const styles = useStyles18();
6586
- const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
6903
+ const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
6587
6904
  const { control, setValue, handleSubmit, watch } = reactHookForm.useForm({
6588
6905
  defaultValues: {
6589
6906
  ...DEFAULT_FORM_VALUES,
@@ -6637,7 +6954,7 @@ var ModalSearchTicket = ({
6637
6954
  reactComponents.Button,
6638
6955
  {
6639
6956
  appearance: "subtle",
6640
- "aria-label": "close",
6957
+ "aria-label": mergedLabels.closeAriaLabel,
6641
6958
  className: styles.closeButton,
6642
6959
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
6643
6960
  onClick: onClose
@@ -7020,7 +7337,7 @@ var ModalSearchTicket = ({
7020
7337
  };
7021
7338
 
7022
7339
  // src/components/Stepper/Stepper.constants.ts
7023
- var DEFAULT_LABELS17 = {
7340
+ var DEFAULT_LABELS19 = {
7024
7341
  id: {
7025
7342
  stepperBackgroundAlt: "Latar Belakang Stepper",
7026
7343
  ferryIconAlt: "Ikon Kapal"
@@ -7156,7 +7473,7 @@ var Stepper = ({
7156
7473
  labels
7157
7474
  }) => {
7158
7475
  const styles = useStyles19();
7159
- const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
7476
+ const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
7160
7477
  const currentStepIndex = React5.useMemo(() => {
7161
7478
  if (typeof currentStep === "number") {
7162
7479
  return steps.findIndex((step) => step.number === currentStep);
@@ -7212,7 +7529,7 @@ var Stepper = ({
7212
7529
  };
7213
7530
 
7214
7531
  // src/components/CardOrdererInfo/CardOrdererInfo.constants.ts
7215
- var DEFAULT_LABELS18 = {
7532
+ var DEFAULT_LABELS20 = {
7216
7533
  id: {
7217
7534
  title: "Informasi Pemesan",
7218
7535
  ordererName: "Nama Pemesan",
@@ -7257,7 +7574,7 @@ var CardOrdererInfo = ({
7257
7574
  className
7258
7575
  }) => {
7259
7576
  const styles = useStyles20();
7260
- const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
7577
+ const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
7261
7578
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
7262
7579
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { children: mergedLabels.title }),
7263
7580
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
@@ -7278,20 +7595,34 @@ var CardOrdererInfo = ({
7278
7595
  };
7279
7596
 
7280
7597
  // src/components/ModalListPassenger/ModalListPassenger.constants.ts
7281
- var DEFAULT_LABELS19 = {
7598
+ var DEFAULT_LABELS21 = {
7282
7599
  id: {
7283
7600
  title: "Detail Penumpang",
7284
7601
  sameAsOrderer: "Sama Dengan Pemesan",
7285
7602
  searchPlaceholder: "Cari Penumpang",
7286
7603
  addPassengerButton: "Tambah Penumpang",
7287
- cancelButton: "Batal"
7604
+ cancelButton: "Batal",
7605
+ editPassengerAriaLabel: "Edit data penumpang",
7606
+ categories: {
7607
+ adult: "Dewasa",
7608
+ child: "Anak",
7609
+ infant: "Bayi",
7610
+ elderly: "Lansia"
7611
+ }
7288
7612
  },
7289
7613
  en: {
7290
7614
  title: "Passenger Details",
7291
7615
  sameAsOrderer: "Same as Orderer",
7292
7616
  searchPlaceholder: "Search Passenger",
7293
7617
  addPassengerButton: "Add Passenger",
7294
- cancelButton: "Cancel"
7618
+ cancelButton: "Cancel",
7619
+ editPassengerAriaLabel: "Edit passenger data",
7620
+ categories: {
7621
+ adult: "Adult",
7622
+ child: "Child",
7623
+ infant: "Infant",
7624
+ elderly: "Elderly"
7625
+ }
7295
7626
  }
7296
7627
  };
7297
7628
  var useStyles21 = reactComponents.makeStyles({
@@ -7350,7 +7681,7 @@ var ModalListPassenger = ({
7350
7681
  onSameAsOrdererChange
7351
7682
  }) => {
7352
7683
  const styles = useStyles21();
7353
- const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
7684
+ const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
7354
7685
  const displayTitle = title || mergedLabels.title;
7355
7686
  const handleClose = () => {
7356
7687
  onClose();
@@ -7418,20 +7749,31 @@ var ModalListPassenger = ({
7418
7749
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle2, { children: [
7419
7750
  passenger.name,
7420
7751
  " (",
7421
- passenger.category,
7752
+ (() => {
7753
+ const cat = passenger.category?.toUpperCase();
7754
+ if (cat === "ADULT")
7755
+ return mergedLabels.categories.adult;
7756
+ if (cat === "CHILD")
7757
+ return mergedLabels.categories.child;
7758
+ if (cat === "INFANT")
7759
+ return mergedLabels.categories.infant;
7760
+ if (cat === "ELDERLY")
7761
+ return mergedLabels.categories.elderly;
7762
+ return passenger.category;
7763
+ })(),
7422
7764
  ")"
7423
7765
  ] }) }),
7424
7766
  /* @__PURE__ */ jsxRuntime.jsx(
7425
- react.Icon,
7767
+ reactComponents.Button,
7426
7768
  {
7427
- icon: "fluent:chevron-right-24-regular",
7769
+ appearance: "transparent",
7770
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:chevron-right-24-regular" }),
7428
7771
  onClick: (e) => {
7429
7772
  e.preventDefault();
7430
7773
  e.stopPropagation();
7431
7774
  onEditPassenger(passenger);
7432
7775
  },
7433
- width: 20,
7434
- height: 20
7776
+ "aria-label": mergedLabels.editPassengerAriaLabel
7435
7777
  }
7436
7778
  )
7437
7779
  ]
@@ -7467,7 +7809,7 @@ var ModalListPassenger = ({
7467
7809
  };
7468
7810
 
7469
7811
  // src/components/ModalPassengerForm/ModalPassengerForm.constants.ts
7470
- var DEFAULT_LABELS20 = {
7812
+ var DEFAULT_LABELS22 = {
7471
7813
  id: {
7472
7814
  title: "Detail Penumpang",
7473
7815
  titleLabel: "Title",
@@ -7568,9 +7910,9 @@ var ModalPassengerForm = ({
7568
7910
  ticketClassOptions
7569
7911
  }) => {
7570
7912
  const styles = useStyles22();
7571
- const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
7913
+ const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
7572
7914
  const mergedErrors = {
7573
- ...DEFAULT_LABELS20[language].errors,
7915
+ ...DEFAULT_LABELS22[language].errors,
7574
7916
  ...labels?.errors
7575
7917
  };
7576
7918
  const displayTitle = title || mergedLabels.title;
@@ -7770,7 +8112,7 @@ var ModalPassengerForm = ({
7770
8112
  };
7771
8113
 
7772
8114
  // src/components/CardPassengerList/CardPassengerList.constants.ts
7773
- var DEFAULT_LABELS21 = {
8115
+ var DEFAULT_LABELS23 = {
7774
8116
  id: {
7775
8117
  defaultTitle: "Data Penumpang",
7776
8118
  passengerPrefix: "Penumpang"
@@ -7892,7 +8234,7 @@ var CardPassengerList = ({
7892
8234
  className
7893
8235
  }) => {
7894
8236
  const styles = useStyles23();
7895
- const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
8237
+ const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
7896
8238
  const displayTitle = title || mergedLabels.defaultTitle;
7897
8239
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
7898
8240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -7965,7 +8307,7 @@ var CardPassengerList = ({
7965
8307
  };
7966
8308
 
7967
8309
  // src/components/CardVehicleDetail/CardVehicleDetail.constants.ts
7968
- var DEFAULT_LABELS22 = {
8310
+ var DEFAULT_LABELS24 = {
7969
8311
  id: {
7970
8312
  title: "Detail Kendaraan",
7971
8313
  vehicleNumberLabel: "Nomor Kendaraan",
@@ -8023,7 +8365,7 @@ var CardVehicleDetail = ({
8023
8365
  labels
8024
8366
  }) => {
8025
8367
  const styles = useStyles24();
8026
- const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
8368
+ const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
8027
8369
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
8028
8370
  /* @__PURE__ */ jsxRuntime.jsxs(
8029
8371
  "div",
@@ -8083,7 +8425,7 @@ var CardVehicleDetail = ({
8083
8425
  };
8084
8426
 
8085
8427
  // src/components/CardVehicleOwnerForm/CardVehicleOwnerForm.constants.ts
8086
- var DEFAULT_LABELS23 = {
8428
+ var DEFAULT_LABELS25 = {
8087
8429
  id: {
8088
8430
  title: "Informasi Pemilik & Muatan",
8089
8431
  addOwnerButton: "Tambah Pemilik",
@@ -8109,6 +8451,7 @@ var DEFAULT_LABELS23 = {
8109
8451
  cargoReceiverCompanyPlaceholder: "Pilih Nama Perusahaan Penerima Barang",
8110
8452
  cargoReceiverIndividualPlaceholder: "Masukkan Nama Penerima Barang",
8111
8453
  totalWeightLabel: "Berat Muatan dan Kendaraan (Ton)",
8454
+ commentLabel: "Komentar",
8112
8455
  cargoListTitle: "Daftar Muatan",
8113
8456
  cargoItemTitle: "Muatan {index}",
8114
8457
  commodityLabel: "Data Komoditas",
@@ -8129,7 +8472,12 @@ var DEFAULT_LABELS23 = {
8129
8472
  kg: "Kg",
8130
8473
  ton: "Ton",
8131
8474
  unit: "Unit"
8132
- }
8475
+ },
8476
+ pricePlaceholder: "Rp. 0",
8477
+ currencySymbol: "Rp.",
8478
+ deleteOwnerAriaLabel: "Hapus pemilik",
8479
+ decrementQuantityAriaLabel: "Kurangi jumlah",
8480
+ incrementQuantityAriaLabel: "Tambah jumlah"
8133
8481
  },
8134
8482
  en: {
8135
8483
  title: "Owner & Cargo Information",
@@ -8156,6 +8504,7 @@ var DEFAULT_LABELS23 = {
8156
8504
  cargoReceiverCompanyPlaceholder: "Select Cargo Receiver Company",
8157
8505
  cargoReceiverIndividualPlaceholder: "Enter Cargo Receiver Name",
8158
8506
  totalWeightLabel: "Cargo & Vehicle Weight (Ton)",
8507
+ commentLabel: "Comment",
8159
8508
  cargoListTitle: "Cargo List",
8160
8509
  cargoItemTitle: "Cargo {index}",
8161
8510
  commodityLabel: "Commodity Data",
@@ -8176,7 +8525,12 @@ var DEFAULT_LABELS23 = {
8176
8525
  kg: "Kg",
8177
8526
  ton: "Ton",
8178
8527
  unit: "Unit"
8179
- }
8528
+ },
8529
+ pricePlaceholder: "Rp. 0",
8530
+ currencySymbol: "Rp.",
8531
+ deleteOwnerAriaLabel: "Delete owner",
8532
+ decrementQuantityAriaLabel: "Decrease quantity",
8533
+ incrementQuantityAriaLabel: "Increase quantity"
8180
8534
  }
8181
8535
  };
8182
8536
  var useStyles25 = reactComponents.makeStyles({
@@ -8239,7 +8593,7 @@ var CardVehicleOwnerForm = ({
8239
8593
  labels
8240
8594
  }) => {
8241
8595
  const styles = useStyles25();
8242
- const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
8596
+ const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
8243
8597
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
8244
8598
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.header, children: [
8245
8599
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", flex: 1 }, children: [
@@ -8293,6 +8647,7 @@ var CardVehicleOwnerForm = ({
8293
8647
  {
8294
8648
  appearance: "transparent",
8295
8649
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
8650
+ "aria-label": mergedLabels.deleteOwnerAriaLabel,
8296
8651
  onClick: (e) => {
8297
8652
  e.stopPropagation();
8298
8653
  onDeleteOwner(owner.id);
@@ -8759,6 +9114,7 @@ var CardVehicleOwnerForm = ({
8759
9114
  }
8760
9115
  }
8761
9116
  ),
9117
+ "aria-label": mergedLabels.decrementQuantityAriaLabel,
8762
9118
  size: "small",
8763
9119
  onClick: () => {
8764
9120
  const currentVal = getValues(
@@ -8823,6 +9179,7 @@ var CardVehicleOwnerForm = ({
8823
9179
  }
8824
9180
  }
8825
9181
  ),
9182
+ "aria-label": mergedLabels.incrementQuantityAriaLabel,
8826
9183
  size: "small",
8827
9184
  onClick: () => {
8828
9185
  const currentVal = getValues(
@@ -8886,7 +9243,7 @@ var CardVehicleOwnerForm = ({
8886
9243
  {
8887
9244
  control,
8888
9245
  name: `owners.${index}.price`,
8889
- placeholder: "Rp. 0",
9246
+ placeholder: mergedLabels.pricePlaceholder,
8890
9247
  disabled: true,
8891
9248
  size: "large",
8892
9249
  type: "text"
@@ -9014,7 +9371,7 @@ var CardVehicleOwnerForm = ({
9014
9371
  };
9015
9372
 
9016
9373
  // src/components/CardBookingTicket/CardBookingTicket.constants.ts
9017
- var DEFAULT_LABELS24 = {
9374
+ var DEFAULT_LABELS26 = {
9018
9375
  id: {
9019
9376
  bookingDetails: "Booking Details",
9020
9377
  routeTitle: "Rute Perjalanan",
@@ -9024,7 +9381,8 @@ var DEFAULT_LABELS24 = {
9024
9381
  previousButton: "Sebelumnya",
9025
9382
  viewBookingButton: "Lihat Pemesanan",
9026
9383
  changePaymentButton: "Ubah Metode Pembayaran",
9027
- timezoneLabel: "WIB"
9384
+ timezoneLabel: "WIB",
9385
+ currencySymbol: "IDR"
9028
9386
  },
9029
9387
  en: {
9030
9388
  bookingDetails: "Booking Details",
@@ -9035,7 +9393,8 @@ var DEFAULT_LABELS24 = {
9035
9393
  previousButton: "Previous",
9036
9394
  viewBookingButton: "View Booking",
9037
9395
  changePaymentButton: "Change Payment Method",
9038
- timezoneLabel: "WIB"
9396
+ timezoneLabel: "WIB",
9397
+ currencySymbol: "IDR"
9039
9398
  }
9040
9399
  };
9041
9400
  var useStyles26 = reactComponents.makeStyles({
@@ -9171,7 +9530,7 @@ var CardBookingTicket = ({
9171
9530
  className
9172
9531
  }) => {
9173
9532
  const styles = useStyles26();
9174
- const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
9533
+ const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
9175
9534
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.bookingDetail, children: [
9176
9535
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.bookingDetailTop, children: [
9177
9536
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.bookingDetails }),
@@ -9237,7 +9596,8 @@ var CardBookingTicket = ({
9237
9596
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.totalPrice, children: [
9238
9597
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.totalPriceLabel }),
9239
9598
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Title3, { className: styles.priceText, children: [
9240
- "IDR ",
9599
+ mergedLabels.currencySymbol,
9600
+ " ",
9241
9601
  totalPrice
9242
9602
  ] }),
9243
9603
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -9308,7 +9668,7 @@ var CardBookingTicket = ({
9308
9668
  };
9309
9669
 
9310
9670
  // src/components/CardFAQ/CardFAQ.constants.ts
9311
- var DEFAULT_LABELS25 = {
9671
+ var DEFAULT_LABELS27 = {
9312
9672
  id: {
9313
9673
  title: "Pertanyaan yang sering diajukan"
9314
9674
  },
@@ -9387,7 +9747,7 @@ var CardFAQ = ({
9387
9747
  className
9388
9748
  }) => {
9389
9749
  const styles = useStyles27();
9390
- const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
9750
+ const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
9391
9751
  const faqItems = items || DEFAULT_FAQ_ITEMS[language];
9392
9752
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.faqCard, children: [
9393
9753
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.title }),
@@ -9424,18 +9784,20 @@ var CardFAQ = ({
9424
9784
  };
9425
9785
 
9426
9786
  // src/components/CardAddon/CardAddon.constants.ts
9427
- var DEFAULT_LABELS26 = {
9787
+ var DEFAULT_LABELS28 = {
9428
9788
  id: {
9429
9789
  viewDetail: "Lihat detail",
9430
9790
  totalPrice: "Total Harga",
9431
9791
  passengerInsurance: "Asuransi Penumpang",
9432
- removeOrder: "Hapus Pesanan"
9792
+ removeOrder: "Hapus Pesanan",
9793
+ currencySymbol: "Rp"
9433
9794
  },
9434
9795
  en: {
9435
9796
  viewDetail: "View Details",
9436
9797
  totalPrice: "Total Price",
9437
9798
  passengerInsurance: "Passenger Insurance",
9438
- removeOrder: "Remove Order"
9799
+ removeOrder: "Remove Order",
9800
+ currencySymbol: "Rp"
9439
9801
  }
9440
9802
  };
9441
9803
  var useStyles28 = reactComponents.makeStyles({
@@ -9612,7 +9974,7 @@ var CardAddon = ({
9612
9974
  className
9613
9975
  }) => {
9614
9976
  const styles = useStyles28();
9615
- const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
9977
+ const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
9616
9978
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.gapRow, children: [
9617
9979
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.titleDivider, children: [
9618
9980
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { className: styles.textTitle, children: title }),
@@ -9644,8 +10006,11 @@ var CardAddon = ({
9644
10006
  footerData.priceLabel,
9645
10007
  " ",
9646
10008
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Caption1Stronger, { children: [
9647
- "Rp",
9648
- footerData.price.toLocaleString("id-ID"),
10009
+ mergedLabels.currencySymbol,
10010
+ " ",
10011
+ footerData.price.toLocaleString(
10012
+ language === "id" ? "id-ID" : "en-US"
10013
+ ),
9649
10014
  footerData.priceUnit
9650
10015
  ] })
9651
10016
  ] }) }),
@@ -9690,15 +10055,21 @@ var CardAddon = ({
9690
10055
  ")"
9691
10056
  ] }),
9692
10057
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { children: [
9693
- "Rp",
9694
- item.totalPrice.toLocaleString("id-ID")
10058
+ mergedLabels.currencySymbol,
10059
+ " ",
10060
+ item.totalPrice.toLocaleString(
10061
+ language === "id" ? "id-ID" : "en-US"
10062
+ )
9695
10063
  ] })
9696
10064
  ] }, idx)),
9697
10065
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.breakdownRow, children: [
9698
10066
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle2, { children: mergedLabels.totalPrice }),
9699
10067
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle2, { children: [
9700
- "Rp",
9701
- assuranceData.totalPrice.toLocaleString("id-ID")
10068
+ mergedLabels.currencySymbol,
10069
+ " ",
10070
+ assuranceData.totalPrice.toLocaleString(
10071
+ language === "id" ? "id-ID" : "en-US"
10072
+ )
9702
10073
  ] })
9703
10074
  ] })
9704
10075
  ] })
@@ -9718,13 +10089,20 @@ var CardAddon = ({
9718
10089
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: item.name }),
9719
10090
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.mealDescription, children: item.description }),
9720
10091
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1Strong, { className: styles.mealPriceInfo, children: [
9721
- "Rp",
9722
- item.price.toLocaleString("id-ID"),
9723
- " x ",
10092
+ mergedLabels.currencySymbol,
10093
+ " ",
10094
+ item.price.toLocaleString(
10095
+ language === "id" ? "id-ID" : "en-US"
10096
+ ),
10097
+ " ",
10098
+ "x ",
9724
10099
  item.quantity,
10100
+ " = ",
10101
+ mergedLabels.currencySymbol,
9725
10102
  " ",
9726
- "= Rp",
9727
- (item.price * item.quantity).toLocaleString("id-ID")
10103
+ (item.price * item.quantity).toLocaleString(
10104
+ language === "id" ? "id-ID" : "en-US"
10105
+ )
9728
10106
  ] })
9729
10107
  ] }),
9730
10108
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.mealActions, children: [
@@ -9779,8 +10157,11 @@ var CardAddon = ({
9779
10157
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.totalContainer, children: [
9780
10158
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle2, { children: footerData.priceLabel }),
9781
10159
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle1, { style: { fontSize: reactComponents.tokens.fontSizeBase600 }, children: [
9782
- "Rp. ",
9783
- footerData.price.toLocaleString("id-ID")
10160
+ mergedLabels.currencySymbol,
10161
+ " ",
10162
+ footerData.price.toLocaleString(
10163
+ language === "id" ? "id-ID" : "en-US"
10164
+ )
9784
10165
  ] })
9785
10166
  ] }),
9786
10167
  /* @__PURE__ */ jsxRuntime.jsx("div", { style: { width: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -9804,12 +10185,18 @@ var CardAddon = ({
9804
10185
  };
9805
10186
 
9806
10187
  // src/components/CardMealCatalog/CardMealCatalog.constants.ts
9807
- var DEFAULT_LABELS27 = {
10188
+ var DEFAULT_LABELS29 = {
9808
10189
  id: {
9809
- addButton: "Tambah"
10190
+ addButton: "Tambah",
10191
+ currencySymbol: "Rp",
10192
+ decrementAriaLabel: "Kurangi jumlah",
10193
+ incrementAriaLabel: "Tambah jumlah"
9810
10194
  },
9811
10195
  en: {
9812
- addButton: "Add"
10196
+ addButton: "Add",
10197
+ currencySymbol: "Rp",
10198
+ decrementAriaLabel: "Decrease quantity",
10199
+ incrementAriaLabel: "Increase quantity"
9813
10200
  }
9814
10201
  };
9815
10202
  var useStyles29 = reactComponents.makeStyles({
@@ -9952,7 +10339,7 @@ var CardMealCatalog = ({
9952
10339
  className
9953
10340
  }) => {
9954
10341
  const styles = useStyles29();
9955
- const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
10342
+ const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
9956
10343
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
9957
10344
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.banner, children: [
9958
10345
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.bannerOverlay }),
@@ -10001,8 +10388,11 @@ var CardMealCatalog = ({
10001
10388
  ] }),
10002
10389
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.productFooter, children: [
10003
10390
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: styles.price, children: [
10004
- "Rp",
10005
- item.price.toLocaleString("id-ID")
10391
+ mergedLabels.currencySymbol,
10392
+ " ",
10393
+ item.price.toLocaleString(
10394
+ language === "id" ? "id-ID" : "en-US"
10395
+ )
10006
10396
  ] }),
10007
10397
  item.quantity > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.quantitySelector, children: [
10008
10398
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -10010,16 +10400,18 @@ var CardMealCatalog = ({
10010
10400
  {
10011
10401
  size: "small",
10012
10402
  shape: "circular",
10403
+ "aria-label": mergedLabels.decrementAriaLabel,
10013
10404
  icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.SubtractRegular, {}),
10014
10405
  onClick: () => onUpdateQuantity(item.id, -1)
10015
10406
  }
10016
10407
  ),
10017
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: item.quantity }),
10408
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { "aria-live": "polite", children: item.quantity }),
10018
10409
  /* @__PURE__ */ jsxRuntime.jsx(
10019
10410
  reactComponents.Button,
10020
10411
  {
10021
10412
  size: "small",
10022
10413
  shape: "circular",
10414
+ "aria-label": mergedLabels.incrementAriaLabel,
10023
10415
  icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.AddRegular, {}),
10024
10416
  onClick: () => onUpdateQuantity(item.id, 1)
10025
10417
  }
@@ -10042,9 +10434,13 @@ var CardMealCatalog = ({
10042
10434
  };
10043
10435
 
10044
10436
  // src/components/CardReview/CardReview.constants.ts
10045
- var DEFAULT_LABELS28 = {
10046
- id: {},
10047
- en: {}
10437
+ var DEFAULT_LABELS30 = {
10438
+ id: {
10439
+ defaultTitle: "Tinjauan"
10440
+ },
10441
+ en: {
10442
+ defaultTitle: "Review"
10443
+ }
10048
10444
  };
10049
10445
  var useStyles30 = reactComponents.makeStyles({
10050
10446
  card: {
@@ -10098,10 +10494,10 @@ var CardReview = ({
10098
10494
  headerAction
10099
10495
  }) => {
10100
10496
  const styles = useStyles30();
10101
- ({ ...DEFAULT_LABELS28[language], ...labels });
10497
+ const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
10102
10498
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
10103
10499
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
10104
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: title }),
10500
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: title || mergedLabels.defaultTitle }),
10105
10501
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.headerLine }),
10106
10502
  headerAction && /* @__PURE__ */ jsxRuntime.jsx("div", { children: headerAction })
10107
10503
  ] }),
@@ -10145,7 +10541,7 @@ var CardReview = ({
10145
10541
  };
10146
10542
 
10147
10543
  // src/components/CardReviewPassenger/CardReviewPassenger.constants.ts
10148
- var DEFAULT_LABELS29 = {
10544
+ var DEFAULT_LABELS31 = {
10149
10545
  id: {
10150
10546
  title: "Penumpang",
10151
10547
  idNumber: "Nomor ID"
@@ -10254,7 +10650,7 @@ var CardReviewPassenger = ({
10254
10650
  className
10255
10651
  }) => {
10256
10652
  const styles = useStyles31();
10257
- const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
10653
+ const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
10258
10654
  const displayTitle = title || mergedLabels.title;
10259
10655
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
10260
10656
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -10297,7 +10693,7 @@ var CardReviewPassenger = ({
10297
10693
  };
10298
10694
 
10299
10695
  // src/components/CardPriceDetails/CardPriceDetails.constants.ts
10300
- var DEFAULT_LABELS30 = {
10696
+ var DEFAULT_LABELS32 = {
10301
10697
  id: {
10302
10698
  defaultTitle: "Rincian Harga",
10303
10699
  totalPayment: "Total Pembayaran",
@@ -10309,7 +10705,7 @@ var DEFAULT_LABELS30 = {
10309
10705
  "Tiket akan hangus (expired) apabila Anda belum Masuk Pelabuhan (Check-In) hingga melewati batas waktu jadwal Masuk Pelabuhan yang Anda pilih."
10310
10706
  ],
10311
10707
  agreementInfo: "Dengan menekan tombol \u201CLanjutkan Pembayaran\u201D, maka saya telah membaca dan menyetujui :",
10312
- agreementLinkFerizy: "Syarat & Ketentuan",
10708
+ agreementLinkFerizy: "Syarat & Ketentuan Ferizy",
10313
10709
  agreementCovidInfo: "Ketentuan persyaratan menyeberang sesuai dengan\xA0",
10314
10710
  agreementCovidLink: "Surat Edaran Satgas Covid-19 Nomor 23 Tahun 2022.",
10315
10711
  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.",
@@ -10359,10 +10755,7 @@ var PriceDetailsTerms = ({
10359
10755
  const linkColor = reactComponents.tokens.colorBrandBackground;
10360
10756
  const bookingTerms = labels.bookingTerms;
10361
10757
  const agreementTerms = [
10362
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10363
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/terms-and-conditions", style: { color: linkColor }, children: labels.agreementLinkFerizy }),
10364
- "\xA0Ferizy."
10365
- ] }),
10758
+ /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/terms-and-conditions", style: { color: linkColor }, children: labels.agreementLinkFerizy }) }),
10366
10759
  /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10367
10760
  labels.agreementCovidInfo,
10368
10761
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/surat-edaran-satgas-covid-19", style: { color: linkColor }, children: labels.agreementCovidLink })
@@ -10456,7 +10849,7 @@ var CardPriceDetails = ({
10456
10849
  labels
10457
10850
  }) => {
10458
10851
  const styles = useStyles33();
10459
- const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
10852
+ const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
10460
10853
  const displayTitle = title || mergedLabels.defaultTitle;
10461
10854
  const getVariantClass = (variant) => {
10462
10855
  switch (variant) {
@@ -10476,10 +10869,10 @@ var CardPriceDetails = ({
10476
10869
  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 }),
10477
10870
  isTaxLike ? /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1Strong, { className: reactComponents.mergeClasses(styles.value, variantClass), children: [
10478
10871
  mergedLabels.currencyPrefix,
10479
- item.price.toLocaleString("id-ID")
10872
+ item.price.toLocaleString(language === "id" ? "id-ID" : "en-US")
10480
10873
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Body1, { className: reactComponents.mergeClasses(styles.value, variantClass), children: [
10481
10874
  item.isRedeem ? "-" : mergedLabels.currencyPrefix,
10482
- item.price.toLocaleString("id-ID")
10875
+ item.price.toLocaleString(language === "id" ? "id-ID" : "en-US")
10483
10876
  ] })
10484
10877
  ] }),
10485
10878
  item.description && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { className: styles.description, children: item.description })
@@ -10505,7 +10898,7 @@ var CardPriceDetails = ({
10505
10898
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.totalLabel, children: mergedLabels.totalPayment }),
10506
10899
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle1, { className: styles.totalValue, children: [
10507
10900
  mergedLabels.currencyPrefix,
10508
- total.toLocaleString("id-ID")
10901
+ total.toLocaleString(language === "id" ? "id-ID" : "en-US")
10509
10902
  ] })
10510
10903
  ] }),
10511
10904
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
@@ -10515,9 +10908,13 @@ var CardPriceDetails = ({
10515
10908
  };
10516
10909
 
10517
10910
  // src/components/CardPaymentMethodList/CardPaymentMethodList.constants.ts
10518
- var DEFAULT_LABELS31 = {
10519
- id: {},
10520
- en: {}
10911
+ var DEFAULT_LABELS33 = {
10912
+ id: {
10913
+ selectAriaLabel: "Pilih metode pembayaran"
10914
+ },
10915
+ en: {
10916
+ selectAriaLabel: "Select payment method"
10917
+ }
10521
10918
  };
10522
10919
  var useStyles34 = reactComponents.makeStyles({
10523
10920
  container: {
@@ -10580,7 +10977,7 @@ var CardPaymentMethodList = ({
10580
10977
  onSelect
10581
10978
  }) => {
10582
10979
  const styles = useStyles34();
10583
- ({ ...DEFAULT_LABELS31[language], ...labels });
10980
+ const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
10584
10981
  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: [
10585
10982
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) }),
10586
10983
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { multiple: true, collapsible: true, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.AccordionItem, { value: category.value, children: [
@@ -10616,7 +11013,8 @@ var CardPaymentMethodList = ({
10616
11013
  onChange: () => onSelect(option.value),
10617
11014
  value: option.value,
10618
11015
  name: "payment-method",
10619
- disabled: option.disabled
11016
+ disabled: option.disabled,
11017
+ "aria-label": `${mergedLabels.selectAriaLabel} ${option.label}`
10620
11018
  }
10621
11019
  )
10622
11020
  ]
@@ -10628,7 +11026,7 @@ var CardPaymentMethodList = ({
10628
11026
  };
10629
11027
 
10630
11028
  // src/components/CardPaymentGuide/CardPaymentGuide.constants.ts
10631
- var DEFAULT_LABELS32 = {
11029
+ var DEFAULT_LABELS34 = {
10632
11030
  id: {
10633
11031
  title: "Cara Pembayaran"
10634
11032
  },
@@ -10674,7 +11072,7 @@ var CardPaymentGuide = ({
10674
11072
  className
10675
11073
  }) => {
10676
11074
  const styles = useStyles35();
10677
- const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
11075
+ const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
10678
11076
  const displayTitle = title || mergedLabels.title;
10679
11077
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
10680
11078
  title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.title, children: displayTitle }) }),
@@ -10693,20 +11091,22 @@ var CardPaymentGuide = ({
10693
11091
  };
10694
11092
 
10695
11093
  // src/components/CardPaymentInfo/CardPaymentInfo.constants.ts
10696
- var DEFAULT_LABELS33 = {
11094
+ var DEFAULT_LABELS35 = {
10697
11095
  id: {
10698
11096
  expiryPrefix: "Kode virtual akun berlaku sampai",
10699
11097
  copyCodeButton: "Salin Kode",
10700
11098
  totalPayment: "Total Pembayaran",
10701
11099
  checkStatusInfo: "Klik tombol dibawah ini jika sudah melakukan pembayaran",
10702
- checkStatusButton: "Cek Status Pembayaran"
11100
+ checkStatusButton: "Cek Status Pembayaran",
11101
+ currencySymbol: "Rp."
10703
11102
  },
10704
11103
  en: {
10705
11104
  expiryPrefix: "Virtual account code valid until",
10706
11105
  copyCodeButton: "Copy Code",
10707
11106
  totalPayment: "Total Payment",
10708
11107
  checkStatusInfo: "Click the button below if you have made the payment",
10709
- checkStatusButton: "Check Payment Status"
11108
+ checkStatusButton: "Check Payment Status",
11109
+ currencySymbol: "Rp."
10710
11110
  }
10711
11111
  };
10712
11112
  var useStyles36 = reactComponents.makeStyles({
@@ -10792,7 +11192,7 @@ var CardPaymentInfo = ({
10792
11192
  onCheckStatus
10793
11193
  }) => {
10794
11194
  const styles = useStyles36();
10795
- const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
11195
+ const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
10796
11196
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
10797
11197
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
10798
11198
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.expiryPrefix }),
@@ -10827,7 +11227,7 @@ var CardPaymentInfo = ({
10827
11227
  reactComponents.Input,
10828
11228
  {
10829
11229
  disabled: true,
10830
- value: `Rp. ${totalAmount.toLocaleString("id-ID")}`,
11230
+ value: `${mergedLabels.currencySymbol} ${totalAmount.toLocaleString(language === "id" ? "id-ID" : "en-US")}`,
10831
11231
  className: styles.input
10832
11232
  }
10833
11233
  )
@@ -10853,7 +11253,7 @@ var CardPaymentInfo = ({
10853
11253
  };
10854
11254
 
10855
11255
  // src/components/CardStatusOrder/CardStatusOrder.constants.ts
10856
- var DEFAULT_LABELS34 = {
11256
+ var DEFAULT_LABELS36 = {
10857
11257
  id: {
10858
11258
  detailTitle: "Detail Pemesanan",
10859
11259
  statusLabel: "Status",
@@ -10865,7 +11265,8 @@ var DEFAULT_LABELS34 = {
10865
11265
  viewTicketButton: "Lihat E-Tiket",
10866
11266
  defaultStatus: "Sudah Dibayar",
10867
11267
  defaultTitle: "Pembayaran berhasil",
10868
- defaultDescription: "Tiket Anda aktif dan siap digunakan."
11268
+ defaultDescription: "Tiket Anda aktif dan siap digunakan.",
11269
+ illustrationAlt: "Ilustrasi E-Tiket"
10869
11270
  },
10870
11271
  en: {
10871
11272
  detailTitle: "Booking Details",
@@ -10878,7 +11279,8 @@ var DEFAULT_LABELS34 = {
10878
11279
  viewTicketButton: "View E-Ticket",
10879
11280
  defaultStatus: "Paid",
10880
11281
  defaultTitle: "Payment successful",
10881
- defaultDescription: "Your ticket is active and ready to use."
11282
+ defaultDescription: "Your ticket is active and ready to use.",
11283
+ illustrationAlt: "E-Ticket Illustration"
10882
11284
  }
10883
11285
  };
10884
11286
  var useStyles37 = reactComponents.makeStyles({
@@ -10952,7 +11354,7 @@ var CardStatusOrder = ({
10952
11354
  className
10953
11355
  }) => {
10954
11356
  const styles = useStyles37();
10955
- const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
11357
+ const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
10956
11358
  const displayStatus = statusLabel || mergedLabels.defaultStatus;
10957
11359
  const displayTitle = title || mergedLabels.defaultTitle;
10958
11360
  const displayDescription = description || mergedLabels.defaultDescription;
@@ -10962,7 +11364,7 @@ var CardStatusOrder = ({
10962
11364
  "img",
10963
11365
  {
10964
11366
  src: illustrationUrl,
10965
- alt: "E-Ticket",
11367
+ alt: mergedLabels.illustrationAlt,
10966
11368
  width: 406,
10967
11369
  height: 266
10968
11370
  }
@@ -11049,7 +11451,7 @@ var CardStatusOrder = ({
11049
11451
  };
11050
11452
 
11051
11453
  // src/components/ModalPriceDetail/ModalPriceDetail.constants.ts
11052
- var DEFAULT_LABELS35 = {
11454
+ var DEFAULT_LABELS37 = {
11053
11455
  id: {
11054
11456
  title: "Rincian Harga",
11055
11457
  addonHeader: "Add On",
@@ -11059,7 +11461,8 @@ var DEFAULT_LABELS35 = {
11059
11461
  ppnNote: "*PPN 11% dikenakan untuk biaya layanan dan biaya admin",
11060
11462
  grandTotalLabel: "Total Pembayaran",
11061
11463
  currencyPrefix: "Rp.",
11062
- currencyCode: "IDR."
11464
+ currencyCode: "IDR.",
11465
+ closeAriaLabel: "Tutup"
11063
11466
  },
11064
11467
  en: {
11065
11468
  title: "Price Details",
@@ -11070,7 +11473,8 @@ var DEFAULT_LABELS35 = {
11070
11473
  ppnNote: "*VAT 11% is charged for service fees and admin fees",
11071
11474
  grandTotalLabel: "Total Payment",
11072
11475
  currencyPrefix: "Rp.",
11073
- currencyCode: "IDR."
11476
+ currencyCode: "IDR.",
11477
+ closeAriaLabel: "Close"
11074
11478
  }
11075
11479
  };
11076
11480
  var useStyles38 = reactComponents.makeStyles({
@@ -11201,7 +11605,7 @@ var ModalPriceDetail = ({
11201
11605
  ...props
11202
11606
  }) => {
11203
11607
  const styles = useStyles38();
11204
- const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
11608
+ const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
11205
11609
  return /* @__PURE__ */ jsxRuntime.jsx(
11206
11610
  reactComponents.Dialog,
11207
11611
  {
@@ -11217,7 +11621,7 @@ var ModalPriceDetail = ({
11217
11621
  reactComponents.Button,
11218
11622
  {
11219
11623
  appearance: "subtle",
11220
- "aria-label": "close",
11624
+ "aria-label": mergedLabels.closeAriaLabel,
11221
11625
  icon: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
11222
11626
  "path",
11223
11627
  {
@@ -11251,7 +11655,9 @@ var ModalPriceDetail = ({
11251
11655
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
11252
11656
  mergedLabels.currencyPrefix,
11253
11657
  " ",
11254
- item.price.toLocaleString("id-ID")
11658
+ item.price.toLocaleString(
11659
+ language === "id" ? "id-ID" : "en-US"
11660
+ )
11255
11661
  ] })
11256
11662
  ] }),
11257
11663
  item.list && item.list.map((subItem) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -11263,7 +11669,9 @@ var ModalPriceDetail = ({
11263
11669
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { float: "right" }, children: [
11264
11670
  mergedLabels.currencyCode,
11265
11671
  " ",
11266
- item.price.toLocaleString("id-ID")
11672
+ item.price.toLocaleString(
11673
+ language === "id" ? "id-ID" : "en-US"
11674
+ )
11267
11675
  ] })
11268
11676
  ]
11269
11677
  },
@@ -11277,7 +11685,9 @@ var ModalPriceDetail = ({
11277
11685
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.priceValue, children: [
11278
11686
  mergedLabels.currencyCode,
11279
11687
  " ",
11280
- item.price.toLocaleString("id-ID")
11688
+ item.price.toLocaleString(
11689
+ language === "id" ? "id-ID" : "en-US"
11690
+ )
11281
11691
  ] })
11282
11692
  ] }, item.key))
11283
11693
  ] }),
@@ -11286,14 +11696,18 @@ var ModalPriceDetail = ({
11286
11696
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalLabel, children: mergedLabels.subTotalLabel }),
11287
11697
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalValue, children: [
11288
11698
  mergedLabels.currencyCode,
11289
- subTotal.toLocaleString("id-ID")
11699
+ subTotal.toLocaleString(
11700
+ language === "id" ? "id-ID" : "en-US"
11701
+ )
11290
11702
  ] })
11291
11703
  ] }),
11292
11704
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.row, children: [
11293
11705
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.totalTagihanLabel, children: mergedLabels.totalTagihanLabel }),
11294
11706
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.totalTagihanValue, children: [
11295
11707
  mergedLabels.currencyCode,
11296
- subTotal.toLocaleString("id-ID")
11708
+ subTotal.toLocaleString(
11709
+ language === "id" ? "id-ID" : "en-US"
11710
+ )
11297
11711
  ] })
11298
11712
  ] }),
11299
11713
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginTop: reactComponents.tokens.spacingVerticalL }, children: [
@@ -11301,7 +11715,9 @@ var ModalPriceDetail = ({
11301
11715
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.ppnLabel, children: mergedLabels.ppnLabel }),
11302
11716
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.ppnValue, children: [
11303
11717
  mergedLabels.currencyCode,
11304
- taxAmount.toLocaleString("id-ID")
11718
+ taxAmount.toLocaleString(
11719
+ language === "id" ? "id-ID" : "en-US"
11720
+ )
11305
11721
  ] })
11306
11722
  ] }),
11307
11723
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.ppnNote, children: mergedLabels.ppnNote })
@@ -11315,7 +11731,9 @@ var ModalPriceDetail = ({
11315
11731
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.grandTotalLabel, children: mergedLabels.grandTotalLabel }),
11316
11732
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.grandTotalValue, children: [
11317
11733
  mergedLabels.currencyPrefix,
11318
- grandTotal.toLocaleString("id-ID")
11734
+ grandTotal.toLocaleString(
11735
+ language === "id" ? "id-ID" : "en-US"
11736
+ )
11319
11737
  ] })
11320
11738
  ]
11321
11739
  }
@@ -11327,7 +11745,7 @@ var ModalPriceDetail = ({
11327
11745
  };
11328
11746
 
11329
11747
  // src/components/CardProfileMenu/CardProfileMenu.constants.ts
11330
- var DEFAULT_LABELS36 = {
11748
+ var DEFAULT_LABELS38 = {
11331
11749
  id: {},
11332
11750
  en: {}
11333
11751
  };
@@ -11390,7 +11808,7 @@ var CardProfileMenu = ({
11390
11808
  onTabSelect
11391
11809
  }) => {
11392
11810
  const styles = useStyles39();
11393
- ({ ...DEFAULT_LABELS36[language], ...labels });
11811
+ ({ ...DEFAULT_LABELS38[language], ...labels });
11394
11812
  const handleTabSelect = (_, data) => {
11395
11813
  onTabSelect(data.value);
11396
11814
  };
@@ -11440,9 +11858,9 @@ exports.CardServiceMenu = CardServiceMenu;
11440
11858
  exports.CardStatusOrder = CardStatusOrder;
11441
11859
  exports.CardTicket = CardTicket;
11442
11860
  exports.CardTicketSearch = CardTicketSearch;
11443
- exports.CardTicketSearchDefaultLabels = DEFAULT_LABELS7;
11861
+ exports.CardTicketSearchDefaultLabels = DEFAULT_LABELS8;
11444
11862
  exports.CardTicketSearchSummary = CardTicketSearchSummary;
11445
- exports.CardTicketSearchSummaryDefaultLabels = DEFAULT_LABELS8;
11863
+ exports.CardTicketSearchSummaryDefaultLabels = DEFAULT_LABELS9;
11446
11864
  exports.CardVehicleDetail = CardVehicleDetail;
11447
11865
  exports.CardVehicleOwnerForm = CardVehicleOwnerForm;
11448
11866
  exports.CarouselWithCustomNav = CarouselWithCustomNav;
@@ -11456,11 +11874,11 @@ exports.DEFAULT_SORT_OPTIONS = DEFAULT_SORT_OPTIONS;
11456
11874
  exports.DEFAULT_TIME_SLOTS = DEFAULT_TIME_SLOTS;
11457
11875
  exports.DEFAULT_VEHICLE_ICONS = DEFAULT_VEHICLE_ICONS;
11458
11876
  exports.DateFilter = DateFilter;
11459
- exports.DateFilterDefaultLabels = DEFAULT_LABELS15;
11877
+ exports.DateFilterDefaultLabels = DEFAULT_LABELS17;
11460
11878
  exports.InputDynamic = InputDynamic_default;
11461
11879
  exports.MODAL_PRESETS = MODAL_PRESETS;
11462
11880
  exports.ModalFilterTicket = ModalFilterTicket;
11463
- exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS14;
11881
+ exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS16;
11464
11882
  exports.ModalIllustration = ModalIllustration;
11465
11883
  exports.ModalListPassenger = ModalListPassenger;
11466
11884
  exports.ModalPassengerForm = ModalPassengerForm;