Move heatmap to first-party code (#37262)

Replaces `@silverwind/vue3-calendar-heatmap` with an inlined SVG
implementation. Renders pixel-identically to `main`, drops the
`onMounted` legend viewBox workaround, and uses tippy's
`createSingleton` for the hover tooltip. Adds an e2e test for tooltip
display.

This is a prereq for migrating tippy.js to
[floating-ui](https://github.com/floating-ui/floating-ui) to avoid
having two tooltip libs active.

<img width="861" height="168" alt="image"
src="https://github.com/user-attachments/assets/99343cf6-6e09-42c7-a80d-63dbf33cf56a"
/>


---
This PR was written with the help of Claude Opus 4.7

---------

Co-authored-by: Claude (Opus 4.7) <noreply@anthropic.com>
Co-authored-by: Nicolas <bircni@icloud.com>
This commit is contained in:
silverwind
2026-04-20 20:15:45 +02:00
committed by GitHub
parent 019d85039c
commit 1d25bb22f4
5 changed files with 187 additions and 51 deletions
-15
View File
@@ -112,9 +112,6 @@ importers:
'@resvg/resvg-wasm':
specifier: 2.6.2
version: 2.6.2
'@silverwind/vue3-calendar-heatmap':
specifier: 2.1.1
version: 2.1.1(tippy.js@6.3.7)(vue@3.5.32(typescript@6.0.2))
'@vitejs/plugin-vue':
specifier: 6.0.6
version: 6.0.6(vite@8.0.8(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1))(vue@3.5.32(typescript@6.0.2))
@@ -1249,13 +1246,6 @@ packages:
'@scarf/scarf@1.4.0':
resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
'@silverwind/vue3-calendar-heatmap@2.1.1':
resolution: {integrity: sha512-RQtLOpkysm0LR3PbUoc+aDcYxzy7xboygb1SQEwrUm2/XB2nmt0BEra2ADXpu4kwFxtk0+IyNwzFvbBai/wvTg==}
engines: {node: '>=16'}
peerDependencies:
tippy.js: ^6.3.7
vue: ^3.2.29
'@simonwep/pickr@1.9.0':
resolution: {integrity: sha512-oEYvv15PyfZzjoAzvXYt3UyNGwzsrpFxLaZKzkOSd0WYBVwLd19iJerePDONxC1iF6+DpcswPdLIM2KzCJuYFg==}
@@ -5052,11 +5042,6 @@ snapshots:
'@scarf/scarf@1.4.0': {}
'@silverwind/vue3-calendar-heatmap@2.1.1(tippy.js@6.3.7)(vue@3.5.32(typescript@6.0.2))':
dependencies:
tippy.js: 6.3.7
vue: 3.5.32(typescript@6.0.2)
'@simonwep/pickr@1.9.0':
dependencies:
core-js: 3.32.2