feat: landing page update

This commit is contained in:
landaiqing
2024-05-21 01:32:44 +08:00
parent 7e87781c85
commit ce35d51918
88 changed files with 1928 additions and 848 deletions

View File

@@ -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
View File

@@ -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'}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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

View 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

View 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

View 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

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View 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

View 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

View 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

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 90 KiB

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

View 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

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

View 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

View 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

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View 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

View File

@@ -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;
}

View 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;

View File

@@ -0,0 +1,7 @@
.arrow {
width: 1rem;
}
a:hover .arrow {
transform: translateX(0.2rem);
}

View 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;

View 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;
}
}

View 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;

View 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);
}

View 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;

View 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;
}

View 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;

View 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;
}

View 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;

View 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;
}

View 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;

View 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;
}
}

View 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;

View 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;
}

View 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;

View 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;
}
}

View 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;

View 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;

View 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;
}

View 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;

View 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);
}
}

View 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;

View File

@@ -0,0 +1,7 @@
.text {
max-width: 42rem;
margin: 0 auto 5rem;
font-size: 1.25rem;
line-height: 1.5;
text-align: center;
}

View 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;

View 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;
}

View 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;

View 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;
}

View 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;

View 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
View 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 };

View 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 };

View File

18
src/constants/logos.ts Normal file
View 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
View 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
View 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 };

View 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 dont 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. Its 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: "Its not just easier to get in touch with developers, its 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 };

View File

@@ -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>
);
};