change course data
|
|
@ -13,7 +13,6 @@
|
|||
"next": "^14.0.4",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"uuid": "^9.0.1",
|
||||
"viem": "^1.20.0",
|
||||
"wagmi": "^1.4.12"
|
||||
}
|
||||
|
|
|
|||
222
pnpm-lock.yaml
|
|
@ -3,22 +3,22 @@ lockfileVersion: '6.0'
|
|||
dependencies:
|
||||
'@rainbow-me/rainbowkit':
|
||||
specifier: ^1.3.1
|
||||
version: 1.3.1(react-dom@18.0.0)(react@18.0.0)(viem@1.20.0)(wagmi@1.4.12)
|
||||
version: 1.3.1(react-dom@18.2.0)(react@18.2.0)(viem@1.20.0)(wagmi@1.4.12)
|
||||
next:
|
||||
specifier: 13.5.6
|
||||
version: 13.5.6(react-dom@18.0.0)(react@18.0.0)
|
||||
specifier: ^14.0.4
|
||||
version: 14.0.4(react-dom@18.2.0)(react@18.2.0)
|
||||
react:
|
||||
specifier: ^18
|
||||
version: 18.0.0
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0
|
||||
react-dom:
|
||||
specifier: ^18
|
||||
version: 18.0.0(react@18.0.0)
|
||||
specifier: ^18.2.0
|
||||
version: 18.2.0(react@18.2.0)
|
||||
viem:
|
||||
specifier: ^1.20.0
|
||||
version: 1.20.0(typescript@5.3.3)
|
||||
wagmi:
|
||||
specifier: ^1.4.12
|
||||
version: 1.4.12(react-dom@18.0.0)(react@18.0.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
version: 1.4.12(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
|
||||
packages:
|
||||
|
||||
|
|
@ -156,12 +156,12 @@ packages:
|
|||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/@next/env@13.5.6:
|
||||
resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==}
|
||||
/@next/env@14.0.4:
|
||||
resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==}
|
||||
dev: false
|
||||
|
||||
/@next/swc-darwin-arm64@13.5.6:
|
||||
resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==}
|
||||
/@next/swc-darwin-arm64@14.0.4:
|
||||
resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
|
@ -169,8 +169,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-darwin-x64@13.5.6:
|
||||
resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==}
|
||||
/@next/swc-darwin-x64@14.0.4:
|
||||
resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
|
@ -178,8 +178,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-gnu@13.5.6:
|
||||
resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==}
|
||||
/@next/swc-linux-arm64-gnu@14.0.4:
|
||||
resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
|
@ -187,8 +187,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-musl@13.5.6:
|
||||
resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==}
|
||||
/@next/swc-linux-arm64-musl@14.0.4:
|
||||
resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
|
@ -196,8 +196,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-gnu@13.5.6:
|
||||
resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==}
|
||||
/@next/swc-linux-x64-gnu@14.0.4:
|
||||
resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
|
@ -205,8 +205,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-musl@13.5.6:
|
||||
resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==}
|
||||
/@next/swc-linux-x64-musl@14.0.4:
|
||||
resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
|
@ -214,8 +214,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-arm64-msvc@13.5.6:
|
||||
resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==}
|
||||
/@next/swc-win32-arm64-msvc@14.0.4:
|
||||
resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
|
@ -223,8 +223,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-ia32-msvc@13.5.6:
|
||||
resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==}
|
||||
/@next/swc-win32-ia32-msvc@14.0.4:
|
||||
resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
|
@ -232,8 +232,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-x64-msvc@13.5.6:
|
||||
resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==}
|
||||
/@next/swc-win32-x64-msvc@14.0.4:
|
||||
resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -350,6 +350,7 @@ packages:
|
|||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
micromatch: 4.0.5
|
||||
napi-wasm: 1.1.0
|
||||
dev: false
|
||||
bundledDependencies:
|
||||
- napi-wasm
|
||||
|
|
@ -404,7 +405,7 @@ packages:
|
|||
'@parcel/watcher-win32-x64': 2.3.0
|
||||
dev: false
|
||||
|
||||
/@rainbow-me/rainbowkit@1.3.1(react-dom@18.0.0)(react@18.0.0)(viem@1.20.0)(wagmi@1.4.12):
|
||||
/@rainbow-me/rainbowkit@1.3.1(react-dom@18.2.0)(react@18.2.0)(viem@1.20.0)(wagmi@1.4.12):
|
||||
resolution: {integrity: sha512-4Upi+S12ZHosimzlUpCiOocg4dtfGU2wkzcpxeat/FYHrvhVIOgm0TuzbsIM96W1p7OXabosd7xuxPvwduUygQ==}
|
||||
engines: {node: '>=12.4'}
|
||||
peerDependencies:
|
||||
|
|
@ -419,12 +420,12 @@ packages:
|
|||
clsx: 1.1.1
|
||||
i18n-js: 4.3.2
|
||||
qrcode: 1.5.0
|
||||
react: 18.0.0
|
||||
react-dom: 18.0.0(react@18.0.0)
|
||||
react-remove-scroll: 2.5.4(react@18.0.0)
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
react-remove-scroll: 2.5.4(react@18.2.0)
|
||||
ua-parser-js: 1.0.37
|
||||
viem: 1.20.0(typescript@5.3.3)
|
||||
wagmi: 1.4.12(react-dom@18.0.0)(react@18.0.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
wagmi: 1.4.12(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
dev: false
|
||||
|
|
@ -652,10 +653,10 @@ packages:
|
|||
'@tanstack/react-query': ^4.36.1
|
||||
dependencies:
|
||||
'@tanstack/query-persist-client-core': 4.36.1
|
||||
'@tanstack/react-query': 4.36.1(react-dom@18.0.0)(react@18.0.0)
|
||||
'@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@tanstack/react-query@4.36.1(react-dom@18.0.0)(react@18.0.0):
|
||||
/@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
|
|
@ -668,9 +669,9 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@tanstack/query-core': 4.36.1
|
||||
react: 18.0.0
|
||||
react-dom: 18.0.0(react@18.0.0)
|
||||
use-sync-external-store: 1.2.0(react@18.0.0)
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/@types/connect@3.4.38:
|
||||
|
|
@ -737,7 +738,7 @@ packages:
|
|||
'@vanilla-extract/css': 1.9.1
|
||||
dev: false
|
||||
|
||||
/@wagmi/connectors@3.1.10(react@18.0.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
/@wagmi/connectors@3.1.10(react@18.2.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
resolution: {integrity: sha512-ZLJC1QaeiZarkF07Cr9mOlVjPO1Lf5TBx+JKBms2y5fUIXlKrxCfQgO/gDCureboI+Us2X3IRI659+XacSGpbA==}
|
||||
peerDependencies:
|
||||
typescript: '>=5.0.4'
|
||||
|
|
@ -749,9 +750,9 @@ packages:
|
|||
'@coinbase/wallet-sdk': 3.7.2
|
||||
'@safe-global/safe-apps-provider': 0.18.1(typescript@5.3.3)
|
||||
'@safe-global/safe-apps-sdk': 8.1.0(typescript@5.3.3)
|
||||
'@walletconnect/ethereum-provider': 2.10.6(react@18.0.0)
|
||||
'@walletconnect/ethereum-provider': 2.10.6(react@18.2.0)
|
||||
'@walletconnect/legacy-provider': 2.0.0
|
||||
'@walletconnect/modal': 2.6.2(react@18.0.0)
|
||||
'@walletconnect/modal': 2.6.2(react@18.2.0)
|
||||
'@walletconnect/utils': 2.10.2
|
||||
abitype: 0.8.7(typescript@5.3.3)
|
||||
eventemitter3: 4.0.7
|
||||
|
|
@ -779,7 +780,7 @@ packages:
|
|||
- zod
|
||||
dev: false
|
||||
|
||||
/@wagmi/core@1.4.12(react@18.0.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
/@wagmi/core@1.4.12(react@18.2.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
resolution: {integrity: sha512-bLcYmmGgjtl3jAGo8X3Sm6oUwsdjbVxFMu9SWnwHdE4S9JdYeWM57dEhQgq8SYul2yQ7yY2/gimBf1Or0Ky3dQ==}
|
||||
peerDependencies:
|
||||
typescript: '>=5.0.4'
|
||||
|
|
@ -788,12 +789,12 @@ packages:
|
|||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@wagmi/connectors': 3.1.10(react@18.0.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
'@wagmi/connectors': 3.1.10(react@18.2.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
abitype: 0.8.7(typescript@5.3.3)
|
||||
eventemitter3: 4.0.7
|
||||
typescript: 5.3.3
|
||||
viem: 1.20.0(typescript@5.3.3)
|
||||
zustand: 4.4.7(react@18.0.0)
|
||||
zustand: 4.4.7(react@18.2.0)
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
- '@azure/cosmos'
|
||||
|
|
@ -879,14 +880,14 @@ packages:
|
|||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@walletconnect/ethereum-provider@2.10.6(react@18.0.0):
|
||||
/@walletconnect/ethereum-provider@2.10.6(react@18.2.0):
|
||||
resolution: {integrity: sha512-bBQ+yUfxLv8VxNttgNKY7nED35gSVayO/BnLHbNKvyV1gpvSCla5mWB9MsXuQs70MK0g+/qtgRVSrOtdSubaNQ==}
|
||||
dependencies:
|
||||
'@walletconnect/jsonrpc-http-connection': 1.0.7
|
||||
'@walletconnect/jsonrpc-provider': 1.0.13
|
||||
'@walletconnect/jsonrpc-types': 1.0.3
|
||||
'@walletconnect/jsonrpc-utils': 1.0.8
|
||||
'@walletconnect/modal': 2.6.2(react@18.0.0)
|
||||
'@walletconnect/modal': 2.6.2(react@18.2.0)
|
||||
'@walletconnect/sign-client': 2.10.6
|
||||
'@walletconnect/types': 2.10.6
|
||||
'@walletconnect/universal-provider': 2.10.6
|
||||
|
|
@ -1064,19 +1065,19 @@ packages:
|
|||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@walletconnect/modal-core@2.6.2(react@18.0.0):
|
||||
/@walletconnect/modal-core@2.6.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==}
|
||||
dependencies:
|
||||
valtio: 1.11.2(react@18.0.0)
|
||||
valtio: 1.11.2(react@18.2.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- react
|
||||
dev: false
|
||||
|
||||
/@walletconnect/modal-ui@2.6.2(react@18.0.0):
|
||||
/@walletconnect/modal-ui@2.6.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==}
|
||||
dependencies:
|
||||
'@walletconnect/modal-core': 2.6.2(react@18.0.0)
|
||||
'@walletconnect/modal-core': 2.6.2(react@18.2.0)
|
||||
lit: 2.8.0
|
||||
motion: 10.16.2
|
||||
qrcode: 1.5.3
|
||||
|
|
@ -1085,11 +1086,11 @@ packages:
|
|||
- react
|
||||
dev: false
|
||||
|
||||
/@walletconnect/modal@2.6.2(react@18.0.0):
|
||||
/@walletconnect/modal@2.6.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==}
|
||||
dependencies:
|
||||
'@walletconnect/modal-core': 2.6.2(react@18.0.0)
|
||||
'@walletconnect/modal-ui': 2.6.2(react@18.0.0)
|
||||
'@walletconnect/modal-core': 2.6.2(react@18.2.0)
|
||||
'@walletconnect/modal-ui': 2.6.2(react@18.2.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- react
|
||||
|
|
@ -2382,9 +2383,13 @@ packages:
|
|||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/next@13.5.6(react-dom@18.0.0)(react@18.0.0):
|
||||
resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==}
|
||||
engines: {node: '>=16.14.0'}
|
||||
/napi-wasm@1.1.0:
|
||||
resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==}
|
||||
dev: false
|
||||
|
||||
/next@14.0.4(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
|
||||
engines: {node: '>=18.17.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.1.0
|
||||
|
|
@ -2397,25 +2402,26 @@ packages:
|
|||
sass:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@next/env': 13.5.6
|
||||
'@next/env': 14.0.4
|
||||
'@swc/helpers': 0.5.2
|
||||
busboy: 1.6.0
|
||||
caniuse-lite: 1.0.30001570
|
||||
graceful-fs: 4.2.11
|
||||
postcss: 8.4.31
|
||||
react: 18.0.0
|
||||
react-dom: 18.0.0(react@18.0.0)
|
||||
styled-jsx: 5.1.1(react@18.0.0)
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
styled-jsx: 5.1.1(react@18.2.0)
|
||||
watchpack: 2.4.0
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 13.5.6
|
||||
'@next/swc-darwin-x64': 13.5.6
|
||||
'@next/swc-linux-arm64-gnu': 13.5.6
|
||||
'@next/swc-linux-arm64-musl': 13.5.6
|
||||
'@next/swc-linux-x64-gnu': 13.5.6
|
||||
'@next/swc-linux-x64-musl': 13.5.6
|
||||
'@next/swc-win32-arm64-msvc': 13.5.6
|
||||
'@next/swc-win32-ia32-msvc': 13.5.6
|
||||
'@next/swc-win32-x64-msvc': 13.5.6
|
||||
'@next/swc-darwin-arm64': 14.0.4
|
||||
'@next/swc-darwin-x64': 14.0.4
|
||||
'@next/swc-linux-arm64-gnu': 14.0.4
|
||||
'@next/swc-linux-arm64-musl': 14.0.4
|
||||
'@next/swc-linux-x64-gnu': 14.0.4
|
||||
'@next/swc-linux-x64-musl': 14.0.4
|
||||
'@next/swc-win32-arm64-msvc': 14.0.4
|
||||
'@next/swc-win32-ia32-msvc': 14.0.4
|
||||
'@next/swc-win32-x64-msvc': 14.0.4
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
|
|
@ -2677,17 +2683,17 @@ packages:
|
|||
safe-buffer: 5.2.1
|
||||
dev: false
|
||||
|
||||
/react-dom@18.0.0(react@18.0.0):
|
||||
resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==}
|
||||
/react-dom@18.2.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
|
||||
peerDependencies:
|
||||
react: ^18.0.0
|
||||
react: ^18.2.0
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
react: 18.0.0
|
||||
scheduler: 0.21.0
|
||||
react: 18.2.0
|
||||
scheduler: 0.23.0
|
||||
dev: false
|
||||
|
||||
/react-remove-scroll-bar@2.3.4(react@18.0.0):
|
||||
/react-remove-scroll-bar@2.3.4(react@18.2.0):
|
||||
resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
|
|
@ -2697,12 +2703,12 @@ packages:
|
|||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
react: 18.0.0
|
||||
react-style-singleton: 2.2.1(react@18.0.0)
|
||||
react: 18.2.0
|
||||
react-style-singleton: 2.2.1(react@18.2.0)
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/react-remove-scroll@2.5.4(react@18.0.0):
|
||||
/react-remove-scroll@2.5.4(react@18.2.0):
|
||||
resolution: {integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
|
|
@ -2712,15 +2718,15 @@ packages:
|
|||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
react: 18.0.0
|
||||
react-remove-scroll-bar: 2.3.4(react@18.0.0)
|
||||
react-style-singleton: 2.2.1(react@18.0.0)
|
||||
react: 18.2.0
|
||||
react-remove-scroll-bar: 2.3.4(react@18.2.0)
|
||||
react-style-singleton: 2.2.1(react@18.2.0)
|
||||
tslib: 2.6.2
|
||||
use-callback-ref: 1.3.0(react@18.0.0)
|
||||
use-sidecar: 1.1.2(react@18.0.0)
|
||||
use-callback-ref: 1.3.0(react@18.2.0)
|
||||
use-sidecar: 1.1.2(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/react-style-singleton@2.2.1(react@18.0.0):
|
||||
/react-style-singleton@2.2.1(react@18.2.0):
|
||||
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
|
|
@ -2732,12 +2738,12 @@ packages:
|
|||
dependencies:
|
||||
get-nonce: 1.0.1
|
||||
invariant: 2.2.4
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/react@18.0.0:
|
||||
resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==}
|
||||
/react@18.2.0:
|
||||
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
|
|
@ -2817,8 +2823,8 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: false
|
||||
|
||||
/scheduler@0.21.0:
|
||||
resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==}
|
||||
/scheduler@0.23.0:
|
||||
resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
|
@ -2954,7 +2960,7 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/styled-jsx@5.1.1(react@18.0.0):
|
||||
/styled-jsx@5.1.1(react@18.2.0):
|
||||
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
peerDependencies:
|
||||
|
|
@ -2968,7 +2974,7 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
client-only: 0.0.1
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/superstruct@0.14.2:
|
||||
|
|
@ -3134,7 +3140,7 @@ packages:
|
|||
resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
|
||||
dev: false
|
||||
|
||||
/use-callback-ref@1.3.0(react@18.0.0):
|
||||
/use-callback-ref@1.3.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
|
|
@ -3144,11 +3150,11 @@ packages:
|
|||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/use-sidecar@1.1.2(react@18.0.0):
|
||||
/use-sidecar@1.1.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
|
|
@ -3159,16 +3165,16 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
detect-node-es: 1.1.0
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/use-sync-external-store@1.2.0(react@18.0.0):
|
||||
/use-sync-external-store@1.2.0(react@18.2.0):
|
||||
resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/utf-8-validate@5.0.10:
|
||||
|
|
@ -3198,7 +3204,7 @@ packages:
|
|||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/valtio@1.11.2(react@18.0.0):
|
||||
/valtio@1.11.2(react@18.2.0):
|
||||
resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==}
|
||||
engines: {node: '>=12.20.0'}
|
||||
peerDependencies:
|
||||
|
|
@ -3211,8 +3217,8 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
proxy-compare: 2.5.1
|
||||
react: 18.0.0
|
||||
use-sync-external-store: 1.2.0(react@18.0.0)
|
||||
react: 18.2.0
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/viem@1.20.0(typescript@5.3.3):
|
||||
|
|
@ -3238,7 +3244,7 @@ packages:
|
|||
- zod
|
||||
dev: false
|
||||
|
||||
/wagmi@1.4.12(react-dom@18.0.0)(react@18.0.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
/wagmi@1.4.12(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.0):
|
||||
resolution: {integrity: sha512-QRxpjhdMlZmbYTfn9VQkQMKq+l3kwA1O7tF10vaykPrjbGX+IIlyn72ib9oqW9BfQO7n/Sf/mnVz1zbxRhGPWA==}
|
||||
peerDependencies:
|
||||
react: '>=17.0.0'
|
||||
|
|
@ -3249,13 +3255,13 @@ packages:
|
|||
optional: true
|
||||
dependencies:
|
||||
'@tanstack/query-sync-storage-persister': 4.36.1
|
||||
'@tanstack/react-query': 4.36.1(react-dom@18.0.0)(react@18.0.0)
|
||||
'@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
|
||||
'@tanstack/react-query-persist-client': 4.36.1(@tanstack/react-query@4.36.1)
|
||||
'@wagmi/core': 1.4.12(react@18.0.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
'@wagmi/core': 1.4.12(react@18.2.0)(typescript@5.3.3)(viem@1.20.0)
|
||||
abitype: 0.8.7(typescript@5.3.3)
|
||||
react: 18.0.0
|
||||
react: 18.2.0
|
||||
typescript: 5.3.3
|
||||
use-sync-external-store: 1.2.0(react@18.0.0)
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
viem: 1.20.0(typescript@5.3.3)
|
||||
transitivePeerDependencies:
|
||||
- '@azure/app-configuration'
|
||||
|
|
@ -3416,7 +3422,7 @@ packages:
|
|||
yargs-parser: 18.1.3
|
||||
dev: false
|
||||
|
||||
/zustand@4.4.7(react@18.0.0):
|
||||
/zustand@4.4.7(react@18.2.0):
|
||||
resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==}
|
||||
engines: {node: '>=12.7.0'}
|
||||
peerDependencies:
|
||||
|
|
@ -3431,6 +3437,6 @@ packages:
|
|||
react:
|
||||
optional: true
|
||||
dependencies:
|
||||
react: 18.0.0
|
||||
use-sync-external-store: 1.2.0(react@18.0.0)
|
||||
react: 18.2.0
|
||||
use-sync-external-store: 1.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 227 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
|
@ -1,5 +1,5 @@
|
|||
:root {
|
||||
--max-width: 1100px;
|
||||
--max-width: 1280px;
|
||||
--border-radius: 12px;
|
||||
--color-bg0: hsl(210deg 40% 4%);
|
||||
--color-bg1: hsl(210deg 40% 12%);
|
||||
|
|
@ -50,6 +50,16 @@ a {
|
|||
border: none;
|
||||
}
|
||||
|
||||
.pressable {
|
||||
transition: transform 0.125s;
|
||||
}
|
||||
.pressable:hover {
|
||||
transform: scale(1.025);
|
||||
}
|
||||
.pressable:active {
|
||||
transform: scale(0.95);
|
||||
}
|
||||
|
||||
.input {
|
||||
padding: 0.75rem;
|
||||
border: none;
|
||||
|
|
|
|||
|
|
@ -1,42 +1,40 @@
|
|||
import Container from "@/components/Container";
|
||||
import styles from "./page.module.css";
|
||||
import { COURSES } from "@/mockData";
|
||||
import { formatPrice } from "@/utils";
|
||||
import CourseGrid from "@/components/CourseGrid";
|
||||
import { COURSES } from "@/mockData";
|
||||
import styles from "./page.module.css";
|
||||
|
||||
export default function CategoryPage({ params }) {
|
||||
// Seçilen kategoriye göre kursları filtrele
|
||||
const filteredCourses = COURSES.filter(
|
||||
(course) => course.category.slug === params.categorySlug
|
||||
);
|
||||
const filteredCourses = COURSES.filter(
|
||||
(course) => course.category.slug === params.categorySlug
|
||||
);
|
||||
|
||||
// Eğer filtrelenen kurslar boşsa, isteğe bağlı bir mesaj gösterebilirsiniz
|
||||
if (filteredCourses.length === 0) {
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
<section>
|
||||
<div>
|
||||
<h1 className={styles.sectionTitle}>Bu kategoriye ait kurs bulunamadı.</h1>
|
||||
</div>
|
||||
</section>
|
||||
</Container>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
if (filteredCourses.length === 0) {
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
<section>
|
||||
<div>
|
||||
<h1 className={styles.sectionTitle}>
|
||||
Bu kategoriye ait kurs bulunamadı.
|
||||
</h1>
|
||||
</div>
|
||||
</section>
|
||||
</Container>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
||||
// Filtrelenen kurslar varsa, her bir kurs için ayrı bir blok oluşturun
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
<section>
|
||||
<div>
|
||||
<h1 className={styles.sectionTitle}>{params.categorySlug}</h1>
|
||||
<h2 className={styles.sectionTitle}>Çok Satanlar</h2>
|
||||
<CourseGrid courses={filteredCourses} />
|
||||
</div>
|
||||
</section>
|
||||
</Container>
|
||||
</main>
|
||||
);
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
<section>
|
||||
<div>
|
||||
<h1 className={styles.sectionTitle}>{params.categorySlug}</h1>
|
||||
<h2 className={styles.sectionTitle}>Çok Satanlar</h2>
|
||||
<CourseGrid courses={filteredCourses} />
|
||||
</div>
|
||||
</section>
|
||||
</Container>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,45 +1,38 @@
|
|||
"use client";
|
||||
import React from 'react';
|
||||
import Link from 'next/link';
|
||||
import styles from './page.module.css';
|
||||
import Container from '@/components/Container';
|
||||
import styles from "./page.module.css";
|
||||
|
||||
const Step = ({ step, completed, onClick }) => (
|
||||
<div className={styles.step} onClick={() => onClick()}>
|
||||
{completed ? '✅' : '◻️'} {step}
|
||||
</div>
|
||||
<div className={styles.step} onClick={() => onClick()}>
|
||||
{completed ? "✅" : "◻️"} {step}
|
||||
</div>
|
||||
);
|
||||
|
||||
const Home = () => {
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
{/* Soldaki ders videosu */}
|
||||
<div className={styles.videoContainer}>
|
||||
{/* Video bileşeni veya iframe ekleyebilirsiniz */}
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/VIDEO_ID"
|
||||
title="YouTube video player"
|
||||
frameBorder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
className={styles.video}
|
||||
></iframe>
|
||||
</div>
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<div className={styles.videoContainer}>
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/VIDEO_ID"
|
||||
title="YouTube video player"
|
||||
frameBorder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
className={styles.video}
|
||||
></iframe>
|
||||
</div>
|
||||
|
||||
{/* Sağdaki kurs içeriği */}
|
||||
<div className={styles.sidebar}>
|
||||
|
||||
<div className={styles.courseContainer}>
|
||||
<h2>Kurs İçeriği</h2>
|
||||
<div className={styles.courseContent}>
|
||||
<Step step="Adım 1" completed={false} onClick={() => {}} />
|
||||
<Step step="Adım 2" completed={false} onClick={() => {}} />
|
||||
<Step step="Adım 3" completed={false} onClick={() => {}} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
<div className={styles.sidebar}>
|
||||
<div className={styles.courseContainer}>
|
||||
<h2>Kurs İçeriği</h2>
|
||||
<div className={styles.courseContent}>
|
||||
<Step step="Adım 1" completed={false} onClick={() => {}} />
|
||||
<Step step="Adım 2" completed={false} onClick={() => {}} />
|
||||
<Step step="Adım 3" completed={false} onClick={() => {}} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
|
|
|
|||
|
|
@ -1,36 +1,33 @@
|
|||
/* styles/Home.module.css */
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
}
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 500px;
|
||||
padding: 50px;
|
||||
border-left: 2px solid #ccc;
|
||||
}
|
||||
.sidebar {
|
||||
width: 500px;
|
||||
padding: 50px;
|
||||
border-left: 2px solid #ccc;
|
||||
}
|
||||
|
||||
.videoContainer {
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
}
|
||||
.videoContainer {
|
||||
flex: 1;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.courseContent {
|
||||
flex: 1;
|
||||
padding: 10px;
|
||||
}
|
||||
.courseContent {
|
||||
flex: 1;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.step {
|
||||
cursor: pointer;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.video {
|
||||
width: 120%;
|
||||
max-width: 1000px;
|
||||
aspect-ratio: 16 / 9;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.step {
|
||||
cursor: pointer;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.video {
|
||||
width: 120%;
|
||||
max-width: 1000px;
|
||||
aspect-ratio: 16 / 9;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +1,30 @@
|
|||
import Link from "next/link";
|
||||
import Container from "@/components/Container";
|
||||
import CourseGrid from "@/components/CourseGrid";
|
||||
import { CATEGORIES, COURSES } from "@/mockData";
|
||||
import Link from "next/link";
|
||||
import styles from "./page.module.css";
|
||||
|
||||
export default function HomePage() {
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
{/* Kategorilerin buton gibi yan yana dizilmiş hali */}
|
||||
<div className={styles.categories}>
|
||||
{CATEGORIES.map((category) => (
|
||||
<Link key={category.slug} href={`/kategoriler/${category.slug}`}>
|
||||
<div className={styles.categoryButton}>
|
||||
<span>{category.name}</span>
|
||||
</div>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
return (
|
||||
<main className={styles.root}>
|
||||
<Container>
|
||||
<div className={styles.categories}>
|
||||
{CATEGORIES.map((category) => (
|
||||
<Link
|
||||
key={category.id}
|
||||
href={`/kategoriler/${category.slug}`}
|
||||
className="btn btn-primary"
|
||||
>
|
||||
{category.name}
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<h1 className={styles.sectionTitle}>Çok Satanlar</h1>
|
||||
<CourseGrid courses={COURSES} />
|
||||
</section>
|
||||
</Container>
|
||||
|
||||
</main>
|
||||
);
|
||||
<section>
|
||||
<h1 className={styles.sectionTitle}>Çok Satanlar</h1>
|
||||
<CourseGrid courses={COURSES} />
|
||||
</section>
|
||||
</Container>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,14 +10,5 @@
|
|||
|
||||
.categories {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.categoryButton {
|
||||
padding: 8px;
|
||||
background-color: #f0f0f0;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
import { formatPrice } from "@/utils";
|
||||
import { cn, formatPrice } from "@/utils";
|
||||
import Link from "next/link";
|
||||
import styles from "./CourseGridItem.module.css";
|
||||
|
||||
export default function CourseGridItem({ course }) {
|
||||
return (
|
||||
<Link href={`/kurslar/${course.id}`} className={styles.root}>
|
||||
<Link
|
||||
href={`/kurslar/${course.id}`}
|
||||
className={cn(styles.root, "pressable")}
|
||||
>
|
||||
<img className={styles.image} src={course.imageUrl} alt="Kurs resmi" />
|
||||
<div className={styles.body}>
|
||||
<span className={styles.name}>{course.name}</span>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
// Header.js
|
||||
import { ConnectButton } from "@rainbow-me/rainbowkit";
|
||||
import Link from "next/link";
|
||||
import styles from "./Header.module.css";
|
||||
|
|
|
|||
|
|
@ -23,18 +23,16 @@
|
|||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
/* input yerine .search-input class'ını kullan */
|
||||
.search-input {
|
||||
padding: 8px;
|
||||
margin-right: 8px;
|
||||
padding: 8px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* button yerine .search-button class'ını kullan */
|
||||
.search-button {
|
||||
padding: 8px 16px;
|
||||
background-color: #ff0000;
|
||||
color: #fff;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: 8px 16px;
|
||||
background-color: #ff0000;
|
||||
color: #fff;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,19 +9,8 @@ export default function WalletManager() {
|
|||
useEffect(() => {
|
||||
if (address) {
|
||||
console.log("** Wallet connected. Address: ", address);
|
||||
// fetchMe();
|
||||
} else {
|
||||
console.log("** Wallet disconnected.");
|
||||
}
|
||||
}, [address]);
|
||||
|
||||
// const fetchMe = async () => {
|
||||
// const resp = await fetch(`${CONFIG.BACKEND_ADDRESS}/me`, {
|
||||
// headers: {
|
||||
// authorization: `Basic ${address}`,
|
||||
// },
|
||||
// });
|
||||
// const respData = await resp.json();
|
||||
// console.log("hey user:", respData.data);
|
||||
// };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,10 @@ import {
|
|||
RainbowKitProvider,
|
||||
} from "@rainbow-me/rainbowkit";
|
||||
import { configureChains, createConfig, WagmiConfig } from "wagmi";
|
||||
import { hardhat, sepolia } from "wagmi/chains";
|
||||
import { sepolia } from "wagmi/chains";
|
||||
import { publicProvider } from "wagmi/providers/public";
|
||||
|
||||
const { chains, publicClient } = configureChains(
|
||||
[sepolia, hardhat],
|
||||
[publicProvider()]
|
||||
);
|
||||
const { chains, publicClient } = configureChains([sepolia], [publicProvider()]);
|
||||
|
||||
const { connectors } = getDefaultWallets({
|
||||
appName: "GSB Genç Blokzincir Hackathon Project",
|
||||
|
|
|
|||
145
src/mockData.js
|
|
@ -1,75 +1,92 @@
|
|||
// categories
|
||||
export const CATEGORIES = [
|
||||
{ slug: "blokzincir", name: "Blokzincir" },
|
||||
{ slug: "ön-yüz", name: "Frontend" },
|
||||
{ slug: "linux", name: "Linux" },
|
||||
{ slug: "yapay-zeka", name: "Yapay Zeka" },
|
||||
];
|
||||
{ id: "1", slug: "blokzincir", name: "Blokzincir" },
|
||||
{ id: "2", slug: "onyuz", name: "Önyüz Geliştirme" },
|
||||
{ id: "3", slug: "linux", name: "Linux" },
|
||||
{ id: "4", slug: "yapay-zeka", name: "Yapay Zeka" },
|
||||
];
|
||||
|
||||
// courses
|
||||
export const COURSES = [
|
||||
export const COURSES = [
|
||||
{
|
||||
id: "6a3753e8-5f4e-4f4d-a05e-44b84b8f7aed",
|
||||
name: "Ethereum ve Solidity",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "0.05",
|
||||
start: "",
|
||||
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||
instructor: {
|
||||
name: "Baturalp Güvenç",
|
||||
},
|
||||
category: CATEGORIES.find((category) => category.slug === "blokzincir"),
|
||||
},
|
||||
{
|
||||
id: "6a3753e8-5f4e-4f4d-a05e-44b84b8f7aed",
|
||||
name: "Audit",
|
||||
id: "1",
|
||||
name: "Ethereum ve Solidity",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "0.05",
|
||||
start: "",
|
||||
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "300",
|
||||
imageUrl: "/course-images/ethereum-and-solidity.webp",
|
||||
instructor: {
|
||||
name: "Mehmet Hayırlı",
|
||||
name: "Baturalp Güvenç",
|
||||
},
|
||||
category: CATEGORIES.find((category) => category.slug === "blokzincir"),
|
||||
},
|
||||
{
|
||||
id: "c7253736-5756-4a64-a072-917c66afa877",
|
||||
name: "Next.js ile Önyüz Uygulamaları Geliştirme",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "0.05",
|
||||
start: "",
|
||||
imageUrl: "https://osmannyildiz.tk/cublearn/elmacik.webp",
|
||||
instructor: {
|
||||
name: "Furkan Ayvaz",
|
||||
},
|
||||
category: CATEGORIES.find((category) => category.slug === "ön-yüz"),
|
||||
category: CATEGORIES.find((c) => c.slug === "blokzincir"),
|
||||
},
|
||||
{
|
||||
id: "59a8f94b-7358-4ffe-bced-a54cccc93e64",
|
||||
name: "Pardus'a Giriş",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "0.05",
|
||||
start: "",
|
||||
imageUrl: "https://osmannyildiz.tk/cublearn/masalik.webp",
|
||||
instructor: {
|
||||
name: "Berk Çiçek",
|
||||
},
|
||||
category: CATEGORIES.find((category) => category.slug === "linux"),
|
||||
id: "2",
|
||||
name: "Akıllı Sözleşme Güvenliği",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "500",
|
||||
imageUrl: "/course-images/smart-contract-security.jpg",
|
||||
instructor: {
|
||||
name: "Mehmet Hayırlı",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "blokzincir"),
|
||||
},
|
||||
{
|
||||
id: "6a375fae8-5f4e-4244d-a05e-44b84b8adaf7aed",
|
||||
name: "Yapay Zekaya Giriş",
|
||||
description: "Hosta La Vista!",
|
||||
price: "0.05",
|
||||
imageUrl: "https://osmannyildiz.tk/cublearn/akinci.webp",
|
||||
instructor: {
|
||||
name: "Muhammed Akıncı",
|
||||
},
|
||||
category: CATEGORIES.find((category) => category.slug === "yapay-zeka"),
|
||||
id: "3",
|
||||
name: "Next.js ile Önyüz Uygulamaları Geliştirme",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "200",
|
||||
imageUrl: "/course-images/nextjs.jpg",
|
||||
instructor: {
|
||||
name: "Furkan Ayvaz",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "onyuz"),
|
||||
},
|
||||
];
|
||||
|
||||
{
|
||||
id: "4",
|
||||
name: "Pardus'a Giriş",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "0.05",
|
||||
imageUrl: "/course-images/pardus.jpg",
|
||||
instructor: {
|
||||
name: "Berk Çiçek",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "linux"),
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
name: "Yapay Zekaya Giriş",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
imageUrl: "/course-images/ai.png",
|
||||
instructor: {
|
||||
name: "Muhammed Akıncı",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "yapay-zeka"),
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
name: "React.js Temelleri",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "250",
|
||||
imageUrl: "/course-images/reactjs.jpg",
|
||||
instructor: {
|
||||
name: "Recep Akkaya",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "onyuz"),
|
||||
},
|
||||
{
|
||||
id: "7",
|
||||
name: "Avalanche ile Merkeziyetsiz Uygulamalar",
|
||||
description:
|
||||
"Lorem ipsum dolor sit amet consectetur adipisicing elit. Autem vitae veritatis deserunt quidem hic ea repellendus fugiat ducimus tenetur. Fugit cumque quo saepe possimus rem qui odit vitae dignissimos reprehenderit!",
|
||||
price: "450",
|
||||
imageUrl: "/course-images/avalanche.png",
|
||||
instructor: {
|
||||
name: "Ali Gedikli",
|
||||
},
|
||||
category: CATEGORIES.find((c) => c.slug === "blokzincir"),
|
||||
},
|
||||
];
|
||||
|
|
|
|||