feat: landing page update
@@ -15,6 +15,7 @@
|
||||
"@ant-design/use-emotion-css": "^1.0.4",
|
||||
"@babel/preset-env": "^7.24.5",
|
||||
"@types/crypto-js": "^4.2.2",
|
||||
"@types/uuid": "^9.0.8",
|
||||
"@vitejs/plugin-legacy": "^5.4.0",
|
||||
"antd": "^5.17.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
@@ -35,6 +36,7 @@
|
||||
"tailwind-merge": "^2.3.0",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"tailwindcss-animate": "^1.0.7",
|
||||
"uuid": "^9.0.1",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-html": "^3.2.2",
|
||||
"vite-plugin-svg-icons": "^2.0.1"
|
||||
|
864
pnpm-lock.yaml
generated
@@ -17,30 +17,12 @@ dependencies:
|
||||
'@babel/preset-env':
|
||||
specifier: ^7.24.5
|
||||
version: 7.24.5(@babel/core@7.24.5)
|
||||
'@radix-ui/react-accordion':
|
||||
specifier: ^1.1.2
|
||||
version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-avatar':
|
||||
specifier: ^1.0.4
|
||||
version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-dialog':
|
||||
specifier: ^1.0.5
|
||||
version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-dropdown-menu':
|
||||
specifier: ^2.0.6
|
||||
version: 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-icons':
|
||||
specifier: ^1.3.0
|
||||
version: 1.3.0(react@18.3.1)
|
||||
'@radix-ui/react-navigation-menu':
|
||||
specifier: ^1.1.4
|
||||
version: 1.1.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-slot':
|
||||
specifier: ^1.0.2
|
||||
version: 1.0.2(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/crypto-js':
|
||||
specifier: ^4.2.2
|
||||
version: 4.2.2
|
||||
'@types/uuid':
|
||||
specifier: ^9.0.8
|
||||
version: 9.0.8
|
||||
'@vitejs/plugin-legacy':
|
||||
specifier: ^5.4.0
|
||||
version: 5.4.0(terser@5.31.0)(vite@5.2.11)
|
||||
@@ -53,12 +35,6 @@ dependencies:
|
||||
axios:
|
||||
specifier: ^1.6.8
|
||||
version: 1.6.8
|
||||
class-variance-authority:
|
||||
specifier: ^0.7.0
|
||||
version: 0.7.0
|
||||
clsx:
|
||||
specifier: ^2.1.1
|
||||
version: 2.1.1
|
||||
core-js:
|
||||
specifier: ^3.37.0
|
||||
version: 3.37.0
|
||||
@@ -74,9 +50,6 @@ dependencies:
|
||||
localforage:
|
||||
specifier: ^1.10.0
|
||||
version: 1.10.0
|
||||
lucide-react:
|
||||
specifier: ^0.378.0
|
||||
version: 0.378.0(react@18.3.1)
|
||||
mobx:
|
||||
specifier: ^6.12.3
|
||||
version: 6.12.3
|
||||
@@ -110,6 +83,9 @@ dependencies:
|
||||
tailwindcss-animate:
|
||||
specifier: ^1.0.7
|
||||
version: 1.0.7(tailwindcss@3.4.3)
|
||||
uuid:
|
||||
specifier: ^9.0.1
|
||||
version: 9.0.1
|
||||
vite-plugin-compression:
|
||||
specifier: ^0.5.1
|
||||
version: 0.5.1(vite@5.2.11)
|
||||
@@ -2522,34 +2498,6 @@ packages:
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@floating-ui/core@1.6.2:
|
||||
resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
|
||||
dependencies:
|
||||
'@floating-ui/utils': 0.2.2
|
||||
dev: false
|
||||
|
||||
/@floating-ui/dom@1.6.5:
|
||||
resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
|
||||
dependencies:
|
||||
'@floating-ui/core': 1.6.2
|
||||
'@floating-ui/utils': 0.2.2
|
||||
dev: false
|
||||
|
||||
/@floating-ui/react-dom@2.0.9(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==}
|
||||
peerDependencies:
|
||||
react: '>=16.8.0'
|
||||
react-dom: '>=16.8.0'
|
||||
dependencies:
|
||||
'@floating-ui/dom': 1.6.5
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@floating-ui/utils@0.2.2:
|
||||
resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
|
||||
dev: false
|
||||
|
||||
/@humanwhocodes/config-array@0.11.14:
|
||||
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
|
||||
engines: {node: '>=10.10.0'}
|
||||
@@ -2894,665 +2842,6 @@ packages:
|
||||
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
|
||||
dev: true
|
||||
|
||||
/@radix-ui/primitive@1.0.1:
|
||||
resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-avatar@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-context@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
aria-hidden: 1.2.4
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-remove-scroll: 2.5.5(@types/react@18.3.1)(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-direction@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-menu': 2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-icons@1.3.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
|
||||
peerDependencies:
|
||||
react: ^16.x || ^17.x || ^18.x
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-id@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-menu@2.0.6(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
aria-hidden: 1.2.4
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-remove-scroll: 2.5.5(@types/react@18.3.1)(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@floating-ui/react-dom': 2.0.9(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-size': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/rect': 1.0.1
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/primitive': 1.0.1
|
||||
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-slot@1.0.2(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-previous@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-rect@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/rect': 1.0.1
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-use-size@1.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
|
||||
peerDependencies:
|
||||
'@types/react': '*'
|
||||
'@types/react-dom': '*'
|
||||
react: ^16.8 || ^17.0 || ^18.0
|
||||
react-dom: ^16.8 || ^17.0 || ^18.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
'@types/react-dom':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
'@types/react': 18.3.1
|
||||
'@types/react-dom': 18.3.0
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/@radix-ui/rect@1.0.1:
|
||||
resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
dev: false
|
||||
|
||||
/@rc-component/async-validator@5.0.3:
|
||||
resolution: {integrity: sha512-eN5chKrc0ANerXjLJuoqh/YJpor0u4T1bgaph5BPh42cJ2afDihaHJ2Mh3Up3XIFk05EfKG4nIQxbqC6y2eM4Q==}
|
||||
engines: {node: '>=14.x'}
|
||||
@@ -3895,17 +3184,20 @@ packages:
|
||||
|
||||
/@types/prop-types@15.7.12:
|
||||
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
|
||||
dev: true
|
||||
|
||||
/@types/react-dom@18.3.0:
|
||||
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
dev: true
|
||||
|
||||
/@types/react@18.3.1:
|
||||
resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==}
|
||||
dependencies:
|
||||
'@types/prop-types': 15.7.12
|
||||
csstype: 3.1.3
|
||||
dev: true
|
||||
|
||||
/@types/semver@7.5.8:
|
||||
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
|
||||
@@ -3917,6 +3209,10 @@ packages:
|
||||
'@types/node': 20.12.11
|
||||
dev: false
|
||||
|
||||
/@types/uuid@9.0.8:
|
||||
resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
|
||||
dev: false
|
||||
|
||||
/@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5):
|
||||
resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
@@ -4255,13 +3551,6 @@ packages:
|
||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||
dev: true
|
||||
|
||||
/aria-hidden@1.2.4:
|
||||
resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/arr-diff@4.0.0:
|
||||
resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -4718,12 +4007,6 @@ packages:
|
||||
static-extend: 0.1.2
|
||||
dev: false
|
||||
|
||||
/class-variance-authority@0.7.0:
|
||||
resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
|
||||
dependencies:
|
||||
clsx: 2.0.0
|
||||
dev: false
|
||||
|
||||
/classnames@2.5.1:
|
||||
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
|
||||
dev: false
|
||||
@@ -4761,16 +4044,6 @@ packages:
|
||||
engines: {node: '>=0.8'}
|
||||
dev: false
|
||||
|
||||
/clsx@2.0.0:
|
||||
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/clsx@2.1.1:
|
||||
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/collection-visit@1.0.0:
|
||||
resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -5184,10 +4457,6 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/detect-node-es@1.1.0:
|
||||
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
|
||||
dev: false
|
||||
|
||||
/didyoumean@1.2.2:
|
||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||
dev: false
|
||||
@@ -5969,11 +5238,6 @@ packages:
|
||||
has-symbols: 1.0.3
|
||||
hasown: 2.0.2
|
||||
|
||||
/get-nonce@1.0.1:
|
||||
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/get-stream@8.0.1:
|
||||
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
|
||||
engines: {node: '>=16'}
|
||||
@@ -6305,12 +5569,6 @@ packages:
|
||||
hasown: 2.0.2
|
||||
side-channel: 1.0.6
|
||||
|
||||
/invariant@2.2.4:
|
||||
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/is-accessor-descriptor@1.0.1:
|
||||
resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
|
||||
engines: {node: '>= 0.10'}
|
||||
@@ -6868,14 +6126,6 @@ packages:
|
||||
dependencies:
|
||||
yallist: 3.1.1
|
||||
|
||||
/lucide-react@0.378.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g==}
|
||||
peerDependencies:
|
||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0
|
||||
dependencies:
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/magic-string@0.30.10:
|
||||
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
|
||||
dependencies:
|
||||
@@ -8639,41 +7889,6 @@ packages:
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/react-remove-scroll-bar@2.3.6(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.3.1)
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/react-remove-scroll@2.5.5(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
react-remove-scroll-bar: 2.3.6(@types/react@18.3.1)(react@18.3.1)
|
||||
react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.3.1)
|
||||
tslib: 2.6.2
|
||||
use-callback-ref: 1.3.2(@types/react@18.3.1)(react@18.3.1)
|
||||
use-sidecar: 1.1.2(@types/react@18.3.1)(react@18.3.1)
|
||||
dev: false
|
||||
|
||||
/react-rotate-captcha@1.0.26:
|
||||
resolution: {integrity: sha512-JeMn/yUv+HUxKOzC0oJekf3/vE/SUnyfwO6ViOervIH+zrKzt+UU6Ly9XMf0tZsbPBg2IkC4FKfJWMgSJldc0g==}
|
||||
dev: false
|
||||
@@ -8701,23 +7916,6 @@ packages:
|
||||
react: 18.3.1
|
||||
dev: false
|
||||
|
||||
/react-style-singleton@2.2.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
get-nonce: 1.0.1
|
||||
invariant: 2.2.4
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/react@18.3.1:
|
||||
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -9988,37 +9186,6 @@ packages:
|
||||
deprecated: Please see https://github.com/lydell/urix#deprecated
|
||||
dev: false
|
||||
|
||||
/use-callback-ref@1.3.2(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/use-sidecar@1.1.2(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
|
||||
engines: {node: '>=10'}
|
||||
peerDependencies:
|
||||
'@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
|
||||
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
||||
peerDependenciesMeta:
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/react': 18.3.1
|
||||
detect-node-es: 1.1.0
|
||||
react: 18.3.1
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
|
||||
/use-sync-external-store@1.2.2(react@18.3.1):
|
||||
resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
|
||||
peerDependencies:
|
||||
@@ -10035,6 +9202,11 @@ packages:
|
||||
/util-deprecate@1.0.2:
|
||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||
|
||||
/uuid@9.0.1:
|
||||
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/vary@1.1.2:
|
||||
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
BIN
src/assets/fonts/uncut-sans-bold-italic.woff
Normal file
BIN
src/assets/fonts/uncut-sans-bold-italic.woff2
Normal file
BIN
src/assets/fonts/uncut-sans-bold.woff
Normal file
BIN
src/assets/fonts/uncut-sans-bold.woff2
Normal file
3
src/assets/images/arrow-right-white.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="white">
|
||||
<polygon points="11.293 4.707 17.586 11 4 11 4 13 17.586 13 11.293 19.293 12.707 20.707 21.414 12 12.707 3.293 11.293 4.707"/>
|
||||
</svg>
|
After Width: | Height: | Size: 233 B |
3
src/assets/images/arrow-right.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<polygon points="11.293 4.707 17.586 11 4 11 4 13 17.586 13 11.293 19.293 12.707 20.707 21.414 12 12.707 3.293 11.293 4.707"/>
|
||||
</svg>
|
After Width: | Height: | Size: 220 B |
3
src/assets/images/check.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg fill="#10b981" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.28 2.28L3.989 8.575 1.695 6.28A1 1 0 00.28 7.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 2.28z"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 281 B |
1
src/assets/images/cta-illustration.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="582" height="662" xmlns="http://www.w3.org/2000/svg"><defs><filter x="-37.5%" y="-37.5%" width="175%" height="175%" filterUnits="objectBoundingBox" id="b"><feGaussianBlur stdDeviation="50" in="SourceGraphic"/></filter><filter x="-37.5%" y="-37.5%" width="175%" height="175%" filterUnits="objectBoundingBox" id="c"><feGaussianBlur stdDeviation="50" in="SourceGraphic"/></filter><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#60A5FA" stop-opacity="0" offset="0%"/><stop stop-color="#F656AA" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><circle fill-opacity="1" fill="url(#a)" filter="url(#b)" cx="314" cy="278" r="200"/><circle fill-opacity=".2" fill="#111827" filter="url(#c)" cx="518" cy="345" r="200"/></g></svg>
|
After Width: | Height: | Size: 785 B |
3
src/assets/images/discord.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="18" xmlns="http://www.w3.org/2000/svg" fill="#3b82f6">
|
||||
<path d="M20.317 1.492c-1.53-.69-3.17-1.2-4.885-1.49a.075.075 0 0 0-.079.036c-.21.369-.444.85-.608 1.23a18.565 18.565 0 0 0-5.487 0C9.095.88 8.852.406 8.641.037A.077.077 0 0 0 8.562 0c-1.714.29-3.354.8-4.885 1.491a.07.07 0 0 0-.032.027C.533 6.093-.32 10.555.099 14.961a.08.08 0 0 0 .031.055 20.03 20.03 0 0 0 5.993 2.98.078.078 0 0 0 .084-.026c.462-.62.874-1.275 1.226-1.963.021-.04.001-.088-.041-.104a13.202 13.202 0 0 1-1.872-.878.075.075 0 0 1-.008-.125c.126-.093.252-.19.372-.287a.075.075 0 0 1 .078-.01c3.927 1.764 8.18 1.764 12.061 0a.075.075 0 0 1 .078.009c.12.097.246.195.373.288a.075.075 0 0 1-.006.125c-.598.344-1.22.635-1.873.877a.075.075 0 0 0-.041.105c.36.687.772 1.341 1.225 1.962a.077.077 0 0 0 .084.028 19.964 19.964 0 0 0 6.002-2.981.076.076 0 0 0 .032-.054c.5-5.094-.839-9.52-3.549-13.442a.06.06 0 0 0-.031-.028ZM8.02 12.278c-1.183 0-2.157-1.068-2.157-2.38 0-1.312.956-2.38 2.157-2.38 1.21 0 2.176 1.077 2.157 2.38 0 1.312-.956 2.38-2.157 2.38Zm7.975 0c-1.183 0-2.157-1.068-2.157-2.38 0-1.312.955-2.38 2.157-2.38 1.21 0 2.176 1.077 2.157 2.38 0 1.312-.946 2.38-2.157 2.38Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
4
src/assets/images/docs.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg fill="#3b82f6" width="23" height="23" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.924 19h6.927l5.128 1.386 3.399-12.548L16 6.654V4.582l5.859 1.586a1 1 0 0 1 .704 1.226l-3.913 14.48a1 1 0 0 1-1.226.705l-12.55-3.393.05-.186Z" fill-rule="nonzero" fill-opacity=".64"></path>
|
||||
<rect width="14" height="17" rx="1"></rect>
|
||||
</svg>
|
After Width: | Height: | Size: 458 B |
BIN
src/assets/images/features-02.png
Normal file
After Width: | Height: | Size: 51 KiB |
1
src/assets/images/features-illustration.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="608" height="535" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#60A5FA" stop-opacity="0" offset="0%"/><stop stop-color="#F472B6" offset="100%"/></linearGradient><filter x="-37.5%" y="-37.5%" width="175%" height="175%" filterUnits="objectBoundingBox" id="b"><feGaussianBlur stdDeviation="50" in="SourceGraphic"/></filter></defs><circle filter="url(#b)" cx="304" cy="223" r="200" fill="url(#a)" fill-rule="evenodd" fill-opacity=".32"/></svg>
|
After Width: | Height: | Size: 524 B |
206
src/assets/images/features.svg
Normal file
@@ -0,0 +1,206 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1124px" height="484px" viewBox="0 0 1124 484" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Illustration</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-1">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-2">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-3">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-4">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<linearGradient x1="0%" y1="100%" x2="107.798258%" y2="12.8367337%" id="linearGradient-5">
|
||||
<stop stop-color="#3B82F6" stop-opacity="0.64" offset="0%"></stop>
|
||||
<stop stop-color="#F9FAFB" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<filter x="-234.4%" y="-15000.0%" width="568.8%" height="30100.0%" filterUnits="objectBoundingBox" id="filter-6">
|
||||
<feGaussianBlur stdDeviation="50 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-7">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-8">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-9">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-10">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-234.4%" y="-15000.0%" width="568.8%" height="30100.0%" filterUnits="objectBoundingBox" id="filter-11">
|
||||
<feGaussianBlur stdDeviation="50 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<linearGradient x1="2.85392761%" y1="100%" x2="95.7528432%" y2="3.20075989%" id="linearGradient-12">
|
||||
<stop stop-color="#EC4899" offset="0%"></stop>
|
||||
<stop stop-color="#3B82F6" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<filter x="-62.5%" y="-62.5%" width="225.0%" height="225.0%" filterUnits="objectBoundingBox" id="filter-13">
|
||||
<feGaussianBlur stdDeviation="50" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-14">
|
||||
<stop stop-color="#4B5563" offset="0%"></stop>
|
||||
<stop stop-color="#4B5563" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-15">
|
||||
<stop stop-color="#4B5563" stop-opacity="0.64" offset="0%"></stop>
|
||||
<stop stop-color="#4B5563" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="50%" y1="100%" x2="50%" y2="6.16297582e-31%" id="linearGradient-16">
|
||||
<stop stop-color="#4B5563" offset="0%"></stop>
|
||||
<stop stop-color="#4B5563" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="50%" y1="100%" x2="50%" y2="6.16297582e-31%" id="linearGradient-17">
|
||||
<stop stop-color="#4B5563" stop-opacity="0.64" offset="0%"></stop>
|
||||
<stop stop-color="#4B5563" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-18">
|
||||
<stop stop-color="#3B82F6" stop-opacity="0" offset="0%"></stop>
|
||||
<stop stop-color="#3B82F6" offset="55.8746338%"></stop>
|
||||
<stop stop-color="#3B82F6" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="45.1617959%" y1="1.33287123%" x2="45.1617959%" y2="100%" id="linearGradient-19">
|
||||
<stop stop-color="#111827" stop-opacity="0.64" offset="0%"></stop>
|
||||
<stop stop-color="#111827" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<filter x="-30.4%" y="-30.4%" width="160.7%" height="160.7%" filterUnits="objectBoundingBox" id="filter-20">
|
||||
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="4" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0.231372549 0 0 0 0 0.509803922 0 0 0 0 0.964705882 0 0 0 0.48 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-21">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-100.9%" y="-100.0%" width="301.7%" height="300.0%" filterUnits="objectBoundingBox" id="filter-22">
|
||||
<feGaussianBlur stdDeviation="4 0" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-117.2%" y="-117.2%" width="334.4%" height="334.4%" filterUnits="objectBoundingBox" id="filter-23">
|
||||
<feGaussianBlur stdDeviation="50" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<linearGradient x1="50%" y1="100%" x2="50%" y2="6.16297582e-31%" id="linearGradient-24">
|
||||
<stop stop-color="#3B82F6" stop-opacity="0" offset="0%"></stop>
|
||||
<stop stop-color="#3B82F6" offset="55.8746338%"></stop>
|
||||
<stop stop-color="#3B82F6" stop-opacity="0" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<filter x="-56.7%" y="-56.7%" width="213.3%" height="213.3%" filterUnits="objectBoundingBox" id="filter-25">
|
||||
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="4" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0.231372549 0 0 0 0 0.509803922 0 0 0 0 0.964705882 0 0 0 0.48 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<filter x="-117.2%" y="-117.2%" width="334.4%" height="334.4%" filterUnits="objectBoundingBox" id="filter-26">
|
||||
<feGaussianBlur stdDeviation="50" in="SourceGraphic"></feGaussianBlur>
|
||||
</filter>
|
||||
<filter x="-50.0%" y="-50.0%" width="200.0%" height="200.0%" filterUnits="objectBoundingBox" id="filter-27">
|
||||
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="4" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0.231372549 0 0 0 0 0.509803922 0 0 0 0 0.964705882 0 0 0 0.48 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="1---Pages" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="1.-Front" transform="translate(-158.000000, -942.000000)">
|
||||
<g id="Illustration/Icons" transform="translate(158.000000, 814.000000)">
|
||||
<g id="Illustration" transform="translate(0.000000, 128.000000)">
|
||||
<g id="Bg" transform="translate(10.000000, 10.000000)">
|
||||
<g id="Group-9" transform="translate(760.103448, 194.000000)">
|
||||
<g id="Group-7" fill="#BFDBFE" fill-rule="nonzero">
|
||||
<path d="M31.7068966,38.8 C29.7392069,38.8 28.137931,37.1848 28.137931,35.2 C28.137931,34.5376 27.6061552,34 26.9482759,34 C26.2903966,34 25.7586207,34.5376 25.7586207,35.2 C25.7586207,37.1848 24.1573448,38.8 22.1896552,38.8 C21.5317759,38.8 21,39.3376 21,40 C21,40.6624 21.5317759,41.2 22.1896552,41.2 C24.1573448,41.2 25.7586207,42.8152 25.7586207,44.8 C25.7586207,45.4624 26.2903966,46 26.9482759,46 C27.6061552,46 28.137931,45.4624 28.137931,44.8 C28.137931,42.8152 29.7392069,41.2 31.7068966,41.2 C32.3647759,41.2 32.8965517,40.6624 32.8965517,40 C32.8965517,39.3376 32.3647759,38.8 31.7068966,38.8 Z" id="Path" style="mix-blend-mode: overlay;" filter="url(#filter-1)"></path>
|
||||
<path d="M73.7068966,69.8 C71.7392069,69.8 70.137931,68.1848 70.137931,66.2 C70.137931,65.5376 69.6061552,65 68.9482759,65 C68.2903966,65 67.7586207,65.5376 67.7586207,66.2 C67.7586207,68.1848 66.1573448,69.8 64.1896552,69.8 C63.5317759,69.8 63,70.3376 63,71 C63,71.6624 63.5317759,72.2 64.1896552,72.2 C66.1573448,72.2 67.7586207,73.8152 67.7586207,75.8 C67.7586207,76.4624 68.2903966,77 68.9482759,77 C69.6061552,77 70.137931,76.4624 70.137931,75.8 C70.137931,73.8152 71.7392069,72.2 73.7068966,72.2 C74.3647759,72.2 74.8965517,71.6624 74.8965517,71 C74.8965517,70.3376 74.3647759,69.8 73.7068966,69.8 Z" id="Path" fill-opacity="0.48" style="mix-blend-mode: overlay;" filter="url(#filter-2)"></path>
|
||||
<path d="M10.7068966,4.8 C8.7392069,4.8 7.13793103,3.1848 7.13793103,1.2 C7.13793103,0.5376 6.60615517,0 5.94827586,0 C5.29039655,0 4.75862069,0.5376 4.75862069,1.2 C4.75862069,3.1848 3.15734483,4.8 1.18965517,4.8 C0.531775862,4.8 0,5.3376 0,6 C0,6.6624 0.531775862,7.2 1.18965517,7.2 C3.15734483,7.2 4.75862069,8.8152 4.75862069,10.8 C4.75862069,11.4624 5.29039655,12 5.94827586,12 C6.60615517,12 7.13793103,11.4624 7.13793103,10.8 C7.13793103,8.8152 8.7392069,7.2 10.7068966,7.2 C11.3647759,7.2 11.8965517,6.6624 11.8965517,6 C11.8965517,5.3376 11.3647759,4.8 10.7068966,4.8 Z" id="Path" fill-opacity="0.24" style="mix-blend-mode: overlay;" filter="url(#filter-3)"></path>
|
||||
<path d="M85.7068966,4.8 C83.7392069,4.8 82.137931,3.1848 82.137931,1.2 C82.137931,0.5376 81.6061552,0 80.9482759,0 C80.2903966,0 79.7586207,0.5376 79.7586207,1.2 C79.7586207,3.1848 78.1573448,4.8 76.1896552,4.8 C75.5317759,4.8 75,5.3376 75,6 C75,6.6624 75.5317759,7.2 76.1896552,7.2 C78.1573448,7.2 79.7586207,8.8152 79.7586207,10.8 C79.7586207,11.4624 80.2903966,12 80.9482759,12 C81.6061552,12 82.137931,11.4624 82.137931,10.8 C82.137931,8.8152 83.7392069,7.2 85.7068966,7.2 C86.3647759,7.2 86.8965517,6.6624 86.8965517,6 C86.8965517,5.3376 86.3647759,4.8 85.7068966,4.8 Z" id="Path" opacity="0.64" style="mix-blend-mode: overlay;" filter="url(#filter-4)"></path>
|
||||
</g>
|
||||
<path d="M31.8965517,40 L95.8965517,40" id="Path-6" stroke="url(#linearGradient-5)" filter="url(#filter-6)"></path>
|
||||
</g>
|
||||
<g id="Group-9" transform="translate(252.103448, 194.000000)">
|
||||
<g id="Group-7" fill="#BFDBFE" fill-rule="nonzero">
|
||||
<path d="M31.7068966,38.8 C29.7392069,38.8 28.137931,37.1848 28.137931,35.2 C28.137931,34.5376 27.6061552,34 26.9482759,34 C26.2903966,34 25.7586207,34.5376 25.7586207,35.2 C25.7586207,37.1848 24.1573448,38.8 22.1896552,38.8 C21.5317759,38.8 21,39.3376 21,40 C21,40.6624 21.5317759,41.2 22.1896552,41.2 C24.1573448,41.2 25.7586207,42.8152 25.7586207,44.8 C25.7586207,45.4624 26.2903966,46 26.9482759,46 C27.6061552,46 28.137931,45.4624 28.137931,44.8 C28.137931,42.8152 29.7392069,41.2 31.7068966,41.2 C32.3647759,41.2 32.8965517,40.6624 32.8965517,40 C32.8965517,39.3376 32.3647759,38.8 31.7068966,38.8 Z" id="Path" style="mix-blend-mode: overlay;" filter="url(#filter-7)"></path>
|
||||
<path d="M73.7068966,69.8 C71.7392069,69.8 70.137931,68.1848 70.137931,66.2 C70.137931,65.5376 69.6061552,65 68.9482759,65 C68.2903966,65 67.7586207,65.5376 67.7586207,66.2 C67.7586207,68.1848 66.1573448,69.8 64.1896552,69.8 C63.5317759,69.8 63,70.3376 63,71 C63,71.6624 63.5317759,72.2 64.1896552,72.2 C66.1573448,72.2 67.7586207,73.8152 67.7586207,75.8 C67.7586207,76.4624 68.2903966,77 68.9482759,77 C69.6061552,77 70.137931,76.4624 70.137931,75.8 C70.137931,73.8152 71.7392069,72.2 73.7068966,72.2 C74.3647759,72.2 74.8965517,71.6624 74.8965517,71 C74.8965517,70.3376 74.3647759,69.8 73.7068966,69.8 Z" id="Path" fill-opacity="0.48" style="mix-blend-mode: overlay;" filter="url(#filter-8)"></path>
|
||||
<path d="M10.7068966,4.8 C8.7392069,4.8 7.13793103,3.1848 7.13793103,1.2 C7.13793103,0.5376 6.60615517,0 5.94827586,0 C5.29039655,0 4.75862069,0.5376 4.75862069,1.2 C4.75862069,3.1848 3.15734483,4.8 1.18965517,4.8 C0.531775862,4.8 0,5.3376 0,6 C0,6.6624 0.531775862,7.2 1.18965517,7.2 C3.15734483,7.2 4.75862069,8.8152 4.75862069,10.8 C4.75862069,11.4624 5.29039655,12 5.94827586,12 C6.60615517,12 7.13793103,11.4624 7.13793103,10.8 C7.13793103,8.8152 8.7392069,7.2 10.7068966,7.2 C11.3647759,7.2 11.8965517,6.6624 11.8965517,6 C11.8965517,5.3376 11.3647759,4.8 10.7068966,4.8 Z" id="Path" fill-opacity="0.24" style="mix-blend-mode: overlay;" filter="url(#filter-9)"></path>
|
||||
<path d="M85.7068966,4.8 C83.7392069,4.8 82.137931,3.1848 82.137931,1.2 C82.137931,0.5376 81.6061552,0 80.9482759,0 C80.2903966,0 79.7586207,0.5376 79.7586207,1.2 C79.7586207,3.1848 78.1573448,4.8 76.1896552,4.8 C75.5317759,4.8 75,5.3376 75,6 C75,6.6624 75.5317759,7.2 76.1896552,7.2 C78.1573448,7.2 79.7586207,8.8152 79.7586207,10.8 C79.7586207,11.4624 80.2903966,12 80.9482759,12 C81.6061552,12 82.137931,11.4624 82.137931,10.8 C82.137931,8.8152 83.7392069,7.2 85.7068966,7.2 C86.3647759,7.2 86.8965517,6.6624 86.8965517,6 C86.8965517,5.3376 86.3647759,4.8 85.7068966,4.8 Z" id="Path" opacity="0.64" style="mix-blend-mode: overlay;" filter="url(#filter-10)"></path>
|
||||
</g>
|
||||
<path d="M18.8965517,40 L82.8965517,40" id="Path-6" stroke="url(#linearGradient-5)" filter="url(#filter-11)"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Main-Circle" transform="translate(378.000000, 58.000000)">
|
||||
<g id="Back">
|
||||
<rect id="Mask" fill="url(#linearGradient-12)" filter="url(#filter-13)" x="64" y="64" width="240" height="240" rx="120"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-14)" x="48.5" y="48.5" width="271" height="271" rx="135.5"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-15)" x="16.5" y="16.5" width="335" height="335" rx="167.5"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-16)" x="32.5" y="32.5" width="303" height="303" rx="151.5"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-17)" x="0.5" y="0.5" width="367" height="367" rx="183.5"></rect>
|
||||
</g>
|
||||
<g id="Front" transform="translate(64.000000, 64.000000)">
|
||||
<rect id="Mask" stroke="url(#linearGradient-18)" stroke-width="2" fill="#1F2937" x="1" y="1" width="238" height="238" rx="119"></rect>
|
||||
<rect id="Mask" fill="url(#linearGradient-19)" x="52" y="52" width="136" height="136" rx="68"></rect>
|
||||
<g id="Icon" filter="url(#filter-20)" transform="translate(92.000000, 92.000000)" stroke="#3B82F6" stroke-width="2">
|
||||
<path d="M34,50 L44,50" id="Path"></path>
|
||||
<path d="M12,28 L22,28" id="Path"></path>
|
||||
<path d="M28,34 L28,44" id="Path"></path>
|
||||
<circle id="Oval" stroke-linecap="square" cx="6" cy="6" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="6" cy="28" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="28" cy="28" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="28" cy="50" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="50" cy="50" r="6"></circle>
|
||||
<path d="M6,12 L6,22" id="Path"></path>
|
||||
<circle id="Oval" stroke-linecap="square" cx="28" cy="6" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="50" cy="6" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="50" cy="28" r="6"></circle>
|
||||
<circle id="Oval" stroke-linecap="square" cx="6" cy="50" r="6"></circle>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Front" transform="translate(390.000000, 64.000000)"></g>
|
||||
<g id="Stars" transform="translate(116.971774, 54.999683)" fill="#BFDBFE" fill-rule="nonzero">
|
||||
<g id="1" transform="translate(107.976502, 275.000317) rotate(-18.000000) translate(-107.976502, -275.000317) translate(102.028226, 269.000317)">
|
||||
<path d="M10.7068966,4.8 C8.7392069,4.8 7.13793103,3.1848 7.13793103,1.2 C7.13793103,0.5376 6.60615517,0 5.94827586,0 C5.29039655,0 4.75862069,0.5376 4.75862069,1.2 C4.75862069,3.1848 3.15734483,4.8 1.18965517,4.8 C0.531775862,4.8 0,5.3376 0,6 C0,6.6624 0.531775862,7.2 1.18965517,7.2 C3.15734483,7.2 4.75862069,8.8152 4.75862069,10.8 C4.75862069,11.4624 5.29039655,12 5.94827586,12 C6.60615517,12 7.13793103,11.4624 7.13793103,10.8 C7.13793103,8.8152 8.7392069,7.2 10.7068966,7.2 C11.3647759,7.2 11.8965517,6.6624 11.8965517,6 C11.8965517,5.3376 11.3647759,4.8 10.7068966,4.8 Z" id="Path" filter="url(#filter-21)"></path>
|
||||
</g>
|
||||
<g id="2" transform="translate(7.976502, 8.000317) rotate(-26.000000) translate(-7.976502, -8.000317) translate(2.028226, 2.000317)">
|
||||
<path d="M10.7068966,4.8 C8.7392069,4.8 7.13793103,3.1848 7.13793103,1.2 C7.13793103,0.5376 6.60615517,1.70530257e-13 5.94827586,1.70530257e-13 C5.29039655,1.70530257e-13 4.75862069,0.5376 4.75862069,1.2 C4.75862069,3.1848 3.15734483,4.8 1.18965517,4.8 C0.531775862,4.8 -4.54747351e-13,5.3376 -4.54747351e-13,6 C-4.54747351e-13,6.6624 0.531775862,7.2 1.18965517,7.2 C3.15734483,7.2 4.75862069,8.8152 4.75862069,10.8 C4.75862069,11.4624 5.29039655,12 5.94827586,12 C6.60615517,12 7.13793103,11.4624 7.13793103,10.8 C7.13793103,8.8152 8.7392069,7.2 10.7068966,7.2 C11.3647759,7.2 11.8965517,6.6624 11.8965517,6 C11.8965517,5.3376 11.3647759,4.8 10.7068966,4.8 Z" id="Path" filter="url(#filter-22)"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Circles" transform="translate(112.000000, 180.000000)">
|
||||
<g id="Group" transform="translate(772.000000, 0.000000)">
|
||||
<rect id="Mask" fill-opacity="0.48" fill="url(#linearGradient-12)" filter="url(#filter-23)" x="0" y="0" width="128" height="128" rx="64"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-24)" stroke-width="2" fill="#1F2937" x="1" y="1" width="126" height="126" rx="63"></rect>
|
||||
<rect id="Mask" fill="url(#linearGradient-19)" x="24" y="24" width="80" height="80" rx="40"></rect>
|
||||
<g id="transactions" filter="url(#filter-25)" transform="translate(49.000000, 49.000000)" stroke="#3B82F6" stroke-linecap="square" stroke-width="2">
|
||||
<ellipse id="Oval" cx="15" cy="3" rx="3.06309986" ry="3"></ellipse>
|
||||
<ellipse id="Oval" cx="3.06309986" cy="23.25" rx="3.06309986" ry="3"></ellipse>
|
||||
<ellipse id="Oval" cx="26.9369001" cy="23.25" rx="3.06309986" ry="3"></ellipse>
|
||||
<path d="M8.10904635,4.829 C2.53036157,7.97886737 -0.0746835712,14.4945874 1.83683888,20.517" id="Path"></path>
|
||||
<path d="M25.1184399,25.645 C20.7633883,30.2927892 13.6949081,31.3507443 8.12129875,28.189" id="Path"></path>
|
||||
<path d="M28.7839494,16.5 C28.7805368,10.1896096 24.3140775,4.72341546 18.0283847,3.337" id="Path"></path>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group">
|
||||
<rect id="Mask" fill-opacity="0.48" fill="url(#linearGradient-12)" filter="url(#filter-26)" x="0" y="0" width="128" height="128" rx="64"></rect>
|
||||
<rect id="Mask" stroke="url(#linearGradient-24)" stroke-width="2" fill="#1F2937" x="1" y="1" width="126" height="126" rx="63"></rect>
|
||||
<rect id="Mask" fill="url(#linearGradient-19)" x="24" y="24" width="80" height="80" rx="40"></rect>
|
||||
<g id="Path-2" filter="url(#filter-27)" transform="translate(48.000000, 48.000000)" fill="#3B82F6">
|
||||
<path d="M16,0 C7.2,0 0,7.38096604 0,16.4021467 C0,23.6805994 4.6,29.8314044 10.9,31.9841862 C11.7,32.0866996 12,31.6766459 12,31.1640788 C12,30.7540252 12,29.728891 12,28.3962166 C7.5,29.4213507 6.6,26.2434348 6.6,26.2434348 C5.9,24.3981933 4.8,23.8856262 4.8,23.8856262 C3.3,22.860492 4.9,22.860492 4.9,22.860492 C6.5,22.9630054 7.4,24.5007067 7.4,24.5007067 C8.8,26.9610287 11.1,26.2434348 12.1,25.8333811 C12.2,24.808247 12.7,24.090653 13.1,23.6805994 C9.5,23.2705457 5.8,21.8353579 5.8,15.5820394 C5.8,13.8393113 6.4,12.3016101 7.4,11.1739625 C7.2,10.7639088 6.7,9.12369413 7.6,6.86839895 C7.6,6.86839895 8.9,6.45834528 12,8.50861363 C13.3,8.09855996 14.6,7.99604654 16,7.99604654 C17.4,7.99604654 18.7,8.20107337 20,8.50861363 C23.1,6.35583186 24.4,6.76588553 24.4,6.76588553 C25.3,9.02118071 24.7,10.6613954 24.6,11.0714491 C25.6,12.1990966 26.2,13.6342845 26.2,15.479526 C26.2,21.7328444 22.5,23.1680323 18.9,23.5780859 C19.5,24.090653 20,25.1157872 20,26.6534885 C20,28.8062702 20,30.6515117 20,31.1640788 C20,31.5741325 20.3,32.0866996 21.1,31.9841862 C27.4,29.8314044 32,23.6805994 32,16.4021467 C32,7.38096604 24.8,0 16,0 Z" id="Path"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 23 KiB |
3
src/assets/images/fire.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="12" height="14" xmlns="http://www.w3.org/2000/svg" fill="#059669">
|
||||
<path d="M5.315.068a.5.5 0 0 0-.745.347A7.31 7.31 0 0 1 3.182 3.6a7.924 7.924 0 0 1-.8.83A6.081 6.081 0 0 0 0 9.035a5.642 5.642 0 0 0 2.865 4.9.5.5 0 0 0 .746-.4 2.267 2.267 0 0 1 .912-1.67 4.067 4.067 0 0 0 1.316-1.4 4.662 4.662 0 0 1 1.819 3.1.5.5 0 0 0 .742.371c1.767-.999 2.86-2.87 2.865-4.9-.001-3.589-2.058-6.688-5.95-8.968Z"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 509 B |
3
src/assets/images/github.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg fill="#3b82f6" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 0C5.4 0 0 5.4 0 12c0 5.3 3.4 9.8 8.2 11.4.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.5-1.4-1.3-1.8-1.3-1.8-1.2-.7 0-.7 0-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2 0-.4-.5-1.6.2-3.2 0 0 1-.3 3.3 1.2 1-.3 2-.4 3-.4s2 .1 3 .4C17.3 4.6 18.3 5 18.3 5c.7 1.7.2 2.9.1 3.2.8.8 1.2 1.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6 4.8-1.6 8.2-6.1 8.2-11.4C24 5.4 18.6 0 12 0Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 656 B |
1
src/assets/images/hero-illustration.svg
Normal file
After Width: | Height: | Size: 90 KiB |
16
src/assets/images/icon-brackets.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="56" height="56" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<radialGradient cx="50%" cy="89.845%" fx="50%" fy="89.845%" r="89.85%" id="icon2-b">
|
||||
<stop stop-color="#3B82F6" stop-opacity=".64" offset="0%"></stop>
|
||||
<stop stop-color="#F472B6" stop-opacity=".876" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
<circle id="icon2-a" cx="28" cy="28" r="28"></circle>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<use fill="url(#icon2-b)" xlink:href="#icon2-a"></use>
|
||||
<g stroke="#FDF2F8" stroke-linecap="square" stroke-width="2">
|
||||
<path d="m22 24-4 4 4 4M34 24l4 4-4 4"></path>
|
||||
<path d="m26 36 4-16" opacity=".64"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
16
src/assets/images/icon-check-list.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="56" height="56" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<radialGradient cx="50%" cy="89.845%" fx="50%" fy="89.845%" r="89.85%" id="icon3-b">
|
||||
<stop stop-color="#3B82F6" stop-opacity=".64" offset="0%"></stop>
|
||||
<stop stop-color="#F472B6" stop-opacity=".876" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
<circle id="icon3-a" cx="28" cy="28" r="28"></circle>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<use fill="url(#icon3-b)" xlink:href="#icon3-a"></use>
|
||||
<g stroke="#FDF2F8" stroke-linecap="square" stroke-width="2">
|
||||
<path d="m18 31 4 4 12-15"></path>
|
||||
<path d="M39 25h-3M39 30h-7M39 35H28" opacity=".64"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
3
src/assets/images/icon-designers.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" fill="#9ca3af">
|
||||
<path d="M6 0a6 6 0 1 0 0 12A6 6 0 0 0 6 0Zm0 9a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 188 B |
3
src/assets/images/icon-developers.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" fill="#9ca3af">
|
||||
<path d="M1.999 9.012a.999.999 0 0 1-.706-1.707l3.496-3.5a.998.998 0 0 1 1.413 0l2.29 2.293 2.79-2.793a.998.998 0 1 1 1.413 1.414l-3.496 3.5a.998.998 0 0 1-1.413 0l-2.29-2.293-2.79 2.793a.998.998 0 0 1-.707.293Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 323 B |
3
src/assets/images/icon-founders.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" fill="#9ca3af">
|
||||
<path d="M12.334 8.06a.5.5 0 0 0-.421-.237 6.023 6.023 0 0 1-5.905-6c0-.41.042-.82.125-1.221a.5.5 0 0 0-.614-.586 6 6 0 1 0 6.832 8.529.5.5 0 0 0-.017-.485Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 268 B |
3
src/assets/images/icon-marketers.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg" fill="#9ca3af">
|
||||
<path d="M11.953 4.29a.5.5 0 0 0-.454-.292H6.14L6.984.62A.5.5 0 0 0 6.12.173l-6 7a.5.5 0 0 0 .379.825h5.359l-.844 3.38a.5.5 0 0 0 .864.445l6-7a.5.5 0 0 0 .075-.534Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 276 B |
16
src/assets/images/icon-square.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg width="56" height="56" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<radialGradient cx="50%" cy="89.845%" fx="50%" fy="89.845%" r="89.85%" id="icon1-b">
|
||||
<stop stop-color="#3B82F6" stop-opacity=".64" offset="0%"></stop>
|
||||
<stop stop-color="#F472B6" stop-opacity=".876" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
<circle id="icon1-a" cx="28" cy="28" r="28"></circle>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<use fill="url(#icon1-b)" xlink:href="#icon1-a"></use>
|
||||
<g stroke="#FDF2F8" stroke-linecap="square" stroke-width="2">
|
||||
<path d="M17 28h22" opacity=".64"></path>
|
||||
<path d="M20 23v-3h3M33 20h3v3M36 33v3h-3M23 36h-3v-3"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
20
src/assets/images/logo.svg
Normal file
@@ -0,0 +1,20 @@
|
||||
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_202_10)">
|
||||
<path opacity="0.64" d="M75 18.75C125 61.9687 150 97.3875 150 125C150 166.419 116.419 200 75 200C33.5813 200 0 166.419 0 125C0 97.3875 25 61.9687 75 18.75Z" fill="url(#paint0_radial_202_10)"/>
|
||||
<path opacity="0.961" d="M125 181.25C175 138.031 200 102.613 200 75C200 33.5813 166.419 0 125 0C83.5813 0 50 33.5813 50 75C50 102.613 75 138.031 125 181.25Z" fill="url(#paint1_radial_202_10)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<radialGradient id="paint0_radial_202_10" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(16231.4 6540.55) rotate(90.6335) scale(13477.5 19677.4)">
|
||||
<stop stop-color="#3B82F6" stop-opacity="0.64"/>
|
||||
<stop offset="1" stop-color="#F472B6" stop-opacity="0.876"/>
|
||||
</radialGradient>
|
||||
<radialGradient id="paint1_radial_202_10" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(16212.2 -6363.03) rotate(-90.6335) scale(13477.5 19677.4)">
|
||||
<stop stop-color="#3B82F6" stop-opacity="0.64"/>
|
||||
<stop offset="0.50358" stop-color="#D375C2" stop-opacity="0.833"/>
|
||||
<stop offset="1" stop-color="#FBCFE8" stop-opacity="0.876"/>
|
||||
</radialGradient>
|
||||
<clipPath id="clip0_202_10">
|
||||
<rect width="200" height="200" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
src/assets/images/logos/alibaba.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1716225886816" class="icon" viewBox="0 0 8140 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12123" width="200" height="200"><path d="M547.84 445.44h547.84v122.88H547.84z" fill="#8a8a8a" p-id="12124"></path><path d="M1367.04 0h-363.52l87.04 122.88L1356.8 204.8c51.2 15.36 81.92 61.44 81.92 107.52v394.24c0 51.2-30.72 92.16-81.92 107.52l-266.24 81.92-81.92 128h363.52c153.6 0 271.36-122.88 271.36-271.36V271.36c0-148.48-122.88-271.36-276.48-271.36zM281.6 819.2c-51.2-15.36-81.92-61.44-81.92-107.52V312.32c0-51.2 30.72-92.16 81.92-107.52l266.24-81.92L634.88 0H271.36C122.88 0 0 122.88 0 271.36v476.16c0 153.6 122.88 271.36 271.36 271.36h363.52l-87.04-122.88L281.6 819.2zM5913.6 40.96c-158.72 0-286.72 128-286.72 281.6V716.8c0 153.6 128 281.6 286.72 281.6 158.72 0 286.72-128 286.72-281.6v-5.12h-122.88v5.12c0 87.04-71.68 158.72-163.84 158.72-87.04 0-163.84-71.68-163.84-158.72V322.56c0-87.04 71.68-158.72 163.84-158.72 87.04 0 163.84 71.68 163.84 158.72v5.12h122.88v-5.12c0-153.6-128-281.6-286.72-281.6zM6717.44 291.84c-133.12 0-240.64 102.4-245.76 230.4V768c5.12 128 112.64 230.4 245.76 230.4 133.12 0 240.64-102.4 245.76-230.4v-240.64c-5.12-133.12-112.64-235.52-245.76-235.52z m122.88 460.8c0 66.56-56.32 122.88-122.88 122.88-66.56 0-122.88-51.2-122.88-122.88v-209.92c0-66.56 56.32-122.88 122.88-122.88 66.56 0 122.88 56.32 122.88 122.88v209.92zM6261.76 40.96h122.88v942.08h-122.88zM2851.84 291.84h122.88v686.08h-122.88zM2606.08 40.96h122.88v942.08h-122.88zM2293.76 40.96h-153.6l-250.88 942.08h122.88l66.56-250.88h271.36l66.56 245.76h122.88L2293.76 40.96z m-184.32 568.32l102.4-389.12 102.4 389.12h-204.8zM7424 762.88c0 66.56-56.32 122.88-122.88 122.88-66.56 0-122.88-56.32-122.88-122.88V291.84h-122.88v491.52c0 117.76 97.28 215.04 215.04 215.04 20.48 0 40.96-5.12 61.44-10.24 10.24-5.12 25.6-10.24 35.84-15.36 20.48-10.24 35.84-20.48 51.2-35.84l5.12-5.12v51.2h122.88V291.84H7424v471.04zM2851.84 40.96h122.88v122.88h-122.88zM3374.08 291.84c-56.32 0-107.52 20.48-148.48 61.44l-5.12 5.12V40.96h-122.88v942.08h122.88v-51.2l5.12 5.12c40.96 40.96 92.16 61.44 148.48 61.44 117.76 0 215.04-97.28 215.04-215.04V506.88c0-117.76-97.28-215.04-215.04-215.04z m92.16 471.04c0 66.56-56.32 122.88-122.88 122.88s-122.88-56.32-122.88-122.88v-235.52c0-66.56 56.32-122.88 122.88-122.88s122.88 56.32 122.88 122.88v235.52zM4531.2 291.84c-56.32 0-107.52 20.48-148.48 61.44l-10.24 5.12V40.96H4249.6v942.08h122.88v-51.2l5.12 5.12c40.96 40.96 92.16 61.44 148.48 61.44 117.76 0 215.04-97.28 215.04-215.04V506.88c0-117.76-97.28-215.04-209.92-215.04z m87.04 471.04c0 66.56-56.32 122.88-122.88 122.88-66.56 0-122.88-56.32-122.88-122.88v-235.52c0-66.56 56.32-122.88 122.88-122.88 66.56 0 122.88 56.32 122.88 122.88v235.52zM8002.56 40.96V358.4l-5.12-5.12c-40.96-40.96-92.16-61.44-148.48-61.44-117.76 0-215.04 97.28-215.04 215.04v276.48c0 117.76 97.28 209.92 215.04 209.92 56.32 0 107.52-20.48 148.48-61.44l5.12-5.12v51.2h122.88V40.96h-122.88z m0 721.92c0 66.56-56.32 122.88-122.88 122.88-66.56 0-122.88-56.32-122.88-122.88v-235.52c0-66.56 56.32-122.88 122.88-122.88 66.56 0 122.88 56.32 122.88 122.88v235.52zM4157.44 496.64c-5.12-35.84-20.48-71.68-40.96-102.4-46.08-61.44-112.64-97.28-184.32-102.4h-15.36c-56.32 0-112.64 20.48-158.72 56.32-46.08 35.84-71.68 87.04-87.04 143.36h122.88c10.24-56.32 61.44-97.28 117.76-97.28 30.72 0 61.44 10.24 87.04 35.84 20.48 20.48 35.84 51.2 35.84 81.92v56.32h-174.08c-117.76 0-215.04 97.28-215.04 215.04 0 97.28 66.56 184.32 158.72 204.8h5.12c5.12 0 10.24 0 10.24 5.12h51.2c30.72 0 56.32-5.12 76.8-10.24 30.72-10.24 61.44-25.6 87.04-51.2l5.12-5.12v51.2h122.88v-455.68c0-5.12 0-10.24-5.12-25.6z m-122.88 256c0 66.56-46.08 122.88-112.64 133.12-10.24 0-20.48 5.12-25.6 5.12-20.48 0-40.96-5.12-61.44-15.36-5.12-5.12-10.24-5.12-15.36-10.24-5.12-5.12-15.36-10.24-20.48-20.48-15.36-20.48-20.48-40.96-20.48-66.56 0-61.44 51.2-112.64 112.64-112.64h148.48v87.04zM5314.56 501.76c-5.12-35.84-20.48-71.68-40.96-102.4-46.08-61.44-112.64-97.28-184.32-102.4h-15.36c-56.32 0-112.64 20.48-158.72 56.32-46.08 35.84-71.68 87.04-87.04 143.36h122.88c10.24-56.32 61.44-97.28 117.76-97.28 30.72 0 61.44 10.24 87.04 35.84 20.48 20.48 35.84 51.2 35.84 81.92v56.32H5017.6c-117.76 0-215.04 97.28-215.04 215.04 0 97.28 66.56 184.32 158.72 204.8h5.12c5.12 0 10.24 0 10.24 5.12h51.2c30.72 0 56.32-5.12 76.8-10.24 30.72-10.24 61.44-25.6 87.04-51.2l5.12-5.12v51.2h122.88v-455.68c-5.12-10.24-5.12-15.36-5.12-25.6z m-122.88 250.88c0 66.56-46.08 122.88-112.64 133.12-10.24 0-20.48 5.12-25.6 5.12-20.48 0-40.96-5.12-61.44-15.36-5.12-5.12-10.24-5.12-15.36-10.24-5.12-5.12-15.36-10.24-20.48-20.48-15.36-20.48-20.48-40.96-20.48-66.56 0-61.44 51.2-112.64 112.64-112.64h148.48v87.04z" fill="#8a8a8a" p-id="12125"></path></svg>
|
After Width: | Height: | Size: 4.6 KiB |
1
src/assets/images/logos/baidu.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1716226067508" class="icon" viewBox="0 0 3584 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17890" width="200" height="200"><path d="M190.836 656.29V465.456c0-37.237-18.618-72.146-51.2-90.764L9.31 297.89v463.127c0 11.637 6.982 23.273 16.291 27.927l400.29 232.728V870.4c0-37.236-18.617-72.145-51.2-90.764l-167.563-95.418c-9.309-6.982-16.29-16.29-16.29-27.927m514.327 27.927L537.6 781.964c-32.582 18.618-51.2 53.527-51.2 90.763V1024l400.29-232.727c9.31-4.655 16.292-16.291 16.292-27.928V297.891l-130.327 74.473c-32.582 18.618-51.2 53.527-51.2 90.763v190.837c0 13.963-6.982 23.272-16.291 30.254M646.982 109.382L479.418 11.636c-9.309-4.654-23.273-4.654-32.582 0L46.546 244.364l130.327 74.472c32.582 18.619 72.145 18.619 102.4 0l167.563-97.745c2.328-2.327 4.655-2.327 6.982-2.327 9.31-2.328 16.291-2.328 25.6 2.327l167.564 97.745c32.582 18.619 72.145 18.619 102.4 0l130.327-74.472-232.727-134.982zM1754.764 747.055V656.29h-430.546v121.018h397.964c25.6 4.655 34.909-4.654 32.582-30.254z m-430.546-197.819h432.873V428.218h-432.873v121.018z m-162.909-384h754.036v102.4h-283.927l-16.29 65.164h265.308v449.164c4.655 62.836-30.254 93.09-107.054 90.763h-577.164v-537.6H1459.2l13.964-65.163h-311.855V165.236z m1163.636 481.746l48.873 27.927 51.2 27.927 93.091-55.854h-193.164z m-11.636-239.71v72.146h249.018c25.6 4.655 39.564-2.327 39.564-18.618v-53.527h-288.582z m-107.054 2.328h-39.564v-88.436h34.909v-34.91h107.055v30.255h288.581v-27.927h107.055v27.927h34.909v88.436h-34.91v74.473c-4.654 41.891-30.254 62.837-81.454 62.837h-418.909V409.6z m-32.582 237.382v-79.127h560.872V640l-197.818 118.69 18.618 9.31c13.964 9.31 27.928 11.636 46.546 9.31H2739.2v88.435h-174.545c-23.273 0-46.546-4.654-65.164-11.636l-72.146-34.909-62.836 30.255c-23.273 9.309-48.873 16.29-76.8 18.618h-132.654v-90.764h93.09c20.946 0 37.237-2.327 46.546-6.982l34.909-16.29L2176 646.981h-2.327z m151.272-463.127V153.6h121.019v30.255h297.89v88.436h-602.763V870.4h-104.727V183.855h288.581z m521.31 616.727l109.381-274.618h-109.381V425.89h728.436v100.073h-500.364l-97.745 246.69h467.782c9.309 2.328 13.963-2.327 13.963-11.636V644.655h114.037V793.6c0 48.873-25.6 74.473-74.473 74.473h-649.31v-67.491z m0-518.982h728.436V181.527h-728.436V281.6z" p-id="17891" fill="#8a8a8a"></path></svg>
|
After Width: | Height: | Size: 2.2 KiB |
1
src/assets/images/logos/huawei.svg
Normal file
After Width: | Height: | Size: 5.7 KiB |
1
src/assets/images/logos/minio.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1716225754481" class="icon" viewBox="0 0 6806 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2632" width="200" height="200"><path d="M2207.930676 17.328265h381.221828v989.05048h-381.221828zM1745.843613 30.973227l-773.828408 415.208665a38.4654 38.4654 0 0 1-35.828489 0L162.358308 30.973227A117.53084 117.53084 0 0 0 107.066912 17.328265h-0.962681A100.453709 100.453709 0 0 0 0 110.540936v894.707705h380.886981V579.366769a38.423544 38.423544 0 0 1 57.970162-28.545596l433.667034 233.052606a152.103658 152.103658 0 0 0 139.630656 1.17196l457.608502-235.815083a38.381688 38.381688 0 0 1 57.384182 28.880441v427.137544h380.886981V110.540936A100.453709 100.453709 0 0 0 1802.097691 17.328265h-0.962682a117.53084 117.53084 0 0 0-55.291396 13.644962z m2744.227918-13.644962h-386.621214v450.158185a38.214265 38.214265 0 0 1-56.002943 29.550133L3045.505334 28.252606a118.200531 118.200531 0 0 0-49.850153-10.924341h-0.669692a100.453709 100.453709 0 0 0-106.10423 93.212671v894.749561h383.523891V555.63458a38.256121 38.256121 0 0 1 55.961087-29.591989l1005.876477 468.783978a117.740119 117.740119 0 0 0 49.724586 10.882485 100.453709 100.453709 0 0 0 106.104231-93.212671z m299.728755 989.05048V17.328265h175.41729v989.05048z m1207.788433 17.621255c-471.8813 0-806.643286-196.721848-806.643287-511.979072C5190.945432 198.437932 5527.716493 0 5997.588719 0s808.652361 196.721848 808.65236 512.020928-330.743838 511.979072-808.65236 511.979072z m0-892.907909c-350.876436 0-621.13877 134.649826-621.13877 380.886981 0 248.036951 270.262334 380.886981 621.13877 380.886982s623.105988-132.850031 623.105988-380.886982c0-246.237155-272.229552-380.886981-623.105988-380.886981z" fill="#8a8a8a" p-id="2633"></path></svg>
|
After Width: | Height: | Size: 1.7 KiB |
1
src/assets/images/logos/qiniu.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1716226168906" class="icon" viewBox="0 0 3174 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22437" width="200" height="200"><path d="M1436.42082 85.117c45.333-100.269-12.49-62.655-12.49-62.655s-202.175 331.6-700.261 331.6c-78.893 0-150.168-8.456-214.318-22.646-28.01-93.47-65.828-164.991-123.303-175.782 0 0 2.498 58.233 7.33 141.568C136.65782 201.315 29.69382 17.752 29.69382 17.752S-14.08318-37.06 4.67082 45.967c14.231 62.963 122.034 311.617 400.44 428.04 11.876 157.293 29.177 325.356 51.29 381.91 45.313 115.932 101.56 126.907 271.956 126.907 170.357 0 262.599-14.108 287.6-112.8 25.02-98.692 51.597-322.734 48.465-333.689-3.133-10.975 1.228-38.391-45.333 1.556-61.488 52.745-127.132 266.346-144.844 286.698-18.878 21.704-154.221 53.79-231.844 24.038-41.75-30.037-62.204-178.341-90.48-330.249 53.092 10.463 110.73 16.38 173.324 16.38 520.487 0 665.843-349.373 711.176-449.641z m201.07 396.262c-18.592-10.197-39.456-17.875-62.573-23.096a317.841 317.841 0 0 0-139.91 0c-23.137 5.22-44.001 12.9-62.572 23.096-18.592 10.176-33.56 23.076-44.944 38.72-11.364 15.622-17.056 33.64-17.056 53.993v267.164c0 20.865 5.692 38.986 17.056 54.363 11.384 15.397 26.352 28.194 44.944 38.37 18.57 10.198 39.415 17.896 62.573 23.097a317.575 317.575 0 0 0 84.604 7.453c4.136 18.571 12.183 32.351 20.005 41.852a47.56 47.56 0 0 0 36.794 17.384h98.017c7.8 0 14.128-6.389 14.128-14.251V952.15a14.067 14.067 0 0 0-14.23-14.25c-7.781 0.225-17.303-0.328-24.858-3.379a14.947 14.947 0 0 1-6.941-5.876c22.298-15.746 39.886-35.505 39.886-35.505 11.364-14.68 17.056-31.983 17.056-51.864V574.112c0-20.373-5.692-38.37-17.056-54.014-11.384-15.643-26.352-28.543-44.944-38.72z m-40.398 368.497v1.434s-1.352 43.367-55.796 46.786c-7.125 1.884-15.828 2.826-26.106 2.826-22.155 0-41.36-4.136-57.577-12.408-16.217-8.252-24.325-21.131-24.325-38.638V583.388c0-17.466 8.108-30.345 24.325-38.617 16.216-8.272 35.422-12.408 57.577-12.408 22.134 0 41.34 4.136 57.556 12.408 16.217 8.272 24.346 21.151 24.346 38.617v266.488z m225.23-399.415h122.853v511.887h-122.853V450.461z m517.416 308.422h-2.314l-177.133-308.422h-112.738v511.887h117.324V654.643h2.314l179.447 307.705h110.425V450.461h-117.325v308.422z m219.702-308.422h122.853v511.887H2559.44082V450.461z m494.012 0v386.413c0 18.06-7.064 31.369-21.212 39.928-14.149 8.558-31.84 12.838-53.052 12.838-21.213 0-38.904-4.3-53.052-12.838-14.149-8.56-21.213-21.868-21.213-39.928V450.461H2784.67082V844c0 16.646 5.099 32.085 15.316 46.336 10.217 14.271 24.161 26.741 41.852 37.43 17.69 10.708 38.33 19.144 61.897 25.307a296.895 296.895 0 0 0 75.453 9.275c26.7 0 51.864-3.092 75.452-9.275 23.567-6.163 44.206-14.6 61.897-25.308 17.67-10.688 31.614-23.158 41.852-37.429 10.197-14.251 15.316-29.69 15.316-46.336V450.46h-120.253z" fill="#8a8a8a" p-id="22438"></path></svg>
|
After Width: | Height: | Size: 2.7 KiB |
1
src/assets/images/logos/tencent.svg
Normal file
After Width: | Height: | Size: 7.5 KiB |
3
src/assets/images/medium.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" fill="#3b82f6">
|
||||
<path d="M21.083 0H.917A.917.917 0 0 0 0 .917v20.166c0 .507.41.917.917.917h20.166c.507 0 .917-.41.917-.917V.917A.917.917 0 0 0 21.083 0Zm-2.145 4.686L17.651 5.92a.376.376 0 0 0-.143.361v9.068a.376.376 0 0 0 .143.361l1.257 1.234v.271h-6.322v-.271l1.3-1.264c.128-.128.128-.166.128-.361V7.99l-3.621 9.2h-.489l-4.213-9.2v6.163a.85.85 0 0 0 .233.707l1.694 2.054v.271h-4.8v-.271l1.691-2.054a.82.82 0 0 0 .218-.707V7.027a.625.625 0 0 0-.2-.527L3.019 4.686v-.271h4.674l3.613 7.924 3.176-7.924h4.456v.271Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 611 B |
1
src/assets/images/pricing-illustration.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="618" height="468" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#3B82F6" stop-opacity="0" offset="0%"/><stop stop-color="#3B82F6" offset="100%"/></linearGradient><filter x="-37.5%" y="-37.5%" width="175%" height="175%" filterUnits="objectBoundingBox" id="b"><feGaussianBlur stdDeviation="50" in="SourceGraphic"/></filter></defs><circle filter="url(#b)" cx="309" cy="268" r="200" fill="url(#a)" fill-rule="evenodd" fill-opacity=".48"/></svg>
|
After Width: | Height: | Size: 524 B |
3
src/assets/images/telegram.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg fill="#3b82f6" width="26" height="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.956.378a.47.47 0 0 0-.32-.347 1.662 1.662 0 0 0-.866.061S1.494 6.968.393 7.73c-.236.164-.316.26-.355.371-.19.546.402.78.402.78l4.968 1.607c.084.015.17.01.252-.015 1.13-.708 11.366-7.126 11.961-7.342.092-.027.162 0 .144.069-.237.823-9.083 8.622-9.131 8.669a.181.181 0 0 0-.066.16l-.464 4.815s-.194 1.498 1.315 0a42.204 42.204 0 0 1 2.612-2.373c1.708 1.171 3.546 2.466 4.339 3.143.27.26.633.398 1.008.385a1.13 1.13 0 0 0 .964-.849s3.51-14.03 3.627-15.909c.012-.182.028-.302.03-.428a1.591 1.591 0 0 0-.043-.435Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 720 B |
BIN
src/assets/images/testimonials/testimonial-01.jpg
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/images/testimonials/testimonial-02.jpg
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/images/testimonials/testimonial-03.jpg
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/images/testimonials/testimonial-04.jpg
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/assets/images/testimonials/testimonial-05.jpg
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
src/assets/images/testimonials/testimonial-06.jpg
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/assets/images/testimonials/testimonial-07.jpg
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
src/assets/images/testimonials/testimonial-08.jpg
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/images/testimonials/testimonial-09.jpg
Normal file
After Width: | Height: | Size: 1.9 KiB |
3
src/assets/images/youtube.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg fill="#3b82f6" width="22" height="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M21.083 0H.917C.41 0 0 .448 0 1v16c0 .552.41 1 .917 1h20.166c.507 0 .917-.448.917-1V1c0-.552-.41-1-.917-1ZM9 13V5l6 4-6 4Z" fill-rule="nonzero"></path>
|
||||
</svg>
|
After Width: | Height: | Size: 330 B |
@@ -28,3 +28,67 @@
|
||||
&::-webkit-resizer {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
:root {
|
||||
--accent: hsl(221, 83%, 53%);
|
||||
--accent-300: hsl(217, 91%, 60%);
|
||||
--accent-light: hsl(213, 94%, 68%);
|
||||
--secondary: hsl(271, 91%, 65%);
|
||||
|
||||
--neutral-100: hsl(219, 11%, 65%);
|
||||
--neutral-200: hsl(227, 9%, 57%);
|
||||
--neutral-300: hsl(216, 12%, 84%);
|
||||
|
||||
--dark-100: hsl(217, 19%, 27%);
|
||||
--dark-150: hsl(215, 14%, 33%);
|
||||
--dark-200: hsl(215, 28%, 17%);
|
||||
--dark-200-6: hsla(215, 28%, 17%, 0.6);
|
||||
--dark-300: hsl(217, 26%, 17%);
|
||||
--dark-400: hsl(221, 39%, 11%);
|
||||
--almost-white: hsl(220, 14%, 96%);
|
||||
--max-width: min(1104px, 95%);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Uncut-Sans-Bold';
|
||||
font-weight: 700;
|
||||
src: url('@/assets/fonts/uncut-sans-bold.woff2') format('woff2'),
|
||||
url('@/assets/fonts/uncut-sans-bold.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Uncut-Sans-Bold-Italic';
|
||||
font-weight: 700;
|
||||
src: url('@/assets/fonts/uncut-sans-bold-italic.woff2') format('woff2'),
|
||||
url('@/assets/fonts/uncut-sans-bold-italic.woff') format('woff');
|
||||
}
|
||||
|
||||
*,
|
||||
*::after,
|
||||
*::before {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: 'Inter', sans-serif;
|
||||
background-color: var(--dark-400);
|
||||
color: var(--neutral-100);
|
||||
}
|
||||
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
10
src/components/Home/arrow/Arrow.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
/** @format */
|
||||
|
||||
import styleRightWhite from "@/assets/images/arrow-right-white.svg";
|
||||
import style from "./arrow.module.less";
|
||||
|
||||
const Arrow = () => {
|
||||
return <img src={styleRightWhite} className={style.arrow} />;
|
||||
};
|
||||
|
||||
export default Arrow;
|
7
src/components/Home/arrow/arrow.module.less
Normal file
@@ -0,0 +1,7 @@
|
||||
.arrow {
|
||||
width: 1rem;
|
||||
}
|
||||
|
||||
a:hover .arrow {
|
||||
transform: translateX(0.2rem);
|
||||
}
|
27
src/components/Home/billing/Billing.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import { PLANS } from "@/constants/plans";
|
||||
import Plan from "../plan/Plan";
|
||||
import SectionSubtitle from "../section-subtitle/SectionSubtitle";
|
||||
import SectionTitle from "../section-title/SectionTitle";
|
||||
import style from "./billing.module.less";
|
||||
|
||||
const Billing = () => {
|
||||
return (
|
||||
<section className={style.billing}>
|
||||
{/* eslint-disable-next-line react/no-unescaped-entities */}
|
||||
<SectionTitle margin={"small"}>选择适合你的计划</SectionTitle>
|
||||
<SectionSubtitle content="我们提供多种计划供您选择,以满足您的不同需求。" />
|
||||
<div className={style.cardContainer}>
|
||||
{PLANS.map((item) => {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
return <Plan key={v4()} {...item} />;
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Billing;
|
25
src/components/Home/billing/billing.module.less
Normal file
@@ -0,0 +1,25 @@
|
||||
.billing {
|
||||
padding: 5rem 0;
|
||||
max-width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.cardContainer {
|
||||
max-width: 24rem;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.billing {
|
||||
background-image: url('@/assets/images/pricing-illustration.svg');
|
||||
background-position: center bottom;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.cardContainer {
|
||||
max-width: var(--max-width);
|
||||
display: flex;
|
||||
align-items: start;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
}
|
15
src/components/Home/button/Button.tsx
Normal file
@@ -0,0 +1,15 @@
|
||||
/** @format */
|
||||
|
||||
import Arrow from "../arrow/Arrow";
|
||||
import style from "./button.module.less";
|
||||
|
||||
const Button = ({ text, type, arrow, link }: { text: any; type: any; arrow: any; link: any }) => {
|
||||
return (
|
||||
<a className={`${style.button} ${style[type]}`} href={link}>
|
||||
{text}
|
||||
{arrow && <Arrow />}
|
||||
</a>
|
||||
);
|
||||
};
|
||||
|
||||
export default Button;
|
36
src/components/Home/button/button.module.less
Normal file
@@ -0,0 +1,36 @@
|
||||
.button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.3em;
|
||||
padding: 1em 1.5em;
|
||||
border-radius: 0.25rem;
|
||||
box-shadow: 0px 0.25rem 0.875rem rgba(0, 0, 0, 0.5);
|
||||
color: white;
|
||||
}
|
||||
|
||||
header .button {
|
||||
padding: 0.6em 1em;
|
||||
}
|
||||
|
||||
.accent {
|
||||
background-image: linear-gradient(var(--accent-light), var(--accent));
|
||||
}
|
||||
|
||||
.accentSmall {
|
||||
background-image: linear-gradient(var(--accent-light), var(--accent));
|
||||
padding: 0.6em 1.5em;
|
||||
}
|
||||
|
||||
.regular {
|
||||
background-image: linear-gradient(var(--dark-100), var(--dark-200));
|
||||
}
|
||||
|
||||
.accent:hover,
|
||||
.accentSmall:hover {
|
||||
background: var(--accent);
|
||||
}
|
||||
|
||||
.regular:hover {
|
||||
background: var(--dark-200);
|
||||
}
|
34
src/components/Home/features/Features.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
/** @format */
|
||||
|
||||
import { FEATURES } from "@/constants/features";
|
||||
import { LOGOS } from "@/constants/logos";
|
||||
import SectionTitle from "../section-title/SectionTitle";
|
||||
import style from "./features.module.less";
|
||||
import features from "@/assets/images/features.svg";
|
||||
|
||||
const Features = () => {
|
||||
return (
|
||||
<section className={style.features}>
|
||||
<div className={style.logosGrid}>
|
||||
{LOGOS.map((item) => {
|
||||
return <img key={item.id} src={item.src} />;
|
||||
})}
|
||||
</div>
|
||||
<SectionTitle margin={"large"}>专 注 于 数 据 安 全</SectionTitle>
|
||||
<img src={features} alt="Features" />
|
||||
<div className={style.featuresGrid}>
|
||||
{FEATURES.map((item) => {
|
||||
return (
|
||||
<article key={item.id} className={style.featuresCard}>
|
||||
<img src={item.icon} />
|
||||
<h3>{item.title}</h3>
|
||||
<p>{item.body}</p>
|
||||
</article>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Features;
|
74
src/components/Home/features/features.module.less
Normal file
@@ -0,0 +1,74 @@
|
||||
.features {
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.logosGrid {
|
||||
max-width: 24rem;
|
||||
margin: 0 auto 3rem;
|
||||
padding: 2rem 0;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
place-items: center;
|
||||
gap: 1rem;
|
||||
border-bottom: 1px solid var(--dark-200);
|
||||
}
|
||||
|
||||
.logosGrid img:last-child {
|
||||
grid-column: span 2;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.logosGrid {
|
||||
max-width: 64rem;
|
||||
margin: 0 auto 5rem;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
}
|
||||
|
||||
.logosGrid img:last-child {
|
||||
grid-column: span 1;
|
||||
}
|
||||
}
|
||||
|
||||
.featuresGrid {
|
||||
max-width: 24rem;
|
||||
margin: 4rem auto 3rem;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.featuresGrid {
|
||||
max-width: none;
|
||||
margin: 4rem auto 5rem;
|
||||
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
|
||||
gap: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.featuresCard {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.featuresCard img {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.featuresCard h3 {
|
||||
margin: 0;
|
||||
font-size: 1.5rem;
|
||||
color: var(--almost-white);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.featuresCard p {
|
||||
margin: 0;
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
}
|
37
src/components/Home/features2/Features2.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
/** @format */
|
||||
|
||||
import SectionSubtitle from "../section-subtitle/SectionSubtitle";
|
||||
import SectionTitle from "../section-title/SectionTitle";
|
||||
import style from "./features2.module.less";
|
||||
import features02 from "@/assets/images/features-02.png";
|
||||
|
||||
const Features2 = () => {
|
||||
return (
|
||||
<section className={style.features}>
|
||||
<div className={style.featuresContent}>
|
||||
<div className={style.heading}>
|
||||
<SectionTitle margin={"small"}>隐私开发,安全保障</SectionTitle>
|
||||
<SectionSubtitle content="避免收集过多的个人信息,保护了用户的隐私,用户数据加密传输,确保了数据的安全性。" />
|
||||
</div>
|
||||
<article className={style.twoCols}>
|
||||
<div>
|
||||
<img src={features02} alt="Features" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className={style.articleTitle}>标准化开发环境</h3>
|
||||
<p className={style.text}>
|
||||
采用一系列标准化的工具、技术、流程和规范,以提供稳定、可靠、高效的开发环境。确保软件开发的质量和效率,降低开发成本和风险。
|
||||
</p>
|
||||
<ul>
|
||||
<li className={style.listItem}>效果审查</li>
|
||||
<li className={style.listItem}>目标设定</li>
|
||||
<li className={style.listItem}>管理检查</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Features2;
|
103
src/components/Home/features2/features2.module.less
Normal file
@@ -0,0 +1,103 @@
|
||||
.features {
|
||||
background-image: url('@/assets/images/features-illustration.svg'),
|
||||
linear-gradient(var(--dark-200-6), transparent 10rem);
|
||||
background-position-x: 1100px, center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.featuresContent {
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 3rem 0;
|
||||
border-bottom: 1px solid var(--dark-200);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.featuresContent {
|
||||
padding: 5rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
.text {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.twoCols .text {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.twoCols .text {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.twoCols {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 4rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.twoCols {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.twoCols > * {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.twoCols div:first-child {
|
||||
order: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.articleTitle {
|
||||
margin: 0 0 1rem;
|
||||
color: var(--almost-white);
|
||||
font-family: 'Uncut-Sans-Bold';
|
||||
font-size: 2.25rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.articleTitle {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.twoCols ul {
|
||||
width: fit-content;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.twoCols ul {
|
||||
width: auto;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.listItem {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
.listItem + .listItem {
|
||||
margin-top: 0.75rem;
|
||||
}
|
||||
|
||||
.listItem::before {
|
||||
display: inline-block;
|
||||
content: url('@/assets/images/check.svg');
|
||||
width: 0.75rem;
|
||||
margin-right: 0.75rem;
|
||||
}
|
32
src/components/Home/footer/Footer.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
/** @format */
|
||||
|
||||
import { LINKS } from "@/constants/footer-links";
|
||||
import style from "./footer.module.less";
|
||||
import logo from "@/assets/icons/schisandra.svg";
|
||||
|
||||
const Footer = () => {
|
||||
return (
|
||||
<footer className={style.footer}>
|
||||
<div>
|
||||
<img className={style.logo} src={logo} alt="Logo" />
|
||||
<a href="#">Terms</a> · <a href="#">Schisandra</a>
|
||||
</div>
|
||||
{LINKS.map((item) => {
|
||||
return (
|
||||
<ul key={item.id}>
|
||||
<li className={style.liTitle}>{item.title}</li>
|
||||
{item.links.map((link) => {
|
||||
return (
|
||||
<li key={link.id} className={style.liItem}>
|
||||
<a href="#">{link.link}</a>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
);
|
||||
})}
|
||||
</footer>
|
||||
);
|
||||
};
|
||||
|
||||
export default Footer;
|
54
src/components/Home/footer/footer.module.less
Normal file
@@ -0,0 +1,54 @@
|
||||
.footer {
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 3rem 0;
|
||||
font-size: 0.875rem;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
row-gap: 2rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 640px) {
|
||||
.footer {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
footer div:first-child {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.footer {
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1024px) {
|
||||
.footer {
|
||||
grid-template-columns: 2fr repeat(4, 1fr);
|
||||
}
|
||||
footer div:first-child {
|
||||
grid-column: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
footer a:hover {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.liTitle {
|
||||
text-transform: uppercase;
|
||||
font-size: 0.75rem;
|
||||
color: var(--almost-white);
|
||||
margin: 0 0 0.7rem;
|
||||
}
|
||||
|
||||
.liItem {
|
||||
margin: 0 0 0.7rem;
|
||||
}
|
21
src/components/Home/get-started/GetStarted.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
/** @format */
|
||||
|
||||
import Button from "../button/Button.js";
|
||||
import style from "./get-started.module.less";
|
||||
|
||||
const GetStarted = () => {
|
||||
return (
|
||||
<section className={style.container}>
|
||||
<div className={style.textContainer}>
|
||||
<h3 className={style.title}>开始使用五味子云存储</h3>
|
||||
<p className={style.text}>
|
||||
It only takes a few minutes to get started with Neon. Understand your users,
|
||||
start free, today.
|
||||
</p>
|
||||
</div>
|
||||
<Button text={"开始使用"} type={"accentSmall"} arrow={true} link={"/login"} />
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default GetStarted;
|
48
src/components/Home/get-started/get-started.module.less
Normal file
@@ -0,0 +1,48 @@
|
||||
.container {
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 4rem 3rem;
|
||||
background-image: url('@/assets/images/cta-illustration.svg'),
|
||||
linear-gradient(var(--secondary), var(--accent));
|
||||
background-position: right center;
|
||||
background-repeat: no-repeat;
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.container > *:last-child {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin: 0 0 0.7rem;
|
||||
text-align: center;
|
||||
font-size: 2.25rem;
|
||||
font-weight: 700;
|
||||
color: var(--almost-white);
|
||||
}
|
||||
|
||||
.text {
|
||||
margin: 0 0 2rem;
|
||||
text-align: center;
|
||||
color: var(--almost-white);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.container {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
27
src/components/Home/header/Header.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
/** @format */
|
||||
|
||||
// import Button from "../button/Button";
|
||||
import style from "./header.module.less";
|
||||
import schisandra from "@/assets/icons/schisandra.svg";
|
||||
|
||||
const Header = () => {
|
||||
return (
|
||||
<header className={style.header}>
|
||||
<nav className={style.nav}>
|
||||
<img className={style.logo} src={schisandra} alt="Logo" />
|
||||
<ul className={style.list}>
|
||||
<li>
|
||||
<a className={style.navLink} href="/login">
|
||||
登 录
|
||||
</a>
|
||||
</li>
|
||||
{/*<li>*/}
|
||||
{/* <Button text={"Get Started"} type={"accent"} arrow={true} />*/}
|
||||
{/*</li>*/}
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
);
|
||||
};
|
||||
|
||||
export default Header;
|
37
src/components/Home/header/header.module.less
Normal file
@@ -0,0 +1,37 @@
|
||||
.header {
|
||||
position: absolute;
|
||||
inset: 0 0 auto 0;
|
||||
padding-top: 0.75rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.header {
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.navLink {
|
||||
color: var(--neutral-100);
|
||||
}
|
||||
|
||||
.navLink:hover {
|
||||
color: var(--accent-300);
|
||||
}
|
||||
|
||||
.list {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
align-items: center;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 2rem;
|
||||
}
|
43
src/components/Home/hero/Hero.tsx
Normal file
@@ -0,0 +1,43 @@
|
||||
/** @format */
|
||||
|
||||
import Button from "../button/Button";
|
||||
import style from "./hero.module.less";
|
||||
|
||||
const Hero = () => {
|
||||
return (
|
||||
<section className={style.hero}>
|
||||
<div className={style.heroContent}>
|
||||
<p className={style.metalButton}>
|
||||
Start your journey.{" "}
|
||||
<a href="#" className={style.metalButtonLink}>
|
||||
Learn More <span className={style.arrowLink}>{"->"}</span>
|
||||
</a>
|
||||
</p>
|
||||
<h1 className={style.heroTitle}>
|
||||
五 味 子 云 存 储
|
||||
<em>
|
||||
<span className={style.colorSpan}>schisandra os</span>
|
||||
</em>
|
||||
</h1>
|
||||
<p className={style.heroText}>
|
||||
五味子云存储,为您的数据提供一个安全、便捷的云端之家。数据自己掌控,安全又放心。
|
||||
</p>
|
||||
<ul className={style.list}>
|
||||
<li>
|
||||
<Button text={"免 费 使 用"} type={"accent"} arrow={true} link={"/login"} />
|
||||
</li>
|
||||
<li>
|
||||
<Button
|
||||
text={"查 看 文 档"}
|
||||
type={"regular"}
|
||||
arrow={true}
|
||||
link={"/login"}
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Hero;
|
127
src/components/Home/hero/hero.module.less
Normal file
@@ -0,0 +1,127 @@
|
||||
.hero {
|
||||
background-image: url('@/assets/images/hero-illustration.svg'),
|
||||
linear-gradient(transparent 75%, var(--dark-200-6));
|
||||
background-position-x: 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.heroContent {
|
||||
width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 8rem 0 5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.heroContent {
|
||||
padding: 10rem 0 5rem;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.metalButton {
|
||||
margin: 0 0 1.5rem;
|
||||
padding: 0.3em 1.5em;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
background-color: var(--dark-200);
|
||||
color: var(--neutral-100);
|
||||
font-size: 14px;
|
||||
line-height: 1.57;
|
||||
border-radius: 2rem;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.metalButton::before,
|
||||
.metalButton::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border-radius: 2rem;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.metalButton::before {
|
||||
inset: 0;
|
||||
background-image: linear-gradient(
|
||||
var(--dark-300),
|
||||
var(--dark-150),
|
||||
var(--dark-300)
|
||||
);
|
||||
}
|
||||
|
||||
.metalButton::after {
|
||||
inset: 2px;
|
||||
background-color: var(--dark-200);
|
||||
}
|
||||
|
||||
.metalButtonLink {
|
||||
font-weight: 500;
|
||||
color: var(--accent-300);
|
||||
}
|
||||
|
||||
.arrowLink {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.metalButtonLink:hover .arrowLink {
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.heroTitle {
|
||||
width: min(576px, 95%);
|
||||
margin: 0 auto 1.5rem;
|
||||
font-family: 'Uncut-Sans-Bold';
|
||||
font-size: 3.75rem;
|
||||
line-height: 1;
|
||||
color: var(--almost-white);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.heroTitle {
|
||||
width: 60%;
|
||||
margin: 0 0 1.5rem;
|
||||
font-size: 5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.heroText {
|
||||
width: min(576px, 95%);
|
||||
margin: 0 auto 2.5rem;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.5;
|
||||
color: inherit;
|
||||
}
|
||||
.colorSpan {
|
||||
display: table;
|
||||
//margin: 0 auto;
|
||||
font-weight: 750;
|
||||
font-size: 1em;
|
||||
background: linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.heroText {
|
||||
width: 60%;
|
||||
margin: 0 0 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
max-width: 320px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.list {
|
||||
max-width: 60%;
|
||||
margin: 0;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
29
src/components/Home/main-container/MainContainer.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
/** @format */
|
||||
|
||||
import Billing from "../billing/Billing";
|
||||
import Features from "../features/Features";
|
||||
import Features2 from "../features2/Features2";
|
||||
import Footer from "../footer/Footer";
|
||||
import GetStarted from "../get-started/GetStarted";
|
||||
import Header from "../header/Header";
|
||||
import Hero from "../hero/Hero";
|
||||
import Resources from "../resources/Resources";
|
||||
import Testimonials from "../testimonials/Testimonials";
|
||||
|
||||
const MainContainer = () => {
|
||||
return (
|
||||
<div>
|
||||
<Header />
|
||||
<Hero />
|
||||
<Features />
|
||||
<Features2 />
|
||||
<Billing />
|
||||
<Testimonials />
|
||||
<Resources />
|
||||
<GetStarted />
|
||||
<Footer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MainContainer;
|
42
src/components/Home/plan/Plan.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import Button from "../button/Button";
|
||||
import style from "./plan.module.less";
|
||||
|
||||
const Plan = ({
|
||||
name,
|
||||
priceMonth,
|
||||
description,
|
||||
featuresTitle,
|
||||
features,
|
||||
popular,
|
||||
}: {
|
||||
name: any;
|
||||
priceMonth: any;
|
||||
description: any;
|
||||
featuresTitle: any;
|
||||
features: any;
|
||||
popular: any;
|
||||
}) => {
|
||||
return (
|
||||
<div className={popular ? `${style.card} ${style.popular}` : style.card}>
|
||||
<h3 className={style.title}>{name}</h3>
|
||||
<p className={style.price}>{priceMonth}</p>
|
||||
<p className={style.text}>{description}</p>
|
||||
<Button text="开始使用" type="accentSmall" arrow={true} link={"/login"} />
|
||||
<p className={style.listTitle}>{featuresTitle}</p>
|
||||
<ul>
|
||||
{features.map((item: any) => {
|
||||
return (
|
||||
<li key={v4()} className={style.listItem}>
|
||||
{item}
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Plan;
|
75
src/components/Home/plan/plan.module.less
Normal file
@@ -0,0 +1,75 @@
|
||||
.card {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.popular {
|
||||
background-color: var(--dark-200);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.popular::before {
|
||||
content: url('@/assets/images/fire.svg') ' Most popular';
|
||||
position: absolute;
|
||||
top: -0.75rem;
|
||||
right: 1.5rem;
|
||||
border-radius: 1rem;
|
||||
padding: 0.5em 1em;
|
||||
background-color: #a7f3d0;
|
||||
color: #059669;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: var(--almost-white);
|
||||
font-size: 1.125rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.price {
|
||||
margin: 0;
|
||||
color: var(--almost-white);
|
||||
font-family: 'Uncut-Sans-Bold';
|
||||
font-size: 2.25rem;
|
||||
font-weight: 700;
|
||||
line-height: 0.77;
|
||||
}
|
||||
|
||||
.price::before {
|
||||
content: '¥';
|
||||
color: var(--neutral-100);
|
||||
font-size: 1.8rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: -0.3px;
|
||||
}
|
||||
|
||||
.price::after {
|
||||
content: '/元';
|
||||
color: var(--neutral-100);
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: -0.3px;
|
||||
}
|
||||
|
||||
.text {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.listTitle {
|
||||
color: var(--almost-white);
|
||||
margin: 1.5rem 0 1rem;
|
||||
}
|
||||
|
||||
.listItem {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.listItem::before {
|
||||
display: inline-block;
|
||||
content: url('@/assets/images/check.svg');
|
||||
width: 0.75rem;
|
||||
margin-right: 0.75rem;
|
||||
}
|
37
src/components/Home/resources/Resources.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
/** @format */
|
||||
|
||||
import { useState } from "react";
|
||||
import { tabsContent } from "@/constants/tabs";
|
||||
import SectionTitle from "../section-title/SectionTitle";
|
||||
import TabCard from "../tab-card/TabCard";
|
||||
import style from "./resources.module.less";
|
||||
|
||||
const Resources = () => {
|
||||
const [activeTab, setActiveTab] = useState(0);
|
||||
return (
|
||||
<section className={style.resources}>
|
||||
<SectionTitle margin={"large"}>帮助您充分利用资源</SectionTitle>
|
||||
<div className={style.tabTitlesContainer}>
|
||||
{tabsContent.map((item, index) => {
|
||||
return (
|
||||
<p
|
||||
key={item.key}
|
||||
className={`${style.tabTitle} ${
|
||||
index === activeTab && style.tabTitleActive
|
||||
}`}
|
||||
onClick={() => setActiveTab(index)}>
|
||||
{item.title}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
<div className={style.tabInfoContainer}>
|
||||
{tabsContent[activeTab].cards.map((card: any) => {
|
||||
return <TabCard key={card.key} {...card} />;
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Resources;
|
83
src/components/Home/resources/resources.module.less
Normal file
@@ -0,0 +1,83 @@
|
||||
.resources {
|
||||
padding: 5rem 0;
|
||||
}
|
||||
|
||||
.tabTitlesContainer {
|
||||
max-width: 48rem;
|
||||
margin: 0 auto 3.375rem;
|
||||
padding: 0 2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 1.25rem;
|
||||
}
|
||||
|
||||
.tabTitle {
|
||||
margin: 0;
|
||||
padding: 0.4em 1em;
|
||||
max-width: 11rem;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
background-color: var(--dark-200);
|
||||
border-radius: 2rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tabTitle::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: -1;
|
||||
background-color: var(--dark-200);
|
||||
border-radius: 2rem;
|
||||
}
|
||||
|
||||
.tabTitle::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: -2px;
|
||||
z-index: -1;
|
||||
border-radius: 2rem;
|
||||
background-image: linear-gradient(
|
||||
var(--dark-300),
|
||||
var(--dark-150),
|
||||
var(--dark-300)
|
||||
);
|
||||
}
|
||||
|
||||
.tabTitleActive {
|
||||
color: var(--accent);
|
||||
transform: rotate(2deg);
|
||||
box-shadow: 0 0.3rem 1rem -0.5rem var(--accent);
|
||||
}
|
||||
|
||||
.tabTitleActive::before {
|
||||
background-image: linear-gradient(
|
||||
var(--dark-200),
|
||||
var(--neutral-300),
|
||||
var(--dark-200)
|
||||
);
|
||||
}
|
||||
|
||||
.tabInfoContainer {
|
||||
max-width: 24rem;
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 640px) {
|
||||
.tabInfoContainer {
|
||||
max-width: var(--max-width);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
row-gap: 2rem;
|
||||
column-gap: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.tabInfoContainer {
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
}
|
9
src/components/Home/section-subtitle/SectionSubtitle.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
/** @format */
|
||||
|
||||
import style from "./section-subtitle.module.less";
|
||||
|
||||
const SectionSubtitle = ({ content }: { content: any }) => {
|
||||
return <p className={style.text}>{content}</p>;
|
||||
};
|
||||
|
||||
export default SectionSubtitle;
|
@@ -0,0 +1,7 @@
|
||||
.text {
|
||||
max-width: 42rem;
|
||||
margin: 0 auto 5rem;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
}
|
9
src/components/Home/section-title/SectionTitle.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
/** @format */
|
||||
|
||||
import style from "./section-title.module.less";
|
||||
|
||||
const SectionTitle = ({ children, margin }: { children: any; margin: any }) => {
|
||||
return <h2 className={`${style.title} ${style[margin]}`}>{children}</h2>;
|
||||
};
|
||||
|
||||
export default SectionTitle;
|
24
src/components/Home/section-title/section-title.module.less
Normal file
@@ -0,0 +1,24 @@
|
||||
.title {
|
||||
max-width: 48rem;
|
||||
margin: 0 auto;
|
||||
color: var(--almost-white);
|
||||
font-family: 'Uncut-Sans-Bold', serif;
|
||||
font-size: 2.25rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.18;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.title {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.small {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.large {
|
||||
margin-bottom: 5rem;
|
||||
}
|
16
src/components/Home/tab-card/TabCard.tsx
Normal file
@@ -0,0 +1,16 @@
|
||||
/** @format */
|
||||
|
||||
import style from "./tab-card.module.less";
|
||||
|
||||
const TabCard = ({ icon, title }: { icon: any; title: any }) => {
|
||||
return (
|
||||
<article className={style.card}>
|
||||
<div className={style.logo}>
|
||||
<img src={icon} alt="title" />
|
||||
</div>
|
||||
<h3 className={style.title}>{title}</h3>
|
||||
</article>
|
||||
);
|
||||
};
|
||||
|
||||
export default TabCard;
|
24
src/components/Home/tab-card/tab-card.module.less
Normal file
@@ -0,0 +1,24 @@
|
||||
.card {
|
||||
background-color: var(--dark-200);
|
||||
padding: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin: 0 0 0.75rem;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
background-image: linear-gradient(var(--dark-100), var(--dark-300));
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin: auto 0 0;
|
||||
color: var(--almost-white);
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
}
|
29
src/components/Home/testimonials/Testimonials.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
/** @format */
|
||||
|
||||
import { TESTIMONIALS } from "@/constants/testimonials";
|
||||
import SectionTitle from "../section-title/SectionTitle";
|
||||
import style from "./testimonials.module.less";
|
||||
|
||||
const Testimonials = () => {
|
||||
return (
|
||||
<section className={style.testimonials}>
|
||||
<SectionTitle margin={"large"}>听听我们的客户怎么说?</SectionTitle>
|
||||
<div className={style.grid}>
|
||||
{TESTIMONIALS.map((item) => {
|
||||
return (
|
||||
<article key={item.id} className={style.card}>
|
||||
<img className={style.avatar} src={item.img} alt={item.name} />
|
||||
<p className={style.text}>{item.text}</p>
|
||||
<p className={style.author}>
|
||||
{item.name} - <a href="#">{item.source}</a>
|
||||
</p>
|
||||
</article>
|
||||
);
|
||||
})}
|
||||
<div className={style.overlay}></div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default Testimonials;
|
61
src/components/Home/testimonials/testimonials.module.less
Normal file
@@ -0,0 +1,61 @@
|
||||
.testimonials {
|
||||
background-image: linear-gradient(var(--dark-200-6), transparent 10rem);
|
||||
padding-top: 5rem;
|
||||
}
|
||||
|
||||
.grid {
|
||||
position: relative;
|
||||
max-width: 24rem;
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 3rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 640px) {
|
||||
.grid {
|
||||
max-width: var(--max-width);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
row-gap: 2rem;
|
||||
column-gap: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.grid {
|
||||
max-width: var(--max-width);
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: var(--dark-200);
|
||||
padding: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: start;
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.author {
|
||||
margin: auto 0 0;
|
||||
color: var(--neutral-300);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
p a {
|
||||
color: var(--accent-300);
|
||||
}
|
||||
|
||||
.overlay {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
height: 15rem;
|
||||
inset: auto 0 0 0;
|
||||
background-image: linear-gradient(transparent, var(--dark-400));
|
||||
}
|
29
src/constants/features.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import iconSquare from "@/assets/images/icon-square.svg";
|
||||
import iconbrackets from "@/assets/images/icon-brackets.svg";
|
||||
import iconcheckList from "@/assets/images/icon-check-list.svg";
|
||||
|
||||
const FEATURES = [
|
||||
{
|
||||
id: v4(),
|
||||
icon: iconSquare,
|
||||
title: "随时访问",
|
||||
body: "无论您身处何地,只要有网络,就能随时随地访问您的数据。",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
icon: iconbrackets,
|
||||
title: "安全可靠",
|
||||
body: "采用多重加密技术和严格的数据保护措施,确保用户数据的安全性和完整性。",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
icon: iconcheckList,
|
||||
title: "数据掌控",
|
||||
body: "数据自己掌控,安全又放心。",
|
||||
},
|
||||
];
|
||||
|
||||
export { FEATURES };
|
48
src/constants/footer-links.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
|
||||
const LINKS = [
|
||||
{
|
||||
id: v4(),
|
||||
title: "Products",
|
||||
links: [
|
||||
{ id: v4(), link: "schisandra Manage" },
|
||||
{ id: v4(), link: "schisandra Analyse" },
|
||||
{ id: v4(), link: "schisandra Launch" },
|
||||
{ id: v4(), link: "Experimentation" },
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
id: v4(),
|
||||
title: "Resources",
|
||||
links: [
|
||||
{ id: v4(), link: "Blog" },
|
||||
{ id: v4(), link: "Cheat Sheet" },
|
||||
{ id: v4(), link: "Channel Partners" },
|
||||
{ id: v4(), link: "Affiliate Program" },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
title: "Compare",
|
||||
links: [
|
||||
{ id: v4(), link: "Session Recording" },
|
||||
{ id: v4(), link: "Feature Flags" },
|
||||
{ id: v4(), link: "Heatmaps" },
|
||||
{ id: v4(), link: "Correlation Analysis" },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
title: "Company",
|
||||
links: [
|
||||
{ id: v4(), link: "About Us" },
|
||||
{ id: v4(), link: "Our Story" },
|
||||
{ id: v4(), link: "Work With Us" },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export { LINKS };
|
18
src/constants/logos.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import alibaba from "@/assets/images/logos/alibaba.svg";
|
||||
import tencent from "@/assets/images/logos/tencent.svg";
|
||||
import huawei from "@/assets/images/logos/huawei.svg";
|
||||
import baidu from "@/assets/images/logos/baidu.svg";
|
||||
import qiniu from "@/assets/images/logos/qiniu.svg";
|
||||
|
||||
const LOGOS = [
|
||||
{ id: v4(), src: alibaba },
|
||||
{ id: v4(), src: tencent },
|
||||
{ id: v4(), src: huawei },
|
||||
{ id: v4(), src: baidu },
|
||||
{ id: v4(), src: qiniu },
|
||||
];
|
||||
|
||||
export { LOGOS };
|
34
src/constants/plans.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
/** @format */
|
||||
|
||||
const PLANS = [
|
||||
{
|
||||
name: "免费",
|
||||
priceMonth: 0,
|
||||
description: "免费使用。提供基础的存储服务,不限制存储商。",
|
||||
featuresTitle: "包含功能:",
|
||||
features: [
|
||||
"可用全部存储商",
|
||||
"基础文件操作",
|
||||
"不支持在线文件编辑",
|
||||
"支持文件在线预览",
|
||||
"...",
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "商业",
|
||||
priceMonth: 299,
|
||||
description: "在免费基础上增加增强功能,可自定义存储服务。",
|
||||
featuresTitle: "在免费版上增加:",
|
||||
features: ["支持自定义存储商", "支持在线文件编辑", "加强版文件操作", "提供技术支持", "..."],
|
||||
popular: true,
|
||||
},
|
||||
{
|
||||
name: "定制",
|
||||
priceMonth: 129,
|
||||
description: "定制版,可定制自己想要的功能,添加其他存储商。",
|
||||
featuresTitle: "定制版:",
|
||||
features: ["定制功能", "享有阉割版商业版加强功能", "支持定制存储商", "..."],
|
||||
},
|
||||
];
|
||||
|
||||
export { PLANS };
|
105
src/constants/tabs.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import telegram from "@/assets/images/telegram.svg";
|
||||
import github from "@/assets/images/github.svg";
|
||||
import docs from "@/assets/images/docs.svg";
|
||||
import youtube from "@/assets/images/youtube.svg";
|
||||
import discord from "@/assets/images/discord.svg";
|
||||
import medium from "@/assets/images/medium.svg";
|
||||
const tabsContent = [
|
||||
{
|
||||
key: v4(),
|
||||
title: "开发人员",
|
||||
cards: [
|
||||
{
|
||||
key: v4(),
|
||||
icon: telegram,
|
||||
title: "Neon Telegram",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: github,
|
||||
title: "Neon GitHub",
|
||||
},
|
||||
{ key: v4(), icon: docs, title: "Neon Docs" },
|
||||
{
|
||||
key: v4(),
|
||||
icon: youtube,
|
||||
title: "Neon Tutorials",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
title: "设计师",
|
||||
cards: [
|
||||
{
|
||||
key: v4(),
|
||||
icon: discord,
|
||||
title: "Neon Discord",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: medium,
|
||||
title: "Neon Medium",
|
||||
},
|
||||
{ key: v4(), icon: docs, title: "Neon Docs" },
|
||||
{
|
||||
key: v4(),
|
||||
icon: youtube,
|
||||
title: "Neon Tutorials",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
title: "创作者",
|
||||
cards: [
|
||||
{
|
||||
key: v4(),
|
||||
icon: telegram,
|
||||
title: "Neon Telegram",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: discord,
|
||||
title: "Neon Discord",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: medium,
|
||||
title: "Neon Medium",
|
||||
},
|
||||
{ key: v4(), icon: docs, title: "Neon Docs" },
|
||||
],
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
title: "其他人员",
|
||||
cards: [
|
||||
{
|
||||
key: v4(),
|
||||
icon: telegram,
|
||||
title: "Neon Telegram",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: medium,
|
||||
title: "Neon Medium",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: github,
|
||||
title: "Neon GitHub",
|
||||
},
|
||||
{
|
||||
key: v4(),
|
||||
icon: youtube,
|
||||
title: "Neon Tutorials",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export { tabsContent };
|
79
src/constants/testimonials.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
/** @format */
|
||||
|
||||
import { v4 } from "uuid";
|
||||
import testimonial01 from "@/assets/images/testimonials/testimonial-01.jpg";
|
||||
import testimonial02 from "@/assets/images/testimonials/testimonial-02.jpg";
|
||||
import testimonial03 from "@/assets/images/testimonials/testimonial-03.jpg";
|
||||
import testimonial04 from "@/assets/images/testimonials/testimonial-04.jpg";
|
||||
import testimonial05 from "@/assets/images/testimonials/testimonial-05.jpg";
|
||||
import testimonial06 from "@/assets/images/testimonials/testimonial-06.jpg";
|
||||
import testimonial07 from "@/assets/images/testimonials/testimonial-07.jpg";
|
||||
import testimonial08 from "@/assets/images/testimonials/testimonial-08.jpg";
|
||||
import testimonial09 from "@/assets/images/testimonials/testimonial-09.jpg";
|
||||
const TESTIMONIALS = [
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial01,
|
||||
text: "Compared to other offerings, schisandra always has a head start and introduces bleeding edge features first.",
|
||||
name: "Mark Luiss",
|
||||
source: "Apprenda",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial02,
|
||||
text: "schisandra has made a huge impact on compliance, while helping us become more transparent.",
|
||||
name: "Patrick Mills",
|
||||
source: "AppDonkey",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial03,
|
||||
text: "GitHub provides tools that are, in a sense, invisible. You don’t have to waste time trying to get them to work.",
|
||||
name: "David Collison",
|
||||
source: "BrainTwo",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial04,
|
||||
text: "schisandra is the tool devs. The more you can make work feel native for a developer, the more cool their experience.",
|
||||
name: "Licia McFarland",
|
||||
source: "Paytable",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial05,
|
||||
text: "schisandra comes into play during the entire software life cycle. It’s the de facto tool for anything related to our software.",
|
||||
name: "Rossana Alecu",
|
||||
source: "Bolt Money",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial06,
|
||||
text: "I have no tech skills and with Neon I can actually make good looking apps with ease.",
|
||||
name: "Max Corsano",
|
||||
source: "MixTech",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial07,
|
||||
text: "It’s not just easier to get in touch with developers, it’s also easier to bring in other team members.",
|
||||
name: "Anna Pratt",
|
||||
source: "Cloud Inc",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial08,
|
||||
text: "Tools like Neon Advanced Security help keep our team lean. It makes us much more efficient.",
|
||||
name: "Veerle Larson",
|
||||
source: "Prinso",
|
||||
},
|
||||
{
|
||||
id: v4(),
|
||||
img: testimonial09,
|
||||
text: "schisandra enables speed and scale. We can work on bigger projects and finish them faster.",
|
||||
name: "Ana Kennedy",
|
||||
source: "Syntax Inc",
|
||||
},
|
||||
];
|
||||
|
||||
export { TESTIMONIALS };
|
@@ -1,13 +1,13 @@
|
||||
/** @format */
|
||||
import { useEffect } from "react";
|
||||
|
||||
import HomeIndex from "@/components/HomeIndex";
|
||||
import MainContainer from "@/components/Home/main-container/MainContainer.tsx";
|
||||
|
||||
export default () => {
|
||||
useEffect(() => {}, []);
|
||||
return (
|
||||
<div>
|
||||
<HomeIndex />
|
||||
<MainContainer />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|