@asdp/ferryui 0.1.22-dev.9339 → 0.1.22-dev.9415

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
@@ -1,4 +1,4 @@
1
- import { makeStyles, tokens, createLightTheme, createDarkTheme, shorthands, Popover, PopoverTrigger, Input, PopoverSurface, Field, Caption1Strong, Caption2, Button, Body1, Body1Strong, Caption1, Dialog, DialogSurface, DialogBody, DialogTitle, DialogTrigger, DialogContent, Carousel, CarouselButton, CarouselViewport, mergeClasses, CarouselSlider, CarouselNav, CarouselNavButton, CarouselCard, Skeleton, SkeletonItem, Subtitle2, Card, Tooltip, Badge, Title2, Divider, Title3, Label, Text, Checkbox, MessageBar, MessageBarBody, Accordion, AccordionItem, AccordionHeader, AccordionPanel, RadioGroup, Radio, Menu, MenuTrigger, MenuPopover, MenuList, DialogActions, Caption2Strong, Subtitle1, Body1Stronger, Caption1Stronger, Display, Image, Title1, TabList, Tab, Body2, typographyStyles, Switch, Textarea, Link } from '@fluentui/react-components';
1
+ import { makeStyles, tokens, createLightTheme, createDarkTheme, shorthands, Popover, PopoverTrigger, Input, PopoverSurface, Field, Caption1Strong, Caption2, Button, Body1, Body1Strong, Caption1, Dialog, DialogSurface, DialogBody, DialogTitle, DialogTrigger, DialogContent, Carousel, CarouselButton, CarouselViewport, mergeClasses, CarouselSlider, CarouselNav, CarouselNavButton, CarouselCard, Skeleton, SkeletonItem, Subtitle2, Card, Tooltip, Badge, Title2, Divider, Title3, Label, Text, Subtitle1, Checkbox, MessageBar, MessageBarBody, Accordion, AccordionItem, AccordionHeader, AccordionPanel, RadioGroup, Radio, Menu, MenuTrigger, MenuPopover, MenuList, DialogActions, Caption2Strong, Body1Stronger, Caption1Stronger, Display, Image, Title1, TabList, Tab, Body2, typographyStyles, Switch, Textarea, Link } from '@fluentui/react-components';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import React, { forwardRef, useState, useRef, useEffect, useCallback, useMemo, Fragment as Fragment$1 } from 'react';
4
4
  import { ArrowDownloadRegular, Dismiss24Regular, DismissRegular, SubtractRegular, AddRegular, DeleteRegular, InfoRegular, SearchRegular } from '@fluentui/react-icons';
@@ -3707,8 +3707,14 @@ var InputDynamic = ({
3707
3707
  if (isMultiSelect) {
3708
3708
  const values = selectedOption ? selectedOption.map((opt) => opt.value) : [];
3709
3709
  field.onChange(values);
3710
+ if (onChange) {
3711
+ onChange(values);
3712
+ }
3710
3713
  } else {
3711
3714
  field.onChange(selectedOption ? selectedOption.value : "");
3715
+ if (onChange) {
3716
+ onChange(selectedOption ? selectedOption.value : "");
3717
+ }
3712
3718
  }
3713
3719
  },
3714
3720
  getOptionLabel: (option) => option.label,
@@ -5406,7 +5412,9 @@ var DEFAULT_LABELS10 = {
5406
5412
  harborNotFound: "Pelabuhan tidak ditemukan",
5407
5413
  closeAriaLabel: "Tutup",
5408
5414
  popularHarborHeader: "Pelabuhan Populer",
5409
- favoriteHeader: "Favorit"
5415
+ favoriteHeader: "Favorit",
5416
+ emptyContent: "Pelabuhan",
5417
+ travelPlanHeader: "Rencana Perjalanan"
5410
5418
  },
5411
5419
  en: {
5412
5420
  title: "Select Harbor",
@@ -5418,10 +5426,113 @@ var DEFAULT_LABELS10 = {
5418
5426
  harborNotFound: "Harbor not found",
5419
5427
  closeAriaLabel: "Close",
5420
5428
  popularHarborHeader: "Popular Harbor",
5421
- favoriteHeader: "Favorite"
5429
+ favoriteHeader: "Favorite",
5430
+ emptyContent: "Harbor",
5431
+ travelPlanHeader: "Travel Plan"
5432
+ }
5433
+ };
5434
+
5435
+ // src/components/EmptyContent/EmptyContent.constants.ts
5436
+ var DEFAULT_LABELS11 = {
5437
+ id: {
5438
+ defaultImageAlt: "Tidak ada konten",
5439
+ defaultTitle: "Data {konten} belum bisa dimuat",
5440
+ defaultMessage: "Silahkan coba muat ulang halaman ini atau cek kembali beberapa saat lagi.",
5441
+ defaultButtonText: "Muat Ulang"
5442
+ },
5443
+ en: {
5444
+ defaultImageAlt: "No content available",
5445
+ defaultTitle: "Data {content} could not be loaded",
5446
+ defaultMessage: "Please try reloading this page or check back in a few moments.",
5447
+ defaultButtonText: "Reload"
5448
+ }
5449
+ };
5450
+ var getFormattedDefaultTitle = (template, content) => {
5451
+ if (content) {
5452
+ return template.replace(/\{(konten|content)\}/g, content);
5422
5453
  }
5454
+ return template.replace(/\s*\{(konten|content)\}\s*/g, " ").trim();
5423
5455
  };
5424
5456
  var useStyles11 = makeStyles({
5457
+ root: {
5458
+ display: "flex",
5459
+ flexDirection: "column",
5460
+ alignItems: "center",
5461
+ justifyContent: "center",
5462
+ gap: tokens.spacingVerticalL,
5463
+ textAlign: "center",
5464
+ paddingTop: tokens.spacingVerticalXXL,
5465
+ paddingBottom: tokens.spacingVerticalXXL,
5466
+ paddingLeft: tokens.spacingHorizontalXL,
5467
+ paddingRight: tokens.spacingHorizontalXL,
5468
+ width: "100%"
5469
+ },
5470
+ image: {
5471
+ maxWidth: "100%",
5472
+ height: "auto"
5473
+ },
5474
+ textContainer: {
5475
+ display: "flex",
5476
+ flexDirection: "column",
5477
+ alignItems: "center",
5478
+ gap: tokens.spacingVerticalS,
5479
+ maxWidth: "400px"
5480
+ },
5481
+ title: {
5482
+ fontWeight: "600"
5483
+ },
5484
+ message: {
5485
+ color: tokens.colorNeutralForeground3,
5486
+ textAlign: "center"
5487
+ }
5488
+ });
5489
+ var EmptyContent = ({
5490
+ title,
5491
+ content,
5492
+ message,
5493
+ imageSrc = "/assets/images/illustrations/no-content.svg",
5494
+ imageAlt,
5495
+ imageWidth = 240,
5496
+ imageHeight = 180,
5497
+ actionButton,
5498
+ language = "id",
5499
+ labels,
5500
+ className
5501
+ }) => {
5502
+ const styles = useStyles11();
5503
+ const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
5504
+ const displayTitle = title ?? getFormattedDefaultTitle(mergedLabels.defaultTitle, content);
5505
+ const displayMessage = message ?? mergedLabels.defaultMessage;
5506
+ const displayImageAlt = imageAlt ?? mergedLabels.defaultImageAlt;
5507
+ return /* @__PURE__ */ jsxs("div", { className: mergeClasses(styles.root, className), children: [
5508
+ /* @__PURE__ */ jsx(
5509
+ "img",
5510
+ {
5511
+ src: imageSrc,
5512
+ alt: displayImageAlt,
5513
+ width: imageWidth,
5514
+ height: imageHeight,
5515
+ className: styles.image
5516
+ }
5517
+ ),
5518
+ /* @__PURE__ */ jsxs("div", { className: styles.textContainer, children: [
5519
+ /* @__PURE__ */ jsx(Subtitle1, { className: styles.title, children: displayTitle }),
5520
+ typeof displayMessage === "string" ? /* @__PURE__ */ jsx(Body1, { className: styles.message, children: displayMessage }) : displayMessage
5521
+ ] }),
5522
+ actionButton && /* @__PURE__ */ jsx(
5523
+ Button,
5524
+ {
5525
+ type: "button",
5526
+ appearance: actionButton.appearance || "primary",
5527
+ onClick: actionButton.onClick,
5528
+ shape: "circular",
5529
+ style: { width: "100%" },
5530
+ children: actionButton.text
5531
+ }
5532
+ )
5533
+ ] });
5534
+ };
5535
+ var useStyles12 = makeStyles({
5425
5536
  dialogTitle: {
5426
5537
  display: "flex",
5427
5538
  justifyContent: "space-between",
@@ -5559,7 +5670,7 @@ var HarborListItem = ({
5559
5670
  showDivider,
5560
5671
  containerClassName
5561
5672
  }) => {
5562
- const styles = useStyles11();
5673
+ const styles = useStyles12();
5563
5674
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5564
5675
  /* @__PURE__ */ jsxs("div", { className: containerClassName, children: [
5565
5676
  /* @__PURE__ */ jsxs("div", { className: styles.listContent, onClick: () => onSelect(harbor), children: [
@@ -5582,6 +5693,57 @@ var HarborListItem = ({
5582
5693
  showDivider && /* @__PURE__ */ jsx(Divider, {})
5583
5694
  ] });
5584
5695
  };
5696
+ var HarborListSkeleton = ({
5697
+ count = 5,
5698
+ showFavoriteIcon = false
5699
+ }) => {
5700
+ const styles = useStyles12();
5701
+ return /* @__PURE__ */ jsx("div", { className: styles.harborList, children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxs("div", { className: styles.harborItem, children: [
5702
+ /* @__PURE__ */ jsxs(
5703
+ Skeleton,
5704
+ {
5705
+ style: {
5706
+ display: "flex",
5707
+ alignItems: "center",
5708
+ gap: "0.5rem",
5709
+ width: "70%"
5710
+ },
5711
+ children: [
5712
+ /* @__PURE__ */ jsx(
5713
+ SkeletonItem,
5714
+ {
5715
+ style: {
5716
+ width: "24px",
5717
+ height: "24px",
5718
+ borderRadius: "4px"
5719
+ }
5720
+ }
5721
+ ),
5722
+ /* @__PURE__ */ jsx(
5723
+ SkeletonItem,
5724
+ {
5725
+ style: {
5726
+ width: "100%",
5727
+ height: "20px",
5728
+ borderRadius: "4px"
5729
+ }
5730
+ }
5731
+ )
5732
+ ]
5733
+ }
5734
+ ),
5735
+ showFavoriteIcon && /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
5736
+ SkeletonItem,
5737
+ {
5738
+ style: {
5739
+ width: "24px",
5740
+ height: "24px",
5741
+ borderRadius: "4px"
5742
+ }
5743
+ }
5744
+ ) })
5745
+ ] }, index)) });
5746
+ };
5585
5747
  var ModalSearchHarbor = ({
5586
5748
  language = "id",
5587
5749
  labels,
@@ -5592,7 +5754,8 @@ var ModalSearchHarbor = ({
5592
5754
  harbors,
5593
5755
  favoriteHarbors,
5594
5756
  lastSearchedHarbors,
5595
- isLoading = false,
5757
+ isLoadingPort = false,
5758
+ isLoadingTravelPlan = false,
5596
5759
  searchQuery,
5597
5760
  onSearchChange,
5598
5761
  onSelectHarbor,
@@ -5601,11 +5764,18 @@ var ModalSearchHarbor = ({
5601
5764
  onRemoveLastSearched,
5602
5765
  onClearLastSearched,
5603
5766
  onClearFavorite,
5767
+ reloadButtonPort,
5768
+ reloadButtonTravelPlan,
5769
+ reloadButtonAll,
5604
5770
  popularHarbors,
5605
- showButtonFavorite = true
5771
+ showButtonFavorite = true,
5772
+ emptyImageSrc = "",
5773
+ isErrorTravelPlan = false,
5774
+ isErrorPort = false
5606
5775
  }) => {
5607
- const styles = useStyles11();
5776
+ const styles = useStyles12();
5608
5777
  const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
5778
+ const isError = isErrorTravelPlan && isErrorPort;
5609
5779
  const handleSelect = (harbor) => {
5610
5780
  onAddLastSearched(harbor);
5611
5781
  onSelectHarbor(harbor);
@@ -5641,7 +5811,15 @@ var ModalSearchHarbor = ({
5641
5811
  children: title || mergedLabels.title
5642
5812
  }
5643
5813
  ),
5644
- /* @__PURE__ */ jsxs(DialogContent, { className: styles.content, children: [
5814
+ /* @__PURE__ */ jsx(DialogContent, { className: styles.content, children: isError ? /* @__PURE__ */ jsx(
5815
+ EmptyContent,
5816
+ {
5817
+ content: mergedLabels.emptyContent,
5818
+ language,
5819
+ actionButton: reloadButtonAll,
5820
+ imageSrc: emptyImageSrc
5821
+ }
5822
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
5645
5823
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
5646
5824
  Input,
5647
5825
  {
@@ -5660,177 +5838,154 @@ var ModalSearchHarbor = ({
5660
5838
  }
5661
5839
  ) }),
5662
5840
  /* @__PURE__ */ jsxs("div", { className: styles.resultList, children: [
5663
- favoriteHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5664
- /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
5665
- /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.favoriteHeader }),
5666
- /* @__PURE__ */ jsx(
5667
- Caption1,
5841
+ isErrorTravelPlan ? /* @__PURE__ */ jsx(Fragment, {}) : isLoadingTravelPlan ? /* @__PURE__ */ jsx(HarborListSkeleton, { count: 3, showFavoriteIcon: false }) : /* @__PURE__ */ jsxs(Fragment, { children: [
5842
+ favoriteHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5843
+ /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
5844
+ /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.favoriteHeader }),
5845
+ /* @__PURE__ */ jsx(
5846
+ Caption1,
5847
+ {
5848
+ className: mergeClasses(
5849
+ styles.dangerText,
5850
+ styles.cursorPointer
5851
+ ),
5852
+ onClick: onClearFavorite,
5853
+ children: mergedLabels.clearAllButton
5854
+ }
5855
+ )
5856
+ ] }),
5857
+ favoriteHarbors.length > 0 && /* @__PURE__ */ jsx("div", { className: styles.buttonContainer, children: favoriteHarbors.map((harbor) => /* @__PURE__ */ jsxs(
5858
+ Button,
5668
5859
  {
5669
- className: mergeClasses(
5670
- styles.dangerText,
5671
- styles.cursorPointer
5860
+ onClick: () => handleSelect(harbor),
5861
+ size: "medium",
5862
+ appearance: "subtle",
5863
+ iconPosition: "before",
5864
+ className: styles.circularButton,
5865
+ icon: /* @__PURE__ */ jsx(
5866
+ Icon,
5867
+ {
5868
+ icon: "fluent:vehicle-ship-20-regular",
5869
+ fontSize: 20,
5870
+ color: tokens.colorBrandBackground
5871
+ }
5672
5872
  ),
5673
- onClick: onClearFavorite,
5674
- children: mergedLabels.clearAllButton
5675
- }
5676
- )
5873
+ children: [
5874
+ /* @__PURE__ */ jsxs("div", { className: styles.buttonContent, children: [
5875
+ /* @__PURE__ */ jsx(Body1, { children: harbor.portName }),
5876
+ /* @__PURE__ */ jsx(Caption1, { children: harbor.branchName })
5877
+ ] }),
5878
+ /* @__PURE__ */ jsx(
5879
+ Icon,
5880
+ {
5881
+ icon: "fluent:star-24-filled",
5882
+ fontSize: 20,
5883
+ color: tokens.colorBrandBackground,
5884
+ style: { marginLeft: 5 }
5885
+ }
5886
+ )
5887
+ ]
5888
+ },
5889
+ harbor.portId
5890
+ )) })
5677
5891
  ] }),
5678
- favoriteHarbors.length > 0 && /* @__PURE__ */ jsx("div", { className: styles.buttonContainer, children: favoriteHarbors.map((harbor) => /* @__PURE__ */ jsxs(
5679
- Button,
5680
- {
5681
- onClick: () => handleSelect(harbor),
5682
- size: "medium",
5683
- appearance: "subtle",
5684
- iconPosition: "before",
5685
- className: styles.circularButton,
5686
- icon: /* @__PURE__ */ jsx(
5687
- Icon,
5892
+ lastSearchedHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5893
+ /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
5894
+ /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.lastSearchedHeader }),
5895
+ /* @__PURE__ */ jsx(
5896
+ Caption1,
5688
5897
  {
5689
- icon: "fluent:vehicle-ship-20-regular",
5690
- fontSize: 20,
5691
- color: tokens.colorBrandBackground
5898
+ className: mergeClasses(
5899
+ styles.dangerText,
5900
+ styles.cursorPointer
5901
+ ),
5902
+ onClick: onClearLastSearched,
5903
+ children: mergedLabels.clearAllButton
5692
5904
  }
5693
- ),
5694
- children: [
5695
- /* @__PURE__ */ jsxs("div", { className: styles.buttonContent, children: [
5696
- /* @__PURE__ */ jsx(Body1, { children: harbor.portName }),
5697
- /* @__PURE__ */ jsx(Caption1, { children: harbor.branchName })
5698
- ] }),
5699
- /* @__PURE__ */ jsx(
5905
+ )
5906
+ ] }),
5907
+ /* @__PURE__ */ jsx("div", { children: lastSearchedHarbors.map((harbor) => /* @__PURE__ */ jsx(
5908
+ HarborListItem,
5909
+ {
5910
+ harbor,
5911
+ onSelect: handleSelect,
5912
+ containerClassName: styles.historyItem,
5913
+ trailingIcon: /* @__PURE__ */ jsx(
5700
5914
  Icon,
5701
5915
  {
5702
- icon: "fluent:star-24-filled",
5916
+ onClick: () => onRemoveLastSearched(harbor),
5917
+ icon: "fluent:dismiss-24-regular",
5703
5918
  fontSize: 20,
5704
- color: tokens.colorBrandBackground,
5705
- style: { marginLeft: 5 }
5919
+ className: styles.cursorPointer
5706
5920
  }
5707
- )
5708
- ]
5709
- },
5710
- harbor.portId
5711
- )) })
5712
- ] }),
5713
- lastSearchedHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5714
- /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
5715
- /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.lastSearchedHeader }),
5716
- /* @__PURE__ */ jsx(
5717
- Caption1,
5718
- {
5719
- className: mergeClasses(
5720
- styles.dangerText,
5721
- styles.cursorPointer
5722
5921
  ),
5723
- onClick: onClearLastSearched,
5724
- children: mergedLabels.clearAllButton
5725
- }
5726
- )
5922
+ showDivider: true
5923
+ },
5924
+ harbor.portId
5925
+ )) })
5727
5926
  ] }),
