@akinon/projectzero 1.29.0-rc.2 → 1.30.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 (508) hide show
  1. package/CHANGELOG.md +5 -7
  2. package/commands/create.ts +118 -49
  3. package/commands/plugins.ts +36 -0
  4. package/dist/commands/create.js +68 -32
  5. package/dist/commands/plugins.js +20 -0
  6. package/package.json +2 -1
  7. package/tsconfig.json +8 -9
  8. package/app-template/.editorconfig +0 -7
  9. package/app-template/.env.example +0 -9
  10. package/app-template/.eslintignore +0 -1
  11. package/app-template/.eslintrc.js +0 -31
  12. package/app-template/.gitattributes +0 -18
  13. package/app-template/.husky/pre-commit +0 -4
  14. package/app-template/.lintstagedrc.js +0 -12
  15. package/app-template/.prettierrc +0 -13
  16. package/app-template/.releaserc.json +0 -49
  17. package/app-template/.stylelintrc.json +0 -37
  18. package/app-template/.vscode/extensions.json +0 -11
  19. package/app-template/.vscode/launch.json +0 -29
  20. package/app-template/.yarnrc +0 -1
  21. package/app-template/CHANGELOG.md +0 -564
  22. package/app-template/LICENSE +0 -21
  23. package/app-template/Procfile +0 -1
  24. package/app-template/README.md +0 -29
  25. package/app-template/akinon.json +0 -28
  26. package/app-template/bitbucket-pipelines.yml +0 -54
  27. package/app-template/build.sh +0 -7
  28. package/app-template/docs/CHANGELOG.md +0 -85
  29. package/app-template/docs/advanced-usage.md +0 -43
  30. package/app-template/docs/basic-setup.md +0 -59
  31. package/app-template/docs/data-fetching/client/account.md +0 -1064
  32. package/app-template/docs/data-fetching/client/address.md +0 -805
  33. package/app-template/docs/data-fetching/client/basket.md +0 -107
  34. package/app-template/docs/data-fetching/client/checkout.md +0 -904
  35. package/app-template/docs/data-fetching/client/misc.md +0 -135
  36. package/app-template/docs/data-fetching/client/product.md +0 -284
  37. package/app-template/docs/data-fetching/client/user.md +0 -56
  38. package/app-template/docs/data-fetching/client/wishlist.md +0 -111
  39. package/app-template/docs/data-fetching/server/category.md +0 -324
  40. package/app-template/docs/data-fetching/server/flat-page.md +0 -42
  41. package/app-template/docs/data-fetching/server/list.md +0 -353
  42. package/app-template/docs/data-fetching/server/menu.md +0 -363
  43. package/app-template/docs/data-fetching/server/product.md +0 -131
  44. package/app-template/docs/data-fetching/server/seo.md +0 -44
  45. package/app-template/docs/data-fetching/server/special-page.md +0 -79
  46. package/app-template/docs/data-fetching/server/widget.md +0 -218
  47. package/app-template/docs/delete-account.md +0 -25
  48. package/app-template/docs/deployment.md +0 -46
  49. package/app-template/docs/dynamic-route.md +0 -33
  50. package/app-template/docs/icons.md +0 -52
  51. package/app-template/docs/localization.md +0 -204
  52. package/app-template/docs/logging.md +0 -48
  53. package/app-template/docs/plugins.md +0 -76
  54. package/app-template/docs/seo-management.md +0 -125
  55. package/app-template/docs/static-assets.md +0 -36
  56. package/app-template/docs/widgets.md +0 -127
  57. package/app-template/global.d.ts +0 -1
  58. package/app-template/jest.config.ts +0 -34
  59. package/app-template/next-env.d.ts +0 -6
  60. package/app-template/next.config.mjs +0 -34
  61. package/app-template/package.json +0 -96
  62. package/app-template/plugins.d.ts +0 -1
  63. package/app-template/postcss.config.js +0 -6
  64. package/app-template/public/404.png +0 -0
  65. package/app-template/public/500.png +0 -0
  66. package/app-template/public/apple-splash-1125-2436.jpg +0 -0
  67. package/app-template/public/apple-splash-1136-640.jpg +0 -0
  68. package/app-template/public/apple-splash-1170-2532.jpg +0 -0
  69. package/app-template/public/apple-splash-1242-2208.jpg +0 -0
  70. package/app-template/public/apple-splash-1242-2688.jpg +0 -0
  71. package/app-template/public/apple-splash-1284-2778.jpg +0 -0
  72. package/app-template/public/apple-splash-1334-750.jpg +0 -0
  73. package/app-template/public/apple-splash-1536-2048.jpg +0 -0
  74. package/app-template/public/apple-splash-1620-2160.jpg +0 -0
  75. package/app-template/public/apple-splash-1668-2224.jpg +0 -0
  76. package/app-template/public/apple-splash-1668-2388.jpg +0 -0
  77. package/app-template/public/apple-splash-1792-828.jpg +0 -0
  78. package/app-template/public/apple-splash-2048-1536.jpg +0 -0
  79. package/app-template/public/apple-splash-2048-2732.jpg +0 -0
  80. package/app-template/public/apple-splash-2160-1620.jpg +0 -0
  81. package/app-template/public/apple-splash-2208-1242.jpg +0 -0
  82. package/app-template/public/apple-splash-2224-1668.jpg +0 -0
  83. package/app-template/public/apple-splash-2388-1668.jpg +0 -0
  84. package/app-template/public/apple-splash-2436-1125.jpg +0 -0
  85. package/app-template/public/apple-splash-2532-1170.jpg +0 -0
  86. package/app-template/public/apple-splash-2688-1242.jpg +0 -0
  87. package/app-template/public/apple-splash-2732-2048.jpg +0 -0
  88. package/app-template/public/apple-splash-2778-1284.jpg +0 -0
  89. package/app-template/public/apple-splash-640-1136.jpg +0 -0
  90. package/app-template/public/apple-splash-750-1334.jpg +0 -0
  91. package/app-template/public/apple-splash-828-1792.jpg +0 -0
  92. package/app-template/public/apple-touch-icon-152x152.png +0 -0
  93. package/app-template/public/apple-touch-icon-167x167.png +0 -0
  94. package/app-template/public/apple-touch-icon-180x180.png +0 -0
  95. package/app-template/public/apple-touch-icon.png +0 -0
  96. package/app-template/public/apple.svg +0 -47
  97. package/app-template/public/cvv.jpg +0 -0
  98. package/app-template/public/facebook.svg +0 -3
  99. package/app-template/public/google.svg +0 -12
  100. package/app-template/public/icon-192x192.png +0 -0
  101. package/app-template/public/icon-256x256.png +0 -0
  102. package/app-template/public/icon-384x384.png +0 -0
  103. package/app-template/public/icon-512x512.png +0 -0
  104. package/app-template/public/icon-sprite.svg +0 -528
  105. package/app-template/public/locales/en/account.json +0 -487
  106. package/app-template/public/locales/en/auth.json +0 -100
  107. package/app-template/public/locales/en/basket.json +0 -50
  108. package/app-template/public/locales/en/category.json +0 -26
  109. package/app-template/public/locales/en/checkout.json +0 -152
  110. package/app-template/public/locales/en/common.json +0 -65
  111. package/app-template/public/locales/en/forgot_password.json +0 -41
  112. package/app-template/public/locales/en/form.json +0 -5
  113. package/app-template/public/locales/en/product.json +0 -39
  114. package/app-template/public/locales/tr/account.json +0 -487
  115. package/app-template/public/locales/tr/auth.json +0 -100
  116. package/app-template/public/locales/tr/basket.json +0 -50
  117. package/app-template/public/locales/tr/category.json +0 -26
  118. package/app-template/public/locales/tr/checkout.json +0 -152
  119. package/app-template/public/locales/tr/common.json +0 -65
  120. package/app-template/public/locales/tr/forgot_password.json +0 -41
  121. package/app-template/public/locales/tr/form.json +0 -5
  122. package/app-template/public/locales/tr/product.json +0 -39
  123. package/app-template/public/logo.svg +0 -29
  124. package/app-template/public/manifest.json +0 -35
  125. package/app-template/public/mastercard.png +0 -0
  126. package/app-template/public/mastersecure.png +0 -0
  127. package/app-template/public/mfs-client.min.js +0 -3
  128. package/app-template/public/noimage.jpg +0 -0
  129. package/app-template/public/safari-pinned-tab.svg +0 -320
  130. package/app-template/public/ssl-secure.png +0 -0
  131. package/app-template/public/vbv.png +0 -0
  132. package/app-template/public/visa.png +0 -0
  133. package/app-template/public/zepto.min.js +0 -2
  134. package/app-template/sentry.client.config.ts +0 -16
  135. package/app-template/sentry.edge.config.ts +0 -3
  136. package/app-template/sentry.properties +0 -4
  137. package/app-template/sentry.server.config.ts +0 -3
  138. package/app-template/setupTests.ts +0 -4
  139. package/app-template/src/__tests__/index.test.tsx +0 -7
  140. package/app-template/src/__tests__/tsconfig.json +0 -7
  141. package/app-template/src/app/[commerce]/[locale]/[currency]/account/address/page.tsx +0 -74
  142. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-email/page.tsx +0 -174
  143. package/app-template/src/app/[commerce]/[locale]/[currency]/account/change-password/page.tsx +0 -206
  144. package/app-template/src/app/[commerce]/[locale]/[currency]/account/contact/page.tsx +0 -7
  145. package/app-template/src/app/[commerce]/[locale]/[currency]/account/coupons/page.tsx +0 -210
  146. package/app-template/src/app/[commerce]/[locale]/[currency]/account/email-verification/page.tsx +0 -5
  147. package/app-template/src/app/[commerce]/[locale]/[currency]/account/faq/page.tsx +0 -23
  148. package/app-template/src/app/[commerce]/[locale]/[currency]/account/favourite-products/page.tsx +0 -32
  149. package/app-template/src/app/[commerce]/[locale]/[currency]/account/layout.tsx +0 -28
  150. package/app-template/src/app/[commerce]/[locale]/[currency]/account/my-quotations/page.tsx +0 -7
  151. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/cancellation/page.tsx +0 -255
  152. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/layout.tsx +0 -5
  153. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/[id]/page.tsx +0 -309
  154. package/app-template/src/app/[commerce]/[locale]/[currency]/account/orders/page.tsx +0 -137
  155. package/app-template/src/app/[commerce]/[locale]/[currency]/account/page.tsx +0 -226
  156. package/app-template/src/app/[commerce]/[locale]/[currency]/account/profile/page.tsx +0 -399
  157. package/app-template/src/app/[commerce]/[locale]/[currency]/address/stores/page.tsx +0 -271
  158. package/app-template/src/app/[commerce]/[locale]/[currency]/anonymous-tracking/page.tsx +0 -33
  159. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/oauth-login/page.tsx +0 -3
  160. package/app-template/src/app/[commerce]/[locale]/[currency]/auth/page.tsx +0 -76
  161. package/app-template/src/app/[commerce]/[locale]/[currency]/basket/page.tsx +0 -77
  162. package/app-template/src/app/[commerce]/[locale]/[currency]/basket-b2b/page.tsx +0 -7
  163. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/loading.tsx +0 -53
  164. package/app-template/src/app/[commerce]/[locale]/[currency]/category/[pk]/page.tsx +0 -16
  165. package/app-template/src/app/[commerce]/[locale]/[currency]/client-root.tsx +0 -9
  166. package/app-template/src/app/[commerce]/[locale]/[currency]/contact-us/page.tsx +0 -11
  167. package/app-template/src/app/[commerce]/[locale]/[currency]/error.tsx +0 -20
  168. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/loading.tsx +0 -5
  169. package/app-template/src/app/[commerce]/[locale]/[currency]/flat-page/[pk]/page.tsx +0 -18
  170. package/app-template/src/app/[commerce]/[locale]/[currency]/forms/[pk]/generate/page.tsx +0 -48
  171. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/loading.tsx +0 -5
  172. package/app-template/src/app/[commerce]/[locale]/[currency]/group-product/[pk]/page.tsx +0 -72
  173. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/loading.tsx +0 -5
  174. package/app-template/src/app/[commerce]/[locale]/[currency]/landing-page/[pk]/page.tsx +0 -23
  175. package/app-template/src/app/[commerce]/[locale]/[currency]/layout.tsx +0 -78
  176. package/app-template/src/app/[commerce]/[locale]/[currency]/list/loading.tsx +0 -53
  177. package/app-template/src/app/[commerce]/[locale]/[currency]/list/page.tsx +0 -16
  178. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/checkout/page.tsx +0 -140
  179. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/layout.tsx +0 -5
  180. package/app-template/src/app/[commerce]/[locale]/[currency]/orders/completed/[token]/page.tsx +0 -285
  181. package/app-template/src/app/[commerce]/[locale]/[currency]/page.tsx +0 -50
  182. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/loading.tsx +0 -67
  183. package/app-template/src/app/[commerce]/[locale]/[currency]/product/[pk]/page.tsx +0 -81
  184. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/loading.tsx +0 -53
  185. package/app-template/src/app/[commerce]/[locale]/[currency]/special-page/[pk]/page.tsx +0 -25
  186. package/app-template/src/app/[commerce]/[locale]/[currency]/template.tsx +0 -75
  187. package/app-template/src/app/[commerce]/[locale]/[currency]/users/email-set-primary/[[...id]]/page.tsx +0 -43
  188. package/app-template/src/app/[commerce]/[locale]/[currency]/users/password/reset/page.tsx +0 -79
  189. package/app-template/src/app/[commerce]/[locale]/[currency]/users/registration/account-confirm-email/[[...id]]/page.tsx +0 -43
  190. package/app-template/src/app/[commerce]/[locale]/[currency]/users/reset/[[...id]]/page.tsx +0 -110
  191. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/[node]/route.ts +0 -25
  192. package/app-template/src/app/[commerce]/[locale]/[currency]/xml-sitemap/route.ts +0 -37
  193. package/app-template/src/app/api/cache/route.ts +0 -1
  194. package/app-template/src/app/api/client/[...slug]/route.ts +0 -1
  195. package/app-template/src/app/api/form/[...id]/route.ts +0 -7
  196. package/app-template/src/app/api/logout/route.ts +0 -1
  197. package/app-template/src/app/api/sentry/route.ts +0 -9
  198. package/app-template/src/app/api/web-vitals/route.ts +0 -1
  199. package/app-template/src/app/favicon.ico +0 -0
  200. package/app-template/src/assets/fonts/Jost/Jost-Black.eot +0 -0
  201. package/app-template/src/assets/fonts/Jost/Jost-Black.ttf +0 -0
  202. package/app-template/src/assets/fonts/Jost/Jost-Black.woff +0 -0
  203. package/app-template/src/assets/fonts/Jost/Jost-Black.woff2 +0 -0
  204. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.eot +0 -0
  205. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.ttf +0 -0
  206. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff +0 -0
  207. package/app-template/src/assets/fonts/Jost/Jost-BlackItalic.woff2 +0 -0
  208. package/app-template/src/assets/fonts/Jost/Jost-Bold.eot +0 -0
  209. package/app-template/src/assets/fonts/Jost/Jost-Bold.ttf +0 -0
  210. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff +0 -0
  211. package/app-template/src/assets/fonts/Jost/Jost-Bold.woff2 +0 -0
  212. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.eot +0 -0
  213. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.ttf +0 -0
  214. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff +0 -0
  215. package/app-template/src/assets/fonts/Jost/Jost-BoldItalic.woff2 +0 -0
  216. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.eot +0 -0
  217. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.ttf +0 -0
  218. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff +0 -0
  219. package/app-template/src/assets/fonts/Jost/Jost-ExtraBold.woff2 +0 -0
  220. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.eot +0 -0
  221. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.ttf +0 -0
  222. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff +0 -0
  223. package/app-template/src/assets/fonts/Jost/Jost-ExtraBoldItalic.woff2 +0 -0
  224. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.eot +0 -0
  225. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.ttf +0 -0
  226. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff +0 -0
  227. package/app-template/src/assets/fonts/Jost/Jost-ExtraLight.woff2 +0 -0
  228. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.eot +0 -0
  229. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.ttf +0 -0
  230. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff +0 -0
  231. package/app-template/src/assets/fonts/Jost/Jost-ExtraLightItalic.woff2 +0 -0
  232. package/app-template/src/assets/fonts/Jost/Jost-Italic.eot +0 -0
  233. package/app-template/src/assets/fonts/Jost/Jost-Italic.ttf +0 -0
  234. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff +0 -0
  235. package/app-template/src/assets/fonts/Jost/Jost-Italic.woff2 +0 -0
  236. package/app-template/src/assets/fonts/Jost/Jost-Light.eot +0 -0
  237. package/app-template/src/assets/fonts/Jost/Jost-Light.ttf +0 -0
  238. package/app-template/src/assets/fonts/Jost/Jost-Light.woff +0 -0
  239. package/app-template/src/assets/fonts/Jost/Jost-Light.woff2 +0 -0
  240. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.eot +0 -0
  241. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.ttf +0 -0
  242. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff +0 -0
  243. package/app-template/src/assets/fonts/Jost/Jost-LightItalic.woff2 +0 -0
  244. package/app-template/src/assets/fonts/Jost/Jost-Medium.eot +0 -0
  245. package/app-template/src/assets/fonts/Jost/Jost-Medium.ttf +0 -0
  246. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff +0 -0
  247. package/app-template/src/assets/fonts/Jost/Jost-Medium.woff2 +0 -0
  248. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.eot +0 -0
  249. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.ttf +0 -0
  250. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff +0 -0
  251. package/app-template/src/assets/fonts/Jost/Jost-MediumItalic.woff2 +0 -0
  252. package/app-template/src/assets/fonts/Jost/Jost-Regular.eot +0 -0
  253. package/app-template/src/assets/fonts/Jost/Jost-Regular.ttf +0 -0
  254. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff +0 -0
  255. package/app-template/src/assets/fonts/Jost/Jost-Regular.woff2 +0 -0
  256. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.eot +0 -0
  257. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.ttf +0 -0
  258. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff +0 -0
  259. package/app-template/src/assets/fonts/Jost/Jost-SemiBold.woff2 +0 -0
  260. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.eot +0 -0
  261. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.ttf +0 -0
  262. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff +0 -0
  263. package/app-template/src/assets/fonts/Jost/Jost-SemiBoldItalic.woff2 +0 -0
  264. package/app-template/src/assets/fonts/Jost/Jost-Thin.eot +0 -0
  265. package/app-template/src/assets/fonts/Jost/Jost-Thin.ttf +0 -0
  266. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff +0 -0
  267. package/app-template/src/assets/fonts/Jost/Jost-Thin.woff2 +0 -0
  268. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.eot +0 -0
  269. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.ttf +0 -0
  270. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff +0 -0
  271. package/app-template/src/assets/fonts/Jost/Jost-ThinItalic.woff2 +0 -0
  272. package/app-template/src/assets/fonts/Jost/index.scss +0 -269
  273. package/app-template/src/assets/fonts/index.scss +0 -1
  274. package/app-template/src/assets/fonts/pz-icon.css +0 -154
  275. package/app-template/src/assets/fonts/pz-icon.eot +0 -0
  276. package/app-template/src/assets/fonts/pz-icon.html +0 -456
  277. package/app-template/src/assets/fonts/pz-icon.scss +0 -300
  278. package/app-template/src/assets/fonts/pz-icon.svg +0 -144
  279. package/app-template/src/assets/fonts/pz-icon.ttf +0 -0
  280. package/app-template/src/assets/fonts/pz-icon.woff +0 -0
  281. package/app-template/src/assets/fonts/pz-icon.woff2 +0 -0
  282. package/app-template/src/assets/globals.scss +0 -65
  283. package/app-template/src/assets/icons/akinon.svg +0 -11
  284. package/app-template/src/assets/icons/arrow-up.svg +0 -11
  285. package/app-template/src/assets/icons/bell.svg +0 -1
  286. package/app-template/src/assets/icons/cart.svg +0 -13
  287. package/app-template/src/assets/icons/check.svg +0 -19
  288. package/app-template/src/assets/icons/chevron-down.svg +0 -8
  289. package/app-template/src/assets/icons/chevron-end.svg +0 -8
  290. package/app-template/src/assets/icons/chevron-start.svg +0 -8
  291. package/app-template/src/assets/icons/chevron-up.svg +0 -8
  292. package/app-template/src/assets/icons/close.svg +0 -12
  293. package/app-template/src/assets/icons/cvc.svg +0 -54
  294. package/app-template/src/assets/icons/default.svg +0 -6
  295. package/app-template/src/assets/icons/directions.svg +0 -14
  296. package/app-template/src/assets/icons/eye-off.svg +0 -10
  297. package/app-template/src/assets/icons/eye-on.svg +0 -17
  298. package/app-template/src/assets/icons/facebook-login.svg +0 -11
  299. package/app-template/src/assets/icons/facebook.svg +0 -9
  300. package/app-template/src/assets/icons/giftbox.svg +0 -22
  301. package/app-template/src/assets/icons/globe.svg +0 -12
  302. package/app-template/src/assets/icons/google-login.svg +0 -19
  303. package/app-template/src/assets/icons/google.svg +0 -9
  304. package/app-template/src/assets/icons/hamburger.svg +0 -5
  305. package/app-template/src/assets/icons/heart-full.svg +0 -20
  306. package/app-template/src/assets/icons/heart-stroke.svg +0 -22
  307. package/app-template/src/assets/icons/info.svg +0 -1
  308. package/app-template/src/assets/icons/instagram.svg +0 -14
  309. package/app-template/src/assets/icons/layout-2.svg +0 -7
  310. package/app-template/src/assets/icons/layout-3.svg +0 -4
  311. package/app-template/src/assets/icons/logo.svg +0 -24
  312. package/app-template/src/assets/icons/mail.svg +0 -1
  313. package/app-template/src/assets/icons/minus.svg +0 -4
  314. package/app-template/src/assets/icons/money.svg +0 -4
  315. package/app-template/src/assets/icons/mp-otp.svg +0 -1
  316. package/app-template/src/assets/icons/pin.svg +0 -16
  317. package/app-template/src/assets/icons/pinterest.svg +0 -12
  318. package/app-template/src/assets/icons/plus.svg +0 -5
  319. package/app-template/src/assets/icons/search.svg +0 -13
  320. package/app-template/src/assets/icons/share.svg +0 -10
  321. package/app-template/src/assets/icons/spinner.svg +0 -6
  322. package/app-template/src/assets/icons/store-pin.svg +0 -14
  323. package/app-template/src/assets/icons/track-order.svg +0 -1
  324. package/app-template/src/assets/icons/twitter.svg +0 -11
  325. package/app-template/src/assets/icons/user.svg +0 -14
  326. package/app-template/src/assets/icons/whatsapp.svg +0 -45
  327. package/app-template/src/components/__tests__/Modal.test.tsx +0 -103
  328. package/app-template/src/components/__tests__/accordion.test.tsx +0 -65
  329. package/app-template/src/components/__tests__/badge.test.tsx +0 -20
  330. package/app-template/src/components/__tests__/button.test.tsx +0 -59
  331. package/app-template/src/components/__tests__/checkbox.test.tsx +0 -57
  332. package/app-template/src/components/__tests__/file-input.test.tsx +0 -42
  333. package/app-template/src/components/__tests__/icon.test.tsx +0 -39
  334. package/app-template/src/components/__tests__/input.test.tsx +0 -69
  335. package/app-template/src/components/__tests__/language-select.test.tsx +0 -81
  336. package/app-template/src/components/__tests__/link.test.tsx +0 -65
  337. package/app-template/src/components/__tests__/price.test.tsx +0 -72
  338. package/app-template/src/components/__tests__/radio.test.tsx +0 -52
  339. package/app-template/src/components/__tests__/select.test.tsx +0 -115
  340. package/app-template/src/components/__tests__/tab.test.tsx +0 -101
  341. package/app-template/src/components/accordion.tsx +0 -64
  342. package/app-template/src/components/badge.tsx +0 -21
  343. package/app-template/src/components/button.tsx +0 -46
  344. package/app-template/src/components/canonical-url.tsx +0 -21
  345. package/app-template/src/components/carousel-core.tsx +0 -42
  346. package/app-template/src/components/checkbox.tsx +0 -28
  347. package/app-template/src/components/currency-select.tsx +0 -81
  348. package/app-template/src/components/custom-loader.tsx +0 -21
  349. package/app-template/src/components/dynamic-form.tsx +0 -17
  350. package/app-template/src/components/file-input.tsx +0 -8
  351. package/app-template/src/components/generate-form-fields.tsx +0 -349
  352. package/app-template/src/components/icon.tsx +0 -18
  353. package/app-template/src/components/index.ts +0 -41
  354. package/app-template/src/components/input.tsx +0 -110
  355. package/app-template/src/components/language-select.tsx +0 -33
  356. package/app-template/src/components/link.tsx +0 -53
  357. package/app-template/src/components/loader-spinner.tsx +0 -23
  358. package/app-template/src/components/modal.tsx +0 -66
  359. package/app-template/src/components/pagination.tsx +0 -267
  360. package/app-template/src/components/password-rules-feedback.tsx +0 -60
  361. package/app-template/src/components/price.tsx +0 -54
  362. package/app-template/src/components/pwa-tags.tsx +0 -233
  363. package/app-template/src/components/radio.tsx +0 -18
  364. package/app-template/src/components/react-portal.tsx +0 -47
  365. package/app-template/src/components/select.tsx +0 -70
  366. package/app-template/src/components/shimmer.tsx +0 -21
  367. package/app-template/src/components/skeleton-article.tsx +0 -15
  368. package/app-template/src/components/skeleton-product.tsx +0 -14
  369. package/app-template/src/components/skeleton-profile.tsx +0 -19
  370. package/app-template/src/components/skeleton-wrapper.tsx +0 -19
  371. package/app-template/src/components/skeleton.tsx +0 -37
  372. package/app-template/src/components/source.tsx +0 -12
  373. package/app-template/src/components/tab-panel.tsx +0 -10
  374. package/app-template/src/components/tab.tsx +0 -58
  375. package/app-template/src/components/tabs.tsx +0 -58
  376. package/app-template/src/components/types/index.ts +0 -89
  377. package/app-template/src/hooks/index.ts +0 -1
  378. package/app-template/src/hooks/use-add-product-to-basket.ts +0 -48
  379. package/app-template/src/hooks/use-contract.tsx +0 -58
  380. package/app-template/src/hooks/use-fav-button.tsx +0 -99
  381. package/app-template/src/instrumentation.ts +0 -1
  382. package/app-template/src/middleware.ts +0 -33
  383. package/app-template/src/pages/_error.js +0 -14
  384. package/app-template/src/pages/api/auth/[...nextauth].ts +0 -3
  385. package/app-template/src/plugins.js +0 -14
  386. package/app-template/src/redux/middlewares/category.ts +0 -42
  387. package/app-template/src/redux/reducers/category.ts +0 -67
  388. package/app-template/src/redux/store.ts +0 -47
  389. package/app-template/src/routes/index.ts +0 -46
  390. package/app-template/src/settings.js +0 -62
  391. package/app-template/src/theme.js +0 -1
  392. package/app-template/src/types/index.ts +0 -72
  393. package/app-template/src/types/next-auth.d.ts +0 -24
  394. package/app-template/src/types/widgets.ts +0 -115
  395. package/app-template/src/utils/convert-facet-search-params.ts +0 -15
  396. package/app-template/src/utils/generate-jsonld.ts +0 -23
  397. package/app-template/src/utils/gtm.ts +0 -247
  398. package/app-template/src/utils/index.ts +0 -60
  399. package/app-template/src/views/account/account-menu.tsx +0 -117
  400. package/app-template/src/views/account/address-card.tsx +0 -107
  401. package/app-template/src/views/account/address-form.tsx +0 -374
  402. package/app-template/src/views/account/back-button.tsx +0 -27
  403. package/app-template/src/views/account/contact-form.tsx +0 -283
  404. package/app-template/src/views/account/content-header.tsx +0 -52
  405. package/app-template/src/views/account/faq/faq-footer.tsx +0 -30
  406. package/app-template/src/views/account/faq/faq-search.tsx +0 -35
  407. package/app-template/src/views/account/faq/faq-tabs.tsx +0 -54
  408. package/app-template/src/views/account/faq/index.ts +0 -3
  409. package/app-template/src/views/account/favorite-item.tsx +0 -191
  410. package/app-template/src/views/account/favourite-products/favourite-products-list.tsx +0 -65
  411. package/app-template/src/views/account/index.ts +0 -4
  412. package/app-template/src/views/account/order.tsx +0 -89
  413. package/app-template/src/views/account/orders/order-cancellation-item.tsx +0 -99
  414. package/app-template/src/views/account/orders/order-detail-header.tsx +0 -39
  415. package/app-template/src/views/anonymous-tracking/index.tsx +0 -109
  416. package/app-template/src/views/anonymous-tracking/order-detail/index.tsx +0 -318
  417. package/app-template/src/views/basket/basket-item.tsx +0 -231
  418. package/app-template/src/views/basket/index.ts +0 -2
  419. package/app-template/src/views/basket/summary.tsx +0 -195
  420. package/app-template/src/views/breadcrumb.tsx +0 -35
  421. package/app-template/src/views/category/category-active-filters.tsx +0 -98
  422. package/app-template/src/views/category/category-banner.tsx +0 -34
  423. package/app-template/src/views/category/category-header.tsx +0 -143
  424. package/app-template/src/views/category/category-info.tsx +0 -123
  425. package/app-template/src/views/category/filters/index.tsx +0 -163
  426. package/app-template/src/views/category/filters/size-filter.tsx +0 -27
  427. package/app-template/src/views/category/layout.tsx +0 -38
  428. package/app-template/src/views/checkout/auth.tsx +0 -54
  429. package/app-template/src/views/checkout/index.tsx +0 -3
  430. package/app-template/src/views/checkout/layout/footer.tsx +0 -48
  431. package/app-template/src/views/checkout/layout/header.tsx +0 -38
  432. package/app-template/src/views/checkout/step-button.tsx +0 -69
  433. package/app-template/src/views/checkout/step-list.tsx +0 -51
  434. package/app-template/src/views/checkout/steps/payment/agreements.tsx +0 -42
  435. package/app-template/src/views/checkout/steps/payment/index.tsx +0 -31
  436. package/app-template/src/views/checkout/steps/payment/options/credit-card/index.tsx +0 -382
  437. package/app-template/src/views/checkout/steps/payment/options/credit-card/installments.tsx +0 -100
  438. package/app-template/src/views/checkout/steps/payment/options/credit-payment.tsx +0 -14
  439. package/app-template/src/views/checkout/steps/payment/options/funds-transfer.tsx +0 -174
  440. package/app-template/src/views/checkout/steps/payment/options/loyalty.tsx +0 -19
  441. package/app-template/src/views/checkout/steps/payment/options/pay-on-delivery.tsx +0 -15
  442. package/app-template/src/views/checkout/steps/payment/options/redirection.tsx +0 -94
  443. package/app-template/src/views/checkout/steps/payment/payment-header.tsx +0 -17
  444. package/app-template/src/views/checkout/steps/payment/payment-option-buttons.tsx +0 -73
  445. package/app-template/src/views/checkout/steps/shipping/address-box.tsx +0 -204
  446. package/app-template/src/views/checkout/steps/shipping/addresses.tsx +0 -189
  447. package/app-template/src/views/checkout/steps/shipping/index.tsx +0 -27
  448. package/app-template/src/views/checkout/steps/shipping/shipping-options.tsx +0 -72
  449. package/app-template/src/views/checkout/summary.tsx +0 -181
  450. package/app-template/src/views/coupon-item/index.tsx +0 -80
  451. package/app-template/src/views/find-in-store/index.tsx +0 -183
  452. package/app-template/src/views/footer.tsx +0 -21
  453. package/app-template/src/views/guest-login/index.tsx +0 -130
  454. package/app-template/src/views/header/action-menu.tsx +0 -117
  455. package/app-template/src/views/header/band.tsx +0 -32
  456. package/app-template/src/views/header/index.tsx +0 -66
  457. package/app-template/src/views/header/mini-basket.tsx +0 -267
  458. package/app-template/src/views/header/mobile-hamburger-button.tsx +0 -35
  459. package/app-template/src/views/header/mobile-menu.tsx +0 -144
  460. package/app-template/src/views/header/navbar.tsx +0 -186
  461. package/app-template/src/views/header/pwa-back-button.tsx +0 -60
  462. package/app-template/src/views/header/search/index.tsx +0 -82
  463. package/app-template/src/views/header/search/results.tsx +0 -122
  464. package/app-template/src/views/header/user-menu.tsx +0 -72
  465. package/app-template/src/views/index.tsx +0 -2
  466. package/app-template/src/views/installment-options/index.tsx +0 -127
  467. package/app-template/src/views/login/index.tsx +0 -233
  468. package/app-template/src/views/otp-login/index.tsx +0 -152
  469. package/app-template/src/views/page-loader-spinner/index.tsx +0 -9
  470. package/app-template/src/views/product/accordion-wrapper.tsx +0 -47
  471. package/app-template/src/views/product/combine-product-card.tsx +0 -82
  472. package/app-template/src/views/product/index.ts +0 -8
  473. package/app-template/src/views/product/layout.tsx +0 -40
  474. package/app-template/src/views/product/misc-buttons.tsx +0 -65
  475. package/app-template/src/views/product/price-wrapper.tsx +0 -41
  476. package/app-template/src/views/product/product-group-info.tsx +0 -63
  477. package/app-template/src/views/product/product-info.tsx +0 -253
  478. package/app-template/src/views/product/slider.tsx +0 -92
  479. package/app-template/src/views/product/variant.tsx +0 -104
  480. package/app-template/src/views/product-item/index.tsx +0 -96
  481. package/app-template/src/views/product-pointer-banner-item.tsx +0 -243
  482. package/app-template/src/views/register/index.tsx +0 -417
  483. package/app-template/src/views/root-modal.tsx +0 -21
  484. package/app-template/src/views/sales-contract-modal/index.tsx +0 -288
  485. package/app-template/src/views/share/index.tsx +0 -71
  486. package/app-template/src/views/widgets/home-hero-slider-content.tsx +0 -54
  487. package/app-template/src/views/widgets/recommendation-content.tsx +0 -86
  488. package/app-template/src/widgets/footer-copyright.tsx +0 -25
  489. package/app-template/src/widgets/footer-info.tsx +0 -78
  490. package/app-template/src/widgets/footer-menu.tsx +0 -258
  491. package/app-template/src/widgets/footer-social.tsx +0 -53
  492. package/app-template/src/widgets/footer-subscription/footer-subscription-form.tsx +0 -110
  493. package/app-template/src/widgets/footer-subscription/index.tsx +0 -30
  494. package/app-template/src/widgets/header-band-text.tsx +0 -21
  495. package/app-template/src/widgets/home-discovery.tsx +0 -191
  496. package/app-template/src/widgets/home-hero-slider.tsx +0 -36
  497. package/app-template/src/widgets/home-product-recommendation.tsx +0 -18
  498. package/app-template/src/widgets/home-single-banner.tsx +0 -87
  499. package/app-template/src/widgets/home-stories-eng.tsx +0 -112
  500. package/app-template/src/widgets/index.ts +0 -25
  501. package/app-template/src/widgets/product-pointer-banners.tsx +0 -35
  502. package/app-template/src/widgets/special-page-banner.tsx +0 -49
  503. package/app-template/src/widgets/special-page-carousel.tsx +0 -68
  504. package/app-template/src/widgets/widget-order.tsx +0 -1
  505. package/app-template/tailwind.config.js +0 -170
  506. package/app-template/tsconfig.json +0 -44
  507. package/app-template/tsconfig.test.json +0 -6
  508. 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
- }