gitextract_9kshcczh/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ └── node.js.yml ├── .gitignore ├── LICENSE ├── README.md ├── medusa/ │ ├── .gitignore │ ├── .npmrc │ ├── .vscode/ │ │ └── settings.json │ ├── .yarnrc.yml │ ├── README.md │ ├── docker-compose.yml │ ├── instrumentation.js │ ├── integration-tests/ │ │ └── http/ │ │ ├── README.md │ │ └── health.spec.ts │ ├── jest.config.js │ ├── medusa-config.js │ ├── package.json │ ├── src/ │ │ ├── admin/ │ │ │ ├── README.md │ │ │ ├── components/ │ │ │ │ ├── EditMaterialDrawer.tsx │ │ │ │ ├── Form/ │ │ │ │ │ ├── Form.tsx │ │ │ │ │ ├── ImageField.tsx │ │ │ │ │ ├── InputField.tsx │ │ │ │ │ ├── SelectField.tsx │ │ │ │ │ ├── SubmitButton.tsx │ │ │ │ │ └── TextareaField.tsx │ │ │ │ └── QueryClientProvider.tsx │ │ │ ├── hooks/ │ │ │ │ ├── fashion.ts │ │ │ │ └── images.ts │ │ │ ├── routes/ │ │ │ │ └── fashion/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── tsconfig.json │ │ │ └── widgets/ │ │ │ ├── collection-details.tsx │ │ │ ├── product-fashion.tsx │ │ │ └── product-type-details.tsx │ │ ├── api/ │ │ │ ├── README.md │ │ │ ├── admin/ │ │ │ │ ├── custom/ │ │ │ │ │ ├── collections/ │ │ │ │ │ │ └── [collectionId]/ │ │ │ │ │ │ └── details/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ ├── index-products/ │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── product-types/ │ │ │ │ │ └── [productTypeId]/ │ │ │ │ │ └── details/ │ │ │ │ │ └── route.ts │ │ │ │ ├── fashion/ │ │ │ │ │ ├── [id]/ │ │ │ │ │ │ ├── colors/ │ │ │ │ │ │ │ ├── [colorId]/ │ │ │ │ │ │ │ │ ├── restore/ │ │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ ├── restore/ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ └── route.ts │ │ │ │ │ └── route.ts │ │ │ │ └── products/ │ │ │ │ └── [id]/ │ │ │ │ └── fashion/ │ │ │ │ └── route.ts │ │ │ ├── middlewares.ts │ │ │ └── store/ │ │ │ └── custom/ │ │ │ ├── customer/ │ │ │ │ └── send-welcome-email/ │ │ │ │ └── route.ts │ │ │ ├── fashion/ │ │ │ │ └── [productHandle]/ │ │ │ │ └── route.ts │ │ │ ├── product-types/ │ │ │ │ ├── [id]/ │ │ │ │ │ └── route.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── middlewares.ts │ │ │ │ ├── query-config.ts │ │ │ │ ├── route.ts │ │ │ │ └── validators.ts │ │ │ └── stripe/ │ │ │ ├── get-payment-method/ │ │ │ │ └── [id]/ │ │ │ │ └── route.ts │ │ │ └── set-payment-method/ │ │ │ └── route.ts │ │ ├── jobs/ │ │ │ └── README.md │ │ ├── links/ │ │ │ └── README.md │ │ ├── modules/ │ │ │ ├── README.md │ │ │ ├── fashion/ │ │ │ │ ├── index.ts │ │ │ │ ├── migrations/ │ │ │ │ │ ├── .snapshot-medusa.json │ │ │ │ │ └── Migration20241002190028.ts │ │ │ │ ├── models/ │ │ │ │ │ ├── color.ts │ │ │ │ │ └── material.ts │ │ │ │ └── service.ts │ │ │ ├── meilisearch/ │ │ │ │ ├── index.ts │ │ │ │ ├── loader.ts │ │ │ │ ├── service.ts │ │ │ │ └── types.ts │ │ │ └── resend/ │ │ │ ├── emails/ │ │ │ │ ├── auth-email-confirm.tsx │ │ │ │ ├── auth-forgot-password.tsx │ │ │ │ ├── auth-password-reset.tsx │ │ │ │ ├── components/ │ │ │ │ │ └── EmailLayout.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── order-placed.tsx │ │ │ │ ├── order-update.tsx │ │ │ │ └── welcome.tsx │ │ │ ├── index.ts │ │ │ └── service.tsx │ │ ├── scripts/ │ │ │ ├── README.md │ │ │ ├── index-products.ts │ │ │ └── seed.ts │ │ ├── subscribers/ │ │ │ ├── README.md │ │ │ ├── auth-password-reset-notification.ts │ │ │ ├── customer-welcome-notification.ts │ │ │ ├── index-products.ts │ │ │ └── order-placed-notification.ts │ │ └── workflows/ │ │ ├── README.md │ │ ├── emit-customer-welcome-event.ts │ │ └── index-products.ts │ └── tsconfig.json └── storefront/ ├── .github/ │ ├── scripts/ │ │ └── medusa-config.js │ └── workflows/ │ └── test-e2e.yaml ├── .gitignore ├── .prettierrc ├── .yarnrc.yml ├── LICENSE ├── README.md ├── check-env-variables.js ├── e2e/ │ ├── README.md │ ├── data/ │ │ ├── reset.ts │ │ └── seed.ts │ ├── fixtures/ │ │ ├── account/ │ │ │ ├── account-page.ts │ │ │ ├── addresses-page.ts │ │ │ ├── index.ts │ │ │ ├── login-page.ts │ │ │ ├── modals/ │ │ │ │ └── address-modal.ts │ │ │ ├── order-page.ts │ │ │ ├── orders-page.ts │ │ │ ├── overview-page.ts │ │ │ ├── profile-page.ts │ │ │ └── register-page.ts │ │ ├── base/ │ │ │ ├── base-modal.ts │ │ │ ├── base-page.ts │ │ │ ├── cart-dropdown.ts │ │ │ ├── nav-menu.ts │ │ │ └── search-modal.ts │ │ ├── cart-page.ts │ │ ├── category-page.ts │ │ ├── checkout-page.ts │ │ ├── index.ts │ │ ├── modals/ │ │ │ └── mobile-actions-modal.ts │ │ ├── order-page.ts │ │ ├── product-page.ts │ │ └── store-page.ts │ ├── index.ts │ ├── tests/ │ │ ├── authenticated/ │ │ │ ├── address.spec.ts │ │ │ ├── orders.spec.ts │ │ │ └── profile.spec.ts │ │ ├── global/ │ │ │ ├── public-setup.ts │ │ │ ├── setup.ts │ │ │ └── teardown.ts │ │ └── public/ │ │ ├── cart.spec.ts │ │ ├── checkout.spec.ts │ │ ├── discount.spec.ts │ │ ├── giftcard.spec.ts │ │ ├── login.spec.ts │ │ ├── register.spec.ts │ │ └── search.spec.ts │ └── utils/ │ ├── index.ts │ └── locators.ts ├── eslint.config.cjs ├── next-env.d.ts ├── next-sitemap.js ├── next.config.js ├── package.json ├── playwright.config.ts ├── postcss.config.js ├── src/ │ ├── app/ │ │ ├── [countryCode]/ │ │ │ ├── (checkout)/ │ │ │ │ ├── checkout/ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ └── not-found.tsx │ │ │ └── (main)/ │ │ │ ├── about/ │ │ │ │ └── page.tsx │ │ │ ├── account/ │ │ │ │ ├── layout.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── my-orders/ │ │ │ │ │ ├── [orderId]/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── auth/ │ │ │ │ ├── forgot-password/ │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── reset/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── login/ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── register/ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── reset-password/ │ │ │ │ └── page.tsx │ │ │ ├── cart/ │ │ │ │ ├── loading.tsx │ │ │ │ ├── not-found.tsx │ │ │ │ └── page.tsx │ │ │ ├── collections/ │ │ │ │ └── [handle]/ │ │ │ │ └── page.tsx │ │ │ ├── cookie-policy/ │ │ │ │ └── page.tsx │ │ │ ├── inspiration/ │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── not-found.tsx │ │ │ ├── order/ │ │ │ │ └── confirmed/ │ │ │ │ └── [id]/ │ │ │ │ ├── loading.tsx │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── privacy-policy/ │ │ │ │ └── page.tsx │ │ │ ├── products/ │ │ │ │ └── [handle]/ │ │ │ │ └── page.tsx │ │ │ ├── search/ │ │ │ │ └── page.tsx │ │ │ ├── store/ │ │ │ │ └── page.tsx │ │ │ └── terms-of-use/ │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── not-found.tsx │ │ └── robots.ts │ ├── components/ │ │ ├── Button.tsx │ │ ├── Carousel.tsx │ │ ├── CartDrawer.tsx │ │ ├── CartIcon.tsx │ │ ├── CollectionsSection.tsx │ │ ├── Dialog.tsx │ │ ├── Drawer.tsx │ │ ├── Footer.tsx │ │ ├── Forms.tsx │ │ ├── Header.tsx │ │ ├── HeaderDrawer.tsx │ │ ├── HeaderWrapper.tsx │ │ ├── Icon.tsx │ │ ├── IconCircle.tsx │ │ ├── InputNumberField.tsx │ │ ├── Layout.tsx │ │ ├── Link.tsx │ │ ├── LocalizedLink.tsx │ │ ├── NewsletterForm.tsx │ │ ├── NumberField.tsx │ │ ├── ProductPageGallery.tsx │ │ ├── RegionSwitcher.tsx │ │ ├── SearchField.tsx │ │ ├── icons/ │ │ │ ├── ArrowLeft.tsx │ │ │ ├── ArrowRight.tsx │ │ │ ├── ArrowUpRight.tsx │ │ │ ├── Calendar.tsx │ │ │ ├── Case.tsx │ │ │ ├── Check.tsx │ │ │ ├── ChevronDown.tsx │ │ │ ├── ChevronLeft.tsx │ │ │ ├── ChevronRight.tsx │ │ │ ├── ChevronUp.tsx │ │ │ ├── Close.tsx │ │ │ ├── CreditCard.tsx │ │ │ ├── Heart.tsx │ │ │ ├── Info.tsx │ │ │ ├── Loader.tsx │ │ │ ├── MapPin.tsx │ │ │ ├── Menu.tsx │ │ │ ├── Minus.tsx │ │ │ ├── Package.tsx │ │ │ ├── Plus.tsx │ │ │ ├── Receipt.tsx │ │ │ ├── Search.tsx │ │ │ ├── Sliders.tsx │ │ │ ├── Trash.tsx │ │ │ ├── Truck.tsx │ │ │ ├── Undo.tsx │ │ │ └── User.tsx │ │ └── ui/ │ │ ├── Checkbox.tsx │ │ ├── Modal.tsx │ │ ├── Radio.tsx │ │ ├── Select.tsx │ │ ├── Skeleton.tsx │ │ ├── Slider.tsx │ │ ├── Tag.tsx │ │ └── TagList.tsx │ ├── hooks/ │ │ ├── cart.ts │ │ ├── country-code.tsx │ │ ├── customer.ts │ │ └── store.tsx │ ├── lib/ │ │ ├── config.ts │ │ ├── constants.tsx │ │ ├── data/ │ │ │ ├── cart.ts │ │ │ ├── categories.ts │ │ │ ├── collections.ts │ │ │ ├── cookies.ts │ │ │ ├── customer.ts │ │ │ ├── fulfillment.ts │ │ │ ├── orders.ts │ │ │ ├── payment.ts │ │ │ ├── product-types.ts │ │ │ ├── products.ts │ │ │ └── regions.ts │ │ ├── search-client.ts │ │ ├── util/ │ │ │ ├── collections.ts │ │ │ ├── compare-addresses.ts │ │ │ ├── enrich-line-items.ts │ │ │ ├── env.ts │ │ │ ├── get-precentage-diff.ts │ │ │ ├── get-product-price.ts │ │ │ ├── inventory.ts │ │ │ ├── isEmpty.ts │ │ │ ├── medusa-error.ts │ │ │ ├── money.ts │ │ │ ├── react-query.tsx │ │ │ ├── repeat.ts │ │ │ └── sort-products.ts │ │ └── webmcp/ │ │ ├── WebMCPProvider.tsx │ │ ├── is-supported.ts │ │ ├── register-tools.ts │ │ ├── tools/ │ │ │ ├── cart.ts │ │ │ ├── checkout.ts │ │ │ ├── products-search.ts │ │ │ └── promotion.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── middleware.ts │ ├── modules/ │ │ ├── account/ │ │ │ └── components/ │ │ │ ├── AddressMultiple.tsx │ │ │ ├── AddressSingle.tsx │ │ │ ├── DefaultBillingAddressSelect.tsx │ │ │ ├── DefaultShippingAddressSelect.tsx │ │ │ ├── DeleteAddressButton.tsx │ │ │ ├── PersonalInfoForm.tsx │ │ │ ├── RequestPasswordResetButton.tsx │ │ │ ├── SidebarNav.tsx │ │ │ ├── SignOutButton.tsx │ │ │ └── UpsertAddressForm.tsx │ │ ├── auth/ │ │ │ └── components/ │ │ │ ├── ForgotPasswordForm.tsx │ │ │ ├── LoginForm.tsx │ │ │ ├── ResetPasswordForm.tsx │ │ │ └── SignUpForm.tsx │ │ ├── cart/ │ │ │ ├── components/ │ │ │ │ ├── cart-totals/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── discount-code/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── empty-cart-message/ │ │ │ │ │ └── index.tsx │ │ │ │ └── item/ │ │ │ │ └── index.tsx │ │ │ ├── templates/ │ │ │ │ ├── index.tsx │ │ │ │ ├── items.tsx │ │ │ │ └── summary.tsx │ │ │ └── utils/ │ │ │ └── getCheckoutStep.tsx │ │ ├── checkout/ │ │ │ ├── components/ │ │ │ │ ├── addresses/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── billing_address/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── checkout-form/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── checkout-summary-wrapper/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── country-select/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── discount-code/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── email/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── error-message/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── mobile-checkout-summary-wrapper/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-card-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-container/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-test/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-wrapper/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── stripe-wrapper.tsx │ │ │ │ ├── review/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── shipping/ │ │ │ │ │ └── index.tsx │ │ │ │ └── shipping-address/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ ├── checkout-summary/ │ │ │ │ └── index.tsx │ │ │ └── mobile-checkout-summary/ │ │ │ └── index.tsx │ │ ├── collections/ │ │ │ └── templates/ │ │ │ └── index.tsx │ │ ├── common/ │ │ │ ├── components/ │ │ │ │ ├── cart-totals/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── delete-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── line-item-unit-price/ │ │ │ │ │ └── index.tsx │ │ │ │ └── submit-button/ │ │ │ │ └── index.tsx │ │ │ └── icons/ │ │ │ ├── bancontact.tsx │ │ │ ├── ideal.tsx │ │ │ ├── paypal.tsx │ │ │ ├── placeholder-image.tsx │ │ │ └── spinner.tsx │ │ ├── header/ │ │ │ └── components/ │ │ │ └── LoginLink.tsx │ │ ├── order/ │ │ │ ├── components/ │ │ │ │ ├── OrderTotals.tsx │ │ │ │ ├── item/ │ │ │ │ │ └── index.tsx │ │ │ │ └── payment-details/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ └── order-completed-template.tsx │ │ ├── products/ │ │ │ ├── components/ │ │ │ │ ├── image-gallery/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-actions/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-preview/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-price/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── related-products/ │ │ │ │ │ └── index.tsx │ │ │ │ └── thumbnail/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ ├── index.tsx │ │ │ ├── product-actions-wrapper/ │ │ │ │ └── index.tsx │ │ │ └── product-info/ │ │ │ └── index.tsx │ │ ├── skeletons/ │ │ │ ├── components/ │ │ │ │ ├── skeleton-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-cart-item/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-cart-totals/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-mobile-summary-trigger/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-order-summary/ │ │ │ │ │ └── index.tsx │ │ │ │ └── skeleton-product-preview/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ ├── skeleton-account-page/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-cart-page/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-checkout-summary/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-order-confirmed/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-product-grid/ │ │ │ │ └── index.tsx │ │ │ └── skeleton-related-products/ │ │ │ └── index.tsx │ │ └── store/ │ │ ├── components/ │ │ │ ├── collections-slider/ │ │ │ │ └── index.tsx │ │ │ ├── no-results.tsx/ │ │ │ │ └── index.tsx │ │ │ ├── pagination/ │ │ │ │ └── index.tsx │ │ │ └── refinement-list/ │ │ │ ├── category-filter/ │ │ │ │ └── index.tsx │ │ │ ├── collection-filter/ │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── mobile-filters/ │ │ │ │ └── index.tsx │ │ │ ├── mobile-sort/ │ │ │ │ └── index.tsx │ │ │ ├── sort-products/ │ │ │ │ └── index.tsx │ │ │ └── type-filter/ │ │ │ └── index.tsx │ │ └── templates/ │ │ ├── index.tsx │ │ └── paginated-products.tsx │ ├── styles/ │ │ └── globals.css │ └── types/ │ └── icon.ts ├── tailwind.config.js └── tsconfig.json