@automattic/charts 4.9.0 → 4.11.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 (67) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/TOKENS.md +7 -3
  3. package/dist/index.cjs +496 -774
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.css +66 -3
  6. package/dist/index.d.cts +65 -60
  7. package/dist/index.d.ts +65 -60
  8. package/dist/index.js +467 -726
  9. package/dist/index.js.map +1 -1
  10. package/dist/visx/group/index.js +1 -2
  11. package/dist/visx/legend/index.js +1 -2
  12. package/dist/visx/text/index.js +1 -2
  13. package/package.json +13 -12
  14. package/src/charts/area-chart/area-chart.tsx +2 -1
  15. package/src/charts/area-chart/test/area-chart.test.tsx +0 -8
  16. package/src/charts/area-chart/types.ts +0 -2
  17. package/src/charts/bar-chart/bar-chart.tsx +7 -2
  18. package/src/charts/bar-chart/test/bar-chart.test.tsx +0 -8
  19. package/src/charts/bar-chart/types.ts +0 -2
  20. package/src/charts/bar-list-chart/bar-list-chart.tsx +3 -0
  21. package/src/charts/conversion-funnel-chart/conversion-funnel-chart.module.scss +5 -0
  22. package/src/charts/conversion-funnel-chart/conversion-funnel-chart.tsx +23 -7
  23. package/src/charts/conversion-funnel-chart/test/conversion-funnel-chart.test.tsx +22 -0
  24. package/src/charts/conversion-funnel-chart/types.ts +1 -1
  25. package/src/charts/geo-chart/geo-chart.module.scss +27 -0
  26. package/src/charts/geo-chart/geo-chart.tsx +85 -45
  27. package/src/charts/geo-chart/private/use-tooltip-position.ts +106 -0
  28. package/src/charts/geo-chart/test/geo-chart.test.tsx +77 -46
  29. package/src/charts/geo-chart/test/use-tooltip-position.test.ts +43 -0
  30. package/src/charts/geo-chart/types.ts +1 -1
  31. package/src/charts/heatmap-chart/heatmap-chart.module.scss +3 -3
  32. package/src/charts/heatmap-chart/private/heatmap-scale.ts +48 -43
  33. package/src/charts/heatmap-chart/test/heatmap-chart.test.tsx +5 -11
  34. package/src/charts/heatmap-chart/test/heatmap-scale.test.ts +55 -27
  35. package/src/charts/heatmap-chart/types.ts +1 -3
  36. package/src/charts/leaderboard-chart/hooks/use-fitted-row-count.ts +2 -2
  37. package/src/charts/leaderboard-chart/leaderboard-chart.module.scss +6 -0
  38. package/src/charts/leaderboard-chart/leaderboard-chart.tsx +34 -19
  39. package/src/charts/leaderboard-chart/test/leaderboard-chart.test.tsx +35 -6
  40. package/src/charts/leaderboard-chart/types.ts +1 -0
  41. package/src/charts/line-chart/line-chart.tsx +3 -0
  42. package/src/charts/line-chart/test/line-chart.test.tsx +0 -8
  43. package/src/charts/line-chart/types.ts +0 -2
  44. package/src/charts/pie-chart/pie-chart.module.scss +3 -0
  45. package/src/charts/pie-chart/pie-chart.tsx +0 -5
  46. package/src/charts/pie-chart/test/pie-chart.test.tsx +4 -8
  47. package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss +3 -0
  48. package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx +0 -5
  49. package/src/charts/private/pie-keyboard-navigation/pie-tooltip.tsx +8 -3
  50. package/src/charts/test/accessible-name.test.tsx +181 -0
  51. package/src/components/legend/hooks/test/use-chart-legend-items.test.tsx +63 -3
  52. package/src/components/legend/hooks/use-chart-legend-items.ts +63 -1
  53. package/src/components/legend/private/base-legend.module.scss +5 -0
  54. package/src/components/legend/private/base-legend.tsx +35 -17
  55. package/src/components/legend/test/legend.test.tsx +42 -0
  56. package/src/components/legend/types.ts +2 -0
  57. package/src/components/tooltip/_surface.scss +19 -0
  58. package/src/components/tooltip/private/bounded-tooltip.tsx +2 -2
  59. package/src/components/tooltip/tooltip-box.module.scss +3 -17
  60. package/src/hooks/test/use-xychart-theme.test.tsx +22 -0
  61. package/src/hooks/use-xychart-theme.ts +33 -2
  62. package/src/index.ts +1 -0
  63. package/src/styles/chart-scope.scss +6 -4
  64. package/src/styles/test/chart-scope.test.ts +6 -2
  65. package/src/types.ts +19 -1
  66. package/src/utils/resolve-font-size.ts +9 -10
  67. package/src/utils/test/resolve-font-size.test.ts +11 -2
package/dist/index.cjs CHANGED
@@ -6,7 +6,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
9
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod, mod.exports), cb = null), mod.exports);
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
12
  key = keys[i];
@@ -53,7 +53,6 @@ let react_google_charts = require("react-google-charts");
53
53
  let dompurify = require("dompurify");
54
54
  dompurify = __toESM(dompurify, 1);
55
55
  require("@babel/runtime/helpers/esm/extends");
56
- require("@babel/runtime/helpers/extends");
57
56
  let _wordpress_icons = require("@wordpress/icons");
58
57
  let _visx_shape = require("@visx/shape");
59
58
  //#region src/charts/private/chart-instance-context/chart-instance-context.ts
@@ -671,16 +670,17 @@ function readCustomProperty(varName, styles) {
671
670
  }
672
671
  //#endregion
673
672
  //#region src/utils/resolve-font-size.ts
673
+ const toFontSize = (size) => Number.isFinite(size) && size >= 0 ? size : void 0;
674
674
  /**
675
675
  * Resolve a theme `fontSize` value into a plain number suitable for
676
676
  * canvas-based measurement (e.g. `getStringWidth`).
677
677
  *
678
678
  * Accepts:
679
- * - A number — returned as-is
679
+ * - A finite, non-negative number — returned as-is
680
680
  * - A pixel string like `"12px"` — parsed and returned as a number
681
681
  *
682
- * Returns `undefined` for any other input (missing value, NaN, or
683
- * relative units like `rem`/`em`/`%`/`vh`) so callers can fall back to
682
+ * Returns `undefined` for any other input (missing value, a non-finite or
683
+ * negative size, or relative units like `rem`/`em`/`%`/`vh`) so callers can fall back to
684
684
  * their own default. Relative units are intentionally rejected because
685
685
  * we cannot resolve them to absolute pixels here without a parent
686
686
  * computed style, and silently returning the unitless prefix
@@ -690,12 +690,10 @@ function readCustomProperty(varName, styles) {
690
690
  * @return Parsed numeric font size in pixels, or `undefined` when unresolvable
691
691
  */
692
692
  const resolveFontSize = (val) => {
693
- if (typeof val === "number") return isNaN(val) ? void 0 : val;
693
+ if (typeof val === "number") return toFontSize(val);
694
694
  if (typeof val === "string") {
695
- const match = val.trim().match(/^(-?\d+\.?\d*|-?\.\d+)(px)?$/);
696
- if (!match) return;
697
- const parsed = parseFloat(match[1]);
698
- return isNaN(parsed) ? void 0 : parsed;
695
+ const match = val.trim().match(/^\+?((?:\d*\.)?\d+)(px)?$/);
696
+ return match ? toFontSize(parseFloat(match[1])) : void 0;
699
697
  }
700
698
  };
701
699
  //#endregion
@@ -1574,6 +1572,20 @@ const useChartScopeElement = () => (0, react.useContext)(ChartScopeContext);
1574
1572
  const useStandaloneScopeClass = () => (0, react.useContext)(GlobalChartsContext) ? void 0 : CHART_SCOPE_CLASS;
1575
1573
  //#endregion
1576
1574
  //#region src/hooks/use-xychart-theme.ts
1575
+ const STARTS_LIKE_A_NUMBER = /^[+-]?[\d.]/;
1576
+ const NON_NEGATIVE_CSS_NUMBER = /^\+?(?:\d*\.)?\d+(?:e[+-]?\d+)?(?:[a-z]+|%)?$/i;
1577
+ const isRenderableFontSize = (fontSize) => {
1578
+ if (typeof fontSize === "number") return resolveFontSize(fontSize) !== void 0;
1579
+ const value = fontSize.trim();
1580
+ if (!STARTS_LIKE_A_NUMBER.test(value)) return true;
1581
+ return NON_NEGATIVE_CSS_NUMBER.test(value) && Number.isFinite(parseFloat(value));
1582
+ };
1583
+ const withRenderableFontSize = (style) => {
1584
+ if (style?.fontSize === void 0 || isRenderableFontSize(style.fontSize)) return style;
1585
+ const rest = { ...style };
1586
+ delete rest.fontSize;
1587
+ return rest;
1588
+ };
1577
1589
  const useXYChartTheme = (data) => {
1578
1590
  const theme = useGlobalChartsTheme();
1579
1591
  const scopeElement = useChartScopeElement();
@@ -1604,9 +1616,10 @@ const useXYChartTheme = (data) => {
1604
1616
  yAxisLineStyles: { stroke: CATALOG_POINTERS.axisY },
1605
1617
  yTickLineStyles: { stroke: CATALOG_POINTERS.tickY },
1606
1618
  svgLabelSmall: {
1607
- ...theme.svgLabelSmall,
1619
+ ...withRenderableFontSize(theme.svgLabelSmall),
1608
1620
  fill: CATALOG_POINTERS.labelAxis
1609
- }
1621
+ },
1622
+ svgLabelBig: withRenderableFontSize(theme.svgLabelBig)
1610
1623
  });
