feat: rewrite sankey chart with D3 — thin bars, labels beside nodes, proper hover

Replace @nivo/sankey with custom D3 implementation:
- 30px thin node bars with labels positioned beside them
- Links at 0.3 opacity, 0.6 on hover with full path highlighting
- Colors based on first URL segment for visual grouping
- Dynamic height based on tallest column
- Responsive width via ResizeObserver
- Click nodes to filter, hover for tooltips
- Invisible wider hit areas for easier link hovering
- Remove @nivo/sankey dependency, add d3
This commit is contained in:
Usman Baig
2026-03-16 21:56:22 +01:00
parent 4007056e44
commit 17f2bdc9e9
3 changed files with 914 additions and 553 deletions

View File

@@ -14,15 +14,16 @@
"dependencies": {
"@ciphera-net/ui": "^0.2.7",
"@ducanh2912/next-pwa": "^10.2.9",
"@nivo/sankey": "^0.99.0",
"@phosphor-icons/react": "^2.1.10",
"@simplewebauthn/browser": "^13.2.2",
"@stripe/react-stripe-js": "^5.6.0",
"@stripe/stripe-js": "^8.7.0",
"@tanstack/react-virtual": "^3.13.21",
"@types/d3": "^7.4.3",
"class-variance-authority": "^0.7.1",
"cobe": "^0.6.5",
"country-flag-icons": "^1.6.4",
"d3": "^7.9.0",
"d3-scale": "^4.0.2",
"framer-motion": "^12.23.26",
"html-to-image": "^1.11.13",