@asdp/ferryui 0.1.22-dev.9176 → 0.1.22-dev.9194

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
@@ -1886,7 +1886,8 @@ var DEFAULT_LABELS6 = {
1886
1886
  hotelLabel: "Hotel",
1887
1887
  hotelDescription: "Layanan pemesanan hotel",
1888
1888
  otherLabel: "Lainnya",
1889
- otherDescription: "Layanan lainnya",
1889
+ otherDescription: "Akses fitur tambahan dan pengaturan.",
1890
+ modalTitle: "Daftar Menu",
1890
1891
  serviceAriaLabel: "Layanan"
1891
1892
  },
1892
1893
  en: {
@@ -1898,8 +1899,9 @@ var DEFAULT_LABELS6 = {
1898
1899
  skptDescription: "Integrated Passenger Ticketing System",
1899
1900
  hotelLabel: "Hotel",
1900
1901
  hotelDescription: "Hotel Booking Service",
1901
- otherLabel: "Other",
1902
- otherDescription: "Other Services",
1902
+ otherLabel: "More",
1903
+ otherDescription: "Access additional features and settings.",
1904
+ modalTitle: "Service List",
1903
1905
  serviceAriaLabel: "Service"
1904
1906
  }
1905
1907
  };
@@ -1940,12 +1942,191 @@ var ALIAS_MENU_ITEMS = [
1940
1942
  var BP_TABLET = `max-width: ${extendedTokens.breakpointXl}`;
1941
1943
  var BP_MOBILE = `max-width: ${extendedTokens.breakpointMd}`;
1942
1944
  var useStyles6 = reactComponents.makeStyles({
1945
+ dialogSurface: {
1946
+ maxWidth: "900px",
1947
+ width: "100%"
1948
+ },
1949
+ closeButton: {
1950
+ minWidth: "32px",
1951
+ minHeight: "32px"
1952
+ },
1953
+ content: {
1954
+ paddingTop: "8px",
1955
+ paddingBottom: "16px"
1956
+ },
1957
+ // Horizontal row layout: icon left, text right — same as CardServiceMenu desktop
1958
+ menuItem: {
1959
+ display: "flex",
1960
+ flexDirection: "row",
1961
+ alignItems: "center",
1962
+ justifyContent: "flex-start",
1963
+ padding: "12px 16px",
1964
+ borderRadius: reactComponents.tokens.borderRadiusMedium,
1965
+ cursor: "pointer",
1966
+ textAlign: "left",
1967
+ transition: "background-color 0.2s ease",
1968
+ color: reactComponents.tokens.colorNeutralForeground1,
1969
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1,
1970
+ border: "none",
1971
+ gap: "12px",
1972
+ width: "100%",
1973
+ "&:hover": {
1974
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
1975
+ },
1976
+ [`@media (${BP_TABLET})`]: {
1977
+ padding: "10px 10px",
1978
+ gap: "8px"
1979
+ },
1980
+ [`@media (${BP_MOBILE})`]: {
1981
+ flexDirection: "column",
1982
+ alignItems: "center",
1983
+ textAlign: "center",
1984
+ padding: "8px 6px",
1985
+ gap: "4px"
1986
+ }
1987
+ },
1988
+ logoWrapper: {
1989
+ display: "flex",
1990
+ alignItems: "center",
1991
+ justifyContent: "center",
1992
+ flexShrink: 0
1993
+ },
1994
+ logo: {
1995
+ height: "32px",
1996
+ width: "32px",
1997
+ flexShrink: 0,
1998
+ objectFit: "contain",
1999
+ [`@media (${BP_TABLET})`]: {
2000
+ height: "28px",
2001
+ width: "28px"
2002
+ },
2003
+ [`@media (${BP_MOBILE})`]: {
2004
+ height: "24px",
2005
+ width: "24px"
2006
+ }
2007
+ },
2008
+ textContent: {
2009
+ display: "flex",
2010
+ flexDirection: "column",
2011
+ gap: "2px",
2012
+ minWidth: 0,
2013
+ width: "100%",
2014
+ [`@media (${BP_MOBILE})`]: {
2015
+ alignItems: "center"
2016
+ }
2017
+ },
2018
+ label: {
2019
+ fontSize: reactComponents.tokens.fontSizeBase300,
2020
+ fontWeight: reactComponents.tokens.fontWeightSemibold,
2021
+ lineHeight: "1.2",
2022
+ whiteSpace: "nowrap",
2023
+ overflow: "hidden",
2024
+ textOverflow: "ellipsis",
2025
+ width: "100%",
2026
+ [`@media (${BP_TABLET})`]: {
2027
+ fontSize: reactComponents.tokens.fontSizeBase200
2028
+ },
2029
+ [`@media (${BP_MOBILE})`]: {
2030
+ fontSize: reactComponents.tokens.fontSizeBase100,
2031
+ textAlign: "center"
2032
+ }
2033
+ },
2034
+ description: {
2035
+ fontSize: reactComponents.tokens.fontSizeBase200,
2036
+ fontWeight: reactComponents.tokens.fontWeightRegular,
2037
+ color: reactComponents.tokens.colorNeutralForeground2,
2038
+ display: "-webkit-box",
2039
+ WebkitLineClamp: 2,
2040
+ WebkitBoxOrient: "vertical",
2041
+ overflow: "hidden",
2042
+ textOverflow: "ellipsis",
2043
+ lineHeight: "1.4",
2044
+ [`@media (${BP_TABLET})`]: {
2045
+ fontSize: reactComponents.tokens.fontSizeBase100,
2046
+ WebkitLineClamp: 1
2047
+ },
2048
+ [`@media (${BP_MOBILE})`]: {
2049
+ display: "none"
2050
+ }
2051
+ }
2052
+ });
2053
+ var ModalListMenuService = ({
2054
+ open = false,
2055
+ onClose = () => {
2056
+ },
2057
+ title = "",
2058
+ menuItems = ALIAS_MENU_ITEMS,
2059
+ onItemClick,
2060
+ showDescriptions = true
2061
+ }) => {
2062
+ const styles = useStyles6();
2063
+ return /* @__PURE__ */ jsxRuntime.jsx(
2064
+ reactComponents.Dialog,
2065
+ {
2066
+ open,
2067
+ onOpenChange: (_, data) => {
2068
+ if (!data.open) {
2069
+ onClose();
2070
+ }
2071
+ },
2072
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
2073
+ /* @__PURE__ */ jsxRuntime.jsx(
2074
+ reactComponents.DialogTitle,
2075
+ {
2076
+ action: /* @__PURE__ */ jsxRuntime.jsx(
2077
+ reactComponents.Button,
2078
+ {
2079
+ appearance: "subtle",
2080
+ "aria-label": "close",
2081
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
2082
+ onClick: onClose,
2083
+ className: styles.closeButton
2084
+ }
2085
+ ),
2086
+ children: title
2087
+ }
2088
+ ),
2089
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { gutterWidth: 0, children: menuItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 6, sm: 6, md: 3, lg: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(
2090
+ reactComponents.Button,
2091
+ {
2092
+ className: styles.menuItem,
2093
+ onClick: () => onItemClick?.(item),
2094
+ "aria-label": item.name,
2095
+ children: [
2096
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
2097
+ "img",
2098
+ {
2099
+ src: item.imageUrl,
2100
+ alt: item.name,
2101
+ className: styles.logo
2102
+ }
2103
+ ) }),
2104
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2105
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
2106
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2107
+ MenuItemDescription,
2108
+ {
2109
+ description: item.description,
2110
+ className: styles.description
2111
+ }
2112
+ )
2113
+ ] })
2114
+ ]
2115
+ }
2116
+ ) }, item.id)) }) })
2117
+ ] }) })
2118
+ }
2119
+ );
2120
+ };
2121
+ var BP_TABLET2 = `max-width: ${extendedTokens.breakpointXl}`;
2122
+ var BP_MOBILE2 = `max-width: ${extendedTokens.breakpointMd}`;
2123
+ var useStyles7 = reactComponents.makeStyles({
1943
2124
  card: {
1944
2125
  width: "100%",
1945
2126
  boxSizing: "border-box",
1946
2127
  padding: "0px",
1947
2128
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
1948
- [`@media (${BP_MOBILE})`]: {
2129
+ [`@media (${BP_MOBILE2})`]: {
1949
2130
  borderRadius: reactComponents.tokens.borderRadiusLarge
1950
2131
  }
1951
2132
  },
@@ -1955,7 +2136,7 @@ var useStyles6 = reactComponents.makeStyles({
1955
2136
  flexDirection: "column",
1956
2137
  justifyContent: "space-around",
1957
2138
  // Tablet + Mobile: horizontal scroll row
1958
- [`@media (${BP_TABLET})`]: {
2139
+ [`@media (${BP_TABLET2})`]: {
1959
2140
  flexDirection: "row",
1960
2141
  overflowX: "auto",
1961
2142
  overflowY: "visible",
@@ -1965,7 +2146,7 @@ var useStyles6 = reactComponents.makeStyles({
1965
2146
  // Thin scrollbar on tablet, hidden on mobile
1966
2147
  scrollbarWidth: "thin"
1967
2148
  },
1968
- [`@media (${BP_MOBILE})`]: {
2149
+ [`@media (${BP_MOBILE2})`]: {
1969
2150
  scrollbarWidth: "none"
1970
2151
  }
1971
2152
  },
@@ -1989,7 +2170,7 @@ var useStyles6 = reactComponents.makeStyles({
1989
2170
  backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
1990
2171
  },
1991
2172
  // Tablet: compact column, fixed width, description visible (1 line)
1992
- [`@media (${BP_TABLET})`]: {
2173
+ [`@media (${BP_TABLET2})`]: {
1993
2174
  flexDirection: "column",
1994
2175
  alignItems: "center",
1995
2176
  textAlign: "center",
@@ -2001,7 +2182,7 @@ var useStyles6 = reactComponents.makeStyles({
2001
2182
  scrollSnapAlign: "start"
2002
2183
  },
2003
2184
  // Mobile: even tighter, no description
2004
- [`@media (${BP_MOBILE})`]: {
2185
+ [`@media (${BP_MOBILE2})`]: {
2005
2186
  padding: "8px 6px",
2006
2187
  width: "72px",
2007
2188
  gap: "4px"
@@ -2021,16 +2202,32 @@ var useStyles6 = reactComponents.makeStyles({
2021
2202
  justifyContent: "center",
2022
2203
  flexShrink: 0
2023
2204
  },
2205
+ moreIconOuter: {
2206
+ display: "flex",
2207
+ alignItems: "center",
2208
+ justifyContent: "center",
2209
+ borderRadius: "50%",
2210
+ width: "32px",
2211
+ height: "32px",
2212
+ [`@media (${BP_TABLET2})`]: {
2213
+ width: "28px",
2214
+ height: "28px"
2215
+ },
2216
+ [`@media (${BP_MOBILE2})`]: {
2217
+ width: "24px",
2218
+ height: "24px"
2219
+ }
2220
+ },
2024
2221
  logo: {
2025
2222
  height: "32px",
2026
2223
  width: "32px",
2027
2224
  flexShrink: 0,
2028
2225
  objectFit: "contain",
2029
- [`@media (${BP_TABLET})`]: {
2226
+ [`@media (${BP_TABLET2})`]: {
2030
2227
  height: "28px",
2031
2228
  width: "28px"
2032
2229
  },
2033
- [`@media (${BP_MOBILE})`]: {
2230
+ [`@media (${BP_MOBILE2})`]: {
2034
2231
  height: "24px",
2035
2232
  width: "24px"
2036
2233
  }
@@ -2042,7 +2239,7 @@ var useStyles6 = reactComponents.makeStyles({
2042
2239
  minWidth: 0,
2043
2240
  width: "100%",
2044
2241
  // allow ellipsis to work
2045
- [`@media (${BP_TABLET})`]: {
2242
+ [`@media (${BP_TABLET2})`]: {
2046
2243
  alignItems: "center",
2047
2244
  gap: "2px"
2048
2245
  }
@@ -2051,7 +2248,7 @@ var useStyles6 = reactComponents.makeStyles({
2051
2248
  fontSize: reactComponents.tokens.fontSizeBase300,
2052
2249
  fontWeight: reactComponents.tokens.fontWeightSemibold,
2053
2250
  lineHeight: "1.2",
2054
- [`@media (${BP_TABLET})`]: {
2251
+ [`@media (${BP_TABLET2})`]: {
2055
2252
  fontSize: reactComponents.tokens.fontSizeBase200,
2056
2253
  whiteSpace: "nowrap",
2057
2254
  overflow: "hidden",
@@ -2059,7 +2256,7 @@ var useStyles6 = reactComponents.makeStyles({
2059
2256
  width: "100%",
2060
2257
  textAlign: "center"
2061
2258
  },
2062
- [`@media (${BP_MOBILE})`]: {
2259
+ [`@media (${BP_MOBILE2})`]: {
2063
2260
  fontSize: reactComponents.tokens.fontSizeBase100
2064
2261
  }
2065
2262
  },
@@ -2075,7 +2272,7 @@ var useStyles6 = reactComponents.makeStyles({
2075
2272
  textOverflow: "ellipsis",
2076
2273
  lineHeight: "1.4",
2077
2274
  // Tablet: 1-line clamp, compact
2078
- [`@media (${BP_TABLET})`]: {
2275
+ [`@media (${BP_TABLET2})`]: {
2079
2276
  fontSize: reactComponents.tokens.fontSizeBase100,
2080
2277
  WebkitLineClamp: 1,
2081
2278
  whiteSpace: "nowrap",
@@ -2083,7 +2280,7 @@ var useStyles6 = reactComponents.makeStyles({
2083
2280
  textAlign: "center"
2084
2281
  },
2085
2282
  // Mobile: hide description entirely
2086
- [`@media (${BP_MOBILE})`]: {
2283
+ [`@media (${BP_MOBILE2})`]: {
2087
2284
  display: "none"
2088
2285
  }
2089
2286
  },
@@ -2100,13 +2297,13 @@ var useStyles6 = reactComponents.makeStyles({
2100
2297
  [`@media (min-width: ${extendedTokens.breakpointXl})`]: {
2101
2298
  display: "none"
2102
2299
  },
2103
- [`@media (${BP_MOBILE})`]: {
2300
+ [`@media (${BP_MOBILE2})`]: {
2104
2301
  display: "none"
2105
2302
  }
2106
2303
  },
2107
2304
  dividerHorizontal: {
2108
2305
  // Only visible on desktop (vertical layout)
2109
- [`@media (${BP_TABLET})`]: {
2306
+ [`@media (${BP_TABLET2})`]: {
2110
2307
  display: "none"
2111
2308
  }
2112
2309
  }
@@ -2122,60 +2319,110 @@ var CardServiceMenu = ({
2122
2319
  isLoading = false,
2123
2320
  skeletonCount = 4
2124
2321
  }) => {
2125
- const styles = useStyles6();
2126
- ({ ...DEFAULT_LABELS6[language], ...labels });
2322
+ const styles = useStyles7();
2323
+ const mergedLabels = { ...DEFAULT_LABELS6[language], ...labels };
2324
+ const [isModalOpen, setIsModalOpen] = React.useState(false);
2127
2325
  const getMenuItemClass = (serviceId) => {
2128
- const isActive = activeServiceId === serviceId;
2326
+ const isActive = serviceId !== void 0 && activeServiceId === serviceId;
2129
2327
  return reactComponents.mergeClasses(styles.menuItem, isActive && styles.menuItemActive);
2130
2328
  };
2131
- return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: reactComponents.mergeClasses(styles.card, className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.menuList, children: isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2132
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reactComponents.mergeClasses(styles.menuItem, styles.skeletonOverride), children: [
2133
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { className: styles.logo, style: { borderRadius: "50%" } }) }) }),
2134
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2135
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { style: { width: "60%", height: "16px" } }) }),
2136
- showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { style: { width: "90%", height: "12px", marginTop: "4px" } }) })
2137
- ] })
2138
- ] }),
2139
- index < skeletonCount - 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2140
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2141
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2142
- ] })
2143
- ] }, `skeleton-${index}`)) : menuItems.map((item, index) => {
2144
- return /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2145
- /* @__PURE__ */ jsxRuntime.jsxs(
2329
+ const MAX_ITEMS = 5;
2330
+ const isOverflow = menuItems.length > MAX_ITEMS;
2331
+ const displayItems = isOverflow ? menuItems.slice(0, MAX_ITEMS - 1) : menuItems;
2332
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2333
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: reactComponents.mergeClasses(styles.card, className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.menuList, children: [
2334
+ isLoading ? Array.from({ length: skeletonCount }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2335
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: reactComponents.mergeClasses(styles.menuItem, styles.skeletonOverride), children: [
2336
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { className: styles.logo, style: { borderRadius: "50%" } }) }) }),
2337
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2338
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { style: { width: "60%", height: "16px" } }) }),
2339
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Skeleton, { className: styles.description, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.SkeletonItem, { style: { width: "90%", height: "12px", marginTop: "4px" } }) })
2340
+ ] })
2341
+ ] }),
2342
+ index < skeletonCount - 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2343
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2344
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2345
+ ] })
2346
+ ] }, `skeleton-${index}`)) : displayItems.map((item, index) => {
2347
+ return /* @__PURE__ */ jsxRuntime.jsxs(React__default.default.Fragment, { children: [
2348
+ /* @__PURE__ */ jsxRuntime.jsxs(
2349
+ reactComponents.Button,
2350
+ {
2351
+ className: getMenuItemClass(item.id),
2352
+ onClick: () => onServiceClick?.(item.id),
2353
+ "aria-label": item.name,
2354
+ children: [
2355
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
2356
+ "img",
2357
+ {
2358
+ src: item.imageUrl,
2359
+ alt: item.name,
2360
+ className: styles.logo
2361
+ }
2362
+ ) }),
2363
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2364
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
2365
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2366
+ MenuItemDescription,
2367
+ {
2368
+ description: item.description,
2369
+ className: styles.description
2370
+ }
2371
+ )
2372
+ ] })
2373
+ ]
2374
+ }
2375
+ ),
2376
+ (index < displayItems.length - 1 || isOverflow) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2377
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2378
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2379
+ ] })
2380
+ ] }, item.id);
2381
+ }),
2382
+ !isLoading && isOverflow && /* @__PURE__ */ jsxRuntime.jsxs(
2146
2383
  reactComponents.Button,
2147
2384
  {
2148
- className: getMenuItemClass(item.id),
2149
- onClick: () => onServiceClick?.(item.id),
2150
- "aria-label": item.name,
2385
+ className: getMenuItemClass(),
2386
+ onClick: () => setIsModalOpen(true),
2387
+ "aria-label": mergedLabels.otherLabel,
2151
2388
  children: [
2152
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
2153
- "img",
2389
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.moreIconOuter, children: /* @__PURE__ */ jsxRuntime.jsx(
2390
+ react.Icon,
2154
2391
  {
2155
- src: item.imageUrl,
2156
- alt: item.name,
2157
- className: styles.logo
2392
+ icon: "fluent:apps-24-regular",
2393
+ fontSize: "32px",
2394
+ color: reactComponents.tokens.colorNeutralForeground1
2158
2395
  }
2159
- ) }),
2396
+ ) }) }),
2160
2397
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
2161
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
2398
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: mergedLabels.otherLabel }),
2162
2399
  showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
