Sfoglia il codice sorgente

fix: feat 增加侧边栏功能

Before 5 mesi fa
parent
commit
270d5ded14

+ 7 - 5
messages/br.json

@@ -42,6 +42,7 @@
     "casino": "Casino",
     "esportes": "Esportes",
     "deposit": "Depósito",
+    "download": "Baixe o APP e ganhe Bônus",
     "promocoes": "Promoções",
     "promoCode": "Have a promo code?",
     "codeInputPlaceHolder": "Insira o código",
@@ -49,7 +50,8 @@
     "coumnidade": "Junte-se à nossa comunidade",
     "ajude": " Visitar o Centro de Ajuda ",
     "email": " Relatar Problema ",
-    "inicial": " Adicionar à Tela inicial "
+    "inicial": " Adicionar à Tela inicial ",
+    "concat": "Correo electrónico"
   },
 
   "Header": {
@@ -137,7 +139,7 @@
     "gratisDesc": "Veja suas apostas grátis",
     "company": "Afiliado",
     "pray":  "Receba R$ 100 de graça",
-    "cashback": "Cashback 25%",
+    "cashback": "Cashback {max}%",
     "gamblingBets":  "Minhas Apostas de Jogo",
     "league": "Minhas Apostas de Liga Virtual",
     "instant":  "Minhas Apostas Virtuais Instantâneas",
@@ -448,10 +450,10 @@
     "address": "Endereço",
     "addressReg": "O endereço não pode estar vazio",
     "agreement": "Leia e aceite os termos",
-    "agreementAnd": "e",
+    "agreementAnd": "",
     "readyAgreement": "Por favor, leia e concorde com os Termos de Serviço",
-    "moneyAgreement": "Política AML",
-    "serverAgreement": "Termos e Condições",
+    "moneyAgreement": "Política AML ",
+    "serverAgreement": "Termos e Condições ",
     "childrenAgreement": "Política de Proteção de Crianças e Adolescentes",
     "NotSuitableForChildren": "Não é adequado para crianças",
     "registerText": "Registro",

+ 4 - 2
messages/en.json

@@ -44,13 +44,15 @@
     "esportes": "Esportes",
     "promocoes": "Promoções",
     "deposit": "Deposit",
+    "download": "Download the app and get a bonus",
     "promoCode": "Have a promo code?",
     "codeInputPlaceHolder": "Insira o código",
     "promoButton": "Redeem",
     "coumnidade": "Junte-se à nossa comunidade",
     "ajude": " Visitar o Centro de Ajuda ",
     "email": " Relatar Problema ",
-    "inicial": " Adicionar à Tela inicial "
+    "inicial": " Adicionar à Tela inicial ",
+    "concat": "Contact us"
   },
 
   "Header": {
@@ -138,7 +140,7 @@
     "gratisDesc": "Veja suas apostas grátis",
     "company": "Afiliado",
     "pray":  "Receba R$ 100 de graça",
-    "cashback": "Cashback 25%",
+    "cashback": "Cashback {max}%",
     "gamblingBets":  "Minhas Apostas de Jogo",
     "league": "Minhas Apostas de Liga Virtual",
     "instant":  "Minhas Apostas Virtuais Instantâneas",

+ 1 - 1
next.config.mjs

@@ -24,7 +24,7 @@ const nextConfig = {
             dynamic: 0,
             static: 180,
         },
-        scrollRestoration: false,
+        scrollRestoration: true,
     },
     images: {
         domains: [

+ 1 - 1
package.json

@@ -23,7 +23,7 @@
   },
   "dependencies": {
     "@lucky-canvas/react": "^0.1.13",
-    "@number-flow/react": "^0.4.2",
+    "@number-flow/react": "^0.5.5",
     "ahooks": "^3.8.0",
     "antd-mobile": "^5.37.1",
     "axios": "^1.7.2",

+ 59 - 59
pnpm-lock.yaml

@@ -12,14 +12,14 @@ importers:
         specifier: ^0.1.13
         version: 0.1.13
       '@number-flow/react':
-        specifier: ^0.4.2
-        version: 0.4.4(react-dom@18.3.1)(react@18.3.1)
+        specifier: ^0.5.5
+        version: 0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       ahooks:
         specifier: ^3.8.0
         version: 3.8.4(react@18.3.1)
       antd-mobile:
         specifier: ^5.37.1
-        version: 5.38.1(react-dom@18.3.1)(react@18.3.1)
+        version: 5.38.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       axios:
         specifier: ^1.7.2
         version: 1.7.9
@@ -37,19 +37,19 @@ importers:
         version: 11.1.0
       framer-motion:
         specifier: ^11.3.2
-        version: 11.15.0(react-dom@18.3.1)(react@18.3.1)
+        version: 11.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       js-cookie:
         specifier: ^3.0.5
         version: 3.0.5
       next:
         specifier: 14.2.4
-        version: 14.2.4(react-dom@18.3.1)(react@18.3.1)(sass@1.83.0)
+        version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.83.0)
       next-intl:
         specifier: ^3.25.1
-        version: 3.26.3(next@14.2.4)(react@18.3.1)
+        version: 3.26.3(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.83.0))(react@18.3.1)
       next-themes:
         specifier: ^0.3.0
-        version: 0.3.0(react-dom@18.3.1)(react@18.3.1)
+        version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: ^18.3.1
         version: 18.3.1
@@ -110,7 +110,7 @@ importers:
         version: 4.1.0(prettier@3.4.2)(typescript@5.7.2)
       prettier-plugin-tailwindcss:
         specifier: ^0.6.5
