@pradip1995/create-storefront 1.0.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.
Files changed (338) hide show
  1. package/bin/create-storefront.js +239 -0
  2. package/lib/kit-next-config.js +84 -0
  3. package/package.json +32 -0
  4. package/templates/storefront/.eslintrc.json +3 -0
  5. package/templates/storefront/README.md +35 -0
  6. package/templates/storefront/check-env-variables.js +51 -0
  7. package/templates/storefront/kit-next-config.js +71 -0
  8. package/templates/storefront/next-env.d.ts +5 -0
  9. package/templates/storefront/next.config.js +25 -0
  10. package/templates/storefront/package.json +56 -0
  11. package/templates/storefront/postcss.config.js +6 -0
  12. package/templates/storefront/public/favicon.png +0 -0
  13. package/templates/storefront/src/app/[countryCode]/(checkout)/checkout/page.tsx +23 -0
  14. package/templates/storefront/src/app/[countryCode]/(checkout)/checkout/payment/page.tsx +47 -0
  15. package/templates/storefront/src/app/[countryCode]/(checkout)/layout.tsx +31 -0
  16. package/templates/storefront/src/app/[countryCode]/(checkout)/not-found.tsx +19 -0
  17. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/addresses/page.tsx +31 -0
  18. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/loading.tsx +9 -0
  19. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/orders/details/[id]/page.tsx +35 -0
  20. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/orders/exchange/[id]/page.tsx +47 -0
  21. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/orders/page.tsx +28 -0
  22. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/orders/return/[id]/page.tsx +66 -0
  23. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/page.tsx +22 -0
  24. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/payment-methods/page.tsx +23 -0
  25. package/templates/storefront/src/app/[countryCode]/(main)/account/@dashboard/profile/page.tsx +43 -0
  26. package/templates/storefront/src/app/[countryCode]/(main)/account/@login/default.tsx +11 -0
  27. package/templates/storefront/src/app/[countryCode]/(main)/account/@login/page.tsx +18 -0
  28. package/templates/storefront/src/app/[countryCode]/(main)/account/guest-orders/page.tsx +13 -0
  29. package/templates/storefront/src/app/[countryCode]/(main)/account/layout.tsx +22 -0
  30. package/templates/storefront/src/app/[countryCode]/(main)/account/loading.tsx +9 -0
  31. package/templates/storefront/src/app/[countryCode]/(main)/cart/loading.tsx +5 -0
  32. package/templates/storefront/src/app/[countryCode]/(main)/cart/not-found.tsx +21 -0
  33. package/templates/storefront/src/app/[countryCode]/(main)/cart/page.tsx +23 -0
  34. package/templates/storefront/src/app/[countryCode]/(main)/categories/[...category]/page.tsx +11 -0
  35. package/templates/storefront/src/app/[countryCode]/(main)/collections/[handle]/page.tsx +11 -0
  36. package/templates/storefront/src/app/[countryCode]/(main)/contact/page.tsx +21 -0
  37. package/templates/storefront/src/app/[countryCode]/(main)/guest-orders/page.tsx +12 -0
  38. package/templates/storefront/src/app/[countryCode]/(main)/help/page.tsx +28 -0
  39. package/templates/storefront/src/app/[countryCode]/(main)/layout.tsx +21 -0
  40. package/templates/storefront/src/app/[countryCode]/(main)/not-found.tsx +20 -0
  41. package/templates/storefront/src/app/[countryCode]/(main)/order/[id]/confirmed/loading.tsx +5 -0
  42. package/templates/storefront/src/app/[countryCode]/(main)/order/[id]/confirmed/page.tsx +23 -0
  43. package/templates/storefront/src/app/[countryCode]/(main)/order/[id]/transfer/[token]/accept/page.tsx +41 -0
  44. package/templates/storefront/src/app/[countryCode]/(main)/order/[id]/transfer/[token]/decline/page.tsx +41 -0
  45. package/templates/storefront/src/app/[countryCode]/(main)/order/[id]/transfer/[token]/page.tsx +38 -0
  46. package/templates/storefront/src/app/[countryCode]/(main)/order/exchange/[id]/page.tsx +47 -0
  47. package/templates/storefront/src/app/[countryCode]/(main)/order/return/[id]/page.tsx +61 -0
  48. package/templates/storefront/src/app/[countryCode]/(main)/orders/[id]/page.tsx +33 -0
  49. package/templates/storefront/src/app/[countryCode]/(main)/page.tsx +24 -0
  50. package/templates/storefront/src/app/[countryCode]/(main)/privacy-policy/page.tsx +173 -0
  51. package/templates/storefront/src/app/[countryCode]/(main)/products/[handle]/page.tsx +193 -0
  52. package/templates/storefront/src/app/[countryCode]/(main)/reset-password/page.tsx +192 -0
  53. package/templates/storefront/src/app/[countryCode]/(main)/store/page.tsx +72 -0
  54. package/templates/storefront/src/app/[countryCode]/(main)/terms-of-use/page.tsx +179 -0
  55. package/templates/storefront/src/app/[countryCode]/(main)/wishlist/page.tsx +19 -0
  56. package/templates/storefront/src/app/api/meta/event/route.ts +63 -0
  57. package/templates/storefront/src/app/auth/customer/google/callback/page.tsx +126 -0
  58. package/templates/storefront/src/app/layout.tsx +104 -0
  59. package/templates/storefront/src/app/not-found.tsx +30 -0
  60. package/templates/storefront/src/app/opengraph-image.jpg +0 -0
  61. package/templates/storefront/src/app/robots.ts +15 -0
  62. package/templates/storefront/src/app/sitemap.ts +65 -0
  63. package/templates/storefront/src/app/twitter-image.jpg +0 -0
  64. package/templates/storefront/src/modules/account/components/account-deletion/index.tsx +160 -0
  65. package/templates/storefront/src/modules/account/components/account-info/index.tsx +145 -0
  66. package/templates/storefront/src/modules/account/components/account-nav/icons.tsx +43 -0
  67. package/templates/storefront/src/modules/account/components/account-nav/index.tsx +318 -0
  68. package/templates/storefront/src/modules/account/components/account-nav/logout-modal.tsx +92 -0
  69. package/templates/storefront/src/modules/account/components/account-nav/payment-methods-icon.tsx +9 -0
  70. package/templates/storefront/src/modules/account/components/address-book/index.tsx +47 -0
  71. package/templates/storefront/src/modules/account/components/address-card/add-address.tsx +377 -0
  72. package/templates/storefront/src/modules/account/components/address-card/edit-address-modal.tsx +468 -0
  73. package/templates/storefront/src/modules/account/components/deletion-pending-modal/index.tsx +213 -0
  74. package/templates/storefront/src/modules/account/components/forgot-password/index.tsx +1 -0
  75. package/templates/storefront/src/modules/account/components/login/index.tsx +1 -0
  76. package/templates/storefront/src/modules/account/components/order-card/index.tsx +221 -0
  77. package/templates/storefront/src/modules/account/components/order-overview/index.tsx +159 -0
  78. package/templates/storefront/src/modules/account/components/overview/index.tsx +189 -0
  79. package/templates/storefront/src/modules/account/components/profile-billing-address/index.tsx +447 -0
  80. package/templates/storefront/src/modules/account/components/profile-email/index.tsx +75 -0
  81. package/templates/storefront/src/modules/account/components/profile-form/index.tsx +416 -0
  82. package/templates/storefront/src/modules/account/components/profile-name/index.tsx +76 -0
  83. package/templates/storefront/src/modules/account/components/profile-password/index.tsx +70 -0
  84. package/templates/storefront/src/modules/account/components/profile-phone/index.tsx +185 -0
  85. package/templates/storefront/src/modules/account/components/register/index.tsx +1 -0
  86. package/templates/storefront/src/modules/account/components/return-item-selector/index.tsx +187 -0
  87. package/templates/storefront/src/modules/account/components/return-shipping-selector/index.tsx +118 -0
  88. package/templates/storefront/src/modules/account/components/transfer-request-form/index.tsx +81 -0
  89. package/templates/storefront/src/modules/account/templates/account-layout.tsx +38 -0
  90. package/templates/storefront/src/modules/account/templates/exchange-request-template.tsx +389 -0
  91. package/templates/storefront/src/modules/account/templates/guest-orders-template.tsx +123 -0
  92. package/templates/storefront/src/modules/account/templates/login-template.tsx +44 -0
  93. package/templates/storefront/src/modules/account/templates/payment-methods-template.tsx +478 -0
  94. package/templates/storefront/src/modules/account/templates/return-request-template.tsx +300 -0
  95. package/templates/storefront/src/modules/cart/components/abandoned-carts/ScrollToPendingOrdersButton.tsx +21 -0
  96. package/templates/storefront/src/modules/cart/components/abandoned-carts/index.tsx +335 -0
  97. package/templates/storefront/src/modules/cart/components/applied-promotions/index.tsx +121 -0
  98. package/templates/storefront/src/modules/cart/components/cart-delivery-selection/index.tsx +203 -0
  99. package/templates/storefront/src/modules/cart/components/cart-item-card/index.tsx +476 -0
  100. package/templates/storefront/src/modules/cart/components/cart-item-select/index.tsx +73 -0
  101. package/templates/storefront/src/modules/cart/components/cart-view-tracker/index.tsx +44 -0
  102. package/templates/storefront/src/modules/cart/components/delivery-information/index.tsx +89 -0
  103. package/templates/storefront/src/modules/cart/components/empty-cart-message/index.tsx +38 -0
  104. package/templates/storefront/src/modules/cart/components/item/index.tsx +150 -0
  105. package/templates/storefront/src/modules/cart/components/pincode-checker/index.tsx +174 -0
  106. package/templates/storefront/src/modules/cart/components/sign-in-prompt/index.tsx +26 -0
  107. package/templates/storefront/src/modules/cart/components/you-may-also-like/index.tsx +137 -0
  108. package/templates/storefront/src/modules/cart/templates/index.tsx +88 -0
  109. package/templates/storefront/src/modules/cart/templates/items.tsx +49 -0
  110. package/templates/storefront/src/modules/cart/templates/preview.tsx +51 -0
  111. package/templates/storefront/src/modules/cart/templates/summary.tsx +29 -0
  112. package/templates/storefront/src/modules/checkout/components/add-address-modal/index.tsx +390 -0
  113. package/templates/storefront/src/modules/checkout/components/address-card/index.tsx +135 -0
  114. package/templates/storefront/src/modules/checkout/components/address-select/index.tsx +116 -0
  115. package/templates/storefront/src/modules/checkout/components/addresses/index.tsx +605 -0
  116. package/templates/storefront/src/modules/checkout/components/back-link/index.tsx +32 -0
  117. package/templates/storefront/src/modules/checkout/components/billing_address/index.tsx +301 -0
  118. package/templates/storefront/src/modules/checkout/components/checkout-begin-tracker/index.tsx +45 -0
  119. package/templates/storefront/src/modules/checkout/components/checkout-leave-guard/index.tsx +109 -0
  120. package/templates/storefront/src/modules/checkout/components/checkout-shipping-tracker/index.tsx +45 -0
  121. package/templates/storefront/src/modules/checkout/components/country-select/index.tsx +50 -0
  122. package/templates/storefront/src/modules/checkout/components/discount-code/index.tsx +220 -0
  123. package/templates/storefront/src/modules/checkout/components/error-message/index.tsx +13 -0
  124. package/templates/storefront/src/modules/checkout/components/payment/index.tsx +572 -0
  125. package/templates/storefront/src/modules/checkout/components/payment-button/index.tsx +257 -0
  126. package/templates/storefront/src/modules/checkout/components/payment-button/razorpay-payment-button.tsx +136 -0
  127. package/templates/storefront/src/modules/checkout/components/payment-container/index.tsx +129 -0
  128. package/templates/storefront/src/modules/checkout/components/payment-test/index.tsx +12 -0
  129. package/templates/storefront/src/modules/checkout/components/payment-wrapper/index.tsx +50 -0
  130. package/templates/storefront/src/modules/checkout/components/payment-wrapper/stripe-wrapper.tsx +54 -0
  131. package/templates/storefront/src/modules/checkout/components/processing-overlay/index.tsx +83 -0
  132. package/templates/storefront/src/modules/checkout/components/review/index.tsx +60 -0
  133. package/templates/storefront/src/modules/checkout/components/select-address-modal/index.tsx +103 -0
  134. package/templates/storefront/src/modules/checkout/components/shipping/index.tsx +533 -0
  135. package/templates/storefront/src/modules/checkout/components/shipping-address/index.tsx +521 -0
  136. package/templates/storefront/src/modules/checkout/components/submit-button/index.tsx +32 -0
  137. package/templates/storefront/src/modules/checkout/templates/checkout-form/index.tsx +38 -0
  138. package/templates/storefront/src/modules/checkout/templates/checkout-summary/index.tsx +274 -0
  139. package/templates/storefront/src/modules/common/components/breadcrumb/index.tsx +43 -0
  140. package/templates/storefront/src/modules/common/components/cart-totals/index.tsx +473 -0
  141. package/templates/storefront/src/modules/common/components/checkbox/index.tsx +98 -0
  142. package/templates/storefront/src/modules/common/components/delete-button/index.tsx +156 -0
  143. package/templates/storefront/src/modules/common/components/divider/index.tsx +9 -0
  144. package/templates/storefront/src/modules/common/components/filter-checkbox-group/index.tsx +134 -0
  145. package/templates/storefront/src/modules/common/components/filter-radio-group/index.tsx +62 -0
  146. package/templates/storefront/src/modules/common/components/input/index.tsx +79 -0
  147. package/templates/storefront/src/modules/common/components/interactive-link/index.tsx +33 -0
  148. package/templates/storefront/src/modules/common/components/line-item-options/index.tsx +26 -0
  149. package/templates/storefront/src/modules/common/components/line-item-price/index.tsx +64 -0
  150. package/templates/storefront/src/modules/common/components/line-item-unit-price/index.tsx +61 -0
  151. package/templates/storefront/src/modules/common/components/localized-client-link/index.tsx +32 -0
  152. package/templates/storefront/src/modules/common/components/login-popup/index.tsx +78 -0
  153. package/templates/storefront/src/modules/common/components/modal/index.tsx +123 -0
  154. package/templates/storefront/src/modules/common/components/native-select/index.tsx +75 -0
  155. package/templates/storefront/src/modules/common/components/obfuscated-email/index.tsx +30 -0
  156. package/templates/storefront/src/modules/common/components/product/product-rating/index.tsx +172 -0
  157. package/templates/storefront/src/modules/common/components/product/review-modal/index.tsx +333 -0
  158. package/templates/storefront/src/modules/common/components/product/share-button/index.tsx +227 -0
  159. package/templates/storefront/src/modules/common/components/product/wishlist-icon/index.tsx +46 -0
  160. package/templates/storefront/src/modules/common/components/radio/index.tsx +27 -0
  161. package/templates/storefront/src/modules/common/components/select/index.tsx +164 -0
  162. package/templates/storefront/src/modules/common/components/side-panel/index.tsx +65 -0
  163. package/templates/storefront/src/modules/common/icons/arrow-left.tsx +36 -0
  164. package/templates/storefront/src/modules/common/icons/back.tsx +37 -0
  165. package/templates/storefront/src/modules/common/icons/bancontact.tsx +26 -0
  166. package/templates/storefront/src/modules/common/icons/chevron-down.tsx +30 -0
  167. package/templates/storefront/src/modules/common/icons/delivered.tsx +29 -0
  168. package/templates/storefront/src/modules/common/icons/envelope.tsx +27 -0
  169. package/templates/storefront/src/modules/common/icons/eye-off.tsx +37 -0
  170. package/templates/storefront/src/modules/common/icons/eye.tsx +37 -0
  171. package/templates/storefront/src/modules/common/icons/fast-delivery.tsx +65 -0
  172. package/templates/storefront/src/modules/common/icons/ideal.tsx +26 -0
  173. package/templates/storefront/src/modules/common/icons/lock.tsx +31 -0
  174. package/templates/storefront/src/modules/common/icons/map-pin.tsx +37 -0
  175. package/templates/storefront/src/modules/common/icons/medusa.tsx +27 -0
  176. package/templates/storefront/src/modules/common/icons/menu.tsx +45 -0
  177. package/templates/storefront/src/modules/common/icons/nextjs.tsx +27 -0
  178. package/templates/storefront/src/modules/common/icons/package.tsx +44 -0
  179. package/templates/storefront/src/modules/common/icons/paypal.tsx +30 -0
  180. package/templates/storefront/src/modules/common/icons/phone.tsx +30 -0
  181. package/templates/storefront/src/modules/common/icons/placeholder-image.tsx +44 -0
  182. package/templates/storefront/src/modules/common/icons/refresh.tsx +51 -0
  183. package/templates/storefront/src/modules/common/icons/spinner.tsx +37 -0
  184. package/templates/storefront/src/modules/common/icons/trash.tsx +51 -0
  185. package/templates/storefront/src/modules/common/icons/user.tsx +37 -0
  186. package/templates/storefront/src/modules/common/icons/x.tsx +37 -0
  187. package/templates/storefront/src/modules/contact/templates/index.tsx +272 -0
  188. package/templates/storefront/src/modules/help/templates/index.tsx +629 -0
  189. package/templates/storefront/src/modules/home/components/dynamic-banner/index.tsx +190 -0
  190. package/templates/storefront/src/modules/home/components/featured-products/index.tsx +16 -0
  191. package/templates/storefront/src/modules/home/components/featured-products/product-rail/index.tsx +51 -0
  192. package/templates/storefront/src/modules/home/components/features/index.tsx +1 -0
  193. package/templates/storefront/src/modules/home/components/hero/index.tsx +1 -0
  194. package/templates/storefront/src/modules/home/components/loved-by-moms/index.tsx +1 -0
  195. package/templates/storefront/src/modules/home/components/new-arrivals/index.tsx +1 -0
  196. package/templates/storefront/src/modules/home/components/shop-by-age/index.tsx +1 -0
  197. package/templates/storefront/src/modules/home/components/shop-by-category/index.tsx +1 -0
  198. package/templates/storefront/src/modules/home/components/testimonials/index.tsx +1 -0
  199. package/templates/storefront/src/modules/home/components/why-choose-us/dynamic-features.tsx +93 -0
  200. package/templates/storefront/src/modules/home/components/why-choose-us/index.tsx +1 -0
  201. package/templates/storefront/src/modules/layout/components/account-dropdown/index.tsx +56 -0
  202. package/templates/storefront/src/modules/layout/components/cart-button/index.tsx +8 -0
  203. package/templates/storefront/src/modules/layout/components/cart-dropdown/index.tsx +424 -0
  204. package/templates/storefront/src/modules/layout/components/cart-mismatch-banner/index.tsx +57 -0
  205. package/templates/storefront/src/modules/layout/components/cookie-consent/index.tsx +116 -0
  206. package/templates/storefront/src/modules/layout/components/country-select/index.tsx +135 -0
  207. package/templates/storefront/src/modules/layout/components/desktop-search/index.tsx +148 -0
  208. package/templates/storefront/src/modules/layout/components/dynamic-logo/index.tsx +27 -0
  209. package/templates/storefront/src/modules/layout/components/footer-categories/index.tsx +34 -0
  210. package/templates/storefront/src/modules/layout/components/footer-contact/index.tsx +87 -0
  211. package/templates/storefront/src/modules/layout/components/footer-description/index.tsx +12 -0
  212. package/templates/storefront/src/modules/layout/components/footer-logo/index.tsx +22 -0
  213. package/templates/storefront/src/modules/layout/components/footer-newsletter/index.tsx +100 -0
  214. package/templates/storefront/src/modules/layout/components/language-select/index.tsx +192 -0
  215. package/templates/storefront/src/modules/layout/components/medusa-cta/index.tsx +21 -0
  216. package/templates/storefront/src/modules/layout/components/mobile-menu/index.tsx +296 -0
  217. package/templates/storefront/src/modules/layout/components/nav-links/index.tsx +66 -0
  218. package/templates/storefront/src/modules/layout/components/nav-wrapper/index.tsx +14 -0
  219. package/templates/storefront/src/modules/layout/components/promo-bar/index.tsx +7 -0
  220. package/templates/storefront/src/modules/layout/components/promo-bar/promo-bar-content.tsx +174 -0
  221. package/templates/storefront/src/modules/layout/components/push-notification-manager/index.tsx +191 -0
  222. package/templates/storefront/src/modules/layout/components/search-panel/index.tsx +136 -0
  223. package/templates/storefront/src/modules/layout/components/side-menu/index.tsx +144 -0
  224. package/templates/storefront/src/modules/layout/components/verification-banner/index.tsx +217 -0
  225. package/templates/storefront/src/modules/layout/components/wishlist-counter/index.tsx +17 -0
  226. package/templates/storefront/src/modules/layout/templates/footer/index.tsx +7 -0
  227. package/templates/storefront/src/modules/layout/templates/nav/index.tsx +14 -0
  228. package/templates/storefront/src/modules/order/components/cancel-order-modal/index.tsx +168 -0
  229. package/templates/storefront/src/modules/order/components/help/index.tsx +25 -0
  230. package/templates/storefront/src/modules/order/components/item/index.tsx +62 -0
  231. package/templates/storefront/src/modules/order/components/items/index.tsx +44 -0
  232. package/templates/storefront/src/modules/order/components/onboarding-cta/index.tsx +28 -0
  233. package/templates/storefront/src/modules/order/components/order-confirmation-back-handler/index.tsx +28 -0
  234. package/templates/storefront/src/modules/order/components/order-details/index.tsx +63 -0
  235. package/templates/storefront/src/modules/order/components/order-purchase-tracker/index.tsx +48 -0
  236. package/templates/storefront/src/modules/order/components/order-redesign/index.tsx +887 -0
  237. package/templates/storefront/src/modules/order/components/order-summary/index.tsx +60 -0
  238. package/templates/storefront/src/modules/order/components/payment-details/index.tsx +63 -0
  239. package/templates/storefront/src/modules/order/components/shipping-details/index.tsx +73 -0
  240. package/templates/storefront/src/modules/order/components/transfer-actions/index.tsx +81 -0
  241. package/templates/storefront/src/modules/order/components/transfer-image/index.tsx +275 -0
  242. package/templates/storefront/src/modules/order/templates/order-completed-template.tsx +233 -0
  243. package/templates/storefront/src/modules/order/templates/order-details-template.tsx +128 -0
  244. package/templates/storefront/src/modules/products/components/image-gallery/index.tsx +297 -0
  245. package/templates/storefront/src/modules/products/components/product-actions/index.tsx +1400 -0
  246. package/templates/storefront/src/modules/products/components/product-actions/mobile-actions.tsx +217 -0
  247. package/templates/storefront/src/modules/products/components/product-actions/option-select.tsx +62 -0
  248. package/templates/storefront/src/modules/products/components/product-onboarding-cta/index.tsx +30 -0
  249. package/templates/storefront/src/modules/products/components/product-preview/index.tsx +5 -0
  250. package/templates/storefront/src/modules/products/components/product-preview/price.tsx +29 -0
  251. package/templates/storefront/src/modules/products/components/product-price/index.tsx +58 -0
  252. package/templates/storefront/src/modules/products/components/product-rating/index.tsx +1 -0
  253. package/templates/storefront/src/modules/products/components/product-tabs/accordion.tsx +100 -0
  254. package/templates/storefront/src/modules/products/components/product-tabs/index.tsx +127 -0
  255. package/templates/storefront/src/modules/products/components/product-tabs/ratings-tab.tsx +598 -0
  256. package/templates/storefront/src/modules/products/components/product-view-tracker/index.tsx +53 -0
  257. package/templates/storefront/src/modules/products/components/related-products/index.tsx +152 -0
  258. package/templates/storefront/src/modules/products/components/review-modal/index.tsx +1 -0
  259. package/templates/storefront/src/modules/products/components/share-button/index.tsx +1 -0
  260. package/templates/storefront/src/modules/products/components/thumbnail/index.tsx +91 -0
  261. package/templates/storefront/src/modules/products/components/wishlist-icon/index.tsx +1 -0
  262. package/templates/storefront/src/modules/products/context/product-context.tsx +52 -0
  263. package/templates/storefront/src/modules/products/templates/index.tsx +26 -0
  264. package/templates/storefront/src/modules/products/templates/product-actions-wrapper/index.tsx +1 -0
  265. package/templates/storefront/src/modules/products/templates/product-info/index.tsx +2 -0
  266. package/templates/storefront/src/modules/shipping/components/free-shipping-price-nudge/index.tsx +283 -0
  267. package/templates/storefront/src/modules/skeletons/components/skeleton-button/index.tsx +5 -0
  268. package/templates/storefront/src/modules/skeletons/components/skeleton-card-details/index.tsx +10 -0
  269. package/templates/storefront/src/modules/skeletons/components/skeleton-cart-item/index.tsx +35 -0
  270. package/templates/storefront/src/modules/skeletons/components/skeleton-cart-totals/index.tsx +30 -0
  271. package/templates/storefront/src/modules/skeletons/components/skeleton-code-form/index.tsx +13 -0
  272. package/templates/storefront/src/modules/skeletons/components/skeleton-line-item/index.tsx +35 -0
  273. package/templates/storefront/src/modules/skeletons/components/skeleton-order-confirmed-header/index.tsx +14 -0
  274. package/templates/storefront/src/modules/skeletons/components/skeleton-order-information/index.tsx +36 -0
  275. package/templates/storefront/src/modules/skeletons/components/skeleton-order-items/index.tsx +43 -0
  276. package/templates/storefront/src/modules/skeletons/components/skeleton-order-summary/index.tsx +15 -0
  277. package/templates/storefront/src/modules/skeletons/components/skeleton-product-preview/index.tsx +15 -0
  278. package/templates/storefront/src/modules/skeletons/templates/skeleton-cart-page/index.tsx +65 -0
  279. package/templates/storefront/src/modules/skeletons/templates/skeleton-order-confirmed/index.tsx +21 -0
  280. package/templates/storefront/src/modules/skeletons/templates/skeleton-product-grid/index.tsx +23 -0
  281. package/templates/storefront/src/modules/skeletons/templates/skeleton-related-products/index.tsx +25 -0
  282. package/templates/storefront/src/modules/store/components/client-paginated-products.tsx +108 -0
  283. package/templates/storefront/src/modules/store/components/mobile-filters/index.tsx +135 -0
  284. package/templates/storefront/src/modules/store/components/pagination/index.tsx +118 -0
  285. package/templates/storefront/src/modules/store/components/product-list-view-tracker/index.tsx +43 -0
  286. package/templates/storefront/src/modules/store/components/refinement-list/index.tsx +299 -0
  287. package/templates/storefront/src/modules/store/components/refinement-list/sort-products/index.tsx +120 -0
  288. package/templates/storefront/src/modules/store/components/store-header/index.tsx +67 -0
  289. package/templates/storefront/src/modules/store/templates/index.tsx +1 -0
  290. package/templates/storefront/src/modules/store/templates/paginated-products.tsx +175 -0
  291. package/templates/storefront/src/modules/wishlist/components/wishlist-item/index.tsx +797 -0
  292. package/templates/storefront/src/modules/wishlist/templates/index.tsx +176 -0
  293. package/templates/storefront/src/storefront.config.ts +12 -0
  294. package/templates/storefront/src/styles/globals.css +326 -0
  295. package/templates/storefront/src/theme/valero/blocks/home/Features/index.tsx +61 -0
  296. package/templates/storefront/src/theme/valero/blocks/home/Hero/index.tsx +102 -0
  297. package/templates/storefront/src/theme/valero/blocks/home/LovedByMoms/index.tsx +407 -0
  298. package/templates/storefront/src/theme/valero/blocks/home/NewArrivals/index.tsx +48 -0
  299. package/templates/storefront/src/theme/valero/blocks/home/ShopByAge/index.tsx +128 -0
  300. package/templates/storefront/src/theme/valero/blocks/home/ShopByCategory/index.tsx +409 -0
  301. package/templates/storefront/src/theme/valero/blocks/home/Testimonials/index.tsx +697 -0
  302. package/templates/storefront/src/theme/valero/blocks/home/WhyChooseUs/index.tsx +62 -0
  303. package/templates/storefront/src/theme/valero/layouts/MainLayoutShell.tsx +14 -0
  304. package/templates/storefront/src/theme/valero/primitives/Button.tsx +28 -0
  305. package/templates/storefront/src/theme/valero/primitives/Card.tsx +32 -0
  306. package/templates/storefront/src/theme/valero/primitives/index.ts +2 -0
  307. package/templates/storefront/src/theme/valero/slots/account/ForgotPassword/index.tsx +1 -0
  308. package/templates/storefront/src/theme/valero/slots/account/Login/index.tsx +1 -0
  309. package/templates/storefront/src/theme/valero/slots/account/LoginTemplate/index.tsx +44 -0
  310. package/templates/storefront/src/theme/valero/slots/account/Register/index.tsx +1 -0
  311. package/templates/storefront/src/theme/valero/slots/cart/CartItem/index.tsx +11 -0
  312. package/templates/storefront/src/theme/valero/slots/cart/CartSummary/index.tsx +13 -0
  313. package/templates/storefront/src/theme/valero/slots/checkout/CheckoutForm/index.tsx +1 -0
  314. package/templates/storefront/src/theme/valero/slots/checkout/CheckoutSummary/index.tsx +1 -0
  315. package/templates/storefront/src/theme/valero/slots/layout/Footer/index.tsx +104 -0
  316. package/templates/storefront/src/theme/valero/slots/layout/Nav/index.tsx +97 -0
  317. package/templates/storefront/src/theme/valero/slots/layout/PromoBar/index.tsx +19 -0
  318. package/templates/storefront/src/theme/valero/slots/layout/PromoBar/promo-bar-content.tsx +174 -0
  319. package/templates/storefront/src/theme/valero/slots/order/OrderDetails/index.tsx +12 -0
  320. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductCTASection.tsx +191 -0
  321. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductDetailsSection.tsx +137 -0
  322. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductFeaturePanel.tsx +245 -0
  323. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductHighlightsSection.tsx +98 -0
  324. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductOptionsSection.tsx +233 -0
  325. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductPriceSection.tsx +53 -0
  326. package/templates/storefront/src/theme/valero/slots/product/ProductActions/ProductTrustSection.tsx +84 -0
  327. package/templates/storefront/src/theme/valero/slots/product/ProductActions/index.tsx +161 -0
  328. package/templates/storefront/src/theme/valero/slots/product/ProductCard/index.tsx +132 -0
  329. package/templates/storefront/src/theme/valero/slots/product/ProductInfo/index.tsx +40 -0
  330. package/templates/storefront/src/theme/valero/templates/StorePage/index.tsx +154 -0
  331. package/templates/storefront/src/theme/valero/tokens/colors.js +16 -0
  332. package/templates/storefront/src/theme/valero/tokens/colors.ts +21 -0
  333. package/templates/storefront/src/theme/valero/tokens/fonts.ts +13 -0
  334. package/templates/storefront/src/theme/valero/tokens/index.ts +3 -0
  335. package/templates/storefront/src/theme/valero/tokens/spacing.ts +9 -0
  336. package/templates/storefront/src/theme/valero/tokens/theme.css +91 -0
  337. package/templates/storefront/tailwind.config.js +221 -0
  338. package/templates/storefront/tsconfig.json +30 -0
