hazo_dataviz 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGE_LOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # hazo_dataviz — Change Log
2
2
 
3
+ ## 0.4.2 — 2026-06-14
4
+
5
+ - **Fix (`TimeSeriesChart` tooltip readability)**: on dark/transparent themes the hover tooltip used `theme.surface` as its background, which is typically `'transparent'` so the bars showed through and the text washed out. Added an optional `ChartTheme.tooltipSurface` (opaque tooltip background, falls back to `surface`, and defaults to a solid dark `#171717` when `surface` is `'transparent'`). Consumers can set `tooltipSurface` to match their card; the chart area itself stays transparent.
6
+
7
+ ## 0.4.1 — 2026-06-14
8
+
9
+ - **Fix (`TimeSeriesChart` tooltip)**: a single-series chart with no `label` showed the internal recharts dataKey (`s0`) as the series name in the hover tooltip (e.g. `s0: 33`). The per-row series name is now only rendered when the chart has **more than one series** — single-series tooltips show just the bucket label + value. Multi-series tooltips are unchanged.
10
+
3
11
  ## 0.4.0 — 2026-06-14
4
12
 
5
13
  Interactive time-series widgets with grain roll-up + recharts moved to peerDependencies.
@@ -13,6 +13,13 @@ export interface ChartTheme {
13
13
  surface: string;
14
14
  /** active segment background */
15
15
  active: string;
16
+ /**
17
+ * Opaque background for the hover tooltip. Falls back to `surface`, but
18
+ * `surface` is often `'transparent'` (so the chart area shows the host card),
19
+ * which makes the tooltip unreadable — set this to a solid colour on dark/
20
+ * transparent themes.
21
+ */
22
+ tooltipSurface?: string;
16
23
  }
17
24
  export interface ChartControlsProps {
18
25
  grain: TimeGrain;
@@ -1 +1 @@
1
- {"version":3,"file":"chart_controls.d.ts","sourceRoot":"","sources":["../../src/charts/chart_controls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,YAAY,EAAE,SAAS,EAAE,CAAC;AAI1B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+ID,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,MAAuB,EACvB,UAAgC,EAChC,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA+BzC"}
1
+ {"version":3,"file":"chart_controls.d.ts","sourceRoot":"","sources":["../../src/charts/chart_controls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD,YAAY,EAAE,SAAS,EAAE,CAAC;AAI1B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,iBAAiB,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+ID,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,MAAuB,EACvB,UAAgC,EAChC,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA+BzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time_series_chart.d.ts","sourceRoot":"","sources":["../../src/charts/time_series_chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,kEAAkE;IAClE,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wBAAwB;IACxB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,uGAAuG;IACvG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAkN/E"}
1
+ {"version":3,"file":"time_series_chart.d.ts","sourceRoot":"","sources":["../../src/charts/time_series_chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,kEAAkE;IAClE,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,wBAAwB;IACxB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,uGAAuG;IACvG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0ED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAkN/E"}
@@ -11,12 +11,14 @@ const DEFAULT_THEME = {
11
11
  hairline: '#ece6dd',
12
12
  surface: '#fffdf9',
13
13
  active: '#f0ebe3',
14
+ tooltipSurface: '#fffdf9',
14
15
  };
15
16
  function CustomTooltip({ active, label, payload, unit, theme }) {
16
17
  if (!active || !payload || payload.length === 0)
17
18
  return null;
18
19
  return (_jsxs("div", { style: {
19
- background: theme.surface,
20
+ // Tooltip must be opaque to be readable; `surface` is often transparent.
21
+ background: theme.tooltipSurface ?? (theme.surface === 'transparent' ? '#171717' : theme.surface),
20
22
  border: `1px solid ${theme.hairline}`,
21
23
  borderRadius: 6,
22
24
  padding: '7px 10px',
@@ -30,7 +32,7 @@ function CustomTooltip({ active, label, payload, unit, theme }) {
30
32
  borderRadius: '50%',
31
33
  background: entry.color ?? theme.ink,
32
34
  flexShrink: 0,
33
- } }), _jsx("span", { style: { color: theme.muted }, children: entry.name ? `${entry.name}: ` : '' }), _jsx("span", { children: entry.value != null ? `${entry.value}${unit ?? ''}` : '—' })] }, i)))] }));
35
+ } }), payload.length > 1 && entry.name ? (_jsx("span", { style: { color: theme.muted }, children: `${entry.name}: ` })) : null, _jsx("span", { children: entry.value != null ? `${entry.value}${unit ?? ''}` : '—' })] }, i)))] }));
34
36
  }
35
37
  // ── TimeSeriesChart ────────────────────────────────────────────────────────────
36
38
  export function TimeSeriesChart(props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_dataviz",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Headless data visualization primitives for hazo apps",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",