-        version: 0.6.9(prettier-plugin-organize-imports@4.1.0)(prettier@3.4.2)
+        version: 0.6.9(prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2))(prettier@3.4.2)
       tailwindcss:
         specifier: ^3.4.4
         version: 3.4.17
@@ -450,28 +450,24 @@ packages:
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
-    libc: [glibc]
 
   '@next/swc-linux-arm64-musl@14.2.4':
     resolution: {integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==}
     engines: {node: '>= 10'}
     cpu: [arm64]
     os: [linux]
-    libc: [musl]
 
   '@next/swc-linux-x64-gnu@14.2.4':
     resolution: {integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
-    libc: [glibc]
 
   '@next/swc-linux-x64-musl@14.2.4':
     resolution: {integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==}
     engines: {node: '>= 10'}
     cpu: [x64]
     os: [linux]
-    libc: [musl]
 
   '@next/swc-win32-arm64-msvc@14.2.4':
     resolution: {integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==}
@@ -507,8 +503,8 @@ packages:
     resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
     engines: {node: '>=12.4.0'}
 
-  '@number-flow/react@0.4.4':
-    resolution: {integrity: sha512-m2FW55jnWqiJzKNRETgyxgR7a8x0WYIZ1uyiIW8C5g6HyjIynryJJop1mEcmHG6OyNePkcb8OQIcjKlV5TfHAw==}
+  '@number-flow/react@0.5.5':
+    resolution: {integrity: sha512-Zdju5n0osxrb+7jbcpUJ9L2VJ2+9ptwjz5+A+2wq9Q32hs3PW/noPJjHtLTrtGINM9mEw76DcDg0ac/dx6j1aA==}
     peerDependencies:
       react: ^18 || ^19
       react-dom: ^18 || ^19
@@ -542,42 +538,36 @@ packages:
     engines: {node: '>= 10.0.0'}
     cpu: [arm]
     os: [linux]
-    libc: [glibc]
 
   '@parcel/watcher-linux-arm-musl@2.5.0':
     resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
     engines: {node: '>= 10.0.0'}
     cpu: [arm]
     os: [linux]
-    libc: [musl]
 
   '@parcel/watcher-linux-arm64-glibc@2.5.0':
     resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
     engines: {node: '>= 10.0.0'}
     cpu: [arm64]
     os: [linux]
-    libc: [glibc]
 
   '@parcel/watcher-linux-arm64-musl@2.5.0':
     resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
     engines: {node: '>= 10.0.0'}
     cpu: [arm64]
     os: [linux]
-    libc: [musl]
 
   '@parcel/watcher-linux-x64-glibc@2.5.0':
     resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
     engines: {node: '>= 10.0.0'}
     cpu: [x64]
     os: [linux]
-    libc: [glibc]
 
   '@parcel/watcher-linux-x64-musl@2.5.0':
     resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
     engines: {node: '>= 10.0.0'}
     cpu: [x64]
     os: [linux]
-    libc: [musl]
 
   '@parcel/watcher-win32-arm64@2.5.0':
     resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
@@ -1755,8 +1745,8 @@ packages:
     resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
     engines: {node: '>=0.10.0'}
 
-  number-flow@0.4.2:
-    resolution: {integrity: sha512-YLN73/m8BUU4r/6mq9zqLdpFKt3LSPPRectOECheA9jtNWF4PP8EIz0+Z1giqu/x9nS86KnKwwouLXXiqnjhQQ==}
+  number-flow@0.5.3:
+    resolution: {integrity: sha512-iLKyssImNWQmJ41rza9K7P5lHRZTyishi/9FarWPLQHYY2Ydtl6eiXINEjZ1fa8dHeY0O7+YOD+Py3ZsJddYkg==}
 
   object-assign@4.1.1:
     resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@@ -2939,10 +2929,10 @@ snapshots:
 
   '@nolyfill/is-core-module@1.0.39': {}
 
-  '@number-flow/react@0.4.4(react-dom@18.3.1)(react@18.3.1)':
+  '@number-flow/react@0.5.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       esm-env: 1.2.1
-      number-flow: 0.4.2
+      number-flow: 0.5.3
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
@@ -3061,7 +3051,7 @@ snapshots:
 
   '@react-spring/types@9.6.1': {}
 
-  '@react-spring/web@9.6.1(react-dom@18.3.1)(react@18.3.1)':
+  '@react-spring/web@9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@react-spring/animated': 9.6.1(react@18.3.1)
       '@react-spring/core': 9.6.1(react@18.3.1)
@@ -3110,6 +3100,7 @@ snapshots:
       '@typescript-eslint/visitor-keys': 7.2.0
       debug: 4.4.0
       eslint: 8.57.1
+    optionalDependencies:
       typescript: 5.7.2
     transitivePeerDependencies:
       - supports-color
@@ -3131,6 +3122,7 @@ snapshots:
       minimatch: 9.0.3
       semver: 7.6.3
       ts-api-utils: 1.4.3(typescript@5.7.2)
+    optionalDependencies:
       typescript: 5.7.2
     transitivePeerDependencies:
       - supports-color
@@ -3189,11 +3181,11 @@ snapshots:
 
   antd-mobile-v5-count@1.0.1: {}
 
-  antd-mobile@5.38.1(react-dom@18.3.1)(react@18.3.1):
+  antd-mobile@5.38.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@floating-ui/dom': 1.6.12
       '@rc-component/mini-decimal': 1.1.0
-      '@react-spring/web': 9.6.1(react-dom@18.3.1)(react@18.3.1)
+      '@react-spring/web': 9.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@use-gesture/react': 10.3.0(react@18.3.1)
       ahooks: 3.8.4(react@18.3.1)
       antd-mobile-icons: 0.3.0
@@ -3202,9 +3194,9 @@ snapshots:
       dayjs: 1.11.13
       deepmerge: 4.3.1
       nano-memoize: 3.0.16
-      rc-field-form: 1.44.0(react-dom@18.3.1)(react@18.3.1)
-      rc-segmented: 2.4.1(react-dom@18.3.1)(react@18.3.1)
-      rc-util: 5.44.3(react-dom@18.3.1)(react@18.3.1)
+      rc-field-form: 1.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      rc-segmented: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      rc-util: 5.44.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       react-fast-compare: 3.2.2
@@ -3615,11 +3607,12 @@ snapshots:
       '@typescript-eslint/parser': 7.2.0(eslint@8.57.1)(typescript@5.7.2)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1)
