├── ecommerce ├── public │ ├── assets │ │ ├── Checkout.svg │ │ └── squirrel.jpg │ ├── vercel.svg │ └── next.svg ├── .eslintrc.json ├── app │ ├── favicon.ico │ ├── custom-components │ │ └── page.tsx │ ├── stores │ │ ├── page.tsx │ │ └── [slug] │ │ │ └── page.tsx │ ├── help-center │ │ └── page.tsx │ ├── page.tsx │ ├── symbols │ │ └── page.tsx │ ├── figma-imports │ │ └── page.tsx │ ├── page │ │ └── [page] │ │ │ └── page.tsx │ ├── layout.tsx │ ├── [...page] │ │ └── page.tsx │ ├── blog │ │ └── [slug] │ │ │ └── page.tsx │ ├── category │ │ └── [category] │ │ │ └── page.tsx │ ├── product │ │ └── [handle] │ │ │ └── page.tsx │ └── globals.css ├── postcss.config.js ├── .env.example ├── config │ ├── emporix.ts │ ├── algolia.tsx │ ├── swell.ts │ └── shopify.ts ├── src │ ├── components │ │ ├── testing │ │ │ └── BlogCategory.tsx │ │ ├── Blocks │ │ │ ├── CloudinaryImage.tsx │ │ │ └── BynderImage.tsx │ │ ├── Counter │ │ │ ├── styles.module.css │ │ │ └── Counter.tsx │ │ ├── Hero │ │ │ ├── TextHero.tsx │ │ │ ├── HeroWithChildren.tsx │ │ │ ├── ImageHero.tsx │ │ │ └── SplitHero.tsx │ │ ├── PLP │ │ │ ├── Pagination.tsx │ │ │ ├── CategoryFilter.tsx │ │ │ ├── ColorFilter.tsx │ │ │ └── SizeFilter.tsx │ │ ├── ui │ │ │ ├── label.tsx │ │ │ ├── input.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── productBox.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── tabs.tsx │ │ │ ├── card.tsx │ │ │ ├── accordion.tsx │ │ │ └── button.tsx │ │ ├── CommercetoolsProduct │ │ │ └── CommercetoolsProduct.tsx │ │ ├── builder.tsx │ │ ├── Card │ │ │ ├── IconCard.tsx │ │ │ └── ProductCard.tsx │ │ ├── Accordion │ │ │ └── accordion.tsx │ │ ├── SwellProduct │ │ │ └── SwellProduct.tsx │ │ ├── QueryProvider.tsx │ │ ├── builderLiveDataPreview.tsx │ │ ├── CustomText │ │ │ └── index.tsx │ │ ├── ShopifyProduct │ │ │ └── ShopifyProduct.tsx │ │ ├── Layout │ │ │ ├── SideNav.tsx │ │ │ ├── AuthSlider.tsx │ │ │ ├── CartSlider.tsx │ │ │ └── Footer.tsx │ │ ├── Collection │ │ │ └── Collection.tsx │ │ └── AlgoliaSearchBox │ │ │ └── AlgoliaSearchBox.tsx │ └── mappings │ │ ├── Header.mapper.tsx │ │ ├── Collection.mapper.tsx │ │ ├── TextHero.mapper.tsx │ │ ├── HeroWithChildren.mapper.tsx │ │ ├── IconCard.mapper.tsx │ │ ├── ProductCard.mapper.tsx │ │ ├── Hero.mapper.tsx │ │ └── SplitHero.mapper.tsx ├── components.json ├── .env ├── tsconfig.json ├── .gitignore ├── lib │ ├── swell │ │ └── api.ts │ ├── utils.ts │ └── shopify │ │ └── api.ts ├── README.md ├── package.json └── next.config.mjs ├── marketing ├── app │ ├── blog │ │ └── [slug] │ │ │ └── page.tsx │ ├── globals.css │ ├── favicon.ico │ ├── layout.tsx │ ├── page.tsx │ └── [...page] │ │ └── page.tsx ├── .eslintrc.json ├── postcss.config.js ├── next.config.mjs ├── builder-registry.ts ├── components │ ├── Counter │ │ ├── styles.module.css │ │ └── Counter.tsx │ ├── Hero │ │ ├── TextHero.tsx │ │ ├── HeroWithChildren.tsx │ │ ├── ImageHero.tsx │ │ └── SplitHero.tsx │ ├── ui │ │ ├── label.tsx │ │ ├── input.tsx │ │ ├── checkbox.tsx │ │ ├── radio-group.tsx │ │ ├── button.tsx │ │ ├── tabs.tsx │ │ └── accordion.tsx │ ├── builder.tsx │ ├── Card │ │ ├── ProductCard.tsx │ │ └── IconCard.tsx │ └── Layout │ │ ├── SideNav.tsx │ │ ├── AuthSlider.tsx │ │ ├── CartSlider.tsx │ │ └── Footer.tsx ├── tailwind.config.ts ├── .gitignore ├── public │ ├── vercel.svg │ └── next.svg ├── tsconfig.json ├── package.json └── README.md └── vcp-playground ├── app ├── favicon.ico ├── layout.tsx ├── figma-imports │ └── page.tsx ├── globals.css └── page.tsx ├── postcss.config.js ├── public ├── vercel.svg ├── window.svg ├── file.svg ├── globe.svg └── next.svg ├── src ├── mappings │ ├── Header.mapper.tsx │ ├── ProductCard.mapper.tsx │ ├── Collection.mapper.tsx │ ├── TextHero.mapper.tsx │ ├── HeroWithChildren.mapper.tsx │ ├── IconCard.mapper.tsx │ ├── Hero.mapper.tsx │ └── SplitHero.mapper.tsx └── components │ ├── Counter │ ├── styles.module.css │ └── Counter.tsx │ ├── Hero │ ├── TextHero.tsx │ ├── HeroWithChildren.tsx │ ├── ImageHero.tsx │ └── SplitHero.tsx │ ├── ui │ ├── label.tsx │ ├── input.tsx │ ├── checkbox.tsx │ ├── productBox.tsx │ ├── radio-group.tsx │ ├── tabs.tsx │ ├── card.tsx │ ├── accordion.tsx │ └── button.tsx │ ├── builder.tsx │ ├── Card │ ├── ProductCard.tsx │ └── IconCard.tsx │ ├── QueryProvider.tsx │ ├── Layout │ ├── SideNav.tsx │ ├── AuthSlider.tsx │ ├── CartSlider.tsx │ └── Footer.tsx │ └── Collection │ └── Collection.tsx ├── eslint.config.mjs ├── .gitignore ├── tsconfig.json ├── README.md ├── package.json ├── lib └── utils.ts └── next.config.mjs /ecommerce/public/assets/Checkout.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /marketing/app/blog/[slug]/page.tsx: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ecommerce/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /marketing/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /marketing/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | -------------------------------------------------------------------------------- /ecommerce/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/unified-demo/main/ecommerce/app/favicon.ico -------------------------------------------------------------------------------- /marketing/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/unified-demo/main/marketing/app/favicon.ico -------------------------------------------------------------------------------- /vcp-playground/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/unified-demo/main/vcp-playground/app/favicon.ico -------------------------------------------------------------------------------- /ecommerce/public/assets/squirrel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuilderIO/unified-demo/main/ecommerce/public/assets/squirrel.jpg -------------------------------------------------------------------------------- /ecommerce/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /marketing/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /vcp-playground/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /vcp-playground/public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /marketing/next.config.mjs: -------------------------------------------------------------------------------- 1 | import BuilderDevTools from "@builder.io/dev-tools/next"; 2 | 3 | /** @type {import('next').NextConfig} */ 4 | const nextConfig = BuilderDevTools()({}); 5 | 6 | export default nextConfig; 7 | -------------------------------------------------------------------------------- /ecommerce/.env.example: -------------------------------------------------------------------------------- 1 | # Created by Vercel CLI 2 | VERCEL="1" 3 | VERCEL_ENV="development" 4 | VERCEL_URL="http://localhost:3000" 5 | 6 | # Public API key for Builder.io 7 | NEXT_PUBLIC_BUILDER_API_KEY=your_builder_api_key 8 | -------------------------------------------------------------------------------- /ecommerce/config/emporix.ts: -------------------------------------------------------------------------------- 1 | const emporixConfig = { 2 | apiUrl: "https://api.emporix.io", 3 | clientId: "XXXXXXXXXXX", // Hardcoded client ID 4 | tenant: "XXXXXXXXXXX", // Hardcoded tenant name 5 | }; 6 | 7 | export default emporixConfig; -------------------------------------------------------------------------------- /ecommerce/src/components/testing/BlogCategory.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | const BlogCategory = (props: any) => { 4 | return ( 5 |
${product?.price}
27 |29 | {product?.colors?.[0]?.label} 30 |
31 |${product?.price}
32 |34 | {product?.colors?.[0]?.label} 35 |
36 |48 |
49 |48 |
49 |55 | Search by name, category, color, or size 56 |
57 |app/page.tsx.
19 |