@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
package/tenants/tokenoftrust/content/pages-html/industries/adult-content-age-verification.html
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
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>Age Verification for Adult Websites & Apps | Token of Trust</title>
|
|
8
|
+
<meta name="description" content="Stay compliant with UK, US & global laws using Token of Trust's fast, privacy-safe age verification for adult sites — ID, biometric estimation & database checks.">
|
|
9
|
+
<link rel="canonical" href="https://tokenoftrust.com/industries/adult-content-age-verification/">
|
|
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="Age Verification for Adult Websites — Token of Trust">
|
|
14
|
+
<meta property="og:description" content="Privacy-first age verification built for compliance and conversion — meet UK Online Safety Act, GDPR, CCPA and 20+ U.S. state laws without losing users.">
|
|
15
|
+
<meta property="og:url" content="https://tokenoftrust.com/industries/adult-content-age-verification/">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Age Verification for Adult Websites">
|
|
18
|
+
<meta name="twitter:description" content="Privacy-first age verification that keeps adult sites legal — and users on-site.">
|
|
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": "Age Verification for Adult Websites & Apps",
|
|
34
|
+
"url": "https://tokenoftrust.com/industries/adult-content-age-verification/"
|
|
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
|
+
<nav class="container crumbs" aria-label="Breadcrumb">
|
|
68
|
+
<a href="/">Home</a><span class="sep">›</span>
|
|
69
|
+
<a href="/solutions/">Industries</a><span class="sep">›</span>
|
|
70
|
+
<span>Adult Websites & Apps</span>
|
|
71
|
+
</nav>
|
|
72
|
+
|
|
73
|
+
<section class="hero" aria-labelledby="hero-heading">
|
|
74
|
+
<div class="container">
|
|
75
|
+
<span class="eyebrow"><span class="dot"></span>Adult Websites & Apps</span>
|
|
76
|
+
<h1 id="hero-heading">Keep your adult site <span class="grad">live and legal</span> with smarter age checks.</h1>
|
|
77
|
+
<p class="lede">
|
|
78
|
+
Protect your brand with age verification built for compliance <em>and</em> conversion.
|
|
79
|
+
Token of Trust helps adult sites meet regulatory requirements without scaring off users
|
|
80
|
+
or adding friction.
|
|
81
|
+
</p>
|
|
82
|
+
<div class="cta-row">
|
|
83
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
84
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</section>
|
|
88
|
+
|
|
89
|
+
<div class="proof">
|
|
90
|
+
<div class="container">
|
|
91
|
+
<span><b>UK Online Safety Act</b> compliant</span><span class="sep">·</span>
|
|
92
|
+
<span><b>GDPR-ready</b> & CCPA-aligned</span><span class="sep">·</span>
|
|
93
|
+
<span>Coverage across <b>all U.S. states</b> with active AV laws</span>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<section aria-labelledby="split-heading">
|
|
98
|
+
<div class="container">
|
|
99
|
+
<div class="split reveal">
|
|
100
|
+
<div class="split-copy">
|
|
101
|
+
<span class="kicker">The challenge</span>
|
|
102
|
+
<h2 id="split-heading">Regulation is rising. So are the risks.</h2>
|
|
103
|
+
<p>
|
|
104
|
+
New laws are here — and they're not slowing down. In the UK, the Online Safety Act is
|
|
105
|
+
now in full force, requiring strict age verification for adult content. In the U.S.,
|
|
106
|
+
20+ states have rolled out their own laws, each with different requirements. Most age
|
|
107
|
+
verification tools are built for compliance only, not for keeping your users happy.
|
|
108
|
+
</p>
|
|
109
|
+
<a class="btn btn-line" href="/product/age-assurance/age-verification/">Explore age verification</a>
|
|
110
|
+
</div>
|
|
111
|
+
<ul class="check-list">
|
|
112
|
+
<li><b>Traffic loss</b><span>Poor verification UX can push paying users to competitors.</span></li>
|
|
113
|
+
<li><b>Legal exposure</b><span>Noncompliance can mean site blocking, lawsuits, and fines.</span></li>
|
|
114
|
+
<li><b>Privacy concerns</b><span>Legacy solutions store sensitive data, putting your users — and your
|
|
115
|
+
brand — at risk.</span></li>
|
|
116
|
+
</ul>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</section>
|
|
120
|
+
|
|
121
|
+
<section aria-labelledby="sol-heading">
|
|
122
|
+
<div class="container">
|
|
123
|
+
<div class="split rev reveal">
|
|
124
|
+
<div class="split-copy">
|
|
125
|
+
<span class="kicker">The solution</span>
|
|
126
|
+
<h2 id="sol-heading">Privacy-first age verification that works everywhere you operate</h2>
|
|
127
|
+
<p>
|
|
128
|
+
With Token of Trust, you can implement flexible, region-compliant age assurance without
|
|
129
|
+
storing sensitive user data — so you stay legal and trusted, everywhere you operate.
|
|
130
|
+
</p>
|
|
131
|
+
<a class="btn btn-line" href="/solutions/">See all industries</a>
|
|
132
|
+
</div>
|
|
133
|
+
<ul class="check-list">
|
|
134
|
+
<li><b>Location-aware routing</b><span>Match the right verification method to each visitor's location
|
|
135
|
+
automatically.</span></li>
|
|
136
|
+
<li><b>Comply without a rebuild</b><span>Meet every jurisdiction without rebuilding your site.</span></li>
|
|
137
|
+
<li><b>Protect conversion</b><span>Maintain conversion rates with fast, low-friction checks.</span></li>
|
|
138
|
+
</ul>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</section>
|
|
142
|
+
|
|
143
|
+
<section aria-labelledby="feat-heading">
|
|
144
|
+
<div class="container">
|
|
145
|
+
<div class="center reveal">
|
|
146
|
+
<span class="kicker">Tailored for compliance & conversion</span>
|
|
147
|
+
<h2 id="feat-heading">Age verification designed around your audience</h2>
|
|
148
|
+
<p class="section-lede">One verification core, configured for the rules and users of adult platforms.</p>
|
|
149
|
+
</div>
|
|
150
|
+
<div class="feature-grid three">
|
|
151
|
+
<article class="feat-card accent reveal">
|
|
152
|
+
<h3>Privacy-first verification options</h3>
|
|
153
|
+
<p>Choose from biometric age estimation, minimal-retention ID checks, or database lookups — all designed
|
|
154
|
+
to meet local laws while keeping user friction low.</p>
|
|
155
|
+
</article>
|
|
156
|
+
<article class="feat-card accent reveal">
|
|
157
|
+
<h3>Full-spectrum regulatory coverage</h3>
|
|
158
|
+
<p>Compliant with the UK Online Safety Act, GDPR, CCPA, and 20+ U.S. state age-verification laws — with
|
|
159
|
+
ongoing updates as regulations change.</p>
|
|
160
|
+
</article>
|
|
161
|
+
<article class="feat-card accent reveal">
|
|
162
|
+
<h3>Hands-on compliance support</h3>
|
|
163
|
+
<p>From setup to audits, our team works alongside yours to keep your platform legal, trusted, and optimized
|
|
164
|
+
for conversions.</p>
|
|
165
|
+
</article>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</section>
|
|
169
|
+
|
|
170
|
+
<section aria-labelledby="steps-heading">
|
|
171
|
+
<div class="container">
|
|
172
|
+
<div class="center reveal">
|
|
173
|
+
<span class="kicker">How it works</span>
|
|
174
|
+
<h2 id="steps-heading">From compliance gap to launch</h2>
|
|
175
|
+
</div>
|
|
176
|
+
<div class="steps three">
|
|
177
|
+
<div class="step reveal"><span class="num">1</span><h3>Compliance review</h3><p>We assess your current
|
|
178
|
+
verification flow and flag any compliance gaps, mapping your exposure under UK, U.S. state, and global
|
|
179
|
+
privacy laws.</p></div>
|
|
180
|
+
<div class="step reveal"><span class="num">2</span><h3>Custom blueprint</h3><p>You get a tailored plan
|
|
181
|
+
with the right verification methods for your audience and region — from biometric estimation to minimal-retention
|
|
182
|
+
ID checks.</p></div>
|
|
183
|
+
<div class="step reveal"><span class="num">3</span><h3>Implementation & support</h3><p>We help you
|
|
184
|
+
integrate, test, and launch — and keep you ahead of law changes as your long-term compliance partner.</p></div>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</section>
|
|
188
|
+
|
|
189
|
+
<section aria-labelledby="faq-heading">
|
|
190
|
+
<div class="container">
|
|
191
|
+
<div class="center reveal">
|
|
192
|
+
<span class="kicker">FAQ</span>
|
|
193
|
+
<h2 id="faq-heading">Frequently asked questions</h2>
|
|
194
|
+
</div>
|
|
195
|
+
<div class="faq reveal">
|
|
196
|
+
<details><summary>Will age verification hurt my traffic or conversions?</summary><p>Not with Token of Trust.
|
|
197
|
+
Our privacy-first methods keep the process quick and seamless, so legitimate users complete verification
|
|
198
|
+
without dropping off.</p></details>
|
|
199
|
+
<details><summary>Do you store my users' sensitive information?</summary><p>We only store verification
|
|
200
|
+
documents for as long as needed to complete the review and meet compliance requirements — typically 30
|
|
201
|
+
to 90 days. All data is encrypted, protected by strict security standards, and never shared without explicit
|
|
202
|
+
permission. Once the retention period ends, it's securely deleted.</p></details>
|
|
203
|
+
<details><summary>Which laws does Token of Trust cover?</summary><p>Token of Trust helps adult content
|
|
204
|
+
platforms meet age-verification requirements under the UK Online Safety Act, GDPR, CCPA, and 20+ U.S. state
|
|
205
|
+
laws. We track regulatory changes and update your verification process automatically, so you stay compliant
|
|
206
|
+
everywhere you operate.</p></details>
|
|
207
|
+
<details><summary>Can you handle UK, U.S., and other regional laws at the same time?</summary><p>Yes. Our
|
|
208
|
+
system detects a visitor's location and applies the correct verification method automatically, so you meet
|
|
209
|
+
local requirements without adding steps for users in regions that don't require them.</p></details>
|
|
210
|
+
<details><summary>How fast can we be live before enforcement hits?</summary><p>Most sites launch in days,
|
|
211
|
+
not weeks. We integrate quickly, test thoroughly, and train your team so you're ready before deadlines
|
|
212
|
+
— avoiding legal risk and loss of traffic.</p></details>
|
|
213
|
+
<details><summary>Will you work with my existing content platform or billing system?</summary><p>Yes. We
|
|
214
|
+
integrate with major CMS platforms and payment systems used by adult sites, as well as API options for
|
|
215
|
+
fully custom builds.</p></details>
|
|
216
|
+
<details><summary>What happens when the laws change again?</summary><p>We monitor new and changing age-verification
|
|
217
|
+
laws — in the UK, U.S. states, and beyond — and update your verification process automatically, so you
|
|
218
|
+
never have to scramble to keep up.</p></details>
|
|
219
|
+
<details><summary>Can you verify users without asking for IDs?</summary><p>Yes. Depending on your jurisdiction,
|
|
220
|
+
we offer privacy-first methods like biometric age estimation or database checks — options that reduce friction
|
|
221
|
+
and protect user trust.</p></details>
|
|
222
|
+
<details><summary>What if my audience is global?</summary><p>We support global age verification with jurisdiction-specific
|
|
223
|
+
flows, ensuring compliance in each country or state where you operate — without creating bottlenecks for
|
|
224
|
+
your audience.</p></details>
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
</section>
|
|
228
|
+
|
|
229
|
+
<section aria-labelledby="cta-heading">
|
|
230
|
+
<div class="container">
|
|
231
|
+
<div class="cta-band reveal">
|
|
232
|
+
<span class="kicker">Compliance without the click-away risk</span>
|
|
233
|
+
<h2 id="cta-heading">Keep users on your site — and on the right side of the rules</h2>
|
|
234
|
+
<p>From UK mandates to the U.S. patchwork of state laws, we keep your adult platform compliant while keeping
|
|
235
|
+
conversion high. Start free, or talk to our team.</p>
|
|
236
|
+
<div class="cta-row cta-center">
|
|
237
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
238
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
</section>
|
|
243
|
+
</main>
|
|
244
|
+
|
|
245
|
+
<footer class="site">
|
|
246
|
+
<div class="container">
|
|
247
|
+
<div class="foot-grid">
|
|
248
|
+
<div>
|
|
249
|
+
<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>
|
|
250
|
+
<p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
|
|
251
|
+
NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
|
|
252
|
+
</div>
|
|
253
|
+
<nav aria-label="Platform footer"><h3>Platform</h3><ul>
|
|
254
|
+
<li><a href="/product/verification/">Identity Verification</a></li>
|
|
255
|
+
<li><a href="/product/age-assurance/">Age Assurance</a></li>
|
|
256
|
+
<li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
|
|
257
|
+
<li><a href="/product/">All products</a></li>
|
|
258
|
+
</ul></nav>
|
|
259
|
+
<nav aria-label="Industries footer"><h3>Industries</h3><ul>
|
|
260
|
+
<li><a href="/solutions/">All industries</a></li>
|
|
261
|
+
<li><a href="/vlp-cigars-and-tobacco/">Tobacco & Vape</a></li>
|
|
262
|
+
<li><a href="/vlp-alcohol/">Wine & Spirits</a></li>
|
|
263
|
+
<li><a href="/industries/cannabis/">Cannabis</a></li>
|
|
264
|
+
</ul></nav>
|
|
265
|
+
<nav aria-label="Company footer"><h3>Company</h3><ul>
|
|
266
|
+
<li><a href="/company/">Company</a></li>
|
|
267
|
+
<li><a href="/careers/">Careers</a></li>
|
|
268
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
269
|
+
<li><a href="/contact/">Contact Sales</a></li>
|
|
270
|
+
</ul></nav>
|
|
271
|
+
</div>
|
|
272
|
+
<p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
|
|
273
|
+
</div>
|
|
274
|
+
</footer>
|
|
275
|
+
|
|
276
|
+
<script>
|
|
277
|
+
(function(){
|
|
278
|
+
var burger = document.getElementById('hamburger');
|
|
279
|
+
var nav = document.getElementById('primaryNav');
|
|
280
|
+
burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
|
|
281
|
+
var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
|
|
282
|
+
document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
|
|
283
|
+
})();
|
|
284
|
+
</script>
|
|
285
|
+
</body>
|
|
286
|
+
</html>
|
|
@@ -0,0 +1,277 @@
|
|
|
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>Cannabis & Hemp Tax Compliance | Token of Trust</title>
|
|
8
|
+
<meta name="description" content="Verify age, identity, and tax eligibility in one privacy-first platform. Token of Trust automates cannabis and hemp excise and sales tax so you stay audit-ready across state lines.">
|
|
9
|
+
<link rel="canonical" href="https://tokenoftrust.com/industries/cannabis/">
|
|
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="Cannabis & Hemp Tax Compliance — Token of Trust">
|
|
14
|
+
<meta property="og:description" content="Automate cannabis excise and sales tax, verify age and identity, and scale your cannabis ecommerce across state lines — all in one privacy-first platform.">
|
|
15
|
+
<meta property="og:url" content="https://tokenoftrust.com/industries/cannabis/">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Cannabis & Hemp Tax Compliance">
|
|
18
|
+
<meta name="twitter:description" content="Verify age and identity and automate cannabis tax compliance in one platform.">
|
|
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": "Cannabis & Hemp Tax Compliance",
|
|
34
|
+
"url": "https://tokenoftrust.com/industries/cannabis/"
|
|
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
|
+
<nav class="container crumbs" aria-label="Breadcrumb">
|
|
68
|
+
<a href="/">Home</a><span class="sep">›</span>
|
|
69
|
+
<a href="/solutions/">Industries</a><span class="sep">›</span>
|
|
70
|
+
<span>Cannabis</span>
|
|
71
|
+
</nav>
|
|
72
|
+
|
|
73
|
+
<section class="hero" aria-labelledby="hero-heading">
|
|
74
|
+
<div class="container">
|
|
75
|
+
<span class="eyebrow"><span class="dot"></span>Cannabis & Hemp</span>
|
|
76
|
+
<h1 id="hero-heading">Simplify cannabis & hemp <span class="grad">tax compliance.</span></h1>
|
|
77
|
+
<p class="lede">
|
|
78
|
+
Verify age, identity, and tax eligibility — all in one seamless, privacy-first platform.
|
|
79
|
+
Grow your cannabis ecommerce business across state lines without tax headaches. Token of
|
|
80
|
+
Trust automates excise and sales tax compliance so you can stay audit-ready, reduce risk,
|
|
81
|
+
and scale faster.
|
|
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
|
+
<div class="proof">
|
|
91
|
+
<div class="container">
|
|
92
|
+
<span>Verify <b>age & identity</b></span><span class="sep">·</span>
|
|
93
|
+
<span>Automated <b>excise & sales tax</b></span><span class="sep">·</span>
|
|
94
|
+
<span>Privacy-first & <b>audit-ready</b></span>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<section aria-labelledby="split-heading">
|
|
99
|
+
<div class="container">
|
|
100
|
+
<div class="split reveal">
|
|
101
|
+
<div class="split-copy">
|
|
102
|
+
<span class="kicker">The challenge</span>
|
|
103
|
+
<h2 id="split-heading">Why cannabis & hemp tax compliance is so complex</h2>
|
|
104
|
+
<p>
|
|
105
|
+
A single product can trigger multiple tax rates — depending on what it is, where it's
|
|
106
|
+
sold, and how strong it is. Excise tax. Sales tax. Use tax. Jurisdictional rules.
|
|
107
|
+
Potency-based logic. Automation applies the right tax logic across every sale channel
|
|
108
|
+
and keeps your business audit-ready.
|
|
109
|
+
</p>
|
|
110
|
+
<a class="btn btn-line" href="/solutions/">See all industries</a>
|
|
111
|
+
</div>
|
|
112
|
+
<ul class="check-list">
|
|
113
|
+
<li><b>Product-based differences</b><span>Flower, edibles, vapes, tinctures, and topicals often follow
|
|
114
|
+
separate tax rules; THC vs. CBD trigger separate classifications.</span></li>
|
|
115
|
+
<li><b>Location & transaction rules</b><span>States tax by price, weight, or potency; local taxes
|
|
116
|
+
can add 2–5%; online, delivery, and in-store sales may each differ.</span></li>
|
|
117
|
+
<li><b>Multiple tax models at once</b><span>Percentage-of-price, weight-based, and potency-based taxes
|
|
118
|
+
often overlap, from 6% to 37% depending on the state.</span></li>
|
|
119
|
+
</ul>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</section>
|
|
123
|
+
|
|
124
|
+
<section aria-labelledby="diff-heading">
|
|
125
|
+
<div class="container">
|
|
126
|
+
<div class="center reveal">
|
|
127
|
+
<span class="kicker">Know the difference</span>
|
|
128
|
+
<h2 id="diff-heading">Cannabis excise tax vs. sales tax</h2>
|
|
129
|
+
<p class="section-lede">In the cannabis and hemp industry, most transactions are taxed twice — through
|
|
130
|
+
both excise tax and sales & use tax. Understanding how each works is key to staying compliant.</p>
|
|
131
|
+
</div>
|
|
132
|
+
<div class="feature-grid two">
|
|
133
|
+
<article class="feat-card accent reveal">
|
|
134
|
+
<h3>Excise tax</h3>
|
|
135
|
+
<p>Cannabis-specific tax applied before or during the sale. Covers THC flower, concentrates, vapes, tinctures,
|
|
136
|
+
and intoxicating hemp cannabinoids. Calculated by price, weight, or potency depending on the state —
|
|
137
|
+
often built into the product price and remitted by the retailer or distributor.</p>
|
|
138
|
+
</article>
|
|
139
|
+
<article class="feat-card accent reveal">
|
|
140
|
+
<h3>Sales & use tax</h3>
|
|
141
|
+
<p>Retail-focused tax added at checkout. Applies to most consumer purchases, including hemp-derived CBD,
|
|
142
|
+
and is based on retail price — often stacked on top of excise tax. "Use tax" applies when sales tax isn't
|
|
143
|
+
collected (e.g., out-of-state transactions).</p>
|
|
144
|
+
</article>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</section>
|
|
148
|
+
|
|
149
|
+
<section aria-labelledby="feat-heading">
|
|
150
|
+
<div class="container">
|
|
151
|
+
<div class="center reveal">
|
|
152
|
+
<span class="kicker">One platform, every check</span>
|
|
153
|
+
<h2 id="feat-heading">Age, identity, and tax — automated together</h2>
|
|
154
|
+
<p class="section-lede">Configure the same verification and compliance core for the rules of every state
|
|
155
|
+
you sell in.</p>
|
|
156
|
+
</div>
|
|
157
|
+
<div class="feature-grid three">
|
|
158
|
+
<article class="feat-card accent reveal">
|
|
159
|
+
<h3>Age & identity verification</h3>
|
|
160
|
+
<p>Confirm every buyer is eligible before checkout with privacy-first age and identity checks built for
|
|
161
|
+
age-restricted retail.</p>
|
|
162
|
+
</article>
|
|
163
|
+
<article class="feat-card accent reveal">
|
|
164
|
+
<h3>Automated tax logic</h3>
|
|
165
|
+
<p>Apply the right excise, sales, and use tax across products, jurisdictions, and channels — keeping
|
|
166
|
+
calculations accurate and your business audit-ready.</p>
|
|
167
|
+
</article>
|
|
168
|
+
<article class="feat-card accent reveal">
|
|
169
|
+
<h3>Privacy-first by design</h3>
|
|
170
|
+
<p>256-bit SSL, minimal data retention, and GDPR-aligned handling — we never sell your data.</p>
|
|
171
|
+
</article>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</section>
|
|
175
|
+
|
|
176
|
+
<section aria-labelledby="steps-heading">
|
|
177
|
+
<div class="container">
|
|
178
|
+
<div class="center reveal">
|
|
179
|
+
<span class="kicker">Take the complexity out of compliance</span>
|
|
180
|
+
<h2 id="steps-heading">How we simplify your tax footprint</h2>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="steps three">
|
|
183
|
+
<div class="step reveal"><span class="num">1</span><h3>Review your catalog</h3><p>We look at your product
|
|
184
|
+
catalog and state footprint to map how every SKU is defined and taxed in each jurisdiction.</p></div>
|
|
185
|
+
<div class="step reveal"><span class="num">2</span><h3>Configure tax logic</h3><p>We apply percentage-of-price,
|
|
186
|
+
weight-based, and potency-based rules — plus local add-ons — so the right tax is calculated on every sale.</p></div>
|
|
187
|
+
<div class="step reveal"><span class="num">3</span><h3>Stay audit-ready</h3><p>Verification and tax records
|
|
188
|
+
are captured and retained, keeping you compliant and audit-ready as you scale across state lines.</p></div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
</section>
|
|
192
|
+
|
|
193
|
+
<section aria-labelledby="faq-heading">
|
|
194
|
+
<div class="container">
|
|
195
|
+
<div class="center reveal">
|
|
196
|
+
<span class="kicker">FAQ</span>
|
|
197
|
+
<h2 id="faq-heading">Frequently asked questions</h2>
|
|
198
|
+
</div>
|
|
199
|
+
<div class="faq reveal">
|
|
200
|
+
<details><summary>What is the difference between cannabis excise tax and sales tax?</summary><p>Excise
|
|
201
|
+
tax is cannabis-specific and may be based on price, weight, or THC potency. Sales tax applies broadly to
|
|
202
|
+
retail purchases and is often stacked on top of excise tax. Many states require both.</p></details>
|
|
203
|
+
<details><summary>Are hemp-derived products like CBD taxed the same as cannabis?</summary><p>Not always.
|
|
204
|
+
Non-intoxicating CBD may be exempt in some states or taxed like a standard consumer product under sales
|
|
205
|
+
tax. Intoxicating hemp cannabinoids (e.g., Δ8-THC, Δ10-THC) are often taxed like marijuana and may trigger
|
|
206
|
+
excise tax.</p></details>
|
|
207
|
+
<details><summary>Do medical and recreational cannabis have different tax rules?</summary><p>Yes. Recreational
|
|
208
|
+
cannabis typically carries full excise and sales tax, while medical cannabis may qualify for reduced or
|
|
209
|
+
exempt rates depending on the state.</p></details>
|
|
210
|
+
<details><summary>How do local taxes affect cannabis and hemp sales?</summary><p>Cities and counties often
|
|
211
|
+
add their own cannabis-specific excise taxes (2–5% of the sale price). These stack on top of state excise
|
|
212
|
+
and sales taxes, creating multiple layers of compliance.</p></details>
|
|
213
|
+
<details><summary>When does sales & use tax apply in cannabis and hemp sales?</summary><p>Use tax applies
|
|
214
|
+
when sales tax wasn't collected at purchase — for example, an out-of-state CBD order shipped into a taxable
|
|
215
|
+
state. Businesses are responsible for tracking and remitting it.</p></details>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
</section>
|
|
219
|
+
|
|
220
|
+
<section aria-labelledby="cta-heading">
|
|
221
|
+
<div class="container">
|
|
222
|
+
<div class="cta-band reveal">
|
|
223
|
+
<span class="kicker">It's a lot — but it doesn't have to be</span>
|
|
224
|
+
<h2 id="cta-heading">Take the complexity out of compliance</h2>
|
|
225
|
+
<p>Let's take a look at your product catalog and state footprint. We'll show you how Token of Trust can
|
|
226
|
+
simplify your tax compliance — and verify age and identity in the same flow.</p>
|
|
227
|
+
<div class="cta-row cta-center">
|
|
228
|
+
<a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
|
|
229
|
+
<a class="btn btn-line" href="/contact/">Contact Sales</a>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
</section>
|
|
234
|
+
</main>
|
|
235
|
+
|
|
236
|
+
<footer class="site">
|
|
237
|
+
<div class="container">
|
|
238
|
+
<div class="foot-grid">
|
|
239
|
+
<div>
|
|
240
|
+
<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>
|
|
241
|
+
<p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
|
|
242
|
+
NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
|
|
243
|
+
</div>
|
|
244
|
+
<nav aria-label="Platform footer"><h3>Platform</h3><ul>
|
|
245
|
+
<li><a href="/product/verification/">Identity Verification</a></li>
|
|
246
|
+
<li><a href="/product/age-assurance/">Age Assurance</a></li>
|
|
247
|
+
<li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
|
|
248
|
+
<li><a href="/product/">All products</a></li>
|
|
249
|
+
</ul></nav>
|
|
250
|
+
<nav aria-label="Industries footer"><h3>Industries</h3><ul>
|
|
251
|
+
<li><a href="/solutions/">All industries</a></li>
|
|
252
|
+
<li><a href="/vlp-cigars-and-tobacco/">Tobacco & Vape</a></li>
|
|
253
|
+
<li><a href="/vlp-alcohol/">Wine & Spirits</a></li>
|
|
254
|
+
<li><a href="/industries/cannabis/">Cannabis</a></li>
|
|
255
|
+
</ul></nav>
|
|
256
|
+
<nav aria-label="Company footer"><h3>Company</h3><ul>
|
|
257
|
+
<li><a href="/company/">Company</a></li>
|
|
258
|
+
<li><a href="/careers/">Careers</a></li>
|
|
259
|
+
<li><a href="/pricing/">Pricing</a></li>
|
|
260
|
+
<li><a href="/contact/">Contact Sales</a></li>
|
|
261
|
+
</ul></nav>
|
|
262
|
+
</div>
|
|
263
|
+
<p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
|
|
264
|
+
</div>
|
|
265
|
+
</footer>
|
|
266
|
+
|
|
267
|
+
<script>
|
|
268
|
+
(function(){
|
|
269
|
+
var burger = document.getElementById('hamburger');
|
|
270
|
+
var nav = document.getElementById('primaryNav');
|
|
271
|
+
burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
|
|
272
|
+
var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
|
|
273
|
+
document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
|
|
274
|
+
})();
|
|
275
|
+
</script>
|
|
276
|
+
</body>
|
|
277
|
+
</html>
|