-      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
+      eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1)
+      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
       eslint-plugin-react: 7.37.3(eslint@8.57.1)
       eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1)
+    optionalDependencies:
       typescript: 5.7.2
     transitivePeerDependencies:
       - eslint-import-resolver-webpack
@@ -3638,35 +3631,36 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1):
+  eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1):
     dependencies:
       '@nolyfill/is-core-module': 1.0.39
       debug: 4.4.0
       enhanced-resolve: 5.18.0
       eslint: 8.57.1
-      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
       fast-glob: 3.3.2
       get-tsconfig: 4.8.1
       is-bun-module: 1.3.0
       is-glob: 4.0.3
       stable-hash: 0.0.4
+    optionalDependencies:
+      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-module-utils@2.12.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1):
+  eslint-module-utils@2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1):
     dependencies:
-      '@typescript-eslint/parser': 7.2.0(eslint@8.57.1)(typescript@5.7.2)
       debug: 3.2.7
+    optionalDependencies:
+      '@typescript-eslint/parser': 7.2.0(eslint@8.57.1)(typescript@5.7.2)
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1)
+      eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1)
     transitivePeerDependencies:
       - supports-color
 
-  eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1):
+  eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1):
     dependencies:
       '@rtsao/scc': 1.1.0
-      '@typescript-eslint/parser': 7.2.0(eslint@8.57.1)(typescript@5.7.2)
       array-includes: 3.1.8
       array.prototype.findlastindex: 1.2.5
       array.prototype.flat: 1.3.3
@@ -3675,7 +3669,7 @@ snapshots:
       doctrine: 2.1.0
       eslint: 8.57.1
       eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1)
+      eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
       hasown: 2.0.2
       is-core-module: 2.16.1
       is-glob: 4.0.3
@@ -3686,6 +3680,8 @@ snapshots:
       semver: 6.3.1
       string.prototype.trimend: 1.0.9
       tsconfig-paths: 3.15.0
+    optionalDependencies:
+      '@typescript-eslint/parser': 7.2.0(eslint@8.57.1)(typescript@5.7.2)
     transitivePeerDependencies:
       - eslint-import-resolver-typescript
       - eslint-import-resolver-webpack
@@ -3899,13 +3895,14 @@ snapshots:
       combined-stream: 1.0.8
       mime-types: 2.1.35
 
-  framer-motion@11.15.0(react-dom@18.3.1)(react@18.3.1):
+  framer-motion@11.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       motion-dom: 11.14.3
       motion-utils: 11.14.3
+      tslib: 2.8.1
+    optionalDependencies:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
-      tslib: 2.8.1
 
   fs.realpath@1.0.0: {}
 
@@ -4319,20 +4316,20 @@ snapshots:
 
   negotiator@1.0.0: {}
 
-  next-intl@3.26.3(next@14.2.4)(react@18.3.1):
+  next-intl@3.26.3(next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.83.0))(react@18.3.1):
     dependencies:
       '@formatjs/intl-localematcher': 0.5.9
       negotiator: 1.0.0
-      next: 14.2.4(react-dom@18.3.1)(react@18.3.1)(sass@1.83.0)
+      next: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.83.0)
       react: 18.3.1
       use-intl: 3.26.3(react@18.3.1)
 
-  next-themes@0.3.0(react-dom@18.3.1)(react@18.3.1):
+  next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  next@14.2.4(react-dom@18.3.1)(react@18.3.1)(sass@1.83.0):
+  next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.83.0):
     dependencies:
       '@next/env': 14.2.4
       '@swc/helpers': 0.5.5
@@ -4342,7 +4339,6 @@ snapshots:
       postcss: 8.4.31
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
-      sass: 1.83.0
       styled-jsx: 5.1.1(react@18.3.1)
     optionalDependencies:
       '@next/swc-darwin-arm64': 14.2.4
@@ -4354,6 +4350,7 @@ snapshots:
       '@next/swc-win32-arm64-msvc': 14.2.4
       '@next/swc-win32-ia32-msvc': 14.2.4
       '@next/swc-win32-x64-msvc': 14.2.4
+      sass: 1.83.0
     transitivePeerDependencies:
       - '@babel/core'
       - babel-plugin-macros
@@ -4363,7 +4360,7 @@ snapshots:
 
   normalize-path@3.0.0: {}
 
-  number-flow@0.4.2:
+  number-flow@0.5.3:
     dependencies:
       esm-env: 1.2.1
 