5728
- /* @__PURE__ */ jsx("div", { children: lastSearchedHarbors.map((harbor) => /* @__PURE__ */ jsx(
5927
+ popularHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5928
+ /* @__PURE__ */ jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.popularHarborHeader }) }),
5929
+ /* @__PURE__ */ jsx("div", { children: popularHarbors.map((harbor) => /* @__PURE__ */ jsx(
5930
+ HarborListItem,
5931
+ {
5932
+ harbor,
5933
+ onSelect: handleSelect,
5934
+ containerClassName: styles.historyItem,
5935
+ showDivider: true
5936
+ },
5937
+ harbor.portId
5938
+ )) })
5939
+ ] })
5940
+ ] }),
5941
+ isErrorPort ? /* @__PURE__ */ jsxs(Fragment, { children: [
5942
+ /* @__PURE__ */ jsx(Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5943
+ /* @__PURE__ */ jsx(
5944
+ EmptyContent,
5945
+ {
5946
+ content: mergedLabels.emptyContent,
5947
+ language,
5948
+ actionButton: reloadButtonPort,
5949
+ imageSrc: emptyImageSrc
5950
+ }
5951
+ )
5952
+ ] }) : isLoadingPort ? /* @__PURE__ */ jsx(
5953
+ HarborListSkeleton,
5954
+ {
5955
+ count: 5,
5956
+ showFavoriteIcon: showButtonFavorite
5957
+ }
5958
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
5959
+ /* @__PURE__ */ jsx(Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5960
+ /* @__PURE__ */ jsx("div", { className: styles.harborList, children: harbors.length > 0 ? harbors.map((harbor, index) => /* @__PURE__ */ jsx(
5729
5961
  HarborListItem,
5730
5962
  {
5731
5963
  harbor,
5732
5964
  onSelect: handleSelect,
5733
- containerClassName: styles.historyItem,
5734
- trailingIcon: /* @__PURE__ */ jsx(
5965
+ containerClassName: styles.harborItem,
5966
+ trailingIcon: showButtonFavorite && /* @__PURE__ */ jsx(
5735
5967
  Icon,
5736
5968
  {
5737
- onClick: () => onRemoveLastSearched(harbor),
5738
- icon: "fluent:dismiss-24-regular",
5739
- fontSize: 20,
5740
- className: styles.cursorPointer
5969
+ icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
5970
+ color: tokens.colorBrandBackground,
5971
+ className: styles.cursorPointer,
5972
+ onClick: () => onToggleFavorite(harbor)
5741
5973
  }
5742
5974
  ),
5743
- showDivider: true
5744
- },
5745
- harbor.portId
5746
- )) })
5747
- ] }),
5748
- popularHarbors.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
5749
- /* @__PURE__ */ jsx("div", { className: styles.headerRow, children: /* @__PURE__ */ jsx(Body1Strong, { children: mergedLabels.popularHarborHeader }) }),
5750
- /* @__PURE__ */ jsx("div", { children: popularHarbors.map((harbor) => /* @__PURE__ */ jsx(
5751
- HarborListItem,
5752
- {
5753
- harbor,
5754
- onSelect: handleSelect,
5755
- containerClassName: styles.historyItem,
5756
- showDivider: true
5975
+ showDivider: index !== harbors.length - 1
5757
5976
  },
5758
- harbor.portId
5759
- )) })
5760
- ] }),
5761
- /* @__PURE__ */ jsx(Body1Strong, { className: styles.sectionTitle, children: mergedLabels.allHarborsHeader }),
5762
- /* @__PURE__ */ jsx("div", { className: styles.harborList, children: isLoading ? /* @__PURE__ */ jsx(Fragment, { children: [1, 2, 3, 4, 5].map((item) => /* @__PURE__ */ jsxs("div", { className: styles.harborItem, children: [
5763
- /* @__PURE__ */ jsxs(
5764
- Skeleton,
5765
- {
5766
- style: {
5767
- display: "flex",
5768
- alignItems: "center",
5769
- gap: "0.5rem",
5770
- width: "70%"
5771
- },
5772
- children: [
5773
- /* @__PURE__ */ jsx(
5774
- SkeletonItem,
5775
- {
5776
- style: {
5777
- width: "24px",
5778
- height: "24px",
5779
- borderRadius: "4px"
5780
- }
5781
- }
5782
- ),
5783
- /* @__PURE__ */ jsx(
5784
- SkeletonItem,
5785
- {
5786
- style: {
5787
- width: "100%",
5788
- height: "20px",
5789
- borderRadius: "4px"
5790
- }
5791
- }
5792
- )
5793
- ]
5794
- }
5795
- ),
5796
- showButtonFavorite && /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
5797
- 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__ */ jsx(
5807
- HarborListItem,
5808
- {
5809
- harbor,
5810
- onSelect: handleSelect,
5811
- containerClassName: styles.harborItem,
5812
- trailingIcon: showButtonFavorite && /* @__PURE__ */ jsx(
5813
- Icon,
5814
- {
5815
- icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
5816
- color: 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__ */ jsx("div", { className: styles.emptyState, children: mergedLabels.harborNotFound }) })
5977
+ harbor.portId || index
5978
+ )) : /* @__PURE__ */ jsx("div", { className: styles.emptyState, children: mergedLabels.harborNotFound }) })
5979
+ ] })
5825
5980
  ] })
