@tokenoftrust/storefront-runner 2.4.87 → 2.4.89

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/apps/storefront/astro.config.mjs +1 -1
  2. package/apps/storefront/dev-plugins/tenant-hot-reload.mjs +1 -1
  3. package/apps/storefront/env.d.ts +1 -1
  4. package/apps/storefront/perf/README.md +7 -7
  5. package/apps/storefront/perf/assert-budgets.ts +2 -2
  6. package/apps/storefront/public/shared/commerce-chrome.css +1 -1
  7. package/apps/storefront/public/shared/commerce-marketing.css +1 -1
  8. package/apps/storefront/src/components/catalog/storefront/CollectionCard.astro +1 -1
  9. package/apps/storefront/src/components/catalog/storefront/ProductCard.astro +4 -4
  10. package/apps/storefront/src/components/catalog/storefront/commerce/BrandGrid.astro +1 -1
  11. package/apps/storefront/src/components/catalog/storefront/commerce/PriceDisplay.astro +2 -2
  12. package/apps/storefront/src/components/catalog/storefront/commerce/ProductCarousel.astro +2 -2
  13. package/apps/storefront/src/components/catalog/storefront/commerce/ProductGrid.astro +3 -3
  14. package/apps/storefront/src/components/catalog/storefront/commerce/ReviewList.astro +1 -1
  15. package/apps/storefront/src/components/catalog/storefront/islands/ImageGallery.tsx +1 -1
  16. package/apps/storefront/src/components/catalog/storefront/islands/QuickView.tsx +2 -2
  17. package/apps/storefront/src/components/catalog/storefront/islands/RecentlyViewed.tsx +2 -2
  18. package/apps/storefront/src/components/catalog/storefront/islands/SearchTypeahead.tsx +2 -2
  19. package/apps/storefront/src/components/catalog/storefront/islands/VariantSelector.tsx +1 -1
  20. package/apps/storefront/src/components/compliance/storefront/islands/AgeGate.tsx +2 -2
  21. package/apps/storefront/src/components/compliance/storefront/islands/IsolatedAgeGate.tsx +1 -1
  22. package/apps/storefront/src/components/{AsyncStylesheet.astro → content/storefront/AsyncStylesheet.astro} +2 -2
  23. package/apps/storefront/src/components/{Breadcrumbs.astro → content/storefront/Breadcrumbs.astro} +3 -3
  24. package/apps/storefront/src/components/{Seo.astro → content/storefront/Seo.astro} +5 -5
  25. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogIndexView.astro +6 -6
  26. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPaywall.astro +2 -2
  27. package/apps/storefront/src/components/{blog → content/storefront/blog}/BlogPostArticle.astro +7 -7
  28. package/apps/storefront/src/components/{blog → content/storefront/blog}/PostAccessBadge.astro +1 -1
  29. package/apps/storefront/src/components/{blog → content/storefront/blog}/PostGrid.astro +3 -3
  30. package/apps/storefront/src/components/{blog → content/storefront/blog}/ReactionBar.astro +1 -1
  31. package/apps/storefront/src/components/{blog → content/storefront/blog}/ShareRow.astro +1 -1
  32. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/MegaMenu.astro +3 -3
  33. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/NavDropdown.astro +2 -2
  34. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteFooter.astro +5 -5
  35. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/SiteHeader.astro +8 -8
  36. package/apps/storefront/src/components/{chrome → content/storefront/chrome}/UtilityNav.astro +2 -2
  37. package/apps/storefront/src/components/content/{Callout.astro → storefront/content/Callout.astro} +1 -1
  38. package/apps/storefront/src/components/content/{PromoTiles.astro → storefront/content/PromoTiles.astro} +3 -3
  39. package/apps/storefront/src/components/content/{ProseSections.astro → storefront/content/ProseSections.astro} +3 -3
  40. package/apps/storefront/src/components/{home → content/storefront/home}/Hero.astro +4 -4
  41. package/apps/storefront/src/components/{islands → content/storefront/islands}/MobileNav.tsx +2 -2
  42. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CardGrid.astro +2 -2
  43. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CodeSample.astro +1 -1
  44. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/CtaBand.astro +2 -2
  45. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Faq.astro +5 -5
  46. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Integrations.astro +3 -3
  47. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingBlocks.astro +11 -11
  48. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingCtas.astro +1 -1
  49. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/MarketingHero.astro +2 -2
  50. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/ProofStrip.astro +1 -1
  51. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/SplitCompare.astro +2 -2
  52. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Steps.astro +2 -2
  53. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/Testimonials.astro +2 -2
  54. package/apps/storefront/src/components/{marketing → content/storefront/marketing}/TrustBar.astro +1 -1
  55. package/apps/storefront/src/components/{style-guide → content/storefront/style-guide}/StyleGuideNav.astro +1 -1
  56. package/apps/storefront/src/components/{the-build → content/storefront/the-build}/TheBuildIndexView.astro +5 -5
  57. package/apps/storefront/src/components/customers/storefront/islands/SavedList.tsx +2 -2
  58. package/apps/storefront/src/config/adminTargetTenant.ts +1 -1
  59. package/apps/storefront/src/config/devTenants.ts +1 -1
  60. package/apps/storefront/src/config/resolver.ts +1 -1
  61. package/apps/storefront/src/layouts/Layout.astro +28 -28
  62. package/apps/storefront/src/lib/{admin → access/admin}/README.md +3 -3
  63. package/apps/storefront/src/lib/{admin → access/admin}/adminShell.ts +1 -1
  64. package/apps/storefront/src/lib/{admin → access/admin}/envelope.ts +2 -2
  65. package/apps/storefront/src/lib/{admin → access/admin}/viewmodels/settings.ts +2 -2
  66. package/apps/storefront/src/lib/{auth → access/auth}/adminApiGuard.ts +2 -2
  67. package/apps/storefront/src/lib/{auth → access/auth}/adminEntry.ts +2 -2
  68. package/apps/storefront/src/lib/{auth → access/auth}/adminLanding.ts +1 -1
  69. package/apps/storefront/src/lib/{auth → access/auth}/identityToken.ts +1 -1
  70. package/apps/storefront/src/lib/{auth → access/auth}/loginGate.ts +2 -2
  71. package/apps/storefront/src/lib/{auth → access/auth}/totAccessClient.ts +4 -4
  72. package/apps/storefront/src/lib/{dashboard → access/dashboard}/delegateGate.ts +2 -2
  73. package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffAdmission.ts +1 -1
  74. package/apps/storefront/src/lib/{dashboard → access/dashboard}/tenantSelection.ts +1 -1
  75. package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/settings.ts +4 -4
  76. package/apps/storefront/src/lib/{email → access/notifications}/magicLinkInviteEmail.ts +1 -1
  77. package/apps/storefront/src/lib/{shared → access/shared}/accessExplain.ts +1 -1
  78. package/apps/storefront/src/lib/{adminTenantEnvelope.ts → access/shared/adminTenantEnvelope.ts} +3 -3
  79. package/apps/storefront/src/lib/{shared → access/shared}/developerInvites.ts +4 -4
  80. package/apps/storefront/src/lib/{shared → access/shared}/invitePreflight.ts +1 -1
  81. package/apps/storefront/src/lib/{shared → access/shared}/principalGrants.ts +2 -2
  82. package/apps/storefront/src/lib/{shared → access/shared}/viewerGrant.ts +1 -1
  83. package/apps/storefront/src/lib/activity/fixtures/evidence.ts +2 -2
  84. package/apps/storefront/src/lib/activity/uiActor.ts +4 -4
  85. package/apps/storefront/src/lib/activity/workerCommit.ts +1 -1
  86. package/apps/storefront/src/lib/admin/services/mock/index.ts +4 -4
  87. package/apps/storefront/src/lib/assets/shared/imageAttrs.ts +1 -1
  88. package/apps/storefront/src/lib/{admin → automation/admin}/viewmodels/aiWorkflows.ts +3 -3
  89. package/apps/storefront/src/lib/{admin → automation}/ai/askEnvelope.ts +1 -1
  90. package/apps/storefront/src/lib/{admin → automation}/ai/operationalRuns.ts +4 -4
  91. package/apps/storefront/src/lib/{admin/services/mock → automation/fixtures}/aiWorkflows.ts +4 -4
  92. package/apps/storefront/src/lib/basePath.ts +2 -2
  93. package/apps/storefront/src/lib/catalog/fixtures/products.ts +4 -4
  94. package/apps/storefront/src/lib/catalog/shared/featuredProductsPresentation.ts +1 -1
  95. package/apps/storefront/src/lib/catalog/tot/tenantCatalog.ts +1 -1
  96. package/apps/storefront/src/lib/checkout/admin/checkoutStyleTarget.ts +2 -2
  97. package/apps/storefront/src/lib/checkout/fixtures/checkoutSettings.ts +1 -1
  98. package/apps/storefront/src/lib/compliance/browser/checkoutVerificationFlow.ts +1 -1
  99. package/apps/storefront/src/lib/compliance/verification/totVerificationClient.ts +1 -1
  100. package/apps/storefront/src/lib/{blog → content/blog}/access.ts +1 -1
  101. package/apps/storefront/src/lib/{blog → content/blog}/collection.ts +9 -9
  102. package/apps/storefront/src/lib/{blog → content/blog}/postView.ts +5 -5
  103. package/apps/storefront/src/lib/{blog → content/blog}/provider.ts +7 -7
  104. package/apps/storefront/src/lib/{chrome → content/chrome}/footerLegal.ts +2 -2
  105. package/apps/storefront/src/lib/{chrome → content/chrome}/trackingPlacements.ts +1 -1
  106. package/apps/storefront/src/lib/{seo → content/seo}/faqItems.ts +1 -1
  107. package/apps/storefront/src/lib/{seo → content/seo}/structuredData.ts +1 -1
  108. package/apps/storefront/src/lib/{breadcrumbs.ts → content/shared/breadcrumbs.ts} +1 -1
  109. package/apps/storefront/src/lib/{heroSlideshow.ts → content/shared/heroSlideshow.ts} +1 -1
  110. package/apps/storefront/src/lib/{homeVisualParity.ts → content/shared/homeVisualParity.ts} +1 -1
  111. package/apps/storefront/src/lib/{jsonld.ts → content/shared/jsonld.ts} +1 -1
  112. package/apps/storefront/src/lib/{rawChrome.ts → content/shared/rawChrome.ts} +12 -12
  113. package/apps/storefront/src/lib/{rawMarketingHtml.ts → content/shared/rawMarketingHtml.ts} +3 -3
  114. package/apps/storefront/src/lib/{styleGuideThemes.ts → content/shared/styleGuideThemes.ts} +3 -3
  115. package/apps/storefront/src/lib/{storyblok → content/storyblok}/content-model.ts +1 -1
  116. package/apps/storefront/src/lib/{storyblok → content/storyblok}/provider.ts +27 -27
  117. package/apps/storefront/src/lib/{the-build → content/the-build}/provider.ts +1 -1
  118. package/apps/storefront/src/lib/{the-build → content/the-build}/toc.ts +1 -1
  119. package/apps/storefront/src/lib/customers/fixtures/customers.ts +3 -3
  120. package/apps/storefront/src/lib/d1/schema-apps.ts +2 -2
  121. package/apps/storefront/src/lib/{admin → developer-experience/admin}/memoizeByEnvelope.ts +1 -1
  122. package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityIngestToken.ts +2 -2
  123. package/apps/storefront/src/lib/{dev → developer-experience/dev}/cliSignInCode.ts +3 -3
  124. package/apps/storefront/src/lib/{dev → developer-experience/dev}/livePreview.ts +1 -1
  125. package/apps/storefront/src/lib/{dev → developer-experience/dev}/previewStatus.ts +2 -2
  126. package/apps/storefront/src/lib/{dev → developer-experience/dev}/rendezvousBroker.ts +2 -2
  127. package/apps/storefront/src/lib/{dev → developer-experience/dev}/subjectReissue.ts +2 -2
  128. package/apps/storefront/src/lib/email/candidateConflictEmail.ts +1 -1
  129. package/apps/storefront/src/lib/{messaging → engagement/messaging}/messagesClient.ts +1 -1
  130. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/digest.ts +2 -2
  131. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/resendClient.ts +1 -1
  132. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/send.ts +2 -2
  133. package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/subscribers.ts +1 -1
  134. package/apps/storefront/src/lib/{social → engagement/social}/golive.ts +2 -2
  135. package/apps/storefront/src/lib/{social → engagement/social}/notify.ts +1 -1
  136. package/apps/storefront/src/lib/{social → engagement/social}/tokenStore.ts +3 -3
  137. package/apps/storefront/src/lib/fulfillment/fulfillmentService.ts +3 -3
  138. package/apps/storefront/src/lib/integrations/integration/browserEnvironment.ts +1 -1
  139. package/apps/storefront/src/lib/{apps → measurement/consent}/consentConfigRead.ts +1 -1
  140. package/apps/storefront/src/lib/{tracking → measurement/tracking}/d1Control.ts +2 -2
  141. package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionCollector.ts +2 -2
  142. package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionStore.ts +0 -0
  143. package/apps/storefront/src/lib/{tracking → measurement/tracking}/pruneRollup.ts +2 -2
  144. package/apps/storefront/src/lib/{tracking → measurement/tracking}/publishSafetyNet.ts +1 -1
  145. package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantD1Registry.ts +2 -2
  146. package/apps/storefront/src/lib/{monitoring → observability/monitoring}/manifest.ts +2 -2
  147. package/apps/storefront/src/lib/{analytics → observability/performance}/budgets.json +1 -1
  148. package/apps/storefront/src/lib/orders/fixtures/orders.ts +4 -4
  149. package/apps/storefront/src/lib/previewReload.ts +1 -1
  150. package/apps/storefront/src/lib/publication/contentProvider.ts +7 -7
  151. package/apps/storefront/src/lib/publication/mountedDiscovery.ts +1 -1
  152. package/apps/storefront/src/lib/publication/rootDiscovery.ts +4 -4
  153. package/apps/storefront/src/lib/reporting/fixtures/reporting.ts +3 -3
  154. package/apps/storefront/src/lib/runtimeEnv.ts +1 -1
  155. package/apps/storefront/src/lib/subscriptions/fixtures/subscriptions.ts +3 -3
  156. package/apps/storefront/src/middleware/controlPlane.ts +7 -7
  157. package/apps/storefront/src/middleware/index.ts +11 -11
  158. package/apps/storefront/src/middleware/renderChain.ts +6 -6
  159. package/apps/storefront/src/pages/[...slug].astro +13 -13
  160. package/apps/storefront/src/pages/api/admin/activity-alerts.ts +1 -1
  161. package/apps/storefront/src/pages/api/admin/commerce-readiness.ts +1 -1
  162. package/apps/storefront/src/pages/api/admin/fulfillment/batches.ts +1 -1
  163. package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id]/address.ts +1 -1
  164. package/apps/storefront/src/pages/api/admin/fulfillment/orders/[id].ts +1 -1
  165. package/apps/storefront/src/pages/api/admin/interaction-insights.ts +4 -4
  166. package/apps/storefront/src/pages/api/admin/orders/[id].ts +1 -1
  167. package/apps/storefront/src/pages/api/admin/orders.ts +1 -1
  168. package/apps/storefront/src/pages/api/auth/logout.ts +2 -2
  169. package/apps/storefront/src/pages/api/auth/magic-exchange.ts +6 -6
  170. package/apps/storefront/src/pages/api/auth/send.ts +2 -2
  171. package/apps/storefront/src/pages/api/auth/step-up-send.ts +1 -1
  172. package/apps/storefront/src/pages/api/auth/step-up-verify.ts +3 -3
  173. package/apps/storefront/src/pages/api/auth/verify.ts +4 -4
  174. package/apps/storefront/src/pages/api/blog/[collection]/[slug]/react.ts +2 -2
  175. package/apps/storefront/src/pages/api/newsletter/[collection]/subscribe.ts +4 -4
  176. package/apps/storefront/src/pages/api/newsletter/confirm.ts +1 -1
  177. package/apps/storefront/src/pages/api/newsletter/unsubscribe.ts +1 -1
  178. package/apps/storefront/src/pages/api/rum/vitals.ts +2 -2
  179. package/apps/storefront/src/pages/api/tracking/interaction.ts +5 -5
  180. package/apps/storefront/src/pages/auth/login.astro +2 -2
  181. package/apps/storefront/src/pages/auth/magic.astro +1 -1
  182. package/apps/storefront/src/pages/blog/[slug].astro +2 -2
  183. package/apps/storefront/src/pages/blog/author/[author].astro +8 -8
  184. package/apps/storefront/src/pages/blog/category/[category].astro +8 -8
  185. package/apps/storefront/src/pages/blog/index.astro +4 -4
  186. package/apps/storefront/src/pages/blog/page/[n].astro +4 -4
  187. package/apps/storefront/src/pages/blog/tag/[tag].astro +8 -8
  188. package/apps/storefront/src/pages/cart.ts +1 -1
  189. package/apps/storefront/src/pages/collections/[handle].astro +7 -7
  190. package/apps/storefront/src/pages/collections/index.astro +4 -4
  191. package/apps/storefront/src/pages/index.astro +10 -10
  192. package/apps/storefront/src/pages/llms.txt.ts +2 -2
  193. package/apps/storefront/src/pages/products/[handle].astro +11 -11
  194. package/apps/storefront/src/pages/saved.astro +2 -2
  195. package/apps/storefront/src/pages/search.astro +5 -5
  196. package/apps/storefront/src/pages/sitemap.xml.ts +8 -8
  197. package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +24 -24
  198. package/apps/storefront/src/pages/style-guide/[tenant]/chrome/[theme].astro +2 -2
  199. package/apps/storefront/src/pages/style-guide/[tenant]/guide/[theme].astro +3 -3
  200. package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +3 -3
  201. package/apps/storefront/src/pages/style-guide/index.astro +1 -1
  202. package/apps/storefront/src/pages/the-build/[slug].astro +10 -10
  203. package/apps/storefront/src/pages/the-build/index.astro +5 -5
  204. package/apps/storefront/src/pages/the-build/page/[n].astro +5 -5
  205. package/apps/storefront/src/pages/the-build/rss.xml.ts +4 -4
  206. package/docs/widget-library-guide.md +36 -36
  207. package/package.json +1 -1
  208. package/packages/public-runtime/src/chrome.ts +4 -4
  209. package/packages/public-runtime/src/tracking-id-derivation.ts +1 -1
  210. package/scripts/dev/locate.mjs +1 -1
  211. package/apps/storefront/src/lib/admin/ai/index.ts +0 -6
  212. /package/apps/storefront/src/components/{auth → access/storefront/auth}/AuthBadge.astro +0 -0
  213. /package/apps/storefront/src/components/{Badge.astro → content/storefront/Badge.astro} +0 -0
  214. /package/apps/storefront/src/components/{EmptyState.astro → content/storefront/EmptyState.astro} +0 -0
  215. /package/apps/storefront/src/components/{Section.astro → content/storefront/Section.astro} +0 -0
  216. /package/apps/storefront/src/components/{chrome → content/storefront/chrome}/AnnouncementBar.astro +0 -0
  217. /package/apps/storefront/src/components/{commerce → content/storefront/commerce}/ArticleCard.astro +0 -0
  218. /package/apps/storefront/src/components/content/{NeedsReviewCallout.astro → storefront/content/NeedsReviewCallout.astro} +0 -0
  219. /package/apps/storefront/src/components/content/{ProseToc.astro → storefront/content/ProseToc.astro} +0 -0
  220. /package/apps/storefront/src/components/content/{RichText.astro → storefront/content/RichText.astro} +0 -0
  221. /package/apps/storefront/src/components/content/{TrustStrip.astro → storefront/content/TrustStrip.astro} +0 -0
  222. /package/apps/storefront/src/lib/{auth → access/auth}/brokerAssertion.ts +0 -0
  223. /package/apps/storefront/src/lib/{auth → access/auth}/devAuth.ts +0 -0
  224. /package/apps/storefront/src/lib/{auth → access/auth}/gatePage.ts +0 -0
  225. /package/apps/storefront/src/lib/{auth → access/auth}/internalContentAuthority.ts +0 -0
  226. /package/apps/storefront/src/lib/{auth → access/auth}/mcpClientAssertion.ts +0 -0
  227. /package/apps/storefront/src/lib/{auth → access/auth}/operatorSession.ts +0 -0
  228. /package/apps/storefront/src/lib/{auth → access/auth}/route.ts +0 -0
  229. /package/apps/storefront/src/lib/{auth → access/auth}/session.ts +0 -0
  230. /package/apps/storefront/src/lib/{auth → access/auth}/stepUpChallenge.ts +0 -0
  231. /package/apps/storefront/src/lib/{dashboard → access/dashboard}/staffVendorAccess.ts +0 -0
  232. /package/apps/storefront/src/lib/{dashboard → access/dashboard}/vendorQuery.ts +0 -0
  233. /package/apps/storefront/src/lib/{admin/services/mock → access/fixtures}/tenants.ts +0 -0
  234. /package/apps/storefront/src/lib/{privacy → access/privacy}/emailHint.ts +0 -0
  235. /package/apps/storefront/src/lib/{rate → access/rate}/kvWindow.ts +0 -0
  236. /package/apps/storefront/src/lib/{shared → access/shared}/capability.ts +0 -0
  237. /package/apps/storefront/src/lib/{cspStaticHashes.ts → access/shared/cspStaticHashes.ts} +0 -0
  238. /package/apps/storefront/src/lib/{demoGate.ts → access/shared/demoGate.ts} +0 -0
  239. /package/apps/storefront/src/lib/{maintenance.ts → access/shared/maintenance.ts} +0 -0
  240. /package/apps/storefront/src/lib/{securityHeaders.ts → access/shared/securityHeaders.ts} +0 -0
  241. /package/apps/storefront/src/lib/{tenantOrigins.ts → access/shared/tenantOrigins.ts} +0 -0
  242. /package/apps/storefront/src/lib/{tenantRouting.ts → access/shared/tenantRouting.ts} +0 -0
  243. /package/apps/storefront/src/lib/{admin → automation}/ai/approvalMode.ts +0 -0
  244. /package/apps/storefront/src/lib/{admin → automation}/ai/audit.ts +0 -0
  245. /package/apps/storefront/src/lib/{admin → automation}/ai/recommendation.ts +0 -0
  246. /package/apps/storefront/src/lib/{blog → content/blog}/collectionPaths.ts +0 -0
  247. /package/apps/storefront/src/lib/{blog → content/blog}/markdown.ts +0 -0
  248. /package/apps/storefront/src/lib/{blog → content/blog}/pagination.ts +0 -0
  249. /package/apps/storefront/src/lib/{blog → content/blog}/presentation.ts +0 -0
  250. /package/apps/storefront/src/lib/{blog → content/blog}/reactions.ts +0 -0
  251. /package/apps/storefront/src/lib/{blog → content/blog}/rss.ts +0 -0
  252. /package/apps/storefront/src/lib/{blog → content/blog}/teaser.ts +0 -0
  253. /package/apps/storefront/src/lib/{blog → content/blog}/types.ts +0 -0
  254. /package/apps/storefront/src/lib/{blog → content/blog}/viewCounts.ts +0 -0
  255. /package/apps/storefront/src/lib/{chrome → content/chrome}/ctaIdentity.ts +0 -0
  256. /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome-assignments.example.json +0 -0
  257. /package/apps/storefront/src/lib/{chrome → content/chrome}/examples/tokenoftrust.chrome.example.json +0 -0
  258. /package/apps/storefront/src/lib/{chrome → content/chrome}/managedCart.ts +0 -0
  259. /package/apps/storefront/src/lib/{chrome → content/chrome}/model.ts +0 -0
  260. /package/apps/storefront/src/lib/{chrome → content/chrome}/navCurrent.ts +0 -0
  261. /package/apps/storefront/src/lib/{chrome → content/chrome}/newsletterAgeAttestation.ts +0 -0
  262. /package/apps/storefront/src/lib/{chrome → content/chrome}/parseConfig.ts +0 -0
  263. /package/apps/storefront/src/lib/{chrome → content/chrome}/variant.ts +0 -0
  264. /package/apps/storefront/src/lib/{commerce → content/policies}/shippingPolicy.ts +0 -0
  265. /package/apps/storefront/src/lib/{seo → content/seo}/alternates.ts +0 -0
  266. /package/apps/storefront/src/lib/{seo → content/seo}/documentTitle.ts +0 -0
  267. /package/apps/storefront/src/lib/{seo → content/seo}/meta.ts +0 -0
  268. /package/apps/storefront/src/lib/{seo → content/seo}/urlForm.ts +0 -0
  269. /package/apps/storefront/src/lib/{asyncCss.ts → content/shared/asyncCss.ts} +0 -0
  270. /package/apps/storefront/src/lib/{colors.ts → content/shared/colors.ts} +0 -0
  271. /package/apps/storefront/src/lib/{format.ts → content/shared/format.ts} +0 -0
  272. /package/apps/storefront/src/lib/{i18n.ts → content/shared/i18n.ts} +0 -0
  273. /package/apps/storefront/src/lib/{jsonScript.ts → content/shared/jsonScript.ts} +0 -0
  274. /package/apps/storefront/src/lib/{placeholder.ts → content/shared/placeholder.ts} +0 -0
  275. /package/apps/storefront/src/lib/{sections.ts → content/shared/sections.ts} +0 -0
  276. /package/apps/storefront/src/lib/{styleGuidePaths.ts → content/shared/styleGuidePaths.ts} +0 -0
  277. /package/apps/storefront/src/lib/{the-build → content/the-build}/pagination.ts +0 -0
  278. /package/apps/storefront/src/lib/{the-build → content/the-build}/readingTime.ts +0 -0
  279. /package/apps/storefront/src/lib/{admin → developer-experience/admin}/seed.ts +0 -0
  280. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/activityStore.ts +0 -0
  281. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/ai-widget-client.js +0 -0
  282. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/apiBase.ts +0 -0
  283. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/ask.ts +0 -0
  284. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/clickToSource.ts +0 -0
  285. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/copyCommand.ts +0 -0
  286. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/files.ts +0 -0
  287. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/hostedActivity.ts +0 -0
  288. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/infoPopover.ts +0 -0
  289. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/mcpCopy.ts +0 -0
  290. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/monitor.ts +0 -0
  291. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/stepper.ts +0 -0
  292. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/cockpit/themeToggle.ts +0 -0
  293. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/devDraft.ts +0 -0
  294. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/obstacleStore.ts +0 -0
  295. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/runtimeStore.ts +0 -0
  296. /package/apps/storefront/src/lib/{dev → developer-experience/dev}/storeStatus.ts +0 -0
  297. /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/regulated-commerce-truth/index.ts +0 -0
  298. /package/apps/storefront/src/lib/{fixtures → developer-experience/fixtures}/ws3-readonly-clone-preflight/index.ts +0 -0
  299. /package/apps/storefront/src/lib/{http → developer-experience/http}/fetchTransport.ts +0 -0
  300. /package/apps/storefront/src/lib/{http → developer-experience/http}/mcpServiceCall.ts +0 -0
  301. /package/apps/storefront/src/lib/{memoryKv.ts → developer-experience/shared/memoryKv.ts} +0 -0
  302. /package/apps/storefront/src/lib/{cloudflare-workers.d.ts → developer-experience/types/cloudflare-workers.d.ts} +0 -0
  303. /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/confirmationEmail.ts +0 -0
  304. /package/apps/storefront/src/lib/{newsletter → engagement/newsletter}/consent.ts +0 -0
  305. /package/apps/storefront/src/lib/{admin → measurement/admin}/consentSettingsClient.ts +0 -0
  306. /package/apps/storefront/src/lib/{analytics → measurement/analytics}/index.ts +0 -0
  307. /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/attributionService.ts +0 -0
  308. /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/orderConversionD1.ts +0 -0
  309. /package/apps/storefront/src/lib/{apps/orders → measurement/attribution}/verifiedProviderMeasurement.ts +0 -0
  310. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorAllowlist.ts +0 -0
  311. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/collectorIngest.ts +0 -0
  312. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionHealth.ts +0 -0
  313. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/interactionSchema.ts +0 -0
  314. /package/apps/storefront/src/lib/{tracking → measurement/tracking}/tenantReadAccess.ts +0 -0
  315. /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/rewriteTrackingIds.ts +0 -0
  316. /package/apps/storefront/src/lib/{tracking-writeback → measurement/tracking-writeback}/writebackCandidate.ts +0 -0
  317. /package/apps/storefront/src/lib/{diag → observability/diag}/capture.ts +0 -0
  318. /package/apps/storefront/src/lib/{diag → observability/diag}/consoleLine.ts +0 -0
  319. /package/apps/storefront/src/lib/{diag → observability/diag}/debugConsole.ts +0 -0
  320. /package/apps/storefront/src/lib/{diag → observability/diag}/debugMode.ts +0 -0
  321. /package/apps/storefront/src/lib/{diag → observability/diag}/debugWindow.ts +0 -0
  322. /package/apps/storefront/src/lib/{diag → observability/diag}/redact.ts +0 -0
  323. /package/apps/storefront/src/lib/{diag → observability/diag}/reference.ts +0 -0
  324. /package/apps/storefront/src/lib/{diag → observability/diag}/referenceStore.ts +0 -0
  325. /package/apps/storefront/src/lib/{diag → observability/diag}/report.ts +0 -0
  326. /package/apps/storefront/src/lib/{diag → observability/diag}/session.ts +0 -0
  327. /package/apps/storefront/src/lib/{analytics → observability/performance}/lighthouseReport.ts +0 -0
  328. /package/apps/storefront/src/lib/{analytics → observability/performance}/perfBudgets.ts +0 -0
  329. /package/apps/storefront/src/lib/{analytics → observability/performance}/rumAlert.ts +0 -0
  330. /package/apps/storefront/src/lib/{analytics → observability/performance}/webVitals.ts +0 -0
  331. /package/apps/storefront/src/lib/{health.ts → observability/shared/health.ts} +0 -0