@@ -4483,8 +4480,9 @@ snapshots:
   postcss-load-config@4.0.2(postcss@8.4.49):
     dependencies:
       lilconfig: 3.1.3
-      postcss: 8.4.49
       yaml: 2.6.1
+    optionalDependencies:
+      postcss: 8.4.49
 
   postcss-nested@6.2.0(postcss@8.4.49):
     dependencies:
@@ -4521,9 +4519,10 @@ snapshots:
       prettier: 3.4.2
       typescript: 5.7.2
 
-  prettier-plugin-tailwindcss@0.6.9(prettier-plugin-organize-imports@4.1.0)(prettier@3.4.2):
+  prettier-plugin-tailwindcss@0.6.9(prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2))(prettier@3.4.2):
     dependencies:
       prettier: 3.4.2
+    optionalDependencies:
       prettier-plugin-organize-imports: 4.1.0(prettier@3.4.2)(typescript@5.7.2)
 
   prettier@3.4.2: {}
@@ -4555,32 +4554,32 @@ snapshots:
 
   queue-microtask@1.2.3: {}
 
-  rc-field-form@1.44.0(react-dom@18.3.1)(react@18.3.1):
+  rc-field-form@1.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@babel/runtime': 7.26.0
       async-validator: 4.2.5
-      rc-util: 5.44.3(react-dom@18.3.1)(react@18.3.1)
+      rc-util: 5.44.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  rc-motion@2.9.5(react-dom@18.3.1)(react@18.3.1):
+  rc-motion@2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@babel/runtime': 7.26.0
       classnames: 2.5.1
-      rc-util: 5.44.3(react-dom@18.3.1)(react@18.3.1)
+      rc-util: 5.44.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  rc-segmented@2.4.1(react-dom@18.3.1)(react@18.3.1):
+  rc-segmented@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@babel/runtime': 7.26.0
       classnames: 2.5.1
-      rc-motion: 2.9.5(react-dom@18.3.1)(react@18.3.1)
-      rc-util: 5.44.3(react-dom@18.3.1)(react@18.3.1)
+      rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      rc-util: 5.44.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  rc-util@5.44.3(react-dom@18.3.1)(react@18.3.1):
+  rc-util@5.44.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@babel/runtime': 7.26.0
       react: 18.3.1
@@ -5083,6 +5082,7 @@ snapshots:
 
   zustand@4.5.5(@types/react@18.3.18)(react@18.3.1):
     dependencies:
+      use-sync-external-store: 1.2.2(react@18.3.1)
+    optionalDependencies:
       '@types/react': 18.3.18
       react: 18.3.1
-      use-sync-external-store: 1.2.2(react@18.3.1)

+ 48 - 0
src/api/config.ts

@@ -1,3 +1,4 @@
+import { BannerRep } from "@/api/home";
 import { server } from "@/utils/client";
 type SwitchType = 1 | 2; // 1开启 2关闭
 
@@ -38,3 +39,50 @@ export const getShareApi = async (params: { channel_url: string }) => {
         params,
     });
 };
+/**
+ * @description
+ * 获取邮箱联系列表
+ *   POST /v1/api/front/links/contacts
+ *   接口ID:257797888
+ *   接口地址:https://app.apifox.com/link/project/4790544/apis/api-257797888
+ */
+export interface ContactType {
+    /**
+     * 邮箱地址
+     */
+    email: string;
+    /**
+     * 名称
+     */
+    name: string;
+    /**
+     * 侧边栏显示,1显示 2不显示
+     */
+    show_bar: SwitchType;
+    /**
+     * 首页显示,1显示 2不显示
+     */
+    show_home: SwitchType;
+}
+
+export const getContactsApi = async () => {
+    return server.request<ContactType[]>({
+        url: `/v1/api/front/links/contacts`,
+        method: "POST",
+    });
+};
+
+/**
+ * @description
+ * 获取侧边栏
+ *   POST /v1/api/front/sidebar
+ *   接口ID:258235334
+ *   接口地址:https://app.apifox.com/link/project/4790544/apis/api-258235334
+ */
+
+export const getSidebarActivitiesApi = async () => {
+    return server.request<BannerRep[]>({
+        url: `/v1/api/front/sidebar`,
+        method: "POST",
+    });
+};

+ 2 - 28
src/app/[locale]/(TabBar)/[[...share]]/@actionWidget/Service.tsx

@@ -11,7 +11,6 @@ import { getShareApi } from "@/api/config";
 import { getGiveInfoApi } from "@/api/slots";
 import { Link } from "@/i18n/routing";
 import { useGlobalNoticeStore } from "@/stores/useGlobalNoticeStore";
-import { useSocialStore } from "@/stores/useSocials";
 import useWheelStore from "@/stores/useWheelStore";
 import { getToken } from "@/utils/Cookies";
 import { useRequest } from "ahooks";