2163
2400
  MenuItemDescription,
2164
2401
  {
2165
- description: item.description,
2402
+ description: mergedLabels.otherDescription,
2166
2403
  className: styles.description
2167
2404
  }
2168
2405
  )
2169
2406
  ] })
2170
2407
  ]
2171
2408
  }
2172
- ),
2173
- index < menuItems.length - 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2174
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { className: styles.dividerHorizontal }),
2175
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { vertical: true, className: styles.dividerVertical })
2176
- ] })
2177
- ] }, item.id);
2178
- }) }) });
2409
+ )
2410
+ ] }) }),
2411
+ !isLoading && isOverflow && /* @__PURE__ */ jsxRuntime.jsx(
2412
+ ModalListMenuService,
2413
+ {
2414
+ open: isModalOpen,
2415
+ onClose: () => setIsModalOpen(false),
2416
+ title: mergedLabels.modalTitle,
2417
+ menuItems,
2418
+ onItemClick: (item) => {
2419
+ setIsModalOpen(false);
2420
+ onServiceClick?.(item.id);
2421
+ },
2422
+ showDescriptions
2423
+ }
2424
+ )
2425
+ ] });
2179
2426
  };
2180
2427
  var MenuItemDescription = ({ description, className }) => {
2181
2428
  const ref = React.useRef(null);
@@ -2429,7 +2676,7 @@ var COUNTRIES = [
2429
2676
  { value: "PG", label: "Papua New Guinea", flag: "twemoji:flag-papua-new-guinea" }
2430
2677
  ];
2431
2678
  var PhoneInput = PhoneInputComponent__default.default.default || PhoneInputComponent__default.default;
2432
- var useStyles7 = reactComponents.makeStyles({
2679
+ var useStyles8 = reactComponents.makeStyles({
2433
2680
  field: {
2434
2681
  display: "flex",
2435
2682
  flexDirection: "column",
@@ -2767,7 +3014,7 @@ var InputDynamic = ({
2767
3014
  labels,
2768
3015
  menuPlacement
2769
3016
  }) => {
2770
- const styles = useStyles7();
3017
+ const styles = useStyles8();
2771
3018
  const mergedLabels = { ...DEFAULT_LABELS7[language], ...labels };
2772
3019
  const [showPassword, setShowPassword] = React.useState(false);
2773
3020
  const [isPhoneMode, setIsPhoneMode] = React.useState(false);
@@ -3274,7 +3521,7 @@ var InputDynamic = ({
3274
3521
  autoCapitalize: "off",
3275
3522
  spellCheck: "false"
3276
3523
  },
3277
- value: COUNTRIES.find((country) => country.value === field.value) || null,
3524
+ value: (options && options.length > 0 ? options : COUNTRIES).find((country) => country.value === field.value) || null,
3278
3525
  onChange: (selectedOption) => {
3279
3526
  field.onChange(selectedOption ? selectedOption.value : "");
3280
3527
  if (onChange) {
@@ -3841,7 +4088,7 @@ var DEFAULT_LABELS8 = {
3841
4088
  otherDescription: "Other Services"
3842
4089
  }
3843
4090
  };
3844
- var useStyles8 = reactComponents.makeStyles({
4091
+ var useStyles9 = reactComponents.makeStyles({
3845
4092
  card: {
3846
4093
  position: "relative",
3847
4094
  width: "100%",
@@ -3979,7 +4226,7 @@ var CardTicketSearch = ({
3979
4226
  menuItems,
3980
4227
  isLoadingServiceMenu
3981
4228
  }) => {
3982
- const styles = useStyles8();
4229
+ const styles = useStyles9();
3983
4230
  const labels = React__default.default.useMemo(
3984
4231
  () => ({ ...DEFAULT_LABELS8[language], ...customLabels }),
3985
4232
  [language, customLabels]
@@ -4491,7 +4738,7 @@ var DEFAULT_LABELS9 = {
4491
4738
  swapAriaLabel: "Swap origin and destination"
4492
4739
  }
4493
4740
  };
4494
- var useStyles9 = reactComponents.makeStyles({
4741
+ var useStyles10 = reactComponents.makeStyles({
4495
4742
  cardSearchTicket: {
4496
4743
  borderRadius: "32px",
4497
4744
  // borderBottomLeftRadius: '0',
@@ -4573,7 +4820,7 @@ var CardTicketSearchSummary = ({
4573
4820
  showSwapButton = false,
4574
4821
  children
4575
4822
  }) => {
4576
- const styles = useStyles9();
4823
+ const styles = useStyles10();
4577
4824
  const mergedLabels = { ...DEFAULT_LABELS9[language], ...labels };
4578
4825
  const { width } = useWindowSize();
4579
4826
  const getCircularConfig = () => {
@@ -4902,7 +5149,7 @@ var DEFAULT_LABELS10 = {
4902
5149
  popularHarborHeader: "Popular Harbor"
4903
5150
  }
4904
5151
  };
4905
- var useStyles10 = reactComponents.makeStyles({
5152
+ var useStyles11 = reactComponents.makeStyles({
4906
5153
  dialogTitle: {
4907
5154
  display: "flex",
4908
5155
  justifyContent: "space-between",
@@ -5035,7 +5282,7 @@ var ModalSearchHarbor = ({
5035
5282
  popularHarbors,
5036
5283
  showButtonFavorite = true
5037
5284
  }) => {
5038
- const styles = useStyles10();
5285
+ const styles = useStyles11();
5039
5286
  const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
5040
5287
  const handleSelect = (harbor) => {
5041
5288
  onAddLastSearched(harbor);
@@ -5225,7 +5472,7 @@ var DEFAULT_LABELS11 = {
5225
5472
  closeAriaLabel: "Close"
5226
5473
  }
5227
5474
  };
5228
- var useStyles11 = reactComponents.makeStyles({
5475
+ var useStyles12 = reactComponents.makeStyles({
5229
5476
  dialogSurface: {
5230
5477
  maxWidth: "600px",
5231
5478
  width: "100%"
@@ -5345,7 +5592,7 @@ var ModalSelectDate = ({
5345
5592
  dateFormat = "DD MMMM YYYY",
5346
5593
  showRoundtrip = true
5347
5594
  }) => {
5348
- const styles = useStyles11();
5595
+ const styles = useStyles12();
5349
5596
  const mergedLabels = { ...DEFAULT_LABELS11[language], ...labels };
5350
5597
  React.useEffect(() => {
5351
5598
  moment__default.default.locale(language === "id" ? "id" : "en");
@@ -5587,7 +5834,7 @@ var DEFAULT_LABELS12 = {
5587
5834
  closeAriaLabel: "Close"
5588
5835
  }
5589
5836
  };
5590
- var useStyles12 = reactComponents.makeStyles({
5837
+ var useStyles13 = reactComponents.makeStyles({
5591
5838
  dialogSurface: {
5592
5839
  maxWidth: "600px",
5593
5840
  width: "100%"
@@ -5672,7 +5919,7 @@ var ModalService = ({
5672
5919
  isLoading = false,
5673
5920
  isError = false
5674
5921
  }) => {
5675
- const styles = useStyles12();
5922
+ const styles = useStyles13();
5676
5923
  const mergedLabels = { ...DEFAULT_LABELS12[language], ...labels };
5677
5924
  const displayTitle = title || mergedLabels.title;
5678
5925
  const [selectedServices, setSelectedServices] = React.useState(selectedServiceIds);
@@ -5794,7 +6041,7 @@ var DEFAULT_LABELS13 = {
5794
6041
  closeAriaLabel: "Close"
5795
6042
  }
5796
6043
  };
5797
- var useStyles13 = reactComponents.makeStyles({
6044
+ var useStyles14 = reactComponents.makeStyles({
5798
6045
  dialogSurface: {
5799
6046
  maxWidth: "600px",
5800
6047
  width: "100%"
@@ -5874,7 +6121,7 @@ var ModalTotalPassengers = ({
5874
6121
  maxPassengers = 10,
5875
6122
  infoMessage
5876
6123
  }) => {
5877
- const styles = useStyles13();
6124
+ const styles = useStyles14();
5878
6125
  const mergedLabels = { ...DEFAULT_LABELS13[language], ...labels };
5879
6126
  const [passengers, setPassengers] = React.useState([]);
5880
6127
  const [openItems, setOpenItems] = React.useState([]);
@@ -6171,7 +6418,7 @@ var DEFAULT_VEHICLE_ICONS = {
6171
6418
  bigTruck: "/assets/images/icons/big-truck.webp",
6172
6419
  looseLoad: "/assets/images/icons/loose-load.webp"
6173
6420
  };
6174
- var useStyles14 = reactComponents.makeStyles({
6421
+ var useStyles15 = reactComponents.makeStyles({
6175
6422
  dialogSurface: {
6176
6423
  maxWidth: "600px",
6177
6424
  width: "100%"
@@ -6225,7 +6472,7 @@ var ModalTypeOfService = ({
6225
6472
  onSave,
6226
6473
  renderImage
6227
6474
  }) => {
6228
- const styles = useStyles14();
6475
+ const styles = useStyles15();
6229
6476
  const mergedLabels = { ...DEFAULT_LABELS14[language], ...labels };
6230
6477
  const [selectedServiceId, setSelectedServiceId] = React.useState(
6231
6478
  selectedService?.id || 0
@@ -6506,7 +6753,7 @@ var getSortLabel = (value) => {
6506
6753
  const option = DEFAULT_SORT_OPTIONS.find((opt) => opt.value === value);
6507
6754
  return option?.label || "Rekomendasi";
6508
6755
  };
6509
- var useStyles15 = reactComponents.makeStyles({
6756
+ var useStyles16 = reactComponents.makeStyles({
6510
6757
  container: {
6511
6758
  display: "flex",
6512
6759
  width: "100%",
@@ -6542,7 +6789,7 @@ var SortMenu = ({
6542
6789
  sortButtonText: deprecatedSortButtonText,
6543
6790
  clearFiltersText: deprecatedClearFiltersText
6544
6791
  }) => {
6545
- const styles = useStyles15();
6792
+ const styles = useStyles16();
6546
6793
  const labels = React__default.default.useMemo(
6547
6794
  () => ({
6548
6795
  ...DEFAULT_LABELS15[language],
@@ -6718,7 +6965,7 @@ var DEFAULT_DURATION_RANGE = {
6718
6965
  min: 0,
6719
6966
  max: 8
6720
6967
  };
6721
- var useStyles16 = reactComponents.makeStyles({
6968
+ var useStyles17 = reactComponents.makeStyles({
6722
6969
  dialogSurface: {
6723
6970
  maxWidth: "600px",
6724
6971
  width: "100%"
@@ -6828,7 +7075,7 @@ var ModalFilterTicket = ({
6828
7075
  minDuration = DEFAULT_DURATION_RANGE.min,
6829
7076
  maxDuration = DEFAULT_DURATION_RANGE.max
6830
7077
  }) => {
6831
- const styles = useStyles16();
7078
+ const styles = useStyles17();
6832
7079
  const mergedLabels = { ...DEFAULT_LABELS16[language], ...labels };
6833
7080
  const [rangeReady, setRangeReady] = React.useState(false);
6834
7081
  React.useEffect(() => {
@@ -7152,7 +7399,7 @@ var DEFAULT_LABELS17 = {
7152
7399
  }
7153
7400
  };
7154
7401
  var DEFAULT_SCROLL_AMOUNT = 150;
7155
- var useStyles17 = reactComponents.makeStyles({
7402
+ var useStyles18 = reactComponents.makeStyles({
7156
7403
  container: {
7157
7404
  display: "flex",
7158
7405
  alignItems: "stretch",
@@ -7235,7 +7482,7 @@ var DateFilter = ({
7235
7482
  labels,
7236
7483
  isLoading = false
7237
7484
  }) => {
7238
- const styles = useStyles17();
7485
+ const styles = useStyles18();
7239
7486
  const scrollRef = React.useRef(null);
7240
7487
  const mergedLabels = {
7241
7488
  ...DEFAULT_LABELS17[language],
@@ -7361,7 +7608,7 @@ var DEFAULT_FORM_VALUES = {
7361
7608
  typeOfService: "",
7362
7609
  passenger: ""
7363
7610
  };
7364
- var useStyles18 = reactComponents.makeStyles({
7611
+ var useStyles19 = reactComponents.makeStyles({
7365
7612
  dialogSurface: {
7366
7613
  maxWidth: "900px",
7367
7614
  width: "100%"
@@ -7463,7 +7710,7 @@ var ModalSearchTicket = ({
7463
7710
  showRoundTrip = true,
7464
7711
  ...props
7465
7712
  }) => {
7466
- const styles = useStyles18();
7713
+ const styles = useStyles19();
7467
7714
  const mergedLabels = { ...DEFAULT_LABELS18[language], ...labels };
7468
7715
  const { control, setValue, handleSubmit, watch } = reactHookForm.useForm({
7469
7716
  defaultValues: {
@@ -7911,7 +8158,7 @@ var DEFAULT_LABELS19 = {
7911
8158
  ferryIconAlt: "Ferry Icon"
7912
8159
  }
7913
8160
  };
7914
- var useStyles19 = reactComponents.makeStyles({
8161
+ var useStyles20 = reactComponents.makeStyles({
7915
8162
  stepperWrapper: {
7916
8163
  position: "relative",
7917
8164
  width: "100%",
@@ -8036,7 +8283,7 @@ var Stepper = ({
8036
8283
  language = "id",
8037
8284
  labels
8038
8285
  }) => {
8039
- const styles = useStyles19();
8286
+ const styles = useStyles20();
8040
8287
  const mergedLabels = { ...DEFAULT_LABELS19[language], ...labels };
8041
8288
  const currentStepIndex = React.useMemo(() => {
8042
8289
  if (typeof currentStep === "number") {
@@ -8107,7 +8354,7 @@ var DEFAULT_LABELS20 = {
8107
8354
  email: "Email"
8108
8355
  }
8109
8356
  };
8110
- var useStyles20 = reactComponents.makeStyles({
8357
+ var useStyles21 = reactComponents.makeStyles({
8111
8358
  card: {
8112
8359
  padding: "1.5rem",
8113
8360
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -8137,7 +8384,7 @@ var CardOrdererInfo = ({
8137
8384
  labels,
8138
8385
  className
8139
8386
  }) => {
8140
- const styles = useStyles20();
8387
+ const styles = useStyles21();
8141
8388
  const mergedLabels = { ...DEFAULT_LABELS20[language], ...labels };
8142
8389
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
8143
8390
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title3, { children: mergedLabels.title }),
@@ -8189,7 +8436,7 @@ var DEFAULT_LABELS21 = {
8189
8436
  }
8190
8437
  }
8191
8438
  };
8192
- var useStyles21 = reactComponents.makeStyles({
8439
+ var useStyles22 = reactComponents.makeStyles({
8193
8440
  dialogSurface: {
8194
8441
  maxWidth: "600px",
8195
8442
  width: "100%",
@@ -8244,7 +8491,7 @@ var ModalListPassenger = ({
8244
8491
  // sameAsOrderer,
8245
8492
  // onSameAsOrdererChange,
8246
8493
  }) => {
8247
- const styles = useStyles21();
8494
+ const styles = useStyles22();
8248
8495
  const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
8249
8496
  const displayTitle = title || mergedLabels.title;
8250
8497
  const handleClose = () => {
@@ -8500,7 +8747,7 @@ var TYPE_OPTIONS = [
8500
8747
  value: "lainnya"
8501
8748
  }
8502
8749
  ];
8503
- var useStyles22 = reactComponents.makeStyles({
8750
+ var useStyles23 = reactComponents.makeStyles({
8504
8751
  dialogSurface: {
8505
8752
  maxWidth: "600px",
8506
8753
  width: "100%",
@@ -8678,7 +8925,7 @@ var ModalPassengerForm = ({
8678
8925
  ticketClassOptions,
8679
8926
  onScanComplete
8680
8927
  }) => {
8681
- const styles = useStyles22();
8928
+ const styles = useStyles23();
8682
8929
  const mergedLabels = { ...DEFAULT_LABELS22[language], ...labels };
8683
8930
  const mergedErrors = {
8684
8931
  ...DEFAULT_LABELS22[language].errors,
@@ -9433,7 +9680,7 @@ var getBadgeConfig = (ticketClass) => {
9433
9680
  };
9434
9681
  }
9435
9682
  };
9436
- var useStyles23 = reactComponents.makeStyles({
9683
+ var useStyles24 = reactComponents.makeStyles({
9437
9684
  card: {
9438
9685
  padding: "1.5rem",
9439
9686
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -9516,7 +9763,7 @@ var CardPassengerList = ({
9516
9763
  labels,
9517
9764
  className
9518
9765
  }) => {
9519
- const styles = useStyles23();
9766
+ const styles = useStyles24();
9520
9767
  const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
9521
9768
  const displayTitle = title || mergedLabels.defaultTitle;
9522
9769
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: className || styles.card, children: [
@@ -9608,7 +9855,7 @@ var DEFAULT_LABELS24 = {
9608
9855
  noLabel: "No"
9609
9856
  }
9610
9857
  };
9611
- var useStyles24 = reactComponents.makeStyles({
9858
+ var useStyles25 = reactComponents.makeStyles({
9612
9859
  card: {
9613
9860
  padding: "1.5rem",
9614
9861
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -9648,7 +9895,7 @@ var CardVehicleDetail = ({
9648
9895
  language = "id",
9649
9896
  labels
9650
9897
  }) => {
9651
- const styles = useStyles24();
9898
+ const styles = useStyles25();
9652
9899
  const mergedLabels = { ...DEFAULT_LABELS24[language], ...labels };
9653
9900
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
9654
9901
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -9819,7 +10066,7 @@ var DEFAULT_LABELS25 = {
9819
10066
  incrementQuantityAriaLabel: "Increase quantity"
9820
10067
  }
9821
10068
  };
9822
- var useStyles25 = reactComponents.makeStyles({
10069
+ var useStyles26 = reactComponents.makeStyles({
9823
10070
  card: {
9824
10071
  padding: "1.5rem",
9825
10072
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -9887,7 +10134,7 @@ var CardVehicleOwnerForm = ({
9887
10134
  language = "id",
9888
10135
  labels
9889
10136
  }) => {
9890
- const styles = useStyles25();
10137
+ const styles = useStyles26();
9891
10138
  const mergedLabels = { ...DEFAULT_LABELS25[language], ...labels };
9892
10139
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.card, children: [
9893
10140
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.header, children: [
@@ -10702,7 +10949,7 @@ var DEFAULT_LABELS26 = {
10702
10949
  currencySymbol: "IDR"
10703
10950
  }
10704
10951
  };
10705
- var useStyles26 = reactComponents.makeStyles({
10952
+ var useStyles27 = reactComponents.makeStyles({
10706
10953
  container: {
10707
10954
  display: "flex",
10708
10955
  flexDirection: "column",
@@ -10835,7 +11082,7 @@ var CardBookingTicket = ({
10835
11082
  onPrevious,
10836
11083
  className
10837
11084
  }) => {
10838
- const styles = useStyles26();
11085
+ const styles = useStyles27();
10839
11086
  const mergedLabels = { ...DEFAULT_LABELS26[language], ...labels };
10840
11087
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${styles.container} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.bookingDetail, children: [
10841
11088
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.bookingDetailTop, children: [
@@ -11028,7 +11275,7 @@ var DEFAULT_FAQ_ITEMS = {
11028
11275
  }
11029
11276
  ]
11030
11277
  };
11031
- var useStyles27 = reactComponents.makeStyles({
11278
+ var useStyles28 = reactComponents.makeStyles({
11032
11279
  faqSection: {
11033
11280
  // marginTop: '2rem', // Let parent control spacing if needed, or keep consistent
11034
11281
  },
@@ -11052,7 +11299,7 @@ var CardFAQ = ({
11052
11299
  items,
11053
11300
  className
11054
11301
  }) => {
11055
- const styles = useStyles27();
11302
+ const styles = useStyles28();
11056
11303
  const mergedLabels = { ...DEFAULT_LABELS27[language], ...labels };
11057
11304
  const faqItems = items || DEFAULT_FAQ_ITEMS[language];
11058
11305
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: styles.faqCard, children: [
@@ -11106,7 +11353,7 @@ var DEFAULT_LABELS28 = {
11106
11353
  currencySymbol: "Rp"
11107
11354
  }
11108
11355
  };
11109
- var useStyles28 = reactComponents.makeStyles({
11356
+ var useStyles29 = reactComponents.makeStyles({
11110
11357
  card: {
11111
11358
  backgroundColor: reactComponents.tokens.colorNeutralBackground1,
11112
11359
  boxShadow: reactComponents.tokens.shadow4,
@@ -11279,7 +11526,7 @@ var CardAddon = ({
11279
11526
  children,
11280
11527
  className
11281
11528
  }) => {
11282
- const styles = useStyles28();
11529
+ const styles = useStyles29();
11283
11530
  const mergedLabels = { ...DEFAULT_LABELS28[language], ...labels };
11284
11531
  return /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.gapRow, children: [
11285
11532
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.titleDivider, children: [
@@ -11507,7 +11754,7 @@ var DEFAULT_LABELS29 = {
11507
11754
  searchPlaceholder: "Search for food or drinks you want"
11508
11755
  }
11509
11756
  };
11510
- var useStyles29 = reactComponents.makeStyles({
11757
+ var useStyles30 = reactComponents.makeStyles({
11511
11758
  container: {
11512
11759
  display: "flex",
11513
11760
  flexDirection: "column",
@@ -11651,7 +11898,7 @@ var CardMealCatalog = ({
11651
11898
  searchValue,
11652
11899
  onSearchChange
11653
11900
  }) => {
11654
- const styles = useStyles29();
11901
+ const styles = useStyles30();
11655
11902
  const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
11656
11903
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
11657
11904
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.banner, children: [
@@ -11765,7 +12012,7 @@ var DEFAULT_LABELS30 = {
11765
12012
  defaultTitle: "Review"
11766
12013
  }
11767
12014
  };
11768
- var useStyles30 = reactComponents.makeStyles({
12015
+ var useStyles31 = reactComponents.makeStyles({
11769
12016
  card: {
11770
12017
  padding: "1.5rem",
11771
12018
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -11816,7 +12063,7 @@ var CardReview = ({
11816
12063
  className,
11817
12064
  headerAction
11818
12065
  }) => {
11819
- const styles = useStyles30();
12066
+ const styles = useStyles31();
11820
12067
  const mergedLabels = { ...DEFAULT_LABELS30[language], ...labels };
11821
12068
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
11822
12069
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerContainer, children: [
@@ -11874,7 +12121,7 @@ var DEFAULT_LABELS31 = {
11874
12121
  idNumber: "ID Number"
11875
12122
  }
11876
12123
  };
11877
- var useStyles31 = reactComponents.makeStyles({
12124
+ var useStyles32 = reactComponents.makeStyles({
11878
12125
  card: {
11879
12126
  padding: "1.5rem",
11880
12127
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -11972,7 +12219,7 @@ var CardReviewPassenger = ({
11972
12219
  passengers,
11973
12220
  className
11974
12221
  }) => {
11975
- const styles = useStyles31();
12222
+ const styles = useStyles32();
11976
12223
  const mergedLabels = { ...DEFAULT_LABELS31[language], ...labels };
11977
12224
  const displayTitle = title || mergedLabels.title;
11978
12225
  return /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Card, { className: `${styles.card} ${className || ""}`, children: [
@@ -12052,7 +12299,7 @@ var DEFAULT_LABELS32 = {
12052
12299
  currencyPrefix: "Rp. "
12053
12300
  }
12054
12301
  };
12055
- var useStyles32 = reactComponents.makeStyles({
12302
+ var useStyles33 = reactComponents.makeStyles({
12056
12303
  list: {
12057
12304
  margin: 0,
12058
12305
  padding: 0,
@@ -12074,11 +12321,11 @@ var PriceDetailsTerms = ({
12074
12321
  language = "id",
12075
12322
  labels
12076
12323
  }) => {
12077
- const styles = useStyles32();
12324
+ const styles = useStyles33();
12078
12325
  const linkColor = reactComponents.tokens.colorBrandBackground;
12079
12326
  const bookingTerms = labels.bookingTerms;
12080
12327
  const agreementTerms = [
12081
- /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/terms-and-conditions", style: { color: linkColor }, children: labels.agreementLinkFerizy }) }),
12328
+ /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/term-condition", style: { color: linkColor }, children: labels.agreementLinkFerizy }) }),
12082
12329
  /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12083
12330
  labels.agreementCovidInfo,
12084
12331
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Link, { href: "/surat-edaran-satgas-covid-19", style: { color: linkColor }, children: labels.agreementCovidLink })
@@ -12094,7 +12341,7 @@ var PriceDetailsTerms = ({
12094
12341
  ] })
12095
12342
  ] });
12096
12343
  };
12097
- var useStyles33 = reactComponents.makeStyles({
12344
+ var useStyles34 = reactComponents.makeStyles({
12098
12345
  card: {
12099
12346
  padding: "1.5rem",
12100
12347
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -12171,7 +12418,7 @@ var CardPriceDetails = ({
12171
12418
  total,
12172
12419
  labels
12173
12420
  }) => {
12174
- const styles = useStyles33();
12421
+ const styles = useStyles34();
12175
12422
  const mergedLabels = { ...DEFAULT_LABELS32[language], ...labels };
12176
12423
  const displayTitle = title || mergedLabels.defaultTitle;
12177
12424
  const getVariantClass = (variant) => {
@@ -12239,7 +12486,7 @@ var DEFAULT_LABELS33 = {
12239
12486
  selectAriaLabel: "Select payment method"
12240
12487
  }
12241
12488
  };
12242
- var useStyles34 = reactComponents.makeStyles({
12489
+ var useStyles35 = reactComponents.makeStyles({
12243
12490
  container: {
12244
12491
  display: "flex",
12245
12492
  flexDirection: "column",
@@ -12299,7 +12546,7 @@ var CardPaymentMethodList = ({
12299
12546
  selectedValue,
12300
12547
  onSelect
12301
12548
  }) => {
12302
- const styles = useStyles34();
12549
+ const styles = useStyles35();
12303
12550
  const mergedLabels = { ...DEFAULT_LABELS33[language], ...labels };
12304
12551
  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: [
12305
12552
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, {}) }),
@@ -12357,7 +12604,7 @@ var DEFAULT_LABELS34 = {
12357
12604
  title: "Payment Method"
12358
12605
  }
12359
12606
  };
12360
- var useStyles35 = reactComponents.makeStyles({
12607
+ var useStyles36 = reactComponents.makeStyles({
12361
12608
  container: {
12362
12609
  display: "flex",
12363
12610
  flexDirection: "column",
@@ -12394,7 +12641,7 @@ var CardPaymentGuide = ({
12394
12641
  guides,
12395
12642
  className
12396
12643
  }) => {
12397
- const styles = useStyles35();
12644
+ const styles = useStyles36();
12398
12645
  const mergedLabels = { ...DEFAULT_LABELS34[language], ...labels };
12399
12646
  const displayTitle = title || mergedLabels.title;
12400
12647
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles.container} ${className || ""}`, children: [
@@ -12432,7 +12679,7 @@ var DEFAULT_LABELS35 = {
12432
12679
  currencySymbol: "Rp."
12433
12680
  }
12434
12681
  };
12435
- var useStyles36 = reactComponents.makeStyles({
12682
+ var useStyles37 = reactComponents.makeStyles({
12436
12683
  container: {
12437
12684
  display: "flex",
12438
12685
  flexDirection: "column",
@@ -12514,7 +12761,7 @@ var CardPaymentInfo = ({
12514
12761
  onCopyVA,
12515
12762
  onCheckStatus
12516
12763
  }) => {
12517
- const styles = useStyles36();
12764
+ const styles = useStyles37();
12518
12765
  const mergedLabels = { ...DEFAULT_LABELS35[language], ...labels };
12519
12766
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.card, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.container, children: [
12520
12767
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.headerRow, children: [
@@ -12603,7 +12850,7 @@ var DEFAULT_LABELS36 = {
12603
12850
  illustrationAlt: "E-Ticket Illustration"
12604
12851
  }
12605
12852
  };
12606
- var useStyles37 = reactComponents.makeStyles({
12853
+ var useStyles38 = reactComponents.makeStyles({
12607
12854
  activeCard: {
12608
12855
  width: "100%",
12609
12856
  // padding: tokens.spacingHorizontalNone, // default
@@ -12673,7 +12920,7 @@ var CardStatusOrder = ({
12673
12920
  onClickViewTicket,
12674
12921
  className
12675
12922
  }) => {
12676
- const styles = useStyles37();
12923
+ const styles = useStyles38();
12677
12924
  const mergedLabels = { ...DEFAULT_LABELS36[language], ...labels };
12678
12925
  const displayStatus = statusLabel || mergedLabels.defaultStatus;
12679
12926
  const displayTitle = title || mergedLabels.defaultTitle;
@@ -12797,7 +13044,7 @@ var DEFAULT_LABELS37 = {
12797
13044
  closeAriaLabel: "Close"
12798
13045
  }
12799
13046
  };
12800
- var useStyles38 = reactComponents.makeStyles({
13047
+ var useStyles39 = reactComponents.makeStyles({
12801
13048
  surface: {
12802
13049
  width: "680px",
12803
13050
  maxWidth: "90vw",
@@ -12924,7 +13171,7 @@ var ModalPriceDetail = ({
12924
13171
  grandTotal,
12925
13172
  ...props
12926
13173
  }) => {
12927
- const styles = useStyles38();
13174
+ const styles = useStyles39();
12928
13175
  const mergedLabels = { ...DEFAULT_LABELS37[language], ...labels };
12929
13176
  return /* @__PURE__ */ jsxRuntime.jsx(
12930
13177
  reactComponents.Dialog,
@@ -13083,7 +13330,7 @@ var DEFAULT_LABELS38 = {
13083
13330
  requiredError: "is required"
13084
13331
  }
13085
13332
  };
13086
- var useStyles39 = reactComponents.makeStyles({
13333
+ var useStyles40 = reactComponents.makeStyles({
13087
13334
  surface: {
13088
13335
  maxWidth: "90vw",
13089
13336
  maxHeight: "90vh",
@@ -13110,7 +13357,7 @@ var ModalPreviewImage = ({
13110
13357
  imageUrl,
13111
13358
  alt = "Preview"
13112
13359
  }) => {
13113
- const styles = useStyles39();
13360
+ const styles = useStyles40();
13114
13361
  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: [
13115
13362
  /* @__PURE__ */ jsxRuntime.jsx(
13116
13363
  reactComponents.DialogTitle,
@@ -13623,7 +13870,7 @@ var DEFAULT_LABELS39 = {
13623
13870
  id: {},
13624
13871
  en: {}
13625
13872
  };
13626
- var useStyles40 = reactComponents.makeStyles({
13873
+ var useStyles41 = reactComponents.makeStyles({
13627
13874
  container: {
13628
13875
  display: "flex",
13629
13876
  flexDirection: "column",
@@ -13683,7 +13930,7 @@ var CardProfileMenu = ({
13683
13930
  selectedValue,
13684
13931
  onTabSelect
13685
13932
  }) => {
13686
- const styles = useStyles40();
13933
+ const styles = useStyles41();
13687
13934
  ({ ...DEFAULT_LABELS39[language], ...labels });
13688
13935
  const handleTabSelect = (_, data) => {
13689
13936
  onTabSelect(data.value);
@@ -13712,185 +13959,6 @@ var CardProfileMenu = ({
13712
13959
  }
13713
13960
  ) });
13714
13961
  };
13715
- var BP_TABLET2 = `max-width: ${extendedTokens.breakpointXl}`;
13716
- var BP_MOBILE2 = `max-width: ${extendedTokens.breakpointMd}`;
13717
- var useStyles41 = reactComponents.makeStyles({
13718
- dialogSurface: {
13719
- maxWidth: "900px",
13720
- width: "100%"
13721
- },
13722
- closeButton: {
13723
- minWidth: "32px",
13724
- minHeight: "32px"
13725
- },
13726
- content: {
13727
- paddingTop: "8px",
13728
- paddingBottom: "16px"
13729
- },
13730
- // Horizontal row layout: icon left, text right — same as CardServiceMenu desktop
13731
- menuItem: {
13732
- display: "flex",
13733
- flexDirection: "row",
13734
- alignItems: "center",
13735
- justifyContent: "flex-start",
13736
- padding: "12px 16px",
13737
- borderRadius: reactComponents.tokens.borderRadiusMedium,
13738
- cursor: "pointer",
13739
- textAlign: "left",
13740
- transition: "background-color 0.2s ease",
13741
- color: reactComponents.tokens.colorNeutralForeground1,
13742
- backgroundColor: reactComponents.tokens.colorNeutralBackground1,
13743
- border: "none",
13744
- gap: "12px",
13745
- width: "100%",
13746
- "&:hover": {
13747
- backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
13748
- },
13749
- [`@media (${BP_TABLET2})`]: {
13750
- padding: "10px 10px",
13751
- gap: "8px"
13752
- },
13753
- [`@media (${BP_MOBILE2})`]: {
13754
- flexDirection: "column",
13755
- alignItems: "center",
13756
- textAlign: "center",
13757
- padding: "8px 6px",
13758
- gap: "4px"
13759
- }
13760
- },
13761
- logoWrapper: {
13762
- display: "flex",
13763
- alignItems: "center",
13764
- justifyContent: "center",
13765
- flexShrink: 0
13766
- },
13767
- logo: {
13768
- height: "32px",
13769
- width: "32px",
13770
- flexShrink: 0,
13771
- objectFit: "contain",
13772
- [`@media (${BP_TABLET2})`]: {
13773
- height: "28px",
13774
- width: "28px"
13775
- },
13776
- [`@media (${BP_MOBILE2})`]: {
13777
- height: "24px",
13778
- width: "24px"
13779
- }
13780
- },
13781
- textContent: {
13782
- display: "flex",
13783
- flexDirection: "column",
13784
- gap: "2px",
13785
- minWidth: 0,
13786
- width: "100%",
13787
- [`@media (${BP_MOBILE2})`]: {
13788
- alignItems: "center"
13789
- }
13790
- },
13791
- label: {
13792
- fontSize: reactComponents.tokens.fontSizeBase300,
13793
- fontWeight: reactComponents.tokens.fontWeightSemibold,
13794
- lineHeight: "1.2",
13795
- whiteSpace: "nowrap",
13796
- overflow: "hidden",
13797
- textOverflow: "ellipsis",
13798
- width: "100%",
13799
- [`@media (${BP_TABLET2})`]: {
13800
- fontSize: reactComponents.tokens.fontSizeBase200
13801
- },
13802
- [`@media (${BP_MOBILE2})`]: {
13803
- fontSize: reactComponents.tokens.fontSizeBase100,
13804
- textAlign: "center"
13805
- }
13806
- },
13807
- description: {
13808
- fontSize: reactComponents.tokens.fontSizeBase200,
13809
- fontWeight: reactComponents.tokens.fontWeightRegular,
13810
- color: reactComponents.tokens.colorNeutralForeground2,
13811
- display: "-webkit-box",
13812
- WebkitLineClamp: 2,
13813
- WebkitBoxOrient: "vertical",
13814
- overflow: "hidden",
13815
- textOverflow: "ellipsis",
13816
- lineHeight: "1.4",
13817
- [`@media (${BP_TABLET2})`]: {
13818
- fontSize: reactComponents.tokens.fontSizeBase100,
13819
- WebkitLineClamp: 1
13820
- },
13821
- [`@media (${BP_MOBILE2})`]: {
13822
- display: "none"
13823
- }
13824
- }
13825
- });
13826
- var ModalListMenuService = ({
13827
- open = false,
13828
- onClose = () => {
13829
- },
13830
- title = "",
13831
- menuItems = ALIAS_MENU_ITEMS,
13832
- onItemClick,
13833
- showDescriptions = true
13834
- }) => {
13835
- const styles = useStyles41();
13836
- return /* @__PURE__ */ jsxRuntime.jsx(
13837
- reactComponents.Dialog,
13838
- {
13839
- open,
13840
- onOpenChange: (_, data) => {
13841
- if (!data.open) {
13842
- onClose();
13843
- }
13844
- },
13845
- children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogSurface, { className: styles.dialogSurface, children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
13846
- /* @__PURE__ */ jsxRuntime.jsx(
13847
- reactComponents.DialogTitle,
13848
- {
13849
- action: /* @__PURE__ */ jsxRuntime.jsx(
13850
- reactComponents.Button,
13851
- {
13852
- appearance: "subtle",
13853
- "aria-label": "close",
13854
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:dismiss-24-regular" }),
13855
- onClick: onClose,
13856
- className: styles.closeButton
13857
- }
13858
- ),
13859
- children: title
13860
- }
13861
- ),
13862
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { gutterWidth: 0, children: menuItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { xs: 6, sm: 6, md: 3, lg: 3, children: /* @__PURE__ */ jsxRuntime.jsxs(
13863
- reactComponents.Button,
13864
- {
13865
- className: styles.menuItem,
13866
- onClick: () => onItemClick?.(item),
13867
- "aria-label": item.name,
13868
- children: [
13869
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.logoWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(
13870
- "img",
13871
- {
13872
- src: item.imageUrl,
13873
- alt: item.name,
13874
- className: styles.logo
13875
- }
13876
- ) }),
13877
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
13878
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
13879
- showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
13880
- MenuItemDescription,
13881
- {
13882
- description: item.description,
13883
- className: styles.description
13884
- }
13885
- )
13886
- ] })
13887
- ]
13888
- }
13889
- ) }, item.id)) }) })
13890
- ] }) })
13891
- }
13892
- );
13893
- };
13894
13962
 
13895
13963
  exports.API_CONFIG = API_CONFIG;
13896
13964
  exports.API_ENDPOINTS = API_ENDPOINTS;