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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { makeStyles, tokens, createLightTheme, createDarkTheme, shorthands, Popover, PopoverTrigger, Input, PopoverSurface, Field, Caption1Strong, Caption2, Button, Dialog, DialogSurface, DialogBody, DialogTitle, DialogTrigger, DialogContent, Body1, Body1Strong, Caption1, Carousel, CarouselButton, CarouselViewport, mergeClasses, CarouselSlider, CarouselNav, CarouselNavButton, CarouselCard, Skeleton, SkeletonItem, Subtitle2, Card, Tooltip, Badge, Title2, Divider, Title3, Label, Text, Checkbox, MessageBar, MessageBarBody, Accordion, AccordionItem, AccordionHeader, AccordionPanel, RadioGroup, Radio, Menu, MenuTrigger, MenuPopover, MenuList, DialogActions, Caption2Strong, Subtitle1, Switch, Body1Stronger, Caption1Stronger, Display, Image, Title1, TabList, Tab, Body2, typographyStyles, Textarea, Link } from '@fluentui/react-components';
1
+ import { makeStyles, tokens, createLightTheme, createDarkTheme, shorthands, Popover, PopoverTrigger, Input, PopoverSurface, Field, Caption1Strong, Caption2, Button, Body1, Body1Strong, Caption1, Dialog, DialogSurface, DialogBody, DialogTitle, DialogTrigger, DialogContent, Carousel, CarouselButton, CarouselViewport, mergeClasses, CarouselSlider, CarouselNav, CarouselNavButton, CarouselCard, Skeleton, SkeletonItem, Subtitle2, Card, Tooltip, Badge, Title2, Divider, Title3, Label, Text, Checkbox, MessageBar, MessageBarBody, Accordion, AccordionItem, AccordionHeader, AccordionPanel, RadioGroup, Radio, Menu, MenuTrigger, MenuPopover, MenuList, DialogActions, Caption2Strong, Subtitle1, Body1Stronger, Caption1Stronger, Display, Image, Title1, TabList, Tab, Body2, typographyStyles, Switch, Textarea, Link } from '@fluentui/react-components';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import React5, { forwardRef, useState, useRef, useEffect, useCallback, useMemo, Fragment as Fragment$1 } from 'react';
4
- import { Dismiss24Regular, DismissRegular, SubtractRegular, AddRegular, DeleteRegular, InfoRegular } from '@fluentui/react-icons';
4
+ import { Dismiss24Regular, DismissRegular, SubtractRegular, AddRegular, DeleteRegular, InfoRegular, SearchRegular } from '@fluentui/react-icons';
5
5
  import { Container, Row, Col, Visible } from 'react-grid-system';
6
6
  import { Icon } from '@iconify/react';
7
7
  import { Controller, useForm, useWatch } from 'react-hook-form';
@@ -335,6 +335,148 @@ var extendedTokens = {
335
335
  colorBrandForegroundLinkHover: customBrand[120],
336
336
  colorBrandForegroundLinkPressed: customBrand[130],
337
337
  colorBrandForegroundLinkSelected: customBrand[110]});