@@ -23,7 +22,6 @@ import { FC, useEffect, useRef } from "react";
 
 interface Props {
     services: ServiceTypes[];
-    socials: ServiceTypes[];
 }
 /**
  * 免费送活动
@@ -274,10 +272,9 @@ const CustomerSection: FC<Omit<Props, "socials">> = (props) => {
     );
 };
 const ServiceWidget: FC<Props> = (props) => {
-    const { services, socials = [] } = props;
+    const { services } = props;
 
     const newServices = services?.filter((item) => item.status === 1) || [];
-    const setSocials = useSocialStore((state) => state.setSocials);
 
     const getWheel = () => {
         if (!getToken()) return Promise.resolve(undefined);
@@ -290,7 +287,7 @@ const ServiceWidget: FC<Props> = (props) => {
 
     useEffect(() => {
         // 数据存储,侧边栏使用
-        setSocials(socials);
+        // setSocials(socials);
 
         // 分享地址
         if (serach.get("ch")) {
@@ -353,29 +350,6 @@ const ServiceWidget: FC<Props> = (props) => {
                 height={180}
                 className={"mb-[0.2rem]"}
             />
-
-            <div
-                className={`grid`}
-                style={{
-                    gridTemplateColumns: ` repeat(${socials.length >= 5 ? 5 : socials.length},1fr)`,
-                }}
-            >
-                {socials.map((service, index) => {
-                    return (
-                        <Link
-                            key={index}
-                            href={service.url}
-                            target={"_blank"}
-                            className="bg-white m-[0.05rem] h-[0.3889rem] w-[0.3889rem] rounded"
-                        >
-                            <img
-                                className={"h-[0.3889rem] w-[0.3889rem]"}
-                                src={service.icon_url}
-                            ></img>
-                        </Link>
-                    );
-                })}
-            </div>
         </>
     );
 };

+ 2 - 3
src/app/[locale]/(TabBar)/[[...share]]/@actionWidget/page.tsx

@@ -1,4 +1,4 @@
-import { getServicesApi, getSocialsApi } from "@/api/customservice";
+import { getServicesApi } from "@/api/customservice";
 import Box from "@/components/Box";
 import { Link } from "@/i18n/routing";
 import { getTranslations } from "next-intl/server";
@@ -16,7 +16,6 @@ const terms = [
 
 const Page = async () => {
     const services = await getServicesApi();
-    const socials = await getSocialsApi();
     const t = await getTranslations("HomePage");
     return (
         <Box>
@@ -42,7 +41,7 @@ const Page = async () => {
             <div className={"mx-[0.1736rem]"}>
                 {/* service */}
                 <div className="mt-[0.26rem] flex flex-col items-center text-[0.12rem]">
-                    <Service services={services} socials={socials} />
+                    <Service services={services} />
                 </div>
 
                 {/*terms*/}

+ 14 - 0
src/app/[locale]/(TabBar)/[[...share]]/@mediaWidget/page.tsx

@@ -0,0 +1,14 @@
+import { getSocialsApi } from "@/api/customservice";
+import { Media } from "@/components/Media";
+
+const Page = async () => {
+    const socials = await getSocialsApi();
+    if (socials.length === 0) return null;
+    return (
+        <div className={"mb-[0.0694rem]"}>
+            <Media socials={socials} />
+        </div>
+    );
+};
+
+export default Page;

+ 4 - 0
src/app/[locale]/(TabBar)/[[...share]]/layout.tsx