1611
1624
  }, [
1612
1625
  theme,
@@ -2081,6 +2094,7 @@ function valueOrIdentityString(_) {
2081
2094
  //#region src/components/legend/private/base-legend.module.scss
2082
2095
  var base_legend_module_default = {
2083
2096
  "legend": "a8ccharts-04TogW-legend",
2097
+ "legend--horizontal": "a8ccharts-04TogW-legend--horizontal",
2084
2098
  "legend-item": "a8ccharts-04TogW-legend-item",
2085
2099
  "legend-item--inactive": "a8ccharts-04TogW-legend-item--inactive",
2086
2100
  "legend-item--interactive": "a8ccharts-04TogW-legend-item--interactive",
@@ -2119,7 +2133,7 @@ const getLegendItemAriaLabel = (text, value, visible, interactive) => {
2119
2133
  if (visible) return;
2120
2134
  return (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n._x)("%s: hidden", "hidden non-interactive legend item", "jetpack-charts"), accessibleText);
2121
2135
  };
2122
- const BaseLegend = (0, react.forwardRef)(({ items, className, orientation = "horizontal", alignment = "center", shape = "rect", fill = valueOrIdentityString, size = valueOrIdentityString, labelFormat = valueOrIdentity, labelTransform, itemStyles, itemClassName, labelStyles, labelClassName, shapeStyles, render, interactive = false, chartId }, ref) => {
2136
+ const BaseLegend = (0, react.forwardRef)(({ items: allItems, className, orientation = "horizontal", alignment = "center", shape = "rect", fill = valueOrIdentityString, size = valueOrIdentityString, labelFormat = valueOrIdentity, labelTransform, itemStyles, itemClassName, labelStyles, labelClassName, shapeStyles, render, interactive = false, chartId }, ref) => {
2123
2137
  const { margin: itemMargin = "0", flexDirection: itemDirection = "row" } = itemStyles ?? {};
2124
2138
  const { justifyContent: labelJustifyContent = "flex-start", flex: labelFlex = "0 0 auto", margin: labelMargin = "0 4px", maxWidth, textOverflow = "wrap" } = labelStyles ?? {};
2125
2139
  const { width: shapeWidth = 16, height: shapeHeight = 16, margin: shapeMargin = "2px 4px 2px 0" } = shapeStyles ?? {};
@@ -2127,6 +2141,16 @@ const BaseLegend = (0, react.forwardRef)(({ items, className, orientation = "hor
2127
2141
  const context = (0, react.useContext)(GlobalChartsContext);
2128
2142
  const chartInstanceContext = (0, react.useContext)(ChartInstanceContext);
2129
2143
  const standaloneScopeClass = useStandaloneScopeClass();
2144
+ const isSeriesVisible = (0, react.useCallback)((seriesLabel) => {
2145
+ if (chartInstanceContext?.isSeriesVisible) return chartInstanceContext.isSeriesVisible(seriesLabel);
2146
+ if (!chartId || !context) return true;
2147
+ return context.isSeriesVisible(chartId, seriesLabel);
2148
+ }, [
2149
+ chartId,
2150
+ chartInstanceContext,
2151
+ context
2152
+ ]);
2153
+ const items = (0, react.useMemo)(() => allItems.filter((item) => item.interactive !== false || !item.describesSeries || isSeriesVisible(item.describesSeries)), [allItems, isSeriesVisible]);
2130
2154
  const domain = items.map((item) => item.label);
2131
2155
  const legendScale = (0, _visx_scale.scaleOrdinal)({
2132
2156
  domain,
@@ -2149,15 +2173,6 @@ const BaseLegend = (0, react.forwardRef)(({ items, className, orientation = "hor
2149
2173
  chartId,
2150
2174
  context
2151
2175
  ]);
2152
- const isSeriesVisible = (0, react.useCallback)((seriesLabel) => {
2153
- if (chartInstanceContext?.isSeriesVisible) return chartInstanceContext.isSeriesVisible(seriesLabel);
2154
- if (!chartId || !context) return true;
2155
- return context.isSeriesVisible(chartId, seriesLabel);
2156
- }, [
2157
- chartId,
2158
- chartInstanceContext,
2159
- context
2160
- ]);
2161
2176
  const createClickHandler = (0, react.useCallback)((seriesLabels, itemInteractive) => {
2162
2177
  if (!itemInteractive) return;
2163
2178
  return () => handleLegendClick(seriesLabels);
@@ -2181,12 +2196,12 @@ const BaseLegend = (0, react.forwardRef)(({ items, className, orientation = "hor
2181
2196
  children: (labels) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_wordpress_ui.Stack, {
2182
2197
  ref,
2183
2198
  direction: orientation === "vertical" ? "column" : "row",
2184
- gap: orientation === "vertical" ? "sm" : "lg",
2199
+ gap: orientation === "vertical" ? "sm" : void 0,
2185
2200
  align: orientation === "vertical" ? flexAlignment : void 0,
2186
2201
  justify: orientation === "horizontal" ? flexAlignment : void 0,
2187
2202
  wrap: orientation === "horizontal" ? "wrap" : void 0,
2188
2203
  role: interactive ? void 0 : "list",
2189
- className: (0, clsx.default)(standaloneScopeClass, base_legend_module_default.legend, className),
2204
+ className: (0, clsx.default)(standaloneScopeClass, base_legend_module_default.legend, orientation === "horizontal" && base_legend_module_default["legend--horizontal"], className),
2190
2205
  style: theme.legend?.containerStyles,
2191
2206
  children: labels.map((label, i) => {
2192
2207
  const matchedItem = items[i];
@@ -2432,6 +2447,34 @@ function buildComparisonLegendItem(seriesData, items, label, getElementStyles, l
2432
2447
  };
2433
2448
  }
2434
2449
  /**
2450
+ * Builds one static item per comparison series folded into another series' item, named after
2451
+ * that item and styled like the comparison series itself.
2452
+ * @param seriesData - The series data to search for comparison series
2453
+ * @param items - The legend items already built from the series
2454
+ * @param formatLabel - Names an item after the label of the item it was folded into
2455
+ * @param getElementStyles - Function to get element styles
2456
+ * @param legendShape - The shape type for legend items (string literal or React component)
2457
+ * @return The legend items, in series order
2458
+ */
2459
+ function buildPerSeriesComparisonItems(seriesData, items, formatLabel, getElementStyles, legendShape) {
2460
+ return seriesData.flatMap((series, index) => {
2461
+ const owner = items.find((item) => item.seriesLabels?.includes(series.label));
2462
+ if (series.options?.type !== "comparison" || !owner || owner.seriesLabels?.[0] === series.label) return [];
2463
+ const { color, shapeStyles } = getElementStyles({
2464
+ data: series,
2465
+ index,
2466
+ legendShape
2467
+ });
2468
+ return [{
2469
+ label: formatLabel(owner.label),
2470
+ color,
2471
+ shapeStyle: shapeStyles,
2472
+ interactive: false,
2473
+ describesSeries: series.label
2474
+ }];
2475
+ });
2476
+ }
2477
+ /**
2435
2478
  * Processes point data into legend items
2436
2479
  * @param pointData - The point data to process
2437
2480
  * @param getElementStyles - Function to get element styles
@@ -2467,13 +2510,14 @@ function processPointData(pointData, getElementStyles, showValues, legendValueDi
2467
2510
  * @return Array of legend items ready for display
2468
2511
  */
2469
2512
  function useChartLegendItems(data, options = {}, legendShape) {
2470
- const { showValues = false, legendValueDisplay = "percentage", withGlyph = false, glyphSize = 8, collapseGroups = false, comparisonItem = false, renderGlyph } = options;
2513
+ const { showValues = false, legendValueDisplay = "percentage", withGlyph = false, glyphSize = 8, collapseGroups = false, comparisonItem = false, comparisonSeriesItems, renderGlyph } = options;
2471
2514
  const { getElementStyles } = useGlobalChartsContext();
2472
2515
  return (0, react.useMemo)(() => {
2473
2516
  if (!data || !Array.isArray(data) || data.length === 0) return [];
2474
2517
  if ("data" in data[0]) {
2475
2518
  const seriesData = data;
2476
2519
  const items = processSeriesData(seriesData, getElementStyles, showValues, withGlyph, glyphSize, collapseGroups, renderGlyph, legendShape);
2520
+ if (comparisonSeriesItems) return [...items, ...buildPerSeriesComparisonItems(seriesData, items, comparisonSeriesItems, getElementStyles, legendShape)];
2477
2521
  const comparison = comparisonItem ? buildComparisonLegendItem(seriesData, items, typeof comparisonItem === "string" ? comparisonItem : (0, _wordpress_i18n.__)("Comparison period", "jetpack-charts"), getElementStyles, legendShape) : null;
2478
2522
  return comparison ? [...items, comparison] : items;
2479
2523
  }
@@ -2487,6 +2531,7 @@ function useChartLegendItems(data, options = {}, legendShape) {
2487
2531
  glyphSize,
2488
2532
  collapseGroups,
2489
2533
  comparisonItem,
2534
+ comparisonSeriesItems,
2490
2535
  renderGlyph,
2491
2536
  legendShape
2492
2537
  ]);
@@ -2581,9 +2626,6 @@ const BaseTooltip = ({ data, top, left, component: Component = LabelValueContent
2581
2626
  children: content
2582
2627
  });
2583
2628
  };
2584
- //#endregion
2585
- //#region src/components/tooltip/private/bounded-tooltip.tsx
2586
- const DEFAULT_OFFSET = 10;
2587
2629
  const POINTER_HEIGHT = 6;
2588
2630
  const clamp = (position, min, max, size) => Math.min(Math.max(position, min), Math.max(min, max - size));
2589
2631
  const isClipping = (element) => {
@@ -2680,7 +2722,7 @@ const getBoundedPosition = ({ left, top, offsetLeft, offsetTop, box, wrapper, bo
2680
2722
  * @param props.placement - Below-axis, beside without vertical flipping, or automatic flipping.
2681
2723
  * @return The tooltip box.
2682
2724
  */
2683
- const BoundedTooltip = ({ left = 0, top = 0, offsetLeft = DEFAULT_OFFSET, offsetTop = DEFAULT_OFFSET, style, unstyled = false, className, children, placement = "auto", ...rest }) => {
2725
+ const BoundedTooltip = ({ left = 0, top = 0, offsetLeft = 10, offsetTop = 10, style, unstyled = false, className, children, placement = "auto", ...rest }) => {
2684
2726
  const nodeRef = (0, react.useRef)(null);
2685
2727
  const clipRef = (0, react.useRef)(null);
2686
2728
  const [position, setPosition] = (0, react.useState)(null);
@@ -4728,6 +4770,7 @@ const LineChartInternal = (0, react.forwardRef)(({ data, ariaLabel, chartId: pro
4728
4770
  const legendInteractive = legend.interactive ?? false;
4729
4771
  const legendCollapseGroups = legend.collapseGroups ?? false;
4730
4772
  const legendComparisonItem = legend.comparisonItem ?? false;
4773
+ const legendComparisonSeriesItems = legend.comparisonSeriesItems;
4731
4774
  const legendShape = legend.shape ?? "line";
4732
4775
  const legendPosition = legend.position ?? "bottom";
4733
4776
  const formatting = useChartFormatting();
@@ -4912,12 +4955,14 @@ const LineChartInternal = (0, react.forwardRef)(({ data, ariaLabel, chartId: pro
4912
4955
  glyphSize: Math.max(0, toNumber(glyphStyle?.radius) ?? 4),
4913
4956
  collapseGroups: legendCollapseGroups,
4914
4957
  comparisonItem: legendComparisonItem,
4958
+ comparisonSeriesItems: legendComparisonSeriesItems,
4915
4959
  renderGlyph
4916
4960
  }), [
4917
4961
  withLegendGlyph,
4918
4962
  glyphStyle?.radius,
4919
4963
  legendCollapseGroups,
4920
4964
  legendComparisonItem,
4965
+ legendComparisonSeriesItems,
4921
4966
  renderGlyph
4922
4967
  ]), legendShape);
4923
4968
  const chartMetadata = (0, react.useMemo)(() => ({
@@ -5386,8 +5431,13 @@ const AreaChartInternal = (0, react.forwardRef)(({ data, ariaLabel, chartId: pro
5386
5431
  withGlyph: false,
5387
5432
  glyphSize: 0,
5388
5433
  collapseGroups: legend.collapseGroups ?? false,
5389
- comparisonItem: legend.comparisonItem ?? false
5390
- }), [legend.collapseGroups, legend.comparisonItem]), legendShape);
5434
+ comparisonItem: legend.comparisonItem ?? false,
5435
+ comparisonSeriesItems: legend.comparisonSeriesItems
5436
+ }), [
5437
+ legend.collapseGroups,
5438
+ legend.comparisonItem,
5439
+ legend.comparisonSeriesItems
5440
+ ]), legendShape);
5391
5441
  const chartMetadata = (0, react.useMemo)(() => ({
5392
5442
  stacked,
5393
5443
  stackOffset,
@@ -6380,6 +6430,7 @@ const BarChartInternal = ({ data, ariaLabel, chartId: providedChartId, width, he
6380
6430
  const legendInteractive = legend.interactive ?? false;
6381
6431
  const legendCollapseGroups = legend.collapseGroups ?? false;
6382
6432
  const legendComparisonItem = legend.comparisonItem ?? false;
6433
+ const legendComparisonSeriesItems = legend.comparisonSeriesItems;
6383
6434
  const horizontal = orientation === "horizontal";
6384
6435
  const chartId = useChartId(providedChartId);
6385
6436
  const hiddenSeries = useDefaultHiddenSeries(chartId, defaultHiddenSeries);
@@ -6392,8 +6443,13 @@ const BarChartInternal = ({ data, ariaLabel, chartId: providedChartId, width, he
6392
6443
  });
6393
6444
  const legendItems = useChartLegendItems(dataSorted, (0, react.useMemo)(() => ({
6394
6445
  collapseGroups: legendCollapseGroups,
6395
- comparisonItem: legendComparisonItem
6396
- }), [legendCollapseGroups, legendComparisonItem]));
6446
+ comparisonItem: legendComparisonItem,
6447
+ comparisonSeriesItems: legendComparisonSeriesItems
6448
+ }), [
6449
+ legendCollapseGroups,
6450
+ legendComparisonItem,
6451
+ legendComparisonSeriesItems
6452
+ ]));
6397
6453
  const { getElementStyles } = useGlobalChartsContext();
6398
6454
  const isSeriesRendered = (0, react.useCallback)((series) => isSeriesVisible(series.label), [isSeriesVisible]);
6399
6455
  const hasWholeNumberValues = (0, react.useMemo)(() => hasOnlyWholeNumbers(dataSorted.filter(isSeriesRendered)), [dataSorted, isSeriesRendered]);
@@ -6904,7 +6960,7 @@ const BarListChartInternal = ({ data, width, height, options = {}, margin = {
6904
6960
  right: 20,
6905
6961
  bottom: 0,
6906
6962
  top: 0
6907
- }, className, ...rest }) => {
6963
+ }, className, ariaLabel, ...rest }) => {
6908
6964
  const { getElementStyles } = useGlobalChartsContext();
6909
6965
  const tintedData = (0, react.useMemo)(() => {
6910
6966
  if (data.length > 1) return data;
@@ -6979,6 +7035,7 @@ const BarListChartInternal = ({ data, width, height, options = {}, margin = {
6979
7035
  xScale: chartOptions.xScale,
6980
7036
  yScale: chartOptions.yScale
6981
7037
  },
7038
+ ariaLabel: ariaLabel ?? (0, _wordpress_i18n.__)("Bar list chart", "jetpack-charts"),
6982
7039
  ...rest
6983
7040
  });
6984
7041
  };
@@ -7054,6 +7111,8 @@ const useFunnelSelection = (hideTooltip) => {
7054
7111
  };
7055
7112
  //#endregion
7056
7113
  //#region src/charts/conversion-funnel-chart/conversion-funnel-chart.tsx
7114
+ /** Chart height (px) below which the funnel tightens its gaps so the bars keep their room. */
7115
+ const SHORT_CHART_HEIGHT = 180;
7057
7116
  /**
7058
7117
  * Internal ConversionFunnelChart component with chart registration
7059
7118
  *
@@ -7065,6 +7124,7 @@ const useFunnelSelection = (hideTooltip) => {
7065
7124
  * @param props.loading - Whether the chart is in loading state
7066
7125
  * @param props.animation - Whether to show chart animation on initial render or not
7067
7126
  * @param props.className - Additional CSS class name
7127
+ * @param props.ariaLabel - Accessible name for the chart group
7068
7128
  * @param props.height - Height of the chart container. Falls back to style.height if set, otherwise defaults to "100%".
7069
7129
  * @param props.style - Custom styling
7070
7130
  * @param props.renderStepLabel - Custom render function for step labels
@@ -7074,7 +7134,7 @@ const useFunnelSelection = (hideTooltip) => {
7074
7134
  * @param props.tooltipStyle - Inline styles merged over the tooltip box defaults
7075
7135
  * @return JSX element representing the conversion funnel chart
7076
7136
  */
7077
- const ConversionFunnelChartInternal = ({ mainRate, changeIndicator, steps, loading = false, animation, className, chartId: providedChartId, height, style, renderStepLabel, renderStepRate, renderMainMetric, renderTooltip, tooltipStyle }) => {
7137
+ const ConversionFunnelChartInternal = ({ mainRate, changeIndicator, steps, loading = false, animation, className, ariaLabel, chartId: providedChartId, height, style, renderStepLabel, renderStepRate, renderMainMetric, renderTooltip, tooltipStyle }) => {
7078
7138
  const chartId = useChartId(providedChartId);
7079
7139
  const { getElementStyles, isColorPaletteResolved } = useGlobalChartsContext();
7080
7140
  const chartRef = (0, react.useRef)(null);
@@ -7083,10 +7143,13 @@ const ConversionFunnelChartInternal = ({ mainRate, changeIndicator, steps, loadi
7083
7143
  const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } = (0, _visx_tooltip.useTooltip)();
7084
7144
  const { handleBarClick, handleBarKeyDown, clearSelection, getStepState } = useFunnelSelection(hideTooltip);
7085
7145
  const standaloneScopeClass = useStandaloneScopeClass();
7146
+ const [measureChartRef, , chartHeight] = useElementSize();
7147
+ const gap = chartHeight > 0 && chartHeight < SHORT_CHART_HEIGHT ? "sm" : "xl";
7086
7148
  const setChartRef = (0, react.useCallback)((node) => {
7087
7149
  chartRef.current = node;
7088
7150
  setScopeNode(node);
7089
- }, []);
7151
+ measureChartRef(node);
7152
+ }, [measureChartRef]);
7090
7153
  const clearSelectionAndRef = (0, react.useCallback)(() => {
7091
7154
  clearSelection();
7092
7155
  selectedBarRef.current = null;
@@ -7234,7 +7297,9 @@ const ConversionFunnelChartInternal = ({ mainRate, changeIndicator, steps, loadi
7234
7297
  const maxRate = Math.max(...steps.map((step) => step.rate));
7235
7298
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_wordpress_ui.Stack, {
7236
7299
  direction: "column",
7237
- gap: "xl",
7300
+ gap,
7301
+ role: "group",
7302
+ "aria-label": ariaLabel ?? (0, _wordpress_i18n.__)("Conversion funnel chart", "jetpack-charts"),
7238
7303
  ref: setChartRef,
7239
7304
  className: (0, clsx.default)("conversion-funnel-chart", conversion_funnel_chart_module_default["conversion-funnel-chart"], loading && conversion_funnel_chart_module_default["conversion-funnel-chart--loading"], className),
7240
7305
  style: {
@@ -7265,7 +7330,7 @@ const ConversionFunnelChartInternal = ({ mainRate, changeIndicator, steps, loadi
7265
7330
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_wordpress_ui.Stack, {
7266
7331
  direction: "column",
7267
7332
  className: (0, clsx.default)(conversion_funnel_chart_module_default["funnel-step"], isColorPaletteResolved && conversion_funnel_chart_module_default["funnel-step--animated"], isBlurred && conversion_funnel_chart_module_default["funnel-step--blurred"]),
7268
- gap: "xl",
7333
+ gap,
7269
7334
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_wordpress_ui.Stack, {
7270
7335
  direction: "column",
7271
7336
  gap: "xs",
@@ -7389,6 +7454,91 @@ function sanitizeHtml(html) {
7389
7454
  //#region src/charts/geo-chart/geo-chart.module.scss
7390
7455
  var geo_chart_module_default = { "container": "a8ccharts-8hS2IW-container" };
7391
7456
  //#endregion
7457
+ //#region src/charts/geo-chart/private/use-tooltip-position.ts
7458
+ const TOOLTIP_CLASS = "google-visualization-tooltip";
7459
+ const isTooltip = (node) => node instanceof HTMLElement && node.classList.contains(TOOLTIP_CLASS);
7460
+ /**
7461
+ * Moves Google's HTML tooltip to where the other chart tooltips sit, just off the cursor. Google places it about 30px away and has no option for it.
7462
+ *
7463
+ * @param containerRef - The element Google draws the chart into.
7464
+ */
7465
+ function useTooltipPosition(containerRef) {
7466
+ (0, react.useEffect)(() => {
7467
+ const container = containerRef.current;
7468
+ if (!container || typeof MutationObserver === "undefined") return;
7469
+ let pointer = null;
7470
+ let clip = null;
7471
+ const ownStyles = /* @__PURE__ */ new WeakMap();
7472
+ const place = (tooltip) => {
7473
+ const parent = tooltip.offsetParent;
7474
+ if (!pointer || !parent) return;
7475
+ if (clip?.parent !== parent) clip = {
7476
+ parent,
7477
+ element: findClippingAncestor(parent)
7478
+ };
7479
+ const parentRect = parent.getBoundingClientRect();
7480
+ const clipRect = clip.element?.getBoundingClientRect() ?? {
7481
+ left: 0,
7482
+ top: 0,
7483
+ right: window.innerWidth,
7484
+ bottom: window.innerHeight
7485
+ };
7486
+ const { x, y } = getBoundedPosition({
7487
+ left: pointer.x - parentRect.left,
7488
+ top: pointer.y - parentRect.top,
7489
+ offsetLeft: 10,
7490
+ offsetTop: 10,
7491
+ box: {
7492
+ width: tooltip.offsetWidth,
7493
+ height: tooltip.offsetHeight
7494
+ },
7495
+ wrapper: {
7496
+ left: 0,
7497
+ top: 0,
7498
+ right: parentRect.width,
7499
+ bottom: parentRect.height
7500
+ },
7501
+ bounds: {
7502
+ left: clipRect.left - parentRect.left,
7503
+ top: clipRect.top - parentRect.top,
7504
+ right: clipRect.right - parentRect.left,
7505
+ bottom: clipRect.bottom - parentRect.top
7506
+ }
7507
+ });
7508
+ tooltip.style.left = `${x}px`;
7509
+ tooltip.style.top = `${y}px`;
7510
+ ownStyles.set(tooltip, tooltip.style.cssText);
7511
+ };
7512
+ const trackPointer = (event) => {
7513
+ pointer = {
7514
+ x: event.clientX,
7515
+ y: event.clientY
7516
+ };
7517
+ };
7518
+ const observer = new MutationObserver((records) => {
7519
+ const tooltips = /* @__PURE__ */ new Set();
7520
+ for (const record of records) {
7521
+ if (isTooltip(record.target)) tooltips.add(record.target);
7522
+ record.addedNodes.forEach((node) => isTooltip(node) && tooltips.add(node));
7523
+ }
7524
+ for (const tooltip of tooltips) if (ownStyles.get(tooltip) !== tooltip.style.cssText) place(tooltip);
7525
+ });
7526
+ container.addEventListener("mouseover", trackPointer, true);
7527
+ container.addEventListener("mousemove", trackPointer, true);
7528
+ observer.observe(container, {
7529
+ childList: true,
7530
+ subtree: true,
7531
+ attributes: true,
7532
+ attributeFilter: ["style"]
7533
+ });
7534
+ return () => {
7535
+ container.removeEventListener("mouseover", trackPointer, true);
7536
+ container.removeEventListener("mousemove", trackPointer, true);
7537
+ observer.disconnect();
7538
+ };
7539
+ }, [containerRef]);
7540
+ }
7541
+ //#endregion
7392
7542
  //#region src/charts/geo-chart/geo-chart.tsx
7393
7543
  /**
7394
7544
  * External dependencies
@@ -7431,6 +7581,23 @@ function involvesGeoChartErrorElement(node) {
7431
7581
  if (!(node instanceof HTMLElement)) return false;
7432
7582
  return node.id.startsWith(GOOGLE_CHARTS_ERROR_ID_PREFIX) || node.querySelector(`[id^="${GOOGLE_CHARTS_ERROR_ID_PREFIX}"]`) !== null;
7433
7583
  }
7584
+ const isTooltipColumn = (column) => typeof column === "object" && column !== null && "role" in column && column.role === "tooltip";
7585
+ const hasHtmlFlag = (columnOrCell) => typeof columnOrCell === "object" && columnOrCell !== null && "p" in columnOrCell && typeof columnOrCell.p === "object" && columnOrCell.p !== null && "html" in columnOrCell.p && !!columnOrCell.p.html;
7586
+ const sanitizeIfString = (value) => typeof value === "string" ? sanitizeHtml(value) : value;
7587
+ /**
7588
+ * Sanitizes a tooltip cell Google will render as markup, whether a string or a `{ v, f, p }` object.
7589
+ *
7590
+ * @param cell - The tooltip cell.
7591
+ * @return The cell with its markup sanitized.
7592
+ */
7593
+ function sanitizeTooltipCell(cell) {
7594
+ if (typeof cell !== "object" || cell === null) return sanitizeIfString(cell);
7595
+ return {
7596
+ ...cell,
7597
+ ..."v" in cell && { v: sanitizeIfString(cell.v) },
7598
+ ..."f" in cell && { f: sanitizeIfString(cell.f) }
7599
+ };
7600
+ }
7434
7601
  /**
7435
7602
  * Normalizes the raw Google Charts error event into the GeoChart error shape.
7436
7603
  *
@@ -7459,6 +7626,7 @@ function normalizeGeoChartError(eventArgs) {
7459
7626
  *
7460
7627
  * @param props - The props for the GeoChart component
7461
7628
  * @param props.data - Data in Google Charts format (array of arrays with headers)
7629
+ * @param props.ariaLabel - Accessible name of the chart
7462
7630
  * @param props.width - Width of the chart in pixels
7463
7631
  * @param props.height - Height of the chart in pixels
7464
7632
  * @param props.region - Region to display ('world', 'US', or ISO 3166-1 alpha-2 code)
@@ -7470,11 +7638,12 @@ function normalizeGeoChartError(eventArgs) {
7470
7638
  * @param props.renderPlaceholder - Optional render function for the loading placeholder
7471
7639
  * @return A React component displaying an interactive map with data visualization
7472
7640
  */
7473
- const GeoChartInternal = ({ className, data, width, height, region = "world", resolution = "countries", displayMode = "regions", domain, onError, renderPlaceholder }) => {
7641
+ const GeoChartInternal = ({ className, data, ariaLabel, width, height, region = "world", resolution = "countries", displayMode = "regions", domain, onError, renderPlaceholder }) => {
7474
7642
  const { getElementStyles } = useGlobalChartsContext();
7475
7643
  const scopeElement = useChartScopeElement();
7476
7644
  const containerRef = (0, react.useRef)(null);
7477
7645
  const reportedErrorIdsRef = (0, react.useRef)(/* @__PURE__ */ new Set());
7646
+ const [isLoaded, setIsLoaded] = (0, react.useState)(false);
7478
7647
  (0, react.useEffect)(() => {
7479
7648
  const container = containerRef.current;
7480
7649
  if (!onError || !container || typeof MutationObserver === "undefined") return;
@@ -7495,6 +7664,8 @@ const GeoChartInternal = ({ className, data, width, height, region = "world", re
7495
7664
  reportRenderedErrors();
7496
7665
  return () => observer.disconnect();
7497
7666
  }, [onError]);
7667
+ useTooltipPosition(containerRef);
7668
+ const handleLoad = (0, react.useCallback)(() => setIsLoaded(true), []);
7498
7669
  const loadingPlaceholder = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Center, {
7499
7670
  className: (0, clsx.default)("geo-chart", geo_chart_module_default.container, className),
7500
7671
  style: {
@@ -7508,28 +7679,18 @@ const GeoChartInternal = ({ className, data, width, height, region = "world", re
7508
7679
  const backgroundColorHex = normalizeColorToHex(CATALOG_POINTERS.background, scopeElement, resolveCssVariable) || DEFAULT_BACKGROUND_COLOR;
7509
7680
  const defaultFillColorHex = normalizeColorToHex(CATALOG_POINTERS.surfaceSecondary, scopeElement, resolveCssVariable) || DEFAULT_FEATURE_FILL_COLOR;
7510
7681
  const sanitizedData = (0, react.useMemo)(() => {
7511
- if (data.length === 0) return {
7512
- data,
7513
- hasHtmlTooltips: false
7514
- };
7515
- const htmlTooltipIndices = [];
7516
- for (let i = 0; i < data[0].length; i++) {
7517
- const col = data[0][i];
7518
- if (typeof col === "object" && col !== null && "role" in col && col.role === "tooltip" && "p" in col && typeof col.p === "object" && col.p !== null && "html" in col.p && col.p.html === true) htmlTooltipIndices.push(i);
7519
- }
7520
- if (htmlTooltipIndices.length === 0) return {
7521
- data,
7522
- hasHtmlTooltips: false
7523
- };
7682
+ if (data.length === 0) return data;
7683
+ const tooltipColumns = data[0].flatMap((column, index) => isTooltipColumn(column) ? [{
7684
+ index,
7685
+ isHtml: hasHtmlFlag(column)
7686
+ }] : []);
7687
+ if (tooltipColumns.length === 0) return data;
7524
7688
  const sanitizedRows = data.slice(1).map((row) => {
7525
7689
  const newRow = [...row];
7526
- for (const colIndex of htmlTooltipIndices) if (typeof newRow[colIndex] === "string") newRow[colIndex] = sanitizeHtml(newRow[colIndex]);
7690
+ for (const { index, isHtml } of tooltipColumns) if (isHtml || hasHtmlFlag(newRow[index])) newRow[index] = sanitizeTooltipCell(newRow[index]);
7527
7691
  return newRow;
7528
7692
  });
7529
- return {
7530
- data: [data[0], ...sanitizedRows],
7531
- hasHtmlTooltips: true
7532
- };
7693
+ return [data[0], ...sanitizedRows];
7533
7694
  }, [data]);
7534
7695
  const options = (0, react.useMemo)(() => ({
7535
7696
  ...region !== "world" && { region },
@@ -7542,7 +7703,7 @@ const GeoChartInternal = ({ className, data, width, height, region = "world", re
7542
7703
  defaultColor: defaultFillColorHex,
7543
7704
  tooltip: {
7544
7705
  trigger: "focus",
7545
- isHtml: sanitizedData.hasHtmlTooltips
7706
+ isHtml: true
7546
7707
  },
7547
7708
  legend: "none",
7548
7709
  keepAspectRatio: true
@@ -7554,35 +7715,42 @@ const GeoChartInternal = ({ className, data, width, height, region = "world", re
7554
7715
  lightColorHex,
7555
7716
  fullColorHex,
7556
7717
  backgroundColorHex,
7557
- defaultFillColorHex,
7558
- sanitizedData.hasHtmlTooltips
7718
+ defaultFillColorHex
7559
7719
  ]);
7560
7720
  const chartEvents = (0, react.useMemo)(() => {
7561
- if (!onError) return;
7562
- return [{
7721
+ const readyEvent = {
7722
+ eventName: "ready",
7723
+ callback: () => {
7724
+ containerRef.current?.querySelectorAll("svg").forEach((svg) => svg.setAttribute("aria-hidden", "true"));
7725
+ }
7726
+ };
7727
+ if (!onError) return [readyEvent];
7728
+ return [readyEvent, {
7563
7729
  eventName: "error",
7564
7730
  callback: ({ eventArgs }) => {
7565
7731
  onError(normalizeGeoChartError(eventArgs));
7566
7732
  }
7567
7733
  }];
7568
7734
  }, [onError]);
7569
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Center, {
7735
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Center, {
7570
7736
  ref: containerRef,
7737
+ role: "group",
7738
+ "aria-label": ariaLabel ?? (0, _wordpress_i18n.__)("Geo chart", "jetpack-charts"),
7571
7739
  className: (0, clsx.default)("geo-chart", geo_chart_module_default.container, className),
7572
7740
  style: {
7573
7741
  width,
7574
7742
  height
7575
7743
  },
7576
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_google_charts.Chart, {
7744
+ children: [!isLoaded && loadingPlaceholder, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TooltipTheme, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_google_charts.Chart, {
7577
7745
  chartType: "GeoChart",
7578
7746
  chartPackages: GEO_CHART_PACKAGES,
7579
7747
  width,
7580
7748
  height,
7581
- data: sanitizedData.data,
7749
+ data: sanitizedData,
7582
7750
  options,
7583
7751
  chartEvents,
7584
- loader: loadingPlaceholder
7585
- })
7752
+ onLoad: handleLoad
7753
+ }) })]
7586
7754
  });
7587
7755
  };
7588
7756
  const GeoChartWithProvider = (props) => {
@@ -7757,16 +7925,10 @@ const getNormalizedValue = (value, extent) => {
7757
7925
  return Math.min(1, Math.max(0, (value - min) / (max - min)));
7758
7926
  };
7759
7927
  const STEPS = 200;
7760
- const firstMeeting = (from, to, meets) => {
7761
- for (let step = 0; step <= STEPS; step++) {
7762
- const color = mixHexColors(from, to, step / STEPS);
7763
- if (meets(color)) return color;
7764
- }
7765
- return null;
7766
- };
7928
+ const ramp = (from, to) => Array.from({ length: 201 }, (_, step) => mixHexColors(from, to, step / STEPS));
7767
7929
  /**
7768
- * The two ends of the heatmap fill scale: 3:1 against the background and the empty cell at the
7769
- * low end, toward 9:1 against the background at the high end.
7930
+ * The two ends of the heatmap fill scale: toward 2.5:1 against the background and the empty cell at
7931
+ * the low end, never under 2:1 against the background or the high end, and toward 6:1 at the high end.
7770
7932
  *
7771
7933
  * @param primary - The resolved primary color, as six-digit hex.
7772
7934
  * @param background - The resolved chart background, as six-digit hex.
@@ -7774,16 +7936,19 @@ const firstMeeting = (from, to, meets) => {
7774
7936
  * @return The scale ends, as six-digit hex.
7775
7937
  */
7776
7938
  const getHeatmapScale = (primary, background, emptyCell) => {
7777
- const primaryStandsOut = contrastRatio(primary, background) >= 3;
7778
- const extreme = (primaryStandsOut ? relativeLuminance(primary) > relativeLuminance(background) : contrastRatio("#ffffff", background) > contrastRatio("#000000", background)) ? "#ffffff" : "#000000";
7779
- const lowAgainst = (references) => {
7780
- const meets = (color) => references.every((reference) => contrastRatio(color, reference) >= 3);
7781
- return (primaryStandsOut ? firstMeeting(background, primary, meets) : null) ?? firstMeeting(primary, extreme, meets);
7782
- };
7783
- const high = firstMeeting(primary, extreme, (color) => contrastRatio(color, background) >= 9) ?? extreme;
7784
- const againstEmptyCell = emptyCell ? lowAgainst([background, emptyCell]) : null;
7939
+ const backgroundLuminance = relativeLuminance(background);
7940
+ const ownSide = relativeLuminance(primary) > backgroundLuminance ? "#ffffff" : "#000000";
7941
+ const otherSide = ownSide === "#ffffff" ? "#000000" : "#ffffff";
7942
+ const extreme = contrastRatio(ownSide, background) >= 6 || contrastRatio(ownSide, background) >= contrastRatio(otherSide, background) ? ownSide : otherSide;
7943
+ const onExtremeSide = (color) => extreme === "#ffffff" ? relativeLuminance(color) > backgroundLuminance : relativeLuminance(color) < backgroundLuminance;
7944
+ const deepening = ramp(primary, extreme);
7945
+ const high = deepening.find((color) => contrastRatio(color, background) >= 6) ?? extreme;
7946
+ const path = [...ramp(background, primary), ...deepening];
7947
+ const spread = path.slice(0, path.indexOf(high) + 1).filter((color) => onExtremeSide(color) && contrastRatio(color, background) >= 2 && contrastRatio(color, high) >= 2);
7948
+ const surroundings = emptyCell ? [background, emptyCell] : [background];
7949
+ const weakest = (color) => Math.min(...surroundings.map((other) => contrastRatio(color, other)));
7785
7950
  return {
7786
- low: (againstEmptyCell && contrastRatio(againstEmptyCell, background) <= contrastRatio(high, background) ? againstEmptyCell : lowAgainst([background])) ?? extreme,
7951
+ low: spread.find((color) => weakest(color) >= 2.5) ?? spread.find((color) => weakest(color) >= 2) ?? spread.reduce((best, color) => weakest(color) > weakest(best) ? color : best),
7787
7952
  high
7788
7953
  };
7789
7954
  };
@@ -8122,7 +8287,7 @@ const CELL_VALUE_MODIFIER = {
8122
8287
  white: heatmap_chart_module_default["heatmap-chart__cell-value--white"]
8123
8288
  };
8124
8289
  const NO_ROW_LABELS = [];
8125
- const TOOLTIP_BOX_STYLE = { zIndex: 3 };
8290
+ const TOOLTIP_BOX_STYLE$1 = { zIndex: 3 };
8126
8291
  const largest = (root, selector, size) => Math.max(0, ...Array.from(root.querySelectorAll(selector), (el) => el[size]));
8127
8292
  const gridBox = (chart, grid) => {
8128
8293
  let height = chart.clientHeight;
@@ -8145,9 +8310,9 @@ const cellName = (info) => info.cellLabel || [
8145
8310
  const HeatmapChartInternal = ({ data, chartId: providedChartId, width = 0, height = 0, className, compact = false, fitCells = false, showValues, maxCellWidth, maxCellHeight, minCellWidth, minCellHeight, rowLabels = NO_ROW_LABELS, columnGroups, keyboardNavigation = "grid", ariaLabel, primaryColor, gap = "md", withTooltips = false, renderTooltip, tooltipStyle, children }) => {
8146
8311
  const chartId = useChartId(providedChartId);
8147
8312
  const tooltipBoxStyle = tooltipStyle ? {
8148
- ...TOOLTIP_BOX_STYLE,
8313
+ ...TOOLTIP_BOX_STYLE$1,
8149
8314
  ...tooltipStyle
8150
- } : TOOLTIP_BOX_STYLE;
8315
+ } : TOOLTIP_BOX_STYLE$1;
8151
8316
  const { getElementStyles, theme } = useGlobalChartsContext();
8152
8317
  const scopeElement = useChartScopeElement();
8153
8318
  const { heatmapChart: heatmapChartSettings } = theme;
@@ -9085,7 +9250,7 @@ var require_dist$13 = /* @__PURE__ */ __commonJSMin(((exports) => {
9085
9250
  var require_dist$12 = /* @__PURE__ */ __commonJSMin(((exports) => {
9086
9251
  Object.defineProperty(exports, "__esModule", { value: true });
9087
9252
  exports.pascalCase = exports.pascalCaseTransformMerge = exports.pascalCaseTransform = void 0;
9088
- var tslib_1$10 = require("tslib");
9253
+ var tslib_1 = require("tslib");
9089
9254
  var no_case_1 = require_dist$13();
9090
9255
  function pascalCaseTransform(input, index) {
9091
9256
  var firstChar = input.charAt(0);
@@ -9100,7 +9265,7 @@ var require_dist$12 = /* @__PURE__ */ __commonJSMin(((exports) => {
9100
9265
  exports.pascalCaseTransformMerge = pascalCaseTransformMerge;
9101
9266
  function pascalCase(input, options) {
9102
9267
  if (options === void 0) options = {};
9103
- return no_case_1.noCase(input, tslib_1$10.__assign({
9268
+ return no_case_1.noCase(input, tslib_1.__assign({
9104
9269
  delimiter: "",
9105
9270
  transform: pascalCaseTransform
9106
9271
  }, options));
@@ -9112,7 +9277,7 @@ var require_dist$12 = /* @__PURE__ */ __commonJSMin(((exports) => {
9112
9277
  var require_dist$11 = /* @__PURE__ */ __commonJSMin(((exports) => {
9113
9278
  Object.defineProperty(exports, "__esModule", { value: true });
9114
9279
  exports.camelCase = exports.camelCaseTransformMerge = exports.camelCaseTransform = void 0;
9115
- var tslib_1$9 = require("tslib");
9280
+ var tslib_1 = require("tslib");
9116
9281
  var pascal_case_1 = require_dist$12();
9117
9282
  function camelCaseTransform(input, index) {
9118
9283
  if (index === 0) return input.toLowerCase();
@@ -9126,7 +9291,7 @@ var require_dist$11 = /* @__PURE__ */ __commonJSMin(((exports) => {
9126
9291
  exports.camelCaseTransformMerge = camelCaseTransformMerge;
9127
9292
  function camelCase(input, options) {
9128
9293
  if (options === void 0) options = {};
9129
- return pascal_case_1.pascalCase(input, tslib_1$9.__assign({ transform: camelCaseTransform }, options));
9294
+ return pascal_case_1.pascalCase(input, tslib_1.__assign({ transform: camelCaseTransform }, options));
9130
9295
  }
9131
9296
  exports.camelCase = camelCase;
9132
9297
  }));
@@ -9148,7 +9313,7 @@ var require_dist$10 = /* @__PURE__ */ __commonJSMin(((exports) => {
9148
9313
  var require_dist$9 = /* @__PURE__ */ __commonJSMin(((exports) => {
9149
9314
  Object.defineProperty(exports, "__esModule", { value: true });
9150
9315
  exports.capitalCase = exports.capitalCaseTransform = void 0;
9151
- var tslib_1$8 = require("tslib");
9316
+ var tslib_1 = require("tslib");
9152
9317
  var no_case_1 = require_dist$13();
9153
9318
  var upper_case_first_1 = require_dist$10();
9154
9319
  function capitalCaseTransform(input) {
@@ -9157,7 +9322,7 @@ var require_dist$9 = /* @__PURE__ */ __commonJSMin(((exports) => {
9157
9322
  exports.capitalCaseTransform = capitalCaseTransform;
9158
9323
  function capitalCase(input, options) {
9159
9324
  if (options === void 0) options = {};
9160
- return no_case_1.noCase(input, tslib_1$8.__assign({
9325
+ return no_case_1.noCase(input, tslib_1.__assign({
9161
9326
  delimiter: " ",
9162
9327
  transform: capitalCaseTransform
9163
9328
  }, options));
@@ -9217,12 +9382,12 @@ var require_dist$8 = /* @__PURE__ */ __commonJSMin(((exports) => {
9217
9382
  var require_dist$7 = /* @__PURE__ */ __commonJSMin(((exports) => {
9218
9383
  Object.defineProperty(exports, "__esModule", { value: true });
9219
9384
  exports.constantCase = void 0;
9220
- var tslib_1$7 = require("tslib");
9385
+ var tslib_1 = require("tslib");
9221
9386
  var no_case_1 = require_dist$13();
9222
9387
  var upper_case_1 = require_dist$8();
9223
9388
  function constantCase(input, options) {
9224
9389
  if (options === void 0) options = {};
9225
- return no_case_1.noCase(input, tslib_1$7.__assign({
9390
+ return no_case_1.noCase(input, tslib_1.__assign({
9226
9391
  delimiter: "_",
9227
9392
  transform: upper_case_1.upperCase
9228
9393
  }, options));
@@ -9234,11 +9399,11 @@ var require_dist$7 = /* @__PURE__ */ __commonJSMin(((exports) => {
9234
9399
  var require_dist$6 = /* @__PURE__ */ __commonJSMin(((exports) => {
9235
9400
  Object.defineProperty(exports, "__esModule", { value: true });
9236
9401
  exports.dotCase = void 0;
9237
- var tslib_1$6 = require("tslib");
9402
+ var tslib_1 = require("tslib");
9238
9403
  var no_case_1 = require_dist$13();
9239
9404
  function dotCase(input, options) {
9240
9405
  if (options === void 0) options = {};
9241
- return no_case_1.noCase(input, tslib_1$6.__assign({ delimiter: "." }, options));
9406
+ return no_case_1.noCase(input, tslib_1.__assign({ delimiter: "." }, options));
9242
9407
  }
9243
9408
  exports.dotCase = dotCase;
9244
9409
  }));
@@ -9247,11 +9412,11 @@ var require_dist$6 = /* @__PURE__ */ __commonJSMin(((exports) => {
9247
9412
  var require_dist$5 = /* @__PURE__ */ __commonJSMin(((exports) => {
9248
9413
  Object.defineProperty(exports, "__esModule", { value: true });
9249
9414
  exports.headerCase = void 0;
9250
- var tslib_1$5 = require("tslib");
9415
+ var tslib_1 = require("tslib");
9251
9416
  var capital_case_1 = require_dist$9();
9252
9417
  function headerCase(input, options) {
9253
9418
  if (options === void 0) options = {};
9254
- return capital_case_1.capitalCase(input, tslib_1$5.__assign({ delimiter: "-" }, options));
9419
+ return capital_case_1.capitalCase(input, tslib_1.__assign({ delimiter: "-" }, options));
9255
9420
  }
9256
9421
  exports.headerCase = headerCase;
9257
9422
  }));
@@ -9260,11 +9425,11 @@ var require_dist$5 = /* @__PURE__ */ __commonJSMin(((exports) => {
9260
9425
  var require_dist$4 = /* @__PURE__ */ __commonJSMin(((exports) => {
9261
9426
  Object.defineProperty(exports, "__esModule", { value: true });
9262
9427
  exports.paramCase = void 0;
9263
- var tslib_1$4 = require("tslib");
9428
+ var tslib_1 = require("tslib");
9264
9429
  var dot_case_1 = require_dist$6();
9265
9430
  function paramCase(input, options) {
9266
9431
  if (options === void 0) options = {};
9267
- return dot_case_1.dotCase(input, tslib_1$4.__assign({ delimiter: "-" }, options));
9432
+ return dot_case_1.dotCase(input, tslib_1.__assign({ delimiter: "-" }, options));
9268
9433
  }
9269
9434
  exports.paramCase = paramCase;
9270
9435
  }));
@@ -9273,11 +9438,11 @@ var require_dist$4 = /* @__PURE__ */ __commonJSMin(((exports) => {
9273
9438
  var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports) => {
9274
9439
  Object.defineProperty(exports, "__esModule", { value: true });
9275
9440
  exports.pathCase = void 0;
9276
- var tslib_1$3 = require("tslib");
9441
+ var tslib_1 = require("tslib");
9277
9442
  var dot_case_1 = require_dist$6();
9278
9443
  function pathCase(input, options) {
9279
9444
  if (options === void 0) options = {};
9280
- return dot_case_1.dotCase(input, tslib_1$3.__assign({ delimiter: "/" }, options));
9445
+ return dot_case_1.dotCase(input, tslib_1.__assign({ delimiter: "/" }, options));
9281
9446
  }
9282
9447
  exports.pathCase = pathCase;
9283
9448
  }));
@@ -9286,7 +9451,7 @@ var require_dist$3 = /* @__PURE__ */ __commonJSMin(((exports) => {
9286
9451
  var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
9287
9452
  Object.defineProperty(exports, "__esModule", { value: true });
9288
9453
  exports.sentenceCase = exports.sentenceCaseTransform = void 0;
9289
- var tslib_1$2 = require("tslib");
9454
+ var tslib_1 = require("tslib");
9290
9455
  var no_case_1 = require_dist$13();
9291
9456
  var upper_case_first_1 = require_dist$10();
9292
9457
  function sentenceCaseTransform(input, index) {
@@ -9297,7 +9462,7 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
9297
9462
  exports.sentenceCaseTransform = sentenceCaseTransform;
9298
9463
  function sentenceCase(input, options) {
9299
9464
  if (options === void 0) options = {};
9300
- return no_case_1.noCase(input, tslib_1$2.__assign({
9465
+ return no_case_1.noCase(input, tslib_1.__assign({
9301
9466
  delimiter: " ",
9302
9467
  transform: sentenceCaseTransform
9303
9468
  }, options));
@@ -9309,11 +9474,11 @@ var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
9309
9474
  var require_dist$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9310
9475
  Object.defineProperty(exports, "__esModule", { value: true });
9311
9476
  exports.snakeCase = void 0;
9312
- var tslib_1$1 = require("tslib");
9477
+ var tslib_1 = require("tslib");
9313
9478
  var dot_case_1 = require_dist$6();
9314
9479
  function snakeCase(input, options) {
9315
9480
  if (options === void 0) options = {};
9316
- return dot_case_1.dotCase(input, tslib_1$1.__assign({ delimiter: "_" }, options));
9481
+ return dot_case_1.dotCase(input, tslib_1.__assign({ delimiter: "_" }, options));
9317
9482
  }
9318
9483
  exports.snakeCase = snakeCase;
9319
9484
  }));
@@ -9335,10 +9500,10 @@ var require_dist = /* @__PURE__ */ __commonJSMin(((exports) => {
9335
9500
  tslib_1.__exportStar(require_dist$1(), exports);
9336
9501
  }));
9337
9502
  //#endregion
9338
- //#region ../../../node_modules/.pnpm/@wordpress+warning@3.55.0/node_modules/@wordpress/warning/build-module/utils.mjs
9503
+ //#region ../../../node_modules/.pnpm/@wordpress+warning@3.57.0/node_modules/@wordpress/warning/build-module/utils.mjs
9339
9504
  var logged = /* @__PURE__ */ new Set();
9340
9505
  //#endregion
9341
- //#region ../../../node_modules/.pnpm/@wordpress+warning@3.55.0/node_modules/@wordpress/warning/build-module/index.mjs
9506
+ //#region ../../../node_modules/.pnpm/@wordpress+warning@3.57.0/node_modules/@wordpress/warning/build-module/index.mjs
9342
9507
  function isDev() {
9343
9508
  return globalThis.SCRIPT_DEBUG === true;
9344
9509
  }
@@ -9352,7 +9517,7 @@ function warning(message) {
9352
9517
  logged.add(message);
9353
9518
  }
9354
9519
  //#endregion
9355
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/hooks/use-update-effect.mjs
9520
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/utils/hooks/use-update-effect.mjs
9356
9521
  function useUpdateEffect(effect, deps) {
9357
9522
  const mountedRef = (0, react.useRef)(false);
9358
9523
  (0, react.useEffect)(() => {
@@ -9961,7 +10126,7 @@ function memoize(fn) {
9961
10126
  }
9962
10127
  //#endregion
9963
10128
  //#region ../../../node_modules/.pnpm/@emotion+cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.esm.js
9964
- var isBrowser$3 = typeof document !== "undefined";
10129
+ var isBrowser$2 = typeof document !== "undefined";
9965
10130
  var identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {
9966
10131
  var previous = 0;
9967
10132
  var character = 0;
@@ -10134,7 +10299,7 @@ var prefixer = function prefixer(element, index, children, callback) {
10134
10299
  }
10135
10300
  }
10136
10301
  };
10137
- var getServerStylisCache = isBrowser$3 ? void 0 : weakMemoize(function() {
10302
+ var getServerStylisCache = isBrowser$2 ? void 0 : weakMemoize(function() {
10138
10303
  return memoize(function() {
10139
10304
  return {};
10140
10305
  });
@@ -10142,7 +10307,7 @@ var getServerStylisCache = isBrowser$3 ? void 0 : weakMemoize(function() {
10142
10307
  var defaultStylisPlugins = [prefixer];
10143
10308
  var createCache = function createCache(options) {
10144
10309
  var key = options.key;
10145
- if (isBrowser$3 && key === "css") {
10310
+ if (isBrowser$2 && key === "css") {
10146
10311
  var ssrStyles = document.querySelectorAll("style[data-emotion]:not([data-s])");
10147
10312
  Array.prototype.forEach.call(ssrStyles, function(node) {
10148
10313
  if (node.getAttribute("data-emotion").indexOf(" ") === -1) return;
@@ -10154,7 +10319,7 @@ var createCache = function createCache(options) {
10154
10319
  var inserted = {};
10155
10320
  var container;
10156
10321
  var nodesToHydrate = [];
10157
- if (isBrowser$3) {
10322
+ if (isBrowser$2) {
10158
10323
  container = options.container || document.head;
10159
10324
  Array.prototype.forEach.call(document.querySelectorAll("style[data-emotion^=\"" + key + " \"]"), function(node) {
10160
10325
  var attrib = node.getAttribute("data-emotion").split(" ");
@@ -10219,358 +10384,8 @@ var createCache = function createCache(options) {
10219
10384
  return cache;
10220
10385
  };
10221
10386
  //#endregion
10222
- //#region ../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js
10223
- /** @license React v16.13.1
10224
- * react-is.production.min.js
10225
- *
10226
- * Copyright (c) Facebook, Inc. and its affiliates.
10227
- *
10228
- * This source code is licensed under the MIT license found in the
10229
- * LICENSE file in the root directory of this source tree.
10230
- */
10231
- var require_react_is_production_min = /* @__PURE__ */ __commonJSMin(((exports) => {
10232
- var b = "function" === typeof Symbol && Symbol.for;
10233
- var c = b ? Symbol.for("react.element") : 60103;
10234
- var d = b ? Symbol.for("react.portal") : 60106;
10235
- var e = b ? Symbol.for("react.fragment") : 60107;
10236
- var f = b ? Symbol.for("react.strict_mode") : 60108;
10237
- var g = b ? Symbol.for("react.profiler") : 60114;
10238
- var h = b ? Symbol.for("react.provider") : 60109;
10239
- var k = b ? Symbol.for("react.context") : 60110;
10240
- var l = b ? Symbol.for("react.async_mode") : 60111;
10241
- var m = b ? Symbol.for("react.concurrent_mode") : 60111;
10242
- var n = b ? Symbol.for("react.forward_ref") : 60112;
10243
- var p = b ? Symbol.for("react.suspense") : 60113;
10244
- var q = b ? Symbol.for("react.suspense_list") : 60120;
10245
- var r = b ? Symbol.for("react.memo") : 60115;
10246
- var t = b ? Symbol.for("react.lazy") : 60116;
10247
- var v = b ? Symbol.for("react.block") : 60121;
10248
- var w = b ? Symbol.for("react.fundamental") : 60117;
10249
- var x = b ? Symbol.for("react.responder") : 60118;
10250
- var y = b ? Symbol.for("react.scope") : 60119;
10251
- function z(a) {
10252
- if ("object" === typeof a && null !== a) {
10253
- var u = a.$$typeof;
10254
- switch (u) {
10255
- case c: switch (a = a.type, a) {
10256
- case l:
10257
- case m:
10258
- case e:
10259
- case g:
10260
- case f:
10261
- case p: return a;
10262
- default: switch (a = a && a.$$typeof, a) {
10263
- case k:
10264
- case n:
10265
- case t:
10266
- case r:
10267
- case h: return a;
10268
- default: return u;
10269
- }
10270
- }
10271
- case d: return u;
10272
- }
10273
- }
10274
- }
10275
- function A(a) {
10276
- return z(a) === m;
10277
- }
10278
- exports.AsyncMode = l;
10279
- exports.ConcurrentMode = m;
10280
- exports.ContextConsumer = k;
10281
- exports.ContextProvider = h;
10282
- exports.Element = c;
10283
- exports.ForwardRef = n;
10284
- exports.Fragment = e;
10285
- exports.Lazy = t;
10286
- exports.Memo = r;
10287
- exports.Portal = d;
10288
- exports.Profiler = g;
10289
- exports.StrictMode = f;
10290
- exports.Suspense = p;
10291
- exports.isAsyncMode = function(a) {
10292
- return A(a) || z(a) === l;
10293
- };
10294
- exports.isConcurrentMode = A;
10295
- exports.isContextConsumer = function(a) {
10296
- return z(a) === k;
10297
- };
10298
- exports.isContextProvider = function(a) {
10299
- return z(a) === h;
10300
- };
10301
- exports.isElement = function(a) {
10302
- return "object" === typeof a && null !== a && a.$$typeof === c;
10303
- };
10304
- exports.isForwardRef = function(a) {
10305
- return z(a) === n;
10306
- };
10307
- exports.isFragment = function(a) {
10308
- return z(a) === e;
10309
- };
10310
- exports.isLazy = function(a) {
10311
- return z(a) === t;
10312
- };
10313
- exports.isMemo = function(a) {
10314
- return z(a) === r;
10315
- };
10316
- exports.isPortal = function(a) {
10317
- return z(a) === d;
10318
- };
10319
- exports.isProfiler = function(a) {
10320
- return z(a) === g;
10321
- };
10322
- exports.isStrictMode = function(a) {
10323
- return z(a) === f;
10324
- };
10325
- exports.isSuspense = function(a) {
10326
- return z(a) === p;
10327
- };
10328
- exports.isValidElementType = function(a) {
10329
- return "string" === typeof a || "function" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || "object" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);
10330
- };
10331
- exports.typeOf = z;
10332
- }));
10333
- //#endregion
10334
- //#region ../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js
10335
- /** @license React v16.13.1
10336
- * react-is.development.js
10337
- *
10338
- * Copyright (c) Facebook, Inc. and its affiliates.
10339
- *
10340
- * This source code is licensed under the MIT license found in the
10341
- * LICENSE file in the root directory of this source tree.
10342
- */
10343
- var require_react_is_development = /* @__PURE__ */ __commonJSMin(((exports) => {
10344
- if (process.env.NODE_ENV !== "production") (function() {
10345
- "use strict";
10346
- var hasSymbol = typeof Symbol === "function" && Symbol.for;
10347
- var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103;
10348
- var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106;
10349
- var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107;
10350
- var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108;
10351
- var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114;
10352
- var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109;
10353
- var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110;
10354
- var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111;
10355
- var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111;
10356
- var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112;
10357
- var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113;
10358
- var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120;
10359
- var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115;
10360
- var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116;
10361
- var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121;
10362
- var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117;
10363
- var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118;
10364
- var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119;
10365
- function isValidElementType(type) {
10366
- return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
10367
- }
10368
- function typeOf(object) {
10369
- if (typeof object === "object" && object !== null) {
10370
- var $$typeof = object.$$typeof;
10371
- switch ($$typeof) {
10372
- case REACT_ELEMENT_TYPE:
10373
- var type = object.type;
10374
- switch (type) {
10375
- case REACT_ASYNC_MODE_TYPE:
10376
- case REACT_CONCURRENT_MODE_TYPE:
10377
- case REACT_FRAGMENT_TYPE:
10378
- case REACT_PROFILER_TYPE:
10379
- case REACT_STRICT_MODE_TYPE:
10380
- case REACT_SUSPENSE_TYPE: return type;
10381
- default:
10382
- var $$typeofType = type && type.$$typeof;
10383
- switch ($$typeofType) {
10384
- case REACT_CONTEXT_TYPE:
10385
- case REACT_FORWARD_REF_TYPE:
10386
- case REACT_LAZY_TYPE:
10387
- case REACT_MEMO_TYPE:
10388
- case REACT_PROVIDER_TYPE: return $$typeofType;
10389
- default: return $$typeof;
10390
- }
10391
- }
10392
- case REACT_PORTAL_TYPE: return $$typeof;
10393
- }
10394
- }
10395
- }
10396
- var AsyncMode = REACT_ASYNC_MODE_TYPE;
10397
- var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
10398
- var ContextConsumer = REACT_CONTEXT_TYPE;
10399
- var ContextProvider = REACT_PROVIDER_TYPE;
10400
- var Element = REACT_ELEMENT_TYPE;
10401
- var ForwardRef = REACT_FORWARD_REF_TYPE;
10402
- var Fragment = REACT_FRAGMENT_TYPE;
10403
- var Lazy = REACT_LAZY_TYPE;
10404
- var Memo = REACT_MEMO_TYPE;
10405
- var Portal = REACT_PORTAL_TYPE;
10406
- var Profiler = REACT_PROFILER_TYPE;
10407
- var StrictMode = REACT_STRICT_MODE_TYPE;
10408
- var Suspense = REACT_SUSPENSE_TYPE;
10409
- var hasWarnedAboutDeprecatedIsAsyncMode = false;
10410
- function isAsyncMode(object) {
10411
- if (!hasWarnedAboutDeprecatedIsAsyncMode) {
10412
- hasWarnedAboutDeprecatedIsAsyncMode = true;
10413
- console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.");
10414
- }
10415
- return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
10416
- }
10417
- function isConcurrentMode(object) {
10418
- return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
10419
- }
10420
- function isContextConsumer(object) {
10421
- return typeOf(object) === REACT_CONTEXT_TYPE;
10422
- }
10423
- function isContextProvider(object) {
10424
- return typeOf(object) === REACT_PROVIDER_TYPE;
10425
- }
10426
- function isElement(object) {
10427
- return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
10428
- }
10429
- function isForwardRef(object) {
10430
- return typeOf(object) === REACT_FORWARD_REF_TYPE;
10431
- }
10432
- function isFragment(object) {
10433
- return typeOf(object) === REACT_FRAGMENT_TYPE;
10434
- }
10435
- function isLazy(object) {
10436
- return typeOf(object) === REACT_LAZY_TYPE;
10437
- }
10438
- function isMemo(object) {
10439
- return typeOf(object) === REACT_MEMO_TYPE;
10440
- }
10441
- function isPortal(object) {
10442
- return typeOf(object) === REACT_PORTAL_TYPE;
10443
- }
10444
- function isProfiler(object) {
10445
- return typeOf(object) === REACT_PROFILER_TYPE;
10446
- }
10447
- function isStrictMode(object) {
10448
- return typeOf(object) === REACT_STRICT_MODE_TYPE;
10449
- }
10450
- function isSuspense(object) {
10451
- return typeOf(object) === REACT_SUSPENSE_TYPE;
10452
- }
10453
- exports.AsyncMode = AsyncMode;
10454
- exports.ConcurrentMode = ConcurrentMode;
10455
- exports.ContextConsumer = ContextConsumer;
10456
- exports.ContextProvider = ContextProvider;
10457
- exports.Element = Element;
10458
- exports.ForwardRef = ForwardRef;
10459
- exports.Fragment = Fragment;
10460
- exports.Lazy = Lazy;
10461
- exports.Memo = Memo;
10462
- exports.Portal = Portal;
10463
- exports.Profiler = Profiler;
10464
- exports.StrictMode = StrictMode;
10465
- exports.Suspense = Suspense;
10466
- exports.isAsyncMode = isAsyncMode;
10467
- exports.isConcurrentMode = isConcurrentMode;
10468
- exports.isContextConsumer = isContextConsumer;
10469
- exports.isContextProvider = isContextProvider;
10470
- exports.isElement = isElement;
10471
- exports.isForwardRef = isForwardRef;
10472
- exports.isFragment = isFragment;
10473
- exports.isLazy = isLazy;
10474
- exports.isMemo = isMemo;
10475
- exports.isPortal = isPortal;
10476
- exports.isProfiler = isProfiler;
10477
- exports.isStrictMode = isStrictMode;
10478
- exports.isSuspense = isSuspense;
10479
- exports.isValidElementType = isValidElementType;
10480
- exports.typeOf = typeOf;
10481
- })();
10482
- }));
10483
- //#endregion
10484
- //#region ../../../node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js
10485
- var require_react_is = /* @__PURE__ */ __commonJSMin(((exports, module) => {
10486
- if (process.env.NODE_ENV === "production") module.exports = require_react_is_production_min();
10487
- else module.exports = require_react_is_development();
10488
- }));
10489
- //#endregion
10490
- //#region ../../../node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js
10491
- var require_hoist_non_react_statics_cjs = /* @__PURE__ */ __commonJSMin(((exports, module) => {
10492
- var reactIs = require_react_is();
10493
- /**
10494
- * Copyright 2015, Yahoo! Inc.
10495
- * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
10496
- */
10497
- var REACT_STATICS = {
10498
- childContextTypes: true,
10499
- contextType: true,
10500
- contextTypes: true,
10501
- defaultProps: true,
10502
- displayName: true,
10503
- getDefaultProps: true,
10504
- getDerivedStateFromError: true,
10505
- getDerivedStateFromProps: true,
10506
- mixins: true,
10507
- propTypes: true,
10508
- type: true
10509
- };
10510
- var KNOWN_STATICS = {
10511
- name: true,
10512
- length: true,
10513
- prototype: true,
10514
- caller: true,
10515
- callee: true,
10516
- arguments: true,
10517
- arity: true
10518
- };
10519
- var FORWARD_REF_STATICS = {
10520
- "$$typeof": true,
10521
- render: true,
10522
- defaultProps: true,
10523
- displayName: true,
10524
- propTypes: true
10525
- };
10526
- var MEMO_STATICS = {
10527
- "$$typeof": true,
10528
- compare: true,
10529
- defaultProps: true,
10530
- displayName: true,
10531
- propTypes: true,
10532
- type: true
10533
- };
10534
- var TYPE_STATICS = {};
10535
- TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
10536
- TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;
10537
- function getStatics(component) {
10538
- if (reactIs.isMemo(component)) return MEMO_STATICS;
10539
- return TYPE_STATICS[component["$$typeof"]] || REACT_STATICS;
10540
- }
10541
- var defineProperty = Object.defineProperty;
10542
- var getOwnPropertyNames = Object.getOwnPropertyNames;
10543
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
10544
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
10545
- var getPrototypeOf = Object.getPrototypeOf;
10546
- var objectPrototype = Object.prototype;
10547
- function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
10548
- if (typeof sourceComponent !== "string") {
10549
- if (objectPrototype) {
10550
- var inheritedComponent = getPrototypeOf(sourceComponent);
10551
- if (inheritedComponent && inheritedComponent !== objectPrototype) hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
10552
- }
10553
- var keys = getOwnPropertyNames(sourceComponent);
10554
- if (getOwnPropertySymbols) keys = keys.concat(getOwnPropertySymbols(sourceComponent));
10555
- var targetStatics = getStatics(targetComponent);
10556
- var sourceStatics = getStatics(sourceComponent);
10557
- for (var i = 0; i < keys.length; ++i) {
10558
- var key = keys[i];
10559
- if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
10560
- var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
10561
- try {
10562
- defineProperty(targetComponent, key, descriptor);
10563
- } catch (e) {}
10564
- }
10565
- }
10566
- }
10567
- return targetComponent;
10568
- }
10569
- module.exports = hoistNonReactStatics;
10570
- }));
10571
- //#endregion
10572
10387
  //#region ../../../node_modules/.pnpm/@emotion+utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.esm.js
10573
- var isBrowser$2 = typeof document !== "undefined";
10388
+ var isBrowser$1 = typeof document !== "undefined";
10574
10389
  function getRegisteredStyles$1(registered, registeredStyles, classNames) {
10575
10390
  var rawClassName = "";
10576
10391
  classNames.split(" ").forEach(function(className) {
@@ -10581,7 +10396,7 @@ function getRegisteredStyles$1(registered, registeredStyles, classNames) {
10581
10396
  }
10582
10397
  var registerStyles = function registerStyles(cache, serialized, isStringTag) {
10583
10398
  var className = cache.key + "-" + serialized.name;
10584
- if ((isStringTag === false || isBrowser$2 === false && cache.compat !== void 0) && cache.registered[className] === void 0) cache.registered[className] = serialized.styles;
10399
+ if ((isStringTag === false || isBrowser$1 === false && cache.compat !== void 0) && cache.registered[className] === void 0) cache.registered[className] = serialized.styles;
10585
10400
  };
10586
10401
  var insertStyles = function insertStyles(cache, serialized, isStringTag) {
10587
10402
  registerStyles(cache, serialized, isStringTag);
@@ -10591,10 +10406,10 @@ var insertStyles = function insertStyles(cache, serialized, isStringTag) {
10591
10406
  var current = serialized;
10592
10407
  do {
10593
10408
  var maybeStyles = cache.insert(serialized === current ? "." + className : "", current, cache.sheet, true);
10594
- if (!isBrowser$2 && maybeStyles !== void 0) stylesForSSR += maybeStyles;
10409
+ if (!isBrowser$1 && maybeStyles !== void 0) stylesForSSR += maybeStyles;
10595
10410
  current = current.next;
10596
10411
  } while (current !== void 0);
10597
- if (!isBrowser$2 && stylesForSSR.length !== 0) return stylesForSSR;
10412
+ if (!isBrowser$1 && stylesForSSR.length !== 0) return stylesForSSR;
10598
10413
  }
10599
10414
  };
10600
10415
  //#endregion
@@ -10672,7 +10487,7 @@ var unitlessKeys = {
10672
10487
  };
10673
10488
  //#endregion
10674
10489
  //#region ../../../node_modules/.pnpm/@emotion+serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js
10675
- var isDevelopment$1 = false;
10490
+ var isDevelopment = false;
10676
10491
  var hyphenateRegex = /[A-Z]|^ms/g;
10677
10492
  var animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;
10678
10493
  var isCustomProperty = function isCustomProperty(property) {
@@ -10752,7 +10567,7 @@ function createStringFromObject(mergedProps, registered, obj) {
10752
10567
  if (registered != null && registered[asString] !== void 0) string += key + "{" + registered[asString] + "}";
10753
10568
  else if (isProcessableValue(asString)) string += processStyleName(key) + ":" + processStyleValue(key, asString) + ";";
10754
10569
  } else {
10755
- if (key === "NO_COMPONENT_SELECTOR" && isDevelopment$1) throw new Error(noComponentSelectorMessage);
10570
+ if (key === "NO_COMPONENT_SELECTOR" && isDevelopment) throw new Error(noComponentSelectorMessage);
10756
10571
  if (Array.isArray(value) && typeof value[0] === "string" && (registered == null || registered[value[0]] === void 0)) {
10757
10572
  for (var _i = 0; _i < value.length; _i++) if (isProcessableValue(value[_i])) string += processStyleName(key) + ":" + processStyleValue(key, value[_i]) + ";";
10758
10573
  } else {
@@ -10795,101 +10610,17 @@ function serializeStyles(args, registered, mergedProps) {
10795
10610
  next: cursor
10796
10611
  };
10797
10612
  }
10613
+ react["useInsertionEffect"] && react["useInsertionEffect"] || react.useLayoutEffect;
10798
10614
  //#endregion
10799
- //#region ../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.2.0_react@18.3.1/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.esm.js
10800
- var isBrowser$1 = typeof document !== "undefined";
10801
- var syncFallback = function syncFallback(create) {
10802
- return create();
10803
- };
10804
- var useInsertionEffect = react["useInsertionEffect"] ? react["useInsertionEffect"] : false;
10805
- var useInsertionEffectAlwaysWithSyncFallback = !isBrowser$1 ? syncFallback : useInsertionEffect || syncFallback;
10806
- useInsertionEffect || react.useLayoutEffect;
10615
+ //#region ../../../node_modules/.pnpm/@emotion+react@11.14.0_@types+react@18.3.31_react@18.3.1/node_modules/@emotion/react/dist/emotion-element-d59e098f.esm.js
10807
10616
  var isBrowser = typeof document !== "undefined";
10808
10617
  var EmotionCacheContext = /* #__PURE__ */ react.createContext(typeof HTMLElement !== "undefined" ? /* #__PURE__ */ createCache({ key: "css" }) : null);
10809
10618
  EmotionCacheContext.Provider;
10810
10619
  var __unsafe_useEmotionCache = function useEmotionCache() {
10811
10620
  return (0, react.useContext)(EmotionCacheContext);
10812
10621
  };
10813
- var withEmotionCache = function withEmotionCache(func) {
10814
- return /*#__PURE__*/ (0, react.forwardRef)(function(props, ref) {
10815
- return func(props, (0, react.useContext)(EmotionCacheContext), ref);
10816
- });
10817
- };
10818
- if (!isBrowser) withEmotionCache = function withEmotionCache(func) {
10819
- return function(props) {
10820
- var cache = (0, react.useContext)(EmotionCacheContext);
10821
- if (cache === null) {
10822
- cache = createCache({ key: "css" });
10823
- return /*#__PURE__*/ react.createElement(EmotionCacheContext.Provider, { value: cache }, func(props, cache));
10824
- } else return func(props, cache);
10825
- };
10826
- };
10827
- var ThemeContext = /* #__PURE__ */ react.createContext({});
10828
- var hasOwn = {}.hasOwnProperty;
10829
- var typePropName = "__EMOTION_TYPE_PLEASE_DO_NOT_USE__";
10830
- var createEmotionProps = function createEmotionProps(type, props) {
10831
- var newProps = {};
10832
- for (var _key in props) if (hasOwn.call(props, _key)) newProps[_key] = props[_key];
10833
- newProps[typePropName] = type;
10834
- return newProps;
10835
- };
10836
- var Insertion = function Insertion(_ref) {
10837
- var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag;
10838
- registerStyles(cache, serialized, isStringTag);
10839
- var rules = useInsertionEffectAlwaysWithSyncFallback(function() {
10840
- return insertStyles(cache, serialized, isStringTag);
10841
- });
10842
- if (!isBrowser && rules !== void 0) {
10843
- var _ref2;
10844
- var serializedNames = serialized.name;
10845
- var next = serialized.next;
10846
- while (next !== void 0) {
10847
- serializedNames += " " + next.name;
10848
- next = next.next;
10849
- }
10850
- return /*#__PURE__*/ react.createElement("style", (_ref2 = {}, _ref2["data-emotion"] = cache.key + " " + serializedNames, _ref2.dangerouslySetInnerHTML = { __html: rules }, _ref2.nonce = cache.sheet.nonce, _ref2));
10851
- }
10852
- return null;
10853
- };
10854
- var Emotion$1 = /* @__PURE__ */ withEmotionCache(function(props, cache, ref) {
10855
- var cssProp = props.css;
10856
- if (typeof cssProp === "string" && cache.registered[cssProp] !== void 0) cssProp = cache.registered[cssProp];
10857
- var WrappedComponent = props[typePropName];
10858
- var registeredStyles = [cssProp];
10859
- var className = "";
10860
- if (typeof props.className === "string") className = getRegisteredStyles$1(cache.registered, registeredStyles, props.className);
10861
- else if (props.className != null) className = props.className + " ";
10862
- var serialized = serializeStyles(registeredStyles, void 0, react.useContext(ThemeContext));
10863
- className += cache.key + "-" + serialized.name;
10864
- var newProps = {};
10865
- for (var _key2 in props) if (hasOwn.call(props, _key2) && _key2 !== "css" && _key2 !== typePropName && true) newProps[_key2] = props[_key2];
10866
- newProps.className = className;
10867
- if (ref) newProps.ref = ref;
10868
- return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Insertion, {
10869
- cache,
10870
- serialized,
10871
- isStringTag: typeof WrappedComponent === "string"
10872
- }), /*#__PURE__*/ react.createElement(WrappedComponent, newProps));
10873
- });
10874
- require_hoist_non_react_statics_cjs();
10875
- var jsx = function jsx(type, props) {
10876
- var args = arguments;
10877
- if (props == null || !hasOwn.call(props, "css")) return react.createElement.apply(void 0, args);
10878
- var argsLength = args.length;
10879
- var createElementArgArray = new Array(argsLength);
10880
- createElementArgArray[0] = Emotion$1;
10881
- createElementArgArray[1] = createEmotionProps(type, props);
10882
- for (var i = 2; i < argsLength; i++) createElementArgArray[i] = args[i];
10883
- return react.createElement.apply(null, createElementArgArray);
10884
- };
10885
- (function(_jsx) {
10886
- var JSX;
10887
- JSX || (JSX = _jsx.JSX || (_jsx.JSX = {}));
10888
- })(jsx || (jsx = {}));
10889
- function css$1() {
10890
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
10891
- return serializeStyles(args);
10892
- }
10622
+ if (!isBrowser);
10623
+ ({}).hasOwnProperty;
10893
10624
  //#endregion
10894
10625
  //#region ../../../node_modules/.pnpm/@emotion+css@11.13.5/node_modules/@emotion/css/create-instance/dist/emotion-css-create-instance.esm.js
10895
10626
  function insertWithoutScoping(cache, serialized) {
@@ -10990,7 +10721,7 @@ _createEmotion.css;
10990
10721
  _createEmotion.sheet;
10991
10722
  _createEmotion.cache;
10992
10723
  //#endregion
10993
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/hooks/use-cx.mjs
10724
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/utils/hooks/use-cx.mjs
10994
10725
  var isSerializedStyles = (o) => typeof o !== "undefined" && o !== null && ["name", "styles"].every((p) => typeof o[p] !== "undefined");
10995
10726
  var useCx = () => {
10996
10727
  const cache = __unsafe_useEmotionCache();
@@ -11097,140 +10828,7 @@ function memize(fn, options) {
11097
10828
  return memoized;
11098
10829
  }
11099
10830
  //#endregion
11100
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/colors-values.mjs
11101
- var white = "#fff";
11102
- var GRAY = {
11103
- 900: "#1e1e1e",
11104
- 800: "#2f2f2f",
11105
- /** Meets 4.6:1 text contrast against white. */
11106
- 700: "#757575",
11107
- /** Meets 3:1 UI or large text contrast against white. */
11108
- 600: "#949494",
11109
- 400: "#ccc",
11110
- /** Used for most borders. */
11111
- 300: "#ddd",
11112
- /** Used sparingly for light borders. */
11113
- 200: "#e0e0e0",
11114
- /** Used for light gray backgrounds. */
11115
- 100: "#f0f0f0"
11116
- };
11117
- var ALERT = {
11118
- yellow: "#f0b849",
11119
- red: "#d94f4f",
11120
- green: "#4ab866"
11121
- };
11122
- var THEME = {
11123
- accent: `var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9))`,
11124
- accentDarker10: `var(--wp-components-color-accent-darker-10, var(--wp-admin-theme-color-darker-10, #2145e6))`,
11125
- accentDarker20: `var(--wp-components-color-accent-darker-20, var(--wp-admin-theme-color-darker-20, #183ad6))`,
11126
- /** Used when placing text on the accent color. */
11127
- accentInverted: `var(--wp-components-color-accent-inverted, var(--wpds-color-foreground-interactive-brand-strong, #fff))`,
11128
- background: `var(--wp-components-color-background, var(--wpds-color-background-surface-neutral-strong, #fff))`,
11129
- foreground: `var(--wp-components-color-foreground, var(--wpds-color-foreground-content-neutral, #1e1e1e))`,
11130
- /** Used when placing text on the foreground color. */
11131
- foregroundInverted: `var(--wp-components-color-foreground-inverted, var(--wpds-color-background-surface-neutral, #fcfcfc))`,
11132
- gray: {
11133
- /** @deprecated Use `COLORS.theme.foreground` instead. */
11134
- 900: `var(--wp-components-color-foreground, var(--wpds-color-foreground-content-neutral, #1e1e1e))`,
11135
- 800: `var(--wp-components-color-gray-800, var(--wpds-color-foreground-content-neutral, #1e1e1e))`,
11136
- 700: `var(--wp-components-color-gray-700, var(--wpds-color-foreground-content-neutral-weak, #707070))`,
11137
- 600: `var(--wp-components-color-gray-600, var(--wpds-color-stroke-interactive-neutral, #8d8d8d))`,
11138
- 400: `var(--wp-components-color-gray-400, var(--wpds-color-stroke-interactive-neutral, #8d8d8d))`,
11139
- 300: `var(--wp-components-color-gray-300, var(--wpds-color-stroke-surface-neutral, #dbdbdb))`,
11140
- 200: `var(--wp-components-color-gray-200, var(--wpds-color-stroke-surface-neutral, #dbdbdb))`,
11141
- 100: `var(--wp-components-color-gray-100, var(--wpds-color-background-surface-neutral, #fcfcfc))`
11142
- }
11143
- };
11144
- var UI = {
11145
- background: THEME.background,
11146
- backgroundDisabled: THEME.gray[100],
11147
- border: THEME.gray[600],
11148
- borderHover: THEME.gray[700],
11149
- borderFocus: THEME.accent,
11150
- borderDisabled: `var(--wpds-color-stroke-interactive-neutral-disabled, #dbdbdb)`,
11151
- textDisabled: `var(--wpds-color-foreground-interactive-neutral-disabled, #8d8d8d)`,
11152
- darkGrayPlaceholder: `color-mix(in srgb, ${THEME.foreground}, transparent 38%)`,
11153
- lightGrayPlaceholder: `color-mix(in srgb, ${THEME.background}, transparent 35%)`
11154
- };
11155
- var COLORS = Object.freeze({
11156
- /**
11157
- * The main gray color object.
11158
- *
11159
- * @deprecated Use semantic aliases in `COLORS.ui` or theme-ready variables in `COLORS.theme.gray`.
11160
- */
11161
- gray: GRAY,
11162
- /**
11163
- * @deprecated Prefer theme-ready variables in `COLORS.theme`.
11164
- */
11165
- white,
11166
- alert: ALERT,
11167
- /**
11168
- * Theme-ready variables with fallbacks.
11169
- *
11170
- * Prefer semantic aliases in `COLORS.ui` when applicable.
11171
- */
11172
- theme: THEME,
11173
- /**
11174
- * Semantic aliases (prefer these over raw variables when applicable).
11175
- */
11176
- ui: UI
11177
- });
11178
- //#endregion
11179
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/config-values.mjs
11180
- var CONTROL_HEIGHT = "36px";
11181
- var CONTROL_PROPS = {
11182
- controlPaddingX: 12,
11183
- controlPaddingXSmall: 8,
11184
- controlPaddingXLarge: 12 * 1.3334,
11185
- controlBoxShadowFocus: `0 0 0 0.5px ${COLORS.theme.accent}`,
11186
- controlHeight: CONTROL_HEIGHT,
11187
- controlHeightXSmall: `calc( ${CONTROL_HEIGHT} * 0.6 )`,
11188
- controlHeightSmall: `calc( ${CONTROL_HEIGHT} * 0.8 )`,
11189
- controlHeightLarge: `calc( ${CONTROL_HEIGHT} * 1.2 )`,
11190
- controlHeightXLarge: `calc( ${CONTROL_HEIGHT} * 1.4 )`
11191
- };
11192
- var config_values_default = Object.assign({}, CONTROL_PROPS, {
11193
- colorDivider: "rgba(0, 0, 0, 0.1)",
11194
- elevationIntensity: 1,
11195
- radiusXSmall: "1px",
11196
- radiusSmall: "2px",
11197
- radiusMedium: "4px",
11198
- radiusLarge: "8px",
11199
- radiusFull: "9999px",
11200
- radiusRound: "50%",
11201
- borderWidth: "1px",
11202
- borderWidthFocus: "1.5px",
11203
- borderWidthTab: "4px",
11204
- fontSize: "13px",
11205
- fontSizeH1: "calc(2.44 * 13px)",
11206
- fontSizeH2: "calc(1.95 * 13px)",
11207
- fontSizeH3: "calc(1.56 * 13px)",
11208
- fontSizeH4: "calc(1.25 * 13px)",
11209
- fontSizeH5: "13px",
11210
- fontSizeH6: "calc(0.8 * 13px)",
11211
- fontSizeInputMobile: "16px",
11212
- fontSizeMobile: "15px",
11213
- fontSizeSmall: "calc(0.92 * 13px)",
11214
- fontSizeXSmall: "calc(0.75 * 13px)",
11215
- fontLineHeightBase: "1.4",
11216
- fontWeight: "normal",
11217
- fontWeightEmphasis: "600",
11218
- gridBase: "4px",
11219
- elevationXSmall: `0 1px 1px rgba(0, 0, 0, 0.03), 0 1px 2px rgba(0, 0, 0, 0.02), 0 3px 3px rgba(0, 0, 0, 0.02), 0 4px 4px rgba(0, 0, 0, 0.01)`,
11220
- elevationSmall: `0 1px 2px rgba(0, 0, 0, 0.05), 0 2px 3px rgba(0, 0, 0, 0.04), 0 6px 6px rgba(0, 0, 0, 0.03), 0 8px 8px rgba(0, 0, 0, 0.02)`,
11221
- elevationMedium: `0 2px 3px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.04), 0 12px 12px rgba(0, 0, 0, 0.03), 0 16px 16px rgba(0, 0, 0, 0.02)`,
11222
- elevationLarge: `0 5px 15px rgba(0, 0, 0, 0.08), 0 15px 27px rgba(0, 0, 0, 0.07), 0 30px 36px rgba(0, 0, 0, 0.04), 0 50px 43px rgba(0, 0, 0, 0.02)`,
11223
- surfaceBorderColor: "rgba(0, 0, 0, 0.1)",
11224
- surfaceColor: COLORS.white,
11225
- transitionDuration: "200ms",
11226
- transitionDurationFast: "160ms",
11227
- transitionDurationFaster: "120ms",
11228
- transitionDurationFastest: "100ms",
11229
- transitionTimingFunction: "cubic-bezier(0.08, 0.52, 0.52, 1)",
11230
- transitionTimingFunctionControl: "cubic-bezier(0.12, 0.8, 0.32, 1)"
11231
- });
11232
- //#endregion
11233
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/context-system-provider.mjs
10831
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/context-system-provider.mjs
11234
10832
  var import_es6 = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
11235
10833
  module.exports = function equal(a, b) {
11236
10834
  if (a === b) return true;
@@ -11298,19 +10896,19 @@ var BaseContextSystemProvider = ({ children, value }) => {
11298
10896
  };
11299
10897
  (0, react.memo)(BaseContextSystemProvider);
11300
10898
  //#endregion
11301
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/constants.mjs
10899
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/constants.mjs
11302
10900
  var COMPONENT_NAMESPACE = "data-wp-component";
11303
10901
  var CONNECTED_NAMESPACE = "data-wp-c16t";
11304
10902
  var CONNECT_STATIC_NAMESPACE = "__contextSystemKey__";
11305
10903
  //#endregion
11306
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/get-styled-class-name-from-key.mjs
10904
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/get-styled-class-name-from-key.mjs
11307
10905
  var import_dist = require_dist();
11308
10906
  function getStyledClassName(namespace) {
11309
10907
  return `components-${(0, import_dist.paramCase)(namespace)}`;
11310
10908
  }
11311
10909
  var getStyledClassNameFromKey = memize(getStyledClassName);
11312
10910
  //#endregion
11313
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/context-connect.mjs
10911
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/context-connect.mjs
11314
10912
  function contextConnect(Component, namespace) {
11315
10913
  return _contextConnect(Component, namespace, { forwardsRef: true });
11316
10914
  }
@@ -11327,7 +10925,7 @@ function _contextConnect(Component, namespace, options) {
11327
10925
  });
11328
10926
  }
11329
10927
  //#endregion
11330
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/utils.mjs
10928
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/utils.mjs
11331
10929
  function getNamespace(componentName) {
11332
10930
  return { [COMPONENT_NAMESPACE]: componentName };
11333
10931
  }
@@ -11335,7 +10933,7 @@ function getConnectedNamespace() {
11335
10933
  return { [CONNECTED_NAMESPACE]: true };
11336
10934
  }
11337
10935
  //#endregion
11338
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/context/use-context-system.mjs
10936
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/context/use-context-system.mjs
11339
10937
  function useContextSystem(props, namespace) {
11340
10938
  const contextSystemProps = useComponentsContext();
11341
10939
  if (typeof namespace === "undefined") globalThis.SCRIPT_DEBUG === true && warning("useContextSystem: Please provide a namespace");
@@ -11357,7 +10955,7 @@ function useContextSystem(props, namespace) {
11357
10955
  return finalComponentProps;
11358
10956
  }
11359
10957
  //#endregion
11360
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/visually-hidden/styles.mjs
10958
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/visually-hidden/styles.mjs
11361
10959
  var visuallyHidden = {
11362
10960
  border: 0,
11363
10961
  clip: "rect(1px, 1px, 1px, 1px)",
@@ -11373,7 +10971,7 @@ var visuallyHidden = {
11373
10971
  wordBreak: "normal"
11374
10972
  };
11375
10973
  //#endregion
11376
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/polymorphic-element.mjs
10974
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/utils/polymorphic-element.mjs
11377
10975
  var customAttributeRegExp = /^(data|aria|x)-/i;
11378
10976
  var eventHandlerRegExp = /^on[A-Z]/;
11379
10977
  var svgElementNames = new Set(`animate animateMotion animateTransform circle clipPath defs desc ellipse
@@ -11463,7 +11061,7 @@ function UnforwardedPolymorphicElement({ as, ...props }, ref) {
11463
11061
  }
11464
11062
  var PolymorphicElement = (0, react.forwardRef)(UnforwardedPolymorphicElement);
11465
11063
  //#endregion
11466
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/view/component.mjs
11064
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/view/component.mjs
11467
11065
  function UnforwardedView({ css, ...restProps }, ref) {
11468
11066
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PolymorphicElement, {
11469
11067
  ref,
@@ -11472,7 +11070,7 @@ function UnforwardedView({ css, ...restProps }, ref) {
11472
11070
  }
11473
11071
  var component_default$2 = Object.assign((0, react.forwardRef)(UnforwardedView), { selector: ".components-view" });
11474
11072
  //#endregion
11475
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/visually-hidden/component.mjs
11073
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/visually-hidden/component.mjs
11476
11074
  function UnconnectedVisuallyHidden(props, forwardedRef) {
11477
11075
  const { style: styleProp, ...contextProps } = useContextSystem(props, "VisuallyHidden");
11478
11076
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(component_default$2, {
@@ -11487,18 +11085,19 @@ function UnconnectedVisuallyHidden(props, forwardedRef) {
11487
11085
  }
11488
11086
  var component_default$1 = contextConnect(UnconnectedVisuallyHidden, "VisuallyHidden");
11489
11087
  //#endregion
11490
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/utils/use-responsive-value.mjs
11088
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/utils/use-responsive-value.mjs
11491
11089
  var breakpoints = [
11492
11090
  "40em",
11493
11091
  "52em",
11494
11092
  "64em"
11495
11093
  ];
11496
11094
  var useBreakpointIndex = (options = {}) => {
11497
- const { defaultIndex = 0 } = options;
11095
+ const { defaultIndex = 0, enabled = true } = options;
11498
11096
  if (typeof defaultIndex !== "number") throw new TypeError(`Default breakpoint index should be a number. Got: ${defaultIndex}, ${typeof defaultIndex}`);
11499
11097
  else if (defaultIndex < 0 || defaultIndex > breakpoints.length - 1) throw new RangeError(`Default breakpoint index out of range. Theme has ${breakpoints.length} breakpoints, got index ${defaultIndex}`);
11500
11098
  const [value, setValue] = (0, react.useState)(defaultIndex);
11501
11099
  (0, react.useEffect)(() => {
11100
+ if (!enabled) return;
11502
11101
  const getIndex = () => breakpoints.filter((bp) => {
11503
11102
  return typeof window !== "undefined" ? window.matchMedia(`screen and (min-width: ${bp})`).matches : false;
11504
11103
  }).length;
@@ -11511,17 +11110,21 @@ var useBreakpointIndex = (options = {}) => {
11511
11110
  return () => {
11512
11111
  if (typeof window !== "undefined") window.removeEventListener("resize", onResize);
11513
11112
  };
11514
- }, [value]);
11113
+ }, [value, enabled]);
11515
11114
  return value;
11516
11115
  };
11517
11116
  function useResponsiveValue(values, options = {}) {
11518
- const index = useBreakpointIndex(options);
11117
+ const isResponsive = Array.isArray(values) && values.length > 1;
11118
+ const index = useBreakpointIndex({
11119
+ ...options,
11120
+ enabled: isResponsive
11121
+ });
11519
11122
  if (!Array.isArray(values) && typeof values !== "function") return values;
11520
11123
  const array = values || [];
11521
11124
  return array[index >= array.length ? array.length - 1 : index];
11522
11125
  }
11523
11126
  //#endregion
11524
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/grid/utils.mjs
11127
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/grid/utils.mjs
11525
11128
  var ALIGNMENTS = {
11526
11129
  bottom: {
11527
11130
  alignItems: "flex-end",
@@ -11566,52 +11169,155 @@ var ALIGNMENTS = {
11566
11169
  }
11567
11170
  };
11568
11171
  function getAlignmentProps(alignment) {
11569
- return alignment ? ALIGNMENTS[alignment] : {};
11172
+ return alignment ? ALIGNMENTS[alignment] ?? {} : {};
11570
11173
  }
11571
11174
  //#endregion
11572
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/grid/hook.mjs
11175
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/grid/hook.mjs
11176
+ var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
11177
+ function getRuntime() {
11178
+ const globalScope = globalThis;
11179
+ if (globalScope.__wpStyleRuntime) return globalScope.__wpStyleRuntime;
11180
+ globalScope.__wpStyleRuntime = {
11181
+ documents: /* @__PURE__ */ new Map(),
11182
+ styles: /* @__PURE__ */ new Map(),
11183
+ injectedStyles: /* @__PURE__ */ new WeakMap()
11184
+ };
11185
+ if (typeof document !== "undefined") registerDocument(document);
11186
+ return globalScope.__wpStyleRuntime;
11187
+ }
11188
+ function documentContainsStyleHash(targetDocument, hash) {
11189
+ if (!targetDocument.head) return false;
11190
+ for (const style of targetDocument.head.querySelectorAll(`style[${STYLE_HASH_ATTRIBUTE}]`)) if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) return true;
11191
+ return false;
11192
+ }
11193
+ function injectStyle(targetDocument, hash, css) {
11194
+ if (!targetDocument.head) return;
11195
+ const runtime = getRuntime();
11196
+ let injectedStyles = runtime.injectedStyles.get(targetDocument);
11197
+ if (!injectedStyles) {
11198
+ injectedStyles = /* @__PURE__ */ new Set();
11199
+ runtime.injectedStyles.set(targetDocument, injectedStyles);
11200
+ }
11201
+ if (injectedStyles.has(hash)) return;
11202
+ if (documentContainsStyleHash(targetDocument, hash)) {
11203
+ injectedStyles.add(hash);
11204
+ return;
11205
+ }
11206
+ const style = targetDocument.createElement("style");
11207
+ style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
11208
+ style.appendChild(targetDocument.createTextNode(css));
11209
+ targetDocument.head.appendChild(style);
11210
+ injectedStyles.add(hash);
11211
+ }
11212
+ function registerDocument(targetDocument) {
11213
+ const runtime = getRuntime();
11214
+ runtime.documents.set(targetDocument, (runtime.documents.get(targetDocument) ?? 0) + 1);
11215
+ for (const [hash, css] of runtime.styles) injectStyle(targetDocument, hash, css);
11216
+ return () => {
11217
+ const count = runtime.documents.get(targetDocument);
11218
+ if (count === void 0) return;
11219
+ if (count <= 1) {
11220
+ runtime.documents.delete(targetDocument);
11221
+ return;
11222
+ }
11223
+ runtime.documents.set(targetDocument, count - 1);
11224
+ };
11225
+ }
11226
+ function registerStyle(hash, css) {
11227
+ const runtime = getRuntime();
11228
+ runtime.styles.set(hash, css);
11229
+ for (const targetDocument of runtime.documents.keys()) injectStyle(targetDocument, hash, css);
11230
+ }
11231
+ if (typeof process === "undefined" || process.env.NODE_ENV !== "test") registerStyle("79bac25858", "._631b7063b4047c89__grid{--wp-components-grid-align:initial;--wp-components-grid-justify:initial;--wp-components-grid-gap:initial;--wp-components-grid-template-columns:initial;--wp-components-grid-template-rows:initial;--wp-components-grid-row-gap:initial;--wp-components-grid-column-gap:initial;display:grid}._631b7063b4047c89__grid:not(:where(._51fa5e5688d538e7__row-gap-inherit,._3940112538797bb2__row-gap-initial,._9dc0e80dad95eb11__row-gap-unset,._964ec4132d3d0776__row-gap-revert,._9219888d7c4749d5__row-gap-revert-layer)){row-gap:var(--wp-components-grid-row-gap,calc(4px*var(--wp-components-grid-gap)))}._631b7063b4047c89__grid:not(:where(._149fd947497e8690__column-gap-inherit,.a018e74b0f04c517__column-gap-initial,.b1e45f9587eb70e5__column-gap-unset,._4da312511f64af94__column-gap-revert,.b51ead67217c210a__column-gap-revert-layer)){column-gap:var(--wp-components-grid-column-gap,calc(4px*var(--wp-components-grid-gap)))}._4cae76607d36422b__has-align:not(:where(._2c693b642b24e0d9__align-inherit,.fd4c5676ad7e83d4__align-initial,.c4c0cde44ab0ed21__align-unset,._8c23efb61db2f04e__align-revert,.c3adc4c41efa56d1__align-revert-layer)){align-items:var(--wp-components-grid-align)}._9bcd99517d001b4b__has-justify:not(:where(.a72d35ee0eda5e6b__justify-inherit,.d386403fd02ebc45__justify-initial,._7d60510a69e8ddf9__justify-unset,._857dfb6521d0cae3__justify-revert,._1537fff8402f1ca1__justify-revert-layer)){justify-content:var(--wp-components-grid-justify)}._983f7df07cd35a72__has-template-columns:not(:where(.df2216db1a717825__template-columns-inherit,._9016934ed273a0b8__template-columns-initial,._74966333f352d829__template-columns-unset,.b3ce45d005011688__template-columns-revert,._9ff0250b9bed5764__template-columns-revert-layer)){grid-template-columns:var(--wp-components-grid-template-columns)}._7e0fa0c081c20f6e__has-template-rows:not(:where(._10cfd24f62672d27__template-rows-inherit,.da1333be6b2af8c3__template-rows-initial,._919938d55c0cf234__template-rows-unset,.db40efe5796b7ffb__template-rows-revert,._1080cc5b99823c58__template-rows-revert-layer)){grid-template-rows:var(--wp-components-grid-template-rows)}.f4729d54fca65af1__is-inline{display:inline-grid;vertical-align:middle}._2c693b642b24e0d9__align-inherit{align-items:inherit}.fd4c5676ad7e83d4__align-initial{align-items:normal}.c4c0cde44ab0ed21__align-unset{align-items:unset}._8c23efb61db2f04e__align-revert{align-items:revert}.c3adc4c41efa56d1__align-revert-layer{align-items:revert-layer}.a72d35ee0eda5e6b__justify-inherit{justify-content:inherit}.d386403fd02ebc45__justify-initial{justify-content:normal}._7d60510a69e8ddf9__justify-unset{justify-content:unset}._857dfb6521d0cae3__justify-revert{justify-content:revert}._1537fff8402f1ca1__justify-revert-layer{justify-content:revert-layer}.df2216db1a717825__template-columns-inherit{grid-template-columns:inherit}._9016934ed273a0b8__template-columns-initial{grid-template-columns:none}._74966333f352d829__template-columns-unset{grid-template-columns:unset}.b3ce45d005011688__template-columns-revert{grid-template-columns:revert}._9ff0250b9bed5764__template-columns-revert-layer{grid-template-columns:revert-layer}._10cfd24f62672d27__template-rows-inherit{grid-template-rows:inherit}.da1333be6b2af8c3__template-rows-initial{grid-template-rows:none}._919938d55c0cf234__template-rows-unset{grid-template-rows:unset}.db40efe5796b7ffb__template-rows-revert{grid-template-rows:revert}._1080cc5b99823c58__template-rows-revert-layer{grid-template-rows:revert-layer}._51fa5e5688d538e7__row-gap-inherit{row-gap:inherit}._3940112538797bb2__row-gap-initial{row-gap:normal}._9dc0e80dad95eb11__row-gap-unset{row-gap:unset}._964ec4132d3d0776__row-gap-revert{row-gap:revert}._9219888d7c4749d5__row-gap-revert-layer{row-gap:revert-layer}._149fd947497e8690__column-gap-inherit{column-gap:inherit}.a018e74b0f04c517__column-gap-initial{column-gap:normal}.b1e45f9587eb70e5__column-gap-unset{column-gap:unset}._4da312511f64af94__column-gap-revert{column-gap:revert}.b51ead67217c210a__column-gap-revert-layer{column-gap:revert-layer}");
11232
+ var style_module_default = {
11233
+ "grid": "_631b7063b4047c89__grid",
11234
+ "row-gap-inherit": "_51fa5e5688d538e7__row-gap-inherit",
11235
+ "row-gap-initial": "_3940112538797bb2__row-gap-initial",
11236
+ "row-gap-unset": "_9dc0e80dad95eb11__row-gap-unset",
11237
+ "row-gap-revert": "_964ec4132d3d0776__row-gap-revert",
11238
+ "row-gap-revert-layer": "_9219888d7c4749d5__row-gap-revert-layer",
11239
+ "column-gap-inherit": "_149fd947497e8690__column-gap-inherit",
11240
+ "column-gap-initial": "a018e74b0f04c517__column-gap-initial",
11241
+ "column-gap-unset": "b1e45f9587eb70e5__column-gap-unset",
11242
+ "column-gap-revert": "_4da312511f64af94__column-gap-revert",
11243
+ "column-gap-revert-layer": "b51ead67217c210a__column-gap-revert-layer",
11244
+ "has-align": "_4cae76607d36422b__has-align",
11245
+ "align-inherit": "_2c693b642b24e0d9__align-inherit",
11246
+ "align-initial": "fd4c5676ad7e83d4__align-initial",
11247
+ "align-unset": "c4c0cde44ab0ed21__align-unset",
11248
+ "align-revert": "_8c23efb61db2f04e__align-revert",
11249
+ "align-revert-layer": "c3adc4c41efa56d1__align-revert-layer",
11250
+ "has-justify": "_9bcd99517d001b4b__has-justify",
11251
+ "justify-inherit": "a72d35ee0eda5e6b__justify-inherit",
11252
+ "justify-initial": "d386403fd02ebc45__justify-initial",
11253
+ "justify-unset": "_7d60510a69e8ddf9__justify-unset",
11254
+ "justify-revert": "_857dfb6521d0cae3__justify-revert",
11255
+ "justify-revert-layer": "_1537fff8402f1ca1__justify-revert-layer",
11256
+ "has-template-columns": "_983f7df07cd35a72__has-template-columns",
11257
+ "template-columns-inherit": "df2216db1a717825__template-columns-inherit",
11258
+ "template-columns-initial": "_9016934ed273a0b8__template-columns-initial",
11259
+ "template-columns-unset": "_74966333f352d829__template-columns-unset",
11260
+ "template-columns-revert": "b3ce45d005011688__template-columns-revert",
11261
+ "template-columns-revert-layer": "_9ff0250b9bed5764__template-columns-revert-layer",
11262
+ "has-template-rows": "_7e0fa0c081c20f6e__has-template-rows",
11263
+ "template-rows-inherit": "_10cfd24f62672d27__template-rows-inherit",
11264
+ "template-rows-initial": "da1333be6b2af8c3__template-rows-initial",
11265
+ "template-rows-unset": "_919938d55c0cf234__template-rows-unset",
11266
+ "template-rows-revert": "db40efe5796b7ffb__template-rows-revert",
11267
+ "template-rows-revert-layer": "_1080cc5b99823c58__template-rows-revert-layer",
11268
+ "is-inline": "f4729d54fca65af1__is-inline"
11269
+ };
11270
+ var CSS_WIDE_KEYWORDS = /* @__PURE__ */ new Set([
11271
+ "inherit",
11272
+ "initial",
11273
+ "unset",
11274
+ "revert",
11275
+ "revert-layer"
11276
+ ]);
11277
+ function toCSSValue(value) {
11278
+ return typeof value === "number" ? `${value}px` : value?.trim() || void 0;
11279
+ }
11573
11280
  function useGrid(props) {
11574
- const { align, alignment, className, columnGap, columns = 2, gap = 3, isInline = false, justify, rowGap, rows, templateColumns, templateRows, ...otherProps } = useContextSystem(props, "Grid");
11281
+ const { align, alignment, className, columnGap, columns = 2, gap = 3, isInline = false, justify, rowGap, rows, style, templateColumns, templateRows, ...otherProps } = useContextSystem(props, "Grid");
11575
11282
  const column = useResponsiveValue(Array.isArray(columns) ? columns : [columns]);
11576
11283
  const row = useResponsiveValue(Array.isArray(rows) ? rows : [rows]);
11577
- const gridTemplateColumns = templateColumns || !!columns && `repeat( ${column}, 1fr )`;
11578
- const gridTemplateRows = templateRows || !!rows && `repeat( ${row}, 1fr )`;
11579
- const cx = useCx();
11580
- const classes = (0, react.useMemo)(() => {
11581
- const alignmentProps = getAlignmentProps(alignment);
11582
- const gridClasses = /* @__PURE__ */ css$1({
11583
- alignItems: align,
11584
- display: isInline ? "inline-grid" : "grid",
11585
- gap: `calc( ${config_values_default.gridBase} * ${gap} )`,
11586
- gridTemplateColumns: gridTemplateColumns || void 0,
11587
- gridTemplateRows: gridTemplateRows || void 0,
11588
- gridRowGap: rowGap,
11589
- gridColumnGap: columnGap,
11590
- justifyContent: justify,
11591
- verticalAlign: isInline ? "middle" : void 0,
11592
- ...alignmentProps
11593
- }, process.env.NODE_ENV === "production" ? "" : ";label:gridClasses;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNENzQiIsImZpbGUiOiJob29rLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ0B3b3JkcHJlc3MvZWxlbWVudCc7XG5pbXBvcnQgdHlwZSB7IFdvcmRQcmVzc0NvbXBvbmVudFByb3BzIH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0U3lzdGVtIH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgeyBnZXRBbGlnbm1lbnRQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlUmVzcG9uc2l2ZVZhbHVlIH0gZnJvbSAnLi4vdXRpbHMvdXNlLXJlc3BvbnNpdmUtdmFsdWUnO1xuaW1wb3J0IENPTkZJRyBmcm9tICcuLi91dGlscy9jb25maWctdmFsdWVzJztcbmltcG9ydCB7IHVzZUN4IH0gZnJvbSAnLi4vdXRpbHMvaG9va3MvdXNlLWN4JztcbmltcG9ydCB0eXBlIHsgR3JpZFByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUdyaWQoXG5cdHByb3BzOiBXb3JkUHJlc3NDb21wb25lbnRQcm9wczwgR3JpZFByb3BzLCAnZGl2JyA+XG4pIHtcblx0Y29uc3Qge1xuXHRcdGFsaWduLFxuXHRcdGFsaWdubWVudCxcblx0XHRjbGFzc05hbWUsXG5cdFx0Y29sdW1uR2FwLFxuXHRcdGNvbHVtbnMgPSAyLFxuXHRcdGdhcCA9IDMsXG5cdFx0aXNJbmxpbmUgPSBmYWxzZSxcblx0XHRqdXN0aWZ5LFxuXHRcdHJvd0dhcCxcblx0XHRyb3dzLFxuXHRcdHRlbXBsYXRlQ29sdW1ucyxcblx0XHR0ZW1wbGF0ZVJvd3MsXG5cdFx0Li4ub3RoZXJQcm9wc1xuXHR9ID0gdXNlQ29udGV4dFN5c3RlbSggcHJvcHMsICdHcmlkJyApO1xuXG5cdGNvbnN0IGNvbHVtbnNBc0FycmF5ID0gQXJyYXkuaXNBcnJheSggY29sdW1ucyApID8gY29sdW1ucyA6IFsgY29sdW1ucyBdO1xuXHRjb25zdCBjb2x1bW4gPSB1c2VSZXNwb25zaXZlVmFsdWUoIGNvbHVtbnNBc0FycmF5ICk7XG5cdGNvbnN0IHJvd3NBc0FycmF5ID0gQXJyYXkuaXNBcnJheSggcm93cyApID8gcm93cyA6IFsgcm93cyBdO1xuXHRjb25zdCByb3cgPSB1c2VSZXNwb25zaXZlVmFsdWUoIHJvd3NBc0FycmF5ICk7XG5cblx0Y29uc3QgZ3JpZFRlbXBsYXRlQ29sdW1ucyA9XG5cdFx0dGVtcGxhdGVDb2x1bW5zIHx8ICggISEgY29sdW1ucyAmJiBgcmVwZWF0KCAkeyBjb2x1bW4gfSwgMWZyIClgICk7XG5cdGNvbnN0IGdyaWRUZW1wbGF0ZVJvd3MgPVxuXHRcdHRlbXBsYXRlUm93cyB8fCAoICEhIHJvd3MgJiYgYHJlcGVhdCggJHsgcm93IH0sIDFmciApYCApO1xuXG5cdGNvbnN0IGN4ID0gdXNlQ3goKTtcblxuXHRjb25zdCBjbGFzc2VzID0gdXNlTWVtbyggKCkgPT4ge1xuXHRcdGNvbnN0IGFsaWdubWVudFByb3BzID0gZ2V0QWxpZ25tZW50UHJvcHMoIGFsaWdubWVudCApO1xuXG5cdFx0Y29uc3QgZ3JpZENsYXNzZXMgPSBjc3MoIHtcblx0XHRcdGFsaWduSXRlbXM6IGFsaWduLFxuXHRcdFx0ZGlzcGxheTogaXNJbmxpbmUgPyAnaW5saW5lLWdyaWQnIDogJ2dyaWQnLFxuXHRcdFx0Z2FwOiBgY2FsYyggJHsgQ09ORklHLmdyaWRCYXNlIH0gKiAkeyBnYXAgfSApYCxcblx0XHRcdGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGdyaWRUZW1wbGF0ZUNvbHVtbnMgfHwgdW5kZWZpbmVkLFxuXHRcdFx0Z3JpZFRlbXBsYXRlUm93czogZ3JpZFRlbXBsYXRlUm93cyB8fCB1bmRlZmluZWQsXG5cdFx0XHRncmlkUm93R2FwOiByb3dHYXAsXG5cdFx0XHRncmlkQ29sdW1uR2FwOiBjb2x1bW5HYXAsXG5cdFx0XHRqdXN0aWZ5Q29udGVudDoganVzdGlmeSxcblx0XHRcdHZlcnRpY2FsQWxpZ246IGlzSW5saW5lID8gJ21pZGRsZScgOiB1bmRlZmluZWQsXG5cdFx0XHQuLi5hbGlnbm1lbnRQcm9wcyxcblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gY3goIGdyaWRDbGFzc2VzLCBjbGFzc05hbWUgKTtcblx0fSwgW1xuXHRcdGFsaWduLFxuXHRcdGFsaWdubWVudCxcblx0XHRjbGFzc05hbWUsXG5cdFx0Y29sdW1uR2FwLFxuXHRcdGN4LFxuXHRcdGdhcCxcblx0XHRncmlkVGVtcGxhdGVDb2x1bW5zLFxuXHRcdGdyaWRUZW1wbGF0ZVJvd3MsXG5cdFx0aXNJbmxpbmUsXG5cdFx0anVzdGlmeSxcblx0XHRyb3dHYXAsXG5cdF0gKTtcblxuXHRyZXR1cm4geyAuLi5vdGhlclByb3BzLCBjbGFzc05hbWU6IGNsYXNzZXMgfTtcbn1cbiJdfQ== */");
11594
- return cx(gridClasses, className);
11595
- }, [
11596
- align,
11597
- alignment,
11598
- className,
11599
- columnGap,
11600
- cx,
11601
- gap,
11602
- gridTemplateColumns,
11603
- gridTemplateRows,
11604
- isInline,
11605
- justify,
11606
- rowGap
11607
- ]);
11284
+ const gridTemplateColumns = templateColumns || !!column && `repeat( ${column}, 1fr )`;
11285
+ const gridTemplateRows = templateRows || !!row && `repeat( ${row}, 1fr )`;
11286
+ const alignmentProps = getAlignmentProps(alignment);
11287
+ const values = {
11288
+ align: alignmentProps.alignItems ?? align,
11289
+ justify: alignmentProps.justifyContent ?? justify,
11290
+ "template-columns": gridTemplateColumns || void 0,
11291
+ "template-rows": gridTemplateRows || void 0,
11292
+ "row-gap": rowGap,
11293
+ "column-gap": columnGap
11294
+ };
11608
11295
  return {
11609
11296
  ...otherProps,
11610
- className: classes
11297
+ className: (0, clsx.default)(style_module_default.grid, {
11298
+ [style_module_default["is-inline"]]: isInline,
11299
+ [style_module_default["has-align"]]: !!values.align?.trim(),
11300
+ [style_module_default["has-justify"]]: !!values.justify?.trim(),
11301
+ [style_module_default["has-template-columns"]]: !!toCSSValue(values["template-columns"]),
11302
+ [style_module_default["has-template-rows"]]: !!toCSSValue(values["template-rows"])
11303
+ }, Object.entries(values).map(([property, value]) => {
11304
+ const keyword = typeof value === "string" ? value.trim().toLowerCase() : "";
11305
+ return CSS_WIDE_KEYWORDS.has(keyword) && style_module_default[`${property}-${keyword}`];
11306
+ }), className),
11307
+ style: {
11308
+ "--wp-components-grid-align": values.align,
11309
+ "--wp-components-grid-justify": values.justify,
11310
+ "--wp-components-grid-gap": gap,
11311
+ "--wp-components-grid-template-columns": toCSSValue(values["template-columns"]),
11312
+ "--wp-components-grid-template-rows": toCSSValue(values["template-rows"]),
11313
+ "--wp-components-grid-row-gap": toCSSValue(rowGap),
11314
+ "--wp-components-grid-column-gap": toCSSValue(columnGap),
11315
+ ...style
11316
+ }
11611
11317
  };
11612
11318
  }
11613
11319
  //#endregion
11614
- //#region ../../../node_modules/.pnpm/@wordpress+components@40.1.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_c300d25e93ed6b8d3659e83df7c1508a/node_modules/@wordpress/components/build-module/grid/component.mjs
11320
+ //#region ../../../node_modules/.pnpm/@wordpress+components@42.0.0_@date-fns+tz@1.5.0_@types+react-dom@18.3.7_@types+react@18_5beefdda355715e908adfea668830e1f/node_modules/@wordpress/components/build-module/grid/component.mjs
11615
11321
  function UnconnectedGrid(props, forwardedRef) {
11616
11322
  const gridProps = useGrid(props);
11617
11323
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(component_default$2, {
@@ -11637,8 +11343,8 @@ const SUBPIXEL_TOLERANCE = .5;
11637
11343
  * depends on `--a8c-charts-dimension-leaderboard-row-gap`, label wrapping, and
11638
11344
  * whatever a caller renders as a label, so any restated number would drift.
11639
11345
  *
11640
- * Every row is a direct grid child marked with `data-row-index`; interactive rows
11641
- * use a button wrapper and non-interactive rows use a div wrapper.
11346
+ * Every row is a `listitem` div, a direct grid child marked with `data-row-index`;
11347
+ * interactive rows hold a button inside it.
11642
11348
  *
11643
11349
  * @param enabled - Whether to measure at all. When false every row fits.
11644
11350
  * @param rowCount - Total number of rows rendered.
@@ -11780,6 +11486,7 @@ var leaderboard_chart_module_default = {
11780
11486
  "overlayLabel": "a8ccharts-GovfoW-overlayLabel",
11781
11487
  "row": "a8ccharts-GovfoW-row",
11782
11488
  "rowButton": "a8ccharts-GovfoW-rowButton",
11489
+ "rowItem": "a8ccharts-GovfoW-rowItem",
11783
11490
  "stretch": "a8ccharts-GovfoW-stretch",
11784
11491
  "valueContainer": "a8ccharts-GovfoW-valueContainer"
11785
11492
  };
@@ -11892,9 +11599,10 @@ const BarWithLabel = ({ entry, withComparison, withOverlayLabel, primaryColor, s
11892
11599
  * @param props.children - Child components for composition API
11893
11600
  * @param props.className - Additional CSS class name
11894
11601
  * @param props.style - Custom styling for the chart container
11602
+ * @param props.ariaLabel - Accessible name for the list, defaulting to "Leaderboard chart"
11895
11603
  * @return JSX element representing the leaderboard chart
11896
11604
  */
11897
- const LeaderboardChartInternal = ({ data, chartId: providedChartId, width: propWidth, height: propHeight, withComparison = false, withOverlayLabel = false, primaryColor, secondaryColor, valueFormatter = defaultValueFormatter, deltaFormatter = defaultDeltaFormatter, animation, loading = false, fitRows = false, showLegend = false, legend = {}, legendLabels, gap = "md", className, style, children }) => {
11605
+ const LeaderboardChartInternal = ({ data, chartId: providedChartId, width: propWidth, height: propHeight, withComparison = false, withOverlayLabel = false, primaryColor, secondaryColor, valueFormatter = defaultValueFormatter, deltaFormatter = defaultDeltaFormatter, animation, loading = false, fitRows = false, showLegend = false, legend = {}, legendLabels, gap = "md", ariaLabel, className, style, children }) => {
11898
11606
  const legendInteractive = legend.interactive ?? false;
11899
11607
  const legendPosition = legend.position ?? "bottom";
11900
11608
  const chartId = useChartId(providedChartId);
@@ -12025,6 +11733,8 @@ const LeaderboardChartInternal = ({ data, chartId: providedChartId, width: propW
12025
11733
  className: leaderboard_chart_module_default.emptyState,
12026
11734
  children: getAllHiddenMessage(legendInteractive, "series")
12027
11735
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(component_default, {
11736
+ role: "list",
11737
+ "aria-label": ariaLabel ?? (0, _wordpress_i18n.__)("Leaderboard chart", "jetpack-charts"),
12028
11738
  templateColumns: "minmax(0, 1fr) auto",
12029
11739
  rowGap: ROW_GAP,
12030
11740
  columnGap: COLUMN_GAP,
@@ -12072,40 +11782,49 @@ const LeaderboardChartInternal = ({ data, chartId: providedChartId, width: propW
12072
11782
  })
12073
11783
  ]
12074
11784
  })] });
12075
- if (entry.onClick && entry.hasInteractiveLabel) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11785
+ if (entry.onClick && entry.hasInteractiveLabel) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11786
+ role: "listitem",
12076
11787
  "data-row-index": rowIndex,
12077
11788
  style: rowStyle,
12078
- className: (0, clsx.default)(leaderboard_chart_module_default.row, leaderboard_chart_module_default.interactiveRow, leaderboard_chart_module_default.layeredRow),
12079
- onClick: forwardCellClickToRowButton,
12080
- children: [
12081
- rowCells,
12082
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
12083
- type: "button",
12084
- className: leaderboard_chart_module_default.rowButton,
12085
- onClick: entry.onClick,
12086
- "aria-label": entry.ariaLabel
12087
- }),
12088
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_wordpress_icons.Icon, {
12089
- className: leaderboard_chart_module_default.chevron,
12090
- icon: _wordpress_icons.chevronRight,
12091
- size: 24
12092
- })
12093
- ]
11789
+ className: leaderboard_chart_module_default.rowItem,
11790
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
11791
+ className: (0, clsx.default)(leaderboard_chart_module_default.row, leaderboard_chart_module_default.interactiveRow, leaderboard_chart_module_default.layeredRow),
11792
+ onClick: forwardCellClickToRowButton,
11793
+ children: [
11794
+ rowCells,
11795
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
11796
+ type: "button",
11797
+ className: leaderboard_chart_module_default.rowButton,
11798
+ onClick: entry.onClick,
11799
+ "aria-label": entry.ariaLabel
11800
+ }),
11801
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_wordpress_icons.Icon, {
11802
+ className: leaderboard_chart_module_default.chevron,
11803
+ icon: _wordpress_icons.chevronRight,
11804
+ size: 24
11805
+ })
11806
+ ]
11807
+ })
12094
11808
  }, entry.id);
12095
- if (entry.onClick) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
12096
- type: "button",
11809
+ if (entry.onClick) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11810
+ role: "listitem",
12097
11811
  "data-row-index": rowIndex,
12098
11812
  style: rowStyle,
12099
- className: (0, clsx.default)(leaderboard_chart_module_default.row, leaderboard_chart_module_default.interactiveRow),
12100
- onClick: entry.onClick,
12101
- "aria-label": entry.ariaLabel,
12102
- children: [rowCells, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_wordpress_icons.Icon, {
12103
- className: leaderboard_chart_module_default.chevron,
12104
- icon: _wordpress_icons.chevronRight,
12105
- size: 24
12106
- })]
11813
+ className: leaderboard_chart_module_default.rowItem,
11814
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
11815
+ type: "button",
11816
+ className: (0, clsx.default)(leaderboard_chart_module_default.row, leaderboard_chart_module_default.interactiveRow),
11817
+ onClick: entry.onClick,
11818
+ "aria-label": entry.ariaLabel,
11819
+ children: [rowCells, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_wordpress_icons.Icon, {
11820
+ className: leaderboard_chart_module_default.chevron,
11821
+ icon: _wordpress_icons.chevronRight,
11822
+ size: 24
11823
+ })]
11824
+ })
12107
11825
  }, entry.id);
12108
11826
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
11827
+ role: "listitem",
12109
11828
  "data-row-index": rowIndex,
12110
11829
  style: rowStyle,
12111
11830
  className: leaderboard_chart_module_default.row,
@@ -12142,11 +11861,13 @@ const PieSelectionAnnouncement = ({ data }) => /* @__PURE__ */ (0, react_jsx_run
12142
11861
  });
12143
11862
  //#endregion
12144
11863
  //#region src/charts/private/pie-keyboard-navigation/pie-tooltip.tsx
11864
+ const TOOLTIP_BOX_STYLE = { zIndex: 3 };
12145
11865
  const PieTooltip = ({ top, left, selectedIndex, tooltipRef, children }) => {
12146
11866
  const standaloneScopeClass = useStandaloneScopeClass();
12147
11867
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BoundedTooltip, {
12148
11868
  top,
12149
11869
  left,
11870
+ style: TOOLTIP_BOX_STYLE,
12150
11871
  children: selectedIndex === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
12151
11872
  className: standaloneScopeClass,
12152
11873
  role: "tooltip",
@@ -12369,6 +12090,7 @@ function RadialWipeAnimation({ id, radius, innerRadius = 0, durationMs = 1e3, wi
12369
12090
  //#endregion
12370
12091
  //#region src/charts/pie-chart/pie-chart.module.scss
12371
12092
  var pie_chart_module_default = {
12093
+ "pie-chart": "a8ccharts-gnszbG-pie-chart",
12372
12094
  "pie-chart__label-plate": "a8ccharts-gnszbG-pie-chart__label-plate",
12373
12095
  "pie-chart__label-text": "a8ccharts-gnszbG-pie-chart__label-text",
12374
12096
  "pie-chart__label-text--black": "a8ccharts-gnszbG-pie-chart__label-text--black",