338
+
339
+ // src/constants/api.ts
340
+ var API_ENDPOINTS = {
341
+ PORTS: {
342
+ ORIGIN: "/v1/surrounding/catalog/ports/list/origin",
343
+ DESTINATION: "/v1/surrounding/catalog/ports/list/destination"
344
+ },
345
+ SERVICES: {
346
+ LIST: "/v1/surrounding/catalog/service-types"
347
+ },
348
+ PASSENGERS: {
349
+ LIST: "/v1/surrounding/catalog/passenger-types"
350
+ },
351
+ // Authentication endpoints
352
+ AUTH: {
353
+ LOGIN: "/v1/surrounding/auth/login",
354
+ REGISTER: "/auth/register",
355
+ LOGOUT: "/auth/logout",
356
+ REFRESH: "/auth/refresh",
357
+ PROFILE: "/auth/profile",
358
+ UPDATE_PROFILE: "/auth/profile",
359
+ CHANGE_PASSWORD: "/auth/change-password",
360
+ FORGOT_PASSWORD: "/auth/forgot-password",
361
+ RESET_PASSWORD: "/auth/reset-password",
362
+ VERIFY_EMAIL: "/auth/verify-email"
363
+ },
364
+ // User management
365
+ USERS: {
366
+ LIST: "/users",
367
+ CREATE: "/users",
368
+ DETAIL: (id) => `/users/${id}`,
369
+ UPDATE: (id) => `/users/${id}`,
370
+ DELETE: (id) => `/users/${id}`,
371
+ AVATAR: (id) => `/users/${id}/avatar`
372
+ },
373
+ // File management
374
+ FILES: {
375
+ UPLOAD: "/files/upload",
376
+ DOWNLOAD: (id) => `/files/${id}/download`,
377
+ DELETE: (id) => `/files/${id}`,
378
+ LIST: "/files"
379
+ },
380
+ // Dashboard/Analytics
381
+ DASHBOARD: {
382
+ STATS: "/dashboard/stats",
383
+ CHART_DATA: "/dashboard/chart-data",
384
+ RECENT_ACTIVITIES: "/dashboard/recent-activities"
385
+ },
386
+ // Notifications
387
+ NOTIFICATIONS: {
388
+ LIST: "/notifications",
389
+ MARK_READ: (id) => `/notifications/${id}/read`,
390
+ MARK_ALL_READ: "/notifications/read-all",
391
+ DELETE: (id) => `/notifications/${id}`,
392
+ SETTINGS: "/notifications/settings"
393
+ },
394
+ // Settings
395
+ SETTINGS: {
396
+ GENERAL: "/settings/general",
397
+ SECURITY: "/settings/security",
398
+ PREFERENCES: "/settings/preferences"
399
+ }
400
+ };
401
+ var API_CONFIG = {
402
+ TIMEOUT: 3e4,
403
+ RETRY_ATTEMPTS: 3,
404
+ RETRY_DELAY: 1e3,
405
+ CACHE_TIME: 5 * 60 * 1e3,
406
+ // 5 minutes
407
+ STALE_TIME: 2 * 60 * 1e3
408
+ // 2 minutes
409
+ };
410
+ var API_ERROR_MESSAGES = {
411
+ NETWORK_ERROR: "Network error occurred. Please check your connection.",
412
+ TIMEOUT_ERROR: "Request timeout. Please try again.",
413
+ UNAUTHORIZED: "You are not authorized to perform this action.",
414
+ FORBIDDEN: "Access denied.",
415
+ NOT_FOUND: "Resource not found.",
416
+ SERVER_ERROR: "Internal server error. Please try again later.",
417
+ VALIDATION_ERROR: "Please check your input and try again.",
418
+ TOKEN_EXPIRED: "Your session has expired. Please login again.",
419
+ RATE_LIMIT: "Too many requests. Please try again later."
420
+ };
421
+ var HTTP_STATUS = {
422
+ OK: 200,
423
+ CREATED: 201,
424
+ NO_CONTENT: 204,
425
+ BAD_REQUEST: 400,
426
+ UNAUTHORIZED: 401,
427
+ FORBIDDEN: 403,
428
+ NOT_FOUND: 404,
429
+ CONFLICT: 409,
430
+ UNPROCESSABLE_ENTITY: 422,
431
+ TOO_MANY_REQUESTS: 429,
432
+ INTERNAL_SERVER_ERROR: 500,
433
+ BAD_GATEWAY: 502,
434
+ SERVICE_UNAVAILABLE: 503
435
+ };
436
+ var PASSENGER_TYPE = {
437
+ ADULT: 1,
438
+ CHILD: 2,
439
+ INFANT: 3,
440
+ ELDERLY: 5
441
+ };
442
+ var IDENTITY_TYPE = {
443
+ KTP: 1,
444
+ SIM: 2,
445
+ PSP: 3,
446
+ TGL: 4
447
+ };
448
+ var LOAD_TYPE = {
449
+ PEDESTRIAN: 1,
450
+ MOTORBIKE: 2,
451
+ PASSENGER_VEHICLE: 3,
452
+ GOODS_VEHICLE: 4,
453
+ LOOSE_LOAD_WITH_VEHICLE: 5,
454
+ LOOSE_LOAD_WITHOUT_VEHICLE: 6
455
+ };
456
+ var GENDER = {
457
+ MALE: "M",
458
+ FEMALE: "F"
459
+ };
460
+ var MY_TICKET_TAB = {
461
+ WAITING: 1,
462
+ ACTIVE: 2,
463
+ COMPLETED: 3,
464
+ FAILED: 4,
465
+ RETURNED: 5
466
+ };
467
+ var MY_TICKET_STATUS = {
468
+ DRAFT: 1,
469
+ NOT_YET_PAID: 2,
470
+ PAID: 3,
471
+ CHECKIN: 4,
472
+ BOARDING: 5,
473
+ NEED_ACTION: 6,
474
+ COMPLETED: 7,
475
+ EXPIRED_CHECKIN: 8,
476
+ EXPIRED_PAYMENT: 9,
477
+ EXPIRED_BOARDING: 10,
478
+ REFUND: 11
479
+ };
338
480
  var useStyles2 = makeStyles({
339
481
  carousel: {},
340
482
  carouselContainer: {
@@ -924,6 +1066,15 @@ var DEFAULT_LABELS5 = {
924
1066
  logoAlt: "ASDP Logo"
925
1067
  }
926
1068
  };
1069
+
1070
+ // src/utils/format.ts
1071
+ function formatDuration(minutes) {
1072
+ const hours = Math.floor(minutes / 60);
1073
+ const mins = minutes % 60;
1074
+ if (hours && mins) return `${hours} jam ${mins} menit`;
1075
+ if (hours) return `${hours} jam`;
1076
+ return `${mins} menit`;
1077
+ }
927
1078
  var useStyles5 = makeStyles({
928
1079
  dividerContainer: {
929
1080
  position: "relative",
@@ -961,12 +1112,12 @@ var useStyles5 = makeStyles({
961
1112
  },
962
1113
  circularLeft: {
963
1114
  position: "absolute",
964
- width: "100px",
965
- height: "50px",
1115
+ width: "80px",
1116
+ height: "80px",
966
1117
  borderRadius: "50%",
967
1118
  backgroundColor: tokens.colorNeutralBackground1Hover,
968
- left: "-50px",
969
- boxShadow: "inset -3px 0px 1px rgba(0, 0, 0, 0.1)"
1119
+ left: "-50px"
1120
+ // boxShadow: "inset -3px 0px 1px rgba(0, 0, 0, 0.1)",
970
1121
  },
971
1122
  ticketMiddleCard: {
972
1123
  width: "100%",
@@ -1071,12 +1222,12 @@ var useStyles5 = makeStyles({
1071
1222
  },
1072
1223
  circularRight: {
1073
1224
  position: "absolute",
1074
- width: "100px",
1075
- height: "50px",
1225
+ width: "80px",
1226
+ height: "80px",
1076
1227
  borderRadius: "50%",
1077
1228
  backgroundColor: tokens.colorNeutralBackground1Hover,
1078
- right: "-50px",
1079
- boxShadow: "inset 3px 0px 1px rgba(0, 0, 0, 0.1)"
1229
+ right: "-50px"
1230
+ // boxShadow: "inset 3px 0px 1px rgba(0, 0, 0, 0.1)",
1080
1231
  },
1081
1232
  ticketWrapper: {
1082
1233
  borderRadius: tokens.borderRadiusXLarge,
@@ -1122,21 +1273,8 @@ var useStyles5 = makeStyles({
1122
1273
  var CardTicket = ({
1123
1274
  language = "id",
1124
1275
  labels,
1125
- id,
1126
- shipName,
1127
- shipType,
1128
- shipTypeColor = "success",
1129
- tooltipCaption = "",
1130
- availableSeats,
1131
- departureDay,
1132
- departureTime,
1133
- departureLocation,
1134
- arrivalDay,
1135
- arrivalTime,
1136
- arrivalLocation,
1137
- duration,
1138
- facilities,
1139
- totalPrice,
1276
+ routeItem,
1277
+ departureItem,
1140
1278
  buttonText,
1141
1279
  onPriceDetailClick,
1142
1280
  onPolicyClick,
@@ -1146,8 +1284,8 @@ var CardTicket = ({
1146
1284
  const { width } = useWindowSize();
1147
1285
  const mergedLabels = { ...DEFAULT_LABELS5[language], ...labels };
1148
1286
  const getCircularVerticalConfig = () => {
1149
- if (width <= 1600) return { count: 6, spacing: 60, top: 10 };
1150
- return { count: 5, spacing: 60, top: 18 };
1287
+ if (width <= 1600) return { count: 3, spacing: 120, top: 25 };
1288
+ return { count: 3, spacing: 100, top: 25 };
1151
1289
  };
1152
1290
  const circularVerticalConfig = getCircularVerticalConfig();
1153
1291
  return /* @__PURE__ */ jsxs(Row, { className: styles.ticketWrapper, children: [
@@ -1182,7 +1320,7 @@ var CardTicket = ({
1182
1320
  children: /* @__PURE__ */ jsx(
1183
1321
  Tooltip,
1184
1322
  {
1185
- content: tooltipCaption,
1323
+ content: departureItem?.provider?.description,
1186
1324
  relationship: "label",
1187
1325
  appearance: "inverted",
1188
1326
  children: /* @__PURE__ */ jsx(
@@ -1190,11 +1328,11 @@ var CardTicket = ({
1190
1328
  {
1191
1329
  size: "large",
1192
1330
  appearance: "filled",
1193
- color: shipTypeColor,
1331
+ style: { backgroundColor: departureItem?.provider?.serviceColor },
1194
1332
  iconPosition: "before",
1195
1333
  shape: "rounded",
1196
1334
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:info-24-regular" }),
1197
- children: shipType
1335
+ children: departureItem?.provider?.service
1198
1336
  }
1199
1337
  )
1200
1338
  }
@@ -1219,7 +1357,7 @@ var CardTicket = ({
1219
1357
  children: /* @__PURE__ */ jsx(
1220
1358
  "img",
1221
1359
  {
1222
- src: "/assets/logo/asdp-default.svg",
1360
+ src: departureItem?.provider?.logo,
1223
1361
  className: styles.asdpLogo,
1224
1362
  alt: mergedLabels.logoAlt,
1225
1363
  height: 56,
@@ -1248,17 +1386,17 @@ var CardTicket = ({
1248
1386
  {
1249
1387
  size: "large",
1250
1388
  style: {
1251
- color: availableSeats > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1389
+ color: departureItem?.availableTicket > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1252
1390
  },
1253
1391
  appearance: "tint",
1254
- color: availableSeats > 50 ? "success" : "danger",
1392
+ color: departureItem?.availableTicket > 50 ? "success" : "danger",
1255
1393
  iconPosition: "after",
1256
1394
  shape: "rounded",
1257
1395
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
1258
1396
  children: [
1259
1397
  mergedLabels.availableSeatsLabel,
1260
1398
  " ",
1261
- availableSeats
1399
+ departureItem?.availableTicket
1262
1400
  ]
1263
1401
  }
1264
1402
  )
@@ -1275,7 +1413,7 @@ var CardTicket = ({
1275
1413
  xl: 12,
1276
1414
  xxl: 12,
1277
1415
  xxxl: 12,
1278
- children: /* @__PURE__ */ jsx(Subtitle2, { children: shipName })
1416
+ children: /* @__PURE__ */ jsx(Subtitle2, { children: departureItem?.provider?.name })
1279
1417
  }
1280
1418
  )
1281
1419
  ] }),
@@ -1315,46 +1453,42 @@ var CardTicket = ({
1315
1453
  {
1316
1454
  size: "extra-large",
1317
1455
  style: {
1318
- color: availableSeats > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1456
+ color: departureItem?.availableTicket > 50 ? sharedColors.Shared_Green_Primary : sharedColors.Shared_Red_Primary
1319
1457
  },
1320
1458
  appearance: "tint",
1321
- color: availableSeats > 50 ? "success" : "danger",
1459
+ color: departureItem?.availableTicket > 50 ? "success" : "danger",
1322
1460
  iconPosition: "after",
1323
1461
  shape: "rounded",
1324
1462
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:ticket-diagonal-24-regular" }),
1325
1463
  children: [
1326
1464
  mergedLabels.availableSeatsLabel,
1327
1465
  " ",
1328
- availableSeats
1466
+ departureItem?.availableTicket
1329
1467
  ]
1330
1468
  }
1331
1469
  ) }),
1332
1470
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: styles.ticketInfo, children: [
1333
1471
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
1334
- /* @__PURE__ */ jsx(Caption1, { children: departureDay }),
1335
- /* @__PURE__ */ jsxs(Title2, { children: [
1336
- departureTime,
1337
- " ",
1338
- mergedLabels.timezoneLabel
1339
- ] }),
1340
- /* @__PURE__ */ jsx(Caption1, { children: departureLocation })
1472
+ /* @__PURE__ */ jsx(Caption1, { children: "KAMIS" }),
1473
+ /* @__PURE__ */ jsx(Title2, { children: departureItem?.departureTime }),
1474
+ /* @__PURE__ */ jsx(Caption1, { children: routeItem?.portFrom + ", " + routeItem?.branchFrom })
1341
1475
  ] }),
1342
1476
  /* @__PURE__ */ jsxs("div", { className: styles.ticketDuration, children: [
1343
1477
  /* @__PURE__ */ jsxs(Caption2, { children: [
1344
1478
  mergedLabels.estimationPrefix,
1345
1479
  " ",
1346
- duration
1480
+ formatDuration(departureItem?.estimatedSailingMinute)
1347
1481
  ] }),
1348
1482
  /* @__PURE__ */ jsx("div", { className: styles.dividerContainer, children: /* @__PURE__ */ jsx(Divider, { children: /* @__PURE__ */ jsx(Icon, { icon: "fluent:vehicle-ship-24-regular", height: 24 }) }) })
1349
1483
  ] }),
1350
1484
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
1351
- /* @__PURE__ */ jsx(Caption1, { children: arrivalDay }),
1485
+ /* @__PURE__ */ jsx(Caption1, { children: "KAMIS" }),
1352
1486
  /* @__PURE__ */ jsxs(Title2, { children: [
1353
- arrivalTime,
1487
+ departureItem?.arrivedTime,
1354
1488
  " ",
1355
1489
  mergedLabels.timezoneLabel
1356
1490
  ] }),
1357
- /* @__PURE__ */ jsx(Caption1, { children: arrivalLocation })
1491
+ /* @__PURE__ */ jsx(Caption1, { children: routeItem?.portTo + ", " + routeItem?.branchTo })
1358
1492
  ] })
1359
1493
  ] }) }),
1360
1494
  /* @__PURE__ */ jsxs("div", { className: styles.ticketButtons, children: [
@@ -1370,7 +1504,7 @@ var CardTicket = ({
1370
1504
  },
1371
1505
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:money-24-regular" }),
1372
1506
  size: "medium",
1373
- onClick: onPriceDetailClick,
1507
+ onClick: () => onPriceDetailClick(departureItem?.billingDetail, departureItem?.provider),
1374
1508
  children: mergedLabels.priceDetailsButton
1375
1509
  }
1376
1510
  ),
@@ -1428,9 +1562,7 @@ var CardTicket = ({
1428
1562
  children: [
1429
1563
  mergedLabels.currencySymbol,
1430
1564
  "\xA0",
1431
- totalPrice.toLocaleString(
1432
- language === "id" ? "id-ID" : "en-US"
1433
- )
1565
+ departureItem?.billingDetail?.total?.formatted
1434
1566
  ]
1435
1567
  }
1436
1568
  )
@@ -1452,7 +1584,7 @@ var CardTicket = ({
1452
1584
  ] }),
1453
1585
  /* @__PURE__ */ jsxs("div", { className: styles.facilitiesSection, children: [
1454
1586
  /* @__PURE__ */ jsx(Subtitle2, { children: mergedLabels.facilitiesLabel }),
1455
- /* @__PURE__ */ jsx("div", { className: styles.facilitiesList, children: facilities.map((facility, idx) => /* @__PURE__ */ jsxs("div", { className: styles.facilityItem, children: [
1587
+ /* @__PURE__ */ jsx("div", { className: styles.facilitiesList, children: departureItem?.provider?.facilities.map((facility, idx) => /* @__PURE__ */ jsxs("div", { className: styles.facilityItem, children: [
1456
1588
  /* @__PURE__ */ jsx(Icon, { icon: "fluent:checkmark-circle-24-filled" }),
1457
1589
  /* @__PURE__ */ jsx(Caption1Strong, { children: facility })
1458
1590
  ] }, idx)) })
@@ -1790,6 +1922,12 @@ var useStyles6 = makeStyles({
1790
1922
  fontSize: tokens.fontSizeBase200,
1791
1923
  fontWeight: tokens.fontWeightRegular,
1792
1924
  color: tokens.colorNeutralForeground2,
1925
+ // truncate text with ellipsis 2 line
1926
+ display: "-webkit-box",
1927
+ WebkitLineClamp: 2,
1928
+ WebkitBoxOrient: "vertical",
1929
+ overflow: "hidden",
1930
+ textOverflow: "ellipsis",
1793
1931
  lineHeight: "1.4",
1794
1932
  "@media (max-width: 1200px)": {
1795
1933
  fontSize: tokens.fontSizeBase100,
@@ -1831,10 +1969,23 @@ var CardServiceMenu = ({
1831
1969
  onClick: () => onServiceClick?.(item.id),
1832
1970
  "aria-label": item.name,
1833
1971
  children: [
1834
- /* @__PURE__ */ jsx("img", { src: item.imageUrl, alt: item.name, className: styles.logo }),
1972
+ /* @__PURE__ */ jsx(
1973
+ "img",
1974
+ {
1975
+ src: item.imageUrl,
1976
+ alt: item.name,
1977
+ className: styles.logo
1978
+ }
1979
+ ),
1835
1980
  /* @__PURE__ */ jsxs("div", { className: styles.textContent, children: [
1836
1981
  /* @__PURE__ */ jsx("span", { className: styles.label, children: item.name }),
1837
- showDescriptions && /* @__PURE__ */ jsx("span", { className: styles.description, children: item.description })
1982
+ showDescriptions && /* @__PURE__ */ jsx(
1983
+ MenuItemDescription,
1984
+ {
1985
+ description: item.description,
1986
+ className: styles.description
1987
+ }
1988
+ )
1838
1989
  ] })
1839
1990
  ]
1840
1991
  }
@@ -1846,6 +1997,40 @@ var CardServiceMenu = ({
1846
1997
  ] }, item.id);
1847
1998
  }) }) });
1848
1999
  };
2000
+ function useIsClamped(deps) {
2001
+ const ref = useRef(null);
2002
+ const [isClamped, setIsClamped] = useState(false);
2003
+ useEffect(() => {
2004
+ const el = ref.current;
2005
+ if (!el) return;
2006
+ const check = () => setIsClamped(el.scrollHeight > el.clientHeight);
2007
+ const timer = setTimeout(check, 0);
2008
+ const observer = new ResizeObserver(check);
2009
+ observer.observe(el);
2010
+ return () => {
2011
+ clearTimeout(timer);
2012
+ observer.disconnect();
2013
+ };
2014
+ }, deps ?? []);
2015
+ return { ref, isClamped };
2016
+ }
2017
+ var MenuItemDescription = ({ description, className }) => {
2018
+ const { ref, isClamped } = useIsClamped([description]);
2019
+ console.log({ isClamped, ref });
2020
+ if (isClamped) {
2021
+ return /* @__PURE__ */ jsx(
2022
+ Tooltip,
2023
+ {
2024
+ appearance: "inverted",
2025
+ content: description,
2026
+ relationship: "label",
2027
+ positioning: "after",
2028
+ children: /* @__PURE__ */ jsx("span", { ref, className, children: description })
2029
+ }
2030
+ );
2031
+ }
2032
+ return /* @__PURE__ */ jsx("span", { ref, className, children: description });
2033
+ };
1849
2034
  var DatePickerInput = forwardRef(
1850
2035
  ({
1851
2036
  field,
@@ -2138,6 +2323,7 @@ var useStyles7 = makeStyles({
2138
2323
  border: `1px solid ${tokens.colorNeutralStroke1}`,
2139
2324
  borderRadius: tokens.borderRadiusMedium,
2140
2325
  padding: tokens.spacingVerticalS,
2326
+ borderBottom: `1px solid ${tokens.colorNeutralForeground3}`,
2141
2327
  paddingLeft: "48px",
2142
2328
  // fontSize: tokens.fontSizeBase300,
2143
2329
  fontFamily: tokens.fontFamilyBase,
@@ -2151,10 +2337,11 @@ var useStyles7 = makeStyles({
2151
2337
  // fontSize: tokens.fontSizeBase400,
2152
2338
  },
2153
2339
  "& .react-tel-input .form-control:hover": {
2154
- border: `1px solid ${tokens.colorNeutralStroke1Hover}`
2340
+ border: `1px solid ${tokens.colorNeutralStroke1Hover}`,
2341
+ borderBottom: `1px solid ${tokens.colorNeutralForeground3Hover}`
2155
2342
  },
2156
2343
  "& .react-tel-input .form-control:focus": {
2157
- borderBottom: `2px solid ${tokens.colorBrandStroke1}`
2344
+ borderBottom: `2px solid ${tokens.colorBrandStroke1} !important`
2158
2345
  // boxShadow: `0 0 0 1px ${tokens.colorBrandStroke1}`,
2159
2346
  },
2160
2347
  "& .react-tel-input .form-control:disabled": {
@@ -2179,6 +2366,77 @@ var useStyles7 = makeStyles({
2179
2366
  backgroundColor: "transparent"
2180
2367
  }
2181
2368
  },
2369
+ // Appearance: underline
2370
+ phoneInputUnderline: {
2371
+ "& .react-tel-input .form-control": {
2372
+ border: "none",
2373
+ borderBottom: `1px solid ${tokens.colorNeutralForeground3}`,
2374
+ borderRadius: 0,
2375
+ backgroundColor: "transparent",
2376
+ paddingLeft: "48px"
2377
+ },
2378
+ "& .react-tel-input .form-control:hover": {
2379
+ border: "none",
2380
+ borderBottom: `1px solid ${tokens.colorNeutralForeground3Hover}`
2381
+ },
2382
+ "& .react-tel-input .form-control:focus": {
2383
+ border: "none",
2384
+ borderBottom: `2px solid ${tokens.colorBrandStroke1}`,
2385
+ boxShadow: "none"
2386
+ },
2387
+ "& .react-tel-input .flag-dropdown": {
2388
+ border: "none",
2389
+ backgroundColor: "transparent"
2390
+ }
2391
+ },
2392
+ // Appearance: filled-darker
2393
+ phoneInputFilledDarker: {
2394
+ "& .react-tel-input .form-control": {
2395
+ border: "none",
2396
+ borderBottom: `1px solid transparent`,
2397
+ borderRadius: `${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium} 0 0`,
2398
+ backgroundColor: tokens.colorNeutralBackground3,
2399
+ paddingLeft: "48px"
2400
+ },
2401
+ "& .react-tel-input .form-control:hover": {
2402
+ border: "none",
2403
+ borderBottom: `1px solid transparent`,
2404
+ backgroundColor: tokens.colorNeutralBackground3Hover
2405
+ },
2406
+ "& .react-tel-input .form-control:focus": {
2407
+ border: "none",
2408
+ borderBottom: `2px solid ${tokens.colorBrandStroke1}`,
2409
+ boxShadow: "none"
2410
+ },
2411
+ "& .react-tel-input .flag-dropdown": {
2412
+ border: "none",
2413
+ backgroundColor: "transparent"
2414
+ }
2415
+ },
2416
+ // Appearance: filled-lighter
2417
+ phoneInputFilledLighter: {
2418
+ "& .react-tel-input .form-control": {
2419
+ border: "none",
2420
+ borderBottom: `1px solid transparent`,
2421
+ borderRadius: `${tokens.borderRadiusMedium} ${tokens.borderRadiusMedium} 0 0`,
2422
+ backgroundColor: tokens.colorNeutralBackground1,
2423
+ paddingLeft: "48px"
2424
+ },
2425
+ "& .react-tel-input .form-control:hover": {
2426
+ border: "none",
2427
+ borderBottom: `1px solid transparent`,
2428
+ backgroundColor: tokens.colorNeutralBackground1Hover
2429
+ },
2430
+ "& .react-tel-input .form-control:focus": {
2431
+ border: "none",
2432
+ borderBottom: `2px solid ${tokens.colorBrandStroke1}`,
2433
+ boxShadow: "none"
2434
+ },
2435
+ "& .react-tel-input .flag-dropdown": {
2436
+ border: "none",
2437
+ backgroundColor: "transparent"
2438
+ }
2439
+ },
2182
2440
  phoneInputError: {
2183
2441
  "& .react-tel-input .form-control": {
2184
2442
  border: `2px solid ${tokens.colorPaletteRedBorder2}`
@@ -2501,6 +2759,13 @@ var InputDynamic = ({
2501
2759
  };
2502
2760
  const renderInput = (field, error) => {
2503
2761
  const shouldTransparentBorder = disabled && appearance !== "outline" && appearance !== "underline";
2762
+ const getPhoneAppearanceClass = () => {
2763
+ if (appearance === "underline") return styles.phoneInputUnderline;
2764
+ if (appearance === "filled-darker") return styles.phoneInputFilledDarker;
2765
+ if (appearance === "filled-lighter") return styles.phoneInputFilledLighter;
2766
+ return "";
2767
+ };
2768
+ const phoneAppearanceClass = getPhoneAppearanceClass();
2504
2769
  const inputStyle = shouldTransparentBorder ? { ...style, border: "transparent" } : style;
2505
2770
  const handleInputChange = (e) => {
2506
2771
  field.onChange(e);
@@ -2528,6 +2793,12 @@ var InputDynamic = ({
2528
2793
  const otpIndex2 = otpMatch ? parseInt(otpMatch[1], 10) : null;
2529
2794
  const classNameSize = size === "small" ? styles.valueSmall : size === "medium" ? styles.valueMedium : styles.valueLarge;
2530
2795
  const fontSizeValuePhoneInput = size == "small" ? tokens.fontSizeBase200 : size === "medium" ? tokens.fontSizeBase300 : tokens.fontSizeBase400;
2796
+ const phoneInputSizeStyle = {
2797
+ fontSize: fontSizeValuePhoneInput,
2798
+ ...size === "small" && { minHeight: "26px", height: "26px", padding: `0 ${tokens.spacingHorizontalS} 0 48px` },
2799
+ ...size === "medium" && { minHeight: "34px", height: "34px", padding: `${tokens.spacingVerticalXXS} ${tokens.spacingHorizontalS} ${tokens.spacingVerticalXXS} 48px` },
2800
+ ...size === "large" && { minHeight: "40px", height: "40px", padding: `${tokens.spacingVerticalXS} ${tokens.spacingHorizontalS} ${tokens.spacingVerticalXS} 48px` }
2801
+ };
2531
2802
  if (type === "emailOrPhone") {
2532
2803
  updateEmailOrPhoneType(field.value);
2533
2804
  const stringValue = typeof field.value === "string" ? field.value : "";
@@ -2563,13 +2834,11 @@ var InputDynamic = ({
2563
2834
  "div",
2564
2835
  {
2565
2836
  ref: emailOrPhoneInputRef,
2566
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
2837
+ className: mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2567
2838
  children: /* @__PURE__ */ jsx(
2568
2839
  PhoneInput,
2569
2840
  {
2570
- inputStyle: {
2571
- fontSize: fontSizeValuePhoneInput
2572
- },
2841
+ inputStyle: phoneInputSizeStyle,
2573
2842
  country: defaultCountry.toLowerCase(),
2574
2843
  value: stringValue.startsWith("+") ? stringValue.substring(1) : stringValue,
2575
2844
  onChange: (value, data) => {
@@ -2668,7 +2937,7 @@ var InputDynamic = ({
2668
2937
  "div",
2669
2938
  {
2670
2939
  ref: phoneInputRef,
2671
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
2940
+ className: mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2672
2941
  children: /* @__PURE__ */ jsx(
2673
2942
  PhoneInput,
2674
2943
  {
@@ -2710,9 +2979,7 @@ var InputDynamic = ({
2710
2979
  disabled,
2711
2980
  enableSearch: true,
2712
2981
  disableSearchIcon: true,
2713
- inputStyle: {
2714
- fontSize: fontSizeValuePhoneInput
2715
- }
2982
+ inputStyle: phoneInputSizeStyle
2716
2983
  }
2717
2984
  )
2718
2985
  }
@@ -2795,7 +3062,7 @@ var InputDynamic = ({
2795
3062
  name: `${String(name)}_${Math.random().toString(36).substring(7)}`,
2796
3063
  isDisabled: disabled,
2797
3064
  placeholder: placeholder || "Select country",
2798
- options: COUNTRIES,
3065
+ options: options && options.length > 0 ? options : COUNTRIES,
2799
3066
  styles: getSelectStyles(!!error),
2800
3067
  className: mergeClasses(styles.reactSelect, classNameSize),
2801
3068
  classNamePrefix: "react-select",
@@ -2819,7 +3086,7 @@ var InputDynamic = ({
2819
3086
  {
2820
3087
  style: { display: "flex", alignItems: "center", gap: "8px" },
2821
3088
  children: [
2822
- /* @__PURE__ */ jsx(Icon, { icon: option.flag, width: 20, height: 20 }),
3089
+ options && options.length > 0 ? option.flag ? option.flag.startsWith("http") ? /* @__PURE__ */ jsx("img", { alt: option.label, src: option.flag, height: 20, width: 20, style: { objectFit: "contain" } }) : /* @__PURE__ */ jsx(Icon, { icon: option.flag, width: 20, height: 20 }) : null : option.flag ? /* @__PURE__ */ jsx(Icon, { icon: option.flag, width: 20, height: 20 }) : null,
2823
3090
  /* @__PURE__ */ jsx("span", { children: option.label })
2824
3091
  ]
2825
3092
  }
@@ -2841,7 +3108,7 @@ var InputDynamic = ({
2841
3108
  return /* @__PURE__ */ jsx(
2842
3109
  "div",
2843
3110
  {
2844
- className: `${styles.phoneInputWrapper} ${error ? styles.phoneInputError : ""}`,
3111
+ className: mergeClasses(styles.phoneInputWrapper, phoneAppearanceClass, error ? styles.phoneInputError : ""),
2845
3112
  children: /* @__PURE__ */ jsx(
2846
3113
  PhoneInput,
2847
3114
  {
@@ -2855,9 +3122,7 @@ var InputDynamic = ({
2855
3122
  disabled,
2856
3123
  enableSearch: true,
2857
3124
  disableSearchIcon: true,
2858
- inputStyle: {
2859
- fontSize: fontSizeValuePhoneInput
2860
- }
3125
+ inputStyle: phoneInputSizeStyle
2861
3126
  }
2862
3127
  )
2863
3128
  }
@@ -4061,9 +4326,10 @@ var useStyles9 = makeStyles({
4061
4326
  },
4062
4327
  circular: {
4063
4328
  position: "absolute",
4064
- width: "clamp(40px, 7vw, 90px)",
4065
- height: "clamp(40px, 7vw, 90px)",
4066
- borderRadius: "50% 50% 0 0",
4329
+ width: "clamp(45px, 8vw, 90px)",
4330
+ height: "clamp(22.5px, 4vw, 45px)",
4331
+ // lebih kecil dari width
4332
+ borderRadius: "50% 50% 0 0 / 100% 100% 0 0",
4067
4333
  backgroundColor: tokens.colorNeutralBackground1Hover,
4068
4334
  bottom: "-10px",
4069
4335
  boxShadow: "inset 0 2px 0px rgba(0, 0, 0, 0.1)"
@@ -4087,23 +4353,27 @@ var CardTicketSearchSummary = ({
4087
4353
  const { width } = useWindowSize();
4088
4354
  const getCircularConfig = () => {
4089
4355
  if (width <= parseInt(extendedTokens.breakpointXs))
4090
- return { count: 4, spacing: 65, size: 30, height: 30 };
4356
+ return { count: 4, spacing: 65 };
4091
4357
  if (width <= parseInt(extendedTokens.breakpointSm))
4092
- return { count: 5, spacing: 71, size: 40, height: 40 };
4358
+ return { count: 5, spacing: 71 };
4093
4359
  if (width <= parseInt(extendedTokens.breakpointMd))
4094
- return { count: 8, spacing: 87, size: 50, height: 50 };
4360
+ return { count: 8, spacing: 87 };
4095
4361
  if (width <= parseInt(extendedTokens.breakpointLg))
4096
- return { count: 9, spacing: 100, size: 60, height: 60 };
4362
+ return { count: 9, spacing: 100 };
4097
4363
  if (width <= parseInt(extendedTokens.breakpointXl))
4098
- return { count: 8, spacing: 115, size: 70, height: 70 };
4364
+ return { count: 8, spacing: 115 };
4099
4365
  if (width <= parseInt(extendedTokens.breakpointXxl))
4100
- return { count: 8, spacing: 136, size: 90, height: 90 };
4366
+ return { count: 8, spacing: 125 };
4101
4367
  if (width <= parseInt(extendedTokens.breakpointXxxl))
4102
- return { count: 8, spacing: 136, size: 90, height: 90 };
4103
- return { count: 11, spacing: 136, size: 100, height: 90 };
4368
+ return { count: 9, spacing: 120 };
4369
+ return { count: 13, spacing: 114 };
4104
4370
  };
4105
4371
  const circularConfig = getCircularConfig();
4106
- const RenderField = ({ label, value, icon }) => {
4372
+ const RenderField = ({
4373
+ label,
4374
+ value,
4375
+ icon
4376
+ }) => {
4107
4377
  return /* @__PURE__ */ jsxs(
4108
4378
  "div",
4109
4379
  {
@@ -4131,12 +4401,18 @@ var CardTicketSearchSummary = ({
4131
4401
  style: { height: "20px", width: "20px" }
4132
4402
  }
4133
4403
  ),
4134
- /* @__PURE__ */ jsx(Body1Strong, { style: {
4135
- display: "-webkit-box",
4136
- WebkitLineClamp: 1,
4137
- WebkitBoxOrient: "vertical",
4138
- overflow: "hidden"
4139
- }, children: value })
4404
+ /* @__PURE__ */ jsx(
4405
+ Body1Strong,
4406
+ {
4407
+ style: {
4408
+ display: "-webkit-box",
4409
+ WebkitLineClamp: 1,
4410
+ WebkitBoxOrient: "vertical",
4411
+ overflow: "hidden"
4412
+ },
4413
+ children: value
4414
+ }
4415
+ )
4140
4416
  ]
4141
4417
  }
4142
4418
  )
@@ -4531,7 +4807,8 @@ var ModalSearchHarbor = ({
4531
4807
  onAddLastSearched,
4532
4808
  onRemoveLastSearched,
4533
4809
  onClearLastSearched,
4534
- popularHarbors
4810
+ popularHarbors,
4811
+ showButtonFavorite = true
4535
4812
  }) => {
4536
4813
  const styles = useStyles10();
4537
4814
  const mergedLabels = { ...DEFAULT_LABELS10[language], ...labels };
@@ -4685,7 +4962,7 @@ var ModalSearchHarbor = ({
4685
4962
  ]
4686
4963
  }
4687
4964
  ),
4688
- /* @__PURE__ */ jsx(
4965
+ showButtonFavorite && /* @__PURE__ */ jsx(
4689
4966
  Icon,
4690
4967
  {
4691
4968
  icon: harbor.isFavorite ? "fluent:star-24-filled" : "fluent:star-24-regular",
@@ -5437,7 +5714,7 @@ var ModalTotalPassengers = ({
5437
5714
  const parts = [];
5438
5715
  passenger.classes.forEach((cls) => {
5439
5716
  if ((cls.count ?? 0) > 0) {
5440
- const displayName = cls.classCode?.toUpperCase();
5717
+ const displayName = cls.className?.toUpperCase();
5441
5718
  parts.push(`${cls.count} ${displayName}`);
5442
5719
  }
5443
5720
  });
@@ -5561,7 +5838,7 @@ var ModalTotalPassengers = ({
5561
5838
  {
5562
5839
  className: styles.nestedRow,
5563
5840
  children: [
5564
- /* @__PURE__ */ jsx(Body1, { children: cls.classCode.toUpperCase() }),
5841
+ /* @__PURE__ */ jsx(Body1, { children: (cls?.className || "")?.toUpperCase() }),
5565
5842
  /* @__PURE__ */ jsxs("div", { className: styles.passengerCount, children: [
5566
5843
  /* @__PURE__ */ jsx(
5567
5844
  Button,
@@ -7649,7 +7926,7 @@ var CardOrdererInfo = ({
7649
7926
  var DEFAULT_LABELS21 = {
7650
7927
  id: {
7651
7928
  title: "Detail Penumpang",
7652
- sameAsOrderer: "Sama Dengan Pemesan",
7929
+ // sameAsOrderer: 'Sama Dengan Pemesan',
7653
7930
  searchPlaceholder: "Cari Penumpang",
7654
7931
  addPassengerButton: "Tambah Penumpang",
7655
7932
  cancelButton: "Batal",
@@ -7663,7 +7940,7 @@ var DEFAULT_LABELS21 = {
7663
7940
  },
7664
7941
  en: {
7665
7942
  title: "Passenger Details",
7666
- sameAsOrderer: "Same as Orderer",
7943
+ // sameAsOrderer: 'Same as Orderer',
7667
7944
  searchPlaceholder: "Search Passenger",
7668
7945
  addPassengerButton: "Add Passenger",
7669
7946
  cancelButton: "Cancel",
@@ -7727,9 +8004,9 @@ var ModalListPassenger = ({
7727
8004
  onSearchChange,
7728
8005
  onSelectPassenger,
7729
8006
  onEditPassenger,
7730
- onAddPassenger,
7731
- sameAsOrderer,
7732
- onSameAsOrdererChange
8007
+ onAddPassenger
8008
+ // sameAsOrderer,
8009
+ // onSameAsOrdererChange,
7733
8010
  }) => {
7734
8011
  const styles = useStyles21();
7735
8012
  const mergedLabels = { ...DEFAULT_LABELS21[language], ...labels };
@@ -7745,7 +8022,7 @@ var ModalListPassenger = ({
7745
8022
  const filteredPassengers = passengers.filter((passenger) => {
7746
8023
  if (!searchQuery) return true;
7747
8024
  const query = searchQuery.toLowerCase();
7748
- return passenger.name && passenger.name.toLowerCase().includes(query) || passenger.category && passenger.category.toLowerCase().includes(query);
8025
+ return passenger.fullName && passenger.fullName.toLowerCase().includes(query) || passenger.ageLabel && passenger.ageLabel.toLowerCase().includes(query);
7749
8026
  });
7750
8027
  return /* @__PURE__ */ jsx(
7751
8028
  Dialog,
@@ -7760,14 +8037,6 @@ var ModalListPassenger = ({
7760
8037
  /* @__PURE__ */ jsx(
7761
8038
  DialogTitle,
7762
8039
  {
7763
- action: /* @__PURE__ */ jsx(
7764
- Switch,
7765
- {
7766
- label: mergedLabels.sameAsOrderer,
7767
- checked: sameAsOrderer,
7768
- onChange: (_, data) => onSameAsOrdererChange(data.checked)
7769
- }
7770
- ),
7771
8040
  children: /* @__PURE__ */ jsx(Subtitle1, { children: displayTitle })
7772
8041
  }
7773
8042
  ),
@@ -7798,21 +8067,10 @@ var ModalListPassenger = ({
7798
8067
  },
7799
8068
  children: [
7800
8069
  /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Subtitle2, { children: [
7801
- passenger.name,
8070
+ passenger.fullName,
7802
8071
  " (",
7803
- (() => {
7804
- const cat = passenger.category?.toUpperCase();
7805
- if (cat === "ADULT")
7806
- return mergedLabels.categories.adult;
7807
- if (cat === "CHILD")
7808
- return mergedLabels.categories.child;
7809
- if (cat === "INFANT")
7810
- return mergedLabels.categories.infant;
7811
- if (cat === "ELDERLY")
7812
- return mergedLabels.categories.elderly;
7813
- return passenger.category;
7814
- })(),
7815
- ")"
8072
+ passenger.ageLabel,
8073
+ " )"
7816
8074
  ] }) }),
7817
8075
  /* @__PURE__ */ jsx(
7818
8076
  Button,
@@ -7885,6 +8143,10 @@ var DEFAULT_LABELS22 = {
7885
8143
  countryLabel: "Negara Penerbit Passport",
7886
8144
  countryPlaceholder: "Masukkan Negara",
7887
8145
  autofill: "Isi Data Otomatis",
8146
+ phoneNumberLabel: "Nomor Telepon",
8147
+ phoneNumberPlaceholder: "Masukkan Nomor Telepon",
8148
+ emailLabel: "Email",
8149
+ emailPlaceholder: "Masukkan Email",
7888
8150
  // Scan Identity
7889
8151
  selectIdTypeTitle: "Isi Data Dengan Scan Identitas",
7890
8152
  scanIdentityTitle: "Scan Identitas",
@@ -7914,7 +8176,10 @@ var DEFAULT_LABELS22 = {
7914
8176
  maxAge: "Usia maksimal 150 tahun",
7915
8177
  requiredDate: "Tanggal lahir harus diisi",
7916
8178
  requiredCity: "Kota/Kabupaten harus diisi",
7917
- requiredCountry: "Negara harus diisi"
8179
+ requiredCountry: "Negara harus diisi",
8180
+ requiredPhoneNumber: "Nomor telepon harus diisi",
8181
+ minLengthPhoneNumber: "Nomor telepon minimal 10 karakter",
8182
+ invalidEmail: "Format email tidak valid"
7918
8183
  }
7919
8184
  },
7920
8185
  en: {
@@ -7941,6 +8206,10 @@ var DEFAULT_LABELS22 = {
7941
8206
  countryLabel: "Country of Issue",
7942
8207
  countryPlaceholder: "Enter Country",
7943
8208
  autofill: "Autofill",
8209
+ phoneNumberLabel: "Phone Number",
8210
+ phoneNumberPlaceholder: "Enter Phone Number",
8211
+ emailLabel: "Email",
8212
+ emailPlaceholder: "Enter Email",
7944
8213
  // Scan Identity
7945
8214
  selectIdTypeTitle: "Fill Data by Scanning Identity",
7946
8215
  scanIdentityTitle: "Scan Identity",
@@ -7970,7 +8239,10 @@ var DEFAULT_LABELS22 = {
7970
8239
  maxAge: "Age must be at most 150 years",
7971
8240
  requiredDate: "Date of birth is required",
7972
8241
  requiredCity: "City/Regency is required",
7973
- requiredCountry: "Country is required"
8242
+ requiredCountry: "Country is required",
8243
+ requiredPhoneNumber: "Phone number is required",
8244
+ minLengthPhoneNumber: "Phone number must be at least 10 characters",
8245
+ invalidEmail: "Invalid email format"
7974
8246
  }
7975
8247
  }
7976
8248
  };
@@ -8279,7 +8551,9 @@ var ModalPassengerForm = ({
8279
8551
  const performOCR = async () => {
8280
8552
  try {
8281
8553
  const Tesseract = await import('tesseract.js');
8282
- const { data: { text } } = await Tesseract.recognize(capturedImage, "ind");
8554
+ const {
8555
+ data: { text }
8556
+ } = await Tesseract.recognize(capturedImage, "ind");
8283
8557
  if (isCancelled) return;
8284
8558
  setScanStep(1);
8285
8559
  await new Promise((resolve) => setTimeout(resolve, 500));
@@ -8331,7 +8605,14 @@ var ModalPassengerForm = ({
8331
8605
  return () => {
8332
8606
  isCancelled = true;
8333
8607
  };
8334
- }, [scanStatus, capturedImage, stopCamera, setValue, scannedIdType, onScanComplete]);
8608
+ }, [
8609
+ scanStatus,
8610
+ capturedImage,
8611
+ stopCamera,
8612
+ setValue,
8613
+ scannedIdType,
8614
+ onScanComplete
8615
+ ]);
8335
8616
  const handleFormSubmit = (data) => {
8336
8617
  onSubmit(data);
8337
8618
  reset();
@@ -9123,6 +9404,7 @@ var CardVehicleDetail = ({
9123
9404
  serviceTitle,
9124
9405
  serviceImage,
9125
9406
  control,
9407
+ disabled,
9126
9408
  vehicleNumberName = "vehicleNumber",
9127
9409
  showLoadOption = false,
9128
9410
  hasLoad,
@@ -9166,6 +9448,7 @@ var CardVehicleDetail = ({
9166
9448
  InputDynamic_default,
9167
9449
  {
9168
9450
  control,
9451
+ disabled,
9169
9452
  name: vehicleNumberName,
9170
9453
  placeholder: mergedLabels.vehicleNumberPlaceholder,
9171
9454
  type: "text"
@@ -9177,6 +9460,7 @@ var CardVehicleDetail = ({
9177
9460
  /* @__PURE__ */ jsxs(
9178
9461
  RadioGroup,
9179
9462
  {
9463
+ disabled,
9180
9464
  value: hasLoad,
9181
9465
  onChange: (_, data) => onHasLoadChange?.(data.value),
9182
9466
  layout: "horizontal",
@@ -9344,6 +9628,7 @@ var CardVehicleOwnerForm = ({
9344
9628
  owners,
9345
9629
  hasLoad,
9346
9630
  control,
9631
+ disabled,
9347
9632
  watch,
9348
9633
  setValue,
9349
9634
  getValues,
@@ -9353,8 +9638,16 @@ var CardVehicleOwnerForm = ({
9353
9638
  onAddCargo,
9354
9639
  onDeleteCargo,
9355
9640
  onUpdateCargoQuantity,
9356
- companyOptions = [],
9357
- cityOptions = [],
9641
+ companySenderOptions = [],
9642
+ companyOwnerOptions = [],
9643
+ companyLogisticsOptions = [],
9644
+ companyReceiverOptions = [],
9645
+ cityOriginOptions = [],
9646
+ cityDestinationOptions = [],
9647
+ commodityOptions = [],
9648
+ loadTypeOptions = [],
9649
+ industryOptions = [],
9650
+ loadCategoryOptions = [],
9358
9651
  language = "id",
9359
9652
  labels
9360
9653
  }) => {
@@ -9412,8 +9705,9 @@ var CardVehicleOwnerForm = ({
9412
9705
  Button,
9413
9706
  {
9414
9707
  appearance: "transparent",
9415
- icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:delete-24-regular" }),
9416
9708
  "aria-label": mergedLabels.deleteOwnerAriaLabel,
9709
+ disabled,
9710
+ icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:delete-24-regular" }),
9417
9711
  onClick: (e) => {
9418
9712
  e.stopPropagation();
9419
9713
  onDeleteOwner(owner.id);
@@ -9441,6 +9735,7 @@ var CardVehicleOwnerForm = ({
9441
9735
  children: /* @__PURE__ */ jsxs(
9442
9736
  RadioGroup,
9443
9737
  {
9738
+ disabled,
9444
9739
  layout: "horizontal",
9445
9740
  value: owner.senderType,
9446
9741
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9470,11 +9765,12 @@ var CardVehicleOwnerForm = ({
9470
9765
  InputDynamic_default,
9471
9766
  {
9472
9767
  control,
9768
+ disabled,
9473
9769
  name: `owners.${index}.senderName`,
9474
9770
  placeholder: owner.senderType === "Perusahaan" ? mergedLabels.selectCompanyPlaceholder : mergedLabels.inputSenderNamePlaceholder,
9475
9771
  size: "large",
9476
9772
  type: owner.senderType === "Perusahaan" ? "select" : "text",
9477
- options: owner.senderType === "Perusahaan" ? companyOptions : []
9773
+ options: owner.senderType === "Perusahaan" ? companySenderOptions : []
9478
9774
  }
9479
9775
  )
9480
9776
  ] }),
@@ -9489,6 +9785,7 @@ var CardVehicleOwnerForm = ({
9489
9785
  InputDynamic_default,
9490
9786
  {
9491
9787
  control,
9788
+ disabled,
9492
9789
  name: `owners.${index}.estimatedWeight`,
9493
9790
  placeholder: mergedLabels.inputNumberPlaceholder,
9494
9791
  size: "large",
@@ -9504,10 +9801,11 @@ var CardVehicleOwnerForm = ({
9504
9801
  InputDynamic_default,
9505
9802
  {
9506
9803
  control,
9804
+ disabled,
9507
9805
  name: `looseCargoOwners.${index}.originCity`,
9508
9806
  placeholder: mergedLabels.selectPlaceholder,
9509
9807
  type: "select",
9510
- options: cityOptions,
9808
+ options: cityOriginOptions,
9511
9809
  size: "large"
9512
9810
  }
9513
9811
  )
@@ -9518,10 +9816,11 @@ var CardVehicleOwnerForm = ({
9518
9816
  InputDynamic_default,
9519
9817
  {
9520
9818
  control,
9819
+ disabled,
9521
9820
  name: `looseCargoOwners.${index}.destinationCity`,
9522
9821
  placeholder: mergedLabels.selectPlaceholder,
9523
9822
  type: "select",
9524
- options: cityOptions,
9823
+ options: cityDestinationOptions,
9525
9824
  size: "large"
9526
9825
  }
9527
9826
  )
@@ -9546,6 +9845,7 @@ var CardVehicleOwnerForm = ({
9546
9845
  children: /* @__PURE__ */ jsxs(
9547
9846
  RadioGroup,
9548
9847
  {
9848
+ disabled,
9549
9849
  layout: "horizontal",
9550
9850
  value: owner.cargoOwnerType || "Perusahaan",
9551
9851
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9574,12 +9874,13 @@ var CardVehicleOwnerForm = ({
9574
9874
  /* @__PURE__ */ jsx(
9575
9875
  InputDynamic_default,
9576
9876
  {
9877
+ disabled,
9577
9878
  control,
9578
9879
  name: `looseCargoOwners.${index}.cargoOwnerName`,
9579
9880
  placeholder: owner.cargoOwnerType === "Perusahaan" ? mergedLabels.cargoOwnerCompanyPlaceholder : mergedLabels.cargoOwnerIndividualPlaceholder,
9580
9881
  size: "large",
9581
9882
  type: owner.cargoOwnerType === "Perusahaan" ? "select" : "text",
9582
- options: owner.cargoOwnerType === "Perusahaan" ? companyOptions : []
9883
+ options: owner.cargoOwnerType === "Perusahaan" ? companyOwnerOptions : []
9583
9884
  }
9584
9885
  ),
9585
9886
  /* @__PURE__ */ jsx(
@@ -9610,6 +9911,7 @@ var CardVehicleOwnerForm = ({
9610
9911
  children: /* @__PURE__ */ jsxs(
9611
9912
  RadioGroup,
9612
9913
  {
9914
+ disabled,
9613
9915
  layout: "horizontal",
9614
9916
  value: owner.logisticsCompanyType || "Perseorangan",
9615
9917
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9639,11 +9941,12 @@ var CardVehicleOwnerForm = ({
9639
9941
  InputDynamic_default,
9640
9942
  {
9641
9943
  control,
9944
+ disabled,
9642
9945
  name: `looseCargoOwners.${index}.logisticsCompanyName`,
9643
9946
  placeholder: owner.logisticsCompanyType === "Perusahaan" ? mergedLabels.logisticsCompanyPlaceholder : mergedLabels.logisticsIndividualPlaceholder,
9644
9947
  size: "large",
9645
9948
  type: owner.logisticsCompanyType === "Perusahaan" ? "select" : "text",
9646
- options: owner.logisticsCompanyType === "Perusahaan" ? companyOptions : []
9949
+ options: owner.logisticsCompanyType === "Perusahaan" ? companyLogisticsOptions : []
9647
9950
  }
9648
9951
  ),
9649
9952
  /* @__PURE__ */ jsx(
@@ -9664,6 +9967,7 @@ var CardVehicleOwnerForm = ({
9664
9967
  /* @__PURE__ */ jsxs(
9665
9968
  RadioGroup,
9666
9969
  {
9970
+ disabled,
9667
9971
  layout: "horizontal",
9668
9972
  value: owner.cargoReceiverType || "Perusahaan",
9669
9973
  onChange: (_, data) => onUpdateOwner(owner.id, {
@@ -9691,11 +9995,12 @@ var CardVehicleOwnerForm = ({
9691
9995
  InputDynamic_default,
9692
9996
  {
9693
9997
  control,
9998
+ disabled,
9694
9999
  name: `looseCargoOwners.${index}.cargoReceiverName`,
9695
10000
  placeholder: owner.cargoReceiverType === "Perusahaan" ? mergedLabels.cargoReceiverCompanyPlaceholder : mergedLabels.cargoReceiverIndividualPlaceholder,
9696
10001
  size: "large",
9697
10002
  type: owner.cargoReceiverType === "Perusahaan" ? "select" : "text",
9698
- options: owner.cargoReceiverType === "Perusahaan" ? companyOptions : []
10003
+ options: owner.cargoReceiverType === "Perusahaan" ? companyReceiverOptions : []
9699
10004
  }
9700
10005
  ),
9701
10006
  /* @__PURE__ */ jsx(
@@ -9720,6 +10025,7 @@ var CardVehicleOwnerForm = ({
9720
10025
  InputDynamic_default,
9721
10026
  {
9722
10027
  control,
10028
+ disabled,
9723
10029
  name: `looseCargoOwners.${index}.cargoWeight`,
9724
10030
  placeholder: mergedLabels.inputNumberPlaceholder,
9725
10031
  type: "number",
@@ -9778,10 +10084,11 @@ var CardVehicleOwnerForm = ({
9778
10084
  InputDynamic_default,
9779
10085
  {
9780
10086
  control,
10087
+ disabled,
9781
10088
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.commodity`,
9782
10089
  placeholder: mergedLabels.selectPlaceholder,
9783
10090
  type: "select",
9784
- options: [],
10091
+ options: commodityOptions,
9785
10092
  size: "large"
9786
10093
  }
9787
10094
  ),
@@ -9810,27 +10117,11 @@ var CardVehicleOwnerForm = ({
9810
10117
  InputDynamic_default,
9811
10118
  {
9812
10119
  control,
10120
+ disabled,
9813
10121
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoType`,
9814
10122
  placeholder: mergedLabels.selectPlaceholder,
9815
10123
  type: "select",
9816
- options: [
9817
- {
9818
- value: "karung",
9819
- label: mergedLabels.cargoTypeOptions.karung
9820
- },
9821
- {
9822
- value: "kg",
9823
- label: mergedLabels.cargoTypeOptions.kg
9824
- },
9825
- {
9826
- value: "ton",
9827
- label: mergedLabels.cargoTypeOptions.ton
9828
- },
9829
- {
9830
- value: "unit",
9831
- label: mergedLabels.cargoTypeOptions.unit
9832
- }
9833
- ],
10124
+ options: loadTypeOptions,
9834
10125
  size: "large"
9835
10126
  }
9836
10127
  ),
@@ -9874,6 +10165,7 @@ var CardVehicleOwnerForm = ({
9874
10165
  Button,
9875
10166
  {
9876
10167
  appearance: "transparent",
10168
+ disabled,
9877
10169
  icon: /* @__PURE__ */ jsx(
9878
10170
  Icon,
9879
10171
  {
@@ -9915,6 +10207,7 @@ var CardVehicleOwnerForm = ({
9915
10207
  {
9916
10208
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.quantity`,
9917
10209
  control,
10210
+ disabled,
9918
10211
  render: ({ field }) => /* @__PURE__ */ jsx(
9919
10212
  "input",
9920
10213
  {
@@ -9939,6 +10232,7 @@ var CardVehicleOwnerForm = ({
9939
10232
  Button,
9940
10233
  {
9941
10234
  appearance: "transparent",
10235
+ disabled,
9942
10236
  icon: /* @__PURE__ */ jsx(
9943
10237
  Icon,
9944
10238
  {
@@ -10012,9 +10306,9 @@ var CardVehicleOwnerForm = ({
10012
10306
  InputDynamic_default,
10013
10307
  {
10014
10308
  control,
10309
+ disabled: true,
10015
10310
  name: `owners.${index}.price`,
10016
10311
  placeholder: mergedLabels.pricePlaceholder,
10017
- disabled: true,
10018
10312
  size: "large",
10019
10313
  type: "text"
10020
10314
  }
@@ -10032,10 +10326,11 @@ var CardVehicleOwnerForm = ({
10032
10326
  InputDynamic_default,
10033
10327
  {
10034
10328
  control,
10329
+ disabled,
10035
10330
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.industryType`,
10036
10331
  placeholder: mergedLabels.selectPlaceholder,
10037
10332
  type: "select",
10038
- options: [],
10333
+ options: industryOptions,
10039
10334
  size: "large"
10040
10335
  }
10041
10336
  ),
@@ -10060,10 +10355,11 @@ var CardVehicleOwnerForm = ({
10060
10355
  InputDynamic_default,
10061
10356
  {
10062
10357
  control,
10358
+ disabled,
10063
10359
  name: `looseCargoOwners.${index}.cargo.${cargoIndex}.cargoCategory`,
10064
10360
  placeholder: mergedLabels.selectPlaceholder,
10065
10361
  type: "select",
10066
- options: [],
10362
+ options: loadCategoryOptions,
10067
10363
  size: "large"
10068
10364
  }
10069
10365
  ),
@@ -10086,6 +10382,7 @@ var CardVehicleOwnerForm = ({
10086
10382
  /* @__PURE__ */ jsx(Row, { children: /* @__PURE__ */ jsx(Col, { children: (owner.cargoItems?.length || 0) > 1 && /* @__PURE__ */ jsx(
10087
10383
  Button,
10088
10384
  {
10385
+ disabled,
10089
10386
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:delete-24-regular" }),
10090
10387
  onClick: (e) => {
10091
10388
  e.stopPropagation();
@@ -10283,16 +10580,17 @@ var useStyles26 = makeStyles({
10283
10580
  var CardBookingTicket = ({
10284
10581
  language = "id",
10285
10582
  labels,
10286
- shipName = "KMP PORTLINK",
10287
- shipType = "Water Taxi",
10288
- shipTypeColor = "success",
10289
- departureDay = "Kamis, 25 Sep",
10290
- departureTime = "18:15",
10291
- departureLocation = "Merak, Banten",
10292
- arrivalDay = "Jumat, 26 Sep",
10293
- arrivalTime = "19:25",
10294
- arrivalLocation = "Bakauheni, Lampung",
10295
- duration = "1 jam 10 menit",
10583
+ providerLogo,
10584
+ shipName,
10585
+ shipType,
10586
+ shipTypeColor,
10587
+ departureDay,
10588
+ departureTime,
10589
+ departureLocation,
10590
+ arrivalDay,
10591
+ arrivalTime,
10592
+ arrivalLocation,
10593
+ duration = 0,
10296
10594
  totalPrice,
10297
10595
  reservationStep,
10298
10596
  paymentStep,
@@ -10311,7 +10609,7 @@ var CardBookingTicket = ({
10311
10609
  /* @__PURE__ */ jsx(
10312
10610
  "img",
10313
10611
  {
10314
- src: "/assets/logo/asdp-default.svg",
10612
+ src: providerLogo || "/assets/logo/asdp-default.svg",
10315
10613
  width: 81,
10316
10614
  height: 54,
10317
10615
  alt: "asdp"
@@ -10324,7 +10622,7 @@ var CardBookingTicket = ({
10324
10622
  {
10325
10623
  size: "extra-large",
10326
10624
  appearance: "filled",
10327
- color: shipTypeColor,
10625
+ style: { backgroundColor: shipTypeColor },
10328
10626
  iconPosition: "before",
10329
10627
  shape: "rounded",
10330
10628
  icon: /* @__PURE__ */ jsx(Icon, { icon: "fluent:info-24-regular" }),
@@ -10348,7 +10646,7 @@ var CardBookingTicket = ({
10348
10646
  /* @__PURE__ */ jsxs(Caption2, { children: [
10349
10647
  mergedLabels.estimationPrefix,
10350
10648
  " ",
10351
- duration
10649
+ formatDuration(duration)
10352
10650
  ] })
10353
10651
  ] }),
10354
10652
  /* @__PURE__ */ jsxs("div", { className: styles.ticketTime, children: [
@@ -10962,13 +11260,15 @@ var DEFAULT_LABELS29 = {
10962
11260
  addButton: "Tambah",
10963
11261
  currencySymbol: "Rp",
10964
11262
  decrementAriaLabel: "Kurangi jumlah",
10965
- incrementAriaLabel: "Tambah jumlah"
11263
+ incrementAriaLabel: "Tambah jumlah",
11264
+ searchPlaceholder: "Cari makanan atau minuman yang Anda inginkan"
10966
11265
  },
10967
11266
  en: {
10968
11267
  addButton: "Add",
10969
11268
  currencySymbol: "Rp",
10970
11269
  decrementAriaLabel: "Decrease quantity",
10971
- incrementAriaLabel: "Increase quantity"
11270
+ incrementAriaLabel: "Increase quantity",
11271
+ searchPlaceholder: "Search for food or drinks you want"
10972
11272
  }
10973
11273
  };
10974
11274
  var useStyles29 = makeStyles({
@@ -11098,6 +11398,9 @@ var useStyles29 = makeStyles({
11098
11398
  // tokensV2.lightModeColors.Brand_Stroke_1_Rest
11099
11399
  color: "rgb(30, 57, 141)"
11100
11400
  // tokensV2.lightModeColors.Brand_Foreground_1_Rest
11401
+ },
11402
+ searchContainer: {
11403
+ width: "100%"
11101
11404
  }
11102
11405
  });
11103
11406
  var CardMealCatalog = ({
@@ -11108,7 +11411,9 @@ var CardMealCatalog = ({
11108
11411
  categories,
11109
11412
  onAdd,
11110
11413
  onUpdateQuantity,
11111
- className
11414
+ className,
11415
+ searchValue,
11416
+ onSearchChange
11112
11417
  }) => {
11113
11418
  const styles = useStyles29();
11114
11419
  const mergedLabels = { ...DEFAULT_LABELS29[language], ...labels };
@@ -11133,6 +11438,16 @@ var CardMealCatalog = ({
11133
11438
  /* @__PURE__ */ jsx(InfoRegular, {}),
11134
11439
  /* @__PURE__ */ jsx(Caption1, { children: disclaimerText })
11135
11440
  ] }),
11441
+ /* @__PURE__ */ jsx("div", { className: styles.searchContainer, children: /* @__PURE__ */ jsx(
11442
+ Input,
11443
+ {
11444
+ contentBefore: /* @__PURE__ */ jsx(SearchRegular, {}),
11445
+ placeholder: mergedLabels.searchPlaceholder,
11446
+ value: searchValue,
11447
+ onChange: (_, data) => onSearchChange?.(data.value),
11448
+ style: { width: "100%" }
11449
+ }
11450
+ ) }),
11136
11451
  categories.map((cat, index) => /* @__PURE__ */ jsxs("section", { children: [
11137
11452
  /* @__PURE__ */ jsx(
11138
11453
  Title3,
@@ -12532,6 +12847,59 @@ var DEFAULT_LABELS38 = {
12532
12847
  requiredError: "is required"
12533
12848
  }
12534
12849
  };
12850
+ var useStyles39 = makeStyles({
12851
+ surface: {
12852
+ maxWidth: "90vw",
12853
+ maxHeight: "90vh",
12854
+ backgroundColor: "transparent",
12855
+ boxShadow: "none"
12856
+ },
12857
+ closeButton: {
12858
+ backgroundColor: tokens.colorNeutralForeground2,
12859
+ color: tokens.colorNeutralBackground1
12860
+ },
12861
+ content: {
12862
+ alignItems: "center",
12863
+ textAlign: "center"
12864
+ },
12865
+ image: {
12866
+ maxWidth: "100%",
12867
+ maxHeight: "70vh",
12868
+ objectFit: "contain"
12869
+ }
12870
+ });
12871
+ var ModalPreviewImage = ({
12872
+ open,
12873
+ onOpenChange,
12874
+ imageUrl,
12875
+ alt = "Preview"
12876
+ }) => {
12877
+ const styles = useStyles39();
12878
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (_, data) => onOpenChange(data.open), children: /* @__PURE__ */ jsx(DialogSurface, { className: styles.surface, children: /* @__PURE__ */ jsxs(DialogBody, { children: [
12879
+ /* @__PURE__ */ jsx(
12880
+ DialogTitle,
12881
+ {
12882
+ action: /* @__PURE__ */ jsx(DialogTrigger, { action: "close", children: /* @__PURE__ */ jsx(
12883
+ Button,
12884
+ {
12885
+ appearance: "subtle",
12886
+ "aria-label": "close",
12887
+ icon: /* @__PURE__ */ jsx(Dismiss24Regular, {}),
12888
+ className: styles.closeButton
12889
+ }
12890
+ ) })
12891
+ }
12892
+ ),
12893
+ /* @__PURE__ */ jsx(DialogContent, { className: styles.content, children: imageUrl && /* @__PURE__ */ jsx(
12894
+ "img",
12895
+ {
12896
+ src: imageUrl,
12897
+ alt,
12898
+ className: styles.image
12899
+ }
12900
+ ) })
12901
+ ] }) }) });
12902
+ };
12535
12903
  var uploadStyles = makeStyles({
12536
12904
  container: {
12537
12905
  backgroundColor: "#F0FEFF",
@@ -12805,56 +13173,7 @@ var FileUpload = React5.forwardRef(
12805
13173
  ] })
12806
13174
  }
12807
13175
  ),
12808
- /* @__PURE__ */ jsx(
12809
- Dialog,
12810
- {
12811
- open: isPreviewOpen,
12812
- onOpenChange: (_, data) => setIsPreviewOpen(data.open),
12813
- children: /* @__PURE__ */ jsx(
12814
- DialogSurface,
12815
- {
12816
- style: {
12817
- maxWidth: "90vw",
12818
- maxHeight: "90vh",
12819
- backgroundColor: "transparent",
12820
- boxShadow: "none"
12821
- },
12822
- children: /* @__PURE__ */ jsxs(DialogBody, { children: [
12823
- /* @__PURE__ */ jsx(
12824
- DialogTitle,
12825
- {
12826
- action: /* @__PURE__ */ jsx(DialogTrigger, { action: "close", children: /* @__PURE__ */ jsx(
12827
- Button,
12828
- {
12829
- "aria-label": "close",
12830
- icon: /* @__PURE__ */ jsx(Dismiss24Regular, {}),
12831
- style: {
12832
- backgroundColor: tokens.colorNeutralForeground2,
12833
- color: tokens.colorNeutralBackground1
12834
- }
12835
- }
12836
- ) })
12837
- }
12838
- ),
12839
- /* @__PURE__ */ jsx(
12840
- DialogContent,
12841
- {
12842
- style: { alignItems: "center", textAlign: "center" },
12843
- children: previewUrl && /* @__PURE__ */ jsx(
12844
- "img",
12845
- {
12846
- src: previewUrl,
12847
- alt: "Preview",
12848
- className: styles.dialogImage
12849
- }
12850
- )
12851
- }
12852
- )
12853
- ] })
12854
- }
12855
- )
12856
- }
12857
- )
13176
+ /* @__PURE__ */ jsx(ModalPreviewImage, { imageUrl: previewUrl, open: isPreviewOpen, onOpenChange: setIsPreviewOpen })
12858
13177
  ]
12859
13178
  }
12860
13179
  );
@@ -13051,57 +13370,7 @@ var FileUpload = React5.forwardRef(
13051
13370
  ]
13052
13371
  }
13053
13372
  ),
13054
- /* @__PURE__ */ jsx(
13055
- Dialog,
13056
- {
13057
- open: isPreviewOpen,
13058
- onOpenChange: (_, data) => setIsPreviewOpen(data.open),
13059
- children: /* @__PURE__ */ jsx(
13060
- DialogSurface,
13061
- {
13062
- style: {
13063
- maxWidth: "90vw",
13064
- maxHeight: "90vh",
13065
- backgroundColor: "transparent",
13066
- boxShadow: "none"
13067
- },
13068
- children: /* @__PURE__ */ jsxs(DialogBody, { children: [
13069
- /* @__PURE__ */ jsx(
13070
- DialogTitle,
13071
- {
13072
- action: /* @__PURE__ */ jsx(DialogTrigger, { action: "close", children: /* @__PURE__ */ jsx(
13073
- Button,
13074
- {
13075
- appearance: "subtle",
13076
- "aria-label": "close",
13077
- icon: /* @__PURE__ */ jsx(Dismiss24Regular, {}),
13078
- style: {
13079
- backgroundColor: tokens.colorNeutralForeground2,
13080
- color: tokens.colorNeutralBackground1
13081
- }
13082
- }
13083
- ) })
13084
- }
13085
- ),
13086
- /* @__PURE__ */ jsx(
13087
- DialogContent,
13088
- {
13089
- style: { alignItems: "center", textAlign: "center" },
13090
- children: previewUrl && /* @__PURE__ */ jsx(
13091
- "img",
13092
- {
13093
- src: previewUrl,
13094
- alt: "Preview",
13095
- className: styles.dialogImage
13096
- }
13097
- )
13098
- }
13099
- )
13100
- ] })
13101
- }
13102
- )
13103
- }
13104
- )
13373
+ /* @__PURE__ */ jsx(ModalPreviewImage, { imageUrl: previewUrl, open: isPreviewOpen, onOpenChange: setIsPreviewOpen })
13105
13374
  ]
13106
13375
  }
13107
13376
  );
@@ -13118,7 +13387,7 @@ var DEFAULT_LABELS39 = {
13118
13387
  id: {},
13119
13388
  en: {}
13120
13389
  };
13121
- var useStyles39 = makeStyles({
13390
+ var useStyles40 = makeStyles({
13122
13391
  container: {
13123
13392
  display: "flex",
13124
13393
  flexDirection: "column",
@@ -13158,12 +13427,14 @@ var useStyles39 = makeStyles({
13158
13427
  backgroundColor: tokens.colorBrandBackground2,
13159
13428
  color: tokens.colorBrandForeground1
13160
13429
  },
13161
- justifyContent: "flex-start"
13430
+ justifyContent: "flex-start",
13431
+ textAlign: "left"
13162
13432
  },
13163
13433
  tabItemLogout: {
13164
13434
  color: tokens.colorPaletteRedForeground1,
13165
13435
  backgroundColor: "transparent",
13166
13436
  justifyContent: "flex-start",
13437
+ textAlign: "left",
13167
13438
  "&:hover": {
13168
13439
  color: tokens.colorPaletteRedForeground1
13169
13440
  }
@@ -13176,7 +13447,7 @@ var CardProfileMenu = ({
13176
13447
  selectedValue,
13177
13448
  onTabSelect
13178
13449
  }) => {
13179
- const styles = useStyles39();
13450
+ const styles = useStyles40();
13180
13451
  ({ ...DEFAULT_LABELS39[language], ...labels });
13181
13452
  const handleTabSelect = (_, data) => {
13182
13453
  onTabSelect(data.value);
@@ -13206,6 +13477,6 @@ var CardProfileMenu = ({
13206
13477
  ) });
13207
13478
  };
13208
13479
 
13209
- export { BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, COUNTRIES, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS8 as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS9 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS17 as DateFilterDefaultLabels, FileUpload_default as FileUpload, InputDynamic_default as InputDynamic, MODAL_PRESETS, ModalFilterTicket, DEFAULT_LABELS16 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListPassenger, ModalPassengerForm, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, SortMenu, Stepper, getBadgeConfig, getModalPreset, getSortLabel };
13480
+ export { API_CONFIG, API_ENDPOINTS, API_ERROR_MESSAGES, BackgroundTicketCard_default as BackgroundTicketCard, BackgroundTicketCardVertical_default as BackgroundTicketCardVertical, COUNTRIES, CardAddon, CardBanner, CardBookingTicket, CardFAQ, CardMealCatalog, CardOrdererInfo, CardPassengerList, CardPaymentGuide, CardPaymentInfo, CardPaymentMethodList, CardPriceDetails, CardProfileMenu, CardPromo, CardReview, CardReviewPassenger, CardServiceMenu, CardStatusOrder, CardTicket, CardTicketSearch, DEFAULT_LABELS8 as CardTicketSearchDefaultLabels, CardTicketSearchSummary, DEFAULT_LABELS9 as CardTicketSearchSummaryDefaultLabels, CardVehicleDetail, CardVehicleOwnerForm, CarouselWithCustomNav, DEFAULT_DURATION_RANGE, DEFAULT_PRICE_RANGE, DEFAULT_SCROLL_AMOUNT, DEFAULT_SERVICE_TYPES, DEFAULT_SORT_OPTIONS, DEFAULT_TIME_SLOTS, DEFAULT_VEHICLE_ICONS, DateFilter, DEFAULT_LABELS17 as DateFilterDefaultLabels, FileUpload_default as FileUpload, GENDER, HTTP_STATUS, IDENTITY_TYPE, InputDynamic_default as InputDynamic, LOAD_TYPE, MODAL_PRESETS, MY_TICKET_STATUS, MY_TICKET_TAB, ModalFilterTicket, DEFAULT_LABELS16 as ModalFilterTicketDefaultLabels, ModalIllustration, ModalListPassenger, ModalPassengerForm, ModalPreviewImage, ModalPriceDetail, ModalSearchHarbor, ModalSearchTicket, ModalSelectDate, ModalService, ModalTotalPassengers, ModalTypeOfService, PASSENGER_TYPE, SortMenu, Stepper, getBadgeConfig, getModalPreset, getSortLabel };
13210
13481
  //# sourceMappingURL=index.mjs.map
13211
13482
  //# sourceMappingURL=index.mjs.map