@loczer/storefront-sdk 0.208.0 → 0.210.0

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.
Files changed (88) hide show
  1. package/dist/StorefrontContext.d.ts +89 -0
  2. package/dist/StorefrontContext.d.ts.map +1 -1
  3. package/dist/StorefrontContext.js +8 -1
  4. package/dist/StorefrontProvider.d.ts +84 -0
  5. package/dist/StorefrontProvider.d.ts.map +1 -1
  6. package/dist/StorefrontProvider.js +55 -41
  7. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/index-DAbcklF5.js +1 -0
  8. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/mini-CSEBo1ZP.js +60 -0
  9. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/index--u3Qf-qy.js +4 -0
  10. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tz/index-CEcibV-H.js +1 -0
  11. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index-COlDDdap.js +22 -0
  12. package/dist/chunks/pkg/booking-engine/dist/pricing-BJaynUu_.js +3 -0
  13. package/dist/chunks/pkg/booking-engine/dist/utils/schedule-ssRov9xe.js +39 -0
  14. package/dist/chunks/pkg/booking-engine/dist/utils/timezone-B6XIbBPz.js +79 -0
  15. package/dist/chunks/pkg/ui/dist/Map/{MapContent-CDeWtwKa.js → MapContent-TzYCv8ji.js} +109 -108
  16. package/dist/chunks/pkg/ui/dist/Map/constants-dF2KdJZy.js +8 -0
  17. package/dist/chunks/pkg/ui/dist/{Map-Cs7wgtH9.js → Map-ZM-ZOU9P.js} +1 -1
  18. package/dist/components/BookingBikeVariantDialog/index.js +15 -15
  19. package/dist/components/ContactSection/index.js +9 -9
  20. package/dist/components/Header/index.d.ts.map +1 -1
  21. package/dist/components/Header/index.js +72 -66
  22. package/dist/components/Itineraries/ItinerariesSection.d.ts +2 -0
  23. package/dist/components/Itineraries/ItinerariesSection.d.ts.map +1 -0
  24. package/dist/components/Itineraries/ItinerariesSection.js +81 -0
  25. package/dist/components/Itineraries/ItineraryListItem.d.ts +9 -0
  26. package/dist/components/Itineraries/ItineraryListItem.d.ts.map +1 -0
  27. package/dist/components/Itineraries/ItineraryListItem.js +100 -0
  28. package/dist/components/Itineraries/ItineraryRouteMap.d.ts +10 -0
  29. package/dist/components/Itineraries/ItineraryRouteMap.d.ts.map +1 -0
  30. package/dist/components/Itineraries/ItineraryRouteMap.js +67 -0
  31. package/dist/components/Itineraries/index.d.ts +4 -0
  32. package/dist/components/Itineraries/index.d.ts.map +1 -0
  33. package/dist/components/Itineraries/index.js +4 -0
  34. package/dist/components/Map/index.d.ts +12 -0
  35. package/dist/components/Map/index.d.ts.map +1 -1
  36. package/dist/components/Map/index.js +1 -1
  37. package/dist/components/ProductPriceBadge/index.d.ts.map +1 -1
  38. package/dist/components/ProductPriceBadge/index.js +86 -80
  39. package/dist/components/StorefrontCartPanel/index.d.ts +4 -4
  40. package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
  41. package/dist/components/StorefrontCartPanel/index.js +10 -9
  42. package/dist/i18n/en.d.ts +42 -6
  43. package/dist/i18n/en.d.ts.map +1 -1
  44. package/dist/i18n/en.js +44 -8
  45. package/dist/i18n/fr.d.ts +42 -6
  46. package/dist/i18n/fr.d.ts.map +1 -1
  47. package/dist/i18n/fr.js +44 -8
  48. package/dist/index.d.ts +817 -36
  49. package/dist/index.js +67 -60
  50. package/dist/lib/booking.d.ts +0 -6
  51. package/dist/lib/booking.d.ts.map +1 -1
  52. package/dist/lib/booking.js +51 -65
  53. package/dist/lib/cartSummary.d.ts +5 -3
  54. package/dist/lib/cartSummary.d.ts.map +1 -1
  55. package/dist/lib/cartSummary.js +7 -7
  56. package/dist/lib/itineraryPresentation.d.ts +14 -0
  57. package/dist/lib/itineraryPresentation.d.ts.map +1 -0
  58. package/dist/lib/itineraryPresentation.js +26 -0
  59. package/dist/lib/pricing.d.ts +18 -6
  60. package/dist/lib/pricing.d.ts.map +1 -1
  61. package/dist/lib/pricing.js +45 -29
  62. package/dist/lib/storefrontItineraries.d.ts +418 -0
  63. package/dist/lib/storefrontItineraries.d.ts.map +1 -0
  64. package/dist/lib/storefrontItineraries.js +81 -0
  65. package/dist/pages/BookingPage.d.ts.map +1 -1
  66. package/dist/pages/BookingPage.js +205 -201
  67. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  68. package/dist/pages/CheckoutPage.js +276 -273
  69. package/dist/pages/HomePage.d.ts.map +1 -1
  70. package/dist/pages/HomePage.js +111 -108
  71. package/dist/pages/ItinerariesPage.d.ts +2 -0
  72. package/dist/pages/ItinerariesPage.d.ts.map +1 -0
  73. package/dist/pages/ItinerariesPage.js +76 -0
  74. package/dist/pages/ItineraryDetailsPage.d.ts +66 -0
  75. package/dist/pages/ItineraryDetailsPage.d.ts.map +1 -0
  76. package/dist/pages/ItineraryDetailsPage.js +223 -0
  77. package/dist/pages/ProductPage.js +6 -6
  78. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +2 -2
  79. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
  80. package/dist/pages/checkout/components/CheckoutSummaryColumn.js +4 -4
  81. package/dist/pages/itineraries/ElevationProfile.d.ts +5 -0
  82. package/dist/pages/itineraries/ElevationProfile.d.ts.map +1 -0
  83. package/dist/pages/itineraries/ElevationProfile.js +59 -0
  84. package/dist/routes.d.ts.map +1 -1
  85. package/dist/routes.js +18 -10
  86. package/dist/storefront.css +1 -1
  87. package/package.json +1 -1
  88. package/dist/chunks/pkg/ui/dist/Map/constants-BNmiJXfg.js +0 -4
package/dist/index.d.ts CHANGED
@@ -871,6 +871,11 @@ export declare type BookingPeriodTimeSlotsStatus = "local" | "loading" | "ready"
871
871
 
872
872
  export declare type BookingPeriodTranslator = (key: string, options?: Record<string, unknown>) => string;
873
873
 
874
+ export declare type BookingRentalUnitSummary = {
875
+ priceUnit: PriceUnit_2;
876
+ billableUnitCount: number;
877
+ };
878
+
874
879
  export declare type BookingScheduleInput = z.infer<typeof bookingScheduleInputSchema>;
875
880
 
