From 9bec72da5b0affb91ceb6b74e597b42f50e9e149 Mon Sep 17 00:00:00 2001 From: Mini256 Date: Wed, 28 Aug 2024 16:20:31 +0800 Subject: [PATCH 01/30] etl: change bulk insert size from 20000 to 90000 (#1785) --- etl/lib/importer.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/etl/lib/importer.rb b/etl/lib/importer.rb index 59f10853426..3c64feebfd9 100644 --- a/etl/lib/importer.rb +++ b/etl/lib/importer.rb @@ -183,16 +183,16 @@ def import! def upsert_all puts "start insert #{events.count} records into DB using upsert_all ..." - events.each_slice(20000) do |es| - puts 'bulk insert 20000 records' + events.each_slice(90000) do |es| + puts 'bulk insert 90000 records' GithubEvent.upsert_all(es) end end def insert_all puts "start insert #{events.count} records into DB using insert_all ..." - events.each_slice(20000) do |es| - puts 'bulk insert 20000 records' + events.each_slice(90000) do |es| + puts 'bulk insert 90000 records' GithubEvent.insert_all(es) end end From 1bd2bf198a8de2f8027bd8333f6b92770092f631 Mon Sep 17 00:00:00 2001 From: Ionite Date: Thu, 29 Aug 2024 13:34:01 -0400 Subject: [PATCH 02/30] Update 10079.stable-diffusion-ecosystem.yml --- etl/meta/collections/10079.stable-diffusion-ecosystem.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/etl/meta/collections/10079.stable-diffusion-ecosystem.yml b/etl/meta/collections/10079.stable-diffusion-ecosystem.yml index 4864c6d4b5a..9745028d48b 100644 --- a/etl/meta/collections/10079.stable-diffusion-ecosystem.yml +++ b/etl/meta/collections/10079.stable-diffusion-ecosystem.yml @@ -33,3 +33,4 @@ items: - AbdBarho/stable-diffusion-webui-docker - mlc-ai/web-stable-diffusion - invoke-ai/InvokeAI + - LykosAI/StabilityMatrix From 4062470fdcce16e7fd83132836b06f390e72e628 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Wed, 4 Sep 2024 10:03:39 +0800 Subject: [PATCH 03/30] ci: update env --- .github/workflows/preview.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml index 3e119ccbf4a..586233e4fc0 100644 --- a/.github/workflows/preview.yaml +++ b/.github/workflows/preview.yaml @@ -54,6 +54,7 @@ jobs: SENTRY_DSN: https://ea6017f8ee534468b308a2a6c949895a@o226447.ingest.sentry.io/6588620 AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }} + GIFT_APP_API_BASE: ${{ secrets.GIFT_APP_API_BASE }} OSSINSIGHT_PREVIEW: true TIDBCLOUD_HOST: staging.tidbcloud.com run: npm run build From 420eec516aad74b095f7103d0e543a4f04ca4f69 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Wed, 4 Sep 2024 10:18:45 +0800 Subject: [PATCH 04/30] empty test commit From 4d5be0faecaddf86a5229abbfc6357ddd231a314 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Fri, 6 Sep 2024 11:49:24 +0800 Subject: [PATCH 05/30] update ci --- .github/workflows/preview.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml index 586233e4fc0..f4a34932dd9 100644 --- a/.github/workflows/preview.yaml +++ b/.github/workflows/preview.yaml @@ -13,9 +13,7 @@ jobs: shell: bash working-directory: ./web steps: - - uses: actions/checkout@v2 - with: - ref: refs/pull/${{ github.event.pull_request.number }}/merge + - uses: actions/checkout@v4 - name: Use Node.js 18 uses: actions/setup-node@v2.5.1 with: From e1e79b594b3eeeaa103f5304f4f785f520f7c813 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Fri, 6 Sep 2024 12:09:37 +0800 Subject: [PATCH 06/30] update ci --- .github/workflows/preview.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml index f4a34932dd9..3d6e3b1fb40 100644 --- a/.github/workflows/preview.yaml +++ b/.github/workflows/preview.yaml @@ -34,9 +34,7 @@ jobs: shell: bash working-directory: ./web steps: - - uses: actions/checkout@v2 - with: - ref: refs/pull/${{ github.event.pull_request.number }}/merge + - uses: actions/checkout@v4 - name: Use Node.js 18 uses: actions/setup-node@v2.5.1 with: From c715d35009bec41b21ce3fa8f0d9f14fa11a0f65 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Fri, 6 Sep 2024 12:18:20 +0800 Subject: [PATCH 07/30] update ci --- .github/workflows/preview.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml index 3d6e3b1fb40..f3dfc937722 100644 --- a/.github/workflows/preview.yaml +++ b/.github/workflows/preview.yaml @@ -14,6 +14,8 @@ jobs: working-directory: ./web steps: - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Use Node.js 18 uses: actions/setup-node@v2.5.1 with: @@ -35,6 +37,8 @@ jobs: working-directory: ./web steps: - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Use Node.js 18 uses: actions/setup-node@v2.5.1 with: From 8ecf7b6dbed6a0155bbfcea1a36b2df8eb0bb328 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Mon, 9 Sep 2024 11:15:30 +0800 Subject: [PATCH 08/30] feat: github credits page (#1789) * update * empty test commit * update ci * update ci * update ci * empty test commit * update ci * update ci * update * update * fix * update * update --------- Co-authored-by: Mini256 --- web/docusaurus.config.js | 2 + web/package-lock.json | 288 ++++++++++++++ web/package.json | 3 +- web/src/api/client.ts | 2 +- web/src/css/custom.css | 5 + .../explore/_components/ExploreGlobalAds.tsx | 2 +- .../gift/_components/ClaimCredits/index.tsx | 48 --- web/src/pages/gift/index.tsx | 11 - .../github-campaign/_components/ClaimForm.tsx | 360 ++++++++++++++++++ .../github-campaign/_components/Collapse.tsx | 49 +++ .../github-campaign/_components/Heading.tsx | 115 ++++++ .../github-campaign/_components/Section.tsx | 31 ++ .../github-campaign/_components/Tabs.tsx | 43 +++ .../_components/TiDBCloudButton.tsx | 26 ++ .../github-campaign/_components/ossi-logo.png | Bin 0 -> 18692 bytes .../github-campaign/_components/tidb-logo.png | Bin 0 -> 3463 bytes .../github-campaign/_sections/0-heading.tsx | 88 +++++ .../_sections/1-how-it-works.tsx | 169 ++++++++ .../github-campaign/_sections/2-0-free.mdx | 3 + .../github-campaign/_sections/2-0-you-can.mdx | 8 + .../github-campaign/_sections/2-1-$5.mdx | 2 + .../github-campaign/_sections/2-2-$10.mdx | 1 + .../github-campaign/_sections/2-3-$100.mdx | 1 + .../github-campaign/_sections/2-4-$300.mdx | 2 + .../_sections/2-introduction.tsx | 316 +++++++++++++++ .../github-campaign/_sections/3-reviews.tsx | 212 +++++++++++ .../_sections/4-contributions.tsx | 112 ++++++ .../pages/github-campaign/_sections/5-faq.mdx | 8 + .../pages/github-campaign/_sections/5-faq.tsx | 17 + .../github-campaign/_sections/6-legal.mdx | 26 ++ .../github-campaign/_sections/6-legal.tsx | 20 + web/src/pages/github-campaign/index.tsx | 27 ++ 32 files changed, 1935 insertions(+), 62 deletions(-) delete mode 100644 web/src/pages/gift/_components/ClaimCredits/index.tsx delete mode 100644 web/src/pages/gift/index.tsx create mode 100644 web/src/pages/github-campaign/_components/ClaimForm.tsx create mode 100644 web/src/pages/github-campaign/_components/Collapse.tsx create mode 100644 web/src/pages/github-campaign/_components/Heading.tsx create mode 100644 web/src/pages/github-campaign/_components/Section.tsx create mode 100644 web/src/pages/github-campaign/_components/Tabs.tsx create mode 100644 web/src/pages/github-campaign/_components/TiDBCloudButton.tsx create mode 100644 web/src/pages/github-campaign/_components/ossi-logo.png create mode 100644 web/src/pages/github-campaign/_components/tidb-logo.png create mode 100644 web/src/pages/github-campaign/_sections/0-heading.tsx create mode 100644 web/src/pages/github-campaign/_sections/1-how-it-works.tsx create mode 100644 web/src/pages/github-campaign/_sections/2-0-free.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-0-you-can.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-1-$5.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-2-$10.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-3-$100.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-4-$300.mdx create mode 100644 web/src/pages/github-campaign/_sections/2-introduction.tsx create mode 100644 web/src/pages/github-campaign/_sections/3-reviews.tsx create mode 100644 web/src/pages/github-campaign/_sections/4-contributions.tsx create mode 100644 web/src/pages/github-campaign/_sections/5-faq.mdx create mode 100644 web/src/pages/github-campaign/_sections/5-faq.tsx create mode 100644 web/src/pages/github-campaign/_sections/6-legal.mdx create mode 100644 web/src/pages/github-campaign/_sections/6-legal.tsx create mode 100644 web/src/pages/github-campaign/index.tsx diff --git a/web/docusaurus.config.js b/web/docusaurus.config.js index b40fb963c55..98851b1e107 100644 --- a/web/docusaurus.config.js +++ b/web/docusaurus.config.js @@ -8,6 +8,7 @@ const fs = require('fs'); const HOST = process.env.APP_HOST || 'https://ossinsight.io'; const API_BASE = process.env.APP_API_BASE || 'https://api.ossinsight.io'; +const GIFT_APP_API_BASE = process.env.GIFT_APP_API_BASE || 'https://us-west-2.prod.aws.tidbcloud.com'; const DATABASE_URL = process.env.DATABASE_URL || ''; const SENTRY_DSN = process.env.SENTRY_DSN || ''; @@ -66,6 +67,7 @@ const config = { path.resolve(__dirname, 'plugins/define'), { 'process.env.APP_API_BASE': JSON.stringify(API_BASE), + 'process.env.GIFT_APP_API_BASE': JSON.stringify(GIFT_APP_API_BASE), 'process.env.SENTRY_DSN': SENTRY_DSN ? JSON.stringify(SENTRY_DSN) : undefined, } ], diff --git a/web/package-lock.json b/web/package-lock.json index 846572481dc..a721322a29a 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -77,6 +77,7 @@ "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.31.10", + "framer-motion": "^6.5.1", "human-format": "^1.0.0", "node-fetch": "^3.2.4", "param-case": "^3.0.4", @@ -3245,6 +3246,76 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", + "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/animation": "^10.12.0", + "@motionone/generators": "^10.12.0", + "@motionone/types": "^10.12.0", + "@motionone/utils": "^10.12.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, "node_modules/@mui/base": { "version": "5.0.0-alpha.102", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.102.tgz", @@ -10602,6 +10673,57 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/framer-motion": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", + "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@motionone/dom": "10.12.0", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": ">=16.8 || ^17.0.0 || ^18.0.0", + "react-dom": ">=16.8 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -11197,6 +11319,13 @@ "node": ">=8" } }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "dev": true, + "license": "MIT" + }, "node_modules/history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -14766,6 +14895,19 @@ "node": ">=4" } }, + "node_modules/popmotion": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", + "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, "node_modules/postcss": { "version": "8.4.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", @@ -18502,6 +18644,17 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/style-value-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", + "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, "node_modules/stylehacks": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", @@ -23167,6 +23320,70 @@ "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" }, + "@motionone/animation": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", + "dev": true, + "requires": { + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "@motionone/dom": { + "version": "10.12.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz", + "integrity": "sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==", + "dev": true, + "requires": { + "@motionone/animation": "^10.12.0", + "@motionone/generators": "^10.12.0", + "@motionone/types": "^10.12.0", + "@motionone/utils": "^10.12.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@motionone/easing": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", + "dev": true, + "requires": { + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "@motionone/generators": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", + "dev": true, + "requires": { + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", + "tslib": "^2.3.1" + } + }, + "@motionone/types": { + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==", + "dev": true + }, + "@motionone/utils": { + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", + "dev": true, + "requires": { + "@motionone/types": "^10.17.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, "@mui/base": { "version": "5.0.0-alpha.102", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.102.tgz", @@ -28749,6 +28966,49 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" }, + "framer-motion": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz", + "integrity": "sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==", + "dev": true, + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "@motionone/dom": "10.12.0", + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "popmotion": "11.0.3", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "dev": true, + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true, + "optional": true + } + } + }, + "framesync": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz", + "integrity": "sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -29183,6 +29443,12 @@ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", + "dev": true + }, "history": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", @@ -31734,6 +32000,18 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" }, + "popmotion": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz", + "integrity": "sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==", + "dev": true, + "requires": { + "framesync": "6.0.1", + "hey-listen": "^1.0.8", + "style-value-types": "5.0.0", + "tslib": "^2.1.0" + } + }, "postcss": { "version": "8.4.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", @@ -34442,6 +34720,16 @@ "inline-style-parser": "0.1.1" } }, + "style-value-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", + "integrity": "sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==", + "dev": true, + "requires": { + "hey-listen": "^1.0.8", + "tslib": "^2.1.0" + } + }, "stylehacks": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", diff --git a/web/package.json b/web/package.json index e4b97bc74f7..c36095f575a 100644 --- a/web/package.json +++ b/web/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "docusaurus": "docusaurus", - "start": "docusaurus start", + "start": "docusaurus start --port 30000", "start-silence": "ENABLE_BUNDLER_ANALYZE=false docusaurus start --host 0.0.0.0 --port 30000 --no-open", "build": "docusaurus build", "swizzle": "docusaurus swizzle", @@ -95,6 +95,7 @@ "eslint-plugin-n": "^15.4.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.31.10", + "framer-motion": "^6.5.1", "human-format": "^1.0.0", "node-fetch": "^3.2.4", "param-case": "^3.0.4", diff --git a/web/src/api/client.ts b/web/src/api/client.ts index e3d7ac42ee6..a8d1fa105c5 100644 --- a/web/src/api/client.ts +++ b/web/src/api/client.ts @@ -6,7 +6,7 @@ import { patchAuthInterceptors } from '@site/src/api/axios/auth'; import { notFalsy } from '@site/src/utils/value'; export const BASE_URL = (process.env.APP_API_BASE ?? '') || 'https://api.ossinsight.io'; -export const GIFT_API_BASE_URL = (process.env.GIFT_APP_API_BASE ?? '') || 'https://gift.ossinsight.io'; +export const GIFT_API_BASE_URL = (process.env.GIFT_APP_API_BASE ?? '') || 'https://us-west-2.prod.aws.tidbcloud.com'; declare module 'axios' { interface AxiosRequestConfig { diff --git a/web/src/css/custom.css b/web/src/css/custom.css index a7faf45652d..e2eed17b15b 100644 --- a/web/src/css/custom.css +++ b/web/src/css/custom.css @@ -336,4 +336,9 @@ hr.MuiDivider-root { .event > .menu__link::before { content: "event"; background-color: rgba(0, 0, 0, 0.5); +} + +:root { + --color1: ; + --color2: ; } \ No newline at end of file diff --git a/web/src/pages/explore/_components/ExploreGlobalAds.tsx b/web/src/pages/explore/_components/ExploreGlobalAds.tsx index 656fd90c09f..d69aed0fa5e 100644 --- a/web/src/pages/explore/_components/ExploreGlobalAds.tsx +++ b/web/src/pages/explore/_components/ExploreGlobalAds.tsx @@ -23,7 +23,7 @@ export default function ExploreGlobalAds () { useEffect(() => { setAnchorEl(document.body); - if (hasClosed || /^\/(?:explore|blog)\/?$/.test(location.pathname) || location.pathname.startsWith('/blog/chat2query-tutorials')) { + if (hasClosed || /^\/(?:explore|blog|github-campaign)\/?$/.test(location.pathname) || location.pathname.startsWith('/blog/chat2query-tutorials')) { return; } safeSetTimeout(() => { diff --git a/web/src/pages/gift/_components/ClaimCredits/index.tsx b/web/src/pages/gift/_components/ClaimCredits/index.tsx deleted file mode 100644 index 3c45820850d..00000000000 --- a/web/src/pages/gift/_components/ClaimCredits/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Button, Container, Typography } from '@mui/material'; -import React, { useState } from 'react'; -import { giftClientWithoutCache } from '@site/src/api/client'; -import { useRequireLogin } from '@site/src/context/user'; - -export function ClaimCredits () { - const [email, setEmail] = useState(); - const requireLogin = useRequireLogin(); - const handleClick = async () => { - let accessToken: string; - try { - accessToken = await requireLogin('gift'); - } catch (e) { - console.error('Failed to get the access token.', e); - return; - } - - const res = await giftClientWithoutCache.post( - '/api/v1/credits/claim', - {}, - { - withCredentials: true, - oToken: accessToken, - }, - ); - - setEmail(res?.metadata?.email); - }; - - return (<> - - - My Gift - - -

{email}

-
- ); -} diff --git a/web/src/pages/gift/index.tsx b/web/src/pages/gift/index.tsx deleted file mode 100644 index da06d858d21..00000000000 --- a/web/src/pages/gift/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import CustomPage from '@site/src/theme/CustomPage'; -import React from 'react'; -import { ClaimCredits } from '@site/src/pages/gift/_components/ClaimCredits'; - -export default function Page () { - return ( - - - - ); -} diff --git a/web/src/pages/github-campaign/_components/ClaimForm.tsx b/web/src/pages/github-campaign/_components/ClaimForm.tsx new file mode 100644 index 00000000000..dc1117d1e73 --- /dev/null +++ b/web/src/pages/github-campaign/_components/ClaimForm.tsx @@ -0,0 +1,360 @@ +import { Box, Button, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, Skeleton, styled } from '@mui/material'; +import { giftClientWithoutCache } from '@site/src/api/client'; +import { TiDBCloudButton } from '@site/src/pages/github-campaign/_components/TiDBCloudButton'; +import { useResponsiveAuth0 } from '@site/src/theme/NavbarItem/useResponsiveAuth0'; +import { getErrorMessage } from '@site/src/utils/error'; +import React, { type ReactNode, useEffect, useState } from 'react'; +import useSWR from 'swr'; + +type Check = { + credits: string; + githubId: number; + isClaimed: boolean; + isEligible: boolean; +}; + +type Tenant = { + email: string; + id: string; + name: string; +}; + +export function ClaimForm () { + const [claimedThisSession, setClaimedThisSession] = useState(false); + const { getAccessTokenSilently } = useResponsiveAuth0(); + + const { data: check, mutate } = useSWR('/api/v1/serverless-credits-campaign/credits/check', async url => await giftClientWithoutCache.get(url, { + withCredentials: true, + headers: { + Authorization: `Bearer ${await getAccessTokenSilently({ connection: 'github' })}`, + }, + })); + + const { data: tenants } = useSWR('/api/v1/serverless-credits-campaign/tenants', async url => await giftClientWithoutCache.get(url, { + withCredentials: true, + headers: { + Authorization: `Bearer ${await getAccessTokenSilently({ connection: 'github' })}`, + }, + }), { revalidateOnFocus: false }); + + const handleClaim = async (id: string) => { + await giftClientWithoutCache.post('/api/v1/serverless-credits-campaign/credits/claim', { + selectedTenantId: id, + }, { + headers: { + Authorization: `Bearer ${await getAccessTokenSilently({ connection: 'github' })}`, + }, + }) + .then(() => { + setClaimedThisSession(true); + }) + .finally(() => { + void mutate(); + }); + }; + + let children: ReactNode; + + if (check && tenants) { + if (check.isClaimed) { + if (claimedThisSession) { + children = ; + } else { + children = ; + } + } else if (check.isEligible) { + if (tenants.length === 0) { + children = ; + } else { + children = ; + } + } else { + if (tenants.length === 0) { + children = ; + } else { + children = ; + } + } + + // // DEBUG + // children = ( + // <> + // + //
+ // + //
+ // + //
+ // + //
+ // + //
+ // + //
+ // + // + // ); + } else { + children = ; + } + + return ( + + {children} + + ); +} + +function Checking () { + return ( + <> + + + + + + + + ); +} + +function ClaimedThisSession ({ check }: { check: Check }) { + const { user } = useResponsiveAuth0(); + + return ( + <> + {successIcon} + + Hi {user?.nickname ?? user?.name} +
+ Successfully claimed {check.credits} credits, you can go to +
+ TiDB Cloud to check it out and use it. +
+ + Start Building with TiDB Cloud! + + + ); +} + +function Claimed () { + const { user } = useResponsiveAuth0(); + + return ( + <> + {successIcon} + + Hi {user?.nickname ?? user?.name} +
+ You've already participated in this campaign. +
+ Thanks for being an open-source hero. +
+ Ready to build something amazing? +
+ + Start Building with TiDB Cloud! + + + ); +} + +function NotEligible ({ tenants }: { tenants: Tenant[] }) { + const { user } = useResponsiveAuth0(); + + return ( + <> + {badIcon} + + Hi {user?.nickname ?? user?.name} +
+ Thank you for your contributions to the open-source community. +
+ As a token of our appreciation, you have 25GB of free storage and 250 million reads available on TiDB Serverless. +
+ Start building your next project today. +
+ + Login to TiDB Cloud + + + ); +} + +function NotEligibleNoTenant () { + const { user } = useResponsiveAuth0(); + + return ( + <> + {badIcon} + + Hi {user?.nickname ?? user?.name} +
+ Want to try TiDB Serverless for free? +
+ Create a new TiDB Cloud account and enjoy 25GB of free storage to start building your applications. +
+ + Create TiDB Cloud Account + + + ); +} + +function EligibleNoTenants ({ check }: { check: Check }) { + const { user } = useResponsiveAuth0(); + + return ( + <> + {starIcon} + + Hi {user?.nickname ?? user?.name} +
+ Awesome! You're eligible for {check.credits} in TiDB Serverless credits for your contributions to the open-source community. +
+ Create a new TiDB Cloud account and your credits will be waiting for you. +
+ + Sign up to TiDB Cloud + + + + ); +} + +function Eligible ({ tenants, check, onClaim }: { tenants: Tenant[], check: Check, onClaim: (id: string) => Promise }) { + const { user } = useResponsiveAuth0(); + const [value, setValue] = useState(''); + const [claiming, setClaiming] = useState(false); + const [, setClaimError] = useState(); + + useEffect(() => { + if (tenants.length > 0) { + setValue(tenants[0].id); + } else { + setValue(''); + } + }, [tenants]); + + const handleClaim = () => { + if (value) { + setClaiming(true); + onClaim(value) + .catch(error => { + alert(getErrorMessage(error)); + setClaimError(error); + }) + .finally(() => { + setClaiming(false); + }); + } + }; + + return <> + {starIcon} + + Hi {user?.nickname ?? user?.name} +
+ Congratulations! You're eligible for {check.credits} in TiDB Serverless credits for your contributions to the open-source community. +
+ Please select your existing TiDB Cloud account to apply these credits. +
+ + Select your TiDB Cloud account to claim the credits + setValue(value)} + > + {tenants.map(tenant => ( + + {tenant.name} + {tenant.email} + + )} + control={} + /> + ))} + + + + ; +} + +const ClaimFormContainer = styled('div')` + background: #212122; + min-height: calc(100vh - 60px); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 24; +`; + +const ClaimContent = styled('div')` + text-align: center; + font-size: 36px; + font-weight: 400; + line-height: 50px; + max-width: 1200px; + margin: 0 auto; + + strong { + font-weight: 700; + color: #FFE895; + } + + em { + color: #73D9B4; + font-style: normal; + } +`; + +const TenantName = styled('div')` + +`; + +const TenantEmail = styled('div')` + color: ${({ theme }) => theme.palette.grey['500']}; + font-size: 12px; +`; + +const starIcon = + + +; + +const badIcon = + + +; + +const successIcon = + + +; diff --git a/web/src/pages/github-campaign/_components/Collapse.tsx b/web/src/pages/github-campaign/_components/Collapse.tsx new file mode 100644 index 00000000000..d079c13401d --- /dev/null +++ b/web/src/pages/github-campaign/_components/Collapse.tsx @@ -0,0 +1,49 @@ +import { Button, styled } from '@mui/material'; +import { motion } from 'framer-motion'; +import React, { type ReactNode, useState } from 'react'; + +export function Collapse ({ children }: { children: ReactNode }) { + const [collapsed, setCollapsed] = useState(true); + + return ( + + + {children} + + + + + ); +} + +const variants = { + collapsed: { height: 240 }, + flatten: { height: 'auto' }, +}; + +const shadowEffectVariants = { + collapsed: { boxShadow: '0 0 40px 40px #141414' }, + flatten: { boxShadow: 'none' }, +}; + +const CollapseRoot = styled('div')` + border: 1px solid #565656; + background: #141414; + border-radius: 2px; + padding: 56px; +`; + +const CollapseContainer = motion(styled('div')` + overflow: hidden; + position: relative; +`); + +const ShadowEffect = motion(styled('div')` + position: absolute; + left: 0; + bottom: 0; + content: ' '; + display: block; + width: 100%; + height: 0; +`); diff --git a/web/src/pages/github-campaign/_components/Heading.tsx b/web/src/pages/github-campaign/_components/Heading.tsx new file mode 100644 index 00000000000..dcba51f8fa9 --- /dev/null +++ b/web/src/pages/github-campaign/_components/Heading.tsx @@ -0,0 +1,115 @@ +import { css, styled, Unstable_Grid2 as Grid } from '@mui/material'; + +export const HeadingContainer = styled('div')` + background-color: #212122; + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + height: calc(100vh - 60px); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + `, + })} +`; + +export const Heading = styled(Grid)` + max-width: 1280px; + margin: 0 auto; +`; + +export const HeadingLeft = styled(Grid)` + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + position: relative; + + &:after { + display: block; + position: absolute; + right: 0; + top: 0; + height: 100%; + content: ' '; + border-right: 1px solid white; + } + `, + })} +`; + +export const HeadingRight = styled(Grid)` + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: flex; + flex-direction: column; + max-height: 100%; + `, + })} +`; + +export const HeadingTitlePrefix = styled('span')` + font-weight: 600; + line-height: 1; + color: white; +`; + +export const HeadingTitle = styled('h1')` + font-size: 36px; + line-height: 1.25; + font-weight: 900; + text-align: center; + color: #FFE895; + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + font-size: 54px; + text-align: right; + `, + })} +`; + +export const HeadingDescription = styled('p')` + color: #7C7C7C; + font-size: 16px; + line-height: 24px; + text-align: left; + margin-bottom: 0; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + text-align: right; + `, + })} +`; + +export const HeadingLogos = styled('div')` + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 24px; + width: 100%; + justify-content: center; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + justify-content: start; + `, + })} +`; + +export const HeadingPrompt = styled('div')` + font-size: 18px; + line-height: 28px; + margin-top: 24px; + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + margin-top: 80px; + `, + })} +`; + +export const HeadingSpacing = styled('span')` + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + flex: 1; + `, + })} +`; diff --git a/web/src/pages/github-campaign/_components/Section.tsx b/web/src/pages/github-campaign/_components/Section.tsx new file mode 100644 index 00000000000..b48029588dd --- /dev/null +++ b/web/src/pages/github-campaign/_components/Section.tsx @@ -0,0 +1,31 @@ +import { styled } from '@mui/material'; + +export const Section = styled('section')<{ dark?: boolean }>` + background-color: ${({ dark }) => dark ? '#141414' : '#212122'}; + padding: 120px 12px; +`; +export const SectionContent = styled('div')` + max-width: 1400px; + margin: 0 auto; +`; + +export const SectionTitle = styled('h2')` + font-weight: 700; + font-size: 48px; + line-height: 58.09px; + text-align: center; +`; + +export const SectionDescription = styled('p')` + font-weight: 700; + font-size: 24px; + line-height: 38px; + color: #B1B1B1; + text-align: center; + max-width: 1200px; + margin: 0 auto; + + strong { + color: #73D9B4; + } +`; diff --git a/web/src/pages/github-campaign/_components/Tabs.tsx b/web/src/pages/github-campaign/_components/Tabs.tsx new file mode 100644 index 00000000000..e1f5fe18578 --- /dev/null +++ b/web/src/pages/github-campaign/_components/Tabs.tsx @@ -0,0 +1,43 @@ +import { styled } from '@mui/material'; +import { motion } from 'framer-motion'; +import React, { createContext, type ReactNode, useContext, useEffect, useState } from 'react'; + +export const TabsContext = createContext<{ init: boolean, current: string, setCurrent: (value: string) => void }>({ init: false, current: '', setCurrent () {} }); + +export function Tabs ({ children, defaultValue }: { children: ReactNode, defaultValue: string }) { + const [current, setCurrent] = useState(defaultValue); + const [init, setInit] = useState(false); + useEffect(() => { + setInit(true); + }, []); + + return ( + + {children} + + ); +} + +export const TabsList = styled('ul')` + list-style: none; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 24px; + flex-wrap: wrap; + padding: 0 24px; + gap: 12px; +`; + +export function TabItem ({ value, children }: { value: string, children: ReactNode }) { + const { current, setCurrent } = useContext(TabsContext); + + return ( + + {(value === current) && } + + + ); +} diff --git a/web/src/pages/github-campaign/_components/TiDBCloudButton.tsx b/web/src/pages/github-campaign/_components/TiDBCloudButton.tsx new file mode 100644 index 00000000000..a3103200a38 --- /dev/null +++ b/web/src/pages/github-campaign/_components/TiDBCloudButton.tsx @@ -0,0 +1,26 @@ +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import { Button } from '@mui/material'; +import type { ButtonProps } from '@mui/material/Button'; +import React, { type ReactNode } from 'react'; + +const utm = '?utm_source=ossinsight&utm_medium=referral&utm_campaign=plg_OSScontribution_credit_05'; + +export function TiDBCloudButton ({ children, trial = true, mt = 8, ...props }: { children: ReactNode, mt?: number, trial?: boolean } & Pick, 'sx' | 'color' | 'variant'>) { + const { + siteConfig: { customFields }, + } = useDocusaurusContext(); + + return ( + + ); +} diff --git a/web/src/pages/github-campaign/_components/ossi-logo.png b/web/src/pages/github-campaign/_components/ossi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f831b829b08eb00a58aa3b1f80b27c464f166deb GIT binary patch literal 18692 zcmY&fRa9GDux^p!ZpGalin|q;;!s?RYk}bI#oeK}yGwC*cL?qzxZnKuKHZ0$td*6O zoW0NN`DA7yRFtGq5D5@JefoqVDg1r2?grAqCnOSgANs08F zIchW%%7Mv$|qpl(6_ak=6e9D@+?beuiN( zS9G-Q_GHT?nBK ze`RImmzLHtXLED2#IatoY$Rvza|LA8xr|>>2nwZ^-rKTf#KgoR5@{4YEA#W6A|o%V zG^^HF5a9|A4kTyzRC5FY^%Zi-432M$OOX2&HvRSZ^u(2bnO5odT&$QWh>VOpHGlOY zTPYp=byxJ@b&%uaholjQrY0AwY3rn(79=GNef{GlUQclU>cva&My@S1#8uqOa8 zI6ECfWNh@k<{JgijeR!h({DD&g4aLXD<6WE-yZ?uks_X-`|+ylHG0|kSF?=RM`3hPA@)y+?tdI+q&RewRkKu>AmT%}sCO~`cu+rhy> z;e40de#0a2-O$$3vPIQE6VU^OnBSFG!CX3V!K81&psAw<^1$FT=;`S@_9Z7#&Bs$< z0h81NJwl$h$D8EjDH8 z4F5LH$Lzz`r=jAEO29VlGo$ea`fWfXJK!!A(8L>o+Yj!50t-=sNMqe-`*&sSN(*7z zDu%{-B?KX#s>0An@5wLAvqDM`^Yin`F)%R5!B-8?LywkISx^3_YmyxPKH2QT%KrKt zZYM&%udS$?xlR!g5ifMn?TINVhpF-L7>Wrpn93h;iK%zrgoU@*d3ilRs|}Xxam(s4 z2$6YY`=S75Y3boPdwY9k6BCm|T59U-LjIhYF0^9)Jr$lsLJ44IR+hH_2M73}!~N=> zgv(l8iYAUz)d<js&$qI+)@5g4h*VzkfuDg!W6^Cq{!wo8Syq6CY3C`U{+YnS!h*lX zpvyWdE^bFOTSUbd%^3=Vik_SMe(nz;&zC0q&2~X7CNqPsPbiT6FEB7LxCl22%QM

}=xav03VN{>`Ux~+_ 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 JPDHLkV1kftPwD^w literal 0 HcmV?d00001 diff --git a/web/src/pages/github-campaign/_components/tidb-logo.png b/web/src/pages/github-campaign/_components/tidb-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b38480486b42742ed27fbf9cf29b1a5ad49216aa GIT binary patch literal 3463 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 E08WR4wEzGB literal 0 HcmV?d00001 diff --git a/web/src/pages/github-campaign/_sections/0-heading.tsx b/web/src/pages/github-campaign/_sections/0-heading.tsx new file mode 100644 index 00000000000..8fef189d447 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/0-heading.tsx @@ -0,0 +1,88 @@ +// noinspection CssUnresolvedCustomProperty + +import { Button } from '@mui/material'; +import { ClaimForm } from '@site/src/pages/github-campaign/_components/ClaimForm'; +import { Heading, HeadingContainer, HeadingDescription, HeadingLeft, HeadingLogos, HeadingPrompt, HeadingRight, HeadingSpacing, HeadingTitle, HeadingTitlePrefix } from '@site/src/pages/github-campaign/_components/Heading'; +import { useResponsiveAuth0 } from '@site/src/theme/NavbarItem/useResponsiveAuth0'; +import React, { useState } from 'react'; + +declare module 'react' { + interface CSSProperties { + '--color1'?: string; + '--color2'?: string; + } +} + +export function HeadingSection () { + const { user, isLoading, login } = useResponsiveAuth0(); + const [claiming, setClaiming] = useState(false); + + if (claiming) { + return ; + } else { + return { + if (isGithubSub(user?.sub)) { + setClaiming(true); + } else { + void login({ connection: 'github' }).then(() => { + setClaiming(true); + }); + } + }} + />; + } +} + +function PrimaryHeading ({ loading, onClickAction }: { loading: boolean, onClickAction: () => void }) { + return ( + + + +

+ + Fuel Your Next Big Idea: +
+ TiDB Serverless Credits for Open Source Heroes +
+ + TiDB loves open-source. We contribute code, sponsor projects arround open source community, such as OssInsight, and deeply appreciate developers who actively contribute to the communityhave. +
+ As a token of our appreciation, we're offering up to $1000 in free TiDB Serverless credits to fuel open-source hero's next big idea. +
+
+ + + + Simply log in with your GitHub account to calculate and claim your credits. + + + + OSSInsight Logo + TiDB Logo + + + + + + ); +} + +function isGithubSub (sub: string | undefined) { + if (!sub) { + return false; + } + return sub.startsWith('github|'); +} diff --git a/web/src/pages/github-campaign/_sections/1-how-it-works.tsx b/web/src/pages/github-campaign/_sections/1-how-it-works.tsx new file mode 100644 index 00000000000..2ec870ef2c2 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/1-how-it-works.tsx @@ -0,0 +1,169 @@ +import { css, styled } from '@mui/material'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { motion } from 'framer-motion'; +import React, { Fragment } from 'react'; + +export function HowItWorks () { + return ( + + + + How it Works + + + {items.map((item, index) => ( + + {index > 0 && } + + {item.title} + + + + + + + {item.description} + + + + ))} + + + + ); +} + +const animations = { + initial: { opacity: 0, y: -26 }, + hover: { opacity: 1, y: 0 }, +}; + +const ThisSection = motion(styled(Section)` + ${({ theme }) => ({ + [theme.breakpoints.up('lg')]: css` + padding-top: 0; + `, + })} +`); + +const ThisSectionContent = styled(SectionContent)` + display: block; + ${({ theme }) => ({ + [theme.breakpoints.up('lg')]: css` + display: flex; + gap: 48px; + + h2 { + font-size: 24px; + line-height: 36px; + } + `, + })} +`; + +const Features = motion(styled('div')` + display: flex; + gap: 24px; + align-items: center; + justify-content: space-between; + padding: 0; + list-style: none; + flex-direction: column; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: flex; + flex-direction: row; + align-items: flex-start; + `, + })} +`); + +const FeatureSplitter = styled('li')` + flex: 0.6; + height: 1px; + background-color: #6E6E6E; + margin-top: 64px; + display: none; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: block; + `, + })} +`; + +const Feature = styled('div')` + flex: 1; + max-width: 344px; +`; + +const FeatureTitle = styled('h3')` + font-size: 24px; + line-height: 36px; +`; +const FeatureDescription = motion(styled('div')` + max-width: 100%; + overflow: hidden; + font-size: 18px; + line-height: 28px; +`); + +const FeatureIndicatorBar = styled('div')` + background-color: var(--color1); + height: 28px; + border-radius: 9999px; + padding: 5px; +`; + +const FeatureIndicatorInnerCircle = styled('div')` + width: 18px; + height: 18px; + border-radius: 9px; + border: 4px solid var(--color2); + background-color: white; +`; + +const FeatureDescriptionLine = styled('div')` + margin-left: 13px; + height: 32px; + width: 1px; + background-color: var(--color1); +`; + +const FeatureDescriptionCircle = styled('div')` + margin-left: 4px; + width: 18px; + height: 18px; + border-radius: 9px; + border: 4px solid var(--color1); + background-color: white; +`; + +type Item = { + title: string; + description: string; + color1: string; + color2: string; +}; + +const items: Item[] = [ + { + title: 'Link your Github', + description: 'Developers who actively contribute to open-source projects on GitHub are eligible. We\'ll consider factors like lines of code written, commits made, and pull requests submitted.', + color1: '#B2DFF2', + color2: '#238AB5', + }, + { + title: 'Claim your Credits', + description: 'Simply sign in OssInsight with Github account. We\'ll calculate your credit allocation based on your contributions. Just claim it with one click.', + color1: '#FFE895', + color2: '#A58927', + }, + { + title: 'Start Building', + description: 'Once you have your credits, use them to build any project you want on TiDB Serverless. TiDB Serverless provides a full set of on-boarding supports and a few sets of sample data to help you get started.', + color1: '#C1F6E2', + color2: '#73D9B4', + }, +]; diff --git a/web/src/pages/github-campaign/_sections/2-0-free.mdx b/web/src/pages/github-campaign/_sections/2-0-free.mdx new file mode 100644 index 00000000000..2a8265c5fab --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-0-free.mdx @@ -0,0 +1,3 @@ +- **Personal Website Hosting**: Create websites or blogs using WordPress or Joomla. +- **RAG Agent Prototyping**: Develop RAG agents with your own knowledge base. +- **Minecraft Server**: Run a personal Minecraft server, where you can play on with your friends all day. diff --git a/web/src/pages/github-campaign/_sections/2-0-you-can.mdx b/web/src/pages/github-campaign/_sections/2-0-you-can.mdx new file mode 100644 index 00000000000..8939412d5a7 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-0-you-can.mdx @@ -0,0 +1,8 @@ +TiDB Serverless is a highly scalable, vector search built-in, and cost-effective serverless database, which is dedicated to powering modern applications with simple solutions. Read more. + +With it, you can: + +- Build highly scalable applications with ease +- Leverage advanced features like vector search +- Enjoy seamless integration with what you use +- Pay only for what you use, and only beyond free credits diff --git a/web/src/pages/github-campaign/_sections/2-1-$5.mdx b/web/src/pages/github-campaign/_sections/2-1-$5.mdx new file mode 100644 index 00000000000..23f1bed2c02 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-1-$5.mdx @@ -0,0 +1,2 @@ +- **Start small businesses**: Power online stores, community forums, or customer feedback systems. +- **Data API Backends**: Host small databases for managing small-scale workloads like API backend \ No newline at end of file diff --git a/web/src/pages/github-campaign/_sections/2-2-$10.mdx b/web/src/pages/github-campaign/_sections/2-2-$10.mdx new file mode 100644 index 00000000000..02c073ceb36 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-2-$10.mdx @@ -0,0 +1 @@ +- **Scale startups**: Deploy SaaS applications, analytics dashboards, or e-commerce platforms with of thousands users and continuous read/write operations. \ No newline at end of file diff --git a/web/src/pages/github-campaign/_sections/2-3-$100.mdx b/web/src/pages/github-campaign/_sections/2-3-$100.mdx new file mode 100644 index 00000000000..1c09b759a51 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-3-$100.mdx @@ -0,0 +1 @@ +- **Data-heavy applications**: Scale applications with distributed databases, handle enterprise-level systems, or power data-heavy industries like fintech or healthcare. \ No newline at end of file diff --git a/web/src/pages/github-campaign/_sections/2-4-$300.mdx b/web/src/pages/github-campaign/_sections/2-4-$300.mdx new file mode 100644 index 00000000000..08d28cba1ea --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-4-$300.mdx @@ -0,0 +1,2 @@ +- **Power large-scale enterprises**: Handle millions of users with high performance and reliability requirements. +- **Run mission-critical systems**: Support complex applications like fintech, gaming, or healthcare solutions. \ No newline at end of file diff --git a/web/src/pages/github-campaign/_sections/2-introduction.tsx b/web/src/pages/github-campaign/_sections/2-introduction.tsx new file mode 100644 index 00000000000..ef55fce90c6 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/2-introduction.tsx @@ -0,0 +1,316 @@ +import { Button, css, styled } from '@mui/material'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { TiDBCloudButton } from '@site/src/pages/github-campaign/_components/TiDBCloudButton'; +import { AnimatePresence, LayoutGroup, motion } from 'framer-motion'; +import React, { type ReactNode } from 'react'; +import { TabItem, Tabs, TabsContext, TabsList } from '../_components/Tabs'; + +// @ts-expect-error +import Content0 from './2-0-free.mdx'; + +// @ts-expect-error +import YouCan from './2-0-you-can.mdx'; +// @ts-expect-error +import Content1 from './2-1-$5.mdx'; +// @ts-expect-error +import Content2 from './2-2-$10.mdx'; +// @ts-expect-error +import Content3 from './2-3-$100.mdx'; +// @ts-expect-error +import Content4 from './2-4-$300.mdx'; + +export function IntroductionsSection () { + return ( +
+ + + With TiDB Serverless⚡️, you can: + + + {image1} +
+ + Try Free +
+
+ + With TiDB Serverless credits 💰 , you can: + + + + + {tabs.map(tab => {tab.title})} + + + + {image2} + + + {({ init, current }) => ( + + {tabs.map(tab => ( + (!init || current === tab.value) && ( + + {tab.content} + + ) + ))} + + )} + + + + + +
+
+ ); +} + +const tabs: Array<{ value: string, title: ReactNode, content: ReactNode }> = [ + { + value: 'free', + title: 'Free', + content: , + }, + { + value: '$5', + title: '$5 - $10', + content: , + }, + { + value: '$10', + title: '$10 - $100', + content: , + }, + { + value: '$100', + title: '$100 - $300', + content: , + }, + { + value: '$300', + title: '$300 - $1000', + content: , + }, +]; + +const Content = styled('div')<{ invert?: boolean }>` + margin-top: 36px; + + > article { + order: 2; + } + + > svg { + display: none; + } + + article { + font-size: 24px; + line-height: 41px; + + strong { + } + + a:not(.MuiButtonBase-root) { + color: #FFE895; + text-decoration: underline; + } + + .MuiButtonBase-root { + width: 100%; + } + } + + ${({ theme, invert }) => ({ + [theme.breakpoints.up('md')]: css` + margin-top: 80px; + + display: flex; + gap: 120px; + + > svg { + flex-shrink: 0; + display: block; + margin: 0 auto; + order: ${invert ? 3 : 1}; + } + + > article { + .MuiButtonBase-root { + width: max-content; + } + } + `, + })} +`; + +const image1 = + + + + + + + + + + + + + + + + + + + + + + + + + +; + +const image2 = + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +; diff --git a/web/src/pages/github-campaign/_sections/3-reviews.tsx b/web/src/pages/github-campaign/_sections/3-reviews.tsx new file mode 100644 index 00000000000..22b693bed69 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/3-reviews.tsx @@ -0,0 +1,212 @@ +import { Masonry } from '@mui/lab'; +import { styled } from '@mui/material'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import React, { type ReactNode } from 'react'; + +export function ReviewsSection () { + return ( +
+ + + Build with TiDB + + + {reviews.map((review, index) => ( + + + {review.avatar} + + + {review.username} + + + {review.bio} + + + {review.tag} + + + + + {review.content} + + + ))} + + +
+ ); +} + +const ReviewCard = styled('li')` + background-color: #141414; + border-radius: 20px; + padding: 24px; +`; + +const ReviewHeading = styled('div')` + display: flex; + gap: 24px; +`; + +const ReviewHeadingInfo = styled('div')` + font-size: 12px; + font-weight: 700; + line-height: 24px; +`; + +const ReviewHeadingUsername = styled('div')` + color: white; +`; + +const ReviewHeadingBio = styled('div')` + color: #C6C6C6; + +`; + +const ReviewHeadingTag = styled('div')` + margin-top: 4px; + width: max-content; + padding: 4px 10px; + border-radius: 20px; + background-color: var(--color2); + font-size: 12px; + font-weight: 700; + line-height: 1; + color: var(--color1); +`; + +const ReviewContent = styled('p')` + margin-top: 16px; + margin-bottom: 0; + font-size: 14px; + font-style: italic; + line-height: 32px; + font-weight: 400; + strong { + color: var(--color1); + } +`; + +type Review = { + avatar: ReactNode; + username: string; + bio: string; + tag: string; + color: string; + content: ReactNode; +}; + +const reviews: Review[] = [ + { + avatar: + + + + , + username: '@ Kentaro Kitagawa', + bio: 'Senior DBA, LINE Corporation', + tag: 'Internet', + color: '#3BBDFB', + content: <> + Scale-in and scale-out in a cluster configuration is also easy, and the ecosystem is very rich, with operation monitoring tools such as Grafana being able to be installed immediately with the installation command (TiUP). + , + }, + { + avatar: + + + + , + username: '@ Thomas Yu ', + bio: 'Founding Engineer, Chaintool', + tag: 'Web 3', + color: '#AA95FF', + content: <>TiDB Serverless is especially beneficial for experimental or early-stage features. It's cost-effective for startups, scalable, and development-friendly. , + }, + { + avatar: + + + + , + username: '@ Sky Dong', + bio: 'Founding Engineer, Chaintool', + tag: 'Web 3', + color: '#FFE790', + content: <>The ease and comfort of getting started are paramount for us, and from this perspective, TiDB Serverless perfectly addresses our needs. Also, the design concept of TiDB has a technical flair that developers find very appealing. , + }, + { + avatar: + + + + + , + username: '@ Boris Savelev', + bio: 'SRE Manager, Bolt', + tag: 'Logistics', + color: '#FF8888', + content: <>In the following years, we will definitely migrate more clusters from MySQL to TiDB, use TiCDC to set up multi-region clusters on AWS for failover, and try TiFlash for instant analytical queries. , + }, + { + avatar: + + + + , + username: '@ Henry Qin', + bio: 'Software Engineer', + tag: 'Fintech', + color: '#52CC7A', + content: <>TiDB's architecture, sort of a SQL layer on top of a key value store, was more scalable and more likely to cause fewer problems down the line. With TiDB, we don't need to worry about cross-charge transactions. That's huge. , + }, + { + avatar: + + + + + , + username: '@ Kaustav Chakravorty', + bio: 'Senior Architect, Flipkart', + tag: 'E-Commerce', + color: '#6296FF', + content: <>The NO.1 benefit is simplicity.
With TiDB, our applications can retain their SQL data model and the ACID guarantees. We don’t have to implement any kind of shareding logic, and the database management becomes simpler too., + }, + { + avatar: + + + + , + username: '@ Godwin', + bio: 'Project Owner of AI-Mon', + tag: 'AI App', + color: '#1CCFBC', + content: <>With TiDB Serverless, setting up a database is as easy as clicking a button. It handles analytics seamlessly, without the need for manual scaling. , + }, + { + avatar: + + + + , + username: '@ Eliotte', + bio: 'a high-school student, the lead developer', + tag: 'AI App', + color: '#DD7514', + content: <>We heavily utilized TiDB's serverless feature to power our backend.
This allowed us to scale our backend to handle thousands of requests per second effortlessly while keeping costs low, as we only pay for what we use. , + }, + { + avatar: + + + , + username: '@ Thomas Yu ', + bio: 'Founding Engineer, Chaintool', + tag: 'Web 3', + color: '#A9C941', + content: <>TiDB Serverless's automatic scaling capabilities allow us to swiftly scale up to meet performance demands and scale down during quieter periods for optimizing costs. , + }, +]; diff --git a/web/src/pages/github-campaign/_sections/4-contributions.tsx b/web/src/pages/github-campaign/_sections/4-contributions.tsx new file mode 100644 index 00000000000..bd43a491d60 --- /dev/null +++ b/web/src/pages/github-campaign/_sections/4-contributions.tsx @@ -0,0 +1,112 @@ +import { styled } from '@mui/material'; +import { getRepo } from '@site/src/api/core'; +import { useRemoteData } from '@site/src/components/RemoteCharts/hook'; +import { Section, SectionContent, SectionDescription, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { notNullish } from '@site/src/utils/value'; +import React from 'react'; +import useSWR from 'swr'; + +export function ContributionsSection () { + const { data } = useSWR(['pingcap/tidb', 'gh:repo'], getRepo); + const repoId = data?.id; + const { data: prOverview } = useRemoteData('analyze-repo-pr-overview', { repoId }, false, notNullish(repoId)); + + const items: Array<{ count: number | string, description: string, color: string }> = [ + { + count: data?.watchers ?? '-', + description: '✨ GitHub Stars', + color: '#73D9B4', + }, + { + count: prOverview?.data[0].pull_requests ?? '-', + description: '✏️ Pull Requests', + color: '#5DC1ED', + }, + { + count: 873, + description: '👫 Contributors', + color: '#5DC1ED', + }, + ]; + + return ( +
+ + + TiDB ❤️ Open Source + + + We take pride in our open-source roots. +
+ With the developer community, we align our product, to make sure it perfectly fits modern application developer's needs. +
+ + + + + + + + + + + + + + {items.map((item, index) => ( + + {item.count} + {item.description} + + ))} + + +
+
+ ); +} + +const Content = styled('div')` + padding: 36px; + display: flex; + background-color: #141414; + border-radius: 176px; + max-width: 1440px; + margin: 0 auto; + align-items: center; + + > svg { + flex-shrink: 0; + } +`; + +const Items = styled('div')` + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + flex-wrap: wrap; + gap: 24px; +`; + +const Item = styled('div')` + display: flex; + flex-direction: column; + align-items: center; +`; + +const ItemTitle = styled('div')` + font-size: 56px; + line-height: 84px; + font-weight: 700; + color: white; +`; + +const ItemDescription = styled('div')` + color: var(--color1); + font-size: 24px; + line-height: 36px; + font-weight: 500; +`; diff --git a/web/src/pages/github-campaign/_sections/5-faq.mdx b/web/src/pages/github-campaign/_sections/5-faq.mdx new file mode 100644 index 00000000000..3f27005289e --- /dev/null +++ b/web/src/pages/github-campaign/_sections/5-faq.mdx @@ -0,0 +1,8 @@ +### Why would TiDB commite to the open source community? +TiDB believes that open source fosters innovation, collaboration, and community-driven development. By actively contributing to and supporting open-source projects, TiDB aims to create a vibrant ecosystem that benefits all participants. + +### How do I claim my credits? +Once you’ve logged in with your GitHub Username and your credits have been calculated, you can redeem them by logging into your OssInsight or TiDB Cloud account. The credits will be automatically applied to your account. Make sure you use the the same Github account for both OSSInsight SSO login and TiDB Cloud SSO login. + +### How can I contact support if I face issues redeeming my credits? +You can reach out to our support team through discord diff --git a/web/src/pages/github-campaign/_sections/5-faq.tsx b/web/src/pages/github-campaign/_sections/5-faq.tsx new file mode 100644 index 00000000000..af5669c413e --- /dev/null +++ b/web/src/pages/github-campaign/_sections/5-faq.tsx @@ -0,0 +1,17 @@ +import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import React from 'react'; +// @ts-expect-error +import Faq from './5-faq.mdx'; + +export function FaqSection () { + return ( +
+ + + FAQ + + + +
+ ); +} diff --git a/web/src/pages/github-campaign/_sections/6-legal.mdx b/web/src/pages/github-campaign/_sections/6-legal.mdx new file mode 100644 index 00000000000..17d4fd8da3c --- /dev/null +++ b/web/src/pages/github-campaign/_sections/6-legal.mdx @@ -0,0 +1,26 @@ +### General Terms +By participating in this campaign, you agree to these terms. PingCAP can change or end the campaign at any time without notice. Follow all rules, laws, and GitHub's terms of service. + +### Who Can Participate +The campaign is open to anyone, except PingCAP employees, contractors, affiliates, and their immediate family members. + +### Contributions and Rights +All contributions to the TiDB project must comply with our Contributor License Agreement (CLA) (https://cla.pingcap.net/pingcap/tidb). By contributing, you give PingCAP permission to use, modify, and share your work. + +### Rewards +TiDB Cloud credits are valid for 12 months and cannot be transferred, refunded, or exchanged for cash. PingCAP may disqualify participants who violate these terms. + +### Privacy +By participating, you agree that PingCAP can use your personal data according to our Privacy Policy (https://www.pingcap.com/privacy-policy/). Your data will only be used to run this campaign and won't be shared without your consent, except as required by law. + +### No Guarantees +PingCAP does not guarantee the availability or operation of the TiDB software, the TiDB Cloud platform, or the credits offered in this campaign. Use them at your own risk. + +### Limitation of Liability +PingCAP is not responsible for any losses or damages that may happen from participating in this campaign or using the TiDB Cloud credits. + +### Legal Stuff +This campaign follows the laws of California. Any disputes will be resolved through arbitration in San Mateo, California, USA. + +### Contact Us +For questions or concerns, please contact at https://www.pingcap.com/contact-us/. diff --git a/web/src/pages/github-campaign/_sections/6-legal.tsx b/web/src/pages/github-campaign/_sections/6-legal.tsx new file mode 100644 index 00000000000..ebb3eb20b9b --- /dev/null +++ b/web/src/pages/github-campaign/_sections/6-legal.tsx @@ -0,0 +1,20 @@ +import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import React from 'react'; +import { Collapse } from '../_components/Collapse'; +// @ts-expect-error +import Legal from './6-legal.mdx'; + +export function LegalSection () { + return ( +
+ + + Legal Statement + + + + + +
+ ); +} diff --git a/web/src/pages/github-campaign/index.tsx b/web/src/pages/github-campaign/index.tsx new file mode 100644 index 00000000000..23ea3b63055 --- /dev/null +++ b/web/src/pages/github-campaign/index.tsx @@ -0,0 +1,27 @@ +import { HeadingSection } from '@site/src/pages/github-campaign/_sections/0-heading'; +import { HowItWorks } from '@site/src/pages/github-campaign/_sections/1-how-it-works'; +import { IntroductionsSection } from '@site/src/pages/github-campaign/_sections/2-introduction'; +import { ReviewsSection } from '@site/src/pages/github-campaign/_sections/3-reviews'; +import { ContributionsSection } from '@site/src/pages/github-campaign/_sections/4-contributions'; +import { FaqSection } from '@site/src/pages/github-campaign/_sections/5-faq'; +import { LegalSection } from '@site/src/pages/github-campaign/_sections/6-legal'; +import CustomPage from '@site/src/theme/CustomPage'; +import React from 'react'; + +export default function Page () { + return ( + + + + + + + + + + ); +} From c7792e235f5098c1f1058e6d3e49a4689e1851a0 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 11:29:35 +0800 Subject: [PATCH 09/30] frontend: update github campaign page style --- .../github-campaign/_components/Heading.tsx | 46 +++++++++-- .../github-campaign/_components/Tabs.tsx | 8 +- .../github-campaign/_sections/0-heading.tsx | 27 ++++++- .../_sections/2-introduction.tsx | 10 +-- .../_sections/4-contributions.tsx | 77 ++++++++++++++----- .../pages/github-campaign/_sections/5-faq.mdx | 2 +- 6 files changed, 136 insertions(+), 34 deletions(-) diff --git a/web/src/pages/github-campaign/_components/Heading.tsx b/web/src/pages/github-campaign/_components/Heading.tsx index dcba51f8fa9..df76b005935 100644 --- a/web/src/pages/github-campaign/_components/Heading.tsx +++ b/web/src/pages/github-campaign/_components/Heading.tsx @@ -2,13 +2,10 @@ import { css, styled, Unstable_Grid2 as Grid } from '@mui/material'; export const HeadingContainer = styled('div')` background-color: #212122; + padding: 40px 12px; ${({ theme }) => ({ [theme.breakpoints.up('md')]: css` - height: calc(100vh - 60px); - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; + padding: 120px 0; `, })} `; @@ -16,6 +13,13 @@ export const HeadingContainer = styled('div')` export const Heading = styled(Grid)` max-width: 1280px; margin: 0 auto; + display: none; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: flex; + `, + })} `; export const HeadingLeft = styled(Grid)` @@ -113,3 +117,35 @@ export const HeadingSpacing = styled('span')` `, })} `; + +export const MobileHeading = styled('div')` + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: none; + `, + })} + h1 { + font-size: 50px; + line-height: 61.12px; + font-weight: 900; + color: #FDE494; + + span { + color: white; + } + } + + p { + color: #7C7C7C; + font-size: 16px; + line-height: 27px; + font-weight: 400; + } + + p.action-prompt { + font-size: 20px; + line-height: 35px; + font-weight: 400; + color: #FFFFFF; + } +`; diff --git a/web/src/pages/github-campaign/_components/Tabs.tsx b/web/src/pages/github-campaign/_components/Tabs.tsx index e1f5fe18578..efbc5e4015e 100644 --- a/web/src/pages/github-campaign/_components/Tabs.tsx +++ b/web/src/pages/github-campaign/_components/Tabs.tsx @@ -26,16 +26,16 @@ export const TabsList = styled('ul')` margin-bottom: 24px; flex-wrap: wrap; padding: 0 24px; - gap: 12px; + gap: 32px; `; export function TabItem ({ value, children }: { value: string, children: ReactNode }) { const { current, setCurrent } = useContext(TabsContext); return ( - - {(value === current) && } - diff --git a/web/src/pages/github-campaign/_sections/0-heading.tsx b/web/src/pages/github-campaign/_sections/0-heading.tsx index 8fef189d447..f3ad96e43ce 100644 --- a/web/src/pages/github-campaign/_sections/0-heading.tsx +++ b/web/src/pages/github-campaign/_sections/0-heading.tsx @@ -1,8 +1,9 @@ // noinspection CssUnresolvedCustomProperty +import { ArrowCircleRightOutlined } from '@mui/icons-material'; import { Button } from '@mui/material'; import { ClaimForm } from '@site/src/pages/github-campaign/_components/ClaimForm'; -import { Heading, HeadingContainer, HeadingDescription, HeadingLeft, HeadingLogos, HeadingPrompt, HeadingRight, HeadingSpacing, HeadingTitle, HeadingTitlePrefix } from '@site/src/pages/github-campaign/_components/Heading'; +import { Heading, HeadingContainer, HeadingDescription, HeadingLeft, HeadingLogos, HeadingPrompt, HeadingRight, HeadingSpacing, HeadingTitle, HeadingTitlePrefix, MobileHeading } from '@site/src/pages/github-campaign/_components/Heading'; import { useResponsiveAuth0 } from '@site/src/theme/NavbarItem/useResponsiveAuth0'; import React, { useState } from 'react'; @@ -73,9 +74,33 @@ function PrimaryHeading ({ loading, onClickAction }: { loading: boolean, onClick }} > Claim Your Credits Now + + +

Free Database Credits for Open Source Heroes

+

+ TiDB loves open-source. We contribute code, sponsor projects, and appreciate developers who do so. +
+ As a token of our appreciation, we're offering up to $1000 free TiDB Serverless credits to fuel open-source hero's next big idea. +

+

+ Log in with GitHub account to claim your credits. +

+ +
); } diff --git a/web/src/pages/github-campaign/_sections/2-introduction.tsx b/web/src/pages/github-campaign/_sections/2-introduction.tsx index ef55fce90c6..196fa355bca 100644 --- a/web/src/pages/github-campaign/_sections/2-introduction.tsx +++ b/web/src/pages/github-campaign/_sections/2-introduction.tsx @@ -44,7 +44,7 @@ export function IntroductionsSection () { {image2} - + {({ init, current }) => ( @@ -88,22 +88,22 @@ const tabs: Array<{ value: string, title: ReactNode, content: ReactNode }> = [ }, { value: '$5', - title: '$5 - $10', + title: '$5-10', content: , }, { value: '$10', - title: '$10 - $100', + title: '$10-100', content: , }, { value: '$100', - title: '$100 - $300', + title: '$100-300', content: , }, { value: '$300', - title: '$300 - $1000', + title: '$300-1000', content: , }, ]; diff --git a/web/src/pages/github-campaign/_sections/4-contributions.tsx b/web/src/pages/github-campaign/_sections/4-contributions.tsx index bd43a491d60..8acae77b747 100644 --- a/web/src/pages/github-campaign/_sections/4-contributions.tsx +++ b/web/src/pages/github-campaign/_sections/4-contributions.tsx @@ -1,4 +1,4 @@ -import { styled } from '@mui/material'; +import { css, styled } from '@mui/material'; import { getRepo } from '@site/src/api/core'; import { useRemoteData } from '@site/src/components/RemoteCharts/hook'; import { Section, SectionContent, SectionDescription, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; @@ -41,19 +41,9 @@ export function ContributionsSection () { With the developer community, we align our product, to make sure it perfectly fits modern application developer's needs. + {githubIcon} - - - - - - - - - - + {githubIcon} {items.map((item, index) => ( @@ -68,17 +58,40 @@ export function ContributionsSection () { ); } +const Icon = styled('div')` + display: block; + margin-top: 120px; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: none; + `, + })} + + > svg { + display: block; + margin: auto; + } +`; + const Content = styled('div')` padding: 36px; display: flex; background-color: #141414; border-radius: 176px; max-width: 1440px; - margin: 0 auto; align-items: center; + margin: 40px auto 0; > svg { flex-shrink: 0; + display: none; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + display: block; + `, + })} } `; @@ -98,15 +111,43 @@ const Item = styled('div')` `; const ItemTitle = styled('div')` - font-size: 56px; - line-height: 84px; + font-size: 46px; + line-height: 69px; font-weight: 700; color: white; + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + font-size: 56px; + line-height: 84px; + `, + })} `; const ItemDescription = styled('div')` color: var(--color1); - font-size: 24px; - line-height: 36px; + font-size: 20px; + line-height: 30px; font-weight: 500; + + + ${({ theme }) => ({ + [theme.breakpoints.up('md')]: css` + font-size: 24px; + line-height: 36px; + `, + })} `; + +const githubIcon = + + + + + + + + +; diff --git a/web/src/pages/github-campaign/_sections/5-faq.mdx b/web/src/pages/github-campaign/_sections/5-faq.mdx index 3f27005289e..3120cbceee2 100644 --- a/web/src/pages/github-campaign/_sections/5-faq.mdx +++ b/web/src/pages/github-campaign/_sections/5-faq.mdx @@ -5,4 +5,4 @@ TiDB believes that open source fosters innovation, collaboration, and community- Once you’ve logged in with your GitHub Username and your credits have been calculated, you can redeem them by logging into your OssInsight or TiDB Cloud account. The credits will be automatically applied to your account. Make sure you use the the same Github account for both OSSInsight SSO login and TiDB Cloud SSO login. ### How can I contact support if I face issues redeeming my credits? -You can reach out to our support team through discord +You can reach out to our support team through ossinsight@pingcap.com From 796a3fde6f1712b02378bf9ce0ec8cb9a5e95ee6 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 12:27:19 +0800 Subject: [PATCH 10/30] frontend: move github campaign page --- web/src/pages/github-campaign/index.tsx | 27 ------------------ .../_components/ClaimForm.tsx | 2 +- .../_components/Collapse.tsx | 0 .../_components/Heading.tsx | 0 .../_components/Section.tsx | 0 .../_components/Tabs.tsx | 0 .../_components/TiDBCloudButton.tsx | 0 .../_components/ossi-logo.png | Bin .../_components/tidb-logo.png | Bin .../_sections/0-heading.tsx | 4 +-- .../_sections/1-how-it-works.tsx | 2 +- .../_sections/2-0-free.mdx | 0 .../_sections/2-0-you-can.mdx | 0 .../_sections/2-1-$5.mdx | 0 .../_sections/2-2-$10.mdx | 0 .../_sections/2-3-$100.mdx | 0 .../_sections/2-4-$300.mdx | 0 .../_sections/2-introduction.tsx | 4 +-- .../_sections/3-reviews.tsx | 2 +- .../_sections/4-contributions.tsx | 2 +- .../_sections/5-faq.mdx | 0 .../_sections/5-faq.tsx | 2 +- .../_sections/6-legal.mdx | 0 .../_sections/6-legal.tsx | 2 +- web/src/pages/open-source-heroes/index.tsx | 27 ++++++++++++++++++ 25 files changed, 37 insertions(+), 37 deletions(-) delete mode 100644 web/src/pages/github-campaign/index.tsx rename web/src/pages/{github-campaign => open-source-heroes}/_components/ClaimForm.tsx (99%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/Collapse.tsx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/Heading.tsx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/Section.tsx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/Tabs.tsx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/TiDBCloudButton.tsx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/ossi-logo.png (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_components/tidb-logo.png (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/0-heading.tsx (96%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/1-how-it-works.tsx (98%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-0-free.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-0-you-can.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-1-$5.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-2-$10.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-3-$100.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-4-$300.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/2-introduction.tsx (99%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/3-reviews.tsx (99%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/4-contributions.tsx (98%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/5-faq.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/5-faq.tsx (87%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/6-legal.mdx (100%) rename web/src/pages/{github-campaign => open-source-heroes}/_sections/6-legal.tsx (90%) create mode 100644 web/src/pages/open-source-heroes/index.tsx diff --git a/web/src/pages/github-campaign/index.tsx b/web/src/pages/github-campaign/index.tsx deleted file mode 100644 index 23ea3b63055..00000000000 --- a/web/src/pages/github-campaign/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { HeadingSection } from '@site/src/pages/github-campaign/_sections/0-heading'; -import { HowItWorks } from '@site/src/pages/github-campaign/_sections/1-how-it-works'; -import { IntroductionsSection } from '@site/src/pages/github-campaign/_sections/2-introduction'; -import { ReviewsSection } from '@site/src/pages/github-campaign/_sections/3-reviews'; -import { ContributionsSection } from '@site/src/pages/github-campaign/_sections/4-contributions'; -import { FaqSection } from '@site/src/pages/github-campaign/_sections/5-faq'; -import { LegalSection } from '@site/src/pages/github-campaign/_sections/6-legal'; -import CustomPage from '@site/src/theme/CustomPage'; -import React from 'react'; - -export default function Page () { - return ( - - - - - - - - - - ); -} diff --git a/web/src/pages/github-campaign/_components/ClaimForm.tsx b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx similarity index 99% rename from web/src/pages/github-campaign/_components/ClaimForm.tsx rename to web/src/pages/open-source-heroes/_components/ClaimForm.tsx index dc1117d1e73..87dbd043e6b 100644 --- a/web/src/pages/github-campaign/_components/ClaimForm.tsx +++ b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx @@ -1,6 +1,6 @@ import { Box, Button, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, Skeleton, styled } from '@mui/material'; import { giftClientWithoutCache } from '@site/src/api/client'; -import { TiDBCloudButton } from '@site/src/pages/github-campaign/_components/TiDBCloudButton'; +import { TiDBCloudButton } from '@site/src/pages/open-source-heroes/_components/TiDBCloudButton'; import { useResponsiveAuth0 } from '@site/src/theme/NavbarItem/useResponsiveAuth0'; import { getErrorMessage } from '@site/src/utils/error'; import React, { type ReactNode, useEffect, useState } from 'react'; diff --git a/web/src/pages/github-campaign/_components/Collapse.tsx b/web/src/pages/open-source-heroes/_components/Collapse.tsx similarity index 100% rename from web/src/pages/github-campaign/_components/Collapse.tsx rename to web/src/pages/open-source-heroes/_components/Collapse.tsx diff --git a/web/src/pages/github-campaign/_components/Heading.tsx b/web/src/pages/open-source-heroes/_components/Heading.tsx similarity index 100% rename from web/src/pages/github-campaign/_components/Heading.tsx rename to web/src/pages/open-source-heroes/_components/Heading.tsx diff --git a/web/src/pages/github-campaign/_components/Section.tsx b/web/src/pages/open-source-heroes/_components/Section.tsx similarity index 100% rename from web/src/pages/github-campaign/_components/Section.tsx rename to web/src/pages/open-source-heroes/_components/Section.tsx diff --git a/web/src/pages/github-campaign/_components/Tabs.tsx b/web/src/pages/open-source-heroes/_components/Tabs.tsx similarity index 100% rename from web/src/pages/github-campaign/_components/Tabs.tsx rename to web/src/pages/open-source-heroes/_components/Tabs.tsx diff --git a/web/src/pages/github-campaign/_components/TiDBCloudButton.tsx b/web/src/pages/open-source-heroes/_components/TiDBCloudButton.tsx similarity index 100% rename from web/src/pages/github-campaign/_components/TiDBCloudButton.tsx rename to web/src/pages/open-source-heroes/_components/TiDBCloudButton.tsx diff --git a/web/src/pages/github-campaign/_components/ossi-logo.png b/web/src/pages/open-source-heroes/_components/ossi-logo.png similarity index 100% rename from web/src/pages/github-campaign/_components/ossi-logo.png rename to web/src/pages/open-source-heroes/_components/ossi-logo.png diff --git a/web/src/pages/github-campaign/_components/tidb-logo.png b/web/src/pages/open-source-heroes/_components/tidb-logo.png similarity index 100% rename from web/src/pages/github-campaign/_components/tidb-logo.png rename to web/src/pages/open-source-heroes/_components/tidb-logo.png diff --git a/web/src/pages/github-campaign/_sections/0-heading.tsx b/web/src/pages/open-source-heroes/_sections/0-heading.tsx similarity index 96% rename from web/src/pages/github-campaign/_sections/0-heading.tsx rename to web/src/pages/open-source-heroes/_sections/0-heading.tsx index f3ad96e43ce..cfb366e5d2d 100644 --- a/web/src/pages/github-campaign/_sections/0-heading.tsx +++ b/web/src/pages/open-source-heroes/_sections/0-heading.tsx @@ -2,8 +2,8 @@ import { ArrowCircleRightOutlined } from '@mui/icons-material'; import { Button } from '@mui/material'; -import { ClaimForm } from '@site/src/pages/github-campaign/_components/ClaimForm'; -import { Heading, HeadingContainer, HeadingDescription, HeadingLeft, HeadingLogos, HeadingPrompt, HeadingRight, HeadingSpacing, HeadingTitle, HeadingTitlePrefix, MobileHeading } from '@site/src/pages/github-campaign/_components/Heading'; +import { ClaimForm } from '@site/src/pages/open-source-heroes/_components/ClaimForm'; +import { Heading, HeadingContainer, HeadingDescription, HeadingLeft, HeadingLogos, HeadingPrompt, HeadingRight, HeadingSpacing, HeadingTitle, HeadingTitlePrefix, MobileHeading } from '@site/src/pages/open-source-heroes/_components/Heading'; import { useResponsiveAuth0 } from '@site/src/theme/NavbarItem/useResponsiveAuth0'; import React, { useState } from 'react'; diff --git a/web/src/pages/github-campaign/_sections/1-how-it-works.tsx b/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx similarity index 98% rename from web/src/pages/github-campaign/_sections/1-how-it-works.tsx rename to web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx index 2ec870ef2c2..f8f23c1dda7 100644 --- a/web/src/pages/github-campaign/_sections/1-how-it-works.tsx +++ b/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx @@ -1,5 +1,5 @@ import { css, styled } from '@mui/material'; -import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; import { motion } from 'framer-motion'; import React, { Fragment } from 'react'; diff --git a/web/src/pages/github-campaign/_sections/2-0-free.mdx b/web/src/pages/open-source-heroes/_sections/2-0-free.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-0-free.mdx rename to web/src/pages/open-source-heroes/_sections/2-0-free.mdx diff --git a/web/src/pages/github-campaign/_sections/2-0-you-can.mdx b/web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-0-you-can.mdx rename to web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx diff --git a/web/src/pages/github-campaign/_sections/2-1-$5.mdx b/web/src/pages/open-source-heroes/_sections/2-1-$5.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-1-$5.mdx rename to web/src/pages/open-source-heroes/_sections/2-1-$5.mdx diff --git a/web/src/pages/github-campaign/_sections/2-2-$10.mdx b/web/src/pages/open-source-heroes/_sections/2-2-$10.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-2-$10.mdx rename to web/src/pages/open-source-heroes/_sections/2-2-$10.mdx diff --git a/web/src/pages/github-campaign/_sections/2-3-$100.mdx b/web/src/pages/open-source-heroes/_sections/2-3-$100.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-3-$100.mdx rename to web/src/pages/open-source-heroes/_sections/2-3-$100.mdx diff --git a/web/src/pages/github-campaign/_sections/2-4-$300.mdx b/web/src/pages/open-source-heroes/_sections/2-4-$300.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/2-4-$300.mdx rename to web/src/pages/open-source-heroes/_sections/2-4-$300.mdx diff --git a/web/src/pages/github-campaign/_sections/2-introduction.tsx b/web/src/pages/open-source-heroes/_sections/2-introduction.tsx similarity index 99% rename from web/src/pages/github-campaign/_sections/2-introduction.tsx rename to web/src/pages/open-source-heroes/_sections/2-introduction.tsx index 196fa355bca..d02aa25580f 100644 --- a/web/src/pages/github-campaign/_sections/2-introduction.tsx +++ b/web/src/pages/open-source-heroes/_sections/2-introduction.tsx @@ -1,6 +1,6 @@ import { Button, css, styled } from '@mui/material'; -import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; -import { TiDBCloudButton } from '@site/src/pages/github-campaign/_components/TiDBCloudButton'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; +import { TiDBCloudButton } from '@site/src/pages/open-source-heroes/_components/TiDBCloudButton'; import { AnimatePresence, LayoutGroup, motion } from 'framer-motion'; import React, { type ReactNode } from 'react'; import { TabItem, Tabs, TabsContext, TabsList } from '../_components/Tabs'; diff --git a/web/src/pages/github-campaign/_sections/3-reviews.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews.tsx similarity index 99% rename from web/src/pages/github-campaign/_sections/3-reviews.tsx rename to web/src/pages/open-source-heroes/_sections/3-reviews.tsx index 22b693bed69..e41e6f1f0f8 100644 --- a/web/src/pages/github-campaign/_sections/3-reviews.tsx +++ b/web/src/pages/open-source-heroes/_sections/3-reviews.tsx @@ -1,6 +1,6 @@ import { Masonry } from '@mui/lab'; import { styled } from '@mui/material'; -import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; import React, { type ReactNode } from 'react'; export function ReviewsSection () { diff --git a/web/src/pages/github-campaign/_sections/4-contributions.tsx b/web/src/pages/open-source-heroes/_sections/4-contributions.tsx similarity index 98% rename from web/src/pages/github-campaign/_sections/4-contributions.tsx rename to web/src/pages/open-source-heroes/_sections/4-contributions.tsx index 8acae77b747..7e679d74440 100644 --- a/web/src/pages/github-campaign/_sections/4-contributions.tsx +++ b/web/src/pages/open-source-heroes/_sections/4-contributions.tsx @@ -1,7 +1,7 @@ import { css, styled } from '@mui/material'; import { getRepo } from '@site/src/api/core'; import { useRemoteData } from '@site/src/components/RemoteCharts/hook'; -import { Section, SectionContent, SectionDescription, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { Section, SectionContent, SectionDescription, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; import { notNullish } from '@site/src/utils/value'; import React from 'react'; import useSWR from 'swr'; diff --git a/web/src/pages/github-campaign/_sections/5-faq.mdx b/web/src/pages/open-source-heroes/_sections/5-faq.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/5-faq.mdx rename to web/src/pages/open-source-heroes/_sections/5-faq.mdx diff --git a/web/src/pages/github-campaign/_sections/5-faq.tsx b/web/src/pages/open-source-heroes/_sections/5-faq.tsx similarity index 87% rename from web/src/pages/github-campaign/_sections/5-faq.tsx rename to web/src/pages/open-source-heroes/_sections/5-faq.tsx index af5669c413e..9649bddbe4b 100644 --- a/web/src/pages/github-campaign/_sections/5-faq.tsx +++ b/web/src/pages/open-source-heroes/_sections/5-faq.tsx @@ -1,4 +1,4 @@ -import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; import React from 'react'; // @ts-expect-error import Faq from './5-faq.mdx'; diff --git a/web/src/pages/github-campaign/_sections/6-legal.mdx b/web/src/pages/open-source-heroes/_sections/6-legal.mdx similarity index 100% rename from web/src/pages/github-campaign/_sections/6-legal.mdx rename to web/src/pages/open-source-heroes/_sections/6-legal.mdx diff --git a/web/src/pages/github-campaign/_sections/6-legal.tsx b/web/src/pages/open-source-heroes/_sections/6-legal.tsx similarity index 90% rename from web/src/pages/github-campaign/_sections/6-legal.tsx rename to web/src/pages/open-source-heroes/_sections/6-legal.tsx index ebb3eb20b9b..e7d4e487327 100644 --- a/web/src/pages/github-campaign/_sections/6-legal.tsx +++ b/web/src/pages/open-source-heroes/_sections/6-legal.tsx @@ -1,4 +1,4 @@ -import { Section, SectionContent, SectionTitle } from '@site/src/pages/github-campaign/_components/Section'; +import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; import React from 'react'; import { Collapse } from '../_components/Collapse'; // @ts-expect-error diff --git a/web/src/pages/open-source-heroes/index.tsx b/web/src/pages/open-source-heroes/index.tsx new file mode 100644 index 00000000000..872acfe6606 --- /dev/null +++ b/web/src/pages/open-source-heroes/index.tsx @@ -0,0 +1,27 @@ +import { HeadingSection } from '@site/src/pages/open-source-heroes/_sections/0-heading'; +import { HowItWorks } from '@site/src/pages/open-source-heroes/_sections/1-how-it-works'; +import { IntroductionsSection } from '@site/src/pages/open-source-heroes/_sections/2-introduction'; +import { ReviewsSection } from '@site/src/pages/open-source-heroes/_sections/3-reviews'; +import { ContributionsSection } from '@site/src/pages/open-source-heroes/_sections/4-contributions'; +import { FaqSection } from '@site/src/pages/open-source-heroes/_sections/5-faq'; +import { LegalSection } from '@site/src/pages/open-source-heroes/_sections/6-legal'; +import CustomPage from '@site/src/theme/CustomPage'; +import React from 'react'; + +export default function Page () { + return ( + + + + + + + + + + ); +} From 01fb4a814f16ae4255dfdece568ed9b3ac0fdb7d Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 12:29:37 +0800 Subject: [PATCH 11/30] frontend: rephase --- web/src/pages/open-source-heroes/_sections/0-heading.tsx | 2 +- web/src/pages/open-source-heroes/_sections/6-legal.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/pages/open-source-heroes/_sections/0-heading.tsx b/web/src/pages/open-source-heroes/_sections/0-heading.tsx index cfb366e5d2d..06bd2ed148e 100644 --- a/web/src/pages/open-source-heroes/_sections/0-heading.tsx +++ b/web/src/pages/open-source-heroes/_sections/0-heading.tsx @@ -48,7 +48,7 @@ function PrimaryHeading ({ loading, onClickAction }: { loading: boolean, onClick TiDB Serverless Credits for Open Source Heroes - TiDB loves open-source. We contribute code, sponsor projects arround open source community, such as OssInsight, and deeply appreciate developers who actively contribute to the communityhave. + TiDB loves open-source. We contribute code, sponsor projects around open source community, such as OssInsight, and deeply appreciate developers who actively contribute to the community.
As a token of our appreciation, we're offering up to $1000 in free TiDB Serverless credits to fuel open-source hero's next big idea.
diff --git a/web/src/pages/open-source-heroes/_sections/6-legal.mdx b/web/src/pages/open-source-heroes/_sections/6-legal.mdx index 17d4fd8da3c..5078e6e0517 100644 --- a/web/src/pages/open-source-heroes/_sections/6-legal.mdx +++ b/web/src/pages/open-source-heroes/_sections/6-legal.mdx @@ -8,7 +8,7 @@ The campaign is open to anyone, except PingCAP employees, contractors, affiliate All contributions to the TiDB project must comply with our Contributor License Agreement (CLA) (https://cla.pingcap.net/pingcap/tidb). By contributing, you give PingCAP permission to use, modify, and share your work. ### Rewards -TiDB Cloud credits are valid for 12 months and cannot be transferred, refunded, or exchanged for cash. PingCAP may disqualify participants who violate these terms. +TiDB Cloud credits are valid for 180 days and cannot be transferred, refunded, or exchanged for cash. PingCAP may disqualify participants who violate these terms. ### Privacy By participating, you agree that PingCAP can use your personal data according to our Privacy Policy (https://www.pingcap.com/privacy-policy/). Your data will only be used to run this campaign and won't be shared without your consent, except as required by law. From d0dccda30e32c9078ce610471f485e2588077f40 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 16:08:00 +0800 Subject: [PATCH 12/30] frontend: update github campaign page content --- web/.eslintignore | 1 + web/docs/api/sidebar.js | 2 +- web/package-lock.json | 716 +++++++++++------- web/package.json | 2 +- .../components/CompareHeader/RepoSelector.tsx | 3 +- web/src/components/GeneralSearch/index.tsx | 68 +- web/src/components/TileSelect/index.tsx | 2 +- .../explore/_components/ExploreGlobalAds.tsx | 2 +- .../_sections/2-0-you-can.mdx | 2 +- .../_sections/3-reviews.tsx | 174 +---- .../_sections/3-reviews/0.mdx | 1 + .../_sections/3-reviews/0.tsx | 14 + .../_sections/3-reviews/1.mdx | 1 + .../_sections/3-reviews/1.tsx | 15 + .../_sections/3-reviews/2.mdx | 1 + .../_sections/3-reviews/2.tsx | 14 + .../_sections/3-reviews/3.mdx | 1 + .../_sections/3-reviews/3.tsx | 14 + .../_sections/3-reviews/4.mdx | 1 + .../_sections/3-reviews/4.tsx | 14 + .../_sections/3-reviews/5.mdx | 1 + .../_sections/3-reviews/5.tsx | 14 + .../_sections/3-reviews/6.mdx | 1 + .../_sections/3-reviews/6.tsx | 15 + .../_sections/3-reviews/7.mdx | 1 + .../_sections/3-reviews/7.tsx | 14 + .../_sections/3-reviews/8.mdx | 1 + .../_sections/3-reviews/8.tsx | 13 + .../open-source-heroes/_sections/5-faq.mdx | 2 +- .../open-source-heroes/_sections/6-legal.mdx | 4 +- 30 files changed, 667 insertions(+), 447 deletions(-) create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/0.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/0.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/1.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/1.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/2.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/2.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/3.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/3.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/4.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/4.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/5.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/5.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/6.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/6.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/7.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/7.tsx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/8.mdx create mode 100644 web/src/pages/open-source-heroes/_sections/3-reviews/8.tsx diff --git a/web/.eslintignore b/web/.eslintignore index 620876f4b37..7f123216420 100644 --- a/web/.eslintignore +++ b/web/.eslintignore @@ -9,3 +9,4 @@ plugins/**/*.d.ts # Special files src/api/_todo_hardcoded.ts src/client/linkedin.js +docs/api/sidebar.js diff --git a/web/docs/api/sidebar.js b/web/docs/api/sidebar.js index 5b3fa08cbe6..0b7d010d23d 100644 --- a/web/docs/api/sidebar.js +++ b/web/docs/api/sidebar.js @@ -1 +1 @@ -module.exports = [{ type: 'doc', id: 'api/ossinsight-public-api' }, { type: 'category', label: 'Collections', collapsed: false, items: [{ type: 'doc', id: 'api/list-collections', label: 'List collections', className: 'api-method get' }, { type: 'doc', id: 'api/list-hot-collections', label: 'List hot collections', className: 'api-method get' }, { type: 'doc', id: 'api/collection-repo-ranking-by-issues', label: 'Repository ranking by issues', className: 'api-method get' }, { type: 'doc', id: 'api/collection-repo-ranking-by-prs', label: 'Repository ranking by prs', className: 'api-method get' }, { type: 'doc', id: 'api/collection-repo-ranking-by-stars', label: 'Repository ranking by stars', className: 'api-method get' }, { type: 'doc', id: 'api/list-repos-of-collection', label: 'List collection repositories', className: 'api-method get' }] }, { type: 'category', label: 'Trends', collapsed: false, items: [{ type: 'doc', id: 'api/list-trending-repos', label: 'List trending repos', className: 'api-method get' }] }, { type: 'category', label: 'Issue Creators', collapsed: false, items: [{ type: 'doc', id: 'api/list-issue-creators', label: 'List issue creators', className: 'api-method get' }, { type: 'doc', id: 'api/list-countries-of-issue-creators', label: 'List countries/regions of issue creators', className: 'api-method get' }, { type: 'doc', id: 'api/issue-creators-history', label: 'Issue creators history', className: 'api-method get' }, { type: 'doc', id: 'api/list-organizations-of-issue-creators', label: 'List organizations of stargazers', className: 'api-method get' }] }, { type: 'category', label: 'Pull Request Creators', collapsed: false, items: [{ type: 'doc', id: 'api/list-pull-request-creators', label: 'List pull request creators', className: 'api-method get' }, { type: 'doc', id: 'api/list-countries-of-pr-creators', label: 'List countries/regions of PR creators', className: 'api-method get' }, { type: 'doc', id: 'api/pull-request-creators-history', label: 'Pull request creators history', className: 'api-method get' }, { type: 'doc', id: 'api/list-organizations-of-pr-creators', label: 'List organizations of PR creators', className: 'api-method get' }] }, { type: 'category', label: 'Stargazers', collapsed: false, items: [{ type: 'doc', id: 'api/list-countries-of-stargazers', label: 'List countries/regions of stargazers', className: 'api-method get' }, { type: 'doc', id: 'api/stargazers-history', label: 'Stargazers history', className: 'api-method get' }, { type: 'doc', id: 'api/list-organizations-of-stargazers', label: 'List organizations of stargazers', className: 'api-method get' }] }]; +module.exports = [{"type":"doc","id":"api/ossinsight-public-api"},{"type":"category","label":"Collections","collapsed":false,"items":[{"type":"doc","id":"api/list-collections","label":"List collections","className":"api-method get"},{"type":"doc","id":"api/list-hot-collections","label":"List hot collections","className":"api-method get"},{"type":"doc","id":"api/collection-repo-ranking-by-issues","label":"Repository ranking by issues","className":"api-method get"},{"type":"doc","id":"api/collection-repo-ranking-by-prs","label":"Repository ranking by prs","className":"api-method get"},{"type":"doc","id":"api/collection-repo-ranking-by-stars","label":"Repository ranking by stars","className":"api-method get"},{"type":"doc","id":"api/list-repos-of-collection","label":"List collection repositories","className":"api-method get"}]},{"type":"category","label":"Trends","collapsed":false,"items":[{"type":"doc","id":"api/list-trending-repos","label":"List trending repos","className":"api-method get"}]},{"type":"category","label":"Issue Creators","collapsed":false,"items":[{"type":"doc","id":"api/list-issue-creators","label":"List issue creators","className":"api-method get"},{"type":"doc","id":"api/list-countries-of-issue-creators","label":"List countries/regions of issue creators","className":"api-method get"},{"type":"doc","id":"api/issue-creators-history","label":"Issue creators history","className":"api-method get"},{"type":"doc","id":"api/list-organizations-of-issue-creators","label":"List organizations of stargazers","className":"api-method get"}]},{"type":"category","label":"Pull Request Creators","collapsed":false,"items":[{"type":"doc","id":"api/list-pull-request-creators","label":"List pull request creators","className":"api-method get"},{"type":"doc","id":"api/list-countries-of-pr-creators","label":"List countries/regions of PR creators","className":"api-method get"},{"type":"doc","id":"api/pull-request-creators-history","label":"Pull request creators history","className":"api-method get"},{"type":"doc","id":"api/list-organizations-of-pr-creators","label":"List organizations of PR creators","className":"api-method get"}]},{"type":"category","label":"Stargazers","collapsed":false,"items":[{"type":"doc","id":"api/list-countries-of-stargazers","label":"List countries/regions of stargazers","className":"api-method get"},{"type":"doc","id":"api/stargazers-history","label":"Stargazers history","className":"api-method get"},{"type":"doc","id":"api/list-organizations-of-stargazers","label":"List organizations of stargazers","className":"api-method get"}]}]; \ No newline at end of file diff --git a/web/package-lock.json b/web/package-lock.json index a721322a29a..28cad1b9132 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -19,7 +19,7 @@ "@emotion/styled": "^11.6.0", "@mdx-js/react": "^1.6.22", "@mui/icons-material": "^5.4.2", - "@mui/lab": "^5.0.0-alpha.68", + "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "^5.4.1", "@sentry/react": "^7.12.1", "@sentry/tracing": "^7.12.1", @@ -2005,11 +2005,12 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2027,6 +2028,12 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/@babel/template": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", @@ -2759,17 +2766,36 @@ } }, "node_modules/@emotion/cache": { - "version": "11.10.3", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", - "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "license": "MIT", "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.0.13" + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" } }, + "node_modules/@emotion/cache/node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/cache/node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@emotion/cache/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, "node_modules/@emotion/hash": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", @@ -2848,9 +2874,10 @@ } }, "node_modules/@emotion/sheet": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" }, "node_modules/@emotion/styled": { "version": "11.10.4", @@ -2892,9 +2919,10 @@ } }, "node_modules/@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==", + "license": "MIT" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.0", @@ -2956,6 +2984,44 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.1.tgz", "integrity": "sha512-PQdbF8dGd4LnbwBlcc4ML8RKYdplm+e9sUeWBTr4zgF13/Shiuov9XznvM4T8cb1CfyKK21yTUkuAIIh/DAH/g==" }, + "node_modules/@floating-ui/core": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "license": "MIT", + "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.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", + "license": "MIT" + }, "node_modules/@geo-maps/countries-land-10km": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@geo-maps/countries-land-10km/-/countries-land-10km-0.6.0.tgz", @@ -3317,25 +3383,25 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.102", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.102.tgz", - "integrity": "sha512-5e/qAIP+DlkrZxIt/cwnDw/A3ii22WkoEoWKHyu4+oeGs3/1Flh7qLaN4h5EAIBB9TvTEZEUzvmsTInmIj6ghg==", + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.19.0", - "@emotion/is-prop-valid": "^1.2.0", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "@popperjs/core": "^2.11.6", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" }, "engines": { "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -3348,18 +3414,23 @@ } } }, - "node_modules/@mui/base/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.10.tgz", - "integrity": "sha512-aDuE2PNEh+hAndxEWlZgq7uiFPZKJtnkPDX7v6kSCrMXA32ZaQ6rZi5olmC7DUHt/BaOSxb7N/im/ss0XBkDhA==", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", + "license": "MIT", "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { @@ -3388,30 +3459,30 @@ } }, "node_modules/@mui/lab": { - "version": "5.0.0-alpha.104", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.104.tgz", - "integrity": "sha512-mABdzB/cw5IXtCj2B4oggsXkfLvHg73ujZfErtKP4Sj7L6Fzy+rQceBGjv84UFBkqMvv9zm1UUchI3HfEj/lUw==", - "dependencies": { - "@babel/runtime": "^7.19.0", - "@mui/base": "5.0.0-alpha.102", - "@mui/system": "^5.10.10", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "version": "5.0.0-alpha.173", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.173.tgz", + "integrity": "sha512-Gt5zopIWwxDgGy/MXcp6GueD84xFFugFai4hYiXY0zowJpTVnIrTQCQXV004Q7rejJ7aaCntX9hpPJqCrioshA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40", + "@mui/system": "^5.16.5", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.5", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" }, "engines": { "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material": "^5.0.0", + "@mui/material": ">=5.15.0", "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0", "react-dom": "^17.0.0 || ^18.0.0" @@ -3428,27 +3499,32 @@ } } }, - "node_modules/@mui/lab/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "node_modules/@mui/lab/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/@mui/material": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.10.tgz", - "integrity": "sha512-ioLvqY7VvcePz9dnEIRhpiVvtJmAFmvG6rtLXXzVdMmAVbSaelr5Io07mPz/mCyqE+Uv8/4EuJV276DWO7etzA==", - "dependencies": { - "@babel/runtime": "^7.19.0", - "@mui/base": "5.0.0-alpha.102", - "@mui/core-downloads-tracker": "^5.10.10", - "@mui/system": "^5.10.10", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.1", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", + "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/core-downloads-tracker": "^5.16.7", + "@mui/system": "^5.16.7", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "engines": { @@ -3456,7 +3532,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -3477,18 +3553,29 @@ } } }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/@mui/material/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/@mui/private-theming": { - "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", - "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.19.0", - "@mui/utils": "^5.10.9", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.16.6", "prop-types": "^15.8.1" }, "engines": { @@ -3496,7 +3583,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -3509,13 +3596,14 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.10.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", - "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.19.0", - "@emotion/cache": "^11.10.3", - "csstype": "^3.1.1", + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -3523,7 +3611,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.4.1", @@ -3540,17 +3628,18 @@ } }, "node_modules/@mui/system": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz", - "integrity": "sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==", - "dependencies": { - "@babel/runtime": "^7.19.0", - "@mui/private-theming": "^5.10.9", - "@mui/styled-engine": "^5.10.8", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "clsx": "^1.2.1", - "csstype": "^3.1.1", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -3558,7 +3647,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -3578,12 +3667,22 @@ } } }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/@mui/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", - "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", + "version": "7.2.16", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.16.tgz", + "integrity": "sha512-qI8TV3M7ShITEEc8Ih15A2vLzZGLhD+/UPNwck/hcls2gwg7dyRjNGXcQYHKLB5Q7PuTRfrTkAoPa2VV1s67Ag==", + "license": "MIT", "peerDependencies": { - "@types/react": "*" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3592,31 +3691,49 @@ } }, "node_modules/@mui/utils": { - "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", - "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.19.0", - "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "react-is": "^18.3.1" }, "engines": { "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/@mui/utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/@mui/x-data-grid": { "version": "5.17.8", @@ -4470,9 +4587,10 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -5299,9 +5417,10 @@ "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.7", @@ -5332,14 +5451,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react-redux": { "version": "7.1.25", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.25.tgz", @@ -5381,9 +5492,10 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -7155,9 +7267,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001442", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", - "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "funding": [ { "type": "opencollective", @@ -7166,8 +7278,13 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "1.1.0", @@ -8312,9 +8429,10 @@ } }, "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/d3-array": { "version": "2.12.1", @@ -22381,11 +22499,18 @@ } }, "@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", "requires": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + } } }, "@babel/runtime-corejs3": { @@ -22947,15 +23072,32 @@ } }, "@emotion/cache": { - "version": "11.10.3", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", - "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.0.13" + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" + }, + "@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" + }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + } } }, "@emotion/hash": { @@ -23016,9 +23158,9 @@ } }, "@emotion/sheet": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "@emotion/styled": { "version": "11.10.4", @@ -23045,9 +23187,9 @@ "requires": {} }, "@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" }, "@emotion/weak-memoize": { "version": "0.3.0", @@ -23093,6 +23235,36 @@ "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.1.tgz", "integrity": "sha512-PQdbF8dGd4LnbwBlcc4ML8RKYdplm+e9sUeWBTr4zgF13/Shiuov9XznvM4T8cb1CfyKK21yTUkuAIIh/DAH/g==" }, + "@floating-ui/core": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "requires": { + "@floating-ui/utils": "^0.2.7" + } + }, + "@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "requires": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "requires": { + "@floating-ui/dom": "^1.0.0" + } + }, + "@floating-ui/utils": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" + }, "@geo-maps/countries-land-10km": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@geo-maps/countries-land-10km/-/countries-land-10km-0.6.0.tgz", @@ -23385,31 +23557,30 @@ } }, "@mui/base": { - "version": "5.0.0-alpha.102", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.102.tgz", - "integrity": "sha512-5e/qAIP+DlkrZxIt/cwnDw/A3ii22WkoEoWKHyu4+oeGs3/1Flh7qLaN4h5EAIBB9TvTEZEUzvmsTInmIj6ghg==", - "requires": { - "@babel/runtime": "^7.19.0", - "@emotion/is-prop-valid": "^1.2.0", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "@popperjs/core": "^2.11.6", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "requires": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" }, "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" } } }, "@mui/core-downloads-tracker": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.10.tgz", - "integrity": "sha512-aDuE2PNEh+hAndxEWlZgq7uiFPZKJtnkPDX7v6kSCrMXA32ZaQ6rZi5olmC7DUHt/BaOSxb7N/im/ss0XBkDhA==" + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==" }, "@mui/icons-material": { "version": "5.10.9", @@ -23420,111 +23591,128 @@ } }, "@mui/lab": { - "version": "5.0.0-alpha.104", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.104.tgz", - "integrity": "sha512-mABdzB/cw5IXtCj2B4oggsXkfLvHg73ujZfErtKP4Sj7L6Fzy+rQceBGjv84UFBkqMvv9zm1UUchI3HfEj/lUw==", - "requires": { - "@babel/runtime": "^7.19.0", - "@mui/base": "5.0.0-alpha.102", - "@mui/system": "^5.10.10", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "version": "5.0.0-alpha.173", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.173.tgz", + "integrity": "sha512-Gt5zopIWwxDgGy/MXcp6GueD84xFFugFai4hYiXY0zowJpTVnIrTQCQXV004Q7rejJ7aaCntX9hpPJqCrioshA==", + "requires": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40", + "@mui/system": "^5.16.5", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.5", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" }, "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" } } }, "@mui/material": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.10.tgz", - "integrity": "sha512-ioLvqY7VvcePz9dnEIRhpiVvtJmAFmvG6rtLXXzVdMmAVbSaelr5Io07mPz/mCyqE+Uv8/4EuJV276DWO7etzA==", - "requires": { - "@babel/runtime": "^7.19.0", - "@mui/base": "5.0.0-alpha.102", - "@mui/core-downloads-tracker": "^5.10.10", - "@mui/system": "^5.10.10", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.1", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", + "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", + "requires": { + "@babel/runtime": "^7.23.9", + "@mui/core-downloads-tracker": "^5.16.7", + "@mui/system": "^5.16.7", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-transition-group": "^4.4.5" }, "dependencies": { + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" } } }, "@mui/private-theming": { - "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", - "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", "requires": { - "@babel/runtime": "^7.19.0", - "@mui/utils": "^5.10.9", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.16.6", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.10.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", - "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", "requires": { - "@babel/runtime": "^7.19.0", - "@emotion/cache": "^11.10.3", - "csstype": "^3.1.1", + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" } }, "@mui/system": { - "version": "5.10.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz", - "integrity": "sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==", - "requires": { - "@babel/runtime": "^7.19.0", - "@mui/private-theming": "^5.10.9", - "@mui/styled-engine": "^5.10.8", - "@mui/types": "^7.2.0", - "@mui/utils": "^5.10.9", - "clsx": "^1.2.1", - "csstype": "^3.1.1", + "version": "5.16.7", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", + "requires": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.16.6", + "@mui/styled-engine": "^5.16.6", + "@mui/types": "^7.2.15", + "@mui/utils": "^5.16.6", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + } } }, "@mui/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", - "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", + "version": "7.2.16", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.16.tgz", + "integrity": "sha512-qI8TV3M7ShITEEc8Ih15A2vLzZGLhD+/UPNwck/hcls2gwg7dyRjNGXcQYHKLB5Q7PuTRfrTkAoPa2VV1s67Ag==", "requires": {} }, "@mui/utils": { - "version": "5.10.9", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", - "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", - "requires": { - "@babel/runtime": "^7.19.0", - "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", + "version": "5.16.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", + "requires": { + "@babel/runtime": "^7.23.9", + "@mui/types": "^7.2.15", + "@types/prop-types": "^15.7.12", + "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "react-is": "^18.3.1" }, "dependencies": { + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" } } }, @@ -24246,9 +24434,9 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@primer/octicons-react": { "version": "16.3.1", @@ -24890,9 +25078,9 @@ "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" }, "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "@types/qs": { "version": "6.9.7", @@ -24923,14 +25111,6 @@ "@types/react": "*" } }, - "@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", - "requires": { - "@types/react": "*" - } - }, "@types/react-redux": { "version": "7.1.25", "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.25.tgz", @@ -24972,9 +25152,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "requires": { "@types/react": "*" } @@ -26333,9 +26513,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001442", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz", - "integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow==" + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==" }, "ccount": { "version": "1.1.0", @@ -27178,9 +27358,9 @@ } }, "csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "d3-array": { "version": "2.12.1", diff --git a/web/package.json b/web/package.json index c36095f575a..965e77feeb3 100644 --- a/web/package.json +++ b/web/package.json @@ -37,7 +37,7 @@ "@emotion/styled": "^11.6.0", "@mdx-js/react": "^1.6.22", "@mui/icons-material": "^5.4.2", - "@mui/lab": "^5.0.0-alpha.68", + "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "^5.4.1", "@sentry/react": "^7.12.1", "@sentry/tracing": "^7.12.1", diff --git a/web/src/components/CompareHeader/RepoSelector.tsx b/web/src/components/CompareHeader/RepoSelector.tsx index 821d887045b..c631e6da5e5 100644 --- a/web/src/components/CompareHeader/RepoSelector.tsx +++ b/web/src/components/CompareHeader/RepoSelector.tsx @@ -9,9 +9,8 @@ import { TextField, InputBase, Autocomplete, - CircularProgress, + CircularProgress, type UseAutocompleteProps, } from '@mui/material'; -import { UseAutocompleteProps } from '@mui/base/AutocompleteUnstyled/useAutocomplete'; import { Repo, useSearchRepo } from './useSearchRepo'; import SearchIcon from '@mui/icons-material/Search'; import AddIcon from '@mui/icons-material/Add'; diff --git a/web/src/components/GeneralSearch/index.tsx b/web/src/components/GeneralSearch/index.tsx index 7d9d96cc3e6..0c6003e3a73 100644 --- a/web/src/components/GeneralSearch/index.tsx +++ b/web/src/components/GeneralSearch/index.tsx @@ -23,6 +23,7 @@ import { TextField, Typography, ListSubheader, + AutocompleteHighlightChangeReason, } from '@mui/material'; import { SearchRepoInfo, UserInfo, SearchOrgInfo } from '@ossinsight/api'; import React, { @@ -41,7 +42,6 @@ import isHotkey from 'is-hotkey'; import KeyboardUpIcon from '@mui/icons-material/KeyboardArrowUp'; import KeyboardDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'; -import { AutocompleteHighlightChangeReason } from '@mui/base/AutocompleteUnstyled/useAutocomplete'; import { notNullish, isFalsy } from '@site/src/utils/value'; export interface GeneralSearchProps { @@ -103,7 +103,7 @@ const CustomPopper = ({ children, ...props }: PopperProps) => +}}> {children} ; @@ -142,7 +142,7 @@ export const renderUser = (props: React.HTMLAttributes, option: O {highlight ? ( - Enter} /> + Enter} /> ) : undefined} @@ -164,7 +164,7 @@ export const renderRepo = (props: ListItemProps, option: Option, highlight: bool {highlight ? ( - Enter} /> + Enter} /> ) : undefined} @@ -325,7 +325,7 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, ({ InputProps, ...params }) => ( ({ backgroundColor: contrast ? '#E9EAEE' : '#3c3c3c', @@ -353,7 +353,7 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, : undefined, }), startAdornment: ( - + ({ color: contrast @@ -365,17 +365,17 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, ), endAdornment: loading ? ( - - - + + + ) : global && !open && !option ? ( - + ) : undefined, }} @@ -387,7 +387,7 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, {tabs} - {type !== 'all' && (No {type})} + {type !== 'all' && (No {type})} } @@ -395,16 +395,16 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, {tabs} - - - + + + } ListboxComponent={useCallback( forwardRef(function SearchList ( { children, ...props }: React.HTMLAttributes, - ref: ForwardedRef, + ref: ForwardedRef, ) { return ( @@ -415,22 +415,22 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, - - - - - } /> - } /> + + + + + } /> + } /> - - + + - - } /> + + } /> @@ -447,9 +447,9 @@ const GeneralSearch: FC = ({ contrast, align = 'left', size, GeneralSearch.displayName = 'GeneralSearch'; const TipGroup = ({ children, text }: { text: string, children: JSX.Element }) => ( - + {children} - + {text} @@ -465,8 +465,8 @@ const TipIcon = ({ icon, textContent = false, reverse = false, display }: { icon mr={0.5} px={textContent ? 1 : 0} display={notNullish(display) ? display.map(b => b ? 'flex' : 'none') : 'flex'} - alignItems='center' - justifyContent='center' + alignItems="center" + justifyContent="center" > {icon} diff --git a/web/src/components/TileSelect/index.tsx b/web/src/components/TileSelect/index.tsx index 88905af9868..1899936972a 100644 --- a/web/src/components/TileSelect/index.tsx +++ b/web/src/components/TileSelect/index.tsx @@ -25,7 +25,7 @@ export interface TileSelectProps { } export default function TileSelect ({ options, value, onSelect }: TileSelectProps) { - const ref = useRef(); + const ref = useRef(null); const refs = useRef>(options.map(() => null)); const [length, setLength] = useState(options.length); diff --git a/web/src/pages/explore/_components/ExploreGlobalAds.tsx b/web/src/pages/explore/_components/ExploreGlobalAds.tsx index d69aed0fa5e..08616f23979 100644 --- a/web/src/pages/explore/_components/ExploreGlobalAds.tsx +++ b/web/src/pages/explore/_components/ExploreGlobalAds.tsx @@ -23,7 +23,7 @@ export default function ExploreGlobalAds () { useEffect(() => { setAnchorEl(document.body); - if (hasClosed || /^\/(?:explore|blog|github-campaign)\/?$/.test(location.pathname) || location.pathname.startsWith('/blog/chat2query-tutorials')) { + if (hasClosed || /^\/(?:explore|blog|open-source-heroes)\/?$/.test(location.pathname) || location.pathname.startsWith('/blog/chat2query-tutorials')) { return; } safeSetTimeout(() => { diff --git a/web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx b/web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx index 8939412d5a7..489c57b7540 100644 --- a/web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx +++ b/web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx @@ -1,4 +1,4 @@ -TiDB Serverless is a highly scalable, vector search built-in, and cost-effective serverless database, which is dedicated to powering modern applications with simple solutions. Read more. +TiDB Serverless is a highly scalable, vector search built-in, and cost-effective serverless database, which is dedicated to powering modern applications with simple solutions. Read more. With it, you can: diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews.tsx index e41e6f1f0f8..a1cbdca5481 100644 --- a/web/src/pages/open-source-heroes/_sections/3-reviews.tsx +++ b/web/src/pages/open-source-heroes/_sections/3-reviews.tsx @@ -1,35 +1,50 @@ import { Masonry } from '@mui/lab'; -import { styled } from '@mui/material'; +import { Box, styled } from '@mui/material'; import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; -import React, { type ReactNode } from 'react'; +import React from 'react'; + +import * as r0 from './3-reviews/0'; +import * as r1 from './3-reviews/1'; +import * as r2 from './3-reviews/2'; +import * as r3 from './3-reviews/3'; +import * as r4 from './3-reviews/4'; +import * as r5 from './3-reviews/5'; +import * as r6 from './3-reviews/6'; +import * as r7 from './3-reviews/7'; +import * as r8 from './3-reviews/8'; export function ReviewsSection () { return (
- Build with TiDB + We Build with TiDB - + {reviews.map((review, index) => ( - + {review.avatar} - {review.username} + {review.name} {review.bio} - {review.tag} + {review.label} - - {review.content} - + + + + + + + + ))} @@ -38,6 +53,10 @@ export function ReviewsSection () { ); } +const reviews = [ + r0, r1, r2, r3, r4, r5, r6, r7, r8, +]; + const ReviewCard = styled('li')` background-color: #141414; border-radius: 20px; @@ -76,137 +95,22 @@ const ReviewHeadingTag = styled('div')` color: var(--color1); `; -const ReviewContent = styled('p')` - margin-top: 16px; +const ReviewContent = styled('blockquote')` + padding: 0; + border: none; margin-bottom: 0; font-size: 14px; font-style: italic; line-height: 32px; font-weight: 400; + strong { color: var(--color1); } -`; -type Review = { - avatar: ReactNode; - username: string; - bio: string; - tag: string; - color: string; - content: ReactNode; -}; - -const reviews: Review[] = [ - { - avatar: - - - - , - username: '@ Kentaro Kitagawa', - bio: 'Senior DBA, LINE Corporation', - tag: 'Internet', - color: '#3BBDFB', - content: <> - Scale-in and scale-out in a cluster configuration is also easy, and the ecosystem is very rich, with operation monitoring tools such as Grafana being able to be installed immediately with the installation command (TiUP). - , - }, - { - avatar: - - - - , - username: '@ Thomas Yu ', - bio: 'Founding Engineer, Chaintool', - tag: 'Web 3', - color: '#AA95FF', - content: <>TiDB Serverless is especially beneficial for experimental or early-stage features. It's cost-effective for startups, scalable, and development-friendly. , - }, - { - avatar: - - - - , - username: '@ Sky Dong', - bio: 'Founding Engineer, Chaintool', - tag: 'Web 3', - color: '#FFE790', - content: <>The ease and comfort of getting started are paramount for us, and from this perspective, TiDB Serverless perfectly addresses our needs. Also, the design concept of TiDB has a technical flair that developers find very appealing. , - }, - { - avatar: - - - - - , - username: '@ Boris Savelev', - bio: 'SRE Manager, Bolt', - tag: 'Logistics', - color: '#FF8888', - content: <>In the following years, we will definitely migrate more clusters from MySQL to TiDB, use TiCDC to set up multi-region clusters on AWS for failover, and try TiFlash for instant analytical queries. , - }, - { - avatar: - - - - , - username: '@ Henry Qin', - bio: 'Software Engineer', - tag: 'Fintech', - color: '#52CC7A', - content: <>TiDB's architecture, sort of a SQL layer on top of a key value store, was more scalable and more likely to cause fewer problems down the line. With TiDB, we don't need to worry about cross-charge transactions. That's huge. , - }, - { - avatar: - - - - - , - username: '@ Kaustav Chakravorty', - bio: 'Senior Architect, Flipkart', - tag: 'E-Commerce', - color: '#6296FF', - content: <>The NO.1 benefit is simplicity.
With TiDB, our applications can retain their SQL data model and the ACID guarantees. We don’t have to implement any kind of shareding logic, and the database management becomes simpler too., - }, - { - avatar: - - - - , - username: '@ Godwin', - bio: 'Project Owner of AI-Mon', - tag: 'AI App', - color: '#1CCFBC', - content: <>With TiDB Serverless, setting up a database is as easy as clicking a button. It handles analytics seamlessly, without the need for manual scaling. , - }, - { - avatar: - - - - , - username: '@ Eliotte', - bio: 'a high-school student, the lead developer', - tag: 'AI App', - color: '#DD7514', - content: <>We heavily utilized TiDB's serverless feature to power our backend.
This allowed us to scale our backend to handle thousands of requests per second effortlessly while keeping costs low, as we only pay for what we use. , - }, - { - avatar: - - - , - username: '@ Thomas Yu ', - bio: 'Founding Engineer, Chaintool', - tag: 'Web 3', - color: '#A9C941', - content: <>TiDB Serverless's automatic scaling capabilities allow us to swiftly scale up to meet performance demands and scale down during quieter periods for optimizing costs. , - }, -]; + > *:last-of-type::after { + content: url("data:image/svg+xml,%3Csvg width='23' height='20' viewBox='0 0 23 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5361 2V9.504C18.5361 11.4453 17.9221 13.088 16.7621 14.2453C15.841 15.1787 15.0564 15.5893 13.453 16L11.9519 13.1627C13.2824 12.9387 13.9647 12.64 14.647 12.0053C15.2611 11.4453 15.4658 10.848 15.5681 9.504H11.679V2H18.5361ZM9.4274 2V9.504C9.4274 11.4453 8.81333 13.088 7.6193 14.2453C6.7323 15.1787 5.94765 15.5893 4.31012 16L2.80906 13.1627C4.13955 12.9387 4.82184 12.64 5.50415 12.0053C6.11822 11.4453 6.35702 10.848 6.45937 9.504H2.53613V2H9.4274Z' fill='white'/%3E%3C/svg%3E%0A"); + position: absolute; + margin-top: 9px; + } +`; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/0.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/0.mdx new file mode 100644 index 00000000000..309b656cf68 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/0.mdx @@ -0,0 +1 @@ +In the following years, we will definitely migrate more clusters from MySQL to TiDB, use TiCDC to set up multi-region clusters on AWS for failover, and try TiFlash for instant analytical **queries**. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/0.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/0.tsx new file mode 100644 index 00000000000..420fabd1368 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/0.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Kaustav Chakravorty'; +export const bio = 'Senior Architect, Flipkart'; +export const label = 'Logistics'; +export const backgroundColor = '#E3A15236'; +export const color = '#DD7514'; +// @ts-expect-error +export { default as content } from './0.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/1.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/1.mdx new file mode 100644 index 00000000000..a367fd90be2 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/1.mdx @@ -0,0 +1 @@ +TiDB's architecture, sort of a SQL layer on top of a key value store, was **more scalable** and more likely to cause fewer problems down the line. With TiDB, we don't need to worry about cross-charge transactions. That's huge. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/1.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/1.tsx new file mode 100644 index 00000000000..4e3191a601a --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/1.tsx @@ -0,0 +1,15 @@ +import React from 'react'; + +export const avatar = + + + + +; +export const name = '@Henry Qin'; +export const bio = 'Software Engineer'; +export const label = 'FinTech'; +export const backgroundColor = '#9990FF36'; +export const color = '#2E6BE5'; +// @ts-expect-error +export { default as content } from './1.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/2.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/2.mdx new file mode 100644 index 00000000000..b0ea53cff04 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/2.mdx @@ -0,0 +1 @@ +The ease and comfort of getting started are paramount for us, and the **fully managed** operations of TiDB Serverless allow us to focus more on our core business, ensuring that our development resources are utilized where they matter most. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/2.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/2.tsx new file mode 100644 index 00000000000..5c2c7626965 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/2.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Sky Dong'; +export const bio = 'Founding Engineer, Chaintool'; +export const label = 'Web 3'; +export const backgroundColor = '#C1FF9036'; +export const color = '#52CC7A'; +// @ts-expect-error +export { default as content } from './2.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/3.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/3.mdx new file mode 100644 index 00000000000..4193cb9e808 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/3.mdx @@ -0,0 +1 @@ +We heavily utilized TiDB's serverless feature to power our backend. This allowed us to scale our backend to handle thousands of requests per second effortlessly while keeping **costs low**, as we only pay for what we use. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/3.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/3.tsx new file mode 100644 index 00000000000..2bc8d49cb70 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/3.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Eliotte'; +export const bio = 'Hackathon AI Track Winner, Quizmefy'; +export const label = 'AI App'; +export const backgroundColor = '#C8BAF036'; +export const color = '#AA95FF'; +// @ts-expect-error +export { default as content } from './3.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/4.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/4.mdx new file mode 100644 index 00000000000..29fa86b97ba --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/4.mdx @@ -0,0 +1 @@ +The NO.1 benefit is **simplicity**. With TiDB, our applications can retain their SQL data model and the ACID guarantees. We don't have to implement any kind of sharding logic, and the database management becomes simpler too. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/4.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/4.tsx new file mode 100644 index 00000000000..1e509a85b07 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/4.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Kaustav Chakravorty'; +export const bio = 'Senior Architect, Flipkart'; +export const label = 'E-Commerce'; +export const backgroundColor = '#56B28636'; +export const color = '#1CCFBC'; +// @ts-expect-error +export { default as content } from './4.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/5.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/5.mdx new file mode 100644 index 00000000000..7d0b08713fe --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/5.mdx @@ -0,0 +1 @@ +TiDB Serverless is especially beneficial for experimental or early-stage features. It's **cost-effective** for startups, scalable, and development-friendly. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/5.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/5.tsx new file mode 100644 index 00000000000..c6d48f80b27 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/5.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Thomas Yu'; +export const bio = 'Founder, KNN3 Networks'; +export const label = 'Web 3'; +export const backgroundColor = '#D6B12C36'; +export const color = '#FFE790'; +// @ts-expect-error +export { default as content } from './5.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/6.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/6.mdx new file mode 100644 index 00000000000..aa6f6685740 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/6.mdx @@ -0,0 +1 @@ +With TiDB Serverless, setting up a database is as easy as clicking a button. It handles analytics **seamlessly**, without the need for manual scaling. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/6.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/6.tsx new file mode 100644 index 00000000000..93e975e8ba9 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/6.tsx @@ -0,0 +1,15 @@ +import React from 'react'; + +export const avatar = + + + + +; +export const name = '@Godwin'; +export const bio = 'Project Owner of AI-Mon'; +export const label = 'AI App'; +export const backgroundColor = '#FF909036'; +export const color = '#FF8888'; +// @ts-expect-error +export { default as content } from './6.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/7.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/7.mdx new file mode 100644 index 00000000000..9abc8c6f2f1 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/7.mdx @@ -0,0 +1 @@ +Scale-in and scale-out in a cluster configuration is also **easy**, and the ecosystem is very rich, with operation monitoring tools such as Grafana being able to be installed immediately with the installation command (TiUP). \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/7.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/7.tsx new file mode 100644 index 00000000000..ae5393cc02c --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/7.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +export const avatar = + + + +; +export const name = '@Kentaro Kitagawa'; +export const bio = 'Senior DBA, LINE Corporation'; +export const label = 'Internet'; +export const backgroundColor = '#3BBDFB36'; +export const color = '#11A6ED'; +// @ts-expect-error +export { default as content } from './7.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/8.mdx b/web/src/pages/open-source-heroes/_sections/3-reviews/8.mdx new file mode 100644 index 00000000000..e5aaedf9659 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/8.mdx @@ -0,0 +1 @@ +TiDB Serverless's **automatic scaling** capabilities allow us to swiftly scale up to meet performance demands and scale down during quieter periods for optimizing costs. \ No newline at end of file diff --git a/web/src/pages/open-source-heroes/_sections/3-reviews/8.tsx b/web/src/pages/open-source-heroes/_sections/3-reviews/8.tsx new file mode 100644 index 00000000000..556a1cb3ea3 --- /dev/null +++ b/web/src/pages/open-source-heroes/_sections/3-reviews/8.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +export const avatar = + + +; +export const name = '@Yaohui Sun'; +export const bio = 'Data Platform Lead, Chainbase'; +export const label = 'Web 3'; +export const backgroundColor = '#A9C94136'; +export const color = '#A9C941'; +// @ts-expect-error +export { default as content } from './8.mdx'; diff --git a/web/src/pages/open-source-heroes/_sections/5-faq.mdx b/web/src/pages/open-source-heroes/_sections/5-faq.mdx index 3120cbceee2..fad2f49056e 100644 --- a/web/src/pages/open-source-heroes/_sections/5-faq.mdx +++ b/web/src/pages/open-source-heroes/_sections/5-faq.mdx @@ -1,4 +1,4 @@ -### Why would TiDB commite to the open source community? +### Why would TiDB commit to the open source community? TiDB believes that open source fosters innovation, collaboration, and community-driven development. By actively contributing to and supporting open-source projects, TiDB aims to create a vibrant ecosystem that benefits all participants. ### How do I claim my credits? diff --git a/web/src/pages/open-source-heroes/_sections/6-legal.mdx b/web/src/pages/open-source-heroes/_sections/6-legal.mdx index 5078e6e0517..3e2ceaa4b95 100644 --- a/web/src/pages/open-source-heroes/_sections/6-legal.mdx +++ b/web/src/pages/open-source-heroes/_sections/6-legal.mdx @@ -11,7 +11,7 @@ All contributions to the TiDB project must comply with our Contributor License A TiDB Cloud credits are valid for 180 days and cannot be transferred, refunded, or exchanged for cash. PingCAP may disqualify participants who violate these terms. ### Privacy -By participating, you agree that PingCAP can use your personal data according to our Privacy Policy (https://www.pingcap.com/privacy-policy/). Your data will only be used to run this campaign and won't be shared without your consent, except as required by law. +By participating, you agree that PingCAP can use your data according to our Privacy Policy (https://www.pingcap.com/privacy-policy/). Your data will only be used to run this campaign and won't be shared without your consent, except as required by law. ### No Guarantees PingCAP does not guarantee the availability or operation of the TiDB software, the TiDB Cloud platform, or the credits offered in this campaign. Use them at your own risk. @@ -23,4 +23,4 @@ PingCAP is not responsible for any losses or damages that may happen from partic This campaign follows the laws of California. Any disputes will be resolved through arbitration in San Mateo, California, USA. ### Contact Us -For questions or concerns, please contact at https://www.pingcap.com/contact-us/. +For questions or concerns, please contact us at https://www.pingcap.com/contact-us/. From d5949dfcd3ee605b4d637451e32ec124d1ea2ab9 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 16:57:52 +0800 Subject: [PATCH 13/30] frontend: update github campaign page content --- web/src/pages/open-source-heroes/_sections/0-heading.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/pages/open-source-heroes/_sections/0-heading.tsx b/web/src/pages/open-source-heroes/_sections/0-heading.tsx index 06bd2ed148e..56d43daa061 100644 --- a/web/src/pages/open-source-heroes/_sections/0-heading.tsx +++ b/web/src/pages/open-source-heroes/_sections/0-heading.tsx @@ -48,7 +48,7 @@ function PrimaryHeading ({ loading, onClickAction }: { loading: boolean, onClick TiDB Serverless Credits for Open Source Heroes - TiDB loves open-source. We contribute code, sponsor projects around open source community, such as OssInsight, and deeply appreciate developers who actively contribute to the community. + TiDB loves open-source. We contribute code, sponsor projects and deeply appreciate developers who actively contribute to the community.
As a token of our appreciation, we're offering up to $1000 in free TiDB Serverless credits to fuel open-source hero's next big idea.
From f06cf25976d5de0e29f1662c52d978cf2e8e7c5e Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Tue, 10 Sep 2024 20:23:50 +0800 Subject: [PATCH 14/30] frontend: update github campaign page entry --- web/docusaurus.config.js | 4 +-- .../_sections/0-summary/left/FooterLine.tsx | 34 ++++++++++++++----- web/src/pages/open-source-heroes/index.tsx | 4 ++- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/web/docusaurus.config.js b/web/docusaurus.config.js index 98851b1e107..935973c00a9 100644 --- a/web/docusaurus.config.js +++ b/web/docusaurus.config.js @@ -234,9 +234,9 @@ const config = { respectPrefersColorScheme: false, }, announcementBar: { - id: 'announcement-20230821', + id: 'announcement-20240910', content: - '✨ Spark Your GitHub Magic: Customize and Share with Your Personalized Widgets!', + 'Claim up to $1000 in TiDB Serverless credits for your open-source contributions! ->', backgroundColor: '#4C33B1', textColor: '#ffffff', isCloseable: true, diff --git a/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx b/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx index fc2ee2b77a1..eeb38639896 100644 --- a/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx +++ b/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx @@ -1,20 +1,36 @@ +import Link from '@docusaurus/Link'; +import { Button, styled } from '@mui/material'; import React from 'react'; import { aligns, Body } from '../../../_components/typography'; -import { styled } from '@mui/material'; - -const Logo = styled('img')(({ theme }) => ({ - verticalAlign: 'text-bottom', - marginLeft: theme.spacing(1), -})); const FooterLine = () => { return ( - - - + + TiDB + TiDB + + ); }; +const TidbLogo = styled('a')` + height: 40px; + display: inline-flex; + align-items: center; + gap: 8px; + vertical-align: text-bottom; + + font-weight: 900; + font-size: 20px; + + color: white !important; + text-decoration: none !important; + + margin-right: 16px; +`; + export default FooterLine; diff --git a/web/src/pages/open-source-heroes/index.tsx b/web/src/pages/open-source-heroes/index.tsx index 872acfe6606..8af2634173f 100644 --- a/web/src/pages/open-source-heroes/index.tsx +++ b/web/src/pages/open-source-heroes/index.tsx @@ -11,7 +11,9 @@ import React from 'react'; export default function Page () { return ( From 86a72459f819599a1620222645513ab44a542f01 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Wed, 11 Sep 2024 15:19:04 +0800 Subject: [PATCH 15/30] frontend: update github campaign page entry (#1791) * frontend: update github campaign page entry * update * update credit format * update * update * update * update * update * update * update --- web/package-lock.json | 598 ++++++++++++++++-- web/package.json | 5 +- web/patches/react-share+5.1.0.patch | 26 + web/src/context/user.tsx | 2 + .../_components/ClaimForm.tsx | 70 +- .../_sections/1-how-it-works.tsx | 48 +- .../_sections/4-contributions.tsx | 25 +- .../open-source-heroes/_sections/6-legal.mdx | 9 +- web/src/utils/share.ts | 6 +- 9 files changed, 648 insertions(+), 141 deletions(-) create mode 100644 web/patches/react-share+5.1.0.patch diff --git a/web/package-lock.json b/web/package-lock.json index 28cad1b9132..a853eda5839 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -36,6 +36,7 @@ "is-hotkey": "^0.2.0", "luxon": "^2.3.0", "octokit": "^1.7.1", + "patch-package": "^8.0.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-ace": "^10.1.0", @@ -87,7 +88,7 @@ "react-copy-to-clipboard": "^5.1.0", "react-d3-cloud": "^1.0.5", "react-intersection-observer": "^8.33.1", - "react-share": "^4.4.0", + "react-share": "^5.1.0", "react-sizeme": "^3.0.2", "react-transition-group": "^4.4.2", "sql-highlight": "^4.2.1", @@ -6087,6 +6088,12 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "license": "BSD-2-Clause" + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -7203,12 +7210,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7431,9 +7445,19 @@ } }, "node_modules/ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } }, "node_modules/cipher-base": { "version": "1.0.4", @@ -8656,6 +8680,23 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -9418,6 +9459,27 @@ "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz", "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -10577,6 +10639,15 @@ "node": ">=8" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -10906,9 +10977,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -10952,13 +11027,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11124,6 +11205,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -11245,11 +11338,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11310,6 +11416,18 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -12667,12 +12785,36 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "devOptional": true }, + "node_modules/json-stable-stringify/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", @@ -12695,6 +12837,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsonp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", @@ -12796,6 +12947,15 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -14602,6 +14762,15 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -14816,6 +14985,101 @@ "tslib": "^2.0.3" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -16605,20 +16869,17 @@ } }, "node_modules/react-share": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-share/-/react-share-4.4.1.tgz", - "integrity": "sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-share/-/react-share-5.1.0.tgz", + "integrity": "sha512-OvyfMtj/0UzH1wi90OdHhZVJ6WUC/+IeWvBwppeZozwIGyAjQgyR0QXlHOrxVHVECqnGvcpBaFTXVrqouTieaw==", "dev": true, + "license": "MIT", "dependencies": { "classnames": "^2.3.2", "jsonp": "^0.2.1" }, - "engines": { - "node": ">=6.9.0", - "npm": ">=5.0.0" - }, "peerDependencies": { - "react": "^16.3.0 || ^17 || ^18" + "react": "^17 || ^18" } }, "node_modules/react-sizeme": { @@ -18010,12 +18271,10 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -18208,6 +18467,23 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19357,6 +19633,18 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -25583,6 +25871,11 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -26464,12 +26757,15 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "call-me-maybe": { @@ -26612,9 +26908,9 @@ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "ci-info": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz", - "integrity": "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==" + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" }, "cipher-base": { "version": "1.0.4", @@ -27542,6 +27838,16 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -28144,6 +28450,19 @@ "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz", "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -29003,6 +29322,14 @@ "path-exists": "^4.0.0" } }, + "find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "requires": { + "micromatch": "^4.0.2" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -29226,9 +29553,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -29257,13 +29584,15 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-own-enumerable-property-symbols": { @@ -29385,6 +29714,14 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -29484,13 +29821,18 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -29528,6 +29870,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -30508,6 +30858,24 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "requires": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -30528,6 +30896,11 @@ "universalify": "^2.0.0" } }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" + }, "jsonp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", @@ -30620,6 +30993,14 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "requires": { + "graceful-fs": "^4.1.11" + } + }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -31863,6 +32244,11 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -32024,6 +32410,68 @@ "tslib": "^2.0.3" } }, + "patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==" + } + } + }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -33282,9 +33730,9 @@ } }, "react-share": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-share/-/react-share-4.4.1.tgz", - "integrity": "sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-share/-/react-share-5.1.0.tgz", + "integrity": "sha512-OvyfMtj/0UzH1wi90OdHhZVJ6WUC/+IeWvBwppeZozwIGyAjQgyR0QXlHOrxVHVECqnGvcpBaFTXVrqouTieaw==", "dev": true, "requires": { "classnames": "^2.3.2", @@ -34288,12 +34736,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "semver-diff": { "version": "3.1.1", @@ -34463,6 +34908,19 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -35337,6 +35795,14 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", diff --git a/web/package.json b/web/package.json index 965e77feeb3..b2a7039775a 100644 --- a/web/package.json +++ b/web/package.json @@ -20,7 +20,7 @@ "build:plugins": "tsc -p plugins/tsconfig.json", "prefetch": "node prefetch.mjs", "prebuild": "npm run build:plugins && npm run prefetch && npm run regen-api-docs", - "postinstall": "npm run build:plugins", + "postinstall": "patch-package && npm run build:plugins", "prestart": "npm run build:plugins && npm run prefetch && npm run regen-api-docs", "lint": "eslint --cache .", "lint:ci": "eslint --quiet .", @@ -54,6 +54,7 @@ "is-hotkey": "^0.2.0", "luxon": "^2.3.0", "octokit": "^1.7.1", + "patch-package": "^8.0.0", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", "react-ace": "^10.1.0", @@ -105,7 +106,7 @@ "react-copy-to-clipboard": "^5.1.0", "react-d3-cloud": "^1.0.5", "react-intersection-observer": "^8.33.1", - "react-share": "^4.4.0", + "react-share": "^5.1.0", "react-sizeme": "^3.0.2", "react-transition-group": "^4.4.2", "sql-highlight": "^4.2.1", diff --git a/web/patches/react-share+5.1.0.patch b/web/patches/react-share+5.1.0.patch new file mode 100644 index 00000000000..65f64a0082a --- /dev/null +++ b/web/patches/react-share+5.1.0.patch @@ -0,0 +1,26 @@ +diff --git a/node_modules/react-share/dist/index.cjs b/node_modules/react-share/dist/index.cjs +index cc8c6c0..9cfa531 100644 +--- a/node_modules/react-share/dist/index.cjs ++++ b/node_modules/react-share/dist/index.cjs +@@ -31,7 +31,7 @@ var __objRest = (source, exclude) => { + return target; + }; + Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +-const jsxRuntime = require("react/jsx-runtime"); ++const jsxRuntime = require("react/jsx-runtime.js"); + const react = require("react"); + const cx = require("classnames"); + const jsonp = require("jsonp"); +diff --git a/node_modules/react-share/dist/index.js b/node_modules/react-share/dist/index.js +index c9f8647..5066af7 100644 +--- a/node_modules/react-share/dist/index.js ++++ b/node_modules/react-share/dist/index.js +@@ -29,7 +29,7 @@ var __objRest = (source, exclude) => { + } + return target; + }; +-import { jsxs, jsx } from "react/jsx-runtime"; ++import { jsxs, jsx } from "react/jsx-runtime.js"; + import { forwardRef, useRef, useEffect, useCallback, useState } from "react"; + import cx from "classnames"; + import jsonp from "jsonp"; diff --git a/web/src/context/user.tsx b/web/src/context/user.tsx index 40a640ff4ba..7adb368375b 100644 --- a/web/src/context/user.tsx +++ b/web/src/context/user.tsx @@ -37,6 +37,8 @@ export function AuthProvider ({ children }: PropsWithChildren): JSX.Element { } }; + console.log(customFields?.auth0_domain as string); + return ( { + res = { ...res }; + res.credits = formatCredits(res.credits); + return res; })); const { data: tenants } = useSWR('/api/v1/serverless-credits-campaign/tenants', async url => await giftClientWithoutCache.get(url, { @@ -127,13 +133,16 @@ function ClaimedThisSession ({ check }: { check: Check }) { Hi {user?.nickname ?? user?.name}
- Successfully claimed {check.credits} credits, you can go to + Successfully claimed {check.credits} credits, you can go to
TiDB Cloud to check it out and use it.
- - Start Building with TiDB Cloud! - + + + Start Building with TiDB Cloud! + + + ); } @@ -153,9 +162,12 @@ function Claimed () {
Ready to build something amazing? - - Start Building with TiDB Cloud! - + + + Start Building with TiDB Cloud! + + + ); } @@ -175,9 +187,12 @@ function NotEligible ({ tenants }: { tenants: Tenant[] }) {
Start building your next project today. - - Login to TiDB Cloud - + + + Login to TiDB Cloud + + + ); } @@ -195,9 +210,12 @@ function NotEligibleNoTenant () {
Create a new TiDB Cloud account and enjoy 25GB of free storage to start building your applications. - - Create TiDB Cloud Account - + + + Create TiDB Cloud Account + + + ); } @@ -217,11 +235,11 @@ function EligibleNoTenants ({ check }: { check: Check }) { Sign up to TiDB Cloud - @@ -304,6 +322,18 @@ function Eligible ({ tenants, check, onClaim }: { tenants: Tenant[], check: Chec ; } +function ShareButton () { + return ( + + ); +} + const ClaimFormContainer = styled('div')` background: #212122; min-height: calc(100vh - 60px); @@ -351,10 +381,18 @@ const starIcon = - + ; const successIcon = ; + +const nf = new Intl.NumberFormat('en'); + +const formatCredits = (value: string) => { + return `$${nf.format(parseInt(value))} USD`; +}; diff --git a/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx b/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx index f8f23c1dda7..7de4998f7d9 100644 --- a/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx +++ b/web/src/pages/open-source-heroes/_sections/1-how-it-works.tsx @@ -1,16 +1,15 @@ import { css, styled } from '@mui/material'; import { Section, SectionContent, SectionTitle } from '@site/src/pages/open-source-heroes/_components/Section'; -import { motion } from 'framer-motion'; import React, { Fragment } from 'react'; export function HowItWorks () { return ( - + How it Works - + {items.map((item, index) => ( {index > 0 && } @@ -19,11 +18,6 @@ export function HowItWorks () { - - - - {item.description} - ))} @@ -33,18 +27,13 @@ export function HowItWorks () { ); } -const animations = { - initial: { opacity: 0, y: -26 }, - hover: { opacity: 1, y: 0 }, -}; - -const ThisSection = motion(styled(Section)` +const ThisSection = styled(Section)` ${({ theme }) => ({ [theme.breakpoints.up('lg')]: css` padding-top: 0; `, })} -`); +`; const ThisSectionContent = styled(SectionContent)` display: block; @@ -52,6 +41,7 @@ const ThisSectionContent = styled(SectionContent)` [theme.breakpoints.up('lg')]: css` display: flex; gap: 48px; + align-items: center; h2 { font-size: 24px; @@ -61,7 +51,8 @@ const ThisSectionContent = styled(SectionContent)` })} `; -const Features = motion(styled('div')` +const Features = styled('div')` + flex: 1; display: flex; gap: 24px; align-items: center; @@ -77,7 +68,7 @@ const Features = motion(styled('div')` align-items: flex-start; `, })} -`); +`; const FeatureSplitter = styled('li')` flex: 0.6; @@ -101,13 +92,8 @@ const Feature = styled('div')` const FeatureTitle = styled('h3')` font-size: 24px; line-height: 36px; + white-space: nowrap; `; -const FeatureDescription = motion(styled('div')` - max-width: 100%; - overflow: hidden; - font-size: 18px; - line-height: 28px; -`); const FeatureIndicatorBar = styled('div')` background-color: var(--color1); @@ -124,22 +110,6 @@ const FeatureIndicatorInnerCircle = styled('div')` background-color: white; `; -const FeatureDescriptionLine = styled('div')` - margin-left: 13px; - height: 32px; - width: 1px; - background-color: var(--color1); -`; - -const FeatureDescriptionCircle = styled('div')` - margin-left: 4px; - width: 18px; - height: 18px; - border-radius: 9px; - border: 4px solid var(--color1); - background-color: white; -`; - type Item = { title: string; description: string; diff --git a/web/src/pages/open-source-heroes/_sections/4-contributions.tsx b/web/src/pages/open-source-heroes/_sections/4-contributions.tsx index 7e679d74440..5a478d262e8 100644 --- a/web/src/pages/open-source-heroes/_sections/4-contributions.tsx +++ b/web/src/pages/open-source-heroes/_sections/4-contributions.tsx @@ -36,7 +36,7 @@ export function ContributionsSection () { TiDB ❤️ Open Source - We take pride in our open-source roots. + We take pride in our open-source roots.
With the developer community, we align our product, to make sure it perfectly fits modern application developer's needs.
@@ -79,13 +79,16 @@ const Content = styled('div')` display: flex; background-color: #141414; border-radius: 176px; - max-width: 1440px; + max-width: min(1440px, 100vw - 72px); align-items: center; margin: 40px auto 0; + justify-content: center; + width: max-content; > svg { flex-shrink: 0; display: none; + margin-right: 42px; ${({ theme }) => ({ [theme.breakpoints.up('md')]: css` @@ -96,12 +99,12 @@ const Content = styled('div')` `; const Items = styled('div')` - flex: 1; display: flex; - justify-content: space-around; + justify-content: center; align-items: center; flex-wrap: wrap; - gap: 24px; + gap: 56px; + max-width: 100%; `; const Item = styled('div')` @@ -111,22 +114,22 @@ const Item = styled('div')` `; const ItemTitle = styled('div')` - font-size: 46px; - line-height: 69px; + font-size: 24px; + line-height: 32px; font-weight: 700; color: white; ${({ theme }) => ({ [theme.breakpoints.up('md')]: css` - font-size: 56px; - line-height: 84px; + font-size: 36px; + line-height: 48px; `, })} `; const ItemDescription = styled('div')` color: var(--color1); - font-size: 20px; + font-size: 18px; line-height: 30px; font-weight: 500; @@ -139,7 +142,7 @@ const ItemDescription = styled('div')` })} `; -const githubIcon = +const githubIcon = Privacy Policy. Your data will only be used to run this campaign and won't be shared without your consent, except as required by law. ### No Guarantees PingCAP does not guarantee the availability or operation of the TiDB software, the TiDB Cloud platform, or the credits offered in this campaign. Use them at your own risk. @@ -23,4 +20,4 @@ PingCAP is not responsible for any losses or damages that may happen from partic This campaign follows the laws of California. Any disputes will be resolved through arbitration in San Mateo, California, USA. ### Contact Us -For questions or concerns, please contact us at https://www.pingcap.com/contact-us/. +For questions or concerns, please contact us at https://www.pingcap.com/contact-us/. diff --git a/web/src/utils/share.ts b/web/src/utils/share.ts index 23103dedaac..8049c05e247 100644 --- a/web/src/utils/share.ts +++ b/web/src/utils/share.ts @@ -1,5 +1,9 @@ // see https://github.com/nygardk/react-share/tree/master/src -import objectToGetParams from 'react-share/es/utils/objectToGetParams'; + +function objectToGetParams (object: any) { + const params = Object.entries(object).filter(([, value]) => value !== undefined && value !== null).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`); + return params.length > 0 ? `?${params.join('&')}` : ''; +} export function twitterLink ( url: string, From 320a9283dae30073dba8c177cfc41606bd3e651d Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Wed, 11 Sep 2024 16:14:03 +0800 Subject: [PATCH 16/30] frontend: rephrase --- web/src/pages/open-source-heroes/_components/ClaimForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx index 17f908c6d9d..314bccb14ca 100644 --- a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx +++ b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx @@ -133,7 +133,7 @@ function ClaimedThisSession ({ check }: { check: Check }) { Hi {user?.nickname ?? user?.name}
- Successfully claimed {check.credits} credits, you can go to + Successfully claimed {check.credits} in TiDB Serverless credits, you can go to
TiDB Cloud to check it out and use it. From e27ba2f3bc91f46f1e61fd3b28ad006bf20c8bc0 Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Thu, 12 Sep 2024 10:47:56 +0800 Subject: [PATCH 17/30] frontend: update github campaign page content --- .../open-source-heroes/_components/ClaimForm.tsx | 2 +- .../open-source-heroes/_sections/0-heading.tsx | 4 ++-- .../open-source-heroes/_sections/2-introduction.tsx | 2 +- .../_sections/4-contributions.tsx | 13 ++++++++----- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx index 314bccb14ca..ccd940aba31 100644 --- a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx +++ b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx @@ -325,7 +325,7 @@ function Eligible ({ tenants, check, onClaim }: { tenants: Tenant[], check: Chec function ShareButton () { return (
); @@ -61,13 +65,12 @@ export function ContributionsSection () { const Icon = styled('div')` display: block; margin-top: 120px; - + ${({ theme }) => ({ [theme.breakpoints.up('md')]: css` display: none; `, })} - > svg { display: block; margin: auto; @@ -123,7 +126,7 @@ const ItemTitle = styled('div')` [theme.breakpoints.up('md')]: css` font-size: 36px; line-height: 48px; - `, + `, })} `; @@ -138,7 +141,7 @@ const ItemDescription = styled('div')` [theme.breakpoints.up('md')]: css` font-size: 24px; line-height: 36px; - `, + `, })} `; From f5e43dadb750ace93722070d049a7d525eb8ba44 Mon Sep 17 00:00:00 2001 From: sykp241095 Date: Thu, 12 Sep 2024 11:32:14 +0800 Subject: [PATCH 18/30] Update docusaurus.config.js --- web/docusaurus.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/docusaurus.config.js b/web/docusaurus.config.js index 935973c00a9..2e4976c2c3d 100644 --- a/web/docusaurus.config.js +++ b/web/docusaurus.config.js @@ -233,6 +233,7 @@ const config = { disableSwitch: true, respectPrefersColorScheme: false, }, + /* announcementBar: { id: 'announcement-20240910', content: @@ -241,6 +242,7 @@ const config = { textColor: '#ffffff', isCloseable: true, }, + */ docs: { sidebar: { hideable: true, From ee83a14a51b89a1db8394aa8675384c866338dbb Mon Sep 17 00:00:00 2001 From: TiDB_Hackathon2024 <133619700+TiDB-hackathon2023@users.noreply.github.com> Date: Thu, 12 Sep 2024 12:02:28 +0800 Subject: [PATCH 19/30] links: replace with new tidb cloud serverless link --- web/src/pages/home/_sections/0-summary/left/FooterLine.tsx | 2 +- web/src/pages/home/_sections/3-workshop/Workshop.tsx | 2 +- web/src/pages/open-source-heroes/_sections/2-0-you-can.mdx | 2 +- web/src/pages/open-source-heroes/_sections/3-reviews.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx b/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx index eeb38639896..da955b6192e 100644 --- a/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx +++ b/web/src/pages/home/_sections/0-summary/left/FooterLine.tsx @@ -6,7 +6,7 @@ import { aligns, Body } from '../../../_components/typography'; const FooterLine = () => { return ( - + TiDB TiDB diff --git a/web/src/pages/home/_sections/3-workshop/Workshop.tsx b/web/src/pages/home/_sections/3-workshop/Workshop.tsx index c582f728530..a433f04a46c 100644 --- a/web/src/pages/home/_sections/3-workshop/Workshop.tsx +++ b/web/src/pages/home/_sections/3-workshop/Workshop.tsx @@ -31,7 +31,7 @@ export default function Workshop () { - We suggest running your insight tool on a Hybrid Transactional and Analytical Processing (HTAP) database like TiDB Cloud. + We suggest running your insight tool on a Hybrid Transactional and Analytical Processing (HTAP) database like TiDB Cloud. +
+

*The scenarios above are for reference only. The actual bill will be based on real usage.

+
@@ -88,26 +92,28 @@ const tabs: Array<{ value: string, title: ReactNode, content: ReactNode }> = [ }, { value: '$5', - title: '$5-10', + title: '$5-$10', content: , }, { value: '$10', - title: '$10-100', + title: '$10-$100', content: , }, { value: '$100', - title: '$100-300', + title: '$100-$300', content: , }, { value: '$300', - title: '$300-2000', + title: '$300-$2000', content: , }, ]; +const tabValues = tabs.map(tab => tab.value); + const Content = styled('div')<{ invert?: boolean }>` margin-top: 36px; @@ -131,9 +137,19 @@ const Content = styled('div')<{ invert?: boolean }>` text-decoration: underline; } + .--spacer { + flex: 1; + } + .MuiButtonBase-root { width: 100%; } + + footer { + font-size: 16px; + color: #53524F; + font-style: italic; + } } ${({ theme, invert }) => ({ From f355f37bd70e00bd9569410a9d28f81c03c859d9 Mon Sep 17 00:00:00 2001 From: sykp241095 Date: Thu, 12 Sep 2024 21:15:39 +0800 Subject: [PATCH 21/30] Update docusaurus.config.js --- web/docusaurus.config.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web/docusaurus.config.js b/web/docusaurus.config.js index 2e4976c2c3d..a117faed6f2 100644 --- a/web/docusaurus.config.js +++ b/web/docusaurus.config.js @@ -233,16 +233,14 @@ const config = { disableSwitch: true, respectPrefersColorScheme: false, }, - /* announcementBar: { id: 'announcement-20240910', content: - 'Claim up to $1000 in TiDB Serverless credits for your open-source contributions! ->', + 'Claim up to $2000 in TiDB Serverless credits for your open-source contributions! ->', backgroundColor: '#4C33B1', textColor: '#ffffff', isCloseable: true, }, - */ docs: { sidebar: { hideable: true, From 12337b8d55c18e7c33502d2ccfbe7136de24e977 Mon Sep 17 00:00:00 2001 From: sykp241095 Date: Thu, 12 Sep 2024 21:37:13 +0800 Subject: [PATCH 22/30] Update docusaurus.config.js --- web/docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/docusaurus.config.js b/web/docusaurus.config.js index a117faed6f2..b34b8263eda 100644 --- a/web/docusaurus.config.js +++ b/web/docusaurus.config.js @@ -234,7 +234,7 @@ const config = { respectPrefersColorScheme: false, }, announcementBar: { - id: 'announcement-20240910', + id: 'announcement-20240912', content: 'Claim up to $2000 in TiDB Serverless credits for your open-source contributions! ->', backgroundColor: '#4C33B1', From f9a91aadc85cbfb3defe0a960c87c5b1f9a4d209 Mon Sep 17 00:00:00 2001 From: sykp241095 Date: Sat, 14 Sep 2024 14:14:29 +0800 Subject: [PATCH 23/30] Update ClaimForm.tsx (#1792) --- web/src/pages/open-source-heroes/_components/ClaimForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx index ccd940aba31..bf4cfa0cf2b 100644 --- a/web/src/pages/open-source-heroes/_components/ClaimForm.tsx +++ b/web/src/pages/open-source-heroes/_components/ClaimForm.tsx @@ -325,7 +325,7 @@ function Eligible ({ tenants, check, onClaim }: { tenants: Tenant[], check: Chec function ShareButton () { return (