@@ -0,0 +1,20 @@
1
+ import { Metadata } from "next"
2
+
3
+ import InteractiveLink from "@modules/common/components/interactive-link"
4
+
5
+ export const metadata: Metadata = {
6
+ title: "404",
7
+ description: "Something went wrong",
8
+ }
9
+
10
+ export default function NotFound() {
11
+ return (
12
+ <div className="flex flex-col gap-4 items-center justify-center min-h-[calc(100vh-64px)]">
13
+ <h1 className="text-2xl-semi text-ui-fg-base">Page not found</h1>
14
+ <p className="text-small-regular text-ui-fg-base">
15
+ The page you tried to access does not exist.
16
+ </p>
17
+ <InteractiveLink href="/">Go to frontpage</InteractiveLink>
18
+ </div>
19
+ )
20
+ }
@@ -0,0 +1,5 @@
1
+ import SkeletonOrderConfirmed from "@modules/skeletons/templates/skeleton-order-confirmed"
2
+
3
+ export default function Loading() {
4
+ return <SkeletonOrderConfirmed />
5
+ }
@@ -0,0 +1,23 @@
1
+ import { retrieveOrder } from "@core/data/orders"
2
+ import OrderCompletedTemplate from "@modules/order/templates/order-completed-template"
3
+ import { Metadata } from "next"
4
+ import { notFound } from "next/navigation"
5
+
6
+ type Props = {
7
+ params: Promise<{ id: string }>
8
+ }
9
+ export const metadata: Metadata = {
10
+ title: "Order Confirmed",
11
+ description: "You purchase was successful",
12
+ }
13
+
14
+ export default async function OrderConfirmedPage(props: Props) {
15
+ const params = await props.params
16
+ const order = await retrieveOrder(params.id).catch(() => null)
17
+
18
+ if (!order) {
19
+ return notFound()
20
+ }
21
+
22
+ return <OrderCompletedTemplate order={order} />
23
+ }
@@ -0,0 +1,41 @@
1
+ import { acceptTransferRequest } from "@core/data/orders"
2
+ import { Heading, Text } from "@medusajs/ui"
3
+ import TransferImage from "@modules/order/components/transfer-image"
4
+
5
+ export default async function TransferPage({
6
+ params,
7
+ }: {
8
+ params: { id: string; token: string }
9
+ }) {
10
+ const { id, token } = params
11
+
12
+ const { success, error } = await acceptTransferRequest(id, token)
13
+
14
+ return (
15
+ <div className="flex flex-col gap-y-4 items-start w-2/5 mx-auto mt-10 mb-20">
16
+ <TransferImage />
17
+ <div className="flex flex-col gap-y-6">
18
+ {success && (
19
+ <>
20
+ <Heading level="h1" className="text-xl text-zinc-900">
21
+ Order transfered!
22
+ </Heading>
23
+ <Text className="text-zinc-600">
24
+ Order {id} has been successfully transfered to the new owner.
25
+ </Text>
26
+ </>
27
+ )}
28
+ {!success && (
29
+ <>
30
+ <Text className="text-zinc-600">
31
+ There was an error accepting the transfer. Please try again.
32
+ </Text>
33
+ {error && (
34
+ <Text className="text-red-500">Error message: {error}</Text>
35
+ )}
36
+ </>
37
+ )}
38
+ </div>
39
+ </div>
40
+ )
41
+ }
@@ -0,0 +1,41 @@
1
+ import { declineTransferRequest } from "@core/data/orders"
2
+ import { Heading, Text } from "@medusajs/ui"
3
+ import TransferImage from "@modules/order/components/transfer-image"
4
+
5
+ export default async function TransferPage({
6
+ params,
7
+ }: {
8
+ params: { id: string; token: string }
9
+ }) {
10
+ const { id, token } = params
11
+
12
+ const { success, error } = await declineTransferRequest(id, token)
13
+
14
+ return (
15
+ <div className="flex flex-col gap-y-4 items-start w-2/5 mx-auto mt-10 mb-20">
16
+ <TransferImage />
17
+ <div className="flex flex-col gap-y-6">
18
+ {success && (
19
+ <>
20
+ <Heading level="h1" className="text-xl text-zinc-900">
21
+ Order transfer declined!
22
+ </Heading>
23
+ <Text className="text-zinc-600">
24
+ Transfer of order {id} has been successfully declined.
25
+ </Text>
26
+ </>
27
+ )}
28
+ {!success && (
29
+ <>
30
+ <Text className="text-zinc-600">
31
+ There was an error declining the transfer. Please try again.
32
+ </Text>
33
+ {error && (
34
+ <Text className="text-red-500">Error message: {error}</Text>
35
+ )}
36
+ </>
37
+ )}
38
+ </div>
39
+ </div>
40
+ )
41
+ }
@@ -0,0 +1,38 @@
1
+ import { Heading, Text } from "@medusajs/ui"
2
+ import TransferActions from "@modules/order/components/transfer-actions"
3
+ import TransferImage from "@modules/order/components/transfer-image"
4
+
5
+ export default async function TransferPage({
6
+ params,
7
+ }: {
8
+ params: { id: string; token: string }
9
+ }) {
10
+ const { id, token } = params
11
+
12
+ return (
13
+ <div className="flex flex-col gap-y-4 items-start w-2/5 mx-auto mt-10 mb-20">
14
+ <TransferImage />
15
+ <div className="flex flex-col gap-y-6">
16
+ <Heading level="h1" className="text-xl text-zinc-900">
17
+ Transfer request for order {id}
18
+ </Heading>
19
+ <Text className="text-zinc-600">
20
+ You&#39;ve received a request to transfer ownership of your order ({id}).
21
+ If you agree to this request, you can approve the transfer by clicking
22
+ the button below.
23
+ </Text>
24
+ <div className="w-full h-px bg-zinc-200" />
25
+ <Text className="text-zinc-600">
26
+ If you accept, the new owner will take over all responsibilities and
27
+ permissions associated with this order.
28
+ </Text>
29
+ <Text className="text-zinc-600">
30
+ If you do not recognize this request or wish to retain ownership, no
31
+ further action is required.
32
+ </Text>
33
+ <div className="w-full h-px bg-zinc-200" />
34
+ <TransferActions id={id} token={token} />
35
+ </div>
36
+ </div>
37
+ )
38
+ }
@@ -0,0 +1,47 @@
1
+
2
+ import { Metadata } from "next"
3
+ import { notFound } from "next/navigation"
4
+ import { retrieveOrder } from "@core/data/orders"
5
+ import { sdk } from "@core/config"
6
+ import ExchangeRequestTemplate from "@modules/account/templates/exchange-request-template"
7
+
8
+ type Props = {
9
+ params: Promise<{ id: string; countryCode: string }>
10
+ }
11
+
12
+ export async function generateMetadata(props: Props): Promise<Metadata> {
13
+ const params = await props.params
14
+ return {
15
+ title: `Exchange Order #${params.id}`,
16
+ description: "Request an exchange for your order.",
17
+ }
18
+ }
19
+
20
+ export default async function ExchangePage(props: Props) {
21
+ const params = await props.params
22
+
23
+ const order = await retrieveOrder(params.id).catch(() => null)
24
+
25
+ if (!order) {
26
+ return notFound()
27
+ }
28
+
29
+ // Fetch return reasons
30
+ const { return_reasons } = await sdk.client.fetch<any>(
31
+ "/store/return-reasons",
32
+ {
33
+ method: "GET",
34
+ query: { fields: "id,value,label" },
35
+ next: { tags: ["return_reasons"] },
36
+ }
37
+ )
38
+
39
+ return (
40
+ <div className="bg-page-bg min-h-screen">
41
+ <ExchangeRequestTemplate
42
+ order={order as any}
43
+ returnReasons={return_reasons || []}
44
+ />
45
+ </div>
46
+ )
47
+ }
@@ -0,0 +1,61 @@
1
+
2
+ import { Metadata } from "next"
3
+ import { notFound } from "next/navigation"
4
+
5
+ import { retrieveOrder } from "@core/data/orders"
6
+ import { listReturnReasons, listReturnShippingOptions } from "@core/data/returns"
7
+ import ReturnRequestTemplate from "@modules/account/templates/return-request-template"
8
+ import { hasReturnableItems } from "@core/util/returns"
9
+
10
+ export const metadata: Metadata = {
11
+ title: "Request Return",
12
+ description: "Request a return for your order",
13
+ }
14
+
15
+ type Props = {
16
+ params: Promise<{ id: string }>
17
+ }
18
+
19
+ export default async function GuestReturnRequestPage(props: Props) {
20
+ const params = await props.params;
21
+
22
+ // retrieveOrder already handles guest tokens
23
+ const order = await retrieveOrder(params.id).catch(() => null)
24
+
25
+ if (!order) {
26
+ notFound()
27
+ }
28
+
29
+ // Check eligibility
30
+ if (!hasReturnableItems(order)) {
31
+ return (
32
+ <div className="max-w-4xl mx-auto py-16 px-4 text-center">
33
+ <h1 className="text-2xl font-bold mb-4">Return Not Available</h1>
34
+ <p className="text-gray-600 mb-8">This order matches no returnable items. Items might be past the return window or already returned.</p>
35
+ <a href={`/orders/${order.id}`} className="text-blue-600 hover:underline text-lg font-medium">Back to Order Details</a>
36
+ </div>
37
+ )
38
+ }
39
+
40
+ // Get cart ID for shipping options
41
+ const cartId = (order as any).cart_id
42
+
43
+ // Extract product IDs for context
44
+ const productIds = order.items?.map((item: any) => item.product_id).filter(Boolean) as string[]
45
+
46
+ // Fetch return shipping options and return reasons
47
+ const [shippingOptions, returnReasons] = await Promise.all([
48
+ listReturnShippingOptions(cartId || "", (order as any).region_id, productIds),
49
+ listReturnReasons(),
50
+ ])
51
+
52
+ return (
53
+ <div className="bg-page-bg min-h-screen">
54
+ <ReturnRequestTemplate
55
+ order={order}
56
+ shippingOptions={shippingOptions}
57
+ returnReasons={returnReasons}
58
+ />
59
+ </div>
60
+ )
61
+ }
@@ -0,0 +1,33 @@
1
+ import { retrieveOrder } from "@core/data/orders"
2
+ import OrderDetailsTemplate from "@modules/order/templates/order-details-template"
3
+ import { Metadata } from "next"
4
+ import { notFound } from "next/navigation"
5
+
6
+ type Props = {
7
+ params: Promise<{ id: string }>
8
+ }
9
+
10
+ export async function generateMetadata(props: Props): Promise<Metadata> {
11
+ const params = await props.params
12
+ const order = await retrieveOrder(params.id).catch(() => null)
13
+
14
+ if (!order) {
15
+ notFound()
16
+ }
17
+
18
+ return {
19
+ title: `Order #${order.display_id}`,
20
+ description: `View your order`,
21
+ }
22
+ }
23
+
24
+ export default async function OrderDetailPage(props: Props) {
25
+ const params = await props.params
26
+ const order = await retrieveOrder(params.id).catch(() => null)
27
+
28
+ if (!order) {
29
+ notFound()
30
+ }
31
+
32
+ return <OrderDetailsTemplate order={order} />
33
+ }
@@ -0,0 +1,24 @@
1
+ import { Metadata } from "next"
2
+
3
+ import { loadHomeData } from "@controllers/home/load-home-data"
4
+ import { HomePage } from "@controllers/home/home-page"
5
+
6
+ export const metadata: Metadata = {
7
+ title: "Premium Kids Fashion Store",
8
+ description:
9
+ "Explore Chocomelon's premium collection of kids' fashion. From playful styles to quality comfort, shop our curated range for ages 0 to 12. Quality materials, stunning designs.",
10
+ }
11
+
12
+ export default async function Home(props: {
13
+ params: Promise<{ countryCode: string }>
14
+ }) {
15
+ const params = await props.params
16
+ const { countryCode } = params
17
+
18
+ const data = await loadHomeData(countryCode)
19
+ if (!data) {
20
+ return null
21
+ }
22
+
23
+ return <HomePage data={data} />
24
+ }
@@ -0,0 +1,173 @@
1
+ import { Metadata } from "next"
2
+ import { Heading, Text } from "@medusajs/ui"
3
+
4
+ export const metadata: Metadata = {
5
+ title: "Privacy Policy | Chocomelon",
6
+ description: "Our commitment to protecting your privacy and personal information.",
7
+ }
8
+
9
+ export default function PrivacyPolicyPage() {
10
+ return (
11
+ <div className="min-h-screen bg-[#FFFAFE] pb-16 sm:pb-24">
12
+ {/* Header Section */}
13
+ <div className="bg-[#04122C] text-white py-16 sm:py-24 mb-12 relative overflow-hidden">
14
+ <div className="absolute top-0 right-0 w-64 h-64 bg-[#8B5AB1] opacity-20 rounded-full -mr-32 -mt-32 blur-3xl"></div>
15
+ <div className="absolute bottom-0 left-0 w-64 h-64 bg-pink-500 opacity-10 rounded-full -ml-32 -mb-32 blur-3xl"></div>
16
+
17
+ <div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 relative z-10 text-center">
18
+ <Heading level="h1" className="text-3xl sm:text-5xl font-extrabold mb-4 tracking-tight">
19
+ Privacy Policy
20
+ </Heading>
21
+ <Text className="text-gray-300 text-base sm:text-xl max-w-2xl mx-auto leading-relaxed font-light">
22
+ Your privacy is our top priority. Learn how Chocomelon protects and handles your personal information.
23
+ </Text>
24
+ </div>
25
+ </div>
26
+
27
+ {/* Content Section */}
28
+ <div className="max-w-4xl mx-auto px-3 sm:px-6 lg:px-8">
29
+ <div className="bg-[#FFFAFE] rounded-3xl shadow-xl shadow-gray-200/50 border border-gray-100 p-5 sm:p-10 md:p-16 space-y-10 sm:space-y-12">
30
+
31
+ <section>
32
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-blue-50 text-[#04122C] rounded-2xl mb-6 font-bold text-xl">
33
+ 1
34
+ </div>
35
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
36
+ Introduction
37
+ </Heading>
38
+ <Text className="leading-relaxed text-gray-600 text-lg">
39
+ Welcome to Chocomelon. We value your privacy and are committed to protecting your personal data. This Privacy Policy explains how we collect, use, and safeguard your information when you visit our website and make purchases.
40
+ </Text>
41
+ </section>
42
+
43
+ <section>
44
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-purple-50 text-[#8B5AB1] rounded-2xl mb-6 font-bold text-xl">
45
+ 2
46
+ </div>
47
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
48
+ Information We Collect
49
+ </Heading>
50
+ <Text className="leading-relaxed text-gray-600 text-lg mb-6">
51
+ To provide the best shopping experience, we collect information that you provide directly to us:
52
+ </Text>
53
+ <ul className="grid grid-cols-1 sm:grid-cols-2 gap-4">
54
+ {[
55
+ "Name and contact information",
56
+ "Secure billing and payment data",
57
+ "Order history and preferences",
58
+ "Customer support interactions"
59
+ ].map((item, i) => (
60
+ <li key={i} className="flex items-center gap-3 p-4 bg-gray-50 rounded-xl text-gray-700">
61
+ <div className="w-2 h-2 rounded-full bg-[#8B5AB1]"></div>
62
+ {item}
63
+ </li>
64
+ ))}
65
+ </ul>
66
+ </section>
67
+
68
+ <section>
69
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-pink-50 text-pink-500 rounded-2xl mb-6 font-bold text-xl">
70
+ 3
71
+ </div>
72
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
73
+ How We Use Your Information
74
+ </Heading>
75
+ <Text className="leading-relaxed text-gray-600 text-lg mb-6">
76
+ Your data allows us to serve you better. We use it to:
77
+ </Text>
78
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
79
+ {[
80
+ { title: "Order Fulfillment", desc: "Process and deliver your favorite products." },
81
+ { title: "Personalization", desc: "Show you items you'll actually love." },
82
+ { title: "Communication", desc: "Keep you updated on orders and deals." },
83
+ { title: "Improvement", desc: "Enhance our website and services." }
84
+ ].map((item, i) => (
85
+ <div key={i} className="group p-5 border border-gray-100 rounded-2xl hover:border-purple-200 hover:bg-purple-50/30 transition-all">
86
+ <h4 className="font-bold text-[#04122C] mb-1">{item.title}</h4>
87
+ <p className="text-sm text-gray-500">{item.desc}</p>
88
+ </div>
89
+ ))}
90
+ </div>
91
+ </section>
92
+
93
+ <section>
94
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-blue-50 text-[#04122C] rounded-2xl mb-6 font-bold text-xl">
95
+ 4
96
+ </div>
97
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
98
+ Data Sharing and Security
99
+ </Heading>
100
+ <Text className="leading-relaxed text-gray-600 text-lg mb-6">
101
+ We never sell your data. We only share it with trusted partners necessary for our operations:
102
+ </Text>
103
+ <div className="flex flex-wrap gap-2 mb-6">
104
+ {["Payment Processors", "Shipping Partners", "Cloud Storage"].map((tag, i) => (
105
+ <span key={i} className="px-4 py-2 bg-gray-100 text-gray-600 rounded-full text-sm font-medium">
106
+ {tag}
107
+ </span>
108
+ ))}
109
+ </div>
110
+ <Text className="leading-relaxed text-gray-600 text-lg italic bg-blue-50/50 p-6 rounded-2xl border-l-4 border-[#04122C]">
111
+ "We implement industry-standard security measures to protect your data from unauthorized access or disclosure."
112
+ </Text>
113
+ </section>
114
+
115
+ <section className="grid grid-cols-1 md:grid-cols-2 gap-12">
116
+ <div>
117
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-yellow-50 text-yellow-600 rounded-2xl mb-6 font-bold text-xl">
118
+ 5
119
+ </div>
120
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
121
+ Cookies
122
+ </Heading>
123
+ <Text className="leading-relaxed text-gray-600">
124
+ Our website uses cookies to enhance your browsing experience, remember your cart items, and analyze website traffic.
125
+ </Text>
126
+ </div>
127
+ <div>
128
+ <div className="inline-flex items-center justify-center w-12 h-12 bg-green-50 text-green-600 rounded-2xl mb-6 font-bold text-xl">
129
+ 6
130
+ </div>
131
+ <Heading level="h2" className="text-2xl font-bold mb-4 text-[#04122C]">
132
+ Your Rights
133
+ </Heading>
134
+ <Text className="leading-relaxed text-gray-600">
135
+ You have the right to access, correct, or delete your personal information at any time.
136
+ </Text>
137
+ </div>
138
+ </section>
139
+
140
+ <section className="bg-blue-50/30 p-6 sm:p-8 rounded-3xl border border-blue-100/50">
141
+ <Heading level="h2" className="text-xl font-bold mb-3 text-[#04122C]">
142
+ Contact Us
143
+ </Heading>
144
+ <Text className="text-gray-600 mb-4">
145
+ If you have any privacy-related questions or concerns, please don't hesitate to reach out.
146
+ </Text>
147
+ <div className="flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2 text-[#8B5AB1] font-semibold">
148
+ <span className="text-gray-400 font-normal">Email:</span>
149
+ <a href="mailto:chocomelonllp@gmail.com" className="hover:underline break-all sm:break-normal">chocomelonllp@gmail.com</a>
150
+ </div>
151
+ </section>
152
+
153
+ <section className="pt-12 border-t border-gray-100 flex flex-col sm:flex-row justify-between items-center gap-4">
154
+ <p className="text-sm text-gray-400">
155
+ Last Updated: March 19, 2026
156
+ </p>
157
+ <div className="flex gap-3">
158
+ <div className="px-5 py-2 rounded-full bg-gradient-to-r from-[#04122C] to-blue-900 text-white text-[10px] font-bold shadow-lg shadow-blue-900/20 flex items-center gap-1.5 uppercase tracking-wider transition-transform hover:scale-105">
159
+ <div className="w-1.5 h-1.5 rounded-full bg-blue-400 animate-pulse"></div>
160
+ CP
161
+ </div>
162
+ <div className="px-5 py-2 rounded-full bg-gradient-to-r from-[#8B5AB1] to-purple-400 text-white text-[10px] font-bold shadow-lg shadow-purple-900/20 flex items-center gap-1.5 uppercase tracking-wider transition-transform hover:scale-105">
163
+ <div className="w-1.5 h-1.5 rounded-full bg-pink-300 animate-pulse"></div>
164
+ SEC
165
+ </div>
166
+ </div>
167
+ </section>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ )
172
+ }
173
+