@akinon/projectzero 1.29.0-rc.2 → 1.29.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 (506) hide show
  1. package/CHANGELOG.md +1 -13
  2. package/commands/create.ts +118 -49
  3. package/dist/commands/create.js +68 -32
  4. package/package.json +1 -1
  5. package/tsconfig.json +8 -9
  6. package/app-template/.editorconfig +0 -7
  7. package/app-template/.env.example +0 -9
  8. package/app-template/.eslintignore +0 -1
  9. package/app-template/.eslintrc.js +0 -31
  10. package/app-template/.gitattributes +0 -18
  11. package/app-template/.husky/pre-commit +0 -4
  12. package/app-template/.lintstagedrc.js +0 -12
  13. package/app-template/.prettierrc +0 -13
  14. package/app-template/.releaserc.json +0 -49
  15. package/app-template/.stylelintrc.json +0 -37
  16. package/app-template/.vscode/extensions.json +0 -11
  17. package/app-template/.vscode/launch.json +0 -29
  18. package/app-template/.yarnrc +0 -1
  19. package/app-template/CHANGELOG.md +0 -564
  20. package/app-template/LICENSE +0 -21
  21. package/app-template/Procfile +0 -1
  22. package/app-template/README.md +0 -29
  23. package/app-template/akinon.json +0 -28
  24. package/app-template/bitbucket-pipelines.yml +0 -54
  25. package/app-template/build.sh +0 -7
  26. package/app-template/docs/CHANGELOG.md +0 -85
  27. package/app-template/docs/advanced-usage.md +0 -43
  28. package/app-template/docs/basic-setup.md +0 -59
  29. package/app-template/docs/data-fetching/client/account.md +0 -1064
  30. package/app-template/docs/data-fetching/client/address.md +0 -805
  31. package/app-template/docs/data-fetching/client/basket.md +0 -107
  32. package/app-template/docs/data-fetching/client/checkout.md +0 -904
  33. package/app-template/docs/data-fetching/client/misc.md +0 -135
  34. package/app-template/docs/data-fetching/client/product.md +0 -284
  35. package/app-template/docs/data-fetching/client/user.md +0 -56
  36. package/app-template/docs/data-fetching/client/wishlist.md +0 -111
  37. package/app-template/docs/data-fetching/server/category.md +0 -324
  38. package/app-template/docs/data-fetching/server/flat-page.md +0 -42
  39. package/app-template/docs/data-fetching/server/list.md +0 -353
  40. package/app-template/docs/data-fetching/server/menu.md +0 -363
  41. package/app-template/docs/data-fetching/server/product.md +0 -131
  42. package/app-template/docs/data-fetching/server/seo.md +0 -44
  43. package/app-template/docs/data-fetching/server/special-page.md +0 -79
  44. package/app-template/docs/data-fetching/server/widget.md +0 -218
  45. package/app-template/docs/delete-account.md +0 -25
  46. package/app-template/docs/deployment.md +0 -46
  47. package/app-template/docs/dynamic-route.md +0 -33
  48. package/app-template/docs/icons.md +0 -52
  49. package/app-template/docs/localization.md +0 -204
  50. package/app-template/docs/logging.md +0 -48
  51. package/app-template/docs/plugins.md +0 -76
  52. package/app-template/docs/seo-management.md +0 -125
  53. package/app-template/docs/static-assets.md +0 -36
  54. package/app-template/docs/widgets.md +0 -127
  55. package/app-template/global.d.ts +0 -1
  56. package/app-template/jest.config.ts +0 -34
  57. package/app-template/next-env.d.ts +0 -6
  58. package/app-template/next.config.mjs +0 -34
  59. package/app-template/package.json +0 -96
  60. package/app-template/plugins.d.ts +0 -1
  61. package/app-template/postcss.config.js +0 -6
  62. package/app-template/public/404.png +0 -0
  63. package/app-template/public/500.png +0 -0
  64. package/app-template/public/apple-splash-1125-2436.jpg +0 -0
  65. package/app-template/public/apple-splash-1136-640.jpg +0 -0
  66. package/app-template/public/apple-splash-1170-2532.jpg +0 -0
  67. package/app-template/public/apple-splash-1242-2208.jpg +0 -0
  68. package/app-template/public/apple-splash-1242-2688.jpg +0 -0
  69. package/app-template/public/apple-splash-1284-2778.jpg +0 -0
  70. package/app-template/public/apple-splash-1334-750.jpg +0 -0
  71. package/app-template/public/apple-splash-1536-2048.jpg +0 -0
  72. package/app-template/public/apple-splash-1620-2160.jpg +0 -0
  73. package/app-template/public/apple-splash-1668-2224.jpg +0 -0
  74. package/app-template/public/apple-splash-1668-2388.jpg +0 -0
  75. package/app-template/public/apple-splash-1792-828.jpg +0 -0
  76. package/app-template/public/apple-splash-2048-1536.jpg +0 -0
  77. package/app-template/public/apple-splash-2048-2732.jpg +0 -0
  78. package/app-template/public/apple-splash-2160-1620.jpg +0 -0
  79. package/app-template/public/apple-splash-2208-1242.jpg +0 -0
  80. package/app-template/public/apple-splash-2224-1668.jpg +0 -0
  81. package/app-template/public/apple-splash-2388-1668.jpg +0 -0
  82. package/app-template/public/apple-splash-2436-1125.jpg +0 -0
  83. package/app-template/public/apple-splash-2532-1170.jpg +0 -0
  84. package/app-template/public/apple-splash-2688-1242.jpg +0 -0
  85. package/app-template/public/apple-splash-2732-2048.jpg +0 -0
  86. package/app-template/public/apple-splash-2778-1284.jpg +0 -0
  87. package/app-template/public/apple-splash-640-1136.jpg +0 -0
  88. package/app-template/public/apple-splash-750-1334.jpg +0 -0
  89. package/app-template/public/apple-splash-828-1792.jpg +0 -0
  90. package/app-template/public/apple-touch-icon-152x152.png +0 -0
  91. package/app-template/public/apple-touch-icon-167x167.png +0 -0
  92. package/app-template/public/apple-touch-icon-180x180.png +0 -0
  93. package/app-template/public/apple-touch-icon.png +0 -0
  94. package/app-template/public/apple.svg +0 -47
  95. package/app-template/public/cvv.jpg +0 -0
  96. package/app-template/public/facebook.svg +0 -3
  97. package/app-template/public/google.svg +0 -12
  98. package/app-template/public/icon-192x192.png +0 -0
  99. package/app-template/public/icon-256x256.png +0 -0
  100. package/app-template/public/icon-384x384.png +0 -0
  101. package/app-template/public/icon-512x512.png +0 -0
  102. package/app-template/public/icon-sprite.svg +0 -528
  103. package/app-template/public/locales/en/account.json +0 -487
  104. package/app-template/public/locales/en/auth.json +0 -100
  105. package/app-template/public/locales/en/basket.json +0 -50
  106. package/app-template/public/locales/en/category.json +0 -26
  107. package/app-template/public/locales/en/checkout.json +0 -152
  108. package/app-template/public/locales/en/common.json +0 -65
  109. package/app-template/public/locales/en/forgot_password.json +0 -41
  110. package/app-template/public/locales/en/form.json +0 -5
  111. package/app-template/public/locales/en/product.json +0 -39
  112. package/app-template/public/locales/tr/account.json +0 -487
  113. package/app-template/public/locales/tr/auth.json +0 -100
  114. package/app-template/public/locales/tr/basket.json +0 -50
  115. package/app-template/public/locales/tr/category.json +0 -26
  116. package/app-template/public/locales/tr/checkout.json +0 -152
  117. package/app-template/public/locales/tr/common.json +0 -65
  118. package/app-template/public/locales/tr/forgot_password.json +0 -41
  119. package/app-template/public/locales/tr/form.json +0 -5
  120. package/app-template/public/locales/tr/product.json +0 -39
  121. package/app-template/public/logo.svg +0 -29
  122. package/app-template/public/manifest.json +0 -35
  123. package/app-template/public/mastercard.png +0 -0
  124. package/app-template/public/mastersecure.png +0 -0
  125. package/app-template/public/mfs-client.min.js +0 -3
  126. package/app-template/public/noimage.jpg +0 -0
  127. package/app-template/public/safari-pinned-tab.svg +0 -320
  128. package/app-template/public/ssl-secure.png +0 -0
  129. package/app-template/public/vbv.png +0 -0
  130. package/app-template/public/visa.png +0 -0
  131. package/app-template/public/zepto.min.js +0 -2
  132. package/app-template/sentry.client.config.ts +0 -16
  133. package/app-template/sentry.edge.config.ts +0 -3
  134. package/app-template/sentry.properties +0 -4
  135. package/app-template/sentry.server.config.ts +0 -3
  136. package/app-template/setupTests.ts +0 -4
  137. package/app-template/src/__tests__/index.test.tsx +0 -7
  138. package/app-template/src/__tests__/tsconfig.json +0 -7
  139. package/app-template/src/app/[commerce]/[locale]/[currency]/account/address/page.tsx +0 -74
  140. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-email/page.tsx +0 -174
  141. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-password/page.tsx +0 -206
  142. package/app-template/src/app/[commerce]/[locale]/[currency]/account/contact/page.tsx +0 -7
  143. package/app-template/src/app/[commerce]/[locale]/[currency]/account/coupons/page.tsx +0 -210
  144. package/app-template/src/app/[commerce]/[locale]/[currency]/account/email-verification/page.tsx +0 -5
  145. package/app-template/src/app/[commerce]/[locale]/[currency]/account/faq/page.tsx +0 -23
  146. package/app-template/src/app/[commerce]/[locale]/[currency]/account/favourite-products/page.tsx +0 -32
  147. package/app-template/src/app/[commerce]/[locale]/[currency]/account/layout.tsx +0 -28
  148. package/app-template/src/app/[commerce]/[locale]/[currency]/account/my-quotations/page.tsx +0 -7
  149. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/cancellation/page.tsx +0 -255
  150. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/layout.tsx +0 -5
  151. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/page.tsx +0 -309
  152. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/page.tsx +0 -137
  153. package/app-template/src/app/[commerce]/[locale]/[currency]/account/page.tsx +0 -226
  154. package/app-template/src/app/[commerce]/[locale]/[currency]/account/profile/page.tsx +0 -399
  155. package/app-template/src/app/[commerce]/[locale]/[currency]/address/stores/page.tsx +0 -271
  156. package/app-template/src/app/[commerce]/[locale]/[currency]/anonymous-tracking/page.tsx +0 -33
  157. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/oauth-login/page.tsx +0 -3
  158. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/page.tsx +0 -76
  159. package/app-template/src/app/[commerce]/[locale]/[currency]/basket/page.tsx +0 -77
  160. package/app-template/src/app/[commerce]/[locale]/[currency]/basket-b2b/page.tsx +0 -7
  161. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/loading.tsx +0 -53
  162. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/page.tsx +0 -16
  163. package/app-template/src/app/[commerce]/[locale]/[currency]/client-root.tsx +0 -9
  164. package/app-template/src/app/[commerce]/[locale]/[currency]/contact-us/page.tsx +0 -11
  165. package/app-template/src/app/[commerce]/[locale]/[currency]/error.tsx +0 -20
  166. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/loading.tsx +0 -5
  167. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/page.tsx +0 -18
  168. package/app-template/src/app/[commerce]/[locale]/[currency]/forms/[pk]/generate/page.tsx +0 -48
  169. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/loading.tsx +0 -5
  170. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/page.tsx +0 -72
  171. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/loading.tsx +0 -5
  172. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/page.tsx +0 -23
  173. package/app-template/src/app/[commerce]/[locale]/[currency]/layout.tsx +0 -78
  174. package/app-template/src/app/[commerce]/[locale]/[currency]/list/loading.tsx +0 -53
  175. package/app-template/src/app/[commerce]/[locale]/[currency]/list/page.tsx +0 -16
  176. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/checkout/page.tsx +0 -140
  177. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/layout.tsx +0 -5
  178. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/page.tsx +0 -285
  179. package/app-template/src/app/[commerce]/[locale]/[currency]/page.tsx +0 -50
  180. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/loading.tsx +0 -67
  181. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/page.tsx +0 -81
  182. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/loading.tsx +0 -53
  183. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/page.tsx +0 -25
  184. package/app-template/src/app/[commerce]/[locale]/[currency]/template.tsx +0 -75
  185. package/app-template/src/app/[commerce]/[locale]/[currency]/users/email-set-primary/[[...id]]/page.tsx +0 -43
  186. package/app-template/src/app/[commerce]/[locale]/[currency]/users/password/reset/page.tsx +0 -79
  187. package/app-template/src/app/[commerce]/[locale]/[currency]/users/registration/account-confirm-email/[[...id]]/page.tsx +0 -43
  188. package/app-template/src/app/[commerce]/[locale]/[currency]/users/reset/[[...id]]/page.tsx +0 -110
  189. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/[node]/route.ts +0 -25
  190. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/route.ts +0 -37
  191. package/app-template/src/app/api/cache/route.ts +0 -1
  192. package/app-template/src/app/api/client/[...slug]/route.ts +0 -1
  193. package/app-template/src/app/api/form/[...id]/route.ts +0 -7
  194. package/app-template/src/app/api/logout/route.ts +0 -1
  195. package/app-template/src/app/api/sentry/route.ts +0 -9
  196. package/app-template/src/app/api/web-vitals/route.ts +0 -1
  197. package/app-template/src/app/favicon.ico +0 -0
  198. package/app-template/src/assets/fonts/Jost/Jost-Black.eot +0 -0
  199. package/app-template/src/assets/fonts/Jost/Jost-Black.ttf +0 -0
  200. package/app-template/src/assets/fonts/Jost/Jost-Black.woff +0 -0
  201. package/app-template/src/assets/fonts/Jost/Jost-Black.woff2 +0 -0
  202. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.eot +0 -0
  203. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.ttf +0 -0
  204. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff +0 -0
  205. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff2 +0 -0
  206. package/app-template/src/assets/fonts/Jost/Jost-Bold.eot +0 -0
  207. package/app-template/src/assets/fonts/Jost/Jost-Bold.ttf +0 -0
  208. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff +0 -0
  209. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff2 +0 -0
  210. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.eot +0 -0
  211. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.ttf +0 -0
  212. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff +0 -0
  213. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff2 +0 -0
  214. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.eot +0 -0
  215. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.ttf +0 -0
  216. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff +0 -0
  217. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff2 +0 -0
  218. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.eot +0 -0
  219. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.ttf +0 -0
  220. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff +0 -0
  221. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff2 +0 -0
  222. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.eot +0 -0
  223. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.ttf +0 -0
  224. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff +0 -0
  225. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff2 +0 -0
  226. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.eot +0 -0
  227. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.ttf +0 -0
  228. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff +0 -0
  229. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff2 +0 -0
  230. package/app-template/src/assets/fonts/Jost/Jost-Italic.eot +0 -0
  231. package/app-template/src/assets/fonts/Jost/Jost-Italic.ttf +0 -0
  232. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff +0 -0
  233. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff2 +0 -0
  234. package/app-template/src/assets/fonts/Jost/Jost-Light.eot +0 -0
  235. package/app-template/src/assets/fonts/Jost/Jost-Light.ttf +0 -0
  236. package/app-template/src/assets/fonts/Jost/Jost-Light.woff +0 -0
  237. package/app-template/src/assets/fonts/Jost/Jost-Light.woff2 +0 -0
  238. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.eot +0 -0
  239. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.ttf +0 -0
  240. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff +0 -0
  241. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff2 +0 -0
  242. package/app-template/src/assets/fonts/Jost/Jost-Medium.eot +0 -0
  243. package/app-template/src/assets/fonts/Jost/Jost-Medium.ttf +0 -0
  244. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff +0 -0
  245. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff2 +0 -0
  246. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.eot +0 -0
  247. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.ttf +0 -0
  248. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff +0 -0
  249. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff2 +0 -0
  250. package/app-template/src/assets/fonts/Jost/Jost-Regular.eot +0 -0
  251. package/app-template/src/assets/fonts/Jost/Jost-Regular.ttf +0 -0
  252. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff +0 -0
  253. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff2 +0 -0
  254. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.eot +0 -0
  255. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.ttf +0 -0
  256. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff +0 -0
  257. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff2 +0 -0
  258. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.eot +0 -0
  259. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.ttf +0 -0
  260. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff +0 -0
  261. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff2 +0 -0
  262. package/app-template/src/assets/fonts/Jost/Jost-Thin.eot +0 -0
  263. package/app-template/src/assets/fonts/Jost/Jost-Thin.ttf +0 -0
  264. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff +0 -0
  265. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff2 +0 -0
  266. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.eot +0 -0
  267. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.ttf +0 -0
  268. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff +0 -0
  269. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff2 +0 -0
  270. package/app-template/src/assets/fonts/Jost/index.scss +0 -269
  271. package/app-template/src/assets/fonts/index.scss +0 -1
  272. package/app-template/src/assets/fonts/pz-icon.css +0 -154
  273. package/app-template/src/assets/fonts/pz-icon.eot +0 -0
  274. package/app-template/src/assets/fonts/pz-icon.html +0 -456
  275. package/app-template/src/assets/fonts/pz-icon.scss +0 -300
  276. package/app-template/src/assets/fonts/pz-icon.svg +0 -144
  277. package/app-template/src/assets/fonts/pz-icon.ttf +0 -0
  278. package/app-template/src/assets/fonts/pz-icon.woff +0 -0
  279. package/app-template/src/assets/fonts/pz-icon.woff2 +0 -0
  280. package/app-template/src/assets/globals.scss +0 -65
  281. package/app-template/src/assets/icons/akinon.svg +0 -11
  282. package/app-template/src/assets/icons/arrow-up.svg +0 -11
  283. package/app-template/src/assets/icons/bell.svg +0 -1
  284. package/app-template/src/assets/icons/cart.svg +0 -13
  285. package/app-template/src/assets/icons/check.svg +0 -19
  286. package/app-template/src/assets/icons/chevron-down.svg +0 -8
  287. package/app-template/src/assets/icons/chevron-end.svg +0 -8
  288. package/app-template/src/assets/icons/chevron-start.svg +0 -8
  289. package/app-template/src/assets/icons/chevron-up.svg +0 -8
  290. package/app-template/src/assets/icons/close.svg +0 -12
  291. package/app-template/src/assets/icons/cvc.svg +0 -54
  292. package/app-template/src/assets/icons/default.svg +0 -6
  293. package/app-template/src/assets/icons/directions.svg +0 -14
  294. package/app-template/src/assets/icons/eye-off.svg +0 -10
  295. package/app-template/src/assets/icons/eye-on.svg +0 -17
  296. package/app-template/src/assets/icons/facebook-login.svg +0 -11
  297. package/app-template/src/assets/icons/facebook.svg +0 -9
  298. package/app-template/src/assets/icons/giftbox.svg +0 -22
  299. package/app-template/src/assets/icons/globe.svg +0 -12
  300. package/app-template/src/assets/icons/google-login.svg +0 -19
  301. package/app-template/src/assets/icons/google.svg +0 -9
  302. package/app-template/src/assets/icons/hamburger.svg +0 -5
  303. package/app-template/src/assets/icons/heart-full.svg +0 -20
  304. package/app-template/src/assets/icons/heart-stroke.svg +0 -22
  305. package/app-template/src/assets/icons/info.svg +0 -1
  306. package/app-template/src/assets/icons/instagram.svg +0 -14
  307. package/app-template/src/assets/icons/layout-2.svg +0 -7
  308. package/app-template/src/assets/icons/layout-3.svg +0 -4
  309. package/app-template/src/assets/icons/logo.svg +0 -24
  310. package/app-template/src/assets/icons/mail.svg +0 -1
  311. package/app-template/src/assets/icons/minus.svg +0 -4
  312. package/app-template/src/assets/icons/money.svg +0 -4
  313. package/app-template/src/assets/icons/mp-otp.svg +0 -1
  314. package/app-template/src/assets/icons/pin.svg +0 -16
  315. package/app-template/src/assets/icons/pinterest.svg +0 -12
  316. package/app-template/src/assets/icons/plus.svg +0 -5
  317. package/app-template/src/assets/icons/search.svg +0 -13
  318. package/app-template/src/assets/icons/share.svg +0 -10
  319. package/app-template/src/assets/icons/spinner.svg +0 -6
  320. package/app-template/src/assets/icons/store-pin.svg +0 -14
  321. package/app-template/src/assets/icons/track-order.svg +0 -1
  322. package/app-template/src/assets/icons/twitter.svg +0 -11
  323. package/app-template/src/assets/icons/user.svg +0 -14
  324. package/app-template/src/assets/icons/whatsapp.svg +0 -45
  325. package/app-template/src/components/__tests__/Modal.test.tsx +0 -103
  326. package/app-template/src/components/__tests__/accordion.test.tsx +0 -65
  327. package/app-template/src/components/__tests__/badge.test.tsx +0 -20
  328. package/app-template/src/components/__tests__/button.test.tsx +0 -59
  329. package/app-template/src/components/__tests__/checkbox.test.tsx +0 -57
  330. package/app-template/src/components/__tests__/file-input.test.tsx +0 -42
  331. package/app-template/src/components/__tests__/icon.test.tsx +0 -39
  332. package/app-template/src/components/__tests__/input.test.tsx +0 -69
  333. package/app-template/src/components/__tests__/language-select.test.tsx +0 -81
  334. package/app-template/src/components/__tests__/link.test.tsx +0 -65
  335. package/app-template/src/components/__tests__/price.test.tsx +0 -72
  336. package/app-template/src/components/__tests__/radio.test.tsx +0 -52
  337. package/app-template/src/components/__tests__/select.test.tsx +0 -115
  338. package/app-template/src/components/__tests__/tab.test.tsx +0 -101
  339. package/app-template/src/components/accordion.tsx +0 -64
  340. package/app-template/src/components/badge.tsx +0 -21
  341. package/app-template/src/components/button.tsx +0 -46
  342. package/app-template/src/components/canonical-url.tsx +0 -21
  343. package/app-template/src/components/carousel-core.tsx +0 -42
  344. package/app-template/src/components/checkbox.tsx +0 -28
  345. package/app-template/src/components/currency-select.tsx +0 -81
  346. package/app-template/src/components/custom-loader.tsx +0 -21
  347. package/app-template/src/components/dynamic-form.tsx +0 -17
  348. package/app-template/src/components/file-input.tsx +0 -8
  349. package/app-template/src/components/generate-form-fields.tsx +0 -349
  350. package/app-template/src/components/icon.tsx +0 -18
  351. package/app-template/src/components/index.ts +0 -41
  352. package/app-template/src/components/input.tsx +0 -110
  353. package/app-template/src/components/language-select.tsx +0 -33
  354. package/app-template/src/components/link.tsx +0 -53
  355. package/app-template/src/components/loader-spinner.tsx +0 -23
  356. package/app-template/src/components/modal.tsx +0 -66
  357. package/app-template/src/components/pagination.tsx +0 -267
  358. package/app-template/src/components/password-rules-feedback.tsx +0 -60
  359. package/app-template/src/components/price.tsx +0 -54
  360. package/app-template/src/components/pwa-tags.tsx +0 -233
  361. package/app-template/src/components/radio.tsx +0 -18
  362. package/app-template/src/components/react-portal.tsx +0 -47
  363. package/app-template/src/components/select.tsx +0 -70
  364. package/app-template/src/components/shimmer.tsx +0 -21
  365. package/app-template/src/components/skeleton-article.tsx +0 -15
  366. package/app-template/src/components/skeleton-product.tsx +0 -14
  367. package/app-template/src/components/skeleton-profile.tsx +0 -19
  368. package/app-template/src/components/skeleton-wrapper.tsx +0 -19
  369. package/app-template/src/components/skeleton.tsx +0 -37
  370. package/app-template/src/components/source.tsx +0 -12
  371. package/app-template/src/components/tab-panel.tsx +0 -10
  372. package/app-template/src/components/tab.tsx +0 -58
  373. package/app-template/src/components/tabs.tsx +0 -58
  374. package/app-template/src/components/types/index.ts +0 -89
  375. package/app-template/src/hooks/index.ts +0 -1
  376. package/app-template/src/hooks/use-add-product-to-basket.ts +0 -48
  377. package/app-template/src/hooks/use-contract.tsx +0 -58
  378. package/app-template/src/hooks/use-fav-button.tsx +0 -99
  379. package/app-template/src/instrumentation.ts +0 -1
  380. package/app-template/src/middleware.ts +0 -33
  381. package/app-template/src/pages/_error.js +0 -14
  382. package/app-template/src/pages/api/auth/[...nextauth].ts +0 -3
  383. package/app-template/src/plugins.js +0 -14
  384. package/app-template/src/redux/middlewares/category.ts +0 -42
  385. package/app-template/src/redux/reducers/category.ts +0 -67
  386. package/app-template/src/redux/store.ts +0 -47
  387. package/app-template/src/routes/index.ts +0 -46
  388. package/app-template/src/settings.js +0 -62
  389. package/app-template/src/theme.js +0 -1
  390. package/app-template/src/types/index.ts +0 -72
  391. package/app-template/src/types/next-auth.d.ts +0 -24
  392. package/app-template/src/types/widgets.ts +0 -115
  393. package/app-template/src/utils/convert-facet-search-params.ts +0 -15
  394. package/app-template/src/utils/generate-jsonld.ts +0 -23
  395. package/app-template/src/utils/gtm.ts +0 -247
  396. package/app-template/src/utils/index.ts +0 -60
  397. package/app-template/src/views/account/account-menu.tsx +0 -117
  398. package/app-template/src/views/account/address-card.tsx +0 -107
  399. package/app-template/src/views/account/address-form.tsx +0 -374
  400. package/app-template/src/views/account/back-button.tsx +0 -27
  401. package/app-template/src/views/account/contact-form.tsx +0 -283
  402. package/app-template/src/views/account/content-header.tsx +0 -52
  403. package/app-template/src/views/account/faq/faq-footer.tsx +0 -30
  404. package/app-template/src/views/account/faq/faq-search.tsx +0 -35
  405. package/app-template/src/views/account/faq/faq-tabs.tsx +0 -54
  406. package/app-template/src/views/account/faq/index.ts +0 -3
  407. package/app-template/src/views/account/favorite-item.tsx +0 -191
  408. package/app-template/src/views/account/favourite-products/favourite-products-list.tsx +0 -65
  409. package/app-template/src/views/account/index.ts +0 -4
  410. package/app-template/src/views/account/order.tsx +0 -89
  411. package/app-template/src/views/account/orders/order-cancellation-item.tsx +0 -99
  412. package/app-template/src/views/account/orders/order-detail-header.tsx +0 -39
  413. package/app-template/src/views/anonymous-tracking/index.tsx +0 -109
  414. package/app-template/src/views/anonymous-tracking/order-detail/index.tsx +0 -318
  415. package/app-template/src/views/basket/basket-item.tsx +0 -231
  416. package/app-template/src/views/basket/index.ts +0 -2
  417. package/app-template/src/views/basket/summary.tsx +0 -195
  418. package/app-template/src/views/breadcrumb.tsx +0 -35
  419. package/app-template/src/views/category/category-active-filters.tsx +0 -98
  420. package/app-template/src/views/category/category-banner.tsx +0 -34
  421. package/app-template/src/views/category/category-header.tsx +0 -143
  422. package/app-template/src/views/category/category-info.tsx +0 -123
  423. package/app-template/src/views/category/filters/index.tsx +0 -163
  424. package/app-template/src/views/category/filters/size-filter.tsx +0 -27
  425. package/app-template/src/views/category/layout.tsx +0 -38
  426. package/app-template/src/views/checkout/auth.tsx +0 -54
  427. package/app-template/src/views/checkout/index.tsx +0 -3
  428. package/app-template/src/views/checkout/layout/footer.tsx +0 -48
  429. package/app-template/src/views/checkout/layout/header.tsx +0 -38
  430. package/app-template/src/views/checkout/step-button.tsx +0 -69
  431. package/app-template/src/views/checkout/step-list.tsx +0 -51
  432. package/app-template/src/views/checkout/steps/payment/agreements.tsx +0 -42
  433. package/app-template/src/views/checkout/steps/payment/index.tsx +0 -31
  434. package/app-template/src/views/checkout/steps/payment/options/credit-card/index.tsx +0 -382
  435. package/app-template/src/views/checkout/steps/payment/options/credit-card/installments.tsx +0 -100
  436. package/app-template/src/views/checkout/steps/payment/options/credit-payment.tsx +0 -14
  437. package/app-template/src/views/checkout/steps/payment/options/funds-transfer.tsx +0 -174
  438. package/app-template/src/views/checkout/steps/payment/options/loyalty.tsx +0 -19
  439. package/app-template/src/views/checkout/steps/payment/options/pay-on-delivery.tsx +0 -15
  440. package/app-template/src/views/checkout/steps/payment/options/redirection.tsx +0 -94
  441. package/app-template/src/views/checkout/steps/payment/payment-header.tsx +0 -17
  442. package/app-template/src/views/checkout/steps/payment/payment-option-buttons.tsx +0 -73
  443. package/app-template/src/views/checkout/steps/shipping/address-box.tsx +0 -204
  444. package/app-template/src/views/checkout/steps/shipping/addresses.tsx +0 -189
  445. package/app-template/src/views/checkout/steps/shipping/index.tsx +0 -27
  446. package/app-template/src/views/checkout/steps/shipping/shipping-options.tsx +0 -72
  447. package/app-template/src/views/checkout/summary.tsx +0 -181
  448. package/app-template/src/views/coupon-item/index.tsx +0 -80
  449. package/app-template/src/views/find-in-store/index.tsx +0 -183
  450. package/app-template/src/views/footer.tsx +0 -21
  451. package/app-template/src/views/guest-login/index.tsx +0 -130
  452. package/app-template/src/views/header/action-menu.tsx +0 -117
  453. package/app-template/src/views/header/band.tsx +0 -32
  454. package/app-template/src/views/header/index.tsx +0 -66
  455. package/app-template/src/views/header/mini-basket.tsx +0 -267
  456. package/app-template/src/views/header/mobile-hamburger-button.tsx +0 -35
  457. package/app-template/src/views/header/mobile-menu.tsx +0 -144
  458. package/app-template/src/views/header/navbar.tsx +0 -186
  459. package/app-template/src/views/header/pwa-back-button.tsx +0 -60
  460. package/app-template/src/views/header/search/index.tsx +0 -82
  461. package/app-template/src/views/header/search/results.tsx +0 -122
  462. package/app-template/src/views/header/user-menu.tsx +0 -72
  463. package/app-template/src/views/index.tsx +0 -2
  464. package/app-template/src/views/installment-options/index.tsx +0 -127
  465. package/app-template/src/views/login/index.tsx +0 -233
  466. package/app-template/src/views/otp-login/index.tsx +0 -152
  467. package/app-template/src/views/page-loader-spinner/index.tsx +0 -9
  468. package/app-template/src/views/product/accordion-wrapper.tsx +0 -47
  469. package/app-template/src/views/product/combine-product-card.tsx +0 -82
  470. package/app-template/src/views/product/index.ts +0 -8
  471. package/app-template/src/views/product/layout.tsx +0 -40
  472. package/app-template/src/views/product/misc-buttons.tsx +0 -65
  473. package/app-template/src/views/product/price-wrapper.tsx +0 -41
  474. package/app-template/src/views/product/product-group-info.tsx +0 -63
  475. package/app-template/src/views/product/product-info.tsx +0 -253
  476. package/app-template/src/views/product/slider.tsx +0 -92
  477. package/app-template/src/views/product/variant.tsx +0 -104
  478. package/app-template/src/views/product-item/index.tsx +0 -96
  479. package/app-template/src/views/product-pointer-banner-item.tsx +0 -243
  480. package/app-template/src/views/register/index.tsx +0 -417
  481. package/app-template/src/views/root-modal.tsx +0 -21
  482. package/app-template/src/views/sales-contract-modal/index.tsx +0 -288
  483. package/app-template/src/views/share/index.tsx +0 -71
  484. package/app-template/src/views/widgets/home-hero-slider-content.tsx +0 -54
  485. package/app-template/src/views/widgets/recommendation-content.tsx +0 -86
  486. package/app-template/src/widgets/footer-copyright.tsx +0 -25
  487. package/app-template/src/widgets/footer-info.tsx +0 -78
  488. package/app-template/src/widgets/footer-menu.tsx +0 -258
  489. package/app-template/src/widgets/footer-social.tsx +0 -53
  490. package/app-template/src/widgets/footer-subscription/footer-subscription-form.tsx +0 -110
  491. package/app-template/src/widgets/footer-subscription/index.tsx +0 -30
  492. package/app-template/src/widgets/header-band-text.tsx +0 -21
  493. package/app-template/src/widgets/home-discovery.tsx +0 -191
  494. package/app-template/src/widgets/home-hero-slider.tsx +0 -36
  495. package/app-template/src/widgets/home-product-recommendation.tsx +0 -18
  496. package/app-template/src/widgets/home-single-banner.tsx +0 -87
  497. package/app-template/src/widgets/home-stories-eng.tsx +0 -112
  498. package/app-template/src/widgets/index.ts +0 -25
  499. package/app-template/src/widgets/product-pointer-banners.tsx +0 -35
  500. package/app-template/src/widgets/special-page-banner.tsx +0 -49
  501. package/app-template/src/widgets/special-page-carousel.tsx +0 -68
  502. package/app-template/src/widgets/widget-order.tsx +0 -1
  503. package/app-template/tailwind.config.js +0 -170
  504. package/app-template/tsconfig.json +0 -44
  505. package/app-template/tsconfig.test.json +0 -6
  506. package/app-template/yarn.lock +0 -11278
