diff --git a/.husky/pre-commit b/.husky/pre-commit
index 0312b76..d0a7784 100644
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,4 +1 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
npx lint-staged
\ No newline at end of file
diff --git a/package.json b/package.json
index d603274..f0cd51c 100644
--- a/package.json
+++ b/package.json
@@ -9,24 +9,25 @@
],
"dependencies": {
"@fluentui/react-icons": "^2.0.225",
- "@headlessui/react": "0.0.0-insiders.1469b85",
+ "@headlessui/react": "0.0.0-insiders.ce17c6d",
"@tremor/react": "^3.13.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"recharts": "2.10.4",
"tailwind-merge": "^2.2.1",
"tailwind-styled-components": "^2.2.0",
- "uno-js": "^3.77.0",
+ "uno-js": "^3.78.0",
+ "uuid": "^9.0.1",
"zustand": "^4.5.0"
},
"devDependencies": {
- "@rsbuild/core": "^0.3.7",
- "@rsbuild/plugin-react": "^0.3.7",
+ "@rsbuild/core": "^0.3.8",
+ "@rsbuild/plugin-react": "^0.3.8",
"@testing-library/jest-dom": "^6.3.0",
"@testing-library/react": "^14.1.2",
"@types/jest": "^29.5.11",
- "@types/object-hash": "^3.0.6",
"@types/react": "^18.2.48",
+ "@types/uuid": "^9.0.7",
"@types/react-dom": "^18.2.18",
"@types/recharts": "1.8.29",
"@types/node": "^20.11.6",
@@ -37,11 +38,10 @@
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
- "husky": "^8.0.3",
+ "husky": "^9.0.5",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"lint-staged": "^15.2.0",
- "object-hash": "^3.0.0",
"postcss-loader": "^8.0.0",
"prettier": "^3.2.4",
"tailwindcss": "^3.4.1",
@@ -56,7 +56,7 @@
"lint:fix": "eslint ./src/**/*.{ts,tsx} --fix",
"test": "jest --silent",
"cest": "jest --silent --collectCoverage",
- "prepare": "husky install"
+ "prepare": "husky"
},
"prettier": {
"endOfLine": "auto",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 283a648..5bcdb26 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,8 +9,8 @@ dependencies:
specifier: ^2.0.225
version: 2.0.225(react@18.2.0)
'@headlessui/react':
- specifier: 0.0.0-insiders.1469b85
- version: 0.0.0-insiders.1469b85(react-dom@18.2.0)(react@18.2.0)
+ specifier: 0.0.0-insiders.ce17c6d
+ version: 0.0.0-insiders.ce17c6d(react-dom@18.2.0)(react@18.2.0)
'@tremor/react':
specifier: ^3.13.3
version: 3.13.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.1)
@@ -30,19 +30,22 @@ dependencies:
specifier: ^2.2.0
version: 2.2.0(react-dom@18.2.0)(react@18.2.0)
uno-js:
- specifier: ^3.77.0
- version: 3.77.0
+ specifier: ^3.78.0
+ version: 3.78.0
+ uuid:
+ specifier: ^9.0.1
+ version: 9.0.1
zustand:
specifier: ^4.5.0
version: 4.5.0(@types/react@18.2.48)(react@18.2.0)
devDependencies:
'@rsbuild/core':
- specifier: ^0.3.7
- version: 0.3.7
+ specifier: ^0.3.8
+ version: 0.3.8
'@rsbuild/plugin-react':
- specifier: ^0.3.7
- version: 0.3.7(@rsbuild/core@0.3.7)
+ specifier: ^0.3.8
+ version: 0.3.8(@rsbuild/core@0.3.8)
'@testing-library/jest-dom':
specifier: ^6.3.0
version: 6.3.0(@types/jest@29.5.11)(jest@29.7.0)
@@ -55,9 +58,6 @@ devDependencies:
'@types/node':
specifier: ^20.11.6
version: 20.11.6
- '@types/object-hash':
- specifier: ^3.0.6
- version: 3.0.6
'@types/react':
specifier: ^18.2.48
version: 18.2.48
@@ -67,6 +67,9 @@ devDependencies:
'@types/recharts':
specifier: 1.8.29
version: 1.8.29
+ '@types/uuid':
+ specifier: ^9.0.7
+ version: 9.0.7
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.1
version: 6.19.1(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3)
@@ -89,8 +92,8 @@ devDependencies:
specifier: ^4.6.0
version: 4.6.0(eslint@8.56.0)
husky:
- specifier: ^8.0.3
- version: 8.0.3
+ specifier: ^9.0.5
+ version: 9.0.5
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@20.11.6)
@@ -100,9 +103,6 @@ devDependencies:
lint-staged:
specifier: ^15.2.0
version: 15.2.0
- object-hash:
- specifier: ^3.0.0
- version: 3.0.0
postcss-loader:
specifier: ^8.0.0
version: 8.0.0(postcss@8.4.33)(typescript@5.3.3)(webpack@5.89.0)
@@ -529,12 +529,25 @@ packages:
resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==}
dev: false
+ /@floating-ui/core@1.5.3:
+ resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==}
+ dependencies:
+ '@floating-ui/utils': 0.2.1
+ dev: false
+
/@floating-ui/dom@1.4.5:
resolution: {integrity: sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw==}
dependencies:
'@floating-ui/core': 1.3.1
dev: false
+ /@floating-ui/dom@1.5.4:
+ resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==}
+ dependencies:
+ '@floating-ui/core': 1.5.3
+ '@floating-ui/utils': 0.2.1
+ dev: false
+
/@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==}
peerDependencies:
@@ -546,6 +559,17 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
+ /@floating-ui/react-dom@2.0.6(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/dom': 1.5.4
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/@floating-ui/react@0.19.2(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==}
peerDependencies:
@@ -559,6 +583,23 @@ packages:
tabbable: 6.2.0
dev: false
+ /@floating-ui/react@0.26.6(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-FFDAuSlRwb8CY4/VvYio/wwk/0339B257yRpKwNOjcHWNYL/fgjl1KUvT3K6ZZ4WDbBWYc7Km4ITMuPZrS8omg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/react-dom': 2.0.6(react-dom@18.2.0)(react@18.2.0)
+ '@floating-ui/utils': 0.2.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tabbable: 6.2.0
+ dev: false
+
+ /@floating-ui/utils@0.2.1:
+ resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
+ dev: false
+
/@fluentui/react-icons@2.0.225(react@18.2.0):
resolution: {integrity: sha512-L9phN3bAMlZCa5+/ObGjIO+5GI8M50ym766sraSq92jaJwgAXrCJDLWuDGWZRGrC63DcagtR2culptj3q7gMMg==}
peerDependencies:
@@ -589,15 +630,17 @@ packages:
tslib: 2.6.2
dev: false
- /@headlessui/react@0.0.0-insiders.1469b85(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-xQSF06hUTbwiWSqAE70UvLPHFk4SkmSdgEzjz9GlibqHr2Gw2+uZo2U6wPOjtjz0oOkRF5maNA/ukse1y5Mfaw==}
+ /@headlessui/react@0.0.0-insiders.ce17c6d(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-sf2T+s8uJ5pZsGyzVN17sbhPgw0TwdcPfUik59UgKNeovMT/CsTUK+KeIokeXBHBWVohFQg+SMmYta7yiRJwOw==}
engines: {node: '>=10'}
peerDependencies:
react: ^16 || ^17 || ^18
react-dom: ^16 || ^17 || ^18
dependencies:
- '@tanstack/react-virtual': 3.0.0-beta.65(react@18.2.0)
- client-only: 0.0.1
+ '@floating-ui/react': 0.26.6(react-dom@18.2.0)(react@18.2.0)
+ '@react-aria/focus': 3.16.0(react@18.2.0)
+ '@react-aria/interactions': 3.0.0-nightly.2584(react@18.2.0)
+ '@tanstack/react-virtual': 3.0.0-beta.60(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
@@ -956,36 +999,153 @@ packages:
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
dev: true
- /@rsbuild/core@0.3.7:
- resolution: {integrity: sha512-3CECaT33x0m+tnnvdSMmNkRUn5D0hrd2lSBklmyBKwTASKT8xlhHNWOTFbrOlG4PByjPRCO4PoykZa5OOVvXMA==}
+ /@react-aria/focus@3.16.0(react@18.2.0):
+ resolution: {integrity: sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/interactions': 3.20.1(react@18.2.0)
+ '@react-aria/utils': 3.23.0(react@18.2.0)
+ '@react-types/shared': 3.22.0(react@18.2.0)
+ '@swc/helpers': 0.5.3
+ clsx: 2.0.0
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/interactions@3.0.0-nightly.2584(react@18.2.0):
+ resolution: {integrity: sha512-6DqYQx8XnbCfIen33uLz4kdgevrXLW6aoxsBOTY/Mzq9n0LHzbG/5H87obrOxRNVYh62RcQolo/qfqEpXZ7bVA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.1-nightly.4295(react@18.2.0)
+ '@react-aria/utils': 3.0.0-nightly.2584(react@18.2.0)
+ '@react-types/shared': 3.0.0-nightly.2584(react@18.2.0)
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/interactions@3.20.1(react@18.2.0):
+ resolution: {integrity: sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.1(react@18.2.0)
+ '@react-aria/utils': 3.23.0(react@18.2.0)
+ '@react-types/shared': 3.22.0(react@18.2.0)
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/ssr@3.9.1(react@18.2.0):
+ resolution: {integrity: sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/ssr@3.9.1-nightly.4295(react@18.2.0):
+ resolution: {integrity: sha512-cv0+RaS3LJeZiSJ4pVGqSAyiyL+rieLiR3ctyoU7EwkArY1W7fI3NSkMEbNhHe4YoqqjPy1ZzAcpSA11EceiBg==}
+ engines: {node: '>= 12'}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/utils@3.0.0-nightly.2584(react@18.2.0):
+ resolution: {integrity: sha512-A6NP3Yc9MMA+PiRBMTpMlx5plaiK7ejl3cppdkKiNPHtFmZrzxn6o9WHth4NToqIUkJRWHIrpTK8a/gBgVFPOg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.1-nightly.4295(react@18.2.0)
+ '@react-stately/utils': 3.0.0-nightly.2584(react@18.2.0)
+ '@react-types/shared': 3.0.0-nightly.2584(react@18.2.0)
+ '@swc/helpers': 0.5.3
+ clsx: 1.2.1
+ react: 18.2.0
+ dev: false
+
+ /@react-aria/utils@3.23.0(react@18.2.0):
+ resolution: {integrity: sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@react-aria/ssr': 3.9.1(react@18.2.0)
+ '@react-stately/utils': 3.9.0(react@18.2.0)
+ '@react-types/shared': 3.22.0(react@18.2.0)
+ '@swc/helpers': 0.5.3
+ clsx: 2.0.0
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/utils@3.0.0-nightly.2584(react@18.2.0):
+ resolution: {integrity: sha512-UOW2P+H3O7goB1mNEIwUdxr28CVHrKKvi+N1CQ0TGDwr+Bp6oIZK2aXE6aQluzgwZ36aRvLPW5dAoovpzTTcQQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-stately/utils@3.9.0(react@18.2.0):
+ resolution: {integrity: sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ '@swc/helpers': 0.5.3
+ react: 18.2.0
+ dev: false
+
+ /@react-types/shared@3.0.0-nightly.2584(react@18.2.0):
+ resolution: {integrity: sha512-SVqvg7B3rtzN1ypQni5g6sfpUNf4wODRDtiOalBFSJ02YuaUIr7gXVjafPYIXOC1BkJbZtPun/Pv4mCwNHFNbA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@react-types/shared@3.22.0(react@18.2.0):
+ resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /@rsbuild/core@0.3.8:
+ resolution: {integrity: sha512-wkESlwG/AtVArHqBayPwC46R2jisIGb8fznlGxgMoZunqbMIHHFEmwiMnMnMfPmjvkq4AjU3dCENSAuwsPXzGg==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
- '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3)
- '@rspack/core': 0.5.0(@swc/helpers@0.5.3)
+ '@rsbuild/shared': 0.3.8(@swc/helpers@0.5.3)
+ '@rspack/core': 0.5.2(@swc/helpers@0.5.3)
'@swc/helpers': 0.5.3
core-js: 3.32.2
html-webpack-plugin: /html-rspack-plugin@5.5.7
postcss: 8.4.33
dev: true
- /@rsbuild/plugin-react@0.3.7(@rsbuild/core@0.3.7):
- resolution: {integrity: sha512-vKjVMZBHp1EEodVsPW5E9cOaA7UvnXxK7ACjWRvuRlMK54VUkYE/npzB2QAxXU3bKK2KiYOH78YYpiHyz1mkFQ==}
+ /@rsbuild/plugin-react@0.3.8(@rsbuild/core@0.3.8):
+ resolution: {integrity: sha512-xaVxu+WHcjMzHdtMvBFf6x76YRejEyOpCknI5ZEHs+oZZ+zQFpsWqTW0jNT9Z78IiSxRmTFV7k0JvaAb/4lWUw==}
peerDependencies:
- '@rsbuild/core': ^0.3.7
+ '@rsbuild/core': ^0.3.8
dependencies:
- '@rsbuild/core': 0.3.7
- '@rsbuild/shared': 0.3.7(@swc/helpers@0.5.3)
- '@rspack/plugin-react-refresh': 0.5.0(react-refresh@0.14.0)
+ '@rsbuild/core': 0.3.8
+ '@rsbuild/shared': 0.3.8(@swc/helpers@0.5.3)
+ '@rspack/plugin-react-refresh': 0.5.2(react-refresh@0.14.0)
react-refresh: 0.14.0
transitivePeerDependencies:
- '@swc/helpers'
dev: true
- /@rsbuild/shared@0.3.7(@swc/helpers@0.5.3):
- resolution: {integrity: sha512-XY82H5CzymyuUC3zGxTWDgKEXWXiQnt1kmPQS1T1mS6jwo8SSwTcEub+E5vtpAOn6r1tNGGHZre+7EVJtF51nQ==}
+ /@rsbuild/shared@0.3.8(@swc/helpers@0.5.3):
+ resolution: {integrity: sha512-0r5UQagEtr2jKS+JulHx6mg2u+hsVs28+tS4LeUpRoRH2J0fswNg0yrVhvHhMSN5ZGnW6ue4qckNqxE7yKBZVg==}
dependencies:
- '@rspack/core': 0.5.0(@swc/helpers@0.5.3)
+ '@rspack/core': 0.5.2(@swc/helpers@0.5.3)
caniuse-lite: 1.0.30001579
lodash: 4.17.21
postcss: 8.4.33
@@ -993,94 +1153,94 @@ packages:
- '@swc/helpers'
dev: true
- /@rspack/binding-darwin-arm64@0.5.0:
- resolution: {integrity: sha512-zRx4efhn2eCjdhHt6avhdkKur6FZvYy1TgPhNKpWbTg7fnrvtNGzcVQCAOnPUUPkJjnss3veOhZlWJ3paX0EDQ==}
+ /@rspack/binding-darwin-arm64@0.5.2:
+ resolution: {integrity: sha512-pWgcgGbUwDWg+0dEuUaInFpPojMvxczTmMco/o2kKA+zn73A6KN+38TOEhBvAOAKSv4lWEbq89eZ9BigoU3w4w==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-darwin-x64@0.5.0:
- resolution: {integrity: sha512-d6SvBURfKow3WcKxTrjJPBkp+NLsuCPoIMaS8/bM4gHwgjVs2zuOsTQ9+l36dypOkjnu6QLkOIykTdiUKJ0eQg==}
+ /@rspack/binding-darwin-x64@0.5.2:
+ resolution: {integrity: sha512-1l4rLFvVHYVGdnk3uycySxW5caQwg2rs1oRdMCcuopcQhC0b7qRagxmKe3wlapJES8wnMmrfuvXwubOPrUK1FQ==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-linux-arm64-gnu@0.5.0:
- resolution: {integrity: sha512-97xFbF7RjJc2VvX+0Hvb7Jzsk+eEE8oEUcc5Dnb7OIwGZulWKk6cLNcRkNfmL/F9kk1QEKlUTNC/VQI7ljf2tA==}
+ /@rspack/binding-linux-arm64-gnu@0.5.2:
+ resolution: {integrity: sha512-Xke4Grg1Aytbb2W0UrwmgM9AI3nKrQ41R7cz/3S1pqgaPO0AJGIxpBORJda6RztC5WTeJ+rjQNdXrsDLtDzzLA==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-linux-arm64-musl@0.5.0:
- resolution: {integrity: sha512-lk0IomCy276EoynmksoBwg0IcHvvVXuZPMeq7OgRPTvs33mdTExSzSTPtrGzx/D00bX1ybUqLQwJhcgGt6erPQ==}
+ /@rspack/binding-linux-arm64-musl@0.5.2:
+ resolution: {integrity: sha512-ubzs2gpljWp7GJ09nxsUa5zFXVSfcbT/bT5cMQKYvyvZ6bOJJKC4Qomt19UgxehZeAGEjrWRH9zvUYc+8wpUeQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-linux-x64-gnu@0.5.0:
- resolution: {integrity: sha512-r15ddpse0S/8wHtfL85uJrVotvPVIMnQX06KlXyGUSw1jWrjxV+NXFDJ4xXnHCvk/YV6lCFTotAssk4wJEE0Fw==}
+ /@rspack/binding-linux-x64-gnu@0.5.2:
+ resolution: {integrity: sha512-doBMEaWLTPKKCn6R6hoY74BbOxPqyJJ+WfcEJNXQSS/EqGfmUUpYYXv/rd+/tz5OWJaWCAYvOElr9TC6mdgo0A==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-linux-x64-musl@0.5.0:
- resolution: {integrity: sha512-lB9Dn1bi4xyzEe6Bf/GQ7Ktlrq4Kmt1LHwN+t0m6iVYH3Vb/3g8uQGDSkwnjP8NmlAtldK1cmvRMhR7flUrgZA==}
+ /@rspack/binding-linux-x64-musl@0.5.2:
+ resolution: {integrity: sha512-EBdDo4qk6TnhzzJHVDon4ZywOUkdIns/yt+MX1pl/9RPc6f9nRkwqE+cmrEF1i7CCwE1P9L0EJBDwjUMSvMbbg==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-win32-arm64-msvc@0.5.0:
- resolution: {integrity: sha512-aDoF13puU8LxST/qKZndtXzlJbnbnxY2Bxyj0fu7UDh8nHJD4A2HQfWRN6BZFHaVSqM6Bnli410dJrIWeTNhZQ==}
+ /@rspack/binding-win32-arm64-msvc@0.5.2:
+ resolution: {integrity: sha512-3fo5j8PVBtRSASQJk9A7gKHho1o9PQMc6WHvfscvgoMfLbfhP3AMdEmgiZ97vt0yTWdUQDLTwgtybXEvbdCKcw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-win32-ia32-msvc@0.5.0:
- resolution: {integrity: sha512-EYGeH4YKX5v4gtTL8mBAWnsKSkF+clsKu0z1hgWgSV/vnntNlqJQZUCb5CMdg5VqadNm+lUNDYYHeHNa3+Jp3w==}
+ /@rspack/binding-win32-ia32-msvc@0.5.2:
+ resolution: {integrity: sha512-Sphuoy95e5mI25wmE1E80Kq8UQpiWwSmFUpAUJLjblBkQA39u2zrfkswlzpXY80g03R8rMOTp5U9p6leMr6n8Q==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding-win32-x64-msvc@0.5.0:
- resolution: {integrity: sha512-RCECFW6otUrFiPbWQyOvLZOMNV/OL6AyAKMDbX9ejjk0TjLMrHjnhmI5X8EoA/SUc1/vEbgsJzDVLKTfn138cg==}
+ /@rspack/binding-win32-x64-msvc@0.5.2:
+ resolution: {integrity: sha512-ir0xIGf3qOCgIbu6ogEEK+Zcs12G7RKO46lM3W6XX5vzTO8GZZO70zBHzX4rOSmRJsxupyXHlILQney9lQWxiQ==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rspack/binding@0.5.0:
- resolution: {integrity: sha512-+v1elZMn6lKBqbXQzhcfeCaPzztFNGEkNDEcQ7weako6yQPsBihGCRzveMMzZkja4RyB9GRHjWRE+THm8V8+3w==}
+ /@rspack/binding@0.5.2:
+ resolution: {integrity: sha512-Wl8tblQWiZxSOK72D4sxmGUyfEaPlSVXlc8r3PXG1yuKDOcN0vUsDmMcSCxZk2R/5jnI0UrhvP4LAaiG9WL8HQ==}
optionalDependencies:
- '@rspack/binding-darwin-arm64': 0.5.0
- '@rspack/binding-darwin-x64': 0.5.0
- '@rspack/binding-linux-arm64-gnu': 0.5.0
- '@rspack/binding-linux-arm64-musl': 0.5.0
- '@rspack/binding-linux-x64-gnu': 0.5.0
- '@rspack/binding-linux-x64-musl': 0.5.0
- '@rspack/binding-win32-arm64-msvc': 0.5.0
- '@rspack/binding-win32-ia32-msvc': 0.5.0
- '@rspack/binding-win32-x64-msvc': 0.5.0
- dev: true
-
- /@rspack/core@0.5.0(@swc/helpers@0.5.3):
- resolution: {integrity: sha512-/Bpujdtx28qYir7AK9VVSbY35GBFEcZ1NTJZBx/WIzZGZWLCxhlVYfjH8cj44y4RvXa0Y26tnj/q7VJ4U3sHug==}
+ '@rspack/binding-darwin-arm64': 0.5.2
+ '@rspack/binding-darwin-x64': 0.5.2
+ '@rspack/binding-linux-arm64-gnu': 0.5.2
+ '@rspack/binding-linux-arm64-musl': 0.5.2
+ '@rspack/binding-linux-x64-gnu': 0.5.2
+ '@rspack/binding-linux-x64-musl': 0.5.2
+ '@rspack/binding-win32-arm64-msvc': 0.5.2
+ '@rspack/binding-win32-ia32-msvc': 0.5.2
+ '@rspack/binding-win32-x64-msvc': 0.5.2
+ dev: true
+
+ /@rspack/core@0.5.2(@swc/helpers@0.5.3):
+ resolution: {integrity: sha512-ObhhnhWavohX9mODDoVLAxfWoqAccXaqUPDKC/u4r9FUEd+rdDEDKi9jdGZlVK3kP20oEIX7GBwJvqzu8VhHYw==}
engines: {node: '>=16.0.0'}
peerDependencies:
'@swc/helpers': '>=0.5.1'
@@ -1089,10 +1249,11 @@ packages:
optional: true
dependencies:
'@module-federation/runtime-tools': 0.0.8
- '@rspack/binding': 0.5.0
+ '@rspack/binding': 0.5.2
'@swc/helpers': 0.5.3
browserslist: 4.22.2
enhanced-resolve: 5.12.0
+ events: 3.3.0
graceful-fs: 4.2.10
json-parse-even-better-errors: 3.0.0
neo-async: 2.6.2
@@ -1104,8 +1265,8 @@ packages:
zod-validation-error: 1.3.1(zod@3.21.4)
dev: true
- /@rspack/plugin-react-refresh@0.5.0(react-refresh@0.14.0):
- resolution: {integrity: sha512-Tas91XaFgRmgdLFzgeei/LybMFvnYBicMf4Y7Yt9lZHRHfgONrGbmqSVeS+nWWTW9U8Q31K9uiM2Z2a02hq2Vw==}
+ /@rspack/plugin-react-refresh@0.5.2(react-refresh@0.14.0):
+ resolution: {integrity: sha512-iuUbeQ+Fz+9JvKe8ZbKsom41t6qPTAwZVWxMK0KD5Yf8is5cb5aKQWnWsrSt+uboybTV/93F0hpgm5Nc6b7Ufg==}
peerDependencies:
react-refresh: '>=0.10.0 <1.0.0'
peerDependenciesMeta:
@@ -1135,7 +1296,15 @@ packages:
resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
dependencies:
tslib: 2.6.2
- dev: true
+
+ /@tanstack/react-virtual@3.0.0-beta.60(react@18.2.0):
+ resolution: {integrity: sha512-F0wL9+byp7lf/tH6U5LW0ZjBqs+hrMXJrj5xcIGcklI0pggvjzMNW9DdIBcyltPNr6hmHQ0wt8FDGe1n1ZAThA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@tanstack/virtual-core': 3.0.0-beta.60
+ react: 18.2.0
+ dev: false
/@tanstack/react-virtual@3.0.0-beta.65(react@18.2.0):
resolution: {integrity: sha512-Q21cUoE0C8Oyzy3RAMV+u4BuB+RwIf2/oQRCWksmIBp1PqLEtvXhAldh7v/wUt7WKEkislKDICZAvbYYs7EAyQ==}
@@ -1146,6 +1315,10 @@ packages:
react: 18.2.0
dev: false
+ /@tanstack/virtual-core@3.0.0-beta.60:
+ resolution: {integrity: sha512-QlCdhsV1+JIf0c0U6ge6SQmpwsyAT0oQaOSZk50AtEeAyQl9tQrd6qCHAslxQpgphrfe945abvKG8uYvw3hIGA==}
+ dev: false
+
/@tanstack/virtual-core@3.0.0-beta.65:
resolution: {integrity: sha512-ObP2pvXBdbivinr7BWDbGqYt4TK8wNzYsOWio+qBkDx5AJFuvqcdJxcCCYnv4dzVTe5ELA1MT4tkt8NB/tnEdA==}
dev: false
@@ -1391,10 +1564,6 @@ packages:
undici-types: 5.26.5
dev: true
- /@types/object-hash@3.0.6:
- resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==}
- dev: true
-
/@types/prop-types@15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
@@ -1433,6 +1602,10 @@ packages:
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
dev: true
+ /@types/uuid@9.0.7:
+ resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==}
+ dev: true
+
/@types/yargs-parser@21.0.3:
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
dev: true
@@ -2268,6 +2441,11 @@ packages:
wrap-ansi: 7.0.0
dev: true
+ /clsx@1.2.1:
+ resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
+ engines: {node: '>=6'}
+ dev: false
+
/clsx@2.0.0:
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
engines: {node: '>=6'}
@@ -3514,9 +3692,9 @@ packages:
engines: {node: '>=16.17.0'}
dev: true
- /husky@8.0.3:
- resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
- engines: {node: '>=14'}
+ /husky@9.0.5:
+ resolution: {integrity: sha512-/EX48XLor4FczjgdJjwK4qMETrJxJqF4rkgo+NUeK8b2F4TV6s5QxAuG2JZfxm4b9WnrgBGS7bA/JK+H5CKg+A==}
+ engines: {node: '>=18'}
hasBin: true
dev: true
@@ -5974,8 +6152,8 @@ packages:
engines: {node: '>= 4.0.0'}
dev: true
- /uno-js@3.77.0:
- resolution: {integrity: sha512-yrv+Q4jYyzri+ACfJJApyMkQiKSF10p5xtlClLG4GFTwTcydOkD+5JTyP8tg71UdBa+uYQFEokxmt703cOSHvQ==}
+ /uno-js@3.78.0:
+ resolution: {integrity: sha512-3jVsswRAx+EQ/xfAJuaLDk5NHo0Whb6RuDIMJWMk6M1n/ysUmkUDk06NyX1pbsr5DO9t+oYIH387Q4uvuPccTQ==}
dev: false
/update-browserslist-db@1.0.13(browserslist@4.22.2):
@@ -6013,6 +6191,11 @@ packages:
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ /uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+ dev: false
+
/v8-to-istanbul@9.1.3:
resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==}
engines: {node: '>=10.12.0'}
diff --git a/sample/index.tsx b/sample/index.tsx
index 4afb5a3..64e4400 100644
--- a/sample/index.tsx
+++ b/sample/index.tsx
@@ -35,6 +35,7 @@ import {
useTheme,
useAlertStore,
useToggle,
+ ChartFunnel,
} from '../src';
import '../src/resources/global.css';
import { anotherDataSet, defaultData, getLargeSelectOptions } from './data';
@@ -206,8 +207,12 @@ const Application = () => {
{!loading ? '100%' : undefined}
- Metric 2
- {!loading ? '100%' : undefined}
+ Object.values(d).map((x: any) => ({ name: x.name, value: x.Value }))}
+ calculateSizes={{ sizes: ['w-[90%]', 'w-[80%]', 'w-[30%]'], orderedValues: [10.15, 20.1, 30.25] }}
+ formatType='number'
+ />
({
}
key={property}
>
- {dataStore.map((item) => (
- |
+ {dataStore.map(() => (
+ |
))}
),
diff --git a/src/ChartFunnel/index.tsx b/src/ChartFunnel/index.tsx
index 843b1e2..d20d9c0 100644
--- a/src/ChartFunnel/index.tsx
+++ b/src/ChartFunnel/index.tsx
@@ -1,5 +1,6 @@
import React from 'react';
import { Flex, Text } from '@tremor/react';
+import { v4 as uuidv4 } from 'uuid';
import { tremorTwMerge } from '@tremor/react/dist/lib/tremorTwMerge';
import { colorPalette, themeColorRange } from '@tremor/react/dist/lib/theme';
import { getColorClassNames } from '@tremor/react/dist/lib/utils';
@@ -16,7 +17,7 @@ export const ChartFunnel = ({ rawData, dataCallback, formatType, calculateSi
{dataStore && dataStore.length > 0 ? (
dataStore.map((entry, index) => (
;
+ return ;
})
.reverse()
: localPayload.map((category, index) => {
@@ -148,7 +148,7 @@ export const UnoChartTooltip = ({
getLabelFunc,
categoryColors,
};
- return ;
+ return ;
}))}
);
diff --git a/src/ChartShimmers/index.tsx b/src/ChartShimmers/index.tsx
index b457f3a..0b763b6 100644
--- a/src/ChartShimmers/index.tsx
+++ b/src/ChartShimmers/index.tsx
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
import { Bar, BarChart, CartesianGrid, Cell, Legend, Line, LineChart, ResponsiveContainer } from 'recharts';
import { Color, Flex } from '@tremor/react';
import { twMerge } from 'tailwind-merge';
-import objectHash from 'object-hash';
+import { v4 as uuidv4 } from 'uuid';
import { tremorTwMerge } from '@tremor/react/dist/lib/tremorTwMerge';
import { colorPalette } from '@tremor/react/dist/lib/theme';
import { getColorClassNames } from '@tremor/react/dist/lib/utils';
@@ -49,8 +49,8 @@ export const ChartBarShimmer = ({ className }: ClassNameComponent) => {
fill=''
className={getColorClassNames('gray', colorPalette.background).fillColor}
>
- {dataStore.map((item) => (
- |
+ {dataStore.map(() => (
+ |
))}
diff --git a/src/PieChart/index.tsx b/src/PieChart/index.tsx
index 697ded4..b52b649 100644
--- a/src/PieChart/index.tsx
+++ b/src/PieChart/index.tsx
@@ -1,4 +1,3 @@
-import objectHash from 'object-hash';
import React, { useMemo } from 'react';
import { Cell, Pie, PieChart as PieChartRechart, ResponsiveContainer, Tooltip } from 'recharts';
import { constructCategoryColors } from '@tremor/react/dist/components/chart-elements/common/utils';
@@ -42,7 +41,7 @@ export const PieChart = ({
{dataStore.map((data) => (
(
const getRows = (data: TableCellTypes[][], columns: TableColumn[], rawData: TDataIn) =>
data.map((row, rowIndex) => (
-
+
{columns.map((column, columnIndex) =>
column.render ? (
column.render(column, { rowIndex, columnIndex }, row[columnIndex], rawData, data)
|