gitextract_oxpi4_tn/ ├── .eslintrc.js ├── .gitignore ├── .prettierrc.json ├── .yarn/ │ └── releases/ │ └── yarn-3.4.1.cjs ├── .yarnrc.yml ├── LICENSE ├── app.json ├── apps/ │ ├── create-universal-medusa-app/ │ │ ├── format-connection-string.ts │ │ ├── index.ts │ │ ├── package.json │ │ ├── postgres-client.ts │ │ ├── readme.md │ │ ├── run.js │ │ ├── tsconfig.json │ │ └── utils/ │ │ ├── db/ │ │ │ └── index.ts │ │ └── get-current-os.ts │ ├── docs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── blog/ │ │ │ ├── 2019-05-28-first-blog-post.md │ │ │ ├── 2019-05-29-long-blog-post.md │ │ │ ├── 2021-08-01-mdx-blog-post.mdx │ │ │ ├── 2021-08-26-welcome/ │ │ │ │ └── index.md │ │ │ └── authors.yml │ │ ├── docs/ │ │ │ ├── Styling/ │ │ │ │ ├── _category_.json │ │ │ │ ├── breakpoints.md │ │ │ │ ├── design-system.md │ │ │ │ ├── layouts.md │ │ │ │ └── tailwind-with-nativewind.md │ │ │ ├── headless-ecommerce/ │ │ │ │ ├── _category_.json │ │ │ │ └── about-medusa-js.md │ │ │ ├── intro.md │ │ │ ├── navigation/ │ │ │ │ ├── _category_.json │ │ │ │ ├── deep-links.md │ │ │ │ ├── discoverability/ │ │ │ │ │ ├── SEO.md │ │ │ │ │ ├── _category_.json │ │ │ │ │ └── app-clips.md │ │ │ │ ├── linking.md │ │ │ │ ├── routing.md │ │ │ │ └── use-universal-pathname.md │ │ │ └── project-structure/ │ │ │ ├── _category_.json │ │ │ ├── add-new-dependencies.md │ │ │ ├── apps-workspace.md │ │ │ └── packages-app-workspace.md │ │ ├── docusaurus.config.js │ │ ├── package.json │ │ ├── sidebars.js │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ └── HomepageFeatures/ │ │ │ │ ├── index.js │ │ │ │ └── styles.module.css │ │ │ ├── css/ │ │ │ │ └── custom.css │ │ │ └── pages/ │ │ │ ├── _index.js │ │ │ ├── index.module.css │ │ │ └── markdown-page.md │ │ ├── static/ │ │ │ └── .nojekyll │ │ └── tailwind.config.js │ ├── expo/ │ │ ├── .gitignore │ │ ├── App.tsx │ │ ├── app/ │ │ │ ├── (tabs)/ │ │ │ │ ├── (home)/ │ │ │ │ │ ├── _layout.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── products/ │ │ │ │ │ │ ├── [handle].tsx │ │ │ │ │ │ └── __layout.tsx │ │ │ │ │ └── store.tsx │ │ │ │ ├── _layout.tsx │ │ │ │ ├── account/ │ │ │ │ │ ├── _layout.tsx │ │ │ │ │ ├── addresses.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── login.tsx │ │ │ │ │ ├── orders.tsx │ │ │ │ │ └── profile.tsx │ │ │ │ ├── cart.tsx │ │ │ │ └── my-bag.tsx │ │ │ ├── [...unmatched].tsx │ │ │ ├── _layout.tsx │ │ │ ├── checkout.tsx │ │ │ └── order/ │ │ │ ├── confirmed/ │ │ │ │ └── [id].tsx │ │ │ └── details/ │ │ │ └── [id].tsx │ │ ├── app-env.d.ts │ │ ├── app.json │ │ ├── babel.config.js │ │ ├── eas.json │ │ ├── index.js │ │ ├── metro.config.js │ │ ├── package.json │ │ ├── patches/ │ │ │ └── react-native-reanimated+3.0.2.patch │ │ ├── tailwind.config.js │ │ └── tsconfig.json │ ├── medusa-store/ │ │ ├── .babelrc.js │ │ ├── .gitignore │ │ ├── README.md │ │ ├── data/ │ │ │ └── seed.json │ │ ├── index.js │ │ ├── medusa-config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api/ │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ └── routes/ │ │ │ │ └── store/ │ │ │ │ ├── custom-route-handler.ts │ │ │ │ └── index.ts │ │ │ ├── loaders/ │ │ │ │ └── README.md │ │ │ ├── migrations/ │ │ │ │ └── README.md │ │ │ ├── models/ │ │ │ │ └── README.md │ │ │ ├── services/ │ │ │ │ ├── README.md │ │ │ │ └── __tests__/ │ │ │ │ └── test-service.spec.ts │ │ │ └── subscribers/ │ │ │ └── README.md │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ └── next/ │ ├── .gitignore │ ├── app-env.d.ts │ ├── global.css │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages/ │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── account/ │ │ │ ├── addresses.tsx │ │ │ ├── index.tsx │ │ │ ├── login.tsx │ │ │ ├── orders.tsx │ │ │ └── profile.tsx │ │ ├── cart.tsx │ │ ├── checkout.tsx │ │ ├── index.tsx │ │ ├── order/ │ │ │ ├── confirmed/ │ │ │ │ └── [id].tsx │ │ │ └── details/ │ │ │ └── [id].tsx │ │ ├── products/ │ │ │ └── [handle].tsx │ │ ├── store.tsx │ │ └── user/ │ │ └── [id].tsx │ ├── plugins/ │ │ └── swc_plugin_reanimated.wasm │ ├── postcss.config.js │ ├── tailwind.config.js │ └── tsconfig.json ├── package.json ├── packages/ │ └── app/ │ ├── design/ │ │ ├── image.tsx │ │ ├── index.ts │ │ ├── layout.tsx │ │ ├── pressable.tsx │ │ ├── svg.tsx │ │ ├── tailwind/ │ │ │ ├── custom-css-classes.ts │ │ │ └── theme.js │ │ ├── typography.tsx │ │ └── view.tsx │ ├── index.ts │ ├── lib/ │ │ ├── config.ts │ │ ├── constants.ts │ │ ├── context/ │ │ │ ├── account-context.tsx │ │ │ ├── cart-dropdown-context.tsx │ │ │ ├── checkout-context.tsx │ │ │ ├── checkout-context.web.tsx │ │ │ ├── mobile-menu-context.tsx │ │ │ ├── modal-context.tsx │ │ │ ├── product-context.tsx │ │ │ └── store-context.tsx │ │ ├── data/ │ │ │ └── index.ts │ │ ├── hooks/ │ │ │ ├── use-country-options.tsx │ │ │ ├── use-current-width.tsx │ │ │ ├── use-debounce.tsx │ │ │ ├── use-enrich-line-items.tsx │ │ │ ├── use-in-view.tsx │ │ │ ├── use-layout-data.tsx │ │ │ ├── use-previews.tsx │ │ │ ├── use-product-price.tsx │ │ │ ├── use-product.tsx │ │ │ ├── use-toggle-state.tsx │ │ │ └── use-universal-pathname/ │ │ │ ├── index.tsx │ │ │ ├── useUniversalPathname.tsx │ │ │ └── useUniversalPathname.web.tsx │ │ └── util/ │ │ ├── can-buy.ts │ │ ├── get-collection-ids.ts │ │ ├── get-number-of-skeletons.ts │ │ ├── get-precentage-diff.ts │ │ ├── get-product-handles.ts │ │ ├── handle-error.ts │ │ ├── noop.ts │ │ ├── only-unique.ts │ │ ├── prices.ts │ │ ├── regex.ts │ │ ├── repeat.ts │ │ └── transform-product-preview.ts │ ├── modules/ │ │ ├── account/ │ │ │ ├── account-screen.tsx │ │ │ ├── addresses-screen.tsx │ │ │ ├── components/ │ │ │ │ ├── account-info/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── account-nav/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── address-book/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── address-card/ │ │ │ │ │ ├── add-address.native.tsx │ │ │ │ │ ├── add-address.web.tsx │ │ │ │ │ ├── edit-address-modal.native.tsx │ │ │ │ │ ├── edit-address-modal.web.tsx │ │ │ │ │ └── remove-address-dialog.tsx │ │ │ │ ├── detail-container/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── edit-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── login/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── login-details/ │ │ │ │ │ ├── edit-email-modal.tsx │ │ │ │ │ ├── edit-password-modal.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── order-card/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── order-overview/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── overview/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── profile-billing-address/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── profile-email/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── profile-name/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── profile-password/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── profile-phone/ │ │ │ │ │ └── index.tsx │ │ │ │ └── register/ │ │ │ │ └── index.tsx │ │ │ ├── login-screen.tsx │ │ │ ├── orders-screen.tsx │ │ │ ├── profile-screen.tsx │ │ │ └── templates/ │ │ │ ├── account-layout.tsx │ │ │ ├── addresses-template.tsx │ │ │ ├── login-template.tsx │ │ │ ├── order-details-template.tsx │ │ │ ├── orders-template.tsx │ │ │ ├── overview-template.tsx │ │ │ └── profile-template.tsx │ │ ├── cart/ │ │ │ ├── components/ │ │ │ │ ├── empty-cart-message/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── item/ │ │ │ │ │ └── index.tsx │ │ │ │ └── sign-in-prompt/ │ │ │ │ └── index.tsx │ │ │ ├── screen.tsx │ │ │ └── templates/ │ │ │ ├── index.tsx │ │ │ ├── items.tsx │ │ │ └── summary.tsx │ │ ├── checkout/ │ │ │ ├── components/ │ │ │ │ ├── address-select/ │ │ │ │ │ ├── index.native.tsx │ │ │ │ │ └── index.web.tsx │ │ │ │ ├── addresses/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── billing_address/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── checkout-loader/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── country-select/ │ │ │ │ │ ├── index.native.tsx │ │ │ │ │ └── index.web.tsx │ │ │ │ ├── discount-code/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── gift-card/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-container/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-stripe/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-test/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-wrapper/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── index.web.tsx │ │ │ │ ├── shipping/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── shipping-address/ │ │ │ │ │ └── index.tsx │ │ │ │ └── step-container/ │ │ │ │ └── index.tsx │ │ │ ├── screen.tsx │ │ │ └── templates/ │ │ │ ├── checkout-form/ │ │ │ │ └── index.tsx │ │ │ ├── checkout-summary/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── common/ │ │ │ ├── components/ │ │ │ │ ├── button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── cart-totals/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── checkbox/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── connect-form/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── hamburger/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── head/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── input/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── line-item-options/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── line-item-price/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── modal/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── native-select/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── index.web.tsx │ │ │ │ ├── radio/ │ │ │ │ │ └── index.tsx │ │ │ │ └── underline-link/ │ │ │ │ └── index.tsx │ │ │ └── icons/ │ │ │ ├── alert.tsx │ │ │ ├── arrow-right.tsx │ │ │ ├── back.tsx │ │ │ ├── cart.tsx │ │ │ ├── chevron-down.tsx │ │ │ ├── edit.tsx │ │ │ ├── eye-off.tsx │ │ │ ├── eye.tsx │ │ │ ├── fast-delivery.tsx │ │ │ ├── gift.tsx │ │ │ ├── map-pin.tsx │ │ │ ├── minus.tsx │ │ │ ├── package.tsx │ │ │ ├── placeholder-image.tsx │ │ │ ├── plus.tsx │ │ │ ├── refresh.tsx │ │ │ ├── search.tsx │ │ │ ├── sorting.tsx │ │ │ ├── spinner.tsx │ │ │ ├── trash.tsx │ │ │ ├── user.tsx │ │ │ └── x.tsx │ │ ├── home/ │ │ │ ├── components/ │ │ │ │ ├── featured-products/ │ │ │ │ │ └── index.tsx │ │ │ │ └── hero/ │ │ │ │ └── index.tsx │ │ │ └── screen.tsx │ │ ├── layout/ │ │ │ ├── components/ │ │ │ │ ├── cart-dropdown/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── country-select/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── dropdown-menu/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── footer-cta/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── footer-nav/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── medusa-cta/ │ │ │ │ │ └── index.tsx │ │ │ │ └── site-info/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ ├── footer/ │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ └── nav/ │ │ │ └── index.tsx │ │ ├── mobile-menu/ │ │ │ ├── components/ │ │ │ │ ├── container/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── country-menu/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── main-menu/ │ │ │ │ │ └── index.tsx │ │ │ │ └── search-menu/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ └── index.tsx │ │ ├── order/ │ │ │ ├── components/ │ │ │ │ ├── help/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── items/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── order-details/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── order-summary/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── payment-details/ │ │ │ │ │ └── index.tsx │ │ │ │ └── shipping-details/ │ │ │ │ └── index.tsx │ │ │ ├── order-confirmed-screen.tsx │ │ │ ├── order-details-screen.tsx │ │ │ └── templates/ │ │ │ ├── order-completed-template.tsx │ │ │ └── order-details-template.tsx │ │ ├── products/ │ │ │ ├── components/ │ │ │ │ ├── image-gallary/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── infinite-products/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── mobile-actions/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── option-select/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-actions/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-preview/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── product-tabs/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── related-products/ │ │ │ │ │ └── index.tsx │ │ │ │ └── thumbnail/ │ │ │ │ └── index.tsx │ │ │ ├── screen.tsx │ │ │ └── templates/ │ │ │ ├── index.tsx │ │ │ └── product-info/ │ │ │ └── index.tsx │ │ ├── skeletons/ │ │ │ ├── components/ │ │ │ │ ├── skeleton-button/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-cart-item/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-cart-totals/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-code-form/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-line-item/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-order-confirmed-header/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-order-information/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-order-items/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-order-summary/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── skeleton-product-preview/ │ │ │ │ │ └── index.tsx │ │ │ │ └── skeleton-product-tabs/ │ │ │ │ └── index.tsx │ │ │ └── templates/ │ │ │ ├── skeleton-cart-page/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-collection-page/ │ │ │ │ └── index.tsx │ │ │ ├── skeleton-order-confirmed/ │ │ │ │ └── index.tsx │ │ │ └── skeleton-product-page/ │ │ │ └── index.tsx │ │ ├── store/ │ │ │ ├── components/ │ │ │ │ └── refinement-list/ │ │ │ │ └── index.tsx │ │ │ └── store-screen.tsx │ │ └── user/ │ │ └── detail-screen.tsx │ ├── nativewind.d.ts │ ├── package.json │ ├── provider/ │ │ ├── bottom-sheet/ │ │ │ ├── index.tsx │ │ │ └── index.web.tsx │ │ ├── index.tsx │ │ ├── medusa/ │ │ │ └── index.tsx │ │ ├── navigation/ │ │ │ ├── index.tsx │ │ │ └── index.web.tsx │ │ ├── safe-area/ │ │ │ ├── index.tsx │ │ │ ├── index.web.tsx │ │ │ ├── use-safe-area.ts │ │ │ └── use-safe-area.web.ts │ │ └── toasts/ │ │ ├── index.tsx │ │ └── index.web.tsx │ ├── rnw-overrides.d.ts │ ├── tsconfig.json │ └── types/ │ ├── global.ts │ ├── icon.ts │ └── medusa.ts ├── readme.md ├── tsconfig.json └── turbo.json