@alphasquad/saleor-template-advance 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.
Files changed (441) hide show
  1. package/.env.example +57 -0
  2. package/APPLE_PAY_QUICK_START.md +165 -0
  3. package/APPLE_PAY_SETUP.md +331 -0
  4. package/README.md +46 -0
  5. package/SEO_AUDIT_CHECKLIST_STATUS.md +244 -0
  6. package/SEO_AUDIT_REPORT.md +66 -0
  7. package/eslint.config.mjs +16 -0
  8. package/next-env.d.ts +5 -0
  9. package/next.config.ts +109 -0
  10. package/package.json +47 -0
  11. package/postcss.config.mjs +5 -0
  12. package/public/.well-known/apple-developer-merchantid-domain-association +1 -0
  13. package/public/Logo.png +0 -0
  14. package/public/brand-video.mp4 +0 -0
  15. package/public/favicon.ico +0 -0
  16. package/public/file.svg +1 -0
  17. package/public/footer/facebook.tsx +34 -0
  18. package/public/footer/instagram.tsx +27 -0
  19. package/public/footer/mail.tsx +5 -0
  20. package/public/footer/x.tsx +35 -0
  21. package/public/globe.svg +1 -0
  22. package/public/icons/Authorize.net.webp +0 -0
  23. package/public/icons/amex.gif +0 -0
  24. package/public/icons/appIcon.png +0 -0
  25. package/public/icons/discover.gif +0 -0
  26. package/public/icons/master.gif +0 -0
  27. package/public/icons/paypal.png +0 -0
  28. package/public/icons/stripe.png +0 -0
  29. package/public/icons/visa.gif +0 -0
  30. package/public/images/BackgroundNoise.png +0 -0
  31. package/public/images/footer-background.png +0 -0
  32. package/public/next.svg +1 -0
  33. package/public/no-image-avail-large.png +0 -0
  34. package/public/random-car-1.jpeg +0 -0
  35. package/public/random-car-2.png +0 -0
  36. package/public/random-car-3.jpg +0 -0
  37. package/public/random-car-4.jpg +0 -0
  38. package/public/random-car-5.jpg +0 -0
  39. package/public/star.svg +3 -0
  40. package/public/vercel.svg +1 -0
  41. package/public/window.svg +1 -0
  42. package/scripts/seo-audit/generate-checklist.mjs +156 -0
  43. package/src/app/(auth)/account/forgot-password/layout.tsx +16 -0
  44. package/src/app/(auth)/account/forgot-password/page.tsx +135 -0
  45. package/src/app/(auth)/account/login/layout.tsx +16 -0
  46. package/src/app/(auth)/account/login/page.tsx +288 -0
  47. package/src/app/(auth)/account/otp/layout.tsx +16 -0
  48. package/src/app/(auth)/account/otp/page.tsx +108 -0
  49. package/src/app/(auth)/account/register/layout.tsx +16 -0
  50. package/src/app/(auth)/account/register/page.tsx +431 -0
  51. package/src/app/(auth)/account/reset-password/layout.tsx +16 -0
  52. package/src/app/(auth)/account/reset-password/page.tsx +222 -0
  53. package/src/app/[slug]/page.tsx +43 -0
  54. package/src/app/about/loading.tsx +17 -0
  55. package/src/app/about/page.tsx +61 -0
  56. package/src/app/account/address/layout.tsx +15 -0
  57. package/src/app/account/address/page.tsx +166 -0
  58. package/src/app/account/head.tsx +4 -0
  59. package/src/app/account/layout.tsx +62 -0
  60. package/src/app/account/orders/[id]/layout.tsx +17 -0
  61. package/src/app/account/orders/[id]/page.tsx +115 -0
  62. package/src/app/account/orders/components/orderDetailsModal.tsx +410 -0
  63. package/src/app/account/orders/layout.tsx +15 -0
  64. package/src/app/account/orders/page.tsx +146 -0
  65. package/src/app/account/page.tsx +39 -0
  66. package/src/app/account/settings/components/editProfileSuccessModal.tsx +28 -0
  67. package/src/app/account/settings/layout.tsx +15 -0
  68. package/src/app/account/settings/page.tsx +260 -0
  69. package/src/app/api/affirm/check-status/route.ts +94 -0
  70. package/src/app/api/affirm/create-checkout/route.ts +109 -0
  71. package/src/app/api/affirm/get-config/route.ts +108 -0
  72. package/src/app/api/affirm/process-payment/route.ts +244 -0
  73. package/src/app/api/affirm/test-connection/route.ts +45 -0
  74. package/src/app/api/auth/clear/route.ts +16 -0
  75. package/src/app/api/auth/clear-cookies/route.ts +42 -0
  76. package/src/app/api/auth/set/route.ts +47 -0
  77. package/src/app/api/configuration/route.ts +18 -0
  78. package/src/app/api/dynamic-page/[slug]/route.ts +24 -0
  79. package/src/app/api/form-submission/route.ts +237 -0
  80. package/src/app/api/paypal/capture-order/route.ts +303 -0
  81. package/src/app/api/paypal/create-order/route.ts +211 -0
  82. package/src/app/api/paypal/get-config/route.ts +240 -0
  83. package/src/app/api/search-proxy/route.ts +52 -0
  84. package/src/app/authorize-net-success/layout.tsx +19 -0
  85. package/src/app/authorize-net-success/page.tsx +12 -0
  86. package/src/app/authorize-net-success/summary.tsx +486 -0
  87. package/src/app/blog/[slug]/blogContentRenderer.tsx +369 -0
  88. package/src/app/blog/[slug]/layout.tsx +17 -0
  89. package/src/app/blog/[slug]/page.tsx +151 -0
  90. package/src/app/blog/constant.tsx +147 -0
  91. package/src/app/blog/layout.tsx +31 -0
  92. package/src/app/blog/page.tsx +81 -0
  93. package/src/app/brand/[id]/BrandPageClient.tsx +188 -0
  94. package/src/app/brand/[id]/layout.tsx +17 -0
  95. package/src/app/brand/[id]/page.tsx +176 -0
  96. package/src/app/brands/components/brandsListingClient.tsx +97 -0
  97. package/src/app/brands/layout.tsx +31 -0
  98. package/src/app/brands/page.tsx +40 -0
  99. package/src/app/cancellation-policy/page.tsx +53 -0
  100. package/src/app/cart/layout.tsx +19 -0
  101. package/src/app/cart/page.tsx +752 -0
  102. package/src/app/category/[slug]/CategoryPageClient.tsx +377 -0
  103. package/src/app/category/[slug]/layout.tsx +17 -0
  104. package/src/app/category/[slug]/page.tsx +224 -0
  105. package/src/app/category/page.tsx +114 -0
  106. package/src/app/checkout/components/addNewAddressModal.tsx +474 -0
  107. package/src/app/checkout/layout.tsx +19 -0
  108. package/src/app/checkout/page.tsx +3312 -0
  109. package/src/app/components/account/AccountTabs.tsx +40 -0
  110. package/src/app/components/ads/GoogleAdSense.tsx +74 -0
  111. package/src/app/components/analytics/AnalyticsScripts.tsx +78 -0
  112. package/src/app/components/analytics/ConditionalGTMNoscript.tsx +24 -0
  113. package/src/app/components/analytics/ConditionalGoogleAnalytics.tsx +16 -0
  114. package/src/app/components/ancillary/AncillaryContent.tsx +7 -0
  115. package/src/app/components/auth/TokenExpirationHandler.tsx +8 -0
  116. package/src/app/components/blog/BlogList.tsx +112 -0
  117. package/src/app/components/checkout/AddressInformationSection.tsx +34 -0
  118. package/src/app/components/checkout/AddressManagement.tsx +571 -0
  119. package/src/app/components/checkout/CheckoutHeader.tsx +51 -0
  120. package/src/app/components/checkout/CheckoutQuestions.tsx +454 -0
  121. package/src/app/components/checkout/CheckoutTermsModal.tsx +81 -0
  122. package/src/app/components/checkout/ContactDetailsSection.tsx +52 -0
  123. package/src/app/components/checkout/DealerShippingSection.tsx +359 -0
  124. package/src/app/components/checkout/DeliveryMethodSection.tsx +249 -0
  125. package/src/app/components/checkout/OrderSummary.tsx +386 -0
  126. package/src/app/components/checkout/TermsContentRenderer.tsx +147 -0
  127. package/src/app/components/checkout/WillCallSection.tsx +133 -0
  128. package/src/app/components/checkout/affirmPayment.tsx +383 -0
  129. package/src/app/components/checkout/checkoutProcessingModal.tsx +96 -0
  130. package/src/app/components/checkout/googlePayButton.tsx +334 -0
  131. package/src/app/components/checkout/paymentStep.tsx +180 -0
  132. package/src/app/components/checkout/paypalPayment.tsx +1083 -0
  133. package/src/app/components/checkout/saleorNativePayment.tsx +1758 -0
  134. package/src/app/components/dynamicPage/DynamicPageRenderer.tsx +13 -0
  135. package/src/app/components/dynamicPage/HtmlWidgetRenderer.tsx +144 -0
  136. package/src/app/components/filtersCollapsible/index.tsx +365 -0
  137. package/src/app/components/globalSearch/index.tsx +423 -0
  138. package/src/app/components/layout/cartDropDown.tsx +628 -0
  139. package/src/app/components/layout/components/FooterNewsletter.tsx +21 -0
  140. package/src/app/components/layout/footer.tsx +283 -0
  141. package/src/app/components/layout/header/accountMenuDropdown.tsx +53 -0
  142. package/src/app/components/layout/header/components/CartBadge.tsx +18 -0
  143. package/src/app/components/layout/header/components/LoadingState.tsx +17 -0
  144. package/src/app/components/layout/header/components/MenuItemDropdown.tsx +124 -0
  145. package/src/app/components/layout/header/components/MobileNavbar.tsx +123 -0
  146. package/src/app/components/layout/header/components/NavbarActions.tsx +125 -0
  147. package/src/app/components/layout/header/components/NavbarBrand.tsx +29 -0
  148. package/src/app/components/layout/header/components/NavigationLinks.tsx +131 -0
  149. package/src/app/components/layout/header/hamMenuSlide.tsx +318 -0
  150. package/src/app/components/layout/header/header.tsx +44 -0
  151. package/src/app/components/layout/header/hooks/useDropdown.ts +45 -0
  152. package/src/app/components/layout/header/hooks/useNavbarData.ts +138 -0
  153. package/src/app/components/layout/header/hooks/useNavbarState.ts +66 -0
  154. package/src/app/components/layout/header/megaMenuDropdown.tsx +116 -0
  155. package/src/app/components/layout/header/navBar.tsx +121 -0
  156. package/src/app/components/layout/header/search.tsx +418 -0
  157. package/src/app/components/layout/header/styles/navbarStyles.ts +27 -0
  158. package/src/app/components/layout/header/topBar.tsx +214 -0
  159. package/src/app/components/layout/joinNewsletterForm/index.tsx +72 -0
  160. package/src/app/components/layout/mobileAccordian/index.tsx +92 -0
  161. package/src/app/components/layout/paymentMethods.tsx +75 -0
  162. package/src/app/components/layout/rootLayout.tsx +23 -0
  163. package/src/app/components/layout/siteInfo.tsx +103 -0
  164. package/src/app/components/layout/socialLinks.tsx +65 -0
  165. package/src/app/components/newsletterSection/emailListSection.tsx +224 -0
  166. package/src/app/components/newsletterSection/emailSectionServer.tsx +8 -0
  167. package/src/app/components/providers/ApolloWrapper.tsx +12 -0
  168. package/src/app/components/providers/AppConfigurationProvider.tsx +108 -0
  169. package/src/app/components/providers/GoogleAnalyticsProvider.tsx +149 -0
  170. package/src/app/components/providers/GoogleTagManagerProvider.tsx +31 -0
  171. package/src/app/components/providers/RecaptchaProvider.tsx +18 -0
  172. package/src/app/components/providers/ServerAppConfigurationProvider.tsx +133 -0
  173. package/src/app/components/providers/YMMStatusProvider.tsx +15 -0
  174. package/src/app/components/reuseableUI/AboutUs.tsx +115 -0
  175. package/src/app/components/reuseableUI/AddToCartClient.tsx +125 -0
  176. package/src/app/components/reuseableUI/EditorJsRenderer.tsx +219 -0
  177. package/src/app/components/reuseableUI/HeroSectionsearchByVehicle.tsx +188 -0
  178. package/src/app/components/reuseableUI/ImageWithFallback.tsx +41 -0
  179. package/src/app/components/reuseableUI/Toast.tsx +101 -0
  180. package/src/app/components/reuseableUI/blogCard.tsx +52 -0
  181. package/src/app/components/reuseableUI/brandCard.tsx +68 -0
  182. package/src/app/components/reuseableUI/breadcrumb.tsx +38 -0
  183. package/src/app/components/reuseableUI/categoryCard.tsx +37 -0
  184. package/src/app/components/reuseableUI/categorySkeleton.tsx +31 -0
  185. package/src/app/components/reuseableUI/commonButton.tsx +48 -0
  186. package/src/app/components/reuseableUI/defaultInputField/index.tsx +84 -0
  187. package/src/app/components/reuseableUI/emptyState.tsx +29 -0
  188. package/src/app/components/reuseableUI/errorTag.tsx +15 -0
  189. package/src/app/components/reuseableUI/heading/index.tsx +20 -0
  190. package/src/app/components/reuseableUI/input.tsx +117 -0
  191. package/src/app/components/reuseableUI/listCard.tsx +137 -0
  192. package/src/app/components/reuseableUI/loadingUI.tsx +12 -0
  193. package/src/app/components/reuseableUI/modalLayout.tsx +76 -0
  194. package/src/app/components/reuseableUI/newsletter/newsletterClient.tsx +622 -0
  195. package/src/app/components/reuseableUI/newsletter/newslettersHomeModal.tsx +68 -0
  196. package/src/app/components/reuseableUI/offerCard.tsx +42 -0
  197. package/src/app/components/reuseableUI/passwordRules/passwordRules.tsx +56 -0
  198. package/src/app/components/reuseableUI/primaryButton/index.tsx +34 -0
  199. package/src/app/components/reuseableUI/productCard.tsx +118 -0
  200. package/src/app/components/reuseableUI/productSkeleton.tsx +34 -0
  201. package/src/app/components/reuseableUI/searchByVehicle.tsx +187 -0
  202. package/src/app/components/reuseableUI/secondaryButton/index.tsx +34 -0
  203. package/src/app/components/reuseableUI/section.tsx +20 -0
  204. package/src/app/components/reuseableUI/select/index.tsx +98 -0
  205. package/src/app/components/reuseableUI/skeletonLoader.tsx +117 -0
  206. package/src/app/components/reuseableUI/statusTag.tsx +24 -0
  207. package/src/app/components/reuseableUI/tags/saleTag.tsx +19 -0
  208. package/src/app/components/reuseableUI/testimonialCard.tsx +93 -0
  209. package/src/app/components/richText/EditorRenderer.tsx +318 -0
  210. package/src/app/components/search/HierarchicalCategoryFilter.tsx +155 -0
  211. package/src/app/components/search/SearchFilters.tsx +155 -0
  212. package/src/app/components/search/YMMSearchSidebar.tsx +187 -0
  213. package/src/app/components/seo/ServerProductCard.tsx +91 -0
  214. package/src/app/components/seo/ServerProductGrid.tsx +45 -0
  215. package/src/app/components/shop/CategoryFilter.tsx +184 -0
  216. package/src/app/components/shop/ItemsPerPageSelect.tsx +69 -0
  217. package/src/app/components/shop/ItemsPerPageSelectClient.tsx +58 -0
  218. package/src/app/components/shop/MobileFilters.tsx +103 -0
  219. package/src/app/components/shop/ProductGridSkeleton.tsx +16 -0
  220. package/src/app/components/shop/ProductsGrid.tsx +230 -0
  221. package/src/app/components/shop/SearchFilter.tsx +218 -0
  222. package/src/app/components/shop/SearchFilterClient.tsx +122 -0
  223. package/src/app/components/shop/SearchLoadingOverlay.tsx +32 -0
  224. package/src/app/components/shop/ShopMobileFilters.tsx +205 -0
  225. package/src/app/components/showroom/VehicleSearchDropdowns.tsx +187 -0
  226. package/src/app/components/showroom/brandsSwiper.tsx +49 -0
  227. package/src/app/components/showroom/brandsSwiperClient copy.tsx +93 -0
  228. package/src/app/components/showroom/brandsSwiperClient.tsx +122 -0
  229. package/src/app/components/showroom/brandsSwiperServer.tsx +42 -0
  230. package/src/app/components/showroom/bundleProducts.tsx +120 -0
  231. package/src/app/components/showroom/categoryGrid.tsx +51 -0
  232. package/src/app/components/showroom/categoryGridServer.tsx +45 -0
  233. package/src/app/components/showroom/categorySwiper.tsx +115 -0
  234. package/src/app/components/showroom/featureStrip.tsx +139 -0
  235. package/src/app/components/showroom/offersSwiper.tsx +181 -0
  236. package/src/app/components/showroom/productGrid.tsx +56 -0
  237. package/src/app/components/showroom/productSwiper.tsx +119 -0
  238. package/src/app/components/showroom/promotion-slider.tsx +138 -0
  239. package/src/app/components/showroom/promotion.tsx +207 -0
  240. package/src/app/components/showroom/promotionsSwiper.tsx +174 -0
  241. package/src/app/components/showroom/showroomHeroCarousel.tsx +141 -0
  242. package/src/app/components/showroom/testimonialsGrid.tsx +106 -0
  243. package/src/app/components/skeletons/ContentSkeleton.tsx +14 -0
  244. package/src/app/components/sortDropdown/index.tsx +116 -0
  245. package/src/app/components/tertiaryButton/index.tsx +25 -0
  246. package/src/app/components/theme/theme-provider.tsx +82 -0
  247. package/src/app/contact/layout.tsx +32 -0
  248. package/src/app/contact/page.tsx +591 -0
  249. package/src/app/content/[slug]/layout.tsx +17 -0
  250. package/src/app/content/[slug]/page.tsx +159 -0
  251. package/src/app/content/layout.tsx +31 -0
  252. package/src/app/content/page.tsx +88 -0
  253. package/src/app/core-policies/page.tsx +55 -0
  254. package/src/app/discounts/page.tsx +54 -0
  255. package/src/app/frequently-asked-questions/page.tsx +57 -0
  256. package/src/app/globals.css +440 -0
  257. package/src/app/hooks/useDealerLocations.ts +259 -0
  258. package/src/app/hooks/useGTMEngagement.ts +71 -0
  259. package/src/app/hooks/useGoogleAnalytics.ts +145 -0
  260. package/src/app/layout.tsx +149 -0
  261. package/src/app/not-found.tsx +31 -0
  262. package/src/app/order-confirmation/layout.tsx +19 -0
  263. package/src/app/order-confirmation/page.tsx +12 -0
  264. package/src/app/order-confirmation/summary.tsx +1775 -0
  265. package/src/app/page.tsx +194 -0
  266. package/src/app/privacy-policy/loading.tsx +17 -0
  267. package/src/app/privacy-policy/page.tsx +56 -0
  268. package/src/app/product/[id]/ProductDetailClient.tsx +2448 -0
  269. package/src/app/product/[id]/components/itemInquiryModal.tsx +461 -0
  270. package/src/app/product/[id]/layout.tsx +116 -0
  271. package/src/app/product/[id]/page.tsx +200 -0
  272. package/src/app/product/layout.tsx +15 -0
  273. package/src/app/products/all/AllProductsClient.tsx +743 -0
  274. package/src/app/products/all/page.tsx +176 -0
  275. package/src/app/products/components/shopEmptyState.tsx +29 -0
  276. package/src/app/request-return/layout.tsx +36 -0
  277. package/src/app/request-return/page.tsx +597 -0
  278. package/src/app/robots.txt/route.ts +27 -0
  279. package/src/app/search/layout.tsx +16 -0
  280. package/src/app/search/page.tsx +736 -0
  281. package/src/app/shipping-returns/page.tsx +60 -0
  282. package/src/app/site-map/layout.tsx +33 -0
  283. package/src/app/site-map/page.tsx +113 -0
  284. package/src/app/sitemap-index.xml/route.ts +20 -0
  285. package/src/app/sitemap.ts +10 -0
  286. package/src/app/terms-and-conditions/loading.tsx +17 -0
  287. package/src/app/terms-and-conditions/page.tsx +56 -0
  288. package/src/app/utils/appConfiguration.ts +327 -0
  289. package/src/app/utils/branding.ts +52 -0
  290. package/src/app/utils/configurationService.ts +202 -0
  291. package/src/app/utils/constant.tsx +242 -0
  292. package/src/app/utils/editorJsUtils.tsx +249 -0
  293. package/src/app/utils/functions.ts +146 -0
  294. package/src/app/utils/googleAnalytics.ts +168 -0
  295. package/src/app/utils/googleTagManager.ts +475 -0
  296. package/src/app/utils/ipDetection.ts +270 -0
  297. package/src/app/utils/serverConfigurationService.ts +209 -0
  298. package/src/app/utils/svgs/GridIcon.tsx +45 -0
  299. package/src/app/utils/svgs/account/myAccount/listDotIcon.tsx +3 -0
  300. package/src/app/utils/svgs/account/myAccount/tickIcon.tsx +10 -0
  301. package/src/app/utils/svgs/account/orderHistory/InfoIcon.tsx +49 -0
  302. package/src/app/utils/svgs/arrowDownIcon.tsx +17 -0
  303. package/src/app/utils/svgs/arrowIcon.tsx +25 -0
  304. package/src/app/utils/svgs/arrowUpIcon.tsx +16 -0
  305. package/src/app/utils/svgs/brandsSearchIcon.tsx +25 -0
  306. package/src/app/utils/svgs/cart/cartIcon.tsx +31 -0
  307. package/src/app/utils/svgs/cart/plusIcon.tsx +13 -0
  308. package/src/app/utils/svgs/cart/subtractIcon.tsx +13 -0
  309. package/src/app/utils/svgs/cart/successTickIcon.tsx +14 -0
  310. package/src/app/utils/svgs/chevronDownIcon.tsx +21 -0
  311. package/src/app/utils/svgs/closeEyeIcon.tsx +47 -0
  312. package/src/app/utils/svgs/crossIcon.tsx +25 -0
  313. package/src/app/utils/svgs/eyeIcon.tsx +29 -0
  314. package/src/app/utils/svgs/featureTag.tsx +20 -0
  315. package/src/app/utils/svgs/filterIcon.tsx +3 -0
  316. package/src/app/utils/svgs/globleIcon.tsx +41 -0
  317. package/src/app/utils/svgs/infoIcon.tsx +34 -0
  318. package/src/app/utils/svgs/listIcon.tsx +50 -0
  319. package/src/app/utils/svgs/logOutIcon.tsx +35 -0
  320. package/src/app/utils/svgs/menuIcon.tsx +8 -0
  321. package/src/app/utils/svgs/minusIcon.tsx +18 -0
  322. package/src/app/utils/svgs/newsletterIcon.tsx +19 -0
  323. package/src/app/utils/svgs/noDataFoundIcon-.tsx +26 -0
  324. package/src/app/utils/svgs/noProductFoundIcon.tsx +43 -0
  325. package/src/app/utils/svgs/passwordIcons/errorIcon.tsx +31 -0
  326. package/src/app/utils/svgs/passwordIcons/successIcon.tsx +24 -0
  327. package/src/app/utils/svgs/paymentProcessingIcons/hourglassIcon.tsx +43 -0
  328. package/src/app/utils/svgs/paymentProcessingIcons/modalCrossIcon.tsx +23 -0
  329. package/src/app/utils/svgs/paymentProcessingIcons/paymentFailedIcon.tsx +47 -0
  330. package/src/app/utils/svgs/pencilIcon.tsx +11 -0
  331. package/src/app/utils/svgs/plusIcon.tsx +25 -0
  332. package/src/app/utils/svgs/productInquiryIcon.tsx +40 -0
  333. package/src/app/utils/svgs/searchIcon.tsx +31 -0
  334. package/src/app/utils/svgs/shoppingCart.tsx +32 -0
  335. package/src/app/utils/svgs/spinnerIcon.tsx +22 -0
  336. package/src/app/utils/svgs/spinnerLoadingIcon.tsx +26 -0
  337. package/src/app/utils/svgs/successTickIcon.tsx +40 -0
  338. package/src/app/utils/svgs/swiperArrowIconLeft.tsx +18 -0
  339. package/src/app/utils/svgs/swiperArrowIconRight.tsx +18 -0
  340. package/src/app/utils/svgs/userProfileIcon.tsx +31 -0
  341. package/src/app/utils/svgs/warningCircleIcon.tsx +15 -0
  342. package/src/app/warranty/constant.tsx +63 -0
  343. package/src/app/warranty/loading.tsx +17 -0
  344. package/src/app/warranty/page.tsx +56 -0
  345. package/src/graphql/client.ts +288 -0
  346. package/src/graphql/mutations/accountAddressCreate.ts +56 -0
  347. package/src/graphql/mutations/accountAddressDelete.ts +23 -0
  348. package/src/graphql/mutations/accountAddressUpdate.ts +55 -0
  349. package/src/graphql/mutations/accountSetDefaultAddress.ts +32 -0
  350. package/src/graphql/mutations/accountUpdate.ts +34 -0
  351. package/src/graphql/mutations/changePassword.ts +25 -0
  352. package/src/graphql/mutations/checkout.ts +117 -0
  353. package/src/graphql/mutations/checkoutAddVoucher.ts +63 -0
  354. package/src/graphql/mutations/checkoutComplete.ts +79 -0
  355. package/src/graphql/mutations/checkoutCreate.ts +131 -0
  356. package/src/graphql/mutations/checkoutCustomerAttach.ts +50 -0
  357. package/src/graphql/mutations/checkoutEmailUpdate.ts +15 -0
  358. package/src/graphql/mutations/checkoutLineMetadataUpdate.ts +52 -0
  359. package/src/graphql/mutations/checkoutPaymentCreate.ts +82 -0
  360. package/src/graphql/mutations/paymentGatewayInitialize.ts +58 -0
  361. package/src/graphql/mutations/registerAccount.ts +65 -0
  362. package/src/graphql/mutations/requestPasswordReset.ts +32 -0
  363. package/src/graphql/mutations/setPassword.ts +49 -0
  364. package/src/graphql/mutations/signIn.ts +50 -0
  365. package/src/graphql/mutations/tokenRefresh.ts +19 -0
  366. package/src/graphql/mutations/updateCheckoutMetadata.ts +49 -0
  367. package/src/graphql/mutations/updateProfile.ts +18 -0
  368. package/src/graphql/mutations/willCallDeliveryMethod.ts +81 -0
  369. package/src/graphql/queries/checkout.ts +168 -0
  370. package/src/graphql/queries/findProductByOldSlug.ts +58 -0
  371. package/src/graphql/queries/getAboutPage.ts +24 -0
  372. package/src/graphql/queries/getAboutPageId.ts +9 -0
  373. package/src/graphql/queries/getAboutUs.ts +38 -0
  374. package/src/graphql/queries/getAddressInformation.ts +38 -0
  375. package/src/graphql/queries/getAllCategories.ts +41 -0
  376. package/src/graphql/queries/getAllCategoriesTree.ts +67 -0
  377. package/src/graphql/queries/getAllCategoriesWithProducts.ts +29 -0
  378. package/src/graphql/queries/getAllCollectionsWithProducts.ts +16 -0
  379. package/src/graphql/queries/getBlogs.ts +222 -0
  380. package/src/graphql/queries/getBrands.ts +17 -0
  381. package/src/graphql/queries/getBundles.ts +43 -0
  382. package/src/graphql/queries/getCategories.ts +20 -0
  383. package/src/graphql/queries/getChannels.ts +77 -0
  384. package/src/graphql/queries/getCheckoutQuestions.ts +115 -0
  385. package/src/graphql/queries/getCheckoutTermsAndConditions.ts +37 -0
  386. package/src/graphql/queries/getContactPage.ts +117 -0
  387. package/src/graphql/queries/getContentPage.ts +191 -0
  388. package/src/graphql/queries/getDiscountOffers.ts +18 -0
  389. package/src/graphql/queries/getDynamicPageBySlug.ts +251 -0
  390. package/src/graphql/queries/getFeaturedProducts.ts +48 -0
  391. package/src/graphql/queries/getHeroMetadata.ts +23 -0
  392. package/src/graphql/queries/getMenuBySlug.ts +84 -0
  393. package/src/graphql/queries/getMyProfile.ts +23 -0
  394. package/src/graphql/queries/getNewsletter.ts +122 -0
  395. package/src/graphql/queries/getNewsletterPage.ts +111 -0
  396. package/src/graphql/queries/getPageBySlug.ts +52 -0
  397. package/src/graphql/queries/getPageTypeId.ts +27 -0
  398. package/src/graphql/queries/getPaymentMethods.ts +61 -0
  399. package/src/graphql/queries/getProducts.ts +78 -0
  400. package/src/graphql/queries/getPromotions.ts +24 -0
  401. package/src/graphql/queries/getRequestReturnPage.ts +121 -0
  402. package/src/graphql/queries/getSiteInfo.ts +54 -0
  403. package/src/graphql/queries/getSocialLinks.ts +52 -0
  404. package/src/graphql/queries/getTestimonials.ts +25 -0
  405. package/src/graphql/queries/getUserWithCheckout.ts +27 -0
  406. package/src/graphql/queries/getVehicleMakes.ts +21 -0
  407. package/src/graphql/queries/getVehicleModels.ts +21 -0
  408. package/src/graphql/queries/getVehicleYears.ts +21 -0
  409. package/src/graphql/queries/meAddresses.ts +56 -0
  410. package/src/graphql/queries/myOrders.ts +37 -0
  411. package/src/graphql/queries/orderDetail.ts +231 -0
  412. package/src/graphql/queries/productDetailsById.ts +197 -0
  413. package/src/graphql/queries/productInquiry.ts +115 -0
  414. package/src/graphql/queries/productsByCategoriesAndCollections.ts +39 -0
  415. package/src/graphql/queries/willCallCollectionPoints.ts +55 -0
  416. package/src/graphql/server-client.ts +54 -0
  417. package/src/graphql/types/categories.ts +9 -0
  418. package/src/graphql/types/checkout.ts +168 -0
  419. package/src/graphql/types/offer.ts +12 -0
  420. package/src/graphql/types/product.ts +44 -0
  421. package/src/hooks/scrollPageTop.ts +9 -0
  422. package/src/hooks/serverNavbarData.ts +79 -0
  423. package/src/hooks/useCartSync.ts +24 -0
  424. package/src/hooks/useRecaptcha.ts +33 -0
  425. package/src/hooks/useTokenExpiration.ts +81 -0
  426. package/src/hooks/useVehicleData.ts +346 -0
  427. package/src/lib/api/kount.ts +165 -0
  428. package/src/lib/api/shop.ts +1445 -0
  429. package/src/lib/saleor/getSaleorApiUrl.ts +25 -0
  430. package/src/lib/schema.ts +303 -0
  431. package/src/lib/seo/extractTextFromEditorJs.ts +58 -0
  432. package/src/lib/seo/site.ts +10 -0
  433. package/src/lib/urls/normalizeInternalUrl.ts +53 -0
  434. package/src/middleware.ts +134 -0
  435. package/src/sitemaps/README.md +105 -0
  436. package/src/sitemaps/dynamic-pages-sitemap.ts +247 -0
  437. package/src/sitemaps/sitemap-index.ts +21 -0
  438. package/src/sitemaps/static-pages-sitemap.ts +36 -0
  439. package/src/store/useGlobalStore.tsx +1656 -0
  440. package/src/types/global.d.ts +148 -0
  441. package/tsconfig.json +27 -0