@@ -62,7 +62,7 @@ CSS (decision `raw-chrome-single-stylesheet` / `materialization-compat`):
62
62
  - **Shared raw-chrome CSS** — one platform stylesheet, `public/shared/commerce-chrome.css`
63
63
  (linked as `/shared/commerce-chrome.css`), whose class vocabulary (`.site-header`, `.announce`,
64
64
  `.primary-nav`/`.mega`, `.site-footer`, `.compliance-strip`, `.age-gate`, …) mirrors the
65
- component DOM. The server-side generator `lib/rawChrome.ts` emits that DOM from a tenant's typed
65
+ component DOM. The server-side generator `lib/content/shared/rawChrome.ts` emits that DOM from a tenant's typed
66
66
  `chrome.json`, links exactly that one stylesheet, and emits **no inline chrome CSS**. See §11.
67
67
 
68
68
  Where a component has a raw-chrome twin, its entry notes the matching selectors.
@@ -106,9 +106,9 @@ libs, and any tenant config/locals it reads), **Tokens consumed**, **Delivery**
106
106
  - §8 PLP controls — `components/plp/`
107
107
  - §9 Islands — `components/islands/`
108
108
  - §10 Foundational atoms + home — `components/*` + `components/home/`
109
- - §11 Shared raw-chrome library — `lib/rawChrome.ts`, `lib/chrome/`, `public/shared/commerce-chrome.css`
109
+ - §11 Shared raw-chrome library — `lib/content/shared/rawChrome.ts`, `lib/chrome/`, `public/shared/commerce-chrome.css`
110
110
 
