@tokenoftrust/storefront-runner 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +58 -0
- package/README.md +40 -0
- package/apps/storefront/.dev.vars.example +41 -0
- package/apps/storefront/.env.example +24 -0
- package/apps/storefront/astro.config.mjs +245 -0
- package/apps/storefront/env.d.ts +155 -0
- package/apps/storefront/lib/ensure-preview-reconcile-secret.sh +31 -0
- package/apps/storefront/lib/resolve-cf-token.sh +48 -0
- package/apps/storefront/lib/resolve-tot-credentials.sh +69 -0
- package/apps/storefront/migrations/0000_baseline.sql +54 -0
- package/apps/storefront/migrations/0001_products_fts.sql +9 -0
- package/apps/storefront/migrations/README.md +54 -0
- package/apps/storefront/migrations/meta/0000_snapshot.json +347 -0
- package/apps/storefront/migrations/meta/0001_snapshot.json +347 -0
- package/apps/storefront/migrations/meta/_journal.json +20 -0
- package/apps/storefront/package.json +41 -0
- package/apps/storefront/public/brand/northwind-logo-dark.svg +4 -0
- package/apps/storefront/public/brand/northwind-logo-light.svg +4 -0
- package/apps/storefront/public/brand/northwind-og.svg +13 -0
- package/apps/storefront/public/favicon.svg +5 -0
- package/apps/storefront/public/js/dashboard-team.js +147 -0
- package/apps/storefront/public/js/dashboard-vendor-search.js +115 -0
- package/apps/storefront/src/components/Badge.astro +34 -0
- package/apps/storefront/src/components/Breadcrumbs.astro +45 -0
- package/apps/storefront/src/components/CollectionCard.astro +56 -0
- package/apps/storefront/src/components/EmptyState.astro +35 -0
- package/apps/storefront/src/components/Img.astro +68 -0
- package/apps/storefront/src/components/ProductCard.astro +228 -0
- package/apps/storefront/src/components/Section.astro +39 -0
- package/apps/storefront/src/components/Seo.astro +70 -0
- package/apps/storefront/src/components/WidgetFrame.astro +34 -0
- package/apps/storefront/src/components/auth/AuthBadge.astro +44 -0
- package/apps/storefront/src/components/chrome/AnnouncementBar.astro +108 -0
- package/apps/storefront/src/components/chrome/MegaMenu.astro +26 -0
- package/apps/storefront/src/components/chrome/NavDropdown.astro +116 -0
- package/apps/storefront/src/components/chrome/SiteFooter.astro +181 -0
- package/apps/storefront/src/components/chrome/SiteHeader.astro +181 -0
- package/apps/storefront/src/components/chrome/UtilityNav.astro +79 -0
- package/apps/storefront/src/components/commerce/FoxyLoader.astro +23 -0
- package/apps/storefront/src/components/commerce/PriceDisplay.astro +91 -0
- package/apps/storefront/src/components/commerce/ProductCarousel.astro +197 -0
- package/apps/storefront/src/components/commerce/ProductGrid.astro +75 -0
- package/apps/storefront/src/components/commerce/RatingStars.astro +58 -0
- package/apps/storefront/src/components/compliance/NicotineWarning.astro +33 -0
- package/apps/storefront/src/components/home/Hero.astro +164 -0
- package/apps/storefront/src/components/islands/AgeGate.tsx +105 -0
- package/apps/storefront/src/components/islands/ImageGallery.tsx +237 -0
- package/apps/storefront/src/components/islands/IsolatedAgeGate.tsx +73 -0
- package/apps/storefront/src/components/islands/MobileNav.tsx +239 -0
- package/apps/storefront/src/components/islands/QuickView.tsx +138 -0
- package/apps/storefront/src/components/islands/RecentlyViewed.tsx +122 -0
- package/apps/storefront/src/components/islands/SavedList.tsx +99 -0
- package/apps/storefront/src/components/islands/SearchTypeahead.tsx +248 -0
- package/apps/storefront/src/components/islands/VariantSelector.tsx +378 -0
- package/apps/storefront/src/components/marketing/CardGrid.astro +72 -0
- package/apps/storefront/src/components/marketing/CodeSample.astro +20 -0
- package/apps/storefront/src/components/marketing/CtaBand.astro +24 -0
- package/apps/storefront/src/components/marketing/Faq.astro +37 -0
- package/apps/storefront/src/components/marketing/Integrations.astro +63 -0
- package/apps/storefront/src/components/marketing/MarketingBlocks.astro +53 -0
- package/apps/storefront/src/components/marketing/MarketingCtas.astro +48 -0
- package/apps/storefront/src/components/marketing/MarketingHero.astro +72 -0
- package/apps/storefront/src/components/marketing/ProofStrip.astro +37 -0
- package/apps/storefront/src/components/marketing/SplitCompare.astro +53 -0
- package/apps/storefront/src/components/marketing/Steps.astro +36 -0
- package/apps/storefront/src/components/marketing/Testimonials.astro +38 -0
- package/apps/storefront/src/components/marketing/TrustBar.astro +22 -0
- package/apps/storefront/src/components/nav/Footer.astro +148 -0
- package/apps/storefront/src/components/nav/Header.astro +190 -0
- package/apps/storefront/src/components/plp/ActiveFilters.astro +79 -0
- package/apps/storefront/src/components/plp/FacetSidebar.astro +146 -0
- package/apps/storefront/src/components/plp/Pagination.astro +99 -0
- package/apps/storefront/src/components/plp/SortSelect.astro +64 -0
- package/apps/storefront/src/config/devTenants.ts +16 -0
- package/apps/storefront/src/config/kvTenantResolver.ts +87 -0
- package/apps/storefront/src/config/resolver.ts +46 -0
- package/apps/storefront/src/config/tenants.ts +193 -0
- package/apps/storefront/src/layouts/Layout.astro +303 -0
- package/apps/storefront/src/lib/analytics/index.ts +47 -0
- package/apps/storefront/src/lib/auth/brokerAssertion.ts +136 -0
- package/apps/storefront/src/lib/auth/devAuth.ts +90 -0
- package/apps/storefront/src/lib/auth/gatePage.ts +81 -0
- package/apps/storefront/src/lib/auth/identityToken.ts +341 -0
- package/apps/storefront/src/lib/auth/loginGate.ts +107 -0
- package/apps/storefront/src/lib/auth/route.ts +146 -0
- package/apps/storefront/src/lib/auth/session.ts +203 -0
- package/apps/storefront/src/lib/auth/totAccessClient.ts +503 -0
- package/apps/storefront/src/lib/basePath.ts +41 -0
- package/apps/storefront/src/lib/cfImage.ts +55 -0
- package/apps/storefront/src/lib/chrome/model.ts +65 -0
- package/apps/storefront/src/lib/colors.ts +97 -0
- package/apps/storefront/src/lib/content-edit/client.ts +230 -0
- package/apps/storefront/src/lib/content-edit/index.ts +14 -0
- package/apps/storefront/src/lib/content-edit/route.ts +25 -0
- package/apps/storefront/src/lib/content-edit/types.ts +19 -0
- package/apps/storefront/src/lib/cspStaticHashes.ts +24 -0
- package/apps/storefront/src/lib/d1/catalog.ts +289 -0
- package/apps/storefront/src/lib/dashboard/staffAdmission.ts +43 -0
- package/apps/storefront/src/lib/dashboard/staffVendorAccess.ts +449 -0
- package/apps/storefront/src/lib/dashboard/tenantSelection.ts +136 -0
- package/apps/storefront/src/lib/dashboard/vendorQuery.ts +61 -0
- package/apps/storefront/src/lib/demoGate.ts +113 -0
- package/apps/storefront/src/lib/dev/ai-widget-client.js +127 -0
- package/apps/storefront/src/lib/dev/cliSignInCode.ts +132 -0
- package/apps/storefront/src/lib/diag/redact.ts +20 -0
- package/apps/storefront/src/lib/edgeCache.ts +128 -0
- package/apps/storefront/src/lib/email/magicLinkInviteEmail.ts +62 -0
- package/apps/storefront/src/lib/env.ts +60 -0
- package/apps/storefront/src/lib/fixtures/sampleProducts.ts +130 -0
- package/apps/storefront/src/lib/format.ts +29 -0
- package/apps/storefront/src/lib/foxyCommerce.ts +49 -0
- package/apps/storefront/src/lib/imageAttrs.ts +55 -0
- package/apps/storefront/src/lib/jsonld.ts +136 -0
- package/apps/storefront/src/lib/maintenance.ts +71 -0
- package/apps/storefront/src/lib/memoryKv.ts +32 -0
- package/apps/storefront/src/lib/messaging/messagesClient.ts +143 -0
- package/apps/storefront/src/lib/placeholder.ts +99 -0
- package/apps/storefront/src/lib/previewReload.ts +125 -0
- package/apps/storefront/src/lib/rawMarketingHtml.ts +133 -0
- package/apps/storefront/src/lib/search/index.ts +74 -0
- package/apps/storefront/src/lib/sections.ts +129 -0
- package/apps/storefront/src/lib/securityHeaders.ts +31 -0
- package/apps/storefront/src/lib/storyblok/content-model.ts +289 -0
- package/apps/storefront/src/lib/storyblok/provider.ts +524 -0
- package/apps/storefront/src/lib/tenantRouting.ts +91 -0
- package/apps/storefront/src/lib/tot/ToTClient.ts +177 -0
- package/apps/storefront/src/lib/tot/d1Client.ts +62 -0
- package/apps/storefront/src/lib/tot/query.ts +187 -0
- package/apps/storefront/src/lib/tot/totClientInterface.ts +30 -0
- package/apps/storefront/src/lib/url.ts +119 -0
- package/apps/storefront/src/lib/wishlist.ts +63 -0
- package/apps/storefront/src/middleware/index.ts +413 -0
- package/apps/storefront/src/pages/404.astro +61 -0
- package/apps/storefront/src/pages/[...slug].astro +90 -0
- package/apps/storefront/src/pages/api/auth/logout.ts +21 -0
- package/apps/storefront/src/pages/api/auth/magic-exchange.ts +107 -0
- package/apps/storefront/src/pages/api/auth/send.ts +85 -0
- package/apps/storefront/src/pages/api/auth/verify.ts +135 -0
- package/apps/storefront/src/pages/api/cache-purge.ts +44 -0
- package/apps/storefront/src/pages/api/content-edit/ai-edit.ts +64 -0
- package/apps/storefront/src/pages/api/csp-report.ts +25 -0
- package/apps/storefront/src/pages/api/dashboard/enter-vendor.ts +124 -0
- package/apps/storefront/src/pages/api/dashboard/vendor-search.ts +120 -0
- package/apps/storefront/src/pages/api/dev/cli-signin-code.ts +44 -0
- package/apps/storefront/src/pages/api/newsletter.ts +104 -0
- package/apps/storefront/src/pages/api/request-access.ts +172 -0
- package/apps/storefront/src/pages/auth/login.astro +149 -0
- package/apps/storefront/src/pages/auth/magic.astro +105 -0
- package/apps/storefront/src/pages/capabilities.astro +292 -0
- package/apps/storefront/src/pages/collections/[handle].astro +154 -0
- package/apps/storefront/src/pages/collections/index.astro +59 -0
- package/apps/storefront/src/pages/dashboard/[appDomain]/index.astro +100 -0
- package/apps/storefront/src/pages/dashboard/[appDomain]/team.astro +154 -0
- package/apps/storefront/src/pages/dashboard/index.astro +160 -0
- package/apps/storefront/src/pages/dev.astro +653 -0
- package/apps/storefront/src/pages/index.astro +290 -0
- package/apps/storefront/src/pages/llms.txt.ts +92 -0
- package/apps/storefront/src/pages/products/[handle].astro +443 -0
- package/apps/storefront/src/pages/robots.txt.ts +24 -0
- package/apps/storefront/src/pages/saved.astro +35 -0
- package/apps/storefront/src/pages/search.astro +150 -0
- package/apps/storefront/src/pages/sitemap.xml.ts +78 -0
- package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +646 -0
- package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +85 -0
- package/apps/storefront/src/pages/style-guide/index.astro +94 -0
- package/apps/storefront/src/pages/tenants/[id]/[...path].ts +57 -0
- package/apps/storefront/src/styles/global.css +277 -0
- package/apps/storefront/src/themes/reference.ts +61 -0
- package/apps/storefront/src/themes/schema.ts +111 -0
- package/apps/storefront/src/themes/tenants/index.ts +51 -0
- package/apps/storefront/tsconfig.json +16 -0
- package/apps/storefront/vitest.config.ts +22 -0
- package/apps/storefront/wrangler.toml +175 -0
- package/package.json +23 -0
- package/packages/public-runtime/LICENSE +58 -0
- package/packages/public-runtime/package.json +22 -0
- package/packages/public-runtime/src/binary-path.ts +68 -0
- package/packages/public-runtime/src/capabilities.ts +89 -0
- package/packages/public-runtime/src/catalog-api.ts +81 -0
- package/packages/public-runtime/src/catalog-d1.ts +192 -0
- package/packages/public-runtime/src/csp.ts +109 -0
- package/packages/public-runtime/src/customization-preview.ts +197 -0
- package/packages/public-runtime/src/customization-reconcile.ts +63 -0
- package/packages/public-runtime/src/customization-runtime.ts +157 -0
- package/packages/public-runtime/src/customization-scripts.ts +64 -0
- package/packages/public-runtime/src/customization-versioning.ts +95 -0
- package/packages/public-runtime/src/foxy.ts +184 -0
- package/packages/public-runtime/src/index.ts +30 -0
- package/packages/public-runtime/src/product.ts +159 -0
- package/packages/public-runtime/src/search.ts +45 -0
- package/packages/public-runtime/src/tenant-assets.ts +444 -0
- package/packages/public-runtime/src/tenant.ts +243 -0
- package/packages/public-runtime/tsconfig.json +8 -0
- package/packages/public-runtime/vitest.config.ts +8 -0
- package/pnpm-workspace.yaml +7 -0
- package/scripts/build/copy-tenant-assets.mjs +69 -0
- package/scripts/tot-dev.mjs +439 -0
- package/tenants/bigdvapor/content/blog.json +52 -0
- package/tenants/bigdvapor/content/chrome.html +149 -0
- package/tenants/bigdvapor/content/chrome.json +47 -0
- package/tenants/bigdvapor/content/home.html +463 -0
- package/tenants/bigdvapor/content/home.json +73 -0
- package/tenants/bigdvapor/content/pages/about.json +5 -0
- package/tenants/bigdvapor/content/pages/privacy.json +6 -0
- package/tenants/bigdvapor/content/pages/shipping-returns.json +6 -0
- package/tenants/bigdvapor/content/pages-html/blogs/news.html +86 -0
- package/tenants/bigdvapor/content/pages-html/pages/about-us.html +106 -0
- package/tenants/bigdvapor/content/pages-html/pages/contact-us.html +61 -0
- package/tenants/bigdvapor/content/pages-html/pages/privacy-policy.html +72 -0
- package/tenants/bigdvapor/content/pages-html/pages/shipping-returns.html +172 -0
- package/tenants/bigdvapor/content/themes/bigd-navy.json +109 -0
- package/tenants/bigdvapor/public/img/brands/adjust-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/again-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/al-fakher-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/arro-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/cookies-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/core-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/cyclone-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/dinner-lady-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/extre-bar-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/fifty-bar-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/firerose-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/flavor-beast-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/foger-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/kk-energy-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/kumi-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/lost-vape-dispoable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/melo-labs-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/brands/mixo-vape-disposable.webp +0 -0
- package/tenants/bigdvapor/public/img/brands/one-tank-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/oxbar-vape-disposable.webp +0 -0
- package/tenants/bigdvapor/public/img/brands/pillow-talk-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/pod-king-vape-disposable.jpg +0 -0
- package/tenants/bigdvapor/public/img/brands/raz-vape-disposable.png +0 -0
- package/tenants/bigdvapor/public/img/hero-texas.jpg +0 -0
- package/tenants/bigdvapor/public/img/og.jpg +0 -0
- package/tenants/bigdvapor/public/img/pages/AdobeStock_202106312_web.jpg +0 -0
- package/tenants/bigdvapor/public/img/pages/CREW_web.jpg +0 -0
- package/tenants/bigdvapor/public/img/pages/Hero-Image.jpg +0 -0
- package/tenants/bigdvapor/public/img/tiles/adjust.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/again.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/al-fakher.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/arro.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/cookies.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/core.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/cyclone.png +0 -0
- package/tenants/bigdvapor/public/img/tiles/disposables.svg +23 -0
- package/tenants/bigdvapor/public/logo-wordmark.png +0 -0
- package/tenants/bigdvapor/public/pages/home.css +118 -0
- package/tenants/bigdvapor/public/pages/mkt.css +185 -0
- package/tenants/bigdvapor/public/pages/page.css +148 -0
- package/tenants/bigdvapor/public/themes/bigd-navy.css +73 -0
- package/tenants/bigdvapor/theme.json +12 -0
- package/tenants/giantvapes/content/chrome.html +152 -0
- package/tenants/giantvapes/content/chrome.json +94 -0
- package/tenants/giantvapes/content/home.html +194 -0
- package/tenants/giantvapes/content/home.json +50 -0
- package/tenants/giantvapes/content/pages/about.json +10 -0
- package/tenants/giantvapes/content/pages/privacy.json +6 -0
- package/tenants/giantvapes/content/pages/shipping-returns.json +6 -0
- package/tenants/giantvapes/content/pages-html/blogs/news.html +68 -0
- package/tenants/giantvapes/content/pages-html/pages/about-us.html +95 -0
- package/tenants/giantvapes/content/pages-html/pages/contact-us.html +68 -0
- package/tenants/giantvapes/content/pages-html/pages/privacy-policy.html +65 -0
- package/tenants/giantvapes/content/pages-html/pages/shipping-returns.html +77 -0
- package/tenants/giantvapes/content/themes/giant-navy.json +73 -0
- package/tenants/giantvapes/public/img/hero-suicide-bunny.jpg +0 -0
- package/tenants/giantvapes/public/img/hero.webp +0 -0
- package/tenants/giantvapes/public/img/og.jpg +0 -0
- package/tenants/giantvapes/public/logo-wordmark.png +0 -0
- package/tenants/giantvapes/public/pages/home.css +120 -0
- package/tenants/giantvapes/public/pages/mkt.css +185 -0
- package/tenants/giantvapes/public/pages/page.css +155 -0
- package/tenants/giantvapes/public/themes/giant-navy.css +76 -0
- package/tenants/giantvapes/theme.json +39 -0
- package/tenants/home/content/chrome.json +11 -0
- package/tenants/home/content/home.html +304 -0
- package/tenants/home/content/home.json +13 -0
- package/tenants/home/public/js/storefront.js +210 -0
- package/tenants/home/public/logo-wordmark.png +0 -0
- package/tenants/home/public/pages/storefront.css +212 -0
- package/tenants/home/theme.json +6 -0
- package/tenants/tokenoftrust/.tot/config.json +9 -0
- package/tenants/tokenoftrust/content/chrome.json +55 -0
- package/tenants/tokenoftrust/content/home.html +723 -0
- package/tenants/tokenoftrust/content/home.json +233 -0
- package/tenants/tokenoftrust/content/pages-html/careers.html +231 -0
- package/tenants/tokenoftrust/content/pages-html/company.html +275 -0
- package/tenants/tokenoftrust/content/pages-html/contact/contact-sales.html +188 -0
- package/tenants/tokenoftrust/content/pages-html/contact/startup-apply.html +206 -0
- package/tenants/tokenoftrust/content/pages-html/contact.html +178 -0
- package/tenants/tokenoftrust/content/pages-html/industries/adult-content-age-verification.html +286 -0
- package/tenants/tokenoftrust/content/pages-html/industries/cannabis.html +277 -0
- package/tenants/tokenoftrust/content/pages-html/pact-act-pricing.html +289 -0
- package/tenants/tokenoftrust/content/pages-html/pricing.html +483 -0
- package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-estimation.html +278 -0
- package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-gate.html +279 -0
- package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-verification.html +265 -0
- package/tenants/tokenoftrust/content/pages-html/product/age-assurance.html +173 -0
- package/tenants/tokenoftrust/content/pages-html/product/compliance/aml.html +214 -0
- package/tenants/tokenoftrust/content/pages-html/product/compliance/pact-act.html +226 -0
- package/tenants/tokenoftrust/content/pages-html/product/fraud-prevention.html +254 -0
- package/tenants/tokenoftrust/content/pages-html/product/social-profile-verification.html +212 -0
- package/tenants/tokenoftrust/content/pages-html/product/tax/excise-tax.html +213 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/aml.html +259 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/biometric-selfie.html +305 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/coverage.html +254 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/document-verification.html +306 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/electronic-identity-verification.html +304 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification/government-id-verification.html +308 -0
- package/tenants/tokenoftrust/content/pages-html/product/verification.html +183 -0
- package/tenants/tokenoftrust/content/pages-html/product.html +228 -0
- package/tenants/tokenoftrust/content/pages-html/resources/integrations/bigcommerce-integration.html +220 -0
- package/tenants/tokenoftrust/content/pages-html/resources/integrations/shopify-integration.html +221 -0
- package/tenants/tokenoftrust/content/pages-html/resources/integrations/wordpress.html +220 -0
- package/tenants/tokenoftrust/content/pages-html/resources/integrations.html +172 -0
- package/tenants/tokenoftrust/content/pages-html/resources/refer-a-friend-program.html +317 -0
- package/tenants/tokenoftrust/content/pages-html/resources.html +177 -0
- package/tenants/tokenoftrust/content/pages-html/reviews.html +273 -0
- package/tenants/tokenoftrust/content/pages-html/solutions.html +292 -0
- package/tenants/tokenoftrust/content/pages-html/vlp-alcohol.html +289 -0
- package/tenants/tokenoftrust/content/pages-html/vlp-cigars-and-tobacco.html +286 -0
- package/tenants/tokenoftrust/content/pages-html/vlp-firearm-accessories.html +267 -0
- package/tenants/tokenoftrust/content/pages-html/vlp-peptides.html +273 -0
- package/tenants/tokenoftrust/content/themes/tot-navy.json +88 -0
- package/tenants/tokenoftrust/public/favicon.png +0 -0
- package/tenants/tokenoftrust/public/logo-icon.png +0 -0
- package/tenants/tokenoftrust/public/logo-wordmark.png +0 -0
- package/tenants/tokenoftrust/public/pages/company.css +108 -0
- package/tenants/tokenoftrust/public/pages/home.css +457 -0
- package/tenants/tokenoftrust/public/pages/mkt.css +482 -0
- package/tenants/tokenoftrust/public/pages/pricing.css +214 -0
- package/tenants/tokenoftrust/public/pages/solutions.css +66 -0
- package/tenants/tokenoftrust/public/themes/tot-navy-1.0.0.css +136 -0
- package/tenants/tokenoftrust/public/themes/tot-navy.css +358 -0
- package/tenants/tokenoftrust/theme.json +31 -0
- package/tsconfig.base.json +20 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<link rel="icon" type="image/png" href="/tenants/tokenoftrust/favicon.png">
|
|
7
|
+
<title>Firearm Accessory Compliance at Checkout | Token of Trust</title>
|
|
8
|
+
<meta name="description" content="State-aware age and identity verification for firearm accessories and regulated parts, including California AB 1263 — applied at checkout, only where required by law.">
|
|
9
|
+
<link rel="canonical" href="https://tokenoftrust.com/vlp-firearm-accessories/">
|
|
10
|
+
<meta name="robots" content="index,follow,max-image-preview:large">
|
|
11
|
+
<meta property="og:type" content="website">
|
|
12
|
+
<meta property="og:site_name" content="Token of Trust">
|
|
13
|
+
<meta property="og:title" content="Compliance for Firearm Accessories & Parts — Token of Trust">
|
|
14
|
+
<meta property="og:description" content="Apply age and identity verification only where required — including California AB 1263 — at ecommerce checkout and fulfillment.">
|
|
15
|
+
<meta property="og:url" content="https://tokenoftrust.com/vlp-firearm-accessories/">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Firearm Accessory Compliance — Token of Trust">
|
|
18
|
+
<meta name="twitter:description" content="State-aware verification for firearm accessories, applied at checkout only where required.">
|
|
19
|
+
<script type="application/ld+json">
|
|
20
|
+
{
|
|
21
|
+
"@context": "https://schema.org",
|
|
22
|
+
"@graph": [
|
|
23
|
+
{
|
|
24
|
+
"@type": "Organization",
|
|
25
|
+
"@id": "https://tokenoftrust.com/#org",
|
|
26
|
+
"name": "Token of Trust",
|
|
27
|
+
"url": "https://tokenoftrust.com/",
|
|
28
|
+
"logo": "/tenants/tokenoftrust/logo-icon.png",
|
|
29
|
+
"slogan": "Real Customers. Less Fraud. More Trust."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@type": "WebPage",
|
|
33
|
+
"name": "Compliance and Fraud Controls for Firearm Accessories and Parts",
|
|
34
|
+
"url": "https://tokenoftrust.com/vlp-firearm-accessories/"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
<link rel="stylesheet" href="/tenants/tokenoftrust/themes/tot-navy.css">
|
|
40
|
+
<link rel="stylesheet" href="/tenants/tokenoftrust/pages/mkt.css">
|
|
41
|
+
</head>
|
|
42
|
+
<body>
|
|
43
|
+
<a class="skip-link" href="#main">Skip to main content</a>
|
|
44
|
+
|
|
45
|
+
<header class="site">
|
|
46
|
+
<div class="container nav-row">
|
|
47
|
+
<a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
|
|
48
|
+
<nav class="primary" id="primaryNav" aria-label="Primary">
|
|
49
|
+
<ul>
|
|
50
|
+
<li><a href="/product/">Platform</a></li>
|
|
51
|
+
<li><a class="active" href="/solutions/" aria-current="page">Industries</a></li>
|
|
52
|
+
<li><a href="/company/">Company</a></li>
|
|
53
|
+
<li><a href="/resources/">Resources</a></li>
|
|
54
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
55
|
+
<li><a href="https://app.tokenoftrust.com">Login</a></li>
|
|
56
|
+
</ul>
|
|
57
|
+
</nav>
|
|
58
|
+
<div class="nav-cta">
|
|
59
|
+
<a class="btn btn-line" href="/contact/">Book Demo</a>
|
|
60
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
61
|
+
<button class="hamburger" id="hamburger" aria-label="Toggle navigation menu" aria-expanded="false" aria-controls="primaryNav"><span></span><span></span><span></span></button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</header>
|
|
65
|
+
|
|
66
|
+
<main id="main">
|
|
67
|
+
<div class="container">
|
|
68
|
+
<nav class="crumbs" aria-label="Breadcrumb">
|
|
69
|
+
<a href="/">Home</a><span class="sep">›</span>
|
|
70
|
+
<a href="/solutions/">Industries</a><span class="sep">›</span>
|
|
71
|
+
<span aria-current="page">Firearm Accessories</span>
|
|
72
|
+
</nav>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<section class="hero" aria-labelledby="hero-heading">
|
|
76
|
+
<div class="container">
|
|
77
|
+
<span class="eyebrow"><span class="dot"></span>Firearms & Ammo</span>
|
|
78
|
+
<h1 id="hero-heading">Compliance and fraud controls for <span class="grad">firearm accessories.</span></h1>
|
|
79
|
+
<p class="lede">
|
|
80
|
+
State-aware verification for firearm accessories and regulated parts. Apply age and identity
|
|
81
|
+
verification only where required by law — including California AB 1263 — for orders that include
|
|
82
|
+
firearm accessories and parts. Built for ecommerce checkout and fulfillment, with fast installs for
|
|
83
|
+
Shopify, WooCommerce, BigCommerce, and more.
|
|
84
|
+
</p>
|
|
85
|
+
<div class="cta-row">
|
|
86
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
87
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</section>
|
|
91
|
+
|
|
92
|
+
<section aria-labelledby="challenge-heading">
|
|
93
|
+
<div class="container">
|
|
94
|
+
<div class="center reveal">
|
|
95
|
+
<span class="kicker">The challenge</span>
|
|
96
|
+
<h2 id="challenge-heading">The real risk: it's not just what you sell — it's where it ships</h2>
|
|
97
|
+
<p class="section-lede">
|
|
98
|
+
State-level laws like California AB 1263 regulate accessories based on what's being sold and where
|
|
99
|
+
it's going. But most ecommerce systems aren't built to apply those rules at checkout. That gap
|
|
100
|
+
leads to blocked orders, chargebacks, or post-sale reversals — unless enforcement happens before
|
|
101
|
+
fulfillment. We provide the infrastructure to apply those rules at checkout, before fulfillment
|
|
102
|
+
begins.
|
|
103
|
+
</p>
|
|
104
|
+
</div>
|
|
105
|
+
<div class="steps">
|
|
106
|
+
<div class="step reveal">
|
|
107
|
+
<span class="num">01</span>
|
|
108
|
+
<h3>Cart & address</h3>
|
|
109
|
+
<p>Buyers add items to cart and enter a shipping address.</p>
|
|
110
|
+
</div>
|
|
111
|
+
<div class="step reveal">
|
|
112
|
+
<span class="num">02</span>
|
|
113
|
+
<h3>AB 1263 rules enforced</h3>
|
|
114
|
+
<p>Location-based accessory rules are evaluated against the order.</p>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="step reveal">
|
|
117
|
+
<span class="num">03</span>
|
|
118
|
+
<h3>Verify only when required</h3>
|
|
119
|
+
<p>Buyers are verified only when a rule legally requires it.</p>
|
|
120
|
+
</div>
|
|
121
|
+
<div class="step reveal">
|
|
122
|
+
<span class="num">04</span>
|
|
123
|
+
<h3>Non-compliant orders blocked</h3>
|
|
124
|
+
<p>Restricted orders are blocked; compliant orders proceed.</p>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="center reveal" style="margin-top:24px">
|
|
128
|
+
<p class="section-lede">Every step produces encrypted, audit-ready records, stored and access-controlled.</p>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</section>
|
|
132
|
+
|
|
133
|
+
<section class="alt-bg" aria-labelledby="solution-heading">
|
|
134
|
+
<div class="container">
|
|
135
|
+
<div class="center reveal">
|
|
136
|
+
<span class="kicker">The solution</span>
|
|
137
|
+
<h2 id="solution-heading">Firearm accessory rules, applied at checkout</h2>
|
|
138
|
+
<p class="section-lede">
|
|
139
|
+
You define when and where rules apply — based on product, location, or policy. If triggered, the
|
|
140
|
+
right control is applied. If not, the order flows through with no added friction.
|
|
141
|
+
</p>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="feature-grid three">
|
|
144
|
+
<article class="feat-card accent reveal">
|
|
145
|
+
<h3>Rules by product & location</h3>
|
|
146
|
+
<p>Apply accessory rules based on product type and buyer location, so enforcement matches the law that
|
|
147
|
+
actually applies.</p>
|
|
148
|
+
</article>
|
|
149
|
+
<article class="feat-card accent reveal">
|
|
150
|
+
<h3>Verify only when required</h3>
|
|
151
|
+
<p>Enforce age or identity checks only when legally required — never add friction where it isn't warranted.</p>
|
|
152
|
+
</article>
|
|
153
|
+
<article class="feat-card accent reveal">
|
|
154
|
+
<h3>Block or route restricted items</h3>
|
|
155
|
+
<p>Block or route restricted items before they ship, keeping non-compliant orders out of fulfillment.</p>
|
|
156
|
+
</article>
|
|
157
|
+
<article class="feat-card accent reveal">
|
|
158
|
+
<h3>Let low-risk orders flow</h3>
|
|
159
|
+
<p>Let low-risk, compliant orders move through without delay — no unnecessary review overhead.</p>
|
|
160
|
+
</article>
|
|
161
|
+
<article class="feat-card accent reveal">
|
|
162
|
+
<h3>Encrypted, access-controlled data</h3>
|
|
163
|
+
<p>Keep sensitive data encrypted and access-controlled, so records stay protected end to end.</p>
|
|
164
|
+
</article>
|
|
165
|
+
<article class="feat-card accent reveal">
|
|
166
|
+
<h3>Prove compliance at the sale</h3>
|
|
167
|
+
<p>Enforcing rules at checkout gives sellers a reliable way to prove compliance at the time of sale —
|
|
168
|
+
while reducing review overhead and avoiding issues as laws evolve. <a class="card-link" href="/product/">Explore
|
|
169
|
+
the platform →</a></p>
|
|
170
|
+
</article>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</section>
|
|
174
|
+
|
|
175
|
+
<section aria-labelledby="faq-heading">
|
|
176
|
+
<div class="container">
|
|
177
|
+
<div class="center reveal">
|
|
178
|
+
<span class="kicker">FAQ</span>
|
|
179
|
+
<h2 id="faq-heading">Firearm accessory compliance questions</h2>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="faq reveal">
|
|
182
|
+
<details><summary>Can I sell firearm accessories online in California?</summary><p>Yes — but California
|
|
183
|
+
restricts certain accessories based on product function, including those associated with increased rate
|
|
184
|
+
of fire. Token of Trust helps sellers apply location-based rules at checkout to block or conditionally
|
|
185
|
+
allow regulated accessories.</p></details>
|
|
186
|
+
<details><summary>Do I have to verify every customer's age or identity?</summary><p>No. Age or identity
|
|
187
|
+
verification is applied only when required by law or by seller-defined rules. Low-risk, compliant orders
|
|
188
|
+
can proceed without additional checks.</p></details>
|
|
189
|
+
<details><summary>What happens if other states introduce rules similar to California's?</summary><p>Token
|
|
190
|
+
of Trust is built to support function-based accessory rules as they emerge. Sellers can update or add new
|
|
191
|
+
rules without rebuilding checkout logic.</p></details>
|
|
192
|
+
<details><summary>Does Token of Trust replace background checks, FFL requirements, or determine legality?</summary><p>No.
|
|
193
|
+
Firearm background checks are conducted by FFLs through NICS or local law enforcement. Token of Trust does
|
|
194
|
+
not determine legality or provide legal advice; sellers define applicable rules, and Token of Trust applies
|
|
195
|
+
them at checkout.</p></details>
|
|
196
|
+
<details><summary>Will Token of Trust work with my existing store or POS system?</summary><p>Yes. Token
|
|
197
|
+
of Trust integrates with leading ecommerce and point-of-sale platforms and can be customized for unique
|
|
198
|
+
workflows, ensuring compliance without disrupting sales.</p></details>
|
|
199
|
+
<details><summary>How does Token of Trust keep me audit-ready?</summary><p>Every transaction is logged
|
|
200
|
+
with the correct treatment and supporting documentation. Centralized, exportable records mean you can respond
|
|
201
|
+
to regulator requests quickly and confidently.</p></details>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</section>
|
|
205
|
+
|
|
206
|
+
<section aria-labelledby="cta-heading">
|
|
207
|
+
<div class="container">
|
|
208
|
+
<div class="cta-band reveal">
|
|
209
|
+
<span class="kicker">Enforce firearm accessory rules with confidence</span>
|
|
210
|
+
<h2 id="cta-heading">Apply the right rules, only where required</h2>
|
|
211
|
+
<p>
|
|
212
|
+
Apply state-specific accessory rules at checkout — only where required — while keeping compliant
|
|
213
|
+
orders moving. We'll help you configure the right controls for your products, buyers, and selling
|
|
214
|
+
destinations. 256-bit SSL encryption, 100% of the time. We will NEVER sell your data. Compliant
|
|
215
|
+
with GDPR and global privacy laws.
|
|
216
|
+
</p>
|
|
217
|
+
<div class="cta-row">
|
|
218
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
219
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</section>
|
|
224
|
+
</main>
|
|
225
|
+
|
|
226
|
+
<footer class="site">
|
|
227
|
+
<div class="container">
|
|
228
|
+
<div class="foot-grid">
|
|
229
|
+
<div>
|
|
230
|
+
<a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
|
|
231
|
+
<p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
|
|
232
|
+
NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
|
|
233
|
+
</div>
|
|
234
|
+
<nav aria-label="Platform footer"><h3>Platform</h3><ul>
|
|
235
|
+
<li><a href="/product/verification/">Identity Verification</a></li>
|
|
236
|
+
<li><a href="/product/age-assurance/">Age Assurance</a></li>
|
|
237
|
+
<li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
|
|
238
|
+
<li><a href="/product/">All products</a></li>
|
|
239
|
+
</ul></nav>
|
|
240
|
+
<nav aria-label="Industries footer"><h3>Industries</h3><ul>
|
|
241
|
+
<li><a href="/solutions/">All industries</a></li>
|
|
242
|
+
<li><a href="/vlp-cigars-and-tobacco/">Tobacco & Vape</a></li>
|
|
243
|
+
<li><a href="/vlp-alcohol/">Wine & Spirits</a></li>
|
|
244
|
+
<li><a href="/industries/cannabis/">Cannabis</a></li>
|
|
245
|
+
</ul></nav>
|
|
246
|
+
<nav aria-label="Company footer"><h3>Company</h3><ul>
|
|
247
|
+
<li><a href="/company/">Company</a></li>
|
|
248
|
+
<li><a href="/careers/">Careers</a></li>
|
|
249
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
250
|
+
<li><a href="/contact/">Contact Sales</a></li>
|
|
251
|
+
</ul></nav>
|
|
252
|
+
</div>
|
|
253
|
+
<p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
|
|
254
|
+
</div>
|
|
255
|
+
</footer>
|
|
256
|
+
|
|
257
|
+
<script>
|
|
258
|
+
(function(){
|
|
259
|
+
var burger = document.getElementById('hamburger');
|
|
260
|
+
var nav = document.getElementById('primaryNav');
|
|
261
|
+
burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
|
|
262
|
+
var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
|
|
263
|
+
document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
|
|
264
|
+
})();
|
|
265
|
+
</script>
|
|
266
|
+
</body>
|
|
267
|
+
</html>
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<link rel="icon" type="image/png" href="/tenants/tokenoftrust/favicon.png">
|
|
7
|
+
<title>Compliance & Verification for Peptide Retailers | Token of Trust</title>
|
|
8
|
+
<meta name="description" content="Token of Trust automates age and identity verification for peptide sellers — state-aware, privacy-first checks that keep checkout fast and your store protected.">
|
|
9
|
+
<link rel="canonical" href="https://tokenoftrust.com/vlp-peptides/">
|
|
10
|
+
<meta name="robots" content="index,follow,max-image-preview:large">
|
|
11
|
+
<meta property="og:type" content="website">
|
|
12
|
+
<meta property="og:site_name" content="Token of Trust">
|
|
13
|
+
<meta property="og:title" content="Compliance and Verification for Peptide Retailers — Token of Trust">
|
|
14
|
+
<meta property="og:description" content="Automated age and identity verification for peptide businesses — sell confidently and keep your store protected.">
|
|
15
|
+
<meta property="og:url" content="https://tokenoftrust.com/vlp-peptides/">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Peptide Compliance — Token of Trust">
|
|
18
|
+
<meta name="twitter:description" content="Automated, state-aware verification for peptide retailers.">
|
|
19
|
+
<script type="application/ld+json">
|
|
20
|
+
{
|
|
21
|
+
"@context": "https://schema.org",
|
|
22
|
+
"@graph": [
|
|
23
|
+
{
|
|
24
|
+
"@type": "Organization",
|
|
25
|
+
"@id": "https://tokenoftrust.com/#org",
|
|
26
|
+
"name": "Token of Trust",
|
|
27
|
+
"url": "https://tokenoftrust.com/",
|
|
28
|
+
"logo": "/tenants/tokenoftrust/logo-icon.png",
|
|
29
|
+
"slogan": "Real Customers. Less Fraud. More Trust."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"@type": "WebPage",
|
|
33
|
+
"name": "Compliance and Verification for Peptide Retailers",
|
|
34
|
+
"url": "https://tokenoftrust.com/vlp-peptides/"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
<link rel="stylesheet" href="/tenants/tokenoftrust/themes/tot-navy.css">
|
|
40
|
+
<link rel="stylesheet" href="/tenants/tokenoftrust/pages/mkt.css">
|
|
41
|
+
</head>
|
|
42
|
+
<body>
|
|
43
|
+
<a class="skip-link" href="#main">Skip to main content</a>
|
|
44
|
+
|
|
45
|
+
<header class="site">
|
|
46
|
+
<div class="container nav-row">
|
|
47
|
+
<a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
|
|
48
|
+
<nav class="primary" id="primaryNav" aria-label="Primary">
|
|
49
|
+
<ul>
|
|
50
|
+
<li><a href="/product/">Platform</a></li>
|
|
51
|
+
<li><a class="active" href="/solutions/" aria-current="page">Industries</a></li>
|
|
52
|
+
<li><a href="/company/">Company</a></li>
|
|
53
|
+
<li><a href="/resources/">Resources</a></li>
|
|
54
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
55
|
+
<li><a href="https://app.tokenoftrust.com">Login</a></li>
|
|
56
|
+
</ul>
|
|
57
|
+
</nav>
|
|
58
|
+
<div class="nav-cta">
|
|
59
|
+
<a class="btn btn-line" href="/contact/">Book Demo</a>
|
|
60
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
61
|
+
<button class="hamburger" id="hamburger" aria-label="Toggle navigation menu" aria-expanded="false" aria-controls="primaryNav"><span></span><span></span><span></span></button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</header>
|
|
65
|
+
|
|
66
|
+
<main id="main">
|
|
67
|
+
<div class="container">
|
|
68
|
+
<nav class="crumbs" aria-label="Breadcrumb">
|
|
69
|
+
<a href="/">Home</a><span class="sep">›</span>
|
|
70
|
+
<a href="/solutions/">Industries</a><span class="sep">›</span>
|
|
71
|
+
<span aria-current="page">Peptides</span>
|
|
72
|
+
</nav>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<section class="hero" aria-labelledby="hero-heading">
|
|
76
|
+
<div class="container">
|
|
77
|
+
<span class="eyebrow"><span class="dot"></span>Peptides & Supplements</span>
|
|
78
|
+
<h1 id="hero-heading">Compliance and verification for <span class="grad">peptide retailers.</span></h1>
|
|
79
|
+
<p class="lede">
|
|
80
|
+
Protect your peptide business with automated compliance. Token of Trust automates age and identity
|
|
81
|
+
verification so you can sell confidently and keep your store protected.
|
|
82
|
+
</p>
|
|
83
|
+
<div class="cta-row">
|
|
84
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
85
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</section>
|
|
89
|
+
|
|
90
|
+
<section aria-labelledby="challenge-heading">
|
|
91
|
+
<div class="container">
|
|
92
|
+
<div class="center reveal">
|
|
93
|
+
<span class="kicker">The challenge</span>
|
|
94
|
+
<h2 id="challenge-heading">Peptides sit in a shifting legal gray area</h2>
|
|
95
|
+
<p class="section-lede">
|
|
96
|
+
Peptides aren't FDA-approved supplements, and some states restrict sales to minors. Regulators and
|
|
97
|
+
payment processors scrutinize marketing and sales practices, and platforms enforce restrictions on
|
|
98
|
+
products they classify as high-risk. Without strong compliance safeguards, accounts can be frozen
|
|
99
|
+
and stores suspended.
|
|
100
|
+
</p>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="feature-grid three">
|
|
103
|
+
<article class="feat-card reveal">
|
|
104
|
+
<h3>Emerging age restrictions</h3>
|
|
105
|
+
<p>States are introducing age restrictions on performance and weight-loss products — categories peptides
|
|
106
|
+
often fall into. More states are expected to follow.</p>
|
|
107
|
+
</article>
|
|
108
|
+
<article class="feat-card reveal">
|
|
109
|
+
<h3>Processor risk</h3>
|
|
110
|
+
<p>Processors classify peptides as high-risk due to regulatory uncertainty and chargeback exposure. Without
|
|
111
|
+
safeguards, accounts can be frozen or closed.</p>
|
|
112
|
+
</article>
|
|
113
|
+
<article class="feat-card reveal">
|
|
114
|
+
<h3>Platform & marketing scrutiny</h3>
|
|
115
|
+
<p>Shopify and WooCommerce enforce restrictions on high-risk supplements, and claims like "muscle growth"
|
|
116
|
+
or "anti-aging" can trigger regulator or processor scrutiny.</p>
|
|
117
|
+
</article>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
</section>
|
|
121
|
+
|
|
122
|
+
<section class="alt-bg" aria-labelledby="solution-heading">
|
|
123
|
+
<div class="container">
|
|
124
|
+
<div class="center reveal">
|
|
125
|
+
<span class="kicker">The solution</span>
|
|
126
|
+
<h2 id="solution-heading">Smarter compliance for peptide sellers</h2>
|
|
127
|
+
<p class="section-lede">
|
|
128
|
+
Token of Trust helps peptide businesses stay compliant as laws change, with automated verification
|
|
129
|
+
that keeps checkout fast and secure. We help you:
|
|
130
|
+
</p>
|
|
131
|
+
</div>
|
|
132
|
+
<div class="feature-grid three">
|
|
133
|
+
<article class="feat-card accent reveal">
|
|
134
|
+
<h3>Automatic verification flow</h3>
|
|
135
|
+
<p>Apply the right verification flow automatically, based on product and customer location.</p>
|
|
136
|
+
</article>
|
|
137
|
+
<article class="feat-card accent reveal">
|
|
138
|
+
<h3>Future-ready compliance</h3>
|
|
139
|
+
<p>Meet regulatory, processor, and platform requirements with adaptable, future-ready solutions.</p>
|
|
140
|
+
</article>
|
|
141
|
+
<article class="feat-card accent reveal">
|
|
142
|
+
<h3>Fast, privacy-first checks</h3>
|
|
143
|
+
<p>Preserve checkout speed and customer trust with seamless, privacy-first checks. <a class="card-link" href="/product/">Explore
|
|
144
|
+
the platform →</a></p>
|
|
145
|
+
</article>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</section>
|
|
149
|
+
|
|
150
|
+
<section aria-labelledby="how-heading">
|
|
151
|
+
<div class="container">
|
|
152
|
+
<div class="center reveal">
|
|
153
|
+
<span class="kicker">How it works</span>
|
|
154
|
+
<h2 id="how-heading">How we simplify compliance</h2>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="steps three">
|
|
157
|
+
<div class="step reveal">
|
|
158
|
+
<span class="num">01</span>
|
|
159
|
+
<h3>Compliance review</h3>
|
|
160
|
+
<p>We assess your current verification flow and flag compliance gaps that could put your business at
|
|
161
|
+
risk.</p>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="step reveal">
|
|
164
|
+
<span class="num">02</span>
|
|
165
|
+
<h3>Custom blueprint</h3>
|
|
166
|
+
<p>You'll get a tailored plan with the right verification methods for your products and regions.</p>
|
|
167
|
+
</div>
|
|
168
|
+
<div class="step reveal">
|
|
169
|
+
<span class="num">03</span>
|
|
170
|
+
<h3>Implementation & support</h3>
|
|
171
|
+
<p>Our team helps you integrate, test, and launch — then keeps you updated as laws and platform rules
|
|
172
|
+
evolve.</p>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
</section>
|
|
177
|
+
|
|
178
|
+
<section class="alt-bg" aria-labelledby="faq-heading">
|
|
179
|
+
<div class="container">
|
|
180
|
+
<div class="center reveal">
|
|
181
|
+
<span class="kicker">FAQ</span>
|
|
182
|
+
<h2 id="faq-heading">Peptides and supplements questions</h2>
|
|
183
|
+
</div>
|
|
184
|
+
<div class="faq reveal">
|
|
185
|
+
<details><summary>Is it legal to sell peptides online?</summary><p>Peptides sit in a legal gray area. They
|
|
186
|
+
aren't FDA-approved supplements, and some states restrict sales to minors. Compliance depends on how you
|
|
187
|
+
position, market, and sell them.</p></details>
|
|
188
|
+
<details><summary>Do under-18 bans affect peptide sales?</summary><p>Yes. States are introducing age restrictions
|
|
189
|
+
on performance and weight-loss products — categories peptides often fall into. More states are expected
|
|
190
|
+
to follow, which makes age verification an essential safeguard.</p></details>
|
|
191
|
+
<details><summary>Does "not for human consumption" labeling protect me?</summary><p>Not fully. Regulators
|
|
192
|
+
and processors focus on marketing and sales practices. Claims tied to muscle growth, recovery, or anti-aging
|
|
193
|
+
still create compliance risk.</p></details>
|
|
194
|
+
<details><summary>Why do payment processors shut peptide stores down?</summary><p>Processors classify peptides
|
|
195
|
+
as high-risk due to regulatory uncertainty and chargeback exposure. Without strong compliance safeguards,
|
|
196
|
+
accounts can be frozen or closed.</p></details>
|
|
197
|
+
<details><summary>Can Shopify or WooCommerce ban my store?</summary><p>Yes. Both platforms enforce restrictions
|
|
198
|
+
on supplements they classify as high-risk. Stores without proper verification or compliance records risk
|
|
199
|
+
suspension.</p></details>
|
|
200
|
+
<details><summary>What marketing claims put me at risk?</summary><p>Phrases like "muscle growth," "fat
|
|
201
|
+
loss," "anti-aging," or "recovery booster" can trigger regulator or processor scrutiny.</p></details>
|
|
202
|
+
<details><summary>How does Token of Trust help peptide sellers?</summary><p>We provide state-aware verification,
|
|
203
|
+
audit logs, and privacy-first workflows that protect your brand, keep your store live, and build customer
|
|
204
|
+
trust.</p></details>
|
|
205
|
+
<details><summary>What if my audience is global?</summary><p>Rules differ across borders. Token of Trust
|
|
206
|
+
applies region-specific verification flows that adapt to local laws and platform policies — keeping you
|
|
207
|
+
compliant worldwide without slowing down checkout.</p></details>
|
|
208
|
+
</div>
|
|
209
|
+
</div>
|
|
210
|
+
</section>
|
|
211
|
+
|
|
212
|
+
<section aria-labelledby="cta-heading">
|
|
213
|
+
<div class="container">
|
|
214
|
+
<div class="cta-band reveal">
|
|
215
|
+
<span class="kicker">Have more questions? We're here to help.</span>
|
|
216
|
+
<h2 id="cta-heading">Keep your peptide store compliant and trusted</h2>
|
|
217
|
+
<p>
|
|
218
|
+
Reach out to our team and we'll show you how Token of Trust keeps peptide businesses compliant,
|
|
219
|
+
protects customer privacy, and ensures your store stays trusted and operational. 256-bit SSL
|
|
220
|
+
encryption, 100% of the time. We will NEVER sell your data. Compliant with GDPR and global privacy
|
|
221
|
+
laws.
|
|
222
|
+
</p>
|
|
223
|
+
<div class="cta-row">
|
|
224
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
225
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
226
|
+
</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</section>
|
|
230
|
+
</main>
|
|
231
|
+
|
|
232
|
+
<footer class="site">
|
|
233
|
+
<div class="container">
|
|
234
|
+
<div class="foot-grid">
|
|
235
|
+
<div>
|
|
236
|
+
<a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
|
|
237
|
+
<p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
|
|
238
|
+
NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
|
|
239
|
+
</div>
|
|
240
|
+
<nav aria-label="Platform footer"><h3>Platform</h3><ul>
|
|
241
|
+
<li><a href="/product/verification/">Identity Verification</a></li>
|
|
242
|
+
<li><a href="/product/age-assurance/">Age Assurance</a></li>
|
|
243
|
+
<li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
|
|
244
|
+
<li><a href="/product/">All products</a></li>
|
|
245
|
+
</ul></nav>
|
|
246
|
+
<nav aria-label="Industries footer"><h3>Industries</h3><ul>
|
|
247
|
+
<li><a href="/solutions/">All industries</a></li>
|
|
248
|
+
<li><a href="/vlp-cigars-and-tobacco/">Tobacco & Vape</a></li>
|
|
249
|
+
<li><a href="/vlp-alcohol/">Wine & Spirits</a></li>
|
|
250
|
+
<li><a href="/industries/cannabis/">Cannabis</a></li>
|
|
251
|
+
</ul></nav>
|
|
252
|
+
<nav aria-label="Company footer"><h3>Company</h3><ul>
|
|
253
|
+
<li><a href="/company/">Company</a></li>
|
|
254
|
+
<li><a href="/careers/">Careers</a></li>
|
|
255
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
256
|
+
<li><a href="/contact/">Contact Sales</a></li>
|
|
257
|
+
</ul></nav>
|
|
258
|
+
</div>
|
|
259
|
+
<p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
|
|
260
|
+
</div>
|
|
261
|
+
</footer>
|
|
262
|
+
|
|
263
|
+
<script>
|
|
264
|
+
(function(){
|
|
265
|
+
var burger = document.getElementById('hamburger');
|
|
266
|
+
var nav = document.getElementById('primaryNav');
|
|
267
|
+
burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
|
|
268
|
+
var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
|
|
269
|
+
document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
|
|
270
|
+
})();
|
|
271
|
+
</script>
|
|
272
|
+
</body>
|
|
273
|
+
</html>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "tot-navy",
|
|
3
|
+
"role": "current",
|
|
4
|
+
"name": "ToT Navy — Regulated Ecommerce",
|
|
5
|
+
"description": "The design-11 concept: enterprise navy anchor on warm cream, with trust-teal / coral / green accents. Extracted from home + pricing, hardened to the ecommerce quality bar.",
|
|
6
|
+
"source": "design-11 prototype",
|
|
7
|
+
"stylesheet": "/tenants/tokenoftrust/themes/tot-navy.css",
|
|
8
|
+
"concept": { "id": "tot-navy", "version": "1.1.0", "baseline": "1.0.0" },
|
|
9
|
+
"status": "review-ready",
|
|
10
|
+
"claimsPolicy": "Trust/social-proof content in this guide is PLACEHOLDER / needs-review — never ship fabricated ratings, testimonials, badges, guarantees, or customer/partner logos.",
|
|
11
|
+
"preview": {
|
|
12
|
+
"componentVars": {
|
|
13
|
+
"--color-bg": "#faf8f4",
|
|
14
|
+
"--color-surface": "#ffffff",
|
|
15
|
+
"--color-text": "#1b2a40",
|
|
16
|
+
"--color-muted": "#4d5a70",
|
|
17
|
+
"--color-primary": "#10294b",
|
|
18
|
+
"--color-primary-contrast": "#ffffff",
|
|
19
|
+
"--color-accent": "#0b6360",
|
|
20
|
+
"--color-border": "#e6e2d9",
|
|
21
|
+
"--color-success": "#157a4a",
|
|
22
|
+
"--color-sale": "#bf3d2c",
|
|
23
|
+
"--radius-sm": "13px",
|
|
24
|
+
"--radius-md": "16px",
|
|
25
|
+
"--radius-lg": "20px",
|
|
26
|
+
"--radius-full": "999px",
|
|
27
|
+
"--shadow-sm": "0 8px 24px rgba(27,42,64,.07)",
|
|
28
|
+
"--shadow-md": "0 12px 36px rgba(16,41,75,.10)",
|
|
29
|
+
"--shadow-lg": "0 24px 60px -20px rgba(16,41,75,.16)",
|
|
30
|
+
"--container-max": "1240px",
|
|
31
|
+
"--font-display": "-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif",
|
|
32
|
+
"--font-body": "-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif",
|
|
33
|
+
"--font-mono": "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"tokens": {
|
|
37
|
+
"color": [
|
|
38
|
+
{ "name": "navy", "var": "--navy", "value": "#10294b", "role": "Primary anchor · headings, dark surfaces" },
|
|
39
|
+
{ "name": "navy-2", "var": "--navy-2", "value": "#173763", "role": "Navy hover / raised on navy" },
|
|
40
|
+
{ "name": "navy-soft", "var": "--navy-soft", "value": "#1e4275", "role": "Navy hairlines / borders" },
|
|
41
|
+
{ "name": "cream", "var": "--cream", "value": "#faf8f4", "role": "Page background (warm)" },
|
|
42
|
+
{ "name": "card", "var": "--card", "value": "#ffffff", "role": "Card / raised surface" },
|
|
43
|
+
{ "name": "line", "var": "--line", "value": "#e6e2d9", "role": "Warm hairline border" },
|
|
44
|
+
{ "name": "line-cool", "var": "--line-cool", "value": "#dfe6ee", "role": "Cool hairline border" },
|
|
45
|
+
{ "name": "ink", "var": "--ink", "value": "#1b2a40", "role": "Body text" },
|
|
46
|
+
{ "name": "muted", "var": "--muted", "value": "#4d5a70", "role": "Secondary text (AA on cream + white)" },
|
|
47
|
+
{ "name": "teal", "var": "--teal", "value": "#0d9391", "role": "Trust accent · decorative / large (>=3:1 on cream)" },
|
|
48
|
+
{ "name": "teal-ink", "var": "--teal-ink", "value": "#0b6360", "role": "Trust accent · small text (AA)" },
|
|
49
|
+
{ "name": "coral", "var": "--coral", "value": "#bf3d2c", "role": "Warm emphasis · AA on cream (~5.1:1), safe as text" },
|
|
50
|
+
{ "name": "green", "var": "--green", "value": "#1d9e5f", "role": "Brand green (decorative)" },
|
|
51
|
+
{ "name": "gold", "var": "--gold", "value": "#8a6012", "role": "Deep amber highlight / rating · AA on cream (~5.2:1)" }
|
|
52
|
+
],
|
|
53
|
+
"semantic": [
|
|
54
|
+
{ "name": "cta", "var": "--color-cta", "value": "#16794a", "role": "Primary action bg · white text AA (~5.4:1)" },
|
|
55
|
+
{ "name": "cta-hover", "var": "--color-cta-hover", "value": "#115f3a", "role": "Primary action hover" },
|
|
56
|
+
{ "name": "trust", "var": "--color-trust", "value": "#0b6360", "role": "Trust / verification accent (text-safe)" },
|
|
57
|
+
{ "name": "focus-ring", "var": "--focus-ring", "value": "#4f7fff", "role": "Visible focus outline (>=3:1 on cream ~3.4 + navy ~3.6)" },
|
|
58
|
+
{ "name": "error", "var": "--color-error", "value": "#b3261e", "role": "Validation / error" },
|
|
59
|
+
{ "name": "success", "var": "--color-success", "value": "#157a4a", "role": "Validation / success" },
|
|
60
|
+
{ "name": "surface-card", "var": "--surface-card", "value": "#ffffff", "role": "Card / raised surface (semantic alias)" },
|
|
61
|
+
{ "name": "text-muted", "var": "--text-muted", "value": "#4d5a70", "role": "Secondary text (semantic alias)" }
|
|
62
|
+
],
|
|
63
|
+
"gradient": { "var": "--grad", "value": "linear-gradient(115deg, #0ea5a3, #3b82c4)", "role": "Gradient text / progress" },
|
|
64
|
+
"type": {
|
|
65
|
+
"sans": "-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif",
|
|
66
|
+
"mono": "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
|
|
67
|
+
"scale": [
|
|
68
|
+
{ "name": "h1", "value": "clamp(2.1rem, 4.6vw, 3.25rem)", "weight": 800 },
|
|
69
|
+
{ "name": "h2", "value": "clamp(1.65rem, 3.3vw, 2.35rem)", "weight": 800 },
|
|
70
|
+
{ "name": "lede", "value": "1.13rem", "weight": 400 },
|
|
71
|
+
{ "name": "body", "value": "1rem (16px min)", "weight": 400 },
|
|
72
|
+
{ "name": "small", "value": "0.875rem (14px floor for meaningful text)", "weight": 400 },
|
|
73
|
+
{ "name": "kicker", "value": "0.875rem / uppercase / .14em", "weight": 800 }
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"space": [
|
|
77
|
+
{ "name": "s1", "value": "8px" }, { "name": "s2", "value": "16px" }, { "name": "s3", "value": "24px" },
|
|
78
|
+
{ "name": "s4", "value": "44px" }, { "name": "s5", "value": "72px" }, { "name": "s6", "value": "104px" }
|
|
79
|
+
],
|
|
80
|
+
"shape": [
|
|
81
|
+
{ "name": "radius", "var": "--r", "value": "20px" },
|
|
82
|
+
{ "name": "radius-sm", "var": "--r-sm", "value": "13px" },
|
|
83
|
+
{ "name": "shadow", "var": "--shadow", "value": "0 12px 36px rgba(16,41,75,.10)" },
|
|
84
|
+
{ "name": "shadow-soft", "var": "--shadow-soft", "value": "0 8px 24px rgba(27,42,64,.07)" },
|
|
85
|
+
{ "name": "tap-target", "var": "--tap", "value": "44px" }
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|