@tokenoftrust/storefront-runner 2.4.86 → 2.4.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/apps/storefront/dev-plugins/tenant-hot-reload.mjs +1 -1
  2. package/apps/storefront/env.d.ts +2 -2
  3. package/apps/storefront/perf/README.md +1 -1
  4. package/apps/storefront/public/shared/commerce-chrome.css +1 -1
  5. package/apps/storefront/public/shared/commerce-marketing.css +1 -1
  6. package/apps/storefront/src/components/{CollectionCard.astro → catalog/storefront/CollectionCard.astro} +1 -1
  7. package/apps/storefront/src/components/{ProductCard.astro → catalog/storefront/ProductCard.astro} +7 -7
  8. package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/BrandGrid.astro +1 -1
  9. package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/PriceDisplay.astro +3 -3
  10. package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ProductCarousel.astro +3 -3
  11. package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ProductGrid.astro +4 -4
  12. package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ReviewList.astro +1 -1
  13. package/apps/storefront/src/components/{islands → catalog/storefront/islands}/ImageGallery.tsx +1 -1
  14. package/apps/storefront/src/components/{islands → catalog/storefront/islands}/QuickView.tsx +2 -2
  15. package/apps/storefront/src/components/{islands → catalog/storefront/islands}/RecentlyViewed.tsx +2 -2
  16. package/apps/storefront/src/components/{islands → catalog/storefront/islands}/SearchTypeahead.tsx +3 -3
  17. package/apps/storefront/src/components/{islands → catalog/storefront/islands}/VariantSelector.tsx +2 -2
  18. package/apps/storefront/src/components/{plp → catalog/storefront/plp}/FacetSidebar.astro +1 -1
  19. package/apps/storefront/src/components/compliance/{NicotineWarning.astro → storefront/compliance/NicotineWarning.astro} +1 -1
  20. package/apps/storefront/src/components/{islands → compliance/storefront/islands}/AgeGate.tsx +2 -2
  21. package/apps/storefront/src/components/{islands → compliance/storefront/islands}/CheckoutComplianceGate.tsx +1 -1
  22. package/apps/storefront/src/components/{islands → compliance/storefront/islands}/IsolatedAgeGate.tsx +1 -1
  23. package/apps/storefront/src/components/{AsyncStylesheet.astro → content/storefront/AsyncStylesheet.astro} +2 -2
  24. package/apps/storefront/src/components/{Breadcrumbs.astro → content/storefront/Breadcrumbs.astro} +3 -3
  25. package/apps/storefront/src/components/{Seo.astro → content/storefront/Seo.astro} +5 -5
  26. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogIndexView.astro +6 -6
  27. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPaywall.astro +1 -1
  28. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPostArticle.astro +7 -7
  29. package/apps/storefront/src/components/{blog → content/storefront/blog}/PostAccessBadge.astro +1 -1
  30. package/apps/storefront/src/components/{blog → content/storefront/blog}/PostGrid.astro +3 -3
  31. package/apps/storefront/src/components/{blog → content/storefront/blog}/ReactionBar.astro +1 -1
  32. package/apps/storefront/src/components/{blog → content/storefront/blog}/ShareRow.astro +1 -1
  33. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/MegaMenu.astro +3 -3
  34. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/NavDropdown.astro +2 -2
  35. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteFooter.astro +5 -5
  36. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteHeader.astro +9 -9
  37. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/UtilityNav.astro +2 -2
  38. package/apps/storefront/src/components/content/{Callout.astro → storefront/content/Callout.astro} +1 -1
  39. package/apps/storefront/src/components/content/{PromoTiles.astro → storefront/content/PromoTiles.astro} +3 -3
  40. package/apps/storefront/src/components/content/{ProseSections.astro → storefront/content/ProseSections.astro} +3 -3
  41. package/apps/storefront/src/components/{home → content/storefront/home}/Hero.astro +4 -4
  42. package/apps/storefront/src/components/{islands → content/storefront/islands}/MobileNav.tsx +2 -2
  43. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CardGrid.astro +2 -2
  44. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CodeSample.astro +1 -1
  45. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CtaBand.astro +2 -2
  46. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Faq.astro +5 -5
  47. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Integrations.astro +3 -3
  48. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingBlocks.astro +11 -11
  49. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingCtas.astro +1 -1
  50. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingHero.astro +2 -2
  51. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/ProofStrip.astro +1 -1
  52. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/SplitCompare.astro +2 -2
  53. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Steps.astro +2 -2
  54. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Testimonials.astro +2 -2
  55. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/TrustBar.astro +1 -1
  56. package/apps/storefront/src/components/{style-guide → content/storefront/style-guide}/StyleGuideNav.astro +1 -1
  57. package/apps/storefront/src/components/{the-build → content/storefront/the-build}/TheBuildIndexView.astro +5 -5
  58. package/apps/storefront/src/components/customers/storefront/islands/SavedList.tsx +2 -2
  59. package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/HowItWorksSteps.astro +1 -1
  60. package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/ManageSubscriptionEntry.astro +1 -1
  61. package/apps/storefront/src/components/{subscription → subscriptions/storefront/subscription}/SavingsExplainer.astro +2 -2
  62. package/apps/storefront/src/layouts/Layout.astro +32 -32
  63. package/apps/storefront/src/lib/activity/alerts.ts +1 -1
  64. package/apps/storefront/src/lib/activity/candidateSubmitLease.ts +1 -1
  65. package/apps/storefront/src/lib/activity/fixtures/evidence.ts +2 -2
  66. package/apps/storefront/src/lib/activity/query.ts +2 -2
  67. package/apps/storefront/src/lib/activity/store.ts +1 -1
  68. package/apps/storefront/src/lib/admin/services/mock/index.ts +5 -5
  69. package/apps/storefront/src/lib/assets/shared/imageAttrs.ts +1 -1
  70. package/apps/storefront/src/lib/basePath.ts +1 -1
  71. package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsClient.ts +2 -2
  72. package/apps/storefront/src/lib/{admin → catalog/admin}/services/catalogProducts.ts +2 -2
  73. package/apps/storefront/src/lib/{d1 → catalog/d1}/catalog.ts +1 -1
  74. package/apps/storefront/src/lib/{admin/services/mock → catalog/fixtures}/products.ts +5 -5
  75. package/apps/storefront/src/lib/{search → catalog/search}/index.ts +1 -1
  76. package/apps/storefront/src/lib/{featuredProductsPresentation.ts → catalog/shared/featuredProductsPresentation.ts} +1 -1
  77. package/apps/storefront/src/lib/{priceBuckets.ts → catalog/shared/priceBuckets.ts} +1 -1
  78. package/apps/storefront/src/lib/{tot → catalog/tot}/ToTClient.ts +3 -3
  79. package/apps/storefront/src/lib/{tot → catalog/tot}/query.ts +1 -1
  80. package/apps/storefront/src/lib/{tot → catalog/tot}/syncState.ts +1 -1
  81. package/apps/storefront/src/lib/{tot → catalog/tot}/tenantCatalog.ts +1 -1
  82. package/apps/storefront/src/lib/{admin/services/mock → checkout/fixtures}/checkoutSettings.ts +2 -2
  83. package/apps/storefront/src/lib/{blog → content/blog}/collection.ts +9 -9
  84. package/apps/storefront/src/lib/{blog → content/blog}/postView.ts +3 -3
  85. package/apps/storefront/src/lib/{blog → content/blog}/provider.ts +7 -7
  86. package/apps/storefront/src/lib/{chrome → content/chrome}/footerLegal.ts +2 -2
  87. package/apps/storefront/src/lib/{chrome → content/chrome}/trackingPlacements.ts +1 -1
  88. package/apps/storefront/src/lib/content/index.ts +1 -1
  89. package/apps/storefront/src/lib/{seo → content/seo}/faqItems.ts +1 -1
  90. package/apps/storefront/src/lib/{seo → content/seo}/structuredData.ts +1 -1
  91. package/apps/storefront/src/lib/{breadcrumbs.ts → content/shared/breadcrumbs.ts} +1 -1
  92. package/apps/storefront/src/lib/{heroSlideshow.ts → content/shared/heroSlideshow.ts} +1 -1
  93. package/apps/storefront/src/lib/{homeVisualParity.ts → content/shared/homeVisualParity.ts} +1 -1
  94. package/apps/storefront/src/lib/{jsonld.ts → content/shared/jsonld.ts} +1 -1
  95. package/apps/storefront/src/lib/{rawChrome.ts → content/shared/rawChrome.ts} +14 -14
  96. package/apps/storefront/src/lib/{rawMarketingHtml.ts → content/shared/rawMarketingHtml.ts} +3 -3
  97. package/apps/storefront/src/lib/{sections.ts → content/shared/sections.ts} +2 -2
  98. package/apps/storefront/src/lib/{styleGuideThemes.ts → content/shared/styleGuideThemes.ts} +3 -3
  99. package/apps/storefront/src/lib/{storyblok → content/storyblok}/content-model.ts +1 -1
  100. package/apps/storefront/src/lib/{storyblok → content/storyblok}/provider.ts +26 -26
  101. package/apps/storefront/src/lib/{the-build → content/the-build}/provider.ts +1 -1
  102. package/apps/storefront/src/lib/{the-build → content/the-build}/toc.ts +1 -1
  103. package/apps/storefront/src/lib/d1/schema-apps.ts +2 -2
  104. package/apps/storefront/src/lib/email/candidateConflictEmail.ts +1 -1
  105. package/apps/storefront/src/lib/email/magicLinkInviteEmail.ts +1 -1
  106. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/digest.ts +2 -2
  107. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/resendClient.ts +1 -1
  108. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/send.ts +2 -2
  109. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/subscribers.ts +1 -1
  110. package/apps/storefront/src/lib/{social → engagement/social}/golive.ts +2 -2
  111. package/apps/storefront/src/lib/{social → engagement/social}/notify.ts +1 -1
  112. package/apps/storefront/src/lib/{social → engagement/social}/tokenStore.ts +3 -3
  113. package/apps/storefront/src/lib/env.ts +1 -1
  114. package/apps/storefront/src/lib/fulfillment/store.ts +1 -1
  115. package/apps/storefront/src/lib/integrations/apps/appVersionStore.ts +1 -1
  116. package/apps/storefront/src/lib/integrations/apps/credentials.ts +1 -1
  117. package/apps/storefront/src/lib/integrations/apps/orders/idempotency.ts +1 -1
  118. package/apps/storefront/src/lib/integrations/apps/registryAccess.ts +1 -1
  119. package/apps/storefront/src/lib/integrations/apps/registryService.ts +1 -1
  120. package/apps/storefront/src/lib/integrations/integration/managedInstallDeclarations.ts +1 -1
  121. package/apps/storefront/src/lib/integrations/webhooks/deliveryEngine.ts +1 -1
  122. package/apps/storefront/src/lib/integrations/webhooks/deliveryStore.ts +1 -1
  123. package/apps/storefront/src/lib/integrations/webhooks/emit.ts +1 -1
  124. package/apps/storefront/src/lib/integrations/webhooks/getDispatcher.ts +1 -1
  125. package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/attributionService.ts +2 -2
  126. package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/orderConversionD1.ts +2 -2
  127. package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/verifiedProviderMeasurement.ts +2 -2
  128. package/apps/storefront/src/lib/{apps → measurement/consent}/consentConfigRead.ts +1 -1
  129. package/apps/storefront/src/lib/{tracking → measurement/tracking}/d1Control.ts +2 -2
  130. package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionCollector.ts +2 -2
  131. package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionStore.ts +0 -0
  132. package/apps/storefront/src/lib/{tracking → measurement/tracking}/pruneRollup.ts +2 -2
  133. package/apps/storefront/src/lib/{tracking → measurement/tracking}/publishSafetyNet.ts +1 -1
  134. package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantD1Registry.ts +2 -2
  135. package/apps/storefront/src/lib/monitoring/manifest.ts +1 -1
  136. package/apps/storefront/src/lib/{apps/orders → orders/data}/orderForwardReceiver.ts +1 -1
  137. package/apps/storefront/src/lib/{apps/orders → orders/data}/orderMapper.ts +1 -1
  138. package/apps/storefront/src/lib/{apps/orders → orders/data}/ordersStore.ts +1 -1
  139. package/apps/storefront/src/lib/{admin/services/mock → orders/fixtures}/orders.ts +5 -5
  140. package/apps/storefront/src/lib/previewReload.ts +1 -1
  141. package/apps/storefront/src/lib/publication/contentProvider.ts +7 -7
  142. package/apps/storefront/src/lib/publication/mountedDiscovery.ts +1 -1
  143. package/apps/storefront/src/lib/publication/rootDiscovery.ts +4 -4
  144. package/apps/storefront/src/lib/{admin/services/mock → subscriptions/fixtures}/subscriptions.ts +8 -8
  145. package/apps/storefront/src/lib/url.ts +1 -1
  146. package/apps/storefront/src/middleware/controlPlane.ts +2 -2
  147. package/apps/storefront/src/middleware/index.ts +2 -2
  148. package/apps/storefront/src/middleware/renderChain.ts +3 -3
  149. package/apps/storefront/src/pages/404.astro +1 -1
  150. package/apps/storefront/src/pages/[...slug].astro +13 -13
  151. package/apps/storefront/src/pages/api/activity.ts +1 -1
  152. package/apps/storefront/src/pages/api/admin/activity-alerts.ts +1 -1
  153. package/apps/storefront/src/pages/api/admin/interaction-insights.ts +4 -4
  154. package/apps/storefront/src/pages/api/admin/orders/[id].ts +2 -2
  155. package/apps/storefront/src/pages/api/admin/orders.ts +2 -2
  156. package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +1 -1
  157. package/apps/storefront/src/pages/api/commerce/checkout-handoff.ts +2 -2
  158. package/apps/storefront/src/pages/api/commerce/final-cart-authorization.ts +2 -2
  159. package/apps/storefront/src/pages/api/compliance/preflight.ts +1 -1
  160. package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +4 -4
  161. package/apps/storefront/src/pages/api/newsletter/confirm.ts +2 -2
  162. package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +2 -2
  163. package/apps/storefront/src/pages/api/rum/vitals.ts +1 -1
  164. package/apps/storefront/src/pages/api/tracking/interaction.ts +6 -6
  165. package/apps/storefront/src/pages/blog/[slug].astro +2 -2
  166. package/apps/storefront/src/pages/blog/author/[author].astro +8 -8
  167. package/apps/storefront/src/pages/blog/category/[category].astro +8 -8
  168. package/apps/storefront/src/pages/blog/index.astro +4 -4
  169. package/apps/storefront/src/pages/blog/page/[n].astro +4 -4
  170. package/apps/storefront/src/pages/blog/tag/[tag].astro +8 -8
  171. package/apps/storefront/src/pages/cart.ts +1 -1
  172. package/apps/storefront/src/pages/collections/[handle].astro +12 -12
  173. package/apps/storefront/src/pages/collections/index.astro +6 -6
  174. package/apps/storefront/src/pages/index.astro +14 -14
  175. package/apps/storefront/src/pages/llms.txt.ts +3 -3
  176. package/apps/storefront/src/pages/products/[handle].astro +22 -22
  177. package/apps/storefront/src/pages/saved.astro +2 -2
  178. package/apps/storefront/src/pages/search.astro +7 -7
  179. package/apps/storefront/src/pages/sitemap.xml.ts +9 -9
  180. package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +58 -58
  181. package/apps/storefront/src/pages/style-guide/[tenant]/chrome/[theme].astro +2 -2
  182. package/apps/storefront/src/pages/style-guide/[tenant]/guide/[theme].astro +3 -3
  183. package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +3 -3
  184. package/apps/storefront/src/pages/style-guide/index.astro +1 -1
  185. package/apps/storefront/src/pages/the-build/[slug].astro +10 -10
  186. package/apps/storefront/src/pages/the-build/index.astro +5 -5
  187. package/apps/storefront/src/pages/the-build/page/[n].astro +5 -5
  188. package/apps/storefront/src/pages/the-build/rss.xml.ts +4 -4
  189. package/docs/widget-library-guide.md +71 -71
  190. package/package.json +1 -1
  191. package/packages/public-runtime/src/chrome.ts +5 -5
  192. package/packages/public-runtime/src/tracking-id-derivation.ts +1 -1
  193. /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/RatingStars.astro +0 -0
  194. /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/ReviewSummary.astro +0 -0
  195. /package/apps/storefront/src/components/{commerce → catalog/storefront/commerce}/TagFilterCloud.astro +0 -0
  196. /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/ActiveFilters.astro +0 -0
  197. /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/Pagination.astro +0 -0
  198. /package/apps/storefront/src/components/{plp → catalog/storefront/plp}/SortSelect.astro +0 -0
  199. /package/apps/storefront/src/components/{commerce → checkout/storefront/commerce}/CartDrawerStyles.astro +0 -0
  200. /package/apps/storefront/src/components/{commerce → checkout/storefront/commerce}/CheckoutLoader.astro +0 -0
  201. /package/apps/storefront/src/components/compliance/{AdultSignatureNotice.astro → storefront/compliance/AdultSignatureNotice.astro} +0 -0
  202. /package/apps/storefront/src/components/compliance/{ComplianceNotice.astro → storefront/compliance/ComplianceNotice.astro} +0 -0
  203. /package/apps/storefront/src/components/compliance/{ExciseTaxNotice.astro → storefront/compliance/ExciseTaxNotice.astro} +0 -0
  204. /package/apps/storefront/src/components/compliance/{PactActNotice.astro → storefront/compliance/PactActNotice.astro} +0 -0
  205. /package/apps/storefront/src/components/compliance/{Prop65Warning.astro → storefront/compliance/Prop65Warning.astro} +0 -0
  206. /package/apps/storefront/src/components/compliance/{PurchaseLimitNotice.astro → storefront/compliance/PurchaseLimitNotice.astro} +0 -0
  207. /package/apps/storefront/src/components/compliance/{ShippingRestrictionNotice.astro → storefront/compliance/ShippingRestrictionNotice.astro} +0 -0
  208. /package/apps/storefront/src/components/compliance/{StateEligibilityNotice.astro → storefront/compliance/StateEligibilityNotice.astro} +0 -0
  209. /package/apps/storefront/src/components/{Badge.astro → content/storefront/Badge.astro} +0 -0
  210. /package/apps/storefront/src/components/{EmptyState.astro → content/storefront/EmptyState.astro} +0 -0
  211. /package/apps/storefront/src/components/{Section.astro → content/storefront/Section.astro} +0 -0
  212. /package/apps/storefront/src/components/{chrome → content/storefront/chrome}/AnnouncementBar.astro +0 -0
  213. /package/apps/storefront/src/components/{commerce → content/storefront/commerce}/ArticleCard.astro +0 -0
  214. /package/apps/storefront/src/components/content/{NeedsReviewCallout.astro → storefront/content/NeedsReviewCallout.astro} +0 -0
  215. /package/apps/storefront/src/components/content/{ProseToc.astro → storefront/content/ProseToc.astro} +0 -0
  216. /package/apps/storefront/src/components/content/{RichText.astro → storefront/content/RichText.astro} +0 -0
  217. /package/apps/storefront/src/components/content/{TrustStrip.astro → storefront/content/TrustStrip.astro} +0 -0
  218. /package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsPreview.ts +0 -0
  219. /package/apps/storefront/src/lib/{admin → catalog/admin}/catalogSettingsState.ts +0 -0
  220. /package/apps/storefront/src/lib/{admin → catalog/admin}/productSetupPhoto.ts +0 -0
  221. /package/apps/storefront/src/lib/{admin → catalog/admin}/productsTabClient.ts +0 -0
  222. /package/apps/storefront/src/lib/{admin → catalog/admin}/viewmodels/catalogProducts.ts +0 -0
  223. /package/apps/storefront/src/lib/{admin → catalog/admin}/viewmodels/products.ts +0 -0
  224. /package/apps/storefront/src/lib/{fixtures → catalog/fixtures}/sampleProducts.ts +0 -0
  225. /package/apps/storefront/src/lib/{tot → catalog/tot}/d1Client.ts +0 -0
  226. /package/apps/storefront/src/lib/{tot → catalog/tot}/totClientInterface.ts +0 -0
  227. /package/apps/storefront/src/lib/{admin → checkout/admin}/checkoutStyleInput.ts +0 -0
  228. /package/apps/storefront/src/lib/{admin → checkout/admin}/checkoutStyleTarget.ts +0 -0
  229. /package/apps/storefront/src/{components/islands → lib/checkout/browser}/useCheckoutHandoffCorrelation.ts +0 -0
  230. /package/apps/storefront/src/lib/{commerce → checkout/commerce}/checkoutHandoffCorrelation.ts +0 -0
  231. /package/apps/storefront/src/lib/{commerce → checkout/commerce}/checkoutSettings.ts +0 -0
  232. /package/apps/storefront/src/lib/{commerce → checkout/commerce}/finalCartAuthorization.ts +0 -0
  233. /package/apps/storefront/src/lib/{checkoutCommerce.ts → checkout/shared/checkoutCommerce.ts} +0 -0
  234. /package/apps/storefront/src/{components/islands → lib/compliance/browser}/checkoutVerificationFlow.ts +0 -0
  235. /package/apps/storefront/src/lib/{visitorRegionCookie.ts → compliance/shared/visitorRegionCookie.ts} +0 -0
  236. /package/apps/storefront/src/lib/{verification → compliance/verification}/totVerificationClient.ts +0 -0
  237. /package/apps/storefront/src/lib/{blog → content/blog}/access.ts +0 -0
  238. /package/apps/storefront/src/lib/{blog → content/blog}/collectionPaths.ts +0 -0
  239. /package/apps/storefront/src/lib/{blog → content/blog}/markdown.ts +0 -0
  240. /package/apps/storefront/src/lib/{blog → content/blog}/pagination.ts +0 -0
  241. /package/apps/storefront/src/lib/{blog → content/blog}/presentation.ts +0 -0
  242. /package/apps/storefront/src/lib/{blog → content/blog}/reactions.ts +0 -0
  243. /package/apps/storefront/src/lib/{blog → content/blog}/rss.ts +0 -0
  244. /package/apps/storefront/src/lib/{blog → content/blog}/teaser.ts +0 -0
  245. /package/apps/storefront/src/lib/{blog → content/blog}/types.ts +0 -0
  246. /package/apps/storefront/src/lib/{blog → content/blog}/viewCounts.ts +0 -0
  247. /package/apps/storefront/src/lib/{chrome → content/chrome}/ctaIdentity.ts +0 -0
  248. /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome-assignments.example.json +0 -0
  249. /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome.example.json +0 -0
  250. /package/apps/storefront/src/lib/{chrome → content/chrome}/managedCart.ts +0 -0
  251. /package/apps/storefront/src/lib/{chrome → content/chrome}/model.ts +0 -0
  252. /package/apps/storefront/src/lib/{chrome → content/chrome}/navCurrent.ts +0 -0
  253. /package/apps/storefront/src/lib/{chrome → content/chrome}/newsletterAgeAttestation.ts +0 -0
  254. /package/apps/storefront/src/lib/{chrome → content/chrome}/parseConfig.ts +0 -0
  255. /package/apps/storefront/src/lib/{chrome → content/chrome}/variant.ts +0 -0
  256. /package/apps/storefront/src/lib/{commerce → content/policies}/shippingPolicy.ts +0 -0
  257. /package/apps/storefront/src/lib/{seo → content/seo}/alternates.ts +0 -0
  258. /package/apps/storefront/src/lib/{seo → content/seo}/documentTitle.ts +0 -0
  259. /package/apps/storefront/src/lib/{seo → content/seo}/meta.ts +0 -0
  260. /package/apps/storefront/src/lib/{seo → content/seo}/urlForm.ts +0 -0
  261. /package/apps/storefront/src/lib/{asyncCss.ts → content/shared/asyncCss.ts} +0 -0
  262. /package/apps/storefront/src/lib/{colors.ts → content/shared/colors.ts} +0 -0
  263. /package/apps/storefront/src/lib/{format.ts → content/shared/format.ts} +0 -0
  264. /package/apps/storefront/src/lib/{i18n.ts → content/shared/i18n.ts} +0 -0
  265. /package/apps/storefront/src/lib/{jsonScript.ts → content/shared/jsonScript.ts} +0 -0
  266. /package/apps/storefront/src/lib/{placeholder.ts → content/shared/placeholder.ts} +0 -0
  267. /package/apps/storefront/src/lib/{styleGuidePaths.ts → content/shared/styleGuidePaths.ts} +0 -0
  268. /package/apps/storefront/src/lib/{the-build → content/the-build}/pagination.ts +0 -0
  269. /package/apps/storefront/src/lib/{the-build → content/the-build}/readingTime.ts +0 -0
  270. /package/apps/storefront/src/lib/{messaging → engagement/messaging}/messagesClient.ts +0 -0
  271. /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/confirmationEmail.ts +0 -0
  272. /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/consent.ts +0 -0
  273. /package/apps/storefront/src/lib/{admin → measurement/admin}/consentSettingsClient.ts +0 -0
  274. /package/apps/storefront/src/lib/{analytics → measurement/analytics}/index.ts +0 -0
  275. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorAllowlist.ts +0 -0
  276. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorIngest.ts +0 -0
  277. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionHealth.ts +0 -0
  278. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionSchema.ts +0 -0
  279. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantReadAccess.ts +0 -0
  280. /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/rewriteTrackingIds.ts +0 -0
  281. /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/writebackCandidate.ts +0 -0
  282. /package/apps/storefront/src/lib/{admin → orders/admin}/orderClient.ts +0 -0
  283. /package/apps/storefront/src/lib/{admin → orders/admin}/services/orders.ts +0 -0
  284. /package/apps/storefront/src/lib/{admin → orders/admin}/viewmodels/orders.ts +0 -0
  285. /package/apps/storefront/src/lib/{apps/orders → orders/providers}/foxyOrderClient.ts +0 -0
  286. /package/apps/storefront/src/lib/{admin → subscriptions/admin}/viewmodels/subscriptions.ts +0 -0
  287. /package/apps/storefront/src/lib/{subscription → subscriptions/subscription}/model.ts +0 -0