111
- Shared chrome model (`lib/chrome/model.ts`), referenced throughout §2:
111
+ Shared chrome model (`lib/content/chrome/model.ts`), referenced throughout §2:
112
112
 
113
113
  - `ChromeLink` — `{ label: string; href: string; external?: boolean; badge?: string }`
114
114
  - `MegaColumn` — `{ title?: string; links: ChromeLink[] }`
@@ -127,7 +127,7 @@ The site frame: announcement, utility bar, header, primary/mega nav, footer. All
127
127
  raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chrome component reads
128
128
  `Astro.locals.basePath` via `withBase` (`@/lib/basePath`) for path-prefix tenant routing.
129
129
 
130
- ### AnnouncementBar (`components/chrome/AnnouncementBar.astro`)
130
+ ### AnnouncementBar (`components/content/storefront/chrome/AnnouncementBar.astro`)
131
131
 
132
132
  - **Purpose:** Top promo strip — `static` centered single line or `marquee` continuously-scrolling
133
133
  track (duplicated for a seamless loop). Reduced-motion-safe (freezes to static copy).
@@ -145,7 +145,7 @@ raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chro
145
145
  <AnnouncementBar text="Free US shipping on orders over $100!" variant="marquee" tone="sale" />
146
146
  ```
147
147
 
148
- ### UtilityNav (`components/chrome/UtilityNav.astro`)
148
+ ### UtilityNav (`components/content/storefront/chrome/UtilityNav.astro`)
149
149
 
150
150
  - **Purpose:** Thin secondary bar above the header — minor links, locale/currency indicator, social
151
151
  icons. Hidden below `md` (the mobile menu carries the links).
@@ -166,7 +166,7 @@ raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chro
166
166
  />
167
167
  ```