@@ -1,140 +0,0 @@
1
- 'use client';
2
-
3
- import { CheckoutStepList, Summary } from '@theme/views/checkout';
4
- import PaymentStep from '@theme/views/checkout/steps/payment';
5
- import ShippingStep from '@theme/views/checkout/steps/shipping';
6
- import { useEffect, useMemo, useRef } from 'react';
7
- import { useAppDispatch, useAppSelector } from '@akinon/next/redux/hooks';
8
- import {
9
- resetCheckoutState,
10
- setCurrentStep
11
- } from '@akinon/next/redux/reducers/checkout';
12
- import { RootState } from '@theme/redux/store';
13
- import { ROUTES } from '@theme/routes';
14
- import { useFetchCheckoutQuery } from '@akinon/next/data/client/checkout';
15
- import { Button, LoaderSpinner } from '@theme/components';
16
- import { pushAddPaymentInfo, pushAddShippingInfo } from '@theme/utils/gtm';
17
- import { CheckoutStep } from '@akinon/next/types';
18
- import { useRouter, useLocalization } from '@akinon/next/hooks';
19
- import dynamic from 'next/dynamic';
20
- import PluginModule, { Component } from '@akinon/next/components/plugin-module';
21
-
22
- const Checkout = () => {
23
- const { t } = useLocalization();
24
- const { steps, preOrder } = useAppSelector(
25
- (state: RootState) => state.checkout
26
- );
27
-
28
- const {
29
- data: checkoutData,
30
- isFetching,
31
- isError,
32
- isSuccess,
33
- refetch: refetchCheckout
34
- } = useFetchCheckoutQuery(null, {
35
- refetchOnMountOrArgChange: true
36
- });
37
- const initialStepChanged = useRef<boolean>(false);
38
- const router = useRouter();
39
- const dispatch = useAppDispatch();
40
-
41
- const CheckoutAuth = useMemo(
42
- () =>
43
- dynamic(() => {
44
- return import('@theme/views/checkout/auth');
45
- }),
46
- []
47
- );
48
-
49
- useEffect(() => {
50
- if (steps.shipping.completed && !initialStepChanged.current) {
51
- dispatch(setCurrentStep(CheckoutStep.Payment));
52
- initialStepChanged.current = true;
53
- }
54
- }, [steps.shipping.completed]);
55
-
56
- useEffect(() => {
57
- if (preOrder && !preOrder.shipping_option) {
58
- initialStepChanged.current = true;
59
- }
60
- }, [preOrder]);
61
-
62
- useEffect(() => {
63
- return () => {
64
- dispatch(resetCheckoutState());
65
- };
66
- }, []);
67
-
68
- useEffect(() => {
69
- if (isSuccess) {
70
- const products = checkoutData?.pre_order?.basket?.basketitem_set.map(
71
- (basketItem) => ({
72
- ...basketItem.product
73
- })
74
- );
75
- if (steps.current === 'shipping') {
76
- pushAddShippingInfo(products);
77
- }
78
- if (steps.current === 'payment') {
79
- pushAddPaymentInfo(products, String(preOrder?.payment_option?.name));
80
- }
81
- }
82
- }, [isSuccess, steps, checkoutData, preOrder?.payment_option?.name]);
83
-
84
- if (checkoutData?.redirect_url?.includes('basket')) {
85
- router.push(ROUTES.BASKET);
86
- return null;
87
- }
88
-
89
- if (checkoutData?.template_name === 'orders/index.html') {
90
- return (
91
- <section className="container px-4 my-7 md:mt-20 lg:px-0 lg:mx-auto">
92
- <CheckoutAuth />
93
- </section>
94
- );
95
- }
96
-
97
- if (isFetching || isError) {
98
- return (
99
- <div className="flex flex-col items-center justify-center h-80">
100
- {isFetching ? (
101
- <LoaderSpinner />
102
- ) : (
103
- <>
104
- <div>{t('checkout.error.title')}</div>
105
- <div className="mt-5">
106
- <Button onClick={refetchCheckout}>
107
- {t('checkout.error.button')}
108
- </Button>
109
- </div>
110
- </>
111
- )}
112
- </div>
113
- );
114
- }
115
-
116
- return (
117
- <PluginModule component={Component.MasterpassProvider}>
118
- <PluginModule component={Component.MasterpassDeleteConfirmationModal} />
119
- <PluginModule component={Component.MasterpassOtpModal} />
120
- <PluginModule component={Component.MasterpassLinkModal} />
121
-
122
- <div className="container flex flex-col flex-wrap w-full px-4 md:px-0">
123
- <CheckoutStepList />
124
-
125
- <div className="w-full flex flex-wrap">
126
- <div className="w-full h-fit-content lg:w-2/3">
127
- {steps.current === CheckoutStep.Shipping && <ShippingStep />}
128
- {steps.current === CheckoutStep.Payment && <PaymentStep />}
129
- </div>
130
-
131
- <div className="w-full h-fit-content mt-6 lg:w-1/3 lg:pl-8 lg:mt-0">
132
- <Summary />
133
- </div>
134
- </div>
135
- </div>
136
- </PluginModule>
137
- );
138
- };
139
-
140
- export default Checkout;
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
-
3
- export default function Layout({ children }: { children: React.ReactNode }) {
4
- return <div>{children}</div>;
5
- }
@@ -1,285 +0,0 @@
1
- 'use client';
2
-
3
- import { useEffect, useRef } from 'react';
4
- import { useAppDispatch } from '@akinon/next/redux/hooks';
5
- import { setCurrentStep } from '@akinon/next/redux/reducers/checkout';
6
- import { ROUTES } from '@theme/routes';
7
- import { useFetchCheckoutResultQuery } from '@akinon/next/data/client/checkout';
8
- import { CheckoutStep, PageProps } from '@akinon/next/types';
9
- import { CarouselCore } from '@theme/components/carousel-core';
10
- import { Price, Button, Icon, LoaderSpinner, Link } from '@theme/components';
11
- import { CheckoutStepList } from '@theme/views/checkout';
12
- import { useLocalization } from '@akinon/next/hooks';
13
- import { Image } from '@akinon/next/components/image';
14
- import { Trans } from '@akinon/next/components/trans';
15
- import { pushPurchaseEvent } from '@theme/utils/gtm';
16
-
17
- const CheckoutCompleted = ({
18
- params
19
- }: PageProps<{
20
- token: string;
21
- }>) => {
22
- const { t } = useLocalization();
23
- const dispatch = useAppDispatch();
24
-
25
- const { data, isLoading } = useFetchCheckoutResultQuery(String(params.token));
26
-
27
- const carouselRef = useRef(null);
28
-
29
- const goToPrev = () => {
30
- carouselRef.current?.previous();
31
- };
32
-
33
- const goToNext = () => {
34
- carouselRef.current?.next();
35
- };
36
-
37
- useEffect(() => {
38
- dispatch(setCurrentStep(CheckoutStep.Confirmation));
39
-
40
- return () => {
41
- dispatch(setCurrentStep(CheckoutStep.Shipping));
42
- };
43
- }, []);
44
-
45
- useEffect(() => {
46
- if (data?.order) {
47
- pushPurchaseEvent(data?.order);
48
- }
49
- }, [data]);
50
-
51
- if (isLoading) {
52
- return (
53
- <div className="flex items-center justify-center min-h-[300px]">
54
- <LoaderSpinner />
55
- </div>
56
- );
57
- }
58
-
59
- if (!data || !data?.order) {
60
- return (
61
- <div className="flex items-center justify-center py-20">
62
- {t('checkout.completed.not_found')}
63
- </div>
64
- );
65
- }
66
-
67
- const LinkText = (props) => {
68
- return (
69
- <Link
70
- {...props}
71
- href={props.href || '#'}
72
- className="underline cursor-pointer transition-all hover:text-secondary"
73
- passHref
74
- >
75
- <span data-testid="order-number">{props.orderNumber}</span>
76
- </Link>
77
- );
78
- };
79
-
80
- return (
81
- <div className="container pb-16 px-4 lg:px-0">
82
- <CheckoutStepList />
83
-
84
- <div className="flex flex-wrap">
85
- <div className="w-full lg:w-6/10 2xl:w-2/3 mb-6 lg:mb-0">
86
- <div className="p-6 w-full h-full border border-solid border-gray-400 md:px-20 md:py-14">
87
- <div className="mb-4 text-black-800 text-xl font-light sm:text-2xl md:mb-8">
88
- {t('checkout.completed.title')}
89
- </div>
90
- <div className="text-xs leading-6 text-black-400 mb-6">
91
- <p>{t('checkout.completed.thank_you')}</p>
92
- <p>
93
- <Trans
94
- i18nKey="checkout.completed.confirmation_message"
95
- components={{
96
- OrderNumber: (
97
- <LinkText
98
- href={`${ROUTES.ACCOUNT_ORDERS}/${data.order.id}`}
99
- orderNumber={data.order.number}
100
- />
101
- )
102
- }}
103
- />
104
- </p>
105
- <p>{t('checkout.completed.purchase_info')}</p>
106
- </div>
107
- <div>
108
- <div className="mb-4">
109
- <div className="text-xs text-gray-950 uppercase tracking-wider mb-1">
110
- {t('checkout.completed.your_email')}
111
- </div>
112
- <div className="text-xs text-black-400">
113
- {data.order.user_email}
114
- </div>
115
- </div>
116
- <div className="mb-4">
117
- <div className="text-xs text-gray-950 uppercase tracking-wider mb-1">
118
- {t('checkout.completed.order_total')}
119
- </div>
120
- <div className="text-xs text-black-400">
121
- <Price
122
- value={data.order.amount}
123
- data-testid="order-total-price"
124
- />
125
- </div>
126
- </div>
127
- <div className="mb-8">
128
- <div className="text-xs text-gray-950 uppercase tracking-wider mb-1">
129
- {t('checkout.completed.payment_type')}
130
- </div>
131
- <div
132
- className="text-xs text-black-400"
133
- data-testid="order-payment-type"
134
- >
135
- {data.order.payment_option.name}
136
- </div>
137
- </div>
138
- </div>
139
- <div>
140
- <div className="flex items-center justify-center border-t border-solid border-gray-400 py-6">
141
- <span className="text-black-800 text-lg font-light">
142
- {t('checkout.completed.order_summary')}
143
- </span>
144
- <span className="text-gray-950 text-sm ml-4">
145
- <span data-testid="order-item-count">
146
- {data.order.orderitem_set.length}
147
- </span>{' '}
148
- {t('checkout.completed.items')}
149
- </span>
150
- </div>
151
- <div className="flex gap-6">
152
- <div
153
- onClick={goToPrev}
154
- className="items-center justify-center hidden sm:flex"
155
- >
156
- <div className="flex justify-center p-2 border border-gray-100 rounded-full cursor-pointer">
157
- <Icon
158
- name="chevron-start"
159
- size={15}
160
- className="fill-[#000000]"
161
- />
162
- </div>
163
- </div>
164
- <div className="w-full overflow-hidden">
165
- <CarouselCore
166
- ref={carouselRef}
167
- responsive={{
168
- large: {
169
- breakpoint: { max: 5000, min: 1370 },
170
- items: 2
171
- },
172
- default: {
173
- breakpoint: { max: 1369, min: 0 },
174
- items: 1
175
- }
176
- }}
177
- swipeable={true}
178
- arrows={false}
179
- itemClass="pr-[50px]"
180
- containerAspectRatio={{
181
- mobile: 460 / 88,
182
- desktop: 637 / 88
183
- }}
184
- >
185
- {data.order.orderitem_set.map((item) => (
186
- <div key={`order-item-${item.id}`} className="flex">
187
- <Link href={item.product.absolute_url} passHref>
188
- <Image
189
- src={item.product.image}
190
- alt={item.product.name}
191
- width={64}
192
- height={96}
193
- />
194
- </Link>
195
- <div className="flex justify-between flex-1 items-center ml-4">
196
- <>
197
- <div className="text-xs text-black-800 transition-all w-full hover:text-secondary">
198
- {item.product.name}
199
- </div>
200
- </>
201
- <div>
202
- {item.retail_price !== item.price && (
203
- <div className="text-black-800 line-through text-xs min-w-max sm:text-sm">
204
- <Price value={item.retail_price} />
205
- </div>
206
- )}
207
- <div className="text-xs text-secondary min-w-max sm:text-sm">
208
- <Price value={item.price} />
209
- </div>
210
- </div>
211
- </div>
212
- </div>
213
- ))}
214
- </CarouselCore>
215
- </div>
216
- <div
217
- onClick={goToNext}
218
- className="items-center justify-center hidden sm:flex"
219
- >
220
- <div className="flex justify-center p-2 border border-gray-100 rounded-full cursor-pointer">
221
- <Icon
222
- name="chevron-end"
223
- size={15}
224
- className="fill-[#000000]"
225
- />
226
- </div>
227
- </div>
228
- </div>
229
- </div>
230
- </div>
231
- </div>
232
- <div className="w-full lg:pl-8 lg:w-4/10 2xl:w-1/3">
233
- <div className="p-6 w-full h-full border border-solid border-gray-400 md:px-20 md:py-14">
234
- <div className="mb-4 text-black-800 text-xl font-light sm:text-2xl md:mb-8">
235
- {t('checkout.completed.side.whats_next')}
236
- </div>
237
- <div className="text-xs leading-6 text-black-400 mb-6">
238
- <p>{t('checkout.completed.side.description_first')}</p>
239
- </div>
240
- <div className="text-xs leading-6 text-black-400 mb-6">
241
- <p>{t('checkout.completed.side.description_second')}:</p>
242
- <ul>
243
- <li>
244
- <Link
245
- href={ROUTES.ACCOUNT_CONTACT}
246
- className="underline cursor-pointer transition-all hover:text-secondary"
247
- >
248
- {t('checkout.completed.side.help_contact')}
249
- </Link>
250
- </li>
251
- <li>
252
- <Link
253
- href={ROUTES.ACCOUNT}
254
- className="underline cursor-pointer transition-all hover:text-secondary"
255
- data-testid="order-my-account"
256
- >
257
- {t('checkout.completed.side.my_account')}
258
- </Link>
259
- </li>
260
- <li>
261
- <Link
262
- href={ROUTES.ACCOUNT_FAQ}
263
- className="underline cursor-pointer transition-all hover:text-secondary"
264
- >
265
- {t('checkout.completed.side.faq')}
266
- </Link>
267
- </li>
268
- </ul>
269
- <Button
270
- appearance="outlined"
271
- type="submit"
272
- className="w-full mt-8 font-bold"
273
- data-testid="order-new-items"
274
- >
275
- {t('checkout.completed.side.discover_new_items')}
276
- </Button>
277
- </div>
278
- </div>
279
- </div>
280
- </div>
281
- </div>
282
- );
283
- };
284
-
285
- export default CheckoutCompleted;
@@ -1,50 +0,0 @@
1
- import 'server-only';
2
-
3
- import { HOME_WIDGETS } from '@theme/widgets';
4
- import { getWidgetData } from '@akinon/next/data/server';
5
- import { withSegmentDefaults } from '@akinon/next/hocs/server';
6
- import LazyComponent from '@akinon/next/components/lazy-component';
7
-
8
- type HomeWidgetOrderType = {
9
- widget_order: Array<{
10
- value: { item_slug: string };
11
- kwargs: { value: object; data_type: string };
12
- }>;
13
- };
14
-
15
- export const dynamic = 'force-static';
16
- export const revalidate = 600;
17
-
18
- async function Page() {
19
- const data = await getWidgetData<HomeWidgetOrderType>({
20
- slug: 'home-widget-order'
21
- });
22
-
23
- if (!data?.attributes?.widget_order) {
24
- return null;
25
- }
26
-
27
- return data.attributes.widget_order.map((widget, index) => {
28
- const Widget = HOME_WIDGETS[widget.value.item_slug];
29
-
30
- if (Widget) {
31
- if (index > 2) {
32
- return (
33
- <LazyComponent key={widget.value.item_slug} className="min-h-[150px]">
34
- <Widget />
35
- </LazyComponent>
36
- );
37
- }
38
-
39
- return <Widget key={widget.value.item_slug} />;
40
- }
41
-
42
- return null;
43
- });
44
- }
45
-
46
- export async function generateStaticParams() {
47
- return [];
48
- }
49
-
50
- export default withSegmentDefaults(Page, { segmentType: 'page' });
@@ -1,67 +0,0 @@
1
- import { Skeleton, SkeletonWrapper } from 'components';
2
-
3
- export default function Loading() {
4
- return (
5
- <div className="container mx-auto">
6
- <div className="max-w-5xl mx-auto my-5 px-7">
7
- <SkeletonWrapper className="md:mb-7">
8
- <Skeleton className="w-[17.25rem] h-4 lg:w-64" />
9
- </SkeletonWrapper>
10
- </div>
11
- <div className="grid max-w-5xl grid-cols-2 lg:gap-8 mx-auto px-7">
12
- <div className="col-span-2 mb-7 md:mb-0 lg:col-span-1">
13
- <div className="flex gap-1">
14
- <SkeletonWrapper className="hidden md:block md:mb-7">
15
- {Array(5)
16
- .fill(null)
17
- .map((_, index) => (
18
- <Skeleton key={index} className="w-20 h-24 mb-2" />
19
- ))}
20
- </SkeletonWrapper>
21
-
22
- <div className="flex-1">
23
- <SkeletonWrapper className="md:mb-7">
24
- <Skeleton className="w-full h-[30.375rem] md:h-[36.375rem]" />
25
- </SkeletonWrapper>
26
- </div>
27
- </div>
28
- </div>
29
- <div className="flex flex-col items-center col-span-2 lg:col-span-1">
30
- <div className="w-full">
31
- <SkeletonWrapper className="w-full md:mb-7 flex justify-center items-center">
32
- <Skeleton className="w-96 h-16 mb-9" />
33
- <Skeleton className="hidden w-36 h-14 mb-9 md:block" />
34
-
35
- <div className="flex flex-col justify-center items-center mb-9">
36
- <Skeleton className="w-36 h-4 mb-2" />
37
- <div className="flex items-center gap-2">
38
- {Array(3)
39
- .fill(null)
40
- .map((_, index) => (
41
- <Skeleton key={index} className="w-24 h-10" />
42
- ))}
43
- </div>
44
- </div>
45
-
46
- <div className="flex flex-col justify-center items-center mb-4">
47
- <Skeleton className="w-36 h-4 mb-2" />
48
- <div className="flex items-center gap-2">
49
- {Array(5)
50
- .fill(null)
51
- .map((_, index) => (
52
- <Skeleton key={index} className="w-11 h-11" />
53
- ))}
54
- </div>
55
- </div>
56
-
57
- <Skeleton className="hidden w-full h-14 mb-6 md:block" />
58
- <Skeleton className="w-40 h-10 mb-9 md:w-72" />
59
- <Skeleton className="w-24 h-10 mb-7" />
60
- <Skeleton className="w-full h-36" />
61
- </SkeletonWrapper>
62
- </div>
63
- </div>
64
- </div>
65
- </div>
66
- );
67
- }
@@ -1,81 +0,0 @@
1
- import { getProductData, getWidgetData } from '@akinon/next/data/server';
2
- import { withSegmentDefaults } from '@akinon/next/hocs/server';
3
- import { PageProps, Metadata } from '@akinon/next/types';
4
- import { generateJsonLd } from '@theme/utils/generate-jsonld';
5
- import { AccordionWrapper, ProductInfo } from '@theme/views/product';
6
- import ProductLayout from '@theme/views/product/layout';
7
-
8
- export async function generateMetadata({
9
- params,
10
- searchParams
11
- }: PageProps<{ pk: number }>) {
12
- let result: Metadata = {};
13
-
14
- try {
15
- const {
16
- data: { product }
17
- } = await getProductData({
18
- pk: params.pk,
19
- searchParams
20
- });
21
-
22
- result = {
23
- title: product.name,
24
- description: String(product.attributes.description),
25
- twitter: {
26
- title: product.name,
27
- description: String(product.attributes.description)
28
- },
29
- openGraph: {
30
- title: product.name,
31
- description: String(product.attributes.description),
32
- images: product.productimage_set?.map((item) => ({
33
- url: item.image
34
- }))
35
- }
36
- };
37
- // eslint-disable-next-line no-empty
38
- } catch (error) {}
39
-
40
- return result;
41
- }
42
-
43
- async function Page({ params, searchParams }: PageProps<{ pk: number }>) {
44
- const [{ data, breadcrumbData }, deliveryReturn] = await Promise.all([
45
- getProductData({
46
- pk: params.pk,
47
- searchParams
48
- }),
49
- getWidgetData({ slug: 'product-delivery-returns' })
50
- ]);
51
-
52
- const jsonLd = generateJsonLd(data.product);
53
-
54
- return (
55
- <>
56
- <ProductLayout data={data} breadcrumbData={breadcrumbData}>
57
- <div className="flex flex-col items-center">
58
- <h1
59
- className="mt-4 text-2xl text-center md-mt-0"
60
- data-testid="product-name"
61
- >
62
- {data.product.name}
63
- </h1>
64
-
65
- <ProductInfo data={data} />
66
-
67
- <AccordionWrapper
68
- data={data}
69
- deliveryReturn={deliveryReturn?.attributes}
70
- />
71
- </div>
72
- </ProductLayout>
73
- <script
74
- type="application/ld+json"
75
- dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
76
- />
77
- </>
78
- );
79
- }
80
-
81
- export default withSegmentDefaults(Page, { segmentType: 'page' });
@@ -1,53 +0,0 @@
1
- import { Skeleton, SkeletonWrapper } from 'components';
2
-
3
- export default function Loading() {
4
- return (
5
- <div className="container p-4 mx-auto lg:px-0 lg:my-4">
6
- <SkeletonWrapper className="md:mb-7">
7
- <Skeleton className="w-[17.25rem] h-4 lg:w-64" />
8
- </SkeletonWrapper>
9
-
10
- <div className="w-full flex gap-8">
11
- <div className="hidden lg:block">
12
- <SkeletonWrapper className="w-[17.25rem] h-[650px] shrink-0">
13
- <Skeleton className="w-full h-full" />
14
- </SkeletonWrapper>
15
- </div>
16
-
17
- <div className="flex-1">
18
- <div className="lg:hidden">
19
- <SkeletonWrapper className="w-full flex-row items-center py-4 justify-center">
20
- <div className="w-full flex gap-4 justify-center">
21
- <Skeleton className="w-full h-9 md:w-40" />
22
- <Skeleton className="w-full h-9 md:w-40" />
23
- </div>
24
- </SkeletonWrapper>
25
- </div>
26
-
27
- <div className="hidden lg:block">
28
- <SkeletonWrapper className="w-full flex-row items-center justify-between mb-4">
29
- <div className="flex flex-row gap-5">
30
- <Skeleton className="w-20 h-5" />
31
- </div>
32
- <div className="flex items-center gap-7">
33
- <Skeleton className="w-[21.25rem] h-[38px]" />
34
- <Skeleton className="w-40 h-[38px]" />
35
- </div>
36
- </SkeletonWrapper>
37
- </div>
38
-
39
- <div className="grid gap-x-4 gap-y-7 grid-cols-2 md:grid-cols-3 lg:grid-cols-3">
40
- {Array(6)
41
- .fill(null)
42
- .map((_, index) => (
43
- <Skeleton
44
- key={index}
45
- className="w-full h-80 md:h-[26.813rem] lg::h-[35.875rem]"
46
- />
47
- ))}
48
- </div>
49
- </div>
50
- </div>
51
- </div>
52
- );
53
- }