@@ -11,8 +11,8 @@
11
11
  * prefers-reduced-motion.
12
12
  */
13
13
  import { useCallback, useEffect, useRef, useState } from "preact/hooks";
14
- import { isCurrentNavHref } from "@/lib/chrome/navCurrent";
15
- import { CHROME_PLACEMENT } from "@/lib/chrome/trackingPlacements";
14
+ import { isCurrentNavHref } from "@/lib/content/chrome/navCurrent";
15
+ import { CHROME_PLACEMENT } from "@/lib/content/chrome/trackingPlacements";
16
16
  import { trackingAttributes } from "@tot/public-runtime";
17
17
 
18
18
  /**
@@ -4,8 +4,8 @@
4
4
  * component, three visual variants (density + emphasis). Cards may link
5
5
  * internally (base-path prefixed) or externally.
6
6
  */
7
- import Section from "@/components/Section.astro";
8
- import type { CardGridBlock } from "@/lib/storyblok/content-model";
7
+ import Section from "@/components/content/storefront/Section.astro";
8
+ import type { CardGridBlock } from "@/lib/content/storyblok/content-model";
9
9
  import { withBase } from "@/lib/basePath";
10
10
 
11
11
  interface Props {
@@ -5,7 +5,7 @@
5
5
  * inject markup or scripts. Samples must be public/server-side framed — never
6
6
  * embed secret keys or tokens (see the epic's D7 secret-scan guardrail).
7
7
  */
8
- import type { CodeSample } from "@/lib/storyblok/content-model";
8
+ import type { CodeSample } from "@/lib/content/storyblok/content-model";
9
9
  interface Props {
10
10
  sample: CodeSample;
11
11
  }
@@ -3,8 +3,8 @@
3
3
  * <CtaBand> — the final conversion band: a headline, optional subhead, and a
4
4
  * centered CTA row. Sits on the surface tone to close the page.
5
5
  */
6
- import type { CtaBandBlock } from "@/lib/storyblok/content-model";
7
- import MarketingCtas from "@/components/marketing/MarketingCtas.astro";
6
+ import type { CtaBandBlock } from "@/lib/content/storyblok/content-model";
7
+ import MarketingCtas from "@/components/content/storefront/marketing/MarketingCtas.astro";
8
8
  interface Props {
9
9
  block: CtaBandBlock;
10
10
  basePath: string;
@@ -3,13 +3,13 @@
3
3
  * <Faq> — a no-JS accordion of question/answer pairs using native
4
4
  * <details>/<summary>. Emits FAQPage JSON-LD so answers are eligible for rich
5
5
  * results — unless the tenant declares a structured-data profile, which owns every
6
- * JSON-LD node on the page (lib/seo/structuredData.ts). Answers are plain text
6
+ * JSON-LD node on the page (lib/content/seo/structuredData.ts). Answers are plain text
7
7
  * (auto-escaped).
8
8
  */
9
- import Section from "@/components/Section.astro";
10
- import type { FaqBlock } from "@/lib/storyblok/content-model";
11
- import { safeJsonScriptContent } from "@/lib/jsonScript";
12
- import { structuredDataProfile } from "@/lib/seo/structuredData";
9
+ import Section from "@/components/content/storefront/Section.astro";
10
+ import type { FaqBlock } from "@/lib/content/storyblok/content-model";
11
+ import { safeJsonScriptContent } from "@/lib/content/shared/jsonScript";
12
+ import { structuredDataProfile } from "@/lib/content/seo/structuredData";
13
13
  interface Props {
14
14
  block: FaqBlock;
15
15
  }
@@ -4,9 +4,9 @@
4
4
  * platform names/links, optional implementation points, and an optional safe
5
5
  * code sample. Platform links open externally when they carry an http href.
6
6
  */
7
- import Section from "@/components/Section.astro";
8
- import CodeSample from "@/components/marketing/CodeSample.astro";
9
- import type { IntegrationsBlock } from "@/lib/storyblok/content-model";
7
+ import Section from "@/components/content/storefront/Section.astro";
8
+ import CodeSample from "@/components/content/storefront/marketing/CodeSample.astro";
9
+ import type { IntegrationsBlock } from "@/lib/content/storyblok/content-model";
10
10
  import { withBase } from "@/lib/basePath";
11
11
 
12
12
  interface Props {
@@ -5,17 +5,17 @@
5
5
  * block is styled through theme tokens and reads its copy from tenant content.
6
6
  * Reused by the homepage and (future) marketing content pages.
7
7
  */
8
- import type { MarketingBlock } from "@/lib/storyblok/content-model";
9
- import MarketingHero from "@/components/marketing/MarketingHero.astro";
10
- import TrustBar from "@/components/marketing/TrustBar.astro";
11
- import SplitCompare from "@/components/marketing/SplitCompare.astro";
12
- import Steps from "@/components/marketing/Steps.astro";
13
- import CardGrid from "@/components/marketing/CardGrid.astro";
14
- import Integrations from "@/components/marketing/Integrations.astro";
15
- import ProofStrip from "@/components/marketing/ProofStrip.astro";
16
- import Testimonials from "@/components/marketing/Testimonials.astro";
17
- import Faq from "@/components/marketing/Faq.astro";
18
- import CtaBand from "@/components/marketing/CtaBand.astro";
8
+ import type { MarketingBlock } from "@/lib/content/storyblok/content-model";
9
+ import MarketingHero from "@/components/content/storefront/marketing/MarketingHero.astro";
10
+ import TrustBar from "@/components/content/storefront/marketing/TrustBar.astro";
11
+ import SplitCompare from "@/components/content/storefront/marketing/SplitCompare.astro";
12
+ import Steps from "@/components/content/storefront/marketing/Steps.astro";
13
+ import CardGrid from "@/components/content/storefront/marketing/CardGrid.astro";
14
+ import Integrations from "@/components/content/storefront/marketing/Integrations.astro";
15
+ import ProofStrip from "@/components/content/storefront/marketing/ProofStrip.astro";
16
+ import Testimonials from "@/components/content/storefront/marketing/Testimonials.astro";
17
+ import Faq from "@/components/content/storefront/marketing/Faq.astro";
18
+ import CtaBand from "@/components/content/storefront/marketing/CtaBand.astro";
19
19
 
20
20
  interface Props {
21
21
  blocks: MarketingBlock[];
@@ -5,7 +5,7 @@
5
5
  * a new tab with rel="noopener"; same-origin root-absolute hrefs get the tenant
6
6
  * base-path prefix so path-routed tenants stay in-tenant.
7
7
  */
8
- import type { MarketingCta } from "@/lib/storyblok/content-model";
8
+ import type { MarketingCta } from "@/lib/content/storyblok/content-model";
9
9
  import { withBase } from "@/lib/basePath";
10
10
 
11
11
  interface Props {
@@ -5,8 +5,8 @@
5
5
  * Right (optional): a "product moment" panel of demo/evidence log lines.
6
6
  * All copy is plain text (auto-escaped); no raw HTML is rendered.
7
7
  */
8
- import type { MarketingHeroBlock } from "@/lib/storyblok/content-model";
9
- import MarketingCtas from "@/components/marketing/MarketingCtas.astro";
8
+ import type { MarketingHeroBlock } from "@/lib/content/storyblok/content-model";
9
+ import MarketingCtas from "@/components/content/storefront/marketing/MarketingCtas.astro";
10
10
 
11
11
  interface Props {
12
12
  block: MarketingHeroBlock;
@@ -4,7 +4,7 @@
4
4
  * data"). A bold statement + supporting copy + a grid of proof bullets. Painted
5
5
  * in the primary color for a single strong moment. Plain text only.
6
6
  */
7
- import type { ProofStripBlock } from "@/lib/storyblok/content-model";
7
+ import type { ProofStripBlock } from "@/lib/content/storyblok/content-model";
8
8
  interface Props {
9
9
  block: ProofStripBlock;
10
10
  }
@@ -4,8 +4,8 @@
4
4
  * patchwork" vs "one platform"). The `before` column reads as the problem
5
5
  * (muted, ⚠) and `after` as the solution (accent, ✓).
6
6
  */
7
- import Section from "@/components/Section.astro";
8
- import type { SplitCompareBlock } from "@/lib/storyblok/content-model";
7
+ import Section from "@/components/content/storefront/Section.astro";
8
+ import type { SplitCompareBlock } from "@/lib/content/storyblok/content-model";
9
9
  interface Props {
10
10
  block: SplitCompareBlock;
11
11
  }
@@ -3,8 +3,8 @@
3
3
  * <Steps> — a numbered/emoji journey (e.g. the checkout verification flow).
4
4
  * Renders as a horizontal-scrolling rail on small screens, a wrapped row above.
5
5
  */
6
- import Section from "@/components/Section.astro";
7
- import type { StepsBlock } from "@/lib/storyblok/content-model";
6
+ import Section from "@/components/content/storefront/Section.astro";
7
+ import type { StepsBlock } from "@/lib/content/storyblok/content-model";
8
8
  interface Props {
9
9
  block: StepsBlock;
10
10
  }
@@ -3,8 +3,8 @@
3
3
  * <Testimonials> — outcome/quote cards with an optional stat lead-in and
4
4
  * attribution, plus an optional row of rating tokens. Plain text only.
5
5
  */
6
- import Section from "@/components/Section.astro";
7
- import type { TestimonialsBlock } from "@/lib/storyblok/content-model";
6
+ import Section from "@/components/content/storefront/Section.astro";
7
+ import type { TestimonialsBlock } from "@/lib/content/storyblok/content-model";
8
8
  interface Props {
9
9
  block: TestimonialsBlock;
10
10
  }
@@ -3,7 +3,7 @@
3
3
  * <TrustBar> — a quiet horizontal strip of proof tokens (countries, standards,
4
4
  * platform names, ratings). Plain text, dot-separated on small screens.
5
5
  */
6
- import type { TrustBarBlock } from "@/lib/storyblok/content-model";
6
+ import type { TrustBarBlock } from "@/lib/content/storyblok/content-model";
7
7
  interface Props {
8
8
  block: TrustBarBlock;
9
9
  }
@@ -14,7 +14,7 @@
14
14
  * aria-current="page". When `headings` is supplied (the guide's H2 outline) a
15
15
  * nested table of contents is rendered as in-page anchor links.
16
16
  */
17
- import { styleGuideHref } from "@/lib/styleGuidePaths";
17
+ import { styleGuideHref } from "@/lib/content/shared/styleGuidePaths";
18
18
 
19
19
  type Active = "index" | "tenant" | "components" | "chrome" | "guide";
20
20
 
@@ -5,11 +5,11 @@
5
5
  // implements, can't drift between the two routes (the-build sibling of fb-1791301493691-brzl6f —
6
6
  // mirrors @/components/blog/BlogIndexView.astro).
7
7
  import Layout from "@/layouts/Layout.astro";
8
- import PostAccessBadge from "@/components/blog/PostAccessBadge.astro";
9
- import type { BlogPostSummary } from "@/lib/blog/types.js";
10
- import type { TheBuildIndexCopy } from "@/lib/the-build/pagination.js";
11
- import type { BlogPresentation } from "@/lib/blog/presentation.js";
12
- import { collectionPathsV1 } from "@/lib/blog/collectionPaths.js";
8
+ import PostAccessBadge from "@/components/content/storefront/blog/PostAccessBadge.astro";
9
+ import type { BlogPostSummary } from "@/lib/content/blog/types.js";
10
+ import type { TheBuildIndexCopy } from "@/lib/content/the-build/pagination.js";
11
+ import type { BlogPresentation } from "@/lib/content/blog/presentation.js";
12
+ import { collectionPathsV1 } from "@/lib/content/blog/collectionPaths.js";
13
13
 
14
14
  interface Props {
15
15
  basePath: string;
@@ -11,8 +11,8 @@ import {
11
11
  WISHLIST_EVENT,
12
12
  type SavedItem,
13
13
  } from "@/lib/customers/shared/wishlist";
14
- import { formatPrice } from "@/lib/format";
15
- import { placeholderDataUri, isUsableImageUrl } from "@/lib/placeholder";
14
+ import { formatPrice } from "@/lib/content/shared/format";
15
+ import { placeholderDataUri, isUsableImageUrl } from "@/lib/content/shared/placeholder";
16
16
  import { withClientBase } from "@/lib/basePath";
17
17
 
18
18
  interface Props {
@@ -10,7 +10,7 @@
10
10
  * (--color-…, --radius-…); no hardcoded brand color.
11
11
  * data-widget="subscription-how-it-works" is the audit/test hook.
12
12
  */
13
- import type { SubscriptionStep } from "@/lib/subscription/model";
13
+ import type { SubscriptionStep } from "@/lib/subscriptions/subscription/model";
14
14
 
15
15
  interface Props {
16
16
  steps: SubscriptionStep[];
@@ -9,7 +9,7 @@
9
9
  * Token-styled only; data-widget="subscription-manage-entry" is the
10
10
  * audit/test hook.
11
11
  */
12
- import type { SubscriptionManageEntry } from "@/lib/subscription/model";
12
+ import type { SubscriptionManageEntry } from "@/lib/subscriptions/subscription/model";
13
13
 
14
14
  interface Props {
15
15
  entries: SubscriptionManageEntry[];
@@ -16,8 +16,8 @@
16
16
  * Token-styled only; data-widget="subscription-savings-explainer" is the
17
17
  * audit/test hook.
18
18
  */
19
- import type { SubscriptionFigure } from "@/lib/subscription/model";
20
- import { isIllustrative } from "@/lib/subscription/model";
19
+ import type { SubscriptionFigure } from "@/lib/subscriptions/subscription/model";
20
+ import { isIllustrative } from "@/lib/subscriptions/subscription/model";
21
21
  import IllustrativeLabel from "@/components/membership/storefront/membership/IllustrativeLabel.astro";
22
22
 
23
23
  interface Props {
@@ -8,34 +8,34 @@ import "@/styles/global.css";
8
8
  // Self-hosted web fonts (audit finding 6) — replaces the render-blocking
9
9
  // fonts.googleapis.com stylesheet. Bundled by Vite, served same-origin.
10
10
  import "@/styles/fonts.css";
11
- import Seo from "@/components/Seo.astro";
12
- import AnnouncementBar from "@/components/chrome/AnnouncementBar.astro";
13
- import SiteHeader from "@/components/chrome/SiteHeader.astro";
14
- import SiteFooter from "@/components/chrome/SiteFooter.astro";
15
- import QuickView from "@/components/islands/QuickView.tsx";
16
- import CheckoutLoader from "@/components/commerce/CheckoutLoader.astro";
17
- import CartDrawerStyles from "@/components/commerce/CartDrawerStyles.astro";
18
- import NicotineWarning from "@/components/compliance/NicotineWarning.astro";
19
- import PactActNotice from "@/components/compliance/PactActNotice.astro";
20
- import ShippingRestrictionNotice from "@/components/compliance/ShippingRestrictionNotice.astro";
21
- import ExciseTaxNotice from "@/components/compliance/ExciseTaxNotice.astro";
11
+ import Seo from "@/components/content/storefront/Seo.astro";
12
+ import AnnouncementBar from "@/components/content/storefront/chrome/AnnouncementBar.astro";
13
+ import SiteHeader from "@/components/content/storefront/chrome/SiteHeader.astro";
14
+ import SiteFooter from "@/components/content/storefront/chrome/SiteFooter.astro";
15
+ import QuickView from "@/components/catalog/storefront/islands/QuickView.tsx";
16
+ import CheckoutLoader from "@/components/checkout/storefront/commerce/CheckoutLoader.astro";
17
+ import CartDrawerStyles from "@/components/checkout/storefront/commerce/CartDrawerStyles.astro";
18
+ import NicotineWarning from "@/components/compliance/storefront/compliance/NicotineWarning.astro";
19
+ import PactActNotice from "@/components/compliance/storefront/compliance/PactActNotice.astro";
20
+ import ShippingRestrictionNotice from "@/components/compliance/storefront/compliance/ShippingRestrictionNotice.astro";
21
+ import ExciseTaxNotice from "@/components/compliance/storefront/compliance/ExciseTaxNotice.astro";
22
22
  import { EXCISE_TAX_DISCLOSURE_TEXT } from "@/lib/compliance/rawComplianceNotices";
23
- import IsolatedAgeGate from "@/components/islands/IsolatedAgeGate.tsx";
23
+ import IsolatedAgeGate from "@/components/compliance/storefront/islands/IsolatedAgeGate.tsx";
24
24
  import AuthBadge from "@/components/auth/AuthBadge.astro";
25
25
  import { referenceTheme } from "@/themes/reference";
26
26
  import { mergeTheme } from "@/themes/schema";
27
- import { organizationLd, websiteLd } from "@/lib/jsonld";
28
- import { composeStructuredData, structuredDataProfile, type StructuredDataPage } from "@/lib/seo/structuredData";
29
- import { canonicalUrl } from "@/lib/seo/urlForm";
30
- import { documentTitle } from "@/lib/seo/documentTitle";
31
- import { nonceInlineTags, prefixApiFormActions, CHROME_BODY_MARKER } from "@/lib/rawMarketingHtml";
32
- import { CHROME_BEHAVIOR_JS, CHROME_HEAD_JS, sanitizeSharedChromeFragment } from "@/lib/rawChrome";
33
- import { ASYNC_CSS_SWAP_JS } from "@/lib/asyncCss";
34
- import { reportTrackingChainHealth } from "@/lib/tracking/interactionHealth";
35
- import { resolveHeaderVariant, resolveFooterVariant } from "@/lib/chrome/variant";
36
- import { splitFooterLegal } from "@/lib/chrome/footerLegal";
37
- import { bindManagedCartAnchors, managedCartHref } from "@/lib/chrome/managedCart";
38
- import type { HeaderVariant, FooterVariant } from "@/lib/chrome/model";
27
+ import { organizationLd, websiteLd } from "@/lib/content/shared/jsonld";
28
+ import { composeStructuredData, structuredDataProfile, type StructuredDataPage } from "@/lib/content/seo/structuredData";
29
+ import { canonicalUrl } from "@/lib/content/seo/urlForm";
30
+ import { documentTitle } from "@/lib/content/seo/documentTitle";
31
+ import { nonceInlineTags, prefixApiFormActions, CHROME_BODY_MARKER } from "@/lib/content/shared/rawMarketingHtml";
32
+ import { CHROME_BEHAVIOR_JS, CHROME_HEAD_JS, sanitizeSharedChromeFragment } from "@/lib/content/shared/rawChrome";
33
+ import { ASYNC_CSS_SWAP_JS } from "@/lib/content/shared/asyncCss";
34
+ import { reportTrackingChainHealth } from "@/lib/measurement/tracking/interactionHealth";
35
+ import { resolveHeaderVariant, resolveFooterVariant } from "@/lib/content/chrome/variant";
36
+ import { splitFooterLegal } from "@/lib/content/chrome/footerLegal";
37
+ import { bindManagedCartAnchors, managedCartHref } from "@/lib/content/chrome/managedCart";
38
+ import type { HeaderVariant, FooterVariant } from "@/lib/content/chrome/model";
39
39
  import { renderIntegrationPhases, INTERACTION_TRACKING_BOOT_JS } from "@tot/public-runtime";
40
40
  import { readViewerSession } from "@/lib/auth/route";
41
41
  import AppWidgetFrame from "@/components/integrations/storefront/apps/AppWidgetFrame.astro";
@@ -54,7 +54,7 @@ interface Props {
54
54
  jsonLd?: Record<string, unknown> | Record<string, unknown>[];
55
55
  /**
56
56
  * What the page knows about itself for the tenant's declared structured-data profile
57
- * (lib/seo/structuredData.ts). When the profile declares a graph for `pageType`, that graph
57
+ * (lib/content/seo/structuredData.ts). When the profile declares a graph for `pageType`, that graph
58
58
  * is the page's ONLY JSON-LD and `jsonLd` is not emitted.
59
59
  */
60
60
  structuredData?: StructuredDataPage;
@@ -66,7 +66,7 @@ interface Props {
66
66
  fullBleed?: boolean;
67
67
  /**
68
68
  * Explicit per-page header/footer content-variant override (see
69
- * lib/chrome/model.ts HeaderVariant/FooterVariant). NEVER inferred from the
69
+ * lib/content/chrome/model.ts HeaderVariant/FooterVariant). NEVER inferred from the
70
70
  * route/CSS/title — a page that wants e.g. a minimal checkout header sets
71
71
  * this prop. Absent ⇒ the tenant's chrome-config default
72
72
  * (chrome.header.variant / chrome.footer.variant). An unrecognized value
@@ -76,7 +76,7 @@ interface Props {
76
76
  headerVariant?: HeaderVariant;
77
77
  footerVariant?: FooterVariant;
78
78
  // --- Article SEO hardening: pass-through to <Seo> (all additive) ---
79
- article?: import("@/lib/seo/meta.js").ArticleMeta;
79
+ article?: import("@/lib/content/seo/meta.js").ArticleMeta;
80
80
  imageAlt?: string;
81
81
  imageWidth?: number;
82
82
  imageHeight?: number;
@@ -86,7 +86,7 @@ interface Props {
86
86
  // --- hreflang / <html lang> (additive) ---
87
87
  /** Per-variant `hreflang` alternates for a translated article; threaded to
88
88
  * <Seo>. Absent/empty ⇒ no alternate links (singleton unchanged). */
89
- alternates?: import("@/lib/seo/alternates.js").Alternate[];
89
+ alternates?: import("@/lib/content/seo/alternates.js").Alternate[];
90
90
  /** Overrides `<html lang>` (e.g. a translated article's `inLanguage`). Absent ⇒
91
91
  * the tenant-locale default, so non-translated pages are unchanged. */
92
92
  lang?: string;
@@ -156,7 +156,7 @@ const chrome = await Astro.locals.content.getChrome();
156
156
 
157
157
  // Explicit variant resolution (fail-closed): the page's override wins over
158
158
  // the tenant's chrome-config default; an unrecognized value throws with an
159
- // actionable message rather than silently falling back (lib/chrome/variant.ts).
159
+ // actionable message rather than silently falling back (lib/content/chrome/variant.ts).
160
160
  const resolvedHeaderVariant = resolveHeaderVariant(headerVariant, chrome.header.variant);
161
161
  const resolvedFooterVariant = resolveFooterVariant(footerVariant, chrome.footer.variant);
162
162
  const footerCompliance = [chrome.footer.warning, chrome.complianceStrip]
@@ -256,7 +256,7 @@ const themeHeaderLogo =
256
256
  ? { src: headerLogoSrc, alt: tenant.displayName }
257
257
  : undefined;
258
258
 
259
- // chrome.header.brand (lib/chrome/model.ts ChromeBrand) is the governed,
259
+ // chrome.header.brand (lib/content/chrome/model.ts ChromeBrand) is the governed,
260
260
  // schema-validated brand identity — SOURCE OF TRUTH per field when set,
261
261
  // falling back to the theme-derived values above only where a field is
262
262
  // absent, so a tenant that hasn't authored a brand config is unaffected.
@@ -268,7 +268,7 @@ const headerBrandHref = brand?.href;
268
268
 
269
269
  // Footer bottom bar: a "Legal"-titled column MOVES out of the grid and its
270
270
  // links render beside the copyright — one shared split with the raw renderer
271
- // (lib/chrome/footerLegal.ts), so neither surface can duplicate them.
271
+ // (lib/content/chrome/footerLegal.ts), so neither surface can duplicate them.
272
272
  const { gridColumns: footerColumns, legalLinks: bottomLinks } = splitFooterLegal(
273
273
  chrome.footer.columns,
274
274
  );
@@ -636,7 +636,7 @@ const footerWidgets = await renderWidgetSlot(
636
636
 
637
637
  {/* Swaps every <AsyncStylesheet>-rendered preload link to rel="stylesheet"
638
638
  once fetched. ONE nonced script per document handles every such link,
639
- however many <AsyncStylesheet> instances rendered (lib/asyncCss.ts —
639
+ however many <AsyncStylesheet> instances rendered (lib/content/shared/asyncCss.ts —
640
640
  the onload="" attribute trick can't carry a nonce under this CSP). A
641
641
  no-op when the page has none. */}
642
642
  <script is:inline nonce={cspNonce} set:html={ASYNC_CSS_SWAP_JS}></script>
@@ -59,7 +59,7 @@ import {
59
59
  type ActivityTimelineRow,
60
60
  type DeploySkewSummary,
61
61
  } from "./query.js";
62
- import type { Queryable } from "../d1/catalog.js";
62
+ import type { Queryable } from "../catalog/d1/catalog.js";
63
63
 
64
64
  /** Severity, mirroring `rumAlert.AlertSeverity` / `manifest.Severity`. */
65
65
  export type AlertSeverity = "page" | "critical" | "warning" | "info";
@@ -1,4 +1,4 @@
1
- import type { D1Like } from "@/lib/d1/catalog";
1
+ import type { D1Like } from "@/lib/catalog/d1/catalog";
2
2
 
3
3
  const DIAGNOSTIC_STUCK_AFTER_MS = 5 * 60 * 1000;
4
4
 
@@ -2,8 +2,8 @@ import type { AdminTenantEnvelope } from "../../admin/envelope";
2
2
  import { memoizeByEnvelope } from "../../admin/memoizeByEnvelope";
3
3
  import type { EvidenceReference } from "../evidence/evidenceReference";
4
4
  import { getCustomersViewModel } from "../../customers/fixtures/customers";
5
- import { getOrdersViewModel } from "../../admin/services/mock/orders";
6
- import { getProductsViewModel } from "../../admin/services/mock/products";
5
+ import { getOrdersViewModel } from "../../orders/fixtures/orders";
6
+ import { getProductsViewModel } from "../../catalog/fixtures/products";
7
7
 
8
8
  /**
9
9
  * Deterministic evidence graph, built by connecting the domains already
@@ -5,7 +5,7 @@
5
5
  * tenant's lifecycle activity newest-first for the `/admin` ops timeline UI
6
6
  * ("who shipped/rejected what, when, why — and what happened to my change/
7
7
  * deploy"). PURE over the injected `Queryable` seam (D1 in the Worker, an
8
- * in-memory `node:sqlite` in tests), same posture as `lib/d1/catalog.ts` and the
8
+ * in-memory `node:sqlite` in tests), same posture as `lib/catalog/d1/catalog.ts` and the
9
9
  * write path (`store.ts`).
10
10
  *
11
11
  * TENANT ISOLATION IS THE INVARIANT. `tenantId` is REQUIRED on every query and is
@@ -38,7 +38,7 @@ import {
38
38
  type ActivitySource,
39
39
  type ActivityStatus,
40
40
  } from "@tot/public-runtime";
41
- import type { Queryable } from "../d1/catalog.js";
41
+ import type { Queryable } from "../catalog/d1/catalog.js";
42
42
  import { workerCommitShort, UNKNOWN_COMMIT } from "./workerCommit.js";
43
43
 
44
44
  /** Hard cap on rows returned by one query — the ops timeline is paged/bounded,
@@ -19,7 +19,7 @@
19
19
  * critical path via `runAfterResponse` at the call site.
20
20
  */
21
21
  import { getActionSpec, type ActivityEvent, type ActivitySink } from "@tot/public-runtime";
22
- import type { Queryable } from "../d1/catalog.js";
22
+ import type { Queryable } from "../catalog/d1/catalog.js";
23
23
 
24
24
  /** The slice of Cloudflare's Analytics Engine dataset binding we use. */
25
25
  export interface AnalyticsEngineLike {
@@ -1,11 +1,11 @@
1
- export { getOrdersViewModel } from "./orders";
2
- export { getProductsViewModel } from "./products";
1
+ export { getOrdersViewModel } from "../../../orders/fixtures/orders";
2
+ export { getProductsViewModel } from "../../../catalog/fixtures/products";
3
3
  export { getCustomersViewModel } from "../../../customers/fixtures/customers";
4
4
  export { getReportingViewModel } from "../../../reporting/fixtures/reporting";
5
5
  export { getSettingsViewModel } from "./settings";
6
- export { getCheckoutSettingsViewModel } from "./checkoutSettings";
7
- export type { CheckoutSettingsViewModel } from "./checkoutSettings";
8
- export { getSubscriptionsViewModel } from "./subscriptions";
6
+ export { getCheckoutSettingsViewModel } from "../../../checkout/fixtures/checkoutSettings";
7
+ export type { CheckoutSettingsViewModel } from "../../../checkout/fixtures/checkoutSettings";
8
+ export { getSubscriptionsViewModel } from "../../../subscriptions/fixtures/subscriptions";
9
9
  export { getAiWorkflowsViewModel } from "./aiWorkflows";
10
10
  export { getEvidenceViewModel } from "../../../activity/fixtures/evidence";
11
11
  export { SEEDED_TENANTS, tenantProfile } from "./tenants";
@@ -8,7 +8,7 @@
8
8
  * - referenced Shopify CDN -> Shopify's native ?width= scheme
9
9
  * - anything else usable -> the URL as-is, no srcset
10
10
  */
11
- import { placeholderDataUri, isUsableImageUrl } from "../../placeholder.js";
11
+ import { placeholderDataUri, isUsableImageUrl } from "../../content/shared/placeholder.js";
12
12
 
13
13
  const RESPONSIVE_IMAGE_WIDTHS = [320, 480, 640, 960, 1280, 1600] as const;
14
14
 
@@ -34,7 +34,7 @@
34
34
  * covers that one, so the two cannot drift apart unnoticed.
35
35
  *
36
36
  * Consumers: {@link withBase} (and through it {@link bindBasePathAnchors}) and
37
- * `prefixTenantLinks` (lib/rawMarketingHtml.ts).
37
+ * `prefixTenantLinks` (lib/content/shared/rawMarketingHtml.ts).
38
38
  */
39
39
  export const ROOT_SERVED_HREF_NAMESPACES = [
40
40
  "_a",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  applySaveAfterEdits, draftIsDirty, editorFromPayload, parseSettingsNumber, saveBody, selectDraftMethod,
4
4
  type SettingsEditorState, type SettingsPayload,
5
- } from "@/lib/admin/catalogSettingsState";
6
- import { latestPreview, type PreviewStatus } from "@/lib/admin/catalogSettingsPreview";
5
+ } from "@/lib/catalog/admin/catalogSettingsState";
6
+ import { latestPreview, type PreviewStatus } from "@/lib/catalog/admin/catalogSettingsPreview";
7
7
 
8
8
  interface MethodOption { id: string; title: string; reason: string }
9
9
  interface SettingsResponse extends SettingsPayload {
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import type { CatalogProduct, TenantConfig } from "@tot/public-runtime";
7
7
  import { CatalogFileError } from "@tot/public-runtime/catalog-files";
8
- import { readGrandfatheredSnapshot } from "@/lib/tot/ToTClient";
9
- import { readTenantCatalogFiles, type CatalogArtifactSource } from "@/lib/tot/tenantCatalog";
8
+ import { readGrandfatheredSnapshot } from "@/lib/catalog/tot/ToTClient";
9
+ import { readTenantCatalogFiles, type CatalogArtifactSource } from "@/lib/catalog/tot/tenantCatalog";
10
10
 
11
11
  export type CatalogOrigin = "files" | "snapshot" | "none";
12
12
 
@@ -19,7 +19,7 @@ import {
19
19
  type ListProductsQuery,
20
20
  type ListProductsResponse,
21
21
  } from "@tot/public-runtime";
22
- import { PRICE_BUCKETS } from "../priceBuckets.js";
22
+ import { PRICE_BUCKETS } from "../shared/priceBuckets.js";
23
23
 
24
24
  /** Minimal async query seam — implemented by D1 and by the node:sqlite test shim. */
25
25
  export interface Queryable {
@@ -1,5 +1,5 @@
1
- import type { AdminTenantEnvelope } from "../../envelope";
2
- import { MOCK_ANCHOR_ISO, offsetIso, pick, randomBool, randomInt, seededRandom } from "../../seed";
1
+ import type { AdminTenantEnvelope } from "../../admin/envelope";
2
+ import { MOCK_ANCHOR_ISO, offsetIso, pick, randomBool, randomInt, seededRandom } from "../../admin/seed";
3
3
  import type {
4
4
  ExciseCheckKey,
5
5
  ExciseReadinessCheck,
@@ -7,9 +7,9 @@ import type {
7
7
  ProductRow,
8
8
  ProductsViewModel,
9
9
  ProductVariant,
10
- } from "../../viewmodels/products";
11
- import { tenantProfile } from "./tenants";
12
- import { memoizeByEnvelope } from "../../memoizeByEnvelope";
10
+ } from "../admin/viewmodels/products";
11
+ import { tenantProfile } from "../../admin/services/mock/tenants";
12
+ import { memoizeByEnvelope } from "../../admin/memoizeByEnvelope";
13
13
 
14
14
  // Must stay index-aligned with orders.ts's ITEM_POOLS: a product's id is
15
15
  // `prod-<tenant>-<position here>`, and orders.ts derives each order's productId
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Used by FixtureToTClient.search (no D1 binding): typo-tolerant, relevance-ranked
5
5
  * search over the bundled catalog snapshot, zero infra. When a D1 binding is wired
6
- * (D1ToTClient), search instead goes through FTS5 — see lib/d1/catalog.ts.
6
+ * (D1ToTClient), search instead goes through FTS5 — see lib/catalog/d1/catalog.ts.
7
7
  * This module is the portable floor an extracted
8
8
  * merchant gets out of the box (docs/extraction-runbook.md).
9
9
  */
@@ -1,4 +1,4 @@
1
- import type { FeaturedProductsBlock } from "@/lib/storyblok/content-model";
1
+ import type { FeaturedProductsBlock } from "@/lib/content/storyblok/content-model";
2
2
 
3
3
  export function featuredProductsPresentationView(presentation: FeaturedProductsBlock["presentation"]) {
4
4
  return presentation === "carousel" ? "carousel" : "grid";
@@ -3,7 +3,7 @@
3
3
  * product's "from" price (price_range.min — the same figure ProductCard shows
4
4
  * and price-asc/desc sorts by), so a product falls into exactly one bucket
5
5
  * (no double-counting across buckets). Shared by both listProducts engines
6
- * (lib/tot/query.ts, lib/d1/catalog.ts) and the FacetSidebar so bucket
6
+ * (lib/catalog/tot/query.ts, lib/catalog/d1/catalog.ts) and the FacetSidebar so bucket
7
7
  * boundaries + labels never drift between them.
8
8
  */
9
9
  export interface PriceBucket {
@@ -128,15 +128,15 @@ type FixtureBundle = {
128
128
  // tracked only for the tenants in scripts/tenant/catalog-in-repo-exceptions.json (plus
129
129
  // the e2e scopes). Vite resolves these globs at build time. reviews.json is optional.
130
130
  const productGlobs = import.meta.glob<CatalogProduct[]>(
131
- "../../../../../packages/migration/out/catalog/*/products.json",
131
+ "../../../../../../packages/migration/out/catalog/*/products.json",
132
132
  { import: "default" },
133
133
  );
134
134
  const collectionGlobs = import.meta.glob<CatalogCollection[]>(
135
- "../../../../../packages/migration/out/catalog/*/collections.json",
135
+ "../../../../../../packages/migration/out/catalog/*/collections.json",
136
136
  { import: "default" },
137
137
  );
138
138
  const reviewGlobs = import.meta.glob<Record<string, Review[]>>(
139
- "../../../../../packages/migration/out/catalog/*/reviews.json",
139
+ "../../../../../../packages/migration/out/catalog/*/reviews.json",
140
140
  { import: "default" },
141
141
  );
142
142
 
@@ -10,7 +10,7 @@ import type {
10
10
  FacetValue,
11
11
  ListProductsQuery,
12
12
  } from "@tot/public-runtime";
13
- import { PRICE_BUCKETS, bucketForPrice } from "../priceBuckets.js";
13
+ import { PRICE_BUCKETS, bucketForPrice } from "../shared/priceBuckets.js";
14
14
 
15
15
  /** Lowest variant price (the "from" price shown on cards). */
16
16
  export function fromPrice(p: CatalogProduct): number {