168
168
 
169
- ### SiteHeader (`components/chrome/SiteHeader.astro`)
169
+ ### SiteHeader (`components/content/storefront/chrome/SiteHeader.astro`)
170
170
 
171
171
  - **Purpose:** Canonical site header — logo/wordmark + search typeahead island + saved / marketing
172
172
  CTA / auth / account / cart affordances, with `<MegaMenu>` below and a `<MobileNav>` drawer.
@@ -195,7 +195,7 @@ raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chro
195
195
  />
196
196
  ```
197
197
 
198
- ### MegaMenu (`components/chrome/MegaMenu.astro`)
198
+ ### MegaMenu (`components/content/storefront/chrome/MegaMenu.astro`)
199
199
 
200
200
  - **Purpose:** Primary desktop nav bar — a horizontal `<ul>` of items, each rendered by
201
201
  `<NavDropdown>`. Hidden below `md`.
@@ -210,7 +210,7 @@ raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chro
210
210
  <MegaMenu items={nav} />
211
211
  ```
212
212
 
213
- ### NavDropdown (`components/chrome/NavDropdown.astro`)
213
+ ### NavDropdown (`components/content/storefront/chrome/NavDropdown.astro`)
214
214
 
215
215
  - **Purpose:** One primary-nav item in two modes. `mode="bar"` (default) = desktop item with a
