@automattic/charts 4.0.0 → 4.1.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/SECURITY.md +1 -0
  3. package/TOKENS.md +1 -1
  4. package/dist/index.cjs +548 -199
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.css +21 -0
  7. package/dist/index.d.cts +86 -72
  8. package/dist/index.d.ts +86 -72
  9. package/dist/index.js +549 -201
  10. package/dist/index.js.map +1 -1
  11. package/package.json +2 -1
  12. package/src/charts/heatmap-chart/heatmap-chart.module.scss +31 -0
  13. package/src/charts/heatmap-chart/heatmap-chart.tsx +44 -9
  14. package/src/charts/heatmap-chart/index.ts +2 -1
  15. package/src/charts/heatmap-chart/private/build-calendar-data.ts +126 -92
  16. package/src/charts/heatmap-chart/private/civil-day.ts +174 -0
  17. package/src/charts/heatmap-chart/private/index.ts +1 -1
  18. package/src/charts/heatmap-chart/private/use-heatmap-colors.ts +5 -1
  19. package/src/charts/heatmap-chart/test/build-calendar-data.test.ts +3 -0
  20. package/src/charts/heatmap-chart/test/civil-day.test.ts +70 -0
  21. package/src/charts/heatmap-chart/test/heatmap-chart.test.tsx +91 -0
  22. package/src/charts/heatmap-chart/test/use-calendar-heatmap-data.test.tsx +118 -0
  23. package/src/charts/heatmap-chart/test/use-heatmap-colors.test.ts +8 -0
  24. package/src/charts/heatmap-chart/test/zoned-calendar-data.test.ts +248 -0
  25. package/src/charts/heatmap-chart/types.ts +6 -0
  26. package/src/charts/heatmap-chart/use-calendar-heatmap-data.ts +42 -0
  27. package/src/charts/leaderboard-chart/types.ts +2 -2
  28. package/src/charts/line-chart/line-chart.tsx +39 -6
  29. package/src/charts/line-chart/test/crosshair-style-types.test.ts +31 -0
  30. package/src/charts/line-chart/test/line-chart.test.tsx +147 -38
  31. package/src/charts/line-chart/test/zoned-date-string.test.tsx +37 -0
  32. package/src/charts/line-chart/types.ts +13 -2
  33. package/src/charts/pie-chart/test/pie-chart.test.tsx +3 -12
  34. package/src/components/tooltip/accessible-tooltip.tsx +8 -2
  35. package/src/components/tooltip/private/bounded-tooltip.tsx +71 -16
  36. package/src/components/tooltip/test/accessible-tooltip.test.tsx +28 -1
  37. package/src/components/tooltip/test/bounded-tooltip.test.tsx +102 -6
  38. package/src/components/tooltip/test/xy-chart-tooltip.test.tsx +100 -0
  39. package/src/components/tooltip/xy-chart-tooltip.tsx +51 -13
  40. package/src/hooks/test/use-chart-data-transform-zone.test.tsx +36 -0
  41. package/src/hooks/test/use-chart-margin.test.tsx +173 -3
  42. package/src/hooks/use-chart-data-transform.ts +10 -3
  43. package/src/hooks/use-chart-margin.tsx +54 -9
  44. package/src/index.ts +4 -0
  45. package/src/test-utils/zoned-parsing-suite.ts +90 -0
  46. package/src/types.ts +2 -2
  47. package/src/utils/date-formatting.ts +1 -18
  48. package/src/utils/date-parsing.ts +103 -52
  49. package/src/utils/get-edge-tick-widths.ts +33 -0
  50. package/src/utils/index.ts +1 -0
  51. package/src/utils/test/date-parsing.auckland.test.ts +6 -0
  52. package/src/utils/test/date-parsing.santiago.test.ts +6 -0
  53. package/src/utils/test/date-parsing.test.ts +16 -1
  54. package/src/utils/test/get-edge-tick-widths.test.ts +55 -0
  55. package/src/utils/warn-once.ts +23 -0
  56. package/src/visx/types.ts +27 -3
package/dist/index.css CHANGED
@@ -555,6 +555,27 @@
555
555
  background: color-mix(in sRGB, var(--a8c-charts-color-track) 45%, transparent);
556
556
  }
557
557
 
