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

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.mjs CHANGED
@@ -252,6 +252,18 @@ var CarouselWithCustomNav = ({
252
252
  }
253
253
  );
254
254
  };
255
+
256
+ // src/components/CardPromo/CardPromo.constants.ts
257
+ var DEFAULT_LABELS = {
258
+ id: {
259
+ defaultImageAlt: "Gambar Promo",
260
+ defaultButtonText: "Lihat Detail"
261
+ },
262
+ en: {
263
+ defaultImageAlt: "Promo Image",
264
+ defaultButtonText: "View Details"
265
+ }
266
+ };
255
267
  var useStyles3 = makeStyles({
256
268
  actionCard: {
257
269
  borderRadius: tokens.borderRadiusXLarge,
@@ -335,22 +347,27 @@ var useStyles3 = makeStyles({
335
347
  }
336
348
  });
337
349
  var CardPromo = ({
350
+ language = "id",
338
351
  imageUrl,
339
352
  title,
340
353
  description,
341
- imageAlt = "Promo image",
354
+ imageAlt,
342
355
  index = 0,
343
356
  totalCards,
344
357
  onClick,
345
358
  showButton = false,
346
- buttonText = "Lihat Detail",
359
+ buttonText,
347
360
  className,
348
361
  imageClassName,
349
362
  descriptionClassName,
350
363
  isLoading = false,
351
- imageOnly = false
364
+ imageOnly = false,
365
+ labels
352
366
  }) => {
353
367
  const classes = useStyles3();
368
+ const mergedLabels = { ...DEFAULT_LABELS[language], ...labels };
369
+ const displayImageAlt = imageAlt || mergedLabels.defaultImageAlt;
370
+ const displayButtonText = buttonText || mergedLabels.defaultButtonText;
354
371
  const ariaLabel = totalCards ? `Card ${index + 1} of ${totalCards}` : `Promo card ${index + 1}`;
355
372
  if (isLoading) {
356
373
  return /* @__PURE__ */ jsx(
@@ -360,7 +377,13 @@ var CardPromo = ({
360
377
  className: mergeClasses(classes.actionCard, className),
361
378
  style: { cursor: "default" },
362
379
  children: /* @__PURE__ */ jsxs(Skeleton, { "aria-label": "Loading content", children: [
363
- /* @__PURE__ */ jsx("div", { className: mergeClasses(classes.imageContainer, imageClassName), children: /* @__PURE__ */ jsx(SkeletonItem, { shape: "rectangle", style: { width: "100%", height: "100%" } }) }),
380
+ /* @__PURE__ */ jsx("div", { className: mergeClasses(classes.imageContainer, imageClassName), children: /* @__PURE__ */ jsx(
381
+ SkeletonItem,
382
+ {
383
+ shape: "rectangle",
384
+ style: { width: "100%", height: "100%" }
385
+ }
386
+ ) }),
364
387
  !imageOnly && /* @__PURE__ */ jsx(Row, { className: classes.infoWrapper, children: /* @__PURE__ */ jsxs(Col, { className: classes.info, xs: 12, children: [
365
388
  /* @__PURE__ */ jsx(SkeletonItem, { style: { width: "70%", height: "20px" } }),
366
389
  /* @__PURE__ */ jsx(SkeletonItem, { style: { width: "90%", height: "16px" } }),
@@ -385,25 +408,57 @@ var CardPromo = ({
385
408
  className: classes.image,
386
409
  src: imageUrl,
387
410
  role: "presentation",
388
- alt: imageAlt
411
+ alt: displayImageAlt
389
412
  }
390
413
  ) }),
391
414
  !imageOnly && /* @__PURE__ */ jsxs(Row, { className: classes.infoWrapper, children: [
392
- /* @__PURE__ */ jsxs(Col, { className: classes.info, xs: 12, sm: 12, md: 12, lg: showButton ? 8 : 12, xl: showButton ? 8 : 12, xxl: showButton ? 8 : 12, xxxl: showButton ? 8 : 12, children: [
393
- /* @__PURE__ */ jsx(Subtitle2, { className: classes.title, children: title }),
394
- /* @__PURE__ */ jsx(Body1, { className: mergeClasses(classes.title, descriptionClassName), children: description })
395
- ] }),
396
- showButton && /* @__PURE__ */ jsx(Col, { className: classes.buttonWrapper, xs: 12, sm: 12, md: 12, lg: showButton ? 4 : 0, xl: showButton ? 4 : 0, xxl: showButton ? 4 : 0, xxxl: showButton ? 4 : 0, children: /* @__PURE__ */ jsx(
397
- Button,
415
+ /* @__PURE__ */ jsxs(
416
+ Col,
398
417
  {
399
- appearance: "primary",
400
- size: "small",
401
- onClick,
402
- style: { cursor: onClick ? "pointer" : "default" },
403
- shape: "circular",
404
- children: buttonText
418
+ className: classes.info,
419
+ xs: 12,
420
+ sm: 12,
421
+ md: 12,
422
+ lg: showButton ? 8 : 12,
423
+ xl: showButton ? 8 : 12,
424
+ xxl: showButton ? 8 : 12,
425
+ xxxl: showButton ? 8 : 12,
426
+ children: [
427
+ /* @__PURE__ */ jsx(Subtitle2, { className: classes.title, children: title }),
428
+ /* @__PURE__ */ jsx(
429
+ Body1,
430
+ {
431
+ className: mergeClasses(classes.title, descriptionClassName),
432
+ children: description
433
+ }
434
+ )
435
+ ]
405
436
  }
406
- ) })
437
+ ),
438
+ showButton && /* @__PURE__ */ jsx(
439
+ Col,
440
+ {
441
+ className: classes.buttonWrapper,
442
+ xs: 12,
443
+ sm: 12,
444
+ md: 12,
445
+ lg: showButton ? 4 : 0,
446
+ xl: showButton ? 4 : 0,
447
+ xxl: showButton ? 4 : 0,
448
+ xxxl: showButton ? 4 : 0,
449
+ children: /* @__PURE__ */ jsx(
450
+ Button,
451
+ {
452
+ appearance: "primary",
453
+ size: "small",
454
+ onClick,
455
+ style: { cursor: onClick ? "pointer" : "default" },
456
+ shape: "circular",
457
+ children: displayButtonText
458
+ }
459
+ )
460
+ }
461
+ )
407
462
  ] })
408
463
  ]
409
464
  }
@@ -614,7 +669,31 @@ var extendedTokens = {
614
669
  colorBrandForegroundLinkHover: customBrand[120],
615
670
  colorBrandForegroundLinkPressed: customBrand[130],
616
671
  colorBrandForegroundLinkSelected: customBrand[110]});
617
- var useStyle = makeStyles({
672
+
673
+ // src/components/CardTicket/CardTicket.constants.ts
674
+ var DEFAULT_LABELS2 = {
675
+ id: {
676
+ availableSeatsLabel: "Tersedia",
677
+ estimationPrefix: "Estimasi",
678
+ priceDetailsButton: "Rincian Harga",
679
+ policyButton: "Kebijakan",
680
+ totalPriceLabel: "Total harga",
681
+ facilitiesLabel: "Fasilitas",
682
+ selectTicketButton: "Pilih Tiket",
683
+ timezoneLabel: "WIB"
684
+ },
685
+ en: {
686
+ availableSeatsLabel: "Available",
687
+ estimationPrefix: "Estimation",
688
+ priceDetailsButton: "Price Details",
689
+ policyButton: "Policy",
690
+ totalPriceLabel: "Total price",
691
+ facilitiesLabel: "Facilities",
692
+ selectTicketButton: "Select Ticket",
693
+ timezoneLabel: "WIB"
694
+ }
695
+ };
696
+ var useStyles5 = makeStyles({
618
697
  dividerContainer: {
619
698
  position: "relative",
620
699
  display: "flex",
@@ -810,6 +889,8 @@ var useStyle = makeStyles({
810
889
  }
811
890
  });
812
891
  var CardTicket = ({
892
+ language = "id",
893
+ labels,
813
894
  id,
814
895
  shipName,
815
896
  shipType,
@@ -825,13 +906,14 @@ var CardTicket = ({
825
906
  duration,
826
907
  facilities,
827
908
  totalPrice,
828
- buttonText = "Pilih Tiket",
909
+ buttonText,
829
910
  onPriceDetailClick,
830
911
  onPolicyClick,
831
912
  onSelectTicket
832
913
  }) => {
833
- const styles = useStyle();
914
+ const styles = useStyles5();
834
915
  const { width } = useWindowSize();
916
+ const mergedLabels = { ...DEFAULT_LABELS2[language], ...labels };
835
917
  const getCircularVerticalConfig = () => {
836
918
  if (width <= 1600) return { count: 6, spacing: 60, top: 10 };
837
919
  return { count: 5, spacing: 60, top: 18 };
@@ -943,7 +1025,8 @@ var CardTicket = ({
943
1025
  shape: "rounded",
944
1026
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
945
1027
  children: [
946
- "Tersedia ",
1028
+ mergedLabels.availableSeatsLabel,
1029
+ " ",
947
1030
  availableSeats
948
1031
  ]
949
1032
  }
@@ -969,16 +1052,18 @@ var CardTicket = ({
969
1052
  /* @__PURE__ */ jsx("div", { className: styles.circularLeftMd }),
970
1053
  /* @__PURE__ */ jsx("div", { className: styles.circularRightMd })
971
1054
  ] }),
972
- /* @__PURE__ */ jsx(Visible, { xl: true, xxl: true, xxxl: true, children: Array.from({ length: circularVerticalConfig.count }).map((_, index) => /* @__PURE__ */ jsx(
973
- "div",
974
- {
975
- className: styles.circularLeft,
976
- style: {
977
- top: `${circularVerticalConfig.top + index * circularVerticalConfig.spacing}px`
978
- }
979
- },
980
- index
981
- )) })
1055
+ /* @__PURE__ */ jsx(Visible, { xl: true, xxl: true, xxxl: true, children: Array.from({ length: circularVerticalConfig.count }).map(
1056
+ (_, index) => /* @__PURE__ */ jsx(
1057
+ "div",
1058
+ {
1059
+ className: styles.circularLeft,
1060
+ style: {
1061
+ top: `${circularVerticalConfig.top + index * circularVerticalConfig.spacing}px`
1062
+ }
1063
+ },
1064
+ index
1065
+ )
1066
+ ) })
982
1067
  ] })
983
1068
  }
984
1069
  ),
@@ -1007,7 +1092,8 @@ var CardTicket = ({
1007
1092
  shape: "rounded",
1008
1093
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
1009
1094
  children: [
1010
- "Tersedia ",
1095
+ mergedLabels.availableSeatsLabel,
1096
+ " ",
1011
1097
  availableSeats
1012
1098
  ]
1013
1099
  }
@@ -1015,19 +1101,28 @@ var CardTicket = ({
1015
1101
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: styles.ticketInfo, children: [
1016
1102
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
1017
1103
  /* @__PURE__ */ jsx(Caption1, { children: departureDay }),
1018
- /* @__PURE__ */ jsx(Title2, { children: departureTime }),
1104
+ /* @__PURE__ */ jsxs(Title2, { children: [
1105
+ departureTime,
1106
+ " ",
1107
+ mergedLabels.timezoneLabel
1108
+ ] }),
1019
1109
  /* @__PURE__ */ jsx(Caption1, { children: departureLocation })
1020
1110
  ] }),
1021
1111
  /* @__PURE__ */ jsxs("div", { className: styles.ticketDuration, children: [
1022
1112
  /* @__PURE__ */ jsxs(Caption2, { children: [
1023
- "Estimasi ",
1113
+ mergedLabels.estimationPrefix,
1114
+ " ",
1024
1115
  duration
1025
1116
  ] }),
1026
1117
  /* @__PURE__ */ jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsx(Divider, { children: /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-24-regular", height: 24 }) }) })
1027
1118
  ] }),
1028
1119
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
1029
1120
  /* @__PURE__ */ jsx(Caption1, { children: arrivalDay }),
1030
- /* @__PURE__ */ jsx(Title2, { children: arrivalTime }),
1121
+ /* @__PURE__ */ jsxs(Title2, { children: [
1122
+ arrivalTime,
1123
+ " ",
1124
+ mergedLabels.timezoneLabel
1125
+ ] }),
1031
1126
  /* @__PURE__ */ jsx(Caption1, { children: arrivalLocation })
1032
1127
  ] })
1033
1128
  ] }) }),
@@ -1045,7 +1140,7 @@ var CardTicket = ({
1045
1140
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:money-24-regular" }),
1046
1141
  size: "medium",
1047
1142
  onClick: onPriceDetailClick,
1048
- children: "Rincian Harga"
1143
+ children: mergedLabels.priceDetailsButton
1049
1144
  }
1050
1145
  ),
1051
1146
  /* @__PURE__ */ jsx(
@@ -1061,7 +1156,7 @@ var CardTicket = ({
1061
1156
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:document-bullet-list-24-regular" }),
1062
1157
  size: "medium",
1063
1158
  onClick: onPolicyClick,
1064
- children: "Kebijakan"
1159
+ children: mergedLabels.policyButton
1065
1160
  }
1066
1161
  )
1067
1162
  ] })
@@ -1081,13 +1176,33 @@ var CardTicket = ({
1081
1176
  style: { padding: 0, margin: 0 },
1082
1177
  children: /* @__PURE__ */ jsxs(Card, { className: styles.ticketRightCard, children: [
1083
1178
  /* @__PURE__ */ jsxs("div", { className: styles.priceCard, children: [
1084
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.25rem" }, children: [
1085
- /* @__PURE__ */ jsx(Subtitle2, { children: "Total harga" }),
1086
- /* @__PURE__ */ jsxs(Title3, { style: { display: "flex", flex: "column", justifyContent: "end" }, children: [
1087
- "IDR\xA0",
1088
- totalPrice.toLocaleString("id-ID")
1089
- ] })
1090
- ] }),
1179
+ /* @__PURE__ */ jsxs(
1180
+ "div",
1181
+ {
1182
+ style: {
1183
+ display: "flex",
1184
+ flexDirection: "column",
1185
+ gap: "0.25rem"
1186
+ },
1187
+ children: [
1188
+ /* @__PURE__ */ jsx(Subtitle2, { children: mergedLabels.totalPriceLabel }),
1189
+ /* @__PURE__ */ jsxs(
1190
+ Title3,
1191
+ {
1192
+ style: {
1193
+ display: "flex",
1194
+ flex: "column",
1195
+ justifyContent: "end"
1196
+ },
1197
+ children: [
1198
+ "IDR\xA0",
1199
+ totalPrice.toLocaleString("id-ID")
1200
+ ]
1201
+ }
1202
+ )
1203
+ ]
1204
+ }
1205
+ ),
1091
1206
  /* @__PURE__ */ jsx(
1092
1207
  Button,
1093
1208
  {
@@ -1097,27 +1212,29 @@ var CardTicket = ({
1097
1212
  size: "medium",
1098
1213
  shape: "circular",
1099
1214
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:ticket-diagonal-24-filled" }),
1100
- children: buttonText
1215
+ children: buttonText || mergedLabels.selectTicketButton
1101
1216
  }
1102
1217
  )
1103
1218
  ] }),
1104
1219
  /* @__PURE__ */ jsxs("div", { className: styles.facilitiesSection, children: [
1105
- /* @__PURE__ */ jsx(Subtitle2, { children: "Fasilitas" }),
1220
+ /* @__PURE__ */ jsx(Subtitle2, { children: mergedLabels.facilitiesLabel }),
1106
1221
  /* @__PURE__ */ jsx("div", { className: styles.facilitiesList, children: facilities.map((facility, idx) => /* @__PURE__ */ jsxs("div", { className: styles.facilityItem, children: [
1107
1222
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:checkmark-circle-24-filled" }),
1108
1223
  /* @__PURE__ */ jsx(Caption1Strong, { children: facility })
1109
1224
  ] }, idx)) })
1110
1225
  ] }),
1111
- /* @__PURE__ */ jsx(Visible, { xl: true, xxl: true, xxxl: true, children: Array.from({ length: circularVerticalConfig.count }).map((_, index) => /* @__PURE__ */ jsx(
1112
- "div",
1113
- {
1114
- className: styles.circularRight,
1115
- style: {
1116
- top: `${circularVerticalConfig.top + index * circularVerticalConfig.spacing}px`
1117
- }
1118
- },
1119
- index
1120
- )) })
1226
+ /* @__PURE__ */ jsx(Visible, { xl: true, xxl: true, xxxl: true, children: Array.from({ length: circularVerticalConfig.count }).map(
1227
+ (_, index) => /* @__PURE__ */ jsx(
1228
+ "div",
1229
+ {
1230
+ className: styles.circularRight,
1231
+ style: {
1232
+ top: `${circularVerticalConfig.top + index * circularVerticalConfig.spacing}px`
1233
+ }
1234
+ },
1235
+ index
1236
+ )
1237
+ ) })
1121
1238
  ] })
1122
1239
  }
1123
1240
  )
@@ -1300,7 +1417,7 @@ var BackgroundTicketCardVertical = (props) => /* @__PURE__ */ jsxs(
1300
1417
  }
1301
1418
  );
1302
1419
  var BackgroundTicketCardVertical_default = BackgroundTicketCardVertical;
1303
- var useStyles5 = makeStyles({
1420
+ var useStyles6 = makeStyles({
1304
1421
  card: {
1305
1422
  width: "100%",
1306
1423
  boxSizing: "border-box",
@@ -1441,7 +1558,7 @@ var CardServiceMenu = ({
1441
1558
  showDescriptions = true,
1442
1559
  className
1443
1560
  }) => {
1444
- const styles = useStyles5();
1561
+ const styles = useStyles6();
1445
1562
  const getMenuItemClass = (serviceId) => {
1446
1563
  const isActive = activeServiceId === serviceId;
1447
1564
  return mergeClasses(
@@ -1573,7 +1690,7 @@ var DatePickerInput = forwardRef(
1573
1690
  DatePickerInput.displayName = "DatePickerInput";
1574
1691
  var DatePickerInput_default = DatePickerInput;
1575
1692
  var PhoneInput = PhoneInputComponent.default || PhoneInputComponent;
1576
- var useStyles6 = makeStyles({
1693
+ var useStyles7 = makeStyles({
1577
1694
  field: {
1578
1695
  display: "flex",
1579
1696
  flexDirection: "column",
@@ -1816,7 +1933,7 @@ var InputDynamic = ({
1816
1933
  contentAfter,
1817
1934
  onChange
1818
1935
  }) => {
1819
- const styles = useStyles6();
1936
+ const styles = useStyles7();
1820
1937
  const [showPassword, setShowPassword] = useState(false);
1821
1938
  const [isPhoneMode, setIsPhoneMode] = useState(false);
1822
1939
  const [emailOrPhoneType, setEmailOrPhoneType] = useState("none");
@@ -2886,7 +3003,7 @@ var DEFAULT_COUNTRY_CODES = [
2886
3003
  ];
2887
3004
 
2888
3005
  // src/components/CardTicketSearch/CardTicketSearch.constants.ts
2889
- var DEFAULT_LABELS = {
3006
+ var DEFAULT_LABELS3 = {
2890
3007
  id: {
2891
3008
  fromLabel: "Dari",
2892
3009
  toLabel: "Ke",
@@ -2924,7 +3041,7 @@ var DEFAULT_LABELS = {
2924
3041
  placeholderPassenger: "Select Number of Passengers"
2925
3042
  }
2926
3043
  };
2927
- var useStyles7 = makeStyles({
3044
+ var useStyles8 = makeStyles({
2928
3045
  card: {
2929
3046
  position: "relative",
2930
3047
  width: "100%",
@@ -3060,9 +3177,9 @@ var CardTicketSearch = ({
3060
3177
  showRoundTrip = true,
3061
3178
  onServiceClick
3062
3179
  }) => {
3063
- const styles = useStyles7();
3180
+ const styles = useStyles8();
3064
3181
  const labels = React5.useMemo(
3065
- () => ({ ...DEFAULT_LABELS[language], ...customLabels }),
3182
+ () => ({ ...DEFAULT_LABELS3[language], ...customLabels }),
3066
3183
  [language, customLabels]
3067
3184
  );
3068
3185
  const { control, setValue, getValues, handleSubmit } = useForm({
@@ -3448,16 +3565,27 @@ var CardTicketSearch = ({
3448
3565
  };
3449
3566
 
3450
3567
  // src/components/CardTicketSearchSummary/CardTicketSearchSummary.constants.ts
3451
- var DEFAULT_LABELS2 = {
3452
- originHarbor: "Pelabuhan Keberangkatan",
3453
- destinationHarbor: "Pelabuhan Tujuan",
3454
- departureDate: "Tanggal Keberangkatan",
3455
- serviceClass: "Kelas Layanan",
3456
- typeOfService: "Jenis Layanan",
3457
- totalPassengers: "Jumlah Penumpang",
3458
- changeSearchButton: "Ganti Pencarian"
3568
+ var DEFAULT_LABELS4 = {
3569
+ id: {
3570
+ originHarbor: "Pelabuhan Keberangkatan",
3571
+ destinationHarbor: "Pelabuhan Tujuan",
3572
+ departureDate: "Tanggal Keberangkatan",
3573
+ serviceClass: "Kelas Layanan",
3574
+ typeOfService: "Jenis Layanan",
3575
+ totalPassengers: "Jumlah Penumpang",
3576
+ changeSearchButton: "Ganti Pencarian"
3577
+ },
3578
+ en: {
3579
+ originHarbor: "Departure Port",
3580
+ destinationHarbor: "Destination Port",
3581
+ departureDate: "Departure Date",
3582
+ serviceClass: "Service Class",
3583
+ typeOfService: "Service Type",
3584
+ totalPassengers: "Total Passengers",
3585
+ changeSearchButton: "Change Search"
3586
+ }
3459
3587
  };
3460
- var useStyles8 = makeStyles({
3588
+ var useStyles9 = makeStyles({
3461
3589
  cardSearchTicket: {
3462
3590
  borderRadius: "32px",
3463
3591
  // borderBottomLeftRadius: '0',
@@ -3525,6 +3653,7 @@ var useStyles8 = makeStyles({
3525
3653
  }
3526
3654
  });
3527
3655
  var CardTicketSearchSummary = ({
3656
+ language = "id",
3528
3657
  originHarbor,
3529
3658
  destinationHarbor,
3530
3659
  departureDate,
@@ -3536,8 +3665,8 @@ var CardTicketSearchSummary = ({
3536
3665
  showSwapButton = false,
3537
3666
  children
3538
3667
  }) => {
3539
- const styles = useStyles8();
3540
- const mergedLabels = { ...DEFAULT_LABELS2, ...labels };
3668
+ const styles = useStyles9();
3669
+ const mergedLabels = { ...DEFAULT_LABELS4[language], ...labels };
3541
3670
  const { width } = useWindowSize();
3542
3671
  const getCircularConfig = () => {
3543
3672
  if (width <= parseInt(extendedTokens.breakpointXs))
@@ -3582,24 +3711,31 @@ var CardTicketSearchSummary = ({
3582
3711
  xxl: 5,
3583
3712
  xxxl: 5,
3584
3713
  className: styles.paddingResponsive,
3585
- children: /* @__PURE__ */ jsx(Field, { label: mergedLabels.originHarbor, className: styles.field, children: /* @__PURE__ */ jsx(
3586
- Input,
3714
+ children: /* @__PURE__ */ jsx(
3715
+ Field,
3587
3716
  {
3588
- name: "from",
3589
- disabled: true,
3590
- type: "text",
3591
- contentBefore: /* @__PURE__ */ jsx(
3592
- Icon,
3717
+ label: mergedLabels.originHarbor,
3718
+ className: styles.field,
3719
+ children: /* @__PURE__ */ jsx(
3720
+ Input,
3593
3721
  {
3594
- icon: "fluent:vehicle-ship-16-filled",
3595
- color: tokens.colorNeutralForegroundDisabled
3722
+ name: "from",
3723
+ disabled: true,
3724
+ type: "text",
3725
+ contentBefore: /* @__PURE__ */ jsx(
3726
+ Icon,
3727
+ {
3728
+ icon: "fluent:vehicle-ship-16-filled",
3729
+ color: tokens.colorNeutralForegroundDisabled
3730
+ }
3731
+ ),
3732
+ value: originHarbor,
3733
+ appearance: "outline",
3734
+ size: "medium"
3596
3735
  }
3597
- ),
3598
- value: originHarbor,
3599
- appearance: "outline",
3600
- size: "medium"
3736
+ )
3601
3737
  }
3602
- ) })
3738
+ )
3603
3739
  }
3604
3740
  ),
3605
3741
  /* @__PURE__ */ jsx(
@@ -3642,24 +3778,31 @@ var CardTicketSearchSummary = ({
3642
3778
  xxl: 6,
3643
3779
  xxxl: 6,
3644
3780
  className: styles.paddingResponsive,
3645
- children: /* @__PURE__ */ jsx(Field, { label: mergedLabels.destinationHarbor, className: styles.field, children: /* @__PURE__ */ jsx(
3646
- Input,
3781
+ children: /* @__PURE__ */ jsx(
3782
+ Field,
3647
3783
  {
3648
- name: "to",
3649
- type: "text",
3650
- contentBefore: /* @__PURE__ */ jsx(
3651
- Icon,
3784
+ label: mergedLabels.destinationHarbor,
3785
+ className: styles.field,
3786
+ children: /* @__PURE__ */ jsx(
3787
+ Input,
3652
3788
  {
3653
- icon: "fluent:location-24-filled",
3654
- color: tokens.colorNeutralForegroundDisabled
3789
+ name: "to",
3790
+ type: "text",
3791
+ contentBefore: /* @__PURE__ */ jsx(
3792
+ Icon,
3793
+ {
3794
+ icon: "fluent:location-24-filled",
3795
+ color: tokens.colorNeutralForegroundDisabled
3796
+ }
3797
+ ),
3798
+ disabled: true,
3799
+ appearance: "outline",
3800
+ size: "medium",
3801
+ value: destinationHarbor
3655
3802
  }
3656
- ),
3657
- disabled: true,
3658
- appearance: "outline",
3659
- size: "medium",
3660
- value: destinationHarbor
3803
+ )
3661
3804
  }
3662
- ) })
3805
+ )
3663
3806
  }
3664
3807
  )
3665
3808
  ] }) })
@@ -3820,7 +3963,10 @@ var CardTicketSearchSummary = ({
3820
3963
  type: "button",
3821
3964
  appearance: "primary",
3822
3965
  size: "medium",
3823
- style: { width: "100%", borderRadius: tokens.borderRadiusCircular },
3966
+ style: {
3967
+ width: "100%",
3968
+ borderRadius: tokens.borderRadiusCircular
3969
+ },
3824
3970
  iconPosition: "before",
3825
3971
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:search-24-filled" }),
3826
3972
  onClick: onChangeSearch,
@@ -3843,7 +3989,29 @@ var CardTicketSearchSummary = ({
3843
3989
  ))
3844
3990
  ] });
3845
3991
  };
3846
- var useStyles9 = makeStyles({
3992
+
3993
+ // src/components/ModalSearchHarbor/ModalSearchHarbor.constants.ts
3994
+ var DEFAULT_LABELS5 = {
3995
+ id: {
3996
+ title: "Pilih Pelabuhan",
3997
+ searchPlaceholder: "Cari Pelabuhan...",
3998
+ lastSearchedHeader: "Terakhir dicari",
3999
+ clearAllButton: "Hapus Semua",
4000
+ allHarborsHeader: "Semua Pelabuhan",
4001
+ loadingData: "Memuat data...",
4002
+ harborNotFound: "Pelabuhan tidak ditemukan"
4003
+ },
4004
+ en: {
4005
+ title: "Select Harbor",
4006
+ searchPlaceholder: "Search Harbor...",
4007
+ lastSearchedHeader: "Last searched",
4008
+ clearAllButton: "Clear All",
4009
+ allHarborsHeader: "All Harbors",
4010
+ loadingData: "Loading data...",
4011
+ harborNotFound: "Harbor not found"
4012
+ }
4013
+ };
4014
+ var useStyles10 = makeStyles({
3847
4015
  dialogTitle: {
3848
4016
  display: "flex",
3849
4017
  justifyContent: "space-between",
@@ -3956,9 +4124,11 @@ var useStyles9 = makeStyles({
3956
4124
  }
3957
4125
  });
3958
4126
  var ModalSearchHarbor = ({
4127
+ language = "id",
4128
+ labels,
3959
4129
  open,
3960
4130
  onClose,
3961
- title = "Pilih Pelabuhan",
4131
+ title,
3962
4132
  modalType = "origin",
3963
4133
  harbors,
3964
4134
  favoriteHarbors,
@@ -3972,7 +4142,8 @@ var ModalSearchHarbor = ({
3972
4142
  onRemoveLastSearched,
3973
4143
  onClearLastSearched
3974
4144
  }) => {
3975
- const styles = useStyles9();
4145
+ const styles = useStyles10();
4146
+ const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
3976
4147
  const handleSelect = (harbor) => {
3977
4148
  onAddLastSearched(harbor);
3978
4149
  onSelectHarbor(harbor);
@@ -4005,7 +4176,7 @@ var ModalSearchHarbor = ({
4005
4176
  className: styles.closeButton
4006
4177
  }
4007
4178
  ),
4008
- children: title
4179
+ children: title || mergedLabels.title
4009
4180
  }
4010
4181
  ),
4011
4182
  /* @__PURE__ */ jsxs(DialogContent, { className: styles.content, children: [
@@ -4015,8 +4186,14 @@ var ModalSearchHarbor = ({
4015
4186
  className: styles.searchInput,
4016
4187
  value: searchQuery,
4017
4188
  onChange: (e) => onSearchChange(e.target.value),
4018
- placeholder: "Cari Pelabuhan...",
4019
- contentBefore: /* @__PURE__ */ jsx(Icon, { icon: "fluent:search-24-regular", color: tokens.colorNeutralForeground3 }),
4189
+ placeholder: mergedLabels.searchPlaceholder,
4190
+ contentBefore: /* @__PURE__ */ jsx(
4191
+ Icon,
4192
+ {
4193
+ icon: "fluent:search-24-regular",
4194
+ color: tokens.colorNeutralForeground3
4195
+ }
4196
+ ),
4020
4197
  size: "large"
4021
4198
  }
4022
4199
  ) }),
@@ -4037,13 +4214,13 @@ var ModalSearchHarbor = ({
4037
4214
  /* @__PURE__ */ jsxs("div", { className: styles.resultList, children: [
4038
4215
  lastSearchedHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
4039
4216
  /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
4040
- /* @__PURE__ */ jsx(Body1Strong, { children: "Terakhir dicari" }),
4217
+ /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.lastSearchedHeader }),
4041
4218
  /* @__PURE__ */ jsx(
4042
4219
  Caption1,
4043
4220
  {
4044
4221
  className: `${styles.dangerText} ${styles.cursorPointer}`,
4045
4222
  onClick: onClearLastSearched,
4046
- children: "Hapus Semua"
4223
+ children: mergedLabels.clearAllButton
4047
4224
  }
4048
4225
  )
4049
4226
  ] }),
@@ -4054,7 +4231,13 @@ var ModalSearchHarbor = ({
4054
4231
  style: { cursor: "pointer" },
4055
4232
  onClick: () => handleSelect(harbor),
4056
4233
  children: [
4057
- /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-24-regular", className: styles.iconMargin }),
4234
+ /* @__PURE__ */ jsx(
4235
+ Icon,
4236
+ {
4237
+ icon: "fluent:vehicle-ship-24-regular",
4238
+ className: styles.iconMargin
4239
+ }
4240
+ ),
4058
4241
  harbor.name
4059
4242
  ]
4060
4243
  }
@@ -4071,15 +4254,21 @@ var ModalSearchHarbor = ({
4071
4254
  ] }, harbor.id)) }),
4072
4255
  /* @__PURE__ */ jsx(Divider, {})
4073
4256
  ] }),
4074
- /* @__PURE__ */ jsx(Body1Strong, { className: styles.sectionTitle, children: "Semua Pelabuhan" }),
4075
- /* @__PURE__ */ jsx("div", { className: styles.harborList, children: isLoading ? /* @__PURE__ */ jsx("div", { className: styles.emptyState, children: "Memuat data..." }) : harbors.length > 0 ? harbors.map((harbor, index) => /* @__PURE__ */ jsxs("div", { className: styles.harborItem, children: [
4257
+ /* @__PURE__ */ jsx(Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
4258
+ /* @__PURE__ */ jsx("div", { className: styles.harborList, children: isLoading ? /* @__PURE__ */ jsx("div", { className: styles.emptyState, children: mergedLabels.loadingData }) : harbors.length > 0 ? harbors.map((harbor, index) => /* @__PURE__ */ jsxs("div", { className: styles.harborItem, children: [
4076
4259
  /* @__PURE__ */ jsxs(
4077
4260
  "div",
4078
4261
  {
4079
4262
  className: styles.cursorPointer,
4080
4263
  onClick: () => handleSelect(harbor),
4081
4264
  children: [
4082
- /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-24-regular", className: styles.iconMargin }),
4265
+ /* @__PURE__ */ jsx(
4266
+ Icon,
4267
+ {
4268
+ icon: "fluent:vehicle-ship-24-regular",
4269
+ className: styles.iconMargin
4270
+ }
4271
+ ),
4083
4272
  harbor.name
4084
4273
  ]
4085
4274
  }
@@ -4093,14 +4282,28 @@ var ModalSearchHarbor = ({
4093
4282
  onClick: () => onToggleFavorite(harbor)
4094
4283
  }
4095
4284
  )
4096
- ] }, index)) : /* @__PURE__ */ jsx("div", { className: styles.emptyState, children: "Pelabuhan tidak ditemukan" }) })
4285
+ ] }, index)) : /* @__PURE__ */ jsx("div", { className: styles.emptyState, children: mergedLabels.harborNotFound }) })
4097
4286
  ] })
4098
4287
  ] })
4099
4288
  ] }) })
4100
4289
  }
4101
4290
  );
4102
4291
  };
4103
- var useStyles10 = makeStyles({
4292
+
4293
+ // src/components/ModalSelectDate/ModalSelectDate.constants.ts
4294
+ var DEFAULT_LABELS6 = {
4295
+ id: {
4296
+ title: "Pilih Tanggal",
4297
+ oneWay: "Sekali Jalan",
4298
+ roundTrip: "Pulang Pergi"
4299
+ },
4300
+ en: {
4301
+ title: "Select Date",
4302
+ oneWay: "One Way",
4303
+ roundTrip: "Round Trip"
4304
+ }
4305
+ };
4306
+ var useStyles11 = makeStyles({
4104
4307
  dialogSurface: {
4105
4308
  maxWidth: "600px",
4106
4309
  width: "100%"
@@ -4203,9 +4406,11 @@ var useStyles10 = makeStyles({
4203
4406
  }
4204
4407
  });
4205
4408
  var ModalSelectDate = ({
4409
+ language = "id",
4410
+ labels,
4206
4411
  open,
4207
4412
  onClose,
4208
- title = "Pilih Tanggal",
4413
+ title,
4209
4414
  selectedDepartureDate,
4210
4415
  selectedReturnDate,
4211
4416
  initialTab = "one-way",
@@ -4218,9 +4423,17 @@ var ModalSelectDate = ({
4218
4423
  dateFormat = "DD MMMM YYYY",
4219
4424
  showRoundtrip = true
4220
4425
  }) => {
4221
- const styles = useStyles10();
4222
- const [selectedDate, setSelectedDate] = useState(selectedDepartureDate);
4223
- const [selectedEndDate, setSelectedEndDate] = useState(selectedReturnDate);
4426
+ const styles = useStyles11();
4427
+ const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
4428
+ useEffect(() => {
4429
+ moment.locale(language === "id" ? "id" : "en");
4430
+ }, [language]);
4431
+ const [selectedDate, setSelectedDate] = useState(
4432
+ selectedDepartureDate
4433
+ );
4434
+ const [selectedEndDate, setSelectedEndDate] = useState(
4435
+ selectedReturnDate
4436
+ );
4224
4437
  const [hoveredDate, setHoveredDate] = useState();
4225
4438
  const [activeTab, setActiveTab] = useState(initialTab);
4226
4439
  const previewEndDate = useMemo(() => {
@@ -4381,7 +4594,7 @@ var ModalSelectDate = ({
4381
4594
  className: styles.closeButton
4382
4595
  }
4383
4596
  ),
4384
- children: title
4597
+ children: title || mergedLabels.title
4385
4598
  }
4386
4599
  ),
4387
4600
  /* @__PURE__ */ jsxs(DialogContent, { className: styles.content, children: [
@@ -4392,7 +4605,7 @@ var ModalSelectDate = ({
4392
4605
  disabled: activeTab === "round-trip",
4393
4606
  className: `${styles.tab} ${activeTab === "one-way" ? styles.tabActive : ""}`,
4394
4607
  onClick: () => handleTabChange("one-way"),
4395
- children: "Sekali Jalan"
4608
+ children: mergedLabels.oneWay
4396
4609
  }
4397
4610
  ),
4398
4611
  showRoundtrip && /* @__PURE__ */ jsx(
@@ -4401,32 +4614,38 @@ var ModalSelectDate = ({
4401
4614
  className: `${styles.tab} ${activeTab === "round-trip" ? styles.tabActive : ""}`,
4402
4615
  onClick: () => handleTabChange("round-trip"),
4403
4616
  disabled: activeTab === "one-way",
4404
- children: "Pulang Pergi"
4617
+ children: mergedLabels.roundTrip
4405
4618
  }
4406
4619
  )
4407
4620
  ] }),
4408
- /* @__PURE__ */ jsx("div", { className: styles.calendarContainer, children: /* @__PURE__ */ jsx("div", { style: { width: "100%" }, children: /* @__PURE__ */ jsx("div", { className: activeTab === "round-trip" ? styles.rangeCalendar : "", children: /* @__PURE__ */ jsx(
4409
- Calendar,
4621
+ /* @__PURE__ */ jsx("div", { className: styles.calendarContainer, children: /* @__PURE__ */ jsx("div", { style: { width: "100%" }, children: /* @__PURE__ */ jsx(
4622
+ "div",
4410
4623
  {
4411
- minDate,
4412
- maxDate,
4413
- value: selectedDate,
4414
- onSelectDate: handleDateSelect,
4415
- showGoToToday: true,
4416
- highlightSelectedMonth: true,
4417
- showMonthPickerAsOverlay: false,
4418
- allFocusable: true,
4419
- calendarDayProps: {
4420
- customDayCellRef: handleCustomDayCellRef
4421
- }
4624
+ className: activeTab === "round-trip" ? styles.rangeCalendar : "",
4625
+ children: /* @__PURE__ */ jsx(
4626
+ Calendar,
4627
+ {
4628
+ minDate,
4629
+ maxDate,
4630
+ value: selectedDate,
4631
+ onSelectDate: handleDateSelect,
4632
+ showGoToToday: true,
4633
+ highlightSelectedMonth: true,
4634
+ showMonthPickerAsOverlay: false,
4635
+ allFocusable: true,
4636
+ calendarDayProps: {
4637
+ customDayCellRef: handleCustomDayCellRef
4638
+ }
4639
+ }
4640
+ )
4422
4641
  }
4423
- ) }) }) })
4642
+ ) }) })
4424
4643
  ] })
4425
4644
  ] }) })
4426
4645
  }
4427
4646
  );
4428
4647
  };
4429
- var useStyles11 = makeStyles({
4648
+ var useStyles12 = makeStyles({
4430
4649
  dialogSurface: {
4431
4650
  maxWidth: "600px",
4432
4651
  width: "100%"
@@ -4509,7 +4728,7 @@ var ModalService = ({
4509
4728
  isLoading = false,
4510
4729
  isError = false
4511
4730
  }) => {
4512
- const styles = useStyles11();
4731
+ const styles = useStyles12();
4513
4732
  const [selectedServices, setSelectedServices] = useState(selectedServiceIds);
4514
4733
  useEffect(() => {
4515
4734
  if (open) {
@@ -4618,13 +4837,33 @@ var ModalService = ({
4618
4837
  );
4619
4838
  };
4620
4839
 
4621
- // src/components/ModalTotalPassengers/constants.ts
4840
+ // src/components/ModalTotalPassengers/ModalTotalPassengers.constants.ts
4841
+ var DEFAULT_LABELS7 = {
4842
+ id: {
4843
+ title: "Pilih Jumlah Penumpang",
4844
+ infoMessage: "Anda dapat menambahkan hingga {maxPassengers} penumpang pada golongan kendaraan ini.",
4845
+ loading: "Memuat...",
4846
+ saveButton: "Simpan",
4847
+ economy: "Ekonomi",
4848
+ business: "Bisnis",
4849
+ executive: "Eksekutif"
4850
+ },
4851
+ en: {
4852
+ title: "Select Total Passengers",
4853
+ infoMessage: "You can add up to {maxPassengers} passengers in this vehicle category.",
4854
+ loading: "Loading...",
4855
+ saveButton: "Save",
4856
+ economy: "Economy",
4857
+ business: "Business",
4858
+ executive: "Executive"
4859
+ }
4860
+ };
4622
4861
  var DEFAULT_SERVICE_CLASSES = [
4623
- { id: 1, name: "Ekonomi", key: "ekonomi", serviceName: "ECONOMY" },
4624
- { id: 2, name: "Bisnis", key: "bisnis", serviceName: "BUSINESS" },
4625
- { id: 3, name: "Eksekutif", key: "eksekutif", serviceName: "EXECUTIVE" }
4862
+ { id: 1, name: "Ekonomi", key: "ekonomi", serviceName: "ECONOMY", labelKey: "economy" },
4863
+ { id: 2, name: "Bisnis", key: "bisnis", serviceName: "BUSINESS", labelKey: "business" },
4864
+ { id: 3, name: "Eksekutif", key: "eksekutif", serviceName: "EXECUTIVE", labelKey: "executive" }
4626
4865
  ];
4627
- var useStyles12 = makeStyles({
4866
+ var useStyles13 = makeStyles({
4628
4867
  dialogSurface: {
4629
4868
  maxWidth: "600px",
4630
4869
  width: "100%"
@@ -4692,9 +4931,11 @@ var useStyles12 = makeStyles({
4692
4931
  }
4693
4932
  });
4694
4933
  var ModalTotalPassengers = ({
4934
+ language = "id",
4935
+ labels,
4695
4936
  open,
4696
4937
  onClose,
4697
- title = "Pilih Jumlah Penumpang",
4938
+ title,
4698
4939
  passengerTypes,
4699
4940
  serviceClasses = DEFAULT_SERVICE_CLASSES,
4700
4941
  selectedPassengers,
@@ -4703,10 +4944,14 @@ var ModalTotalPassengers = ({
4703
4944
  maxPassengers = 10,
4704
4945
  infoMessage
4705
4946
  }) => {
4706
- const styles = useStyles12();
4947
+ const styles = useStyles13();
4948
+ const mergedLabels = { ...DEFAULT_LABELS7[language], ...labels };
4707
4949
  const [passengers, setPassengers] = useState([]);
4708
4950
  const [openItems, setOpenItems] = useState([]);
4709
- const defaultInfoMessage = `Anda dapat menambahkan hingga ${maxPassengers} penumpang pada golongan kendaraan ini.`;
4951
+ const defaultInfoMessage = mergedLabels.infoMessage.replace(
4952
+ "{maxPassengers}",
4953
+ String(maxPassengers)
4954
+ );
4710
4955
  useEffect(() => {
4711
4956
  if (passengerTypes.length === 0) return;
4712
4957
  const defaultPassengers = passengerTypes.map(
@@ -4776,7 +5021,7 @@ var ModalTotalPassengers = ({
4776
5021
  const serviceClass = serviceClasses.find(
4777
5022
  (sc) => sc.serviceName === service.serviceName
4778
5023
  );
4779
- const serviceName = serviceClass?.name || service.serviceName;
5024
+ const serviceName = serviceClass ? mergedLabels[serviceClass.labelKey] : service.serviceName;
4780
5025
  parts.push(`${service.count} ${serviceName}`);
4781
5026
  }
4782
5027
  });
@@ -4856,12 +5101,12 @@ var ModalTotalPassengers = ({
4856
5101
  onClick: onClose
4857
5102
  }
4858
5103
  ),
4859
- children: title
5104
+ children: title || mergedLabels.title
4860
5105
  }
4861
5106
  ),
4862
5107
  /* @__PURE__ */ jsxs(DialogContent, { children: [
4863
5108
  /* @__PURE__ */ jsx(MessageBar, { shape: "rounded", children: /* @__PURE__ */ jsx(MessageBarBody, { children: infoMessage || defaultInfoMessage }) }),
4864
- isLoading ? /* @__PURE__ */ jsx(Body1, { children: "Loading..." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
5109
+ isLoading ? /* @__PURE__ */ jsx(Body1, { children: mergedLabels.loading }) : /* @__PURE__ */ jsxs(Fragment, { children: [
4865
5110
  /* @__PURE__ */ jsx(
4866
5111
  Accordion,
4867
5112
  {
@@ -4895,7 +5140,7 @@ var ModalTotalPassengers = ({
4895
5140
  {
4896
5141
  className: styles.nestedRow,
4897
5142
  children: [
4898
- /* @__PURE__ */ jsx(Body1, { children: service.name }),
5143
+ /* @__PURE__ */ jsx(Body1, { children: mergedLabels[service.labelKey] }),
4899
5144
  /* @__PURE__ */ jsxs("div", { className: styles.passengerCount, children: [
4900
5145
  /* @__PURE__ */ jsx(
4901
5146
  Button,
@@ -4956,23 +5201,51 @@ var ModalTotalPassengers = ({
4956
5201
  size: "medium",
4957
5202
  className: styles.submitButton,
4958
5203
  onClick: handleSave,
4959
- children: "Simpan"
5204
+ children: mergedLabels.saveButton
4960
5205
  }
4961
5206
  )
4962
5207
  ] })
4963
5208
  ] })
4964
5209
  ] }) }) });
4965
5210
  };
4966
- var useStyles13 = makeStyles({
4967
- dialogSurface: {
4968
- maxWidth: "600px",
4969
- width: "100%"
4970
- },
4971
- closeButton: {
4972
- minWidth: "32px",
4973
- minHeight: "32px"
5211
+
5212
+ // src/components/ModalTypeOfService/ModalTypeOfService.constants.ts
5213
+ var DEFAULT_LABELS8 = {
5214
+ id: {
5215
+ title: "Pilih Tipe Layanan",
5216
+ cancelButton: "Batal",
5217
+ saveButton: "Simpan",
5218
+ vehiclesAlt: "kendaraan"
4974
5219
  },
4975
- passengerSection: {
5220
+ en: {
5221
+ title: "Select Service Type",
5222
+ cancelButton: "Cancel",
5223
+ saveButton: "Save",
5224
+ vehiclesAlt: "vehicles"
5225
+ }
5226
+ };
5227
+ var DEFAULT_VEHICLE_ICONS = {
5228
+ pedestrian: "/assets/images/icons/pedestrian.webp",
5229
+ roadbike: "/assets/images/icons/roadbike.webp",
5230
+ motorbike1: "/assets/images/icons/motorbike-1.webp",
5231
+ motorbike2: "/assets/images/icons/motorbike-2.svg",
5232
+ smallCar: "/assets/images/icons/small-car.webp",
5233
+ smallBus: "/assets/images/icons/small-bus.webp",
5234
+ bigBus: "/assets/images/icons/big-bus.webp",
5235
+ truck: "/assets/images/icons/truck.webp",
5236
+ bigTruck: "/assets/images/icons/big-truck.webp",
5237
+ looseLoad: "/assets/images/icons/loose-load.webp"
5238
+ };
5239
+ var useStyles14 = makeStyles({
5240
+ dialogSurface: {
5241
+ maxWidth: "600px",
5242
+ width: "100%"
5243
+ },
5244
+ closeButton: {
5245
+ minWidth: "32px",
5246
+ minHeight: "32px"
5247
+ },
5248
+ passengerSection: {
4976
5249
  marginTop: tokens.spacingHorizontalM,
4977
5250
  display: "flex",
4978
5251
  flexDirection: "column"
@@ -5007,15 +5280,18 @@ var useStyles13 = makeStyles({
5007
5280
  }
5008
5281
  });
5009
5282
  var ModalTypeOfService = ({
5283
+ language = "id",
5284
+ labels,
5010
5285
  open,
5011
5286
  onClose,
5012
- title = "Pilih Tipe Layanan",
5287
+ title,
5013
5288
  serviceTypes,
5014
5289
  selectedService,
5015
5290
  onSave,
5016
5291
  renderImage
5017
5292
  }) => {
5018
- const styles = useStyles13();
5293
+ const styles = useStyles14();
5294
+ const mergedLabels = { ...DEFAULT_LABELS8[language], ...labels };
5019
5295
  const [selectedServiceTitle, setSelectedServiceTitle] = useState(
5020
5296
  selectedService?.title || ""
5021
5297
  );
@@ -5033,7 +5309,21 @@ var ModalTypeOfService = ({
5033
5309
  }
5034
5310
  return void 0;
5035
5311
  });
5036
- const defaultRenderImage = ({ src, alt, width, height }) => /* @__PURE__ */ jsx("img", { src, alt, width, height, style: { objectFit: "contain" } });
5312
+ const defaultRenderImage = ({
5313
+ src,
5314
+ alt,
5315
+ width,
5316
+ height
5317
+ }) => /* @__PURE__ */ jsx(
5318
+ "img",
5319
+ {
5320
+ src,
5321
+ alt,
5322
+ width,
5323
+ height,
5324
+ style: { objectFit: "contain" }
5325
+ }
5326
+ );
5037
5327
  const imageRenderer = renderImage || defaultRenderImage;
5038
5328
  useEffect(() => {
5039
5329
  const newTitle = selectedService?.title || "";
@@ -5076,7 +5366,9 @@ var ModalTypeOfService = ({
5076
5366
  break;
5077
5367
  }
5078
5368
  if (item.child && item.child.length > 0) {
5079
- const childItem = item.child.find((child) => child.title === selectedServiceTitle);
5369
+ const childItem = item.child.find(
5370
+ (child) => child.title === selectedServiceTitle
5371
+ );
5080
5372
  if (childItem) {
5081
5373
  selectedItem = {
5082
5374
  id: childItem.id,
@@ -5099,51 +5391,56 @@ var ModalTypeOfService = ({
5099
5391
  }
5100
5392
  }
5101
5393
  };
5102
- return /* @__PURE__ */ jsx(
5103
- Dialog,
5104
- {
5105
- open,
5106
- onOpenChange: (_, data) => !data.open && onClose(),
5107
- children: /* @__PURE__ */ jsx(DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxs(DialogBody, { children: [
5108
- /* @__PURE__ */ jsx(
5109
- DialogTitle,
5394
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (_, data) => !data.open && onClose(), children: /* @__PURE__ */ jsx(DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxs(DialogBody, { children: [
5395
+ /* @__PURE__ */ jsx(
5396
+ DialogTitle,
5397
+ {
5398
+ action: /* @__PURE__ */ jsx(
5399
+ Button,
5110
5400
  {
5111
- action: /* @__PURE__ */ jsx(
5112
- Button,
5113
- {
5114
- appearance: "subtle",
5115
- "aria-label": "close",
5116
- icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:dismiss-24-regular" }),
5117
- onClick: onClose,
5118
- className: styles.closeButton
5119
- }
5120
- ),
5121
- children: title
5401
+ appearance: "subtle",
5402
+ "aria-label": "close",
5403
+ icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:dismiss-24-regular" }),
5404
+ onClick: onClose,
5405
+ className: styles.closeButton
5122
5406
  }
5123
5407
  ),
5124
- /* @__PURE__ */ jsxs(DialogContent, { children: [
5125
- /* @__PURE__ */ jsx(
5126
- Accordion,
5408
+ children: title || mergedLabels.title
5409
+ }
5410
+ ),
5411
+ /* @__PURE__ */ jsxs(DialogContent, { children: [
5412
+ /* @__PURE__ */ jsx(
5413
+ Accordion,
5414
+ {
5415
+ collapsible: true,
5416
+ openItems,
5417
+ onToggle: (_, data) => setOpenItems(data.openItems[0]),
5418
+ className: styles.passengerSection,
5419
+ children: /* @__PURE__ */ jsx(
5420
+ RadioGroup,
5127
5421
  {
5128
- collapsible: true,
5129
- openItems,
5130
- onToggle: (_, data) => setOpenItems(data.openItems[0]),
5131
- className: styles.passengerSection,
5132
- children: /* @__PURE__ */ jsx(
5133
- RadioGroup,
5134
- {
5135
- value: selectedServiceTitle,
5136
- onChange: (_, data) => setSelectedServiceTitle(data.value),
5137
- children: serviceTypes.map((item, index) => {
5138
- if (item.type === "accordion") {
5139
- return /* @__PURE__ */ jsxs(AccordionItem, { value: item.id, className: styles.accordionItem, children: [
5422
+ value: selectedServiceTitle,
5423
+ onChange: (_, data) => setSelectedServiceTitle(data.value),
5424
+ children: serviceTypes.map((item, index) => {
5425
+ if (item.type === "accordion") {
5426
+ return /* @__PURE__ */ jsxs(
5427
+ AccordionItem,
5428
+ {
5429
+ value: item.id,
5430
+ className: styles.accordionItem,
5431
+ children: [
5140
5432
  /* @__PURE__ */ jsxs(
5141
5433
  AccordionHeader,
5142
5434
  {
5143
5435
  className: styles.accordionHeader,
5144
5436
  expandIconPosition: "end",
5145
5437
  children: [
5146
- /* @__PURE__ */ jsx("div", { children: imageRenderer({ src: item.image, alt: "vehicles", width: 74, height: 74 }) }),
5438
+ /* @__PURE__ */ jsx("div", { children: imageRenderer({
5439
+ src: item.image,
5440
+ alt: mergedLabels.vehiclesAlt,
5441
+ width: 74,
5442
+ height: 74
5443
+ }) }),
5147
5444
  /* @__PURE__ */ jsxs("div", { className: styles.accordionTitleAndInfo, children: [
5148
5445
  /* @__PURE__ */ jsx(Body1, { children: item.title }),
5149
5446
  /* @__PURE__ */ jsx(Caption1, { children: item.info })
@@ -5175,62 +5472,64 @@ var ModalTypeOfService = ({
5175
5472
  },
5176
5473
  childIndex
5177
5474
  )) })
5178
- ] }, index);
5179
- } else if (item.type === "radio") {
5180
- return /* @__PURE__ */ jsxs(
5181
- "div",
5182
- {
5183
- className: mergeClasses(styles.accordionHeader, styles.accordionItem),
5184
- style: { padding: tokens.spacingHorizontalXS },
5185
- children: [
5186
- /* @__PURE__ */ jsx("div", { style: { marginLeft: 2 }, children: imageRenderer({ src: item.image, alt: item.title, width: 74, height: 74 }) }),
5187
- /* @__PURE__ */ jsxs("div", { className: styles.accordionTitleAndInfo, style: { marginLeft: 18 }, children: [
5475
+ ]
5476
+ },
5477
+ index
5478
+ );
5479
+ } else if (item.type === "radio") {
5480
+ return /* @__PURE__ */ jsxs(
5481
+ "div",
5482
+ {
5483
+ className: mergeClasses(
5484
+ styles.accordionHeader,
5485
+ styles.accordionItem
5486
+ ),
5487
+ style: { padding: tokens.spacingHorizontalXS },
5488
+ children: [
5489
+ /* @__PURE__ */ jsx("div", { style: { marginLeft: 2 }, children: imageRenderer({
5490
+ src: item.image,
5491
+ alt: item.title,
5492
+ width: 74,
5493
+ height: 74
5494
+ }) }),
5495
+ /* @__PURE__ */ jsxs(
5496
+ "div",
5497
+ {
5498
+ className: styles.accordionTitleAndInfo,
5499
+ style: { marginLeft: 18 },
5500
+ children: [
5188
5501
  /* @__PURE__ */ jsx(Body1, { children: item.title }),
5189
5502
  /* @__PURE__ */ jsx(Caption1, { children: item.info })
5190
- ] }),
5191
- /* @__PURE__ */ jsx(Radio, { value: item.title })
5192
- ]
5193
- },
5194
- index
5195
- );
5196
- }
5197
- return null;
5198
- })
5503
+ ]
5504
+ }
5505
+ ),
5506
+ /* @__PURE__ */ jsx(Radio, { value: item.title })
5507
+ ]
5508
+ },
5509
+ index
5510
+ );
5199
5511
  }
5200
- )
5512
+ return null;
5513
+ })
5201
5514
  }
5202
- ),
5203
- /* @__PURE__ */ jsxs("div", { className: styles.footer, children: [
5204
- /* @__PURE__ */ jsx(Button, { appearance: "secondary", shape: "circular", onClick: onClose, children: "Batal" }),
5205
- /* @__PURE__ */ jsx(
5206
- Button,
5207
- {
5208
- appearance: "primary",
5209
- shape: "circular",
5210
- onClick: handleConfirm,
5211
- disabled: !selectedServiceTitle,
5212
- children: "Simpan"
5213
- }
5214
- )
5215
- ] })
5216
- ] })
5217
- ] }) })
5218
- }
5219
- );
5220
- };
5221
-
5222
- // src/components/ModalTypeOfService/constants.ts
5223
- var DEFAULT_VEHICLE_ICONS = {
5224
- pedestrian: "/assets/images/icons/pedestrian.webp",
5225
- roadbike: "/assets/images/icons/roadbike.webp",
5226
- motorbike1: "/assets/images/icons/motorbike-1.webp",
5227
- motorbike2: "/assets/images/icons/motorbike-2.svg",
5228
- smallCar: "/assets/images/icons/small-car.webp",
5229
- smallBus: "/assets/images/icons/small-bus.webp",
5230
- bigBus: "/assets/images/icons/big-bus.webp",
5231
- truck: "/assets/images/icons/truck.webp",
5232
- bigTruck: "/assets/images/icons/big-truck.webp",
5233
- looseLoad: "/assets/images/icons/loose-load.webp"
5515
+ )
5516
+ }
5517
+ ),
5518
+ /* @__PURE__ */ jsxs("div", { className: styles.footer, children: [
5519
+ /* @__PURE__ */ jsx(Button, { appearance: "secondary", shape: "circular", onClick: onClose, children: mergedLabels.cancelButton }),
5520
+ /* @__PURE__ */ jsx(
5521
+ Button,
5522
+ {
5523
+ appearance: "primary",
5524
+ shape: "circular",
5525
+ onClick: handleConfirm,
5526
+ disabled: !selectedServiceTitle,
5527
+ children: mergedLabels.saveButton
5528
+ }
5529
+ )
5530
+ ] })
5531
+ ] })
5532
+ ] }) }) });
5234
5533
  };
5235
5534
 
5236
5535
  // src/components/SortMenu/SortMenu.constants.ts
@@ -5245,7 +5544,7 @@ var getSortLabel = (value) => {
5245
5544
  const option = DEFAULT_SORT_OPTIONS.find((opt) => opt.value === value);
5246
5545
  return option?.label || "Rekomendasi";
5247
5546
  };
5248
- var useStyles14 = makeStyles({
5547
+ var useStyles15 = makeStyles({
5249
5548
  container: {
5250
5549
  display: "flex",
5251
5550
  width: "100%",
@@ -5279,7 +5578,7 @@ var SortMenu = ({
5279
5578
  sortButtonText = "Urutkan Berdasarkan",
5280
5579
  clearFiltersText = "{count} Filter Dipilih"
5281
5580
  }) => {
5282
- const styles = useStyles14();
5581
+ const styles = useStyles15();
5283
5582
  const handleReset = () => {
5284
5583
  onChange("rekomendasi");
5285
5584
  };
@@ -5345,20 +5644,37 @@ var SortMenu = ({
5345
5644
  };
5346
5645
 
5347
5646
  // src/components/ModalFilterTicket/ModalFilterTicket.constants.ts
5348
- var DEFAULT_LABELS3 = {
5349
- title: "Filter dengan",
5350
- serviceTypeLabel: "Jenis Layanan",
5351
- departureTimeLabel: "Waktu pergi",
5352
- arrivalTimeLabel: "Waktu tiba",
5353
- priceLabel: "Harga",
5354
- priceRangeText: (min, max) => {
5355
- const formatPrice = (price) => new Intl.NumberFormat("id-ID").format(price);
5356
- return `Mulai dari IDR ${formatPrice(min)} - ${formatPrice(max)}`;
5357
- },
5358
- durationLabel: "Durasi perjalanan",
5359
- durationRangeText: (min, max) => `Perjalanan ${min} - ${max} jam`,
5360
- resetButton: "Reset",
5361
- applyButton: "Terapkan"
5647
+ var DEFAULT_LABELS9 = {
5648
+ id: {
5649
+ title: "Filter dengan",
5650
+ serviceTypeLabel: "Jenis Layanan",
5651
+ departureTimeLabel: "Waktu pergi",
5652
+ arrivalTimeLabel: "Waktu tiba",
5653
+ priceLabel: "Harga",
5654
+ priceRangeText: (min, max) => {
5655
+ const formatPrice = (price) => new Intl.NumberFormat("id-ID").format(price);
5656
+ return `Mulai dari IDR ${formatPrice(min)} - ${formatPrice(max)}`;
5657
+ },
5658
+ durationLabel: "Durasi perjalanan",
5659
+ durationRangeText: (min, max) => `Perjalanan ${min} - ${max} jam`,
5660
+ resetButton: "Reset",
5661
+ applyButton: "Terapkan"
5662
+ },
5663
+ en: {
5664
+ title: "Filter by",
5665
+ serviceTypeLabel: "Service Type",
5666
+ departureTimeLabel: "Departure time",
5667
+ arrivalTimeLabel: "Arrival time",
5668
+ priceLabel: "Price",
5669
+ priceRangeText: (min, max) => {
5670
+ const formatPrice = (price) => new Intl.NumberFormat("en-US").format(price);
5671
+ return `From IDR ${formatPrice(min)} - ${formatPrice(max)}`;
5672
+ },
5673
+ durationLabel: "Travel duration",
5674
+ durationRangeText: (min, max) => `${min} - ${max} hours trip`,
5675
+ resetButton: "Reset",
5676
+ applyButton: "Apply"
5677
+ }
5362
5678
  };
5363
5679
  var DEFAULT_SERVICE_TYPES = [
5364
5680
  { value: "ropax-regular", label: "Ropax Regular" },
@@ -5383,7 +5699,7 @@ var DEFAULT_DURATION_RANGE = {
5383
5699
  min: 0,
5384
5700
  max: 8
5385
5701
  };
5386
- var useStyles15 = makeStyles({
5702
+ var useStyles16 = makeStyles({
5387
5703
  dialogSurface: {
5388
5704
  maxWidth: "600px",
5389
5705
  width: "100%"
@@ -5422,7 +5738,10 @@ var useStyles15 = makeStyles({
5422
5738
  display: "flex",
5423
5739
  flexDirection: "column",
5424
5740
  gap: tokens.spacingVerticalS,
5425
- ...shorthands.padding(tokens.spacingHorizontalNone, tokens.spacingHorizontalSNudge)
5741
+ ...shorthands.padding(
5742
+ tokens.spacingHorizontalNone,
5743
+ tokens.spacingHorizontalSNudge
5744
+ )
5426
5745
  },
5427
5746
  sliderValues: {
5428
5747
  display: "flex",
@@ -5466,6 +5785,7 @@ var useStyles15 = makeStyles({
5466
5785
  }
5467
5786
  });
5468
5787
  var ModalFilterTicket = ({
5788
+ language = "id",
5469
5789
  open,
5470
5790
  onOpenChange,
5471
5791
  selectedServiceTypes,
@@ -5488,8 +5808,8 @@ var ModalFilterTicket = ({
5488
5808
  minDuration = DEFAULT_DURATION_RANGE.min,
5489
5809
  maxDuration = DEFAULT_DURATION_RANGE.max
5490
5810
  }) => {
5491
- const styles = useStyles15();
5492
- const mergedLabels = { ...DEFAULT_LABELS3, ...labels };
5811
+ const styles = useStyles16();
5812
+ const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
5493
5813
  const [rangeReady, setRangeReady] = useState(false);
5494
5814
  useEffect(() => {
5495
5815
  if (open) {
@@ -5644,7 +5964,9 @@ var ModalFilterTicket = ({
5644
5964
  /* @__PURE__ */ jsxs("div", { className: styles.section, children: [
5645
5965
  /* @__PURE__ */ jsx(Body1, { children: mergedLabels.serviceTypeLabel }),
5646
5966
  /* @__PURE__ */ jsx("div", { className: styles.buttonGrid, children: serviceTypes.map((service) => {
5647
- const isSelected = selectedServiceTypes.includes(service.value);
5967
+ const isSelected = selectedServiceTypes.includes(
5968
+ service.value
5969
+ );
5648
5970
  return /* @__PURE__ */ jsx(
5649
5971
  Button,
5650
5972
  {
@@ -5662,26 +5984,58 @@ var ModalFilterTicket = ({
5662
5984
  /* @__PURE__ */ jsx(Divider, {}),
5663
5985
  /* @__PURE__ */ jsxs("div", { className: styles.section, children: [
5664
5986
  /* @__PURE__ */ jsx(Body1, { children: mergedLabels.departureTimeLabel }),
5665
- /* @__PURE__ */ jsx(Row, { children: timeSlots.map((slot) => /* @__PURE__ */ jsx(Col, { xs: 6, sm: 6, md: 6, lg: 3, xl: 3, xxl: 3, xxxl: 3, children: /* @__PURE__ */ jsx("div", { className: styles.checkboxWrapper, children: /* @__PURE__ */ jsx(
5666
- Checkbox,
5987
+ /* @__PURE__ */ jsx(Row, { children: timeSlots.map((slot) => /* @__PURE__ */ jsx(
5988
+ Col,
5667
5989
  {
5668
- label: slot.label,
5669
- checked: departureTime.includes(slot.value),
5670
- onChange: (_, data) => handleDepartureTimeChange(slot.value, data.checked)
5671
- }
5672
- ) }) }, slot.value)) })
5990
+ xs: 6,
5991
+ sm: 6,
5992
+ md: 6,
5993
+ lg: 3,
5994
+ xl: 3,
5995
+ xxl: 3,
5996
+ xxxl: 3,
5997
+ children: /* @__PURE__ */ jsx("div", { className: styles.checkboxWrapper, children: /* @__PURE__ */ jsx(
5998
+ Checkbox,
5999
+ {
6000
+ label: slot.label,
6001
+ checked: departureTime.includes(slot.value),
6002
+ onChange: (_, data) => handleDepartureTimeChange(
6003
+ slot.value,
6004
+ data.checked
6005
+ )
6006
+ }
6007
+ ) })
6008
+ },
6009
+ slot.value
6010
+ )) })
5673
6011
  ] }),
5674
6012
  /* @__PURE__ */ jsx(Divider, {}),
5675
6013
  /* @__PURE__ */ jsxs("div", { className: styles.section, children: [
5676
6014
  /* @__PURE__ */ jsx(Body1, { children: mergedLabels.arrivalTimeLabel }),
5677
- /* @__PURE__ */ jsx(Row, { children: timeSlots.map((slot) => /* @__PURE__ */ jsx(Col, { xs: 6, sm: 6, md: 6, lg: 3, xl: 3, xxl: 3, xxxl: 3, children: /* @__PURE__ */ jsx("div", { className: styles.checkboxWrapper, children: /* @__PURE__ */ jsx(
5678
- Checkbox,
6015
+ /* @__PURE__ */ jsx(Row, { children: timeSlots.map((slot) => /* @__PURE__ */ jsx(
6016
+ Col,
5679
6017
  {
5680
- label: slot.label,
5681
- checked: arrivalTime.includes(slot.value),
5682
- onChange: (_, data) => handleArrivalTimeChange(slot.value, data.checked)
5683
- }
5684
- ) }) }, slot.value)) })
6018
+ xs: 6,
6019
+ sm: 6,
6020
+ md: 6,
6021
+ lg: 3,
6022
+ xl: 3,
6023
+ xxl: 3,
6024
+ xxxl: 3,
6025
+ children: /* @__PURE__ */ jsx("div", { className: styles.checkboxWrapper, children: /* @__PURE__ */ jsx(
6026
+ Checkbox,
6027
+ {
6028
+ label: slot.label,
6029
+ checked: arrivalTime.includes(slot.value),
6030
+ onChange: (_, data) => handleArrivalTimeChange(
6031
+ slot.value,
6032
+ data.checked
6033
+ )
6034
+ }
6035
+ ) })
6036
+ },
6037
+ slot.value
6038
+ )) })
5685
6039
  ] }),
5686
6040
  /* @__PURE__ */ jsx(Divider, {}),
5687
6041
  /* @__PURE__ */ jsxs("div", { className: styles.containerRange, children: [
@@ -5712,7 +6066,10 @@ var ModalFilterTicket = ({
5712
6066
  /* @__PURE__ */ jsxs("div", { className: styles.containerRange, children: [
5713
6067
  /* @__PURE__ */ jsxs("div", { className: styles.spaceText, children: [
5714
6068
  /* @__PURE__ */ jsx(Subtitle2, { children: mergedLabels.durationLabel }),
5715
- /* @__PURE__ */ jsx(Body1, { children: mergedLabels.durationRangeText(durationRange[0], durationRange[1]) })
6069
+ /* @__PURE__ */ jsx(Body1, { children: mergedLabels.durationRangeText(
6070
+ durationRange[0],
6071
+ durationRange[1]
6072
+ ) })
5716
6073
  ] }),
5717
6074
  /* @__PURE__ */ jsxs("div", { className: styles.sliderContainer, children: [
5718
6075
  rangeReady && /* @__PURE__ */ jsx(
@@ -5758,13 +6115,13 @@ var ModalFilterTicket = ({
5758
6115
  };
5759
6116
 
5760
6117
  // src/components/DateFilter/DateFilter.constants.ts
5761
- var DEFAULT_LABELS4 = {
6118
+ var DEFAULT_LABELS10 = {
5762
6119
  prevButtonAriaLabel: "Previous dates",
5763
6120
  nextButtonAriaLabel: "Next dates",
5764
6121
  calendarButtonAriaLabel: "Open calendar"
5765
6122
  };
5766
6123
  var DEFAULT_SCROLL_AMOUNT = 150;
5767
- var useStyles16 = makeStyles({
6124
+ var useStyles17 = makeStyles({
5768
6125
  container: {
5769
6126
  display: "flex",
5770
6127
  alignItems: "stretch",
@@ -5845,9 +6202,9 @@ var DateFilter = ({
5845
6202
  scrollAmount = DEFAULT_SCROLL_AMOUNT,
5846
6203
  labels
5847
6204
  }) => {
5848
- const styles = useStyles16();
6205
+ const styles = useStyles17();
5849
6206
  const scrollRef = useRef(null);
5850
- const mergedLabels = { ...DEFAULT_LABELS4, ...labels };
6207
+ const mergedLabels = { ...DEFAULT_LABELS10, ...labels };
5851
6208
  const handlePrev = () => {
5852
6209
  scrollRef.current?.scrollBy({ left: -scrollAmount, behavior: "smooth" });
5853
6210
  };
@@ -5905,6 +6262,54 @@ var DateFilter = ({
5905
6262
  };
5906
6263
 
5907
6264
  // src/components/ModalSearchTicket/ModalSearchTicket.constants.ts
6265
+ var DEFAULT_LABELS11 = {
6266
+ id: {
6267
+ title: "Cari Jadwal Lainnya",
6268
+ fromLabel: "Dari",
6269
+ fromPlaceholder: "Pilih pelabuhan asal",
6270
+ fromRequired: "Pelabuhan asal wajib diisi",
6271
+ toLabel: "Ke",
6272
+ toPlaceholder: "Pilih pelabuhan tujuan",
6273
+ toRequired: "Pelabuhan tujuan wajib diisi",
6274
+ departureDateLabel: "Tanggal Berangkat",
6275
+ departureDatePlaceholder: "Pilih Tanggal Berangkat",
6276
+ departureDateRequired: "Tanggal Berangkat wajib diisi",
6277
+ roundTripLabel: "Pulang Pergi",
6278
+ returnDateLabel: "Tanggal Pulang",
6279
+ returnDatePlaceholder: "Pilih Tanggal Pulang",
6280
+ returnDateRequired: "Tanggal Pulang wajib diisi",
6281
+ serviceClassLabel: "Kelas Layanan",
6282
+ serviceClassPlaceholder: "Pilih Kelas Layanan",
6283
+ typeOfServiceLabel: "Jenis penumpang",
6284
+ typeOfServicePlaceholder: "Pilih Jenis penumpang",
6285
+ passengerLabel: "Penumpang",
6286
+ passengerPlaceholder: "Pilih Penumpang",
6287
+ searchButton: "Cari Tiket"
6288
+ },
6289
+ en: {
6290
+ title: "Search Other Schedules",
6291
+ fromLabel: "From",
6292
+ fromPlaceholder: "Select origin harbor",
6293
+ fromRequired: "Origin harbor is required",
6294
+ toLabel: "To",
6295
+ toPlaceholder: "Select destination harbor",
6296
+ toRequired: "Destination harbor is required",
6297
+ departureDateLabel: "Departure Date",
6298
+ departureDatePlaceholder: "Select Departure Date",
6299
+ departureDateRequired: "Departure date is required",
6300
+ roundTripLabel: "Round Trip",
6301
+ returnDateLabel: "Return Date",
6302
+ returnDatePlaceholder: "Select Return Date",
6303
+ returnDateRequired: "Return date is required",
6304
+ serviceClassLabel: "Service Class",
6305
+ serviceClassPlaceholder: "Select Service Class",
6306
+ typeOfServiceLabel: "Type of Passenger",
6307
+ typeOfServicePlaceholder: "Select Type of Passenger",
6308
+ passengerLabel: "Passenger",
6309
+ passengerPlaceholder: "Select Passenger",
6310
+ searchButton: "Search Ticket"
6311
+ }
6312
+ };
5908
6313
  var DEFAULT_FORM_VALUES = {
5909
6314
  from: "",
5910
6315
  to: "",
@@ -5915,7 +6320,7 @@ var DEFAULT_FORM_VALUES = {
5915
6320
  typeOfService: "",
5916
6321
  passenger: ""
5917
6322
  };
5918
- var useStyles17 = makeStyles({
6323
+ var useStyles18 = makeStyles({
5919
6324
  dialogSurface: {
5920
6325
  maxWidth: "900px",
5921
6326
  width: "100%"
@@ -5988,6 +6393,8 @@ var useStyles17 = makeStyles({
5988
6393
  }
5989
6394
  });
5990
6395
  var ModalSearchTicket = ({
6396
+ language = "id",
6397
+ labels,
5991
6398
  open,
5992
6399
  onClose,
5993
6400
  defaultValues,
@@ -6015,7 +6422,8 @@ var ModalSearchTicket = ({
6015
6422
  showRoundTrip = true,
6016
6423
  ...props
6017
6424
  }) => {
6018
- const styles = useStyles17();
6425
+ const styles = useStyles18();
6426
+ const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
6019
6427
  const { control, setValue, handleSubmit, watch } = useForm({
6020
6428
  defaultValues: {
6021
6429
  ...DEFAULT_FORM_VALUES,
@@ -6075,7 +6483,7 @@ var ModalSearchTicket = ({
6075
6483
  onClick: onClose
6076
6484
  }
6077
6485
  ),
6078
- children: "Cari Jadwal Lainnya"
6486
+ children: mergedLabels.title
6079
6487
  }
6080
6488
  ),
6081
6489
  /* @__PURE__ */ jsx(DialogContent, { className: styles.content, children: /* @__PURE__ */ jsx("form", { onSubmit: handleSubmit(onFormSubmit), children: /* @__PURE__ */ jsxs(Row, { style: { width: "100%" }, className: styles.formInnerRow, children: [
@@ -6096,7 +6504,7 @@ var ModalSearchTicket = ({
6096
6504
  InputDynamic_default,
6097
6505
  {
6098
6506
  name: "from",
6099
- label: "Dari",
6507
+ label: mergedLabels.fromLabel,
6100
6508
  control,
6101
6509
  type: "text",
6102
6510
  contentBefore: /* @__PURE__ */ jsx(
@@ -6108,11 +6516,11 @@ var ModalSearchTicket = ({
6108
6516
  ),
6109
6517
  appearance: "filled-lighter",
6110
6518
  size: "medium",
6111
- placeholder: "Pilih pelabuhan asal",
6519
+ placeholder: mergedLabels.fromPlaceholder,
6112
6520
  onClick: onSelectOrigin,
6113
6521
  onChange: handleFromChange,
6114
6522
  validationRules: {
6115
- required: "Pelabuhan asal wajib diisi"
6523
+ required: mergedLabels.fromRequired
6116
6524
  },
6117
6525
  required: true
6118
6526
  }
@@ -6164,7 +6572,7 @@ var ModalSearchTicket = ({
6164
6572
  InputDynamic_default,
6165
6573
  {
6166
6574
  name: "to",
6167
- label: "Ke",
6575
+ label: mergedLabels.toLabel,
6168
6576
  control,
6169
6577
  type: "text",
6170
6578
  contentBefore: /* @__PURE__ */ jsx(
@@ -6177,10 +6585,10 @@ var ModalSearchTicket = ({
6177
6585
  disabled: toDisabled,
6178
6586
  appearance: "filled-lighter",
6179
6587
  size: "medium",
6180
- placeholder: "Pilih pelabuhan tujuan",
6588
+ placeholder: mergedLabels.toPlaceholder,
6181
6589
  onClick: onSelectDestination,
6182
6590
  validationRules: {
6183
- required: "Pelabuhan tujuan wajib diisi"
6591
+ required: mergedLabels.toRequired
6184
6592
  },
6185
6593
  required: true
6186
6594
  }
@@ -6203,7 +6611,7 @@ var ModalSearchTicket = ({
6203
6611
  InputDynamic_default,
6204
6612
  {
6205
6613
  name: "startDate",
6206
- label: "Tanggal Berangkat",
6614
+ label: mergedLabels.departureDateLabel,
6207
6615
  control,
6208
6616
  type: "text",
6209
6617
  contentBefore: /* @__PURE__ */ jsx(
@@ -6215,11 +6623,11 @@ var ModalSearchTicket = ({
6215
6623
  ),
6216
6624
  appearance: "filled-lighter",
6217
6625
  size: "medium",
6218
- placeholder: "Pilih Tanggal Berangkat",
6626
+ placeholder: mergedLabels.departureDatePlaceholder,
6219
6627
  onClick: onSelectDepartureDate,
6220
6628
  required: true,
6221
6629
  validationRules: {
6222
- required: "Tanggal Berangkat wajib diisi"
6630
+ required: mergedLabels.departureDateRequired
6223
6631
  }
6224
6632
  }
6225
6633
  ) })
@@ -6240,7 +6648,7 @@ var ModalSearchTicket = ({
6240
6648
  InputDynamic_default,
6241
6649
  {
6242
6650
  name: "roundTrip",
6243
- label: "Pulang Pergi",
6651
+ label: mergedLabels.roundTripLabel,
6244
6652
  control,
6245
6653
  type: "switch",
6246
6654
  disabled: roundTripDisabled,
@@ -6263,7 +6671,7 @@ var ModalSearchTicket = ({
6263
6671
  InputDynamic_default,
6264
6672
  {
6265
6673
  name: "endDate",
6266
- label: "Tanggal Pulang",
6674
+ label: mergedLabels.returnDateLabel,
6267
6675
  control,
6268
6676
  type: "text",
6269
6677
  contentBefore: /* @__PURE__ */ jsx(
@@ -6275,13 +6683,13 @@ var ModalSearchTicket = ({
6275
6683
  ),
6276
6684
  appearance: "filled-lighter",
6277
6685
  size: "medium",
6278
- placeholder: "Pilih Tanggal Pulang",
6686
+ placeholder: mergedLabels.returnDatePlaceholder,
6279
6687
  onClick: onSelectReturnDate,
6280
6688
  disabled: endDateDisabled,
6281
6689
  style: { borderColor: "transparent" },
6282
6690
  required: roundTripValue,
6283
6691
  validationRules: {
6284
- required: "Tanggal Pulang wajib diisi"
6692
+ required: mergedLabels.returnDateRequired
6285
6693
  }
6286
6694
  }
6287
6695
  )
@@ -6331,7 +6739,7 @@ var ModalSearchTicket = ({
6331
6739
  InputDynamic_default,
6332
6740
  {
6333
6741
  name: "serviceClass",
6334
- label: "Kelas Layanan",
6742
+ label: mergedLabels.serviceClassLabel,
6335
6743
  control,
6336
6744
  type: "text",
6337
6745
  contentBefore: /* @__PURE__ */ jsx(
@@ -6343,7 +6751,7 @@ var ModalSearchTicket = ({
6343
6751
  ),
6344
6752
  appearance: "filled-lighter",
6345
6753
  size: "medium",
6346
- placeholder: "Pilih Kelas Layanan",
6754
+ placeholder: mergedLabels.serviceClassPlaceholder,
6347
6755
  onClick: onSelectServiceClass,
6348
6756
  required: true,
6349
6757
  disabled: serviceClassDisabled
@@ -6365,7 +6773,7 @@ var ModalSearchTicket = ({
6365
6773
  InputDynamic_default,
6366
6774
  {
6367
6775
  name: "typeOfService",
6368
- label: "Jenis penumpang",
6776
+ label: mergedLabels.typeOfServiceLabel,
6369
6777
  control,
6370
6778
  type: "text",
6371
6779
  contentBefore: /* @__PURE__ */ jsx(
@@ -6377,7 +6785,7 @@ var ModalSearchTicket = ({
6377
6785
  ),
6378
6786
  appearance: "filled-lighter",
6379
6787
  size: "medium",
6380
- placeholder: "Pilih Jenis penumpang",
6788
+ placeholder: mergedLabels.typeOfServicePlaceholder,
6381
6789
  onClick: onSelectTypeOfService,
6382
6790
  required: true,
6383
6791
  disabled: typeOfServiceDisabled
@@ -6400,7 +6808,7 @@ var ModalSearchTicket = ({
6400
6808
  {
6401
6809
  required: true,
6402
6810
  name: "passenger",
6403
- label: "Penumpang",
6811
+ label: mergedLabels.passengerLabel,
6404
6812
  control,
6405
6813
  type: "text",
6406
6814
  contentBefore: /* @__PURE__ */ jsx(
@@ -6412,7 +6820,7 @@ var ModalSearchTicket = ({
6412
6820
  ),
6413
6821
  appearance: "filled-lighter",
6414
6822
  size: "medium",
6415
- placeholder: "Pilih Penumpang",
6823
+ placeholder: mergedLabels.passengerPlaceholder,
6416
6824
  onClick: onSelectPassenger
6417
6825
  }
6418
6826
  )
@@ -6440,7 +6848,7 @@ var ModalSearchTicket = ({
6440
6848
  type: "submit",
6441
6849
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-20-filled" }),
6442
6850
  disabled: isSubmitDisabled,
6443
- children: "Cari Tiket"
6851
+ children: mergedLabels.searchButton
6444
6852
  }
6445
6853
  )
6446
6854
  }
@@ -6450,7 +6858,7 @@ var ModalSearchTicket = ({
6450
6858
  }
6451
6859
  );
6452
6860
  };
6453
- var useStyles18 = makeStyles({
6861
+ var useStyles19 = makeStyles({
6454
6862
  stepperWrapper: {
6455
6863
  position: "relative",
6456
6864
  width: "100%",
@@ -6573,7 +6981,7 @@ var Stepper = ({
6573
6981
  currentStep,
6574
6982
  className
6575
6983
  }) => {
6576
- const styles = useStyles18();
6984
+ const styles = useStyles19();
6577
6985
  const currentStepIndex = useMemo(() => {
6578
6986
  if (typeof currentStep === "number") {
6579
6987
  return steps.findIndex((step) => step.number === currentStep);
@@ -6626,7 +7034,23 @@ var Stepper = ({
6626
7034
  ] }, step.id)) })
6627
7035
  ] }) });
6628
7036
  };
6629
- var useStyles19 = makeStyles({
7037
+
7038
+ // src/components/CardOrdererInfo/CardOrdererInfo.constants.ts
7039
+ var DEFAULT_LABELS12 = {
7040
+ id: {
7041
+ title: "Informasi Pemesan",
7042
+ ordererName: "Nama Pemesan",
7043
+ phoneNumber: "Nomor Handphone",
7044
+ email: "Email"
7045
+ },
7046
+ en: {
7047
+ title: "Orderer Information",
7048
+ ordererName: "Orderer Name",
7049
+ phoneNumber: "Phone Number",
7050
+ email: "Email"
7051
+ }
7052
+ };
7053
+ var useStyles20 = makeStyles({
6630
7054
  card: {
6631
7055
  padding: "1.5rem",
6632
7056
  borderRadius: tokens.borderRadiusXLarge,
@@ -6651,29 +7075,32 @@ var useStyles19 = makeStyles({
6651
7075
  }
6652
7076
  });
6653
7077
  var CardOrdererInfo = ({
7078
+ language = "id",
6654
7079
  orderer,
7080
+ labels,
6655
7081
  className
6656
7082
  }) => {
6657
- const styles = useStyles19();
7083
+ const styles = useStyles20();
7084
+ const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
6658
7085
  return /* @__PURE__ */ jsxs(Card, { className: className || styles.card, children: [
6659
- /* @__PURE__ */ jsx(Title3, { children: "Informasi Pemesan" }),
7086
+ /* @__PURE__ */ jsx(Title3, { children: mergedLabels.title }),
6660
7087
  /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
6661
7088
  /* @__PURE__ */ jsxs("div", { className: styles.fieldGroup, children: [
6662
- /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: "Nama Pemesan" }),
7089
+ /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: mergedLabels.ordererName }),
6663
7090
  /* @__PURE__ */ jsx(Body1, { className: styles.value, children: orderer?.name || "-" })
6664
7091
  ] }),
6665
7092
  /* @__PURE__ */ jsxs("div", { className: styles.fieldGroup, children: [
6666
- /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: "Nomor Handphone" }),
7093
+ /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: mergedLabels.phoneNumber }),
6667
7094
  /* @__PURE__ */ jsx(Body1, { className: styles.value, children: orderer?.phoneNumber || "-" })
6668
7095
  ] }),
6669
7096
  /* @__PURE__ */ jsxs("div", { className: styles.fieldGroup, children: [
6670
- /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: "Email" }),
7097
+ /* @__PURE__ */ jsx(Subtitle2, { className: styles.label, children: mergedLabels.email }),
6671
7098
  /* @__PURE__ */ jsx(Body1, { className: styles.value, children: orderer?.email || "-" })
6672
7099
  ] })
6673
7100
  ] })
6674
7101
  ] });
6675
7102
  };
6676
- var useStyles20 = makeStyles({
7103
+ var useStyles21 = makeStyles({
6677
7104
  dialogSurface: {
6678
7105
  maxWidth: "600px",
6679
7106
  width: "100%",
@@ -6726,7 +7153,7 @@ var ModalListPassenger = ({
6726
7153
  sameAsOrderer,
6727
7154
  onSameAsOrdererChange
6728
7155
  }) => {
6729
- const styles = useStyles20();
7156
+ const styles = useStyles21();
6730
7157
  const handleClose = () => {
6731
7158
  onClose();
6732
7159
  onSearchChange("");
@@ -6840,7 +7267,7 @@ var ModalListPassenger = ({
6840
7267
  }
6841
7268
  );
6842
7269
  };
6843
- var useStyles21 = makeStyles({
7270
+ var useStyles22 = makeStyles({
6844
7271
  dialogSurface: {
6845
7272
  maxWidth: "600px",
6846
7273
  width: "100%",
@@ -6870,7 +7297,7 @@ var ModalPassengerForm = ({
6870
7297
  cityOptions,
6871
7298
  ticketClassOptions
6872
7299
  }) => {
6873
- const styles = useStyles21();
7300
+ const styles = useStyles22();
6874
7301
  const { control, handleSubmit, reset } = useForm({
6875
7302
  defaultValues
6876
7303
  });
@@ -7056,6 +7483,18 @@ var ModalPassengerForm = ({
7056
7483
  }
7057
7484
  );
7058
7485
  };
7486
+
7487
+ // src/components/CardPassengerList/CardPassengerList.constants.ts
7488
+ var DEFAULT_LABELS13 = {
7489
+ id: {
7490
+ defaultTitle: "Data Penumpang",
7491
+ passengerPrefix: "Penumpang"
7492
+ },
7493
+ en: {
7494
+ defaultTitle: "Passenger Data",
7495
+ passengerPrefix: "Passenger"
7496
+ }
7497
+ };
7059
7498
  var getBadgeConfig = (ticketClass) => {
7060
7499
  const normalizedClass = ticketClass?.toUpperCase();
7061
7500
  switch (normalizedClass) {
@@ -7084,7 +7523,7 @@ var getBadgeConfig = (ticketClass) => {
7084
7523
  };
7085
7524
  }
7086
7525
  };
7087
- var useStyles22 = makeStyles({
7526
+ var useStyles23 = makeStyles({
7088
7527
  card: {
7089
7528
  padding: "1.5rem",
7090
7529
  borderRadius: tokens.borderRadiusXLarge,
@@ -7160,15 +7599,19 @@ var useStyles22 = makeStyles({
7160
7599
  }
7161
7600
  });
7162
7601
  var CardPassengerList = ({
7163
- title = "Data Penumpang",
7602
+ language = "id",
7603
+ title,
7164
7604
  passengers,
7165
7605
  onPassengerClick,
7606
+ labels,
7166
7607
  className
7167
7608
  }) => {
7168
- const styles = useStyles22();
7609
+ const styles = useStyles23();
7610
+ const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
7611
+ const displayTitle = title || mergedLabels.defaultTitle;
7169
7612
  return /* @__PURE__ */ jsxs(Card, { className: className || styles.card, children: [
7170
7613
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
7171
- /* @__PURE__ */ jsx(Title3, { className: styles.headerTitle, children: title }),
7614
+ /* @__PURE__ */ jsx(Title3, { className: styles.headerTitle, children: displayTitle }),
7172
7615
  /* @__PURE__ */ jsx("div", { className: styles.headerLine })
7173
7616
  ] }),
7174
7617
  /* @__PURE__ */ jsx("div", { className: styles.passengerList, children: passengers.map((passenger, index) => {
@@ -7188,32 +7631,46 @@ var CardPassengerList = ({
7188
7631
  },
7189
7632
  children: [
7190
7633
  /* @__PURE__ */ jsx("div", { className: styles.passengerInfo, children: /* @__PURE__ */ jsxs(Subtitle2, { className: styles.passengerText, children: [
7191
- passenger.name || `Penumpang ${index + 1}`,
7192
- " (",
7634
+ passenger.name || `${mergedLabels.passengerPrefix} ${index + 1}`,
7635
+ " ",
7636
+ "(",
7193
7637
  passenger.passengerType,
7194
7638
  ")"
7195
7639
  ] }) }),
7196
- /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "1rem" }, children: [
7197
- /* @__PURE__ */ jsxs("div", { className: styles.badgeContainer, children: [
7198
- badgeConfig.icon && /* @__PURE__ */ jsx(
7199
- "img",
7200
- {
7201
- src: badgeConfig.icon,
7202
- alt: passenger.serviceName,
7203
- className: styles.badgeIcon
7204
- }
7205
- ),
7206
- /* @__PURE__ */ jsx(
7207
- "div",
7208
- {
7209
- className: styles.badgeContent,
7210
- style: { backgroundColor: badgeConfig.color },
7211
- children: passenger.serviceName
7212
- }
7213
- )
7214
- ] }),
7215
- /* @__PURE__ */ jsx(Icon, { icon: "fluent:chevron-right-24-regular", width: 20, height: 20 })
7216
- ] })
7640
+ /* @__PURE__ */ jsxs(
7641
+ "div",
7642
+ {
7643
+ style: { display: "flex", alignItems: "center", gap: "1rem" },
7644
+ children: [
7645
+ /* @__PURE__ */ jsxs("div", { className: styles.badgeContainer, children: [
7646
+ badgeConfig.icon && /* @__PURE__ */ jsx(
7647
+ "img",
7648
+ {
7649
+ src: badgeConfig.icon,
7650
+ alt: passenger.serviceName,
7651
+ className: styles.badgeIcon
7652
+ }
7653
+ ),
7654
+ /* @__PURE__ */ jsx(
7655
+ "div",
7656
+ {
7657
+ className: styles.badgeContent,
7658
+ style: { backgroundColor: badgeConfig.color },
7659
+ children: passenger.serviceName
7660
+ }
7661
+ )
7662
+ ] }),
7663
+ /* @__PURE__ */ jsx(
7664
+ Icon,
7665
+ {
7666
+ icon: "fluent:chevron-right-24-regular",
7667
+ width: 20,
7668
+ height: 20
7669
+ }
7670
+ )
7671
+ ]
7672
+ }
7673
+ )
7217
7674
  ]
7218
7675
  },
7219
7676
  passenger.id || `passenger-${index}`
@@ -7221,7 +7678,7 @@ var CardPassengerList = ({
7221
7678
  }) })
7222
7679
  ] });
7223
7680
  };
7224
- var useStyles23 = makeStyles({
7681
+ var useStyles24 = makeStyles({
7225
7682
  card: {
7226
7683
  padding: "1.5rem",
7227
7684
  borderRadius: tokens.borderRadiusXLarge,
@@ -7258,7 +7715,7 @@ var CardVehicleDetail = ({
7258
7715
  hasLoad,
7259
7716
  onHasLoadChange
7260
7717
  }) => {
7261
- const styles = useStyles23();
7718
+ const styles = useStyles24();
7262
7719
  return /* @__PURE__ */ jsxs(Card, { className: styles.card, children: [
7263
7720
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [
7264
7721
  /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: "Detail Kendaraan" }),
@@ -7306,7 +7763,7 @@ var CardVehicleDetail = ({
7306
7763
  ] })
7307
7764
  ] });
7308
7765
  };
7309
- var useStyles24 = makeStyles({
7766
+ var useStyles25 = makeStyles({
7310
7767
  card: {
7311
7768
  padding: "1.5rem",
7312
7769
  borderRadius: tokens.borderRadiusXLarge,
@@ -7363,7 +7820,7 @@ var CardVehicleOwnerForm = ({
7363
7820
  companyOptions = [],
7364
7821
  cityOptions = []
7365
7822
  }) => {
7366
- const styles = useStyles24();
7823
+ const styles = useStyles25();
7367
7824
  return /* @__PURE__ */ jsxs(Card, { className: styles.card, children: [
7368
7825
  /* @__PURE__ */ jsxs("div", { className: styles.header, children: [
7369
7826
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", flex: 1 }, children: [
@@ -8007,7 +8464,33 @@ var CardVehicleOwnerForm = ({
8007
8464
  )) })
8008
8465
  ] });
8009
8466
  };
8010
- var useStyles25 = makeStyles({
8467
+
8468
+ // src/components/CardBookingTicket/CardBookingTicket.constants.ts
8469
+ var DEFAULT_LABELS14 = {
8470
+ id: {
8471
+ bookingDetails: "Booking Details",
8472
+ routeTitle: "Rute Perjalanan",
8473
+ estimationPrefix: "Estimasi",
8474
+ totalPriceLabel: "Total Harga",
8475
+ nextButton: "Lanjutkan",
8476
+ previousButton: "Sebelumnya",
8477
+ viewBookingButton: "Lihat Pemesanan",
8478
+ changePaymentButton: "Ubah Metode Pembayaran",
8479
+ timezoneLabel: "WIB"
8480
+ },
8481
+ en: {
8482
+ bookingDetails: "Booking Details",
8483
+ routeTitle: "Travel Route",
8484
+ estimationPrefix: "Estimation",
8485
+ totalPriceLabel: "Total Price",
8486
+ nextButton: "Continue",
8487
+ previousButton: "Previous",
8488
+ viewBookingButton: "View Booking",
8489
+ changePaymentButton: "Change Payment Method",
8490
+ timezoneLabel: "WIB"
8491
+ }
8492
+ };
8493
+ var useStyles26 = makeStyles({
8011
8494
  container: {
8012
8495
  display: "flex",
8013
8496
  flexDirection: "column",
@@ -8119,6 +8602,8 @@ var useStyles25 = makeStyles({
8119
8602
  }
8120
8603
  });
8121
8604
  var CardBookingTicket = ({
8605
+ language = "id",
8606
+ labels,
8122
8607
  shipName = "KMP PORTLINK",
8123
8608
  shipType = "Water Taxi",
8124
8609
  shipTypeColor = "success",
@@ -8137,13 +8622,22 @@ var CardBookingTicket = ({
8137
8622
  onPrevious,
8138
8623
  className
8139
8624
  }) => {
8140
- const styles = useStyles25();
8625
+ const styles = useStyles26();
8626
+ const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
8141
8627
  return /* @__PURE__ */ jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxs("div", { className: styles.bookingDetail, children: [
8142
8628
  /* @__PURE__ */ jsxs(Card, { className: styles.bookingDetailTop, children: [
8143
- /* @__PURE__ */ jsx(Subtitle1, { children: "Booking Details" }),
8629
+ /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.bookingDetails }),
8144
8630
  /* @__PURE__ */ jsxs("div", { className: styles.headerBookingDetail, children: [
8145
8631
  /* @__PURE__ */ jsxs("div", { className: styles.shipInfo, children: [
8146
- /* @__PURE__ */ jsx("img", { src: "/assets/logo/asdp-default.svg", width: 81, height: 54, alt: "asdp" }),
8632
+ /* @__PURE__ */ jsx(
8633
+ "img",
8634
+ {
8635
+ src: "/assets/logo/asdp-default.svg",
8636
+ width: 81,
8637
+ height: 54,
8638
+ alt: "asdp"
8639
+ }
8640
+ ),
8147
8641
  /* @__PURE__ */ jsx(Body1, { children: shipName })
8148
8642
  ] }),
8149
8643
  /* @__PURE__ */ jsx(
@@ -8159,20 +8653,22 @@ var CardBookingTicket = ({
8159
8653
  }
8160
8654
  )
8161
8655
  ] }),
8162
- /* @__PURE__ */ jsx(Body1Strong, { children: "Rute Perjalanan" }),
8656
+ /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.routeTitle }),
8163
8657
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: styles.ticketInfo, children: [
8164
8658
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
8165
8659
  /* @__PURE__ */ jsx(Caption2, { children: departureDay }),
8166
8660
  /* @__PURE__ */ jsxs(Body1Stronger, { children: [
8167
8661
  departureTime,
8168
- " WIB"
8662
+ " ",
8663
+ mergedLabels.timezoneLabel
8169
8664
  ] }),
8170
8665
  /* @__PURE__ */ jsx(Caption2, { children: departureLocation })
8171
8666
  ] }),
8172
8667
  /* @__PURE__ */ jsxs("div", { className: styles.ticketDuration, children: [
8173
8668
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-24-regular" }),
8174
8669
  /* @__PURE__ */ jsxs(Caption2, { children: [
8175
- "Estimasi ",
8670
+ mergedLabels.estimationPrefix,
8671
+ " ",
8176
8672
  duration
8177
8673
  ] })
8178
8674
  ] }),
@@ -8180,7 +8676,8 @@ var CardBookingTicket = ({
8180
8676
  /* @__PURE__ */ jsx(Caption2, { children: arrivalDay }),
8181
8677
  /* @__PURE__ */ jsxs(Body1Stronger, { children: [
8182
8678
  arrivalTime,
8183
- " WIB"
8679
+ " ",
8680
+ mergedLabels.timezoneLabel
8184
8681
  ] }),
8185
8682
  /* @__PURE__ */ jsx(Caption2, { children: arrivalLocation })
8186
8683
  ] })
@@ -8190,7 +8687,7 @@ var CardBookingTicket = ({
8190
8687
  ] }),
8191
8688
  /* @__PURE__ */ jsxs(Card, { className: styles.bookingDetailBottom, children: [
8192
8689
  /* @__PURE__ */ jsxs("div", { className: styles.totalPrice, children: [
8193
- /* @__PURE__ */ jsx(Subtitle1, { children: "Total Harga" }),
8690
+ /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.totalPriceLabel }),
8194
8691
  /* @__PURE__ */ jsxs(Title3, { className: styles.priceText, children: [
8195
8692
  "IDR ",
8196
8693
  totalPrice
@@ -8215,10 +8712,12 @@ var CardBookingTicket = ({
8215
8712
  style: { width: "100%" },
8216
8713
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:chevron-right-20-regular" }),
8217
8714
  iconPosition: "after",
8218
- children: "Lanjutkan"
8715
+ children: mergedLabels.nextButton
8219
8716
  }
8220
8717
  ),
8221
- ["addon", "meals", "review", "payment", "eticket"].includes(reservationStep) && !["pay"].includes(paymentStep) && /* @__PURE__ */ jsx(
8718
+ ["addon", "meals", "review", "payment", "eticket"].includes(
8719
+ reservationStep
8720
+ ) && !["pay"].includes(paymentStep) && /* @__PURE__ */ jsx(
8222
8721
  Button,
8223
8722
  {
8224
8723
  appearance: "secondary",
@@ -8228,7 +8727,7 @@ var CardBookingTicket = ({
8228
8727
  className: styles.secondaryButton,
8229
8728
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:chevron-left-20-regular" }),
8230
8729
  iconPosition: "before",
8231
- children: "Sebelumnya"
8730
+ children: mergedLabels.previousButton
8232
8731
  }
8233
8732
  )
8234
8733
  ] }),
@@ -8241,7 +8740,7 @@ var CardBookingTicket = ({
8241
8740
  size: "large",
8242
8741
  style: { width: "100%" },
8243
8742
  onClick: onNext,
8244
- children: "Lihat Pemesanan"
8743
+ children: mergedLabels.viewBookingButton
8245
8744
  }
8246
8745
  ),
8247
8746
  /* @__PURE__ */ jsx(
@@ -8252,14 +8751,24 @@ var CardBookingTicket = ({
8252
8751
  size: "large",
8253
8752
  className: styles.secondaryButton,
8254
8753
  onClick: onPrevious,
8255
- children: "Ubah Metode Pembayaran"
8754
+ children: mergedLabels.changePaymentButton
8256
8755
  }
8257
8756
  )
8258
8757
  ] })
8259
8758
  ] })
8260
8759
  ] }) });
8261
8760
  };
8262
- var useStyles26 = makeStyles({
8761
+
8762
+ // src/components/CardFAQ/CardFAQ.constants.ts
8763
+ var DEFAULT_LABELS15 = {
8764
+ id: {
8765
+ title: "FAQ"
8766
+ },
8767
+ en: {
8768
+ title: "FAQ"
8769
+ }
8770
+ };
8771
+ var useStyles27 = makeStyles({
8263
8772
  faqSection: {
8264
8773
  // marginTop: '2rem', // Let parent control spacing if needed, or keep consistent
8265
8774
  },
@@ -8299,27 +8808,63 @@ var FAQ_ITEMS = [
8299
8808
  answer: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint maiores debitis, earum animi dolorum unde asperiores accusantium nemo consectetur nulla reiciendis eveniet pariatur autem rerum adipisci sequi officia vero ipsam!"
8300
8809
  }
8301
8810
  ];
8302
- var CardFAQ = ({ className }) => {
8303
- const styles = useStyles26();
8811
+ var CardFAQ = ({
8812
+ language = "id",
8813
+ labels,
8814
+ className
8815
+ }) => {
8816
+ const styles = useStyles27();
8817
+ const mergedLabels = { ...DEFAULT_LABELS15[language], ...labels };
8304
8818
  return /* @__PURE__ */ jsxs(Card, { className: styles.faqCard, children: [
8305
- /* @__PURE__ */ jsx(Subtitle1, { children: "FAQ" }),
8306
- /* @__PURE__ */ jsx(Accordion, { collapsible: true, children: FAQ_ITEMS.map((item) => /* @__PURE__ */ jsxs(AccordionItem, { value: item.value, className: styles.accordionItem, children: [
8307
- /* @__PURE__ */ jsxs(AccordionHeader, { className: styles.accordionHeader, expandIconPosition: "end", children: [
8308
- /* @__PURE__ */ jsx(
8309
- Icon,
8310
- {
8311
- icon: "fluent:question-circle-28-regular",
8312
- style: { marginRight: "5px" }
8313
- }
8314
- ),
8315
- " ",
8316
- item.question
8317
- ] }),
8318
- /* @__PURE__ */ jsx(AccordionPanel, { children: item.answer })
8319
- ] }, item.value)) })
8819
+ /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.title }),
8820
+ /* @__PURE__ */ jsx(Accordion, { collapsible: true, children: FAQ_ITEMS.map((item) => /* @__PURE__ */ jsxs(
8821
+ AccordionItem,
8822
+ {
8823
+ value: item.value,
8824
+ className: styles.accordionItem,
8825
+ children: [
8826
+ /* @__PURE__ */ jsxs(
8827
+ AccordionHeader,
8828
+ {
8829
+ className: styles.accordionHeader,
8830
+ expandIconPosition: "end",
8831
+ children: [
8832
+ /* @__PURE__ */ jsx(
8833
+ Icon,
8834
+ {
8835
+ icon: "fluent:question-circle-28-regular",
8836
+ style: { marginRight: "5px" }
8837
+ }
8838
+ ),
8839
+ " ",
8840
+ item.question
8841
+ ]
8842
+ }
8843
+ ),
8844
+ /* @__PURE__ */ jsx(AccordionPanel, { children: item.answer })
8845
+ ]
8846
+ },
8847
+ item.value
8848
+ )) })
8320
8849
  ] });
8321
8850
  };
8322
- var useStyles27 = makeStyles({
8851
+
8852
+ // src/components/CardAddon/CardAddon.constants.ts
8853
+ var DEFAULT_LABELS16 = {
8854
+ id: {
8855
+ viewDetail: "Lihat detail",
8856
+ totalPrice: "Total Harga",
8857
+ passengerInsurance: "Asuransi Penumpang",
8858
+ removeOrder: "Hapus Pesanan"
8859
+ },
8860
+ en: {
8861
+ viewDetail: "View Details",
8862
+ totalPrice: "Total Price",
8863
+ passengerInsurance: "Passenger Insurance",
8864
+ removeOrder: "Remove Order"
8865
+ }
8866
+ };
8867
+ var useStyles28 = makeStyles({
8323
8868
  card: {
8324
8869
  backgroundColor: tokens.colorNeutralBackground1,
8325
8870
  boxShadow: tokens.shadow4,
@@ -8384,7 +8929,10 @@ var useStyles27 = makeStyles({
8384
8929
  },
8385
8930
  // Assurance Styles
8386
8931
  badge: {
8387
- ...shorthands.padding(tokens.spacingVerticalNone, tokens.spacingHorizontalL),
8932
+ ...shorthands.padding(
8933
+ tokens.spacingVerticalNone,
8934
+ tokens.spacingHorizontalL
8935
+ ),
8388
8936
  backgroundColor: tokens.colorPaletteBlueBackground2,
8389
8937
  // Approximate for Shared_Dark_blue_Primary if not avail
8390
8938
  color: tokens.colorNeutralForegroundOnBrand,
@@ -8475,6 +9023,8 @@ var useStyles27 = makeStyles({
8475
9023
  }
8476
9024
  });
8477
9025
  var CardAddon = ({
9026
+ language = "id",
9027
+ labels,
8478
9028
  title,
8479
9029
  itemTitle,
8480
9030
  itemSubtitle,
@@ -8487,7 +9037,8 @@ var CardAddon = ({
8487
9037
  children,
8488
9038
  className
8489
9039
  }) => {
8490
- const styles = useStyles27();
9040
+ const styles = useStyles28();
9041
+ const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
8491
9042
  return /* @__PURE__ */ jsx(Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxs("div", { className: styles.gapRow, children: [
8492
9043
  /* @__PURE__ */ jsxs("div", { className: styles.titleDivider, children: [
8493
9044
  /* @__PURE__ */ jsx(Title3, { className: styles.textTitle, children: title }),
@@ -8535,7 +9086,7 @@ var CardAddon = ({
8535
9086
  onClick: footerData.onActionClick,
8536
9087
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:chevron-down-12-regular" }),
8537
9088
  iconPosition: "after",
8538
- children: /* @__PURE__ */ jsx(Caption1, { className: styles.detailToogle, children: footerData.actionLabel || "Lihat detail" })
9089
+ children: /* @__PURE__ */ jsx(Caption1, { className: styles.detailToogle, children: footerData.actionLabel || mergedLabels.viewDetail })
8539
9090
  }
8540
9091
  ) })
8541
9092
  ] }) }),
@@ -8551,7 +9102,8 @@ var CardAddon = ({
8551
9102
  style: { backgroundColor: "rgb(30, 57, 141)" },
8552
9103
  children: [
8553
9104
  assuranceData.totalPassenger,
8554
- " Asuransi Penumpang"
9105
+ " ",
9106
+ mergedLabels.passengerInsurance
8555
9107
  ]
8556
9108
  }
8557
9109
  ) }),
@@ -8569,7 +9121,7 @@ var CardAddon = ({
8569
9121
  ] })
8570
9122
  ] }, idx)),
8571
9123
  /* @__PURE__ */ jsxs("div", { className: styles.breakdownRow, children: [
8572
- /* @__PURE__ */ jsx(Subtitle2, { children: "Total Harga" }),
9124
+ /* @__PURE__ */ jsx(Subtitle2, { children: mergedLabels.totalPrice }),
8573
9125
  /* @__PURE__ */ jsxs(Subtitle2, { children: [
8574
9126
  "Rp",
8575
9127
  assuranceData.totalPrice.toLocaleString("id-ID")
@@ -8596,7 +9148,8 @@ var CardAddon = ({
8596
9148
  item.price.toLocaleString("id-ID"),
8597
9149
  " x ",
8598
9150
  item.quantity,
8599
- " = Rp",
9151
+ " ",
9152
+ "= Rp",
8600
9153
  (item.price * item.quantity).toLocaleString("id-ID")
8601
9154
  ] })
8602
9155
  ] }),
@@ -8642,7 +9195,7 @@ var CardAddon = ({
8642
9195
  onClick: () => mealData.onDelete(item.id),
8643
9196
  children: [
8644
9197
  /* @__PURE__ */ jsx(DeleteRegular, { fontSize: 18 }),
8645
- "Hapus Pesanan"
9198
+ mergedLabels.removeOrder
8646
9199
  ]
8647
9200
  }
8648
9201
  )
@@ -8675,7 +9228,17 @@ var CardAddon = ({
8675
9228
  ] })
8676
9229
  ] }) });
8677
9230
  };
8678
- var useStyles28 = makeStyles({
9231
+
9232
+ // src/components/CardMealCatalog/CardMealCatalog.constants.ts
9233
+ var DEFAULT_LABELS17 = {
9234
+ id: {
9235
+ addButton: "Tambah"
9236
+ },
9237
+ en: {
9238
+ addButton: "Add"
9239
+ }
9240
+ };
9241
+ var useStyles29 = makeStyles({
8679
9242
  container: {
8680
9243
  display: "flex",
8681
9244
  flexDirection: "column",
@@ -8805,6 +9368,8 @@ var useStyles28 = makeStyles({
8805
9368
  }
8806
9369
  });
8807
9370
  var CardMealCatalog = ({
9371
+ language = "id",
9372
+ labels,
8808
9373
  banner,
8809
9374
  disclaimerText,
8810
9375
  categories,
@@ -8812,7 +9377,8 @@ var CardMealCatalog = ({
8812
9377
  onUpdateQuantity,
8813
9378
  className
8814
9379
  }) => {
8815
- const styles = useStyles28();
9380
+ const styles = useStyles29();
9381
+ const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
8816
9382
  return /* @__PURE__ */ jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
8817
9383
  /* @__PURE__ */ jsxs("div", { className: styles.banner, children: [
8818
9384
  /* @__PURE__ */ jsx("div", { className: styles.bannerOverlay }),
@@ -8835,11 +9401,25 @@ var CardMealCatalog = ({
8835
9401
  /* @__PURE__ */ jsx(Caption1, { children: disclaimerText })
8836
9402
  ] }),
8837
9403
  categories.map((cat, index) => /* @__PURE__ */ jsxs("section", { children: [
8838
- /* @__PURE__ */ jsx(Title3, { className: styles.sectionTitle, style: { textTransform: "capitalize" }, children: cat.category }),
9404
+ /* @__PURE__ */ jsx(
9405
+ Title3,
9406
+ {
9407
+ className: styles.sectionTitle,
9408
+ style: { textTransform: "capitalize" },
9409
+ children: cat.category
9410
+ }
9411
+ ),
8839
9412
  /* @__PURE__ */ jsx("br", {}),
8840
9413
  /* @__PURE__ */ jsx("br", {}),
8841
9414
  /* @__PURE__ */ jsx("div", { className: styles.grid, children: cat.list.map((item) => /* @__PURE__ */ jsxs(Card, { className: styles.productCard, children: [
8842
- /* @__PURE__ */ jsx(Image, { src: item.image, alt: item.name, className: styles.productImage }),
9415
+ /* @__PURE__ */ jsx(
9416
+ Image,
9417
+ {
9418
+ src: item.image,
9419
+ alt: item.name,
9420
+ className: styles.productImage
9421
+ }
9422
+ ),
8843
9423
  /* @__PURE__ */ jsxs("div", { className: styles.productInfo, children: [
8844
9424
  /* @__PURE__ */ jsxs("div", { children: [
8845
9425
  /* @__PURE__ */ jsx(Subtitle2, { children: item.name }),
@@ -8877,7 +9457,7 @@ var CardMealCatalog = ({
8877
9457
  shape: "rounded",
8878
9458
  className: styles.customAddButton,
8879
9459
  onClick: () => onAdd(item),
8880
- children: "Tambah"
9460
+ children: mergedLabels.addButton
8881
9461
  }
8882
9462
  )
8883
9463
  ] })
@@ -8886,7 +9466,13 @@ var CardMealCatalog = ({
8886
9466
  ] }, index))
8887
9467
  ] });
8888
9468
  };
8889
- var useStyles29 = makeStyles({
9469
+
9470
+ // src/components/CardReview/CardReview.constants.ts
9471
+ var DEFAULT_LABELS18 = {
9472
+ id: {},
9473
+ en: {}
9474
+ };
9475
+ var useStyles30 = makeStyles({
8890
9476
  card: {
8891
9477
  padding: "1.5rem",
8892
9478
  borderRadius: tokens.borderRadiusXLarge,
@@ -8929,13 +9515,16 @@ var useStyles29 = makeStyles({
8929
9515
  }
8930
9516
  });
8931
9517
  var CardReview = ({
9518
+ language = "id",
9519
+ labels,
8932
9520
  title,
8933
9521
  items,
8934
9522
  children,
8935
9523
  className,
8936
9524
  headerAction
8937
9525
  }) => {
8938
- const styles = useStyles29();
9526
+ const styles = useStyles30();
9527
+ ({ ...DEFAULT_LABELS18[language], ...labels });
8939
9528
  return /* @__PURE__ */ jsxs(Card, { className: `${styles.card} ${className || ""}`, children: [
8940
9529
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
8941
9530
  /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: title }),
@@ -8944,19 +9533,55 @@ var CardReview = ({
8944
9533
  ] }),
8945
9534
  /* @__PURE__ */ jsxs("div", { className: styles.contentContainer, children: [
8946
9535
  items?.map((item, index) => /* @__PURE__ */ jsxs("div", { className: `${styles.row} ${item.className || ""}`, children: [
8947
- typeof item.label === "string" ? /* @__PURE__ */ jsx(Caption1, { className: `${styles.defaultLabel} ${item.labelClassName || ""}`, children: item.label }) : (
9536
+ typeof item.label === "string" ? /* @__PURE__ */ jsx(
9537
+ Caption1,
9538
+ {
9539
+ className: `${styles.defaultLabel} ${item.labelClassName || ""}`,
9540
+ children: item.label
9541
+ }
9542
+ ) : (
8948
9543
  // Clone element to append className if it's a valid React element
8949
9544
  React5.isValidElement(item.label) ? React5.cloneElement(item.label, {
8950
9545
  className: `${styles.defaultLabel} ${item.labelClassName || ""}${item.label.props.className ? " " + item.label.props.className : ""}`
8951
- }) : /* @__PURE__ */ jsx("div", { className: `${styles.defaultLabel} ${item.labelClassName || ""}`, children: item.label })
9546
+ }) : /* @__PURE__ */ jsx(
9547
+ "div",
9548
+ {
9549
+ className: `${styles.defaultLabel} ${item.labelClassName || ""}`,
9550
+ children: item.label
9551
+ }
9552
+ )
8952
9553
  ),
8953
- typeof item.value === "string" || typeof item.value === "number" ? /* @__PURE__ */ jsx(Body1, { className: `${styles.defaultValue} ${item.valueClassName || ""}`, children: item.value }) : /* @__PURE__ */ jsx("div", { className: `${styles.defaultValue} ${item.valueClassName || ""}`, children: item.value })
9554
+ typeof item.value === "string" || typeof item.value === "number" ? /* @__PURE__ */ jsx(
9555
+ Body1,
9556
+ {
9557
+ className: `${styles.defaultValue} ${item.valueClassName || ""}`,
9558
+ children: item.value
9559
+ }
9560
+ ) : /* @__PURE__ */ jsx(
9561
+ "div",
9562
+ {
9563
+ className: `${styles.defaultValue} ${item.valueClassName || ""}`,
9564
+ children: item.value
9565
+ }
9566
+ )
8954
9567
  ] }, index)),
8955
9568
  children
8956
9569
  ] })
8957
9570
  ] });
8958
9571
  };
8959
- var useStyles30 = makeStyles({
9572
+
9573
+ // src/components/CardReviewPassenger/CardReviewPassenger.constants.ts
9574
+ var DEFAULT_LABELS19 = {
9575
+ id: {
9576
+ title: "Penumpang",
9577
+ idNumber: "Nomor ID"
9578
+ },
9579
+ en: {
9580
+ title: "Passenger",
9581
+ idNumber: "ID Number"
9582
+ }
9583
+ };
9584
+ var useStyles31 = makeStyles({
8960
9585
  card: {
8961
9586
  padding: "1.5rem",
8962
9587
  borderRadius: tokens.borderRadiusXLarge,
@@ -9048,14 +9673,18 @@ var useStyles30 = makeStyles({
9048
9673
  }
9049
9674
  });
9050
9675
  var CardReviewPassenger = ({
9051
- title = "Penumpang",
9676
+ language = "id",
9677
+ labels,
9678
+ title,
9052
9679
  passengers,
9053
9680
  className
9054
9681
  }) => {
9055
- const styles = useStyles30();
9682
+ const styles = useStyles31();
9683
+ const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
9684
+ const displayTitle = title || mergedLabels.title;
9056
9685
  return /* @__PURE__ */ jsxs(Card, { className: `${styles.card} ${className || ""}`, children: [
9057
9686
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
9058
- /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: title }),
9687
+ /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: displayTitle }),
9059
9688
  /* @__PURE__ */ jsx("div", { className: styles.headerLine })
9060
9689
  ] }),
9061
9690
  /* @__PURE__ */ jsx("div", { className: styles.contentContainer, children: passengers.map((passenger, index) => {
@@ -9085,21 +9714,50 @@ var CardReviewPassenger = ({
9085
9714
  ] })
9086
9715
  ] }),
9087
9716
  /* @__PURE__ */ jsxs("div", { className: styles.fields, children: [
9088
- /* @__PURE__ */ jsx(Field, { label: "Nomor ID", size: "small", children: /* @__PURE__ */ jsx("div", { className: styles.inputBox, children: /* @__PURE__ */ jsx(Body1, { children: passenger.identityNumber }) }) }),
9089
- /* @__PURE__ */ jsx(
9090
- Field,
9091
- {
9092
- label: passenger.ageLabel,
9093
- size: "small",
9094
- children: /* @__PURE__ */ jsx("div", { className: styles.inputBox, children: /* @__PURE__ */ jsx(Body1, { children: passenger.ageValue }) })
9095
- }
9096
- )
9717
+ /* @__PURE__ */ jsx(Field, { label: mergedLabels.idNumber, size: "small", children: /* @__PURE__ */ jsx("div", { className: styles.inputBox, children: /* @__PURE__ */ jsx(Body1, { children: passenger.identityNumber }) }) }),
9718
+ /* @__PURE__ */ jsx(Field, { label: passenger.ageLabel, size: "small", children: /* @__PURE__ */ jsx("div", { className: styles.inputBox, children: /* @__PURE__ */ jsx(Body1, { children: passenger.ageValue }) }) })
9097
9719
  ] })
9098
9720
  ] }, passenger.id || index);
9099
9721
  }) })
9100
9722
  ] });
9101
9723
  };
9102
- var useStyles31 = makeStyles({
9724
+
9725
+ // src/components/CardPriceDetails/CardPriceDetails.constants.ts
9726
+ var DEFAULT_LABELS20 = {
9727
+ id: {
9728
+ defaultTitle: "Rincian Harga",
9729
+ totalPayment: "Total Pembayaran",
9730
+ bookingTerms: [
9731
+ "Transaksi booking akan dibatalkan secara otomatis apabila Anda tidak menyelesaikan pembayaran pada periode waktu yang telah ditentukan.",
9732
+ "Setelah pembayaran berhasil, dokumen E-Tiket dapat di unduh melalui E-Mail atau menu \u201CPesanan Saya\u201D di Web Reservation atau Mobile Application Ferizy.",
9733
+ "Dokumen E-Tiket wajib ditunjukan saat melakukan proses Masuk Pelabuhan (Check-In)",
9734
+ "Anda sudah dapat Masuk Pelabuhan (Check-In) mulai dari 2 (dua) jam sebelum jadwal masukpelabuhan yang Anda pilih.",
9735
+ "Tiket akan hangus (expired) apabila Anda belum Masuk Pelabuhan (Check-In) hingga melewati batas waktu jadwal Masuk Pelabuhan yang Anda pilih."
9736
+ ],
9737
+ agreementInfo: "Dengan menekan tombol \u201CLanjutkan Pembayaran\u201D, maka saya telah membaca dan menyetujui :",
9738
+ agreementLinkFerizy: "Syarat & Ketentuan",
9739
+ agreementCovidInfo: "Ketentuan persyaratan menyeberang sesuai dengan\xA0",
9740
+ agreementCovidLink: "Surat Edaran Satgas Covid-19 Nomor 23 Tahun 2022.",
9741
+ 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."
9742
+ },
9743
+ en: {
9744
+ defaultTitle: "Price Details",
9745
+ totalPayment: "Total Payment",
9746
+ bookingTerms: [
9747
+ "Booking transaction will be canceled automatically if you do not complete the payment within the specified time period.",
9748
+ 'Once payment is successful, E-Ticket document can be downloaded via E-Mail or the "My Orders" menu on Ferizy Web Reservation or Mobile Application.',
9749
+ "E-Ticket document must be shown during the Port Entrance (Check-In) process.",
9750
+ "You can enter the Port (Check-In) starting from 2 (two) hours before the port entrance schedule you selected.",
9751
+ "Ticket will expire if you have not entered the Port (Check-In) and have passed the Port entrance schedule time you selected."
9752
+ ],
9753
+ agreementInfo: 'By clicking the "Continue Payment" button, I have read and agree to:',
9754
+ agreementLinkFerizy: "Ferizy Terms & Conditions",
9755
+ agreementCovidInfo: "Crossing requirement provisions in accordance with\xA0",
9756
+ agreementCovidLink: "Covid-19 Task Force Circular Letter Number 23 of 2022.",
9757
+ agreementFinal: "That if I am found not to meet the crossing requirement provisions in point 2 (two) above which results in me being late or unable to Check-In at the port on time, then I accept and agree to be processed in accordance with the Ferizy Terms & Conditions as mentioned in point 1 (one) above."
9758
+ }
9759
+ };
9760
+ var useStyles32 = makeStyles({
9103
9761
  list: {
9104
9762
  margin: 0,
9105
9763
  padding: 0,
@@ -9117,37 +9775,34 @@ var useStyles31 = makeStyles({
9117
9775
  }
9118
9776
  }
9119
9777
  });
9120
- var PriceDetailsTerms = () => {
9121
- const styles = useStyles31();
9778
+ var PriceDetailsTerms = ({
9779
+ language = "id"
9780
+ }) => {
9781
+ const styles = useStyles32();
9122
9782
  const linkColor = tokens.colorBrandBackground;
9123
- const bookingTerms = [
9124
- "Transaksi booking akan dibatalkan secara otomatis apabila Anda tidak menyelesaikan pembayaran pada periode waktu yang telah ditentukan.",
9125
- "Setelah pembyaran berhasil, dikumen E-Tiket dapat di unduh melailui E-Mail atau menu \u201CPesanan Saya\u201D di Web Reservation atau Mobile Application Ferizy.",
9126
- "Dokumen E-Tiket wajib ditunjukan saat melakukan proses Masuk Pelabuhan (Check-In)",
9127
- "Anda sudah dapat Masuk Pelabuhan (Check-In) mulai dari 2 (dua) jam sebelum jadwal masukpelabuhan yang Anda pilih.",
9128
- "Tiket akan hangus (expired) apabila Anda belum Masuk Pelabuhan (Check-In) hingga melewati batas waktu jadwal Masuk Pelabuhan yang Anda pilih."
9129
- ];
9783
+ const labels = DEFAULT_LABELS20[language];
9784
+ const bookingTerms = labels.bookingTerms;
9130
9785
  const agreementTerms = [
9131
9786
  /* @__PURE__ */ jsxs(Fragment, { children: [
9132
- /* @__PURE__ */ jsx(Link, { href: "/terms-and-conditions", style: { color: linkColor }, children: "Syarat & Ketentuan" }),
9787
+ /* @__PURE__ */ jsx(Link, { href: "/terms-and-conditions", style: { color: linkColor }, children: labels.agreementLinkFerizy }),
9133
9788
  "\xA0Ferizy."
9134
9789
  ] }),
9135
9790
  /* @__PURE__ */ jsxs(Fragment, { children: [
9136
- "Ketentuan persyaratan menyeberang sesuai dengan\xA0",
9137
- /* @__PURE__ */ jsx(Link, { href: "/surat-edaran-satgas-covid-19", style: { color: linkColor }, children: "Surat Edaran Satgas Covid-19 Nomor 23 Tahun 2002." })
9791
+ labels.agreementCovidInfo,
9792
+ /* @__PURE__ */ jsx(Link, { href: "/surat-edaran-satgas-covid-19", style: { color: linkColor }, children: labels.agreementCovidLink })
9138
9793
  ] }),
9139
- "Bahwa apabila saya didapati tidak memenuhi ketentuan persyaratan menyeberang pada butir 2 (dua) diatas yang mengakibatkan saya terlambat atau tidaj 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."
9794
+ labels.agreementFinal
9140
9795
  ];
9141
9796
  return /* @__PURE__ */ jsxs(Fragment, { children: [
9142
9797
  /* @__PURE__ */ jsx(Body1, { children: /* @__PURE__ */ jsx("ul", { className: styles.list, children: bookingTerms.map((term, index) => /* @__PURE__ */ jsx("li", { className: styles.listItem, children: term }, index)) }) }),
9143
9798
  /* @__PURE__ */ jsx(Divider, {}),
9144
9799
  /* @__PURE__ */ jsxs(Body1, { children: [
9145
- "Dengan menekan tombol \u201CLanjutkan Pembayaran\u201D, maka saya telah membaca dan menyetujuii :",
9800
+ labels.agreementInfo,
9146
9801
  /* @__PURE__ */ jsx("ul", { className: styles.list, children: agreementTerms.map((term, index) => /* @__PURE__ */ jsx("li", { className: styles.listItem, children: term }, index)) })
9147
9802
  ] })
9148
9803
  ] });
9149
9804
  };
9150
- var useStyles32 = makeStyles({
9805
+ var useStyles33 = makeStyles({
9151
9806
  card: {
9152
9807
  padding: "1.5rem",
9153
9808
  borderRadius: tokens.borderRadiusXLarge,
@@ -9218,11 +9873,15 @@ var useStyles32 = makeStyles({
9218
9873
  }
9219
9874
  });
9220
9875
  var CardPriceDetails = ({
9221
- title = "Rincian Harga",
9876
+ language = "id",
9877
+ title,
9222
9878
  sections,
9223
- total
9879
+ total,
9880
+ labels
9224
9881
  }) => {
9225
- const styles = useStyles32();
9882
+ const styles = useStyles33();
9883
+ const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
9884
+ const displayTitle = title || mergedLabels.defaultTitle;
9226
9885
  const getVariantClass = (variant) => {
9227
9886
  switch (variant) {
9228
9887
  case "danger":
@@ -9252,7 +9911,7 @@ var CardPriceDetails = ({
9252
9911
  };
9253
9912
  return /* @__PURE__ */ jsxs(Card, { className: styles.card, children: [
9254
9913
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
9255
- /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: title }),
9914
+ /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: displayTitle }),
9256
9915
  /* @__PURE__ */ jsx("div", { className: styles.headerLine })
9257
9916
  ] }),
9258
9917
  /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
@@ -9267,18 +9926,24 @@ var CardPriceDetails = ({
9267
9926
  }),
9268
9927
  /* @__PURE__ */ jsx(Divider, {}),
9269
9928
  /* @__PURE__ */ jsxs("div", { className: styles.totalRow, children: [
9270
- /* @__PURE__ */ jsx(Subtitle1, { className: styles.totalLabel, children: "Total Pembayaran" }),
9929
+ /* @__PURE__ */ jsx(Subtitle1, { className: styles.totalLabel, children: mergedLabels.totalPayment }),
9271
9930
  /* @__PURE__ */ jsxs(Subtitle1, { className: styles.totalValue, children: [
9272
9931
  "Rp. ",
9273
9932
  total.toLocaleString("id-ID")
9274
9933
  ] })
9275
9934
  ] }),
9276
9935
  /* @__PURE__ */ jsx(Divider, {}),
9277
- /* @__PURE__ */ jsx(PriceDetailsTerms, {})
9936
+ /* @__PURE__ */ jsx(PriceDetailsTerms, { language })
9278
9937
  ] })
9279
9938
  ] });
9280
9939
  };
9281
- var useStyles33 = makeStyles({
9940
+
9941
+ // src/components/CardPaymentMethodList/CardPaymentMethodList.constants.ts
9942
+ var DEFAULT_LABELS21 = {
9943
+ id: {},
9944
+ en: {}
9945
+ };
9946
+ var useStyles34 = makeStyles({
9282
9947
  container: {
9283
9948
  display: "flex",
9284
9949
  flexDirection: "column",
@@ -9323,17 +9988,23 @@ var useStyles33 = makeStyles({
9323
9988
  card: {
9324
9989
  position: "relative",
9325
9990
  borderRadius: tokens.borderRadiusXLarge,
9326
- ...shorthands.padding(tokens.spacingHorizontalXL, tokens.spacingVerticalXXL),
9991
+ ...shorthands.padding(
9992
+ tokens.spacingHorizontalXL,
9993
+ tokens.spacingVerticalXXL
9994
+ ),
9327
9995
  backgroundColor: tokens.colorNeutralBackground1,
9328
9996
  zIndex: 3
9329
9997
  }
9330
9998
  });
9331
9999
  var CardPaymentMethodList = ({
10000
+ language = "id",
10001
+ labels,
9332
10002
  methods,
9333
10003
  selectedValue,
9334
10004
  onSelect
9335
10005
  }) => {
9336
- const styles = useStyles33();
10006
+ const styles = useStyles34();
10007
+ ({ ...DEFAULT_LABELS21[language], ...labels });
9337
10008
  return /* @__PURE__ */ jsx("div", { className: styles.card, children: /* @__PURE__ */ jsx("div", { className: `${styles.container}`, children: methods.map((category, index) => /* @__PURE__ */ jsxs("div", { children: [
9338
10009
  index > 0 && /* @__PURE__ */ jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsx(Divider, {}) }),
9339
10010
  /* @__PURE__ */ jsx(Accordion, { multiple: true, collapsible: true, children: /* @__PURE__ */ jsxs(AccordionItem, { value: category.value, children: [
@@ -9378,7 +10049,17 @@ var CardPaymentMethodList = ({
9378
10049
  ] }) })
9379
10050
  ] }, category.value || index)) }) });
9380
10051
  };
9381
- var useStyles34 = makeStyles({
10052
+
10053
+ // src/components/CardPaymentGuide/CardPaymentGuide.constants.ts
10054
+ var DEFAULT_LABELS22 = {
10055
+ id: {
10056
+ title: "Cara Pembayaran"
10057
+ },
10058
+ en: {
10059
+ title: "Payment Method"
10060
+ }
10061
+ };
10062
+ var useStyles35 = makeStyles({
9382
10063
  container: {
9383
10064
  display: "flex",
9384
10065
  flexDirection: "column",
@@ -9409,20 +10090,49 @@ var useStyles34 = makeStyles({
9409
10090
  }
9410
10091
  });
9411
10092
  var CardPaymentGuide = ({
9412
- title = "Cara Pembayaran",
10093
+ language = "id",
10094
+ labels,
10095
+ title,
9413
10096
  guides,
9414
10097
  className
9415
10098
  }) => {
9416
- const styles = useStyles34();
10099
+ const styles = useStyles35();
10100
+ const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
10101
+ const displayTitle = title || mergedLabels.title;
9417
10102
  return /* @__PURE__ */ jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
9418
- title && /* @__PURE__ */ jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsx(Subtitle1, { className: styles.title, children: title }) }),
9419
- /* @__PURE__ */ jsx(Accordion, { collapsible: true, multiple: true, children: guides.map((guide, index) => /* @__PURE__ */ jsxs(AccordionItem, { value: guide.value || String(index), children: [
9420
- /* @__PURE__ */ jsx(AccordionHeader, { expandIconPosition: "end", children: /* @__PURE__ */ jsx(Body1, { children: guide.title }) }),
9421
- /* @__PURE__ */ jsx(AccordionPanel, { children: /* @__PURE__ */ jsx("ul", { className: styles.list, children: guide.steps.map((step, stepIndex) => /* @__PURE__ */ jsx("li", { className: styles.listItem, children: /* @__PURE__ */ jsx(Body1, { children: step }) }, stepIndex)) }) })
9422
- ] }, guide.value || index)) })
10103
+ title && /* @__PURE__ */ jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsx(Subtitle1, { className: styles.title, children: displayTitle }) }),
10104
+ /* @__PURE__ */ jsx(Accordion, { collapsible: true, multiple: true, children: guides.map((guide, index) => /* @__PURE__ */ jsxs(
10105
+ AccordionItem,
10106
+ {
10107
+ value: guide.value || String(index),
10108
+ children: [
10109
+ /* @__PURE__ */ jsx(AccordionHeader, { expandIconPosition: "end", children: /* @__PURE__ */ jsx(Body1, { children: guide.title }) }),
10110
+ /* @__PURE__ */ jsx(AccordionPanel, { children: /* @__PURE__ */ jsx("ul", { className: styles.list, children: guide.steps.map((step, stepIndex) => /* @__PURE__ */ jsx("li", { className: styles.listItem, children: /* @__PURE__ */ jsx(Body1, { children: step }) }, stepIndex)) }) })
10111
+ ]
10112
+ },
10113
+ guide.value || index
10114
+ )) })
9423
10115
  ] });
9424
10116
  };
9425
- var useStyles35 = makeStyles({
10117
+
10118
+ // src/components/CardPaymentInfo/CardPaymentInfo.constants.ts
10119
+ var DEFAULT_LABELS23 = {
10120
+ id: {
10121
+ expiryPrefix: "Kode virtual akun berlaku sampai",
10122
+ copyCodeButton: "Salin Kode",
10123
+ totalPayment: "Total Pembayaran",
10124
+ checkStatusInfo: "Klik tombol dibawah ini jika sudah melakukan pembayaran",
10125
+ checkStatusButton: "Cek Status Pembayaran"
10126
+ },
10127
+ en: {
10128
+ expiryPrefix: "Virtual account code valid until",
10129
+ copyCodeButton: "Copy Code",
10130
+ totalPayment: "Total Payment",
10131
+ checkStatusInfo: "Click the button below if you have made the payment",
10132
+ checkStatusButton: "Check Payment Status"
10133
+ }
10134
+ };
10135
+ var useStyles36 = makeStyles({
9426
10136
  container: {
9427
10137
  display: "flex",
9428
10138
  flexDirection: "column",
@@ -9494,6 +10204,8 @@ var useStyles35 = makeStyles({
9494
10204
  }
9495
10205
  });
9496
10206
  var CardPaymentInfo = ({
10207
+ language = "id",
10208
+ labels,
9497
10209
  expiryDate,
9498
10210
  bank,
9499
10211
  virtualAccount,
@@ -9502,10 +10214,11 @@ var CardPaymentInfo = ({
9502
10214
  onCopyVA,
9503
10215
  onCheckStatus
9504
10216
  }) => {
9505
- const styles = useStyles35();
10217
+ const styles = useStyles36();
10218
+ const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
9506
10219
  return /* @__PURE__ */ jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
9507
10220
  /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
9508
- /* @__PURE__ */ jsx(Subtitle1, { children: "Kode virtual akun berlaku sampai" }),
10221
+ /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.expiryPrefix }),
9509
10222
  /* @__PURE__ */ jsx(Title2, { className: styles.expiryTitle, children: expiryDate })
9510
10223
  ] }),
9511
10224
  /* @__PURE__ */ jsxs("div", { className: styles.infoCard, children: [
@@ -9523,7 +10236,7 @@ var CardPaymentInfo = ({
9523
10236
  size: "large",
9524
10237
  shape: "circular",
9525
10238
  onClick: onCopyVA,
9526
- children: "Salin Kode"
10239
+ children: mergedLabels.copyCodeButton
9527
10240
  }
9528
10241
  )
9529
10242
  ] })
@@ -9532,7 +10245,7 @@ var CardPaymentInfo = ({
9532
10245
  Field,
9533
10246
  {
9534
10247
  size: "large",
9535
- label: /* @__PURE__ */ jsx(Subtitle2, { style: { color: tokens.colorNeutralForeground1 }, children: "Total Pembayaran" }),
10248
+ label: /* @__PURE__ */ jsx(Subtitle2, { style: { color: tokens.colorNeutralForeground1 }, children: mergedLabels.totalPayment }),
9536
10249
  children: /* @__PURE__ */ jsx(
9537
10250
  Input,
9538
10251
  {
@@ -9545,7 +10258,7 @@ var CardPaymentInfo = ({
9545
10258
  )
9546
10259
  ] }),
9547
10260
  /* @__PURE__ */ jsxs("div", { children: [
9548
- /* @__PURE__ */ jsx("div", { style: { marginBottom: tokens.spacingVerticalM }, children: /* @__PURE__ */ jsx(Subtitle2, { style: { color: tokens.colorNeutralForeground2 }, children: "Klik tombol dibawah ini jika sudah melakukan pembayaran" }) }),
10261
+ /* @__PURE__ */ jsx("div", { style: { marginBottom: tokens.spacingVerticalM }, children: /* @__PURE__ */ jsx(Subtitle2, { style: { color: tokens.colorNeutralForeground2 }, children: mergedLabels.checkStatusInfo }) }),
9549
10262
  /* @__PURE__ */ jsx(
9550
10263
  Button,
9551
10264
  {
@@ -9554,14 +10267,44 @@ var CardPaymentInfo = ({
9554
10267
  shape: "circular",
9555
10268
  className: styles.checkStatusButton,
9556
10269
  onClick: onCheckStatus,
9557
- children: "Cek Status Pembayaran"
10270
+ children: mergedLabels.checkStatusButton
9558
10271
  }
9559
10272
  )
9560
10273
  ] }),
9561
- /* @__PURE__ */ jsx(CardPaymentGuide, { guides })
10274
+ /* @__PURE__ */ jsx(CardPaymentGuide, { guides, language })
9562
10275
  ] }) });
9563
10276
  };
9564
- var useStyles36 = makeStyles({
10277
+
10278
+ // src/components/CardStatusOrder/CardStatusOrder.constants.ts
10279
+ var DEFAULT_LABELS24 = {
10280
+ id: {
10281
+ detailTitle: "Detail Pemesanan",
10282
+ statusLabel: "Status",
10283
+ bookingCodeLabel: "Kode Booking",
10284
+ scheduleLabel: "Jadwal Masuk Pelabuhan",
10285
+ routeLabel: "Rute",
10286
+ userTypeLabel: "Jenis Pengguna Jasa",
10287
+ serviceLabel: "Layanan",
10288
+ viewTicketButton: "Lihat E-Tiket",
10289
+ defaultStatus: "Sudah Dibayar",
10290
+ defaultTitle: "Pembayaran berhasil",
10291
+ defaultDescription: "Tiket Anda aktif dan siap digunakan."
10292
+ },
10293
+ en: {
10294
+ detailTitle: "Booking Details",
10295
+ statusLabel: "Status",
10296
+ bookingCodeLabel: "Booking Code",
10297
+ scheduleLabel: "Port Entrance Schedule",
10298
+ routeLabel: "Route",
10299
+ userTypeLabel: "User Service Type",
10300
+ serviceLabel: "Service",
10301
+ viewTicketButton: "View E-Ticket",
10302
+ defaultStatus: "Paid",
10303
+ defaultTitle: "Payment successful",
10304
+ defaultDescription: "Your ticket is active and ready to use."
10305
+ }
10306
+ };
10307
+ var useStyles37 = makeStyles({
9565
10308
  activeCard: {
9566
10309
  width: "100%",
9567
10310
  // padding: tokens.spacingHorizontalNone, // default
@@ -9608,6 +10351,8 @@ var useStyles36 = makeStyles({
9608
10351
  }
9609
10352
  });
9610
10353
  var CardStatusOrder = ({
10354
+ language = "id",
10355
+ labels,
9611
10356
  bookingCode,
9612
10357
  departureDate,
9613
10358
  departureTime,
@@ -9620,16 +10365,20 @@ var CardStatusOrder = ({
9620
10365
  serviceType,
9621
10366
  vehicleNumber,
9622
10367
  shipType,
9623
- statusLabel = "Sudah Dibayar",
10368
+ statusLabel,
9624
10369
  statusIcon,
9625
10370
  statusColor = "success",
9626
10371
  illustrationUrl = "/assets/images/illustrations/ticket.svg",
9627
- title = "Pembayaran berhasil",
9628
- description = "Tiket Anda aktif dan siap digunakan.",
10372
+ title,
10373
+ description,
9629
10374
  onClickViewTicket,
9630
10375
  className
9631
10376
  }) => {
9632
- const styles = useStyles36();
10377
+ const styles = useStyles37();
10378
+ const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10379
+ const displayStatus = statusLabel || mergedLabels.defaultStatus;
10380
+ const displayTitle = title || mergedLabels.defaultTitle;
10381
+ const displayDescription = description || mergedLabels.defaultDescription;
9633
10382
  return /* @__PURE__ */ jsx("div", { className: `${styles.activeCard} ${className || ""}`, children: /* @__PURE__ */ jsxs(Row, { nogutter: true, className: styles.colGap, children: [
9634
10383
  /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsxs(Row, { direction: "column", nogutter: true, children: [
9635
10384
  /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(
@@ -9642,8 +10391,8 @@ var CardStatusOrder = ({
9642
10391
  }
9643
10392
  ) }),
9644
10393
  /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsxs(Row, { direction: "column", justify: "center", align: "center", nogutter: true, children: [
9645
- /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(Subtitle2, { children: title }) }),
9646
- /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(Body1, { children: description }) })
10394
+ /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(Subtitle2, { children: displayTitle }) }),
10395
+ /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(Body1, { children: displayDescription }) })
9647
10396
  ] }) })
9648
10397
  ] }) }),
9649
10398
  /* @__PURE__ */ jsx(Col, { children: /* @__PURE__ */ jsx("div", { className: styles.cardInfo, children: /* @__PURE__ */ jsxs(
@@ -9656,11 +10405,11 @@ var CardStatusOrder = ({
9656
10405
  className: styles.rowGap,
9657
10406
  children: [
9658
10407
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.titleDivider, children: [
9659
- /* @__PURE__ */ jsx(Subtitle1, { children: "Detail Pemesanan" }),
10408
+ /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.detailTitle }),
9660
10409
  /* @__PURE__ */ jsx(Divider, { style: { width: 0 } })
9661
10410
  ] }) }),
9662
10411
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs(Row, { justify: "center", align: "center", nogutter: true, children: [
9663
- /* @__PURE__ */ jsx(Col, { children: /* @__PURE__ */ jsx(Body1, { children: "Status" }) }),
10412
+ /* @__PURE__ */ jsx(Col, { children: /* @__PURE__ */ jsx(Body1, { children: mergedLabels.statusLabel }) }),
9664
10413
  /* @__PURE__ */ jsx(Col, { xs: "content", children: /* @__PURE__ */ jsx(
9665
10414
  Badge,
9666
10415
  {
@@ -9669,17 +10418,17 @@ var CardStatusOrder = ({
9669
10418
  appearance: "filled",
9670
10419
  shape: "rounded",
9671
10420
  icon: statusIcon || /* @__PURE__ */ jsx(Icon, { icon: "fluent:checkmark-circle-20-regular" }),
9672
- children: statusLabel
10421
+ children: displayStatus
9673
10422
  }
9674
10423
  ) })
9675
10424
  ] }) }),
9676
10425
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs(Row, { direction: "column", nogutter: true, className: styles.gapdetail, children: [
9677
10426
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.itemDetail, children: [
9678
- /* @__PURE__ */ jsx(Caption1Stronger, { children: "Kode Booking" }),
10427
+ /* @__PURE__ */ jsx(Caption1Stronger, { children: mergedLabels.bookingCodeLabel }),
9679
10428
  /* @__PURE__ */ jsx(Caption1, { children: bookingCode })
9680
10429
  ] }) }),
9681
10430
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.itemDetail, children: [
9682
- /* @__PURE__ */ jsx(Caption1Stronger, { children: "Jadwal Masuk Pelabuhan" }),
10431
+ /* @__PURE__ */ jsx(Caption1Stronger, { children: mergedLabels.scheduleLabel }),
9683
10432
  /* @__PURE__ */ jsxs(Caption1, { children: [
9684
10433
  departureDate,
9685
10434
  ", ",
@@ -9687,7 +10436,7 @@ var CardStatusOrder = ({
9687
10436
  ] })
9688
10437
  ] }) }),
9689
10438
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.itemDetail, children: [
9690
- /* @__PURE__ */ jsx(Caption1Stronger, { children: "Rute" }),
10439
+ /* @__PURE__ */ jsx(Caption1Stronger, { children: mergedLabels.routeLabel }),
9691
10440
  /* @__PURE__ */ jsxs(Caption1, { children: [
9692
10441
  origin,
9693
10442
  " ",
@@ -9697,11 +10446,11 @@ var CardStatusOrder = ({
9697
10446
  ] })
9698
10447
  ] }) }),
9699
10448
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.itemDetail, children: [
9700
- /* @__PURE__ */ jsx(Caption1Stronger, { children: "Jenis Pengguna Jasa" }),
10449
+ /* @__PURE__ */ jsx(Caption1Stronger, { children: mergedLabels.userTypeLabel }),
9701
10450
  /* @__PURE__ */ jsx(Caption1, { children: vehicleClass })
9702
10451
  ] }) }),
9703
10452
  /* @__PURE__ */ jsx(Col, { xs: 12, children: /* @__PURE__ */ jsxs("div", { className: styles.itemDetail, children: [
9704
- /* @__PURE__ */ jsx(Caption1Stronger, { children: "Layanan" }),
10453
+ /* @__PURE__ */ jsx(Caption1Stronger, { children: mergedLabels.serviceLabel }),
9705
10454
  /* @__PURE__ */ jsx(Caption1, { children: shipType || serviceType })
9706
10455
  ] }) })
9707
10456
  ] }) }),
@@ -9713,7 +10462,7 @@ var CardStatusOrder = ({
9713
10462
  style: { width: "100%" },
9714
10463
  shape: "circular",
9715
10464
  onClick: onClickViewTicket,
9716
- children: "Lihat E-Tiket"
10465
+ children: mergedLabels.viewTicketButton
9717
10466
  }
9718
10467
  ) })
9719
10468
  ]
@@ -9721,7 +10470,7 @@ var CardStatusOrder = ({
9721
10470
  ) }) })
9722
10471
  ] }) });
9723
10472
  };
9724
- var useStyles37 = makeStyles({
10473
+ var useStyles38 = makeStyles({
9725
10474
  surface: {
9726
10475
  width: "680px",
9727
10476
  maxWidth: "90vw",
@@ -9843,7 +10592,7 @@ var ModalPriceDetail = ({
9843
10592
  grandTotal,
9844
10593
  ...props
9845
10594
  }) => {
9846
- const styles = useStyles37();
10595
+ const styles = useStyles38();
9847
10596
  return /* @__PURE__ */ jsx(Dialog, { open: isOpen, onOpenChange: (_, data) => onOpenChange(data.open), ...props, children: /* @__PURE__ */ jsx(DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxs(DialogBody, { children: [
9848
10597
  /* @__PURE__ */ jsx(
9849
10598
  DialogTitle,
@@ -9934,13 +10683,23 @@ var ModalPriceDetail = ({
9934
10683
  ] }) }) })
9935
10684
  ] }) }) });
9936
10685
  };
9937
- var useStyles38 = makeStyles({
10686
+
10687
+ // src/components/CardProfileMenu/CardProfileMenu.constants.ts
10688
+ var DEFAULT_LABELS25 = {
10689
+ id: {},
10690
+ en: {}
10691
+ };
10692
+ var useStyles39 = makeStyles({
9938
10693
  container: {
9939
10694
  display: "flex",
9940
10695
  flexDirection: "column",
9941
10696
  backgroundColor: tokens.colorNeutralBackground1,
9942
10697
  ...shorthands.padding(tokens.spacingVerticalL),
9943
- ...shorthands.border(tokens.strokeWidthThin, "solid", tokens.colorNeutralStroke1),
10698
+ ...shorthands.border(
10699
+ tokens.strokeWidthThin,
10700
+ "solid",
10701
+ tokens.colorNeutralStroke1
10702
+ ),
9944
10703
  borderRadius: tokens.borderRadiusXLarge,
9945
10704
  rowGap: tokens.spacingHorizontalXXL,
9946
10705
  width: "100%"
@@ -9982,11 +10741,14 @@ var useStyles38 = makeStyles({
9982
10741
  }
9983
10742
  });
9984
10743
  var CardProfileMenu = ({
10744
+ language = "id",
10745
+ labels,
9985
10746
  sections,
9986
10747
  selectedValue,
9987
10748
  onTabSelect
9988
10749
  }) => {
9989
- const styles = useStyles38();
10750
+ const styles = useStyles39();
10751
+ ({ ...DEFAULT_LABELS25[language], ...labels });
9990
10752
  const handleTabSelect = (_, data) => {
9991
10753
  onTabSelect(data.value);
9992
10754
  };
@@ -10015,6 +10777,6 @@ var CardProfileMenu = ({
10015
10777
  ) });
10016
10778
  };
10017
10779
 
10018
- export { BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS2 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_COUNTRY_CODES, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_CLASSES, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS4 as DateFilterDefaultLabels, InputDynamic_default as InputDynamic, MODAL_PRESETS, ModalFilterTicket, DEFAULT_LABELS3 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListPassenger, ModalPassengerForm, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, SortMenu, Stepper, getBadgeConfig, getModalPreset, getSortLabel };
10780
+ export { BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS3 as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS4 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_COUNTRY_CODES, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_CLASSES, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS10 as DateFilterDefaultLabels, InputDynamic_default as InputDynamic, MODAL_PRESETS, ModalFilterTicket, DEFAULT_LABELS9 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListPassenger, ModalPassengerForm, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, SortMenu, Stepper, getBadgeConfig, getModalPreset, getSortLabel };
10019
10781
  //# sourceMappingURL=index.mjs.map
10020
10782
  //# sourceMappingURL=index.mjs.map