@doswiftly/cli 0.1.1
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/README.md +357 -0
- package/bin/doswiftly.js +2 -0
- package/dist/commands/auth-github.d.ts +6 -0
- package/dist/commands/auth-github.d.ts.map +1 -0
- package/dist/commands/auth-github.js +89 -0
- package/dist/commands/auth-github.js.map +1 -0
- package/dist/commands/auth-token.d.ts +12 -0
- package/dist/commands/auth-token.d.ts.map +1 -0
- package/dist/commands/auth-token.js +43 -0
- package/dist/commands/auth-token.js.map +1 -0
- package/dist/commands/auth.d.ts +22 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +348 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/check.d.ts +5 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +234 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +104 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +37 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +580 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +8 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +83 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +5 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +363 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domain.d.ts +13 -0
- package/dist/commands/domain.d.ts.map +1 -0
- package/dist/commands/domain.js +128 -0
- package/dist/commands/domain.js.map +1 -0
- package/dist/commands/env.d.ts +25 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +228 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1028 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inspect.d.ts +12 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +162 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/migrate.d.ts +18 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +355 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/preview.d.ts +29 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +199 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/proxy.d.ts +9 -0
- package/dist/commands/proxy.d.ts.map +1 -0
- package/dist/commands/proxy.js +37 -0
- package/dist/commands/proxy.js.map +1 -0
- package/dist/commands/sdk.d.ts +5 -0
- package/dist/commands/sdk.d.ts.map +1 -0
- package/dist/commands/sdk.js +82 -0
- package/dist/commands/sdk.js.map +1 -0
- package/dist/commands/template.d.ts +107 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +1309 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/types.d.ts +5 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +82 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +103 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upgrade.d.ts +18 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +55 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/verify.d.ts +5 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +232 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/whoami.d.ts +5 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +60 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config/types.d.ts +173 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +48 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +416 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-url.d.ts +14 -0
- package/dist/lib/api-url.d.ts.map +1 -0
- package/dist/lib/api-url.js +24 -0
- package/dist/lib/api-url.js.map +1 -0
- package/dist/lib/api.d.ts +67 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +36 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +39 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +195 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/env-storage.d.ts +140 -0
- package/dist/lib/env-storage.d.ts.map +1 -0
- package/dist/lib/env-storage.js +464 -0
- package/dist/lib/env-storage.js.map +1 -0
- package/dist/lib/errors.d.ts +61 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +204 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/i18n.d.ts +99 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +184 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/logger.d.ts +95 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +168 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/package-manager.d.ts +91 -0
- package/dist/lib/package-manager.d.ts.map +1 -0
- package/dist/lib/package-manager.js +205 -0
- package/dist/lib/package-manager.js.map +1 -0
- package/dist/lib/proxy-server.d.ts +24 -0
- package/dist/lib/proxy-server.d.ts.map +1 -0
- package/dist/lib/proxy-server.js +173 -0
- package/dist/lib/proxy-server.js.map +1 -0
- package/dist/lib/select-with-back.d.ts +34 -0
- package/dist/lib/select-with-back.d.ts.map +1 -0
- package/dist/lib/select-with-back.js +94 -0
- package/dist/lib/select-with-back.js.map +1 -0
- package/dist/lib/shared-api-client.d.ts +40 -0
- package/dist/lib/shared-api-client.d.ts.map +1 -0
- package/dist/lib/shared-api-client.js +92 -0
- package/dist/lib/shared-api-client.js.map +1 -0
- package/dist/lib/wizard-engine.d.ts +128 -0
- package/dist/lib/wizard-engine.d.ts.map +1 -0
- package/dist/lib/wizard-engine.js +168 -0
- package/dist/lib/wizard-engine.js.map +1 -0
- package/package.json +85 -0
- package/templates/storefront-minimal/.env.example +10 -0
- package/templates/storefront-minimal/.github/workflows/build-template.yml +109 -0
- package/templates/storefront-minimal/app/globals.css +18 -0
- package/templates/storefront-minimal/app/layout.tsx +26 -0
- package/templates/storefront-minimal/app/page.tsx +93 -0
- package/templates/storefront-minimal/lib/graphql-client.ts +23 -0
- package/templates/storefront-minimal/next.config.ts +15 -0
- package/templates/storefront-minimal/open-next.config.ts +3 -0
- package/templates/storefront-minimal/package.json +30 -0
- package/templates/storefront-minimal/postcss.config.mjs +5 -0
- package/templates/storefront-minimal/tailwind.config.ts +14 -0
- package/templates/storefront-minimal/tsconfig.json +27 -0
- package/templates/storefront-minimal/wrangler.toml +9 -0
- package/templates/storefront-nextjs/.env.example +68 -0
- package/templates/storefront-nextjs/.github/workflows/build-template.yml +109 -0
- package/templates/storefront-nextjs/.github/workflows/deploy.yml +25 -0
- package/templates/storefront-nextjs/.github/workflows/preview.yml +22 -0
- package/templates/storefront-nextjs/README.md +520 -0
- package/templates/storefront-nextjs/app/account/orders/page.tsx +216 -0
- package/templates/storefront-nextjs/app/account/page.tsx +167 -0
- package/templates/storefront-nextjs/app/auth/login/page.tsx +135 -0
- package/templates/storefront-nextjs/app/auth/register/page.tsx +228 -0
- package/templates/storefront-nextjs/app/cart/page.tsx +263 -0
- package/templates/storefront-nextjs/app/categories/[slug]/page.tsx +200 -0
- package/templates/storefront-nextjs/app/categories/page.tsx +58 -0
- package/templates/storefront-nextjs/app/checkout/page.tsx +351 -0
- package/templates/storefront-nextjs/app/collections/[slug]/page.tsx +158 -0
- package/templates/storefront-nextjs/app/collections/page.tsx +61 -0
- package/templates/storefront-nextjs/app/globals.css +98 -0
- package/templates/storefront-nextjs/app/layout.tsx +39 -0
- package/templates/storefront-nextjs/app/page.tsx +136 -0
- package/templates/storefront-nextjs/app/products/[slug]/page.tsx +119 -0
- package/templates/storefront-nextjs/app/products/page.tsx +107 -0
- package/templates/storefront-nextjs/app/search/page.tsx +127 -0
- package/templates/storefront-nextjs/components/auth/auth-guard.tsx +94 -0
- package/templates/storefront-nextjs/components/commerce/add-to-cart-button.tsx +77 -0
- package/templates/storefront-nextjs/components/commerce/cart-icon.tsx +29 -0
- package/templates/storefront-nextjs/components/commerce/currency-selector.tsx +217 -0
- package/templates/storefront-nextjs/components/commerce/pagination.tsx +62 -0
- package/templates/storefront-nextjs/components/commerce/product-actions.tsx +135 -0
- package/templates/storefront-nextjs/components/commerce/product-filters.tsx +109 -0
- package/templates/storefront-nextjs/components/commerce/product-price.tsx +375 -0
- package/templates/storefront-nextjs/components/commerce/search-input.tsx +178 -0
- package/templates/storefront-nextjs/components/commerce/sort-select.tsx +64 -0
- package/templates/storefront-nextjs/components/commerce/variant-selector.tsx +210 -0
- package/templates/storefront-nextjs/components/layout/footer.tsx +107 -0
- package/templates/storefront-nextjs/components/layout/header.tsx +104 -0
- package/templates/storefront-nextjs/components/providers.tsx +62 -0
- package/templates/storefront-nextjs/lib/auth/routes.ts +52 -0
- package/templates/storefront-nextjs/lib/currency.tsx +140 -0
- package/templates/storefront-nextjs/lib/format.ts +159 -0
- package/templates/storefront-nextjs/lib/graphql-queries.ts +629 -0
- package/templates/storefront-nextjs/lib/hooks.ts +30 -0
- package/templates/storefront-nextjs/middleware.ts +80 -0
- package/templates/storefront-nextjs/next.config.ts +37 -0
- package/templates/storefront-nextjs/open-next.config.ts +3 -0
- package/templates/storefront-nextjs/package.dev.json +30 -0
- package/templates/storefront-nextjs/package.json +32 -0
- package/templates/storefront-nextjs/package.json.template +32 -0
- package/templates/storefront-nextjs/postcss.config.mjs +8 -0
- package/templates/storefront-nextjs/tailwind.config.ts +111 -0
- package/templates/storefront-nextjs/tsconfig.json +27 -0
- package/templates/storefront-nextjs/wrangler.toml +9 -0
- package/templates/storefront-nextjs-shadcn/.env.example +68 -0
- package/templates/storefront-nextjs-shadcn/.github/workflows/build-template.yml +109 -0
- package/templates/storefront-nextjs-shadcn/.github/workflows/deploy.yml +25 -0
- package/templates/storefront-nextjs-shadcn/.github/workflows/preview.yml +22 -0
- package/templates/storefront-nextjs-shadcn/CART_INTEGRATION.md +282 -0
- package/templates/storefront-nextjs-shadcn/CLAUDE.md +96 -0
- package/templates/storefront-nextjs-shadcn/GRAPHQL_DOCUMENT_NAMES.md +190 -0
- package/templates/storefront-nextjs-shadcn/GRAPHQL_ERROR_HANDLING.md +263 -0
- package/templates/storefront-nextjs-shadcn/GRAPHQL_FIXES_SUMMARY.md +135 -0
- package/templates/storefront-nextjs-shadcn/GRAPHQL_INTEGRATION_COMPLETE.md +142 -0
- package/templates/storefront-nextjs-shadcn/INTEGRATION_CHECKLIST.md +448 -0
- package/templates/storefront-nextjs-shadcn/PRODUCT_DETAIL_PAGE_IMPLEMENTATION.md +307 -0
- package/templates/storefront-nextjs-shadcn/README.md +195 -0
- package/templates/storefront-nextjs-shadcn/THEME_CUSTOMIZATION.md +245 -0
- package/templates/storefront-nextjs-shadcn/app/about/page.tsx +34 -0
- package/templates/storefront-nextjs-shadcn/app/account/addresses/page.tsx +215 -0
- package/templates/storefront-nextjs-shadcn/app/account/loyalty/page.tsx +484 -0
- package/templates/storefront-nextjs-shadcn/app/account/orders/[id]/page.tsx +128 -0
- package/templates/storefront-nextjs-shadcn/app/account/orders/[id]/tracking/page.tsx +206 -0
- package/templates/storefront-nextjs-shadcn/app/account/orders/page.tsx +80 -0
- package/templates/storefront-nextjs-shadcn/app/account/page.tsx +107 -0
- package/templates/storefront-nextjs-shadcn/app/account/settings/page.tsx +195 -0
- package/templates/storefront-nextjs-shadcn/app/api/auth/clear-token/route.ts +87 -0
- package/templates/storefront-nextjs-shadcn/app/api/auth/set-token/route.ts +125 -0
- package/templates/storefront-nextjs-shadcn/app/auth/forgot-password/page.tsx +131 -0
- package/templates/storefront-nextjs-shadcn/app/auth/login/page.tsx +24 -0
- package/templates/storefront-nextjs-shadcn/app/auth/register/page.tsx +20 -0
- package/templates/storefront-nextjs-shadcn/app/blog/[slug]/page.tsx +323 -0
- package/templates/storefront-nextjs-shadcn/app/blog/page.tsx +159 -0
- package/templates/storefront-nextjs-shadcn/app/brands/[slug]/page.tsx +170 -0
- package/templates/storefront-nextjs-shadcn/app/brands/page.tsx +73 -0
- package/templates/storefront-nextjs-shadcn/app/cart/page.tsx +165 -0
- package/templates/storefront-nextjs-shadcn/app/categories/[slug]/page.tsx +78 -0
- package/templates/storefront-nextjs-shadcn/app/categories/page.tsx +75 -0
- package/templates/storefront-nextjs-shadcn/app/checkout/page.tsx +1752 -0
- package/templates/storefront-nextjs-shadcn/app/checkout/success/[orderId]/page.tsx +256 -0
- package/templates/storefront-nextjs-shadcn/app/collections/[handle]/page.tsx +74 -0
- package/templates/storefront-nextjs-shadcn/app/collections/page.tsx +75 -0
- package/templates/storefront-nextjs-shadcn/app/contact/page.tsx +114 -0
- package/templates/storefront-nextjs-shadcn/app/error.tsx +90 -0
- package/templates/storefront-nextjs-shadcn/app/globals.css +125 -0
- package/templates/storefront-nextjs-shadcn/app/layout.tsx +57 -0
- package/templates/storefront-nextjs-shadcn/app/not-found.tsx +68 -0
- package/templates/storefront-nextjs-shadcn/app/page.tsx +21 -0
- package/templates/storefront-nextjs-shadcn/app/products/[slug]/page.tsx +246 -0
- package/templates/storefront-nextjs-shadcn/app/products/[slug]/product-client.tsx +343 -0
- package/templates/storefront-nextjs-shadcn/app/products/page.tsx +25 -0
- package/templates/storefront-nextjs-shadcn/app/products/products-client.tsx +192 -0
- package/templates/storefront-nextjs-shadcn/app/returns/page.tsx +77 -0
- package/templates/storefront-nextjs-shadcn/app/robots.ts +53 -0
- package/templates/storefront-nextjs-shadcn/app/search/page.tsx +16 -0
- package/templates/storefront-nextjs-shadcn/app/search/search-client.tsx +47 -0
- package/templates/storefront-nextjs-shadcn/app/shipping/page.tsx +62 -0
- package/templates/storefront-nextjs-shadcn/app/sitemap.ts +144 -0
- package/templates/storefront-nextjs-shadcn/app/wishlist/page.tsx +179 -0
- package/templates/storefront-nextjs-shadcn/codegen.ts +51 -0
- package/templates/storefront-nextjs-shadcn/components/account/address-form.tsx +348 -0
- package/templates/storefront-nextjs-shadcn/components/account/address-list.tsx +144 -0
- package/templates/storefront-nextjs-shadcn/components/account/order-details.tsx +258 -0
- package/templates/storefront-nextjs-shadcn/components/account/order-history.tsx +107 -0
- package/templates/storefront-nextjs-shadcn/components/auth/account-menu.tsx +132 -0
- package/templates/storefront-nextjs-shadcn/components/auth/login-form.tsx +188 -0
- package/templates/storefront-nextjs-shadcn/components/auth/register-form.tsx +305 -0
- package/templates/storefront-nextjs-shadcn/components/blog/blog-card.tsx +240 -0
- package/templates/storefront-nextjs-shadcn/components/blog/blog-sidebar.tsx +177 -0
- package/templates/storefront-nextjs-shadcn/components/blog/index.ts +8 -0
- package/templates/storefront-nextjs-shadcn/components/brand/brand-card.tsx +119 -0
- package/templates/storefront-nextjs-shadcn/components/brand/brand-grid.tsx +64 -0
- package/templates/storefront-nextjs-shadcn/components/cart/cart-drawer.tsx +140 -0
- package/templates/storefront-nextjs-shadcn/components/cart/cart-icon.tsx +48 -0
- package/templates/storefront-nextjs-shadcn/components/cart/cart-item.tsx +112 -0
- package/templates/storefront-nextjs-shadcn/components/cart/cart-summary.tsx +84 -0
- package/templates/storefront-nextjs-shadcn/components/cart/index.ts +17 -0
- package/templates/storefront-nextjs-shadcn/components/cart/promo-code-input.tsx +121 -0
- package/templates/storefront-nextjs-shadcn/components/cart/shipping-estimator.tsx +162 -0
- package/templates/storefront-nextjs-shadcn/components/checkout/index.ts +25 -0
- package/templates/storefront-nextjs-shadcn/components/checkout/payment-method-card.tsx +187 -0
- package/templates/storefront-nextjs-shadcn/components/checkout/payment-step.tsx +160 -0
- package/templates/storefront-nextjs-shadcn/components/checkout/tax-breakdown.tsx +154 -0
- package/templates/storefront-nextjs-shadcn/components/commerce/currency-selector.tsx +225 -0
- package/templates/storefront-nextjs-shadcn/components/commerce/pagination.tsx +62 -0
- package/templates/storefront-nextjs-shadcn/components/commerce/product-actions.tsx +158 -0
- package/templates/storefront-nextjs-shadcn/components/commerce/search-input.tsx +174 -0
- package/templates/storefront-nextjs-shadcn/components/commerce/variant-selector.tsx +210 -0
- package/templates/storefront-nextjs-shadcn/components/common/category-card.tsx +97 -0
- package/templates/storefront-nextjs-shadcn/components/common/collection-card.tsx +187 -0
- package/templates/storefront-nextjs-shadcn/components/common/price-display.tsx +151 -0
- package/templates/storefront-nextjs-shadcn/components/common/social-share.tsx +166 -0
- package/templates/storefront-nextjs-shadcn/components/discount/discount-breakdown.tsx +245 -0
- package/templates/storefront-nextjs-shadcn/components/discount/discount-code-input.tsx +246 -0
- package/templates/storefront-nextjs-shadcn/components/discount/index.ts +19 -0
- package/templates/storefront-nextjs-shadcn/components/error/error-boundary.tsx +113 -0
- package/templates/storefront-nextjs-shadcn/components/error/index.ts +7 -0
- package/templates/storefront-nextjs-shadcn/components/filters/attribute-filter.tsx +153 -0
- package/templates/storefront-nextjs-shadcn/components/filters/checkbox-group-filter.tsx +167 -0
- package/templates/storefront-nextjs-shadcn/components/filters/color-swatch-filter.tsx +176 -0
- package/templates/storefront-nextjs-shadcn/components/filters/dynamic-attribute-filters.tsx +220 -0
- package/templates/storefront-nextjs-shadcn/components/filters/index.ts +36 -0
- package/templates/storefront-nextjs-shadcn/components/filters/range-slider-filter.tsx +193 -0
- package/templates/storefront-nextjs-shadcn/components/filters/toggle-filter.tsx +132 -0
- package/templates/storefront-nextjs-shadcn/components/gift-card/gift-card-balance.tsx +321 -0
- package/templates/storefront-nextjs-shadcn/components/gift-card/gift-card-input.tsx +309 -0
- package/templates/storefront-nextjs-shadcn/components/gift-card/index.ts +24 -0
- package/templates/storefront-nextjs-shadcn/components/home/category-grid.tsx +72 -0
- package/templates/storefront-nextjs-shadcn/components/home/featured-collections.tsx +107 -0
- package/templates/storefront-nextjs-shadcn/components/home/featured-products.tsx +85 -0
- package/templates/storefront-nextjs-shadcn/components/home/hero-section.tsx +34 -0
- package/templates/storefront-nextjs-shadcn/components/home/index.ts +8 -0
- package/templates/storefront-nextjs-shadcn/components/home/newsletter-signup.tsx +108 -0
- package/templates/storefront-nextjs-shadcn/components/layout/breadcrumbs.tsx +133 -0
- package/templates/storefront-nextjs-shadcn/components/layout/currency-selector.tsx +341 -0
- package/templates/storefront-nextjs-shadcn/components/layout/footer.tsx +128 -0
- package/templates/storefront-nextjs-shadcn/components/layout/header.tsx +147 -0
- package/templates/storefront-nextjs-shadcn/components/layout/index.ts +9 -0
- package/templates/storefront-nextjs-shadcn/components/layout/mobile-menu.tsx +211 -0
- package/templates/storefront-nextjs-shadcn/components/layout/navigation.tsx +95 -0
- package/templates/storefront-nextjs-shadcn/components/layout/theme-switcher.tsx +192 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/index.ts +11 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/points-balance.tsx +93 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/points-history.tsx +177 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/referral-section.tsx +250 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/rewards-catalog.tsx +217 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/tier-badge.tsx +106 -0
- package/templates/storefront-nextjs-shadcn/components/loyalty/tier-progress.tsx +131 -0
- package/templates/storefront-nextjs-shadcn/components/order/delivery-estimate.tsx +196 -0
- package/templates/storefront-nextjs-shadcn/components/order/index.ts +11 -0
- package/templates/storefront-nextjs-shadcn/components/order/order-tracking.tsx +200 -0
- package/templates/storefront-nextjs-shadcn/components/order/shipment-card.tsx +407 -0
- package/templates/storefront-nextjs-shadcn/components/order/tracking-status.tsx +222 -0
- package/templates/storefront-nextjs-shadcn/components/order/tracking-timeline.tsx +205 -0
- package/templates/storefront-nextjs-shadcn/components/product/add-to-cart-button.tsx +161 -0
- package/templates/storefront-nextjs-shadcn/components/product/b2b-price-display.tsx +250 -0
- package/templates/storefront-nextjs-shadcn/components/product/discount-badge.tsx +196 -0
- package/templates/storefront-nextjs-shadcn/components/product/index.ts +41 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-card.tsx +147 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-filters.tsx +217 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-gallery.tsx +143 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-grid.tsx +83 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-image.tsx +155 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-price.tsx +158 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-quantity-selector.tsx +111 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-reviews.tsx +238 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-sort.tsx +58 -0
- package/templates/storefront-nextjs-shadcn/components/product/product-variant-selector.tsx +169 -0
- package/templates/storefront-nextjs-shadcn/components/product/review-card.tsx +220 -0
- package/templates/storefront-nextjs-shadcn/components/product/review-form.tsx +338 -0
- package/templates/storefront-nextjs-shadcn/components/product/review-summary.tsx +143 -0
- package/templates/storefront-nextjs-shadcn/components/product/sale-countdown.tsx +166 -0
- package/templates/storefront-nextjs-shadcn/components/product/savings-display.tsx +213 -0
- package/templates/storefront-nextjs-shadcn/components/product/similar-products.tsx +57 -0
- package/templates/storefront-nextjs-shadcn/components/product/stock-indicator.tsx +91 -0
- package/templates/storefront-nextjs-shadcn/components/providers/currency-provider.tsx +103 -0
- package/templates/storefront-nextjs-shadcn/components/providers/index.ts +8 -0
- package/templates/storefront-nextjs-shadcn/components/providers/query-provider.tsx +260 -0
- package/templates/storefront-nextjs-shadcn/components/providers/theme-provider.tsx +13 -0
- package/templates/storefront-nextjs-shadcn/components/returns/index.ts +26 -0
- package/templates/storefront-nextjs-shadcn/components/returns/return-request-form.tsx +608 -0
- package/templates/storefront-nextjs-shadcn/components/returns/return-status-card.tsx +554 -0
- package/templates/storefront-nextjs-shadcn/components/search/index.ts +8 -0
- package/templates/storefront-nextjs-shadcn/components/search/search-bar.tsx +140 -0
- package/templates/storefront-nextjs-shadcn/components/search/search-results.tsx +58 -0
- package/templates/storefront-nextjs-shadcn/components/search/search-suggestions.tsx +43 -0
- package/templates/storefront-nextjs-shadcn/components/seo/index.ts +12 -0
- package/templates/storefront-nextjs-shadcn/components/seo/json-ld.tsx +56 -0
- package/templates/storefront-nextjs-shadcn/components/seo/product-json-ld.ts +167 -0
- package/templates/storefront-nextjs-shadcn/components/shipping/index.ts +16 -0
- package/templates/storefront-nextjs-shadcn/components/shipping/shipping-method-selector.tsx +337 -0
- package/templates/storefront-nextjs-shadcn/components/ui/accordion.tsx +153 -0
- package/templates/storefront-nextjs-shadcn/components/ui/alert.tsx +59 -0
- package/templates/storefront-nextjs-shadcn/components/ui/badge.tsx +34 -0
- package/templates/storefront-nextjs-shadcn/components/ui/button.tsx +51 -0
- package/templates/storefront-nextjs-shadcn/components/ui/card.tsx +77 -0
- package/templates/storefront-nextjs-shadcn/components/ui/checkbox.tsx +30 -0
- package/templates/storefront-nextjs-shadcn/components/ui/dialog.tsx +137 -0
- package/templates/storefront-nextjs-shadcn/components/ui/empty-state.tsx +207 -0
- package/templates/storefront-nextjs-shadcn/components/ui/index.ts +67 -0
- package/templates/storefront-nextjs-shadcn/components/ui/input.tsx +65 -0
- package/templates/storefront-nextjs-shadcn/components/ui/label.tsx +26 -0
- package/templates/storefront-nextjs-shadcn/components/ui/pagination.tsx +205 -0
- package/templates/storefront-nextjs-shadcn/components/ui/radio-group.tsx +44 -0
- package/templates/storefront-nextjs-shadcn/components/ui/select.tsx +160 -0
- package/templates/storefront-nextjs-shadcn/components/ui/separator.tsx +28 -0
- package/templates/storefront-nextjs-shadcn/components/ui/skeleton.tsx +20 -0
- package/templates/storefront-nextjs-shadcn/components/ui/spinner.tsx +82 -0
- package/templates/storefront-nextjs-shadcn/components/ui/tabs.tsx +119 -0
- package/templates/storefront-nextjs-shadcn/components/ui/toast.tsx +96 -0
- package/templates/storefront-nextjs-shadcn/components/wishlist/index.ts +9 -0
- package/templates/storefront-nextjs-shadcn/components/wishlist/wishlist-button.tsx +148 -0
- package/templates/storefront-nextjs-shadcn/components/wishlist/wishlist-icon.tsx +47 -0
- package/templates/storefront-nextjs-shadcn/components/wishlist/wishlist-item.tsx +165 -0
- package/templates/storefront-nextjs-shadcn/components.json +19 -0
- package/templates/storefront-nextjs-shadcn/generated/.gitkeep +2 -0
- package/templates/storefront-nextjs-shadcn/graphql/.gitkeep +31 -0
- package/templates/storefront-nextjs-shadcn/graphql/collections.example.ts +168 -0
- package/templates/storefront-nextjs-shadcn/graphql/products.example.ts +160 -0
- package/templates/storefront-nextjs-shadcn/hooks/index.ts +9 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-auth.ts +310 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-cart-actions.ts +286 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-cart-sync.ts +110 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-filter-params.test.ts +173 -0
- package/templates/storefront-nextjs-shadcn/hooks/use-filter-params.ts +298 -0
- package/templates/storefront-nextjs-shadcn/lib/auth/cookies.ts +220 -0
- package/templates/storefront-nextjs-shadcn/lib/auth/routes.ts +57 -0
- package/templates/storefront-nextjs-shadcn/lib/config.ts +46 -0
- package/templates/storefront-nextjs-shadcn/lib/currency/IMPLEMENTATION_SUMMARY.md +254 -0
- package/templates/storefront-nextjs-shadcn/lib/currency/README.md +464 -0
- package/templates/storefront-nextjs-shadcn/lib/currency/cookie-manager.test.ts +328 -0
- package/templates/storefront-nextjs-shadcn/lib/currency/cookie-manager.ts +295 -0
- package/templates/storefront-nextjs-shadcn/lib/currency/index.ts +27 -0
- package/templates/storefront-nextjs-shadcn/lib/format.test.ts +397 -0
- package/templates/storefront-nextjs-shadcn/lib/format.ts +226 -0
- package/templates/storefront-nextjs-shadcn/lib/graphql/client.ts +109 -0
- package/templates/storefront-nextjs-shadcn/lib/graphql/hooks.ts +1183 -0
- package/templates/storefront-nextjs-shadcn/lib/graphql/server.ts +267 -0
- package/templates/storefront-nextjs-shadcn/lib/hooks.ts +30 -0
- package/templates/storefront-nextjs-shadcn/lib/theme/theme-config.ts +89 -0
- package/templates/storefront-nextjs-shadcn/lib/utils.ts +6 -0
- package/templates/storefront-nextjs-shadcn/next.config.ts +47 -0
- package/templates/storefront-nextjs-shadcn/open-next.config.ts +3 -0
- package/templates/storefront-nextjs-shadcn/package.dev.json +30 -0
- package/templates/storefront-nextjs-shadcn/package.json +60 -0
- package/templates/storefront-nextjs-shadcn/package.json.template +46 -0
- package/templates/storefront-nextjs-shadcn/postcss.config.mjs +8 -0
- package/templates/storefront-nextjs-shadcn/proxy.ts +80 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/apple-pay.svg +8 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/bank-transfer.svg +10 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/blik.svg +6 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/cash-on-delivery.svg +11 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/google-pay.svg +11 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/mastercard.svg +7 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/paypal.svg +7 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/payu.svg +7 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/przelewy24.svg +7 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/stripe.svg +4 -0
- package/templates/storefront-nextjs-shadcn/public/icons/payment/visa.svg +5 -0
- package/templates/storefront-nextjs-shadcn/stores/auth-store.ts +66 -0
- package/templates/storefront-nextjs-shadcn/stores/cart-store.ts +56 -0
- package/templates/storefront-nextjs-shadcn/stores/checkout-store.ts +184 -0
- package/templates/storefront-nextjs-shadcn/stores/currency-store.ts +103 -0
- package/templates/storefront-nextjs-shadcn/stores/wishlist-store.ts +291 -0
- package/templates/storefront-nextjs-shadcn/tailwind.config.ts +111 -0
- package/templates/storefront-nextjs-shadcn/tsconfig.json +27 -0
- package/templates/storefront-nextjs-shadcn/wrangler.toml +9 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
# Integration Checklist
|
|
2
|
+
|
|
3
|
+
This document lists all TODO comments and missing GraphQL implementations that need to be completed for production readiness.
|
|
4
|
+
|
|
5
|
+
## 🔴 Critical - Authentication & User Management
|
|
6
|
+
|
|
7
|
+
### Header Component
|
|
8
|
+
**File**: `components/layout/header.tsx`
|
|
9
|
+
- [ ] **Line 16**: Get authentication state from context/hook
|
|
10
|
+
- Replace `isAuthenticated = false` with actual auth check
|
|
11
|
+
- Replace `customerName = undefined` with actual customer data
|
|
12
|
+
- **GraphQL Needed**: Customer query or auth context
|
|
13
|
+
|
|
14
|
+
### Register Form
|
|
15
|
+
**File**: `components/auth/register-form.tsx`
|
|
16
|
+
- [ ] **Line 61**: Add CustomerRegisterDocument to generated types
|
|
17
|
+
- Implement customer registration mutation
|
|
18
|
+
- **GraphQL Needed**: `customerRegister` mutation
|
|
19
|
+
|
|
20
|
+
### Forgot Password
|
|
21
|
+
**File**: `app/auth/forgot-password/page.tsx`
|
|
22
|
+
- [ ] **Line 19**: Implement password reset
|
|
23
|
+
- **GraphQL Needed**: `customerRecover` mutation
|
|
24
|
+
|
|
25
|
+
## 🔴 Critical - E-commerce Core
|
|
26
|
+
|
|
27
|
+
### Checkout Page
|
|
28
|
+
**File**: `app/checkout/page.tsx`
|
|
29
|
+
- [ ] **Line 28**: Implement checkout API
|
|
30
|
+
- Complete checkout flow with payment integration
|
|
31
|
+
- **GraphQL Needed**: `checkoutCreate`, `checkoutComplete` mutations
|
|
32
|
+
|
|
33
|
+
### Cart Page
|
|
34
|
+
**File**: `app/cart/page.tsx`
|
|
35
|
+
- [ ] **Line 31**: Implement promo code API
|
|
36
|
+
- **GraphQL Needed**: `cartDiscountCodesUpdate` mutation
|
|
37
|
+
|
|
38
|
+
## 🟡 High Priority - Product & Catalog
|
|
39
|
+
|
|
40
|
+
### Collections Page
|
|
41
|
+
**File**: `app/collections/page.tsx`
|
|
42
|
+
- [ ] **Line 10**: Fetch collections from GraphQL API
|
|
43
|
+
- Replace mock data with real GraphQL query
|
|
44
|
+
- **GraphQL Needed**: `collections` query
|
|
45
|
+
- [ ] **Line 54**: Replace placeholder images with actual collection images
|
|
46
|
+
|
|
47
|
+
### Categories Page
|
|
48
|
+
**File**: `app/categories/page.tsx`
|
|
49
|
+
- [ ] **Line 10**: Fetch categories from GraphQL API
|
|
50
|
+
- Replace mock data with real GraphQL query
|
|
51
|
+
- **GraphQL Needed**: `categories` query (if supported by backend)
|
|
52
|
+
|
|
53
|
+
### Brands Pages
|
|
54
|
+
**File**: `app/brands/page.tsx`
|
|
55
|
+
- [ ] **Line 7**: Fetch brands from backend using GraphQL
|
|
56
|
+
- **GraphQL Needed**: `brands` query
|
|
57
|
+
|
|
58
|
+
**File**: `app/brands/[slug]/page.tsx`
|
|
59
|
+
- [ ] **Line 12**: Fetch brand details from backend
|
|
60
|
+
- **GraphQL Needed**: `brand(slug)` query
|
|
61
|
+
- [ ] **Line 25**: Fetch products for specific brand
|
|
62
|
+
- **GraphQL Needed**: `products(brandId)` query with filter
|
|
63
|
+
|
|
64
|
+
### Featured Products
|
|
65
|
+
**File**: `components/home/featured-products.tsx`
|
|
66
|
+
- [ ] **Line 12**: Add featured filter when backend supports it
|
|
67
|
+
- **GraphQL Needed**: Add `featured: true` filter to products query
|
|
68
|
+
|
|
69
|
+
## 🟡 High Priority - Account Management
|
|
70
|
+
|
|
71
|
+
### Orders Page
|
|
72
|
+
**File**: `app/account/orders/page.tsx`
|
|
73
|
+
- [ ] **Line 7**: Fetch orders from backend using GraphQL
|
|
74
|
+
- **GraphQL Needed**: `customer { orders }` query
|
|
75
|
+
|
|
76
|
+
### Order Details Page
|
|
77
|
+
**File**: `app/account/orders/[id]/page.tsx`
|
|
78
|
+
- [ ] **Line 17**: Fetch order details from backend
|
|
79
|
+
- **GraphQL Needed**: `order(id)` query
|
|
80
|
+
|
|
81
|
+
### Order Tracking Page
|
|
82
|
+
**File**: `app/account/orders/[id]/tracking/page.tsx`
|
|
83
|
+
- [ ] **Line 23**: Fetch tracking data from backend
|
|
84
|
+
- **GraphQL Needed**: `order(id) { shipment { tracking } }` query
|
|
85
|
+
|
|
86
|
+
### Addresses Page
|
|
87
|
+
**File**: `app/account/addresses/page.tsx`
|
|
88
|
+
- [ ] **Line 23**: Fetch addresses from backend using GraphQL
|
|
89
|
+
- **GraphQL Needed**: `customer { addresses }` query
|
|
90
|
+
- [ ] **Line 69**: Implement delete address mutation
|
|
91
|
+
- **GraphQL Needed**: `customerAddressDelete` mutation
|
|
92
|
+
- [ ] **Line 74**: Implement set default address mutation
|
|
93
|
+
- **GraphQL Needed**: `customerDefaultAddressUpdate` mutation
|
|
94
|
+
- [ ] **Line 84**: Implement create/update address mutation
|
|
95
|
+
- **GraphQL Needed**: `customerAddressCreate`, `customerAddressUpdate` mutations
|
|
96
|
+
|
|
97
|
+
### Account Settings
|
|
98
|
+
**File**: `app/account/settings/page.tsx`
|
|
99
|
+
- [ ] **Line 17**: Implement save settings
|
|
100
|
+
- **GraphQL Needed**: `customerUpdate` mutation
|
|
101
|
+
|
|
102
|
+
## 🟢 Medium Priority - Search & Discovery
|
|
103
|
+
|
|
104
|
+
### Search Bar
|
|
105
|
+
**File**: `components/search/search-bar.tsx`
|
|
106
|
+
- [ ] **Line 35**: Fetch suggestions from API
|
|
107
|
+
- **GraphQL Needed**: `productSuggestions(query)` or search query
|
|
108
|
+
|
|
109
|
+
## 🟢 Medium Priority - Marketing
|
|
110
|
+
|
|
111
|
+
### Newsletter Signup
|
|
112
|
+
**File**: `components/home/newsletter-signup.tsx`
|
|
113
|
+
- [ ] **Line 31**: Implement newsletter subscription API call
|
|
114
|
+
- **GraphQL Needed**: `newsletterSubscribe` mutation or external service integration
|
|
115
|
+
|
|
116
|
+
## GraphQL Operations Summary
|
|
117
|
+
|
|
118
|
+
### Required Queries
|
|
119
|
+
1. ✅ `shop` - Already implemented
|
|
120
|
+
2. ✅ `products` - Already implemented
|
|
121
|
+
3. ✅ `product(handle)` - Already implemented
|
|
122
|
+
4. ✅ `cart` - Already implemented
|
|
123
|
+
5. [ ] `collections` - **MISSING**
|
|
124
|
+
6. [ ] `collection(handle)` - **MISSING**
|
|
125
|
+
7. [ ] `categories` - **MISSING** (if backend supports)
|
|
126
|
+
8. [ ] `brands` - **MISSING**
|
|
127
|
+
9. [ ] `brand(slug)` - **MISSING**
|
|
128
|
+
10. [ ] `customer` - **MISSING**
|
|
129
|
+
11. [ ] `order(id)` - **MISSING**
|
|
130
|
+
12. [ ] `productSuggestions(query)` - **MISSING**
|
|
131
|
+
|
|
132
|
+
### Required Mutations
|
|
133
|
+
1. ✅ `cartCreate` - Already implemented
|
|
134
|
+
2. ✅ `cartLinesAdd` - Already implemented
|
|
135
|
+
3. ✅ `cartLinesUpdate` - Already implemented
|
|
136
|
+
4. ✅ `cartLinesRemove` - Already implemented
|
|
137
|
+
5. [ ] `customerRegister` - **MISSING**
|
|
138
|
+
6. [ ] `customerLogin` - **MISSING** (or use existing auth)
|
|
139
|
+
7. [ ] `customerRecover` - **MISSING**
|
|
140
|
+
8. [ ] `customerUpdate` - **MISSING**
|
|
141
|
+
9. [ ] `customerAddressCreate` - **MISSING**
|
|
142
|
+
10. [ ] `customerAddressUpdate` - **MISSING**
|
|
143
|
+
11. [ ] `customerAddressDelete` - **MISSING**
|
|
144
|
+
12. [ ] `customerDefaultAddressUpdate` - **MISSING**
|
|
145
|
+
13. [ ] `checkoutCreate` - **MISSING**
|
|
146
|
+
14. [ ] `checkoutComplete` - **MISSING**
|
|
147
|
+
15. [ ] `cartDiscountCodesUpdate` - **MISSING**
|
|
148
|
+
16. [ ] `newsletterSubscribe` - **MISSING** (optional)
|
|
149
|
+
|
|
150
|
+
## Implementation Priority
|
|
151
|
+
|
|
152
|
+
### Phase 1: Critical (Must Have for MVP)
|
|
153
|
+
1. Authentication (login, register, password reset)
|
|
154
|
+
2. Checkout flow (create, complete)
|
|
155
|
+
3. Customer queries (profile, orders)
|
|
156
|
+
4. Order details and tracking
|
|
157
|
+
|
|
158
|
+
### Phase 2: High Priority (Important for UX)
|
|
159
|
+
1. Collections and categories
|
|
160
|
+
2. Brands
|
|
161
|
+
3. Address management (CRUD operations)
|
|
162
|
+
4. Promo codes
|
|
163
|
+
|
|
164
|
+
### Phase 3: Medium Priority (Nice to Have)
|
|
165
|
+
1. Search suggestions
|
|
166
|
+
2. Newsletter subscription
|
|
167
|
+
3. Featured products filter
|
|
168
|
+
4. Account settings
|
|
169
|
+
|
|
170
|
+
## Backend Requirements
|
|
171
|
+
|
|
172
|
+
The following GraphQL operations need to be added to the backend:
|
|
173
|
+
|
|
174
|
+
### In `packages/backend/src/commerce/storefront-graphql/operations/`
|
|
175
|
+
|
|
176
|
+
**queries.graphql**:
|
|
177
|
+
```graphql
|
|
178
|
+
# Collections
|
|
179
|
+
query Collections($first: Int, $after: String) {
|
|
180
|
+
collections(first: $first, after: $after) {
|
|
181
|
+
edges {
|
|
182
|
+
node {
|
|
183
|
+
id
|
|
184
|
+
handle
|
|
185
|
+
title
|
|
186
|
+
description
|
|
187
|
+
image {
|
|
188
|
+
url
|
|
189
|
+
altText
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
cursor
|
|
193
|
+
}
|
|
194
|
+
pageInfo {
|
|
195
|
+
hasNextPage
|
|
196
|
+
endCursor
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
query Collection($handle: String!) {
|
|
202
|
+
collection(handle: $handle) {
|
|
203
|
+
id
|
|
204
|
+
handle
|
|
205
|
+
title
|
|
206
|
+
description
|
|
207
|
+
image {
|
|
208
|
+
url
|
|
209
|
+
altText
|
|
210
|
+
}
|
|
211
|
+
products(first: 20) {
|
|
212
|
+
edges {
|
|
213
|
+
node {
|
|
214
|
+
id
|
|
215
|
+
title
|
|
216
|
+
handle
|
|
217
|
+
# ... product fields
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
# Brands (if supported)
|
|
225
|
+
query Brands($first: Int) {
|
|
226
|
+
brands(first: $first) {
|
|
227
|
+
edges {
|
|
228
|
+
node {
|
|
229
|
+
id
|
|
230
|
+
slug
|
|
231
|
+
name
|
|
232
|
+
description
|
|
233
|
+
logoUrl
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
# Customer
|
|
240
|
+
query Customer {
|
|
241
|
+
customer {
|
|
242
|
+
id
|
|
243
|
+
email
|
|
244
|
+
firstName
|
|
245
|
+
lastName
|
|
246
|
+
phone
|
|
247
|
+
addresses {
|
|
248
|
+
id
|
|
249
|
+
firstName
|
|
250
|
+
lastName
|
|
251
|
+
company
|
|
252
|
+
address1
|
|
253
|
+
address2
|
|
254
|
+
city
|
|
255
|
+
province
|
|
256
|
+
zip
|
|
257
|
+
country
|
|
258
|
+
phone
|
|
259
|
+
isDefault
|
|
260
|
+
}
|
|
261
|
+
orders(first: 20) {
|
|
262
|
+
edges {
|
|
263
|
+
node {
|
|
264
|
+
id
|
|
265
|
+
orderNumber
|
|
266
|
+
createdAt
|
|
267
|
+
totalPrice {
|
|
268
|
+
amount
|
|
269
|
+
currencyCode
|
|
270
|
+
}
|
|
271
|
+
# ... order fields
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
# Order
|
|
279
|
+
query Order($id: ID!) {
|
|
280
|
+
order(id: $id) {
|
|
281
|
+
id
|
|
282
|
+
orderNumber
|
|
283
|
+
createdAt
|
|
284
|
+
totalPrice {
|
|
285
|
+
amount
|
|
286
|
+
currencyCode
|
|
287
|
+
}
|
|
288
|
+
lineItems {
|
|
289
|
+
edges {
|
|
290
|
+
node {
|
|
291
|
+
id
|
|
292
|
+
title
|
|
293
|
+
quantity
|
|
294
|
+
# ... line item fields
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
shippingAddress {
|
|
299
|
+
# ... address fields
|
|
300
|
+
}
|
|
301
|
+
# ... other order fields
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**mutations.graphql**:
|
|
307
|
+
```graphql
|
|
308
|
+
# Customer Registration
|
|
309
|
+
mutation CustomerRegister($input: CustomerRegisterInput!) {
|
|
310
|
+
customerRegister(input: $input) {
|
|
311
|
+
customer {
|
|
312
|
+
id
|
|
313
|
+
email
|
|
314
|
+
firstName
|
|
315
|
+
lastName
|
|
316
|
+
}
|
|
317
|
+
customerAccessToken {
|
|
318
|
+
accessToken
|
|
319
|
+
expiresAt
|
|
320
|
+
}
|
|
321
|
+
userErrors {
|
|
322
|
+
field
|
|
323
|
+
message
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
# Customer Address Management
|
|
329
|
+
mutation CustomerAddressCreate($input: CustomerAddressInput!) {
|
|
330
|
+
customerAddressCreate(input: $input) {
|
|
331
|
+
customerAddress {
|
|
332
|
+
id
|
|
333
|
+
# ... address fields
|
|
334
|
+
}
|
|
335
|
+
userErrors {
|
|
336
|
+
field
|
|
337
|
+
message
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
mutation CustomerAddressUpdate($id: ID!, $input: CustomerAddressInput!) {
|
|
343
|
+
customerAddressUpdate(id: $id, input: $input) {
|
|
344
|
+
customerAddress {
|
|
345
|
+
id
|
|
346
|
+
# ... address fields
|
|
347
|
+
}
|
|
348
|
+
userErrors {
|
|
349
|
+
field
|
|
350
|
+
message
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
mutation CustomerAddressDelete($id: ID!) {
|
|
356
|
+
customerAddressDelete(id: $id) {
|
|
357
|
+
deletedAddressId
|
|
358
|
+
userErrors {
|
|
359
|
+
field
|
|
360
|
+
message
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
# Checkout
|
|
366
|
+
mutation CheckoutCreate($input: CheckoutCreateInput!) {
|
|
367
|
+
checkoutCreate(input: $input) {
|
|
368
|
+
checkout {
|
|
369
|
+
id
|
|
370
|
+
webUrl
|
|
371
|
+
# ... checkout fields
|
|
372
|
+
}
|
|
373
|
+
userErrors {
|
|
374
|
+
field
|
|
375
|
+
message
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
mutation CheckoutComplete($checkoutId: ID!) {
|
|
381
|
+
checkoutComplete(checkoutId: $checkoutId) {
|
|
382
|
+
order {
|
|
383
|
+
id
|
|
384
|
+
orderNumber
|
|
385
|
+
}
|
|
386
|
+
userErrors {
|
|
387
|
+
field
|
|
388
|
+
message
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
# Discount Codes
|
|
394
|
+
mutation CartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!]!) {
|
|
395
|
+
cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
|
|
396
|
+
cart {
|
|
397
|
+
id
|
|
398
|
+
# ... cart fields
|
|
399
|
+
}
|
|
400
|
+
userErrors {
|
|
401
|
+
field
|
|
402
|
+
message
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## Testing Checklist
|
|
409
|
+
|
|
410
|
+
After implementing GraphQL operations:
|
|
411
|
+
|
|
412
|
+
- [ ] Test authentication flow (register, login, logout)
|
|
413
|
+
- [ ] Test checkout flow end-to-end
|
|
414
|
+
- [ ] Test address management (create, update, delete, set default)
|
|
415
|
+
- [ ] Test order history and details
|
|
416
|
+
- [ ] Test collections and categories browsing
|
|
417
|
+
- [ ] Test brands browsing
|
|
418
|
+
- [ ] Test promo code application
|
|
419
|
+
- [ ] Test search suggestions
|
|
420
|
+
- [ ] Verify all error handling works correctly
|
|
421
|
+
- [ ] Verify loading states display properly
|
|
422
|
+
- [ ] Test with real backend data
|
|
423
|
+
|
|
424
|
+
## Notes
|
|
425
|
+
|
|
426
|
+
- All mock data should be replaced with real GraphQL queries
|
|
427
|
+
- Error handling should be implemented for all API calls
|
|
428
|
+
- Loading states should be shown during data fetching
|
|
429
|
+
- Empty states should be handled gracefully
|
|
430
|
+
- Authentication state should be managed globally (context or store)
|
|
431
|
+
- Consider implementing optimistic updates for better UX
|
|
432
|
+
|
|
433
|
+
## Progress Tracking
|
|
434
|
+
|
|
435
|
+
**Total TODO Items**: 24
|
|
436
|
+
**Completed**: 1 (Authentication)
|
|
437
|
+
**In Progress**: 0
|
|
438
|
+
**Remaining**: 23
|
|
439
|
+
|
|
440
|
+
**Documentation Created**:
|
|
441
|
+
- ✅ QUICK_START_INTEGRATION.md - Quick start guide with examples
|
|
442
|
+
- ✅ GRAPHQL_INTEGRATION_GUIDE.md - Detailed integration patterns
|
|
443
|
+
- ✅ IMPLEMENTATION_STATUS.md - Backend operations status
|
|
444
|
+
- ✅ README_INTEGRATION.md - Complete integration overview
|
|
445
|
+
- ✅ Auth Store - Zustand store for authentication state
|
|
446
|
+
- ✅ Enhanced use-auth hook - Complete authentication system
|
|
447
|
+
|
|
448
|
+
Last Updated: 2024-12-10
|