@asdp/ferryui 0.1.22-dev.9337 → 0.1.22-dev.9360

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4396,13 +4396,16 @@ var useStyles9 = reactComponents.makeStyles({
4396
4396
  display: "flex",
4397
4397
  justifyContent: "center",
4398
4398
  position: "absolute",
4399
- left: "18px",
4399
+ // left: "1px",
4400
4400
  bottom: "-16px",
4401
- width: "90%"
4401
+ width: "100%"
4402
4402
  },
4403
4403
  buttonSwitch: {
4404
4404
  background: reactComponents.tokens.colorNeutralBackground1,
4405
- boxShadow: `0 1px 2px 0 ${reactComponents.tokens.colorNeutralShadowKey}, 0 0 2px 0 ${reactComponents.tokens.colorNeutralShadowAmbient}`
4405
+ boxShadow: `0 1px 2px 0 ${reactComponents.tokens.colorNeutralShadowKey}, 0 0 2px 0 ${reactComponents.tokens.colorNeutralShadowAmbient}`,
4406
+ position: "absolute",
4407
+ right: "1rem",
4408
+ bottom: "-20px"
4406
4409
  },
4407
4410
  switchIcon: {
4408
4411
  display: "inline-flex",
@@ -4433,11 +4436,15 @@ var useStyles9 = reactComponents.makeStyles({
4433
4436
  }
4434
4437
  },
4435
4438
  formContainerCol: {
4439
+ paddingTop: "1rem !important",
4440
+ paddingBottom: "1rem !important",
4436
4441
  [`@media (max-width: ${extendedTokens.breakpointXl})`]: {
4437
4442
  paddingLeft: "20px !important",
4438
4443
  paddingRight: "20px !important",
4439
4444
  marginBottom: "1rem",
4440
- marginTop: "8rem"
4445
+ marginTop: "8rem",
4446
+ paddingTop: "0px !mportant",
4447
+ paddingBottom: "0px !mportant"
4441
4448
  }
4442
4449
  },
4443
4450
  serviceCol: {
@@ -4615,7 +4622,7 @@ var CardTicketSearch = ({
4615
4622
  className: styles.formContainerCol,
4616
4623
  children: /* @__PURE__ */ jsxRuntime.jsx("form", { onSubmit: handleSubmit(handleFormSubmit), children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { width: "100%" }, className: styles.formInnerRow, children: [
4617
4624
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 6, xxl: 6, xxxl: 6, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { gap: "16px" }, className: styles.formFieldRow, children: [
4618
- /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { children: [
4625
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: [
4619
4626
  /* @__PURE__ */ jsxRuntime.jsxs(
4620
4627
  reactGridSystem.Col,
4621
4628
  {
@@ -4626,6 +4633,9 @@ var CardTicketSearch = ({
4626
4633
  xl: 12,
4627
4634
  xxl: 12,
4628
4635
  xxxl: 12,
4636
+ style: {
4637
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke1}`
4638
+ },
4629
4639
  children: [
4630
4640
  /* @__PURE__ */ jsxRuntime.jsx(
4631
4641
  InputDynamic_default,
@@ -4652,37 +4662,33 @@ var CardTicketSearch = ({
4652
4662
  required: true
4653
4663
  }
4654
4664
  ),
4655
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.deviderButton, children: [
4656
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}),
4657
- " ",
4658
- /* @__PURE__ */ jsxRuntime.jsx(
4659
- reactComponents.Button,
4660
- {
4661
- onClick: onSwitchClick,
4662
- className: styles.buttonSwitch,
4663
- shape: "circular",
4664
- appearance: "secondary",
4665
- size: "large",
4666
- disabled: switchDisabled,
4667
- "aria-label": labels.switchAriaLabel,
4668
- icon: /* @__PURE__ */ jsxRuntime.jsx(
4669
- "div",
4670
- {
4671
- className: `${styles.switchIcon} ${isRotating ? styles.switchIconRotate : ""}`,
4672
- children: /* @__PURE__ */ jsxRuntime.jsx(
4673
- "img",
4674
- {
4675
- src: "/assets/images/icons/switch.svg",
4676
- alt: labels.switchAriaLabel,
4677
- width: 26,
4678
- height: 26
4679
- }
4680
- )
4681
- }
4682
- )
4683
- }
4684
- )
4685
- ] })
4665
+ /* @__PURE__ */ jsxRuntime.jsx(
4666
+ reactComponents.Button,
4667
+ {
4668
+ onClick: onSwitchClick,
4669
+ className: styles.buttonSwitch,
4670
+ shape: "circular",
4671
+ appearance: "secondary",
4672
+ size: "large",
4673
+ disabled: switchDisabled,
4674
+ "aria-label": labels.switchAriaLabel,
4675
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
4676
+ "div",
4677
+ {
4678
+ className: `${styles.switchIcon} ${isRotating ? styles.switchIconRotate : ""}`,
4679
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4680
+ "img",
4681
+ {
4682
+ src: "/assets/images/icons/switch.svg",
4683
+ alt: labels.switchAriaLabel,
4684
+ width: 26,
4685
+ height: 26
4686
+ }
4687
+ )
4688
+ }
4689
+ )
4690
+ }
4691
+ )
4686
4692
  ]
4687
4693
  }
4688
4694
  ),
@@ -4857,6 +4863,40 @@ var CardTicketSearch = ({
4857
4863
  },
4858
4864
  className: styles.serviceCol,
4859
4865
  children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: [
4866
+ /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
4867
+ reactGridSystem.Col,
4868
+ {
4869
+ xs: 12,
4870
+ sm: 12,
4871
+ md: 12,
4872
+ lg: 12,
4873
+ xl: 12,
4874
+ xxl: 12,
4875
+ xxxl: 12,
4876
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4877
+ InputDynamic_default,
4878
+ {
4879
+ name: "serviceClass",
4880
+ label: labels.serviceClassLabel,
4881
+ control,
4882
+ type: "text",
4883
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
4884
+ react.Icon,
4885
+ {
4886
+ icon: "fluent:ribbon-star-24-filled",
4887
+ color: reactComponents.tokens.colorBrandBackground
4888
+ }
4889
+ ),
4890
+ appearance: "filled-lighter",
4891
+ size: "large",
4892
+ placeholder: labels.placeholderTypeClass,
4893
+ onClick: onServiceClassClick,
4894
+ required: true,
4895
+ disabled: serviceClassDisabled
4896
+ }
4897
+ )
4898
+ }
4899
+ ) }) }) }),
4860
4900
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.formField, children: /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { style: { height: "100%", gap: "16px" }, children: [
4861
4901
  /* @__PURE__ */ jsxRuntime.jsx(
4862
4902
  reactGridSystem.Col,
@@ -4868,40 +4908,9 @@ var CardTicketSearch = ({
4868
4908
  xl: 12,
4869
4909
  xxl: 12,
4870
4910
  xxxl: 12,
4871
- children: /* @__PURE__ */ jsxRuntime.jsx(
4872
- InputDynamic_default,
4873
- {
4874
- name: "serviceClass",
4875
- label: labels.serviceClassLabel,
4876
- control,
4877
- type: "text",
4878
- contentBefore: /* @__PURE__ */ jsxRuntime.jsx(
4879
- react.Icon,
4880
- {
4881
- icon: "fluent:ribbon-star-24-filled",
4882
- color: reactComponents.tokens.colorBrandBackground
4883
- }
4884
- ),
4885
- appearance: "filled-lighter",
4886
- size: "large",
4887
- placeholder: labels.placeholderTypeClass,
4888
- onClick: onServiceClassClick,
4889
- required: true,
4890
- disabled: serviceClassDisabled
4891
- }
4892
- )
4893
- }
4894
- ),
4895
- /* @__PURE__ */ jsxRuntime.jsx(
4896
- reactGridSystem.Col,
4897
- {
4898
- xs: 12,
4899
- sm: 12,
4900
- md: 12,
4901
- lg: 12,
4902
- xl: 12,
4903
- xxl: 12,
4904
- xxxl: 12,
4911
+ style: {
4912
+ borderBottom: showPassengerField ? `1px solid ${reactComponents.tokens.colorNeutralStroke1}` : "none"
4913
+ },
4905
4914
  children: /* @__PURE__ */ jsxRuntime.jsx(
4906
4915
  InputDynamic_default,
4907
4916
  {
@@ -4927,7 +4936,7 @@ var CardTicketSearch = ({
4927
4936
  )
4928
4937
  }
4929
4938
  ),
4930
- showPassengerField && /* @__PURE__ */ jsxRuntime.jsx(
4939
+ showPassengerField && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
4931
4940
  reactGridSystem.Col,
4932
4941
  {
4933
4942
  xs: 12,
@@ -4959,7 +4968,7 @@ var CardTicketSearch = ({
4959
4968
  }
4960
4969
  )
4961
4970
  }
4962
- )
4971
+ ) })
4963
4972
  ] }) }) }),
4964
4973
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 12, sm: 12, lg: 12, xl: 12, xxl: 12, xxxl: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
4965
4974
  reactComponents.Button,
@@ -5406,7 +5415,9 @@ var DEFAULT_LABELS10 = {
5406
5415
  harborNotFound: "Pelabuhan tidak ditemukan",
5407
5416
  closeAriaLabel: "Tutup",
5408
5417
  popularHarborHeader: "Pelabuhan Populer",
5409
- favoriteHeader: "Favorit"
5418
+ favoriteHeader: "Favorit",
5419
+ emptyContent: "Pelabuhan",
5420
+ travelPlanHeader: "Rencana Perjalanan"
5410
5421
  },
5411
5422
  en: {
5412
5423
  title: "Select Harbor",
@@ -5418,10 +5429,113 @@ var DEFAULT_LABELS10 = {
5418
5429
  harborNotFound: "Harbor not found",
5419
5430
  closeAriaLabel: "Close",
5420
5431
  popularHarborHeader: "Popular Harbor",
5421
- favoriteHeader: "Favorite"
5432
+ favoriteHeader: "Favorite",
5433
+ emptyContent: "Harbor",
5434
+ travelPlanHeader: "Travel Plan"
5435
+ }
5436
+ };
5437
+
5438
+ // src/components/EmptyContent/EmptyContent.constants.ts
5439
+ var DEFAULT_LABELS11 = {
5440
+ id: {
5441
+ defaultImageAlt: "Tidak ada konten",
5442
+ defaultTitle: "Data {konten} belum bisa dimuat",
5443
+ defaultMessage: "Silahkan coba muat ulang halaman ini atau cek kembali beberapa saat lagi.",
5444
+ defaultButtonText: "Muat Ulang"
5445
+ },
5446
+ en: {
5447
+ defaultImageAlt: "No content available",
5448
+ defaultTitle: "Data {content} could not be loaded",
5449
+ defaultMessage: "Please try reloading this page or check back in a few moments.",
5450
+ defaultButtonText: "Reload"
5422
5451
  }
5423
5452
  };
5453
+ var getFormattedDefaultTitle = (template, content) => {
5454
+ if (content) {
5455
+ return template.replace(/\{(konten|content)\}/g, content);
5456
+ }
5457
+ return template.replace(/\s*\{(konten|content)\}\s*/g, " ").trim();
5458
+ };
5424
5459
  var useStyles11 = reactComponents.makeStyles({
5460
+ root: {
5461
+ display: "flex",
5462
+ flexDirection: "column",
5463
+ alignItems: "center",
5464
+ justifyContent: "center",
5465
+ gap: reactComponents.tokens.spacingVerticalL,
5466
+ textAlign: "center",
5467
+ paddingTop: reactComponents.tokens.spacingVerticalXXL,
5468
+ paddingBottom: reactComponents.tokens.spacingVerticalXXL,
5469
+ paddingLeft: reactComponents.tokens.spacingHorizontalXL,
5470
+ paddingRight: reactComponents.tokens.spacingHorizontalXL,
5471
+ width: "100%"
5472
+ },
5473
+ image: {
5474
+ maxWidth: "100%",
5475
+ height: "auto"
5476
+ },
5477
+ textContainer: {
5478
+ display: "flex",
5479
+ flexDirection: "column",
5480
+ alignItems: "center",
5481
+ gap: reactComponents.tokens.spacingVerticalS,
5482
+ maxWidth: "400px"
5483
+ },
5484
+ title: {
5485
+ fontWeight: "600"
5486
+ },
5487
+ message: {
5488
+ color: reactComponents.tokens.colorNeutralForeground3,
5489
+ textAlign: "center"
5490
+ }
5491
+ });
5492
+ var EmptyContent = ({
5493
+ title,
5494
+ content,
5495
+ message,
5496
+ imageSrc = "/assets/images/illustrations/no-content.svg",
5497
+ imageAlt,
5498
+ imageWidth = 240,
5499
+ imageHeight = 180,
5500
+ actionButton,
5501
+ language = "id",
5502
+ labels,
5503
+ className
5504
+ }) => {
5505
+ const styles = useStyles11();
5506
+ const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
5507
+ const displayTitle = title ?? getFormattedDefaultTitle(mergedLabels.defaultTitle, content);
5508
+ const displayMessage = message ?? mergedLabels.defaultMessage;
5509
+ const displayImageAlt = imageAlt ?? mergedLabels.defaultImageAlt;
5510
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reactComponents.mergeClasses(styles.root, className), children: [
5511
+ /* @__PURE__ */ jsxRuntime.jsx(
5512
+ "img",
5513
+ {
5514
+ src: imageSrc,
5515
+ alt: displayImageAlt,
5516
+ width: imageWidth,
5517
+ height: imageHeight,
5518
+ className: styles.image
5519
+ }
5520
+ ),
5521
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContainer, children: [
5522
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.title, children: displayTitle }),
5523
+ typeof displayMessage === "string" ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.message, children: displayMessage }) : displayMessage
5524
+ ] }),
5525
+ actionButton && /* @__PURE__ */ jsxRuntime.jsx(
5526
+ reactComponents.Button,
5527
+ {
5528
+ type: "button",
5529
+ appearance: actionButton.appearance || "primary",
5530
+ onClick: actionButton.onClick,
5531
+ shape: "circular",
5532
+ style: { width: "100%" },
5533
+ children: actionButton.text
5534
+ }
5535
+ )
5536
+ ] });
5537
+ };
5538
+ var useStyles12 = reactComponents.makeStyles({
5425
5539
  dialogTitle: {
5426
5540
  display: "flex",
5427
5541
  justifyContent: "space-between",
@@ -5559,7 +5673,7 @@ var HarborListItem = ({
5559
5673
  showDivider,
5560
5674
  containerClassName
5561
5675
  }) => {
5562
- const styles = useStyles11();
5676
+ const styles = useStyles12();
5563
5677
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5564
5678
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClassName, children: [
5565
5679
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.listContent, onClick: () => onSelect(harbor), children: [
@@ -5582,6 +5696,57 @@ var HarborListItem = ({
5582
5696
  showDivider && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {})
5583
5697
  ] });
5584
5698
  };
5699
+ var HarborListSkeleton = ({
5700
+ count = 5,
5701
+ showFavoriteIcon = false
5702
+ }) => {
5703
+ const styles = useStyles12();
5704
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.harborList, children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.harborItem, children: [
5705
+ /* @__PURE__ */ jsxRuntime.jsxs(
5706
+ reactComponents.Skeleton,
5707
+ {
5708
+ style: {
5709
+ display: "flex",
5710
+ alignItems: "center",
5711
+ gap: "0.5rem",
5712
+ width: "70%"
5713
+ },
5714
+ children: [
5715
+ /* @__PURE__ */ jsxRuntime.jsx(
5716
+ reactComponents.SkeletonItem,
5717
+ {
5718
+ style: {
5719
+ width: "24px",
5720
+ height: "24px",
5721
+ borderRadius: "4px"
5722
+ }
5723
+ }
5724
+ ),
5725
+ /* @__PURE__ */ jsxRuntime.jsx(
5726
+ reactComponents.SkeletonItem,
5727
+ {
5728
+ style: {
5729
+ width: "100%",
5730
+ height: "20px",
5731
+ borderRadius: "4px"
5732
+ }
5733
+ }
5734
+ )
5735
+ ]
5736
+ }
5737
+ ),
5738
+ showFavoriteIcon && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
5739
+ reactComponents.SkeletonItem,
5740
+ {
5741
+ style: {
5742
+ width: "24px",
5743
+ height: "24px",
5744
+ borderRadius: "4px"
5745
+ }
5746
+ }
5747
+ ) })
5748
+ ] }, index)) });
5749
+ };
5585
5750
  var ModalSearchHarbor = ({
5586
5751
  language = "id",
5587
5752
  labels,
@@ -5592,7 +5757,8 @@ var ModalSearchHarbor = ({
5592
5757
  harbors,
5593
5758
  favoriteHarbors,
5594
5759
  lastSearchedHarbors,
5595
- isLoading = false,
5760
+ isLoadingPort = false,
5761
+ isLoadingTravelPlan = false,
5596
5762
  searchQuery,
5597
5763
  onSearchChange,
5598
5764
  onSelectHarbor,
@@ -5601,11 +5767,18 @@ var ModalSearchHarbor = ({
5601
5767
  onRemoveLastSearched,
5602
5768
  onClearLastSearched,
5603
5769
  onClearFavorite,
5770
+ reloadButtonPort,
5771
+ reloadButtonTravelPlan,
5772
+ reloadButtonAll,
5604
5773
  popularHarbors,
5605
- showButtonFavorite = true
5774
+ showButtonFavorite = true,
5775
+ emptyImageSrc = "",
5776
+ isErrorTravelPlan = false,
5777
+ isErrorPort = false
5606
5778
  }) => {
5607
- const styles = useStyles11();
5779
+ const styles = useStyles12();
5608
5780
  const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
5781
+ const isError = isErrorTravelPlan && isErrorPort;
5609
5782
  const handleSelect = (harbor) => {
5610
5783
  onAddLastSearched(harbor);
5611
5784
  onSelectHarbor(harbor);
@@ -5641,7 +5814,15 @@ var ModalSearchHarbor = ({
5641
5814
  children: title || mergedLabels.title
5642
5815
  }
5643
5816
  ),
5644
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { className: styles.content, children: [
5817
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isError ? /* @__PURE__ */ jsxRuntime.jsx(
5818
+ EmptyContent,
5819
+ {
5820
+ content: mergedLabels.emptyContent,
5821
+ language,
5822
+ actionButton: reloadButtonAll,
5823
+ imageSrc: emptyImageSrc
5824
+ }
5825
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5645
5826
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
5646
5827
  reactComponents.Input,
5647
5828
  {
@@ -5660,177 +5841,154 @@ var ModalSearchHarbor = ({
5660
5841
  }
5661
5842
  ) }),
5662
5843
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.resultList, children: [
5663
- favoriteHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5664
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
5665
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.favoriteHeader }),
5666
- /* @__PURE__ */ jsxRuntime.jsx(
5667
- reactComponents.Caption1,
5844
+ isErrorTravelPlan ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {}) : isLoadingTravelPlan ? /* @__PURE__ */ jsxRuntime.jsx(HarborListSkeleton, { count: 3, showFavoriteIcon: false }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5845
+ favoriteHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5846
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
5847
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.favoriteHeader }),
5848
+ /* @__PURE__ */ jsxRuntime.jsx(
5849
+ reactComponents.Caption1,
5850
+ {
5851
+ className: reactComponents.mergeClasses(
5852
+ styles.dangerText,
5853
+ styles.cursorPointer
5854
+ ),
5855
+ onClick: onClearFavorite,
5856
+ children: mergedLabels.clearAllButton
5857
+ }
5858
+ )
5859
+ ] }),
5860
+ favoriteHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.buttonContainer, children: favoriteHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsxs(
5861
+ reactComponents.Button,
5668
5862
  {
5669
- className: reactComponents.mergeClasses(
5670
- styles.dangerText,
5671
- styles.cursorPointer
5863
+ onClick: () => handleSelect(harbor),
5864
+ size: "medium",
5865
+ appearance: "subtle",
5866
+ iconPosition: "before",
5867
+ className: styles.circularButton,
5868
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
5869
+ react.Icon,
5870
+ {
5871
+ icon: "fluent:vehicle-ship-20-regular",
5872
+ fontSize: 20,
5873
+ color: reactComponents.tokens.colorBrandBackground
5874
+ }
5672
5875
  ),
5673
- onClick: onClearFavorite,
5674
- children: mergedLabels.clearAllButton
5675
- }
5676
- )
5876
+ children: [
5877
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.buttonContent, children: [
5878
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: harbor.portName }),
5879
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: harbor.branchName })
5880
+ ] }),
5881
+ /* @__PURE__ */ jsxRuntime.jsx(
5882
+ react.Icon,
5883
+ {
5884
+ icon: "fluent:star-24-filled",
5885
+ fontSize: 20,
5886
+ color: reactComponents.tokens.colorBrandBackground,
5887
+ style: { marginLeft: 5 }
5888
+ }
5889
+ )
5890
+ ]
5891
+ },
5892
+ harbor.portId
5893
+ )) })
5677
5894
  ] }),
5678
- favoriteHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.buttonContainer, children: favoriteHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsxs(
5679
- reactComponents.Button,
5680
- {
5681
- onClick: () => handleSelect(harbor),
5682
- size: "medium",
5683
- appearance: "subtle",
5684
- iconPosition: "before",
5685
- className: styles.circularButton,
5686
- icon: /* @__PURE__ */ jsxRuntime.jsx(
5687
- react.Icon,
5895
+ lastSearchedHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5896
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
5897
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.lastSearchedHeader }),
5898
+ /* @__PURE__ */ jsxRuntime.jsx(
5899
+ reactComponents.Caption1,
5688
5900
  {
5689
- icon: "fluent:vehicle-ship-20-regular",
5690
- fontSize: 20,
5691
- color: reactComponents.tokens.colorBrandBackground
5901
+ className: reactComponents.mergeClasses(
5902
+ styles.dangerText,
5903
+ styles.cursorPointer
5904
+ ),
5905
+ onClick: onClearLastSearched,
5906
+ children: mergedLabels.clearAllButton
5692
5907
  }
5693
- ),
5694
- children: [
5695
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.buttonContent, children: [
5696
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: harbor.portName }),
5697
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: harbor.branchName })
5698
- ] }),
5699
- /* @__PURE__ */ jsxRuntime.jsx(
5908
+ )
5909
+ ] }),
5910
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: lastSearchedHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsx(
5911
+ HarborListItem,
5912
+ {
5913
+ harbor,
5914
+ onSelect: handleSelect,
5915
+ containerClassName: styles.historyItem,
5916
+ trailingIcon: /* @__PURE__ */ jsxRuntime.jsx(
5700
5917
  react.Icon,
5701
5918
  {
5702
- icon: "fluent:star-24-filled",
5919
+ onClick: () => onRemoveLastSearched(harbor),
5920
+ icon: "fluent:dismiss-24-regular",
5703
5921
  fontSize: 20,
5704
- color: reactComponents.tokens.colorBrandBackground,
5705
- style: { marginLeft: 5 }
5922
+ className: styles.cursorPointer
5706
5923
  }
5707
- )
5708
- ]
5709
- },
5710
- harbor.portId
5711
- )) })
5712
- ] }),
5713
- lastSearchedHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5714
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
5715
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.lastSearchedHeader }),
5716
- /* @__PURE__ */ jsxRuntime.jsx(
5717
- reactComponents.Caption1,
5718
- {
5719
- className: reactComponents.mergeClasses(
5720
- styles.dangerText,
5721
- styles.cursorPointer
5722
5924
  ),
5723
- onClick: onClearLastSearched,
5724
- children: mergedLabels.clearAllButton
5725
- }
5726
- )
5925
+ showDivider: true
5926
+ },
5927
+ harbor.portId
5928
+ )) })
5727
5929
  ] }),
5728
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: lastSearchedHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsx(
5930
+ popularHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5931
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.popularHarborHeader }) }),
5932
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: popularHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsx(
5933
+ HarborListItem,
5934
+ {
5935
+ harbor,
5936
+ onSelect: handleSelect,
5937
+ containerClassName: styles.historyItem,
5938
+ showDivider: true
5939
+ },
5940
+ harbor.portId
5941
+ )) })
5942
+ ] })
5943
+ ] }),
5944
+ isErrorPort ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5945
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5946
+ /* @__PURE__ */ jsxRuntime.jsx(
5947
+ EmptyContent,
5948
+ {
5949
+ content: mergedLabels.emptyContent,
5950
+ language,
5951
+ actionButton: reloadButtonPort,
5952
+ imageSrc: emptyImageSrc
5953
+ }
5954
+ )
5955
+ ] }) : isLoadingPort ? /* @__PURE__ */ jsxRuntime.jsx(
5956
+ HarborListSkeleton,
5957
+ {
5958
+ count: 5,
5959
+ showFavoriteIcon: showButtonFavorite
5960
+ }
5961
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5962
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5963
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.harborList, children: harbors.length > 0 ? harbors.map((harbor, index) => /* @__PURE__ */ jsxRuntime.jsx(
5729
5964
  HarborListItem,
5730
5965
  {
5731
5966
  harbor,
5732
5967
  onSelect: handleSelect,
5733
- containerClassName: styles.historyItem,
5734
- trailingIcon: /* @__PURE__ */ jsxRuntime.jsx(
5968
+ containerClassName: styles.harborItem,
5969
+ trailingIcon: showButtonFavorite && /* @__PURE__ */ jsxRuntime.jsx(
5735
5970
  react.Icon,
5736
5971
  {
5737
- onClick: () => onRemoveLastSearched(harbor),
5738
- icon: "fluent:dismiss-24-regular",
5739
- fontSize: 20,
5740
- className: styles.cursorPointer
5972
+ icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
5973
+ color: reactComponents.tokens.colorBrandBackground,
5974
+ className: styles.cursorPointer,
5975
+ onClick: () => onToggleFavorite(harbor)
5741
5976
  }
5742
5977
  ),
5743
- showDivider: true
5744
- },
5745
- harbor.portId
5746
- )) })
5747
- ] }),
5748
- popularHarbors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5749
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { children: mergedLabels.popularHarborHeader }) }),
5750
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: popularHarbors.map((harbor) => /* @__PURE__ */ jsxRuntime.jsx(
5751
- HarborListItem,
5752
- {
5753
- harbor,
5754
- onSelect: handleSelect,
5755
- containerClassName: styles.historyItem,
5756
- showDivider: true
5978
+ showDivider: index !== harbors.length - 1
5757
5979
  },
5758
- harbor.portId
5759
- )) })
5760
- ] }),
5761
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5762
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.harborList, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: [1, 2, 3, 4, 5].map((item) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.harborItem, children: [
5763
- /* @__PURE__ */ jsxRuntime.jsxs(
5764
- reactComponents.Skeleton,
5765
- {
5766
- style: {
5767
- display: "flex",
5768
- alignItems: "center",
5769
- gap: "0.5rem",
5770
- width: "70%"
5771
- },
5772
- children: [
5773
- /* @__PURE__ */ jsxRuntime.jsx(
5774
- reactComponents.SkeletonItem,
5775
- {
5776
- style: {
5777
- width: "24px",
5778
- height: "24px",
5779
- borderRadius: "4px"
5780
- }
5781
- }
5782
- ),
5783
- /* @__PURE__ */ jsxRuntime.jsx(
5784
- reactComponents.SkeletonItem,
5785
- {
5786
- style: {
5787
- width: "100%",
5788
- height: "20px",
5789
- borderRadius: "4px"
5790
- }
5791
- }
5792
- )
5793
- ]
5794
- }
5795
- ),
5796
- showButtonFavorite && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
5797
- reactComponents.SkeletonItem,
5798
- {
5799
- style: {
5800
- width: "24px",
5801
- height: "24px",
5802
- borderRadius: "4px"
5803
- }
5804
- }
5805
- ) })
5806
- ] }, item)) }) : harbors.length > 0 ? harbors.map((harbor, index) => /* @__PURE__ */ jsxRuntime.jsx(
5807
- HarborListItem,
5808
- {
5809
- harbor,
5810
- onSelect: handleSelect,
5811
- containerClassName: styles.harborItem,
5812
- trailingIcon: showButtonFavorite && /* @__PURE__ */ jsxRuntime.jsx(
5813
- react.Icon,
5814
- {
5815
- icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
5816
- color: reactComponents.tokens.colorBrandBackground,
5817
- className: styles.cursorPointer,
5818
- onClick: () => onToggleFavorite(harbor)
5819
- }
5820
- ),
5821
- showDivider: index !== harbors.length - 1
5822
- },
5823
- harbor.portId || index
5824
- )) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.emptyState, children: mergedLabels.harborNotFound }) })
5980
+ harbor.portId || index
5981
+ )) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.emptyState, children: mergedLabels.harborNotFound }) })
5982
+ ] })
5825
5983
  ] })
5826
- ] })
5984
+ ] }) })
5827
5985
  ] }) })
5828
5986
  }
5829
5987
  );
5830
5988
  };
5831
5989
 
5832
5990
  // src/components/ModalSelectDate/ModalSelectDate.constants.ts
5833
- var DEFAULT_LABELS11 = {
5991
+ var DEFAULT_LABELS12 = {
5834
5992
  id: {
5835
5993
  title: "Pilih Tanggal",
5836
5994
  oneWay: "Sekali Jalan",
@@ -5844,7 +6002,7 @@ var DEFAULT_LABELS11 = {
5844
6002
  closeAriaLabel: "Close"
5845
6003
  }
5846
6004
  };
5847
- var useStyles12 = reactComponents.makeStyles({
6005
+ var useStyles13 = reactComponents.makeStyles({
5848
6006
  dialogSurface: {
5849
6007
  maxWidth: "600px",
5850
6008
  width: "100%"
@@ -5964,8 +6122,8 @@ var ModalSelectDate = ({
5964
6122
  dateFormat = "DD MMMM YYYY",
5965
6123
  showRoundtrip = true
5966
6124
  }) => {
5967
- const styles = useStyles12();
5968
- const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
6125
+ const styles = useStyles13();
6126
+ const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
5969
6127
  React.useEffect(() => {
5970
6128
  moment__default.default.locale(language === "id" ? "id" : "en");
5971
6129
  }, [language]);
@@ -6188,14 +6346,15 @@ var ModalSelectDate = ({
6188
6346
  };
6189
6347
 
6190
6348
  // src/components/ModalService/ModalService.constants.ts
6191
- var DEFAULT_LABELS12 = {
6349
+ var DEFAULT_LABELS13 = {
6192
6350
  id: {
6193
6351
  title: "Pilih Kelas Layanan",
6194
6352
  loading: "Memuat...",
6195
6353
  error: "Gagal memuat layanan",
6196
6354
  selectAll: "Pilih Semua",
6197
6355
  saveButton: "Simpan",
6198
- closeAriaLabel: "Tutup"
6356
+ closeAriaLabel: "Tutup",
6357
+ emptyContent: "Kelas Layanan"
6199
6358
  },
6200
6359
  en: {
6201
6360
  title: "Select Service Class",
@@ -6203,10 +6362,11 @@ var DEFAULT_LABELS12 = {
6203
6362
  error: "Error loading services",
6204
6363
  selectAll: "Select All",
6205
6364
  saveButton: "Save",
6206
- closeAriaLabel: "Close"
6365
+ closeAriaLabel: "Close",
6366
+ emptyContent: "Service Class"
6207
6367
  }
6208
6368
  };
6209
- var useStyles13 = reactComponents.makeStyles({
6369
+ var useStyles14 = reactComponents.makeStyles({
6210
6370
  dialogSurface: {
6211
6371
  maxWidth: "600px",
6212
6372
  width: "100%"
@@ -6279,6 +6439,66 @@ var useStyles13 = reactComponents.makeStyles({
6279
6439
  borderRadius: reactComponents.tokens.borderRadiusCircular
6280
6440
  }
6281
6441
  });
6442
+ var ServiceListSkeleton = ({
6443
+ count = 3
6444
+ }) => {
6445
+ const styles = useStyles14();
6446
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.serviceList, children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceItem, children: [
6447
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.serviceContent, children: /* @__PURE__ */ jsxRuntime.jsxs(
6448
+ reactComponents.Skeleton,
6449
+ {
6450
+ style: {
6451
+ display: "flex",
6452
+ flexDirection: "column",
6453
+ gap: "4px",
6454
+ width: "80%"
6455
+ },
6456
+ children: [
6457
+ /* @__PURE__ */ jsxRuntime.jsx(
6458
+ reactComponents.SkeletonItem,
6459
+ {
6460
+ style: {
6461
+ width: "120px",
6462
+ height: "20px",
6463
+ borderRadius: "4px"
6464
+ }
6465
+ }
6466
+ ),
6467
+ /* @__PURE__ */ jsxRuntime.jsx(
6468
+ reactComponents.SkeletonItem,
6469
+ {
6470
+ style: {
6471
+ width: "80px",
6472
+ height: "16px",
6473
+ borderRadius: "4px"
6474
+ }
6475
+ }
6476
+ ),
6477
+ /* @__PURE__ */ jsxRuntime.jsx(
6478
+ reactComponents.SkeletonItem,
6479
+ {
6480
+ style: {
6481
+ width: "100%",
6482
+ height: "16px",
6483
+ borderRadius: "4px"
6484
+ }
6485
+ }
6486
+ )
6487
+ ]
6488
+ }
6489
+ ) }),
6490
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
6491
+ reactComponents.SkeletonItem,
6492
+ {
6493
+ style: {
6494
+ width: "20px",
6495
+ height: "20px",
6496
+ borderRadius: "4px"
6497
+ }
6498
+ }
6499
+ ) })
6500
+ ] }, index)) });
6501
+ };
6282
6502
  var ModalService = ({
6283
6503
  language = "id",
6284
6504
  labels,
@@ -6289,10 +6509,12 @@ var ModalService = ({
6289
6509
  selectedServiceIds,
6290
6510
  onSave,
6291
6511
  isLoading = false,
6292
- isError = false
6512
+ isError = false,
6513
+ reloadButton,
6514
+ emptyImageSrc = ""
6293
6515
  }) => {
6294
- const styles = useStyles13();
6295
- const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
6516
+ const styles = useStyles14();
6517
+ const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
6296
6518
  const displayTitle = title || mergedLabels.title;
6297
6519
  const [selectedServices, setSelectedServices] = React.useState(selectedServiceIds);
6298
6520
  React.useEffect(() => {
@@ -6347,7 +6569,15 @@ var ModalService = ({
6347
6569
  children: displayTitle
6348
6570
  }
6349
6571
  ),
6350
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.loading }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6572
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ServiceListSkeleton, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(
6573
+ EmptyContent,
6574
+ {
6575
+ content: mergedLabels.emptyContent,
6576
+ language,
6577
+ actionButton: reloadButton,
6578
+ imageSrc: emptyImageSrc
6579
+ }
6580
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6351
6581
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.serviceList, children: [
6352
6582
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
6353
6583
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.selectAll }),
@@ -6397,23 +6627,25 @@ var ModalService = ({
6397
6627
  };
6398
6628
 
6399
6629
  // src/components/ModalTotalPassengers/ModalTotalPassengers.constants.ts
6400
- var DEFAULT_LABELS13 = {
6630
+ var DEFAULT_LABELS14 = {
6401
6631
  id: {
6402
6632
  title: "Pilih Jumlah Penumpang",
6403
6633
  infoMessage: "Anda dapat menambahkan hingga {maxPassengers} penumpang pada golongan kendaraan ini.",
6404
6634
  loading: "Memuat...",
6405
6635
  saveButton: "Simpan",
6406
- closeAriaLabel: "Tutup"
6636
+ closeAriaLabel: "Tutup",
6637
+ emptyContent: "Kelas Penumpang"
6407
6638
  },
6408
6639
  en: {
6409
6640
  title: "Select Total Passengers",
6410
6641
  infoMessage: "You can add up to {maxPassengers} passengers in this vehicle category.",
6411
6642
  loading: "Loading...",
6412
6643
  saveButton: "Save",
6413
- closeAriaLabel: "Close"
6644
+ closeAriaLabel: "Close",
6645
+ emptyContent: "Passengers Class"
6414
6646
  }
6415
6647
  };
6416
- var useStyles14 = reactComponents.makeStyles({
6648
+ var useStyles15 = reactComponents.makeStyles({
6417
6649
  dialogSurface: {
6418
6650
  maxWidth: "600px",
6419
6651
  width: "100%"
@@ -6480,6 +6712,62 @@ var useStyles14 = reactComponents.makeStyles({
6480
6712
  margin: 0
6481
6713
  }
6482
6714
  });
6715
+ var TotalPassengersListSkeleton = ({
6716
+ count = 3
6717
+ }) => {
6718
+ const styles = useStyles15();
6719
+ return /* @__PURE__ */ jsxRuntime.jsx(
6720
+ "div",
6721
+ {
6722
+ style: {
6723
+ display: "flex",
6724
+ flexDirection: "column",
6725
+ marginTop: reactComponents.tokens.spacingHorizontalM
6726
+ },
6727
+ children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
6728
+ "div",
6729
+ {
6730
+ className: styles.accordionItem,
6731
+ style: { padding: "8px 0" },
6732
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionHeader, style: { padding: "0 12px" }, children: [
6733
+ /* @__PURE__ */ jsxRuntime.jsx(
6734
+ "div",
6735
+ {
6736
+ style: { display: "flex", alignItems: "center", width: "100%" },
6737
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
6738
+ reactComponents.SkeletonItem,
6739
+ {
6740
+ style: {
6741
+ width: "120px",
6742
+ height: "18px"
6743
+ }
6744
+ }
6745
+ ) })
6746
+ }
6747
+ ),
6748
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: "4px" } }),
6749
+ /* @__PURE__ */ jsxRuntime.jsx(
6750
+ "div",
6751
+ {
6752
+ style: { display: "flex", alignItems: "center", width: "100%" },
6753
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
6754
+ reactComponents.SkeletonItem,
6755
+ {
6756
+ style: {
6757
+ width: "48px",
6758
+ height: "14px"
6759
+ }
6760
+ }
6761
+ ) })
6762
+ }
6763
+ )
6764
+ ] })
6765
+ },
6766
+ index
6767
+ ))
6768
+ }
6769
+ );
6770
+ };
6483
6771
  var ModalTotalPassengers = ({
6484
6772
  language = "id",
6485
6773
  labels,
@@ -6490,11 +6778,14 @@ var ModalTotalPassengers = ({
6490
6778
  selectedPassengers,
6491
6779
  onSave,
6492
6780
  isLoading = false,
6781
+ isError = false,
6782
+ reloadButton,
6783
+ emptyImageSrc,
6493
6784
  maxPassengers = 10,
6494
6785
  infoMessage
6495
6786
  }) => {
6496
- const styles = useStyles14();
6497
- const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
6787
+ const styles = useStyles15();
6788
+ const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
6498
6789
  const [passengers, setPassengers] = React.useState([]);
6499
6790
  const [openItems, setOpenItems] = React.useState([]);
6500
6791
  const defaultInfoMessage = mergedLabels.infoMessage.replace(
@@ -6551,11 +6842,16 @@ var ModalTotalPassengers = ({
6551
6842
  (p) => p.passengerAgeCode === passengerAgeCode
6552
6843
  );
6553
6844
  if (!passenger) return 0;
6554
- const cls = passenger.classes.find(
6555
- (c) => c.classCode === classCode
6556
- );
6845
+ const cls = passenger.classes.find((c) => c.classCode === classCode);
6557
6846
  return cls?.count ?? 0;
6558
6847
  };
6848
+ const getTotalCountForType = (passengerAgeCode) => {
6849
+ const passenger = passengers.find(
6850
+ (p) => p.passengerAgeCode === passengerAgeCode
6851
+ );
6852
+ if (!passenger) return 0;
6853
+ return passenger.classes.reduce((sum, cls) => sum + (cls.count ?? 0), 0);
6854
+ };
6559
6855
  const getTotalForType = (passengerAgeCode) => {
6560
6856
  const passenger = passengers.find(
6561
6857
  (p) => p.passengerAgeCode === passengerAgeCode
@@ -6610,10 +6906,7 @@ var ModalTotalPassengers = ({
6610
6906
  classes: passenger.classes.map((cls) => {
6611
6907
  if (cls.classCode === classCode && (cls.count ?? 0) > 0) {
6612
6908
  const newCount = (cls.count ?? 0) - 1;
6613
- const newPassengers = (cls.passengers || []).slice(
6614
- 0,
6615
- newCount
6616
- );
6909
+ const newPassengers = (cls.passengers || []).slice(0, newCount);
6617
6910
  return {
6618
6911
  ...cls,
6619
6912
  count: newCount,
@@ -6651,131 +6944,134 @@ var ModalTotalPassengers = ({
6651
6944
  children: title || mergedLabels.title
6652
6945
  }
6653
6946
  ),
6654
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { children: [
6947
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(TotalPassengersListSkeleton, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(
6948
+ EmptyContent,
6949
+ {
6950
+ content: mergedLabels.emptyContent,
6951
+ language,
6952
+ actionButton: reloadButton,
6953
+ imageSrc: emptyImageSrc
6954
+ }
6955
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6655
6956
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MessageBar, { shape: "rounded", children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.MessageBarBody, { children: infoMessage || defaultInfoMessage }) }),
6656
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: mergedLabels.loading }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6657
- /* @__PURE__ */ jsxRuntime.jsx(
6658
- reactComponents.Accordion,
6659
- {
6660
- collapsible: true,
6661
- multiple: true,
6662
- openItems,
6663
- onToggle: (_, data) => setOpenItems(data.openItems),
6664
- className: styles.passengerSection,
6665
- children: passengerTypes.map((passengerType) => {
6666
- const classes = passengerType.classes || [];
6667
- return /* @__PURE__ */ jsxRuntime.jsxs(
6668
- reactComponents.AccordionItem,
6669
- {
6670
- value: String(passengerType.id),
6671
- className: styles.accordionItem,
6672
- children: [
6673
- /* @__PURE__ */ jsxRuntime.jsxs(
6674
- reactComponents.AccordionHeader,
6675
- {
6676
- className: styles.accordionHeader,
6677
- expandIconPosition: "end",
6678
- children: [
6679
- passengerType.passengerAgeName,
6680
- " (",
6681
- getTotalForType(passengerType.passengerAgeCode),
6682
- ")"
6683
- ]
6684
- }
6685
- ),
6686
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionPanel, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.nestedSection, children: classes.map((cls) => /* @__PURE__ */ jsxRuntime.jsxs(
6687
- "div",
6688
- {
6689
- className: styles.nestedRow,
6690
- children: [
6691
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: (cls?.className || "")?.toUpperCase() }),
6692
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.passengerCount, children: [
6693
- /* @__PURE__ */ jsxRuntime.jsx(
6694
- reactComponents.Button,
6695
- {
6696
- appearance: "outline",
6697
- className: styles.counterButton,
6698
- size: "small",
6699
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:subtract-12-regular" }),
6700
- onClick: (e) => {
6701
- e.stopPropagation();
6702
- handleDecrement(
6703
- passengerType.passengerAgeCode,
6704
- cls.classCode
6705
- );
6706
- },
6707
- disabled: getServiceCount(
6708
- passengerType.passengerAgeCode,
6709
- cls.classCode
6710
- ) === 0
6711
- }
6712
- ),
6713
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.countText, children: getServiceCount(
6957
+ /* @__PURE__ */ jsxRuntime.jsx(
6958
+ reactComponents.Accordion,
6959
+ {
6960
+ collapsible: true,
6961
+ multiple: true,
6962
+ openItems,
6963
+ onToggle: (_, data) => setOpenItems(data.openItems),
6964
+ className: styles.passengerSection,
6965
+ children: passengerTypes.map((passengerType) => {
6966
+ const classes = passengerType.classes || [];
6967
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6968
+ reactComponents.AccordionItem,
6969
+ {
6970
+ value: String(passengerType.id),
6971
+ className: styles.accordionItem,
6972
+ children: [
6973
+ /* @__PURE__ */ jsxRuntime.jsxs(
6974
+ reactComponents.AccordionHeader,
6975
+ {
6976
+ className: styles.accordionHeader,
6977
+ expandIconPosition: "end",
6978
+ children: [
6979
+ passengerType.passengerAgeName,
6980
+ " (",
6981
+ getTotalForType(passengerType.passengerAgeCode),
6982
+ ")"
6983
+ ]
6984
+ }
6985
+ ),
6986
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.AccordionPanel, { className: styles.accordionPanel, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.nestedSection, children: classes.map((cls) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.nestedRow, children: [
6987
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: (cls?.className || "")?.toUpperCase() }),
6988
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.passengerCount, children: [
6989
+ /* @__PURE__ */ jsxRuntime.jsx(
6990
+ reactComponents.Button,
6991
+ {
6992
+ appearance: "outline",
6993
+ className: styles.counterButton,
6994
+ size: "small",
6995
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:subtract-12-regular" }),
6996
+ onClick: (e) => {
6997
+ e.stopPropagation();
6998
+ handleDecrement(
6714
6999
  passengerType.passengerAgeCode,
6715
7000
  cls.classCode
6716
- ) }),
6717
- /* @__PURE__ */ jsxRuntime.jsx(
6718
- reactComponents.Button,
6719
- {
6720
- appearance: "outline",
6721
- className: styles.counterButton,
6722
- size: "small",
6723
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-12-regular" }),
6724
- disabled: getServiceCount(
6725
- passengerType.passengerAgeCode,
6726
- cls.classCode
6727
- ) >= cls.maxCapacity || totalPassengerCount >= maxPassengers,
6728
- onClick: (e) => {
6729
- e.stopPropagation();
6730
- handleIncrement(
6731
- passengerType.passengerAgeCode,
6732
- cls.classCode
6733
- );
6734
- }
6735
- }
6736
- )
6737
- ] })
6738
- ]
6739
- },
6740
- cls.id
6741
- )) }) })
6742
- ]
6743
- },
6744
- passengerType.id
6745
- );
6746
- })
6747
- }
6748
- ),
6749
- /* @__PURE__ */ jsxRuntime.jsx(
6750
- reactComponents.Button,
6751
- {
6752
- appearance: "primary",
6753
- size: "medium",
6754
- className: styles.submitButton,
6755
- onClick: handleSave,
6756
- children: mergedLabels.saveButton
6757
- }
6758
- )
6759
- ] })
6760
- ] })
7001
+ );
7002
+ },
7003
+ disabled: getServiceCount(
7004
+ passengerType.passengerAgeCode,
7005
+ cls.classCode
7006
+ ) === 0 || getTotalCountForType(
7007
+ passengerType.passengerAgeCode
7008
+ ) <= passengerType.minCapacity
7009
+ }
7010
+ ),
7011
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { className: styles.countText, children: getServiceCount(
7012
+ passengerType.passengerAgeCode,
7013
+ cls.classCode
7014
+ ) }),
7015
+ /* @__PURE__ */ jsxRuntime.jsx(
7016
+ reactComponents.Button,
7017
+ {
7018
+ appearance: "outline",
7019
+ className: styles.counterButton,
7020
+ size: "small",
7021
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:add-12-regular" }),
7022
+ disabled: getServiceCount(
7023
+ passengerType.passengerAgeCode,
7024
+ cls.classCode
7025
+ ) >= cls.maxCapacity || totalPassengerCount >= maxPassengers,
7026
+ onClick: (e) => {
7027
+ e.stopPropagation();
7028
+ handleIncrement(
7029
+ passengerType.passengerAgeCode,
7030
+ cls.classCode
7031
+ );
7032
+ }
7033
+ }
7034
+ )
7035
+ ] })
7036
+ ] }, cls.id)) }) })
7037
+ ]
7038
+ },
7039
+ passengerType.id
7040
+ );
7041
+ })
7042
+ }
7043
+ ),
7044
+ /* @__PURE__ */ jsxRuntime.jsx(
7045
+ reactComponents.Button,
7046
+ {
7047
+ appearance: "primary",
7048
+ size: "medium",
7049
+ className: styles.submitButton,
7050
+ onClick: handleSave,
7051
+ children: mergedLabels.saveButton
7052
+ }
7053
+ )
7054
+ ] }) })
6761
7055
  ] }) }) });
6762
7056
  };
6763
7057
 
6764
7058
  // src/components/ModalTypeOfService/ModalTypeOfService.constants.ts
6765
- var DEFAULT_LABELS14 = {
7059
+ var DEFAULT_LABELS15 = {
6766
7060
  id: {
6767
- title: "Pilih Tipe Layanan",
7061
+ title: "Pilih Jenis Layanan",
6768
7062
  cancelButton: "Batal",
6769
7063
  saveButton: "Simpan",
6770
7064
  vehiclesAlt: "kendaraan",
6771
- closeAriaLabel: "Tutup"
7065
+ closeAriaLabel: "Tutup",
7066
+ emptyContent: "Jenis Layanan"
6772
7067
  },
6773
7068
  en: {
6774
7069
  title: "Select Service Type",
6775
7070
  cancelButton: "Cancel",
6776
7071
  saveButton: "Save",
6777
7072
  vehiclesAlt: "vehicles",
6778
- closeAriaLabel: "Close"
7073
+ closeAriaLabel: "Close",
7074
+ emptyContent: "Service Type"
6779
7075
  }
6780
7076
  };
6781
7077
  var DEFAULT_VEHICLE_ICONS = {
@@ -6790,49 +7086,132 @@ var DEFAULT_VEHICLE_ICONS = {
6790
7086
  bigTruck: "/assets/images/icons/big-truck.webp",
6791
7087
  looseLoad: "/assets/images/icons/loose-load.webp"
6792
7088
  };
6793
- var useStyles15 = reactComponents.makeStyles({
6794
- dialogSurface: {
6795
- maxWidth: "600px",
6796
- width: "100%"
6797
- },
6798
- closeButton: {
6799
- minWidth: "32px",
6800
- minHeight: "32px"
6801
- },
6802
- passengerSection: {
6803
- marginTop: reactComponents.tokens.spacingHorizontalM,
6804
- display: "flex",
6805
- flexDirection: "column"
6806
- },
6807
- accordionItem: {
6808
- borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
6809
- width: "100%"
6810
- },
6811
- accordionHeader: {
6812
- fontSize: reactComponents.tokens.fontSizeBase300,
6813
- fontWeight: reactComponents.tokens.fontWeightBold,
6814
- display: "flex",
6815
- alignItems: "center",
6816
- justifyContent: "space-between",
6817
- width: "100%"
6818
- },
6819
- accordionTitleAndInfo: {
6820
- display: "flex",
6821
- flexDirection: "column",
6822
- gap: "2px",
6823
- marginLeft: reactComponents.tokens.spacingHorizontalM,
6824
- flex: 1
6825
- },
6826
- accordionBody: {
6827
- marginLeft: "100px"
6828
- },
6829
- footer: {
6830
- marginTop: reactComponents.tokens.spacingVerticalL,
6831
- display: "flex",
6832
- gap: reactComponents.tokens.spacingHorizontalM,
6833
- justifyContent: "flex-end"
6834
- }
6835
- });
7089
+ var useStyles16 = reactComponents.makeStyles({
7090
+ dialogSurface: {
7091
+ maxWidth: "600px",
7092
+ width: "100%"
7093
+ },
7094
+ closeButton: {
7095
+ minWidth: "32px",
7096
+ minHeight: "32px"
7097
+ },
7098
+ passengerSection: {
7099
+ marginTop: reactComponents.tokens.spacingHorizontalM,
7100
+ display: "flex",
7101
+ flexDirection: "column"
7102
+ },
7103
+ accordionItem: {
7104
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralStroke2}`,
7105
+ width: "100%"
7106
+ },
7107
+ accordionHeader: {
7108
+ fontSize: reactComponents.tokens.fontSizeBase300,
7109
+ fontWeight: reactComponents.tokens.fontWeightBold,
7110
+ display: "flex",
7111
+ alignItems: "center",
7112
+ justifyContent: "space-between",
7113
+ width: "100%"
7114
+ },
7115
+ accordionTitleAndInfo: {
7116
+ display: "flex",
7117
+ flexDirection: "column",
7118
+ gap: "2px",
7119
+ marginLeft: reactComponents.tokens.spacingHorizontalM,
7120
+ flex: 1
7121
+ },
7122
+ accordionBody: {
7123
+ marginLeft: "100px"
7124
+ },
7125
+ footer: {
7126
+ marginTop: reactComponents.tokens.spacingVerticalL,
7127
+ display: "flex",
7128
+ gap: reactComponents.tokens.spacingHorizontalM,
7129
+ justifyContent: "flex-end"
7130
+ }
7131
+ });
7132
+ var TypeOfServiceListSkeleton = ({ count = 3 }) => {
7133
+ const styles = useStyles16();
7134
+ return /* @__PURE__ */ jsxRuntime.jsx(
7135
+ "div",
7136
+ {
7137
+ style: {
7138
+ display: "flex",
7139
+ flexDirection: "column",
7140
+ marginTop: reactComponents.tokens.spacingHorizontalM
7141
+ },
7142
+ children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
7143
+ "div",
7144
+ {
7145
+ className: styles.accordionItem,
7146
+ style: { padding: "8px 0" },
7147
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionHeader, children: [
7148
+ /* @__PURE__ */ jsxRuntime.jsxs(
7149
+ "div",
7150
+ {
7151
+ style: { display: "flex", alignItems: "center", width: "100%" },
7152
+ children: [
7153
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
7154
+ reactComponents.SkeletonItem,
7155
+ {
7156
+ style: {
7157
+ width: "74px",
7158
+ height: "74px",
7159
+ borderRadius: "8px"
7160
+ }
7161
+ }
7162
+ ) }),
7163
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.accordionTitleAndInfo, style: { flex: 1 }, children: /* @__PURE__ */ jsxRuntime.jsxs(
7164
+ reactComponents.Skeleton,
7165
+ {
7166
+ style: {
7167
+ display: "flex",
7168
+ flexDirection: "column",
7169
+ gap: "4px"
7170
+ },
7171
+ children: [
7172
+ /* @__PURE__ */ jsxRuntime.jsx(
7173
+ reactComponents.SkeletonItem,
7174
+ {
7175
+ style: {
7176
+ width: "120px",
7177
+ height: "20px",
7178
+ borderRadius: "4px"
7179
+ }
7180
+ }
7181
+ ),
7182
+ /* @__PURE__ */ jsxRuntime.jsx(
7183
+ reactComponents.SkeletonItem,
7184
+ {
7185
+ style: {
7186
+ width: "150px",
7187
+ height: "16px",
7188
+ borderRadius: "4px"
7189
+ }
7190
+ }
7191
+ )
7192
+ ]
7193
+ }
7194
+ ) })
7195
+ ]
7196
+ }
7197
+ ),
7198
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(
7199
+ reactComponents.SkeletonItem,
7200
+ {
7201
+ style: {
7202
+ width: "16px",
7203
+ height: "16px",
7204
+ borderRadius: "50%"
7205
+ }
7206
+ }
7207
+ ) })
7208
+ ] })
7209
+ },
7210
+ index
7211
+ ))
7212
+ }
7213
+ );
7214
+ };
6836
7215
  var ModalTypeOfService = ({
6837
7216
  language = "id",
6838
7217
  labels,
@@ -6842,10 +7221,14 @@ var ModalTypeOfService = ({
6842
7221
  serviceTypes,
6843
7222
  selectedService,
6844
7223
  onSave,
6845
- renderImage
7224
+ renderImage,
7225
+ isLoading = false,
7226
+ isError = false,
7227
+ reloadButton,
7228
+ emptyImageSrc = ""
6846
7229
  }) => {
6847
- const styles = useStyles15();
6848
- const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
7230
+ const styles = useStyles16();
7231
+ const mergedLabels = { ...DEFAULT_LABELS15[language], ...labels };
6849
7232
  const [selectedServiceId, setSelectedServiceId] = React.useState(
6850
7233
  selectedService?.id || 0
6851
7234
  );
@@ -6958,7 +7341,15 @@ var ModalTypeOfService = ({
6958
7341
  children: title || mergedLabels.title
6959
7342
  }
6960
7343
  ),
6961
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogContent, { children: [
7344
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(TypeOfServiceListSkeleton, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(
7345
+ EmptyContent,
7346
+ {
7347
+ content: mergedLabels.emptyContent,
7348
+ language,
7349
+ actionButton: reloadButton,
7350
+ imageSrc: emptyImageSrc
7351
+ }
7352
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6962
7353
  /* @__PURE__ */ jsxRuntime.jsx(
6963
7354
  reactComponents.Accordion,
6964
7355
  {
@@ -7005,7 +7396,9 @@ var ModalTypeOfService = ({
7005
7396
  styles.accordionHeader,
7006
7397
  styles.accordionItem
7007
7398
  ),
7008
- style: { padding: reactComponents.tokens.spacingHorizontalXS },
7399
+ style: {
7400
+ padding: reactComponents.tokens.spacingHorizontalXS
7401
+ },
7009
7402
  children: [
7010
7403
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: imageRenderer({
7011
7404
  src: childItem.image,
@@ -7013,10 +7406,16 @@ var ModalTypeOfService = ({
7013
7406
  width: 48,
7014
7407
  height: 48
7015
7408
  }) }),
7016
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.accordionTitleAndInfo, children: [
7017
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: childItem.title }),
7018
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: childItem.info })
7019
- ] }),
7409
+ /* @__PURE__ */ jsxRuntime.jsxs(
7410
+ "div",
7411
+ {
7412
+ className: styles.accordionTitleAndInfo,
7413
+ children: [
7414
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: childItem.title }),
7415
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: childItem.info })
7416
+ ]
7417
+ }
7418
+ ),
7020
7419
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Radio, { value: String(childItem.id) })
7021
7420
  ]
7022
7421
  },
