update heatmap, add wasm charts

This commit is contained in:
2026-07-16 14:55:16 -04:00
parent 2477c2d6a2
commit 093bad311e
13 changed files with 1949 additions and 352 deletions

View File

@@ -37,7 +37,7 @@ See the runnable **`/wasm/kit`** demo page in `cmd/kjol-website` (Layers → Kjo
`Menu`*, `Submenu`, `EnvBadge`, `RemoteUpdateFlash`.
- **Overlays/floating:** `Modal`/`ConfirmModal`/`WizardModal`, `Toast*`, `Tooltip`/
`HoverTooltip`, `Popover`/`HoverPopover`, `Floating*`.
- **Data:** `PrettyTable`, `AutoTable`, `CellGrid`, `Chart`, `Calendar`,
- **Data:** `PrettyTable`, `AutoTable`, `CellGrid`, `Chart`, `USHeatmap`, `Calendar`,
`DatePicker`, `FuzzyMatch*` (+ pure matchers), `Tutorial`.
- **Pure logic (no vdom):** `formatters.go` (`FormatPhoneNumber`, `FormatDate`, …) and
`validation.go` (`IsEmailValid`, `CreateValidation`, …).
@@ -52,7 +52,11 @@ with a `// NOTE:` in the component's file. Concretely: dropdown/menu/tooltip/mod
positioning is static (not computed); outside-click / Escape / hover-delay dismissal,
auto-dismiss timers, and enter/exit animations are dropped (caller-driven); `AutoTable`
omits virtual scrolling, column resize/reorder, inline editing, and the formula engine;
`Chart` renders only its container — the Solid kit's dependency-free SVG geometry is not
yet ported (the example draws charts server-side with go-chart); a few `Form*` controls
that needed canvas/async (`FormSignaturePad`,
`FormAsyncCombobox`) are omitted. Everything compiles on native (SSR) and js/wasm.
a few `Form*` controls that needed canvas/async (`FormSignaturePad`, `FormAsyncCombobox`)
are omitted. Everything compiles on native (SSR) and js/wasm.
`Chart` and `USHeatmap` are full SVG ports: the geometry (nice-scale axes, rounded
columns, arc slices, the tilted 3D forms, the albersUsa projection) is pure Go, drawn as
an SVG string via `vdom.Raw` inside an `<svg>` that carries the pointer handler; hover
writes a signal and the tooltip is drawn into the same SVG. They read the same theme
tokens as the Solid kit, so a chart is identical on both front-ends.