@@ -0,0 +1,47 @@
1
+ export const PaymentFailedIcon = (
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width={80}
5
+ height={80}
6
+ viewBox="0 0 80 80"
7
+ fill="none"
8
+ >
9
+ <rect width={80} height={80} rx={40} fill="#DC2626" fillOpacity="0.1" />
10
+ <rect
11
+ x="0.25"
12
+ y="0.25"
13
+ width="79.5"
14
+ height="79.5"
15
+ rx="39.75"
16
+ stroke="#DC2626"
17
+ strokeOpacity="0.6"
18
+ strokeWidth="0.5"
19
+ />
20
+ <path
21
+ opacity="0.2"
22
+ d="M40 55C48.2843 55 55 48.2843 55 40C55 31.7157 48.2843 25 40 25C31.7157 25 25 31.7157 25 40C25 48.2843 31.7157 55 40 55Z"
23
+ fill="#DC2626"
24
+ />
25
+ <path
26
+ d="M45 35L35 45"
27
+ stroke="#DC2626"
28
+ strokeWidth="2.5"
29
+ strokeLinecap="round"
30
+ strokeLinejoin="round"
31
+ />
32
+ <path
33
+ d="M35 35L45 45"
34
+ stroke="#DC2626"
35
+ strokeWidth="2.5"
36
+ strokeLinecap="round"
37
+ strokeLinejoin="round"
38
+ />
39
+ <path
40
+ d="M40 55C48.2843 55 55 48.2843 55 40C55 31.7157 48.2843 25 40 25C31.7157 25 25 31.7157 25 40C25 48.2843 31.7157 55 40 55Z"
41
+ stroke="#DC2626"
42
+ strokeWidth="2.5"
43
+ strokeLinecap="round"
44
+ strokeLinejoin="round"
45
+ />
46
+ </svg>
47
+ );
@@ -0,0 +1,11 @@
1
+ export const PencilIcon = <svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clipPath="url(#clip0_1444_102080)">
3
+ <path d="M7.24141 16.8751H3.75C3.58424 16.8751 3.42527 16.8093 3.30806 16.692C3.19085 16.5748 3.125 16.4159 3.125 16.2501V12.7587C3.12508 12.5932 3.19082 12.4344 3.30781 12.3173L12.9422 2.68291C13.0594 2.56579 13.2183 2.5 13.384 2.5C13.5497 2.5 13.7086 2.56579 13.8258 2.68291L17.3172 6.17198C17.4343 6.28917 17.5001 6.44808 17.5001 6.61377C17.5001 6.77946 17.4343 6.93837 17.3172 7.05557L7.68281 16.6923C7.56569 16.8093 7.40695 16.875 7.24141 16.8751Z" stroke="currentColor" strokeWidth="1.25" strokeLinecap="round" strokeLinejoin="round" />
4
+ <path d="M10.625 5L15 9.375" stroke="currentColor" strokeWidth="1.25" strokeLinecap="round" strokeLinejoin="round" />
5
+ </g>
6
+ <defs>
7
+ <clipPath id="clip0_1444_102080">
8
+ <rect width={20} height={20} fill="white" />
9
+ </clipPath>
10
+ </defs>
11
+ </svg>
@@ -0,0 +1,25 @@
1
+ export const PlusIcon = (
2
+ <svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <g clipPath="url(#clip0_1480_106351)">
4
+ <path
5
+ d="M3.125 10H16.875"
6
+ stroke="currentColor"
7
+ strokeWidth="1.25"
8
+ strokeLinecap="round"
9
+ strokeLinejoin="round"
10
+ />
11
+ <path
12
+ d="M10 3.125V16.875"
13
+ stroke="currentColor"
14
+ strokeWidth="1.25"
15
+ strokeLinecap="round"
16
+ strokeLinejoin="round"
17
+ />
18
+ </g>
19
+ <defs>
20
+ <clipPath id="clip0_1480_106351">
21
+ <rect width={20} height={20} fill="white" />
22
+ </clipPath>
23
+ </defs>
24
+ </svg>
25
+ );
@@ -0,0 +1,40 @@
1
+ export const ProductInquiryIcon = (
2
+ <svg
3
+ width="20"
4
+ height="20"
5
+ viewBox="0 0 20 20"
6
+ fill="none"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ >
9
+ <g clipPath="url(#clip0_2116_69868)">
10
+ <path
11
+ opacity="0.2"
12
+ d="M10 17.5C14.1421 17.5 17.5 14.1421 17.5 10C17.5 5.85786 14.1421 2.5 10 2.5C5.85786 2.5 2.5 5.85786 2.5 10C2.5 14.1421 5.85786 17.5 10 17.5Z"
13
+ fill="currentColor"
14
+ />
15
+ <path
16
+ d="M9.375 9.375C9.54076 9.375 9.69973 9.44085 9.81694 9.55806C9.93415 9.67527 10 9.83424 10 10V13.125C10 13.2908 10.0658 13.4497 10.1831 13.5669C10.3003 13.6842 10.4592 13.75 10.625 13.75"
17
+ stroke="currentColor"
18
+ strokeWidth="1.25"
19
+ strokeLinecap="round"
20
+ strokeLinejoin="round"
21
+ />
22
+ <path
23
+ d="M10 17.5C14.1421 17.5 17.5 14.1421 17.5 10C17.5 5.85786 14.1421 2.5 10 2.5C5.85786 2.5 2.5 5.85786 2.5 10C2.5 14.1421 5.85786 17.5 10 17.5Z"
24
+ stroke="currentColor"
25
+ strokeWidth="1.25"
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ />
29
+ <path
30
+ d="M9.6875 7.5C10.2053 7.5 10.625 7.08027 10.625 6.5625C10.625 6.04473 10.2053 5.625 9.6875 5.625C9.16973 5.625 8.75 6.04473 8.75 6.5625C8.75 7.08027 9.16973 7.5 9.6875 7.5Z"
31
+ fill="currentColor"
32
+ />
33
+ </g>
34
+ <defs>
35
+ <clipPath id="clip0_2116_69868">
36
+ <rect width="20" height="20" fill="white" />
37
+ </clipPath>
38
+ </defs>
39
+ </svg>
40
+ );
@@ -0,0 +1,31 @@
1
+ export const SearchIcon = (
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width={20}
5
+ height={20}
6
+ viewBox="0 0 20 20"
7
+ fill="none"
8
+ >
9
+ <g clipPath="url(#clip0_476_23728)">
10
+ <path
11
+ d="M8.75 15C12.2018 15 15 12.2018 15 8.75C15 5.29822 12.2018 2.5 8.75 2.5C5.29822 2.5 2.5 5.29822 2.5 8.75C2.5 12.2018 5.29822 15 8.75 15Z"
12
+ stroke="currentColor"
13
+ strokeWidth="1.25"
14
+ strokeLinecap="round"
15
+ strokeLinejoin="round"
16
+ />
17
+ <path
18
+ d="M13.1696 13.1696L17.5 17.5"
19
+ stroke="currentColor"
20
+ strokeWidth="1.25"
21
+ strokeLinecap="round"
22
+ strokeLinejoin="round"
23
+ />
24
+ </g>
25
+ <defs>
26
+ <clipPath id="clip0_476_23728">
27
+ <rect width={20} height={20} fill="white" />
28
+ </clipPath>
29
+ </defs>
30
+ </svg>
31
+ );
@@ -0,0 +1,32 @@
1
+ export const ShoppingCart = (
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width={20}
5
+ height={20}
6
+ viewBox="0 0 20 20"
7
+ fill="none"
8
+ >
9
+ <g clipPath="url(#clip0_412_11594)">
10
+ <path
11
+ d="M6.875 18.125C7.56536 18.125 8.125 17.5654 8.125 16.875C8.125 16.1846 7.56536 15.625 6.875 15.625C6.18464 15.625 5.625 16.1846 5.625 16.875C5.625 17.5654 6.18464 18.125 6.875 18.125Z"
12
+ fill="currentColor"
13
+ />
14
+ <path
15
+ d="M15 18.125C15.6904 18.125 16.25 17.5654 16.25 16.875C16.25 16.1846 15.6904 15.625 15 15.625C14.3096 15.625 13.75 16.1846 13.75 16.875C13.75 17.5654 14.3096 18.125 15 18.125Z"
16
+ fill="currentColor"
17
+ />
18
+ <path
19
+ d="M1.25 2.5H3.125L5.99609 12.8344C6.06916 13.0976 6.22643 13.3296 6.44384 13.4949C6.66126 13.6603 6.92685 13.7499 7.2 13.75H14.9219C15.1952 13.7501 15.4609 13.6605 15.6785 13.4952C15.8961 13.3298 16.0535 13.0977 16.1266 12.8344L18.125 5.625H3.99297"
20
+ stroke="currentColor"
21
+ strokeWidth="1.25"
22
+ strokeLinecap="round"
23
+ strokeLinejoin="round"
24
+ />
25
+ </g>
26
+ <defs>
27
+ <clipPath id="clip0_412_11594">
28
+ <rect width={20} height={20} fill="white" />
29
+ </clipPath>
30
+ </defs>
31
+ </svg>
32
+ );
@@ -0,0 +1,22 @@
1
+ export const SpinnerIcon = (
2
+ <svg
3
+ className="animate-spin size-6 "
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ fill="none"
6
+ viewBox="0 0 24 24"
7
+ >
8
+ <circle
9
+ className="opacity-25"
10
+ cx="12"
11
+ cy="12"
12
+ r="10"
13
+ stroke="currentColor"
14
+ strokeWidth="4"
15
+ ></circle>
16
+ <path
17
+ className="opacity-75"
18
+ fill="currentColor"
19
+ d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
20
+ ></path>
21
+ </svg>
22
+ )
@@ -0,0 +1,26 @@
1
+ import { cn } from "../functions"
2
+
3
+ export const SpinnerLoadingIcon = ({ className }: { className?: string }) => {
4
+ return (
5
+ <svg
6
+ className={cn('animate-spin size-4 text-white', className)}
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ fill="none"
9
+ viewBox="0 0 24 24"
10
+ >
11
+ <circle
12
+ className="opacity-25"
13
+ cx="12"
14
+ cy="12"
15
+ r="10"
16
+ stroke="currentColor"
17
+ strokeWidth="4"
18
+ />
19
+ <path
20
+ className="opacity-75"
21
+ fill="currentColor"
22
+ d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
23
+ />
24
+ </svg>
25
+ )
26
+ }
@@ -0,0 +1,40 @@
1
+ export const SuccessTickIcon = (
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width={80}
5
+ height={80}
6
+ viewBox="0 0 80 80"
7
+ fill="none"
8
+ >
9
+ <rect width={80} height={80} rx={40} fill="#16A34A" fillOpacity="0.1" />
10
+ <rect
11
+ x="0.25"
12
+ y="0.25"
13
+ width="79.5"
14
+ height="79.5"
15
+ rx="39.75"
16
+ stroke="#16A34A"
17
+ strokeOpacity="0.6"
18
+ strokeWidth="0.5"
19
+ />
20
+ <path
21
+ opacity="0.2"
22
+ d="M40 55C48.2843 55 55 48.2843 55 40C55 31.7157 48.2843 25 40 25C31.7157 25 25 31.7157 25 40C25 48.2843 31.7157 55 40 55Z"
23
+ fill="#16A34A"
24
+ />
25
+ <path
26
+ d="M33.75 41.25L37.5 45L46.25 36.25"
27
+ stroke="#16A34A"
28
+ strokeWidth="2.5"
29
+ strokeLinecap="round"
30
+ strokeLinejoin="round"
31
+ />
32
+ <path
33
+ d="M40 55C48.2843 55 55 48.2843 55 40C55 31.7157 48.2843 25 40 25C31.7157 25 25 31.7157 25 40C25 48.2843 31.7157 55 40 55Z"
34
+ stroke="#16A34A"
35
+ strokeWidth="2.5"
36
+ strokeLinecap="round"
37
+ strokeLinejoin="round"
38
+ />
39
+ </svg>
40
+ );
@@ -0,0 +1,18 @@
1
+ export const SwiperArrowIconLeft = (
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
3
+ <g clipPath="url(#clip0_441_13496)">
4
+ <path
5
+ d="M15 19.5L7.5 12L15 4.5"
6
+ stroke="currentColor"
7
+ strokeWidth="1.5"
8
+ strokeLinecap="round"
9
+ strokeLinejoin="round"
10
+ />
11
+ </g>
12
+ <defs>
13
+ <clipPath id="clip0_441_13496">
14
+ <rect width={24} height={24} fill="white" />
15
+ </clipPath>
16
+ </defs>
17
+ </svg>
18
+ );
@@ -0,0 +1,18 @@
1
+ export const SwiperArrowIconRight = (
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
3
+ <g clipPath="url(#clip0_441_13493)">
4
+ <path
5
+ d="M9 4.5L16.5 12L9 19.5"
6
+ stroke="currentColor"
7
+ strokeWidth="1.5"
8
+ strokeLinecap="round"
9
+ strokeLinejoin="round"
10
+ />
11
+ </g>
12
+ <defs>
13
+ <clipPath id="clip0_441_13493">
14
+ <rect width={24} height={24} fill="white" />
15
+ </clipPath>
16
+ </defs>
17
+ </svg>
18
+ );
@@ -0,0 +1,31 @@
1
+ export const UserProfileIcon = (
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ width={20}
5
+ height={20}
6
+ viewBox="0 0 20 20"
7
+ fill="none"
8
+ >
9
+ <g clipPath="url(#clip0_476_23733)">
10
+ <path
11
+ d="M10 12.5C12.7614 12.5 15 10.2614 15 7.5C15 4.73858 12.7614 2.5 10 2.5C7.23858 2.5 5 4.73858 5 7.5C5 10.2614 7.23858 12.5 10 12.5Z"
12
+ stroke="currentColor"
13
+ strokeWidth="1.25"
14
+ strokeLinecap="round"
15
+ strokeLinejoin="round"
16
+ />
17
+ <path
18
+ d="M2.5 16.875C4.01328 14.2602 6.76172 12.5 10 12.5C13.2383 12.5 15.9867 14.2602 17.5 16.875"
19
+ stroke="currentColor"
20
+ strokeWidth="1.25"
21
+ strokeLinecap="round"
22
+ strokeLinejoin="round"
23
+ />
24
+ </g>
25
+ <defs>
26
+ <clipPath id="clip0_476_23733">
27
+ <rect width={20} height={20} fill="white" />
28
+ </clipPath>
29
+ </defs>
30
+ </svg>
31
+ );
@@ -0,0 +1,15 @@
1
+ export const WarningCircleIcon = (
2
+ <svg xmlns="http://www.w3.org/2000/svg" width={20} height={20} viewBox="0 0 20 20" fill="none">
3
+ <g clipPath="url(#clip0_1487_106428)">
4
+ <path opacity="0.2" d="M10 17.5C14.1421 17.5 17.5 14.1421 17.5 10C17.5 5.85786 14.1421 2.5 10 2.5C5.85786 2.5 2.5 5.85786 2.5 10C2.5 14.1421 5.85786 17.5 10 17.5Z" fill="#DC2626" />
5
+ <path d="M10 17.5C14.1421 17.5 17.5 14.1421 17.5 10C17.5 5.85786 14.1421 2.5 10 2.5C5.85786 2.5 2.5 5.85786 2.5 10C2.5 14.1421 5.85786 17.5 10 17.5Z" stroke="#DC2626" strokeWidth="1.25" strokeMiterlimit={10} />
6
+ <path d="M10 10.625V6.25" stroke="#DC2626" strokeWidth="1.25" strokeLinecap="round" strokeLinejoin="round" />
7
+ <path d="M10 14.375C10.5178 14.375 10.9375 13.9553 10.9375 13.4375C10.9375 12.9197 10.5178 12.5 10 12.5C9.48223 12.5 9.0625 12.9197 9.0625 13.4375C9.0625 13.9553 9.48223 14.375 10 14.375Z" fill="#DC2626" />
8
+ </g>
9
+ <defs>
10
+ <clipPath id="clip0_1487_106428">
11
+ <rect width={20} height={20} fill="white" />
12
+ </clipPath>
13
+ </defs>
14
+ </svg>
15
+ );
@@ -0,0 +1,63 @@
1
+ export const warrantySections =
2
+ {
3
+ title: "TERMS & CONDITIONS FOR WARRANTY",
4
+ description: (
5
+ <>
6
+ AERO Exhaust has pledged to deliver high-quality performance exhaust
7
+ products to performance enthusiasts all over the world. Most
8
+ importantly, we&rsquo;re committed to delivering the ultimate customer
9
+ experience on all levels. Premium quality, a positive user experience,
10
+ and standing behind our products which are backed by a lifetime limited
11
+ warranty. AERO Exhaust warrants that all AERO Exhaust products are free
12
+ from manufacturer material and workmanship defects. AERO Exhaust extends
13
+ the following lifetime limited warranty to the original purchaser of its
14
+ products, warranty guidelines are as follows:<br/><br/>
15
+ •Stainless Steel Exhaust
16
+ Systems: Lifetime limited warranty applies to all 304-grade stainless
17
+ steel exhaust systems/kits against manufacturing defects.<br/><br/>
18
+ •Stainless
19
+ Steel Mufflers: Lifetime limited warranty applies to all 304-grade
20
+ stainless steel performance mufflers against manufacturing defects.<br/><br/>
21
+ •Accessories: Lifetime limited warranty applies to all 304-grade
22
+ stainless steel exhaust tips, resonators, crossover pipes and direct-fit
23
+ tailpipes against manufacturing defects.<br/><br/>
24
+ This warranty does not apply to
25
+ any AERO Exhaust product which has been installed on any commercial or
26
+ racing application. Exclusions also encompass but are not limited to
27
+ product improperly installed, altered product, product subjected to
28
+ misusage or damage, a misused product from an accident, collision,
29
+ undercarriage road impact and/or debris. This warranty policy shall not
30
+ apply to normal wear, cosmetic issues such as coatings and material
31
+ discoloration. This warranty policy does not cover or include the cost
32
+ of removal, labor, reinstallation of any product, outside service(s), a
33
+ product(s) from another manufacturer, transportation or towing costs,
34
+ shipping expenses, and/or installer services. Due to the variations per
35
+ application and sound being subjective, this warranty policy does not
36
+ warrant sound. This warranty is nontransferable.<br/><br/>
37
+ To properly submit a claim for warranty under the terms of this
38
+ limited warranty policy, the
39
+ original product purchaser must file a warranty claim through the
40
+ initial retailer/seller. All warranty submissions will require the
41
+ original proof of purchase during the time of claim submission. The
42
+ original exhaust product must also be returned (any freight prepaid) and
43
+ exchanged for a new exhaust product of the same part number. All returns
44
+ must have a Return Material Authorization (RMA) number issued by AERO
45
+ Exhaust before defective product being returned. If the product was
46
+ purchased directly from AERO Exhaust the warranty claim must be
47
+ submitted online via aeroexhaust.com/warranty. We will repair any
48
+ product that proves to be defective in materials or workmanship defects.
49
+ If the repair is not possible, we will either replace your product with
50
+ a new product of similar composition and price or refund the full
51
+ purchase price of your product, at our sole discretion. There is no
52
+ charge for inspection.<br/><br/>
53
+ In no event shall AERO Exhaust be held liable for
54
+ any direct, indirect, special, incidental or consequential losses and/or
55
+ damages. Including but not limited to interruption of business, loss of
56
+ business, and/or loss of profit. Some states do not allow the exclusion
57
+ or limitation of incidental or consequential damages, so the above
58
+ limitation or exclusion may not apply to you. You may also have other
59
+ rights which may vary from state to state. For more warranty information
60
+ please contact us at 801.301.0408 or via email at sales@aeroexhaust.com
61
+ </>
62
+ ),
63
+ };
@@ -0,0 +1,17 @@
1
+ import ContentSkeleton from "@/app/components/skeletons/ContentSkeleton"
2
+
3
+ export default function Loading() {
4
+ return (
5
+ <main className="h-full w-full">
6
+ <div className="container mx-auto max-w-[1276px]">
7
+ <div className="flex flex-col items-start w-full py-24">
8
+ <div className="flex flex-col items-start gap-5 mb-6 w-full">
9
+ <div className="h-5 w-24 bg-[var(--color-secondary-800)]/30 rounded" />
10
+ <div className="h-9 w-64 bg-[var(--color-secondary-800)]/30 rounded" />
11
+ </div>
12
+ <ContentSkeleton />
13
+ </div>
14
+ </div>
15
+ </main>
16
+ )
17
+ }
@@ -0,0 +1,56 @@
1
+ import AncillaryContent from "@/app/components/ancillary/AncillaryContent";
2
+ import ContentSkeleton from "@/app/components/skeletons/ContentSkeleton";
3
+ import { getStoreName } from "@/app/utils/branding";
4
+ import type { Metadata } from "next";
5
+ import { Suspense } from "react";
6
+ import Breadcrumb from "../components/reuseableUI/breadcrumb";
7
+ import Heading from "../components/reuseableUI/heading";
8
+
9
+ export const metadata: Metadata = {
10
+ title: `Warranty - ${getStoreName()}`,
11
+ description: `Learn about warranty coverage for products purchased from ${getStoreName()}. Understand your protection and claims process.`,
12
+ alternates: {
13
+ canonical: "/warranty",
14
+ },
15
+ openGraph: {
16
+ title: `Warranty - ${getStoreName()}`,
17
+ description: `Learn about warranty coverage for products purchased from ${getStoreName()}. Understand your protection and claims process.`,
18
+ type: "website",
19
+ url: "/warranty",
20
+ images: [{ url: "/Logo.png" }],
21
+ },
22
+ twitter: {
23
+ card: "summary_large_image",
24
+ title: `Warranty - ${getStoreName()}`,
25
+ description: `Learn about warranty coverage for products purchased from ${getStoreName()}. Understand your protection and claims process.`,
26
+ images: ["/Logo.png"],
27
+ },
28
+ };
29
+
30
+ export default function WarrantyPage() {
31
+ const derivedTitle = "Warranty";
32
+
33
+ return (
34
+ <main className="h-full w-full">
35
+ <div className="container mx-auto max-w-[1276px]">
36
+ <div className="flex flex-col items-start w-full px-4 md:px-6 py-12 md:py-16 lg:py-24">
37
+ <div className="flex flex-col items-start gap-5 mb-6 w-full">
38
+ <Breadcrumb
39
+ items={[
40
+ { text: "Home", link: "/" },
41
+ { text: "Warranty", link: "/warranty" },
42
+ ]}
43
+ />
44
+ <Heading as="h1" content={derivedTitle} />
45
+ </div>
46
+
47
+ <section className="w-full">
48
+ <Suspense fallback={<ContentSkeleton />}>
49
+ <AncillaryContent slug="warranty" />
50
+ </Suspense>
51
+ </section>
52
+ </div>
53
+ </div>
54
+ </main>
55
+ );
56
+ }