216
216
  CSS-only hover/focus single-column dropdown (`children`) or multi-column mega panel (`columns`),
@@ -228,7 +228,7 @@ raw-chrome twin in `public/shared/commerce-chrome.css`. Every href-emitting chro
228
228
  <NavDropdown item={item} mode="accordion" />
229
229
  ```
230
230
 
231
- ### SiteFooter (`components/chrome/SiteFooter.astro`)
231
+ ### SiteFooter (`components/content/storefront/chrome/SiteFooter.astro`)
232
232
 
233
233
  - **Purpose:** Brand block + link columns + newsletter POST form + payment-badge chip row +
234
234
  trust/compliance line + legal bottom bar. Payment badges are text chips (CSP-clean, no external
@@ -354,7 +354,7 @@ class-only block in `public/shared/commerce-chrome.css` (`.article-card`, `.bran
354
354
  <BrandGrid title="Shop by Brands" eyebrow="Find your fav" brands={brands} viewAllHref="/brands" tone="surface" />
355
355
  ```
356
356
 
357
- ### ArticleCard (`components/commerce/ArticleCard.astro`)
357
+ ### ArticleCard (`components/content/storefront/commerce/ArticleCard.astro`)
358
358
 
359
359
  - **Purpose:** One blog/article card — featured image + category tag chip + title + excerpt + meta
360
360
  (author · date · read-time). Presentational; omits any absent field's row, never fabricates
@@ -730,11 +730,11 @@ Model types (`lib/subscriptions/subscription/model.ts`):
730
730
 
731
731
  The block library a `siteType: "marketing"` tenant composes pages from — token-driven, distinct from
732
732
  the ported `mkt.css` composition layer. Every block takes a discriminated-union `block` view-model
733
- from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where it emits links,
733
+ from `lib/content/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where it emits links,
734
734
  `basePath: string`. `MarketingCta = { label: string; href: string; variant?: "primary" |
735
735
  "secondary" | "ghost" }`.
