@asdp/ferryui 0.1.22-dev.8990 → 0.1.22-dev.9111

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
@@ -344,6 +344,128 @@ var extendedTokens = {
344
344
  colorBrandForegroundLinkHover: customBrand[120],
345
345
  colorBrandForegroundLinkPressed: customBrand[130],
346
346
  colorBrandForegroundLinkSelected: customBrand[110]});
347
+
348
+ // src/constants/api.ts
349
+ var API_ENDPOINTS = {
350
+ PORTS: {
351
+ ORIGIN: "/v1/surrounding/catalog/ports/list/origin",
352
+ DESTINATION: "/v1/surrounding/catalog/ports/list/destination"
353
+ },
354
+ SERVICES: {
355
+ LIST: "/v1/surrounding/catalog/service-types"
356
+ },
357
+ PASSENGERS: {
358
+ LIST: "/v1/surrounding/catalog/passenger-types"
359
+ },
360
+ // Authentication endpoints
361
+ AUTH: {
362
+ LOGIN: "/v1/surrounding/auth/login",
363
+ REGISTER: "/auth/register",
364
+ LOGOUT: "/auth/logout",
365
+ REFRESH: "/auth/refresh",
366
+ PROFILE: "/auth/profile",
367
+ UPDATE_PROFILE: "/auth/profile",
368
+ CHANGE_PASSWORD: "/auth/change-password",
369
+ FORGOT_PASSWORD: "/auth/forgot-password",
370
+ RESET_PASSWORD: "/auth/reset-password",
371
+ VERIFY_EMAIL: "/auth/verify-email"
372
+ },
373
+ // User management
374
+ USERS: {
375
+ LIST: "/users",
376
+ CREATE: "/users",
377
+ DETAIL: (id) => `/users/${id}`,
378
+ UPDATE: (id) => `/users/${id}`,
379
+ DELETE: (id) => `/users/${id}`,
380
+ AVATAR: (id) => `/users/${id}/avatar`
381
+ },
382
+ // File management
383
+ FILES: {
384
+ UPLOAD: "/files/upload",
385
+ DOWNLOAD: (id) => `/files/${id}/download`,
386
+ DELETE: (id) => `/files/${id}`,
387
+ LIST: "/files"
388
+ },
389
+ // Dashboard/Analytics
390
+ DASHBOARD: {
391
+ STATS: "/dashboard/stats",
392
+ CHART_DATA: "/dashboard/chart-data",
393
+ RECENT_ACTIVITIES: "/dashboard/recent-activities"
394
+ },
395
+ // Notifications
396
+ NOTIFICATIONS: {
397
+ LIST: "/notifications",
398
+ MARK_READ: (id) => `/notifications/${id}/read`,
399
+ MARK_ALL_READ: "/notifications/read-all",
400
+ DELETE: (id) => `/notifications/${id}`,
401
+ SETTINGS: "/notifications/settings"
402
+ },
403
+ // Settings
404
+ SETTINGS: {
405
+ GENERAL: "/settings/general",
406
+ SECURITY: "/settings/security",
407
+ PREFERENCES: "/settings/preferences"
408
+ }
409
+ };
410
+ var API_CONFIG = {
411
+ TIMEOUT: 3e4,
412
+ RETRY_ATTEMPTS: 3,
413
+ RETRY_DELAY: 1e3,
414
+ CACHE_TIME: 5 * 60 * 1e3,
415
+ // 5 minutes
416
+ STALE_TIME: 2 * 60 * 1e3
417
+ // 2 minutes
418
+ };
419
+ var API_ERROR_MESSAGES = {
420
+ NETWORK_ERROR: "Network error occurred. Please check your connection.",
421
+ TIMEOUT_ERROR: "Request timeout. Please try again.",
422
+ UNAUTHORIZED: "You are not authorized to perform this action.",
423
+ FORBIDDEN: "Access denied.",
424
+ NOT_FOUND: "Resource not found.",
425
+ SERVER_ERROR: "Internal server error. Please try again later.",
426
+ VALIDATION_ERROR: "Please check your input and try again.",
427
+ TOKEN_EXPIRED: "Your session has expired. Please login again.",
428
+ RATE_LIMIT: "Too many requests. Please try again later."
429
+ };
430
+ var HTTP_STATUS = {
431
+ OK: 200,
432
+ CREATED: 201,
433
+ NO_CONTENT: 204,
434
+ BAD_REQUEST: 400,
435
+ UNAUTHORIZED: 401,
436
+ FORBIDDEN: 403,
437
+ NOT_FOUND: 404,
438
+ CONFLICT: 409,
439
+ UNPROCESSABLE_ENTITY: 422,
440
+ TOO_MANY_REQUESTS: 429,
441
+ INTERNAL_SERVER_ERROR: 500,
442
+ BAD_GATEWAY: 502,
443
+ SERVICE_UNAVAILABLE: 503
444
+ };
445
+ var PASSENGER_TYPE = {
446
+ ADULT: 1,
447
+ CHILD: 2,
448
+ INFANT: 3,
449
+ ELDERLY: 5
450
+ };
451
+ var IDENTITY_TYPE = {
452
+ KTP: 1,
453
+ SIM: 2,
454
+ PSP: 3,
455
+ TGL: 4
456
+ };
457
+ var LOAD_TYPE = {
458
+ PEDESTRIAN: 1,
459
+ MOTORBIKE: 2,
460
+ PASSENGER_VEHICLE: 3,
461
+ GOODS_VEHICLE: 4,
462
+ LOOSE_LOAD_WITH_VEHICLE: 5,
463
+ LOOSE_LOAD_WITHOUT_VEHICLE: 6
464
+ };
465
+ var GENDER = {
466
+ MALE: "M",
467
+ FEMALE: "F"
468
+ };
347
469
  var useStyles2 = reactComponents.makeStyles({
348
470
  carousel: {},
349
471
  carouselContainer: {
@@ -933,6 +1055,15 @@ var DEFAULT_LABELS5 = {
933
1055
  logoAlt: "ASDP Logo"
934
1056
  }
935
1057
  };
1058
+
1059
+ // src/utils/format.ts
1060
+ function formatDuration(minutes) {
1061
+ const hours = Math.floor(minutes / 60);
1062
+ const mins = minutes % 60;
1063
+ if (hours && mins) return `${hours} jam ${mins} menit`;
1064
+ if (hours) return `${hours} jam`;
1065
+ return `${mins} menit`;
1066
+ }
936
1067
  var useStyles5 = reactComponents.makeStyles({
937
1068
  dividerContainer: {
938
1069
  position: "relative",
@@ -970,12 +1101,12 @@ var useStyles5 = reactComponents.makeStyles({
970
1101
  },
971
1102
  circularLeft: {
972
1103
  position: "absolute",
973
- width: "100px",
974
- height: "50px",
1104
+ width: "80px",
1105
+ height: "80px",
975
1106
  borderRadius: "50%",
976
1107
  backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover,
977
- left: "-50px",
978
- boxShadow: "inset -3px 0px 1px rgba(0, 0, 0, 0.1)"
1108
+ left: "-50px"
1109
+ // boxShadow: "inset -3px 0px 1px rgba(0, 0, 0, 0.1)",
979
1110
  },
980
1111
  ticketMiddleCard: {
981
1112
  width: "100%",
@@ -1080,12 +1211,12 @@ var useStyles5 = reactComponents.makeStyles({
1080
1211
  },
1081
1212
  circularRight: {
1082
1213
  position: "absolute",
1083
- width: "100px",
1084
- height: "50px",
1214
+ width: "80px",
1215
+ height: "80px",
1085
1216
  borderRadius: "50%",
1086
1217
  backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover,
1087
- right: "-50px",
1088
- boxShadow: "inset 3px 0px 1px rgba(0, 0, 0, 0.1)"
1218
+ right: "-50px"
1219
+ // boxShadow: "inset 3px 0px 1px rgba(0, 0, 0, 0.1)",
1089
1220
  },
1090
1221
  ticketWrapper: {
1091
1222
  borderRadius: reactComponents.tokens.borderRadiusXLarge,
@@ -1131,21 +1262,8 @@ var useStyles5 = reactComponents.makeStyles({
1131
1262
  var CardTicket = ({
1132
1263
  language = "id",
1133
1264
  labels,
1134
- id,
1135
- shipName,
1136
- shipType,
1137
- shipTypeColor = "success",
1138
- tooltipCaption = "",
1139
- availableSeats,
1140
- departureDay,
1141
- departureTime,
1142
- departureLocation,
1143
- arrivalDay,
1144
- arrivalTime,
1145
- arrivalLocation,
1146
- duration,
1147
- facilities,
1148
- totalPrice,
1265
+ routeItem,
1266
+ departureItem,
1149
1267
  buttonText,
1150
1268
  onPriceDetailClick,
1151
1269
  onPolicyClick,
@@ -1155,8 +1273,8 @@ var CardTicket = ({
1155
1273
  const { width } = useWindowSize();
1156
1274
  const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
1157
1275
  const getCircularVerticalConfig = () => {
1158
- if (width <= 1600) return { count: 6, spacing: 60, top: 10 };
1159
- return { count: 5, spacing: 60, top: 18 };
1276
+ if (width <= 1600) return { count: 3, spacing: 120, top: 25 };
1277
+ return { count: 3, spacing: 100, top: 25 };
1160
1278
  };
1161
1279
  const circularVerticalConfig = getCircularVerticalConfig();
1162
1280
  return /* @__PURE__ */ jsxRuntime.jsxs(reactGridSystem.Row, { className: styles.ticketWrapper, children: [
@@ -1191,7 +1309,7 @@ var CardTicket = ({
1191
1309
  children: /* @__PURE__ */ jsxRuntime.jsx(
1192
1310
  reactComponents.Tooltip,
1193
1311
  {
1194
- content: tooltipCaption,
1312
+ content: departureItem?.provider?.description,
1195
1313
  relationship: "label",
1196
1314
  appearance: "inverted",
1197
1315
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1199,11 +1317,11 @@ var CardTicket = ({
1199
1317
  {
1200
1318
  size: "large",
1201
1319
  appearance: "filled",
1202
- color: shipTypeColor,
1320
+ style: { backgroundColor: departureItem?.provider?.serviceColor },
1203
1321
  iconPosition: "before",
1204
1322
  shape: "rounded",
1205
1323
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:info-24-regular" }),
1206
- children: shipType
1324
+ children: departureItem?.provider?.service
1207
1325
  }
1208
1326
  )
1209
1327
  }
@@ -1228,7 +1346,7 @@ var CardTicket = ({
1228
1346
  children: /* @__PURE__ */ jsxRuntime.jsx(
1229
1347
  "img",
1230
1348
  {
1231
- src: "/assets/logo/asdp-default.svg",
1349
+ src: departureItem?.provider?.logo,
1232
1350
  className: styles.asdpLogo,
1233
1351
  alt: mergedLabels.logoAlt,
1234
1352
  height: 56,
@@ -1257,17 +1375,17 @@ var CardTicket = ({
1257
1375
  {
1258
1376
  size: "large",
1259
1377
  style: {
1260
- color: availableSeats > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1378
+ color: departureItem?.availableTicket > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1261
1379
  },
1262
1380
  appearance: "tint",
1263
- color: availableSeats > 50 ? "success" : "danger",
1381
+ color: departureItem?.availableTicket > 50 ? "success" : "danger",
1264
1382
  iconPosition: "after",
1265
1383
  shape: "rounded",
1266
1384
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
1267
1385
  children: [
1268
1386
  mergedLabels.availableSeatsLabel,
1269
1387
  " ",
1270
- availableSeats
1388
+ departureItem?.availableTicket
1271
1389
  ]
1272
1390
  }
1273
1391
  )
@@ -1284,7 +1402,7 @@ var CardTicket = ({
1284
1402
  xl: 12,
1285
1403
  xxl: 12,
1286
1404
  xxxl: 12,
1287
- children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle2, { children: shipName })
1405
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle2, { children: departureItem?.provider?.name })
1288
1406
  }
1289
1407
  )
1290
1408
  ] }),
@@ -1324,46 +1442,42 @@ var CardTicket = ({
1324
1442
  {
1325
1443
  size: "extra-large",
1326
1444
  style: {
1327
- color: availableSeats > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1445
+ color: departureItem?.availableTicket > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1328
1446
  },
1329
1447
  appearance: "tint",
1330
- color: availableSeats > 50 ? "success" : "danger",
1448
+ color: departureItem?.availableTicket > 50 ? "success" : "danger",
1331
1449
  iconPosition: "after",
1332
1450
  shape: "rounded",
1333
1451
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
1334
1452
  children: [
1335
1453
  mergedLabels.availableSeatsLabel,
1336
1454
  " ",
1337
- availableSeats
1455
+ departureItem?.availableTicket
1338
1456
  ]
1339
1457
  }
1340
1458
  ) }),
1341
1459
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketInfo, children: [
1342
1460
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketTime, children: [
1343
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: departureDay }),
1344
- /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Title2, { children: [
1345
- departureTime,
1346
- " ",
1347
- mergedLabels.timezoneLabel
1348
- ] }),
1349
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: departureLocation })
1461
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: "KAMIS" }),
1462
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Title2, { children: departureItem?.departureTime }),
1463
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: routeItem?.portFrom + ", " + routeItem?.branchFrom })
1350
1464
  ] }),
1351
1465
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketDuration, children: [
1352
1466
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Caption2, { children: [
1353
1467
  mergedLabels.estimationPrefix,
1354
1468
  " ",
1355
- duration
1469
+ formatDuration(departureItem?.estimatedSailingMinute)
1356
1470
  ] }),
1357
1471
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Divider, { children: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:vehicle-ship-24-regular", height: 24 }) }) })
1358
1472
  ] }),
1359
1473
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketTime, children: [
1360
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: arrivalDay }),
1474
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: "KAMIS" }),
1361
1475
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Title2, { children: [
1362
- arrivalTime,
1476
+ departureItem?.arrivedTime,
1363
1477
  " ",
1364
1478
  mergedLabels.timezoneLabel
1365
1479
  ] }),
1366
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: arrivalLocation })
1480
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: routeItem?.portTo + ", " + routeItem?.branchTo })
1367
1481
  ] })
