@ticketboothapp/booking 1.2.24 → 1.2.25-rc.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.
- package/package.json +29 -2
- package/src/assets/icons/minus.svg +7 -0
- package/src/assets/icons/partner-logos/getyourguide.svg +8 -0
- package/src/assets/icons/plus.svg +3 -0
- package/src/colours.css +23 -0
- package/src/components/BookingDetails.module.css +1591 -0
- package/src/components/BookingDetails.tsx +2264 -0
- package/src/components/BookingWidget.tsx +302 -0
- package/src/components/ManageBookingView.tsx +437 -0
- package/src/components/PhoneInputWithCountry.module.css +131 -0
- package/src/components/PhoneInputWithCountry.tsx +44 -0
- package/src/components/PickupLocationDialog.module.css +360 -0
- package/src/components/PickupLocationDialog.tsx +357 -0
- package/src/components/PostBookingDependentAddOnUpsell.module.css +174 -0
- package/src/components/PostBookingDependentAddOnUpsell.tsx +407 -0
- package/src/components/booking/AddOnsSection.module.css +10 -0
- package/src/components/booking/AddOnsSection.tsx +184 -0
- package/src/components/booking/AdminPaymentChoiceModal.tsx +98 -0
- package/src/components/booking/BookingDialog.module.css +643 -0
- package/src/components/booking/BookingDialog.tsx +356 -0
- package/src/components/booking/BookingFlow.tsx +4385 -0
- package/src/components/booking/BookingFlowCollage.module.css +148 -0
- package/src/components/booking/BookingFlowCollage.tsx +184 -0
- package/src/components/booking/BookingFlowPlaceholder.module.css +27 -0
- package/src/components/booking/BookingFlowPlaceholder.tsx +25 -0
- package/src/components/booking/BookingFlowPreview.tsx +51 -0
- package/src/components/booking/BookingProductGrid.module.css +359 -0
- package/src/components/booking/BookingProductGrid.tsx +497 -0
- package/src/components/booking/Calendar.module.css +616 -0
- package/src/components/booking/Calendar.tsx +1123 -0
- package/src/components/booking/CancellationPolicySelector.module.css +124 -0
- package/src/components/booking/CancellationPolicySelector.tsx +142 -0
- package/src/components/booking/ChangeBookingDialog.tsx +562 -0
- package/src/components/booking/CheckoutForm.module.css +244 -0
- package/src/components/booking/CheckoutForm.tsx +364 -0
- package/src/components/booking/CheckoutModal.tsx +451 -0
- package/src/components/booking/CurrencySwitcher.tsx +81 -0
- package/src/components/booking/DapFlowCollage.tsx +88 -0
- package/src/components/booking/DapTourDescription.tsx +35 -0
- package/src/components/booking/DependentAddOnBookingDialog.tsx +1350 -0
- package/src/components/booking/DependentAddOnPaymentForm.tsx +124 -0
- package/src/components/booking/ErrorBoundary.tsx +63 -0
- package/src/components/booking/InfoTooltip.tsx +108 -0
- package/src/components/booking/ItineraryBox.module.css +258 -0
- package/src/components/booking/ItineraryBox.tsx +550 -0
- package/src/components/booking/ItineraryBuilder.tsx +82 -0
- package/src/components/booking/ItineraryPlaceholder.module.css +45 -0
- package/src/components/booking/ItineraryPlaceholder.tsx +26 -0
- package/src/components/booking/MealDrinkAddOnSelector.tsx +338 -0
- package/src/components/booking/PickupLocationSelector.module.css +124 -0
- package/src/components/booking/PickupLocationSelector.tsx +1566 -0
- package/src/components/booking/PickupTimeSelector.module.css +134 -0
- package/src/components/booking/PickupTimeSelector.tsx +112 -0
- package/src/components/booking/PriceBreakdown.tsx +154 -0
- package/src/components/booking/PriceSummary.tsx +234 -0
- package/src/components/booking/PrivateShuttleBookingFlow.module.css +357 -0
- package/src/components/booking/PrivateShuttleBookingFlow.tsx +2662 -0
- package/src/components/booking/PromoCodeInput.module.css +166 -0
- package/src/components/booking/PromoCodeInput.tsx +99 -0
- package/src/components/booking/ReturnTimeSelector.module.css +173 -0
- package/src/components/booking/ReturnTimeSelector.tsx +145 -0
- package/src/components/booking/TermsAcceptance.tsx +111 -0
- package/src/components/booking/TicketSelector.module.css +164 -0
- package/src/components/booking/TicketSelector.tsx +199 -0
- package/src/components/booking/TourDescription.module.css +304 -0
- package/src/components/booking/TourDescription.tsx +273 -0
- package/src/components/booking/booking-flow-ui.ts +38 -0
- package/src/components/booking/booking-flow.css +944 -0
- package/src/components/button.css +245 -0
- package/src/components/button.tsx +152 -0
- package/src/components/colorable-svg.tsx +29 -0
- package/src/components/image.css +29 -0
- package/src/components/image.tsx +113 -0
- package/src/components/partner/PartnerBookingPage.module.css +130 -0
- package/src/components/partner/PartnerBookingPage.tsx +390 -0
- package/src/components/partner/PartnerBookingPageWithBrowserMetadata.tsx +45 -0
- package/src/components/product-tag.module.css +30 -0
- package/src/components/product-tag.tsx +34 -0
- package/src/components/product-theme-pages/image-modal.tsx +248 -0
- package/src/components/product-theme-pages/photo-gallery.module.css +200 -0
- package/src/components/terms/TermsContent.tsx +178 -0
- package/src/components/value-pill.module.css +59 -0
- package/src/components/value-pill.tsx +46 -0
- package/src/constants/images.ts +556 -0
- package/src/constants/pill-values.ts +210 -0
- package/src/constants/products.ts +155 -0
- package/src/contexts/AvailabilitiesCacheContext.tsx +125 -0
- package/src/contexts/BookingAppContext.tsx +134 -0
- package/src/contexts/CompanyContext.tsx +70 -0
- package/src/data/dap-descriptions/session-couples-families-friends.en.json +61 -0
- package/src/data/dap-descriptions/session-elopements.en.json +60 -0
- package/src/data/dap-descriptions/session-proposals.en.json +60 -0
- package/src/data/product-descriptions/afternoon-delight.en.json +35 -0
- package/src/data/product-descriptions/emerald-lake-escape.en.json +68 -0
- package/src/data/product-descriptions/lake-louise-adventure.en.json +74 -0
- package/src/data/product-descriptions/moraine-lake-adventure.en.json +78 -0
- package/src/data/product-descriptions/moraine-lake-sunrise-lake-louise-golden-hour.en.json +65 -0
- package/src/data/product-descriptions/moraine-lake-sunrise.en.json +64 -0
- package/src/data/product-descriptions/private-tour.en.json +80 -0
- package/src/data/product-descriptions/two-lakes-combo.en.json +65 -0
- package/src/data/products-config.json +101 -0
- package/src/hooks/useBookingSourceMetadataFromLocation.ts +21 -0
- package/src/hooks/useIsBookingLaunchLive.ts +49 -0
- package/src/index.ts +79 -0
- package/src/lib/analytics.ts +197 -0
- package/src/lib/booking/booking-source.ts +51 -0
- package/src/lib/booking/checkout-breakdown.ts +69 -0
- package/src/lib/booking/correlation-id.ts +46 -0
- package/src/lib/booking/i18n/config.ts +21 -0
- package/src/lib/booking/i18n/index.tsx +144 -0
- package/src/lib/booking/i18n/messages/en.json +236 -0
- package/src/lib/booking/i18n/messages/fr.json +236 -0
- package/src/lib/booking/itinerary-display.ts +36 -0
- package/src/lib/booking/itinerary-labels.ts +70 -0
- package/src/lib/booking/location-calculations.ts +43 -0
- package/src/lib/booking/location-utils.ts +165 -0
- package/src/lib/booking/map-utils.ts +153 -0
- package/src/lib/booking/marker-icons.ts +113 -0
- package/src/lib/booking/normalize-booking-product-id.ts +21 -0
- package/src/lib/booking/pickup-location-types.ts +25 -0
- package/src/lib/booking/places-api.ts +154 -0
- package/src/lib/booking/pricing.ts +466 -0
- package/src/lib/booking/product-option-id.ts +35 -0
- package/src/lib/booking/source-metadata.ts +226 -0
- package/src/lib/booking/sunday-week.ts +14 -0
- package/src/lib/booking/theme.ts +83 -0
- package/src/lib/booking/trace-context.ts +62 -0
- package/src/lib/booking/utils.ts +9 -0
- package/src/lib/booking-api.ts +1793 -0
- package/src/lib/booking-constants.ts +23 -0
- package/src/lib/booking-ref.ts +13 -0
- package/src/lib/booking-types.ts +36 -0
- package/src/lib/currency.ts +81 -0
- package/src/lib/dap-descriptions.ts +50 -0
- package/src/lib/dap-itinerary-preview.ts +315 -0
- package/src/lib/dependent-add-on-api.ts +434 -0
- package/src/lib/env.ts +96 -0
- package/src/lib/firebase.ts +20 -0
- package/src/lib/job-application-api.ts +83 -0
- package/src/lib/manage-booking-embed-print.ts +16 -0
- package/src/lib/manage-booking-post-checkout.ts +68 -0
- package/src/lib/photo-dap-config.ts +228 -0
- package/src/lib/photo-packages.ts +75 -0
- package/src/lib/pickup/map-utils.ts +56 -0
- package/src/lib/pickup/marker-icons.ts +19 -0
- package/src/lib/product-descriptions.ts +66 -0
- package/src/lib/products-config.ts +73 -0
- package/src/providers/booking-dialog-provider.tsx +282 -0
- package/src/providers/dependent-add-on-dialog-provider.tsx +105 -0
- package/src/radius.css +5 -0
- package/src/spacing.css +7 -0
- package/src/strings/en.json +1774 -0
- package/src/strings/es.json +1573 -0
- package/src/strings/fr.json +1573 -0
- package/src/strings/index.js +23 -0
- package/src/text-style.css +56 -0
- package/src/utils/currency-converter.ts +101 -0
- package/tsconfig.json +8 -2
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext, useState, useEffect, ReactNode } from 'react';
|
|
4
|
+
import { getCompany, type Company } from '@/lib/booking-api';
|
|
5
|
+
import { ENV } from '@/lib/env';
|
|
6
|
+
|
|
7
|
+
interface CompanyContextType {
|
|
8
|
+
company: Company | null;
|
|
9
|
+
loading: boolean;
|
|
10
|
+
error: string | null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const CompanyContext = createContext<CompanyContextType | undefined>(undefined);
|
|
14
|
+
|
|
15
|
+
interface CompanyProviderProps {
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Provider component that fetches company data once and makes it available via context
|
|
21
|
+
*/
|
|
22
|
+
export function CompanyProvider({ children }: CompanyProviderProps) {
|
|
23
|
+
const [company, setCompany] = useState<Company | null>(null);
|
|
24
|
+
const [loading, setLoading] = useState(true);
|
|
25
|
+
const [error, setError] = useState<string | null>(null);
|
|
26
|
+
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
async function fetchCompany() {
|
|
29
|
+
try {
|
|
30
|
+
const companyData = await getCompany(ENV.COMPANY_ID);
|
|
31
|
+
setCompany(companyData);
|
|
32
|
+
setError(null);
|
|
33
|
+
} catch (err) {
|
|
34
|
+
console.warn('Failed to fetch company data, using defaults:', err);
|
|
35
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch company');
|
|
36
|
+
// Don't set company to null - let components use defaults
|
|
37
|
+
} finally {
|
|
38
|
+
setLoading(false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
fetchCompany();
|
|
43
|
+
}, []);
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<CompanyContext.Provider value={{ company, loading, error }}>
|
|
47
|
+
{children}
|
|
48
|
+
</CompanyContext.Provider>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Hook to access company context
|
|
54
|
+
* Returns company data, loading state, and error
|
|
55
|
+
*/
|
|
56
|
+
export function useCompany() {
|
|
57
|
+
const context = useContext(CompanyContext);
|
|
58
|
+
if (context === undefined) {
|
|
59
|
+
throw new Error('useCompany must be used within a CompanyProvider');
|
|
60
|
+
}
|
|
61
|
+
return context;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Hook to get company timezone with fallback
|
|
66
|
+
*/
|
|
67
|
+
export function useCompanyTimezone(): string {
|
|
68
|
+
const { company } = useCompany();
|
|
69
|
+
return company?.settings?.timezone || 'America/Edmonton';
|
|
70
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"paragraphs": [
|
|
3
|
+
"Looking to create memories with your loved ones in one of the most breathtaking places on earth? Let us help you turn it into an unforgettable experience.",
|
|
4
|
+
"Whether it's a joyful family gathering, a meaningful moment with friends, or a romantic couples shoot, we know how to blend into the moment while capturing it beautifully - candid, natural, and full of connection."
|
|
5
|
+
],
|
|
6
|
+
"sections": [
|
|
7
|
+
{
|
|
8
|
+
"title": "What's included",
|
|
9
|
+
"content": [
|
|
10
|
+
{
|
|
11
|
+
"title": "30-minute session",
|
|
12
|
+
"items": [
|
|
13
|
+
"📸 20 to 25 minutes of photography time",
|
|
14
|
+
"📍 2 Locations within walking distance",
|
|
15
|
+
"🖼️ 25 professionally edited photos delivered in a personalized online gallery"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "60-minute session",
|
|
20
|
+
"items": [
|
|
21
|
+
"📸 50 to 55 minutes of photography time",
|
|
22
|
+
"📍 2-3 Locations within walking distance",
|
|
23
|
+
"🖼️ 50 professionally edited photos delivered in a personalized online gallery"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"title": "90-minute session",
|
|
28
|
+
"items": [
|
|
29
|
+
"📸 80-90 mins of Photography Time",
|
|
30
|
+
"📍 5 Locations within walking distance",
|
|
31
|
+
"🖼️ 75 professionally edited photos delivered in a personalized online gallery"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"title": "Other details",
|
|
36
|
+
"items": [
|
|
37
|
+
"🖥️ Editing: Basic exposure and lighting adjustments + colour corrections",
|
|
38
|
+
"👭🏽 10 People Max per session"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"title": "Available add ons",
|
|
45
|
+
"content": [
|
|
46
|
+
"🏃♀️ Express Service - 7 Day turnaround on images - $300",
|
|
47
|
+
"🏃♀️💨 Super Express Service - 48-hour turnaround on images - $900",
|
|
48
|
+
"🔬 Additional Editing: Object Removal / Skin Retouching - $199/item",
|
|
49
|
+
"➕ Additional Images: 15 Additional Images - $99",
|
|
50
|
+
"♾️ The Works - Get ALL additional images taken on the day - $199"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Exclusions",
|
|
55
|
+
"content": [
|
|
56
|
+
"💵 Tips or Gratuities",
|
|
57
|
+
"🅿️ Parking Fees"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"paragraphs": [
|
|
3
|
+
"Planning to elope in one of the most breathtaking places on earth? Let us help you make it truly unforgettable. We know how to blend into the moment while capturing the joy of an intimate celebration beautifully."
|
|
4
|
+
],
|
|
5
|
+
"sections": [
|
|
6
|
+
{
|
|
7
|
+
"title": "What's included",
|
|
8
|
+
"content": [
|
|
9
|
+
{
|
|
10
|
+
"title": "30-minute session",
|
|
11
|
+
"items": [
|
|
12
|
+
"📸 20 to 25 minutes of photography time",
|
|
13
|
+
"📍 2 Locations within walking distance",
|
|
14
|
+
"🖼️ 25 professionally edited photos delivered in a personalized online gallery"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "60-minute session",
|
|
19
|
+
"items": [
|
|
20
|
+
"📸 50 to 55 minutes of photography time",
|
|
21
|
+
"📍 2-3 Locations within walking distance",
|
|
22
|
+
"🖼️ 50 professionally edited photos delivered in a personalized online gallery"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "90-minute session",
|
|
27
|
+
"items": [
|
|
28
|
+
"📸 80-90 mins of Photography Time",
|
|
29
|
+
"📍 5 Locations within walking distance",
|
|
30
|
+
"🖼️ 75 professionally edited photos delivered in a personalized online gallery"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"title": "Other details",
|
|
35
|
+
"items": [
|
|
36
|
+
"🖥️ Editing: Basic exposure and lighting adjustments + colour corrections",
|
|
37
|
+
"👭🏽 2 People Max per session"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "Available add ons",
|
|
44
|
+
"content": [
|
|
45
|
+
"🏃♀️ Express Service - 7 Day turnaround on images - $300",
|
|
46
|
+
"🏃♀️💨 Super Express Service - 48-hour turnaround on images - $900",
|
|
47
|
+
"🔬 Additional Editing: Object Removal / Skin Retouching - $199/item",
|
|
48
|
+
"➕ Additional Images: 15 Additional Images - $99",
|
|
49
|
+
"♾️ The Works - Get ALL additional images taken on the day - $199"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"title": "Exclusions",
|
|
54
|
+
"content": [
|
|
55
|
+
"💵 Tips or Gratuities",
|
|
56
|
+
"🅿️ Parking Fees"
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"paragraphs": [
|
|
3
|
+
"Planning to propose in one of the most breathtaking places on earth? Let us help you make it truly unforgettable. We know how to blend into the moment while capturing the joy of an intimate celebration beautifully."
|
|
4
|
+
],
|
|
5
|
+
"sections": [
|
|
6
|
+
{
|
|
7
|
+
"title": "What's included",
|
|
8
|
+
"content": [
|
|
9
|
+
{
|
|
10
|
+
"title": "30-minute session",
|
|
11
|
+
"items": [
|
|
12
|
+
"📸 20 to 25 minutes of photography time",
|
|
13
|
+
"📍 2 Locations within walking distance",
|
|
14
|
+
"🖼️ 25 professionally edited photos delivered in a personalized online gallery"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "60-minute session",
|
|
19
|
+
"items": [
|
|
20
|
+
"📸 50 to 55 minutes of photography time",
|
|
21
|
+
"📍 2-3 Locations within walking distance",
|
|
22
|
+
"🖼️ 50 professionally edited photos delivered in a personalized online gallery"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "90-minute session",
|
|
27
|
+
"items": [
|
|
28
|
+
"📸 80-90 mins of Photography Time",
|
|
29
|
+
"📍 5 Locations within walking distance",
|
|
30
|
+
"🖼️ 75 professionally edited photos delivered in a personalized online gallery"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"title": "Other details",
|
|
35
|
+
"items": [
|
|
36
|
+
"🖥️ Editing: Basic exposure and lighting adjustments + colour corrections",
|
|
37
|
+
"👭🏽 2 People Max per session"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "Available add ons",
|
|
44
|
+
"content": [
|
|
45
|
+
"🏃♀️ Express Service - 7 Day turnaround on images - $300",
|
|
46
|
+
"🏃♀️💨 Super Express Service - 48-hour turnaround on images - $900",
|
|
47
|
+
"🔬 Additional Editing: Object Removal / Skin Retouching - $199/item",
|
|
48
|
+
"➕ Additional Images: 15 Additional Images - $99",
|
|
49
|
+
"♾️ The Works - Get ALL additional images taken on the day - $199"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"title": "Exclusions",
|
|
54
|
+
"content": [
|
|
55
|
+
"💵 Tips or Gratuities",
|
|
56
|
+
"🅿️ Parking Fees"
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shortDescription": "[Replace with short description.]",
|
|
3
|
+
"paragraphs": [
|
|
4
|
+
"[Replace with your full description paragraph 1. Afternoon departure to Moraine Lake and Lake Louise. Describe the relaxed timing—ideal for those who prefer not to wake up early for sunrise.]",
|
|
5
|
+
"[Replace with your full description paragraph 2. Cover the afternoon schedule, pickup locations, and how the tour flows—which lake first, how much time at each.]",
|
|
6
|
+
"[Replace with your full description paragraph 3. Highlight the benefits of an afternoon tour—different light for photography, fewer crowds at certain times, a more leisurely pace.]",
|
|
7
|
+
"[Replace with your full description paragraph 4. Add who this tour suits—late risers, those with morning commitments, or visitors wanting a relaxed day exploring both lakes.]"
|
|
8
|
+
],
|
|
9
|
+
"review": {
|
|
10
|
+
"text": "[Replace with a customer review quote for this tour]",
|
|
11
|
+
"name": "— [Reviewer Name]"
|
|
12
|
+
},
|
|
13
|
+
"sections": [
|
|
14
|
+
{
|
|
15
|
+
"title": "What's included",
|
|
16
|
+
"content": [
|
|
17
|
+
"Afternoon round-trip to both lakes",
|
|
18
|
+
"Guide and park entry",
|
|
19
|
+
"Approximate time at each lake"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"title": "What to bring",
|
|
24
|
+
"content": [
|
|
25
|
+
"Layers, camera, water, snacks",
|
|
26
|
+
"Comfortable shoes",
|
|
27
|
+
"Sunscreen"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"title": "Important information",
|
|
32
|
+
"content": "[Replace with key info: afternoon departure time, pickup locations, cancellation policy, return time, etc.]"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shortDescription": "Visit the <b>Big 3 lakes of the Canadian Rockies; Moraine Lake, Lake Louise, and Emerald Lake</b>. On this scenic <b>small-group tour through Banff and Yoho National Park</b>. With <b>pickups in Canmore, Banff, and Lake Louise</b>, relax while our guides handle the driving and logistics. Along the way, we’ll also stop at <b>Natural Bridge</b> and the <b>impressive Takakkaw Falls</b>, giving you the chance to experience the <b>most iconic landscapes</b> of the Rockies <b>in one unforgettable day</b>.",
|
|
3
|
+
"paragraphs": [
|
|
4
|
+
"Visit the <b>3 most iconic lakes of the Canadian Rockies</b> on this scenic small-group tour through Banff and Yoho National Park. <b>Designed for travelers who want to experience the region’s most famous landscapes in a single unforgettable day</b>, this tour takes you to <b>Moraine Lake, Lake Louise, and Emerald Lake</b>, along with several spectacular stops along the way.",
|
|
5
|
+
"Your day begins with <b>convenient pickups in Canmore, Banff, or Lake Louise</b>. Sit back and relax while our local guides handle the driving and logistics, allowing you to enjoy the scenic journey through the mountains. Along the way, our guides will share stories about the region’s wildlife, geology, and history while pointing out some of the most beautiful viewpoints in the Rockies.",
|
|
6
|
+
"You’ll visit three of the most breathtaking lakes in the Canadian Rockies. Experience the world-famous turquoise waters of <b>Moraine Lake</b>, take in the iconic setting of <b>Lake Louise</b>, and discover the vibrant colors of <b>Emerald Lake</b> in Yoho National Park. At Emerald Lake, you’ll enjoy <b>exclusive access to the Emerald Lake Lodge</b>, located on the <b>“island in the Rockies”</b>, a quieter area of the lake with incredible views of the surrounding peaks. Guests also have the option to <b>purchase lunch packages from Emerald Lake Lodge</b>, making it easy to enjoy a meal while taking in the scenery.",
|
|
7
|
+
"Along the way, we’ll also stop at several remarkable natural landmarks. See the powerful cascade of <b>Takakkaw Falls, one of the tallest waterfalls in Canada</b>, and visit the unique rock formations of <b>Natural Bridge</b>, carved by the <b>rushing waters of the Kicking Horse River</b>.",
|
|
8
|
+
"To make the day even more enjoyable, we provide <b>hot drinks including locally roasted coffee, tea, and hot chocolate</b>, as well as water to refill your bottle and small trail snacks during the tour.",
|
|
9
|
+
"With <b>comfortable transportation, knowledgeable local guides, and visits to some of the most spectacular locations in Banff and Yoho National Park</b>, this tour offers a relaxed and memorable way to experience the very best of the Canadian Rockies in one incredible day."
|
|
10
|
+
],
|
|
11
|
+
"review": {
|
|
12
|
+
"text": "Via Via is a fantastic tour company - I went on their Emerald Lake Escape tour yesterday and had the best time! The locations were stunning and the bus was very comfortable. Our leader Léo was kind, personable, professional and a great driver – I was very happy with the service he and his colleagues provided throughout the day.",
|
|
13
|
+
"name": "— Nichole V."
|
|
14
|
+
},
|
|
15
|
+
"sections": [
|
|
16
|
+
{
|
|
17
|
+
"title": "What's included",
|
|
18
|
+
"content": [
|
|
19
|
+
"• Convenient pickup directly at your door in Canmore, Harvie Heights, Banff and Lake Louise 🏨 ",
|
|
20
|
+
"• Experienced local guides with tips and knowledge on the best photo spots, hikes, and view spots 🏔️ ",
|
|
21
|
+
"• Brand new comfortable & luxury shuttles 🚐 ",
|
|
22
|
+
"• Trailsnacks 🍫",
|
|
23
|
+
"• Water to refills - bring your water bottle 💧",
|
|
24
|
+
"• Phone chargers 🔋 ",
|
|
25
|
+
"• Moraine Lake Access Fee 🏞️",
|
|
26
|
+
"• Banff National Park Pass 🏞️",
|
|
27
|
+
"• Yoho National Park Pass 🏞️"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"title": "Tour highlights",
|
|
32
|
+
"content": [
|
|
33
|
+
"• Visit the Big 3 lakes of the Canadian Rockies in one unforgettable day.",
|
|
34
|
+
"• Experience Moraine Lake, Lake Louise, and Emerald Lake on one scenic tour.",
|
|
35
|
+
"• Stop at the powerful Takakkaw Falls and the unique rock formations of Natural Bridge.",
|
|
36
|
+
"• Exclusive access to the peaceful Emerald Lake Island for incredible views and photos.",
|
|
37
|
+
"• Enjoy hot drinks, trail snacks, and water refills throughout the day.",
|
|
38
|
+
"• Relax on a scenic drive through Banff and Yoho National Park while our guides handle the logistics.",
|
|
39
|
+
"• Learn about the area’s wildlife, history, and hidden gems from our knowledgeable local guides."
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "Additional information",
|
|
44
|
+
"content": [
|
|
45
|
+
"<strong>What to bring:</strong>",
|
|
46
|
+
"Even in the summer, temperatures and weather conditions can change quickly in the mountains and can be below freezing temperatures around sunrise.",
|
|
47
|
+
"✅ Make sure to bring enough layers, sunrise in the mountains can still be pretty chilly!",
|
|
48
|
+
"✅ Bring a beanie and gloves to keep you cozy and comfortable",
|
|
49
|
+
"✅ Bring water and snacks to stay energized throughout the day",
|
|
50
|
+
"✅ Be prepared for quick weather changes in the mountains",
|
|
51
|
+
"✅ Check the current weather conditions via the link in your booking confirmation email before departure!",
|
|
52
|
+
"<strong>Special requirements:</strong>",
|
|
53
|
+
"Children's safety seats are available for children aged 2 and up or weighing 40lbs (18kg) or more.",
|
|
54
|
+
"If your child is <strong>younger than 2</strong> or weighs <strong>less than 40lbs</strong>, a rear-facing safety seat is required, and <strong>customers must bring their own</strong>.",
|
|
55
|
+
"Please inform us in advance if you need a children's safety seat or if you will be bringing your own. The children's safety seat can stay in the shuttle during your lake visit.",
|
|
56
|
+
"<strong>Restrictions:</strong>",
|
|
57
|
+
"Small pets are welcome if they can fit in a carry-on cage on your lap.",
|
|
58
|
+
"Service animals of all sizes are allowed - <strong>please contact us beforehand if you're bringing a service animal</strong>.",
|
|
59
|
+
"<strong>Cancellations:</strong>",
|
|
60
|
+
"We offer standard, flexible, and premium cancellation policies.",
|
|
61
|
+
"<strong>Standard Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>72 hours before departure</strong> for a <strong>50% refund</strong>.",
|
|
62
|
+
"<strong>Flexible Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>24 hours before departure</strong> for a <strong>75% refund</strong>.",
|
|
63
|
+
"<strong>Premium Cancellation:</strong> Guests can cancel their booking up to <strong>12 hours before departure</strong> for a <strong>full refund</strong>.",
|
|
64
|
+
"Additionally, all guests may make changes to their booking date and time up to <strong>72 hours in advance of their trip</strong> (subject to availability). To cancel your booking, please contact us directly."
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shortDescription": "Spend the day <b>exploring Lake Louise</b> and its alpine trails with <b>direct access to the lake</b> - no traffic jams or parking hassles. With <b>convenient pickups in Canmore, Banff, and Lake Louise</b>, relax while our guides handle the driving and logistics. <b>Ideal for hikers</b>, you’ll have <b>five hours</b> to reach the <b>Lake Agnes Tea House</b> for lunch at 7,000 feet, hike the <b>Little Beehive Trail</b>, or explore this iconic place by canoe. Want more time? <b>Extend your stay by 3.5 hours</b>.",
|
|
3
|
+
"paragraphs": [
|
|
4
|
+
"Spend the day <b>exploring Lake Louise</b> and its surrounding alpine trails on this relaxed small-group shuttle. <b>Ideal for hikers and adventurers</b>, this tour gives you <b>direct access</b> to the lake <b>without the hassle of traffic jams or searching for parking</b>, along with plenty of <b>time to experience the area at your own pace</b>.",
|
|
5
|
+
"Your trip begins with <b>convenient pickups in Canmore, Banff, or Lake Louise</b>. Sit back and enjoy the <b>scenic drive through Banff National Park</b> while our local guides handle the logistics and share stories about the mountains, wildlife, and history of the area along the way.",
|
|
6
|
+
"Once at Lake Louise, you’ll have <b>five hours to explore</b> one of the most iconic alpine destinations in the Canadian Rockies. <b>Hike to the famous Lake Agnes Tea House</b> for lunch at 2,135 metres (7,000 feet), continue to the <b>Little Beehive for panoramic views</b>, or take a leisurely <b>walk along the lakeshore</b>. You can also <b>rent a canoe</b> (not included in the tour and available on a first-come, first-served basis) and paddle across the lake’s turquoise waters, or relax and enjoy the stunning mountain scenery.",
|
|
7
|
+
"For a more relaxed visit, stop by the <b>Fairmont Château Lake Louise</b> and enjoy <b>lunch or a classic afternoon “high tea”</b> overlooking the lake.",
|
|
8
|
+
"For those who want even <b>more time to explore</b>, you can <b>extend your stay by an additional 3.5 hours</b>. With comfortable transportation, convenient pickups, and plenty of time to explore, this shuttle offers an easy and memorable way to experience Lake Louise and its incredible alpine surroundings.",
|
|
9
|
+
"<strong>Popular hikes from Lake Louise:</strong>",
|
|
10
|
+
"• Fairview Lookout: 2.4 km / 1.5 mi round trip ~45-60 minutes",
|
|
11
|
+
"• Lake Agnes Tea House: 7.4 km / 4.6 mi round trip ~2-3 hours ",
|
|
12
|
+
"• Little Beehive: 9.2 km / 5.7 mi round trip ~3-4 hours ",
|
|
13
|
+
"• Saddleback Pass: 8.7km / 5.4 mi round trip ~3-5 hours ",
|
|
14
|
+
"<strong>Extended tour option recommended for:</strong>",
|
|
15
|
+
"• Big Beehive: 10.3 km / 6.4 mi round trip ~3-4 hours ",
|
|
16
|
+
"• Plain of Six Glaciers: 13.8 km / 8.6 mi round trip ~4-5 hours ",
|
|
17
|
+
"• Devil’s thumb: 11.4 km / 7 mi round trip ~4-6 hours"
|
|
18
|
+
],
|
|
19
|
+
"review": {
|
|
20
|
+
"text": "With the extended tour, we had more than enough time to do the Beehive hike. Everything went smoothly and the whole experience was very well organized.",
|
|
21
|
+
"name": "— Laura W."
|
|
22
|
+
},
|
|
23
|
+
"sections": [
|
|
24
|
+
{
|
|
25
|
+
"title": "What's included",
|
|
26
|
+
"content": [
|
|
27
|
+
"• Convenient pickup directly at your door in Canmore, Harvie Heights, Banff and Lake Louise 🏨 ",
|
|
28
|
+
"• Experienced local guides with tips and knowledge on the best photo spots, hikes, and view spots 🏔️ ",
|
|
29
|
+
"• Brand new comfortable & luxury shuttles 🚐 ",
|
|
30
|
+
"• Trailsnacks 🍫",
|
|
31
|
+
"• Water to refills - bring your water bottle 💧",
|
|
32
|
+
"• Phone chargers 🔋 ",
|
|
33
|
+
"• Banff National Park Pass 🏞️"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"title": "Tour highlights",
|
|
38
|
+
"content": [
|
|
39
|
+
"• No hassle with direct access to the iconic Lake Louise for an unforgettable day. ",
|
|
40
|
+
"• Relax on a scenic drive through Banff National Park while our guides handle the logistics. ",
|
|
41
|
+
"• Spend 5 full hours exploring Lake Louise and its surrounding trails. ",
|
|
42
|
+
"• Rent a canoe to explore the glacial waters of Lake Louise",
|
|
43
|
+
"• Extend your tour to take on longer day hikes, and plan a lunch at Lake Agnes Tea House.",
|
|
44
|
+
"• Small-group experience for a more relaxed and personalized tour. ",
|
|
45
|
+
"• Learn about the area’s wildlife, history, and hidden gems from our knowledgeable local guides."
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"title": "Additional information",
|
|
50
|
+
"content": [
|
|
51
|
+
"<strong>What to bring:</strong>",
|
|
52
|
+
"Even in the summer, temperatures and weather conditions can change quickly in the mountains and can be below freezing temperatures around sunrise.",
|
|
53
|
+
"✅ Make sure to bring enough layers, sunrise in the mountains can still be pretty chilly!",
|
|
54
|
+
"✅ Bring a beanie and gloves to keep you cozy and comfortable",
|
|
55
|
+
"✅ Bring water and snacks to stay energized throughout the day",
|
|
56
|
+
"✅ Be prepared for quick weather changes in the mountains",
|
|
57
|
+
"✅ Check the current weather conditions via the link in your booking confirmation email before departure!",
|
|
58
|
+
"<strong>Special requirements:</strong>",
|
|
59
|
+
"Children's safety seats are available for children aged 2 and up or weighing 40lbs (18kg) or more.",
|
|
60
|
+
"If your child is <strong>younger than 2</strong> or weighs <strong>less than 40lbs</strong>, a rear-facing safety seat is required, and <strong>customers must bring their own</strong>.",
|
|
61
|
+
"Please inform us in advance if you need a children's safety seat or if you will be bringing your own. The children's safety seat can stay in the shuttle during your lake visit.",
|
|
62
|
+
"<strong>Restrictions:</strong>",
|
|
63
|
+
"Small pets are welcome if they can fit in a carry-on cage on your lap.",
|
|
64
|
+
"Service animals of all sizes are allowed - <strong>please contact us beforehand if you're bringing a service animal</strong>.",
|
|
65
|
+
"<strong>Cancellations:</strong>",
|
|
66
|
+
"We offer standard, flexible, and premium cancellation policies.",
|
|
67
|
+
"<strong>Standard Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>72 hours before departure</strong> for a <strong>50% refund</strong>.",
|
|
68
|
+
"<strong>Flexible Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>24 hours before departure</strong> for a <strong>75% refund</strong>.",
|
|
69
|
+
"<strong>Premium Cancellation:</strong> Guests can cancel their booking up to <strong>12 hours before departure</strong> for a <strong>full refund</strong>.",
|
|
70
|
+
"Additionally, all guests may make changes to their booking date and time up to <strong>72 hours in advance of their trip</strong> (subject to availability). To cancel your booking, please contact us directly."
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shortDescription": "Spend the day <b>exploring Moraine Lake</b> and its surrounding alpine trails with <b>direct access to the lake</b> - no traffic jams or parking hassles. With <b>convenient pickups in Canmore, Banff, and Lake Louise</b>, relax while our guides handle the driving and logistics. <b>Ideal for hikers</b>, you’ll have up to <b>4 hours to explore</b> the lakeshore, hike to Consolation Lakes, or take in the famous views from the Rockpile. Want more time? Have a look at our <b>extended options</b>.",
|
|
3
|
+
"paragraphs": [
|
|
4
|
+
"Spend the day <b>exploring Moraine Lake</b> and its surrounding alpine trails on this <b>relaxed small-group shuttle</b>. With <b>direct access to the lake</b> - no traffic jams or parking hassles - this tour is ideal for <b>hikers, photographers, and anyone wanting more time to experience one of the most breathtaking places in the Canadian Rockies</b>.",
|
|
5
|
+
"Your trip begins with <b>convenient pickups in Canmore, Harvie Heights, Banff, or Lake Louise</b> in one of our comfortable vehicles. <b>Sit back and enjoy the scenic drive through Banff National Park</b> while our guides handle the logistics and share stories about the mountains, wildlife, and history of the area along the way.",
|
|
6
|
+
"We offer <b>three daily departures at 8 AM, 9 AM, and 1 PM</b>, each giving you <b>3.5 to 4 hours at Moraine Lake to explore the area at your own pace</b>. Walk along the lakeshore, take in the famous view from the Rockpile, rent a canoe on the lake’s turquoise waters, or head into the mountains on one of the many scenic hiking trails surrounding the lake.",
|
|
7
|
+
"For those looking to spend even more time exploring, <b>several extended return options are available</b>, giving hikers the opportunity to <b>complete longer alpine routes or combine multiple hikes in a single visit</b>.",
|
|
8
|
+
"With comfortable transportation, convenient pickups, and plenty of time to explore, this shuttle offers one of the <b>easiest and most flexible ways to experience the beauty of Moraine Lake</b>.",
|
|
9
|
+
|
|
10
|
+
"<strong>Popular hikes from Moraine Lake:</strong>",
|
|
11
|
+
"• Rockpile Trail: 0.8 km / 0.5 mi round trip ~15–30 minutes ",
|
|
12
|
+
"• Moraine Lakeshore Trail: 3 km / 1.9 mi round trip ~45–60 minutes ",
|
|
13
|
+
"• Consolation Lakes: 6 km / 3.7 mi round trip ~1.5–2 hours ",
|
|
14
|
+
"• Tower of Babel: 2.9 km / 1.8 mi round trip ~3-4 hours",
|
|
15
|
+
|
|
16
|
+
"<strong>Extended tour option recommended for:</strong>",
|
|
17
|
+
"• Larch Valley: 8.6 km / 5.3 mi round trip ~3–4 hours ",
|
|
18
|
+
"• Eiffel Lake: 11.6 km / 7.2 mi round trip ~4–5 hours ",
|
|
19
|
+
"• Sentinel Pass via Larch Valley: 11.2 km / 7 mi round trip ~4–6 hours ",
|
|
20
|
+
"• Lake Annette: 13 km / 8 mi round trip ~4–6 hours"
|
|
21
|
+
],
|
|
22
|
+
"review": {
|
|
23
|
+
"text": "Via Via is a great shuttle service to Moraine Lake. Comfortable, efficient, and friendly with lots of tips on where to go and what to see. We had plenty of time to hike around Moraine Lake and really enjoy the area.",
|
|
24
|
+
"name": "— Meyrem A."
|
|
25
|
+
},
|
|
26
|
+
"sections": [
|
|
27
|
+
{
|
|
28
|
+
"title": "What's included",
|
|
29
|
+
"content": [
|
|
30
|
+
"• Convenient pickup directly at your door in Canmore, Harvie Heights, Banff and Lake Louise 🏨 ",
|
|
31
|
+
"• Experienced local guides with tips and knowledge on the best photo spots, hikes, and view spots 🏔️ ",
|
|
32
|
+
"• Brand new comfortable & luxury shuttles 🚐 ",
|
|
33
|
+
"• Trailsnacks 🍫",
|
|
34
|
+
"• Water to refills - bring your water bottle 💧",
|
|
35
|
+
"• Phone chargers 🔋 ",
|
|
36
|
+
"• Moraine Lake Access Fee 🏞️",
|
|
37
|
+
"• Banff National Park Pass 🏞️"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"title": "Tour highlights",
|
|
42
|
+
"content": [
|
|
43
|
+
"• No hassle with direct access to the magical Moraine Lake for an unforgettable day. ",
|
|
44
|
+
"• Relax on a scenic drive through Banff National Park while our guides handle the logistics. ",
|
|
45
|
+
"• Spend 3.5-4 full hours exploring Lake Louise and its surrounding trails. ",
|
|
46
|
+
"• Rent a canoe to explore the turquoise waters of Moraine Lake.",
|
|
47
|
+
"• Extend your tour to embark on longer day hikes.",
|
|
48
|
+
"• Small-group experience for a more relaxed and personalized tour. ",
|
|
49
|
+
"• Learn about the area’s wildlife, history, and hidden gems from our knowledgeable local guides."
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"title": "Additional information",
|
|
54
|
+
"content": [
|
|
55
|
+
"<strong>What to bring:</strong>",
|
|
56
|
+
"Even in the summer, temperatures and weather conditions can change quickly in the mountains and can be below freezing temperatures around sunrise.",
|
|
57
|
+
"✅ Make sure to bring enough layers, sunrise in the mountains can still be pretty chilly!",
|
|
58
|
+
"✅ Bring a beanie and gloves to keep you cozy and comfortable",
|
|
59
|
+
"✅ Bring water and snacks to stay energized throughout the day",
|
|
60
|
+
"✅ Be prepared for quick weather changes in the mountains",
|
|
61
|
+
"✅ Check the current weather conditions via the link in your booking confirmation email before departure!",
|
|
62
|
+
"<strong>Special requirements:</strong>",
|
|
63
|
+
"Children's safety seats are available for children aged 2 and up or weighing 40lbs (18kg) or more.",
|
|
64
|
+
"If your child is <strong>younger than 2</strong> or weighs <strong>less than 40lbs</strong>, a rear-facing safety seat is required, and <strong>customers must bring their own</strong>.",
|
|
65
|
+
"Please inform us in advance if you need a children's safety seat or if you will be bringing your own. The children's safety seat can stay in the shuttle during your lake visit.",
|
|
66
|
+
"<strong>Restrictions:</strong>",
|
|
67
|
+
"Small pets are welcome if they can fit in a carry-on cage on your lap.",
|
|
68
|
+
"Service animals of all sizes are allowed - <strong>please contact us beforehand if you're bringing a service animal</strong>.",
|
|
69
|
+
"<strong>Cancellations:</strong>",
|
|
70
|
+
"We offer standard, flexible, and premium cancellation policies.",
|
|
71
|
+
"<strong>Standard Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>72 hours before departure</strong> for a <strong>50% refund</strong>.",
|
|
72
|
+
"<strong>Flexible Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>24 hours before departure</strong> for a <strong>75% refund</strong>.",
|
|
73
|
+
"<strong>Premium Cancellation:</strong> Guests can cancel their booking up to <strong>12 hours before departure</strong> for a <strong>full refund</strong>.",
|
|
74
|
+
"Additionally, all guests may make changes to their booking date and time up to <strong>72 hours in advance of their trip</strong> (subject to availability). To cancel your booking, please contact us directly."
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"shortDescription": "Experience the <b>magic of sunrise</b> in the Canadian Rockies on our <b>#1-rated tour to Moraine Lake and Lake Louise</b>. With convenient <b>doorstep pickup</b> from <b>Canmore, Banff, or Lake Louise</b>, relax while our expert guides handle all the logistics. Arrive at Moraine Lake <b>before sunrise and ahead of the crowds</b>. Watch the alpenglow light up the Valley of the Ten Peaks while you enjoy <b>warm drinks and blankets</b> at the Rockpile.",
|
|
3
|
+
"paragraphs": [
|
|
4
|
+
"Start your day with an <b>unforgettable sunrise</b> in the Canadian Rockies on our <b>#1-rated small-group tour to Moraine Lake and Lake Louise</b>. Thoughtfully timed to beat the crowds, this experience lets you enjoy <b>two of Banff’s most iconic lakes</b> in their most peaceful moments.",
|
|
5
|
+
"We’ll pick you up from your hotel or accommodation in <b>Canmore, Banff, or Lake Louise</b> so you can relax while our experienced guides take care of the driving and planning. At Moraine Lake, enjoy <b>locally roasted Eclipse coffee, tea, or hot chocolate</b> and <b>cozy blankets</b> as you watch the sunrise from the Rockpile, where the first light hits the Valley of the Ten Peaks and perfectly mirrors in Moraine Lake’s vibrant turquoise waters.",
|
|
6
|
+
"Next, visit the quiet <b>Lake Louise during the so-called golden hour</b>, before the bigger daytime crowds roll in. Stroll along the lakeshore, capture stunning photos, or hike to Fairview Lookout for panoramic views of the lake and surrounding peaks.",
|
|
7
|
+
"With exceptional local guides, comfortable transportation, and seamless planning, this tour offers a <b>fun, relaxed, and unforgettable</b> way to experience one of the <b>most beautiful mornings in the Canadian Rockies</b>."
|
|
8
|
+
],
|
|
9
|
+
"review": {
|
|
10
|
+
"text": "The trip was amazing! So easy to plan & book with lots of details about the day which was really useful! They offer blankets and hot drinks which is a really nice touch!",
|
|
11
|
+
"name": "— Megan"
|
|
12
|
+
},
|
|
13
|
+
"sections": [
|
|
14
|
+
{
|
|
15
|
+
"title": "What's included",
|
|
16
|
+
"content": [
|
|
17
|
+
"• Convenient pickup directly at your door in Canmore, Harvie Heights, Banff and Lake Louise 🏨",
|
|
18
|
+
"• Experienced local guides with tips and knowledge on the best photo spots, hikes, and view spots 🏔️",
|
|
19
|
+
"• Brand new comfortable & luxury shuttles 🚐",
|
|
20
|
+
"• Complimentary hot chocolate, coffee & tea ☕️",
|
|
21
|
+
"• Cozy blankets to keep you warm 🧣",
|
|
22
|
+
"• Headlamps for early mornings 🔦",
|
|
23
|
+
"• Phone chargers 🔋",
|
|
24
|
+
"• Moraine Lake Access Fee 🏞️"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"title": "Tour highlights",
|
|
29
|
+
"content": [
|
|
30
|
+
"• The most magical sunrise you'll ever witness at Moraine Lake!",
|
|
31
|
+
"• Quiet Golden Hour at the iconic Lake Louise.",
|
|
32
|
+
"• Enjoy this breathtaking sunrise with a hot drink under a cozy blanket!",
|
|
33
|
+
"• Smaller groups for a more intimate & personalized experience.",
|
|
34
|
+
"• Our sunrise shuttle arrives before sunrise - ensuring you get the best spots!",
|
|
35
|
+
"• Learn interesting insights, local tips, and stories from our expert guides.",
|
|
36
|
+
"• Optional: extend your stay and book our extended tour for a later return from Lake Louise."
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Additional information",
|
|
41
|
+
"content": [
|
|
42
|
+
"<strong>What to bring:</strong>",
|
|
43
|
+
"Even in the summer, temperatures and weather conditions can change quickly in the mountains and can be below freezing temperatures around sunrise.",
|
|
44
|
+
"✅ Make sure to bring enough layers, sunrise in the mountains can still be pretty chilly!",
|
|
45
|
+
"✅ Bring a beanie and gloves to keep you cozy and comfortable",
|
|
46
|
+
"✅ Bring water and snacks to stay energized throughout the day",
|
|
47
|
+
"✅ Be prepared for quick weather changes in the mountains",
|
|
48
|
+
"✅ Check the current weather conditions via the link in your booking confirmation email before departure!",
|
|
49
|
+
"<strong>Special requirements:</strong>",
|
|
50
|
+
"Children's safety seats are available for children aged 2 and up or weighing 40lbs (18kg) or more.",
|
|
51
|
+
"If your child is <strong>younger than 2</strong> or weighs <strong>less than 40lbs</strong>, a rear-facing safety seat is required, and <strong>customers must bring their own</strong>.",
|
|
52
|
+
"Please inform us in advance if you need a children's safety seat or if you will be bringing your own. The children's safety seat can stay in the shuttle during your lake visit.",
|
|
53
|
+
"<strong>Restrictions:</strong>",
|
|
54
|
+
"Small pets are welcome if they can fit in a carry-on cage on your lap.",
|
|
55
|
+
"Service animals of all sizes are allowed - <strong>please contact us beforehand if you're bringing a service animal</strong>.",
|
|
56
|
+
"<strong>Cancellations:</strong>",
|
|
57
|
+
"We offer standard, flexible, and premium cancellation policies.",
|
|
58
|
+
"<strong>Standard Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>72 hours before departure</strong> for a <strong>50% refund</strong>.",
|
|
59
|
+
"<strong>Flexible Cancellation:</strong> Guests can cancel their booking up to <strong>7 days prior to their trip</strong> for a <strong>full refund</strong>, cancel up to <strong>24 hours before departure</strong> for a <strong>75% refund</strong>.",
|
|
60
|
+
"<strong>Premium Cancellation:</strong> Guests can cancel their booking up to <strong>12 hours before departure</strong> for a <strong>full refund</strong>.",
|
|
61
|
+
"Additionally, all guests may make changes to their booking date and time up to <strong>72 hours in advance of their trip</strong> (subject to availability). To cancel your booking, please contact us directly."
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|