This is an automated email from the ASF dual-hosted git repository.
apratim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb-site.git
The following commit(s) were added to refs/heads/master by this push:
new 7aec01b Added animations and much more
7aec01b is described below
commit 7aec01bf94403d78e86cbc924ee3fd96fb92c4e3
Author: Apratim Shukla <[email protected]>
AuthorDate: Wed Jun 12 19:23:06 2024 -0700
Added animations and much more
---
.circleci/config.yml | 2 +-
package-lock.json | 421 ++++++++++++++++++++++++++++++++++-
package.json | 11 +-
public/images/about/about.json | 1 +
public/images/features/features.json | 1 +
src/components/About/index.tsx | 41 +++-
src/components/Features/index.tsx | 41 +++-
src/components/Footer/index.tsx | 56 ++++-
tsconfig.json | 1 +
9 files changed, 546 insertions(+), 29 deletions(-)
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 31d5ba8..71f8a66 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -6,7 +6,7 @@ orbs:
jobs:
build:
docker:
- - image: cimg/node:22.2.0
+ - image: cimg/node:18.18.2
steps:
- checkout
- run:
diff --git a/package-lock.json b/package-lock.json
index 5bb3de1..f665fe7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,17 +13,26 @@
"@fortawesome/free-regular-svg-icons": "^6.5.2",
"@fortawesome/free-solid-svg-icons": "^6.5.2",
"@fortawesome/react-fontawesome": "^0.2.2",
+ "@lottiefiles/react-lottie-player": "^3.5.4",
+ "@mantine/core": "^7.10.1",
+ "@mantine/hooks": "^7.10.1",
+ "@tanstack/react-query": "^5.45.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.56.0",
"eslint-config-next": "^14.2.3",
+ "lottie-react": "^2.4.0",
+ "lottie-web": "^5.12.2",
"next": "^14.2.3",
"next-themes": "^0.2.1",
"react": "^18.3.1",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "react-lottie": "^1.2.4",
+ "react-lottie-player": "^2.0.0"
},
"devDependencies": {
"@types/node": "^20.12.12",
"@types/react": "^18.3.3",
+ "@types/react-lottie": "^1.2.10",
"tailwindcss": "^3.4.3",
"typescript": "^5.4.5"
}
@@ -111,6 +120,54 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.2",
+ "resolved":
"https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz",
+ "integrity":
"sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.0"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.5",
+ "resolved":
"https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.5.tgz",
+ "integrity":
"sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==",
+ "dependencies": {
+ "@floating-ui/core": "^1.0.0",
+ "@floating-ui/utils": "^0.2.0"
+ }
+ },
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.16",
+ "resolved":
"https://registry.npmjs.org/@floating-ui/react/-/react-0.26.16.tgz",
+ "integrity":
"sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.0",
+ "@floating-ui/utils": "^0.2.0",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.0",
+ "resolved":
"https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz",
+ "integrity":
"sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==",
+ "dependencies": {
+ "@floating-ui/dom": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.2",
+ "resolved":
"https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz",
+ "integrity":
"sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw=="
+ },
"node_modules/@fortawesome/fontawesome-common-types": {
"version": "6.5.2",
"resolved":
"https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz",
@@ -299,6 +356,54 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@lottiefiles/react-lottie-player": {
+ "version": "3.5.4",
+ "resolved":
"https://registry.npmjs.org/@lottiefiles/react-lottie-player/-/react-lottie-player-3.5.4.tgz",
+ "integrity":
"sha512-2FptWtHQ+o7MzdsMKSvNZ1Mz7xtKSYI0WL9HjZ1r+CvsXR3lbLQUDp7Pwx6qhg0Akm4VluQ+8/D1S1fcr1Ao4w==",
+ "dependencies": {
+ "lottie-web": "^5.12.2"
+ },
+ "peerDependencies": {
+ "react": "16 - 18"
+ }
+ },
+ "node_modules/@mantine/core": {
+ "version": "7.10.1",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.10.1.tgz",
+ "integrity":
"sha512-l9ypojKN3PjwO1CSLIsqxi7mA25+7w+xc71Q+JuCCREI0tuGwkZsKbIOpuTATIJOjPh8ycLiW7QxX1LYsRTq6w==",
+ "dependencies": {
+ "@floating-ui/react": "^0.26.9",
+ "clsx": "^2.1.1",
+ "react-number-format": "^5.3.1",
+ "react-remove-scroll": "^2.5.7",
+ "react-textarea-autosize": "8.5.3",
+ "type-fest": "^4.12.0"
+ },
+ "peerDependencies": {
+ "@mantine/hooks": "7.10.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ }
+ },
+ "node_modules/@mantine/core/node_modules/type-fest": {
+ "version": "4.20.0",
+ "resolved":
"https://registry.npmjs.org/type-fest/-/type-fest-4.20.0.tgz",
+ "integrity":
"sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@mantine/hooks": {
+ "version": "7.10.1",
+ "resolved":
"https://registry.npmjs.org/@mantine/hooks/-/hooks-7.10.1.tgz",
+ "integrity":
"sha512-0EH9WBWUdtQLGU3Ak+csQ77EtUxI6pPNfwZdRJQWcaA3f8SFOLo9h9CGxiikFExerhvuCeUlaTf3s+TB9Op/rw==",
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
"node_modules/@next/env": {
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz",
@@ -507,6 +612,30 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@tanstack/query-core": {
+ "version": "5.45.0",
+ "resolved":
"https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.45.0.tgz",
+ "integrity":
"sha512-RVfIZQmFUTdjhSAAblvueimfngYyfN6HlwaJUPK71PKd7yi43Vs1S/rdimmZedPWX/WGppcq/U1HOj7O7FwYxw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
+ "node_modules/@tanstack/react-query": {
+ "version": "5.45.0",
+ "resolved":
"https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.45.0.tgz",
+ "integrity":
"sha512-y272cKRJp1BvehrWG4ashOBuqBj1Qm2O6fgYJ9LYSHrLdsCXl74GbSVjUQTReUdHuRIl9cEOoyPa6HYag400lw==",
+ "dependencies": {
+ "@tanstack/query-core": "5.45.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
"node_modules/@types/json5": {
"version": "0.0.29",
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -537,6 +666,15 @@
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/react-lottie": {
+ "version": "1.2.10",
+ "resolved":
"https://registry.npmjs.org/@types/react-lottie/-/react-lottie-1.2.10.tgz",
+ "integrity":
"sha512-rCd1p3US4ELKJlqwVnP0h5b24zt5p9OCvKUoNpYExLqwbFZMWEiJ6EGLMmH7nmq5V7KomBIbWO2X/XRFsL0vCA==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@typescript-eslint/parser": {
"version": "6.21.0",
"resolved":
"https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
@@ -976,6 +1114,20 @@
"dequal": "^2.0.3"
}
},
+ "node_modules/babel-runtime": {
+ "version": "6.26.0",
+ "resolved":
"https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity":
"sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "dependencies": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
+ },
+ "node_modules/babel-runtime/node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved":
"https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity":
"sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved":
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -1162,6 +1314,14 @@
"resolved":
"https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity":
"sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity":
"sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved":
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -1183,6 +1343,13 @@
"resolved":
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity":
"sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
+ "node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity":
"sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not
recommended for usage due to the number of issues. Because of the V8 engine
whims, feature detection in old core-js versions could cause a slowdown up to
100x even if nothing is polyfilled. Some versions have web compatibility
issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "hasInstallScript": true
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved":
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1280,6 +1447,11 @@
"node": ">=6"
}
},
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "resolved":
"https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity":
"sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved":
"https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
@@ -2095,6 +2267,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity":
"sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/get-symbol-description": {
"version": "1.0.2",
"resolved":
"https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
@@ -2376,6 +2556,14 @@
"node": ">= 0.4"
}
},
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity":
"sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dependencies": {
+ "loose-envify": "^1.0.0"
+ }
+ },
"node_modules/is-array-buffer": {
"version": "3.0.4",
"resolved":
"https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
@@ -2872,6 +3060,23 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/lottie-react": {
+ "version": "2.4.0",
+ "resolved":
"https://registry.npmjs.org/lottie-react/-/lottie-react-2.4.0.tgz",
+ "integrity":
"sha512-pDJGj+AQlnlyHvOHFK7vLdsDcvbuqvwPZdMlJ360wrzGFurXeKPr8SiRCjLf3LrNYKANQtSsh5dz9UYQHuqx4w==",
+ "dependencies": {
+ "lottie-web": "^5.10.2"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/lottie-web": {
+ "version": "5.12.2",
+ "resolved":
"https://registry.npmjs.org/lottie-web/-/lottie-web-5.12.2.tgz",
+ "integrity":
"sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg=="
+ },
"node_modules/lru-cache": {
"version": "10.2.0",
"resolved":
"https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
@@ -3562,6 +3767,132 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity":
"sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/react-lottie": {
+ "version": "1.2.4",
+ "resolved":
"https://registry.npmjs.org/react-lottie/-/react-lottie-1.2.4.tgz",
+ "integrity":
"sha512-kBGxI+MIZGBf4wZhNCWwHkMcVP+kbpmrLWH/SkO0qCKc7D7eSPcxQbfpsmsCo8v2KCBYjuGSou+xTqK44D/jMg==",
+ "dependencies": {
+ "babel-runtime": "^6.26.0",
+ "lottie-web": "^5.1.3"
+ },
+ "engines": {
+ "npm": "^3.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=15.0.0"
+ }
+ },
+ "node_modules/react-lottie-player": {
+ "version": "2.0.0",
+ "resolved":
"https://registry.npmjs.org/react-lottie-player/-/react-lottie-player-2.0.0.tgz",
+ "integrity":
"sha512-PF23dcQ4k+ULyi2L6b32ny2jfaDqY6+WdbfBF9kpunbtZ02QWS+j7Iz/91xbYe8C6YO8gN28+x0op4CYC/cPbA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "lottie-web": "^5.12.2",
+ "rfdc": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-number-format": {
+ "version": "5.4.0",
+ "resolved":
"https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.0.tgz",
+ "integrity":
"sha512-NWdICrqLhI7rAS8yUeLVd6Wr4cN7UjJ9IBTS0f/a9i7UB4x4Ti70kGnksBtZ7o4Z7YRbvCMMR/jQmkoOBa/4fg==",
+ "dependencies": {
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.10",
+ "resolved":
"https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz",
+ "integrity":
"sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.6",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.6",
+ "resolved":
"https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
+ "integrity":
"sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "resolved":
"https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity":
"sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/react-textarea-autosize": {
+ "version": "8.5.3",
+ "resolved":
"https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz",
+ "integrity":
"sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.20.13",
+ "use-composed-ref": "^1.3.0",
+ "use-latest": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved":
"https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -3666,6 +3997,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity":
"sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
+ },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -4125,6 +4461,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity":
"sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
+ },
"node_modules/tailwindcss": {
"version": "3.4.3",
"resolved":
"https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
@@ -4394,6 +4735,84 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/use-callback-ref": {
+ "version": "1.3.2",
+ "resolved":
"https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
+ "integrity":
"sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/use-composed-ref": {
+ "version": "1.3.0",
+ "resolved":
"https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz",
+ "integrity":
"sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.2",
+ "resolved":
"https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz",
+ "integrity":
"sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-latest": {
+ "version": "1.2.1",
+ "resolved":
"https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz",
+ "integrity":
"sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==",
+ "dependencies": {
+ "use-isomorphic-layout-effect": "^1.1.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sidecar": {
+ "version": "1.1.2",
+ "resolved":
"https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity":
"sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "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
+ }
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved":
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/package.json b/package.json
index c5c47ff..3797788 100644
--- a/package.json
+++ b/package.json
@@ -14,17 +14,26 @@
"@fortawesome/free-regular-svg-icons": "^6.5.2",
"@fortawesome/free-solid-svg-icons": "^6.5.2",
"@fortawesome/react-fontawesome": "^0.2.2",
+ "@lottiefiles/react-lottie-player": "^3.5.4",
+ "@mantine/core": "^7.10.1",
+ "@mantine/hooks": "^7.10.1",
+ "@tanstack/react-query": "^5.45.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.56.0",
"eslint-config-next": "^14.2.3",
+ "lottie-react": "^2.4.0",
+ "lottie-web": "^5.12.2",
"next": "^14.2.3",
"next-themes": "^0.2.1",
"react": "^18.3.1",
- "react-dom": "^18.3.1"
+ "react-dom": "^18.3.1",
+ "react-lottie": "^1.2.4",
+ "react-lottie-player": "^2.0.0"
},
"devDependencies": {
"@types/node": "^20.12.12",
"@types/react": "^18.3.3",
+ "@types/react-lottie": "^1.2.10",
"tailwindcss": "^3.4.3",
"typescript": "^5.4.5"
}
diff --git a/public/images/about/about.json b/public/images/about/about.json
new file mode 100644
index 0000000..4200fd7
--- /dev/null
+++ b/public/images/about/about.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":241,"w":602,"h":648,"nm":"Comp
1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer
2","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[533.955,408.228,0],"ix":2,"l":2},"a":{"a":0,"k":[533.955,408.228,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[559.793,404.943],[525.794,394.103],
[...]
\ No newline at end of file
diff --git a/public/images/features/features.json
b/public/images/features/features.json
new file mode 100644
index 0000000..e224fda
--- /dev/null
+++ b/public/images/features/features.json
@@ -0,0 +1 @@
+{"v":"5.7.0","fr":60,"ip":0,"op":180,"w":780,"h":830,"nm":"Comp
1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Ãëîé
23","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[625.389,411.958,0],"ix":2},"a":{"a":0,"k":[125.389,-88.042,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,16.667]},"t":77,"s":[0,0,100]},{"t":107,"s":[100,100,100]}],"ix":6}},"ao":0,"shap
[...]
","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[0]},{"t":110,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[236.663,450.733,0],"ix":2},"a":{"a":0,"k":[113.485,-74.147,0],"ix":1},"s":{"a":0,"k":[528,528,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"s
[...]
\ No newline at end of file
diff --git a/src/components/About/index.tsx b/src/components/About/index.tsx
index a705096..bf513d3 100644
--- a/src/components/About/index.tsx
+++ b/src/components/About/index.tsx
@@ -1,6 +1,38 @@
-import Image from "next/image";
+"use client";
+
+import { useEffect, useRef } from 'react';
+import lottie from 'lottie-web';
const About = () => {
+ const animationContainer = useRef(null);
+
+ useEffect(() => {
+ const instance = lottie.loadAnimation({
+ container: animationContainer.current,
+ renderer: 'svg',
+ loop: true,
+ autoplay: true,
+ path: '/images/about/about.json'
+ });
+
+ const observer = new IntersectionObserver((entries) => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ instance.play();
+ } else {
+ instance.pause();
+ }
+ });
+ });
+
+ observer.observe(animationContainer.current);
+
+ return () => {
+ instance.destroy();
+ observer.disconnect();
+ };
+ }, []);
+
return (
<section className="py-16 md:py-20 lg:py-28" style={{ backgroundImage:
`url('data:image/svg+xml,<svg id="visual" viewBox="0 0 2000 1000" width="2000"
height="1000" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><rect x="0" y="0"
width="2000" height="1000" fill="%230F0F1A"></rect><g
transform="translate(961.35041104432 476.3922111923553)"><path d="M284
-215.3C365.2 -124.6 426.4 -6.7 407.5 99.8C388.6 206.3 289.8 301.4 172.6
357.3C55.5 413.2 [...]
<div className="container">
@@ -10,12 +42,7 @@ const About = () => {
className="relative mx-auto mb-12 aspect-[25/24] max-w-[500px]
text-center lg:m-0"
data-wow-delay=".15s"
>
- <Image
- src="/images/about/about.svg"
- alt="about image"
- fill
- className="hidden drop-shadow-three dark:block
dark:drop-shadow-none"
- />
+ <div ref={animationContainer}></div>
</div>
</div>
<div className="w-full px-4 lg:w-1/2">
diff --git a/src/components/Features/index.tsx
b/src/components/Features/index.tsx
index 0983b5d..96c9bc3 100644
--- a/src/components/Features/index.tsx
+++ b/src/components/Features/index.tsx
@@ -1,4 +1,7 @@
-import Image from "next/image";
+"use client";
+
+import { useEffect, useRef } from 'react';
+import lottie from 'lottie-web';
import SectionTitle from "../Common/SectionTitle";
const checkIcon = (
@@ -8,6 +11,35 @@ const checkIcon = (
);
const Features = () => {
+ const animationContainer = useRef(null);
+
+ useEffect(() => {
+ const instance = lottie.loadAnimation({
+ container: animationContainer.current,
+ renderer: 'svg',
+ loop: true,
+ autoplay: true,
+ path: '/images/features/features.json'
+ });
+
+ const observer = new IntersectionObserver((entries) => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ instance.play();
+ } else {
+ instance.pause();
+ }
+ });
+ });
+
+ observer.observe(animationContainer.current);
+
+ return () => {
+ instance.destroy();
+ observer.disconnect();
+ };
+ }, []);
+
const List = ({ text }) => (
<p className="mb-5 flex items-center text-lg font-medium text-body-color">
<span className="mr-4 flex h-[30px] w-[30px] items-center justify-center
rounded-md bg-primary bg-opacity-10 text-primary">
@@ -55,12 +87,7 @@ const Features = () => {
<div className="w-full px-4 lg:w-1/2">
<div className="relative mx-auto aspect-[25/24] max-w-[500px]
lg:mr-0">
- <Image
- src="/images/features/features.svg"
- alt="about-image"
- fill
- className="mx-auto hidden max-w-full drop-shadow-three
dark:block dark:drop-shadow-none lg:mr-0"
- />
+ <div ref={animationContainer}></div>
</div>
</div>
</div>
diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx
index 84255f0..6dd8787 100644
--- a/src/components/Footer/index.tsx
+++ b/src/components/Footer/index.tsx
@@ -1,4 +1,6 @@
"use client";
+
+import React, { useEffect, useState } from 'react';
import Image from "next/image";
import Link from "next/link";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -8,8 +10,42 @@ import {
faTwitter,
faYoutube
} from "@fortawesome/free-brands-svg-icons";
+import { faStar as faStarSolid, faCodeBranch as faCodeBranchSolid } from
"@fortawesome/free-solid-svg-icons";
const Footer = () => {
+ const [repoData, setRepoData] = useState({
+ stars: 0,
+ forks: 0,
+ error: null,
+ });
+
+ useEffect(() => {
+ const fetchRepoData = async () => {
+ const url = "https://api.github.com/repos/apache/incubator-resilientdb";
+
+ try {
+ const response = await fetch(url);
+ if (response.ok) {
+ const data = await response.json();
+ setRepoData({
+ stars: data.stargazers_count,
+ forks: data.forks,
+ error: null,
+ });
+ } else {
+ throw new Error('Failed to fetch data');
+ }
+ } catch (error) {
+ setRepoData((prevState) => ({
+ ...prevState,
+ error: error.message,
+ }));
+ }
+ };
+
+ fetchRepoData();
+ }, []);
+
return (
<>
<footer className="relative z-10 bg-white pt-16 dark:bg-gray-dark
md:pt-20 lg:pt-24">
@@ -65,20 +101,16 @@ const Footer = () => {
</a>
<div className="flex mr-3">
<a className="mr-2"
href="https://github.com/apache/incubator-resilientdb">
- <Image
-
src="https://img.shields.io/github/stars/apache/incubator-resilientdb?style=flat&color=959CB1"
- alt="GitHub stars"
- width={100}
- height={20}
- />
+ <div className="flex items-center px-3 py-1 rounded-full
bg-gray-400 text-gray-700 hover:bg-teal-500 hover:text-white transition-colors">
+ <FontAwesomeIcon icon={faStarSolid}
className="text-xs" />
+ <span className="ml-2 text-sm">{repoData.stars}</span>
+ </div>
</a>
<a
href="https://github.com/apache/incubator-resilientdb/fork">
- <Image
-
src="https://img.shields.io/github/forks/apache/incubator-resilientdb?style=flat&color=959CB1"
- alt="GitHub forks"
- width={100}
- height={20}
- />
+ <div className="flex items-center px-3 py-1 rounded-full
bg-gray-400 text-gray-700 hover:bg-teal-500 hover:text-white transition-colors">
+ <FontAwesomeIcon icon={faCodeBranchSolid}
className="text-xs" />
+ <span className="ml-2 text-sm">{repoData.forks}</span>
+ </div>
</a>
</div>
</div>
diff --git a/tsconfig.json b/tsconfig.json
index 2a2486c..dacb9df 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -11,6 +11,7 @@
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"incremental": true,
+ "allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",