1368
1482
  ] }) }),
1369
1483
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketButtons, children: [
@@ -1379,7 +1493,7 @@ var CardTicket = ({
1379
1493
  },
1380
1494
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:money-24-regular" }),
1381
1495
  size: "medium",
1382
- onClick: onPriceDetailClick,
1496
+ onClick: () => onPriceDetailClick(departureItem?.billingDetail, departureItem?.provider),
1383
1497
  children: mergedLabels.priceDetailsButton
1384
1498
  }
1385
1499
  ),
@@ -1437,9 +1551,7 @@ var CardTicket = ({
1437
1551
  children: [
1438
1552
  mergedLabels.currencySymbol,
1439
1553
  "\xA0",
1440
- totalPrice.toLocaleString(
1441
- language === "id" ? "id-ID" : "en-US"
1442
- )
1554
+ departureItem?.billingDetail?.total?.formatted
1443
1555
  ]
1444
1556
  }
1445
1557
  )
@@ -1461,7 +1573,7 @@ var CardTicket = ({
1461
1573
  ] }),
1462
1574
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.facilitiesSection, children: [
1463
1575
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle2, { children: mergedLabels.facilitiesLabel }),
1464
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.facilitiesList, children: facilities.map((facility, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.facilityItem, children: [
1576
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.facilitiesList, children: departureItem?.provider?.facilities.map((facility, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.facilityItem, children: [
1465
1577
  /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:checkmark-circle-24-filled" }),
1466
1578
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1Strong, { children: facility })
1467
1579
  ] }, idx)) })
@@ -1799,6 +1911,12 @@ var useStyles6 = reactComponents.makeStyles({
1799
1911
  fontSize: reactComponents.tokens.fontSizeBase200,
1800
1912
  fontWeight: reactComponents.tokens.fontWeightRegular,
1801
1913
  color: reactComponents.tokens.colorNeutralForeground2,
1914
+ // truncate text with ellipsis 2 line
1915
+ display: "-webkit-box",
1916
+ WebkitLineClamp: 2,
1917
+ WebkitBoxOrient: "vertical",
1918
+ overflow: "hidden",
1919
+ textOverflow: "ellipsis",
1802
1920
  lineHeight: "1.4",
1803
1921
  "@media (max-width: 1200px)": {
1804
1922
  fontSize: reactComponents.tokens.fontSizeBase100,
@@ -1840,10 +1958,23 @@ var CardServiceMenu = ({
1840
1958
  onClick: () => onServiceClick?.(item.id),
1841
1959
  "aria-label": item.name,
1842
1960
  children: [
1843
- /* @__PURE__ */ jsxRuntime.jsx("img", { src: item.imageUrl, alt: item.name, className: styles.logo }),
1961
+ /* @__PURE__ */ jsxRuntime.jsx(
1962
+ "img",
1963
+ {
1964
+ src: item.imageUrl,
1965
+ alt: item.name,
1966
+ className: styles.logo
1967
+ }
1968
+ ),
1844
1969
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.textContent, children: [
1845
1970
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.label, children: item.name }),
1846
- showDescriptions && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.description, children: item.description })
1971
+ showDescriptions && /* @__PURE__ */ jsxRuntime.jsx(
1972
+ MenuItemDescription,
1973
+ {
1974
+ description: item.description,
1975
+ className: styles.description
1976
+ }
1977
+ )
1847
1978
  ] })
1848
1979
  ]
1849
1980
  }
@@ -1855,6 +1986,40 @@ var CardServiceMenu = ({
1855
1986
  ] }, item.id);
1856
1987
  }) }) });
1857
1988
  };
