@tokenoftrust/storefront-runner 2.4.86 → 2.4.88
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/apps/storefront/dev-plugins/tenant-hot-reload.mjs +1 -1
- package/apps/storefront/env.d.ts +2 -2
- package/apps/storefront/perf/README.md +1 -1
- package/apps/storefront/public/shared/commerce-chrome.css +1 -1
- package/apps/storefront/public/shared/commerce-marketing.css +1 -1
- package/apps/storefront/src/components/{CollectionCard.astro → catalog/storefront/CollectionCard.astro} +1 -1
- package/apps/storefront/src/components/{ProductCard.astro → catalog/storefront/ProductCard.astro} +7 -7
- package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/BrandGrid.astro +1 -1
- package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/PriceDisplay.astro +3 -3
- package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ProductCarousel.astro +3 -3
- package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ProductGrid.astro +4 -4
- package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ReviewList.astro +1 -1
- package/apps/storefront/src/components/{islands → catalog/storefront/islands}/ImageGallery.tsx +1 -1
- package/apps/storefront/src/components/{islands → catalog/storefront/islands}/QuickView.tsx +2 -2
- package/apps/storefront/src/components/{islands → catalog/storefront/islands}/RecentlyViewed.tsx +2 -2
- package/apps/storefront/src/components/{islands → catalog/storefront/islands}/SearchTypeahead.tsx +3 -3
- package/apps/storefront/src/components/{islands → catalog/storefront/islands}/VariantSelector.tsx +2 -2
- package/apps/storefront/src/components/{plp → catalog/storefront/plp}/FacetSidebar.astro +1 -1
- package/apps/storefront/src/components/compliance/{NicotineWarning.astro → storefront/compliance/NicotineWarning.astro} +1 -1
- package/apps/storefront/src/components/{islands → compliance/storefront/islands}/AgeGate.tsx +2 -2
- package/apps/storefront/src/components/{islands → compliance/storefront/islands}/CheckoutComplianceGate.tsx +1 -1
- package/apps/storefront/src/components/{islands → compliance/storefront/islands}/IsolatedAgeGate.tsx +1 -1
- package/apps/storefront/src/components/{AsyncStylesheet.astro → content/storefront/AsyncStylesheet.astro} +2 -2
- package/apps/storefront/src/components/{Breadcrumbs.astro → content/storefront/Breadcrumbs.astro} +3 -3
- package/apps/storefront/src/components/{Seo.astro → content/storefront/Seo.astro} +5 -5
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogIndexView.astro +6 -6
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPaywall.astro +1 -1
- package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPostArticle.astro +7 -7
- package/apps/storefront/src/components/{blog → content/storefront/blog}/PostAccessBadge.astro +1 -1
- package/apps/storefront/src/components/{blog → content/storefront/blog}/PostGrid.astro +3 -3
- package/apps/storefront/src/components/{blog → content/storefront/blog}/ReactionBar.astro +1 -1
- package/apps/storefront/src/components/{blog → content/storefront/blog}/ShareRow.astro +1 -1
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/MegaMenu.astro +3 -3
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/NavDropdown.astro +2 -2
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteFooter.astro +5 -5
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteHeader.astro +9 -9
- package/apps/storefront/src/components/{chrome → content/storefront/chrome}/UtilityNav.astro +2 -2
- package/apps/storefront/src/components/content/{Callout.astro → storefront/content/Callout.astro} +1 -1
- package/apps/storefront/src/components/content/{PromoTiles.astro → storefront/content/PromoTiles.astro} +3 -3
- package/apps/storefront/src/components/content/{ProseSections.astro → storefront/content/ProseSections.astro} +3 -3
- package/apps/storefront/src/components/{home → content/storefront/home}/Hero.astro +4 -4
- package/apps/storefront/src/components/{islands → content/storefront/islands}/MobileNav.tsx +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CardGrid.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CodeSample.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CtaBand.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Faq.astro +5 -5
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Integrations.astro +3 -3
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingBlocks.astro +11 -11
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingCtas.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingHero.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/ProofStrip.astro +1 -1
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/SplitCompare.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Steps.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Testimonials.astro +2 -2
- package/apps/storefront/src/components/{marketing → content/storefront/marketing}/TrustBar.astro +1 -1
- package/apps/storefront/src/components/{style-guide → content/storefront/style-guide}/StyleGuideNav.astro +1 -1
- package/apps/storefront/src/components/{the-build → content/storefront/the-build}/TheBuildIndexView.astro +5 -5
- package/apps/storefront/src/components/customers/storefront/islands/SavedList.tsx +2 -2
- package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/HowItWorksSteps.astro +1 -1
- package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/ManageSubscriptionEntry.astro +1 -1
- package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/SavingsExplainer.astro +2 -2
- package/apps/storefront/src/layouts/Layout.astro +32 -32
- package/apps/storefront/src/lib/activity/alerts.ts +1 -1
- package/apps/storefront/src/lib/activity/candidateSubmitLease.ts +1 -1
- package/apps/storefront/src/lib/activity/fixtures/evidence.ts +2 -2
- package/apps/storefront/src/lib/activity/query.ts +2 -2
- package/apps/storefront/src/lib/activity/store.ts +1 -1
- package/apps/storefront/src/lib/admin/services/mock/index.ts +5 -5
- package/apps/storefront/src/lib/assets/shared/imageAttrs.ts +1 -1
- package/apps/storefront/src/lib/basePath.ts +1 -1
- package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsClient.ts +2 -2
- package/apps/storefront/src/lib/{admin → catalog/admin}/services/catalogProducts.ts +2 -2
- package/apps/storefront/src/lib/{d1 → catalog/d1}/catalog.ts +1 -1
- package/apps/storefront/src/lib/{admin/services/mock → catalog/fixtures}/products.ts +5 -5
- package/apps/storefront/src/lib/{search → catalog/search}/index.ts +1 -1
- package/apps/storefront/src/lib/{featuredProductsPresentation.ts → catalog/shared/featuredProductsPresentation.ts} +1 -1
- package/apps/storefront/src/lib/{priceBuckets.ts → catalog/shared/priceBuckets.ts} +1 -1
- package/apps/storefront/src/lib/{tot → catalog/tot}/ToTClient.ts +3 -3
- package/apps/storefront/src/lib/{tot → catalog/tot}/query.ts +1 -1
- package/apps/storefront/src/lib/{tot → catalog/tot}/syncState.ts +1 -1
- package/apps/storefront/src/lib/{tot → catalog/tot}/tenantCatalog.ts +1 -1
- package/apps/storefront/src/lib/{admin/services/mock → checkout/fixtures}/checkoutSettings.ts +2 -2
- package/apps/storefront/src/lib/{blog → content/blog}/collection.ts +9 -9
- package/apps/storefront/src/lib/{blog → content/blog}/postView.ts +3 -3
- package/apps/storefront/src/lib/{blog → content/blog}/provider.ts +7 -7
- package/apps/storefront/src/lib/{chrome → content/chrome}/footerLegal.ts +2 -2
- package/apps/storefront/src/lib/{chrome → content/chrome}/trackingPlacements.ts +1 -1
- package/apps/storefront/src/lib/content/index.ts +1 -1
- package/apps/storefront/src/lib/{seo → content/seo}/faqItems.ts +1 -1
- package/apps/storefront/src/lib/{seo → content/seo}/structuredData.ts +1 -1
- package/apps/storefront/src/lib/{breadcrumbs.ts → content/shared/breadcrumbs.ts} +1 -1
- package/apps/storefront/src/lib/{heroSlideshow.ts → content/shared/heroSlideshow.ts} +1 -1
- package/apps/storefront/src/lib/{homeVisualParity.ts → content/shared/homeVisualParity.ts} +1 -1
- package/apps/storefront/src/lib/{jsonld.ts → content/shared/jsonld.ts} +1 -1
- package/apps/storefront/src/lib/{rawChrome.ts → content/shared/rawChrome.ts} +14 -14
- package/apps/storefront/src/lib/{rawMarketingHtml.ts → content/shared/rawMarketingHtml.ts} +3 -3
- package/apps/storefront/src/lib/{sections.ts → content/shared/sections.ts} +2 -2
- package/apps/storefront/src/lib/{styleGuideThemes.ts → content/shared/styleGuideThemes.ts} +3 -3
- package/apps/storefront/src/lib/{storyblok → content/storyblok}/content-model.ts +1 -1
- package/apps/storefront/src/lib/{storyblok → content/storyblok}/provider.ts +26 -26
- package/apps/storefront/src/lib/{the-build → content/the-build}/provider.ts +1 -1
- package/apps/storefront/src/lib/{the-build → content/the-build}/toc.ts +1 -1
- package/apps/storefront/src/lib/d1/schema-apps.ts +2 -2
- package/apps/storefront/src/lib/email/candidateConflictEmail.ts +1 -1
- package/apps/storefront/src/lib/email/magicLinkInviteEmail.ts +1 -1
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/digest.ts +2 -2
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/resendClient.ts +1 -1
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/send.ts +2 -2
- package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/subscribers.ts +1 -1
- package/apps/storefront/src/lib/{social → engagement/social}/golive.ts +2 -2
- package/apps/storefront/src/lib/{social → engagement/social}/notify.ts +1 -1
- package/apps/storefront/src/lib/{social → engagement/social}/tokenStore.ts +3 -3
- package/apps/storefront/src/lib/env.ts +1 -1
- package/apps/storefront/src/lib/fulfillment/store.ts +1 -1
- package/apps/storefront/src/lib/integrations/apps/appVersionStore.ts +1 -1
- package/apps/storefront/src/lib/integrations/apps/credentials.ts +1 -1
- package/apps/storefront/src/lib/integrations/apps/orders/idempotency.ts +1 -1
- package/apps/storefront/src/lib/integrations/apps/registryAccess.ts +1 -1
- package/apps/storefront/src/lib/integrations/apps/registryService.ts +1 -1
- package/apps/storefront/src/lib/integrations/integration/managedInstallDeclarations.ts +1 -1
- package/apps/storefront/src/lib/integrations/webhooks/deliveryEngine.ts +1 -1
- package/apps/storefront/src/lib/integrations/webhooks/deliveryStore.ts +1 -1
- package/apps/storefront/src/lib/integrations/webhooks/emit.ts +1 -1
- package/apps/storefront/src/lib/integrations/webhooks/getDispatcher.ts +1 -1
- package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/attributionService.ts +2 -2
- package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/orderConversionD1.ts +2 -2
- package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/verifiedProviderMeasurement.ts +2 -2
- package/apps/storefront/src/lib/{apps → measurement/consent}/consentConfigRead.ts +1 -1
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/d1Control.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionCollector.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionStore.ts +0 -0
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/pruneRollup.ts +2 -2
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/publishSafetyNet.ts +1 -1
- package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantD1Registry.ts +2 -2
- package/apps/storefront/src/lib/monitoring/manifest.ts +1 -1
- package/apps/storefront/src/lib/{apps/orders → orders/data}/orderForwardReceiver.ts +1 -1
- package/apps/storefront/src/lib/{apps/orders → orders/data}/orderMapper.ts +1 -1
- package/apps/storefront/src/lib/{apps/orders → orders/data}/ordersStore.ts +1 -1
- package/apps/storefront/src/lib/{admin/services/mock → orders/fixtures}/orders.ts +5 -5
- package/apps/storefront/src/lib/previewReload.ts +1 -1
- package/apps/storefront/src/lib/publication/contentProvider.ts +7 -7
- package/apps/storefront/src/lib/publication/mountedDiscovery.ts +1 -1
- package/apps/storefront/src/lib/publication/rootDiscovery.ts +4 -4
- package/apps/storefront/src/lib/{admin/services/mock → subscriptions/fixtures}/subscriptions.ts +8 -8
- package/apps/storefront/src/lib/url.ts +1 -1
- package/apps/storefront/src/middleware/controlPlane.ts +2 -2
- package/apps/storefront/src/middleware/index.ts +2 -2
- package/apps/storefront/src/middleware/renderChain.ts +3 -3
- package/apps/storefront/src/pages/404.astro +1 -1
- package/apps/storefront/src/pages/[...slug].astro +13 -13
- package/apps/storefront/src/pages/api/activity.ts +1 -1
- package/apps/storefront/src/pages/api/admin/activity-alerts.ts +1 -1
- package/apps/storefront/src/pages/api/admin/interaction-insights.ts +4 -4
- package/apps/storefront/src/pages/api/admin/orders/[id].ts +2 -2
- package/apps/storefront/src/pages/api/admin/orders.ts +2 -2
- package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +1 -1
- package/apps/storefront/src/pages/api/commerce/checkout-handoff.ts +2 -2
- package/apps/storefront/src/pages/api/commerce/final-cart-authorization.ts +2 -2
- package/apps/storefront/src/pages/api/compliance/preflight.ts +1 -1
- package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +4 -4
- package/apps/storefront/src/pages/api/newsletter/confirm.ts +2 -2
- package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +2 -2
- package/apps/storefront/src/pages/api/rum/vitals.ts +1 -1
- package/apps/storefront/src/pages/api/tracking/interaction.ts +6 -6
- package/apps/storefront/src/pages/blog/[slug].astro +2 -2
- package/apps/storefront/src/pages/blog/author/[author].astro +8 -8
- package/apps/storefront/src/pages/blog/category/[category].astro +8 -8
- package/apps/storefront/src/pages/blog/index.astro +4 -4
- package/apps/storefront/src/pages/blog/page/[n].astro +4 -4
- package/apps/storefront/src/pages/blog/tag/[tag].astro +8 -8
- package/apps/storefront/src/pages/cart.ts +1 -1
- package/apps/storefront/src/pages/collections/[handle].astro +12 -12
- package/apps/storefront/src/pages/collections/index.astro +6 -6
- package/apps/storefront/src/pages/index.astro +14 -14
- package/apps/storefront/src/pages/llms.txt.ts +3 -3
- package/apps/storefront/src/pages/products/[handle].astro +22 -22
- package/apps/storefront/src/pages/saved.astro +2 -2
- package/apps/storefront/src/pages/search.astro +7 -7
- package/apps/storefront/src/pages/sitemap.xml.ts +9 -9
- package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +58 -58
- package/apps/storefront/src/pages/style-guide/[tenant]/chrome/[theme].astro +2 -2
- package/apps/storefront/src/pages/style-guide/[tenant]/guide/[theme].astro +3 -3
- package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +3 -3
- package/apps/storefront/src/pages/style-guide/index.astro +1 -1
- package/apps/storefront/src/pages/the-build/[slug].astro +10 -10
- package/apps/storefront/src/pages/the-build/index.astro +5 -5
- package/apps/storefront/src/pages/the-build/page/[n].astro +5 -5
- package/apps/storefront/src/pages/the-build/rss.xml.ts +4 -4
- package/docs/widget-library-guide.md +71 -71
- package/package.json +1 -1
- package/packages/public-runtime/src/chrome.ts +5 -5
- package/packages/public-runtime/src/tracking-id-derivation.ts +1 -1
- /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/RatingStars.astro +0 -0
- /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ReviewSummary.astro +0 -0
- /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/TagFilterCloud.astro +0 -0
- /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/ActiveFilters.astro +0 -0
- /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/Pagination.astro +0 -0
- /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/SortSelect.astro +0 -0
- /package/apps/storefront/src/components/{commerce → checkout/storefront/commerce}/CartDrawerStyles.astro +0 -0
- /package/apps/storefront/src/components/{commerce → checkout/storefront/commerce}/CheckoutLoader.astro +0 -0
- /package/apps/storefront/src/components/compliance/{AdultSignatureNotice.astro → storefront/compliance/AdultSignatureNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{ComplianceNotice.astro → storefront/compliance/ComplianceNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{ExciseTaxNotice.astro → storefront/compliance/ExciseTaxNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{PactActNotice.astro → storefront/compliance/PactActNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{Prop65Warning.astro → storefront/compliance/Prop65Warning.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{PurchaseLimitNotice.astro → storefront/compliance/PurchaseLimitNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{ShippingRestrictionNotice.astro → storefront/compliance/ShippingRestrictionNotice.astro} +0 -0
- /package/apps/storefront/src/components/compliance/{StateEligibilityNotice.astro → storefront/compliance/StateEligibilityNotice.astro} +0 -0
- /package/apps/storefront/src/components/{Badge.astro → content/storefront/Badge.astro} +0 -0
- /package/apps/storefront/src/components/{EmptyState.astro → content/storefront/EmptyState.astro} +0 -0
- /package/apps/storefront/src/components/{Section.astro → content/storefront/Section.astro} +0 -0
- /package/apps/storefront/src/components/{chrome → content/storefront/chrome}/AnnouncementBar.astro +0 -0
- /package/apps/storefront/src/components/{commerce → content/storefront/commerce}/ArticleCard.astro +0 -0
- /package/apps/storefront/src/components/content/{NeedsReviewCallout.astro → storefront/content/NeedsReviewCallout.astro} +0 -0
- /package/apps/storefront/src/components/content/{ProseToc.astro → storefront/content/ProseToc.astro} +0 -0
- /package/apps/storefront/src/components/content/{RichText.astro → storefront/content/RichText.astro} +0 -0
- /package/apps/storefront/src/components/content/{TrustStrip.astro → storefront/content/TrustStrip.astro} +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsPreview.ts +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsState.ts +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/productSetupPhoto.ts +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/productsTabClient.ts +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/viewmodels/catalogProducts.ts +0 -0
- /package/apps/storefront/src/lib/{admin → catalog/admin}/viewmodels/products.ts +0 -0
- /package/apps/storefront/src/lib/{fixtures → catalog/fixtures}/sampleProducts.ts +0 -0
- /package/apps/storefront/src/lib/{tot → catalog/tot}/d1Client.ts +0 -0
- /package/apps/storefront/src/lib/{tot → catalog/tot}/totClientInterface.ts +0 -0
- /package/apps/storefront/src/lib/{admin → checkout/admin}/checkoutStyleInput.ts +0 -0
- /package/apps/storefront/src/lib/{admin → checkout/admin}/checkoutStyleTarget.ts +0 -0
- /package/apps/storefront/src/{components/islands → lib/checkout/browser}/useCheckoutHandoffCorrelation.ts +0 -0
- /package/apps/storefront/src/lib/{commerce → checkout/commerce}/checkoutHandoffCorrelation.ts +0 -0
- /package/apps/storefront/src/lib/{commerce → checkout/commerce}/checkoutSettings.ts +0 -0
- /package/apps/storefront/src/lib/{commerce → checkout/commerce}/finalCartAuthorization.ts +0 -0
- /package/apps/storefront/src/lib/{checkoutCommerce.ts → checkout/shared/checkoutCommerce.ts} +0 -0
- /package/apps/storefront/src/{components/islands → lib/compliance/browser}/checkoutVerificationFlow.ts +0 -0
- /package/apps/storefront/src/lib/{visitorRegionCookie.ts → compliance/shared/visitorRegionCookie.ts} +0 -0
- /package/apps/storefront/src/lib/{verification → compliance/verification}/totVerificationClient.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/access.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/collectionPaths.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/markdown.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/pagination.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/presentation.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/reactions.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/rss.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/teaser.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/types.ts +0 -0
- /package/apps/storefront/src/lib/{blog → content/blog}/viewCounts.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/ctaIdentity.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome-assignments.example.json +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome.example.json +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/managedCart.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/model.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/navCurrent.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/newsletterAgeAttestation.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/parseConfig.ts +0 -0
- /package/apps/storefront/src/lib/{chrome → content/chrome}/variant.ts +0 -0
- /package/apps/storefront/src/lib/{commerce → content/policies}/shippingPolicy.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/alternates.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/documentTitle.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/meta.ts +0 -0
- /package/apps/storefront/src/lib/{seo → content/seo}/urlForm.ts +0 -0
- /package/apps/storefront/src/lib/{asyncCss.ts → content/shared/asyncCss.ts} +0 -0
- /package/apps/storefront/src/lib/{colors.ts → content/shared/colors.ts} +0 -0
- /package/apps/storefront/src/lib/{format.ts → content/shared/format.ts} +0 -0
- /package/apps/storefront/src/lib/{i18n.ts → content/shared/i18n.ts} +0 -0
- /package/apps/storefront/src/lib/{jsonScript.ts → content/shared/jsonScript.ts} +0 -0
- /package/apps/storefront/src/lib/{placeholder.ts → content/shared/placeholder.ts} +0 -0
- /package/apps/storefront/src/lib/{styleGuidePaths.ts → content/shared/styleGuidePaths.ts} +0 -0
- /package/apps/storefront/src/lib/{the-build → content/the-build}/pagination.ts +0 -0
- /package/apps/storefront/src/lib/{the-build → content/the-build}/readingTime.ts +0 -0
- /package/apps/storefront/src/lib/{messaging → engagement/messaging}/messagesClient.ts +0 -0
- /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/confirmationEmail.ts +0 -0
- /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/consent.ts +0 -0
- /package/apps/storefront/src/lib/{admin → measurement/admin}/consentSettingsClient.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → measurement/analytics}/index.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorAllowlist.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorIngest.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionHealth.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionSchema.ts +0 -0
- /package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantReadAccess.ts +0 -0
- /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/rewriteTrackingIds.ts +0 -0
- /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/writebackCandidate.ts +0 -0
- /package/apps/storefront/src/lib/{admin → orders/admin}/orderClient.ts +0 -0
- /package/apps/storefront/src/lib/{admin → orders/admin}/services/orders.ts +0 -0
- /package/apps/storefront/src/lib/{admin → orders/admin}/viewmodels/orders.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → orders/providers}/foxyOrderClient.ts +0 -0
- /package/apps/storefront/src/lib/{admin → subscriptions/admin}/viewmodels/subscriptions.ts +0 -0
- /package/apps/storefront/src/lib/{subscription → subscriptions/subscription}/model.ts +0 -0
|
@@ -192,7 +192,7 @@ export function seedKnown(root, known) {
|
|
|
192
192
|
// - content/**.html — read fresh from disk per request
|
|
193
193
|
// (LocalContentProvider.readRawDevFile), so just reload. (The Vite HMR client
|
|
194
194
|
// is injected into these otherwise-pipeline-bypassing pages in dev; see
|
|
195
|
-
// rawHtmlResponse in src/lib/rawMarketingHtml.ts.)
|
|
195
|
+
// rawHtmlResponse in src/lib/content/shared/rawMarketingHtml.ts.)
|
|
196
196
|
// - public/** — re-mirror the one changed asset into public/tenants/<id>/
|
|
197
197
|
// (skipping R2-versioned tenants, like copy-tenant-assets.mjs), then reload.
|
|
198
198
|
// content/*.json and other themes/*.json globs are ordinary glob imports, so
|
package/apps/storefront/env.d.ts
CHANGED
|
@@ -15,8 +15,8 @@ import type {
|
|
|
15
15
|
ResolvedRouteTierV1,
|
|
16
16
|
PublicationRoutePlanV1,
|
|
17
17
|
} from "@tot/public-runtime";
|
|
18
|
-
import type { ToTClient } from "@/lib/tot/ToTClient";
|
|
19
|
-
import type { ContentProvider } from "@/lib/storyblok/provider";
|
|
18
|
+
import type { ToTClient } from "@/lib/catalog/tot/ToTClient";
|
|
19
|
+
import type { ContentProvider } from "@/lib/content/storyblok/provider";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Minimal binding shapes. We intentionally do NOT depend on
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
The storefront's go-live framework enforces a performance gate. This directory
|
|
4
4
|
is the **lab half** (a checked-in budget manifest + a CI-runnable assertion
|
|
5
5
|
harness); the **field half** (Real User Monitoring) lives in
|
|
6
|
-
`../src/lib/analytics/`.
|
|
6
|
+
`../src/lib/measurement/analytics/index/`.
|
|
7
7
|
|
|
8
8
|
## The pieces
|
|
9
9
|
|
|
@@ -413,7 +413,7 @@ a.article-card__tag:hover { text-decoration: underline; }
|
|
|
413
413
|
.footer-bottom { margin-top: 28px; padding-top: 18px; border-top: 1px solid color-mix(in srgb, var(--color-primary-contrast) 16%, transparent); display: flex; flex-wrap: wrap; gap: 10px 24px; justify-content: space-between; align-items: center; }
|
|
414
414
|
.footer-bottom p, .footer-bottom a { color: color-mix(in srgb, var(--color-primary-contrast) 60%, transparent); font-size: .875rem; }
|
|
415
415
|
/* The Legal link row (a "Legal"-titled footer column, moved here — see
|
|
416
|
-
lib/chrome/footerLegal.ts). Wraps under the copyright at narrow widths
|
|
416
|
+
lib/content/chrome/footerLegal.ts). Wraps under the copyright at narrow widths
|
|
417
417
|
rather than overflowing the bar. */
|
|
418
418
|
.footer-bottom nav ul { display: flex; flex-wrap: wrap; gap: 6px 20px; list-style: none; margin: 0; padding: 0; }
|
|
419
419
|
.footer-bottom nav a:hover { color: var(--color-primary-contrast); text-decoration: underline; }
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
page-local CSS for standard patterns").
|
|
20
20
|
|
|
21
21
|
OPT-IN, not automatic. A tenant links this only when its chrome.json sets
|
|
22
|
-
`sharedMarketingCss: true` (see lib/rawChrome.ts SHARED_MARKETING_STYLESHEET) —
|
|
22
|
+
`sharedMarketingCss: true` (see lib/content/shared/rawChrome.ts SHARED_MARKETING_STYLESHEET) —
|
|
23
23
|
the same deliberate-adoption gate `sharedChrome` uses, so a SHIPPED tenant that
|
|
24
24
|
already hand-authored its own page CSS (e.g. sample-store-2's tenant-scoped
|
|
25
25
|
/tenants/sample-store-2.net/pages/page.css, which reuses names like `.cta-band` /
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import type { CatalogCollection } from "@tot/public-runtime";
|
|
8
8
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
9
9
|
import { withBase } from "@/lib/basePath";
|
|
10
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
10
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
11
11
|
|
|
12
12
|
interface Props {
|
|
13
13
|
collection: CatalogCollection;
|
package/apps/storefront/src/components/{ProductCard.astro → catalog/storefront/ProductCard.astro}
RENAMED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
* color swatches; price with struck compare-at. Theme-agnostic.
|
|
8
8
|
*/
|
|
9
9
|
import type { CatalogProduct } from "@tot/public-runtime";
|
|
10
|
-
import { discountPercent, truncate } from "@/lib/format";
|
|
11
|
-
import { isOnSale, isNew, isAvailable, fromPrice } from "@/lib/tot/query";
|
|
12
|
-
import { colorOptionValues, resolveSwatch, isLightFill } from "@/lib/colors";
|
|
10
|
+
import { discountPercent, truncate } from "@/lib/content/shared/format";
|
|
11
|
+
import { isOnSale, isNew, isAvailable, fromPrice } from "@/lib/catalog/tot/query";
|
|
12
|
+
import { colorOptionValues, resolveSwatch, isLightFill } from "@/lib/content/shared/colors";
|
|
13
13
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
14
|
-
import Badge from "@/components/Badge.astro";
|
|
15
|
-
import PriceDisplay from "@/components/commerce/PriceDisplay.astro";
|
|
16
|
-
import RatingStars from "@/components/commerce/RatingStars.astro";
|
|
14
|
+
import Badge from "@/components/content/storefront/Badge.astro";
|
|
15
|
+
import PriceDisplay from "@/components/catalog/storefront/commerce/PriceDisplay.astro";
|
|
16
|
+
import RatingStars from "@/components/catalog/storefront/commerce/RatingStars.astro";
|
|
17
17
|
import { withBase } from "@/lib/basePath";
|
|
18
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
18
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
19
19
|
|
|
20
20
|
interface Props {
|
|
21
21
|
product: CatalogProduct;
|
package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/BrandGrid.astro
RENAMED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* public/shared/commerce-chrome.css, for tenants that ship hand-authored HTML
|
|
14
14
|
* through the rawMarketingHtml splice pipeline. Keep the two visually equivalent.
|
|
15
15
|
*/
|
|
16
|
-
import Section from "@/components/Section.astro";
|
|
16
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
17
17
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
18
18
|
import { withBase } from "@/lib/basePath";
|
|
19
19
|
|
package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/PriceDisplay.astro
RENAMED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* atom is usable outside a CatalogProduct context (cart line, PDP, fixtures).
|
|
11
11
|
*/
|
|
12
12
|
import type { CatalogProduct } from "@tot/public-runtime";
|
|
13
|
-
import { formatPrice, discountPercent } from "@/lib/format";
|
|
14
|
-
import { fromPrice, isOnSale } from "@/lib/tot/query";
|
|
15
|
-
import Badge from "@/components/Badge.astro";
|
|
13
|
+
import { formatPrice, discountPercent } from "@/lib/content/shared/format";
|
|
14
|
+
import { fromPrice, isOnSale } from "@/lib/catalog/tot/query";
|
|
15
|
+
import Badge from "@/components/content/storefront/Badge.astro";
|
|
16
16
|
|
|
17
17
|
interface Props {
|
|
18
18
|
/** Derive amount/compareAt/from/currency from a product. */
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
* through `Astro.locals.tot`; or `tabs` for the multi-source tabbed variant.
|
|
15
15
|
*/
|
|
16
16
|
import type { CatalogProduct } from "@tot/public-runtime";
|
|
17
|
-
import Section from "@/components/Section.astro";
|
|
18
|
-
import ProductCard from "@/components/ProductCard.astro";
|
|
17
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
18
|
+
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
19
19
|
import {
|
|
20
20
|
resolveSectionSource,
|
|
21
21
|
DEFAULT_SECTION_LIMIT,
|
|
22
22
|
type SectionSource,
|
|
23
|
-
} from "@/lib/sections";
|
|
23
|
+
} from "@/lib/content/shared/sections";
|
|
24
24
|
|
|
25
25
|
interface Tab {
|
|
26
26
|
label: string;
|
package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ProductGrid.astro
RENAMED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
* that this component resolves through `Astro.locals.tot`.
|
|
10
10
|
*/
|
|
11
11
|
import type { CatalogProduct } from "@tot/public-runtime";
|
|
12
|
-
import Section from "@/components/Section.astro";
|
|
13
|
-
import ProductCard from "@/components/ProductCard.astro";
|
|
14
|
-
import EmptyState from "@/components/EmptyState.astro";
|
|
12
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
13
|
+
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
14
|
+
import EmptyState from "@/components/content/storefront/EmptyState.astro";
|
|
15
15
|
import {
|
|
16
16
|
resolveSectionSource,
|
|
17
17
|
DEFAULT_SECTION_LIMIT,
|
|
18
18
|
type SectionSource,
|
|
19
|
-
} from "@/lib/sections";
|
|
19
|
+
} from "@/lib/content/shared/sections";
|
|
20
20
|
|
|
21
21
|
interface Props {
|
|
22
22
|
source?: SectionSource;
|
package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ReviewList.astro
RENAMED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { Review } from "@tot/public-runtime";
|
|
16
16
|
import RatingStars from "./RatingStars.astro";
|
|
17
|
-
import { formatDate } from "@/lib/format";
|
|
17
|
+
import { formatDate } from "@/lib/content/shared/format";
|
|
18
18
|
|
|
19
19
|
interface Props {
|
|
20
20
|
reviews: Review[];
|
package/apps/storefront/src/components/{islands → catalog/storefront/islands}/ImageGallery.tsx
RENAMED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks";
|
|
17
17
|
import type { CatalogImage } from "@tot/public-runtime";
|
|
18
|
-
import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
|
|
18
|
+
import { placeholderDataUri, isUsableImageUrl } from "@/lib/content/shared/placeholder";
|
|
19
19
|
import { resolveImage } from "@/lib/assets/shared/imageAttrs";
|
|
20
20
|
|
|
21
21
|
interface Props {
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* reduced-motion-safe entrance via CSS.
|
|
8
8
|
*/
|
|
9
9
|
import { useEffect, useRef, useState } from "preact/hooks";
|
|
10
|
-
import { formatPrice } from "@/lib/format";
|
|
11
|
-
import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
|
|
10
|
+
import { formatPrice } from "@/lib/content/shared/format";
|
|
11
|
+
import { placeholderDataUri, isUsableImageUrl } from "@/lib/content/shared/placeholder";
|
|
12
12
|
import { withClientBase } from "@/lib/basePath";
|
|
13
13
|
|
|
14
14
|
interface QV {
|
package/apps/storefront/src/components/{islands → catalog/storefront/islands}/RecentlyViewed.tsx
RENAMED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* something to show (no layout shift, no empty state noise).
|
|
7
7
|
*/
|
|
8
8
|
import { useEffect, useState } from "preact/hooks";
|
|
9
|
-
import { formatPrice } from "@/lib/format";
|
|
10
|
-
import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
|
|
9
|
+
import { formatPrice } from "@/lib/content/shared/format";
|
|
10
|
+
import { placeholderDataUri, isUsableImageUrl } from "@/lib/content/shared/placeholder";
|
|
11
11
|
import { withClientBase } from "@/lib/basePath";
|
|
12
12
|
|
|
13
13
|
export interface RVItem {
|
package/apps/storefront/src/components/{islands → catalog/storefront/islands}/SearchTypeahead.tsx
RENAMED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* open a product, Escape to dismiss. Fetch failures degrade to "no dropdown".
|
|
12
12
|
*/
|
|
13
13
|
import { useCallback, useEffect, useRef, useState } from "preact/hooks";
|
|
14
|
-
import type { TypeaheadDoc } from "@/lib/search";
|
|
15
|
-
import { formatPrice } from "@/lib/format";
|
|
16
|
-
import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
|
|
14
|
+
import type { TypeaheadDoc } from "@/lib/catalog/search/index";
|
|
15
|
+
import { formatPrice } from "@/lib/content/shared/format";
|
|
16
|
+
import { placeholderDataUri, isUsableImageUrl } from "@/lib/content/shared/placeholder";
|
|
17
17
|
import { withClientBase } from "@/lib/basePath";
|
|
18
18
|
|
|
19
19
|
interface Props {
|
package/apps/storefront/src/components/{islands → catalog/storefront/islands}/VariantSelector.tsx
RENAMED
|
@@ -26,8 +26,8 @@ import type {
|
|
|
26
26
|
MembershipStackingPolicy,
|
|
27
27
|
} from "@tot/public-runtime";
|
|
28
28
|
import { priceForPurchaseOption } from "@tot/public-runtime";
|
|
29
|
-
import { formatPrice } from "@/lib/format";
|
|
30
|
-
import { useCheckoutHandoffCorrelation } from "@/
|
|
29
|
+
import { formatPrice } from "@/lib/content/shared/format";
|
|
30
|
+
import { useCheckoutHandoffCorrelation } from "@/lib/checkout/browser/useCheckoutHandoffCorrelation";
|
|
31
31
|
|
|
32
32
|
export type PublicSelectorVariant = Pick<CatalogVariant,
|
|
33
33
|
"id" | "sku" | "price" | "compare_at_price" | "option_values" | "inventory" | "image_id">;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { Facet, ListProductsQuery } from "@tot/public-runtime";
|
|
10
10
|
import { toggleFacet, buildQueryString, isPriceBucketActive, togglePriceBucket } from "@/lib/url";
|
|
11
|
-
import { PRICE_BUCKETS, bucketByKey } from "@/lib/priceBuckets";
|
|
11
|
+
import { PRICE_BUCKETS, bucketByKey } from "@/lib/catalog/shared/priceBuckets";
|
|
12
12
|
|
|
13
13
|
interface Props {
|
|
14
14
|
facets: Facet[];
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* owner-reviewed custom style), never below the conspicuity floor and never
|
|
11
11
|
* hideable. The markup is nicotineWarningHtml's, shared with the raw-HTML serve path.
|
|
12
12
|
*/
|
|
13
|
-
import { nicotineWarningHtml } from "
|
|
13
|
+
import { nicotineWarningHtml } from "../../../../../../../packages/cli/src/declared-config.mjs";
|
|
14
14
|
|
|
15
15
|
interface Props {
|
|
16
16
|
variant?: "bar" | "block";
|
package/apps/storefront/src/components/{islands → compliance/storefront/islands}/AgeGate.tsx
RENAMED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* reimplement verification here. Affirmation is remembered in localStorage.
|
|
8
8
|
*/
|
|
9
9
|
import { useEffect, useRef, useState } from "preact/hooks";
|
|
10
|
-
import type { ChromeAgeGate } from "@/lib/chrome/model";
|
|
11
|
-
import { deriveAgeGateStorageKey, isSafeAgeGateHref, resolveAgeGateCopy } from "@/lib/chrome/model";
|
|
10
|
+
import type { ChromeAgeGate } from "@/lib/content/chrome/model";
|
|
11
|
+
import { deriveAgeGateStorageKey, isSafeAgeGateHref, resolveAgeGateCopy } from "@/lib/content/chrome/model";
|
|
12
12
|
|
|
13
13
|
export interface Props {
|
|
14
14
|
minAge: number;
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
writeStoredRef,
|
|
36
36
|
type PreflightResponse,
|
|
37
37
|
type VerificationPhase,
|
|
38
|
-
} from "
|
|
38
|
+
} from "../../../../lib/compliance/browser/checkoutVerificationFlow.js";
|
|
39
39
|
|
|
40
40
|
interface Props {
|
|
41
41
|
/** Absolute (base-path-aware) URL of the preflight endpoint. */
|
package/apps/storefront/src/components/{islands → compliance/storefront/islands}/IsolatedAgeGate.tsx
RENAMED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { render } from "preact";
|
|
19
19
|
import { useEffect } from "preact/hooks";
|
|
20
|
-
import type { ChromeAgeGate } from "@/lib/chrome/model";
|
|
20
|
+
import type { ChromeAgeGate } from "@/lib/content/chrome/model";
|
|
21
21
|
import AgeGate from "./AgeGate";
|
|
22
22
|
|
|
23
23
|
export interface Props {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
/**
|
|
3
3
|
* <AsyncStylesheet> — loads a non-critical stylesheet without blocking render,
|
|
4
|
-
* and without FOUC, under the storefront's strict CSP (see lib/asyncCss.ts for
|
|
4
|
+
* and without FOUC, under the storefront's strict CSP (see lib/content/shared/asyncCss.ts for
|
|
5
5
|
* why this can't be the usual `onload="this.rel='stylesheet'"` attribute
|
|
6
6
|
* trick). Use for CSS a page doesn't need for first paint — e.g. a below-fold
|
|
7
7
|
* section, an optional widget, a print stylesheet's screen equivalent. Do NOT
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* such link to `rel="stylesheet"` after it's fetched) plus a `<noscript>`
|
|
14
14
|
* fallback so the styles still apply with JS disabled.
|
|
15
15
|
*/
|
|
16
|
-
import { ASYNC_CSS_ATTR } from "@/lib/asyncCss";
|
|
16
|
+
import { ASYNC_CSS_ATTR } from "@/lib/content/shared/asyncCss";
|
|
17
17
|
|
|
18
18
|
interface Props {
|
|
19
19
|
href: string;
|
package/apps/storefront/src/components/{Breadcrumbs.astro → content/storefront/Breadcrumbs.astro}
RENAMED
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
* failing even 2.5.8's 24px floor on every page that renders a trail. The extra height centres
|
|
11
11
|
* around the text, so the crumb does not move.
|
|
12
12
|
*
|
|
13
|
-
* Build `crumbs` with `siteTrail` (lib/breadcrumbs.ts) and pass the SAME array to `breadcrumbLd`.
|
|
13
|
+
* Build `crumbs` with `siteTrail` (lib/content/shared/breadcrumbs.ts) and pass the SAME array to `breadcrumbLd`.
|
|
14
14
|
* `class` adds a hook for the page's own styles (`breadcrumbs` on the blog templates).
|
|
15
15
|
*/
|
|
16
16
|
import { withBase } from "@/lib/basePath";
|
|
17
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
18
|
-
import type { Crumb } from "@/lib/breadcrumbs";
|
|
17
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
18
|
+
import type { Crumb } from "@/lib/content/shared/breadcrumbs";
|
|
19
19
|
|
|
20
20
|
interface Props {
|
|
21
21
|
crumbs: Crumb[];
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* <Seo> — per-page title/meta, Open Graph, Twitter card, canonical, JSON-LD.
|
|
4
4
|
* (brief §8). Tenant-aware: OG image + site name come from the resolved tenant.
|
|
5
5
|
*/
|
|
6
|
-
import { articleSeoMetaTags, resolveOgImage, type ArticleMeta } from "@/lib/seo/meta.js";
|
|
7
|
-
import { withXDefault, type Alternate } from "@/lib/seo/alternates.js";
|
|
8
|
-
import { safeJsonScriptContent } from "@/lib/jsonScript";
|
|
9
|
-
import { documentTitle } from "@/lib/seo/documentTitle";
|
|
10
|
-
import { canonicalUrl } from "@/lib/seo/urlForm";
|
|
6
|
+
import { articleSeoMetaTags, resolveOgImage, type ArticleMeta } from "@/lib/content/seo/meta.js";
|
|
7
|
+
import { withXDefault, type Alternate } from "@/lib/content/seo/alternates.js";
|
|
8
|
+
import { safeJsonScriptContent } from "@/lib/content/shared/jsonScript";
|
|
9
|
+
import { documentTitle } from "@/lib/content/seo/documentTitle";
|
|
10
|
+
import { canonicalUrl } from "@/lib/content/seo/urlForm";
|
|
11
11
|
|
|
12
12
|
interface JsonLd {
|
|
13
13
|
[key: string]: unknown;
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
// component so the hero/grid/pagination markup, and the tenant-copy + pagination
|
|
5
5
|
// contract it implements, can't drift between the two routes (fb-1791301493691-brzl6f).
|
|
6
6
|
import Layout from "@/layouts/Layout.astro";
|
|
7
|
-
import PostAccessBadge from "@/components/blog/PostAccessBadge.astro";
|
|
8
|
-
import type { BlogPostSummary } from "@/lib/blog/types.js";
|
|
9
|
-
import type { BlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
10
|
-
import type { BlogPresentation } from "@/lib/blog/presentation.js";
|
|
11
|
-
import { categorySlug } from "@/lib/blog/collection.js";
|
|
12
|
-
import { collectionPathsV1 } from "@/lib/blog/collectionPaths.js";
|
|
7
|
+
import PostAccessBadge from "@/components/content/storefront/blog/PostAccessBadge.astro";
|
|
8
|
+
import type { BlogPostSummary } from "@/lib/content/blog/types.js";
|
|
9
|
+
import type { BlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
10
|
+
import type { BlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
11
|
+
import { categorySlug } from "@/lib/content/blog/collection.js";
|
|
12
|
+
import { collectionPathsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
13
13
|
|
|
14
14
|
interface Props {
|
|
15
15
|
basePath: string;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// badge + headline + one line of value + a single CTA — restyled with the site's
|
|
5
5
|
// design tokens so it reads as native article chrome, and preceded by a fade that
|
|
6
6
|
// dissolves the truncated body into the card.
|
|
7
|
-
import type { BlogAccess } from "@/lib/blog/types.js";
|
|
7
|
+
import type { BlogAccess } from "@/lib/content/blog/types.js";
|
|
8
8
|
|
|
9
9
|
interface Props {
|
|
10
10
|
access: BlogAccess;
|
package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPostArticle.astro
RENAMED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
* the request.
|
|
9
9
|
*/
|
|
10
10
|
import Layout from "@/layouts/Layout.astro";
|
|
11
|
-
import { sourceSeoTitle } from "@/lib/seo/documentTitle";
|
|
12
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
13
|
-
import BlogPaywall from "@/components/blog/BlogPaywall.astro";
|
|
14
|
-
import ReactionBar from "@/components/blog/ReactionBar.astro";
|
|
15
|
-
import ShareRow from "@/components/blog/ShareRow.astro";
|
|
16
|
-
import { languageLabel } from "@/lib/i18n.js";
|
|
17
|
-
import type { BlogPostViewPropsV1 } from "@/lib/blog/postView.js";
|
|
11
|
+
import { sourceSeoTitle } from "@/lib/content/seo/documentTitle";
|
|
12
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
13
|
+
import BlogPaywall from "@/components/content/storefront/blog/BlogPaywall.astro";
|
|
14
|
+
import ReactionBar from "@/components/content/storefront/blog/ReactionBar.astro";
|
|
15
|
+
import ShareRow from "@/components/content/storefront/blog/ShareRow.astro";
|
|
16
|
+
import { languageLabel } from "@/lib/content/shared/i18n.js";
|
|
17
|
+
import type { BlogPostViewPropsV1 } from "@/lib/content/blog/postView.js";
|
|
18
18
|
|
|
19
19
|
type Props = BlogPostViewPropsV1;
|
|
20
20
|
|
package/apps/storefront/src/components/{blog → content/storefront/blog}/PostAccessBadge.astro
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// `post.access` and renders nothing for public posts. No gating logic lives
|
|
4
4
|
// here — entitlement is decided in the route via `viewerHasBlogAccess`; this
|
|
5
5
|
// is purely a "this story is members-only" indicator on listings and archives.
|
|
6
|
-
import type { BlogAccess } from "@/lib/blog/types.js";
|
|
6
|
+
import type { BlogAccess } from "@/lib/content/blog/types.js";
|
|
7
7
|
|
|
8
8
|
interface Props {
|
|
9
9
|
access?: BlogAccess;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// Reader-facing card grid for a list of blog posts, shared by the collection's
|
|
3
3
|
// category and tag index pages. `paths` are the collection's URLs for the space that serves
|
|
4
4
|
// the page (collectionPathsV1); `basePath` is the tenant/preview path prefix from Astro.locals.
|
|
5
|
-
import type { BlogPostSummary } from "@/lib/blog/types.js";
|
|
6
|
-
import type { CollectionPathsV1 } from "@/lib/blog/collectionPaths.js";
|
|
7
|
-
import PostAccessBadge from "@/components/blog/PostAccessBadge.astro";
|
|
5
|
+
import type { BlogPostSummary } from "@/lib/content/blog/types.js";
|
|
6
|
+
import type { CollectionPathsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
7
|
+
import PostAccessBadge from "@/components/content/storefront/blog/PostAccessBadge.astro";
|
|
8
8
|
|
|
9
9
|
interface Props {
|
|
10
10
|
posts: BlogPostSummary[];
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* moderation — an emoji tally, the first reader-sentiment signal (complements
|
|
9
9
|
* view counts). Tenant/collection-generic: mounts on any post route.
|
|
10
10
|
*/
|
|
11
|
-
import { getReactionCounts, REACTIONS, type Reaction } from "@/lib/blog/reactions.js";
|
|
11
|
+
import { getReactionCounts, REACTIONS, type Reaction } from "@/lib/content/blog/reactions.js";
|
|
12
12
|
import { readKv } from "@/lib/runtimeEnv";
|
|
13
13
|
import { withBase } from "@/lib/basePath";
|
|
14
14
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* works under the strict CSP (no inline handler, no `javascript:` URL) on every serving plane.
|
|
6
6
|
* Each item carries `share-row__item--<target>` so tenant CSS can give it the source theme's icon.
|
|
7
7
|
*/
|
|
8
|
-
import type { ShareLink } from "@/lib/blog/presentation.js";
|
|
8
|
+
import type { ShareLink } from "@/lib/content/blog/presentation.js";
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
11
|
links: ShareLink[];
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
* Used by <SiteHeader> for the desktop nav, and registerable standalone in the
|
|
8
8
|
* style guide.
|
|
9
9
|
*/
|
|
10
|
-
import type { ChromeNavItem } from "@/lib/chrome/model";
|
|
11
|
-
import NavDropdown from "@/components/chrome/NavDropdown.astro";
|
|
12
|
-
import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
|
|
10
|
+
import type { ChromeNavItem } from "@/lib/content/chrome/model";
|
|
11
|
+
import NavDropdown from "@/components/content/storefront/chrome/NavDropdown.astro";
|
|
12
|
+
import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
|
|
13
13
|
|
|
14
14
|
interface Props {
|
|
15
15
|
items: ChromeNavItem[];
|
package/apps/storefront/src/components/{chrome → content/storefront/chrome}/NavDropdown.astro
RENAMED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
* With an optional caret, a "NEW"-style badge, and a highlighted `flag` variant.
|
|
16
16
|
* Tenant-agnostic; theme-token skinned.
|
|
17
17
|
*/
|
|
18
|
-
import type { ChromeNavItem, ChromeLink } from "@/lib/chrome/model";
|
|
18
|
+
import type { ChromeNavItem, ChromeLink } from "@/lib/content/chrome/model";
|
|
19
19
|
import { withBase } from "@/lib/basePath";
|
|
20
|
-
import { isCurrentNavHref } from "@/lib/chrome/navCurrent";
|
|
20
|
+
import { isCurrentNavHref } from "@/lib/content/chrome/navCurrent";
|
|
21
21
|
import { trackingAttributes } from "@tot/public-runtime";
|
|
22
22
|
|
|
23
23
|
interface Props {
|
package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteFooter.astro
RENAMED
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
* The newsletter is a plain POST form (progressive); it does not embed any cart
|
|
8
8
|
* or checkout logic (commerce boundary).
|
|
9
9
|
*/
|
|
10
|
-
import type { ChromeLink, FooterColumn, FooterNewsletter, SocialLink, ChromeLogo, FooterVariant } from "@/lib/chrome/model";
|
|
10
|
+
import type { ChromeLink, FooterColumn, FooterNewsletter, SocialLink, ChromeLogo, FooterVariant } from "@/lib/content/chrome/model";
|
|
11
11
|
import { withBase } from "@/lib/basePath";
|
|
12
|
-
import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
|
|
13
|
-
import { resolveNewsletterAgeAttestation } from "@/lib/chrome/newsletterAgeAttestation";
|
|
12
|
+
import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
|
|
13
|
+
import { resolveNewsletterAgeAttestation } from "@/lib/content/chrome/newsletterAgeAttestation";
|
|
14
14
|
import { trackingAttributes } from "@tot/public-runtime";
|
|
15
15
|
|
|
16
16
|
interface Props {
|
|
17
17
|
columns: FooterColumn[];
|
|
18
18
|
brand?: { logo?: ChromeLogo; wordmark?: string; contact?: string[] };
|
|
19
|
-
/** Content-shape variant (lib/chrome/model.ts FooterVariant). */
|
|
19
|
+
/** Content-shape variant (lib/content/chrome/model.ts FooterVariant). */
|
|
20
20
|
variant?: FooterVariant;
|
|
21
21
|
newsletter?: FooterNewsletter;
|
|
22
22
|
/** Payment method labels rendered as chips (e.g. "Visa", "PayPal"). */
|
|
@@ -30,7 +30,7 @@ interface Props {
|
|
|
30
30
|
legal?: string;
|
|
31
31
|
/** Bottom-bar policy links (e.g. Privacy Policy, Terms), shown alongside `legal`.
|
|
32
32
|
* The links of a `Legal`-titled footer column, which the caller MOVES out of
|
|
33
|
-
* `columns` (lib/chrome/footerLegal.ts) — passing them in both places would
|
|
33
|
+
* `columns` (lib/content/chrome/footerLegal.ts) — passing them in both places would
|
|
34
34
|
* render each one twice. */
|
|
35
35
|
bottomLinks?: ChromeLink[];
|
|
36
36
|
class?: string;
|
package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteHeader.astro
RENAMED
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
* COMMERCE BOUNDARY: the cart is a LINK only — no cart state, no add-to-cart.
|
|
14
14
|
* The count is a static affordance the managed cart can hydrate later.
|
|
15
15
|
*/
|
|
16
|
-
import type { ChromeNavItem, ChromeLogo, ChromeCta, HeaderVariant } from "@/lib/chrome/model";
|
|
17
|
-
import MegaMenu from "@/components/chrome/MegaMenu.astro";
|
|
18
|
-
import NavDropdown from "@/components/chrome/NavDropdown.astro";
|
|
19
|
-
import SearchTypeahead from "@/components/islands/SearchTypeahead.tsx";
|
|
20
|
-
import MobileNav from "@/components/islands/MobileNav.tsx";
|
|
16
|
+
import type { ChromeNavItem, ChromeLogo, ChromeCta, HeaderVariant } from "@/lib/content/chrome/model";
|
|
17
|
+
import MegaMenu from "@/components/content/storefront/chrome/MegaMenu.astro";
|
|
18
|
+
import NavDropdown from "@/components/content/storefront/chrome/NavDropdown.astro";
|
|
19
|
+
import SearchTypeahead from "@/components/catalog/storefront/islands/SearchTypeahead.tsx";
|
|
20
|
+
import MobileNav from "@/components/content/storefront/islands/MobileNav.tsx";
|
|
21
21
|
import { withBase } from "@/lib/basePath";
|
|
22
|
-
import { ctaIdentityAttr } from "@/lib/chrome/ctaIdentity";
|
|
23
|
-
import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
|
|
22
|
+
import { ctaIdentityAttr } from "@/lib/content/chrome/ctaIdentity";
|
|
23
|
+
import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
|
|
24
24
|
import { trackingAttributes } from "@tot/public-runtime";
|
|
25
25
|
|
|
26
26
|
interface Props {
|
|
@@ -28,7 +28,7 @@ interface Props {
|
|
|
28
28
|
/** Fallback wordmark text when no logo image. */
|
|
29
29
|
wordmark?: string;
|
|
30
30
|
/**
|
|
31
|
-
* Home/brand link target (lib/chrome/model.ts ChromeBrand.href). Run through
|
|
31
|
+
* Home/brand link target (lib/content/chrome/model.ts ChromeBrand.href). Run through
|
|
32
32
|
* `withBase` same as every other same-origin href. Omit to default to "/".
|
|
33
33
|
*/
|
|
34
34
|
brandHref?: string;
|
|
@@ -55,7 +55,7 @@ interface Props {
|
|
|
55
55
|
/** A brand-fixed "dark" header bar (e.g. a navy bar with a light logo) vs. the default light bar. */
|
|
56
56
|
variant?: "light" | "dark";
|
|
57
57
|
/**
|
|
58
|
-
* Content-shape variant (lib/chrome/model.ts HeaderVariant) — independent of
|
|
58
|
+
* Content-shape variant (lib/content/chrome/model.ts HeaderVariant) — independent of
|
|
59
59
|
* `variant`'s light/dark TONE above. "minimal" (e.g. checkout/policy pages)
|
|
60
60
|
* renders brand + a reduced action set only: no search, no marketing CTAs,
|
|
61
61
|
* no saved-items affordance, no primary-nav bar, no mobile-menu toggle.
|
package/apps/storefront/src/components/{chrome → content/storefront/chrome}/UtilityNav.astro
RENAMED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* agnostic; theme-token skinned. Hidden on small screens (it's a desktop
|
|
6
6
|
* convenience — the mobile menu carries these links).
|
|
7
7
|
*/
|
|
8
|
-
import type { ChromeLink, SocialLink } from "@/lib/chrome/model";
|
|
8
|
+
import type { ChromeLink, SocialLink } from "@/lib/content/chrome/model";
|
|
9
9
|
import { withBase } from "@/lib/basePath";
|
|
10
|
-
import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
|
|
10
|
+
import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
|
|
11
11
|
import { trackingAttributes } from "@tot/public-runtime";
|
|
12
12
|
|
|
13
13
|
interface Props {
|
package/apps/storefront/src/components/content/{Callout.astro → storefront/content/Callout.astro}
RENAMED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import type { CalloutModel, CalloutTone } from "@/lib/content/callout";
|
|
18
18
|
import { calloutPresentation } from "@/lib/content/callout";
|
|
19
|
-
import RichText from "@/components/content/RichText.astro";
|
|
19
|
+
import RichText from "@/components/content/storefront/content/RichText.astro";
|
|
20
20
|
|
|
21
21
|
interface Props {
|
|
22
22
|
callout: CalloutModel;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
/** Static, provider-neutral commerce promo presentations. */
|
|
3
|
-
import Section from "@/components/Section.astro";
|
|
4
|
-
import type { PromoTilesBlock } from "@/lib/storyblok/content-model";
|
|
5
|
-
import { promoTilesView } from "@/lib/homeVisualParity";
|
|
3
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
4
|
+
import type { PromoTilesBlock } from "@/lib/content/storyblok/content-model";
|
|
5
|
+
import { promoTilesView } from "@/lib/content/shared/homeVisualParity";
|
|
6
6
|
|
|
7
7
|
interface Props {
|
|
8
8
|
block: PromoTilesBlock;
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { ProseSection } from "@/lib/content/prose";
|
|
16
16
|
import { normalizeProse, withHeadingIds } from "@/lib/content/prose";
|
|
17
|
-
import RichText from "@/components/content/RichText.astro";
|
|
18
|
-
import Callout from "@/components/content/Callout.astro";
|
|
19
|
-
import NeedsReviewCallout from "@/components/content/NeedsReviewCallout.astro";
|
|
17
|
+
import RichText from "@/components/content/storefront/content/RichText.astro";
|
|
18
|
+
import Callout from "@/components/content/storefront/content/Callout.astro";
|
|
19
|
+
import NeedsReviewCallout from "@/components/content/storefront/content/NeedsReviewCallout.astro";
|
|
20
20
|
|
|
21
21
|
interface Props {
|
|
22
22
|
sections: ProseSection[];
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
* The eyebrow (`.hero__eyebrow`) reads `--color-hero-eyebrow` first, so a theme
|
|
20
20
|
* recolours it with `color.hero-eyebrow` and tenant CSS can target the hook class.
|
|
21
21
|
*/
|
|
22
|
-
import type { HeroBlock } from "@/lib/storyblok/content-model";
|
|
22
|
+
import type { HeroBlock } from "@/lib/content/storyblok/content-model";
|
|
23
23
|
import type { CatalogProduct } from "@tot/public-runtime";
|
|
24
24
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
25
25
|
import { withBase } from "@/lib/basePath";
|
|
26
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
27
|
-
import { heroSlideshowView } from "@/lib/heroSlideshow";
|
|
26
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
27
|
+
import { heroSlideshowView } from "@/lib/content/shared/heroSlideshow";
|
|
28
28
|
|
|
29
29
|
interface Props {
|
|
30
30
|
block: HeroBlock;
|
|
@@ -306,7 +306,7 @@ const notice = block.notice?.trim();
|
|
|
306
306
|
</style>
|
|
307
307
|
|
|
308
308
|
<script>
|
|
309
|
-
import { heroAutoplayAllowed, nextHeroSlideIndex } from "@/lib/heroSlideshow";
|
|
309
|
+
import { heroAutoplayAllowed, nextHeroSlideIndex } from "@/lib/content/shared/heroSlideshow";
|
|
310
310
|
|
|
311
311
|
const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
312
312
|
|