876
881
  export declare const bookingScheduleInputSchema: z.ZodObject<{
@@ -908,9 +913,9 @@ export declare function buildBookingInsuranceSnapshot(input: {
908
913
  items: InsuranceQuoteItemInput[];
909
914
  }): BookingInsuranceSnapshot;
910
915
 
911
- export declare function buildDailyPriceRows(prices: StorefrontPublicProductPrice[] | undefined, locale: string): DailyPriceRow[];
916
+ export declare function buildPriceTierLabels(prices: StorefrontPublicProductPrice[] | undefined, locale: string, t: TFunction, priceUnit?: PriceUnit_2): string[];
912
917
 
913
- export declare function buildPriceTierLabels(prices: StorefrontPublicProductPrice[] | undefined, locale: string, t: TFunction): string[];
918
+ export declare function buildRentalPriceRows(prices: StorefrontPublicProductPrice[] | undefined, locale: string, priceUnit?: PriceUnit_2): RentalPriceRow[];
914
919
 
915
920
  export declare const buildStorefrontAvailabilityKey: (productId: string, productVariantId?: string | null) => string;
916
921
 
@@ -919,7 +924,8 @@ export declare const buildStorefrontCartSummary: (params: {
919
924
  language: string;
920
925
  fallbackLanguage?: string;
921
926
  products: StorefrontProductsCollections;
922
- estimatedDays?: number;
927
+ priceUnit: StorefrontPublicProductPrice["unit"];
928
+ billableUnitCount?: number;
923
929
  }) => StorefrontCartSummary;
924
930
 
925
931
  export declare const buildStorefrontImageUrl: (imageId: string, storeSlug: string, width?: number) => string;
@@ -945,10 +951,12 @@ export declare const buttonVariants: (props?: ({
945
951
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
946
952
  } & ClassProp) | undefined) => string;
947
953
 
948
- export declare function calculateDailyPriceForQuantity(prices: StorefrontPublicProductPrice[] | undefined, dayCount: number): number | null;
954
+ export declare function calculateBookingRentalUnitSummary(booking: StorefrontBookingParams, pricing: PricingConfiguration, timeZone?: string): BookingRentalUnitSummary | null;
949
955
 
950
956
  export declare function calculateInsuranceCalendarDays(start: Date, end: Date, timeZone?: string): number;
951
957
 
958
+ export declare function calculateRentalPriceForQuantity(prices: StorefrontPublicProductPrice[] | undefined, unitCount: number, priceUnit?: PriceUnit_2): number | null;
959
+
952
960
  export declare type CancellationPolicy = z.infer<typeof cancellationPolicySchema>;
953
961
 
954
962
  export declare const cancellationPolicySchema: z.ZodObject<{
@@ -1617,12 +1625,6 @@ export declare const currencyCodeSchema: z.ZodEnum<{
1617
1625
 
1618
1626
  export declare function currencyMinorUnitDigits(_currency: CurrencyCode): number;
1619
1627
 
1620
- export declare type DailyPriceRow = {
1621
- dayCount: number;
1622
- totalPriceLabel: string;
1623
- perDayPriceLabel: string;
1624
- };
1625
-
1626
1628
  export declare const DEFAULT_BOOKING_DELIVERY_OPTION: "pickup";
1627
1629
 
1628
1630
  export declare const DEFAULT_CANCELLATION_POLICY: CancellationPolicy;
@@ -1768,6 +1770,8 @@ export declare const formatPriceMinor: (valueMinor: MoneyMinor_2, language: stri
1768
1770
  maximumFractionDigits?: number;
1769
1771
  }) => string;
1770
1772
 
1773
+ export declare function formatRentalUnitQuantity(quantity: number, priceUnit: PriceUnit_2, locale: string, t: TFunction): string;
1774
+
1771
1775
  export declare const formatStorefrontPhoneDisplay: (phone: string, country?: string) => string;
1772
1776
 
1773
1777
  export declare const formatStorefrontPriceMinor: (valueMinor: number, locale: string, { currency }?: {
@@ -1800,14 +1804,6 @@ export declare const getAvailabilityVariant: (status: string | undefined) => {
1800
1804
  variant: "secondary" | "outline" | "destructive";
1801
1805
  };
1802
1806
 
1803
- export declare const getBookingDurationLabel: (booking: StorefrontBookingParams) => {
1804
- hours: number;
1805
- minutes: number;
1806
- label: string;
1807
- };
1808
-
1809
- export declare const getBookingDurationMinutes: (booking: StorefrontBookingParams) => number;
1810
-
1811
1807
  export declare const getBookingParamsFromSearch: (searchParams: URLSearchParams, fallback?: Partial<StorefrontBookingParams>) => StorefrontBookingParams;
1812
1808
 
1813
1809
  export declare const getBookingSessionStorageKey: (storeSlug?: string) => string;
@@ -1983,6 +1979,8 @@ export declare const getMinDayPriceMinor: (prices: Array<{
1983
1979
  unit?: string;
1984
1980
  }>) => MoneyMinor_2 | null;
1985
1981
 
1982
+ export declare function getPricingUnitLabel(priceUnit: PriceUnit_2, t: TFunction, count?: number): string;
1983
+
1986
1984
  export declare const getStorefrontAvailabilityIssue: (record: StorefrontPublicAvailabilityRecord | undefined) => StorefrontAvailabilityIssue | undefined;
1987
1985
 
1988
1986
  export declare const getStorefrontAvailabilityStatus: (record: StorefrontPublicAvailabilityRecord | undefined) => "AVAILABLE" | "LOW_STOCK" | "OUT_OF_STOCK";
@@ -2046,6 +2044,93 @@ export declare function isProductVariantCodeIdentifierKind(kind: string): boolea
2046
2044
 
2047
2045
  export declare const isStorefrontAvailabilityInsufficient: (record: StorefrontPublicAvailabilityRecord | undefined) => boolean;
2048
2046
 
2047
+ export declare function ItinerariesPage(): JSX.Element;
2048
+
2049
+ export declare function ItinerariesSection(): JSX.Element | null;
2050
+
2051
+ export declare const itineraryDetailsLoader: ({ ctx, params }: LoaderArgs) => Promise<{
2052
+ slug: string;
2053
+ title: Record<string, {
2054
+ [x: string]: unknown;
2055
+ value: string;
2056
+ updatedAt: Date;
2057
+ autoTranslated?: boolean | undefined;
2058
+ }>;
2059
+ introduction: Record<string, {
2060
+ [x: string]: unknown;
2061
+ value: string;
2062
+ updatedAt: Date;
2063
+ autoTranslated?: boolean | undefined;
2064
+ }>;
2065
+ tags: Record<string, {
2066
+ [x: string]: unknown;
2067
+ value: string;
2068
+ updatedAt: Date;
2069
+ autoTranslated?: boolean | undefined;
2070
+ }>[];
2071
+ coverImageId: string | null;
2072
+ difficulty: "easy" | "moderate" | "challenging";
2073
+ tripType: "one_way" | "out_and_back" | "loop";
2074
+ metrics: {
2075
+ distanceMeters: number;
2076
+ durationSeconds: number;
2077
+ elevationGainMeters: number;
2078
+ elevationLossMeters: number;
2079
+ };
2080
+ geometry: {
2081
+ type: "LineString";
2082
+ coordinates: ([number, number] | [number, number, number])[];
2083
+ };
2084
+ bounds: {
2085
+ west: number;
2086
+ south: number;
2087
+ east: number;
2088
+ north: number;
2089
+ } | null;
2090
+ steps: {
2091
+ id: string;
2092
+ label: Record<string, {
2093
+ [x: string]: unknown;
2094
+ value: string;
2095
+ updatedAt: Date;
2096
+ autoTranslated?: boolean | undefined;
2097
+ }>;
2098
+ description: Record<string, {
2099
+ [x: string]: unknown;
2100
+ value: string;
2101
+ updatedAt: Date;
2102
+ autoTranslated?: boolean | undefined;
2103
+ }>;
2104
+ role: "shaping" | "stop" | "detached";
2105
+ point: {
2106
+ lng: number;
2107
+ lat: number;
2108
+ ele?: number | undefined;
2109
+ };
2110
+ imageIds: string[];
2111
+ category?: string | undefined;
2112
+ }[];
2113
+ }>;
2114
+
2115
+ export declare function ItineraryDetailsPage(): JSX.Element;
2116
+
2117
+ export declare function ItineraryListItem({ itinerary, storeSlug, compact, active, onActivate, }: {
2118
+ itinerary: StorefrontItinerarySummary;
2119
+ storeSlug: string;
2120
+ compact?: boolean;
2121
+ active?: boolean;
2122
+ onActivate?: () => void;
2123
+ }): JSX.Element;
2124
+
2125
+ export declare function ItineraryRouteMap({ coordinates, steps, mapboxToken, language, fallbackLanguage, className, }: {
2126
+ coordinates: StorefrontItineraryCoordinate[];
2127
+ steps: StorefrontItineraryStep[];
2128
+ mapboxToken?: string;
2129
+ language: string;
2130
+ fallbackLanguage: string;
2131
+ className?: string;
2132
+ }): JSX.Element;
2133
+
2049
2134
  declare type JourneyType = "start" | "end";
2050
2135
 
2051
2136
  export declare const Label: React_2.ForwardRefExoticComponent<React_2.LabelHTMLAttributes<HTMLLabelElement> & VariantProps<(props?: ClassProp | undefined) => string> & React_2.RefAttributes<HTMLLabelElement>>;
@@ -2291,6 +2376,90 @@ export declare const loader: ({ ctx, params }: LoaderArgs) => Promise<{
2291
2376
  bookingBikes: BikeProduct[];
2292
2377
  bookingAccessories: AccessoryProduct[];
2293
2378
  language: StorefrontI18nLanguage;
2379
+ itineraries: {
2380
+ slug: string;
2381
+ title: Record<string, {
2382
+ [x: string]: unknown;
2383
+ value: string;
2384
+ updatedAt: Date;
2385
+ autoTranslated?: boolean | undefined;
2386
+ }>;
2387
+ introduction: Record<string, {
2388
+ [x: string]: unknown;
2389
+ value: string;
2390
+ updatedAt: Date;
2391
+ autoTranslated?: boolean | undefined;
2392
+ }>;
2393
+ tags: Record<string, {
2394
+ [x: string]: unknown;
2395
+ value: string;
2396
+ updatedAt: Date;
2397
+ autoTranslated?: boolean | undefined;
2398
+ }>[];
2399
+ coverImageId: string | null;
2400
+ difficulty: "easy" | "moderate" | "challenging";
2401
+ tripType: "one_way" | "out_and_back" | "loop";
2402
+ metrics: {
2403
+ distanceMeters: number;
2404
+ durationSeconds: number;
2405
+ elevationGainMeters: number;
2406
+ elevationLossMeters: number;
2407
+ };
2408
+ }[];
2409
+ featuredItineraries: {
2410
+ slug: string;
2411
+ title: Record<string, {
2412
+ [x: string]: unknown;
2413
+ value: string;
2414
+ updatedAt: Date;
2415
+ autoTranslated?: boolean | undefined;
2416
+ }>;
2417
+ introduction: Record<string, {
2418
+ [x: string]: unknown;
2419
+ value: string;
2420
+ updatedAt: Date;
2421
+ autoTranslated?: boolean | undefined;
2422
+ }>;
2423
+ tags: Record<string, {
2424
+ [x: string]: unknown;
2425
+ value: string;
2426
+ updatedAt: Date;
2427
+ autoTranslated?: boolean | undefined;
2428
+ }>[];
2429
+ coverImageId: string | null;
2430
+ difficulty: "easy" | "moderate" | "challenging";
2431
+ tripType: "one_way" | "out_and_back" | "loop";
2432
+ metrics: {
2433
+ distanceMeters: number;
2434
+ durationSeconds: number;
2435
+ elevationGainMeters: number;
2436
+ elevationLossMeters: number;
2437
+ };
2438
+ previewCoordinates: ([number, number] | [number, number, number])[];
2439
+ steps: {
2440
+ id: string;
2441
+ label: Record<string, {
2442
+ [x: string]: unknown;
2443
+ value: string;
2444
+ updatedAt: Date;
2445
+ autoTranslated?: boolean | undefined;
2446
+ }>;
2447
+ description: Record<string, {
2448
+ [x: string]: unknown;
2449
+ value: string;
2450
+ updatedAt: Date;
2451
+ autoTranslated?: boolean | undefined;
2452
+ }>;
2453
+ role: "shaping" | "stop" | "detached";
2454
+ point: {
2455
+ lng: number;
2456
+ lat: number;
2457
+ ele?: number | undefined;
2458
+ };
2459
+ imageIds: string[];
2460
+ category?: string | undefined;
2461
+ }[];
2462
+ }[];
2294
2463
  }>;
2295
2464
 
2296
2465
  export declare type LocalizedString<TExtra extends Record<string, unknown> = Record<string, unknown>> = Record<string, LocalizedStringEntry<TExtra>>;
@@ -2378,6 +2547,8 @@ export declare const priceSchema: z.ZodObject<{
2378
2547
 
2379
2548
  export declare type PriceUnit = z.infer<typeof priceUnitSchema>;
2380
2549
 
2550
+ declare type PriceUnit_2 = StorefrontPublicProductPrice["unit"];
2551
+
2381
2552
  export declare const priceUnitSchema: z.ZodEnum<{
2382
2553
  day: "day";
2383
2554
  half_day: "half_day";
@@ -2386,6 +2557,8 @@ export declare const priceUnitSchema: z.ZodEnum<{
2386
2557
  week: "week";
2387
2558
  }>;
2388
2559
 
2560
+ declare type PricingConfiguration = StorefrontConfiguration["bookingEngine"]["pricing"];
2561
+
2389
2562
  export declare const PRODUCT_VARIANT_CODE_IDENTIFIER_KIND = "variant_code";
2390
2563
 
2391
2564
  export declare const PRODUCT_VARIANT_CODE_MAX_LENGTH = 3;
@@ -2832,6 +3005,12 @@ export declare const readBookingSearchParamsFromSessionStorage: (storeSlug?: str
2832
3005
 
2833
3006
  export declare const readBookingSearchParamsFromStorage: (storage: BookingSearchStorage, storeSlug?: string) => URLSearchParams;
2834
3007
 
3008
+ export declare type RentalPriceRow = {
3009
+ unitCount: number;
3010
+ totalPriceLabel: string;
3011
+ perUnitPriceLabel: string;
3012
+ };
3013
+
2835
3014
  export declare type RequestPayload = z.infer<typeof requestSchema>;
2836
3015
 
2837
3016
  export declare const requestSchema: z.ZodObject<{
@@ -3095,6 +3274,12 @@ export declare const STOREFRONT_HERO_MODES: readonly ["current_booking_hero", "b
3095
3274
 
3096
3275
  export declare const STOREFRONT_IMAGE_ROUTE = "/api/public/storefront/images/get";
3097
3276
 
3277
+ export declare const STOREFRONT_ITINERARIES_FEATURED_ROUTE = "/api/public/storefront/itineraries/featured";
3278
+
3279
+ export declare const STOREFRONT_ITINERARIES_LIST_ROUTE = "/api/public/storefront/itineraries/list";
3280
+
3281
+ export declare const STOREFRONT_ITINERARY_DETAIL_ROUTE = "/api/public/storefront/itineraries/get";
3282
+
3098
3283
  export declare const STOREFRONT_PRODUCTS_ROUTE = "/api/public/storefront/products";
3099
3284
 
3100
3285
  export declare const STOREFRONT_TIME_SLOTS_ROUTE = "/api/public/storefront/availability/time-slots";
@@ -3194,19 +3379,19 @@ export declare type StorefrontCartItem = {
3194
3379
  quantity: number;
3195
3380
  };
3196
3381
 
3197
- export declare function StorefrontCartPanel({ lines, itemCount, totalPerDayMinor, estimatedDays, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): JSX.Element;
3382
+ export declare function StorefrontCartPanel({ lines, itemCount, totalPerBaseUnitMinor, baseUnitLabel, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationInBaseUnitLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): JSX.Element;
3198
3383
 
3199
3384
  declare type StorefrontCartPanelProps = {
3200
3385
  lines: StorefrontCartSummaryLine[];
3201
3386
  itemCount: number;
3202
- totalPerDayMinor: number;
3203
- estimatedDays?: number;
3387
+ totalPerBaseUnitMinor: number;
3388
+ baseUnitLabel: string;
3204
3389
  estimatedTotalMinor?: number;
3205
3390
  discountedEstimatedTotalMinor?: number;
3206
3391
  discountAmountMinor?: number;
3207
3392
  lateReturnSurchargeMinor?: number;
3208
3393
  couponCode?: string;
3209
- durationLabel?: string;
3394
+ durationInBaseUnitLabel?: string;
3210
3395
  title?: string;
3211
3396
  description?: string;
3212
3397
  checkoutPath?: string;
@@ -3228,8 +3413,8 @@ export declare function StorefrontCartProvider({ storeSlug, products, children,
3228
3413
 
3229
3414
  export declare type StorefrontCartSummary = {
3230
3415
  lines: StorefrontCartSummaryLine[];
3231
- totalPerDayMinor: number;
3232
- estimatedDays?: number;
3416
+ totalPerBaseUnitMinor: number;
3417
+ billableUnitCount?: number;
3233
3418
  estimatedTotalMinor?: number;
3234
3419
  };
3235
3420
 
@@ -3786,6 +3971,8 @@ export declare type StorefrontContextValue = {
3786
3971
  bookingAccessories: AccessoryProduct[];
3787
3972
  mapboxToken?: string;
3788
3973
  language: StorefrontI18nLanguage;
3974
+ itineraries: StorefrontItinerarySummary[];
3975
+ featuredItineraries: StorefrontItineraryPreview[];
3789
3976
  };
3790
3977
 
3791
3978
  export declare const storefrontEn: {
@@ -3797,6 +3984,7 @@ export declare const storefrontEn: {
3797
3984
  nav_categories: string;
3798
3985
  nav_featured: string;
3799
3986
  nav_products: string;
3987
+ nav_itineraries: string;
3800
3988
  nav_contact: string;
3801
3989
  language_toggle: string;
3802
3990
  cta_book_now: string;
@@ -3871,6 +4059,36 @@ export declare const storefrontEn: {
3871
4059
  featured_title: string;
3872
4060
  featured_description: string;
3873
4061
  featured_view_all: string;
4062
+ itineraries_eyebrow: string;
4063
+ itineraries_title: string;
4064
+ itineraries_description: string;
4065
+ itineraries_list_label: string;
4066
+ itineraries_view_all: string;
4067
+ itineraries_back_home: string;
4068
+ itineraries_page_title: string;
4069
+ itineraries_page_description_one: string;
4070
+ itineraries_page_description_other: string;
4071
+ itineraries_filter_label: string;
4072
+ itineraries_filter_all: string;
4073
+ itineraries_no_results: string;
4074
+ itineraries_difficulty_easy: string;
4075
+ itineraries_difficulty_moderate: string;
4076
+ itineraries_difficulty_challenging: string;
4077
+ itineraries_back_to_list: string;
4078
+ itineraries_route_label: string;
4079
+ itineraries_step_fallback: string;
4080
+ itineraries_highlights_label: string;
4081
+ itineraries_distance_label: string;
4082
+ itineraries_duration_label: string;
4083
+ itineraries_elevation_gain_label: string;
4084
+ itineraries_elevation_loss_label: string;
4085
+ itineraries_difficulty_label: string;
4086
+ itineraries_details_label: string;
4087
+ itineraries_elevation_profile_label: string;
4088
+ itineraries_elevation_profile_chart_label: string;
4089
+ itineraries_booking_title: string;
4090
+ itineraries_booking_description: string;
4091
+ itineraries_booking_cta: string;
3874
4092
  about_section_title: string;
3875
4093
  about_section_heading: string;
3876
4094
  about_section_fallback: string;
@@ -3896,12 +4114,18 @@ export declare const storefrontEn: {
3896
4114
  price_then: string;
3897
4115
  price_details_aria_label: string;
3898
4116
  price_table_title: string;
3899
- price_table_day_one: string;
3900
- price_table_day_other: string;
3901
- price_table_per_day: string;
4117
+ price_table_per_unit: string;
3902
4118
  price_table_contact_prompt: string;
4119
+ price_unit_hour_one: string;
4120
+ price_unit_hour_other: string;
4121
+ price_unit_half_day_one: string;
4122
+ price_unit_half_day_other: string;
3903
4123
  price_unit_day_one: string;
3904
4124
  price_unit_day_other: string;
4125
+ price_unit_week_one: string;
4126
+ price_unit_week_other: string;
4127
+ price_unit_month_one: string;
4128
+ price_unit_month_other: string;
3905
4129
  products_title: string;
3906
4130
  products_description: string;
3907
4131
  products_page_title: string;
@@ -3921,7 +4145,7 @@ export declare const storefrontEn: {
3921
4145
  cart_empty_description: string;
3922
4146
  cart_line_meta: string;
3923
4147
  remove_from_cart: string;
3924
- cart_total_per_day: string;
4148
+ cart_total_per_unit: string;
3925
4149
  cart_clear: string;
3926
4150
  booking_select_variant_cancel: string;
3927
4151
  close_modal: string;
@@ -3943,8 +4167,7 @@ export declare const storefrontEn: {
3943
4167
  checkout_subtitle: string;
3944
4168
  checkout_summary_title: string;
3945
4169
  checkout_summary_description: string;
3946
- checkout_estimated_days_one: string;
3947
- checkout_estimated_days_other: string;
4170
+ checkout_estimated_duration: string;
3948
4171
  checkout_estimated_total: string;
3949
4172
  checkout_form_title: string;
3950
4173
  checkout_form_description: string;
@@ -4290,6 +4513,7 @@ export declare const storefrontFr: {
4290
4513
  nav_categories: string;
4291
4514
  nav_featured: string;
4292
4515
  nav_products: string;
4516
+ nav_itineraries: string;
4293
4517
  nav_contact: string;
4294
4518
  language_toggle: string;
4295
4519
  cta_book_now: string;
@@ -4364,6 +4588,36 @@ export declare const storefrontFr: {
4364
4588
  featured_title: string;
4365
4589
  featured_description: string;
4366
4590
  featured_view_all: string;
4591
+ itineraries_eyebrow: string;
4592
+ itineraries_title: string;
4593
+ itineraries_description: string;
4594
+ itineraries_list_label: string;
4595
+ itineraries_view_all: string;
4596
+ itineraries_back_home: string;
4597
+ itineraries_page_title: string;
4598
+ itineraries_page_description_one: string;
4599
+ itineraries_page_description_other: string;
4600
+ itineraries_filter_label: string;
4601
+ itineraries_filter_all: string;
4602
+ itineraries_no_results: string;
4603
+ itineraries_difficulty_easy: string;
4604
+ itineraries_difficulty_moderate: string;
4605
+ itineraries_difficulty_challenging: string;
4606
+ itineraries_back_to_list: string;
4607
+ itineraries_route_label: string;
4608
+ itineraries_step_fallback: string;
4609
+ itineraries_highlights_label: string;
4610
+ itineraries_distance_label: string;
4611
+ itineraries_duration_label: string;
4612
+ itineraries_elevation_gain_label: string;
4613
+ itineraries_elevation_loss_label: string;
4614
+ itineraries_difficulty_label: string;
4615
+ itineraries_details_label: string;
4616
+ itineraries_elevation_profile_label: string;
4617
+ itineraries_elevation_profile_chart_label: string;
4618
+ itineraries_booking_title: string;
4619
+ itineraries_booking_description: string;
4620
+ itineraries_booking_cta: string;
4367
4621
  about_section_title: string;
4368
4622
  about_section_heading: string;
4369
4623
  about_section_fallback: string;
@@ -4389,12 +4643,18 @@ export declare const storefrontFr: {
4389
4643
  price_then: string;
4390
4644
  price_details_aria_label: string;
4391
4645
  price_table_title: string;
4392
- price_table_day_one: string;
4393
- price_table_day_other: string;
4394
- price_table_per_day: string;
4646
+ price_table_per_unit: string;
4395
4647
  price_table_contact_prompt: string;
4648
+ price_unit_hour_one: string;
4649
+ price_unit_hour_other: string;
4650
+ price_unit_half_day_one: string;
4651
+ price_unit_half_day_other: string;
4396
4652
  price_unit_day_one: string;
4397
4653
  price_unit_day_other: string;
4654
+ price_unit_week_one: string;
4655
+ price_unit_week_other: string;
4656
+ price_unit_month_one: string;
4657
+ price_unit_month_other: string;
4398
4658
  products_title: string;
4399
4659
  products_description: string;
4400
4660
  products_page_title: string;
@@ -4415,7 +4675,7 @@ export declare const storefrontFr: {
4415
4675
  cart_empty_description: string;
4416
4676
  cart_line_meta: string;
4417
4677
  remove_from_cart: string;
4418
- cart_total_per_day: string;
4678
+ cart_total_per_unit: string;
4419
4679
  cart_clear: string;
4420
4680
  booking_select_variant_cancel: string;
4421
4681
  close_modal: string;
@@ -4437,8 +4697,7 @@ export declare const storefrontFr: {
4437
4697
  checkout_subtitle: string;
4438
4698
  checkout_summary_title: string;
4439
4699
  checkout_summary_description: string;
4440
- checkout_estimated_days_one: string;
4441
- checkout_estimated_days_other: string;
4700
+ checkout_estimated_duration: string;
4442
4701
  checkout_estimated_total: string;
4443
4702
  checkout_form_title: string;
4444
4703
  checkout_form_description: string;
@@ -4740,6 +4999,441 @@ export declare const storefrontImageRequestSchema: z.ZodObject<{
4740
4999
  w: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
4741
5000
  }, z.core.$strip>;
4742
5001
 
5002
+ export declare const storefrontItinerariesFeaturedRequestSchema: z.ZodObject<{
5003
+ storeSlug: z.ZodString;
5004
+ }, z.core.$strip>;
5005
+
5006
+ export declare const storefrontItinerariesFeaturedResponseSchema: z.ZodObject<{
5007
+ success: z.ZodBoolean;
5008
+ message: z.ZodOptional<z.ZodString>;
5009
+ itineraries: z.ZodDefault<z.ZodArray<z.ZodObject<{
5010
+ slug: z.ZodString;
5011
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5012
+ value: z.ZodString;
5013
+ updatedAt: z.ZodCoercedDate<unknown>;
5014
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5015
+ }, z.core.$loose>>;
5016
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5017
+ value: z.ZodString;
5018
+ updatedAt: z.ZodCoercedDate<unknown>;
5019
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5020
+ }, z.core.$loose>>;
5021
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5022
+ value: z.ZodString;
5023
+ updatedAt: z.ZodCoercedDate<unknown>;
5024
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5025
+ }, z.core.$loose>>>;
5026
+ coverImageId: z.ZodNullable<z.ZodString>;
5027
+ difficulty: z.ZodEnum<{
5028
+ easy: "easy";
5029
+ moderate: "moderate";
5030
+ challenging: "challenging";
5031
+ }>;
5032
+ tripType: z.ZodEnum<{
5033
+ one_way: "one_way";
5034
+ out_and_back: "out_and_back";
5035
+ loop: "loop";
5036
+ }>;
5037
+ metrics: z.ZodObject<{
5038
+ distanceMeters: z.ZodNumber;
5039
+ durationSeconds: z.ZodNumber;
5040
+ elevationGainMeters: z.ZodNumber;
5041
+ elevationLossMeters: z.ZodNumber;
5042
+ }, z.core.$strip>;
5043
+ previewCoordinates: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
5044
+ steps: z.ZodArray<z.ZodObject<{
5045
+ id: z.ZodString;
5046
+ label: z.ZodRecord<z.ZodString, z.ZodObject<{
5047
+ value: z.ZodString;
5048
+ updatedAt: z.ZodCoercedDate<unknown>;
5049
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5050
+ }, z.core.$loose>>;
5051
+ description: z.ZodRecord<z.ZodString, z.ZodObject<{
5052
+ value: z.ZodString;
5053
+ updatedAt: z.ZodCoercedDate<unknown>;
5054
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5055
+ }, z.core.$loose>>;
5056
+ category: z.ZodOptional<z.ZodString>;
5057
+ role: z.ZodEnum<{
5058
+ shaping: "shaping";
5059
+ stop: "stop";
5060
+ detached: "detached";
5061
+ }>;
5062
+ point: z.ZodObject<{
5063
+ lng: z.ZodNumber;
5064
+ lat: z.ZodNumber;
5065
+ ele: z.ZodOptional<z.ZodNumber>;
5066
+ }, z.core.$strip>;
5067
+ imageIds: z.ZodArray<z.ZodString>;
5068
+ }, z.core.$strip>>;
5069
+ }, z.core.$strip>>>;
5070
+ }, z.core.$strip>;
5071
+
5072
+ export declare const storefrontItinerariesListRequestSchema: z.ZodObject<{
5073
+ storeSlug: z.ZodString;
5074
+ }, z.core.$strip>;
5075
+
5076
+ export declare const storefrontItinerariesListResponseSchema: z.ZodObject<{
5077
+ success: z.ZodBoolean;
5078
+ message: z.ZodOptional<z.ZodString>;
5079
+ itineraries: z.ZodDefault<z.ZodArray<z.ZodObject<{
5080
+ slug: z.ZodString;
5081
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5082
+ value: z.ZodString;
5083
+ updatedAt: z.ZodCoercedDate<unknown>;
5084
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5085
+ }, z.core.$loose>>;
5086
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5087
+ value: z.ZodString;
5088
+ updatedAt: z.ZodCoercedDate<unknown>;
5089
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5090
+ }, z.core.$loose>>;
5091
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5092
+ value: z.ZodString;
5093
+ updatedAt: z.ZodCoercedDate<unknown>;
5094
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5095
+ }, z.core.$loose>>>;
5096
+ coverImageId: z.ZodNullable<z.ZodString>;
5097
+ difficulty: z.ZodEnum<{
5098
+ easy: "easy";
5099
+ moderate: "moderate";
5100
+ challenging: "challenging";
5101
+ }>;
5102
+ tripType: z.ZodEnum<{
5103
+ one_way: "one_way";
5104
+ out_and_back: "out_and_back";
5105
+ loop: "loop";
5106
+ }>;
5107
+ metrics: z.ZodObject<{
5108
+ distanceMeters: z.ZodNumber;
5109
+ durationSeconds: z.ZodNumber;
5110
+ elevationGainMeters: z.ZodNumber;
5111
+ elevationLossMeters: z.ZodNumber;
5112
+ }, z.core.$strip>;
5113
+ }, z.core.$strip>>>;
5114
+ }, z.core.$strip>;
5115
+
5116
+ export declare const storefrontItineraryBoundsSchema: z.ZodObject<{
5117
+ west: z.ZodNumber;
5118
+ south: z.ZodNumber;
5119
+ east: z.ZodNumber;
5120
+ north: z.ZodNumber;
5121
+ }, z.core.$strip>;
5122
+
5123
+ export declare type StorefrontItineraryCoordinate = z.infer<typeof storefrontItineraryCoordinateSchema>;
5124
+
5125
+ export declare const storefrontItineraryCoordinateSchema: z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>;
5126
+
5127
+ export declare type StorefrontItineraryDetail = z.infer<typeof storefrontItineraryDetailSchema>;
5128
+
5129
+ export declare const storefrontItineraryDetailRequestSchema: z.ZodObject<{
5130
+ storeSlug: z.ZodString;
5131
+ itinerarySlug: z.ZodString;
5132
+ }, z.core.$strip>;
5133
+
5134
+ export declare const storefrontItineraryDetailResponseSchema: z.ZodObject<{
5135
+ success: z.ZodBoolean;
5136
+ message: z.ZodOptional<z.ZodString>;
5137
+ itinerary: z.ZodOptional<z.ZodObject<{
5138
+ slug: z.ZodString;
5139
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5140
+ value: z.ZodString;
5141
+ updatedAt: z.ZodCoercedDate<unknown>;
5142
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5143
+ }, z.core.$loose>>;
5144
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5145
+ value: z.ZodString;
5146
+ updatedAt: z.ZodCoercedDate<unknown>;
5147
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5148
+ }, z.core.$loose>>;
5149
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5150
+ value: z.ZodString;
5151
+ updatedAt: z.ZodCoercedDate<unknown>;
5152
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5153
+ }, z.core.$loose>>>;
5154
+ coverImageId: z.ZodNullable<z.ZodString>;
5155
+ difficulty: z.ZodEnum<{
5156
+ easy: "easy";
5157
+ moderate: "moderate";
5158
+ challenging: "challenging";
5159
+ }>;
5160
+ tripType: z.ZodEnum<{
5161
+ one_way: "one_way";
5162
+ out_and_back: "out_and_back";
5163
+ loop: "loop";
5164
+ }>;
5165
+ metrics: z.ZodObject<{
5166
+ distanceMeters: z.ZodNumber;
5167
+ durationSeconds: z.ZodNumber;
5168
+ elevationGainMeters: z.ZodNumber;
5169
+ elevationLossMeters: z.ZodNumber;
5170
+ }, z.core.$strip>;
5171
+ geometry: z.ZodObject<{
5172
+ type: z.ZodLiteral<"LineString">;
5173
+ coordinates: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
5174
+ }, z.core.$strip>;
5175
+ bounds: z.ZodNullable<z.ZodObject<{
5176
+ west: z.ZodNumber;
5177
+ south: z.ZodNumber;
5178
+ east: z.ZodNumber;
5179
+ north: z.ZodNumber;
5180
+ }, z.core.$strip>>;
5181
+ steps: z.ZodArray<z.ZodObject<{
5182
+ id: z.ZodString;
5183
+ label: z.ZodRecord<z.ZodString, z.ZodObject<{
5184
+ value: z.ZodString;
5185
+ updatedAt: z.ZodCoercedDate<unknown>;
5186
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5187
+ }, z.core.$loose>>;
5188
+ description: z.ZodRecord<z.ZodString, z.ZodObject<{
5189
+ value: z.ZodString;
5190
+ updatedAt: z.ZodCoercedDate<unknown>;
5191
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5192
+ }, z.core.$loose>>;
5193
+ category: z.ZodOptional<z.ZodString>;
5194
+ role: z.ZodEnum<{
5195
+ shaping: "shaping";
5196
+ stop: "stop";
5197
+ detached: "detached";
5198
+ }>;
5199
+ point: z.ZodObject<{
5200
+ lng: z.ZodNumber;
5201
+ lat: z.ZodNumber;
5202
+ ele: z.ZodOptional<z.ZodNumber>;
5203
+ }, z.core.$strip>;
5204
+ imageIds: z.ZodArray<z.ZodString>;
5205
+ }, z.core.$strip>>;
5206
+ }, z.core.$strip>>;
5207
+ }, z.core.$strip>;
5208
+
5209
+ export declare const storefrontItineraryDetailSchema: z.ZodObject<{
5210
+ slug: z.ZodString;
5211
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5212
+ value: z.ZodString;
5213
+ updatedAt: z.ZodCoercedDate<unknown>;
5214
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5215
+ }, z.core.$loose>>;
5216
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5217
+ value: z.ZodString;
5218
+ updatedAt: z.ZodCoercedDate<unknown>;
5219
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5220
+ }, z.core.$loose>>;
5221
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5222
+ value: z.ZodString;
5223
+ updatedAt: z.ZodCoercedDate<unknown>;
5224
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5225
+ }, z.core.$loose>>>;
5226
+ coverImageId: z.ZodNullable<z.ZodString>;
5227
+ difficulty: z.ZodEnum<{
5228
+ easy: "easy";
5229
+ moderate: "moderate";
5230
+ challenging: "challenging";
5231
+ }>;
5232
+ tripType: z.ZodEnum<{
5233
+ one_way: "one_way";
5234
+ out_and_back: "out_and_back";
5235
+ loop: "loop";
5236
+ }>;
5237
+ metrics: z.ZodObject<{
5238
+ distanceMeters: z.ZodNumber;
5239
+ durationSeconds: z.ZodNumber;
5240
+ elevationGainMeters: z.ZodNumber;
5241
+ elevationLossMeters: z.ZodNumber;
5242
+ }, z.core.$strip>;
5243
+ geometry: z.ZodObject<{
5244
+ type: z.ZodLiteral<"LineString">;
5245
+ coordinates: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
5246
+ }, z.core.$strip>;
5247
+ bounds: z.ZodNullable<z.ZodObject<{
5248
+ west: z.ZodNumber;
5249
+ south: z.ZodNumber;
5250
+ east: z.ZodNumber;
5251
+ north: z.ZodNumber;
5252
+ }, z.core.$strip>>;
5253
+ steps: z.ZodArray<z.ZodObject<{
5254
+ id: z.ZodString;
5255
+ label: z.ZodRecord<z.ZodString, z.ZodObject<{
5256
+ value: z.ZodString;
5257
+ updatedAt: z.ZodCoercedDate<unknown>;
5258
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5259
+ }, z.core.$loose>>;
5260
+ description: z.ZodRecord<z.ZodString, z.ZodObject<{
5261
+ value: z.ZodString;
5262
+ updatedAt: z.ZodCoercedDate<unknown>;
5263
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5264
+ }, z.core.$loose>>;
5265
+ category: z.ZodOptional<z.ZodString>;
5266
+ role: z.ZodEnum<{
5267
+ shaping: "shaping";
5268
+ stop: "stop";
5269
+ detached: "detached";
5270
+ }>;
5271
+ point: z.ZodObject<{
5272
+ lng: z.ZodNumber;
5273
+ lat: z.ZodNumber;
5274
+ ele: z.ZodOptional<z.ZodNumber>;
5275
+ }, z.core.$strip>;
5276
+ imageIds: z.ZodArray<z.ZodString>;
5277
+ }, z.core.$strip>>;
5278
+ }, z.core.$strip>;
5279
+
5280
+ export declare const storefrontItineraryDifficultySchema: z.ZodEnum<{
5281
+ easy: "easy";
5282
+ moderate: "moderate";
5283
+ challenging: "challenging";
5284
+ }>;
5285
+
5286
+ export declare type StorefrontItineraryLocalizedString = z.infer<typeof storefrontItineraryLocalizedStringSchema>;
5287
+
5288
+ export declare const storefrontItineraryLocalizedStringSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
5289
+ value: z.ZodString;
5290
+ updatedAt: z.ZodCoercedDate<unknown>;
5291
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5292
+ }, z.core.$loose>>;
5293
+
5294
+ export declare const storefrontItineraryMetricsSchema: z.ZodObject<{
5295
+ distanceMeters: z.ZodNumber;
5296
+ durationSeconds: z.ZodNumber;
5297
+ elevationGainMeters: z.ZodNumber;
5298
+ elevationLossMeters: z.ZodNumber;
5299
+ }, z.core.$strip>;
5300
+
5301
+ export declare type StorefrontItineraryPreview = z.infer<typeof storefrontItineraryPreviewSchema>;
5302
+
5303
+ export declare const storefrontItineraryPreviewSchema: z.ZodObject<{
5304
+ slug: z.ZodString;
5305
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5306
+ value: z.ZodString;
5307
+ updatedAt: z.ZodCoercedDate<unknown>;
5308
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5309
+ }, z.core.$loose>>;
5310
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5311
+ value: z.ZodString;
5312
+ updatedAt: z.ZodCoercedDate<unknown>;
5313
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5314
+ }, z.core.$loose>>;
5315
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5316
+ value: z.ZodString;
5317
+ updatedAt: z.ZodCoercedDate<unknown>;
5318
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5319
+ }, z.core.$loose>>>;
5320
+ coverImageId: z.ZodNullable<z.ZodString>;
5321
+ difficulty: z.ZodEnum<{
5322
+ easy: "easy";
5323
+ moderate: "moderate";
5324
+ challenging: "challenging";
5325
+ }>;
5326
+ tripType: z.ZodEnum<{
5327
+ one_way: "one_way";
5328
+ out_and_back: "out_and_back";
5329
+ loop: "loop";
5330
+ }>;
5331
+ metrics: z.ZodObject<{
5332
+ distanceMeters: z.ZodNumber;
5333
+ durationSeconds: z.ZodNumber;
5334
+ elevationGainMeters: z.ZodNumber;
5335
+ elevationLossMeters: z.ZodNumber;
5336
+ }, z.core.$strip>;
5337
+ previewCoordinates: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>]>>;
5338
+ steps: z.ZodArray<z.ZodObject<{
5339
+ id: z.ZodString;
5340
+ label: z.ZodRecord<z.ZodString, z.ZodObject<{
5341
+ value: z.ZodString;
5342
+ updatedAt: z.ZodCoercedDate<unknown>;
5343
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5344
+ }, z.core.$loose>>;
5345
+ description: z.ZodRecord<z.ZodString, z.ZodObject<{
5346
+ value: z.ZodString;
5347
+ updatedAt: z.ZodCoercedDate<unknown>;
5348
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5349
+ }, z.core.$loose>>;
5350
+ category: z.ZodOptional<z.ZodString>;
5351
+ role: z.ZodEnum<{
5352
+ shaping: "shaping";
5353
+ stop: "stop";
5354
+ detached: "detached";
5355
+ }>;
5356
+ point: z.ZodObject<{
5357
+ lng: z.ZodNumber;
5358
+ lat: z.ZodNumber;
5359
+ ele: z.ZodOptional<z.ZodNumber>;
5360
+ }, z.core.$strip>;
5361
+ imageIds: z.ZodArray<z.ZodString>;
5362
+ }, z.core.$strip>>;
5363
+ }, z.core.$strip>;
5364
+
5365
+ export declare type StorefrontItineraryStep = z.infer<typeof storefrontItineraryStepSchema>;
5366
+
5367
+ export declare const storefrontItineraryStepSchema: z.ZodObject<{
5368
+ id: z.ZodString;
5369
+ label: z.ZodRecord<z.ZodString, z.ZodObject<{
5370
+ value: z.ZodString;
5371
+ updatedAt: z.ZodCoercedDate<unknown>;
5372
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5373
+ }, z.core.$loose>>;
5374
+ description: z.ZodRecord<z.ZodString, z.ZodObject<{
5375
+ value: z.ZodString;
5376
+ updatedAt: z.ZodCoercedDate<unknown>;
5377
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5378
+ }, z.core.$loose>>;
5379
+ category: z.ZodOptional<z.ZodString>;
5380
+ role: z.ZodEnum<{
5381
+ shaping: "shaping";
5382
+ stop: "stop";
5383
+ detached: "detached";
5384
+ }>;
5385
+ point: z.ZodObject<{
5386
+ lng: z.ZodNumber;
5387
+ lat: z.ZodNumber;
5388
+ ele: z.ZodOptional<z.ZodNumber>;
5389
+ }, z.core.$strip>;
5390
+ imageIds: z.ZodArray<z.ZodString>;
5391
+ }, z.core.$strip>;
5392
+
5393
+ export declare type StorefrontItinerarySummary = z.infer<typeof storefrontItinerarySummarySchema>;
5394
+
5395
+ export declare const storefrontItinerarySummarySchema: z.ZodObject<{
5396
+ slug: z.ZodString;
5397
+ title: z.ZodRecord<z.ZodString, z.ZodObject<{
5398
+ value: z.ZodString;
5399
+ updatedAt: z.ZodCoercedDate<unknown>;
5400
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5401
+ }, z.core.$loose>>;
5402
+ introduction: z.ZodRecord<z.ZodString, z.ZodObject<{
5403
+ value: z.ZodString;
5404
+ updatedAt: z.ZodCoercedDate<unknown>;
5405
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5406
+ }, z.core.$loose>>;
5407
+ tags: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5408
+ value: z.ZodString;
5409
+ updatedAt: z.ZodCoercedDate<unknown>;
5410
+ autoTranslated: z.ZodOptional<z.ZodBoolean>;
5411
+ }, z.core.$loose>>>;
5412
+ coverImageId: z.ZodNullable<z.ZodString>;
5413
+ difficulty: z.ZodEnum<{
5414
+ easy: "easy";
5415
+ moderate: "moderate";
5416
+ challenging: "challenging";
5417
+ }>;
5418
+ tripType: z.ZodEnum<{
5419
+ one_way: "one_way";
5420
+ out_and_back: "out_and_back";
5421
+ loop: "loop";
5422
+ }>;
5423
+ metrics: z.ZodObject<{
5424
+ distanceMeters: z.ZodNumber;
5425
+ durationSeconds: z.ZodNumber;
5426
+ elevationGainMeters: z.ZodNumber;
5427
+ elevationLossMeters: z.ZodNumber;
5428
+ }, z.core.$strip>;
5429
+ }, z.core.$strip>;
5430
+
5431
+ export declare const storefrontItineraryTripTypeSchema: z.ZodEnum<{
5432
+ one_way: "one_way";
5433
+ out_and_back: "out_and_back";
5434
+ loop: "loop";
5435
+ }>;
5436
+
4743
5437
  export declare type StorefrontLocalizedRichText = z.infer<typeof storefrontLocalizedRichTextSchema>;
4744
5438
 
4745
5439
  export declare const storefrontLocalizedRichTextSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -5874,6 +6568,93 @@ export declare function useStorefrontConfig(): {
5874
6568
  };
5875
6569
  };
5876
6570
 
6571
+ export declare function useStorefrontItineraries(): {
6572
+ itineraries: {
6573
+ slug: string;
6574
+ title: Record<string, {
6575
+ [x: string]: unknown;
6576
+ value: string;
6577
+ updatedAt: Date;
6578
+ autoTranslated?: boolean | undefined;
6579
+ }>;
6580
+ introduction: Record<string, {
6581
+ [x: string]: unknown;
6582
+ value: string;
6583
+ updatedAt: Date;
6584
+ autoTranslated?: boolean | undefined;
6585
+ }>;
6586
+ tags: Record<string, {
6587
+ [x: string]: unknown;
6588
+ value: string;
6589
+ updatedAt: Date;
6590
+ autoTranslated?: boolean | undefined;
6591
+ }>[];
6592
+ coverImageId: string | null;
6593
+ difficulty: "easy" | "moderate" | "challenging";
6594
+ tripType: "one_way" | "out_and_back" | "loop";
6595
+ metrics: {
6596
+ distanceMeters: number;
6597
+ durationSeconds: number;
6598
+ elevationGainMeters: number;
6599
+ elevationLossMeters: number;
6600
+ };
6601
+ }[];
6602
+ featuredItineraries: {
6603
+ slug: string;
6604
+ title: Record<string, {
6605
+ [x: string]: unknown;
6606
+ value: string;
6607
+ updatedAt: Date;
6608
+ autoTranslated?: boolean | undefined;
6609
+ }>;
6610
+ introduction: Record<string, {
6611
+ [x: string]: unknown;
6612
+ value: string;
6613
+ updatedAt: Date;
6614
+ autoTranslated?: boolean | undefined;
6615
+ }>;
6616
+ tags: Record<string, {
6617
+ [x: string]: unknown;
6618
+ value: string;
6619
+ updatedAt: Date;
6620
+ autoTranslated?: boolean | undefined;
6621
+ }>[];
6622
+ coverImageId: string | null;
6623
+ difficulty: "easy" | "moderate" | "challenging";
6624
+ tripType: "one_way" | "out_and_back" | "loop";
6625
+ metrics: {
6626
+ distanceMeters: number;
6627
+ durationSeconds: number;
6628
+ elevationGainMeters: number;
6629
+ elevationLossMeters: number;
6630
+ };
6631
+ previewCoordinates: ([number, number] | [number, number, number])[];
6632
+ steps: {
6633
+ id: string;
6634
+ label: Record<string, {
6635
+ [x: string]: unknown;
6636
+ value: string;
6637
+ updatedAt: Date;
6638
+ autoTranslated?: boolean | undefined;
6639
+ }>;
6640
+ description: Record<string, {
6641
+ [x: string]: unknown;
6642
+ value: string;
6643
+ updatedAt: Date;
6644
+ autoTranslated?: boolean | undefined;
6645
+ }>;
6646
+ role: "shaping" | "stop" | "detached";
6647
+ point: {
6648
+ lng: number;
6649
+ lat: number;
6650
+ ele?: number | undefined;
6651
+ };
6652
+ imageIds: string[];
6653
+ category?: string | undefined;
6654
+ }[];
6655
+ }[];
6656
+ };
6657
+
5877
6658
  export declare function useStorefrontProducts(): {
5878
6659
  bikes: BikeProduct[];
5879
6660
  accessories: AccessoryProduct[];