@tokenoftrust/storefront-runner 2.4.87 → 2.4.89
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/astro.config.mjs +1 -1
- package/apps/storefront/dev-plugins/tenant-hot-reload.mjs +1 -1
- package/apps/storefront/env.d.ts +1 -1
- package/apps/storefront/perf/README.md +7 -7
- package/apps/storefront/perf/assert-budgets.ts +2 -2
- 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/catalog/storefront/CollectionCard.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/ProductCard.astro +4 -4
- package/apps/storefront/src/components/catalog/storefront/commerce/BrandGrid.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/commerce/PriceDisplay.astro +2 -2
- package/apps/storefront/src/components/catalog/storefront/commerce/ProductCarousel.astro +2 -2
- package/apps/storefront/src/components/catalog/storefront/commerce/ProductGrid.astro +3 -3
- package/apps/storefront/src/components/catalog/storefront/commerce/ReviewList.astro +1 -1
- package/apps/storefront/src/components/catalog/storefront/islands/ImageGallery.tsx +1 -1
- package/apps/storefront/src/components/catalog/storefront/islands/QuickView.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/RecentlyViewed.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/SearchTypeahead.tsx +2 -2
- package/apps/storefront/src/components/catalog/storefront/islands/VariantSelector.tsx +1 -1
- package/apps/storefront/src/components/compliance/storefront/islands/AgeGate.tsx +2 -2
- package/apps/storefront/src/components/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 +2 -2
- 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 +8 -8
- 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/config/adminTargetTenant.ts +1 -1
- package/apps/storefront/src/config/devTenants.ts +1 -1
- package/apps/storefront/src/config/resolver.ts +1 -1
- package/apps/storefront/src/layouts/Layout.astro +28 -28
- package/apps/storefront/src/lib/{admin → access/admin}/README.md +3 -3
- package/apps/storefront/src/lib/{admin → access/admin}/adminShell.ts +1 -1
- package/apps/storefront/src/lib/{admin → access/admin}/envelope.ts +2 -2
- package/apps/storefront/src/lib/{admin → access/admin}/viewmodels/settings.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminApiGuard.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminEntry.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/adminLanding.ts +1 -1
- package/apps/storefront/src/lib/{auth → access/auth}/identityToken.ts +1 -1
- package/apps/storefront/src/lib/{auth → access/auth}/loginGate.ts +2 -2
- package/apps/storefront/src/lib/{auth → access/auth}/totAccessClient.ts +4 -4
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/delegateGate.ts +2 -2
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffAdmission.ts +1 -1
- package/apps/storefront/src/lib/{dashboard → access/dashboard}/tenantSelection.ts +1 -1
- package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/settings.ts +4 -4
- package/apps/storefront/src/lib/{email → access/notifications}/magicLinkInviteEmail.ts +1 -1
- package/apps/storefront/src/lib/{shared → access/shared}/accessExplain.ts +1 -1
- package/apps/storefront/src/lib/{adminTenantEnvelope.ts → access/shared/adminTenantEnvelope.ts} +3 -3
- package/apps/storefront/src/lib/{shared → access/shared}/developerInvites.ts +4 -4
- package/apps/storefront/src/lib/{shared → access/shared}/invitePreflight.ts +1 -1
- package/apps/storefront/src/lib/{shared → access/shared}/principalGrants.ts +2 -2
- package/apps/storefront/src/lib/{shared → access/shared}/viewerGrant.ts +1 -1
- package/apps/storefront/src/lib/activity/fixtures/evidence.ts +2 -2
- package/apps/storefront/src/lib/activity/uiActor.ts +4 -4
- package/apps/storefront/src/lib/activity/workerCommit.ts +1 -1
- package/apps/storefront/src/lib/admin/services/mock/index.ts +4 -4
- package/apps/storefront/src/lib/assets/shared/imageAttrs.ts +1 -1
- package/apps/storefront/src/lib/{admin → automation/admin}/viewmodels/aiWorkflows.ts +3 -3
- package/apps/storefront/src/lib/{admin → automation}/ai/askEnvelope.ts +1 -1
- package/apps/storefront/src/lib/{admin → automation}/ai/operationalRuns.ts +4 -4
- package/apps/storefront/src/lib/{admin/services/mock → automation/fixtures}/aiWorkflows.ts +4 -4
- package/apps/storefront/src/lib/basePath.ts +2 -2
- package/apps/storefront/src/lib/catalog/fixtures/products.ts +4 -4
- package/apps/storefront/src/lib/catalog/shared/featuredProductsPresentation.ts +1 -1
- package/apps/storefront/src/lib/catalog/tot/tenantCatalog.ts +1 -1
- package/apps/storefront/src/lib/checkout/admin/checkoutStyleTarget.ts +2 -2
- package/apps/storefront/src/lib/checkout/fixtures/checkoutSettings.ts +1 -1
- package/apps/storefront/src/lib/compliance/browser/checkoutVerificationFlow.ts +1 -1
- package/apps/storefront/src/lib/compliance/verification/totVerificationClient.ts +1 -1
- package/apps/storefront/src/lib/{blog → content/blog}/access.ts +1 -1
- package/apps/storefront/src/lib/{blog → content/blog}/collection.ts +9 -9
- package/apps/storefront/src/lib/{blog → content/blog}/postView.ts +5 -5
- 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/{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} +12 -12
- package/apps/storefront/src/lib/{rawMarketingHtml.ts → content/shared/rawMarketingHtml.ts} +3 -3
- 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 +27 -27
- 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/customers/fixtures/customers.ts +3 -3
- package/apps/storefront/src/lib/d1/schema-apps.ts +2 -2
- package/apps/storefront/src/lib/{admin → developer-experience/admin}/memoizeByEnvelope.ts +1 -1
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityIngestToken.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/cliSignInCode.ts +3 -3
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/livePreview.ts +1 -1
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/previewStatus.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/rendezvousBroker.ts +2 -2
- package/apps/storefront/src/lib/{dev → developer-experience/dev}/subjectReissue.ts +2 -2
- package/apps/storefront/src/lib/email/candidateConflictEmail.ts +1 -1
- package/apps/storefront/src/lib/{messaging → engagement/messaging}/messagesClient.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/fulfillment/fulfillmentService.ts +3 -3
- package/apps/storefront/src/lib/integrations/integration/browserEnvironment.ts +1 -1
- 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 → observability/monitoring}/manifest.ts +2 -2
- package/apps/storefront/src/lib/{analytics → observability/performance}/budgets.json +1 -1
- package/apps/storefront/src/lib/orders/fixtures/orders.ts +4 -4
- 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/reporting/fixtures/reporting.ts +3 -3
- package/apps/storefront/src/lib/runtimeEnv.ts +1 -1
- package/apps/storefront/src/lib/subscriptions/fixtures/subscriptions.ts +3 -3
- package/apps/storefront/src/middleware/controlPlane.ts +7 -7
- package/apps/storefront/src/middleware/index.ts +11 -11
- package/apps/storefront/src/middleware/renderChain.ts +6 -6
- package/apps/storefront/src/pages/[...slug].astro +13 -13
- package/apps/storefront/src/pages/api/admin/activity-alerts.ts +1 -1
- package/apps/storefront/src/pages/api/admin/commerce-readiness.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/batches.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id]/address.ts +1 -1
- package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id].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 +1 -1
- package/apps/storefront/src/pages/api/admin/orders.ts +1 -1
- package/apps/storefront/src/pages/api/auth/logout.ts +2 -2
- package/apps/storefront/src/pages/api/auth/magic-exchange.ts +6 -6
- package/apps/storefront/src/pages/api/auth/send.ts +2 -2
- package/apps/storefront/src/pages/api/auth/step-up-send.ts +1 -1
- package/apps/storefront/src/pages/api/auth/step-up-verify.ts +3 -3
- package/apps/storefront/src/pages/api/auth/verify.ts +4 -4
- package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +2 -2
- package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +4 -4
- package/apps/storefront/src/pages/api/newsletter/confirm.ts +1 -1
- package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +1 -1
- package/apps/storefront/src/pages/api/rum/vitals.ts +2 -2
- package/apps/storefront/src/pages/api/tracking/interaction.ts +5 -5
- package/apps/storefront/src/pages/auth/login.astro +2 -2
- package/apps/storefront/src/pages/auth/magic.astro +1 -1
- 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 +7 -7
- package/apps/storefront/src/pages/collections/index.astro +4 -4
- package/apps/storefront/src/pages/index.astro +10 -10
- package/apps/storefront/src/pages/llms.txt.ts +2 -2
- package/apps/storefront/src/pages/products/[handle].astro +11 -11
- package/apps/storefront/src/pages/saved.astro +2 -2
- package/apps/storefront/src/pages/search.astro +5 -5
- package/apps/storefront/src/pages/sitemap.xml.ts +8 -8
- package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +24 -24
- 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 +36 -36
- package/package.json +1 -1
- package/packages/public-runtime/src/chrome.ts +4 -4
- package/packages/public-runtime/src/tracking-id-derivation.ts +1 -1
- package/scripts/dev/locate.mjs +1 -1
- package/apps/storefront/src/lib/admin/ai/index.ts +0 -6
- /package/apps/storefront/src/components/{auth → access/storefront/auth}/AuthBadge.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/{auth → access/auth}/brokerAssertion.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/devAuth.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/gatePage.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/internalContentAuthority.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/mcpClientAssertion.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/operatorSession.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/route.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/session.ts +0 -0
- /package/apps/storefront/src/lib/{auth → access/auth}/stepUpChallenge.ts +0 -0
- /package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffVendorAccess.ts +0 -0
- /package/apps/storefront/src/lib/{dashboard → access/dashboard}/vendorQuery.ts +0 -0
- /package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/tenants.ts +0 -0
- /package/apps/storefront/src/lib/{privacy → access/privacy}/emailHint.ts +0 -0
- /package/apps/storefront/src/lib/{rate → access/rate}/kvWindow.ts +0 -0
- /package/apps/storefront/src/lib/{shared → access/shared}/capability.ts +0 -0
- /package/apps/storefront/src/lib/{cspStaticHashes.ts → access/shared/cspStaticHashes.ts} +0 -0
- /package/apps/storefront/src/lib/{demoGate.ts → access/shared/demoGate.ts} +0 -0
- /package/apps/storefront/src/lib/{maintenance.ts → access/shared/maintenance.ts} +0 -0
- /package/apps/storefront/src/lib/{securityHeaders.ts → access/shared/securityHeaders.ts} +0 -0
- /package/apps/storefront/src/lib/{tenantOrigins.ts → access/shared/tenantOrigins.ts} +0 -0
- /package/apps/storefront/src/lib/{tenantRouting.ts → access/shared/tenantRouting.ts} +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/approvalMode.ts +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/audit.ts +0 -0
- /package/apps/storefront/src/lib/{admin → automation}/ai/recommendation.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/{sections.ts → content/shared/sections.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/{admin → developer-experience/admin}/seed.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/ai-widget-client.js +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/apiBase.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/ask.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/clickToSource.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/copyCommand.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/files.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/hostedActivity.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/infoPopover.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/mcpCopy.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/monitor.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/stepper.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/themeToggle.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/devDraft.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/obstacleStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/runtimeStore.ts +0 -0
- /package/apps/storefront/src/lib/{dev → developer-experience/dev}/storeStatus.ts +0 -0
- /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/regulated-commerce-truth/index.ts +0 -0
- /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/ws3-readonly-clone-preflight/index.ts +0 -0
- /package/apps/storefront/src/lib/{http → developer-experience/http}/fetchTransport.ts +0 -0
- /package/apps/storefront/src/lib/{http → developer-experience/http}/mcpServiceCall.ts +0 -0
- /package/apps/storefront/src/lib/{memoryKv.ts → developer-experience/shared/memoryKv.ts} +0 -0
- /package/apps/storefront/src/lib/{cloudflare-workers.d.ts → developer-experience/types/cloudflare-workers.d.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/{apps/orders → measurement/attribution}/attributionService.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/orderConversionD1.ts +0 -0
- /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/verifiedProviderMeasurement.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/{diag → observability/diag}/capture.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/consoleLine.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugConsole.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugMode.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/debugWindow.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/redact.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/reference.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/referenceStore.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/report.ts +0 -0
- /package/apps/storefront/src/lib/{diag → observability/diag}/session.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/lighthouseReport.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/perfBudgets.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/rumAlert.ts +0 -0
- /package/apps/storefront/src/lib/{analytics → observability/performance}/webVitals.ts +0 -0
- /package/apps/storefront/src/lib/{health.ts → observability/shared/health.ts} +0 -0
|
@@ -31,7 +31,7 @@ const cliVersion = (() => {
|
|
|
31
31
|
const cliInstallSpec = cliVersion ? `@tokenoftrust/cli@${cliVersion}` : "@tokenoftrust/cli";
|
|
32
32
|
|
|
33
33
|
// The commit THIS build was cut from, baked in at BUILD time so /health can report
|
|
34
|
-
// exactly which code is live (see src/lib/health.ts + src/middleware). Prefer a CI-
|
|
34
|
+
// exactly which code is live (see src/lib/observability/shared/health.ts + src/middleware). Prefer a CI-
|
|
35
35
|
// provided SHA (Workers Builds / GitHub Actions / CF Pages) so the value is right even
|
|
36
36
|
// when the build runs from a shallow/detached checkout; fall back to `git rev-parse`
|
|
37
37
|
// for local deploys. deploy.sh's source guard pins HEAD to origin/<deploySourceBranch>,
|
|
@@ -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
|
@@ -16,7 +16,7 @@ import type {
|
|
|
16
16
|
PublicationRoutePlanV1,
|
|
17
17
|
} from "@tot/public-runtime";
|
|
18
18
|
import type { ToTClient } from "@/lib/catalog/tot/ToTClient";
|
|
19
|
-
import type { ContentProvider } from "@/lib/storyblok/provider";
|
|
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,18 +3,18 @@
|
|
|
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
|
|
|
10
10
|
| File | Role |
|
|
11
11
|
|------|------|
|
|
12
|
-
| `../src/lib/
|
|
13
|
-
| `../src/lib/
|
|
14
|
-
| `../src/lib/
|
|
12
|
+
| `../src/lib/observability/performance/budgets.json` | **Source of truth.** Route budgets (LCP/INP/CLS p75 + JS/CSS/image/total KiB) + the third-party script allowlist. Edit here; everything derives from it. |
|
|
13
|
+
| `../src/lib/observability/performance/perfBudgets.ts` | Typed lens + **pure** budget-assertion logic (`evaluateManifest`) + the Lighthouse-budgets exporter (`toLighthouseBudgets`). Unit-tested in `perfBudgets.test.ts`. |
|
|
14
|
+
| `../src/lib/observability/performance/lighthouseReport.ts` | Pure adapter: a Lighthouse result (LHR JSON) → a `RouteMeasurement` the gate evaluates. Unit-tested in `lighthouseReport.test.ts`. |
|
|
15
15
|
| `assert-budgets.ts` | Thin CLI: reads measurements / LHRs, runs the gate, exits non-zero on a violation. |
|
|
16
|
-
| `../src/lib/
|
|
17
|
-
| `../src/lib/
|
|
16
|
+
| `../src/lib/observability/performance/webVitals.ts` | Field RUM beacon (LCP/INP/CLS from real visitors → the RUM sink). |
|
|
17
|
+
| `../src/lib/observability/performance/rumAlert.ts` | Pure sink-side regression-alert contract; feeds F16's `core-web-vitals` monitor. Unit-tested in `rumAlert.test.ts`. |
|
|
18
18
|
|
|
19
19
|
The budget numbers are enforced identically in three places, all reading the one
|
|
20
20
|
manifest: the lab gate here, a Lighthouse `--budget-path` run (via
|
|
@@ -56,7 +56,7 @@ silently drift.
|
|
|
56
56
|
|
|
57
57
|
## Field RUM
|
|
58
58
|
|
|
59
|
-
`startWebVitals()` (from `../src/lib/
|
|
59
|
+
`startWebVitals()` (from `../src/lib/observability/performance/webVitals.ts`) is called from the
|
|
60
60
|
client entry; it measures LCP/INP/CLS per real navigation, buckets each into the
|
|
61
61
|
same budgeted route id the lab gate uses, and beacons finished samples to the RUM
|
|
62
62
|
sink (`RUM_BEACON_PATH`). The sink rolls samples up per route/hour and calls
|
|
@@ -41,8 +41,8 @@ import {
|
|
|
41
41
|
ROUTE_IDS,
|
|
42
42
|
type RouteId,
|
|
43
43
|
type RouteMeasurement,
|
|
44
|
-
} from "../src/lib/
|
|
45
|
-
import { lhrToMeasurement, type LighthouseResult } from "../src/lib/
|
|
44
|
+
} from "../src/lib/observability/performance/perfBudgets.js";
|
|
45
|
+
import { lhrToMeasurement, type LighthouseResult } from "../src/lib/observability/performance/lighthouseReport.js";
|
|
46
46
|
|
|
47
47
|
function die(msg: string, code = 2): never {
|
|
48
48
|
process.stderr.write(`assert-budgets: ${msg}\n`);
|
|
@@ -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;
|
|
@@ -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";
|
|
10
|
+
import { discountPercent, truncate } from "@/lib/content/shared/format";
|
|
11
11
|
import { isOnSale, isNew, isAvailable, fromPrice } from "@/lib/catalog/tot/query";
|
|
12
|
-
import { colorOptionValues, resolveSwatch, isLightFill } from "@/lib/colors";
|
|
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";
|
|
14
|
+
import Badge from "@/components/content/storefront/Badge.astro";
|
|
15
15
|
import PriceDisplay from "@/components/catalog/storefront/commerce/PriceDisplay.astro";
|
|
16
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;
|
|
@@ -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
|
|
|
@@ -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";
|
|
13
|
+
import { formatPrice, discountPercent } from "@/lib/content/shared/format";
|
|
14
14
|
import { fromPrice, isOnSale } from "@/lib/catalog/tot/query";
|
|
15
|
-
import Badge from "@/components/Badge.astro";
|
|
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";
|
|
17
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
18
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;
|
|
@@ -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";
|
|
12
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
13
13
|
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
14
|
-
import EmptyState from "@/components/EmptyState.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;
|
|
@@ -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[];
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { useCallback, useEffect, useRef, useState } from "preact/hooks";
|
|
14
14
|
import type { TypeaheadDoc } from "@/lib/catalog/search/index";
|
|
15
|
-
import { formatPrice } from "@/lib/format";
|
|
16
|
-
import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
|
|
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 {
|
|
@@ -26,7 +26,7 @@ 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";
|
|
29
|
+
import { formatPrice } from "@/lib/content/shared/format";
|
|
30
30
|
import { useCheckoutHandoffCorrelation } from "@/lib/checkout/browser/useCheckoutHandoffCorrelation";
|
|
31
31
|
|
|
32
32
|
export type PublicSelectorVariant = Pick<CatalogVariant,
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
// Paywall card shown under the teaser of a gated post the viewer can't read in
|
|
3
|
-
// full. Mirrors the "Coming soon" host gate (`src/lib/auth/gatePage.ts`):
|
|
3
|
+
// full. Mirrors the "Coming soon" host gate (`src/lib/access/auth/gatePage.ts`):
|
|
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";
|
|
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
19
|
import SearchTypeahead from "@/components/catalog/storefront/islands/SearchTypeahead.tsx";
|
|
20
|
-
import MobileNav from "@/components/islands/MobileNav.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
|
|