558
+ .a8ccharts-O3YMOW-heatmap-chart__cell--summary {
559
+ background: none;
560
+ }
561
+
562
+ .a8ccharts-O3YMOW-heatmap-chart__col-label--summary, .a8ccharts-O3YMOW-heatmap-chart__cell--summary .a8ccharts-O3YMOW-heatmap-chart__cell-value {
563
+ font-weight: var(--wpds-typography-font-weight-emphasis, 600);
564
+ }
565
+
566
+ .a8ccharts-O3YMOW-heatmap-chart__grid--compact .a8ccharts-O3YMOW-heatmap-chart__cell--summary .a8ccharts-O3YMOW-heatmap-chart__cell-value {
567
+ font-size: var(--wpds-typography-font-size-xs, 11px);
568
+ line-height: 1;
569
+ }
570
+
571
+ .a8ccharts-O3YMOW-heatmap-chart__gap-start {
572
+ margin-inline-start: var(--a8c-charts-dimension-heatmap-cell-gap, var(--wpds-dimension-gap-xs, 4px));
573
+ }
574
+
575
+ .a8ccharts-O3YMOW-heatmap-chart__gap-end {
576
+ margin-inline-end: var(--a8c-charts-dimension-heatmap-cell-gap, var(--wpds-dimension-gap-xs, 4px));
577
+ }
578
+
558
579
  .a8ccharts-O3YMOW-heatmap-chart__cell--filled {
559
580
  background: color-mix(in sRGB, var(--a8c-charts-color-heatmap-primary) calc((.15 + .85 * var(--a8c-charts-heatmap-cell-intensity)) * 100%), var(--a8c-charts-color-background, #fff));
560
581
  }
package/dist/index.d.cts CHANGED
@@ -398,8 +398,8 @@ type BucketInfo = {
398
398
  * `timeZone` re-dates the instants the host supplies, so a value that is really a
399
399
  * calendar day shifts under it: `new Date( '2026-08-02' )` is UTC midnight and
400
400
  * labels as Aug 1 in `America/Los_Angeles`. Supply true instants alongside a
401
- * `timeZone`, or set only `locale` for day-bucketed data. `HeatmapChart`'s
402
- * calendar labels take neither — see `buildCalendarHeatmapData`.
401
+ * `timeZone`, or set only `locale` for day-bucketed data. `buildCalendarHeatmapData`
402
+ * is the exception: it reads a bare `yyyy-MM-dd` as the day it names.
403
403
  */
404
404
  type ChartFormatting = {
405
405
  /** BCP-47 language tag, e.g. `de-DE`. Defaults to the runtime's locale. */
@@ -792,23 +792,38 @@ interface RenderTooltipGlyphProps<Datum extends object> extends GlyphProps<Datum
792
792
  glyphStyle?: SVGProps<SVGCircleElement>;
793
793
  isNearestDatum: boolean;
794
794
  }
795
+ type TooltipPlacement = 'auto' | 'below-axis';
796
+ type CrosshairPaintProperty = 'stroke' | 'strokeWidth' | 'strokeOpacity' | 'strokeDasharray' | 'strokeLinecap' | 'opacity';
797
+ type CrosshairStyle = Pick<SVGProps<SVGLineElement>, CrosshairPaintProperty> & {
798
+ className?: string;
799
+ style?: Pick<CSSProperties, CrosshairPaintProperty>;
800
+ };
795
801
  type XyChartTooltipProps<Datum extends object> = {
796
802
  renderTooltip: (params: RenderTooltipParams<Datum>) => ReactNode;
797
803
  renderGlyph?: (params: RenderTooltipGlyphProps<Datum>) => ReactNode;
804
+ /**
805
+ * Keep the panel below the x-axis label band, centered at the datum x and horizontally clamped.
806
+ * Vertical bounds do not move this placement; clipping ancestors can still cut it off.
807
+ * @default 'auto'
808
+ */
809
+ tooltipPlacement?: TooltipPlacement;
810
+ /** Merge overrides with the default box styles; use `unstyled` to strip the box styling. */
811
+ style?: TooltipProps$1['style'];
798
812
  snapTooltipToDatumX?: boolean;
799
813
  snapTooltipToDatumY?: boolean;
800
814
  showVerticalCrosshair?: boolean;
801
815
  showHorizontalCrosshair?: boolean;
802
816
  showDatumGlyph?: boolean;
803
817
  showSeriesGlyphs?: boolean;
804
- verticalCrosshairStyle?: SVGProps<SVGLineElement>;
805
- horizontalCrosshairStyle?: SVGProps<SVGLineElement>;
818
+ verticalCrosshairStyle?: CrosshairStyle;
819
+ horizontalCrosshairStyle?: CrosshairStyle;
806
820
  glyphStyle?: SVGProps<SVGCircleElement>;
807
821
  /**
808
822
  * Flip and clamp the tooltip box so it stays inside the nearest ancestor
809
823
  * that clips its overflow, or the viewport when there is none. The box may
810
824
  * leave the chart wrapper. (It used to keep a body-level portal inside the
811
825
  * viewport.)
826
+ * Ignored by `below-axis`.
812
827
  * @default true
813
828
  */
814
829
  detectBounds?: boolean;
@@ -868,6 +883,15 @@ interface LineChartProps extends BaseChartProps<SeriesData[]>, SeriesVisibilityP
868
883
  renderTooltip?: (params: RenderTooltipParams<DataPointDate> & {
869
884
  bucketInfo?: BucketInfo;
870
885
  }) => ReactNode;
886
+ /**
887
+ * Place the panel below the x-axis tick labels with a pointer at the datum x; horizontal bounds still apply.
888
+ * @default 'auto'
889
+ */
890
+ tooltipPlacement?: XyChartTooltipProps<DataPointDate>['tooltipPlacement'];
891
+ /**
892
+ * Inline container styles; see Below-Axis Tooltips in stories/index.docs.mdx for content color overrides.
893
+ */
894
+ tooltipStyle?: CSSProperties;
871
895
  withStartGlyphs?: boolean;
872
896
  withEndGlyphs?: boolean;
873
897
  renderGlyph?: <Datum extends object>(props: GlyphProps<Datum>) => ReactNode;
@@ -876,6 +900,8 @@ interface LineChartProps extends BaseChartProps<SeriesData[]>, SeriesVisibilityP
876
900
  withTooltipCrosshairs?: {
877
901
  showVertical?: boolean;
878
902
  showHorizontal?: boolean;
903
+ verticalStyle?: CrosshairStyle;
904
+ horizontalStyle?: CrosshairStyle;
879
905
  };
880
906
  /**
881
907
  * Enable drag-to-zoom on the X axis. The user drags horizontally to
@@ -1263,6 +1289,12 @@ type HeatmapColumn = {
1263
1289
  /** x-axis label for this column. Empty/omitted renders blank. */
1264
1290
  label?: string;
1265
1291
  data: HeatmapCell[];
1292
+ /**
1293
+ * A per-row roll-up such as a total or an average. Left out of the color
1294
+ * scale, drawn unfilled with its figure always printed, on an `auto` track
1295
+ * one gap apart from the data beside it. The chart never computes it.
1296
+ */
1297
+ summary?: boolean;
1266
1298
  };
1267
1299
  type HeatmapTooltipData = {
1268
1300
  value: number | null;
@@ -1314,29 +1346,40 @@ type CalendarHeatmapResult = {
1314
1346
  data: HeatmapColumn[];
1315
1347
  rowLabels: string[];
1316
1348
  };
1317
- declare const buildCalendarHeatmapData: (series: DataPointDate[], options?: {
1349
+ type CalendarHeatmapOptions = {
1318
1350
  weekStartsOn?: 0 | 1;
1319
1351
  /**
1320
- * Mark the days completing the first/last week outside the series'
1321
- * date span as hidden cells (empty grid slots) instead of blank
1322
- * cells, giving the calendar ragged edges. Days inside the span stay
1323
- * blank cells even when the series has no entry for them.
1352
+ * Mark the days completing the first and last week outside the series' span as
1353
+ * hidden cells rather than blank ones, giving the calendar ragged edges. Days
1354
+ * inside the span stay blank even where the series has no entry.
1324
1355
  */
1325
1356
  hideOutOfRangeDays?: boolean;
1326
1357
  /**
1327
- * Draw the grid over this span (`yyyy-MM-dd` bounds) instead of the
1328
- * series' own. Days inside the grid but outside the series become
1329
- * placeholder cells: painted as empty slots so a short series still
1330
- * fills its container, but reporting nothing, since they were never
1331
- * measured. A start bound is drawn from the beginning of its week, so
1332
- * the grid always opens on a whole column. Bounds narrower than the
1333
- * series are ignored — the grid never drops a day that carries data.
1358
+ * Draw the grid over this span (`yyyy-MM-dd` bounds) instead of the series' own.
1359
+ * Days inside the grid but outside the series become placeholder cells: painted,
1360
+ * but reporting nothing, since they were never measured. A start bound opens from
1361
+ * the beginning of its week, and bounds narrower than the series are ignored.
1334
1362
  */
1335
1363
  gridSpan?: {
1336
1364
  start?: string;
1337
1365
  end?: string;
1338
1366
  };
1339
- }) => CalendarHeatmapResult;
1367
+ /** BCP-47 tag the labels are written in. Defaults to the runtime's locale. */
1368
+ locale?: string;
1369
+ /**
1370
+ * IANA zone the series' instants are bucketed into days in. Defaults to the
1371
+ * runtime's zone. A `dateString` carrying no offset is taken as written.
1372
+ */
1373
+ timeZone?: string;
1374
+ };
1375
+ /**
1376
+ * Lay a day-bucketed series out as calendar columns.
1377
+ *
1378
+ * @param series - Points to bucket.
1379
+ * @param options - Grid shape, plus the locale and zone to read days in.
1380
+ * @return Columns and row labels for `HeatmapChart`.
1381
+ */
1382
+ declare const buildCalendarHeatmapData: (series: DataPointDate[], options?: CalendarHeatmapOptions) => CalendarHeatmapResult;
1340
1383
  //#endregion
1341
1384
  //#region src/charts/heatmap-chart/private/heatmap-legend.d.ts
1342
1385
  interface HeatmapLegendProps {
@@ -1354,6 +1397,17 @@ interface HeatmapChartSubComponents {
1354
1397
  declare const HeatmapChart: FC<HeatmapChartProps> & HeatmapChartSubComponents;
1355
1398
  declare const HeatmapChartResponsive: FC<HeatmapChartProps & ResponsiveConfig> & HeatmapChartSubComponents;
1356
1399
  //#endregion
1400
+ //#region src/charts/heatmap-chart/use-calendar-heatmap-data.d.ts
1401
+ /**
1402
+ * `buildCalendarHeatmapData` with the locale and zone taken from
1403
+ * `GlobalChartsProvider` where the caller names neither.
1404
+ *
1405
+ * @param series - Points to bucket. Held by reference, so a caller that rebuilds it each render defeats the memo.
1406
+ * @param options - As for `buildCalendarHeatmapData`; `locale` and `timeZone` win over the provider.
1407
+ * @return Columns and row labels for `HeatmapChart`.
1408
+ */
1409
+ declare const useCalendarHeatmapData: (series: DataPointDate[], options?: CalendarHeatmapOptions) => CalendarHeatmapResult;
1410
+ //#endregion
1357
1411
  //#region src/charts/leaderboard-chart/types.d.ts
1358
1412
  interface LeaderboardChartProps extends Pick<BaseChartProps<LeaderboardEntry>, 'className' | 'data' | 'showLegend' | 'legend' | 'chartId' | 'width' | 'height' | 'size' | 'gap' | 'animation'> {
1359
1413
  /**
@@ -1373,9 +1427,9 @@ interface LeaderboardChartProps extends Pick<BaseChartProps<LeaderboardEntry>, '
1373
1427
  */
1374
1428
  secondaryColor?: string;
1375
1429
  /**
1376
- * Formatter for values
1430
+ * Formatter for values. May return an element, e.g. to attach a tooltip.
1377
1431
  */
1378
- valueFormatter?: (value: number) => string;
1432
+ valueFormatter?: (value: number) => ReactNode;
1379
1433
  /**
1380
1434
  * Formatter for delta values
1381
1435
  */
@@ -1448,62 +1502,22 @@ declare const getBucketInfo: (data: SeriesData[], tickResolution?: TickResolutio
1448
1502
  //#endregion
1449
1503
  //#region src/utils/date-parsing.d.ts
1450
1504
  /**
1451
- * @file Date parsing utilities using date-fns for local timezone handling
1452
- *
1453
- * This module provides utilities for parsing various date string formats and converting
1454
- * them to local timezone dates using the battle-tested date-fns library. For formats
1455
- * without timezone info, they're treated as local. For formats with timezone info,
1456
- * they're converted to the equivalent local time.
1457
- *
1458
- * Note: And specifically it prevents format `YYYY-MM-DD` being parsed as UTC date.
1459
- *
1460
- * Key Features:
1461
- * - All parsed dates are in local timezone
1462
- * - Converts timezone-aware strings to local equivalent
1463
- * - Robust input validation and error handling using date-fns
1464
- * - TypeScript type safety
1465
- * - Much smaller codebase than custom parsing
1505
+ * Parses any supported date string format into an instant, dated in `timeZone` or the runtime's own
1466
1506
  *
1467
- * Supported Formats:
1468
- * - YYYY-MM-DD (treated as local)
1469
- * - YYYY-MM-DD HH:mm:ss (treated as local)
1470
- * - YYYY-MM-DD HH:mm (treated as local)
1471
- * - YYYY-MM-DDTHH:mm:ss (treated as local)
1472
- * - YYYY-MM-DDTHH:mm:ss.SSS (treated as local)
1473
- * - YYYY-MM-DDTHH:mm (treated as local)
1474
- * - YYYY-MM-DDTHH:mm:ssZ (converted to local)
1475
- * - YYYY-MM-DDTHH:mm:ss±HH:mm (converted to local)
1476
- *
1477
- * @example
1478
- * ```typescript
1479
- * parseAsLocalDate("2025-01-01"); // Local timezone
1480
- * parseAsLocalDate("2025-01-01 14:30:00"); // Local timezone
1481
- * parseAsLocalDate("2025-01-01 14:30"); // Local timezone
1482
- * parseAsLocalDate("2025-01-01T14:30:45.123"); // Local timezone
1483
- * parseAsLocalDate("2025-01-01T14:30:00Z"); // UTC 14:30 → Local equivalent
1484
- * parseAsLocalDate("2025-01-01T14:30:00+05:00"); // +05:00 14:30 → Local equivalent
1485
- * ```
1486
- */
1487
- /**
1488
- * Parses any supported date string format and returns a local timezone date
1507
+ * Uses date-fns for robust parsing and validation. A string carrying timezone info
1508
+ * is already an instant and is returned as one, whatever `timeZone` says. A string
1509
+ * without it is a wall-clock reading, dated in `timeZone` when one is supplied and
1510
+ * in the runtime's own zone when none is.
1489
1511
  *
1490
- * Uses date-fns for robust parsing and validation. For strings without timezone
1491
- * info, treats as local timezone. For strings with timezone info, converts to
1492
- * local timezone equivalent.
1512
+ * A wall clock a DST gap deleted is moved forward past the gap; one a fall-back repeated
1513
+ * resolves to a single instant. Neither policy is selectable. A zone `Intl` rejects falls
1514
+ * back to the runtime's own, and warns once outside production.
1493
1515
  *
1494
- * Supports:
1495
- * - YYYY-MM-DD (local)
1496
- * - YYYY-MM-DD HH:mm:ss (local)
1497
- * - YYYY-MM-DD HH:mm (local)
1498
- * - YYYY-MM-DDTHH:mm:ss (local)
1499
- * - YYYY-MM-DDTHH:mm:ss.SSS (local)
1500
- * - YYYY-MM-DDTHH:mm (local)
1501
- * - YYYY-MM-DDTHH:mm:ssZ (UTC → local)
1502
- * - YYYY-MM-DDTHH:mm:ss±HH:mm (offset → local)
1503
- * @param {string} dateString - The date string to parse into a local timezone date
1504
- * @return {Date} A Date object representing the parsed date in local timezone, or an invalid Date if parsing fails
1516
+ * @param {string} dateString - The date string to parse into a date
1517
+ * @param {string} [timeZone] - IANA zone a naive string is read in; the runtime's own when absent, and ignored by a string that carries its own offset
1518
+ * @return {Date} A Date object representing the parsed instant, or an invalid Date if parsing fails
1505
1519
  */
1506
- declare const parseAsLocalDate: (dateString: string) => Date;
1520
+ declare const parseAsLocalDate: (dateString: string, timeZone?: string) => Date;
1507
1521
  //#endregion
1508
1522
  //#region src/utils/format-metric-value.d.ts
1509
1523
  /**
@@ -2184,5 +2198,5 @@ declare const defaultTheme: CompleteChartTheme;
2184
2198
  */
2185
2199
  declare const useChartScopeElement: () => HTMLElement | null;
2186
2200
  //#endregion
2187
- export { AccessibleTooltip, type AnnotationStyles, type ArcData, AreaChartResponsive as AreaChart, type AreaChartProps, AreaChart as AreaChartUnresponsive, type AxisOptions, BarChartResponsive as BarChart, type BarChartProps, BarChart as BarChartUnresponsive, BarListChartResponsive as BarListChart, type BarListChartProps, BarListChart as BarListChartUnresponsive, type BaseChartProps, type BaseLegendItem, type BaseLegendProps, BaseTooltip, type BaseTooltipProps, type BucketInfo, type CalendarHeatmapResult, type ChartFormatting, type ChartLegendConfig, type ChartLegendOptions, type ChartTheme, type CompleteChartTheme, ConversionFunnelChartWithProvider as ConversionFunnelChart, type ConversionFunnelChartProps, type CurveType, type DataPoint, type DataPointDate, type DataPointPercentage, type EventHandlerParams, type FunnelStep, GeoChartResponsive as GeoChart, type GeoChartError, type GeoChartProps, GeoChartWithProvider as GeoChartUnresponsive, type GeoData, type GeoRegion, type GeoResolution, GlobalChartsContext, GlobalChartsProvider, GlobalChartsProvider as ThemeProvider, type GoogleDataTableColumn, GoogleDataTableColumnRoleType, type GoogleDataTableRow, type GradientConfig, type GradientStop, type GridStyles, type HeatmapCell, HeatmapChartResponsive as HeatmapChart, type HeatmapChartProps, HeatmapChart as HeatmapChartUnresponsive, type HeatmapColumn, type HeatmapTooltipData, LeaderboardChartResponsive as LeaderboardChart, type LeaderboardChartProps, LeaderboardChart as LeaderboardChartUnresponsive, type LeaderboardEntry, Legend, type LegendItemStyles, type LegendLabelStyles, type LegendPosition, type LegendProps, type LegendShape, type LegendShapeLabel, type LegendShapeRenderProps, type LegendShapeStyles, type LegendValueDisplay, LineChartResponsive as LineChart, type LineChartAnnotationProps, type LineChartProps, LineChart as LineChartUnresponsive, type LineStyles, type MainMetricRenderProps, type MetricValueType, type MultipleDataPointsDate, type Optional, type OrientationType, PieChartResponsive as PieChart, type PieChartProps, type PieChartRenderTooltipParams, PieChart as PieChartUnresponsive, PieSemiCircleChartResponsive as PieSemiCircleChart, type PieSemiCircleChartProps, type PieSemiCircleChartRenderTooltipParams, PieSemiCircleChart as PieSemiCircleChartUnresponsive, type RenderLabelProps, type RenderLineGlyphProps, type RenderTooltipGlyphProps, type RenderTooltipParams, type RenderValueProps, type ScaleOptions, type SeriesChartLegendConfig, type SeriesData, type SeriesDataOptions, type SeriesVisibilityProps, Sparkline, type SparklineDataPoint, type SparklineProps, SparklineUnresponsive, type StepLabelRenderProps, type StepRateRenderProps, type TickResolution, type TooltipData, type TooltipDatum, type TooltipProps, type TooltipRenderProps, type TrendDirection, TrendIndicator, type TrendIndicatorProps, type XyChartTooltipProps, buildCalendarHeatmapData, defaultTheme, formatMetricValue, formatPercentage, getBucketInfo, getColorDistance, hexToRgba, isValidHexColor, lightenHexColor, mergeThemes, mixHexColors, normalizeColorToHex, parseAsLocalDate, parseHslString, prefersLightText, relativeLuminance, resolveCssVariable, useChartFormatting, useChartLegendItems, useChartRegistration, useChartScopeElement, useGlobalChartsContext, useGlobalChartsTheme, useLeaderboardLegendItems, validateHexColor };
2201
+ export { AccessibleTooltip, type AnnotationStyles, type ArcData, AreaChartResponsive as AreaChart, type AreaChartProps, AreaChart as AreaChartUnresponsive, type AxisOptions, BarChartResponsive as BarChart, type BarChartProps, BarChart as BarChartUnresponsive, BarListChartResponsive as BarListChart, type BarListChartProps, BarListChart as BarListChartUnresponsive, type BaseChartProps, type BaseLegendItem, type BaseLegendProps, BaseTooltip, type BaseTooltipProps, type BucketInfo, type CalendarHeatmapOptions, type CalendarHeatmapResult, type ChartFormatting, type ChartLegendConfig, type ChartLegendOptions, type ChartTheme, type CompleteChartTheme, ConversionFunnelChartWithProvider as ConversionFunnelChart, type ConversionFunnelChartProps, type CrosshairStyle, type CurveType, type DataPoint, type DataPointDate, type DataPointPercentage, type EventHandlerParams, type FunnelStep, GeoChartResponsive as GeoChart, type GeoChartError, type GeoChartProps, GeoChartWithProvider as GeoChartUnresponsive, type GeoData, type GeoRegion, type GeoResolution, GlobalChartsContext, GlobalChartsProvider, GlobalChartsProvider as ThemeProvider, type GoogleDataTableColumn, GoogleDataTableColumnRoleType, type GoogleDataTableRow, type GradientConfig, type GradientStop, type GridStyles, type HeatmapCell, HeatmapChartResponsive as HeatmapChart, type HeatmapChartProps, HeatmapChart as HeatmapChartUnresponsive, type HeatmapColumn, type HeatmapTooltipData, LeaderboardChartResponsive as LeaderboardChart, type LeaderboardChartProps, LeaderboardChart as LeaderboardChartUnresponsive, type LeaderboardEntry, Legend, type LegendItemStyles, type LegendLabelStyles, type LegendPosition, type LegendProps, type LegendShape, type LegendShapeLabel, type LegendShapeRenderProps, type LegendShapeStyles, type LegendValueDisplay, LineChartResponsive as LineChart, type LineChartAnnotationProps, type LineChartProps, LineChart as LineChartUnresponsive, type LineStyles, type MainMetricRenderProps, type MetricValueType, type MultipleDataPointsDate, type Optional, type OrientationType, PieChartResponsive as PieChart, type PieChartProps, type PieChartRenderTooltipParams, PieChart as PieChartUnresponsive, PieSemiCircleChartResponsive as PieSemiCircleChart, type PieSemiCircleChartProps, type PieSemiCircleChartRenderTooltipParams, PieSemiCircleChart as PieSemiCircleChartUnresponsive, type RenderLabelProps, type RenderLineGlyphProps, type RenderTooltipGlyphProps, type RenderTooltipParams, type RenderValueProps, type ScaleOptions, type SeriesChartLegendConfig, type SeriesData, type SeriesDataOptions, type SeriesVisibilityProps, Sparkline, type SparklineDataPoint, type SparklineProps, SparklineUnresponsive, type StepLabelRenderProps, type StepRateRenderProps, type TickResolution, type TooltipData, type TooltipDatum, type TooltipPlacement, type TooltipProps, type TooltipRenderProps, type TrendDirection, TrendIndicator, type TrendIndicatorProps, type XyChartTooltipProps, buildCalendarHeatmapData, defaultTheme, formatMetricValue, formatPercentage, getBucketInfo, getColorDistance, hexToRgba, isValidHexColor, lightenHexColor, mergeThemes, mixHexColors, normalizeColorToHex, parseAsLocalDate, parseHslString, prefersLightText, relativeLuminance, resolveCssVariable, useCalendarHeatmapData, useChartFormatting, useChartLegendItems, useChartRegistration, useChartScopeElement, useGlobalChartsContext, useGlobalChartsTheme, useLeaderboardLegendItems, validateHexColor };
2188
2202
  //# sourceMappingURL=index.d.cts.map
package/dist/index.d.ts CHANGED
@@ -398,8 +398,8 @@ type BucketInfo = {
398
398
  * `timeZone` re-dates the instants the host supplies, so a value that is really a
399
399
  * calendar day shifts under it: `new Date( '2026-08-02' )` is UTC midnight and
400
400
  * labels as Aug 1 in `America/Los_Angeles`. Supply true instants alongside a
401
- * `timeZone`, or set only `locale` for day-bucketed data. `HeatmapChart`'s
402
- * calendar labels take neither — see `buildCalendarHeatmapData`.
401
+ * `timeZone`, or set only `locale` for day-bucketed data. `buildCalendarHeatmapData`
402
+ * is the exception: it reads a bare `yyyy-MM-dd` as the day it names.
403
403
  */
404
404
  type ChartFormatting = {
405
405
  /** BCP-47 language tag, e.g. `de-DE`. Defaults to the runtime's locale. */
@@ -792,23 +792,38 @@ interface RenderTooltipGlyphProps<Datum extends object> extends GlyphProps<Datum
792
792
  glyphStyle?: SVGProps<SVGCircleElement>;
793
793
  isNearestDatum: boolean;
794
794
  }
795
+ type TooltipPlacement = 'auto' | 'below-axis';
796
+ type CrosshairPaintProperty = 'stroke' | 'strokeWidth' | 'strokeOpacity' | 'strokeDasharray' | 'strokeLinecap' | 'opacity';
797
+ type CrosshairStyle = Pick<SVGProps<SVGLineElement>, CrosshairPaintProperty> & {
798
+ className?: string;
799
+ style?: Pick<CSSProperties, CrosshairPaintProperty>;
800
+ };
795
801
  type XyChartTooltipProps<Datum extends object> = {
796
802
  renderTooltip: (params: RenderTooltipParams<Datum>) => ReactNode;
797
803
  renderGlyph?: (params: RenderTooltipGlyphProps<Datum>) => ReactNode;
804
+ /**
805
+ * Keep the panel below the x-axis label band, centered at the datum x and horizontally clamped.
806
+ * Vertical bounds do not move this placement; clipping ancestors can still cut it off.
807
+ * @default 'auto'
808
+ */
809
+ tooltipPlacement?: TooltipPlacement;
810
+ /** Merge overrides with the default box styles; use `unstyled` to strip the box styling. */
811
+ style?: TooltipProps$1['style'];
798
812
  snapTooltipToDatumX?: boolean;
799
813
  snapTooltipToDatumY?: boolean;
800
814
  showVerticalCrosshair?: boolean;
801
815
  showHorizontalCrosshair?: boolean;
802
816
  showDatumGlyph?: boolean;
803
817
  showSeriesGlyphs?: boolean;
804
- verticalCrosshairStyle?: SVGProps<SVGLineElement>;
805
- horizontalCrosshairStyle?: SVGProps<SVGLineElement>;
818
+ verticalCrosshairStyle?: CrosshairStyle;
819
+ horizontalCrosshairStyle?: CrosshairStyle;
806
820
  glyphStyle?: SVGProps<SVGCircleElement>;
807
821
  /**
808
822
  * Flip and clamp the tooltip box so it stays inside the nearest ancestor
809
823
  * that clips its overflow, or the viewport when there is none. The box may
810
824
  * leave the chart wrapper. (It used to keep a body-level portal inside the
811
825
  * viewport.)
826
+ * Ignored by `below-axis`.
812
827
  * @default true
813
828
  */
814
829
  detectBounds?: boolean;
@@ -868,6 +883,15 @@ interface LineChartProps extends BaseChartProps<SeriesData[]>, SeriesVisibilityP
868
883
  renderTooltip?: (params: RenderTooltipParams<DataPointDate> & {
869
884
  bucketInfo?: BucketInfo;
870
885
  }) => ReactNode;
886
+ /**
887
+ * Place the panel below the x-axis tick labels with a pointer at the datum x; horizontal bounds still apply.
888
+ * @default 'auto'
889
+ */
890
+ tooltipPlacement?: XyChartTooltipProps<DataPointDate>['tooltipPlacement'];
891
+ /**
892
+ * Inline container styles; see Below-Axis Tooltips in stories/index.docs.mdx for content color overrides.
893
+ */
894
+ tooltipStyle?: CSSProperties;
871
895
  withStartGlyphs?: boolean;
872
896
  withEndGlyphs?: boolean;
873
897
  renderGlyph?: <Datum extends object>(props: GlyphProps<Datum>) => ReactNode;
@@ -876,6 +900,8 @@ interface LineChartProps extends BaseChartProps<SeriesData[]>, SeriesVisibilityP
876
900
  withTooltipCrosshairs?: {
877
901
  showVertical?: boolean;
878
902
  showHorizontal?: boolean;
903
+ verticalStyle?: CrosshairStyle;
904
+ horizontalStyle?: CrosshairStyle;
879
905
  };
880
906
  /**
881
907
  * Enable drag-to-zoom on the X axis. The user drags horizontally to
@@ -1263,6 +1289,12 @@ type HeatmapColumn = {
1263
1289
  /** x-axis label for this column. Empty/omitted renders blank. */
1264
1290
  label?: string;
1265
1291
  data: HeatmapCell[];
1292
+ /**
1293
+ * A per-row roll-up such as a total or an average. Left out of the color
1294
+ * scale, drawn unfilled with its figure always printed, on an `auto` track
1295
+ * one gap apart from the data beside it. The chart never computes it.
1296
+ */
1297
+ summary?: boolean;
1266
1298
  };
1267
1299
  type HeatmapTooltipData = {
1268
1300
  value: number | null;
@@ -1314,29 +1346,40 @@ type CalendarHeatmapResult = {
1314
1346
  data: HeatmapColumn[];
1315
1347
  rowLabels: string[];
1316
1348
  };
1317
- declare const buildCalendarHeatmapData: (series: DataPointDate[], options?: {
1349
+ type CalendarHeatmapOptions = {
1318
1350
  weekStartsOn?: 0 | 1;
1319
1351
  /**
1320
- * Mark the days completing the first/last week outside the series'
1321
- * date span as hidden cells (empty grid slots) instead of blank
1322
- * cells, giving the calendar ragged edges. Days inside the span stay
1323
- * blank cells even when the series has no entry for them.
1352
+ * Mark the days completing the first and last week outside the series' span as
1353
+ * hidden cells rather than blank ones, giving the calendar ragged edges. Days
1354
+ * inside the span stay blank even where the series has no entry.
1324
1355
  */
1325
1356
  hideOutOfRangeDays?: boolean;
1326
1357
  /**
1327
- * Draw the grid over this span (`yyyy-MM-dd` bounds) instead of the
1328
- * series' own. Days inside the grid but outside the series become
1329
- * placeholder cells: painted as empty slots so a short series still
1330
- * fills its container, but reporting nothing, since they were never
1331
- * measured. A start bound is drawn from the beginning of its week, so
1332
- * the grid always opens on a whole column. Bounds narrower than the
1333
- * series are ignored — the grid never drops a day that carries data.
1358
+ * Draw the grid over this span (`yyyy-MM-dd` bounds) instead of the series' own.
1359
+ * Days inside the grid but outside the series become placeholder cells: painted,
1360
+ * but reporting nothing, since they were never measured. A start bound opens from
1361
+ * the beginning of its week, and bounds narrower than the series are ignored.
1334
1362
  */
1335
1363
  gridSpan?: {
1336
1364
  start?: string;
1337
1365
  end?: string;
1338
1366
  };
1339
- }) => CalendarHeatmapResult;
1367
+ /** BCP-47 tag the labels are written in. Defaults to the runtime's locale. */
1368
+ locale?: string;
1369
+ /**
1370
+ * IANA zone the series' instants are bucketed into days in. Defaults to the
1371
+ * runtime's zone. A `dateString` carrying no offset is taken as written.
1372
+ */
1373
+ timeZone?: string;
1374
+ };
1375
+ /**
1376
+ * Lay a day-bucketed series out as calendar columns.
1377
+ *
1378
+ * @param series - Points to bucket.
1379
+ * @param options - Grid shape, plus the locale and zone to read days in.
1380
+ * @return Columns and row labels for `HeatmapChart`.
1381
+ */
1382
+ declare const buildCalendarHeatmapData: (series: DataPointDate[], options?: CalendarHeatmapOptions) => CalendarHeatmapResult;
1340
1383
  //#endregion
1341
1384
  //#region src/charts/heatmap-chart/private/heatmap-legend.d.ts
1342
1385
  interface HeatmapLegendProps {
@@ -1354,6 +1397,17 @@ interface HeatmapChartSubComponents {
1354
1397
  declare const HeatmapChart: FC<HeatmapChartProps> & HeatmapChartSubComponents;
1355
1398
  declare const HeatmapChartResponsive: FC<HeatmapChartProps & ResponsiveConfig> & HeatmapChartSubComponents;
1356
1399
  //#endregion
1400
+ //#region src/charts/heatmap-chart/use-calendar-heatmap-data.d.ts
1401
+ /**
1402
+ * `buildCalendarHeatmapData` with the locale and zone taken from
1403
+ * `GlobalChartsProvider` where the caller names neither.
1404
+ *
1405
+ * @param series - Points to bucket. Held by reference, so a caller that rebuilds it each render defeats the memo.
1406
+ * @param options - As for `buildCalendarHeatmapData`; `locale` and `timeZone` win over the provider.
1407
+ * @return Columns and row labels for `HeatmapChart`.
1408
+ */
1409
+ declare const useCalendarHeatmapData: (series: DataPointDate[], options?: CalendarHeatmapOptions) => CalendarHeatmapResult;
1410
+ //#endregion
1357
1411
  //#region src/charts/leaderboard-chart/types.d.ts
1358
1412
  interface LeaderboardChartProps extends Pick<BaseChartProps<LeaderboardEntry>, 'className' | 'data' | 'showLegend' | 'legend' | 'chartId' | 'width' | 'height' | 'size' | 'gap' | 'animation'> {
1359
1413
  /**
@@ -1373,9 +1427,9 @@ interface LeaderboardChartProps extends Pick<BaseChartProps<LeaderboardEntry>, '
1373
1427
  */
1374
1428
  secondaryColor?: string;
1375
1429
  /**
1376
- * Formatter for values
1430
+ * Formatter for values. May return an element, e.g. to attach a tooltip.
1377
1431
  */
1378
- valueFormatter?: (value: number) => string;
1432
+ valueFormatter?: (value: number) => ReactNode;
1379
1433
  /**
1380
1434
  * Formatter for delta values
1381
1435
  */
@@ -1448,62 +1502,22 @@ declare const getBucketInfo: (data: SeriesData[], tickResolution?: TickResolutio
1448
1502
  //#endregion
1449
1503
  //#region src/utils/date-parsing.d.ts
1450
1504
  /**
1451
- * @file Date parsing utilities using date-fns for local timezone handling
1452
- *
1453
- * This module provides utilities for parsing various date string formats and converting
1454
- * them to local timezone dates using the battle-tested date-fns library. For formats
1455
- * without timezone info, they're treated as local. For formats with timezone info,
1456
- * they're converted to the equivalent local time.
1457
- *
1458
- * Note: And specifically it prevents format `YYYY-MM-DD` being parsed as UTC date.
1459
- *
1460
- * Key Features:
1461
- * - All parsed dates are in local timezone
1462
- * - Converts timezone-aware strings to local equivalent
1463
- * - Robust input validation and error handling using date-fns
1464
- * - TypeScript type safety
1465
- * - Much smaller codebase than custom parsing
1505
+ * Parses any supported date string format into an instant, dated in `timeZone` or the runtime's own
1466
1506
  *
1467
- * Supported Formats:
1468
- * - YYYY-MM-DD (treated as local)
1469
- * - YYYY-MM-DD HH:mm:ss (treated as local)
1470
- * - YYYY-MM-DD HH:mm (treated as local)
1471
- * - YYYY-MM-DDTHH:mm:ss (treated as local)
1472
- * - YYYY-MM-DDTHH:mm:ss.SSS (treated as local)
1473
- * - YYYY-MM-DDTHH:mm (treated as local)
1474
- * - YYYY-MM-DDTHH:mm:ssZ (converted to local)
1475
- * - YYYY-MM-DDTHH:mm:ss±HH:mm (converted to local)
1476
- *
1477
- * @example
1478
- * ```typescript
1479
- * parseAsLocalDate("2025-01-01"); // Local timezone
1480
- * parseAsLocalDate("2025-01-01 14:30:00"); // Local timezone
1481
- * parseAsLocalDate("2025-01-01 14:30"); // Local timezone
1482
- * parseAsLocalDate("2025-01-01T14:30:45.123"); // Local timezone
1483
- * parseAsLocalDate("2025-01-01T14:30:00Z"); // UTC 14:30 → Local equivalent
1484
- * parseAsLocalDate("2025-01-01T14:30:00+05:00"); // +05:00 14:30 → Local equivalent
1485
- * ```
1486
- */
1487
- /**
1488
- * Parses any supported date string format and returns a local timezone date
1507
+ * Uses date-fns for robust parsing and validation. A string carrying timezone info
1508
+ * is already an instant and is returned as one, whatever `timeZone` says. A string
1509
+ * without it is a wall-clock reading, dated in `timeZone` when one is supplied and
1510
+ * in the runtime's own zone when none is.
1489
1511
  *
1490
- * Uses date-fns for robust parsing and validation. For strings without timezone
1491
- * info, treats as local timezone. For strings with timezone info, converts to
1492
- * local timezone equivalent.
1512
+ * A wall clock a DST gap deleted is moved forward past the gap; one a fall-back repeated
1513
+ * resolves to a single instant. Neither policy is selectable. A zone `Intl` rejects falls
1514
+ * back to the runtime's own, and warns once outside production.
1493
1515
  *
1494
- * Supports:
1495
- * - YYYY-MM-DD (local)
1496
- * - YYYY-MM-DD HH:mm:ss (local)
1497
- * - YYYY-MM-DD HH:mm (local)
1498
- * - YYYY-MM-DDTHH:mm:ss (local)
1499
- * - YYYY-MM-DDTHH:mm:ss.SSS (local)
1500
- * - YYYY-MM-DDTHH:mm (local)
1501
- * - YYYY-MM-DDTHH:mm:ssZ (UTC → local)
1502
- * - YYYY-MM-DDTHH:mm:ss±HH:mm (offset → local)
1503
- * @param {string} dateString - The date string to parse into a local timezone date
1504
- * @return {Date} A Date object representing the parsed date in local timezone, or an invalid Date if parsing fails
1516
+ * @param {string} dateString - The date string to parse into a date
1517
+ * @param {string} [timeZone] - IANA zone a naive string is read in; the runtime's own when absent, and ignored by a string that carries its own offset
1518
+ * @return {Date} A Date object representing the parsed instant, or an invalid Date if parsing fails
1505
1519
  */
1506
- declare const parseAsLocalDate: (dateString: string) => Date;
1520
+ declare const parseAsLocalDate: (dateString: string, timeZone?: string) => Date;
1507
1521
  //#endregion
1508
1522
  //#region src/utils/format-metric-value.d.ts
1509
1523
  /**
@@ -2184,5 +2198,5 @@ declare const defaultTheme: CompleteChartTheme;
2184
2198
  */
2185
2199
  declare const useChartScopeElement: () => HTMLElement | null;
2186
2200
  //#endregion
2187
- export { AccessibleTooltip, type AnnotationStyles, type ArcData, AreaChartResponsive as AreaChart, type AreaChartProps, AreaChart as AreaChartUnresponsive, type AxisOptions, BarChartResponsive as BarChart, type BarChartProps, BarChart as BarChartUnresponsive, BarListChartResponsive as BarListChart, type BarListChartProps, BarListChart as BarListChartUnresponsive, type BaseChartProps, type BaseLegendItem, type BaseLegendProps, BaseTooltip, type BaseTooltipProps, type BucketInfo, type CalendarHeatmapResult, type ChartFormatting, type ChartLegendConfig, type ChartLegendOptions, type ChartTheme, type CompleteChartTheme, ConversionFunnelChartWithProvider as ConversionFunnelChart, type ConversionFunnelChartProps, type CurveType, type DataPoint, type DataPointDate, type DataPointPercentage, type EventHandlerParams, type FunnelStep, GeoChartResponsive as GeoChart, type GeoChartError, type GeoChartProps, GeoChartWithProvider as GeoChartUnresponsive, type GeoData, type GeoRegion, type GeoResolution, GlobalChartsContext, GlobalChartsProvider, GlobalChartsProvider as ThemeProvider, type GoogleDataTableColumn, GoogleDataTableColumnRoleType, type GoogleDataTableRow, type GradientConfig, type GradientStop, type GridStyles, type HeatmapCell, HeatmapChartResponsive as HeatmapChart, type HeatmapChartProps, HeatmapChart as HeatmapChartUnresponsive, type HeatmapColumn, type HeatmapTooltipData, LeaderboardChartResponsive as LeaderboardChart, type LeaderboardChartProps, LeaderboardChart as LeaderboardChartUnresponsive, type LeaderboardEntry, Legend, type LegendItemStyles, type LegendLabelStyles, type LegendPosition, type LegendProps, type LegendShape, type LegendShapeLabel, type LegendShapeRenderProps, type LegendShapeStyles, type LegendValueDisplay, LineChartResponsive as LineChart, type LineChartAnnotationProps, type LineChartProps, LineChart as LineChartUnresponsive, type LineStyles, type MainMetricRenderProps, type MetricValueType, type MultipleDataPointsDate, type Optional, type OrientationType, PieChartResponsive as PieChart, type PieChartProps, type PieChartRenderTooltipParams, PieChart as PieChartUnresponsive, PieSemiCircleChartResponsive as PieSemiCircleChart, type PieSemiCircleChartProps, type PieSemiCircleChartRenderTooltipParams, PieSemiCircleChart as PieSemiCircleChartUnresponsive, type RenderLabelProps, type RenderLineGlyphProps, type RenderTooltipGlyphProps, type RenderTooltipParams, type RenderValueProps, type ScaleOptions, type SeriesChartLegendConfig, type SeriesData, type SeriesDataOptions, type SeriesVisibilityProps, Sparkline, type SparklineDataPoint, type SparklineProps, SparklineUnresponsive, type StepLabelRenderProps, type StepRateRenderProps, type TickResolution, type TooltipData, type TooltipDatum, type TooltipProps, type TooltipRenderProps, type TrendDirection, TrendIndicator, type TrendIndicatorProps, type XyChartTooltipProps, buildCalendarHeatmapData, defaultTheme, formatMetricValue, formatPercentage, getBucketInfo, getColorDistance, hexToRgba, isValidHexColor, lightenHexColor, mergeThemes, mixHexColors, normalizeColorToHex, parseAsLocalDate, parseHslString, prefersLightText, relativeLuminance, resolveCssVariable, useChartFormatting, useChartLegendItems, useChartRegistration, useChartScopeElement, useGlobalChartsContext, useGlobalChartsTheme, useLeaderboardLegendItems, validateHexColor };
2201
+ export { AccessibleTooltip, type AnnotationStyles, type ArcData, AreaChartResponsive as AreaChart, type AreaChartProps, AreaChart as AreaChartUnresponsive, type AxisOptions, BarChartResponsive as BarChart, type BarChartProps, BarChart as BarChartUnresponsive, BarListChartResponsive as BarListChart, type BarListChartProps, BarListChart as BarListChartUnresponsive, type BaseChartProps, type BaseLegendItem, type BaseLegendProps, BaseTooltip, type BaseTooltipProps, type BucketInfo, type CalendarHeatmapOptions, type CalendarHeatmapResult, type ChartFormatting, type ChartLegendConfig, type ChartLegendOptions, type ChartTheme, type CompleteChartTheme, ConversionFunnelChartWithProvider as ConversionFunnelChart, type ConversionFunnelChartProps, type CrosshairStyle, type CurveType, type DataPoint, type DataPointDate, type DataPointPercentage, type EventHandlerParams, type FunnelStep, GeoChartResponsive as GeoChart, type GeoChartError, type GeoChartProps, GeoChartWithProvider as GeoChartUnresponsive, type GeoData, type GeoRegion, type GeoResolution, GlobalChartsContext, GlobalChartsProvider, GlobalChartsProvider as ThemeProvider, type GoogleDataTableColumn, GoogleDataTableColumnRoleType, type GoogleDataTableRow, type GradientConfig, type GradientStop, type GridStyles, type HeatmapCell, HeatmapChartResponsive as HeatmapChart, type HeatmapChartProps, HeatmapChart as HeatmapChartUnresponsive, type HeatmapColumn, type HeatmapTooltipData, LeaderboardChartResponsive as LeaderboardChart, type LeaderboardChartProps, LeaderboardChart as LeaderboardChartUnresponsive, type LeaderboardEntry, Legend, type LegendItemStyles, type LegendLabelStyles, type LegendPosition, type LegendProps, type LegendShape, type LegendShapeLabel, type LegendShapeRenderProps, type LegendShapeStyles, type LegendValueDisplay, LineChartResponsive as LineChart, type LineChartAnnotationProps, type LineChartProps, LineChart as LineChartUnresponsive, type LineStyles, type MainMetricRenderProps, type MetricValueType, type MultipleDataPointsDate, type Optional, type OrientationType, PieChartResponsive as PieChart, type PieChartProps, type PieChartRenderTooltipParams, PieChart as PieChartUnresponsive, PieSemiCircleChartResponsive as PieSemiCircleChart, type PieSemiCircleChartProps, type PieSemiCircleChartRenderTooltipParams, PieSemiCircleChart as PieSemiCircleChartUnresponsive, type RenderLabelProps, type RenderLineGlyphProps, type RenderTooltipGlyphProps, type RenderTooltipParams, type RenderValueProps, type ScaleOptions, type SeriesChartLegendConfig, type SeriesData, type SeriesDataOptions, type SeriesVisibilityProps, Sparkline, type SparklineDataPoint, type SparklineProps, SparklineUnresponsive, type StepLabelRenderProps, type StepRateRenderProps, type TickResolution, type TooltipData, type TooltipDatum, type TooltipPlacement, type TooltipProps, type TooltipRenderProps, type TrendDirection, TrendIndicator, type TrendIndicatorProps, type XyChartTooltipProps, buildCalendarHeatmapData, defaultTheme, formatMetricValue, formatPercentage, getBucketInfo, getColorDistance, hexToRgba, isValidHexColor, lightenHexColor, mergeThemes, mixHexColors, normalizeColorToHex, parseAsLocalDate, parseHslString, prefersLightText, relativeLuminance, resolveCssVariable, useCalendarHeatmapData, useChartFormatting, useChartLegendItems, useChartRegistration, useChartScopeElement, useGlobalChartsContext, useGlobalChartsTheme, useLeaderboardLegendItems, validateHexColor };
2188
2202
  //# sourceMappingURL=index.d.ts.map