736
736
 
737
- ### MarketingBlocks (`components/marketing/MarketingBlocks.astro`)
737
+ ### MarketingBlocks (`components/content/storefront/marketing/MarketingBlocks.astro`)
738
738
 
739
739
  - **Purpose:** The marketing page renderer — dispatches a `MarketingBlock[]` discriminated union to
740
740
  its block components by `block.component`. Tenant-agnostic; reused by homepage + future marketing
@@ -752,7 +752,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
752
752
  <MarketingBlocks blocks={blocks} basePath={basePath} />
753
753
  ```
754
754
 
755
- ### MarketingHero (`components/marketing/MarketingHero.astro`)
755
+ ### MarketingHero (`components/content/storefront/marketing/MarketingHero.astro`)
756
756
 
757
757
  - **Purpose:** Signature top-of-page hero for marketing tenants — eyebrow + oversized headline +
758
758
  subhead/body + CTAs + trust chips; optional right-hand "product moment" panel of mono log lines.
@@ -769,7 +769,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
769
769
  <MarketingHero block={block} basePath={basePath} />
770
770
  ```
771
771
 
772
- ### MarketingCtas (`components/marketing/MarketingCtas.astro`)
772
+ ### MarketingCtas (`components/content/storefront/marketing/MarketingCtas.astro`)
773
773
 
774
774
  - **Purpose:** Row of CTA buttons for marketing blocks. External `http[s]` hrefs open a new tab with
775
775
  `rel="noopener noreferrer"`; root-absolute same-origin hrefs get the base-path prefix. Three variant
@@ -785,7 +785,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
785
785
  <MarketingCtas ctas={block.ctas} basePath={basePath} class="mt-8" />
786
786
  ```
787
787
 
788
- ### TrustBar (`components/marketing/TrustBar.astro`)
788
+ ### TrustBar (`components/content/storefront/marketing/TrustBar.astro`)
789
789
 
790
790
  - **Purpose:** Quiet horizontal strip of proof tokens (countries, standards, ratings). Plain text,
791
791
  mono, dot-separated.
@@ -798,7 +798,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
798
798
  <TrustBar block={{ component: "trust_bar", items: ["200+ countries", "SOC 2 Type II"] }} />
799
799
  ```
800
800
 
801
- ### SplitCompare (`components/marketing/SplitCompare.astro`)
801
+ ### SplitCompare (`components/content/storefront/marketing/SplitCompare.astro`)
802
802
 
803
803
  - **Purpose:** Before/after two-column comparison — `before` reads as the problem (muted, struck
804
804
  items), `after` as the solution (accent border, ✓).
@@ -814,7 +814,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
814
814
  <SplitCompare block={block} />
815
815
  ```
816
816
 
817
- ### Steps (`components/marketing/Steps.astro`)
817
+ ### Steps (`components/content/storefront/marketing/Steps.astro`)
818
818
 
819
819
  - **Purpose:** Numbered/emoji journey (e.g. a checkout verification flow) — a grid of step cards, each
820
820
  with a circular number/icon badge + label + optional detail.
@@ -829,7 +829,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
829
829
  <Steps block={block} />
830
830
  ```
831
831
 
832
- ### CardGrid (`components/marketing/CardGrid.astro`)
832
+ ### CardGrid (`components/content/storefront/marketing/CardGrid.astro`)
833
833
 
834
834
  - **Purpose:** Responsive grid of capability/industry/feature cards (one component, three variants
835
835
  tuning density/columns). Cards optionally link internally (base-path) or externally.
@@ -846,7 +846,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
846
846
  <CardGrid block={block} basePath={basePath} />
847
847
  ```
848
848
 
849
- ### Integrations (`components/marketing/Integrations.astro`)
849
+ ### Integrations (`components/content/storefront/marketing/Integrations.astro`)
850
850
 
851
851
  - **Purpose:** "Fits the store you already run" section — a strip of platform name/link chips,
852
852
  optional implementation points (✓ list), and an optional safe code sample.
@@ -862,7 +862,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
862
862
  <Integrations block={block} basePath={basePath} />
863
863
  ```
864
864
 
865
- ### CodeSample (`components/marketing/CodeSample.astro`)
865
+ ### CodeSample (`components/content/storefront/marketing/CodeSample.astro`)
866
866
 
867
867
  - **Purpose:** Display-only fenced code block; code rendered as **escaped** text inside `<pre><code>`
868
868
  (never `set:html`). Never embed secrets. Caption + language label.