@@ -18,6 +18,7 @@ type Props = {
     searchWidget: ReactNode;
     prizeWidget: ReactNode;
     actionWidget: ReactNode;
+    mediaWidget: ReactNode;
 };
 const Layout: FC<PropsWithChildren<Props>> = (props) => {
     const {
@@ -29,6 +30,7 @@ const Layout: FC<PropsWithChildren<Props>> = (props) => {
         searchWidget,
         prizeWidget,
         actionWidget,
+        mediaWidget,
     } = props;
 
     return (
@@ -45,6 +47,8 @@ const Layout: FC<PropsWithChildren<Props>> = (props) => {
                     {cardWidget}
                     {/* 跑马灯 */}
                     {noticeWidget}
+                    {/*媒体*/}
+                    {mediaWidget}
                     {/* 搜索组件 */}
                     {searchWidget}
                     {/* 搜索下面的大奖展示 */}

+ 36 - 19
src/app/[locale]/(TabBar)/deposit/DepositData.tsx

@@ -9,7 +9,7 @@ import { neReg } from "@/utils";
 import { Button, Form, Input, Toast } from "antd-mobile";
 import { FormInstance } from "antd-mobile/es/components/form";
 import { useTranslations } from "next-intl";
-import { FC, Fragment, useLayoutEffect, useRef, useState } from "react";
+import { FC, useLayoutEffect, useRef, useState } from "react";
 
 import actions from "@/app/[locale]/(TabBar)/deposit/actions";
 import Empty from "@/components/Empty";
@@ -17,6 +17,7 @@ import { useRouter } from "@/i18n/routing";
 import { useSystemStore } from "@/stores/useSystemStore";
 import "@/styles/deposit.scss";
 import { server } from "@/utils/client";
+import { Swiper, SwiperSlide } from "swiper/react";
 interface Props {}
 
 interface RewardsProps {
@@ -179,23 +180,39 @@ const DepositData: FC<Props> = (props) => {
                 />
             </div>
 
-            <div className={"flex flex-wrap"}>
-                {depositState.map((item, index) => {
-                    return (
-                        <Fragment key={item.id}>
-                            <p
-                                className="btn-box truncate"
-                                style={{
-                                    borderColor: activeType?.id === item.id ? "#ff9323" : "#333",
-                                }}
-                                onClick={() => titleChangeHandler(item, index)}
-                            >
-                                {item.name}
-                            </p>
-                        </Fragment>
-                    );
-                })}
-            </div>
+            {/*<div className={"flex flex-wrap"}>*/}
+            {/*    {depositState.map((item, index) => {*/}
+            {/*        return (*/}
+            {/*            <Fragment key={item.id}>*/}
+            {/*                <p*/}
+            {/*                    className="btn-box truncate"*/}
+            {/*                    style={{*/}
+            {/*                        borderColor: activeType?.id === item.id ? "#ff9323" : "#333",*/}
+            {/*                    }}*/}
+            {/*                    onClick={() => titleChangeHandler(item, index)}*/}
+            {/*                >*/}
+            {/*                    {item.name}*/}
+            {/*                </p>*/}
+            {/*            </Fragment>*/}
+            {/*        );*/}
+            {/*    })}*/}
+            {/*</div>*/}
+
+            <Swiper slidesPerView={"auto"} centeredSlidesBounds>
+                {depositState?.map((item, index) => (
+                    <SwiperSlide key={index} className={"max-w-fit"}>
+                        <p
+                            className="btn-box truncate"
+                            style={{
+                                borderColor: activeType?.id === item.id ? "#ff9323" : "#333",
+                            }}
+                            onClick={() => titleChangeHandler(item, index)}
+                        >
+                            {item.name}
+                        </p>
+                    </SwiperSlide>
+                ))}
+            </Swiper>
 
             <Box className={"custom-form"} style={{ padding: 0 }}>
                 <Form
@@ -278,7 +295,7 @@ const DepositData: FC<Props> = (props) => {
                         </div>
                     </div>
                 </Form>
-                <div className={"mt-[5px] text-[0.12rem] text-primary-color"}>
+                <div className={"mt-[5px] text-[0.12rem] text-[#64d23e]"}>
                     {t("DepositPage.depositTips")}
                 </div>
             </Box>

+ 9 - 8
src/app/[locale]/(TabBar)/profile/component/ItemCom/index.tsx

@@ -14,9 +14,10 @@ import "./style.scss";
  */
 export interface ItemComProps {
     type?: string;
+    max: number;
 }
 
-const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
+const ItemCom: FC<ItemComProps> = ({ max, type = "login" }) => {
     const t = useTranslations("ProfilePage");
     const router = useRouter();
     const { unread, userUnread } = useGlobalNoticeStore((state) => ({
@@ -26,7 +27,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
     const links = [
         // { label: "gratis", desc: "gratisDesc", icon: "", url: "/", content: null },
         {
-            label: "company",
+            label: t("company"),
             desc: "",
             icon: "icon-huo",
             color: "rgb(255, 147, 35)",
@@ -34,7 +35,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
             content: null,
         },
         {
-            label: "pray",
+            label: t("pray"),
             desc: "",
             icon: "icon-mianfei",
             color: "#20894d",
@@ -42,7 +43,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
             content: null,
         },
         {
-            label: "cashback",
+            label: t("cashback", { max: max }),
             desc: "",
             icon: "icon-qiandai",
             color: "rgb(255, 147, 35)",
@@ -50,7 +51,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
             content: null,
         },
         {
-            label: "gamblingBets",
+            label: t("gamblingBets"),
             desc: "",
             color: "#30ceef",
             icon: "icon-fuzhiwendang",
@@ -58,7 +59,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
             content: null,
         },
         {
-            label: "transactions",
+            label: t("transactions"),
             desc: "",
             color: "#3cd9a1",
             icon: "icon-jiaoyi",
@@ -66,7 +67,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
             content: null,
         },
         {
-            label: "message",
+            label: t("message"),
             desc: "",
             icon: "icon-xiaoxi3-copy",
             color: "#30ceef",
@@ -99,7 +100,7 @@ const ItemCom: FC<ItemComProps> = ({ type = "login" }) => {
                                     className={`iconfont ${item.icon}`}
                                     style={{ color: item.color, fontSize: "16px" }}
                                 ></i>
-                                {t(item.label)}
+                                {item.label}
                             </div>
                             {item.desc && <p className={"desc"}>{t(item.desc)}</p>}
                         </Badge>

+ 31 - 1
src/app/[locale]/(TabBar)/profile/page.tsx

@@ -1,3 +1,4 @@
+import { CashbackTypes } from "@/api/cashback";
 import { UserInfoRep, UserVipInfo } from "@/api/user";
 import { getMoneyApi } from "@/api/userWallt";
 import { server } from "@/utils/server";
@@ -34,16 +35,45 @@ const getVipApi = async () => {
         });
 };
 
+const getCashBackApi = async () => {
+    return server
+        .request<CashbackTypes>({
+            url: "/v1/api/front/activity_cash",
+            method: "post",
+        })
+        .then((res) => {
+            return res.data;
+        })
+        .catch((error) => {
+            return {
+                rules: [],
+                last_period: { end_time: 0, start_time: 0 },
+                next_period: {
+                    end_time: 0,
+                    start_time: 0,
+                },
+                amount: 0,
+                bet: 0,
+                status: "expired",
+            };
+        });
+};
 export const dynamic = "force-dynamic";
 export const revalidate = 0;
 const Profile = async () => {
     const userInfo = await getUserInfo();
     const userMoney = await getMoneyApi();
     const userVip = await getVipApi();
+    const cashback = await getCashBackApi();
+    const max = cashback.rules.reduce(
+        (acc, item) => (acc > item.cashback ? acc : item.cashback),
+        0
+    );
+
     return (
         <div className="profile-box">
             <ProfileHeader userInfo={userInfo} userMoney={userMoney} userVip={userVip!} />
-            <ItemCom />
+            <ItemCom max={max} />
             <ModalCom />
         </div>
     );

+ 42 - 2
src/app/[locale]/(navbar)/concat/page.tsx

@@ -1,5 +1,45 @@
-const Page = () => {
-    return <div className={"p-[0.13rem]"}>concat</div>;
+import { ContactType } from "@/api/config";
+import Empty from "@/components/Empty";
+import { server } from "@/utils/server";
+import { getTranslations } from "next-intl/server";
+
+const getConcatServerApi = async () => {
+    return server
+        .request<ContactType[]>({
+            url: `/v1/api/front/links/contacts`,
+            method: "POST",
+        })
+        .then((res) => {
+            if (res.data) {
+                return res.data.filter((item) => item.show_home === 1);
+            }
+        });
+};
+const Page = async () => {
+    const data = await getConcatServerApi();
+    const t = await getTranslations("Sidebar");
+    if (!data) return <Empty />;
+    return (
+        <div className={"p-[0.13rem]"}>
+            <section className={"text-[0.13rem]" + " text-[#fff]"}>
+                {data?.map((item, index) => (
+                    <a
+                        key={index}
+                        href={`mailto:${item.email}`}
+                        className={"mb-[0.11rem] flex items-center"}
+                    >
+                        <span
+                            className={
+                                "iconfont icon-duanxinguanli mr-[0.0694rem] text-[0.16rem] text-[#999]"
+                            }
+                        ></span>
+                        <span>{t("concat")}:</span>
+                        <span className={"text-[#56b83f]"}>{item.email}</span>
+                    </a>
+                ))}
+            </section>
+        </div>
+    );
 };
 
 export default Page;

+ 34 - 18
src/app/[locale]/(navbar)/doings/discount/DepositData.tsx

@@ -7,7 +7,7 @@ import { neReg } from "@/utils";
 import { Form, Input, Toast } from "antd-mobile";
 import { FormInstance } from "antd-mobile/es/components/form";
 import { useTranslations } from "next-intl";
-import { FC, Fragment, useLayoutEffect, useRef, useState } from "react";
+import { FC, useLayoutEffect, useRef, useState } from "react";
 
 import ButtonOwn from "@/components/ButtonOwn";
 import { useRouter } from "@/i18n/routing";
@@ -15,6 +15,7 @@ import { useSystemStore } from "@/stores/useSystemStore";
 import "@/styles/deposit.scss";
 import { server } from "@/utils/client";
 import Image from "next/image";
+import { Swiper, SwiperSlide } from "swiper/react";
 interface Props {
     deposits: DepositsTypes[];
 }
@@ -170,23 +171,38 @@ const DepositData: FC<Props> = (props) => {
                     </div>
                 </div>
 
-                <div className={"flex flex-wrap"}>
-                    {depositState.map((item, index) => {
-                        return (
-                            <Fragment key={item.id}>
-                                <p
-                                    className="btn-box truncate"
-                                    style={{
-                                        borderColor: activeType.id === item.id ? "#ff9323" : "#333",
-                                    }}
-                                    onClick={() => titleChangeHandler(item, index)}
-                                >
-                                    {item.name}
-                                </p>
-                            </Fragment>
-                        );
-                    })}
-                </div>
+                {/*<div className={"flex flex-wrap"}>*/}
+                {/*    {depositState.map((item, index) => {*/}
+                {/*        return (*/}
+                {/*            <Fragment key={item.id}>*/}
+                {/*                <p*/}
+                {/*                    className="btn-box truncate"*/}
+                {/*                    style={{*/}
+                {/*                        borderColor: activeType.id === item.id ? "#ff9323" : "#333",*/}
+                {/*                    }}*/}
+                {/*                    onClick={() => titleChangeHandler(item, index)}*/}
+                {/*                >*/}
+                {/*                    {item.name}*/}
+                {/*                </p>*/}
+                {/*            </Fragment>*/}
+                {/*        );*/}
+                {/*    })}*/}
+                {/*</div>*/}
+                <Swiper slidesPerView={"auto"} centeredSlidesBounds>
+                    {depositState?.map((item, index) => (
+                        <SwiperSlide key={index} className={"max-w-fit"}>
+                            <p
+                                className="btn-box truncate"
+                                style={{
+                                    borderColor: activeType?.id === item.id ? "#ff9323" : "#333",
+                                }}
+                                onClick={() => titleChangeHandler(item, index)}
+                            >
+                                {item.name}
+                            </p>
+                        </SwiperSlide>
+                    ))}
+                </Swiper>
 
                 <Box className={"custom-form"} style={{ padding: 0 }}>
                     <Form

+ 35 - 18
src/app/[locale]/(navbar)/withdraw/WithdrawWidget.tsx

@@ -19,7 +19,8 @@ import { ActionSheet, Button, Form, Input, ProgressBar, Toast } from "antd-mobil
 import { FormInstance } from "antd-mobile/es/components/form";
 import { useTranslations } from "next-intl";
 import Link from "next/link";
-import { FC, Fragment, useRef, useState } from "react";
+import { FC, useRef, useState } from "react";
+import { Swiper, SwiperSlide } from "swiper/react";
 import "./page.scss";
 
 interface Props {
@@ -280,23 +281,39 @@ const WithdrawWidget: FC<Props> = (props) => {
                         />
                     </div>
 
-                    <div className={"mb-[0.1rem] flex flex-wrap gap-[0.0347rem]"}>
-                        {channels.map((item) => {
-                            return (
-                                <Fragment key={item.id}>
-                                    <p
-                                        className={`btn-box ${activeWallet.id === item.id ? "active" : ""}`}
-                                        onClick={() => {
-                                            formRef.current?.resetFields();
-                                            setActiveWallet(item);
-                                        }}
-                                    >
-                                        {item.name}
-                                    </p>
-                                </Fragment>
-                            );
-                        })}
-                    </div>
+                    {/*<div className={"mb-[0.1rem] flex flex-wrap gap-[0.0347rem]"}>*/}
+                    {/*    {channels.map((item) => {*/}
+                    {/*        return (*/}
+                    {/*            <Fragment key={item.id}>*/}
+                    {/*                <p*/}
+                    {/*                    className={`btn-box ${activeWallet.id === item.id ? "active" : ""}`}*/}
+                    {/*                    onClick={() => {*/}
+                    {/*                        formRef.current?.resetFields();*/}
+                    {/*                        setActiveWallet(item);*/}
+                    {/*                    }}*/}
+                    {/*                >*/}
+                    {/*                    {item.name}*/}
+                    {/*                </p>*/}
+                    {/*            </Fragment>*/}
+                    {/*        );*/}
+                    {/*    })}*/}
+                    {/*</div>*/}
+
+                    <Swiper slidesPerView={"auto"} className={"mb-[0.1rem]"} centeredSlidesBounds>
+                        {channels?.map((item, index) => (
+                            <SwiperSlide key={item.id} className={"max-w-fit"}>
+                                <p
+                                    className={`btn-box truncate ${activeWallet.id === item.id ? "active" : ""}`}
+                                    onClick={() => {
+                                        formRef.current?.resetFields();
+                                        setActiveWallet(item);
+                                    }}
+                                >
+                                    {item.name}
+                                </p>
+                            </SwiperSlide>
+                        ))}
+                    </Swiper>
 
                     <h1>{t("WithdrawPage.Certifique")}</h1>
                     <p className={"text-[0.1rem] text-[#3bc117]"}>{t("WithdrawPage.keyTips")}</p>

+ 3 - 2
src/app/[locale]/(navbar)/withdraw/page.scss

@@ -18,9 +18,10 @@
       margin-right: .06rem;
       flex-shrink: 0;
       line-height: .28rem;
+      width: 0.98rem;
       align-items: center;
       background: transparent;
-      border: .01px solid #868686;
+      border: 2px solid #868686;
       border-radius: 0.05rem;
       color: #868686;
       font-size: .14rem;
@@ -28,7 +29,7 @@
       text-align: center;
       font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, Helvetica, Segoe UI, Arial, Roboto, PingFang SC, miui, Hiragino Sans GB, Microsoft Yahei, sans-serif;
       &.active {
-        border: .01px solid #ff9323;
+        border: 2px solid #ff9323;
       }
     }
 

+ 1 - 1
src/app/[locale]/affiliate/summary/page.tsx

@@ -49,7 +49,7 @@ const RulesClient = () => {
             render: (item: any) => (
                 <div className={"text-center text-[0.12rem] text-[#db922b]"}>
                     {item?.ratio}
-                    <span className={"text-[#98a7b5]"}>/Dez mill</span>
+                    <span className={"text-[#98a7b5]"}>%</span>
                 </div>
             ),
         },

+ 4 - 5
src/app/[locale]/providers.tsx

@@ -103,11 +103,10 @@ const Layout = ({ children, themeProps }: ProvidersProps) => {
                     </section>
                 </SwiperSlide>
 
-                <SwiperSlide
-                    style={{ width: "70%", height: "100%" }}
-                    className={"bg-[rgb(31,31,31)]"}
-                >
-                    <section className="relative h-[100%]">{<Sidebar></Sidebar>}</section>
+                <SwiperSlide style={{ width: "70%", height: "100%" }} className={""}>
+                    <section className="relative h-[100%]">
+                        <Sidebar></Sidebar>
+                    </section>
                 </SwiperSlide>
 
                 <SwiperSlide style={{ width: "100%", height: "100%" }}>

File diff suppressed because it is too large
+ 79 - 17
src/components/Layout/Sidebar.tsx


+ 47 - 0
src/components/Media/index.tsx

@@ -0,0 +1,47 @@
+"use client";
+import { ServiceTypes } from "@/api/customservice";
+import { Link } from "@/i18n/routing";
+import { useSocialStore } from "@/stores/useSocials";
+import { FC, useEffect } from "react";
+
+export interface MediaType {
+    socials?: ServiceTypes[];
+}
+
+export const Media: FC<MediaType> = (props) => {
+    const { socials = [] } = props;
+
+    const { setSocials, socials: data } = useSocialStore((state) => {
+        return {
+            setSocials: state.setSocials,
+            socials: state.socials,
+        };
+    });
+
+    useEffect(() => {
+        if (socials.length > 0) {
+            setSocials(socials);
+        }
+    }, []);
+    return (
+        <div
+            className={`grid justify-items-center`}
+            style={{
+                gridTemplateColumns: ` repeat(${data.length >= 5 ? 5 : data.length},1fr)`,
+            }}
+        >
+            {data.map((service, index) => {
+                return (
+                    <Link
+                        key={index}
+                        href={service.url}
+                        target={"_blank"}
+                        className="bg-white m-[0.05rem] h-[0.3889rem] w-[0.3889rem] rounded"
+                    >
+                        <img className={"h-[0.3889rem] w-[0.3889rem]"} src={service.icon_url}></img>
+                    </Link>
+                );
+            })}
+        </div>
+    );
+};

+ 1 - 1
src/styles/deposit.scss

@@ -25,7 +25,7 @@
     line-height: .28rem;
     align-items: center;
     background: transparent;
-    border: .01px solid #333;
+    border: 2px solid #333;
     //#ff9323
     border-radius: .05rem;
     color: #868686;

Some files were not shown because too many files changed in this diff