efficient-storefront-blocks 0.65.0 → 0.66.2
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/CHANGELOG.md +59 -0
- package/README.md +0 -1
- package/dist/chunks/EditorPreviewCheckout-HAUEGHGC.js +4 -0
- package/dist/chunks/{SiteEditorProvider-ZYGNRWSB.js → SiteEditorProvider-KOPR3UDU.js} +1 -1
- package/dist/chunks/{chunk-I7BIOONR.js → chunk-S66TL4Z3.js} +1 -1
- package/dist/chunks/{chunk-YAO6XQYA.js → chunk-TAGGXC3A.js} +1 -1
- package/dist/chunks/chunk-VEI75RPM.js +1 -0
- package/dist/chunks/{chunk-OU2WWXMT.js → chunk-Z7PJKX2P.js} +1 -1
- package/dist/chunks/{fitment-data-IKFCBT6E.js → fitment-data-UQDOQP66.js} +1 -1
- package/dist/consent.js +1 -1
- package/dist/editor/components/CollectionPicker.js +1 -1
- package/dist/editor/components/EditProductLink.js +1 -1
- package/dist/editor/components/FormPicker.js +1 -1
- package/dist/editor/components/GalleryProductBinding.d.ts +1 -1
- package/dist/editor/components/GalleryProductBinding.js +1 -1
- package/dist/editor/components/GalleryShowcaseSource.d.ts +1 -1
- package/dist/editor/components/GalleryShowcaseSource.js +1 -1
- package/dist/editor/components/HeaderSettingsPanel.js +1 -1
- package/dist/editor/components/MenuLinkRangeField.js +1 -1
- package/dist/editor/components/PerViewStepperField.js +1 -1
- package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +1 -1
- package/dist/editor/lib/puck/config.d.ts +0 -4
- package/dist/editor/lib/puck/config.js +1 -1
- package/dist/editor/lib/storefront-editor-words.d.ts +2 -4
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.js +43 -43
- package/dist/render/app/globals.css +18 -4
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/CartContext.d.ts +5 -0
- package/dist/render/components/CartContext.js +1 -1
- package/dist/render/components/ContactRouting.d.ts +11 -1
- package/dist/render/components/ContactRouting.js +1 -1
- package/dist/render/components/DetailRows.d.ts +2 -0
- package/dist/render/components/DetailRows.js +1 -1
- package/dist/render/components/Events.d.ts +11 -1
- package/dist/render/components/Events.js +1 -1
- package/dist/render/components/GalleryGrid.d.ts +4 -1
- package/dist/render/components/GalleryGrid.js +1 -1
- package/dist/render/components/GalleryItem.d.ts +1 -0
- package/dist/render/components/GalleryItem.js +1 -1
- package/dist/render/components/ProductGallery.js +1 -1
- package/dist/render/components/ProductGridSection.js +1 -1
- package/dist/render/components/checkout/CheckoutPageClient.js +3 -3
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
- package/dist/render/components/fitment/PickerField.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.d.ts +2 -0
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
- package/dist/render/components/pdp-dynamic/RecordPhotoGallery.d.ts +12 -0
- package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -0
- package/dist/render/lib/api/types.d.ts +1 -0
- package/dist/render/lib/checkout/match-subdivision.d.ts +2 -0
- package/dist/render/lib/checkout/match-subdivision.js +1 -0
- package/dist/render/lib/consent/choice.d.ts +0 -2
- package/dist/render/lib/consent/choice.js +1 -1
- package/dist/render/lib/consent/rules.d.ts +0 -1
- package/dist/render/lib/consent/rules.js +1 -1
- package/dist/render/lib/content/source-values.d.ts +4 -0
- package/dist/render/lib/content/source-values.js +1 -0
- package/dist/render/lib/content/stock-words.d.ts +0 -4
- package/dist/render/lib/content/stock-words.js +1 -1
- package/dist/render/lib/puck/blocks/commerce/GalleryB/render.js +1 -1
- package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +1 -1
- package/dist/render/lib/puck/blocks/service/Events/render.js +1 -1
- package/dist/render/lib/puck/blocks/text-part-shapes.json +6 -3
- package/dist/render/lib/puck/current-record.d.ts +1 -0
- package/dist/render/lib/puck/current-record.js +1 -1
- package/dist/render/lib/sections/fill-row.d.ts +8 -0
- package/dist/render/lib/sections/fill-row.js +1 -1
- package/dist/render/lib/sections/grid-no-hole.d.ts +12 -0
- package/dist/render/lib/sections/grid-no-hole.js +1 -0
- package/dist/render/lib/sections/own-padding.d.ts +3 -0
- package/dist/render/lib/sections/own-padding.js +1 -0
- package/dist/render/lib/wheels/catalog-filters-to-listing.d.ts +0 -1
- package/dist/render/lib/wheels/catalog-filters-to-listing.js +1 -1
- package/dist/render/lib/wheels/catalog-filters.d.ts +0 -1
- package/dist/render/lib/wheels/catalog-filters.js +1 -1
- package/dist/words.d.ts +3 -4
- package/dist/words.js +2 -2
- package/package.json +1 -1
- package/dist/chunks/EditorPreviewCheckout-4KZCYPQT.js +0 -4
- package/dist/chunks/chunk-GR7OHU32.js +0 -1
- /package/dist/chunks/{chunk-B44XQA2J.js → chunk-IHYVLVY3.js} +0 -0
- /package/dist/chunks/{chunk-YAO6XQYA.js.LEGAL.txt → chunk-TAGGXC3A.js.LEGAL.txt} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.66.2 - 2026-10-26
|
|
4
|
+
|
|
5
|
+
- **The checkout quotes shipping and tax for the ship-to address.** The cart's quote asked for the header region from two refs nothing wrote after mount, so the checkout's ship-to country and state never reached it: the delivery options, the shipping figure and the tax line all belonged to the header region, and a US shopper saw no sales tax before placing the order, which `createOrder` then priced on the real address. A change of header region also re-quoted on the old country. The destination is now cart state (`setQuoteDestination`, new on `useCart()`, with `QuoteDestination`): the checkout sets it from its address form and clears it when it leaves, and the drawer goes back to the header region. A state travels only with the ship-to country it was chosen for. The chosen delivery option follows the destination: a ship-to served by no option clears the pick, so the order is not sent an option that address is not offered. Guard: `scripts/test-checkout-quote-destination.tsx`.
|
|
6
|
+
- **A saved address brings its state to the checkout, and an address saved there keeps it.** Choosing a saved address (or the account prefill) filled everything but the State / Province: a different country's list arrived and blanked the field, and in the same country the previous address's state stayed, so the order went out with no state or the wrong one. "Save this address" sent no `state` either. The saved state is now restored once the list for its country is the one loaded (after the list's own reset), and matched the way the backend matches it (`matchSubdivision`, new in `lib/checkout`: the code, the country-prefixed bare code, then the name; free text where the country has no list; empty when nothing matches). `createAddress` sends `state`. Guard: `scripts/test-checkout-saved-address-state.tsx`.
|
|
7
|
+
|
|
8
|
+
## 0.66.1 - 2026-10-26
|
|
9
|
+
|
|
10
|
+
- **A record's photo gallery draws its pictures through the site's image component** (`Placeholder`, next/image), as the details' picture was drawn before 0.66.0. The storefront's room page guard (`test-record-page-published-copy`) asks that a published copy's photo is served through `/_next/image`, which the storefront's `images.localPatterns` admit; 0.66.0 drew a plain `<img>`. The lightbox's full-size picture stays a plain image. Guards: `test-record-photo-gallery` reads the lead's box, `test-roster-gaps` the encoded address.
|
|
11
|
+
|
|
12
|
+
## 0.66.0 - 2026-10-26
|
|
13
|
+
|
|
14
|
+
**A minor for hosts:** new optional props, no peer range change; `mediaPlace` is gone (below). Nothing is new to translate in the editor: the new words are the published page's ("Any", "Nobody matches.", "Play video of <name>").
|
|
15
|
+
|
|
16
|
+
- **A person's photos are one gallery, in one place** (Victor Mau, 2026-10-26, reviewing a venue's website: her first photo beside her details, then all of them again as a wall of tiles below, each opening only itself). New `components/pdp-dynamic/RecordPhotoGallery`: the first picture large (`object-cover`, full width), the rest as thumbnails under it, and ONE lightbox (the shared `Lightbox`) over them all, opening at the clicked one, with ◁ / ▷ and ← / → that loop and an "n / total" counter. Feature Rows bound to a record (`DynamicDetailRows`) draws it in the row's picture column (new optional `DetailRow.media`), so that section alone shows every picture; one picture still opens the lightbox. The Customer Photo Grid bound to a record draws it across the column in place of its tiles. Tiles say "Open photo of <name>". Product and authored galleries, product rows and the editor's stand-ins are unchanged.
|
|
17
|
+
- **A record's picture may be a video** (`RecordPicture.video`, an MP4; `url` stays the still, its poster). Its tile carries a ▶ badge ("Play video of <name>"); in the lightbox it plays in `<video controls playsInline preload="metadata">` with that poster, never by itself, and moving to another picture or closing pauses it.
|
|
18
|
+
- **A roster can be looked through by more than a name.** A card may carry `facets` (label → a value or a list of values; `EventCard.facets`), read off the served rows with their labels as served (the builder's row reader keeps words only, so the Events render reads them off the raw `dataRows`). With "Filter by name" on, each facet label gets a dropdown beside the box ("Any" first, values in natural order: "18–24" before "25–29"), wrapping under it on a phone; a card shows when it matches the name and every chosen value. With facets chosen the empty list says "Nobody matches.". Cards without facets draw the filter as before.
|
|
19
|
+
- **No empty hairline under no heading.** Latest Posts and the Customer Photo Grid (authored and bound) draw no `SectionHeader` on a published page when the head has no number, title or link; the editor keeps it.
|
|
20
|
+
- **A section's own top and bottom room.** Latest Posts and the Customer Photo Grid take optional `padTop` / `padBottom` (px), forwarded by their block renders, which replace the frame's 120px (70px on a phone; a count's 32px / 24px) on every screen. Absent writes nothing, so a stored section is unchanged. Not an editor row yet: the builder already gives both sections its injected Padding pair, and `test-section-padding` forbids a second; the rows come when the builder lists them in `SECTION_PAD_INNER`. New `lib/sections/own-padding`.
|
|
21
|
+
- **The day tabs draw no scrollbar.** Wider than 800px they wrap onto more lines; at 800px and below the row scrolls sideways with its bar hidden.
|
|
22
|
+
- Guards: new `scripts/test-roster-gaps.tsx` (red first: 8 of 9 failed on the old blocks; the no-facets control passed on both) and `scripts/test-record-photo-gallery.tsx` (red first: 6 of 6). `test-one-dropdown` lists the roster's facet `<select>` as a shopper's own.
|
|
23
|
+
|
|
24
|
+
## 0.66.0 - 2026-10-26
|
|
25
|
+
|
|
26
|
+
**A major for hosts (major version zero, so a minor number):** the `mediaPlace` prop and the `MediaPlace` / `MediaPlacedFile` types are gone (#235). No peer range changes: `efficient-shell` `^9.1.0`, `efficient-easel` `^20.2.0`, `efficient-web-builder` `^40.1.0`; the package is built against efficient-web-builder 40.1.1. 0.65.1 was never published: its section below ships in this release.
|
|
27
|
+
|
|
28
|
+
- **A set card never leaves a hole in a Product Grid** (hartesmetal.com, 2026-10-26: "The FusionForge range", set to 3 and capped at 3, drew Hawkish, the two-place Stealth set card and Savage, so the second row stood 2 places empty; Lewis chose option C). A grid that shows a set card counts places, not cards: it packs dense (a single card moves up into a place a set card left), tops up from its source until the last row is full, and trims the short row when the source has no more. Each width works it out for its own columns; a set card is one place below 800px. A hand-picked grid reads its set cards once drawn and packs and trims only. A grid of single cards is unchanged. New `lib/sections/grid-no-hole`; `lib/sections/fill-row` shares its width bands (`gridBands`, `inBand`, `gridTracks`).
|
|
29
|
+
- Guards: new `scripts/test-grid-no-hole.tsx` (red first: 5 of 6 failed on the old grid) and `scripts/test-grid-no-hole-hand-picked.tsx`. `test-grid-fills-its-row` measures through the new shared `scripts/grid-drawn.ts`.
|
|
30
|
+
- **Fix: a gallery with a chosen wall layout draws its photos on the editor's canvas** (Lewis 2026-10-25, GG 2026-10-26: hartesmetal.com Home, "Vehicle gallery", layout threeAcross, drew its heading and an empty grid in the editor; the live page was right). The wall's height rule reached `.sf-gallery-zone > * > *`: on the page that is the tile, on the canvas it is the builder's part host, so the tile (one level deeper) had no height and its photo drew 0 high. The rule now names the tile by its role (`[data-gallery-tile]` and its own box) in `src/render/app/globals.css`, so a wrapper between the grid and the tile changes nothing. The published page draws the same.
|
|
31
|
+
- Guard: new `scripts/test-gallery-wall-tile-on-canvas.tsx` (red first: on main the canvas tile, and with the words below the photo the canvas tile's box, had no height; the page checks passed on both).
|
|
32
|
+
- **Breaking for hosts: the `mediaPlace` prop and the `MediaPlace` / `MediaPlacedFile` types are gone** (added in 0.61). They were the pick path for a file dragged from the admin portal's media popup onto the canvas. That popup is gone (efficient-admin-portal #2871, one Media Library window), no host passes `mediaPlace`, and no host drags a file out, so they had no user. A host that still passes `mediaPlace` gets a type error; remove the prop. `mediaPanel` is unchanged.
|
|
33
|
+
- Guard: new `scripts/test-no-media-place.ts` (red first: 19 lines in 4 package files).
|
|
34
|
+
- **Dead code out: 11 exports that nothing read** (duplicate re-check 2026-10-26, row X06). Each was named only where it was defined, in the blocks, the storefront, the admin portal, the builder and easel: `unitsInStock`, `setsInStock`, `pickupAt`, `pickupAtCount` (`lib/content/stock-words`); `getConsent`, `subscribeConsent` and the store's listener set (`lib/consent/choice`: `useConsent` reads the provider's context, not the store); `PANEL_HEADING` (`lib/consent/rules`); `HERO_SINGLE_PH` (editor `lib/puck/config`); `hasActiveFilters` (`lib/wheels/catalog-filters`); `UNMAPPABLE_FACET_LABELS` (`lib/wheels/catalog-filters-to-listing`). No page changes. Three phrases leave the editor's words (`words.public.d.ts`), because only the removed constants said them: "About us", "Main heading & *highlight*" (`HERO_SINGLE_PH`) and "Price from" (`UNMAPPABLE_FACET_LABELS`). A host's translation list may drop them. Guard: new `scripts/test-dead-exports-stay-gone.ts` (red first: 11 of 11).
|
|
35
|
+
- **Settings-panel controls are 32.** Medium now: the Collection card's "Edit category", the product link's "Edit product", the Form picker's "Edit form", "New form" and "Try again", the gallery card's show / hide eye, the Header panel's "Retry" and Border thickness box, the Menu's Show links From / To boxes, and the Columns stepper's − and +.
|
|
36
|
+
- **A Header panel strip fills its row.** `Field`'s control slot grows (`grow`, the content width as its basis, so the row still wraps first), and the strip, as wide as its slot, fills it in equal parts (easel 19.3.0 and later; main pins `^20.2.0`).
|
|
37
|
+
- Guards: new `scripts/test-panel-controls-medium.ts` runs the builder's `panel-controls-medium` rule over the blocks (red first: 16 small controls). `SwitchToBoxHeader` is named as not a settings panel: a notice banner, as the builder names its `SwitchToBoxFooter` twin. `scripts/test-panel-row-wraps.tsx` §3 (red first): the control slot grows and keeps its basis.
|
|
38
|
+
- No peer change: main already pins `efficient-shell` `^9.1.0` (the Slider's 32 typed box, `boxSize`, efficient-shell #620), `efficient-easel` `^20.2.0` and `efficient-web-builder` `^40.1.0`, which carry the parts this needs (harness FT-6; Lewis 2026-10-12).
|
|
39
|
+
- **The four car-picker cells are one height, and each says its text on one line** (Lewis, 2026-10-26, hartesmetal.com/wheels/stealth: the boxes were uneven). In the wheel page's 640px column at a 1440 window, "Pick a model first" (129px in Hartes' 17px face) had 126px, so the Year cell wrapped to 90px beside three 69px cells, and the grid's line colour showed as a 21px strip under them. Now every cell fills its grid row (`h-full`), its value never wraps (`truncate`, the whole text in its `title`), and the compact grid takes its columns from its own width (`@container`): 4 at 39rem or more, 2 at 20rem or more, else 1, so a hint is never cut. The compact cell's side padding is 12px (was 16px).
|
|
40
|
+
- Guard: new `scripts/test-picker-cells-even.tsx` (red first: 5 of 5 failed on the old cells). `test-wheel-page-phone-words` R07 now holds the 1-2-4 column steps instead of the wrap.
|
|
41
|
+
- **The words under a product's picture are one row on its bottom edge** (Lewis, 2026-10-26, hartesmetal.com/wheels/stealth: the captions were messy; he chose option A). The caption strip sat 20px in from the picture's edges, and its left slot (the size) was empty until a size was picked, so "FusionForge · 1-piece" hung alone at the right; "Pick your vehicle to see every angle" was a line of its own under the frame, at another edge. Now the strip lies flush on the picture's bottom, left and right edges, like the title row on its top edge. Its left column holds the size, then the reference note ("this picture is another size"), then the hint, each only when there is one; the origin stays on the right. A phone keeps the strip as its own row under the picture.
|
|
42
|
+
- Guard: new `scripts/test-hero-caption-strip.tsx` (red first: 3 of 4 failed on the old strip; §4, the presence control, passed on both). `test-render-fallback-note` §3 and `test-product-hero-angles-hint` §5 read the strip. `test-data-bound-blocks` §1 applies this change, named, to its frozen markup (`SINCE_CAPTURE`), including the tyre drawing's `useId` that moves with it.
|
|
43
|
+
- **Fix: a ContactRouting channel can be typed, a new one and an existing one's Sub line** (found 2026-10-23 on hartesmetal.com /contact). It reads the builder's `PART_ROW_ATTR` and its row-panel fix for the Label, Value, Link and Sub line boxes (efficient-web-builder#279), which the `^40.1.0` peer on main already includes.
|
|
44
|
+
- While editing, an empty Label, Value or Sub line draws its hint word (`CHANNEL_HINTS`, the row fields' placeholders), so a channel added with "+ Add item" has something to click. A published page draws no hint.
|
|
45
|
+
- Each channel row, in the rail and in the phone list, declares its row (`PART_ROW_ATTR`, while editing), so a repeated string ("Detail · Detail", inboxes that share one address) opens its own channel.
|
|
46
|
+
- **Fix: a gallery card's vehicle line is the car its photos show, never the media group's name** (found 2026-10-23 on inovit.com Home: every lightbox said "Vehicle: All Relative / Lifestyle Photos").
|
|
47
|
+
- New `mediaGroupVehicle(group)` (`src/render/lib/content/source-values.ts`) reads `MediaGroup.vehicle`, which the backend serves and the contract now declares (`src/render/lib/api/types.ts`, from efficient-storefront `openapi.yml`). Gallery Item (product binding), Gallery A (`GalleryShowcaseSource`) and the product-page grid (`DynamicGalleryGrid`) all read it.
|
|
48
|
+
- A bound Gallery Item snapshots `vehicle` and no longer reads `eyebrow`, which held the group's name. So a card stored before this fix draws no vehicle line until its media group is picked again. The panel row reads "Vehicle (from media group)".
|
|
49
|
+
- Guard: new `scripts/test-contact-rows-and-gallery-vehicle.tsx` (red first: 21 checks failed on main with the new builder).
|
|
50
|
+
|
|
51
|
+
## 0.65.1 - 2026-10-25
|
|
52
|
+
|
|
53
|
+
**A patch for hosts:** no export or peer range changes, and one optional field (`photosOnly` on `GalleryLinksContext`). One phrase is new to translate (`efficient-storefront-blocks/words`): the builder's "Image — set a path", which efficient-web-builder 40.1.1 says in the editor only.
|
|
54
|
+
|
|
55
|
+
- This repository installs `efficient-web-builder` 40.1.1 (devDependency `^40.1.1`; the peer stays `^40.1.0`), so the storefront can move to it with the blocks' pin (its doc/adr/0011). `package/src/words.public.d.ts` lists the builder's new phrase.
|
|
56
|
+
- Guards follow the builder: `test-image-block-container-width` and `test-image-block-link` draw the empty Image in the editor (a published page draws nothing for it now); `test-logo-block` reads the neutral wordmark "Website"; `test-shell-peer-range` holds the dev range `^40.1.1`.
|
|
57
|
+
- **A gallery photo opens as a photo where there is no build to speak of** (a venue's website, 2026-10-25: a person's photo opened the wheel shop's build popup, her name as the "Wheel" and the "Vehicle", with "View product", "See more builds" and "Submit your build"). On a site that does not sell (`useSiteSells()`), and for a record's pictures on any site (a person, a room: new optional `photosOnly` on `GalleryLinksContext`, set by the dynamic grid), the popup is the photo, its name and its own caption lines, each once, with no spec rows, no links and no "on"; a photo with no words fills the popup alone. Its tile and dialog are called "Open photo of <name>". A selling site's build popup is unchanged.
|
|
58
|
+
- **"See Gallery" leads only to a page there is.** A record's pictures draw none (its page is their whole gallery); an authored gallery draws none on the page it links to, nor to the shop's `/gallery` on a site that does not sell.
|
|
59
|
+
- A record's picture no longer repeats the record's name as its caption.
|
|
60
|
+
- Guard: new `scripts/test-gallery-photo-popup.tsx` (red first: 3 of 4 failed on the old popup). `test-block-sources` §5 reads the record grid's own marker instead of its "See Gallery".
|
|
61
|
+
|
|
3
62
|
## 0.65.0 - 2026-10-25
|
|
4
63
|
|
|
5
64
|
**A minor for hosts:** no export, prop or peer range changes; a site that sells nothing says less. Three phrases are new to translate (`efficient-storefront-blocks/words`), the consent panel's: "Cart, checkout, your country and currency, sign-in, and this choice. The site cannot work without them." (it said "The shop"), "What the site needs to work, such as remembering this choice. The site cannot work without them." and "Google Ads and Meta (Facebook, Instagram) tags, which measure our ads.".
|
package/README.md
CHANGED
|
@@ -182,7 +182,6 @@ panel. Everything round it is the host's, as it is the admin portal's
|
|
|
182
182
|
| The token, and a fresh one when it runs out | It sends `storefront-editor:ready`, and `storefront-editor:auth-expired` when a call is refused; answer each with `deliver({ type: "storefront-editor:auth", token, siteId })` |
|
|
183
183
|
| A window to mount it in, and its address | `createEditorHost({ address })`: `search`, `show`, `load`, `reload`; it sends `storefront-editor:navigated` when it moves to another page |
|
|
184
184
|
| A media library | the `mediaPanel` prop (`MediaPanelComponent`, drawn once as the editor's popup: open while `pick` or `browsing` is set, closed by `onClose`). Without one, each image field sends `storefront-editor:open-media-picker`; answer with `storefront-editor:media-picked` or `storefront-editor:media-pick-cancelled` |
|
|
185
|
-
| A picture dropped from that popup | the `mediaPlace` prop (`MediaPlace`): what the file becomes on this host before the editor places it (its pick path). Without one, the file as it came |
|
|
186
185
|
| The page list's settings screen, and the new-page flow | `storefront-editor:open-page` (`slug`) and `storefront-editor:new-page`. The new-page flow is where a page is made blank or from the website's template library (`GET /api/storefront/pages/template-library/`, `POST /api/storefront/pages/from-template/`) |
|
|
187
186
|
| Menus | `storefront-editor:open-menus` (`menuId`); tell the editor with `storefront-editor:menus-updated` when one was saved |
|
|
188
187
|
| Forms, and the inbox of what was sent | `storefront-editor:open-form` (`mode: "create"` with a `requestId`, or `"edit"` with a `formId`); answer a create with `storefront-editor:form-saved` or `storefront-editor:form-closed` |
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use client";import{$ as Vt,K as Ut,L as Mt,M as Wt,N as $t,O as Kt,P as le,R as Pe,S as Yt,T as zt,U as tt,V as Bt,X as nt,Z as Ht,_ as Gt,a as qt,b as _t,c as Dt,d as Ft,ea as Jt,ja as Xt,ka as Zt,na as rt,pa as z,w as Ue}from"./chunk-VEI75RPM.js";import{i as Fe,o as ge,v as j}from"./chunk-Z7PJKX2P.js";import{a as Ot,c as ne,za as Tt}from"./chunk-S66TL4Z3.js";import{k as jt,l as Se,m as H}from"./chunk-IHYVLVY3.js";import{a as et,b as pr}from"./chunk-Y6SLVHK3.js";var en=et((la,Qt)=>{"use strict";var dr="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";Qt.exports=dr});var an=et((ua,rn)=>{"use strict";var mr=en();function tn(){}function nn(){}nn.resetWarningCache=tn;rn.exports=function(){function t(a,o,s,l,p,m){if(m!==mr){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}t.isRequired=t;function e(){return t}var n={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:nn,resetWarningCache:tn};return n.PropTypes=n,n}});var sn=et((ma,on)=>{"use strict";on.exports=an()();var pa,da});import{useEffect as _,useMemo as Ge,useRef as pe,useState as g}from"react";var w=pr(sn(),1);import k from"react";function cn(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,a=Array(e);n<e;n++)a[n]=t[n];return a}function fr(t){if(Array.isArray(t))return t}function mn(t,e,n){return(e=xr(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function gr(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var a,o,s,l,p=[],m=!0,u=!1;try{if(s=(n=n.call(t)).next,e!==0)for(;!(m=(a=s.call(n)).done)&&(p.push(a.value),p.length!==e);m=!0);}catch(h){u=!0,o=h}finally{try{if(!m&&n.return!=null&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw o}}return p}}function yr(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ln(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),n.push.apply(n,a)}return n}function un(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?ln(Object(n),!0).forEach(function(a){mn(t,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ln(Object(n)).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(n,a))})}return t}function hr(t,e){if(t==null)return{};var n,a,o=vr(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(a=0;a<s.length;a++)n=s[a],e.indexOf(n)===-1&&{}.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function vr(t,e){if(t==null)return{};var n={};for(var a in t)if({}.hasOwnProperty.call(t,a)){if(e.indexOf(a)!==-1)continue;n[a]=t[a]}return n}function fn(t,e){return fr(t)||gr(t,e)||kr(t,e)||yr()}function br(t,e){if(typeof t!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var a=n.call(t,e);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function xr(t){var e=br(t,"string");return typeof e=="symbol"?e:e+""}function at(t){"@babel/helpers - typeof";return at=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},at(t)}function kr(t,e){if(t){if(typeof t=="string")return cn(t,e);var n={}.toString.call(t).slice(8,-1);return n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set"?Array.from(t):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?cn(t,e):void 0}}var q=function(e,n,a){var o=!!a,s=k.useRef(a);k.useEffect(function(){s.current=a},[a]),k.useEffect(function(){if(!o||!e)return function(){};var l=function(){if(s.current)return s.current.apply(s,arguments)};return e.on(n,l),function(){e.off(n,l)}},[o,n,e,s])},ot=function(e){var n=k.useRef(e);return k.useEffect(function(){n.current=e},[e]),n.current},ye=function(e){return e!==null&&at(e)==="object"},Cr=function(e){return ye(e)&&typeof e.then=="function"},Sr=function(e){return ye(e)&&typeof e.elements=="function"&&typeof e.createToken=="function"&&typeof e.createPaymentMethod=="function"&&typeof e.confirmCardPayment=="function"},pn="[object Object]",Pr=function t(e,n){if(e===n)return!0;if(!ye(e)||!ye(n))return e===n;var a=Array.isArray(e),o=Array.isArray(n);if(a!==o)return!1;var s=Object.prototype.toString.call(e)===pn,l=Object.prototype.toString.call(n)===pn;if(s!==l)return!1;if(!s&&!a)return e===n;var p=Object.keys(e),m=Object.keys(n);if(p.length!==m.length)return!1;for(var u={},h=0;h<p.length;h+=1)u[p[h]]=!0;for(var C=0;C<m.length;C+=1)u[m[C]]=!0;var v=Object.keys(u);if(v.length!==p.length)return!1;var d=e,T=n,x=function(D){return t(d[D],T[D])};return v.every(x)},gn=function(e,n,a){return ye(e)?Object.keys(e).reduce(function(o,s){var l=!ye(n)||!Pr(e[s],n[s]);return a.includes(s)?(l&&console.warn("Unsupported prop change: options.".concat(s," is not a mutable property.")),o):l?un(un({},o||{}),{},mn({},s,e[s])):o},null):null},yn="Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.",dn=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn;if(e===null||Sr(e))return e;throw new Error(n)},wr=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yn;if(Cr(e))return{tag:"async",stripePromise:Promise.resolve(e).then(function(o){return dn(o,n)})};var a=dn(e,n);return a===null?{tag:"empty"}:{tag:"sync",stripe:a}},Nr=function(e){!e||!e._registerWrapper||!e.registerAppInfo||(e._registerWrapper({name:"react-stripe-js",version:"6.12.0"}),e.registerAppInfo({name:"react-stripe-js",version:"6.12.0",url:"https://stripe.com/docs/stripe-js/react"}))},Me=k.createContext(null);Me.displayName="ElementsContext";var hn=function(e,n){if(!e)throw new Error("Could not find Elements context; You need to wrap the part of your app that ".concat(n," in an <Elements> provider."));return e},st=function(e){var n=e.stripe,a=e.options,o=e.children,s=k.useMemo(function(){return wr(n)},[n]),l=k.useState(function(){return{stripe:s.tag==="sync"?s.stripe:null,elements:s.tag==="sync"?s.stripe.elements(a):null}}),p=fn(l,2),m=p[0],u=p[1];k.useEffect(function(){var v=!0,d=function(x){u(function(A){return A.stripe?A:{stripe:x,elements:x.elements(a)}})};return s.tag==="async"&&!m.stripe?s.stripePromise.then(function(T){T&&v&&d(T)}):s.tag==="sync"&&!m.stripe&&d(s.stripe),function(){v=!1}},[s,m,a]);var h=ot(n);k.useEffect(function(){h!==null&&h!==n&&console.warn("Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.")},[h,n]);var C=ot(a);return k.useEffect(function(){if(m.elements){var v=gn(a,C,["clientSecret","fonts"]);v&&m.elements.update(v)}},[a,C,m.elements]),k.useEffect(function(){Nr(m.stripe)},[m.stripe]),k.createElement(Me.Provider,{value:m},o)};st.propTypes={stripe:w.default.any,options:w.default.object};var vn=function(e){var n=k.useContext(Me);return hn(n,e)},bn=function(){var e=vn("calls useElements()"),n=e.elements;return n},Er=function(e){var n=e.children,a=vn("mounts <ElementsConsumer>");return n(a)};Er.propTypes={children:w.default.func.isRequired};var Rr=k.createContext(null);Rr.displayName="CheckoutContext";var xn=k.createContext(null);xn.displayName="CheckoutSdkContext";var it=function(e){var n=k.useContext(xn),a=k.useContext(Me);if(n){if(a)throw new Error("You cannot wrap the part of your app that ".concat(e," in both a checkout provider and <Elements> provider."));return n}else return hn(a,e)},Ir=["mode"],Ar=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},N=function(e,n,a){var o="".concat(Ar(e),"Element"),s=function(u){var h=u.id,C=u.className,v=u.options,d=v===void 0?{}:v,T=u.onBlur,x=u.onFocus,A=u.onReady,D=u.onChange,b=u.onEscape,O=u.onClick,G=u.onLoadError,re=u.onLoaderStart,ae=u.onNetworksChange,Ee=u.onConfirm,oe=u.onCancel,Re=u.onShippingAddressChange,ie=u.onShippingRateChange,Ie=u.onSavedPaymentMethodRemove,he=u.onSavedPaymentMethodUpdate,Ae=u.onAvailablePaymentMethodsChange,Q=it("mounts <".concat(o,">")),ee="elements"in Q?Q.elements:null,$="checkoutSdk"in Q?Q.checkoutSdk:null,ve=k.useState(null),de=fn(ve,2),R=de[0],be=de[1],M=k.useRef(null),se=k.useRef(null);q(R,"blur",T),q(R,"focus",x),q(R,"escape",b),q(R,"click",O),q(R,"loaderror",G),q(R,"loaderstart",re),q(R,"networkschange",ae),q(R,"confirm",Ee),q(R,"cancel",oe),q(R,"shippingaddresschange",Re),q(R,"shippingratechange",ie),q(R,"savedpaymentmethodremove",Ie),q(R,"savedpaymentmethodupdate",he),q(R,"availablepaymentmethodschange",Ae),q(R,"change",D);var ce;A&&(e==="expressCheckout"?ce=A:ce=function(){A(R)}),q(R,"ready",ce),k.useLayoutEffect(function(){if(M.current===null&&se.current!==null&&(ee||$)){var S=null;if($){var F=$,me=$;switch(e){case"paymentForm":S=me.createForm(d);break;case"payment":S=F.createPaymentElement(d);break;case"address":if("mode"in d){var te=d.mode,xe=hr(d,Ir);if(te==="shipping")S=F.createShippingAddressElement(xe);else if(te==="billing")S=F.createBillingAddressElement(xe);else throw new Error("Invalid options.mode. mode must be 'billing' or 'shipping'.")}else throw new Error("You must supply options.mode. mode must be 'billing' or 'shipping'.");break;case"expressCheckout":S=F.createExpressCheckoutElement(d);break;case"currencySelector":S=$.createCurrencySelectorElement();break;case"taxId":S=F.createTaxIdElement(d);break;case"contactDetails":S=F.createContactDetailsElement();break;case"linkSignup":if("createLinkSignupElement"in $)S=$.createLinkSignupElement(d);else throw new Error("<LinkSignupElement> requires <CheckoutElementsProvider> and is not supported inside <CheckoutFormProvider>.");break;case"terms":S=F.createTermsElement(d);break;default:throw new Error("<".concat(o,"> is not supported inside a checkout provider. Use an <Elements> provider instead."))}}else ee&&(S=ee.create(e,d));M.current=S,be(S),S&&S.mount(se.current)}},[ee,$,d]);var I=ot(d);return k.useEffect(function(){if(M.current){var S=gn(d,I,["paymentRequest"]);S&&"update"in M.current&&M.current.update(S)}},[d,I]),k.useLayoutEffect(function(){return function(){if(M.current&&typeof M.current.destroy=="function")try{M.current.destroy(),M.current=null}catch{}}},[]),k.createElement("div",{id:h,className:C,ref:se})},l=function(u){it("mounts <".concat(o,">"));var h=u.id,C=u.className;return k.createElement("div",{id:h,className:C})},p=n?l:s;return p.propTypes={id:w.default.string,className:w.default.string,onChange:w.default.func,onBlur:w.default.func,onFocus:w.default.func,onReady:w.default.func,onEscape:w.default.func,onClick:w.default.func,onLoadError:w.default.func,onLoaderStart:w.default.func,onNetworksChange:w.default.func,onConfirm:w.default.func,onCancel:w.default.func,onShippingAddressChange:w.default.func,onShippingRateChange:w.default.func,onSavedPaymentMethodRemove:w.default.func,onSavedPaymentMethodUpdate:w.default.func,onAvailablePaymentMethodsChange:w.default.func,options:w.default.object},p.displayName=o,p.__elementType=e,p},E=typeof window>"u",Lr=k.createContext(null);Lr.displayName="EmbeddedCheckoutProviderContext";var kn=function(){var e=it("calls useStripe()"),n=e.stripe;return n},ga=N("auBankAccount",E),ya=N("card",E),ha=N("cardNumber",E),va=N("cardExpiry",E),ba=N("cardCvc",E),xa=N("currencySelector",E),ka=N("iban",E),Cn=N("payment",E),Ca=N("expressCheckout",E),Sa=N("paymentRequestButton",E),Pa=N("linkAuthentication",E),wa=N("linkSignup",E),Na=N("contactDetails",E),Ea=N("address",E),Ra=N("shippingAddress",E),Ia=N("paymentMethodMessaging",E),Aa=N("taxId",E),La=N("issuingCardNumberDisplay",E),Oa=N("issuingCardCvcDisplay",E),Ta=N("issuingCardExpiryDisplay",E),ja=N("issuingCardPinDisplay",E),qa=N("issuingCardCopyButton",E),_a=N("terms",E);function Ke(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ke=function(e){return typeof e}:Ke=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ke(t)}var wn="dahlia",Or=function(e){return e===3?"v3":e},Nn="https://js.stripe.com",Tr="".concat(Nn,"/").concat(wn,"/stripe.js"),jr=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,qr=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,Sn="loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used",_r=function(e){return jr.test(e)||qr.test(e)},Dr=function(){for(var e=document.querySelectorAll('script[src^="'.concat(Nn,'"]')),n=0;n<e.length;n++){var a=e[n];if(_r(a.src))return a}return null},Pn=function(e){var n=e&&!e.advancedFraudSignals?"?advancedFraudSignals=false":"",a=document.createElement("script");a.src="".concat(Tr).concat(n);var o=document.head||document.body;if(!o)throw new Error("Expected document.body not to be null. Stripe.js requires a <body> element.");return o.appendChild(a),a},Fr=function(e,n){!e||!e._registerWrapper||e._registerWrapper({name:"stripe-js",version:"9.17.0",startTime:n})},we=null,We=null,$e=null,Ur=function(e){return function(n){e(new Error("Failed to load Stripe.js",{cause:n}))}},Mr=function(e,n){return function(){window.Stripe?e(window.Stripe):n(new Error("Stripe.js not available"))}},Wr=function(e){return we!==null?we:(we=new Promise(function(n,a){if(typeof window>"u"||typeof document>"u"){n(null);return}if(window.Stripe&&e&&console.warn(Sn),window.Stripe){n(window.Stripe);return}try{var o=Dr();if(o&&e)console.warn(Sn);else if(!o)o=Pn(e);else if(o&&$e!==null&&We!==null){var s;o.removeEventListener("load",$e),o.removeEventListener("error",We),(s=o.parentNode)===null||s===void 0||s.removeChild(o),o=Pn(e)}$e=Mr(n,a),We=Ur(a),o.addEventListener("load",$e),o.addEventListener("error",We)}catch(l){a(l);return}}),we.catch(function(n){return we=null,Promise.reject(n)}))},$r=function(e,n,a){if(e===null)return null;var o=n[0];if(typeof o!="string")throw new Error("Expected publishable key to be of type string, got type ".concat(Ke(o)," instead."));var s=o.match(/^pk_test/),l=Or(e.version),p=wn;s&&l!==p&&console.warn("Stripe.js@".concat(l," was loaded on the page, but @stripe/stripe-js@").concat("9.17.0"," expected Stripe.js@").concat(p,". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));var m=e.apply(void 0,n);return Fr(m,a),m},Ne,En=!1,Rn=function(){return Ne||(Ne=Wr(null).catch(function(e){return Ne=null,Promise.reject(e)}),Ne)};Promise.resolve().then(function(){return Rn()}).catch(function(t){En||console.warn(t)});var In=function(){for(var e=arguments.length,n=new Array(e),a=0;a<e;a++)n[a]=arguments[a];En=!0;var o=Date.now();return Rn().then(function(s){return $r(s,n,o)})};var Kr="sf:gclid",Yr="sf:fbclid",zr=2160*60*60*1e3;function On(){return typeof window<"u"}function An(t){let e=Se.getItem(t);if(!e)return"";try{let{v:n,t:a}=JSON.parse(e);return!n||typeof a!="number"||Date.now()-a>zr?"":n}catch{return""}}function Ln(t){if(!On())return"";let e=t.replace(/([.$?*|{}()[\]\\/+^])/g,"\\$1"),n=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return n?decodeURIComponent(n[1]):""}function Tn(){if(!On())return{};let t=An(Kr),e=An(Yr),n=Ln("_fbp"),a=Ln("_fbc");!a&&e&&(a=`fb.1.${Date.now()}.${e}`);let o={};return t&&(o.gclid=t),e&&(o.fbclid=e),n&&(o.fbp=n),a&&(o.fbc=a),o}var jn="sf:meta-purchases",Br=20;function _n(){return typeof window>"u"||window.parent!==window}function Hr(...t){try{if(_n()||typeof window.fbq!="function")return;window.fbq(...t)}catch{}}var qn=new Set;function Gr(t){if(qn.has(t))return!1;qn.add(t);try{let e=JSON.parse(Se.getItem(jn)??"[]");if(e.includes(t))return!1;Se.setItem(jn,JSON.stringify([...e,t].slice(-Br)))}catch{}return!0}function Vr(t){return[...new Set(t.filter(Pe).flatMap(e=>e.components.map(n=>n.partNumber)))]}function Dn(t){let e=t.confirmation;_n()||!Gr(e.orderNumber)||Hr("track","Purchase",{value:Number(e.grandTotal),currency:e.currency,content_type:"product",content_ids:Vr(t.lines)},{eventID:e.orderNumber})}var ct="checkout-afterpay-context",Ye="checkout-gocardless-context",lt="checkout-zip-context",ze="checkout-klarna-context";function Jr({evidence:t,parked:e}){return t?{action:"capture",evidence:t,parked:e}:e?{action:"settle",parked:e}:{action:"ignore"}}function Xr(t,e){let n=t.getItem(e);if(t.removeItem(e),!n)return null;try{return JSON.parse(n)}catch{return null}}var Fn={name:"Afterpay",legParam:"afterpay",legValues:["confirm","cancel"],storageKey:ct,evidenceFrom(t,e){return e==="cancel"||(t.get("status")??"").toUpperCase()==="CANCELLED"?null:t.get("orderToken")},requestFrom:t=>({token:t})},Un={name:"Zip",legParam:"zip",legValues:["return"],storageKey:lt,evidenceFrom(t){let e=(t.get("result")??"").toLowerCase();return e==="cancelled"||e==="declined"?null:t.get("checkoutId")},requestFrom:t=>({checkoutId:t})};async function ut(t,e){let n=new URLSearchParams(e.search),a=n.get(t.legParam);if(!a||!t.legValues.includes(a))return;let o=Xr(e.storage,t.storageKey),s=t.evidenceFrom(n,a);e.scrubQuery();let l=Jr({evidence:s,parked:o});if(l.action!=="ignore"){if(e.page.clearCart(),l.action==="settle"){e.page.note(`The ${t.name} payment was not completed \u2014 our team will follow up on payment.`),e.page.land(l.parked.confirmation);return}e.page.setConfirming(!0);try{let p=await e.capture(t.requestFrom(l.evidence));p.status==="paid"?e.page.markPaid():e.page.note(`${t.name} declined the payment \u2014 our team will follow up on payment.`),e.page.land(l.parked?.confirmation??p)}catch{l.parked?(e.page.note(`We could not confirm the ${t.name} payment \u2014 our team will follow up on payment.`),e.page.land(l.parked.confirmation)):e.page.fail(`We could not confirm your ${t.name} payment. Please contact us before trying again \u2014 your payment may already have been taken.`)}finally{e.page.setConfirming(!1)}}}function Mn(t,e,n){let a=(e??"").trim();if(!a)return"";if(n.length===0)return a;let o=a.toUpperCase(),s=`${t.toUpperCase()}-${o}`,l=n.find(p=>p.code&&p.code.toUpperCase()===o)??n.find(p=>p.code&&p.code.toUpperCase()===s)??n.find(p=>p.name.toUpperCase()===o);return l?l.code||l.name:""}import{Fragment as U,jsx as r,jsxs as c}from"react/jsx-runtime";function Wn(t){let e=t.indexOf(`
|
|
3
|
+
`);return e===-1?[t,""]:[t.slice(0,e),t.slice(e+1)]}function $n(t,{canParkContext:e}={canParkContext:!0}){let n=t.paymentMethods,a=[];return n.includes("card")&&a.push({key:"card",title:"Card",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"VISA \xB7 MC \xB7 AMEX"})}),n.includes("paypal")&&t.paypalClientId&&a.push({key:"paypal",title:"PayPal",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAYPAL \xB7 CARDS"})}),n.includes("afterpay")&&a.push({key:"afterpay",title:"Afterpay",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"4 \xD7 INTEREST-FREE"})}),n.includes("square")&&t.squareApplicationId&&t.squareLocationId&&a.push({key:"square",title:"Card (Square)",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"VISA \xB7 MC \xB7 AMEX"})}),n.includes("gocardless")&&e&&a.push({key:"gocardless",title:"Bank Direct Debit",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY BY BANK"})}),n.includes("zip")&&a.push({key:"zip",title:"Zip",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY IN 4"})}),n.includes("klarna")&&e&&a.push({key:"klarna",title:"Klarna",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY LATER"})}),a.push({key:"bank",title:"Bank transfer",body:null,price:r("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Invoiced"})}),a}function mt({site:t,logo:e,preview:n=!1}){let{items:a,totals:o,coupon:s,refuseCoupon:l,deliveryOptions:p,shippingMethodId:m,setShippingMethodId:u,setQuoteDestination:h,identify:C,clearCapturedCart:v}=tt(),d=p.find(i=>i.id===m)?.pickupLocation??null,{country:T,countries:x,activeCountry:A,formatMoney:D}=le(),[b,O]=g(()=>$n(t)[0].key),[G,re]=g(!0);_(()=>{re(jt(H))},[]);let[ae,Ee]=g(!1),[oe,Re]=g(""),[ie,Ie]=g(""),[he,Ae]=g(""),[Q,ee]=g(""),[$,ve]=g(""),[de,R]=g(""),[be,M]=g(""),[se,ce]=g(""),[I,S]=g(()=>T||x[0]?.code||""),[F,me]=g(""),[te,xe]=g([]),[ft,Je]=g(null),[Le,Oe]=g(null),Hn=Ge(()=>x.find(i=>i.code===I)??A,[x,I,A])?.postalLabel||"Postal Code",Gn=te[0]?.divisionType||"State / Province";_(()=>{if(!I){xe([]),Je(I);return}Je(null);let i=!1;return j.listCountrySubdivisions(I).then(f=>{i||(xe(f),Je(I),me(""))}),()=>{i=!0}},[I]),_(()=>{h(I?{country:I,subdivision:F}:null)},[I,F,h]),_(()=>()=>h(null),[h]);let[X,gt]=g(null),[yt,ht]=g([]),[Te,je]=g("new"),[Xe,vt]=g(!1),[bt,Vn]=g("Home"),[xt,kt]=g(null),[K]=g(()=>Zt()),[qe,Y]=g(null),[Ct,ke]=g(null),[St,Jn]=g(null),[Xn,Zn]=g(!1),[Qn,er]=g(!1),[V,Ze]=g(null),[Pt,fe]=g(!1),[wt,Z]=g(null),[tr,nr]=g(!1),[rr,Nt]=g(!1),[ar,or]=g(!1),[ir,Et]=g(!1),Rt=pe(!1);_(()=>{n||Rt.current||!a.some(Pe)||(Rt.current=!0,Ut({lines:a,currency:o.currency,value:o.subtotal-o.discount,coupon:s?.valid?s.code:void 0}))},[a,o,s,n]),_(()=>{C(oe,ie.trim()||void 0)},[oe,ie,C]);let It=pe(null),[_e,sr]=g(null);_(()=>{let i=It.current;if(!_e||!i)return;let f=()=>i.style.setProperty("--sf-checkout-header-h",`${_e.offsetHeight}px`);f();let y=new ResizeObserver(f);return y.observe(_e),()=>y.disconnect()},[_e]),_(()=>{let i=y=>({setConfirming:y,land:Y,markPaid:()=>fe(!0),note:Z,fail:ke,clearCart:v}),f={search:window.location.search,storage:H,scrubQuery:()=>window.history.replaceState(null,"",window.location.pathname)};ut(Fn,{...f,capture:j.captureAfterpayPayment,page:i(nr)}),ut(Un,{...f,capture:j.captureZipPayment,page:i(or)})},[]),_(()=>{let f=new URLSearchParams(window.location.search).get("gocardless");if(f!=="confirm"&&f!=="cancel")return;let y=H.getItem(Ye);if(H.removeItem(Ye),window.history.replaceState(null,"",window.location.pathname),!y)return;let L;try{L=JSON.parse(y)}catch{return}if(v(),f==="cancel"){Z("The direct debit was not set up \u2014 our team will follow up on payment."),Y(L.confirmation);return}Nt(!0),j.completeGocardlessPayment({idempotencyKey:L.idempotencyKey}).then(P=>{P.status==="paid"?fe(!0):P.status==="declined"?Z("The direct debit was declined \u2014 our team will follow up on payment."):Z("Your direct debit is set up \u2014 the payment is collecting and will clear in a few days.")}).catch(()=>{Z("We could not confirm the direct debit \u2014 our team will follow up on payment.")}).finally(()=>{Y(L.confirmation),Nt(!1)})},[]),_(()=>{let i=new URLSearchParams(window.location.search),f=i.get("klarna");if(f!=="confirm"&&f!=="cancel")return;let y=H.getItem(ze);H.removeItem(ze);let L=i.get("authorization_token");if(window.history.replaceState(null,"",window.location.pathname),!y)return;let P;try{P=JSON.parse(y)}catch{return}if(v(),f==="cancel"||!L){Z("The Klarna payment was not completed \u2014 our team will follow up on payment."),Y(P.confirmation);return}Et(!0),j.captureKlarnaPayment({idempotencyKey:P.idempotencyKey,authorizationToken:L}).then(W=>{W.status==="paid"?fe(!0):W.status==="declined"?Z("Klarna declined the payment \u2014 our team will follow up on payment."):Z("Your Klarna payment is being reviewed \u2014 we'll confirm the outcome shortly.")}).catch(()=>{Z("We could not confirm the Klarna payment \u2014 our team will follow up on payment.")}).finally(()=>{Y(P.confirmation),Et(!1)})},[]);function At(i){let[f,y]=Wn(i.address);ee(f),ve(y),R(i.city),M(i.zip_code),i.country&&S(i.country),i.phone&&ce(i.phone),Oe({country:i.country||null,state:i.state??""})}_(()=>{if(Le){if((Le.country||I)!==I){Oe(null);return}ft===I&&(me(Mn(I,Le.state,te)),Oe(null))}},[Le,I,ft,te]),_(()=>{let i=!1;return(async()=>{try{let[f,y,L]=await Promise.all([ge.me(),ge.myProfile().catch(()=>null),ge.myAddresses().catch(()=>[])]);if(i)return;gt(f);let P=L.filter(Ce=>Ce.is_active);ht(P),Re(f.email);let W=(y?.contact_name??"").split(/\s+/);Ie(f.first_name||W[0]||""),Ae(f.last_name||W.slice(1).join(" "));let J=f.phone||y?.phone;J&&ce(J);let Qe=P.find(Ce=>Ce.id===f.default_delivery_location)??P[0];if(Qe)je(Qe.id),At(Qe);else if(y){let[Ce,ur]=Wn(y.address??"");ee(Ce),ve(ur),R(y.city??""),M(y.zip_code??""),y.country&&S(y.country),Oe({country:y.country||null,state:y.state??""})}}catch{}})(),()=>{i=!0}},[]);function cr(){ge.logout(),gt(null),ht([]),je("new"),vt(!1)}let De=Ge(()=>$n(t,{canParkContext:G}),[t,G]);_(()=>{De.some(i=>i.key===b)||O(De[0].key)},[De,b]);let Lt=$.trim()?`${Q}
|
|
4
|
+
${$.trim()}`:Q;async function lr(){if(n||ae||a.length===0||o.repricing)return;let i=a.filter(Pe).flatMap(f=>Ft(f.components,f.qty));if(i.length===0){ke("Pick a size on each wheel's product page before checking out.");return}Ee(!0),ke(null);try{let f=X?j.createOrderAuthed:j.createOrder,y=Xt(),L=await f({customer:{email:oe,name:`${ie} ${he}`.trim(),phone:se.trim()||void 0,address:Lt,city:de,state:F||void 0,zipCode:be,country:I},items:i,currency:o.currency,idempotencyKey:K,shippingMethodId:m??void 0,couponCode:_t(s),...y==="denied"?{}:Tn(),...y?{adConsent:y}:{}});if(Mt({confirmation:L,lines:a,adsSendTo:t.googleAdsId&&t.googleAdsConversionLabel?`${t.googleAdsId}/${t.googleAdsConversionLabel}`:null}),Dn({confirmation:L,lines:a}),v(),X&&Xe&&Te==="new")try{await ge.createAddress({label:bt.trim()||"Home",contact_name:`${ie} ${he}`.trim(),phone:se.trim(),address:Lt,city:de,zip_code:be,state:F,country:I}),kt("Address saved to your account.")}catch{kt("We couldn't save the address to your account \u2014 you can add it under Account \u2192 Addresses.")}if(b==="card"&&t.paymentMethods.includes("card")){let P=await j.createPaymentIntent({idempotencyKey:K});Ze(L),Jn(P)}else if(b==="paypal"&&t.paymentMethods.includes("paypal"))Ze(L),Zn(!0);else if(b==="afterpay"&&t.paymentMethods.includes("afterpay")){let P=window.location.origin,W=await j.createAfterpayCheckout({idempotencyKey:K,confirmUrl:`${P}/checkout?afterpay=confirm`,cancelUrl:`${P}/checkout?afterpay=cancel`}),J={idempotencyKey:K,confirmation:L};H.setItem(ct,JSON.stringify(J)),window.location.assign(W.redirectCheckoutUrl);return}else if(b==="square"&&t.paymentMethods.includes("square"))Ze(L),er(!0);else if(b==="gocardless"&&t.paymentMethods.includes("gocardless")){let P=window.location.origin,W=await j.createGocardlessBillingRequest({idempotencyKey:K,confirmUrl:`${P}/checkout?gocardless=confirm`,cancelUrl:`${P}/checkout?gocardless=cancel`}),J={idempotencyKey:K,confirmation:L};H.setItem(Ye,JSON.stringify(J)),window.location.assign(W.authorisationUrl);return}else if(b==="zip"&&t.paymentMethods.includes("zip")){let P=window.location.origin,W=await j.createZipCheckout({idempotencyKey:K,redirectUrl:`${P}/checkout?zip=return`}),J={idempotencyKey:K,confirmation:L};H.setItem(lt,JSON.stringify(J)),window.location.assign(W.redirectUrl);return}else if(b==="klarna"&&t.paymentMethods.includes("klarna")){let P=window.location.origin,W=await j.createKlarnaCheckout({idempotencyKey:K,confirmUrl:`${P}/checkout?klarna=confirm`,cancelUrl:`${P}/checkout?klarna=cancel`}),J={idempotencyKey:K,confirmation:L};H.setItem(ze,JSON.stringify(J)),window.location.assign(W.redirectUrl);return}else Y(L)}catch(f){let y=Dt(f);y?(l(y),ke(`${y} Your order has not been placed. Place it again to continue without the code.`)):ke(f instanceof Fe?f.message:"Could not place the order. Please try again."),Ee(!1)}}return qe?c("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[r("h1",{className:"font-display text-3xl",children:Pt?"Payment received":"Order received"}),c("p",{className:"text-fg-dim",children:[Pt?c(U,{children:["Thank you \u2014 your payment for order"," ",r("span",{className:"font-mono text-fg",children:qe.orderNumber})," has gone through."," "]}):c(U,{children:["Thank you \u2014 your order ",r("span",{className:"font-mono text-fg",children:qe.orderNumber})," is being reviewed by our team."," "]}),X?c(U,{children:["Track it under"," ",r(ne,{href:"/account/orders",className:"text-accent underline",children:"your orders"}),"."]}):r(U,{children:"We\u2019ve emailed you a link to set a password and track it."})]}),wt&&r("p",{className:"text-sm text-fg-dim",children:wt}),xt&&r("p",{className:"text-sm text-fg-dim",children:xt}),!X&&c("p",{className:"text-sm text-fg-dim",children:["You can also"," ",r(ne,{href:`/track?order=${encodeURIComponent(qe.orderNumber)}`,className:"text-accent underline",children:"track this order"})," ","anytime with just your order number and email \u2014 no password needed."]}),r(ne,{href:"/wheels",className:"mt-2 border-2 border-line px-6 py-3 font-mono text-[12px] uppercase tracking-[0.24em] hover:border-accent",children:"Continue browsing"})]}):tr?c("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[r("h1",{className:"font-display text-3xl",children:"Confirming your payment\u2026"}),r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Afterpay \u2014 one moment."})]}):rr?c("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[r("h1",{className:"font-display text-3xl",children:"Setting up your direct debit\u2026"}),r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Confirming with GoCardless \u2014 one moment."})]}):ar?c("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[r("h1",{className:"font-display text-3xl",children:"Confirming your payment\u2026"}),r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Zip \u2014 one moment."})]}):ir?c("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[r("h1",{className:"font-display text-3xl",children:"Confirming your payment\u2026"}),r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Klarna \u2014 one moment."})]}):St?r(Zr,{payment:St,onPaid:()=>{fe(!0),Y(V)},onSkip:()=>Y(V)}):Xn&&V?r(ta,{confirmation:V,clientId:t.paypalClientId??"",idemKey:K,onPaid:()=>{fe(!0),Y(V)},onSkip:()=>Y(V)}):Qn&&V?r(ra,{confirmation:V,applicationId:t.squareApplicationId??"",locationId:t.squareLocationId??"",environment:t.squareEnvironment??"production",idemKey:K,onPaid:()=>{fe(!0),Y(V)},onSkip:()=>Y(V)}):c("div",{ref:It,className:"bg-bg text-fg",children:[c("header",{ref:sr,className:"sticky top-0 z-30 grid grid-cols-[1fr_auto_1fr] items-center gap-8 border-b border-line px-[var(--sf-site-gutter,40px)] py-6 backdrop-blur-md max-[640px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[640px]:py-4",style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:[c(ne,{href:"/",className:"inline-flex items-center gap-3 font-mono text-[13px] uppercase tracking-[0.26em] text-fg-dim transition-colors hover:text-accent",children:["\u2190",r("span",{className:"max-[640px]:hidden",children:"Back to shop"})]}),r(ne,{href:"/","aria-label":`${t.name} home`,className:"inline-flex items-center justify-center",children:r(Ht,{variant:"header",scrolled:!0,src:e?.url??null,reverse:e?.reverse??!1,reversedSrc:e?.reversed??null,inkIsDark:e?.inkIsDark??null,size:e?.size??"medium",sizePx:e?.sizePx??null,siteName:t.name})}),t.cardPayments?c("span",{className:"flex items-center justify-end gap-3 font-mono text-[12px] uppercase tracking-[0.26em] text-fg-dim",children:[r("span",{className:"text-green",children:"\u25CF"}),r("span",{className:"max-[640px]:hidden",children:"Encrypted \xB7"})," Stripe"]}):r("span",{})]}),c("section",{className:"mx-auto flex max-w-[var(--sf-site-width,1600px)] flex-wrap items-center justify-between gap-x-8 gap-y-3 border-b border-line bg-surface px-[var(--sf-site-gutter,40px)] py-4 font-mono text-[13px] font-medium uppercase tracking-[0.24em] text-fg max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))]",children:[r("span",{className:"inline-flex items-center bg-accent px-3 py-1 font-bold text-bg",children:"Checkout"}),r("nav",{"aria-label":"Checkout steps",className:"flex flex-wrap items-center gap-5",children:[{n:"01",label:"Cart",state:"done"},{n:"02",label:"Ship & pay",state:"active"},{n:"03",label:"Confirmed",state:"pending"}].map(i=>c("span",{className:["relative flex items-center gap-2 transition-colors",i.state==="pending"?"text-fg-dim":"text-fg",i.state==="active"?"font-bold after:absolute after:inset-x-0 after:-bottom-1 after:h-[2px] after:bg-accent":""].join(" "),children:[r("span",{className:i.state==="done"?"text-accent font-bold":"",children:i.n}),r("span",{children:i.label})]},i.n))})]}),c("main",{className:"mx-auto grid max-w-[var(--sf-site-width,1600px)] grid-cols-[1fr_420px] items-start gap-16 px-[var(--sf-site-gutter,40px)] pt-10 pb-[100px] max-[1100px]:grid-cols-1 max-[1100px]:gap-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-8 max-[1100px]:pb-20",children:[c("div",{children:[c(Be,{num:"N\xB0 01",title:"Contact",children:[r(z,{label:"Email",hint:X?c(U,{children:["Signed in \xB7"," ",r("button",{type:"button",onClick:cr,className:"underline transition-colors hover:text-accent",children:"Not you? Sign out"})]}):void 0,children:r("input",{type:"email",value:oe,onChange:i=>Re(i.target.value),placeholder:"you@example.com",readOnly:X!==null,className:B+(X?" opacity-70":"")})}),c(Yn,{children:[r(z,{label:"First name",children:r("input",{type:"text",value:ie,onChange:i=>Ie(i.target.value),className:B})}),r(z,{label:"Last name",children:r("input",{type:"text",value:he,onChange:i=>Ae(i.target.value),className:B})})]})]}),c(Be,{num:"N\xB0 02",title:d?"Collection":"Shipping address",children:[d?c("div",{className:"grid gap-2 text-[14px] leading-[1.6]",children:[r("span",{className:"font-medium",children:d.name}),[d.address,d.city,d.state,d.zipCode,d.country].filter(Boolean).length>0&&r("span",{className:"opacity-80",children:[d.address,d.city,d.state,d.zipCode,d.country].filter(Boolean).join(", ")}),d.openingHours&&r("span",{className:"opacity-80",children:d.openingHours}),d.instructions&&r("span",{className:"opacity-80",children:d.instructions}),r("span",{className:"mt-1 font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"No delivery address needed"})]}):c(U,{children:[X!==null&&yt.length>0&&c("div",{className:"grid gap-3",children:[yt.map(i=>r(He,{active:Te===i.id,onClick:()=>{je(i.id),At(i)},title:i.label,body:i.formatted_address,price:null},i.id)),r(He,{active:Te==="new",onClick:()=>je("new"),title:"New address",body:null,price:null})]}),r(z,{label:"Address line 1",children:r("input",{type:"text",value:Q,onChange:i=>ee(i.target.value),className:B})}),r(z,{label:"Address line 2",children:r("input",{type:"text",value:$,onChange:i=>ve(i.target.value),placeholder:"Apartment, unit, garage bay\u2026",className:B})}),c(Yn,{cols:"three",children:[r(z,{label:"City",children:r("input",{type:"text",value:de,onChange:i=>R(i.target.value),className:B})}),r(z,{label:Hn,children:r("input",{type:"text",value:be,onChange:i=>M(i.target.value),className:B})}),r(z,{label:"Country",separate:!0,children:r(rt,{value:I,onChange:i=>S(i.target.value),className:B+" pr-10",style:Kn,children:x.map(i=>r("option",{value:i.code,children:i.name},i.code))})})]}),r(z,{label:Gn,separate:!0,children:te.length>0?c(rt,{value:F,onChange:i=>me(i.target.value),className:B+" pr-10",style:Kn,children:[r("option",{value:"",children:"Select\u2026"}),te.map(i=>r("option",{value:i.code||i.name,children:i.name},i.code||i.name))]}):r("input",{type:"text",value:F,onChange:i=>me(i.target.value),className:B})})]}),r(z,{label:"Phone",children:r("input",{type:"tel",value:se,onChange:i=>ce(i.target.value),placeholder:"+44 7700 900000",className:B})}),!d&&X!==null&&Te==="new"&&c(U,{children:[r(aa,{checked:Xe,onChange:vt,label:"Save this address to my account"}),Xe&&r(z,{label:"Address label",children:r("input",{type:"text",value:bt,onChange:i=>Vn(i.target.value),placeholder:"Home",className:B})})]})]}),r(Be,{num:"N\xB0 03",title:"Shipping",children:c("div",{className:"grid gap-3",children:[p.map(i=>{let f=i.pickupLocation,y=f?[f.address,f.city,f.state,f.zipCode].filter(Boolean).join(", "):null;return r(He,{active:m===i.id,onClick:()=>u(i.id),title:f?`${i.name} \u2014 ${f.name}`:i.name,body:f?[y,f.openingHours,f.instructions,i.description].filter(Boolean).join(" \xB7 "):i.description||null,price:o.freeShipping||i.amount===0?Ue:D(i.amount,o.currency),tag:i.tag||void 0},i.id)}),p.length===0&&r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Shipping is arranged after your order is reviewed."})]})}),c(Be,{num:"N\xB0 04",title:"Payment",children:[r("div",{className:"grid gap-3",children:De.map(i=>r(He,{active:b===i.key,onClick:()=>O(i.key),title:i.title,body:i.body,price:i.price,tag:i.tag},i.key))}),b==="card"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll enter card details on the secure payment step after placing the order."}):b==="paypal"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll approve the payment with PayPal on the payment step after placing the order."}):b==="afterpay"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll be taken to Afterpay to approve four interest-free payments, then brought straight back."}):b==="square"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll enter card details on the secure payment step after placing the order."}):b==="gocardless"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll set up a bank direct debit with GoCardless, then be brought straight back. Direct debits clear in a few days."}):b==="zip"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll be taken to Zip to approve four instalments, then brought straight back."}):b==="klarna"?r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You\u2019ll be taken to Klarna to choose how to pay, then brought straight back."}):r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Our team emails you the invoice and bank details after review."})]})]}),c("aside",{className:"sticky top-[var(--sf-checkout-header-h,88px)] border border-line max-[1100px]:static",style:{background:"linear-gradient(180deg, color-mix(in oklab, var(--site-surface) 70%, var(--bg)) 0%, var(--bg) 100%)"},children:[c("header",{className:"flex items-center justify-between border-b border-accent bg-accent px-6 py-4 font-mono text-[13px] font-bold uppercase tracking-[0.28em] text-bg",children:[r("span",{children:"Your order"}),r(ne,{href:"/wheels",className:"text-bg/80 transition-colors hover:text-bg",children:"Edit \u2197"})]}),r("div",{className:"flex flex-col px-6 py-2",children:a.length===0?c("div",{className:"py-8 text-center font-serif text-[16px] italic leading-[1.5] text-fg-dim",children:["Your cart is empty. ",r(ne,{href:"/wheels",className:"text-accent underline-offset-4 hover:underline",children:"Browse the catalog \u2192"})]}):a.map(i=>r(oa,{slug:i.slug,name:i.name,qty:i.qty,config:i.config,configSummary:ia(i.config),price:Yt(i,o.currency)??0,currency:o.currency},i.id))}),r("div",{className:"border-t border-line px-6 pt-5",children:r(Jt,{customerEmail:oe})}),c("div",{className:"flex flex-col gap-2 border-t border-line mt-5 px-6 pt-5",children:[r(ue,{label:"Subtotal",value:D(o.subtotal,o.currency)}),o.discount>0&&s?.valid&&r(ue,{label:`Coupon \xB7 ${s.code}`,value:c("span",{className:"font-semibold text-green",children:["\u2212 ",D(o.discount,o.currency)]})}),s?.deferred&&r(ue,{label:`Coupon \xB7 ${s.code}`,value:qt}),s?.valid&&s.effects?.gift&&r(ue,{label:`Free gift \xB7 ${s.effects.gift.partNumber}${s.effects.gift.quantity>1?` \xD7${s.effects.gift.quantity}`:""}`,value:r("span",{className:"font-semibold text-green",children:Ue})}),r(ue,{label:"Shipping",value:o.shippingStatus==="free"?r("span",{className:"font-semibold text-green",children:Ue}):$t(o.shippingStatus)??D(o.shipping,o.currency)}),o.tax&&(o.tax.charged?r(ue,{label:o.tax.inclusive?`${o.tax.name} included \xB7 ${o.tax.rate}%`:o.tax.name,value:D(o.tax.amount,o.currency)}):o.tax.name?r(ue,{label:o.tax.name,value:Wt}):null)]}),c("div",{className:"mt-4 flex items-end justify-between border-y-2 border-accent px-6 py-4",style:{background:"color-mix(in oklab, var(--accent) 10%, var(--bg))"},children:[r("span",{className:"font-display text-[20px] font-bold uppercase tracking-[0.04em] text-fg",children:"Total"}),r("span",{className:"text-right font-display text-[34px] font-bold leading-none tracking-[-0.025em] text-fg",children:o.repricing?"\u2026":D(o.grand,o.currency)})]}),c("div",{className:"flex flex-col gap-3 px-6 pt-5 pb-6",children:[Ct&&r("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:Ct}),o.hasUnpricedLine&&c("p",{className:"border border-amber-300 bg-amber-50 px-3 py-2 text-[13px] text-amber-800",children:["One or more items have no price in ",o.currency,". Remove them, or switch region, to continue."]}),r("button",{type:"button",onClick:lr,disabled:ae||a.length===0||o.hasUnpricedLine||o.repricing,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",a.length===0||ae||o.hasUnpricedLine||o.repricing?"cursor-not-allowed border-line bg-surface text-fg-dim":"border-btn bg-btn text-btn-ink hover:border-fg hover:bg-fg"].join(" "),children:ae?c(U,{children:["Building order\u2026 ",r("span",{children:"\xB7"})]}):o.repricing?c(U,{children:["Updating total\u2026 ",r("span",{children:"\xB7"})]}):c(U,{children:[b==="bank"?"Place order":"Continue to payment"," \xB7"," ",D(o.grand,o.currency),r("span",{className:"transition-transform group-hover:translate-x-1",children:"\u2192"})]})})]})]})]}),r("footer",{className:"flex flex-wrap items-center justify-between gap-4 border-t border-line px-[var(--sf-site-gutter,40px)] py-6 font-mono text-[12px] uppercase tracking-[0.22em] text-fg-dim max-[640px]:px-[min(20px,var(--sf-site-gutter,40px))]",children:r("span",{children:Bt({legalName:t.legalName,foundedYear:t.foundedYear,siteName:t.name})})})]})}var B="w-full border-2 border-line bg-bg px-4 py-4 font-display text-[17px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent",Kn={backgroundImage:"linear-gradient(45deg, transparent 50%, var(--accent) 50%), linear-gradient(135deg, var(--accent) 50%, transparent 50%)",backgroundPosition:"calc(100% - 18px) 50%, calc(100% - 12px) 50%",backgroundSize:"6px 6px",backgroundRepeat:"no-repeat"};function Be({num:t,title:e,children:n}){return c("section",{className:"mb-6 border border-line bg-bg",children:[c("header",{className:"flex items-center gap-4 border-b border-line bg-surface px-6 py-4",children:[r("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:t}),r("h2",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:e})]}),r("div",{className:"flex flex-col gap-4 px-6 py-6",children:n})]})}function Yn({cols:t="two",children:e}){return r("div",{className:["grid gap-3 max-[640px]:grid-cols-1",t==="two"?"grid-cols-2":"grid-cols-[1.2fr_1fr_1fr]"].join(" "),children:e})}function He({active:t,onClick:e,title:n,body:a,price:o,tag:s}){return c("button",{type:"button",onClick:e,"aria-pressed":t,className:["relative grid grid-cols-[auto_1fr_auto] items-center gap-5 border bg-bg px-6 py-5 text-left transition-colors",t?"border-accent outline outline-1 outline-accent -outline-offset-1":"border-line hover:border-[color-mix(in_oklab,var(--accent)_50%,var(--site-line))]"].join(" "),style:t?{background:"color-mix(in oklab, var(--accent) 14%, var(--bg))"}:void 0,children:[t&&r("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),r("span",{className:["flex h-[18px] w-[18px] items-center justify-center rounded-full border-2",t?"border-accent":"border-fg-dim"].join(" "),children:t&&r("span",{className:"block h-2.5 w-2.5 rounded-full bg-accent"})}),c("span",{className:"flex min-w-0 flex-col gap-1",children:[c("span",{className:"flex flex-wrap items-baseline gap-3 font-display text-[18px] font-medium tracking-[-0.01em] text-fg",children:[n,s&&r("span",{className:"border px-2 py-0.5 font-mono text-[11px] font-normal uppercase tracking-[0.24em] text-accent",style:{background:"color-mix(in oklab, var(--accent) 14%, transparent)",borderColor:"color-mix(in oklab, var(--accent) 45%, var(--site-line))"},children:s})]}),a&&r("span",{className:"font-mono text-[12px] uppercase tracking-[0.22em] text-fg-dim",children:a})]}),r("span",{className:"whitespace-nowrap font-display text-[18px] font-medium tracking-[-0.01em] text-fg",children:o})]})}function Zr({payment:t,onPaid:e,onSkip:n}){let{formatMoney:a}=le(),o=Ge(()=>In(t.publishableKey),[t.publishableKey]),s=Ge(()=>{if(typeof document>"u")return;let l=getComputedStyle(document.documentElement),p=(u,h)=>l.getPropertyValue(u).trim()||h,m=document.documentElement.getAttribute("data-theme")!=="light";return{theme:m?"night":"stripe",variables:{colorPrimary:p("--accent",m?"#c9a461":"#8a6a2a"),colorBackground:p("--site-surface",m?"#131313":"#ffffff"),colorText:p("--fg",m?"#f5f1e8":"#0a0a0a"),borderRadius:"0px"}}},[]);return r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:c("div",{className:"w-full max-w-xl border border-line bg-bg",children:[c("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[r("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:t.orderNumber}),r("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"Payment"})]}),c("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",r("span",{className:"text-fg",children:a(Number(t.amount),t.currency)})," ","by card to confirm it now."]}),r(st,{stripe:o,options:{clientSecret:t.clientSecret,appearance:s},children:r(Qr,{payment:t,onPaid:e,onSkip:n})})]})]})})}function Qr({payment:t,onPaid:e,onSkip:n}){let{formatMoney:a}=le(),o=kn(),s=bn(),[l,p]=g(!1),[m,u]=g(null);async function h(){if(!o||!s||l)return;p(!0),u(null);let C=await o.confirmPayment({elements:s,redirect:"if_required"});if(C.error){u(C.error.message??"Payment failed. Please try again."),p(!1);return}let v=C.paymentIntent?.status;if(v==="succeeded"||v==="processing"){e();return}u("Payment did not complete. Please try again."),p(!1)}return c("div",{className:"flex flex-col gap-4",children:[r(Cn,{}),m&&r("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:m}),r("button",{type:"button",onClick:h,disabled:!o||!s||l,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",!o||!s||l?"cursor-not-allowed border-line bg-surface text-fg-dim":"border-btn bg-btn text-btn-ink hover:border-fg hover:bg-fg"].join(" "),children:l?c(U,{children:["Processing\u2026 ",r("span",{children:"\xB7"})]}):c(U,{children:["Pay ",a(Number(t.amount),t.currency),r("span",{className:"transition-transform group-hover:translate-x-1",children:"\u2192"})]})}),r("button",{type:"button",onClick:n,disabled:l,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later \u2014 our team will be in touch"})]})}var zn="paypal-sdk-js",pt=null;function ea(t,e){let n=`${t}|${e}`;if(pt?.key===n)return pt.promise;let a=new Promise((o,s)=>{document.getElementById(zn)?.remove();let l=document.createElement("script");l.id=zn;let p=new URLSearchParams({"client-id":t,currency:e,intent:"capture"});l.src=`https://www.paypal.com/sdk/js?${p}`,l.onload=()=>{let m=window.paypal;m?o(m):s(new Error("PayPal SDK loaded without its namespace"))},l.onerror=()=>s(new Error("PayPal SDK failed to load")),document.head.appendChild(l)});return pt={key:n,promise:a},a}function ta({confirmation:t,clientId:e,idemKey:n,onPaid:a,onSkip:o}){let{formatMoney:s}=le(),l=pe(null),[p,m]=g(!1),[u,h]=g(null),C=pe(a);return C.current=a,_(()=>{let v=!1,d=null;return ea(e,t.currency).then(T=>{if(!(v||!l.current))return d=T.Buttons({style:{layout:"vertical",color:"gold",shape:"rect",label:"paypal"},createOrder:async()=>(await j.createPaypalOrder({idempotencyKey:n})).paypalOrderId,onApprove:async x=>{try{if((await j.capturePaypalOrder({idempotencyKey:n,paypalOrderId:x.orderID})).status==="paid"){C.current();return}h("PayPal did not complete the payment. Please try again.")}catch(A){h(A instanceof Fe?A.message:"PayPal payment failed. Please try again.")}},onError:()=>{h("PayPal could not process the payment. Please try again.")}}),d.render(l.current).then(()=>{v||m(!0)})}).catch(()=>{v||h("PayPal could not be loaded. You can pay later \u2014 your order stands either way.")}),()=>{v=!0,d?.close?.()}},[e,t.currency,n]),r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:c("div",{className:"w-full max-w-xl border border-line bg-bg",children:[c("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[r("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:t.orderNumber}),r("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"PayPal"})]}),c("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",r("span",{className:"text-fg",children:s(Number(t.grandTotal),t.currency)})," ","with PayPal to confirm it now."]}),!p&&!u&&r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Loading PayPal\u2026"}),r("div",{ref:l}),u&&r("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:u}),r("button",{type:"button",onClick:o,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later \u2014 our team will be in touch"})]})]})})}var Bn="square-web-sdk",dt=null;function na(t){let e=t==="sandbox"?"sandbox":"production";if(dt?.key===e)return dt.promise;let n=new Promise((a,o)=>{document.getElementById(Bn)?.remove();let s=document.createElement("script");s.id=Bn,s.src=e==="sandbox"?"https://sandbox.web.squarecdn.com/v1/square.js":"https://web.squarecdn.com/v1/square.js",s.onload=()=>{let l=window.Square;l?a(l):o(new Error("Square SDK loaded without its namespace"))},s.onerror=()=>o(new Error("Square SDK failed to load")),document.head.appendChild(s)});return dt={key:e,promise:n},n}function ra({confirmation:t,applicationId:e,locationId:n,environment:a,idemKey:o,onPaid:s,onSkip:l}){let{formatMoney:p}=le(),m=pe(null),u=pe(null),h=pe(null),[C,v]=g(!1),[d,T]=g(!1),[x,A]=g(null);_(()=>{let b=!1,O=null;return na(a).then(async G=>{if(b||!m.current)return;let re=G.payments(e,n);h.current=re,O=await re.card(),await O.attach(m.current),u.current=O,b||v(!0)}).catch(()=>{b||A("Square could not be loaded. You can pay later \u2014 your order stands either way.")}),()=>{b=!0,O?.destroy?.()}},[e,n,a]);async function D(){let b=u.current;if(!(!b||d)){T(!0),A(null);try{let O=await b.tokenize();if(O.status!=="OK"||!O.token){A(O.errors?.[0]?.message??"Please check the card details and try again."),T(!1);return}let G;try{G=(await h.current?.verifyBuyer?.(O.token,{amount:String(t.grandTotal),currencyCode:t.currency,intent:"CHARGE"}))?.token}catch{}if((await j.chargeSquare({idempotencyKey:o,sourceId:O.token,...G?{verificationToken:G}:{}})).status==="paid"){s();return}A("Square did not complete the payment. Please try again.")}catch(O){A(O instanceof Fe?O.message:"Square payment failed. Please try again.")}T(!1)}}return r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:c("div",{className:"w-full max-w-xl border border-line bg-bg",children:[c("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[r("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:t.orderNumber}),r("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"Card"})]}),c("div",{className:"flex flex-col gap-4 px-6 py-6",children:[c("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",r("span",{className:"text-fg",children:p(Number(t.grandTotal),t.currency)})," ","by card to confirm it now."]}),!C&&!x&&r("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Loading card form\u2026"}),r("div",{ref:m}),x&&r("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:x}),r("button",{type:"button",onClick:D,disabled:!C||d,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",!C||d?"cursor-not-allowed border-line bg-surface text-fg-dim":"border-btn bg-btn text-btn-ink hover:border-fg hover:bg-fg"].join(" "),children:d?c(U,{children:["Processing\u2026 ",r("span",{children:"\xB7"})]}):c(U,{children:["Pay ",p(Number(t.grandTotal),t.currency),r("span",{className:"transition-transform group-hover:translate-x-1",children:"\u2192"})]})}),r("button",{type:"button",onClick:l,disabled:d,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later \u2014 our team will be in touch"})]})]})})}function aa({checked:t,onChange:e,label:n,sub:a}){return c("div",{className:"flex items-start gap-3 border-t border-line py-4 first:border-t-0 first:pt-0",children:[r("button",{type:"button",onClick:()=>e(!t),"aria-pressed":t,"aria-label":n,className:["mt-px flex h-5 w-5 flex-shrink-0 items-center justify-center border transition-colors",t?"border-accent":"border-line"].join(" "),style:t?{background:"color-mix(in oklab, var(--accent) 18%, transparent)"}:void 0,children:t&&r("span",{className:"text-[13px] text-accent",children:"\u2713"})}),c("span",{className:"flex-1 font-display text-[16px] leading-[1.5] text-fg",children:[n,a&&r("small",{className:"mt-1 block font-mono text-[12px] uppercase tracking-[0.18em] text-fg-dim",children:a})]})]})}function oa({slug:t,name:e,qty:n,config:a,configSummary:o,price:s,currency:l}){let{catalog:p}=tt(),{formatMoney:m}=le(),u=p.find(x=>x.slug===t),h=u?.spokes??5,C=u?.mesh??!1,v=a.find(x=>x.gold)?.label,d=u?.finishes.find(x=>x.name===v&&x.src)??u?.finishes.find(x=>x.src),T=u?.finishes[0]?.color??Vt;return c("div",{className:"grid grid-cols-[60px_1fr_auto] items-center gap-4 border-b border-line py-4 last:border-b-0",children:[c("div",{className:"relative flex aspect-square items-center justify-center overflow-hidden border border-line bg-surface",children:[r("span",{className:"absolute -right-1.5 -top-1.5 z-[2] flex h-[18px] w-[18px] items-center justify-center rounded-full bg-accent font-mono text-[11px] font-bold text-bg",children:n}),d?.src?r(Ot,{src:d.src,alt:`${e.lead}${e.accent} \u2014 ${d.name}`,width:120,height:120,sizes:"60px",className:"relative block h-full w-full object-contain p-2"}):r("div",{className:"block w-[78%]",style:{color:T},children:r(Gt,{spokes:h,mesh:C,className:"block w-full"})})]}),c("div",{className:"flex min-w-0 flex-col gap-0.5",children:[c("span",{className:"font-display text-[17px] font-bold uppercase leading-none tracking-[-0.005em] text-fg",children:[e.lead,r("em",{className:"font-serif font-normal italic text-accent tracking-[-0.005em] normal-case",children:e.accent})]}),r("span",{className:"font-mono text-[12px] uppercase leading-[1.5] tracking-[0.18em] text-fg-dim",children:o})]}),r("span",{className:"text-right font-display text-[17px] font-bold tracking-[-0.005em] text-fg",children:m(s,l)})]})}function ue({label:t,value:e}){return c("div",{className:"flex items-center justify-between font-mono text-[13px] font-medium uppercase tracking-[0.18em] text-fg",children:[r("span",{children:t}),r("strong",{className:"font-display text-[16px] font-medium tracking-[-0.005em] normal-case text-fg",children:e})]})}function ia(t){return t.map(e=>e.label).join(" \xB7 ")}import{jsx as Ve}from"react/jsx-runtime";function sa(){let{settings:t,websiteName:e}=Tt(),n=e?{...nt,name:e}:nt,a=t?{url:t.logoUrl,reversed:t.logoReversed??null,inkIsDark:t.logoInkIsDark??null,reverse:t.reverseLogo,size:t.logoSize,sizePx:t.logoSizePx}:null;return Ve("div",{style:{position:"fixed",inset:0,zIndex:2147482e3,overflowY:"auto",background:"var(--bg)",color:"var(--fg)"},children:Ve(Kt,{children:Ve(zt,{preview:!0,children:Ve(mt,{site:n,logo:a,preview:!0})})})})}export{sa as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Th as r}from"./chunk-
|
|
1
|
+
"use client";import{Th as r}from"./chunk-TAGGXC3A.js";import"./chunk-S66TL4Z3.js";import"./chunk-IHYVLVY3.js";import"./chunk-Y6SLVHK3.js";import{jsx as o}from"react/jsx-runtime";import e from"efficient-easel/screen/components/ScreenStoreProvider";function a(t){return o(e,{...t,parts:r})}export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as Le}from"react/jsx-runtime";import{createContext as un,useCallback as r,useContext as hn,useMemo as gn,useState as ke}from"react";import{createContext as ue,useContext as M}from"react";import{createContext as Ct}from"react";var de=Ct(null);var wt=ue(null),P=ue({logo:null,placeholder:!1,wordmark:null});function Rn(){let e=M(de),t=M(wt),n=M(P),a=!e&&n.placeholder,o=e?e.logoUrl:n.logo?.logoUrl??t?.logoUrl??null;return{src:a?null:o,reversedSrc:e?e.logoReversed:n.logo?.logoReversed??t?.logoReversed??null,inkIsDark:e?e.logoInkIsDark:n.logo?.logoInkIsDark??t?.logoInkIsDark??null,wordmark:e?null:n.wordmark,siteName:e?.siteName??t?.siteName}}import{useSelectHandler as fn}from"efficient-easel/draw/client";var Mn="storefront-theme",Pn="sf:theme-mode",Dn="sf:theme-switch",Fn="hide",U="light";function Lt(e){return e>=7&&e<18}function Nn(e){let{mode:t,override:n,switchShown:a,hour:o}=e;return a&&(n==="light"||n==="dark")?n:t==="auto"?Lt(o)?"light":"dark":t==="light"?"light":"dark"}var h={background:"#0a0a0a",surface:"#131313",line:"#2a2a2a",muted:"#9a9388"},kt=[{text:"#2e2e2e",accent:"#2e2e2e",background:"#ffffff",surface:"#f7f7f7",line:"#e0e0e0",muted:"#5c5c5c"},{text:"#f7f7f7",accent:"#f7f7f7",background:"#0a0a0a",surface:"#1b1b1b",line:"#363636",muted:"#a3a3a3"},{text:"#ffffff",accent:"#ffffff",background:"#2e2e2e",surface:"#3d3d3d",line:"#545454",muted:"#b0b0b0"},{text:"#0a0a0a",accent:"#0a0a0a",background:"#f7f7f7",surface:"#ffffff",line:"#d9d9d9",muted:"#5c5c5c"}],I={selected:0,themes:kt};function he(e){return!e||!Array.isArray(e.themes)||e.themes.length===0?{...I}:{selected:Math.min(Math.max(0,e.selected??0),e.themes.length-1),themes:e.themes}}function D(e,t,n){let a=k(e),o=k(t);if(a===null||o===null)return e;let l=i=>Math.max(0,Math.min(255,Math.round(i))).toString(16).padStart(2,"0");return`#${a.map((i,d)=>l(i+(o[d]-i)*n)).join("")}`}var It={light:"#ffffff",dark:"#0a0a0a"},Gn=["light","dark"];function vn(e,t){let n=It[t],a=t==="light"?"#ffffff":"#000000";return{text:n,accent:n,background:e,surface:D(e,a,.1),line:D(e,a,.22),muted:D(n,e,.35),brandInk:t}}function y(e){let t=he(e);return t.themes[t.selected]}function ge(e){return{text:e.text,accent:e.accent,background:e.background||h.background,surface:e.surface||h.surface,line:e.line||h.line,muted:e.muted||h.muted}}function k(e){let t=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!t)return null;let n=t[1].length===3?[...t[1]].map(i=>i+i).join(""):t[1],[a,o,l]=[0,2,4].map(i=>parseInt(n.slice(i,i+2),16));return[a,o,l]}function v(e){let t=k(e);if(t===null)return null;let[n,a,o]=t.map(l=>{let i=l/255;return i<=.04045?i/12.92:((i+.055)/1.055)**2.4});return .2126*n+.7152*a+.0722*o}var Ot=.4,Ht=4.5,Rt=3;function xt(e,t){let n=v(e),a=v(t);if(n===null||a===null)return null;let[o,l]=n>=a?[n,a]:[a,n];return(o+.05)/(l+.05)}var Un={good:"Good","large-only":"Large text only",hard:"Hard to read"};function Bn(e){return e>=Ht?"good":e>=Rt?"large-only":"hard"}var F=["#000000","#ffffff"];function O(e){let t=F[0],n=-1;for(let a of F){let o=xt(e,a);if(o===null)return F[0];o>n&&(n=o,t=a)}return t}var Mt=[.25,.4,.55];function Wn(e){let t=k(e);return t===null?[]:Mt.map(n=>"#"+t.map(a=>Math.round(a*(1-n)).toString(16).padStart(2,"0")).join(""))}function zn(e){let t=y(e),n={"--theme-fg":t.text},a=v(t.text);return(a===null||a>=Ot)&&(n["--overlay-fg"]=t.text),n}var Pt=82;function B(e){return`color-mix(in srgb, ${e} ${Pt}%, #000)`}function $n(e){let t=y(e);return{"--theme-accent":t.accent,"--theme-accent-2":B(t.accent),"--theme-accent-ink":O(t.accent)}}function W(e){let t=e?.button;return/^#[0-9a-fA-F]{6}$/.test(t??"")?t.toLowerCase():null}function Vn(e){let t=y(e),n=W(t),a=fe(t);if(n===null&&a===null)return{};let o={};return n!==null&&(o["--theme-btn"]=n,o["--theme-btn-2"]=B(n)),o["--theme-btn-ink"]=a??O(n),o}function fe(e){let t=e?.buttonInk;return/^#[0-9a-fA-F]{6}$/.test(t??"")?t.toLowerCase():null}function Dt(e,t){return fe(e)??O(W(e)??t)}function Yn(e){let t=y(e);return{fill:W(t)??t.accent.toLowerCase(),ink:Dt(t,t.accent)}}function Xn(e){let t={};return he(e).themes.forEach((n,a)=>{let o=ge(n);t[`--theme-preset-${a}-accent`]=o.accent,t[`--theme-preset-${a}-accent-2`]=B(o.accent),t[`--theme-preset-${a}-accent-ink`]=O(o.accent),t[`--theme-preset-${a}-bg`]=o.background,t[`--theme-preset-${a}-fg`]=o.text,t[`--theme-preset-${a}-surface`]=o.surface,t[`--theme-preset-${a}-surface-2`]=`color-mix(in srgb, ${o.surface} 60%, ${o.line})`,t[`--theme-preset-${a}-line`]=o.line,t[`--theme-preset-${a}-muted`]=o.muted}),t}var jn=["--theme-bg","--theme-surface","--theme-surface-2","--theme-line","--theme-muted"];function qn(e){let t=ge(y(e)),n=`color-mix(in srgb, ${t.surface} 60%, ${t.line})`,a={"--theme-bg":t.background,"--theme-surface":t.surface,"--theme-line":t.line,"--theme-muted":t.muted};return(t.surface!==h.surface||t.line!==h.line)&&(a["--theme-surface-2"]=n),a}var Ft=["heading","body","label"];function Kn(e){if(!e)return null;for(let t of Ft)if(e.includes(`--size-${t}`))return t;return/--size-heading(Large|Medium|Small)/.test(e)?"heading":null}var me=["headingLarge","headingMedium","headingSmall","accent","body","label"];var z={headingLarge:null,headingMedium:null,headingSmall:null,accent:null,body:null,label:null},Nt=8,Gt=200;function vt(e){if(typeof e!="number"||!Number.isFinite(e))return null;let t=Math.round(e);return t>=Nt&&t<=Gt?t:null}function Ut(e){let t={};for(let n of me)t[n]=vt(e?.[n]);return t}function Zn(e){let t=Ut(e),n={};for(let a of me){let o=t[a];o!==null&&(n[`--size-${a}`]=`${o}px`)}return n}var Bt=["square","small","large"],Wt="small";function Jn(e){return Bt.includes(e??"")?e:Wt}var Se=0,zt=40,Qn={square:0,small:null,large:16},$t={"--sf-card-radius":1,"--sf-button-radius":.5,"--site-radius":.5,"--site-radius-xs":.25,"--site-radius-sm":.5,"--site-radius-md":.75,"--site-radius-lg":1,"--site-radius-xl":1.25,"--site-radius-2xl":1.5,"--site-radius-3xl":2,"--site-radius-4xl":2.5};function pe(e){if(e==null||typeof e=="string"&&e.trim()==="")return null;let t=typeof e=="string"?Number(e):e;return Number.isFinite(t)?Math.min(zt,Math.max(Se,Math.round(t))):null}function Vt(e){let t=pe(e);return t===null?{}:Object.fromEntries(Object.entries($t).map(([n,a])=>{let o=t*a/16;return[n,o===0?"0":`${o}rem`]}))}function ea(e){return Vt(pe(e)??Se)}var Yt=["none","soft","lifted"],Xt="soft",_e="none",jt=["tight","normal","roomy"],qt="normal",H="normal",Kt=["none","lift","highlight"],Zt="lift",Jt="highlight",Ee="#141416";function ye(e){return Yt.includes(e??"")?e:Xt}function Qt(e){return jt.includes(e??"")?e:qt}function be(e){return Kt.includes(e??"")?e:Zt}function en(e){return/^#[0-9a-fA-F]{6}$/.test(e??"")?e.toLowerCase():Ee}function ta(e){let t=ye(e);return t===_e?void 0:t}function na(e){let t=Qt(e);return t===H?void 0:t}function aa(e){let t=be(e);return t===Jt?void 0:t}function oa(e,t,n){let a=en(t);return a===Ee?{}:ye(e)!==_e||be(n)==="lift"?{"--sf-shadow-color":a}:{}}var tn=["normal","tight","compressed"],b="normal";function Te(e){return tn.includes(e??"")?e:b}function sa(e){let t=Te(e);return t===b?void 0:t}function ra(e){switch(Te(e)){case"tight":return{lineHeight:.95,letterSpacing:-.01};case"compressed":return{lineHeight:.86,letterSpacing:-.01};default:return{}}}var $={case:"authored",weight:null,weightStrong:null,italicStrong:null,maxPx:null,weight2:null,weight3:null,case2:"authored",case3:"authored"},N=100,G=900,nn=24,an=200;function L(e,t,n){return typeof e!="number"||!Number.isFinite(e)?null:Math.round(Math.min(Math.max(e,t),n))}function Ae(e){let t=L(e?.weight,N,G),n=e?.case==="sentence"?"sentence":"authored",a=l=>l==null?t:L(l,N,G),o=l=>l==="sentence"?"sentence":l==="authored"?"authored":n;return{case:n,weight:t,weightStrong:L(e?.weightStrong,N,G),italicStrong:typeof e?.italicStrong=="boolean"?e.italicStrong:null,maxPx:L(e?.maxPx,nn,an),weight2:a(e?.weight2),weight3:a(e?.weight3),case2:o(e?.case2),case3:o(e?.case3)}}function ia(e){let t=Ae(e),n={};return t.case==="sentence"&&(n["--sf-heading-case"]="none"),t.weight!==null&&(n["--sf-heading-weight"]=String(t.weight)),t.weightStrong!==null&&(n["--sf-heading-weight-strong"]=String(t.weightStrong)),t.maxPx!==null&&(n["--sf-heading-max"]=`${t.maxPx}px`),t.weight2!==null&&t.weight2!==t.weight&&(n["--sf-heading-2-weight"]=String(t.weight2)),t.weight3!==null&&t.weight3!==t.weight&&(n["--sf-heading-3-weight"]=String(t.weight3)),t.case2!==t.case&&(n["--sf-heading-2-case"]=t.case2==="sentence"?"none":"uppercase"),t.case3!==t.case&&(n["--sf-heading-3-case"]=t.case3==="sentence"?"none":"uppercase"),n}function la(e){return Ae({case:e?.heading_case??void 0,weight:e?.heading_weight,weightStrong:e?.heading_weight_strong,italicStrong:e?.accent_italic,maxPx:e?.heading_max_px,weight2:e?.heading_2_weight??void 0,weight3:e?.heading_3_weight??void 0,case2:e?.heading_2_case??void 0,case3:e?.heading_3_case??void 0})}var Ce=[{key:"space-grotesk",label:"Space Grotesk",cssVar:"--font-display",category:"sans",italic:!1,italicLoaded:!1},{key:"inter",label:"Inter",cssVar:"--font-body",category:"sans",italic:!0,italicLoaded:!0},{key:"poppins",label:"Poppins",cssVar:"--font-poppins",category:"sans",italic:!0,italicLoaded:!0},{key:"dm-sans",label:"DM Sans",cssVar:"--font-dm-sans",category:"sans",italic:!0,italicLoaded:!0},{key:"sora",label:"Sora",cssVar:"--font-sora",category:"sans",italic:!1,italicLoaded:!1},{key:"oswald",label:"Oswald",cssVar:"--font-oswald",category:"sans",italic:!1,italicLoaded:!1},{key:"archivo",label:"Archivo",cssVar:"--font-archivo",category:"sans",italic:!0,italicLoaded:!0},{key:"outfit",label:"Outfit",cssVar:"--font-outfit",category:"sans",italic:!1,italicLoaded:!1},{key:"manrope",label:"Manrope",cssVar:"--font-manrope",category:"sans",italic:!1,italicLoaded:!1},{key:"big-shoulders",label:"Big Shoulders",cssVar:"--font-big-shoulders",category:"sans",italic:!1,italicLoaded:!1},{key:"michroma",label:"Michroma",cssVar:"--font-michroma",category:"sans",italic:!1,italicLoaded:!1},{key:"assistant",label:"Assistant",cssVar:"--font-assistant",category:"sans",italic:!1,italicLoaded:!1},{key:"fraunces",label:"Fraunces",cssVar:"--font-serif",category:"serif",italic:!0,italicLoaded:!0},{key:"playfair-display",label:"Playfair Display",cssVar:"--font-playfair",category:"serif",italic:!0,italicLoaded:!0},{key:"cormorant",label:"Cormorant",cssVar:"--font-cormorant",category:"serif",italic:!0,italicLoaded:!0},{key:"jetbrains-mono",label:"JetBrains Mono",cssVar:"--font-mono-loaded",category:"mono",italic:!0,italicLoaded:!0}],f=new Map(Ce.map(e=>[e.key,e]));function da(e){return f.get(e)}var we=["heading","heading2","heading3","body","accent","label"],ua={heading:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",body:"Body",accent:"Accent",label:"Labels"},on=[["font-heading2","heading2"],["font-heading3","heading3"],["font-display","heading"],["font-serif","accent"],["font-mono","label"],["font-body","body"]],sn=/var\(--size-(headingLarge|headingMedium|headingSmall|accent|body|label)\s*,/,ha={heading:"headingLarge",heading2:"headingMedium",heading3:"headingSmall",accent:"accent",body:"body",label:"label"},rn={headingLarge:"heading",headingMedium:"heading2",headingSmall:"heading3",accent:"accent",body:"body",label:"label"};function ga(e){let t=e?sn.exec(e):null;return t?rn[t[1]]??null:ln(e)}function ln(e){if(!e)return null;let t=e.split(/\s+/).filter(n=>!n.slice(0,n.lastIndexOf(":")+1).includes("&")).map(n=>n.slice(n.lastIndexOf(":")+1));for(let[n,a]of on)if(t.includes(n))return a;return null}var u={heading:"space-grotesk",heading2:"space-grotesk",heading3:"space-grotesk",body:"inter",accent:"fraunces",label:"jetbrains-mono"};function cn(e){let t=n=>{let a=e?.[n];if(a&&f.has(a))return a;if(n==="heading2"||n==="heading3"){let o=e?.heading;return o&&f.has(o)?o:u.heading}return u[n]};return Object.fromEntries(we.map(n=>[n,t(n)]))}function dn(e,t){return f.get(e[t])??f.get(u[t])}function g(e,t){return`var(${dn(e,t).cssVar})`}var fa=[...new Set(we.map(e=>f.get(u[e]).cssVar))],ma=[...new Set(Ce.map(e=>e.cssVar))];function Sa(e){let t=cn(e);return{"--font-role-heading":g(t,"heading"),"--font-role-heading2":g(t,"heading2"),"--font-role-heading3":g(t,"heading3"),"--font-role-body":g(t,"body"),"--font-role-accent":g(t,"accent"),"--font-role-label":g(t,"label"),fontFamily:"var(--font-role-body)"}}var Oe=un({settings:null,setSettings:()=>{},primeSettings:()=>{},websiteName:null,templateChrome:!1,templateName:null,chromePlaceholder:!1,themeMode:U,setThemeMode:()=>{},themeSwitchShown:!1,setThemeSwitchShown:()=>{},theme:I,setTheme:()=>{},fonts:u,setFonts:()=>{},sizes:z,setSizes:()=>{},cornerRadiusPx:null,setCornerRadiusPx:()=>{},cardShadow:null,setCardShadow:()=>{},shadowColor:null,setShadowColor:()=>{},cardGap:H,setCardGap:()=>{},hoverEffect:null,setHoverEffect:()=>{},headingCompression:b,setHeadingCompression:()=>{},siteWidth:null,setSiteWidth:()=>{},siteGutter:null,blockGap:null,setSiteGutter:()=>{},setBlockGap:()=>{},headingTypography:$,setHeadingTypography:()=>{},textStyles:null,setTextStyles:()=>{},wordStyles:null,heroBackgroundFollowsWidth:null,setHeroBackgroundFollowsWidth:()=>{},sectionBackgroundWidth:null,setSectionBackgroundWidth:()=>{},sectionContentWidth:null,setSectionContentWidth:()=>{},photographyGrayscale:null,setPhotographyGrayscale:()=>{},shareButtonOnPosts:null,setShareButtonOnPosts:()=>{},themeFromDocument:!1,selected:!1,setSelected:()=>{},select:()=>{},setSelectHandler:()=>{}});function Ca({children:e,websiteName:t=null,templateChrome:n=!1,templateName:a=null,chromePlaceholder:o=!1,themeMode:l=U,onThemeModeChange:i,themeSwitchShown:d=!1,onThemeSwitchShownChange:T,theme:A=I,onThemeChange:m,fonts:S=u,onFontsChange:p,sizes:_=z,onSizesChange:c,cornerRadiusPx:R=null,onCornerRadiusPxChange:C,cardShadow:x=null,onCardShadowChange:w,shadowColor:Pe=null,onShadowColorChange:V,cardGap:De=H,onCardGapChange:Y,hoverEffect:Fe=null,onHoverEffectChange:X,headingCompression:Ne=b,onHeadingCompressionChange:j,siteWidth:Ge=null,onSiteWidthChange:q,siteGutter:ve=null,blockGap:Ue=null,onSiteGutterChange:K,onBlockGapChange:Z,headingTypography:Be=$,onHeadingTypographyChange:J,textStyles:We=null,onTextStylesChange:Q,wordStyles:ze=null,heroBackgroundFollowsWidth:$e=null,onHeroBackgroundFollowsWidthChange:ee,sectionBackgroundWidth:Ve=null,onSectionBackgroundWidthChange:te,sectionContentWidth:Ye=null,onSectionContentWidthChange:ne,photographyGrayscale:Xe=null,onPhotographyGrayscaleChange:ae,shareButtonOnPosts:je=null,onShareButtonOnPostsChange:oe,themeFromDocument:qe=!1}){let[E,se]=ke(null),Ke=r(s=>se(At=>At??s),[]),[Ze,Je]=ke(!1),Qe=r(s=>i?.(s),[i]),et=r(s=>T?.(s),[T]),tt=r(s=>m?.(s),[m]),nt=r(s=>p?.(s),[p]),at=r(s=>c?.(s),[c]),ot=r(s=>q?.(s),[q]),st=r(s=>K?.(s),[K]),rt=r(s=>Z?.(s),[Z]),it=r(s=>ee?.(s),[ee]),lt=r(s=>te?.(s),[te]),ct=r(s=>ne?.(s),[ne]),dt=r(s=>ae?.(s),[ae]),ut=r(s=>oe?.(s),[oe]),ht=r(s=>C?.(s),[C]),gt=r(s=>w?.(s),[w]),ft=r(s=>V?.(s),[V]),mt=r(s=>Y?.(s),[Y]),St=r(s=>X?.(s),[X]),pt=r(s=>j?.(s),[j]),_t=r(s=>J?.(s),[J]),Et=r(s=>Q?.(s),[Q]),{select:yt,setSelectHandler:bt}=fn(),re=E?.logoUrl,ie=E?.logoReversed,le=E?.logoInkIsDark,ce=E!==null,Tt=gn(()=>({logo:ce?{logoUrl:re,logoReversed:ie,logoInkIsDark:le}:null,placeholder:n||o,wordmark:n?a:t}),[ce,re,ie,le,n,o,a,t]);return Le(P.Provider,{value:Tt,children:Le(Oe.Provider,{value:{settings:E,setSettings:se,primeSettings:Ke,websiteName:t,templateChrome:n,templateName:a,chromePlaceholder:o,themeMode:l,setThemeMode:Qe,themeSwitchShown:d,setThemeSwitchShown:et,theme:A,setTheme:tt,fonts:S,setFonts:nt,sizes:_,setSizes:at,cornerRadiusPx:R,setCornerRadiusPx:ht,cardShadow:x,setCardShadow:gt,shadowColor:Pe,setShadowColor:ft,cardGap:De,setCardGap:mt,hoverEffect:Fe,setHoverEffect:St,headingCompression:Ne,setHeadingCompression:pt,siteWidth:Ge,setSiteWidth:ot,siteGutter:ve,blockGap:Ue,setSiteGutter:st,setBlockGap:rt,headingTypography:Be,setHeadingTypography:_t,textStyles:We,setTextStyles:Et,wordStyles:ze,heroBackgroundFollowsWidth:$e,setHeroBackgroundFollowsWidth:it,sectionBackgroundWidth:Ve,setSectionBackgroundWidth:lt,sectionContentWidth:Ye,setSectionContentWidth:ct,photographyGrayscale:Xe,setPhotographyGrayscale:dt,shareButtonOnPosts:je,setShareButtonOnPosts:ut,themeFromDocument:qe,selected:Ze,setSelected:Je,select:yt,setSelectHandler:bt},children:e})})}var wa=()=>hn(Oe);import{forwardRef as mn}from"react";import{imageCopyUrl as He,imageSrcSet as Re}from"efficient-shell/image-copies";import{jsx as _n}from"react/jsx-runtime";var Sn={position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,color:"transparent"};function xe(e,t,n){if(n){let a=Re(e);return a?{src:He(e,1280),srcSet:a,sizes:n}:{src:e,sizes:n}}if(t&&t>0){let a=Re(e,{maxWidth:t*3});return a?{src:He(e,t*2),srcSet:a,sizes:`${t}px`}:{src:e}}return{src:e}}var pn=mn(function({src:t,width:n,height:a,fill:o,priority:l,loading:i,style:d,quality:T,placeholder:A,blurDataURL:m,unoptimized:S,loader:p,overrideSrc:_,sizes:c,...R},C){let x=_??(typeof t=="string"?t:t.src),w=xe(x,o?void 0:Number(n)||void 0,c??(o?"100vw":void 0));return _n("img",{ref:C,...w,width:o?void 0:n,height:o?void 0:a,loading:l?"eager":i??"lazy",fetchPriority:l?"high":void 0,decoding:"async",style:o?{...Sn,...d}:{color:"transparent",...d},...R})}),Oa=pn;function Ha(e){let t=e.overrideSrc??(typeof e.src=="string"?e.src:e.src.src),n=e.fill?void 0:Number(e.width)||void 0;return{props:xe(t,n,e.sizes??(e.fill?"100vw":void 0))}}import{forwardRef as En}from"react";import{jsx as Tn}from"react/jsx-runtime";function yn(e){if(typeof e=="string")return e;let t=e.query?`?${new URLSearchParams(e.query).toString()}`:"",n=e.hash?e.hash.startsWith("#")?e.hash:`#${e.hash}`:"";return`${e.pathname??""}${t}${n}`}var bn=En(function({href:t,prefetch:n,replace:a,scroll:o,shallow:l,legacyBehavior:i,passHref:d,locale:T,onClick:A,children:m,...S},p){let _=c=>{A?.(c),!(c.defaultPrevented||S.target==="_blank")&&c.preventDefault()};return Tn("a",{ref:p,href:yn(t),onClick:_,...S,children:m})}),Pa=bn;var An="Storefront";function Na(e){return e?.trim()||An}var Me=["instagram","facebook","tiktok","youtube","x","linkedin","pinterest","whatsapp","telegram","line","wechat"],Cn={instagram:"Instagram",facebook:"Facebook",tiktok:"TikTok",youtube:"YouTube",x:"X",linkedin:"LinkedIn",pinterest:"Pinterest",whatsapp:"WhatsApp",telegram:"Telegram",line:"LINE",wechat:"WeChat"},wn={};function va(e){if(!e||typeof e!="object")return wn;let t={};for(let n of Me){let a=e[n];if(typeof a!="string")continue;let o=a.trim();!o||!/^https?:\/\//i.test(o)||(t[n]=o)}return t}function Ua(e){return Me.flatMap(t=>{let n=e[t];return n?[{platform:t,href:n,label:Cn[t]}]:[]})}var Ba=e=>`${e}_url`;var za={small:54,medium:66,large:84},Ln=44,$a=16,Va=140,Ya=Ln*4;export{Oa as a,Ha as b,Pa as c,Ce as d,da as e,we as f,ua as g,ha as h,ga as i,ln as j,u as k,cn as l,Sa as m,Mn as n,Pn as o,Dn as p,Fn as q,U as r,Nn as s,h as t,kt as u,he as v,Gn as w,vn as x,y,ge as z,xt as A,Un as B,Bn as C,O as D,Wn as E,zn as F,$n as G,W as H,Vn as I,fe as J,Dt as K,Yn as L,Xn as M,jn as N,qn as O,Kn as P,z as Q,Ut as R,Zn as S,Jn as T,Se as U,zt as V,Qn as W,pe as X,Vt as Y,ea as Z,Yt as _,Xt as $,_e as aa,H as ba,Kt as ca,Zt as da,Jt as ea,Ee as fa,ye as ga,Qt as ha,be as ia,en as ja,ta as ka,na as la,aa as ma,oa as na,b as oa,Te as pa,sa as qa,ra,$ as sa,Ae as ta,ia as ua,la as va,de as wa,Rn as xa,Ca as ya,wa as za,An as Aa,Na as Ba,Me as Ca,Cn as Da,wn as Ea,va as Fa,Ua as Ga,Ba as Ha,za as Ia,Ln as Ja,$a as Ka,Va as La,Ya as Ma};
|
|
1
|
+
import{jsx as Le}from"react/jsx-runtime";import{createContext as un,useCallback as r,useContext as hn,useMemo as gn,useState as ke}from"react";import{createContext as ue,useContext as M}from"react";import{createContext as Ct}from"react";var de=Ct(null);var wt=ue(null),P=ue({logo:null,placeholder:!1,wordmark:null});function Rn(){let e=M(de),t=M(wt),n=M(P),a=!e&&n.placeholder,o=e?e.logoUrl:n.logo?.logoUrl??t?.logoUrl??null;return{src:a?null:o,reversedSrc:e?e.logoReversed:n.logo?.logoReversed??t?.logoReversed??null,inkIsDark:e?e.logoInkIsDark:n.logo?.logoInkIsDark??t?.logoInkIsDark??null,wordmark:e?null:n.wordmark,siteName:e?.siteName??t?.siteName}}import{useSelectHandler as fn}from"efficient-easel/draw/client";var Mn="storefront-theme",Pn="sf:theme-mode",Dn="sf:theme-switch",Fn="hide",U="light";function Lt(e){return e>=7&&e<18}function Nn(e){let{mode:t,override:n,switchShown:a,hour:o}=e;return a&&(n==="light"||n==="dark")?n:t==="auto"?Lt(o)?"light":"dark":t==="light"?"light":"dark"}var h={background:"#0a0a0a",surface:"#131313",line:"#2a2a2a",muted:"#9a9388"},kt=[{text:"#2e2e2e",accent:"#2e2e2e",background:"#ffffff",surface:"#f7f7f7",line:"#e0e0e0",muted:"#5c5c5c"},{text:"#f7f7f7",accent:"#f7f7f7",background:"#0a0a0a",surface:"#1b1b1b",line:"#363636",muted:"#a3a3a3"},{text:"#ffffff",accent:"#ffffff",background:"#2e2e2e",surface:"#3d3d3d",line:"#545454",muted:"#b0b0b0"},{text:"#0a0a0a",accent:"#0a0a0a",background:"#f7f7f7",surface:"#ffffff",line:"#d9d9d9",muted:"#5c5c5c"}],I={selected:0,themes:kt};function he(e){return!e||!Array.isArray(e.themes)||e.themes.length===0?{...I}:{selected:Math.min(Math.max(0,e.selected??0),e.themes.length-1),themes:e.themes}}function D(e,t,n){let a=k(e),o=k(t);if(a===null||o===null)return e;let l=i=>Math.max(0,Math.min(255,Math.round(i))).toString(16).padStart(2,"0");return`#${a.map((i,d)=>l(i+(o[d]-i)*n)).join("")}`}var It={light:"#ffffff",dark:"#0a0a0a"},Gn=["light","dark"];function vn(e,t){let n=It[t],a=t==="light"?"#ffffff":"#000000";return{text:n,accent:n,background:e,surface:D(e,a,.1),line:D(e,a,.22),muted:D(n,e,.35),brandInk:t}}function y(e){let t=he(e);return t.themes[t.selected]}function ge(e){return{text:e.text,accent:e.accent,background:e.background||h.background,surface:e.surface||h.surface,line:e.line||h.line,muted:e.muted||h.muted}}function k(e){let t=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!t)return null;let n=t[1].length===3?[...t[1]].map(i=>i+i).join(""):t[1],[a,o,l]=[0,2,4].map(i=>parseInt(n.slice(i,i+2),16));return[a,o,l]}function v(e){let t=k(e);if(t===null)return null;let[n,a,o]=t.map(l=>{let i=l/255;return i<=.04045?i/12.92:((i+.055)/1.055)**2.4});return .2126*n+.7152*a+.0722*o}var Ot=.4,Ht=4.5,Rt=3;function xt(e,t){let n=v(e),a=v(t);if(n===null||a===null)return null;let[o,l]=n>=a?[n,a]:[a,n];return(o+.05)/(l+.05)}var Un={good:"Good","large-only":"Large text only",hard:"Hard to read"};function Bn(e){return e>=Ht?"good":e>=Rt?"large-only":"hard"}var F=["#000000","#ffffff"];function O(e){let t=F[0],n=-1;for(let a of F){let o=xt(e,a);if(o===null)return F[0];o>n&&(n=o,t=a)}return t}var Mt=[.25,.4,.55];function Wn(e){let t=k(e);return t===null?[]:Mt.map(n=>"#"+t.map(a=>Math.round(a*(1-n)).toString(16).padStart(2,"0")).join(""))}function zn(e){let t=y(e),n={"--theme-fg":t.text},a=v(t.text);return(a===null||a>=Ot)&&(n["--overlay-fg"]=t.text),n}var Pt=82;function B(e){return`color-mix(in srgb, ${e} ${Pt}%, #000)`}function $n(e){let t=y(e);return{"--theme-accent":t.accent,"--theme-accent-2":B(t.accent),"--theme-accent-ink":O(t.accent)}}function W(e){let t=e?.button;return/^#[0-9a-fA-F]{6}$/.test(t??"")?t.toLowerCase():null}function Vn(e){let t=y(e),n=W(t),a=fe(t);if(n===null&&a===null)return{};let o={};return n!==null&&(o["--theme-btn"]=n,o["--theme-btn-2"]=B(n)),o["--theme-btn-ink"]=a??O(n),o}function fe(e){let t=e?.buttonInk;return/^#[0-9a-fA-F]{6}$/.test(t??"")?t.toLowerCase():null}function Dt(e,t){return fe(e)??O(W(e)??t)}function Yn(e){let t=y(e);return{fill:W(t)??t.accent.toLowerCase(),ink:Dt(t,t.accent)}}function Xn(e){let t={};return he(e).themes.forEach((n,a)=>{let o=ge(n);t[`--theme-preset-${a}-accent`]=o.accent,t[`--theme-preset-${a}-accent-2`]=B(o.accent),t[`--theme-preset-${a}-accent-ink`]=O(o.accent),t[`--theme-preset-${a}-bg`]=o.background,t[`--theme-preset-${a}-fg`]=o.text,t[`--theme-preset-${a}-surface`]=o.surface,t[`--theme-preset-${a}-surface-2`]=`color-mix(in srgb, ${o.surface} 60%, ${o.line})`,t[`--theme-preset-${a}-line`]=o.line,t[`--theme-preset-${a}-muted`]=o.muted}),t}var jn=["--theme-bg","--theme-surface","--theme-surface-2","--theme-line","--theme-muted"];function qn(e){let t=ge(y(e)),n=`color-mix(in srgb, ${t.surface} 60%, ${t.line})`,a={"--theme-bg":t.background,"--theme-surface":t.surface,"--theme-line":t.line,"--theme-muted":t.muted};return(t.surface!==h.surface||t.line!==h.line)&&(a["--theme-surface-2"]=n),a}var Ft=["heading","body","label"];function Kn(e){if(!e)return null;for(let t of Ft)if(e.includes(`--size-${t}`))return t;return/--size-heading(Large|Medium|Small)/.test(e)?"heading":null}var me=["headingLarge","headingMedium","headingSmall","accent","body","label"];var z={headingLarge:null,headingMedium:null,headingSmall:null,accent:null,body:null,label:null},Nt=8,Gt=200;function vt(e){if(typeof e!="number"||!Number.isFinite(e))return null;let t=Math.round(e);return t>=Nt&&t<=Gt?t:null}function Ut(e){let t={};for(let n of me)t[n]=vt(e?.[n]);return t}function Zn(e){let t=Ut(e),n={};for(let a of me){let o=t[a];o!==null&&(n[`--size-${a}`]=`${o}px`)}return n}var Bt=["square","small","large"],Wt="small";function Jn(e){return Bt.includes(e??"")?e:Wt}var Se=0,zt=40,Qn={square:0,small:null,large:16},$t={"--sf-card-radius":1,"--sf-button-radius":.5,"--site-radius":.5,"--site-radius-xs":.25,"--site-radius-sm":.5,"--site-radius-md":.75,"--site-radius-lg":1,"--site-radius-xl":1.25,"--site-radius-2xl":1.5,"--site-radius-3xl":2,"--site-radius-4xl":2.5};function pe(e){if(e==null||typeof e=="string"&&e.trim()==="")return null;let t=typeof e=="string"?Number(e):e;return Number.isFinite(t)?Math.min(zt,Math.max(Se,Math.round(t))):null}function Vt(e){let t=pe(e);return t===null?{}:Object.fromEntries(Object.entries($t).map(([n,a])=>{let o=t*a/16;return[n,o===0?"0":`${o}rem`]}))}function ea(e){return Vt(pe(e)??Se)}var Yt=["none","soft","lifted"],Xt="soft",_e="none",jt=["tight","normal","roomy"],qt="normal",H="normal",Kt=["none","lift","highlight"],Zt="lift",Jt="highlight",Ee="#141416";function ye(e){return Yt.includes(e??"")?e:Xt}function Qt(e){return jt.includes(e??"")?e:qt}function be(e){return Kt.includes(e??"")?e:Zt}function en(e){return/^#[0-9a-fA-F]{6}$/.test(e??"")?e.toLowerCase():Ee}function ta(e){let t=ye(e);return t===_e?void 0:t}function na(e){let t=Qt(e);return t===H?void 0:t}function aa(e){let t=be(e);return t===Jt?void 0:t}function oa(e,t,n){let a=en(t);return a===Ee?{}:ye(e)!==_e||be(n)==="lift"?{"--sf-shadow-color":a}:{}}var tn=["normal","tight","compressed"],b="normal";function Te(e){return tn.includes(e??"")?e:b}function sa(e){let t=Te(e);return t===b?void 0:t}function ra(e){switch(Te(e)){case"tight":return{lineHeight:.95,letterSpacing:-.01};case"compressed":return{lineHeight:.86,letterSpacing:-.01};default:return{}}}var $={case:"authored",weight:null,weightStrong:null,italicStrong:null,maxPx:null,weight2:null,weight3:null,case2:"authored",case3:"authored"},N=100,G=900,nn=24,an=200;function L(e,t,n){return typeof e!="number"||!Number.isFinite(e)?null:Math.round(Math.min(Math.max(e,t),n))}function Ae(e){let t=L(e?.weight,N,G),n=e?.case==="sentence"?"sentence":"authored",a=l=>l==null?t:L(l,N,G),o=l=>l==="sentence"?"sentence":l==="authored"?"authored":n;return{case:n,weight:t,weightStrong:L(e?.weightStrong,N,G),italicStrong:typeof e?.italicStrong=="boolean"?e.italicStrong:null,maxPx:L(e?.maxPx,nn,an),weight2:a(e?.weight2),weight3:a(e?.weight3),case2:o(e?.case2),case3:o(e?.case3)}}function ia(e){let t=Ae(e),n={};return t.case==="sentence"&&(n["--sf-heading-case"]="none"),t.weight!==null&&(n["--sf-heading-weight"]=String(t.weight)),t.weightStrong!==null&&(n["--sf-heading-weight-strong"]=String(t.weightStrong)),t.maxPx!==null&&(n["--sf-heading-max"]=`${t.maxPx}px`),t.weight2!==null&&t.weight2!==t.weight&&(n["--sf-heading-2-weight"]=String(t.weight2)),t.weight3!==null&&t.weight3!==t.weight&&(n["--sf-heading-3-weight"]=String(t.weight3)),t.case2!==t.case&&(n["--sf-heading-2-case"]=t.case2==="sentence"?"none":"uppercase"),t.case3!==t.case&&(n["--sf-heading-3-case"]=t.case3==="sentence"?"none":"uppercase"),n}function la(e){return Ae({case:e?.heading_case??void 0,weight:e?.heading_weight,weightStrong:e?.heading_weight_strong,italicStrong:e?.accent_italic,maxPx:e?.heading_max_px,weight2:e?.heading_2_weight??void 0,weight3:e?.heading_3_weight??void 0,case2:e?.heading_2_case??void 0,case3:e?.heading_3_case??void 0})}var Ce=[{key:"space-grotesk",label:"Space Grotesk",cssVar:"--font-display",category:"sans",italic:!1,italicLoaded:!1},{key:"inter",label:"Inter",cssVar:"--font-body",category:"sans",italic:!0,italicLoaded:!0},{key:"poppins",label:"Poppins",cssVar:"--font-poppins",category:"sans",italic:!0,italicLoaded:!0},{key:"dm-sans",label:"DM Sans",cssVar:"--font-dm-sans",category:"sans",italic:!0,italicLoaded:!0},{key:"sora",label:"Sora",cssVar:"--font-sora",category:"sans",italic:!1,italicLoaded:!1},{key:"oswald",label:"Oswald",cssVar:"--font-oswald",category:"sans",italic:!1,italicLoaded:!1},{key:"archivo",label:"Archivo",cssVar:"--font-archivo",category:"sans",italic:!0,italicLoaded:!0},{key:"outfit",label:"Outfit",cssVar:"--font-outfit",category:"sans",italic:!1,italicLoaded:!1},{key:"manrope",label:"Manrope",cssVar:"--font-manrope",category:"sans",italic:!1,italicLoaded:!1},{key:"big-shoulders",label:"Big Shoulders",cssVar:"--font-big-shoulders",category:"sans",italic:!1,italicLoaded:!1},{key:"michroma",label:"Michroma",cssVar:"--font-michroma",category:"sans",italic:!1,italicLoaded:!1},{key:"assistant",label:"Assistant",cssVar:"--font-assistant",category:"sans",italic:!1,italicLoaded:!1},{key:"fraunces",label:"Fraunces",cssVar:"--font-serif",category:"serif",italic:!0,italicLoaded:!0},{key:"playfair-display",label:"Playfair Display",cssVar:"--font-playfair",category:"serif",italic:!0,italicLoaded:!0},{key:"cormorant",label:"Cormorant",cssVar:"--font-cormorant",category:"serif",italic:!0,italicLoaded:!0},{key:"jetbrains-mono",label:"JetBrains Mono",cssVar:"--font-mono-loaded",category:"mono",italic:!0,italicLoaded:!0}],f=new Map(Ce.map(e=>[e.key,e]));function da(e){return f.get(e)}var we=["heading","heading2","heading3","body","accent","label"],ua={heading:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",body:"Body",accent:"Accent",label:"Labels"},on=[["font-heading2","heading2"],["font-heading3","heading3"],["font-display","heading"],["font-serif","accent"],["font-mono","label"],["font-body","body"]],sn=/var\(--size-(headingLarge|headingMedium|headingSmall|accent|body|label)\s*,/,ha={heading:"headingLarge",heading2:"headingMedium",heading3:"headingSmall",accent:"accent",body:"body",label:"label"},rn={headingLarge:"heading",headingMedium:"heading2",headingSmall:"heading3",accent:"accent",body:"body",label:"label"};function ga(e){let t=e?sn.exec(e):null;return t?rn[t[1]]??null:ln(e)}function ln(e){if(!e)return null;let t=e.split(/\s+/).filter(n=>!n.slice(0,n.lastIndexOf(":")+1).includes("&")).map(n=>n.slice(n.lastIndexOf(":")+1));for(let[n,a]of on)if(t.includes(n))return a;return null}var u={heading:"space-grotesk",heading2:"space-grotesk",heading3:"space-grotesk",body:"inter",accent:"fraunces",label:"jetbrains-mono"};function cn(e){let t=n=>{let a=e?.[n];if(a&&f.has(a))return a;if(n==="heading2"||n==="heading3"){let o=e?.heading;return o&&f.has(o)?o:u.heading}return u[n]};return Object.fromEntries(we.map(n=>[n,t(n)]))}function dn(e,t){return f.get(e[t])??f.get(u[t])}function g(e,t){return`var(${dn(e,t).cssVar})`}var fa=[...new Set(we.map(e=>f.get(u[e]).cssVar))],ma=[...new Set(Ce.map(e=>e.cssVar))];function Sa(e){let t=cn(e);return{"--font-role-heading":g(t,"heading"),"--font-role-heading2":g(t,"heading2"),"--font-role-heading3":g(t,"heading3"),"--font-role-body":g(t,"body"),"--font-role-accent":g(t,"accent"),"--font-role-label":g(t,"label"),fontFamily:"var(--font-role-body)"}}var Oe=un({settings:null,setSettings:()=>{},primeSettings:()=>{},websiteName:null,templateChrome:!1,templateName:null,chromePlaceholder:!1,themeMode:U,setThemeMode:()=>{},themeSwitchShown:!1,setThemeSwitchShown:()=>{},theme:I,setTheme:()=>{},fonts:u,setFonts:()=>{},sizes:z,setSizes:()=>{},cornerRadiusPx:null,setCornerRadiusPx:()=>{},cardShadow:null,setCardShadow:()=>{},shadowColor:null,setShadowColor:()=>{},cardGap:H,setCardGap:()=>{},hoverEffect:null,setHoverEffect:()=>{},headingCompression:b,setHeadingCompression:()=>{},siteWidth:null,setSiteWidth:()=>{},siteGutter:null,blockGap:null,setSiteGutter:()=>{},setBlockGap:()=>{},headingTypography:$,setHeadingTypography:()=>{},textStyles:null,setTextStyles:()=>{},wordStyles:null,heroBackgroundFollowsWidth:null,setHeroBackgroundFollowsWidth:()=>{},sectionBackgroundWidth:null,setSectionBackgroundWidth:()=>{},sectionContentWidth:null,setSectionContentWidth:()=>{},photographyGrayscale:null,setPhotographyGrayscale:()=>{},shareButtonOnPosts:null,setShareButtonOnPosts:()=>{},themeFromDocument:!1,selected:!1,setSelected:()=>{},select:()=>{},setSelectHandler:()=>{}});function Ca({children:e,websiteName:t=null,templateChrome:n=!1,templateName:a=null,chromePlaceholder:o=!1,themeMode:l=U,onThemeModeChange:i,themeSwitchShown:d=!1,onThemeSwitchShownChange:T,theme:A=I,onThemeChange:m,fonts:S=u,onFontsChange:p,sizes:_=z,onSizesChange:c,cornerRadiusPx:R=null,onCornerRadiusPxChange:C,cardShadow:x=null,onCardShadowChange:w,shadowColor:Pe=null,onShadowColorChange:V,cardGap:De=H,onCardGapChange:Y,hoverEffect:Fe=null,onHoverEffectChange:X,headingCompression:Ne=b,onHeadingCompressionChange:j,siteWidth:Ge=null,onSiteWidthChange:q,siteGutter:ve=null,blockGap:Ue=null,onSiteGutterChange:K,onBlockGapChange:Z,headingTypography:Be=$,onHeadingTypographyChange:J,textStyles:We=null,onTextStylesChange:Q,wordStyles:ze=null,heroBackgroundFollowsWidth:$e=null,onHeroBackgroundFollowsWidthChange:ee,sectionBackgroundWidth:Ve=null,onSectionBackgroundWidthChange:te,sectionContentWidth:Ye=null,onSectionContentWidthChange:ne,photographyGrayscale:Xe=null,onPhotographyGrayscaleChange:ae,shareButtonOnPosts:je=null,onShareButtonOnPostsChange:oe,themeFromDocument:qe=!1}){let[E,se]=ke(null),Ke=r(s=>se(At=>At??s),[]),[Ze,Je]=ke(!1),Qe=r(s=>i?.(s),[i]),et=r(s=>T?.(s),[T]),tt=r(s=>m?.(s),[m]),nt=r(s=>p?.(s),[p]),at=r(s=>c?.(s),[c]),ot=r(s=>q?.(s),[q]),st=r(s=>K?.(s),[K]),rt=r(s=>Z?.(s),[Z]),it=r(s=>ee?.(s),[ee]),lt=r(s=>te?.(s),[te]),ct=r(s=>ne?.(s),[ne]),dt=r(s=>ae?.(s),[ae]),ut=r(s=>oe?.(s),[oe]),ht=r(s=>C?.(s),[C]),gt=r(s=>w?.(s),[w]),ft=r(s=>V?.(s),[V]),mt=r(s=>Y?.(s),[Y]),St=r(s=>X?.(s),[X]),pt=r(s=>j?.(s),[j]),_t=r(s=>J?.(s),[J]),Et=r(s=>Q?.(s),[Q]),{select:yt,setSelectHandler:bt}=fn(),re=E?.logoUrl,ie=E?.logoReversed,le=E?.logoInkIsDark,ce=E!==null,Tt=gn(()=>({logo:ce?{logoUrl:re,logoReversed:ie,logoInkIsDark:le}:null,placeholder:n||o,wordmark:n?a:t}),[ce,re,ie,le,n,o,a,t]);return Le(P.Provider,{value:Tt,children:Le(Oe.Provider,{value:{settings:E,setSettings:se,primeSettings:Ke,websiteName:t,templateChrome:n,templateName:a,chromePlaceholder:o,themeMode:l,setThemeMode:Qe,themeSwitchShown:d,setThemeSwitchShown:et,theme:A,setTheme:tt,fonts:S,setFonts:nt,sizes:_,setSizes:at,cornerRadiusPx:R,setCornerRadiusPx:ht,cardShadow:x,setCardShadow:gt,shadowColor:Pe,setShadowColor:ft,cardGap:De,setCardGap:mt,hoverEffect:Fe,setHoverEffect:St,headingCompression:Ne,setHeadingCompression:pt,siteWidth:Ge,setSiteWidth:ot,siteGutter:ve,blockGap:Ue,setSiteGutter:st,setBlockGap:rt,headingTypography:Be,setHeadingTypography:_t,textStyles:We,setTextStyles:Et,wordStyles:ze,heroBackgroundFollowsWidth:$e,setHeroBackgroundFollowsWidth:it,sectionBackgroundWidth:Ve,setSectionBackgroundWidth:lt,sectionContentWidth:Ye,setSectionContentWidth:ct,photographyGrayscale:Xe,setPhotographyGrayscale:dt,shareButtonOnPosts:je,setShareButtonOnPosts:ut,themeFromDocument:qe,selected:Ze,setSelected:Je,select:yt,setSelectHandler:bt},children:e})})}var wa=()=>hn(Oe);import{forwardRef as mn}from"react";import{imageCopyUrl as He,imageSrcSet as Re}from"efficient-shell/image-copies";import{jsx as _n}from"react/jsx-runtime";var Sn={position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,color:"transparent"};function xe(e,t,n){if(n){let a=Re(e);return a?{src:He(e,1280),srcSet:a,sizes:n}:{src:e,sizes:n}}if(t&&t>0){let a=Re(e,{maxWidth:t*3});return a?{src:He(e,t*2),srcSet:a,sizes:`${t}px`}:{src:e}}return{src:e}}var pn=mn(function({src:t,width:n,height:a,fill:o,priority:l,loading:i,style:d,quality:T,placeholder:A,blurDataURL:m,unoptimized:S,loader:p,overrideSrc:_,sizes:c,...R},C){let x=_??(typeof t=="string"?t:t.src),w=xe(x,o?void 0:Number(n)||void 0,c??(o?"100vw":void 0));return _n("img",{ref:C,...w,width:o?void 0:n,height:o?void 0:a,loading:l?"eager":i??"lazy",fetchPriority:l?"high":void 0,decoding:"async",style:o?{...Sn,...d}:{color:"transparent",...d},...R})}),Oa=pn;function Ha(e){let t=e.overrideSrc??(typeof e.src=="string"?e.src:e.src.src),n=e.fill?void 0:Number(e.width)||void 0;return{props:xe(t,n,e.sizes??(e.fill?"100vw":void 0))}}import{forwardRef as En}from"react";import{jsx as Tn}from"react/jsx-runtime";function yn(e){if(typeof e=="string")return e;let t=e.query?`?${new URLSearchParams(e.query).toString()}`:"",n=e.hash?e.hash.startsWith("#")?e.hash:`#${e.hash}`:"";return`${e.pathname??""}${t}${n}`}var bn=En(function({href:t,prefetch:n,replace:a,scroll:o,shallow:l,legacyBehavior:i,passHref:d,locale:T,onClick:A,children:m,...S},p){let _=c=>{A?.(c),!(c.defaultPrevented||S.target==="_blank")&&c.preventDefault()};return Tn("a",{ref:p,href:yn(t),onClick:_,...S,children:m})}),Pa=bn;var An="Website";function Na(e){return e?.trim()||An}var Me=["instagram","facebook","tiktok","youtube","x","linkedin","pinterest","whatsapp","telegram","line","wechat"],Cn={instagram:"Instagram",facebook:"Facebook",tiktok:"TikTok",youtube:"YouTube",x:"X",linkedin:"LinkedIn",pinterest:"Pinterest",whatsapp:"WhatsApp",telegram:"Telegram",line:"LINE",wechat:"WeChat"},wn={};function va(e){if(!e||typeof e!="object")return wn;let t={};for(let n of Me){let a=e[n];if(typeof a!="string")continue;let o=a.trim();!o||!/^https?:\/\//i.test(o)||(t[n]=o)}return t}function Ua(e){return Me.flatMap(t=>{let n=e[t];return n?[{platform:t,href:n,label:Cn[t]}]:[]})}var Ba=e=>`${e}_url`;var za={small:54,medium:66,large:84},Ln=44,$a=16,Va=140,Ya=Ln*4;export{Oa as a,Ha as b,Pa as c,Ce as d,da as e,we as f,ua as g,ha as h,ga as i,ln as j,u as k,cn as l,Sa as m,Mn as n,Pn as o,Dn as p,Fn as q,U as r,Nn as s,h as t,kt as u,he as v,Gn as w,vn as x,y,ge as z,xt as A,Un as B,Bn as C,O as D,Wn as E,zn as F,$n as G,W as H,Vn as I,fe as J,Dt as K,Yn as L,Xn as M,jn as N,qn as O,Kn as P,z as Q,Ut as R,Zn as S,Jn as T,Se as U,zt as V,Qn as W,pe as X,Vt as Y,ea as Z,Yt as _,Xt as $,_e as aa,H as ba,Kt as ca,Zt as da,Jt as ea,Ee as fa,ye as ga,Qt as ha,be as ia,en as ja,ta as ka,na as la,aa as ma,oa as na,b as oa,Te as pa,sa as qa,ra,$ as sa,Ae as ta,ia as ua,la as va,de as wa,Rn as xa,Ca as ya,wa as za,An as Aa,Na as Ba,Me as Ca,Cn as Da,wn as Ea,va as Fa,Ua as Ga,Ba as Ha,za as Ia,Ln as Ja,$a as Ka,Va as La,Ya as Ma};
|