@tokenoftrust/storefront-runner 2.4.87 → 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 +1 -1
- 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/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 +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 +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/layouts/Layout.astro +24 -24
- 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/catalog/shared/featuredProductsPresentation.ts +1 -1
- package/apps/storefront/src/lib/catalog/tot/tenantCatalog.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 +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/{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 +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/{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/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/middleware/controlPlane.ts +1 -1
- package/apps/storefront/src/middleware/renderChain.ts +1 -1
- package/apps/storefront/src/pages/[...slug].astro +13 -13
- package/apps/storefront/src/pages/api/admin/interaction-insights.ts +3 -3
- package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +1 -1
- package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +3 -3
- 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 +1 -1
- package/apps/storefront/src/pages/api/tracking/interaction.ts +5 -5
- 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/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/{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/{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/{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/{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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
import BlogPostArticle from "@/components/blog/BlogPostArticle.astro";
|
|
3
|
-
import { loadBlogPostViewV1 } from "@/lib/blog/postView.js";
|
|
2
|
+
import BlogPostArticle from "@/components/content/storefront/blog/BlogPostArticle.astro";
|
|
3
|
+
import { loadBlogPostViewV1 } from "@/lib/content/blog/postView.js";
|
|
4
4
|
|
|
5
5
|
// These redirects also exist in the published artifact: the publication composition lifts this
|
|
6
6
|
// file into the space's `routes.aliases`, which reach the CDN plane through the live pointer. The
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import Layout from "@/layouts/Layout.astro";
|
|
3
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
4
|
-
import PostAccessBadge from "@/components/blog/PostAccessBadge.astro";
|
|
5
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
6
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
7
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
8
|
-
import { authorSlug, getAuthors } from "@/lib/blog/collection.js";
|
|
9
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
10
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
3
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
4
|
+
import PostAccessBadge from "@/components/content/storefront/blog/PostAccessBadge.astro";
|
|
5
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
6
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
7
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
8
|
+
import { authorSlug, getAuthors } from "@/lib/content/blog/collection.js";
|
|
9
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
10
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
11
11
|
|
|
12
12
|
// Author archive for the `/blog` collection. Lists exactly the posts whose
|
|
13
13
|
// bylines link here (same source as /blog/index.astro + /blog/[slug].astro),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import Layout from "@/layouts/Layout.astro";
|
|
3
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
4
|
-
import PostGrid from "@/components/blog/PostGrid.astro";
|
|
5
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
6
|
-
import { collectPostsByTerm } from "@/lib/blog/collection.js";
|
|
7
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
8
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
9
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
10
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
3
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
4
|
+
import PostGrid from "@/components/content/storefront/blog/PostGrid.astro";
|
|
5
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
6
|
+
import { collectPostsByTerm } from "@/lib/content/blog/collection.js";
|
|
7
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
8
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
9
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
10
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
11
11
|
|
|
12
12
|
const { tenant, basePath, canonicalBase, content, publicationTimestamp } = Astro.locals;
|
|
13
13
|
const param = Astro.params.category ?? "";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
import BlogIndexView from "@/components/blog/BlogIndexView.astro";
|
|
3
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
4
|
-
import { paginateBlogPosts, resolveBlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
5
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
2
|
+
import BlogIndexView from "@/components/content/storefront/blog/BlogIndexView.astro";
|
|
3
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
4
|
+
import { paginateBlogPosts, resolveBlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
5
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
6
6
|
|
|
7
7
|
const { tenant, basePath, canonicalBase, content, publicationTimestamp } = Astro.locals;
|
|
8
8
|
const posts = await listBlogPosts(tenant.tenant_id, content, publicationTimestamp);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// /blog/page/<n>/ — page N≥2 of the blog index. Page 1 lives at /blog/
|
|
3
3
|
// (src/pages/blog/index.astro); both render through the same BlogIndexView so the
|
|
4
4
|
// tenant-copy + pagination contract can't drift between the two routes.
|
|
5
|
-
import BlogIndexView from "@/components/blog/BlogIndexView.astro";
|
|
6
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
7
|
-
import { paginateBlogPosts, parseBlogPageParam, resolveBlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
8
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
5
|
+
import BlogIndexView from "@/components/content/storefront/blog/BlogIndexView.astro";
|
|
6
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
7
|
+
import { paginateBlogPosts, parseBlogPageParam, resolveBlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
8
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
9
9
|
|
|
10
10
|
const page = parseBlogPageParam(Astro.params.n);
|
|
11
11
|
if (page === null) return new Response(null, { status: 404 });
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
import Layout from "@/layouts/Layout.astro";
|
|
3
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
4
|
-
import PostGrid from "@/components/blog/PostGrid.astro";
|
|
5
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
6
|
-
import { collectPostsByTerm } from "@/lib/blog/collection.js";
|
|
7
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
8
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
9
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
10
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
3
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
4
|
+
import PostGrid from "@/components/content/storefront/blog/PostGrid.astro";
|
|
5
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
6
|
+
import { collectPostsByTerm } from "@/lib/content/blog/collection.js";
|
|
7
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
8
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
9
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
10
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
11
11
|
|
|
12
12
|
const { tenant, basePath, canonicalBase, content, publicationTimestamp } = Astro.locals;
|
|
13
13
|
const param = Astro.params.tag ?? "";
|
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
* override later — documented seam).
|
|
7
7
|
*/
|
|
8
8
|
import Layout from "@/layouts/Layout.astro";
|
|
9
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
10
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
9
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
10
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
11
11
|
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
12
|
-
import EmptyState from "@/components/EmptyState.astro";
|
|
12
|
+
import EmptyState from "@/components/content/storefront/EmptyState.astro";
|
|
13
13
|
import FacetSidebar from "@/components/catalog/storefront/plp/FacetSidebar.astro";
|
|
14
14
|
import ActiveFilters from "@/components/catalog/storefront/plp/ActiveFilters.astro";
|
|
15
15
|
import SortSelect from "@/components/catalog/storefront/plp/SortSelect.astro";
|
|
16
16
|
import Pagination from "@/components/catalog/storefront/plp/Pagination.astro";
|
|
17
17
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
18
18
|
import { parseQuery, buildQueryString } from "@/lib/url";
|
|
19
|
-
import { breadcrumbLd, itemListLd } from "@/lib/jsonld";
|
|
20
|
-
import { truncate } from "@/lib/format";
|
|
21
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
22
|
-
import { sourceSeoTitle } from "@/lib/seo/documentTitle";
|
|
19
|
+
import { breadcrumbLd, itemListLd } from "@/lib/content/shared/jsonld";
|
|
20
|
+
import { truncate } from "@/lib/content/shared/format";
|
|
21
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
22
|
+
import { sourceSeoTitle } from "@/lib/content/seo/documentTitle";
|
|
23
23
|
import { withBase } from "@/lib/basePath";
|
|
24
24
|
import { isBlankDescriptionHtml, sanitizeDescriptionHtml } from "@/lib/content/sanitizeDescriptionHtml";
|
|
25
25
|
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* one per collection (product counts from the collection record's handles).
|
|
5
5
|
*/
|
|
6
6
|
import Layout from "@/layouts/Layout.astro";
|
|
7
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
8
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
7
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
8
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
9
9
|
import CollectionCard from "@/components/catalog/storefront/CollectionCard.astro";
|
|
10
|
-
import EmptyState from "@/components/EmptyState.astro";
|
|
11
|
-
import { breadcrumbLd } from "@/lib/jsonld";
|
|
10
|
+
import EmptyState from "@/components/content/storefront/EmptyState.astro";
|
|
11
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld";
|
|
12
12
|
import { activeMemberCount, nonEmptyCollections } from "@/lib/catalog/tot/query";
|
|
13
13
|
|
|
14
14
|
const { tenant, tot, canonicalBase } = Astro.locals;
|
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
* the template renders simple typed view-models.
|
|
8
8
|
*/
|
|
9
9
|
import Layout from "@/layouts/Layout.astro";
|
|
10
|
-
import Section from "@/components/Section.astro";
|
|
11
|
-
import Hero from "@/components/home/Hero.astro";
|
|
10
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
11
|
+
import Hero from "@/components/content/storefront/home/Hero.astro";
|
|
12
12
|
import ProductCarousel from "@/components/catalog/storefront/commerce/ProductCarousel.astro";
|
|
13
13
|
import ProductGrid from "@/components/catalog/storefront/commerce/ProductGrid.astro";
|
|
14
14
|
import CollectionCard from "@/components/catalog/storefront/CollectionCard.astro";
|
|
15
15
|
import Img from "@/components/assets/storefront/Img.astro";
|
|
16
|
-
import PromoTiles from "@/components/content/PromoTiles.astro";
|
|
17
|
-
import TrustStrip from "@/components/content/TrustStrip.astro";
|
|
18
|
-
import Faq from "@/components/marketing/Faq.astro";
|
|
19
|
-
import MarketingBlocks from "@/components/marketing/MarketingBlocks.astro";
|
|
16
|
+
import PromoTiles from "@/components/content/storefront/content/PromoTiles.astro";
|
|
17
|
+
import TrustStrip from "@/components/content/storefront/content/TrustStrip.astro";
|
|
18
|
+
import Faq from "@/components/content/storefront/marketing/Faq.astro";
|
|
19
|
+
import MarketingBlocks from "@/components/content/storefront/marketing/MarketingBlocks.astro";
|
|
20
20
|
import TierCards from "@/components/membership/storefront/membership/TierCards.astro";
|
|
21
21
|
import { withBase } from "@/lib/basePath";
|
|
22
|
-
import { rawHtmlPolicy, rawHtmlResponse } from "@/lib/rawMarketingHtml";
|
|
22
|
+
import { rawHtmlPolicy, rawHtmlResponse } from "@/lib/content/shared/rawMarketingHtml";
|
|
23
23
|
import { renderRawComplianceTop, renderRawComplianceBottom } from "@/lib/compliance/rawComplianceNotices";
|
|
24
24
|
import AppWidgetFrame from "@/components/integrations/storefront/apps/AppWidgetFrame.astro";
|
|
25
25
|
import { getRegistryService } from "@/lib/integrations/apps/registryAccess.js";
|
|
@@ -30,18 +30,18 @@ import {
|
|
|
30
30
|
type HeroBlock,
|
|
31
31
|
type MarketingBlock,
|
|
32
32
|
type FeaturedProductsBlock,
|
|
33
|
-
} from "@/lib/storyblok/content-model";
|
|
33
|
+
} from "@/lib/content/storyblok/content-model";
|
|
34
34
|
import type { Tier } from "@/lib/membership/model";
|
|
35
35
|
import {
|
|
36
36
|
normalizeProductSectionSource,
|
|
37
37
|
} from "@tot/public-runtime";
|
|
38
|
-
import { resolveSectionSource } from "@/lib/sections";
|
|
38
|
+
import { resolveSectionSource } from "@/lib/content/shared/sections";
|
|
39
39
|
import { featuredProductsPresentationView } from "@/lib/catalog/shared/featuredProductsPresentation";
|
|
40
40
|
import {
|
|
41
41
|
editorialMediaView,
|
|
42
42
|
resolveCommerceStaticBlock,
|
|
43
43
|
type CommerceStaticResolved,
|
|
44
|
-
} from "@/lib/homeVisualParity";
|
|
44
|
+
} from "@/lib/content/shared/homeVisualParity";
|
|
45
45
|
|
|
46
46
|
const { tenant, tot, content, basePath, apiBasePath, canonicalBase, features, capabilities } = Astro.locals;
|
|
47
47
|
const marketing = !features.catalog;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { APIContext } from "astro";
|
|
13
13
|
import { nonEmptyCollections } from "@/lib/catalog/tot/query.js";
|
|
14
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
14
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
15
15
|
import { compileRouteTierIndexV1 } from "@tot/public-runtime";
|
|
16
16
|
import { readKv } from "@/lib/runtimeEnv.js";
|
|
17
17
|
import {
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
readMountedPublicationDiscoveryV1,
|
|
21
21
|
rootOwnsDiscoveryPathV1,
|
|
22
22
|
} from "@/lib/publication/mountedDiscovery.js";
|
|
23
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
23
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
24
24
|
|
|
25
25
|
/** Collapse HTML/whitespace to a single trimmed line for a link description. */
|
|
26
26
|
function oneLine(s: string | undefined, max = 140): string | undefined {
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
* Product + BreadcrumbList JSON-LD.
|
|
7
7
|
*/
|
|
8
8
|
import Layout from "@/layouts/Layout.astro";
|
|
9
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
10
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
11
|
-
import Badge from "@/components/Badge.astro";
|
|
9
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
10
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
11
|
+
import Badge from "@/components/content/storefront/Badge.astro";
|
|
12
12
|
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
13
|
-
import Section from "@/components/Section.astro";
|
|
13
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
14
14
|
import ImageGallery from "@/components/catalog/storefront/islands/ImageGallery.tsx";
|
|
15
15
|
import VariantSelector, { publicSelectorVariants } from "@/components/catalog/storefront/islands/VariantSelector.tsx";
|
|
16
16
|
import CheckoutComplianceGate from "@/components/compliance/storefront/islands/CheckoutComplianceGate.tsx";
|
|
@@ -41,14 +41,14 @@ import type {
|
|
|
41
41
|
import { resolveCartSigning, shopperCheckoutUnavailableHtml } from "@/lib/checkout/shared/checkoutCommerce";
|
|
42
42
|
import { isRegulatedTenant } from "@/lib/compliance/enforcement";
|
|
43
43
|
import { resolveMemberContext } from "@/lib/membership/eligibility";
|
|
44
|
-
import { truncate } from "@/lib/format";
|
|
45
|
-
import { productLd, breadcrumbLd, reviewLd } from "@/lib/jsonld";
|
|
46
|
-
import { isUsableImageUrl } from "@/lib/placeholder";
|
|
44
|
+
import { truncate } from "@/lib/content/shared/format";
|
|
45
|
+
import { productLd, breadcrumbLd, reviewLd } from "@/lib/content/shared/jsonld";
|
|
46
|
+
import { isUsableImageUrl } from "@/lib/content/shared/placeholder";
|
|
47
47
|
import { withBase } from "@/lib/basePath";
|
|
48
|
-
import { productPageType, structuredDataProfile } from "@/lib/seo/structuredData";
|
|
49
|
-
import { pageUrlForm } from "@/lib/seo/urlForm";
|
|
50
|
-
import { sourceSeoTitle } from "@/lib/seo/documentTitle";
|
|
51
|
-
import { shippingPolicyPath } from "@/lib/
|
|
48
|
+
import { productPageType, structuredDataProfile } from "@/lib/content/seo/structuredData";
|
|
49
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm";
|
|
50
|
+
import { sourceSeoTitle } from "@/lib/content/seo/documentTitle";
|
|
51
|
+
import { shippingPolicyPath } from "@/lib/content/policies/shippingPolicy";
|
|
52
52
|
import AppWidgetFrame from "@/components/integrations/storefront/apps/AppWidgetFrame.astro";
|
|
53
53
|
import { getRegistryService } from "@/lib/integrations/apps/registryAccess.js";
|
|
54
54
|
import { renderWidgetSlot } from "@/lib/integrations/apps/widgets/renderSlot.js";
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* (SavedList island); noindex since it's per-device and has no stable content.
|
|
5
5
|
*/
|
|
6
6
|
import Layout from "@/layouts/Layout.astro";
|
|
7
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
8
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
7
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
8
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
9
9
|
import SavedList from "@/components/customers/storefront/islands/SavedList.tsx";
|
|
10
10
|
|
|
11
11
|
const { tenant } = Astro.locals;
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
* practice — thin, parameterized, duplicative).
|
|
11
11
|
*/
|
|
12
12
|
import Layout from "@/layouts/Layout.astro";
|
|
13
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
14
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs";
|
|
13
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
14
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs";
|
|
15
15
|
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
16
|
-
import EmptyState from "@/components/EmptyState.astro";
|
|
17
|
-
import Section from "@/components/Section.astro";
|
|
16
|
+
import EmptyState from "@/components/content/storefront/EmptyState.astro";
|
|
17
|
+
import Section from "@/components/content/storefront/Section.astro";
|
|
18
18
|
import { toTypeaheadDoc } from "@/lib/catalog/search/index";
|
|
19
|
-
import { breadcrumbLd } from "@/lib/jsonld";
|
|
19
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld";
|
|
20
20
|
import { withBase } from "@/lib/basePath";
|
|
21
21
|
|
|
22
22
|
const { tenant, tot, canonicalBase, basePath } = Astro.locals;
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { APIContext } from "astro";
|
|
12
12
|
import { nonEmptyCollections } from "@/lib/catalog/tot/query.js";
|
|
13
|
-
import { getBlogSettings, listBlogPosts } from "@/lib/blog/provider.js";
|
|
14
|
-
import { authorSlug, categorySlug } from "@/lib/blog/collection.js";
|
|
15
|
-
import { resolveBlogIndexCopy } from "@/lib/blog/pagination.js";
|
|
16
|
-
import { getTheBuildSettings, listBuildPosts } from "@/lib/the-build/provider.js";
|
|
17
|
-
import { resolveTheBuildIndexCopy } from "@/lib/the-build/pagination.js";
|
|
18
|
-
import { isIndexableHtml, rawPageCanonicalUrl } from "@/lib/rawMarketingHtml.js";
|
|
13
|
+
import { getBlogSettings, listBlogPosts } from "@/lib/content/blog/provider.js";
|
|
14
|
+
import { authorSlug, categorySlug } from "@/lib/content/blog/collection.js";
|
|
15
|
+
import { resolveBlogIndexCopy } from "@/lib/content/blog/pagination.js";
|
|
16
|
+
import { getTheBuildSettings, listBuildPosts } from "@/lib/content/the-build/provider.js";
|
|
17
|
+
import { resolveTheBuildIndexCopy } from "@/lib/content/the-build/pagination.js";
|
|
18
|
+
import { isIndexableHtml, rawPageCanonicalUrl } from "@/lib/content/shared/rawMarketingHtml.js";
|
|
19
19
|
import { compileRouteTierIndexV1 } from "@tot/public-runtime";
|
|
20
20
|
import { readKv } from "@/lib/runtimeEnv.js";
|
|
21
21
|
import {
|
|
@@ -24,8 +24,8 @@ import {
|
|
|
24
24
|
readMountedPublicationDiscoveryV1,
|
|
25
25
|
rootOwnsDiscoveryPathV1,
|
|
26
26
|
} from "@/lib/publication/mountedDiscovery.js";
|
|
27
|
-
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/blog/collectionPaths.js";
|
|
28
|
-
import { pageUrlForm } from "@/lib/seo/urlForm.js";
|
|
27
|
+
import { collectionPathsV1, blogPathOptsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
28
|
+
import { pageUrlForm } from "@/lib/content/seo/urlForm.js";
|
|
29
29
|
|
|
30
30
|
interface SitemapUrl {
|
|
31
31
|
loc: string;
|
|
@@ -20,8 +20,8 @@ export const prerender = false;
|
|
|
20
20
|
// utilities + reference theme-token fallbacks so the (token-styled) components
|
|
21
21
|
// render here without the app Layout. The `.sg-commerce` wrapper pins the
|
|
22
22
|
// reference palette so they look coherent regardless of the marketing theme CSS.
|
|
23
|
-
import { loadStyleGuideThemes, styleGuideCompositionSheets } from "@/lib/styleGuideThemes";
|
|
24
|
-
import { styleGuideHref } from "@/lib/styleGuidePaths";
|
|
23
|
+
import { loadStyleGuideThemes, styleGuideCompositionSheets } from "@/lib/content/shared/styleGuideThemes";
|
|
24
|
+
import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
|
|
25
25
|
import { derivedTokenDeclarations } from "@/themes/derivedTokens";
|
|
26
26
|
import "@/styles/global.css";
|
|
27
27
|
import PriceDisplay from "@/components/catalog/storefront/commerce/PriceDisplay.astro";
|
|
@@ -29,23 +29,23 @@ import RatingStars from "@/components/catalog/storefront/commerce/RatingStars.as
|
|
|
29
29
|
import ReviewSummary from "@/components/catalog/storefront/commerce/ReviewSummary.astro";
|
|
30
30
|
import ReviewList from "@/components/catalog/storefront/commerce/ReviewList.astro";
|
|
31
31
|
import type { Review } from "@tot/public-runtime";
|
|
32
|
-
import Badge from "@/components/Badge.astro";
|
|
32
|
+
import Badge from "@/components/content/storefront/Badge.astro";
|
|
33
33
|
import ProductCard from "@/components/catalog/storefront/ProductCard.astro";
|
|
34
34
|
import ProductCarousel from "@/components/catalog/storefront/commerce/ProductCarousel.astro";
|
|
35
35
|
import ProductGrid from "@/components/catalog/storefront/commerce/ProductGrid.astro";
|
|
36
36
|
import BrandGrid from "@/components/catalog/storefront/commerce/BrandGrid.astro";
|
|
37
37
|
import type { Brand } from "@/components/catalog/storefront/commerce/BrandGrid.astro";
|
|
38
|
-
import ArticleCard from "@/components/commerce/ArticleCard.astro";
|
|
39
|
-
import type { Article } from "@/components/commerce/ArticleCard.astro";
|
|
38
|
+
import ArticleCard from "@/components/content/storefront/commerce/ArticleCard.astro";
|
|
39
|
+
import type { Article } from "@/components/content/storefront/commerce/ArticleCard.astro";
|
|
40
40
|
import TagFilterCloud from "@/components/catalog/storefront/commerce/TagFilterCloud.astro";
|
|
41
41
|
import type { TagItem } from "@/components/catalog/storefront/commerce/TagFilterCloud.astro";
|
|
42
|
-
import AnnouncementBar from "@/components/chrome/AnnouncementBar.astro";
|
|
43
|
-
import UtilityNav from "@/components/chrome/UtilityNav.astro";
|
|
44
|
-
import SiteHeader from "@/components/chrome/SiteHeader.astro";
|
|
45
|
-
import MegaMenu from "@/components/chrome/MegaMenu.astro";
|
|
46
|
-
import NavDropdown from "@/components/chrome/NavDropdown.astro";
|
|
47
|
-
import SiteFooter from "@/components/chrome/SiteFooter.astro";
|
|
48
|
-
import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
|
|
42
|
+
import AnnouncementBar from "@/components/content/storefront/chrome/AnnouncementBar.astro";
|
|
43
|
+
import UtilityNav from "@/components/content/storefront/chrome/UtilityNav.astro";
|
|
44
|
+
import SiteHeader from "@/components/content/storefront/chrome/SiteHeader.astro";
|
|
45
|
+
import MegaMenu from "@/components/content/storefront/chrome/MegaMenu.astro";
|
|
46
|
+
import NavDropdown from "@/components/content/storefront/chrome/NavDropdown.astro";
|
|
47
|
+
import SiteFooter from "@/components/content/storefront/chrome/SiteFooter.astro";
|
|
48
|
+
import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
|
|
49
49
|
import NicotineWarning from "@/components/compliance/storefront/compliance/NicotineWarning.astro";
|
|
50
50
|
import { NICOTINE_WARNING_PRESETS } from "../../../../../../packages/cli/src/declared-config.mjs";
|
|
51
51
|
import PactActNotice from "@/components/compliance/storefront/compliance/PactActNotice.astro";
|
|
@@ -57,11 +57,11 @@ import ShippingRestrictionNotice from "@/components/compliance/storefront/compli
|
|
|
57
57
|
import ExciseTaxNotice from "@/components/compliance/storefront/compliance/ExciseTaxNotice.astro";
|
|
58
58
|
import TierCards from "@/components/membership/storefront/membership/TierCards.astro";
|
|
59
59
|
import TierComparisonTable from "@/components/membership/storefront/membership/TierComparisonTable.astro";
|
|
60
|
-
import ProseSections from "@/components/content/ProseSections.astro";
|
|
61
|
-
import ProseToc from "@/components/content/ProseToc.astro";
|
|
62
|
-
import Callout from "@/components/content/Callout.astro";
|
|
63
|
-
import NeedsReviewCallout from "@/components/content/NeedsReviewCallout.astro";
|
|
64
|
-
import TrustStrip from "@/components/content/TrustStrip.astro";
|
|
60
|
+
import ProseSections from "@/components/content/storefront/content/ProseSections.astro";
|
|
61
|
+
import ProseToc from "@/components/content/storefront/content/ProseToc.astro";
|
|
62
|
+
import Callout from "@/components/content/storefront/content/Callout.astro";
|
|
63
|
+
import NeedsReviewCallout from "@/components/content/storefront/content/NeedsReviewCallout.astro";
|
|
64
|
+
import TrustStrip from "@/components/content/storefront/content/TrustStrip.astro";
|
|
65
65
|
import type { ProseSection } from "@/lib/content/prose";
|
|
66
66
|
import type { TrustStripItem } from "@/lib/content/trustStrip";
|
|
67
67
|
import HowItWorksSteps from "@/components/subscriptions/storefront/subscription/HowItWorksSteps.astro";
|
|
@@ -71,7 +71,7 @@ import AgeGate from "@/components/compliance/storefront/islands/AgeGate.tsx";
|
|
|
71
71
|
import VariantSelector, { publicSelectorVariants } from "@/components/catalog/storefront/islands/VariantSelector.tsx";
|
|
72
72
|
import QuickView from "@/components/catalog/storefront/islands/QuickView.tsx";
|
|
73
73
|
import SearchTypeahead from "@/components/catalog/storefront/islands/SearchTypeahead.tsx";
|
|
74
|
-
import MobileNav from "@/components/islands/MobileNav.tsx";
|
|
74
|
+
import MobileNav from "@/components/content/storefront/islands/MobileNav.tsx";
|
|
75
75
|
import RecentlyViewed from "@/components/catalog/storefront/islands/RecentlyViewed.tsx";
|
|
76
76
|
import type { RVItem } from "@/components/catalog/storefront/islands/RecentlyViewed.tsx";
|
|
77
77
|
import SavedList from "@/components/customers/storefront/islands/SavedList.tsx";
|
|
@@ -79,14 +79,14 @@ import FacetSidebar from "@/components/catalog/storefront/plp/FacetSidebar.astro
|
|
|
79
79
|
import ActiveFilters from "@/components/catalog/storefront/plp/ActiveFilters.astro";
|
|
80
80
|
import SortSelect from "@/components/catalog/storefront/plp/SortSelect.astro";
|
|
81
81
|
import Pagination from "@/components/catalog/storefront/plp/Pagination.astro";
|
|
82
|
-
import Hero from "@/components/home/Hero.astro";
|
|
83
|
-
import MarketingBlocks from "@/components/marketing/MarketingBlocks.astro";
|
|
82
|
+
import Hero from "@/components/content/storefront/home/Hero.astro";
|
|
83
|
+
import MarketingBlocks from "@/components/content/storefront/marketing/MarketingBlocks.astro";
|
|
84
84
|
import { sampleProducts, sampleRatings } from "@/lib/catalog/fixtures/sampleProducts";
|
|
85
|
-
import type { ChromeNavItem } from "@/lib/chrome/model";
|
|
85
|
+
import type { ChromeNavItem } from "@/lib/content/chrome/model";
|
|
86
86
|
import type { Tier, ComparisonRow } from "@/lib/membership/model";
|
|
87
87
|
import type { SubscriptionStep, SubscriptionManageEntry } from "@/lib/subscriptions/subscription/model";
|
|
88
88
|
import type { Facet, ListProductsQuery } from "@tot/public-runtime";
|
|
89
|
-
import type { HeroBlock, MarketingBlock } from "@/lib/storyblok/content-model";
|
|
89
|
+
import type { HeroBlock, MarketingBlock } from "@/lib/content/storyblok/content-model";
|
|
90
90
|
|
|
91
91
|
const { tenant, theme } = Astro.params;
|
|
92
92
|
const cspNonce = Astro.locals.cspNonce;
|
|
@@ -1473,12 +1473,12 @@ const componentVarsInline = [
|
|
|
1473
1473
|
</div>
|
|
1474
1474
|
</section>
|
|
1475
1475
|
|
|
1476
|
-
{/* ── Home hero (components/home/Hero.astro) ─────────────────────────
|
|
1476
|
+
{/* ── Home hero (components/content/storefront/home/Hero.astro) ─────────────────────────
|
|
1477
1477
|
The signature homepage moment — bold (default) vs. light, set by
|
|
1478
1478
|
the tenant's brand.heroVariant (not a prop; the guide fakes locals
|
|
1479
1479
|
to preview both). */}
|
|
1480
1480
|
<section class="sg-block">
|
|
1481
|
-
<p class="sg-h">Home hero — <code>components/home/Hero.astro</code></p>
|
|
1481
|
+
<p class="sg-h">Home hero — <code>components/content/storefront/home/Hero.astro</code></p>
|
|
1482
1482
|
<p class="lede" style="font-size:.95rem;color:var(--color-muted)">The homepage "thesis" moment. Bold is the default; light matches merchants whose own site favors a light page with brand-color accents.</p>
|
|
1483
1483
|
|
|
1484
1484
|
<p class="sg-cap" style="margin:18px 0 8px">Bold (default)</p>
|
|
@@ -29,8 +29,8 @@ const { tenant, theme } = Astro.params;
|
|
|
29
29
|
const cspNonce = Astro.locals.cspNonce;
|
|
30
30
|
const favicon = Astro.locals.tenant.theme_tokens.brand?.favicon ?? "/favicon.svg";
|
|
31
31
|
|
|
32
|
-
import { loadStyleGuideThemes } from "@/lib/styleGuideThemes";
|
|
33
|
-
import { styleGuideHref } from "@/lib/styleGuidePaths";
|
|
32
|
+
import { loadStyleGuideThemes } from "@/lib/content/shared/styleGuideThemes";
|
|
33
|
+
import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
|
|
34
34
|
import { derivedTokenDeclarations } from "@/themes/derivedTokens";
|
|
35
35
|
|
|
36
36
|
const href = (path: string) => styleGuideHref(Astro.locals.basePath ?? "", path);
|
|
@@ -19,9 +19,9 @@ export const prerender = false;
|
|
|
19
19
|
|
|
20
20
|
import "@/styles/global.css";
|
|
21
21
|
import type { MarkdownInstance } from "astro";
|
|
22
|
-
import StyleGuideNav from "@/components/style-guide/StyleGuideNav.astro";
|
|
23
|
-
import { loadStyleGuideThemes } from "@/lib/styleGuideThemes";
|
|
24
|
-
import { styleGuideHref } from "@/lib/styleGuidePaths";
|
|
22
|
+
import StyleGuideNav from "@/components/content/storefront/style-guide/StyleGuideNav.astro";
|
|
23
|
+
import { loadStyleGuideThemes } from "@/lib/content/shared/styleGuideThemes";
|
|
24
|
+
import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
|
|
25
25
|
import { derivedTokenDeclarations } from "@/themes/derivedTokens";
|
|
26
26
|
|
|
27
27
|
const { tenant, theme } = Astro.params;
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export const prerender = false;
|
|
18
18
|
|
|
19
|
-
import StyleGuideNav from "@/components/style-guide/StyleGuideNav.astro";
|
|
20
|
-
import { loadStyleGuideThemes } from "@/lib/styleGuideThemes";
|
|
21
|
-
import { styleGuideHref } from "@/lib/styleGuidePaths";
|
|
19
|
+
import StyleGuideNav from "@/components/content/storefront/style-guide/StyleGuideNav.astro";
|
|
20
|
+
import { loadStyleGuideThemes } from "@/lib/content/shared/styleGuideThemes";
|
|
21
|
+
import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
|
|
22
22
|
|
|
23
23
|
const { tenant } = Astro.params;
|
|
24
24
|
const cspNonce = Astro.locals.cspNonce;
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
export const prerender = false;
|
|
22
22
|
|
|
23
23
|
import { listedTenantIds } from "@tot/public-runtime";
|
|
24
|
-
import { styleGuideHref } from "@/lib/styleGuidePaths";
|
|
24
|
+
import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
|
|
25
25
|
|
|
26
26
|
const cspNonce = Astro.locals.cspNonce;
|
|
27
27
|
const href = (path: string) => styleGuideHref(Astro.locals.basePath ?? "", path);
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
// visibility chokepoint); unlisted posts resolve here but carry noindex and
|
|
6
6
|
// stay out of the index/sitemap/RSS (see collection.ts isVisibleOnLive).
|
|
7
7
|
import Layout from "@/layouts/Layout.astro";
|
|
8
|
-
import Breadcrumbs from "@/components/Breadcrumbs.astro";
|
|
9
|
-
import ReactionBar from "@/components/blog/ReactionBar.astro";
|
|
10
|
-
import ShareRow from "@/components/blog/ShareRow.astro";
|
|
11
|
-
import { getBuildPost, getTheBuildSettings, resolveBuildRedirect, THE_BUILD } from "@/lib/the-build/provider.js";
|
|
12
|
-
import { bylineAuthor, resolveBlogPresentation, shareLinks } from "@/lib/blog/presentation.js";
|
|
13
|
-
import { homeCrumbLabel, siteTrail } from "@/lib/breadcrumbs.js";
|
|
14
|
-
import { getTranslations } from "@/lib/blog/collection.js";
|
|
15
|
-
import { buildAlternates } from "@/lib/seo/alternates.js";
|
|
16
|
-
import { breadcrumbLd } from "@/lib/jsonld.js";
|
|
17
|
-
import { collectionPathsV1 } from "@/lib/blog/collectionPaths.js";
|
|
8
|
+
import Breadcrumbs from "@/components/content/storefront/Breadcrumbs.astro";
|
|
9
|
+
import ReactionBar from "@/components/content/storefront/blog/ReactionBar.astro";
|
|
10
|
+
import ShareRow from "@/components/content/storefront/blog/ShareRow.astro";
|
|
11
|
+
import { getBuildPost, getTheBuildSettings, resolveBuildRedirect, THE_BUILD } from "@/lib/content/the-build/provider.js";
|
|
12
|
+
import { bylineAuthor, resolveBlogPresentation, shareLinks } from "@/lib/content/blog/presentation.js";
|
|
13
|
+
import { homeCrumbLabel, siteTrail } from "@/lib/content/shared/breadcrumbs.js";
|
|
14
|
+
import { getTranslations } from "@/lib/content/blog/collection.js";
|
|
15
|
+
import { buildAlternates } from "@/lib/content/seo/alternates.js";
|
|
16
|
+
import { breadcrumbLd } from "@/lib/content/shared/jsonld.js";
|
|
17
|
+
import { collectionPathsV1 } from "@/lib/content/blog/collectionPaths.js";
|
|
18
18
|
|
|
19
19
|
// Same contract as blog/[slug].astro: the publication composition lifts this file into the space's
|
|
20
20
|
// `routes.aliases`, so these redirects reach the CDN plane through the live pointer. The redirect
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
// collection.ts) via the the-build/provider.ts thin wrapper, so any tenant
|
|
5
5
|
// with the-build content renders the same way (per-tenant/multi-collection
|
|
6
6
|
// invariant — see docs/plans/2026-08-21-blog-platform-workstream.md §1).
|
|
7
|
-
import TheBuildIndexView from "@/components/the-build/TheBuildIndexView.astro";
|
|
8
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
9
|
-
import { getTheBuildSettings, listBuildPosts } from "@/lib/the-build/provider.js";
|
|
10
|
-
import { paginateBlogPosts } from "@/lib/blog/pagination.js";
|
|
11
|
-
import { resolveTheBuildIndexCopy } from "@/lib/the-build/pagination.js";
|
|
7
|
+
import TheBuildIndexView from "@/components/content/storefront/the-build/TheBuildIndexView.astro";
|
|
8
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
9
|
+
import { getTheBuildSettings, listBuildPosts } from "@/lib/content/the-build/provider.js";
|
|
10
|
+
import { paginateBlogPosts } from "@/lib/content/blog/pagination.js";
|
|
11
|
+
import { resolveTheBuildIndexCopy } from "@/lib/content/the-build/pagination.js";
|
|
12
12
|
|
|
13
13
|
const { tenant, basePath, apiBasePath, canonicalBase, content, publicationTimestamp } =
|
|
14
14
|
Astro.locals;
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
// /the-build/ (src/pages/the-build/index.astro); both render through the same
|
|
4
4
|
// TheBuildIndexView so the tenant-copy + pagination contract can't drift
|
|
5
5
|
// between the two routes (mirrors src/pages/blog/page/[n].astro).
|
|
6
|
-
import TheBuildIndexView from "@/components/the-build/TheBuildIndexView.astro";
|
|
7
|
-
import { resolveBlogPresentation } from "@/lib/blog/presentation.js";
|
|
8
|
-
import { getTheBuildSettings, listBuildPosts } from "@/lib/the-build/provider.js";
|
|
9
|
-
import { paginateBlogPosts } from "@/lib/blog/pagination.js";
|
|
10
|
-
import { parseTheBuildPageParam, resolveTheBuildIndexCopy } from "@/lib/the-build/pagination.js";
|
|
6
|
+
import TheBuildIndexView from "@/components/content/storefront/the-build/TheBuildIndexView.astro";
|
|
7
|
+
import { resolveBlogPresentation } from "@/lib/content/blog/presentation.js";
|
|
8
|
+
import { getTheBuildSettings, listBuildPosts } from "@/lib/content/the-build/provider.js";
|
|
9
|
+
import { paginateBlogPosts } from "@/lib/content/blog/pagination.js";
|
|
10
|
+
import { parseTheBuildPageParam, resolveTheBuildIndexCopy } from "@/lib/content/the-build/pagination.js";
|
|
11
11
|
|
|
12
12
|
const page = parseTheBuildPageParam(Astro.params.n);
|
|
13
13
|
if (page === null) return new Response(null, { status: 404 });
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* syndication mirror of `sitemap.xml.ts` and the newsletter on-ramp (B1.1).
|
|
4
4
|
* Reads the engine's live-visible list (`listBuildPosts` default), so drafts and
|
|
5
5
|
* unlisted posts never syndicate — the same visibility chokepoint the sitemap
|
|
6
|
-
* rides. The XML itself is hand-rolled in `lib/blog/rss.ts` (no `@astrojs/rss`),
|
|
6
|
+
* rides. The XML itself is hand-rolled in `lib/content/blog/rss.ts` (no `@astrojs/rss`),
|
|
7
7
|
* which is tenant/collection-generic so `/blog/rss.xml` can reuse it later.
|
|
8
8
|
*/
|
|
9
9
|
import type { APIContext } from "astro";
|
|
10
|
-
import { getTheBuildSettings, listBuildPosts, THE_BUILD } from "@/lib/the-build/provider.js";
|
|
11
|
-
import { resolveTheBuildIndexCopy } from "@/lib/the-build/pagination.js";
|
|
12
|
-
import { renderRssFeed } from "@/lib/blog/rss.js";
|
|
10
|
+
import { getTheBuildSettings, listBuildPosts, THE_BUILD } from "@/lib/content/the-build/provider.js";
|
|
11
|
+
import { resolveTheBuildIndexCopy } from "@/lib/content/the-build/pagination.js";
|
|
12
|
+
import { renderRssFeed } from "@/lib/content/blog/rss.js";
|
|
13
13
|
|
|
14
14
|
export async function GET(context: APIContext): Promise<Response> {
|
|
15
15
|
const { tenant, canonicalBase, content, publicationTimestamp } = context.locals;
|