1989
+ function useIsClamped(deps) {
1990
+ const ref = React5.useRef(null);
1991
+ const [isClamped, setIsClamped] = React5.useState(false);
1992
+ React5.useEffect(() => {
1993
+ const el = ref.current;
1994
+ if (!el) return;
1995
+ const check = () => setIsClamped(el.scrollHeight > el.clientHeight);
1996
+ const timer = setTimeout(check, 0);
1997
+ const observer = new ResizeObserver(check);
1998
+ observer.observe(el);
1999
+ return () => {
2000
+ clearTimeout(timer);
2001
+ observer.disconnect();
2002
+ };
2003
+ }, deps ?? []);
2004
+ return { ref, isClamped };
2005
+ }
2006
+ var MenuItemDescription = ({ description, className }) => {
2007
+ const { ref, isClamped } = useIsClamped([description]);
2008
+ console.log({ isClamped, ref });
2009
+ if (isClamped) {
2010
+ return /* @__PURE__ */ jsxRuntime.jsx(
2011
+ reactComponents.Tooltip,
2012
+ {
2013
+ appearance: "inverted",
2014
+ content: description,
2015
+ relationship: "label",
2016
+ positioning: "after",
2017
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className, children: description })
2018
+ }
2019
+ );
2020
+ }
2021
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className, children: description });
2022
+ };
1858
2023
  var DatePickerInput = React5.forwardRef(
1859
2024
  ({
1860
2025
  field,
@@ -2147,6 +2312,7 @@ var useStyles7 = reactComponents.makeStyles({
2147
2312
  border: `1px solid ${reactComponents.tokens.colorNeutralStroke1}`,
2148
2313
  borderRadius: reactComponents.tokens.borderRadiusMedium,
2149
2314
  padding: reactComponents.tokens.spacingVerticalS,
2315
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralForeground3}`,
2150
2316
  paddingLeft: "48px",
2151
2317
  // fontSize: tokens.fontSizeBase300,
2152
2318
  fontFamily: reactComponents.tokens.fontFamilyBase,
@@ -2160,10 +2326,11 @@ var useStyles7 = reactComponents.makeStyles({
2160
2326
  // fontSize: tokens.fontSizeBase400,
2161
2327
  },
2162
2328
  "& .react-tel-input .form-control:hover": {
2163
- border: `1px solid ${reactComponents.tokens.colorNeutralStroke1Hover}`
2329
+ border: `1px solid ${reactComponents.tokens.colorNeutralStroke1Hover}`,
2330
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralForeground3Hover}`
2164
2331
  },
2165
2332
  "& .react-tel-input .form-control:focus": {
2166
- borderBottom: `2px solid ${reactComponents.tokens.colorBrandStroke1}`
2333
+ borderBottom: `2px solid ${reactComponents.tokens.colorBrandStroke1} !important`
2167
2334
  // boxShadow: `0 0 0 1px ${tokens.colorBrandStroke1}`,
2168
2335
  },
2169
2336
  "& .react-tel-input .form-control:disabled": {
@@ -2188,6 +2355,77 @@ var useStyles7 = reactComponents.makeStyles({
2188
2355
  backgroundColor: "transparent"
2189
2356
  }
2190
2357
  },
2358
+ // Appearance: underline
2359
+ phoneInputUnderline: {
2360
+ "& .react-tel-input .form-control": {
2361
+ border: "none",
2362
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralForeground3}`,
2363
+ borderRadius: 0,
2364
+ backgroundColor: "transparent",
2365
+ paddingLeft: "48px"
2366
+ },
2367
+ "& .react-tel-input .form-control:hover": {
2368
+ border: "none",
2369
+ borderBottom: `1px solid ${reactComponents.tokens.colorNeutralForeground3Hover}`
2370
+ },
2371
+ "& .react-tel-input .form-control:focus": {
2372
+ border: "none",
2373
+ borderBottom: `2px solid ${reactComponents.tokens.colorBrandStroke1}`,
2374
+ boxShadow: "none"
2375
+ },
2376
+ "& .react-tel-input .flag-dropdown": {
2377
+ border: "none",
2378
+ backgroundColor: "transparent"
2379
+ }
2380
+ },
2381
+ // Appearance: filled-darker
2382
+ phoneInputFilledDarker: {
2383
+ "& .react-tel-input .form-control": {
2384
+ border: "none",
2385
+ borderBottom: `1px solid transparent`,
2386
+ borderRadius: `${reactComponents.tokens.borderRadiusMedium} ${reactComponents.tokens.borderRadiusMedium} 0 0`,
2387
+ backgroundColor: reactComponents.tokens.colorNeutralBackground3,
2388
+ paddingLeft: "48px"
2389
+ },
2390
+ "& .react-tel-input .form-control:hover": {
2391
+ border: "none",
2392
+ borderBottom: `1px solid transparent`,
2393
+ backgroundColor: reactComponents.tokens.colorNeutralBackground3Hover
2394
+ },
2395
+ "& .react-tel-input .form-control:focus": {
2396
+ border: "none",
2397
+ borderBottom: `2px solid ${reactComponents.tokens.colorBrandStroke1}`,
2398
+ boxShadow: "none"
2399
+ },
2400
+ "& .react-tel-input .flag-dropdown": {
2401
+ border: "none",
2402
+ backgroundColor: "transparent"
2403
+ }
2404
+ },
2405
+ // Appearance: filled-lighter
2406
+ phoneInputFilledLighter: {
2407
+ "& .react-tel-input .form-control": {
2408
+ border: "none",
2409
+ borderBottom: `1px solid transparent`,
2410
+ borderRadius: `${reactComponents.tokens.borderRadiusMedium} ${reactComponents.tokens.borderRadiusMedium} 0 0`,
2411
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1,
2412
+ paddingLeft: "48px"
2413
+ },
2414
+ "& .react-tel-input .form-control:hover": {
2415
+ border: "none",
2416
+ borderBottom: `1px solid transparent`,
2417
+ backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover
2418
+ },
2419
+ "& .react-tel-input .form-control:focus": {
2420
+ border: "none",
2421
+ borderBottom: `2px solid ${reactComponents.tokens.colorBrandStroke1}`,
2422
+ boxShadow: "none"
2423
+ },
2424
+ "& .react-tel-input .flag-dropdown": {
2425
+ border: "none",
2426
+ backgroundColor: "transparent"
2427
+ }
2428
+ },
2191
2429
  phoneInputError: {
2192
2430
  "& .react-tel-input .form-control": {
2193
2431
  border: `2px solid ${reactComponents.tokens.colorPaletteRedBorder2}`
@@ -2510,6 +2748,13 @@ var InputDynamic = ({
2510
2748
  };
2511
2749
  const renderInput = (field, error) => {
2512
2750
  const shouldTransparentBorder = disabled && appearance !== "outline" && appearance !== "underline";
2751
+ const getPhoneAppearanceClass = () => {
2752
+ if (appearance === "underline") return styles.phoneInputUnderline;
2753
+ if (appearance === "filled-darker") return styles.phoneInputFilledDarker;
2754
+ if (appearance === "filled-lighter") return styles.phoneInputFilledLighter;
2755
+ return "";
2756
+ };
2757
+ const phoneAppearanceClass = getPhoneAppearanceClass();
2513
2758
  const inputStyle = shouldTransparentBorder ? { ...style, border: "transparent" } : style;
2514
2759
  const handleInputChange = (e) => {
2515
2760
  field.onChange(e);
@@ -2537,6 +2782,12 @@ var InputDynamic = ({
2537
2782
  const otpIndex2 = otpMatch ? parseInt(otpMatch[1], 10) : null;
2538
2783
  const classNameSize = size === "small" ? styles.valueSmall : size === "medium" ? styles.valueMedium : styles.valueLarge;
2539
2784
  const fontSizeValuePhoneInput = size == "small" ? reactComponents.tokens.fontSizeBase200 : size === "medium" ? reactComponents.tokens.fontSizeBase300 : reactComponents.tokens.fontSizeBase400;
2785
+ const phoneInputSizeStyle = {
2786
+ fontSize: fontSizeValuePhoneInput,
2787
+ ...size === "small" && { minHeight: "26px", height: "26px", padding: `0 ${reactComponents.tokens.spacingHorizontalS} 0 48px` },
2788
+ ...size === "medium" && { minHeight: "34px", height: "34px", padding: `${reactComponents.tokens.spacingVerticalXXS} ${reactComponents.tokens.spacingHorizontalS} ${reactComponents.tokens.spacingVerticalXXS} 48px` },
2789
+ ...size === "large" && { minHeight: "40px", height: "40px", padding: `${reactComponents.tokens.spacingVerticalXS} ${reactComponents.tokens.spacingHorizontalS} ${reactComponents.tokens.spacingVerticalXS} 48px` }
2790
+ };
2540
2791
  if (type === "emailOrPhone") {
2541
2792
  updateEmailOrPhoneType(field.value);
2542
2793
  const stringValue = typeof field.value === "string" ? field.value : "";
@@ -2572,13 +2823,11 @@ var InputDynamic = ({
2572
2823
  "div",
2573
2824
  {
2574
2825
  ref: emailOrPhoneInputRef,
2575
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
2826
+ className: reactComponents.mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2576
2827
  children: /* @__PURE__ */ jsxRuntime.jsx(
2577
2828
  PhoneInput,
2578
2829
  {
2579
- inputStyle: {
2580
- fontSize: fontSizeValuePhoneInput
2581
- },
2830
+ inputStyle: phoneInputSizeStyle,
2582
2831
  country: defaultCountry.toLowerCase(),
2583
2832
  value: stringValue.startsWith("+") ? stringValue.substring(1) : stringValue,
2584
2833
  onChange: (value, data) => {
@@ -2677,7 +2926,7 @@ var InputDynamic = ({
2677
2926
  "div",
2678
2927
  {
2679
2928
  ref: phoneInputRef,
2680
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
2929
+ className: reactComponents.mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2681
2930
  children: /* @__PURE__ */ jsxRuntime.jsx(
2682
2931
  PhoneInput,
2683
2932
  {
@@ -2719,9 +2968,7 @@ var InputDynamic = ({
2719
2968
  disabled,
2720
2969
  enableSearch: true,
2721
2970
  disableSearchIcon: true,
2722
- inputStyle: {
2723
- fontSize: fontSizeValuePhoneInput
2724
- }
2971
+ inputStyle: phoneInputSizeStyle
2725
2972
  }
2726
2973
  )
2727
2974
  }
@@ -2804,7 +3051,7 @@ var InputDynamic = ({
2804
3051
  name: `${String(name)}_${Math.random().toString(36).substring(7)}`,
2805
3052
  isDisabled: disabled,
2806
3053
  placeholder: placeholder || "Select country",
2807
- options: COUNTRIES,
3054
+ options: options && options.length > 0 ? options : COUNTRIES,
2808
3055
  styles: getSelectStyles(!!error),
2809
3056
  className: reactComponents.mergeClasses(styles.reactSelect, classNameSize),
2810
3057
  classNamePrefix: "react-select",
@@ -2828,7 +3075,7 @@ var InputDynamic = ({
2828
3075
  {
2829
3076
  style: { display: "flex", alignItems: "center", gap: "8px" },
2830
3077
  children: [
2831
- /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: option.flag, width: 20, height: 20 }),
3078
+ options && options.length > 0 ? option.flag ? option.flag.startsWith("http") ? /* @__PURE__ */ jsxRuntime.jsx("img", { alt: option.label, src: option.flag, height: 20, width: 20, style: { objectFit: "contain" } }) : /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: option.flag, width: 20, height: 20 }) : null : option.flag ? /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: option.flag, width: 20, height: 20 }) : null,
2832
3079
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: option.label })
2833
3080
  ]
2834
3081
  }
@@ -2850,7 +3097,7 @@ var InputDynamic = ({
2850
3097
  return /* @__PURE__ */ jsxRuntime.jsx(
2851
3098
  "div",
2852
3099
  {
2853
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
3100
+ className: reactComponents.mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2854
3101
  children: /* @__PURE__ */ jsxRuntime.jsx(
2855
3102
  PhoneInput,
2856
3103
  {
@@ -2864,9 +3111,7 @@ var InputDynamic = ({
2864
3111
  disabled,
2865
3112
  enableSearch: true,
2866
3113
  disableSearchIcon: true,
2867
- inputStyle: {
2868
- fontSize: fontSizeValuePhoneInput
2869
- }
3114
+ inputStyle: phoneInputSizeStyle
2870
3115
  }
2871
3116
  )
2872
3117
  }
@@ -4070,9 +4315,10 @@ var useStyles9 = reactComponents.makeStyles({
4070
4315
  },
4071
4316
  circular: {
4072
4317
  position: "absolute",
4073
- width: "clamp(40px, 7vw, 90px)",
4074
- height: "clamp(40px, 7vw, 90px)",
4075
- borderRadius: "50% 50% 0 0",
4318
+ width: "clamp(45px, 8vw, 90px)",
4319
+ height: "clamp(22.5px, 4vw, 45px)",
4320
+ // lebih kecil dari width
4321
+ borderRadius: "50% 50% 0 0 / 100% 100% 0 0",
4076
4322
  backgroundColor: reactComponents.tokens.colorNeutralBackground1Hover,
4077
4323
  bottom: "-10px",
4078
4324
  boxShadow: "inset 0 2px 0px rgba(0, 0, 0, 0.1)"
@@ -4096,23 +4342,27 @@ var CardTicketSearchSummary = ({
4096
4342
  const { width } = useWindowSize();
4097
4343
  const getCircularConfig = () => {
4098
4344
  if (width <= parseInt(extendedTokens.breakpointXs))
4099
- return { count: 4, spacing: 65, size: 30, height: 30 };
4345
+ return { count: 4, spacing: 65 };
4100
4346
  if (width <= parseInt(extendedTokens.breakpointSm))
4101
- return { count: 5, spacing: 71, size: 40, height: 40 };
4347
+ return { count: 5, spacing: 71 };
4102
4348
  if (width <= parseInt(extendedTokens.breakpointMd))
4103
- return { count: 8, spacing: 87, size: 50, height: 50 };
4349
+ return { count: 8, spacing: 87 };
4104
4350
  if (width <= parseInt(extendedTokens.breakpointLg))
4105
- return { count: 9, spacing: 100, size: 60, height: 60 };
4351
+ return { count: 9, spacing: 100 };
4106
4352
  if (width <= parseInt(extendedTokens.breakpointXl))
4107
- return { count: 8, spacing: 115, size: 70, height: 70 };
4353
+ return { count: 8, spacing: 115 };
4108
4354
  if (width <= parseInt(extendedTokens.breakpointXxl))
4109
- return { count: 8, spacing: 136, size: 90, height: 90 };
4355
+ return { count: 8, spacing: 125 };
4110
4356
  if (width <= parseInt(extendedTokens.breakpointXxxl))
4111
- return { count: 8, spacing: 136, size: 90, height: 90 };
4112
- return { count: 11, spacing: 136, size: 100, height: 90 };
4357
+ return { count: 9, spacing: 120 };
4358
+ return { count: 13, spacing: 114 };
4113
4359
  };
4114
4360
  const circularConfig = getCircularConfig();
4115
- const RenderField = ({ label, value, icon }) => {
4361
+ const RenderField = ({
4362
+ label,
4363
+ value,
4364
+ icon
4365
+ }) => {
4116
4366
  return /* @__PURE__ */ jsxRuntime.jsxs(
4117
4367
  "div",
4118
4368
  {
@@ -4140,12 +4390,18 @@ var CardTicketSearchSummary = ({
4140
4390
  style: { height: "20px", width: "20px" }
4141
4391
  }
4142
4392
  ),
4143
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1Strong, { style: {
4144
- display: "-webkit-box",
4145
- WebkitLineClamp: 1,
4146
- WebkitBoxOrient: "vertical",
4147
- overflow: "hidden"
4148
- }, children: value })
4393
+ /* @__PURE__ */ jsxRuntime.jsx(
4394
+ reactComponents.Body1Strong,
4395
+ {
4396
+ style: {
4397
+ display: "-webkit-box",
4398
+ WebkitLineClamp: 1,
4399
+ WebkitBoxOrient: "vertical",
4400
+ overflow: "hidden"
4401
+ },
4402
+ children: value
4403
+ }
4404
+ )
4149
4405
  ]
4150
4406
  }
4151
4407
  )
@@ -4540,7 +4796,8 @@ var ModalSearchHarbor = ({
4540
4796
  onAddLastSearched,
4541
4797
  onRemoveLastSearched,
4542
4798
  onClearLastSearched,
4543
- popularHarbors
4799
+ popularHarbors,
4800
+ showButtonFavorite = true
4544
4801
  }) => {
4545
4802
  const styles = useStyles10();
4546
4803
  const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
@@ -4694,7 +4951,7 @@ var ModalSearchHarbor = ({
4694
4951
  ]
4695
4952
  }
4696
4953
  ),
4697
- /* @__PURE__ */ jsxRuntime.jsx(
4954
+ showButtonFavorite && /* @__PURE__ */ jsxRuntime.jsx(
4698
4955
  react.Icon,
4699
4956
  {
4700
4957
  icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
@@ -5446,7 +5703,7 @@ var ModalTotalPassengers = ({
5446
5703
  const parts = [];
5447
5704
  passenger.classes.forEach((cls) => {
5448
5705
  if ((cls.count ?? 0) > 0) {
5449
- const displayName = cls.classCode?.toUpperCase();
5706
+ const displayName = cls.className?.toUpperCase();
5450
5707
  parts.push(`${cls.count} ${displayName}`);
5451
5708
  }
5452
5709
  });
@@ -5570,7 +5827,7 @@ var ModalTotalPassengers = ({
5570
5827
  {
5571
5828
  className: styles.nestedRow,
5572
5829
  children: [
5573
- /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: cls.classCode.toUpperCase() }),
5830
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Body1, { children: (cls?.className || "")?.toUpperCase() }),
5574
5831
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.passengerCount, children: [
5575
5832
  /* @__PURE__ */ jsxRuntime.jsx(
5576
5833
  reactComponents.Button,
@@ -7658,7 +7915,7 @@ var CardOrdererInfo = ({
7658
7915
  var DEFAULT_LABELS21 = {
7659
7916
  id: {
7660
7917
  title: "Detail Penumpang",
7661
- sameAsOrderer: "Sama Dengan Pemesan",
7918
+ // sameAsOrderer: 'Sama Dengan Pemesan',
7662
7919
  searchPlaceholder: "Cari Penumpang",
7663
7920
  addPassengerButton: "Tambah Penumpang",
7664
7921
  cancelButton: "Batal",
@@ -7672,7 +7929,7 @@ var DEFAULT_LABELS21 = {
7672
7929
  },
7673
7930
  en: {
7674
7931
  title: "Passenger Details",
7675
- sameAsOrderer: "Same as Orderer",
7932
+ // sameAsOrderer: 'Same as Orderer',
7676
7933
  searchPlaceholder: "Search Passenger",
7677
7934
  addPassengerButton: "Add Passenger",
7678
7935
  cancelButton: "Cancel",
@@ -7736,9 +7993,9 @@ var ModalListPassenger = ({
7736
7993
  onSearchChange,
7737
7994
  onSelectPassenger,
7738
7995
  onEditPassenger,
7739
- onAddPassenger,
7740
- sameAsOrderer,
7741
- onSameAsOrdererChange
7996
+ onAddPassenger
7997
+ // sameAsOrderer,
7998
+ // onSameAsOrdererChange,
7742
7999
  }) => {
7743
8000
  const styles = useStyles21();
7744
8001
  const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
@@ -7754,7 +8011,7 @@ var ModalListPassenger = ({
7754
8011
  const filteredPassengers = passengers.filter((passenger) => {
7755
8012
  if (!searchQuery) return true;
7756
8013
  const query = searchQuery.toLowerCase();
7757
- return passenger.name && passenger.name.toLowerCase().includes(query) || passenger.category && passenger.category.toLowerCase().includes(query);
8014
+ return passenger.fullName && passenger.fullName.toLowerCase().includes(query) || passenger.ageLabel && passenger.ageLabel.toLowerCase().includes(query);
7758
8015
  });
7759
8016
  return /* @__PURE__ */ jsxRuntime.jsx(
7760
8017
  reactComponents.Dialog,
@@ -7769,14 +8026,6 @@ var ModalListPassenger = ({
7769
8026
  /* @__PURE__ */ jsxRuntime.jsx(
7770
8027
  reactComponents.DialogTitle,
7771
8028
  {
7772
- action: /* @__PURE__ */ jsxRuntime.jsx(
7773
- reactComponents.Switch,
7774
- {
7775
- label: mergedLabels.sameAsOrderer,
7776
- checked: sameAsOrderer,
7777
- onChange: (_, data) => onSameAsOrdererChange(data.checked)
7778
- }
7779
- ),
7780
8029
  children: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Subtitle1, { children: displayTitle })
7781
8030
  }
7782
8031
  ),
@@ -7807,21 +8056,10 @@ var ModalListPassenger = ({
7807
8056
  },
7808
8057
  children: [
7809
8058
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Subtitle2, { children: [
7810
- passenger.name,
8059
+ passenger.fullName,
7811
8060
  " (",
7812
- (() => {
7813
- const cat = passenger.category?.toUpperCase();
7814
- if (cat === "ADULT")
7815
- return mergedLabels.categories.adult;
7816
- if (cat === "CHILD")
7817
- return mergedLabels.categories.child;
7818
- if (cat === "INFANT")
7819
- return mergedLabels.categories.infant;
7820
- if (cat === "ELDERLY")
7821
- return mergedLabels.categories.elderly;
7822
- return passenger.category;
7823
- })(),
7824
- ")"
8061
+ passenger.ageLabel,
8062
+ " )"
7825
8063
  ] }) }),
7826
8064
  /* @__PURE__ */ jsxRuntime.jsx(
7827
8065
  reactComponents.Button,
@@ -7894,6 +8132,10 @@ var DEFAULT_LABELS22 = {
7894
8132
  countryLabel: "Negara Penerbit Passport",
7895
8133
  countryPlaceholder: "Masukkan Negara",
7896
8134
  autofill: "Isi Data Otomatis",
8135
+ phoneNumberLabel: "Nomor Telepon",
8136
+ phoneNumberPlaceholder: "Masukkan Nomor Telepon",
8137
+ emailLabel: "Email",
8138
+ emailPlaceholder: "Masukkan Email",
7897
8139
  // Scan Identity
7898
8140
  selectIdTypeTitle: "Isi Data Dengan Scan Identitas",
7899
8141
  scanIdentityTitle: "Scan Identitas",
@@ -7923,7 +8165,10 @@ var DEFAULT_LABELS22 = {
7923
8165
  maxAge: "Usia maksimal 150 tahun",
7924
8166
  requiredDate: "Tanggal lahir harus diisi",
7925
8167
  requiredCity: "Kota/Kabupaten harus diisi",
7926
- requiredCountry: "Negara harus diisi"
8168
+ requiredCountry: "Negara harus diisi",
8169
+ requiredPhoneNumber: "Nomor telepon harus diisi",
8170
+ minLengthPhoneNumber: "Nomor telepon minimal 10 karakter",
8171
+ invalidEmail: "Format email tidak valid"
7927
8172
  }
7928
8173
  },
7929
8174
  en: {
@@ -7950,6 +8195,10 @@ var DEFAULT_LABELS22 = {
7950
8195
  countryLabel: "Country of Issue",
7951
8196
  countryPlaceholder: "Enter Country",
7952
8197
  autofill: "Autofill",
8198
+ phoneNumberLabel: "Phone Number",
8199
+ phoneNumberPlaceholder: "Enter Phone Number",
8200
+ emailLabel: "Email",
8201
+ emailPlaceholder: "Enter Email",
7953
8202
  // Scan Identity
7954
8203
  selectIdTypeTitle: "Fill Data by Scanning Identity",
7955
8204
  scanIdentityTitle: "Scan Identity",
@@ -7979,7 +8228,10 @@ var DEFAULT_LABELS22 = {
7979
8228
  maxAge: "Age must be at most 150 years",
7980
8229
  requiredDate: "Date of birth is required",
7981
8230
  requiredCity: "City/Regency is required",
7982
- requiredCountry: "Country is required"
8231
+ requiredCountry: "Country is required",
8232
+ requiredPhoneNumber: "Phone number is required",
8233
+ minLengthPhoneNumber: "Phone number must be at least 10 characters",
8234
+ invalidEmail: "Invalid email format"
7983
8235
  }
7984
8236
  }
7985
8237
  };
@@ -8288,7 +8540,9 @@ var ModalPassengerForm = ({
8288
8540
  const performOCR = async () => {
8289
8541
  try {
8290
8542
  const Tesseract = await import('tesseract.js');
8291
- const { data: { text } } = await Tesseract.recognize(capturedImage, "ind");
8543
+ const {
8544
+ data: { text }
8545
+ } = await Tesseract.recognize(capturedImage, "ind");
8292
8546
  if (isCancelled) return;
8293
8547
  setScanStep(1);
8294
8548
  await new Promise((resolve) => setTimeout(resolve, 500));
@@ -8340,7 +8594,14 @@ var ModalPassengerForm = ({
8340
8594
  return () => {
8341
8595
  isCancelled = true;
8342
8596
  };
8343
- }, [scanStatus, capturedImage, stopCamera, setValue, scannedIdType, onScanComplete]);
8597
+ }, [
8598
+ scanStatus,
8599
+ capturedImage,
8600
+ stopCamera,
8601
+ setValue,
8602
+ scannedIdType,
8603
+ onScanComplete
8604
+ ]);
8344
8605
  const handleFormSubmit = (data) => {
8345
8606
  onSubmit(data);
8346
8607
  reset();
@@ -9132,6 +9393,7 @@ var CardVehicleDetail = ({
9132
9393
  serviceTitle,
9133
9394
  serviceImage,
9134
9395
  control,
9396
+ disabled,
9135
9397
  vehicleNumberName = "vehicleNumber",
9136
9398
  showLoadOption = false,
9137
9399
  hasLoad,
@@ -9175,6 +9437,7 @@ var CardVehicleDetail = ({
9175
9437
  InputDynamic_default,
9176
9438
  {
9177
9439
  control,
9440
+ disabled,
9178
9441
  name: vehicleNumberName,
9179
9442
  placeholder: mergedLabels.vehicleNumberPlaceholder,
9180
9443
  type: "text"
@@ -9186,6 +9449,7 @@ var CardVehicleDetail = ({
9186
9449
  /* @__PURE__ */ jsxRuntime.jsxs(
9187
9450
  reactComponents.RadioGroup,
9188
9451
  {
9452
+ disabled,
9189
9453
  value: hasLoad,
9190
9454
  onChange: (_, data) => onHasLoadChange?.(data.value),
9191
9455
  layout: "horizontal",
@@ -9353,6 +9617,7 @@ var CardVehicleOwnerForm = ({
9353
9617
  owners,
9354
9618
  hasLoad,
9355
9619
  control,
9620
+ disabled,
9356
9621
  watch,
9357
9622
  setValue,
9358
9623
  getValues,
@@ -9362,8 +9627,16 @@ var CardVehicleOwnerForm = ({
9362
9627
  onAddCargo,
9363
9628
  onDeleteCargo,
9364
9629
  onUpdateCargoQuantity,
9365
- companyOptions = [],
9366
- cityOptions = [],
9630
+ companySenderOptions = [],
9631
+ companyOwnerOptions = [],
9632
+ companyLogisticsOptions = [],
9633
+ companyReceiverOptions = [],
9634
+ cityOriginOptions = [],
9635
+ cityDestinationOptions = [],
9636
+ commodityOptions = [],
9637
+ loadTypeOptions = [],
9638
+ industryOptions = [],
9639
+ loadCategoryOptions = [],
9367
9640
  language = "id",
9368
9641
  labels
9369
9642
  }) => {
@@ -9421,8 +9694,9 @@ var CardVehicleOwnerForm = ({
9421
9694
  reactComponents.Button,
9422
9695
  {
9423
9696
  appearance: "transparent",
9424
- icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
9425
9697
  "aria-label": mergedLabels.deleteOwnerAriaLabel,
9698
+ disabled,
9699
+ icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
9426
9700
  onClick: (e) => {
9427
9701
  e.stopPropagation();
9428
9702
  onDeleteOwner(owner.id);
@@ -9450,6 +9724,7 @@ var CardVehicleOwnerForm = ({
9450
9724
  children: /* @__PURE__ */ jsxRuntime.jsxs(
9451
9725
  reactComponents.RadioGroup,
9452
9726
  {
9727
+ disabled,
9453
9728
  layout: "horizontal",
9454
9729
  value: owner.senderType,
9455
9730
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9479,11 +9754,12 @@ var CardVehicleOwnerForm = ({
9479
9754
  InputDynamic_default,
9480
9755
  {
9481
9756
  control,
9757
+ disabled,
9482
9758
  name: `owners.${index}.senderName`,
9483
9759
  placeholder: owner.senderType === "Perusahaan" ? mergedLabels.selectCompanyPlaceholder : mergedLabels.inputSenderNamePlaceholder,
9484
9760
  size: "large",
9485
9761
  type: owner.senderType === "Perusahaan" ? "select" : "text",
9486
- options: owner.senderType === "Perusahaan" ? companyOptions : []
9762
+ options: owner.senderType === "Perusahaan" ? companySenderOptions : []
9487
9763
  }
9488
9764
  )
9489
9765
  ] }),
@@ -9498,6 +9774,7 @@ var CardVehicleOwnerForm = ({
9498
9774
  InputDynamic_default,
9499
9775
  {
9500
9776
  control,
9777
+ disabled,
9501
9778
  name: `owners.${index}.estimatedWeight`,
9502
9779
  placeholder: mergedLabels.inputNumberPlaceholder,
9503
9780
  size: "large",
@@ -9513,10 +9790,11 @@ var CardVehicleOwnerForm = ({
9513
9790
  InputDynamic_default,
9514
9791
  {
9515
9792
  control,
9793
+ disabled,
9516
9794
  name: `looseCargoOwners.${index}.originCity`,
9517
9795
  placeholder: mergedLabels.selectPlaceholder,
9518
9796
  type: "select",
9519
- options: cityOptions,
9797
+ options: cityOriginOptions,
9520
9798
  size: "large"
9521
9799
  }
9522
9800
  )
@@ -9527,10 +9805,11 @@ var CardVehicleOwnerForm = ({
9527
9805
  InputDynamic_default,
9528
9806
  {
9529
9807
  control,
9808
+ disabled,
9530
9809
  name: `looseCargoOwners.${index}.destinationCity`,
9531
9810
  placeholder: mergedLabels.selectPlaceholder,
9532
9811
  type: "select",
9533
- options: cityOptions,
9812
+ options: cityDestinationOptions,
9534
9813
  size: "large"
9535
9814
  }
9536
9815
  )
@@ -9555,6 +9834,7 @@ var CardVehicleOwnerForm = ({
9555
9834
  children: /* @__PURE__ */ jsxRuntime.jsxs(
9556
9835
  reactComponents.RadioGroup,
9557
9836
  {
9837
+ disabled,
9558
9838
  layout: "horizontal",
9559
9839
  value: owner.cargoOwnerType || "Perusahaan",
9560
9840
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9583,12 +9863,13 @@ var CardVehicleOwnerForm = ({
9583
9863
  /* @__PURE__ */ jsxRuntime.jsx(
9584
9864
  InputDynamic_default,
9585
9865
  {
9866
+ disabled,
9586
9867
  control,
9587
9868
  name: `looseCargoOwners.${index}.cargoOwnerName`,
9588
9869
  placeholder: owner.cargoOwnerType === "Perusahaan" ? mergedLabels.cargoOwnerCompanyPlaceholder : mergedLabels.cargoOwnerIndividualPlaceholder,
9589
9870
  size: "large",
9590
9871
  type: owner.cargoOwnerType === "Perusahaan" ? "select" : "text",
9591
- options: owner.cargoOwnerType === "Perusahaan" ? companyOptions : []
9872
+ options: owner.cargoOwnerType === "Perusahaan" ? companyOwnerOptions : []
9592
9873
  }
9593
9874
  ),
9594
9875
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -9619,6 +9900,7 @@ var CardVehicleOwnerForm = ({
9619
9900
  children: /* @__PURE__ */ jsxRuntime.jsxs(
9620
9901
  reactComponents.RadioGroup,
9621
9902
  {
9903
+ disabled,
9622
9904
  layout: "horizontal",
9623
9905
  value: owner.logisticsCompanyType || "Perseorangan",
9624
9906
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9648,11 +9930,12 @@ var CardVehicleOwnerForm = ({
9648
9930
  InputDynamic_default,
9649
9931
  {
9650
9932
  control,
9933
+ disabled,
9651
9934
  name: `looseCargoOwners.${index}.logisticsCompanyName`,
9652
9935
  placeholder: owner.logisticsCompanyType === "Perusahaan" ? mergedLabels.logisticsCompanyPlaceholder : mergedLabels.logisticsIndividualPlaceholder,
9653
9936
  size: "large",
9654
9937
  type: owner.logisticsCompanyType === "Perusahaan" ? "select" : "text",
9655
- options: owner.logisticsCompanyType === "Perusahaan" ? companyOptions : []
9938
+ options: owner.logisticsCompanyType === "Perusahaan" ? companyLogisticsOptions : []
9656
9939
  }
9657
9940
  ),
9658
9941
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -9673,6 +9956,7 @@ var CardVehicleOwnerForm = ({
9673
9956
  /* @__PURE__ */ jsxRuntime.jsxs(
9674
9957
  reactComponents.RadioGroup,
9675
9958
  {
9959
+ disabled,
9676
9960
  layout: "horizontal",
9677
9961
  value: owner.cargoReceiverType || "Perusahaan",
9678
9962
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9700,11 +9984,12 @@ var CardVehicleOwnerForm = ({
9700
9984
  InputDynamic_default,
9701
9985
  {
9702
9986
  control,
9987
+ disabled,
9703
9988
  name: `looseCargoOwners.${index}.cargoReceiverName`,
9704
9989
  placeholder: owner.cargoReceiverType === "Perusahaan" ? mergedLabels.cargoReceiverCompanyPlaceholder : mergedLabels.cargoReceiverIndividualPlaceholder,
9705
9990
  size: "large",
9706
9991
  type: owner.cargoReceiverType === "Perusahaan" ? "select" : "text",
9707
- options: owner.cargoReceiverType === "Perusahaan" ? companyOptions : []
9992
+ options: owner.cargoReceiverType === "Perusahaan" ? companyReceiverOptions : []
9708
9993
  }
9709
9994
  ),
9710
9995
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -9729,6 +10014,7 @@ var CardVehicleOwnerForm = ({
9729
10014
  InputDynamic_default,
9730
10015
  {
9731
10016
  control,
10017
+ disabled,
9732
10018
  name: `looseCargoOwners.${index}.cargoWeight`,
9733
10019
  placeholder: mergedLabels.inputNumberPlaceholder,
9734
10020
  type: "number",
@@ -9787,10 +10073,11 @@ var CardVehicleOwnerForm = ({
9787
10073
  InputDynamic_default,
9788
10074
  {
9789
10075
  control,
10076
+ disabled,
9790
10077
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.commodity`,
9791
10078
  placeholder: mergedLabels.selectPlaceholder,
9792
10079
  type: "select",
9793
- options: [],
10080
+ options: commodityOptions,
9794
10081
  size: "large"
9795
10082
  }
9796
10083
  ),
@@ -9819,27 +10106,11 @@ var CardVehicleOwnerForm = ({
9819
10106
  InputDynamic_default,
9820
10107
  {
9821
10108
  control,
10109
+ disabled,
9822
10110
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`,
9823
10111
  placeholder: mergedLabels.selectPlaceholder,
9824
10112
  type: "select",
9825
- options: [
9826
- {
9827
- value: "karung",
9828
- label: mergedLabels.cargoTypeOptions.karung
9829
- },
9830
- {
9831
- value: "kg",
9832
- label: mergedLabels.cargoTypeOptions.kg
9833
- },
9834
- {
9835
- value: "ton",
9836
- label: mergedLabels.cargoTypeOptions.ton
9837
- },
9838
- {
9839
- value: "unit",
9840
- label: mergedLabels.cargoTypeOptions.unit
9841
- }
9842
- ],
10113
+ options: loadTypeOptions,
9843
10114
  size: "large"
9844
10115
  }
9845
10116
  ),
@@ -9883,6 +10154,7 @@ var CardVehicleOwnerForm = ({
9883
10154
  reactComponents.Button,
9884
10155
  {
9885
10156
  appearance: "transparent",
10157
+ disabled,
9886
10158
  icon: /* @__PURE__ */ jsxRuntime.jsx(
9887
10159
  react.Icon,
9888
10160
  {
@@ -9924,6 +10196,7 @@ var CardVehicleOwnerForm = ({
9924
10196
  {
9925
10197
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
9926
10198
  control,
10199
+ disabled,
9927
10200
  render: ({ field }) => /* @__PURE__ */ jsxRuntime.jsx(
9928
10201
  "input",
9929
10202
  {
@@ -9948,6 +10221,7 @@ var CardVehicleOwnerForm = ({
9948
10221
  reactComponents.Button,
9949
10222
  {
9950
10223
  appearance: "transparent",
10224
+ disabled,
9951
10225
  icon: /* @__PURE__ */ jsxRuntime.jsx(
9952
10226
  react.Icon,
9953
10227
  {
@@ -10021,9 +10295,9 @@ var CardVehicleOwnerForm = ({
10021
10295
  InputDynamic_default,
10022
10296
  {
10023
10297
  control,
10298
+ disabled: true,
10024
10299
  name: `owners.${index}.price`,
10025
10300
  placeholder: mergedLabels.pricePlaceholder,
10026
- disabled: true,
10027
10301
  size: "large",
10028
10302
  type: "text"
10029
10303
  }
@@ -10041,10 +10315,11 @@ var CardVehicleOwnerForm = ({
10041
10315
  InputDynamic_default,
10042
10316
  {
10043
10317
  control,
10318
+ disabled,
10044
10319
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.industryType`,
10045
10320
  placeholder: mergedLabels.selectPlaceholder,
10046
10321
  type: "select",
10047
- options: [],
10322
+ options: industryOptions,
10048
10323
  size: "large"
10049
10324
  }
10050
10325
  ),
@@ -10069,10 +10344,11 @@ var CardVehicleOwnerForm = ({
10069
10344
  InputDynamic_default,
10070
10345
  {
10071
10346
  control,
10347
+ disabled,
10072
10348
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoCategory`,
10073
10349
  placeholder: mergedLabels.selectPlaceholder,
10074
10350
  type: "select",
10075
- options: [],
10351
+ options: loadCategoryOptions,
10076
10352
  size: "large"
10077
10353
  }
10078
10354
  ),
@@ -10095,6 +10371,7 @@ var CardVehicleOwnerForm = ({
10095
10371
  /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Row, { children: /* @__PURE__ */ jsxRuntime.jsx(reactGridSystem.Col, { children: (owner.cargoItems?.length || 0) > 1 && /* @__PURE__ */ jsxRuntime.jsx(
10096
10372
  reactComponents.Button,
10097
10373
  {
10374
+ disabled,
10098
10375
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:delete-24-regular" }),
10099
10376
  onClick: (e) => {
10100
10377
  e.stopPropagation();
@@ -10292,16 +10569,17 @@ var useStyles26 = reactComponents.makeStyles({
10292
10569
  var CardBookingTicket = ({
10293
10570
  language = "id",
10294
10571
  labels,
10295
- shipName = "KMP PORTLINK",
10296
- shipType = "Water Taxi",
10297
- shipTypeColor = "success",
10298
- departureDay = "Kamis, 25 Sep",
10299
- departureTime = "18:15",
10300
- departureLocation = "Merak, Banten",
10301
- arrivalDay = "Jumat, 26 Sep",
10302
- arrivalTime = "19:25",
10303
- arrivalLocation = "Bakauheni, Lampung",
10304
- duration = "1 jam 10 menit",
10572
+ providerLogo,
10573
+ shipName,
10574
+ shipType,
10575
+ shipTypeColor,
10576
+ departureDay,
10577
+ departureTime,
10578
+ departureLocation,
10579
+ arrivalDay,
10580
+ arrivalTime,
10581
+ arrivalLocation,
10582
+ duration = 0,
10305
10583
  totalPrice,
10306
10584
  reservationStep,
10307
10585
  paymentStep,
@@ -10320,7 +10598,7 @@ var CardBookingTicket = ({
10320
10598
  /* @__PURE__ */ jsxRuntime.jsx(
10321
10599
  "img",
10322
10600
  {
10323
- src: "/assets/logo/asdp-default.svg",
10601
+ src: providerLogo || "/assets/logo/asdp-default.svg",
10324
10602
  width: 81,
10325
10603
  height: 54,
10326
10604
  alt: "asdp"
@@ -10333,7 +10611,7 @@ var CardBookingTicket = ({
10333
10611
  {
10334
10612
  size: "extra-large",
10335
10613
  appearance: "filled",
10336
- color: shipTypeColor,
10614
+ style: { backgroundColor: shipTypeColor },
10337
10615
  iconPosition: "before",
10338
10616
  shape: "rounded",
10339
10617
  icon: /* @__PURE__ */ jsxRuntime.jsx(react.Icon, { icon: "fluent:info-24-regular" }),
@@ -10357,7 +10635,7 @@ var CardBookingTicket = ({
10357
10635
  /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.Caption2, { children: [
10358
10636
  mergedLabels.estimationPrefix,
10359
10637
  " ",
10360
- duration
10638
+ formatDuration(duration)
10361
10639
  ] })
10362
10640
  ] }),
10363
10641
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.ticketTime, children: [
@@ -10971,13 +11249,15 @@ var DEFAULT_LABELS29 = {
10971
11249
  addButton: "Tambah",
10972
11250
  currencySymbol: "Rp",
10973
11251
  decrementAriaLabel: "Kurangi jumlah",
10974
- incrementAriaLabel: "Tambah jumlah"
11252
+ incrementAriaLabel: "Tambah jumlah",
11253
+ searchPlaceholder: "Cari makanan atau minuman yang Anda inginkan"
10975
11254
  },
10976
11255
  en: {
10977
11256
  addButton: "Add",
10978
11257
  currencySymbol: "Rp",
10979
11258
  decrementAriaLabel: "Decrease quantity",
10980
- incrementAriaLabel: "Increase quantity"
11259
+ incrementAriaLabel: "Increase quantity",
11260
+ searchPlaceholder: "Search for food or drinks you want"
10981
11261
  }
10982
11262
  };
10983
11263
  var useStyles29 = reactComponents.makeStyles({
@@ -11107,6 +11387,9 @@ var useStyles29 = reactComponents.makeStyles({
11107
11387
  // tokensV2.lightModeColors.Brand_Stroke_1_Rest
11108
11388
  color: "rgb(30, 57, 141)"
11109
11389
  // tokensV2.lightModeColors.Brand_Foreground_1_Rest
11390
+ },
11391
+ searchContainer: {
11392
+ width: "100%"
11110
11393
  }
11111
11394
  });
11112
11395
  var CardMealCatalog = ({
@@ -11117,7 +11400,9 @@ var CardMealCatalog = ({
11117
11400
  categories,
11118
11401
  onAdd,
11119
11402
  onUpdateQuantity,
11120
- className
11403
+ className,
11404
+ searchValue,
11405
+ onSearchChange
11121
11406
  }) => {
11122
11407
  const styles = useStyles29();
11123
11408
  const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
@@ -11142,6 +11427,16 @@ var CardMealCatalog = ({
11142
11427
  /* @__PURE__ */ jsxRuntime.jsx(reactIcons.InfoRegular, {}),
11143
11428
  /* @__PURE__ */ jsxRuntime.jsx(reactComponents.Caption1, { children: disclaimerText })
11144
11429
  ] }),
11430
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.searchContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
11431
+ reactComponents.Input,
11432
+ {
11433
+ contentBefore: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.SearchRegular, {}),
11434
+ placeholder: mergedLabels.searchPlaceholder,
11435
+ value: searchValue,
11436
+ onChange: (_, data) => onSearchChange?.(data.value),
11437
+ style: { width: "100%" }
11438
+ }
11439
+ ) }),
11145
11440
  categories.map((cat, index) => /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
11146
11441
  /* @__PURE__ */ jsxRuntime.jsx(
11147
11442
  reactComponents.Title3,
@@ -12541,6 +12836,59 @@ var DEFAULT_LABELS38 = {
12541
12836
  requiredError: "is required"
12542
12837
  }
12543
12838
  };
12839
+ var useStyles39 = reactComponents.makeStyles({
12840
+ surface: {
12841
+ maxWidth: "90vw",
12842
+ maxHeight: "90vh",
12843
+ backgroundColor: "transparent",
12844
+ boxShadow: "none"
12845
+ },
12846
+ closeButton: {
12847
+ backgroundColor: reactComponents.tokens.colorNeutralForeground2,
12848
+ color: reactComponents.tokens.colorNeutralBackground1
12849
+ },
12850
+ content: {
12851
+ alignItems: "center",
12852
+ textAlign: "center"
12853
+ },
12854
+ image: {
12855
+ maxWidth: "100%",
12856
+ maxHeight: "70vh",
12857
+ objectFit: "contain"
12858
+ }
12859
+ });
12860
+ var ModalPreviewImage = ({
12861
+ open,
12862
+ onOpenChange,
12863
+ imageUrl,
12864
+ alt = "Preview"
12865
+ }) => {
12866
+ const styles = useStyles39();
12867
+ 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: [
12868
+ /* @__PURE__ */ jsxRuntime.jsx(
12869
+ reactComponents.DialogTitle,
12870
+ {
12871
+ action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
12872
+ reactComponents.Button,
12873
+ {
12874
+ appearance: "subtle",
12875
+ "aria-label": "close",
12876
+ icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Dismiss24Regular, {}),
12877
+ className: styles.closeButton
12878
+ }
12879
+ ) })
12880
+ }
12881
+ ),
12882
+ /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogContent, { className: styles.content, children: imageUrl && /* @__PURE__ */ jsxRuntime.jsx(
12883
+ "img",
12884
+ {
12885
+ src: imageUrl,
12886
+ alt,
12887
+ className: styles.image
12888
+ }
12889
+ ) })
12890
+ ] }) }) });
12891
+ };
12544
12892
  var uploadStyles = reactComponents.makeStyles({
12545
12893
  container: {
12546
12894
  backgroundColor: "#F0FEFF",
@@ -12814,56 +13162,7 @@ var FileUpload = React5__default.default.forwardRef(
12814
13162
  ] })
12815
13163
  }
12816
13164
  ),
12817
- /* @__PURE__ */ jsxRuntime.jsx(
12818
- reactComponents.Dialog,
12819
- {
12820
- open: isPreviewOpen,
12821
- onOpenChange: (_, data) => setIsPreviewOpen(data.open),
12822
- children: /* @__PURE__ */ jsxRuntime.jsx(
12823
- reactComponents.DialogSurface,
12824
- {
12825
- style: {
12826
- maxWidth: "90vw",
12827
- maxHeight: "90vh",
12828
- backgroundColor: "transparent",
12829
- boxShadow: "none"
12830
- },
12831
- children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
12832
- /* @__PURE__ */ jsxRuntime.jsx(
12833
- reactComponents.DialogTitle,
12834
- {
12835
- action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
12836
- reactComponents.Button,
12837
- {
12838
- "aria-label": "close",
12839
- icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Dismiss24Regular, {}),
12840
- style: {
12841
- backgroundColor: reactComponents.tokens.colorNeutralForeground2,
12842
- color: reactComponents.tokens.colorNeutralBackground1
12843
- }
12844
- }
12845
- ) })
12846
- }
12847
- ),
12848
- /* @__PURE__ */ jsxRuntime.jsx(
12849
- reactComponents.DialogContent,
12850
- {
12851
- style: { alignItems: "center", textAlign: "center" },
12852
- children: previewUrl && /* @__PURE__ */ jsxRuntime.jsx(
12853
- "img",
12854
- {
12855
- src: previewUrl,
12856
- alt: "Preview",
12857
- className: styles.dialogImage
12858
- }
12859
- )
12860
- }
12861
- )
12862
- ] })
12863
- }
12864
- )
12865
- }
12866
- )
13165
+ /* @__PURE__ */ jsxRuntime.jsx(ModalPreviewImage, { imageUrl: previewUrl, open: isPreviewOpen, onOpenChange: setIsPreviewOpen })
12867
13166
  ]
12868
13167
  }
12869
13168
  );
@@ -13060,57 +13359,7 @@ var FileUpload = React5__default.default.forwardRef(
13060
13359
  ]
13061
13360
  }
13062
13361
  ),
13063
- /* @__PURE__ */ jsxRuntime.jsx(
13064
- reactComponents.Dialog,
13065
- {
13066
- open: isPreviewOpen,
13067
- onOpenChange: (_, data) => setIsPreviewOpen(data.open),
13068
- children: /* @__PURE__ */ jsxRuntime.jsx(
13069
- reactComponents.DialogSurface,
13070
- {
13071
- style: {
13072
- maxWidth: "90vw",
13073
- maxHeight: "90vh",
13074
- backgroundColor: "transparent",
13075
- boxShadow: "none"
13076
- },
13077
- children: /* @__PURE__ */ jsxRuntime.jsxs(reactComponents.DialogBody, { children: [
13078
- /* @__PURE__ */ jsxRuntime.jsx(
13079
- reactComponents.DialogTitle,
13080
- {
13081
- action: /* @__PURE__ */ jsxRuntime.jsx(reactComponents.DialogTrigger, { action: "close", children: /* @__PURE__ */ jsxRuntime.jsx(
13082
- reactComponents.Button,
13083
- {
13084
- appearance: "subtle",
13085
- "aria-label": "close",
13086
- icon: /* @__PURE__ */ jsxRuntime.jsx(reactIcons.Dismiss24Regular, {}),
13087
- style: {
13088
- backgroundColor: reactComponents.tokens.colorNeutralForeground2,
13089
- color: reactComponents.tokens.colorNeutralBackground1
13090
- }
13091
- }
13092
- ) })
13093
- }
13094
- ),
13095
- /* @__PURE__ */ jsxRuntime.jsx(
13096
- reactComponents.DialogContent,
13097
- {
13098
- style: { alignItems: "center", textAlign: "center" },
13099
- children: previewUrl && /* @__PURE__ */ jsxRuntime.jsx(
13100
- "img",
13101
- {
13102
- src: previewUrl,
13103
- alt: "Preview",
13104
- className: styles.dialogImage
13105
- }
13106
- )
13107
- }
13108
- )
13109
- ] })
13110
- }
13111
- )
13112
- }
13113
- )
13362
+ /* @__PURE__ */ jsxRuntime.jsx(ModalPreviewImage, { imageUrl: previewUrl, open: isPreviewOpen, onOpenChange: setIsPreviewOpen })
13114
13363
  ]
13115
13364
  }
13116
13365
  );
@@ -13127,7 +13376,7 @@ var DEFAULT_LABELS39 = {
13127
13376
  id: {},
13128
13377
  en: {}
13129
13378
  };
13130
- var useStyles39 = reactComponents.makeStyles({
13379
+ var useStyles40 = reactComponents.makeStyles({
13131
13380
  container: {
13132
13381
  display: "flex",
13133
13382
  flexDirection: "column",
@@ -13167,12 +13416,14 @@ var useStyles39 = reactComponents.makeStyles({
13167
13416
  backgroundColor: reactComponents.tokens.colorBrandBackground2,
13168
13417
  color: reactComponents.tokens.colorBrandForeground1
13169
13418
  },
13170
- justifyContent: "flex-start"
13419
+ justifyContent: "flex-start",
13420
+ textAlign: "left"
13171
13421
  },
13172
13422
  tabItemLogout: {
13173
13423
  color: reactComponents.tokens.colorPaletteRedForeground1,
13174
13424
  backgroundColor: "transparent",
13175
13425
  justifyContent: "flex-start",
13426
+ textAlign: "left",
13176
13427
  "&:hover": {
13177
13428
  color: reactComponents.tokens.colorPaletteRedForeground1
13178
13429
  }
@@ -13185,7 +13436,7 @@ var CardProfileMenu = ({
13185
13436
  selectedValue,
13186
13437
  onTabSelect
13187
13438
  }) => {
13188
- const styles = useStyles39();
13439
+ const styles = useStyles40();
13189
13440
  ({ ...DEFAULT_LABELS39[language], ...labels });
13190
13441
  const handleTabSelect = (_, data) => {
13191
13442
  onTabSelect(data.value);
@@ -13215,6 +13466,9 @@ var CardProfileMenu = ({
13215
13466
  ) });
13216
13467
  };
13217
13468
 
13469
+ exports.API_CONFIG = API_CONFIG;
13470
+ exports.API_ENDPOINTS = API_ENDPOINTS;
13471
+ exports.API_ERROR_MESSAGES = API_ERROR_MESSAGES;
13218
13472
  exports.BackgroundTicketCard = BackgroundTicketCard_default;
13219
13473
  exports.BackgroundTicketCardVertical = BackgroundTicketCardVertical_default;
13220
13474
  exports.COUNTRIES = COUNTRIES;
@@ -13253,13 +13507,18 @@ exports.DEFAULT_VEHICLE_ICONS = DEFAULT_VEHICLE_ICONS;
13253
13507
  exports.DateFilter = DateFilter;
13254
13508
  exports.DateFilterDefaultLabels = DEFAULT_LABELS17;
13255
13509
  exports.FileUpload = FileUpload_default;
13510
+ exports.GENDER = GENDER;
13511
+ exports.HTTP_STATUS = HTTP_STATUS;
13512
+ exports.IDENTITY_TYPE = IDENTITY_TYPE;
13256
13513
  exports.InputDynamic = InputDynamic_default;
13514
+ exports.LOAD_TYPE = LOAD_TYPE;
13257
13515
  exports.MODAL_PRESETS = MODAL_PRESETS;
13258
13516
  exports.ModalFilterTicket = ModalFilterTicket;
13259
13517
  exports.ModalFilterTicketDefaultLabels = DEFAULT_LABELS16;
13260
13518
  exports.ModalIllustration = ModalIllustration;
13261
13519
  exports.ModalListPassenger = ModalListPassenger;
13262
13520
  exports.ModalPassengerForm = ModalPassengerForm;
13521
+ exports.ModalPreviewImage = ModalPreviewImage;
13263
13522
  exports.ModalPriceDetail = ModalPriceDetail;
13264
13523
  exports.ModalSearchHarbor = ModalSearchHarbor;
13265
13524
  exports.ModalSearchTicket = ModalSearchTicket;
@@ -13267,6 +13526,7 @@ exports.ModalSelectDate = ModalSelectDate;
13267
13526
  exports.ModalService = ModalService;
13268
13527
  exports.ModalTotalPassengers = ModalTotalPassengers;
13269
13528
  exports.ModalTypeOfService = ModalTypeOfService;
13529
+ exports.PASSENGER_TYPE = PASSENGER_TYPE;
13270
13530
  exports.SortMenu = SortMenu;
13271
13531
  exports.Stepper = Stepper;
13272
13532
  exports.getBadgeConfig = getBadgeConfig;