Skip to content

Heatmap

A daily activity field with every date and reading available as text.

Live — this one is real

Illustrative workshop activity
  1. 2026-07-01: 0
  2. 2026-07-02: 7
  3. 2026-07-03: 3
  4. 2026-07-04: 10
  5. 2026-07-05: 6
  6. 2026-07-06: 2
  7. 2026-07-07: 9
  8. 2026-07-08: 5
  9. 2026-07-09: 1
  10. 2026-07-10: 8
  11. 2026-07-11: 4
  12. 2026-07-12: 0
  13. 2026-07-13: 7
  14. 2026-07-14: 3
  15. 2026-07-15: 10
  16. 2026-07-16: 6
  17. 2026-07-17: 2
  18. 2026-07-18: 9
  19. 2026-07-19: 5
  20. 2026-07-20: 1
  21. 2026-07-21: 8
  22. 2026-07-22: 4
  23. 2026-07-23: 0
  24. 2026-07-24: 7
  25. 2026-07-25: 3
  26. 2026-07-26: 10
  27. 2026-07-27: 6
  28. 2026-07-28: 2
  29. 2026-08-01: 9
  30. 2026-08-02: 5
  31. 2026-08-03: 1
  32. 2026-08-04: 8
  33. 2026-08-05: 4
  34. 2026-08-06: 0
  35. 2026-08-07: 7
  36. 2026-08-08: 3
  37. 2026-08-09: 10
  38. 2026-08-10: 6
  39. 2026-08-11: 2
  40. 2026-08-12: 9
  41. 2026-08-13: 5
  42. 2026-08-14: 1
  43. 2026-08-15: 8
  44. 2026-08-16: 4
  45. 2026-08-17: 0
  46. 2026-08-18: 7
  47. 2026-08-19: 3
  48. 2026-08-20: 10
  49. 2026-08-21: 6
  50. 2026-08-22: 2
  51. 2026-08-23: 9
  52. 2026-08-24: 5
  53. 2026-08-25: 1
  54. 2026-08-26: 8
  55. 2026-08-27: 4
  56. 2026-08-28: 0
  57. 2026-09-01: 7
  58. 2026-09-02: 3
  59. 2026-09-03: 10
  60. 2026-09-04: 6
  61. 2026-09-05: 2
  62. 2026-09-06: 9
  63. 2026-09-07: 5
  64. 2026-09-08: 1
  65. 2026-09-09: 8
  66. 2026-09-10: 4
  67. 2026-09-11: 0
  68. 2026-09-12: 7
  69. 2026-09-13: 3
  70. 2026-09-14: 10

Each square is one day. Intensity follows the recorded value.

Usage

import { Heatmap } from "mizu-ui";

export function Example() {
  const data = Array.from({ length: 70 }, (_, i) => ({
    date: `2026-${String(Math.floor(i / 28) + 7).padStart(2, "0")}-${String((i % 28) + 1).padStart(2, "0")}`,
    value: (i * 7) % 11,
  }));
  return <Heatmap label="Illustrative workshop activity" data={data} />;
}

Source & setup

Import mizu-ui/styles.css once. Fonts are optional via mizu-ui/fonts.css. Override --mizu-* tokens or use className for local styling. Uses native React and CSS; install the package peers for root imports.

Inspect data/Charts.tsx

Source is included in the npm package under src/data/Charts.tsx.

Open full source ↗

Props

PropTypeDefaultDescription
data{date: string; value: number}[]—Days in chronological order; supply missing days as zero.
labelstring—Figure caption.

Accessibility

Each square includes its date/value as screen-reader text. The full grid scrolls on narrow screens; color is never the only source of data.

Motion

Static CSS grid.

Works alongside