@@ -877,7 +877,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
877
877
  <CodeSample sample={{ language: "js", caption: "Client-side embed", code: "await verify({ minAge: 21 });" }} />
878
878
  ```
879
879
 
880
- ### ProofStrip (`components/marketing/ProofStrip.astro`)
880
+ ### ProofStrip (`components/content/storefront/marketing/ProofStrip.astro`)
881
881
 
882
882
  - **Purpose:** Privacy/trust proof band painted in the primary color (a single strong moment) — bold
883
883
  statement + supporting copy + grid of proof bullets.
@@ -892,7 +892,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
892
892
  <ProofStrip block={block} />
893
893
  ```
894
894
 
895
- ### Testimonials (`components/marketing/Testimonials.astro`)
895
+ ### Testimonials (`components/content/storefront/marketing/Testimonials.astro`)
896
896
 
897
897
  - **Purpose:** Outcome/quote cards with optional stat lead-in + attribution, plus an optional row of
898
898
  rating tokens.
@@ -907,7 +907,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
907
907
  <Testimonials block={block} />
908
908
  ```
909
909
 
910
- ### Faq (`components/marketing/Faq.astro`)
910
+ ### Faq (`components/content/storefront/marketing/Faq.astro`)
911
911
 
912
912
  - **Purpose:** No-JS accordion of Q/A pairs using native `<details>`/`<summary>`; emits FAQPage
913
913
  JSON-LD for rich results. Answers plain text (auto-escaped).
@@ -922,7 +922,7 @@ from `lib/storyblok/content-model.ts` (the `MarketingBlock` union) plus, where i
922
922
  <Faq block={block} />
923
923
  ```
924
924
 
925
- ### CtaBand (`components/marketing/CtaBand.astro`)
925
+ ### CtaBand (`components/content/storefront/marketing/CtaBand.astro`)
926
926
 
927
927
  - **Purpose:** Final conversion band on the surface tone — headline + optional subhead + centered CTA
928
928
  row.
@@ -1033,7 +1033,7 @@ Client-hydrated Preact `.tsx`. Every island is tenant-agnostic and reads only fi
1033
1033
  classes `eyebrow eyebrow--tick`, `display-md`, `link-accent`.
1034
1034
  - **Delivery:** platform island + raw-chrome twin `.age-gate` / `.age-gate__panel` / `__mark` /
1035
1035
  `__actions` / `__deny` / `__fine` / `.is-open` / `.is-denied` (same `localStorage` key + closed
1036
- shadow-DOM tamper pattern, produced server-side by `lib/rawChrome.ts`).
1036
+ shadow-DOM tamper pattern, produced server-side by `lib/content/shared/rawChrome.ts`).
1037
1037
  - **Usage:**
1038
1038
  ```astro
1039
1039
  <AgeGate client:load minAge={21} brand={tenant.brandName} />
@@ -1143,7 +1143,7 @@ Client-hydrated Preact `.tsx`. Every island is tenant-agnostic and reads only fi
1143
1143
  <SearchTypeahead client:idle />
1144
1144
  ```
1145
1145
 
1146
- ### MobileNav (`components/islands/MobileNav.tsx`)
1146
+ ### MobileNav (`components/content/storefront/islands/MobileNav.tsx`)
1147
1147
 
1148
1148
  - **Purpose:** Hamburger button + slide-in drawer for small screens (`md:hidden`). WCAG 2.2 AA:
1149
1149
  `aria-expanded`/`aria-controls`, focus trap, Escape + backdrop close, body-scroll lock, focus
@@ -1210,7 +1210,7 @@ Client-hydrated Preact `.tsx`. Every island is tenant-agnostic and reads only fi
1210
1210
 
1211
1211
  Shared primitives composed by the higher-level widgets, plus the homepage hero.
1212
1212
 
1213
- ### Badge (`components/Badge.astro`)
1213
+ ### Badge (`components/content/storefront/Badge.astro`)
1214
1214
 
1215
1215
  - **Purpose:** Tiny mono-uppercase pill used over product imagery and inline (sale %, New, low-stock,
1216
1216
  sold-out, compliance-verified).
@@ -1225,7 +1225,7 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1225
1225
  <Badge variant="compliant" label="Compliant" />
1226
1226
  ```
1227
1227
 
1228
- ### Breadcrumbs (`components/Breadcrumbs.astro`)
1228
+ ### Breadcrumbs (`components/content/storefront/Breadcrumbs.astro`)
1229
1229
 
1230
1230
  - **Purpose:** Semantic breadcrumb trail; last crumb is the current page (`aria-current`, not a link).
1231
1231
  - **Props:** `crumbs: { label: string; href: string }[]`.
@@ -1273,7 +1273,7 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1273
1273
  <CollectionCard collection={collection} productCount={24} />
1274
1274
  ```
1275
1275
 
1276
- ### Section (`components/Section.astro`)
1276
+ ### Section (`components/content/storefront/Section.astro`)
1277
1277
 
1278
1278
  - **Purpose:** Section wrapper with consistent vertical rhythm + optional eyebrow/title header +
1279
1279
  alternating band background.
@@ -1288,7 +1288,7 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1288
1288
  <Section eyebrow="Shop" title="Best Sellers" tone="surface"> … </Section>
1289
1289
  ```
1290
1290
 
1291
- ### EmptyState (`components/EmptyState.astro`)
1291
+ ### EmptyState (`components/content/storefront/EmptyState.astro`)
1292
1292
 
1293
1293
  - **Purpose:** Intentional empty result (search/PLP). Copy passed in by the parent; optional CTA.
1294
1294
  - **Props:** `title: string`; `body?: string`; `ctaLabel?: string`; `ctaHref?: string`.
@@ -1333,7 +1333,7 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1333
1333
  <WidgetFrame src="/widgets/tenant-abc/reviews.html" title="Customer reviews" height="480px" />
1334
1334
  ```
1335
1335
 
1336
- ### Seo (`components/Seo.astro`)
1336
+ ### Seo (`components/content/storefront/Seo.astro`)
1337
1337
 
1338
1338
  - **Purpose:** Per-page `<title>`/meta, Open Graph, Twitter card, canonical, JSON-LD. Tenant-aware —
1339
1339
  OG image + site name from the resolved tenant. Head-only (renders no styled markup).
@@ -1349,7 +1349,7 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1349
1349
  <Seo title="Merino Zip Hoodie" description="Soft, warm, everyday." path="/products/merino-zip-hoodie" ogType="product" jsonLd={productSchema} />