@@ -7066,7 +7465,15 @@ var ModalTypeOfService = ({
7066
7465
  }
7067
7466
  ),
7068
7467
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.footer, children: [
7069
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Button, { appearance: "secondary", shape: "circular", onClick: onClose, children: mergedLabels.cancelButton }),
7468
+ /* @__PURE__ */ jsxRuntime.jsx(
7469
+ reactComponents.Button,
7470
+ {
7471
+ appearance: "secondary",
7472
+ shape: "circular",
7473
+ onClick: onClose,
7474
+ children: mergedLabels.cancelButton
7475
+ }
7476
+ ),
7070
7477
  /* @__PURE__ */ jsxRuntime.jsx(
7071
7478
  reactComponents.Button,
7072
7479
  {
@@ -7078,12 +7485,12 @@ var ModalTypeOfService = ({
7078
7485
  }
7079
7486
  )
7080
7487
  ] })
7081
- ] })
7488
+ ] }) })
7082
7489
  ] }) }) });
7083
7490
  };
7084
7491
 
7085
7492
  // src/components/SortMenu/SortMenu.constants.ts
7086
- var DEFAULT_LABELS15 = {
7493
+ var DEFAULT_LABELS16 = {
7087
7494
  id: {
7088
7495
  filterButtonText: "Filter",
7089
7496
  sortButtonText: "Urutkan Berdasarkan",
@@ -7125,7 +7532,7 @@ var getSortLabel = (value) => {
7125
7532
  const option = DEFAULT_SORT_OPTIONS.find((opt) => opt.value === value);
7126
7533
  return option?.label || "Rekomendasi";
7127
7534
  };
7128
- var useStyles16 = reactComponents.makeStyles({
7535
+ var useStyles17 = reactComponents.makeStyles({
7129
7536
  container: {
7130
7537
  display: "flex",
7131
7538
  width: "100%",
@@ -7161,10 +7568,10 @@ var SortMenu = ({
7161
7568
  sortButtonText: deprecatedSortButtonText,
7162
7569
  clearFiltersText: deprecatedClearFiltersText
7163
7570
  }) => {
7164
- const styles = useStyles16();
7571
+ const styles = useStyles17();
7165
7572
  const labels = React__default.default.useMemo(
7166
7573
  () => ({
7167
- ...DEFAULT_LABELS15[language],
7574
+ ...DEFAULT_LABELS16[language],
7168
7575
  ...customLabels,
7169
7576
  // Fallback to deprecated props if provided
7170
7577
  ...deprecatedFilterButtonText && {
@@ -7276,7 +7683,7 @@ var SortMenu = ({
7276
7683
  };
7277
7684
 
7278
7685
  // src/components/ModalFilterTicket/ModalFilterTicket.constants.ts
7279
- var DEFAULT_LABELS16 = {
7686
+ var DEFAULT_LABELS17 = {
7280
7687
  id: {
7281
7688
  title: "Filter dengan",
7282
7689
  serviceTypeLabel: "Jenis Layanan",
@@ -7337,7 +7744,7 @@ var DEFAULT_DURATION_RANGE = {
7337
7744
  min: 0,
7338
7745
  max: 8
7339
7746
  };
7340
- var useStyles17 = reactComponents.makeStyles({
7747
+ var useStyles18 = reactComponents.makeStyles({
7341
7748
  dialogSurface: {
7342
7749
  maxWidth: "600px",
7343
7750
  width: "100%"
@@ -7447,8 +7854,8 @@ var ModalFilterTicket = ({
7447
7854
  minDuration = DEFAULT_DURATION_RANGE.min,
7448
7855
  maxDuration = DEFAULT_DURATION_RANGE.max
7449
7856
  }) => {
7450
- const styles = useStyles17();
7451
- const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
7857
+ const styles = useStyles18();
7858
+ const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
7452
7859
  const [rangeReady, setRangeReady] = React.useState(false);
7453
7860
  React.useEffect(() => {
7454
7861
  if (open) {
@@ -7758,7 +8165,7 @@ var ModalFilterTicket = ({
7758
8165
  };
7759
8166
 
7760
8167
  // src/components/DateFilter/DateFilter.constants.ts
7761
- var DEFAULT_LABELS17 = {
8168
+ var DEFAULT_LABELS18 = {
7762
8169
  id: {
7763
8170
  prevButtonAriaLabel: "Tanggal sebelumnya",
7764
8171
  nextButtonAriaLabel: "Tanggal berikutnya",
@@ -7771,7 +8178,7 @@ var DEFAULT_LABELS17 = {
7771
8178
  }
7772
8179
  };
7773
8180
  var DEFAULT_SCROLL_AMOUNT = 150;
7774
- var useStyles18 = reactComponents.makeStyles({
8181
+ var useStyles19 = reactComponents.makeStyles({
7775
8182
  container: {
7776
8183
  display: "flex",
7777
8184
  alignItems: "stretch",
@@ -7854,10 +8261,10 @@ var DateFilter = ({
7854
8261
  labels,
7855
8262
  isLoading = false
7856
8263
  }) => {
7857
- const styles = useStyles18();
8264
+ const styles = useStyles19();
7858
8265
  const scrollRef = React.useRef(null);
7859
8266
  const mergedLabels = {
7860
- ...DEFAULT_LABELS17[language],
8267
+ ...DEFAULT_LABELS18[language],
7861
8268
  ...labels
7862
8269
  };
7863
8270
  const handlePrev = () => {
@@ -7920,7 +8327,7 @@ var DateFilter = ({
7920
8327
  };
7921
8328
 
7922
8329
  // src/components/ModalSearchTicket/ModalSearchTicket.constants.ts
7923
- var DEFAULT_LABELS18 = {
8330
+ var DEFAULT_LABELS19 = {
7924
8331
  id: {
7925
8332
  title: "Cari Jadwal Lainnya",
7926
8333
  fromLabel: "Dari",
@@ -7980,7 +8387,7 @@ var DEFAULT_FORM_VALUES = {
7980
8387
  typeOfService: "",
7981
8388
  passenger: ""
7982
8389
  };
7983
- var useStyles19 = reactComponents.makeStyles({
8390
+ var useStyles20 = reactComponents.makeStyles({
7984
8391
  dialogSurface: {
7985
8392
  maxWidth: "900px",
7986
8393
  width: "100%"
@@ -8082,8 +8489,8 @@ var ModalSearchTicket = ({
8082
8489
  showRoundTrip = true,
8083
8490
  ...props
8084
8491
  }) => {
8085
- const styles = useStyles19();
8086
- const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
8492
+ const styles = useStyles20();
8493
+ const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
8087
8494
  const { control, setValue, handleSubmit, watch } = reactHookForm.useForm({
8088
8495
  defaultValues: {
8089
8496
  ...DEFAULT_FORM_VALUES,
@@ -8520,7 +8927,7 @@ var ModalSearchTicket = ({
8520
8927
  };
8521
8928
 
8522
8929
  // src/components/Stepper/Stepper.constants.ts
8523
- var DEFAULT_LABELS19 = {
8930
+ var DEFAULT_LABELS20 = {
8524
8931
  id: {
8525
8932
  stepperBackgroundAlt: "Latar Belakang Stepper",
8526
8933
  ferryIconAlt: "Ikon Kapal"
@@ -8530,7 +8937,7 @@ var DEFAULT_LABELS19 = {
8530
8937
  ferryIconAlt: "Ferry Icon"
8531
8938
  }
8532
8939
  };
8533
- var useStyles20 = reactComponents.makeStyles({
8940
+ var useStyles21 = reactComponents.makeStyles({
8534
8941
  stepperWrapper: {
8535
8942
  position: "relative",
8536
8943
  width: "100%",
@@ -8655,8 +9062,8 @@ var Stepper = ({
8655
9062
  language = "id",
8656
9063
  labels
8657
9064
  }) => {
8658
- const styles = useStyles20();
8659
- const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
9065
+ const styles = useStyles21();
9066
+ const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
8660
9067
  const currentStepIndex = React.useMemo(() => {
8661
9068
  if (typeof currentStep === "number") {
8662
9069
  return steps.findIndex((step) => step.number === currentStep);
@@ -8712,7 +9119,7 @@ var Stepper = ({
8712
9119
  };
8713
9120
 
8714
9121
  // src/components/CardOrdererInfo/CardOrdererInfo.constants.ts
8715
- var DEFAULT_LABELS20 = {
9122
+ var DEFAULT_LABELS21 = {
8716
9123
  id: {
8717
9124
  title: "Informasi Pemesan",
8718
9125
  ordererName: "Nama Pemesan",
@@ -8726,7 +9133,7 @@ var DEFAULT_LABELS20 = {
8726
9133
  email: "Email"
8727
9134
  }
8728
9135
  };
8729
- var useStyles21 = reactComponents.makeStyles({
9136
+ var useStyles22 = reactComponents.makeStyles({
8730
9137
  card: {
8731
9138
  padding: "1.5rem",
8732
9139
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -8756,8 +9163,8 @@ var CardOrdererInfo = ({
8756
9163
  labels,
8757
9164
  className
8758
9165
  }) => {
8759
- const styles = useStyles21();
8760
- const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
9166
+ const styles = useStyles22();
9167
+ const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
8761
9168
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
8762
9169
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { children: mergedLabels.title }),
8763
9170
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
@@ -8778,7 +9185,7 @@ var CardOrdererInfo = ({
8778
9185
  };
8779
9186
 
8780
9187
  // src/components/ModalListPassenger/ModalListPassenger.constants.ts
8781
- var DEFAULT_LABELS21 = {
9188
+ var DEFAULT_LABELS22 = {
8782
9189
  id: {
8783
9190
  title: "Detail Penumpang",
8784
9191
  // sameAsOrderer: 'Sama Dengan Pemesan',
@@ -8808,7 +9215,7 @@ var DEFAULT_LABELS21 = {
8808
9215
  }
8809
9216
  }
8810
9217
  };
8811
- var useStyles22 = reactComponents.makeStyles({
9218
+ var useStyles23 = reactComponents.makeStyles({
8812
9219
  dialogSurface: {
8813
9220
  maxWidth: "600px",
8814
9221
  width: "100%",
@@ -8863,8 +9270,8 @@ var ModalListPassenger = ({
8863
9270
  // sameAsOrderer,
8864
9271
  // onSameAsOrdererChange,
8865
9272
  }) => {
8866
- const styles = useStyles22();
8867
- const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
9273
+ const styles = useStyles23();
9274
+ const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
8868
9275
  const displayTitle = title || mergedLabels.title;
8869
9276
  const handleClose = () => {
8870
9277
  onClose();
@@ -8995,7 +9402,7 @@ var ModalListPassenger = ({
8995
9402
  };
8996
9403
 
8997
9404
  // src/components/ModalPassengerForm/ModalPassengerForm.constants.ts
8998
- var DEFAULT_LABELS22 = {
9405
+ var DEFAULT_LABELS23 = {
8999
9406
  id: {
9000
9407
  title: "Detail Penumpang",
9001
9408
  titleLabel: "Title",
@@ -9146,7 +9553,7 @@ var calculateAge = (birthDate) => {
9146
9553
  }
9147
9554
  return { years: Math.max(0, years), months: Math.max(0, months) };
9148
9555
  };
9149
- var useStyles23 = reactComponents.makeStyles({
9556
+ var useStyles24 = reactComponents.makeStyles({
9150
9557
  dialogSurface: {
9151
9558
  maxWidth: "600px",
9152
9559
  width: "100%",
@@ -9326,10 +9733,10 @@ var ModalPassengerForm = ({
9326
9733
  ticketClassOptions,
9327
9734
  onScanComplete
9328
9735
  }) => {
9329
- const styles = useStyles23();
9330
- const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
9736
+ const styles = useStyles24();
9737
+ const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
9331
9738
  const mergedErrors = {
9332
- ...DEFAULT_LABELS22[language].errors,
9739
+ ...DEFAULT_LABELS23[language].errors,
9333
9740
  ...labels?.errors
9334
9741
  };
9335
9742
  const displayTitle = title || mergedLabels.title;
@@ -10061,7 +10468,7 @@ var ModalPassengerForm = ({
10061
10468
  };
10062
10469
 
10063
10470
  // src/components/CardPassengerList/CardPassengerList.constants.ts
10064
- var DEFAULT_LABELS23 = {
10471
+ var DEFAULT_LABELS24 = {
10065
10472
  id: {
10066
10473
  defaultTitle: "Data Penumpang",
10067
10474
  passengerPrefix: "Penumpang"
@@ -10104,7 +10511,7 @@ var getBadgeConfig = (ticketClass) => {
10104
10511
  };
10105
10512
  }
10106
10513
  };
10107
- var useStyles24 = reactComponents.makeStyles({
10514
+ var useStyles25 = reactComponents.makeStyles({
10108
10515
  card: {
10109
10516
  padding: "1.5rem",
10110
10517
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -10187,8 +10594,8 @@ var CardPassengerList = ({
10187
10594
  labels,
10188
10595
  className
10189
10596
  }) => {
10190
- const styles = useStyles24();
10191
- const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
10597
+ const styles = useStyles25();
10598
+ const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10192
10599
  const displayTitle = title || mergedLabels.defaultTitle;
10193
10600
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
10194
10601
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -10261,7 +10668,7 @@ var CardPassengerList = ({
10261
10668
  };
10262
10669
 
10263
10670
  // src/components/CardVehicleDetail/CardVehicleDetail.constants.ts
10264
- var DEFAULT_LABELS24 = {
10671
+ var DEFAULT_LABELS25 = {
10265
10672
  id: {
10266
10673
  title: "Detail Kendaraan",
10267
10674
  vehicleNumberLabel: "Nomor Kendaraan",
@@ -10279,7 +10686,7 @@ var DEFAULT_LABELS24 = {
10279
10686
  noLabel: "No"
10280
10687
  }
10281
10688
  };
10282
- var useStyles25 = reactComponents.makeStyles({
10689
+ var useStyles26 = reactComponents.makeStyles({
10283
10690
  card: {
10284
10691
  padding: "1.5rem",
10285
10692
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -10319,8 +10726,8 @@ var CardVehicleDetail = ({
10319
10726
  language = "id",
10320
10727
  labels
10321
10728
  }) => {
10322
- const styles = useStyles25();
10323
- const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10729
+ const styles = useStyles26();
10730
+ const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
10324
10731
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
10325
10732
  /* @__PURE__ */ jsxRuntime.jsxs(
10326
10733
  "div",
@@ -10382,7 +10789,7 @@ var CardVehicleDetail = ({
10382
10789
  };
10383
10790
 
10384
10791
  // src/components/CardVehicleOwnerForm/CardVehicleOwnerForm.constants.ts
10385
- var DEFAULT_LABELS25 = {
10792
+ var DEFAULT_LABELS26 = {
10386
10793
  id: {
10387
10794
  title: "Informasi Pemilik & Muatan",
10388
10795
  addOwnerButton: "Tambah Pemilik",
@@ -10490,7 +10897,7 @@ var DEFAULT_LABELS25 = {
10490
10897
  incrementQuantityAriaLabel: "Increase quantity"
10491
10898
  }
10492
10899
  };
10493
- var useStyles26 = reactComponents.makeStyles({
10900
+ var useStyles27 = reactComponents.makeStyles({
10494
10901
  card: {
10495
10902
  padding: "1.5rem",
10496
10903
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -10558,8 +10965,8 @@ var CardVehicleOwnerForm = ({
10558
10965
  language = "id",
10559
10966
  labels
10560
10967
  }) => {
10561
- const styles = useStyles26();
10562
- const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
10968
+ const styles = useStyles27();
10969
+ const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
10563
10970
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
10564
10971
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.header, children: [
10565
10972
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", flex: 1 }, children: [
@@ -11347,7 +11754,7 @@ var CardVehicleOwnerForm = ({
11347
11754
  };
11348
11755
 
11349
11756
  // src/components/CardBookingTicket/CardBookingTicket.constants.ts
11350
- var DEFAULT_LABELS26 = {
11757
+ var DEFAULT_LABELS27 = {
11351
11758
  id: {
11352
11759
  bookingDetails: "Booking Details",
11353
11760
  routeTitle: "Rute Perjalanan",
@@ -11383,7 +11790,7 @@ var DEFAULT_LABELS26 = {
11383
11790
  cancelDialogDismiss: "Cancel"
11384
11791
  }
11385
11792
  };
11386
- var useStyles27 = reactComponents.makeStyles({
11793
+ var useStyles28 = reactComponents.makeStyles({
11387
11794
  container: {
11388
11795
  display: "flex",
11389
11796
  flexDirection: "column",
@@ -11547,8 +11954,8 @@ var CardBookingTicket = ({
11547
11954
  onPrevious,
11548
11955
  className
11549
11956
  }) => {
11550
- const styles = useStyles27();
11551
- const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
11957
+ const styles = useStyles28();
11958
+ const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
11552
11959
  const [cancelDialogOpen, setCancelDialogOpen] = React.useState(false);
11553
11960
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.bookingDetail, children: [
11554
11961
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.bookingDetailTop, children: [
@@ -11750,7 +12157,7 @@ var CardBookingTicket = ({
11750
12157
  };
11751
12158
 
11752
12159
  // src/components/CardFAQ/CardFAQ.constants.ts
11753
- var DEFAULT_LABELS27 = {
12160
+ var DEFAULT_LABELS28 = {
11754
12161
  id: {
11755
12162
  title: "Pertanyaan yang sering diajukan"
11756
12163
  },
@@ -11804,7 +12211,7 @@ var DEFAULT_FAQ_ITEMS = {
11804
12211
  }
11805
12212
  ]
11806
12213
  };
11807
- var useStyles28 = reactComponents.makeStyles({
12214
+ var useStyles29 = reactComponents.makeStyles({
11808
12215
  faqSection: {
11809
12216
  // marginTop: '2rem', // Let parent control spacing if needed, or keep consistent
11810
12217
  },
@@ -11828,8 +12235,8 @@ var CardFAQ = ({
11828
12235
  items,
11829
12236
  className
11830
12237
  }) => {
11831
- const styles = useStyles28();
11832
- const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
12238
+ const styles = useStyles29();
12239
+ const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
11833
12240
  const faqItems = items || DEFAULT_FAQ_ITEMS[language];
11834
12241
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.faqCard, children: [
11835
12242
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.title }),
@@ -11866,7 +12273,7 @@ var CardFAQ = ({
11866
12273
  };
11867
12274
 
11868
12275
  // src/components/CardAddon/CardAddon.constants.ts
11869
- var DEFAULT_LABELS28 = {
12276
+ var DEFAULT_LABELS29 = {
11870
12277
  id: {
11871
12278
  viewDetail: "Lihat detail",
11872
12279
  totalPrice: "Total Harga",
@@ -11882,7 +12289,7 @@ var DEFAULT_LABELS28 = {
11882
12289
  currencySymbol: "Rp"
11883
12290
  }
11884
12291
  };
11885
- var useStyles29 = reactComponents.makeStyles({
12292
+ var useStyles30 = reactComponents.makeStyles({
11886
12293
  card: {
11887
12294
  backgroundColor: reactComponents.tokens.colorNeutralBackground1,
11888
12295
  boxShadow: reactComponents.tokens.shadow4,
@@ -12055,8 +12462,8 @@ var CardAddon = ({
12055
12462
  children,
12056
12463
  className
12057
12464
  }) => {
12058
- const styles = useStyles29();
12059
- const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
12465
+ const styles = useStyles30();
12466
+ const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
12060
12467
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.gapRow, children: [
12061
12468
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.titleDivider, children: [
12062
12469
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { className: styles.textTitle, children: title }),
@@ -12267,7 +12674,7 @@ var CardAddon = ({
12267
12674
  };
12268
12675
 
12269
12676
  // src/components/CardMealCatalog/CardMealCatalog.constants.ts
12270
- var DEFAULT_LABELS29 = {
12677
+ var DEFAULT_LABELS30 = {
12271
12678
  id: {
12272
12679
  addButton: "Tambah",
12273
12680
  currencySymbol: "Rp",
@@ -12283,7 +12690,7 @@ var DEFAULT_LABELS29 = {
12283
12690
  searchPlaceholder: "Search for food or drinks you want"
12284
12691
  }
12285
12692
  };
12286
- var useStyles30 = reactComponents.makeStyles({
12693
+ var useStyles31 = reactComponents.makeStyles({
12287
12694
  container: {
12288
12695
  display: "flex",
12289
12696
  flexDirection: "column",
@@ -12427,8 +12834,8 @@ var CardMealCatalog = ({
12427
12834
  searchValue,
12428
12835
  onSearchChange
12429
12836
  }) => {
12430
- const styles = useStyles30();
12431
- const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
12837
+ const styles = useStyles31();
12838
+ const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
12432
12839
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
12433
12840
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.banner, children: [
12434
12841
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.bannerOverlay }),
@@ -12533,7 +12940,7 @@ var CardMealCatalog = ({
12533
12940
  };
12534
12941
 
12535
12942
  // src/components/CardReview/CardReview.constants.ts
12536
- var DEFAULT_LABELS30 = {
12943
+ var DEFAULT_LABELS31 = {
12537
12944
  id: {
12538
12945
  defaultTitle: "Tinjauan"
12539
12946
  },
@@ -12541,7 +12948,7 @@ var DEFAULT_LABELS30 = {
12541
12948
  defaultTitle: "Review"
12542
12949
  }
12543
12950
  };
12544
- var useStyles31 = reactComponents.makeStyles({
12951
+ var useStyles32 = reactComponents.makeStyles({
12545
12952
  card: {
12546
12953
  padding: "1.5rem",
12547
12954
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -12592,8 +12999,8 @@ var CardReview = ({
12592
12999
  className,
12593
13000
  headerAction
12594
13001
  }) => {
12595
- const styles = useStyles31();
12596
- const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
13002
+ const styles = useStyles32();
13003
+ const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
12597
13004
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
12598
13005
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
12599
13006
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.headerTitle, children: title || mergedLabels.defaultTitle }),
@@ -12640,7 +13047,7 @@ var CardReview = ({
12640
13047
  };
12641
13048
 
12642
13049
  // src/components/CardReviewPassenger/CardReviewPassenger.constants.ts
12643
- var DEFAULT_LABELS31 = {
13050
+ var DEFAULT_LABELS32 = {
12644
13051
  id: {
12645
13052
  title: "Penumpang",
12646
13053
  idNumber: "Nomor ID"
@@ -12650,7 +13057,7 @@ var DEFAULT_LABELS31 = {
12650
13057
  idNumber: "ID Number"
12651
13058
  }
12652
13059
  };
12653
- var useStyles32 = reactComponents.makeStyles({
13060
+ var useStyles33 = reactComponents.makeStyles({
12654
13061
  card: {
12655
13062
  padding: "1.5rem",
12656
13063
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -12748,8 +13155,8 @@ var CardReviewPassenger = ({
12748
13155
  passengers,
12749
13156
  className
12750
13157
  }) => {
12751
- const styles = useStyles32();
12752
- const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
13158
+ const styles = useStyles33();
13159
+ const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
12753
13160
  const displayTitle = title || mergedLabels.title;
12754
13161
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
12755
13162
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -12792,7 +13199,7 @@ var CardReviewPassenger = ({
12792
13199
  };
12793
13200
 
12794
13201
  // src/components/CardPriceDetails/CardPriceDetails.constants.ts
12795
- var DEFAULT_LABELS32 = {
13202
+ var DEFAULT_LABELS33 = {
12796
13203
  id: {
12797
13204
  defaultTitle: "Rincian Harga",
12798
13205
  totalPayment: "Total Pembayaran",
@@ -12828,7 +13235,7 @@ var DEFAULT_LABELS32 = {
12828
13235
  currencyPrefix: "Rp. "
12829
13236
  }
12830
13237
  };
12831
- var useStyles33 = reactComponents.makeStyles({
13238
+ var useStyles34 = reactComponents.makeStyles({
12832
13239
  list: {
12833
13240
  margin: 0,
12834
13241
  padding: 0,
@@ -12850,7 +13257,7 @@ var PriceDetailsTerms = ({
12850
13257
  language = "id",
12851
13258
  labels
12852
13259
  }) => {
12853
- const styles = useStyles33();
13260
+ const styles = useStyles34();
12854
13261
  const linkColor = reactComponents.tokens.colorBrandBackground;
12855
13262
  const bookingTerms = labels.bookingTerms;
12856
13263
  const agreementTerms = [
@@ -12870,7 +13277,7 @@ var PriceDetailsTerms = ({
12870
13277
  ] })
12871
13278
  ] });
12872
13279
  };
12873
- var useStyles34 = reactComponents.makeStyles({
13280
+ var useStyles35 = reactComponents.makeStyles({
12874
13281
  card: {
12875
13282
  padding: "1.5rem",
12876
13283
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -12947,8 +13354,8 @@ var CardPriceDetails = ({
12947
13354
  total,
12948
13355
  labels
12949
13356
  }) => {
12950
- const styles = useStyles34();
12951
- const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
13357
+ const styles = useStyles35();
13358
+ const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
12952
13359
  const displayTitle = title || mergedLabels.defaultTitle;
12953
13360
  const getVariantClass = (variant) => {
12954
13361
  switch (variant) {
@@ -13007,7 +13414,7 @@ var CardPriceDetails = ({
13007
13414
  };
13008
13415
 
13009
13416
  // src/components/CardPaymentMethodList/CardPaymentMethodList.constants.ts
13010
- var DEFAULT_LABELS33 = {
13417
+ var DEFAULT_LABELS34 = {
13011
13418
  id: {
13012
13419
  selectAriaLabel: "Pilih metode pembayaran"
13013
13420
  },
@@ -13015,7 +13422,7 @@ var DEFAULT_LABELS33 = {
13015
13422
  selectAriaLabel: "Select payment method"
13016
13423
  }
13017
13424
  };
13018
- var useStyles35 = reactComponents.makeStyles({
13425
+ var useStyles36 = reactComponents.makeStyles({
13019
13426
  container: {
13020
13427
  display: "flex",
13021
13428
  flexDirection: "column",
@@ -13075,8 +13482,8 @@ var CardPaymentMethodList = ({
13075
13482
  selectedValue,
13076
13483
  onSelect
13077
13484
  }) => {
13078
- const styles = useStyles35();
13079
- const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
13485
+ const styles = useStyles36();
13486
+ const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
13080
13487
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container}`, children: methods.map((category, index) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
13081
13488
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) }),
13082
13489
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Accordion, { multiple: true, collapsible: true, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.AccordionItem, { value: category.value, children: [
@@ -13125,7 +13532,7 @@ var CardPaymentMethodList = ({
13125
13532
  };
13126
13533
 
13127
13534
  // src/components/CardPaymentGuide/CardPaymentGuide.constants.ts
13128
- var DEFAULT_LABELS34 = {
13535
+ var DEFAULT_LABELS35 = {
13129
13536
  id: {
13130
13537
  title: "Cara Pembayaran"
13131
13538
  },
@@ -13133,7 +13540,7 @@ var DEFAULT_LABELS34 = {
13133
13540
  title: "Payment Method"
13134
13541
  }
13135
13542
  };
13136
- var useStyles36 = reactComponents.makeStyles({
13543
+ var useStyles37 = reactComponents.makeStyles({
13137
13544
  container: {
13138
13545
  display: "flex",
13139
13546
  flexDirection: "column",
@@ -13170,8 +13577,8 @@ var CardPaymentGuide = ({
13170
13577
  guides,
13171
13578
  className
13172
13579
  }) => {
13173
- const styles = useStyles36();
13174
- const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
13580
+ const styles = useStyles37();
13581
+ const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
13175
13582
  const displayTitle = title || mergedLabels.title;
13176
13583
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
13177
13584
  title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { className: styles.title, children: displayTitle }) }),
@@ -13190,7 +13597,7 @@ var CardPaymentGuide = ({
13190
13597
  };
13191
13598
 
13192
13599
  // src/components/CardPaymentInfo/CardPaymentInfo.constants.ts
13193
- var DEFAULT_LABELS35 = {
13600
+ var DEFAULT_LABELS36 = {
13194
13601
  id: {
13195
13602
  expiryPrefix: "Kode virtual akun berlaku sampai",
13196
13603
  copyCodeButton: "Salin Kode",
@@ -13208,7 +13615,7 @@ var DEFAULT_LABELS35 = {
13208
13615
  currencySymbol: "Rp."
13209
13616
  }
13210
13617
  };
13211
- var useStyles37 = reactComponents.makeStyles({
13618
+ var useStyles38 = reactComponents.makeStyles({
13212
13619
  container: {
13213
13620
  display: "flex",
13214
13621
  flexDirection: "column",
@@ -13290,8 +13697,8 @@ var CardPaymentInfo = ({
13290
13697
  onCopyVA,
13291
13698
  onCheckStatus
13292
13699
  }) => {
13293
- const styles = useStyles37();
13294
- const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
13700
+ const styles = useStyles38();
13701
+ const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
13295
13702
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
13296
13703
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
13297
13704
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: mergedLabels.expiryPrefix }),
@@ -13349,7 +13756,7 @@ var CardPaymentInfo = ({
13349
13756
  };
13350
13757
 
13351
13758
  // src/components/CardStatusOrder/CardStatusOrder.constants.ts
13352
- var DEFAULT_LABELS36 = {
13759
+ var DEFAULT_LABELS37 = {
13353
13760
  id: {
13354
13761
  detailTitle: "Detail Pemesanan",
13355
13762
  statusLabel: "Status",
@@ -13379,7 +13786,7 @@ var DEFAULT_LABELS36 = {
13379
13786
  illustrationAlt: "E-Ticket Illustration"
13380
13787
  }
13381
13788
  };
13382
- var useStyles38 = reactComponents.makeStyles({
13789
+ var useStyles39 = reactComponents.makeStyles({
13383
13790
  activeCard: {
13384
13791
  width: "100%",
13385
13792
  // padding: tokens.spacingHorizontalNone, // default
@@ -13449,8 +13856,8 @@ var CardStatusOrder = ({
13449
13856
  onClickViewTicket,
13450
13857
  className
13451
13858
  }) => {
13452
- const styles = useStyles38();
13453
- const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
13859
+ const styles = useStyles39();
13860
+ const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
13454
13861
  const displayStatus = statusLabel || mergedLabels.defaultStatus;
13455
13862
  const displayTitle = title || mergedLabels.defaultTitle;
13456
13863
  const displayDescription = description || mergedLabels.defaultDescription;
@@ -13547,7 +13954,7 @@ var CardStatusOrder = ({
13547
13954
  };
13548
13955
 
13549
13956
  // src/components/ModalPriceDetail/ModalPriceDetail.constants.ts
13550
- var DEFAULT_LABELS37 = {
13957
+ var DEFAULT_LABELS38 = {
13551
13958
  id: {
13552
13959
  title: "Rincian Harga",
13553
13960
  addonHeader: "Add On",
@@ -13573,7 +13980,7 @@ var DEFAULT_LABELS37 = {
13573
13980
  closeAriaLabel: "Close"
13574
13981
  }
13575
13982
  };
13576
- var useStyles39 = reactComponents.makeStyles({
13983
+ var useStyles40 = reactComponents.makeStyles({
13577
13984
  surface: {
13578
13985
  width: "680px",
13579
13986
  maxWidth: "90vw",
@@ -13700,8 +14107,8 @@ var ModalPriceDetail = ({
13700
14107
  grandTotal,
13701
14108
  ...props
13702
14109
  }) => {
13703
- const styles = useStyles39();
13704
- const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
14110
+ const styles = useStyles40();
14111
+ const mergedLabels = { ...DEFAULT_LABELS38[language], ...labels };
13705
14112
  return /* @__PURE__ */ jsxRuntime.jsx(
13706
14113
  reactComponents.Dialog,
13707
14114
  {
@@ -13843,7 +14250,7 @@ var ModalPriceDetail = ({
13843
14250
  // src/components/FileUpload/FileUpload.constants.ts
13844
14251
  var ACCEPTED_FILES = ".pdf,.jpg,.jpeg,.png";
13845
14252
  var MAX_FILE_SIZE_MB = 10;
13846
- var DEFAULT_LABELS38 = {
14253
+ var DEFAULT_LABELS39 = {
13847
14254
  id: {
13848
14255
  placeholder: "Ketuk untuk pilih file",
13849
14256
  maxSizeWarning: "Maksimal {maxSize}MB per file dalam format PDF, JPG, JPEG, PNG.",
@@ -13861,7 +14268,7 @@ var DEFAULT_LABELS38 = {
13861
14268
  downloadTemplateDocument: "Download Template Document"
13862
14269
  }
13863
14270
  };
13864
- var useStyles40 = reactComponents.makeStyles({
14271
+ var useStyles41 = reactComponents.makeStyles({
13865
14272
  surface: {
13866
14273
  maxWidth: "90vw",
13867
14274
  maxHeight: "90vh",
@@ -13888,7 +14295,7 @@ var ModalPreviewImage = ({
13888
14295
  imageUrl,
13889
14296
  alt = "Preview"
13890
14297
  }) => {
13891
- const styles = useStyles40();
14298
+ const styles = useStyles41();
13892
14299
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Dialog, { open, onOpenChange: (_, data) => onOpenChange(data.open), children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
13893
14300
  /* @__PURE__ */ jsxRuntime.jsx(
13894
14301
  reactComponents.DialogTitle,
@@ -14001,7 +14408,7 @@ var FileUpload = React__default.default.forwardRef(
14001
14408
  pdfIcon,
14002
14409
  downloadTemplateDocument = false
14003
14410
  }, ref) => {
14004
- const mergedLabels = { ...DEFAULT_LABELS38[language], ...customLabels };
14411
+ const mergedLabels = { ...DEFAULT_LABELS39[language], ...customLabels };
14005
14412
  const styles = uploadStyles();
14006
14413
  const fileInputRef = React.useRef(null);
14007
14414
  const [, setIsDragOver] = React.useState(false);
@@ -14439,11 +14846,11 @@ function hexToRgba(hex, alpha = 1) {
14439
14846
  }
14440
14847
 
14441
14848
  // src/components/CardProfileMenu/CardProfileMenu.constants.ts
14442
- var DEFAULT_LABELS39 = {
14849
+ var DEFAULT_LABELS40 = {
14443
14850
  id: {},
14444
14851
  en: {}
14445
14852
  };
14446
- var useStyles41 = reactComponents.makeStyles({
14853
+ var useStyles42 = reactComponents.makeStyles({
14447
14854
  container: {
14448
14855
  display: "flex",
14449
14856
  flexDirection: "column",
@@ -14503,8 +14910,8 @@ var CardProfileMenu = ({
14503
14910
  selectedValue,
14504
14911
  onTabSelect
14505
14912
  }) => {
14506
- const styles = useStyles41();
14507
- ({ ...DEFAULT_LABELS39[language], ...labels });
14913
+ const styles = useStyles42();
14914
+ ({ ...DEFAULT_LABELS40[language], ...labels });
14508
14915
  const handleTabSelect = (_, data) => {
14509
14916
  onTabSelect(data.value);
14510
14917
  };
@@ -14572,7 +14979,9 @@ exports.DEFAULT_SORT_OPTIONS = DEFAULT_SORT_OPTIONS;
14572
14979
  exports.DEFAULT_TIME_SLOTS = DEFAULT_TIME_SLOTS;
14573
14980
  exports.DEFAULT_VEHICLE_ICONS = DEFAULT_VEHICLE_ICONS;
14574
14981
  exports.DateFilter = DateFilter;
14575
- exports.DateFilterDefaultLabels = DEFAULT_LABELS17;
14982
+ exports.DateFilterDefaultLabels = DEFAULT_LABELS18;
14983
+ exports.EmptyContent = EmptyContent;
14984
+ exports.EmptyContentDefaultLabels = DEFAULT_LABELS11;
14576
14985
  exports.FileUpload = FileUpload_default;
14577
14986
  exports.GENDER = GENDER;
14578
14987
  exports.HTTP_STATUS = HTTP_STATUS;
@@ -14583,7 +14992,7 @@ exports.MODAL_PRESETS = MODAL_PRESETS;
14583
14992
  exports.MY_TICKET_STATUS = MY_TICKET_STATUS;
14584
14993
  exports.MY_TICKET_TAB = MY_TICKET_TAB;
14585
14994
  exports.ModalFilterTicket = ModalFilterTicket;
14586
- exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS16;
14995
+ exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS17;
14587
14996
  exports.ModalIllustration = ModalIllustration;
14588
14997
  exports.ModalListMenuService = ModalListMenuService;
14589
14998
  exports.ModalListPassenger = ModalListPassenger;