5826
- ] })
5981
+ ] }) })
5827
5982
  ] }) })
5828
5983
  }
5829
5984
  );
5830
5985
  };
5831
5986
 
5832
5987
  // src/components/ModalSelectDate/ModalSelectDate.constants.ts
5833
- var DEFAULT_LABELS11 = {
5988
+ var DEFAULT_LABELS12 = {
5834
5989
  id: {
5835
5990
  title: "Pilih Tanggal",
5836
5991
  oneWay: "Sekali Jalan",
@@ -5844,7 +5999,7 @@ var DEFAULT_LABELS11 = {
5844
5999
  closeAriaLabel: "Close"
5845
6000
  }
5846
6001
  };
5847
- var useStyles12 = makeStyles({
6002
+ var useStyles13 = makeStyles({
5848
6003
  dialogSurface: {
5849
6004
  maxWidth: "600px",
5850
6005
  width: "100%"
@@ -5964,8 +6119,8 @@ var ModalSelectDate = ({
5964
6119
  dateFormat = "DD MMMM YYYY",
5965
6120
  showRoundtrip = true
5966
6121
  }) => {
5967
- const styles = useStyles12();
5968
- const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
6122
+ const styles = useStyles13();
6123
+ const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
5969
6124
  useEffect(() => {
5970
6125
  moment.locale(language === "id" ? "id" : "en");
5971
6126
  }, [language]);
@@ -6188,14 +6343,15 @@ var ModalSelectDate = ({
6188
6343
  };
6189
6344
 
6190
6345
  // src/components/ModalService/ModalService.constants.ts
6191
- var DEFAULT_LABELS12 = {
6346
+ var DEFAULT_LABELS13 = {
6192
6347
  id: {
6193
6348
  title: "Pilih Kelas Layanan",
6194
6349
  loading: "Memuat...",
6195
6350
  error: "Gagal memuat layanan",
6196
6351
  selectAll: "Pilih Semua",
6197
6352
  saveButton: "Simpan",
6198
- closeAriaLabel: "Tutup"
6353
+ closeAriaLabel: "Tutup",
6354
+ emptyContent: "Kelas Layanan"
6199
6355
  },
6200
6356
  en: {
6201
6357
  title: "Select Service Class",
@@ -6203,10 +6359,11 @@ var DEFAULT_LABELS12 = {
6203
6359
  error: "Error loading services",
6204
6360
  selectAll: "Select All",
6205
6361
  saveButton: "Save",
6206
- closeAriaLabel: "Close"
6362
+ closeAriaLabel: "Close",
6363
+ emptyContent: "Service Class"
6207
6364
  }
6208
6365
  };
6209
- var useStyles13 = makeStyles({
6366
+ var useStyles14 = makeStyles({
6210
6367
  dialogSurface: {
6211
6368
  maxWidth: "600px",
6212
6369
  width: "100%"
@@ -6279,6 +6436,66 @@ var useStyles13 = makeStyles({
6279
6436
  borderRadius: tokens.borderRadiusCircular
6280
6437
  }
6281
6438
  });
6439
+ var ServiceListSkeleton = ({
6440
+ count = 3
6441
+ }) => {
6442
+ const styles = useStyles14();
6443
+ return /* @__PURE__ */ jsx("div", { className: styles.serviceList, children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxs("div", { className: styles.serviceItem, children: [
6444
+ /* @__PURE__ */ jsx("div", { className: styles.serviceContent, children: /* @__PURE__ */ jsxs(
6445
+ Skeleton,
6446
+ {
6447
+ style: {
6448
+ display: "flex",
6449
+ flexDirection: "column",
6450
+ gap: "4px",
6451
+ width: "80%"
6452
+ },
6453
+ children: [
6454
+ /* @__PURE__ */ jsx(
6455
+ SkeletonItem,
6456
+ {
6457
+ style: {
6458
+ width: "120px",
6459
+ height: "20px",
6460
+ borderRadius: "4px"
6461
+ }
6462
+ }
6463
+ ),
6464
+ /* @__PURE__ */ jsx(
6465
+ SkeletonItem,
6466
+ {
6467
+ style: {
6468
+ width: "80px",
6469
+ height: "16px",
6470
+ borderRadius: "4px"
6471
+ }
6472
+ }
6473
+ ),
6474
+ /* @__PURE__ */ jsx(
6475
+ SkeletonItem,
6476
+ {
6477
+ style: {
6478
+ width: "100%",
6479
+ height: "16px",
6480
+ borderRadius: "4px"
6481
+ }
6482
+ }
6483
+ )
6484
+ ]
6485
+ }
6486
+ ) }),
6487
+ /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
6488
+ SkeletonItem,
6489
+ {
6490
+ style: {
6491
+ width: "20px",
6492
+ height: "20px",
6493
+ borderRadius: "4px"
6494
+ }
6495
+ }
6496
+ ) })
6497
+ ] }, index)) });
6498
+ };
6282
6499
  var ModalService = ({
6283
6500
  language = "id",
6284
6501
  labels,
@@ -6289,10 +6506,12 @@ var ModalService = ({
6289
6506
  selectedServiceIds,
6290
6507
  onSave,
6291
6508
  isLoading = false,
6292
- isError = false
6509
+ isError = false,
6510
+ reloadButton,
6511
+ emptyImageSrc = ""
6293
6512
  }) => {
6294
- const styles = useStyles13();
6295
- const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
6513
+ const styles = useStyles14();
6514
+ const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
6296
6515
  const displayTitle = title || mergedLabels.title;
6297
6516
  const [selectedServices, setSelectedServices] = useState(selectedServiceIds);
6298
6517
  useEffect(() => {
@@ -6347,7 +6566,15 @@ var ModalService = ({
6347
6566
  children: displayTitle
6348
6567
  }
6349
6568
  ),
6350
- /* @__PURE__ */ jsx(DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsx(Body1, { children: mergedLabels.loading }) : isError ? /* @__PURE__ */ jsx(Body1, { children: mergedLabels.error }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6569
+ /* @__PURE__ */ jsx(DialogContent, { className: styles.content, children: isLoading ? /* @__PURE__ */ jsx(ServiceListSkeleton, {}) : isError ? /* @__PURE__ */ jsx(
6570
+ EmptyContent,
6571
+ {
6572
+ content: mergedLabels.emptyContent,
6573
+ language,
6574
+ actionButton: reloadButton,
6575
+ imageSrc: emptyImageSrc
6576
+ }
6577
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
6351
6578
  /* @__PURE__ */ jsxs("div", { className: styles.serviceList, children: [
6352
6579
  /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
6353
6580
  /* @__PURE__ */ jsx(Body1, { children: mergedLabels.selectAll }),
@@ -6397,23 +6624,25 @@ var ModalService = ({
6397
6624
  };
6398
6625
 
6399
6626
  // src/components/ModalTotalPassengers/ModalTotalPassengers.constants.ts
6400
- var DEFAULT_LABELS13 = {
6627
+ var DEFAULT_LABELS14 = {
6401
6628
  id: {
6402
6629
  title: "Pilih Jumlah Penumpang",
6403
6630
  infoMessage: "Anda dapat menambahkan hingga {maxPassengers} penumpang pada golongan kendaraan ini.",
6404
6631
  loading: "Memuat...",
6405
6632
  saveButton: "Simpan",
6406
- closeAriaLabel: "Tutup"
6633
+ closeAriaLabel: "Tutup",
6634
+ emptyContent: "Kelas Penumpang"
6407
6635
  },
6408
6636
  en: {
6409
6637
  title: "Select Total Passengers",
6410
6638
  infoMessage: "You can add up to {maxPassengers} passengers in this vehicle category.",
6411
6639
  loading: "Loading...",
6412
6640
  saveButton: "Save",
6413
- closeAriaLabel: "Close"
6641
+ closeAriaLabel: "Close",
6642
+ emptyContent: "Passengers Class"
6414
6643
  }
6415
6644
  };
6416
- var useStyles14 = makeStyles({
6645
+ var useStyles15 = makeStyles({
6417
6646
  dialogSurface: {
6418
6647
  maxWidth: "600px",
6419
6648
  width: "100%"
@@ -6480,6 +6709,62 @@ var useStyles14 = makeStyles({
6480
6709
  margin: 0
6481
6710
  }
6482
6711
  });
6712
+ var TotalPassengersListSkeleton = ({
6713
+ count = 3
6714
+ }) => {
6715
+ const styles = useStyles15();
6716
+ return /* @__PURE__ */ jsx(
6717
+ "div",
6718
+ {
6719
+ style: {
6720
+ display: "flex",
6721
+ flexDirection: "column",
6722
+ marginTop: tokens.spacingHorizontalM
6723
+ },
6724
+ children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsx(
6725
+ "div",
6726
+ {
6727
+ className: styles.accordionItem,
6728
+ style: { padding: "8px 0" },
6729
+ children: /* @__PURE__ */ jsxs("div", { className: styles.accordionHeader, style: { padding: "0 12px" }, children: [
6730
+ /* @__PURE__ */ jsx(
6731
+ "div",
6732
+ {
6733
+ style: { display: "flex", alignItems: "center", width: "100%" },
6734
+ children: /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
6735
+ SkeletonItem,
6736
+ {
6737
+ style: {
6738
+ width: "120px",
6739
+ height: "18px"
6740
+ }
6741
+ }
6742
+ ) })
6743
+ }
6744
+ ),
6745
+ /* @__PURE__ */ jsx("div", { style: { height: "4px" } }),
6746
+ /* @__PURE__ */ jsx(
6747
+ "div",
6748
+ {
6749
+ style: { display: "flex", alignItems: "center", width: "100%" },
6750
+ children: /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
6751
+ SkeletonItem,
6752
+ {
6753
+ style: {
6754
+ width: "48px",
6755
+ height: "14px"
6756
+ }
6757
+ }
6758
+ ) })
6759
+ }
6760
+ )
6761
+ ] })
6762
+ },
6763
+ index
6764
+ ))
6765
+ }
6766
+ );
6767
+ };
6483
6768
  var ModalTotalPassengers = ({
6484
6769
  language = "id",
6485
6770
  labels,
@@ -6490,11 +6775,14 @@ var ModalTotalPassengers = ({
6490
6775
  selectedPassengers,
6491
6776
  onSave,
6492
6777
  isLoading = false,
6778
+ isError = false,
6779
+ reloadButton,
6780
+ emptyImageSrc,
6493
6781
  maxPassengers = 10,
6494
6782
  infoMessage
6495
6783
  }) => {
6496
- const styles = useStyles14();
6497
- const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
6784
+ const styles = useStyles15();
6785
+ const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
6498
6786
  const [passengers, setPassengers] = useState([]);
6499
6787
  const [openItems, setOpenItems] = useState([]);
6500
6788
  const defaultInfoMessage = mergedLabels.infoMessage.replace(
@@ -6551,11 +6839,16 @@ var ModalTotalPassengers = ({
6551
6839
  (p) => p.passengerAgeCode === passengerAgeCode
6552
6840
  );
6553
6841
  if (!passenger) return 0;
6554
- const cls = passenger.classes.find(
6555
- (c) => c.classCode === classCode
6556
- );
6842
+ const cls = passenger.classes.find((c) => c.classCode === classCode);
6557
6843
  return cls?.count ?? 0;
6558
6844
  };
6845
+ const getTotalCountForType = (passengerAgeCode) => {
6846
+ const passenger = passengers.find(
6847
+ (p) => p.passengerAgeCode === passengerAgeCode
6848
+ );
6849
+ if (!passenger) return 0;
6850
+ return passenger.classes.reduce((sum, cls) => sum + (cls.count ?? 0), 0);
6851
+ };
6559
6852
  const getTotalForType = (passengerAgeCode) => {
6560
6853
  const passenger = passengers.find(
6561
6854
  (p) => p.passengerAgeCode === passengerAgeCode
@@ -6610,10 +6903,7 @@ var ModalTotalPassengers = ({
6610
6903
  classes: passenger.classes.map((cls) => {
6611
6904
  if (cls.classCode === classCode && (cls.count ?? 0) > 0) {
6612
6905
  const newCount = (cls.count ?? 0) - 1;
6613
- const newPassengers = (cls.passengers || []).slice(
6614
- 0,
6615
- newCount
6616
- );
6906
+ const newPassengers = (cls.passengers || []).slice(0, newCount);
6617
6907
  return {
6618
6908
  ...cls,
6619
6909
  count: newCount,
@@ -6651,131 +6941,134 @@ var ModalTotalPassengers = ({
6651
6941
  children: title || mergedLabels.title
6652
6942
  }
6653
6943
  ),
6654
- /* @__PURE__ */ jsxs(DialogContent, { children: [
6944
+ /* @__PURE__ */ jsx(DialogContent, { children: isLoading ? /* @__PURE__ */ jsx(TotalPassengersListSkeleton, {}) : isError ? /* @__PURE__ */ jsx(
6945
+ EmptyContent,
6946
+ {
6947
+ content: mergedLabels.emptyContent,
6948
+ language,
6949
+ actionButton: reloadButton,
6950
+ imageSrc: emptyImageSrc
6951
+ }
6952
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
6655
6953
  /* @__PURE__ */ jsx(MessageBar, { shape: "rounded", children: /* @__PURE__ */ jsx(MessageBarBody, { children: infoMessage || defaultInfoMessage }) }),
6656
- isLoading ? /* @__PURE__ */ jsx(Body1, { children: mergedLabels.loading }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6657
- /* @__PURE__ */ jsx(
6658
- 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__ */ jsxs(
6668
- AccordionItem,
6669
- {
6670
- value: String(passengerType.id),
6671
- className: styles.accordionItem,
6672
- children: [
6673
- /* @__PURE__ */ jsxs(
6674
- 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__ */ jsx(AccordionPanel, { className: styles.accordionPanel, children: /* @__PURE__ */ jsx("div", { className: styles.nestedSection, children: classes.map((cls) => /* @__PURE__ */ jsxs(
6687
- "div",
6688
- {
6689
- className: styles.nestedRow,
6690
- children: [
6691
- /* @__PURE__ */ jsx(Body1, { children: (cls?.className || "")?.toUpperCase() }),
6692
- /* @__PURE__ */ jsxs("div", { className: styles.passengerCount, children: [
6693
- /* @__PURE__ */ jsx(
6694
- Button,
6695
- {
6696
- appearance: "outline",
6697
- className: styles.counterButton,
6698
- size: "small",
6699
- icon: /* @__PURE__ */ jsx(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__ */ jsx(Body1, { className: styles.countText, children: getServiceCount(
6954
+ /* @__PURE__ */ jsx(
6955
+ Accordion,
6956
+ {
6957
+ collapsible: true,
6958
+ multiple: true,
6959
+ openItems,
6960
+ onToggle: (_, data) => setOpenItems(data.openItems),
6961
+ className: styles.passengerSection,
6962
+ children: passengerTypes.map((passengerType) => {
6963
+ const classes = passengerType.classes || [];
6964
+ return /* @__PURE__ */ jsxs(
6965
+ AccordionItem,
6966
+ {
6967
+ value: String(passengerType.id),
6968
+ className: styles.accordionItem,
6969
+ children: [
6970
+ /* @__PURE__ */ jsxs(
6971
+ AccordionHeader,
6972
+ {
6973
+ className: styles.accordionHeader,
6974
+ expandIconPosition: "end",
6975
+ children: [
6976
+ passengerType.passengerAgeName,
6977
+ " (",
6978
+ getTotalForType(passengerType.passengerAgeCode),
6979
+ ")"
6980
+ ]
6981
+ }
6982
+ ),
6983
+ /* @__PURE__ */ jsx(AccordionPanel, { className: styles.accordionPanel, children: /* @__PURE__ */ jsx("div", { className: styles.nestedSection, children: classes.map((cls) => /* @__PURE__ */ jsxs("div", { className: styles.nestedRow, children: [
6984
+ /* @__PURE__ */ jsx(Body1, { children: (cls?.className || "")?.toUpperCase() }),
6985
+ /* @__PURE__ */ jsxs("div", { className: styles.passengerCount, children: [
6986
+ /* @__PURE__ */ jsx(
6987
+ Button,
6988
+ {
6989
+ appearance: "outline",
6990
+ className: styles.counterButton,
6991
+ size: "small",
6992
+ icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:subtract-12-regular" }),
6993
+ onClick: (e) => {
6994
+ e.stopPropagation();
6995
+ handleDecrement(
6714
6996
  passengerType.passengerAgeCode,
6715
6997
  cls.classCode
6716
- ) }),
6717
- /* @__PURE__ */ jsx(
6718
- Button,
6719
- {
6720
- appearance: "outline",
6721
- className: styles.counterButton,
6722
- size: "small",
6723
- icon: /* @__PURE__ */ jsx(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__ */ jsx(
6750
- Button,
6751
- {
6752
- appearance: "primary",
6753
- size: "medium",
6754
- className: styles.submitButton,
6755
- onClick: handleSave,
6756
- children: mergedLabels.saveButton
6757
- }
6758
- )
6759
- ] })
6760
- ] })
6998
+ );
6999
+ },
7000
+ disabled: getServiceCount(
7001
+ passengerType.passengerAgeCode,
7002
+ cls.classCode
7003
+ ) === 0 || getTotalCountForType(
7004
+ passengerType.passengerAgeCode
7005
+ ) <= passengerType.minCapacity
7006
+ }
7007
+ ),
7008
+ /* @__PURE__ */ jsx(Body1, { className: styles.countText, children: getServiceCount(
7009
+ passengerType.passengerAgeCode,
7010
+ cls.classCode
7011
+ ) }),
7012
+ /* @__PURE__ */ jsx(
7013
+ Button,
7014
+ {
7015
+ appearance: "outline",
7016
+ className: styles.counterButton,
7017
+ size: "small",
7018
+ icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:add-12-regular" }),
7019
+ disabled: getServiceCount(
7020
+ passengerType.passengerAgeCode,
7021
+ cls.classCode
7022
+ ) >= cls.maxCapacity || totalPassengerCount >= maxPassengers,
7023
+ onClick: (e) => {
7024
+ e.stopPropagation();
7025
+ handleIncrement(
7026
+ passengerType.passengerAgeCode,
7027
+ cls.classCode
7028
+ );
7029
+ }
7030
+ }
7031
+ )
7032
+ ] })
7033
+ ] }, cls.id)) }) })
7034
+ ]
7035
+ },
7036
+ passengerType.id
7037
+ );
7038
+ })
7039
+ }
7040
+ ),
7041
+ /* @__PURE__ */ jsx(
7042
+ Button,
7043
+ {
7044
+ appearance: "primary",
7045
+ size: "medium",
7046
+ className: styles.submitButton,
7047
+ onClick: handleSave,
7048
+ children: mergedLabels.saveButton
7049
+ }
7050
+ )
7051
+ ] }) })
6761
7052
  ] }) }) });
6762
7053
  };
6763
7054
 
6764
7055
  // src/components/ModalTypeOfService/ModalTypeOfService.constants.ts
6765
- var DEFAULT_LABELS14 = {
7056
+ var DEFAULT_LABELS15 = {
6766
7057
  id: {
6767
- title: "Pilih Tipe Layanan",
7058
+ title: "Pilih Jenis Layanan",
6768
7059
  cancelButton: "Batal",
6769
7060
  saveButton: "Simpan",
6770
7061
  vehiclesAlt: "kendaraan",
6771
- closeAriaLabel: "Tutup"
7062
+ closeAriaLabel: "Tutup",
7063
+ emptyContent: "Jenis Layanan"
6772
7064
  },
6773
7065
  en: {
6774
7066
  title: "Select Service Type",
6775
7067
  cancelButton: "Cancel",
6776
7068
  saveButton: "Save",
6777
7069
  vehiclesAlt: "vehicles",
6778
- closeAriaLabel: "Close"
7070
+ closeAriaLabel: "Close",
7071
+ emptyContent: "Service Type"
6779
7072
  }
6780
7073
  };
6781
7074
  var DEFAULT_VEHICLE_ICONS = {
@@ -6790,7 +7083,7 @@ var DEFAULT_VEHICLE_ICONS = {
6790
7083
  bigTruck: "/assets/images/icons/big-truck.webp",
6791
7084
  looseLoad: "/assets/images/icons/loose-load.webp"
6792
7085
  };
6793
- var useStyles15 = makeStyles({
7086
+ var useStyles16 = makeStyles({
6794
7087
  dialogSurface: {
6795
7088
  maxWidth: "600px",
6796
7089
  width: "100%"
@@ -6833,6 +7126,89 @@ var useStyles15 = makeStyles({
6833
7126
  justifyContent: "flex-end"
6834
7127
  }
6835
7128
  });
7129
+ var TypeOfServiceListSkeleton = ({ count = 3 }) => {
7130
+ const styles = useStyles16();
7131
+ return /* @__PURE__ */ jsx(
7132
+ "div",
7133
+ {
7134
+ style: {
7135
+ display: "flex",
7136
+ flexDirection: "column",
7137
+ marginTop: tokens.spacingHorizontalM
7138
+ },
7139
+ children: Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsx(
7140
+ "div",
7141
+ {
7142
+ className: styles.accordionItem,
7143
+ style: { padding: "8px 0" },
7144
+ children: /* @__PURE__ */ jsxs("div", { className: styles.accordionHeader, children: [
7145
+ /* @__PURE__ */ jsxs(
7146
+ "div",
7147
+ {
7148
+ style: { display: "flex", alignItems: "center", width: "100%" },
7149
+ children: [
7150
+ /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
7151
+ SkeletonItem,
7152
+ {
7153
+ style: {
7154
+ width: "74px",
7155
+ height: "74px",
7156
+ borderRadius: "8px"
7157
+ }
7158
+ }
7159
+ ) }),
7160
+ /* @__PURE__ */ jsx("div", { className: styles.accordionTitleAndInfo, style: { flex: 1 }, children: /* @__PURE__ */ jsxs(
7161
+ Skeleton,
7162
+ {
7163
+ style: {
7164
+ display: "flex",
7165
+ flexDirection: "column",
7166
+ gap: "4px"
7167
+ },
7168
+ children: [
7169
+ /* @__PURE__ */ jsx(
7170
+ SkeletonItem,
7171
+ {
7172
+ style: {
7173
+ width: "120px",
7174
+ height: "20px",
7175
+ borderRadius: "4px"
7176
+ }
7177
+ }
7178
+ ),
7179
+ /* @__PURE__ */ jsx(
7180
+ SkeletonItem,
7181
+ {
7182
+ style: {
7183
+ width: "150px",
7184
+ height: "16px",
7185
+ borderRadius: "4px"
7186
+ }
7187
+ }
7188
+ )
7189
+ ]
7190
+ }
7191
+ ) })
7192
+ ]
7193
+ }
7194
+ ),
7195
+ /* @__PURE__ */ jsx(Skeleton, { children: /* @__PURE__ */ jsx(
7196
+ SkeletonItem,
7197
+ {
7198
+ style: {
7199
+ width: "16px",
7200
+ height: "16px",
7201
+ borderRadius: "50%"
7202
+ }
7203
+ }
7204
+ ) })
7205
+ ] })
7206
+ },
7207
+ index
7208
+ ))
7209
+ }
7210
+ );
7211
+ };
6836
7212
  var ModalTypeOfService = ({
6837
7213
  language = "id",
6838
7214
  labels,
@@ -6842,10 +7218,14 @@ var ModalTypeOfService = ({
6842
7218
  serviceTypes,
6843
7219
  selectedService,
6844
7220
  onSave,
6845
- renderImage
7221
+ renderImage,
7222
+ isLoading = false,
7223
+ isError = false,
7224
+ reloadButton,
7225
+ emptyImageSrc = ""
6846
7226
  }) => {
6847
- const styles = useStyles15();
6848
- const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
7227
+ const styles = useStyles16();
7228
+ const mergedLabels = { ...DEFAULT_LABELS15[language], ...labels };
6849
7229
  const [selectedServiceId, setSelectedServiceId] = useState(
6850
7230
  selectedService?.id || 0
6851
7231
  );
@@ -6958,7 +7338,15 @@ var ModalTypeOfService = ({
6958
7338
  children: title || mergedLabels.title
6959
7339
  }
6960
7340
  ),
6961
- /* @__PURE__ */ jsxs(DialogContent, { children: [
7341
+ /* @__PURE__ */ jsx(DialogContent, { children: isLoading ? /* @__PURE__ */ jsx(TypeOfServiceListSkeleton, {}) : isError ? /* @__PURE__ */ jsx(
7342
+ EmptyContent,
7343
+ {
7344
+ content: mergedLabels.emptyContent,
7345
+ language,
7346
+ actionButton: reloadButton,
7347
+ imageSrc: emptyImageSrc
7348
+ }
7349
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
6962
7350
  /* @__PURE__ */ jsx(
6963
7351
  Accordion,
6964
7352
  {
@@ -7005,7 +7393,9 @@ var ModalTypeOfService = ({
7005
7393
  styles.accordionHeader,
7006
7394
  styles.accordionItem
7007
7395
  ),
7008
- style: { padding: tokens.spacingHorizontalXS },
7396
+ style: {
7397
+ padding: tokens.spacingHorizontalXS
7398
+ },
7009
7399
  children: [
7010
7400
  /* @__PURE__ */ jsx("div", { children: imageRenderer({
7011
7401
  src: childItem.image,
@@ -7013,10 +7403,16 @@ var ModalTypeOfService = ({
7013
7403
  width: 48,
7014
7404
  height: 48
7015
7405
  }) }),
7016
- /* @__PURE__ */ jsxs("div", { className: styles.accordionTitleAndInfo, children: [
7017
- /* @__PURE__ */ jsx(Body1, { children: childItem.title }),
7018
- /* @__PURE__ */ jsx(Caption1, { children: childItem.info })
7019
- ] }),
7406
+ /* @__PURE__ */ jsxs(
7407
+ "div",
7408
+ {
7409
+ className: styles.accordionTitleAndInfo,
7410
+ children: [
7411
+ /* @__PURE__ */ jsx(Body1, { children: childItem.title }),
7412
+ /* @__PURE__ */ jsx(Caption1, { children: childItem.info })
7413
+ ]
7414
+ }
7415
+ ),
7020
7416
  /* @__PURE__ */ jsx(Radio, { value: String(childItem.id) })
7021
7417
  ]
7022
7418
  },
@@ -7066,7 +7462,15 @@ var ModalTypeOfService = ({
7066
7462
  }
7067
7463
  ),
7068
7464
  /* @__PURE__ */ jsxs("div", { className: styles.footer, children: [
7069
- /* @__PURE__ */ jsx(Button, { appearance: "secondary", shape: "circular", onClick: onClose, children: mergedLabels.cancelButton }),
7465
+ /* @__PURE__ */ jsx(
7466
+ Button,
7467
+ {
7468
+ appearance: "secondary",
7469
+ shape: "circular",
7470
+ onClick: onClose,
7471
+ children: mergedLabels.cancelButton
7472
+ }
7473
+ ),
7070
7474
  /* @__PURE__ */ jsx(
7071
7475
  Button,
7072
7476
  {
@@ -7078,12 +7482,12 @@ var ModalTypeOfService = ({
7078
7482
  }
7079
7483
  )
7080
7484
  ] })
7081
- ] })
7485
+ ] }) })
7082
7486
  ] }) }) });
7083
7487
  };
7084
7488
 
7085
7489
  // src/components/SortMenu/SortMenu.constants.ts
7086
- var DEFAULT_LABELS15 = {
7490
+ var DEFAULT_LABELS16 = {
7087
7491
  id: {
7088
7492
  filterButtonText: "Filter",
7089
7493
  sortButtonText: "Urutkan Berdasarkan",
@@ -7125,7 +7529,7 @@ var getSortLabel = (value) => {
7125
7529
  const option = DEFAULT_SORT_OPTIONS.find((opt) => opt.value === value);
7126
7530
  return option?.label || "Rekomendasi";
7127
7531
  };
7128
- var useStyles16 = makeStyles({
7532
+ var useStyles17 = makeStyles({
7129
7533
  container: {
7130
7534
  display: "flex",
7131
7535
  width: "100%",
@@ -7161,10 +7565,10 @@ var SortMenu = ({
7161
7565
  sortButtonText: deprecatedSortButtonText,
7162
7566
  clearFiltersText: deprecatedClearFiltersText
7163
7567
  }) => {
7164
- const styles = useStyles16();
7568
+ const styles = useStyles17();
7165
7569
  const labels = React.useMemo(
7166
7570
  () => ({
7167
- ...DEFAULT_LABELS15[language],
7571
+ ...DEFAULT_LABELS16[language],
7168
7572
  ...customLabels,
7169
7573
  // Fallback to deprecated props if provided
7170
7574
  ...deprecatedFilterButtonText && {
@@ -7276,7 +7680,7 @@ var SortMenu = ({
7276
7680
  };
7277
7681
 
7278
7682
  // src/components/ModalFilterTicket/ModalFilterTicket.constants.ts
7279
- var DEFAULT_LABELS16 = {
7683
+ var DEFAULT_LABELS17 = {
7280
7684
  id: {
7281
7685
  title: "Filter dengan",
7282
7686
  serviceTypeLabel: "Jenis Layanan",
@@ -7337,7 +7741,7 @@ var DEFAULT_DURATION_RANGE = {
7337
7741
  min: 0,
7338
7742
  max: 8
7339
7743
  };
7340
- var useStyles17 = makeStyles({
7744
+ var useStyles18 = makeStyles({
7341
7745
  dialogSurface: {
7342
7746
  maxWidth: "600px",
7343
7747
  width: "100%"
@@ -7447,8 +7851,8 @@ var ModalFilterTicket = ({
7447
7851
  minDuration = DEFAULT_DURATION_RANGE.min,
7448
7852
  maxDuration = DEFAULT_DURATION_RANGE.max
7449
7853
  }) => {
7450
- const styles = useStyles17();
7451
- const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
7854
+ const styles = useStyles18();
7855
+ const mergedLabels = { ...DEFAULT_LABELS17[language], ...labels };
7452
7856
  const [rangeReady, setRangeReady] = useState(false);
7453
7857
  useEffect(() => {
7454
7858
  if (open) {
@@ -7758,7 +8162,7 @@ var ModalFilterTicket = ({
7758
8162
  };
7759
8163
 
7760
8164
  // src/components/DateFilter/DateFilter.constants.ts
7761
- var DEFAULT_LABELS17 = {
8165
+ var DEFAULT_LABELS18 = {
7762
8166
  id: {
7763
8167
  prevButtonAriaLabel: "Tanggal sebelumnya",
7764
8168
  nextButtonAriaLabel: "Tanggal berikutnya",
@@ -7771,7 +8175,7 @@ var DEFAULT_LABELS17 = {
7771
8175
  }
7772
8176
  };
7773
8177
  var DEFAULT_SCROLL_AMOUNT = 150;
7774
- var useStyles18 = makeStyles({
8178
+ var useStyles19 = makeStyles({
7775
8179
  container: {
7776
8180
  display: "flex",
7777
8181
  alignItems: "stretch",
@@ -7854,10 +8258,10 @@ var DateFilter = ({
7854
8258
  labels,
7855
8259
  isLoading = false
7856
8260
  }) => {
7857
- const styles = useStyles18();
8261
+ const styles = useStyles19();
7858
8262
  const scrollRef = useRef(null);
7859
8263
  const mergedLabels = {
7860
- ...DEFAULT_LABELS17[language],
8264
+ ...DEFAULT_LABELS18[language],
7861
8265
  ...labels
7862
8266
  };
7863
8267
  const handlePrev = () => {
@@ -7920,7 +8324,7 @@ var DateFilter = ({
7920
8324
  };
7921
8325
 
7922
8326
  // src/components/ModalSearchTicket/ModalSearchTicket.constants.ts
7923
- var DEFAULT_LABELS18 = {
8327
+ var DEFAULT_LABELS19 = {
7924
8328
  id: {
7925
8329
  title: "Cari Jadwal Lainnya",
7926
8330
  fromLabel: "Dari",
@@ -7980,7 +8384,7 @@ var DEFAULT_FORM_VALUES = {
7980
8384
  typeOfService: "",
7981
8385
  passenger: ""
7982
8386
  };
7983
- var useStyles19 = makeStyles({
8387
+ var useStyles20 = makeStyles({
7984
8388
  dialogSurface: {
7985
8389
  maxWidth: "900px",
7986
8390
  width: "100%"
@@ -8082,8 +8486,8 @@ var ModalSearchTicket = ({
8082
8486
  showRoundTrip = true,
8083
8487
  ...props
8084
8488
  }) => {
8085
- const styles = useStyles19();
8086
- const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
8489
+ const styles = useStyles20();
8490
+ const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
8087
8491
  const { control, setValue, handleSubmit, watch } = useForm({
8088
8492
  defaultValues: {
8089
8493
  ...DEFAULT_FORM_VALUES,
@@ -8520,7 +8924,7 @@ var ModalSearchTicket = ({
8520
8924
  };
8521
8925
 
8522
8926
  // src/components/Stepper/Stepper.constants.ts
8523
- var DEFAULT_LABELS19 = {
8927
+ var DEFAULT_LABELS20 = {
8524
8928
  id: {
8525
8929
  stepperBackgroundAlt: "Latar Belakang Stepper",
8526
8930
  ferryIconAlt: "Ikon Kapal"
@@ -8530,7 +8934,7 @@ var DEFAULT_LABELS19 = {
8530
8934
  ferryIconAlt: "Ferry Icon"
8531
8935
  }
8532
8936
  };
8533
- var useStyles20 = makeStyles({
8937
+ var useStyles21 = makeStyles({
8534
8938
  stepperWrapper: {
8535
8939
  position: "relative",
8536
8940
  width: "100%",
@@ -8655,8 +9059,8 @@ var Stepper = ({
8655
9059
  language = "id",
8656
9060
  labels
8657
9061
  }) => {
8658
- const styles = useStyles20();
8659
- const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
9062
+ const styles = useStyles21();
9063
+ const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
8660
9064
  const currentStepIndex = useMemo(() => {
8661
9065
  if (typeof currentStep === "number") {
8662
9066
  return steps.findIndex((step) => step.number === currentStep);
@@ -8712,7 +9116,7 @@ var Stepper = ({
8712
9116
  };
8713
9117
 
8714
9118
  // src/components/CardOrdererInfo/CardOrdererInfo.constants.ts
8715
- var DEFAULT_LABELS20 = {
9119
+ var DEFAULT_LABELS21 = {
8716
9120
  id: {
8717
9121
  title: "Informasi Pemesan",
8718
9122
  ordererName: "Nama Pemesan",
@@ -8726,7 +9130,7 @@ var DEFAULT_LABELS20 = {
8726
9130
  email: "Email"
8727
9131
  }
8728
9132
  };
8729
- var useStyles21 = makeStyles({
9133
+ var useStyles22 = makeStyles({
8730
9134
  card: {
8731
9135
  padding: "1.5rem",
8732
9136
  borderRadius: tokens.borderRadiusXLarge,
@@ -8756,8 +9160,8 @@ var CardOrdererInfo = ({
8756
9160
  labels,
8757
9161
  className
8758
9162
  }) => {
8759
- const styles = useStyles21();
8760
- const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
9163
+ const styles = useStyles22();
9164
+ const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
8761
9165
  return /* @__PURE__ */ jsxs(Card, { className: className || styles.card, children: [
8762
9166
  /* @__PURE__ */ jsx(Title3, { children: mergedLabels.title }),
8763
9167
  /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
@@ -8778,7 +9182,7 @@ var CardOrdererInfo = ({
8778
9182
  };
8779
9183
 
8780
9184
  // src/components/ModalListPassenger/ModalListPassenger.constants.ts
8781
- var DEFAULT_LABELS21 = {
9185
+ var DEFAULT_LABELS22 = {
8782
9186
  id: {
8783
9187
  title: "Detail Penumpang",
8784
9188
  // sameAsOrderer: 'Sama Dengan Pemesan',
@@ -8808,7 +9212,7 @@ var DEFAULT_LABELS21 = {
8808
9212
  }
8809
9213
  }
8810
9214
  };
8811
- var useStyles22 = makeStyles({
9215
+ var useStyles23 = makeStyles({
8812
9216
  dialogSurface: {
8813
9217
  maxWidth: "600px",
8814
9218
  width: "100%",
@@ -8863,8 +9267,8 @@ var ModalListPassenger = ({
8863
9267
  // sameAsOrderer,
8864
9268
  // onSameAsOrdererChange,
8865
9269
  }) => {
8866
- const styles = useStyles22();
8867
- const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
9270
+ const styles = useStyles23();
9271
+ const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
8868
9272
  const displayTitle = title || mergedLabels.title;
8869
9273
  const handleClose = () => {
8870
9274
  onClose();
@@ -8995,7 +9399,7 @@ var ModalListPassenger = ({
8995
9399
  };
8996
9400
 
8997
9401
  // src/components/ModalPassengerForm/ModalPassengerForm.constants.ts
8998
- var DEFAULT_LABELS22 = {
9402
+ var DEFAULT_LABELS23 = {
8999
9403
  id: {
9000
9404
  title: "Detail Penumpang",
9001
9405
  titleLabel: "Title",
@@ -9146,7 +9550,7 @@ var calculateAge = (birthDate) => {
9146
9550
  }
9147
9551
  return { years: Math.max(0, years), months: Math.max(0, months) };
9148
9552
  };
9149
- var useStyles23 = makeStyles({
9553
+ var useStyles24 = makeStyles({
9150
9554
  dialogSurface: {
9151
9555
  maxWidth: "600px",
9152
9556
  width: "100%",
@@ -9326,10 +9730,10 @@ var ModalPassengerForm = ({
9326
9730
  ticketClassOptions,
9327
9731
  onScanComplete
9328
9732
  }) => {
9329
- const styles = useStyles23();
9330
- const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
9733
+ const styles = useStyles24();
9734
+ const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
9331
9735
  const mergedErrors = {
9332
- ...DEFAULT_LABELS22[language].errors,
9736
+ ...DEFAULT_LABELS23[language].errors,
9333
9737
  ...labels?.errors
9334
9738
  };
9335
9739
  const displayTitle = title || mergedLabels.title;
@@ -10061,7 +10465,7 @@ var ModalPassengerForm = ({
10061
10465
  };
10062
10466
 
10063
10467
  // src/components/CardPassengerList/CardPassengerList.constants.ts
10064
- var DEFAULT_LABELS23 = {
10468
+ var DEFAULT_LABELS24 = {
10065
10469
  id: {
10066
10470
  defaultTitle: "Data Penumpang",
10067
10471
  passengerPrefix: "Penumpang"
@@ -10104,7 +10508,7 @@ var getBadgeConfig = (ticketClass) => {
10104
10508
  };
10105
10509
  }
10106
10510
  };
10107
- var useStyles24 = makeStyles({
10511
+ var useStyles25 = makeStyles({
10108
10512
  card: {
10109
10513
  padding: "1.5rem",
10110
10514
  borderRadius: tokens.borderRadiusXLarge,
@@ -10187,8 +10591,8 @@ var CardPassengerList = ({
10187
10591
  labels,
10188
10592
  className
10189
10593
  }) => {
10190
- const styles = useStyles24();
10191
- const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
10594
+ const styles = useStyles25();
10595
+ const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10192
10596
  const displayTitle = title || mergedLabels.defaultTitle;
10193
10597
  return /* @__PURE__ */ jsxs(Card, { className: className || styles.card, children: [
10194
10598
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
@@ -10261,7 +10665,7 @@ var CardPassengerList = ({
10261
10665
  };
10262
10666
 
10263
10667
  // src/components/CardVehicleDetail/CardVehicleDetail.constants.ts
10264
- var DEFAULT_LABELS24 = {
10668
+ var DEFAULT_LABELS25 = {
10265
10669
  id: {
10266
10670
  title: "Detail Kendaraan",
10267
10671
  vehicleNumberLabel: "Nomor Kendaraan",
@@ -10279,7 +10683,7 @@ var DEFAULT_LABELS24 = {
10279
10683
  noLabel: "No"
10280
10684
  }
10281
10685
  };
10282
- var useStyles25 = makeStyles({
10686
+ var useStyles26 = makeStyles({
10283
10687
  card: {
10284
10688
  padding: "1.5rem",
10285
10689
  borderRadius: tokens.borderRadiusXLarge,
@@ -10319,8 +10723,8 @@ var CardVehicleDetail = ({
10319
10723
  language = "id",
10320
10724
  labels
10321
10725
  }) => {
10322
- const styles = useStyles25();
10323
- const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
10726
+ const styles = useStyles26();
10727
+ const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
10324
10728
  return /* @__PURE__ */ jsxs(Card, { className: styles.card, children: [
10325
10729
  /* @__PURE__ */ jsxs(
10326
10730
  "div",
@@ -10382,7 +10786,7 @@ var CardVehicleDetail = ({
10382
10786
  };
10383
10787
 
10384
10788
  // src/components/CardVehicleOwnerForm/CardVehicleOwnerForm.constants.ts
10385
- var DEFAULT_LABELS25 = {
10789
+ var DEFAULT_LABELS26 = {
10386
10790
  id: {
10387
10791
  title: "Informasi Pemilik & Muatan",
10388
10792
  addOwnerButton: "Tambah Pemilik",
@@ -10490,7 +10894,7 @@ var DEFAULT_LABELS25 = {
10490
10894
  incrementQuantityAriaLabel: "Increase quantity"
10491
10895
  }
10492
10896
  };
10493
- var useStyles26 = makeStyles({
10897
+ var useStyles27 = makeStyles({
10494
10898
  card: {
10495
10899
  padding: "1.5rem",
10496
10900
  borderRadius: tokens.borderRadiusXLarge,
@@ -10558,8 +10962,8 @@ var CardVehicleOwnerForm = ({
10558
10962
  language = "id",
10559
10963
  labels
10560
10964
  }) => {
10561
- const styles = useStyles26();
10562
- const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
10965
+ const styles = useStyles27();
10966
+ const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
10563
10967
  return /* @__PURE__ */ jsxs(Card, { className: styles.card, children: [
10564
10968
  /* @__PURE__ */ jsxs("div", { className: styles.header, children: [
10565
10969
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", flex: 1 }, children: [
@@ -11347,7 +11751,7 @@ var CardVehicleOwnerForm = ({
11347
11751
  };
11348
11752
 
11349
11753
  // src/components/CardBookingTicket/CardBookingTicket.constants.ts
11350
- var DEFAULT_LABELS26 = {
11754
+ var DEFAULT_LABELS27 = {
11351
11755
  id: {
11352
11756
  bookingDetails: "Booking Details",
11353
11757
  routeTitle: "Rute Perjalanan",
@@ -11383,7 +11787,7 @@ var DEFAULT_LABELS26 = {
11383
11787
  cancelDialogDismiss: "Cancel"
11384
11788
  }
11385
11789
  };
11386
- var useStyles27 = makeStyles({
11790
+ var useStyles28 = makeStyles({
11387
11791
  container: {
11388
11792
  display: "flex",
11389
11793
  flexDirection: "column",
@@ -11547,8 +11951,8 @@ var CardBookingTicket = ({
11547
11951
  onPrevious,
11548
11952
  className
11549
11953
  }) => {
11550
- const styles = useStyles27();
11551
- const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
11954
+ const styles = useStyles28();
11955
+ const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
11552
11956
  const [cancelDialogOpen, setCancelDialogOpen] = useState(false);
11553
11957
  return /* @__PURE__ */ jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxs("div", { className: styles.bookingDetail, children: [
11554
11958
  /* @__PURE__ */ jsxs(Card, { className: styles.bookingDetailTop, children: [
@@ -11750,7 +12154,7 @@ var CardBookingTicket = ({
11750
12154
  };
11751
12155
 
11752
12156
  // src/components/CardFAQ/CardFAQ.constants.ts
11753
- var DEFAULT_LABELS27 = {
12157
+ var DEFAULT_LABELS28 = {
11754
12158
  id: {
11755
12159
  title: "Pertanyaan yang sering diajukan"
11756
12160
  },
@@ -11804,7 +12208,7 @@ var DEFAULT_FAQ_ITEMS = {
11804
12208
  }
11805
12209
  ]
11806
12210
  };
11807
- var useStyles28 = makeStyles({
12211
+ var useStyles29 = makeStyles({
11808
12212
  faqSection: {
11809
12213
  // marginTop: '2rem', // Let parent control spacing if needed, or keep consistent
11810
12214
  },
@@ -11828,8 +12232,8 @@ var CardFAQ = ({
11828
12232
  items,
11829
12233
  className
11830
12234
  }) => {
11831
- const styles = useStyles28();
11832
- const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
12235
+ const styles = useStyles29();
12236
+ const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
11833
12237
  const faqItems = items || DEFAULT_FAQ_ITEMS[language];
11834
12238
  return /* @__PURE__ */ jsxs(Card, { className: styles.faqCard, children: [
11835
12239
  /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.title }),
@@ -11866,7 +12270,7 @@ var CardFAQ = ({
11866
12270
  };
11867
12271
 
11868
12272
  // src/components/CardAddon/CardAddon.constants.ts
11869
- var DEFAULT_LABELS28 = {
12273
+ var DEFAULT_LABELS29 = {
11870
12274
  id: {
11871
12275
  viewDetail: "Lihat detail",
11872
12276
  totalPrice: "Total Harga",
@@ -11882,7 +12286,7 @@ var DEFAULT_LABELS28 = {
11882
12286
  currencySymbol: "Rp"
11883
12287
  }
11884
12288
  };
11885
- var useStyles29 = makeStyles({
12289
+ var useStyles30 = makeStyles({
11886
12290
  card: {
11887
12291
  backgroundColor: tokens.colorNeutralBackground1,
11888
12292
  boxShadow: tokens.shadow4,
@@ -12055,8 +12459,8 @@ var CardAddon = ({
12055
12459
  children,
12056
12460
  className
12057
12461
  }) => {
12058
- const styles = useStyles29();
12059
- const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
12462
+ const styles = useStyles30();
12463
+ const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
12060
12464
  return /* @__PURE__ */ jsx(Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxs("div", { className: styles.gapRow, children: [
12061
12465
  /* @__PURE__ */ jsxs("div", { className: styles.titleDivider, children: [
12062
12466
  /* @__PURE__ */ jsx(Title3, { className: styles.textTitle, children: title }),
@@ -12267,7 +12671,7 @@ var CardAddon = ({
12267
12671
  };
12268
12672
 
12269
12673
  // src/components/CardMealCatalog/CardMealCatalog.constants.ts
12270
- var DEFAULT_LABELS29 = {
12674
+ var DEFAULT_LABELS30 = {
12271
12675
  id: {
12272
12676
  addButton: "Tambah",
12273
12677
  currencySymbol: "Rp",
@@ -12283,7 +12687,7 @@ var DEFAULT_LABELS29 = {
12283
12687
  searchPlaceholder: "Search for food or drinks you want"
12284
12688
  }
12285
12689
  };
12286
- var useStyles30 = makeStyles({
12690
+ var useStyles31 = makeStyles({
12287
12691
  container: {
12288
12692
  display: "flex",
12289
12693
  flexDirection: "column",
@@ -12427,8 +12831,8 @@ var CardMealCatalog = ({
12427
12831
  searchValue,
12428
12832
  onSearchChange
12429
12833
  }) => {
12430
- const styles = useStyles30();
12431
- const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
12834
+ const styles = useStyles31();
12835
+ const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
12432
12836
  return /* @__PURE__ */ jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
12433
12837
  /* @__PURE__ */ jsxs("div", { className: styles.banner, children: [
12434
12838
  /* @__PURE__ */ jsx("div", { className: styles.bannerOverlay }),
@@ -12533,7 +12937,7 @@ var CardMealCatalog = ({
12533
12937
  };
12534
12938
 
12535
12939
  // src/components/CardReview/CardReview.constants.ts
12536
- var DEFAULT_LABELS30 = {
12940
+ var DEFAULT_LABELS31 = {
12537
12941
  id: {
12538
12942
  defaultTitle: "Tinjauan"
12539
12943
  },
@@ -12541,7 +12945,7 @@ var DEFAULT_LABELS30 = {
12541
12945
  defaultTitle: "Review"
12542
12946
  }
12543
12947
  };
12544
- var useStyles31 = makeStyles({
12948
+ var useStyles32 = makeStyles({
12545
12949
  card: {
12546
12950
  padding: "1.5rem",
12547
12951
  borderRadius: tokens.borderRadiusXLarge,
@@ -12592,8 +12996,8 @@ var CardReview = ({
12592
12996
  className,
12593
12997
  headerAction
12594
12998
  }) => {
12595
- const styles = useStyles31();
12596
- const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
12999
+ const styles = useStyles32();
13000
+ const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
12597
13001
  return /* @__PURE__ */ jsxs(Card, { className: `${styles.card} ${className || ""}`, children: [
12598
13002
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
12599
13003
  /* @__PURE__ */ jsx(Subtitle1, { className: styles.headerTitle, children: title || mergedLabels.defaultTitle }),
@@ -12640,7 +13044,7 @@ var CardReview = ({
12640
13044
  };
12641
13045
 
12642
13046
  // src/components/CardReviewPassenger/CardReviewPassenger.constants.ts
12643
- var DEFAULT_LABELS31 = {
13047
+ var DEFAULT_LABELS32 = {
12644
13048
  id: {
12645
13049
  title: "Penumpang",
12646
13050
  idNumber: "Nomor ID"
@@ -12650,7 +13054,7 @@ var DEFAULT_LABELS31 = {
12650
13054
  idNumber: "ID Number"
12651
13055
  }
12652
13056
  };
12653
- var useStyles32 = makeStyles({
13057
+ var useStyles33 = makeStyles({
12654
13058
  card: {
12655
13059
  padding: "1.5rem",
12656
13060
  borderRadius: tokens.borderRadiusXLarge,
@@ -12748,8 +13152,8 @@ var CardReviewPassenger = ({
12748
13152
  passengers,
12749
13153
  className
12750
13154
  }) => {
12751
- const styles = useStyles32();
12752
- const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
13155
+ const styles = useStyles33();
13156
+ const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
12753
13157
  const displayTitle = title || mergedLabels.title;
12754
13158
  return /* @__PURE__ */ jsxs(Card, { className: `${styles.card} ${className || ""}`, children: [
12755
13159
  /* @__PURE__ */ jsxs("div", { className: styles.headerContainer, children: [
@@ -12792,7 +13196,7 @@ var CardReviewPassenger = ({
12792
13196
  };
12793
13197
 
12794
13198
  // src/components/CardPriceDetails/CardPriceDetails.constants.ts
12795
- var DEFAULT_LABELS32 = {
13199
+ var DEFAULT_LABELS33 = {
12796
13200
  id: {
12797
13201
  defaultTitle: "Rincian Harga",
12798
13202
  totalPayment: "Total Pembayaran",
@@ -12828,7 +13232,7 @@ var DEFAULT_LABELS32 = {
12828
13232
  currencyPrefix: "Rp. "
12829
13233
  }
12830
13234
  };
12831
- var useStyles33 = makeStyles({
13235
+ var useStyles34 = makeStyles({
12832
13236
  list: {
12833
13237
  margin: 0,
12834
13238
  padding: 0,
@@ -12850,7 +13254,7 @@ var PriceDetailsTerms = ({
12850
13254
  language = "id",
12851
13255
  labels
12852
13256
  }) => {
12853
- const styles = useStyles33();
13257
+ const styles = useStyles34();
12854
13258
  const linkColor = tokens.colorBrandBackground;
12855
13259
  const bookingTerms = labels.bookingTerms;
12856
13260
  const agreementTerms = [
@@ -12870,7 +13274,7 @@ var PriceDetailsTerms = ({
12870
13274
  ] })
12871
13275
  ] });
12872
13276
  };
12873
- var useStyles34 = makeStyles({
13277
+ var useStyles35 = makeStyles({
12874
13278
  card: {
12875
13279
  padding: "1.5rem",
12876
13280
  borderRadius: tokens.borderRadiusXLarge,
@@ -12947,8 +13351,8 @@ var CardPriceDetails = ({
12947
13351
  total,
12948
13352
  labels
12949
13353
  }) => {
12950
- const styles = useStyles34();
12951
- const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
13354
+ const styles = useStyles35();
13355
+ const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
12952
13356
  const displayTitle = title || mergedLabels.defaultTitle;
12953
13357
  const getVariantClass = (variant) => {
12954
13358
  switch (variant) {
@@ -13007,7 +13411,7 @@ var CardPriceDetails = ({
13007
13411
  };
13008
13412
 
13009
13413
  // src/components/CardPaymentMethodList/CardPaymentMethodList.constants.ts
13010
- var DEFAULT_LABELS33 = {
13414
+ var DEFAULT_LABELS34 = {
13011
13415
  id: {
13012
13416
  selectAriaLabel: "Pilih metode pembayaran"
13013
13417
  },
@@ -13015,7 +13419,7 @@ var DEFAULT_LABELS33 = {
13015
13419
  selectAriaLabel: "Select payment method"
13016
13420
  }
13017
13421
  };
13018
- var useStyles35 = makeStyles({
13422
+ var useStyles36 = makeStyles({
13019
13423
  container: {
13020
13424
  display: "flex",
13021
13425
  flexDirection: "column",
@@ -13075,8 +13479,8 @@ var CardPaymentMethodList = ({
13075
13479
  selectedValue,
13076
13480
  onSelect
13077
13481
  }) => {
13078
- const styles = useStyles35();
13079
- const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
13482
+ const styles = useStyles36();
13483
+ const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
13080
13484
  return /* @__PURE__ */ jsx("div", { className: styles.card, children: /* @__PURE__ */ jsx("div", { className: `${styles.container}`, children: methods.map((category, index) => /* @__PURE__ */ jsxs("div", { children: [
13081
13485
  index > 0 && /* @__PURE__ */ jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsx(Divider, {}) }),
13082
13486
  /* @__PURE__ */ jsx(Accordion, { multiple: true, collapsible: true, children: /* @__PURE__ */ jsxs(AccordionItem, { value: category.value, children: [
@@ -13125,7 +13529,7 @@ var CardPaymentMethodList = ({
13125
13529
  };
13126
13530
 
13127
13531
  // src/components/CardPaymentGuide/CardPaymentGuide.constants.ts
13128
- var DEFAULT_LABELS34 = {
13532
+ var DEFAULT_LABELS35 = {
13129
13533
  id: {
13130
13534
  title: "Cara Pembayaran"
13131
13535
  },
@@ -13133,7 +13537,7 @@ var DEFAULT_LABELS34 = {
13133
13537
  title: "Payment Method"
13134
13538
  }
13135
13539
  };
13136
- var useStyles36 = makeStyles({
13540
+ var useStyles37 = makeStyles({
13137
13541
  container: {
13138
13542
  display: "flex",
13139
13543
  flexDirection: "column",
@@ -13170,8 +13574,8 @@ var CardPaymentGuide = ({
13170
13574
  guides,
13171
13575
  className
13172
13576
  }) => {
13173
- const styles = useStyles36();
13174
- const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
13577
+ const styles = useStyles37();
13578
+ const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
13175
13579
  const displayTitle = title || mergedLabels.title;
13176
13580
  return /* @__PURE__ */ jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
13177
13581
  title && /* @__PURE__ */ jsx("div", { className: styles.titleContainer, children: /* @__PURE__ */ jsx(Subtitle1, { className: styles.title, children: displayTitle }) }),
@@ -13190,14 +13594,15 @@ var CardPaymentGuide = ({
13190
13594
  };
13191
13595
 
13192
13596
  // src/components/CardPaymentInfo/CardPaymentInfo.constants.ts
13193
- var DEFAULT_LABELS35 = {
13597
+ var DEFAULT_LABELS36 = {
13194
13598
  id: {
13195
13599
  expiryPrefix: "Kode virtual akun berlaku sampai",
13196
13600
  copyCodeButton: "Salin Kode",
13197
13601
  totalPayment: "Total Pembayaran",
13198
13602
  checkStatusInfo: "Klik tombol dibawah ini jika sudah melakukan pembayaran",
13199
13603
  checkStatusButton: "Cek Status Pembayaran",
13200
- currencySymbol: "Rp."
13604
+ currencySymbol: "Rp.",
13605
+ changePayment: "Ubah Metode Pembayaran"
13201
13606
  },
13202
13607
  en: {
13203
13608
  expiryPrefix: "Virtual account code valid until",
@@ -13205,10 +13610,11 @@ var DEFAULT_LABELS35 = {
13205
13610
  totalPayment: "Total Payment",
13206
13611
  checkStatusInfo: "Click the button below if you have made the payment",
13207
13612
  checkStatusButton: "Check Payment Status",
13208
- currencySymbol: "Rp."
13613
+ currencySymbol: "Rp.",
13614
+ changePayment: "Change Payment Method"
13209
13615
  }
13210
13616
  };
13211
- var useStyles37 = makeStyles({
13617
+ var useStyles38 = makeStyles({
13212
13618
  container: {
13213
13619
  display: "flex",
13214
13620
  flexDirection: "column",
@@ -13288,10 +13694,11 @@ var CardPaymentInfo = ({
13288
13694
  totalAmount,
13289
13695
  guides,
13290
13696
  onCopyVA,
13291
- onCheckStatus
13697
+ onCheckStatus,
13698
+ onChangePayment
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__ */ jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
13296
13703
  /* @__PURE__ */ jsxs("div", { className: styles.headerRow, children: [
13297
13704
  /* @__PURE__ */ jsx(Subtitle1, { children: mergedLabels.expiryPrefix }),
@@ -13317,6 +13724,17 @@ var CardPaymentInfo = ({
13317
13724
  )
13318
13725
  ] })
13319
13726
  ] }),
13727
+ /* @__PURE__ */ jsx(
13728
+ Button,
13729
+ {
13730
+ appearance: "secondary",
13731
+ size: "large",
13732
+ shape: "circular",
13733
+ className: styles.checkStatusButton,
13734
+ onClick: onChangePayment,
13735
+ children: mergedLabels.changePayment
13736
+ }
13737
+ ),
13320
13738
  /* @__PURE__ */ jsx(
13321
13739
  Field,
13322
13740
  {
@@ -13325,7 +13743,9 @@ var CardPaymentInfo = ({
13325
13743
  children: /* @__PURE__ */ jsxs(Title2, { children: [
13326
13744
  mergedLabels.currencySymbol,
13327
13745
  " ",
13328
- totalAmount.toLocaleString(language === "id" ? "id-ID" : "en-US")
13746
+ totalAmount.toLocaleString(
13747
+ language === "id" ? "id-ID" : "en-US"
13748
+ )
13329
13749
  ] })
13330
13750
  }
13331
13751
  )
@@ -13349,7 +13769,7 @@ var CardPaymentInfo = ({
13349
13769
  };
13350
13770
 
13351
13771
  // src/components/CardStatusOrder/CardStatusOrder.constants.ts
13352
- var DEFAULT_LABELS36 = {
13772
+ var DEFAULT_LABELS37 = {
13353
13773
  id: {
13354
13774
  detailTitle: "Detail Pemesanan",
13355
13775
  statusLabel: "Status",
@@ -13379,7 +13799,7 @@ var DEFAULT_LABELS36 = {
13379
13799
  illustrationAlt: "E-Ticket Illustration"
13380
13800
  }
13381
13801
  };
13382
- var useStyles38 = makeStyles({
13802
+ var useStyles39 = makeStyles({
13383
13803
  activeCard: {
13384
13804
  width: "100%",
13385
13805
  // padding: tokens.spacingHorizontalNone, // default
@@ -13449,8 +13869,8 @@ var CardStatusOrder = ({
13449
13869
  onClickViewTicket,
13450
13870
  className
13451
13871
  }) => {
13452
- const styles = useStyles38();
13453
- const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
13872
+ const styles = useStyles39();
13873
+ const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
13454
13874
  const displayStatus = statusLabel || mergedLabels.defaultStatus;
13455
13875
  const displayTitle = title || mergedLabels.defaultTitle;
13456
13876
  const displayDescription = description || mergedLabels.defaultDescription;
@@ -13547,7 +13967,7 @@ var CardStatusOrder = ({
13547
13967
  };
13548
13968
 
13549
13969
  // src/components/ModalPriceDetail/ModalPriceDetail.constants.ts
13550
- var DEFAULT_LABELS37 = {
13970
+ var DEFAULT_LABELS38 = {
13551
13971
  id: {
13552
13972
  title: "Rincian Harga",
13553
13973
  addonHeader: "Add On",
@@ -13573,7 +13993,7 @@ var DEFAULT_LABELS37 = {
13573
13993
  closeAriaLabel: "Close"
13574
13994
  }
13575
13995
  };
13576
- var useStyles39 = makeStyles({
13996
+ var useStyles40 = makeStyles({
13577
13997
  surface: {
13578
13998
  width: "680px",
13579
13999
  maxWidth: "90vw",
@@ -13700,8 +14120,8 @@ var ModalPriceDetail = ({
13700
14120
  grandTotal,
13701
14121
  ...props
13702
14122
  }) => {
13703
- const styles = useStyles39();
13704
- const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
14123
+ const styles = useStyles40();
14124
+ const mergedLabels = { ...DEFAULT_LABELS38[language], ...labels };
13705
14125
  return /* @__PURE__ */ jsx(
13706
14126
  Dialog,
13707
14127
  {
@@ -13843,7 +14263,7 @@ var ModalPriceDetail = ({
13843
14263
  // src/components/FileUpload/FileUpload.constants.ts
13844
14264
  var ACCEPTED_FILES = ".pdf,.jpg,.jpeg,.png";
13845
14265
  var MAX_FILE_SIZE_MB = 10;
13846
- var DEFAULT_LABELS38 = {
14266
+ var DEFAULT_LABELS39 = {
13847
14267
  id: {
13848
14268
  placeholder: "Ketuk untuk pilih file",
13849
14269
  maxSizeWarning: "Maksimal {maxSize}MB per file dalam format PDF, JPG, JPEG, PNG.",
@@ -13861,7 +14281,7 @@ var DEFAULT_LABELS38 = {
13861
14281
  downloadTemplateDocument: "Download Template Document"
13862
14282
  }
13863
14283
  };
13864
- var useStyles40 = makeStyles({
14284
+ var useStyles41 = makeStyles({
13865
14285
  surface: {
13866
14286
  maxWidth: "90vw",
13867
14287
  maxHeight: "90vh",
@@ -13888,7 +14308,7 @@ var ModalPreviewImage = ({
13888
14308
  imageUrl,
13889
14309
  alt = "Preview"
13890
14310
  }) => {
13891
- const styles = useStyles40();
14311
+ const styles = useStyles41();
13892
14312
  return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (_, data) => onOpenChange(data.open), children: /* @__PURE__ */ jsx(DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxs(DialogBody, { children: [
13893
14313
  /* @__PURE__ */ jsx(
13894
14314
  DialogTitle,
@@ -14001,7 +14421,7 @@ var FileUpload = React.forwardRef(
14001
14421
  pdfIcon,
14002
14422
  downloadTemplateDocument = false
14003
14423
  }, ref) => {
14004
- const mergedLabels = { ...DEFAULT_LABELS38[language], ...customLabels };
14424
+ const mergedLabels = { ...DEFAULT_LABELS39[language], ...customLabels };
14005
14425
  const styles = uploadStyles();
14006
14426
  const fileInputRef = useRef(null);
14007
14427
  const [, setIsDragOver] = useState(false);
@@ -14439,11 +14859,11 @@ function hexToRgba(hex, alpha = 1) {
14439
14859
  }
14440
14860
 
14441
14861
  // src/components/CardProfileMenu/CardProfileMenu.constants.ts
14442
- var DEFAULT_LABELS39 = {
14862
+ var DEFAULT_LABELS40 = {
14443
14863
  id: {},
14444
14864
  en: {}
14445
14865
  };
14446
- var useStyles41 = makeStyles({
14866
+ var useStyles42 = makeStyles({
14447
14867
  container: {
14448
14868
  display: "flex",
14449
14869
  flexDirection: "column",
@@ -14503,8 +14923,8 @@ var CardProfileMenu = ({
14503
14923
  selectedValue,
14504
14924
  onTabSelect
14505
14925
  }) => {
14506
- const styles = useStyles41();
14507
- ({ ...DEFAULT_LABELS39[language], ...labels });
14926
+ const styles = useStyles42();
14927
+ ({ ...DEFAULT_LABELS40[language], ...labels });
14508
14928
  const handleTabSelect = (_, data) => {
14509
14929
  onTabSelect(data.value);
14510
14930
  };
@@ -14533,107 +14953,6 @@ var CardProfileMenu = ({
14533
14953
  ) });
14534
14954
  };
14535
14955
 
14536
- // src/components/NoContent/NoContent.constants.ts
14537
- var DEFAULT_LABELS40 = {
14538
- id: {
14539
- defaultImageAlt: "Tidak ada konten",
14540
- defaultTitle: "Data {konten} belum bisa dimuat",
14541
- defaultMessage: "Silahkan coba muat ulang halaman ini atau cek kembali beberapa saat lagi.",
14542
- defaultButtonText: "Muat Ulang"
14543
- },
14544
- en: {
14545
- defaultImageAlt: "No content available",
14546
- defaultTitle: "Data {content} could not be loaded",
14547
- defaultMessage: "Please try reloading this page or check back in a few moments.",
14548
- defaultButtonText: "Reload"
14549
- }
14550
- };
14551
- var getFormattedDefaultTitle = (template, content) => {
14552
- if (content) {
14553
- return template.replace(/\{(konten|content)\}/g, content);
14554
- }
14555
- return template.replace(/\s*\{(konten|content)\}\s*/g, " ").trim();
14556
- };
14557
- var useStyles42 = makeStyles({
14558
- root: {
14559
- display: "flex",
14560
- flexDirection: "column",
14561
- alignItems: "center",
14562
- justifyContent: "center",
14563
- gap: tokens.spacingVerticalL,
14564
- textAlign: "center",
14565
- paddingTop: tokens.spacingVerticalXXL,
14566
- paddingBottom: tokens.spacingVerticalXXL,
14567
- paddingLeft: tokens.spacingHorizontalXL,
14568
- paddingRight: tokens.spacingHorizontalXL,
14569
- width: "100%"
14570
- },
14571
- image: {
14572
- maxWidth: "100%",
14573
- height: "auto"
14574
- },
14575
- textContainer: {
14576
- display: "flex",
14577
- flexDirection: "column",
14578
- alignItems: "center",
14579
- gap: tokens.spacingVerticalS,
14580
- maxWidth: "400px"
14581
- },
14582
- title: {
14583
- fontWeight: "600"
14584
- },
14585
- message: {
14586
- color: tokens.colorNeutralForeground3,
14587
- textAlign: "center"
14588
- }
14589
- });
14590
- var NoContent = ({
14591
- title,
14592
- content,
14593
- message,
14594
- imageSrc = "/assets/images/illustrations/no-content.svg",
14595
- imageAlt,
14596
- imageWidth = 240,
14597
- imageHeight = 180,
14598
- actionButton,
14599
- language = "id",
14600
- labels,
14601
- className
14602
- }) => {
14603
- const styles = useStyles42();
14604
- const mergedLabels = { ...DEFAULT_LABELS40[language], ...labels };
14605
- const displayTitle = title ?? getFormattedDefaultTitle(mergedLabels.defaultTitle, content);
14606
- const displayMessage = message ?? mergedLabels.defaultMessage;
14607
- const displayImageAlt = imageAlt ?? mergedLabels.defaultImageAlt;
14608
- return /* @__PURE__ */ jsxs("div", { className: mergeClasses(styles.root, className), children: [
14609
- /* @__PURE__ */ jsx(
14610
- "img",
14611
- {
14612
- src: imageSrc,
14613
- alt: displayImageAlt,
14614
- width: imageWidth,
14615
- height: imageHeight,
14616
- className: styles.image
14617
- }
14618
- ),
14619
- /* @__PURE__ */ jsxs("div", { className: styles.textContainer, children: [
14620
- /* @__PURE__ */ jsx(Subtitle1, { className: styles.title, children: displayTitle }),
14621
- typeof displayMessage === "string" ? /* @__PURE__ */ jsx(Body1, { className: styles.message, children: displayMessage }) : displayMessage
14622
- ] }),
14623
- actionButton && /* @__PURE__ */ jsx(
14624
- Button,
14625
- {
14626
- type: "button",
14627
- appearance: actionButton.appearance || "primary",
14628
- onClick: actionButton.onClick,
14629
- shape: "circular",
14630
- style: { width: "100%" },
14631
- children: actionButton.text
14632
- }
14633
- )
14634
- ] });
14635
- };
14636
-
14637
- export { API_CONFIG, API_ENDPOINTS, API_ERROR_MESSAGES, BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, COUNTRIES, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS8 as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS9 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS17 as DateFilterDefaultLabels, FileUpload_default as FileUpload, GENDER, HTTP_STATUS, IDENTITY_TYPE, InputDynamic_default as InputDynamic, LOAD_TYPE, MODAL_PRESETS, MY_TICKET_STATUS, MY_TICKET_TAB, ModalFilterTicket, DEFAULT_LABELS16 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListMenuService, ModalListPassenger, ModalPassengerForm, ModalPreviewImage, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, NoContent, DEFAULT_LABELS40 as NoContentDefaultLabels, PASSENGER_TYPE, SortMenu, Stepper, calculateAge, getBadgeConfig, getModalPreset, getSortLabel, hexToRgba };
14956
+ export { API_CONFIG, API_ENDPOINTS, API_ERROR_MESSAGES, BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, COUNTRIES, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS8 as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS9 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS18 as DateFilterDefaultLabels, EmptyContent, DEFAULT_LABELS11 as EmptyContentDefaultLabels, FileUpload_default as FileUpload, GENDER, HTTP_STATUS, IDENTITY_TYPE, InputDynamic_default as InputDynamic, LOAD_TYPE, MODAL_PRESETS, MY_TICKET_STATUS, MY_TICKET_TAB, ModalFilterTicket, DEFAULT_LABELS17 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListMenuService, ModalListPassenger, ModalPassengerForm, ModalPreviewImage, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, PASSENGER_TYPE, SortMenu, Stepper, calculateAge, getBadgeConfig, getModalPreset, getSortLabel, hexToRgba };
14638
14957
  //# sourceMappingURL=index.mjs.map
14639
14958
  //# sourceMappingURL=index.mjs.map