1350
1350
  ```
1351
1351
 
1352
- ### Hero (`components/home/Hero.astro`)
1352
+ ### Hero (`components/content/storefront/home/Hero.astro`)
1353
1353
 
1354
1354
  - **Purpose:** The signature homepage moment ("hero is a thesis"). Treatments: `"bold"` (default —
1355
1355
  full-bleed primary background, contrast text), `"light"` (page background, brand color as
@@ -1380,12 +1380,12 @@ Shared primitives composed by the higher-level widgets, plus the homepage hero.
1380
1380
 
1381
1381
  ---
1382
1382
 
1383
- ## 11. Shared raw-chrome library — `lib/rawChrome.ts`, `lib/chrome/`, `public/shared/commerce-chrome.css`
1383
+ ## 11. Shared raw-chrome library — `lib/content/shared/rawChrome.ts`, `lib/chrome/`, `public/shared/commerce-chrome.css`
1384
1384
 
1385
1385
  The raw-chrome path exists so a tenant that ships **hand-authored raw marketing HTML** still gets the
1386
1386
  platform chrome look without copying CSS. It is the second delivery path referenced throughout §2–§4.
1387
1387
 
1388
- ### `lib/rawChrome.ts` — the canonical raw-chrome generator
1388
+ ### `lib/content/shared/rawChrome.ts` — the canonical raw-chrome generator
1389
1389
 
1390
1390
  Replaces the three divergent hand-authored `content/<tenant>/chrome.html` documents with **one
1391
1391
  deterministic server-side generator** driven entirely by a tenant's `chrome.json` (typed
@@ -1417,7 +1417,7 @@ Exports:
1417
1417
  tamper-resistance pattern as `IsolatedAgeGate.tsx`, keyed on `tot:age-affirmed`.
1418
1418
  - `SHARED_CHROME_STYLESHEET: string` = `"/shared/commerce-chrome.css"`.
1419
1419
 
1420
- ### `lib/chrome/model.ts` — typed chrome config
1420
+ ### `lib/content/chrome/model.ts` — typed chrome config
1421
1421
 
1422
1422
  Re-exports `@tot/public-runtime`'s `ChromeConfig` (`packages/public-runtime/src/chrome.ts`) — the
1423
1423
  ONE schema for a tenant's site chrome, content-only, skinned by tokens. `header` and `footer` are
@@ -1430,7 +1430,7 @@ lede?; yesLabel?; noLabel?; denyText?; fineText?; mark?; showNo?; eyebrow?: stri
1430
1430
  helpLink?: { label; href } }`), `ChromeFooterBrand`, `ChromeTrustMark`,
1431
1431
  `ChromeHead`, `ChromeCta`, `ChromeNavItem`, and `ChromeConfig` itself.
1432
1432
 
1433
- ### `lib/chrome/parseConfig.ts` — the validation gate
1433
+ ### `lib/content/chrome/parseConfig.ts` — the validation gate
1434
1434
 
1435
1435
  Re-exports `@tot/public-runtime`'s `validateChromeConfig`/`parseChromeConfig`. `parseChromeConfig(raw:
1436
1436
  unknown): ChromeConfig | null` returns a config only when `raw.header` and `raw.footer` both validate
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tokenoftrust/storefront-runner",
3
- "version": "2.4.87",
3
+ "version": "2.4.89",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "description": "World-shareable storefront runner: multi-tenant renderer on Astro/Cloudflare. No control plane.",
6
6
  "packageManager": "pnpm@11.9.0",
@@ -3,11 +3,11 @@
3
3
  * plus its fail-closed validator.
4
4
  *
5
5
  * Consolidates what used to be two competing, undocumented shapes:
6
- * - a lean `SiteChrome` (lib/storyblok/content-model.ts), consumed by the
6
+ * - a lean `SiteChrome` (lib/content/storyblok/content-model.ts), consumed by the
7
7
  * token-styled <SiteHeader>/<SiteFooter> components via
8
8
  * Astro.locals.content.getChrome();
9
9
  * - a superset `TenantChrome`, consumed by the raw `chrome.html` splice
10
- * wrapper (lib/rawChrome.ts) via lib/chrome/parseConfig.ts, gated on an
10
+ * wrapper (lib/content/shared/rawChrome.ts) via lib/content/chrome/parseConfig.ts, gated on an
11
11
  * explicit `sharedChrome: true` flag.
12
12
  * Both read the same `tenants/<id>/content/chrome.json` file; neither was the
13
13
  * complete picture. This file is now the single source of truth for that
@@ -24,7 +24,7 @@
24
24
  * control-plane package — the `renderer-no-controlplane` fence
25
25
  * (apps/storefront/.dependency-cruiser.cjs) runs the other way: packages may
26
26
  * depend on `@tot/public-runtime`, but the renderer must never import
27
- * `@tot/private-controlplane`. `apps/storefront/src/lib/chrome/model.ts` and
27
+ * `@tot/private-controlplane`. `apps/storefront/src/lib/content/chrome/model.ts` and
28
28
  * `parseConfig.ts` re-export from here so every existing renderer import
29
29
  * keeps resolving unchanged.
30
30
  */
@@ -302,7 +302,7 @@ export function isFooterVariant(v: unknown): v is FooterVariant {
302
302
 
303
303
  /**
304
304
  * Thrown by the renderer's `assertHeaderVariant` / `assertFooterVariant`
305
- * (apps/storefront/src/lib/chrome/variant.ts) when a page passes an unknown
305
+ * (apps/storefront/src/lib/content/chrome/variant.ts) when a page passes an unknown
306
306
  * variant. Fails closed
307
307
  * at validation time with an actionable message rather than silently falling
308
308
  * back to a default — an unrecognized variant is a bug in the caller, not a
@@ -82,7 +82,7 @@
82
82
  * consumer builds {@link DerivationTarget}s from whatever it already has:
83
83
  *
84
84
  * - a git-time rewriter walks `parse5`'s `parseFragment` tree keeping a tag
85
- * stack (the pattern `apps/storefront/src/lib/the-build/toc.ts` already uses
85
+ * stack (the pattern `apps/storefront/src/lib/content/the-build/toc.ts` already uses
86
86
  * to add heading anchors and re-`serialize()` byte-preserving when nothing
87
87
  * changed);
88
88
  * - a publish-time `HTMLRewriter` handler keeps the same stack across
@@ -6,7 +6,7 @@
6
6
  // with node:test and carries no framework/build coupling.
7
7
  //
8
8
  // THE WALK (must stay byte-identical in intent to captureDomPath() in
9
- // apps/storefront/src/lib/dev/ai-widget-client.js):
9
+ // apps/storefront/src/lib/developer-experience/dev/ai-widget-client.js):
10
10
  // A DOM path is an array of { tag, index } steps, ordered from the <body>'s
11
11
  // direct child DOWN to the target. Each step names a lowercased tag and the
12
12
  // 0-based position of that element among its same-tag ELEMENT siblings (text and
@@ -1,6 +0,0 @@
1
- export type { ApprovalMode } from "./approvalMode";
2
- export { isDraftOnly, requiresHumanApproval, isAutomationAllowed } from "./approvalMode";
3
- export type { AuditEvent } from "./audit";
4
- export type { AiRecommendation } from "./recommendation";
5
- export type { AskEnvelope, AdminRole } from "./askEnvelope";
6
- export { buildAskEnvelope } from "./askEnvelope";