@sentropic/dataviz-react 0.2.1 → 0.4.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.
package/dist/index.d.ts CHANGED
@@ -34,4 +34,10 @@ export { ValueSlicer } from './lib/ValueSlicer.js';
34
34
  export type { ValueSlicerProps } from './lib/ValueSlicer.js';
35
35
  export { ExportMenu, rowsToCsv } from './lib/ExportMenu.js';
36
36
  export type { ExportMenuProps } from './lib/ExportMenu.js';
37
+ export { DateRangeFilter, dateRangeToSpec } from './lib/DateRangeFilter.js';
38
+ export type { DateRangeFilterProps } from './lib/DateRangeFilter.js';
39
+ export { RelativeDateFilter, relativeRangeToSpec, DEFAULT_RELATIVE_PRESETS, } from './lib/RelativeDateFilter.js';
40
+ export type { RelativeDateFilterProps, RelativeDatePreset } from './lib/RelativeDateFilter.js';
41
+ export { RangeSliderFilter, numericDomain, rangeBoundsToSpec } from './lib/RangeSliderFilter.js';
42
+ export type { RangeSliderFilterProps, NumericDomain } from './lib/RangeSliderFilter.js';
37
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACjG,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -23,4 +23,7 @@ export { DrillBreadcrumb } from './lib/DrillBreadcrumb.js';
23
23
  export { TopNFilter } from './lib/TopNFilter.js';
24
24
  export { ValueSlicer } from './lib/ValueSlicer.js';
25
25
  export { ExportMenu, rowsToCsv } from './lib/ExportMenu.js';
26
+ export { DateRangeFilter, dateRangeToSpec } from './lib/DateRangeFilter.js';
27
+ export { RelativeDateFilter, relativeRangeToSpec, DEFAULT_RELATIVE_PRESETS, } from './lib/RelativeDateFilter.js';
28
+ export { RangeSliderFilter, numericDomain, rangeBoundsToSpec } from './lib/RangeSliderFilter.js';
26
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iFAAiF;AACjF,cAAc,cAAc,CAAC;AAE7B,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iFAAiF;AACjF,cAAc,cAAc,CAAC;AAE7B,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type DashboardStore, type FilterSpec } from '@sentropic/dataviz-core';
2
+ export type DateRangeFilterProps = {
3
+ /** The dashboard store to bind to. */
4
+ store: DashboardStore;
5
+ /** Date dimension to filter (its cells must be epoch-millisecond numbers). */
6
+ dimension: string;
7
+ label?: string;
8
+ className?: string;
9
+ };
10
+ /**
11
+ * Pure: a DatePicker `{ start, end }` range → a core `range` FilterSpec in epoch
12
+ * milliseconds (bounds optional), or `null` when the range is empty.
13
+ */
14
+ export declare function dateRangeToSpec(range: {
15
+ start: Date | null;
16
+ end: Date | null;
17
+ }): FilterSpec | null;
18
+ /**
19
+ * A date-range filter: a design-system DatePicker (range mode) bound to a core
20
+ * `range` filter on a date dimension (epoch-millisecond cells).
21
+ */
22
+ export declare function DateRangeFilter({ store, dimension, label, className }: DateRangeFilterProps): import("react").JSX.Element;
23
+ //# sourceMappingURL=DateRangeFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.d.ts","sourceRoot":"","sources":["../../src/lib/DateRangeFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAKlG;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAiB,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAgBvG"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { DatePicker } from '@sentropic/design-system-react';
4
+ import {} from '@sentropic/dataviz-core';
5
+ /**
6
+ * Pure: a DatePicker `{ start, end }` range → a core `range` FilterSpec in epoch
7
+ * milliseconds (bounds optional), or `null` when the range is empty.
8
+ */
9
+ export function dateRangeToSpec(range) {
10
+ const min = range.start ? range.start.getTime() : undefined;
11
+ const max = range.end ? range.end.getTime() : undefined;
12
+ if (min === undefined && max === undefined)
13
+ return null;
14
+ return { kind: 'range', min, max };
15
+ }
16
+ const asRange = (value) => value && typeof value === 'object' && 'start' in value ? value : { start: null, end: null };
17
+ /**
18
+ * A date-range filter: a design-system DatePicker (range mode) bound to a core
19
+ * `range` filter on a date dimension (epoch-millisecond cells).
20
+ */
21
+ export function DateRangeFilter({ store, dimension, label = 'Période', className }) {
22
+ const [range, setRange] = useState({ start: null, end: null });
23
+ useEffect(() => {
24
+ const spec = dateRangeToSpec(range);
25
+ if (spec)
26
+ store.setFilter(dimension, spec);
27
+ else
28
+ store.clearFilter(dimension);
29
+ }, [store, dimension, range]);
30
+ return (_jsx(DatePicker, { mode: "range", label: label, value: range, onChange: (v) => setRange(asRange(v)), className: className }));
31
+ }
32
+ //# sourceMappingURL=DateRangeFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.js","sourceRoot":"","sources":["../../src/lib/DateRangeFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,UAAU,EAA8C,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAwC,MAAM,yBAAyB,CAAC;AAW/E;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA+C;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAmB,EAAE,CAC1D,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE9F;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,EAAwB;IACtG,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YACtC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9B,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACrC,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type DashboardStore, type FilterSpec, type Row } from '@sentropic/dataviz-core';
2
+ export type NumericDomain = {
3
+ min: number;
4
+ max: number;
5
+ };
6
+ export type RangeSliderFilterProps = {
7
+ /** The dashboard store to bind to. */
8
+ store: DashboardStore;
9
+ /** Continuous numeric dimension to filter. */
10
+ dimension: string;
11
+ label?: string;
12
+ /** Lower bound of the track; defaults to the data minimum. */
13
+ min?: number;
14
+ /** Upper bound of the track; defaults to the data maximum. */
15
+ max?: number;
16
+ step?: number;
17
+ };
18
+ /**
19
+ * Pure: the numeric `[min, max]` domain of a dimension across rows (finite
20
+ * values only). Returns `{ min: 0, max: 0 }` when no finite value is present.
21
+ */
22
+ export declare function numericDomain(data: readonly Row[], dimension: string): NumericDomain;
23
+ /**
24
+ * Pure: two slider handles → a core `range` FilterSpec (bounds normalized so
25
+ * `lo <= hi`), or `null` when they span the whole domain (no constraint).
26
+ */
27
+ export declare function rangeBoundsToSpec(lower: number, upper: number, domain: NumericDomain): FilterSpec | null;
28
+ /**
29
+ * A two-handle numeric range filter composed from two design-system Sliders
30
+ * (min + max) bound to a core `range` filter on a continuous dimension.
31
+ */
32
+ export declare function RangeSliderFilter({ store, dimension, label, min, max, step }: RangeSliderFilterProps): import("react").JSX.Element;
33
+ //# sourceMappingURL=RangeSliderFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeSliderFilter.d.ts","sourceRoot":"","sources":["../../src/lib/RangeSliderFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAExG,MAAM,MAAM,aAAa,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAAG;IACnC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAWpF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAKxG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAQ,EAAE,EAAE,sBAAsB,+BAmCxG"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { Slider } from '@sentropic/design-system-react';
4
+ import { findDimension } from '@sentropic/dataviz-core';
5
+ /**
6
+ * Pure: the numeric `[min, max]` domain of a dimension across rows (finite
7
+ * values only). Returns `{ min: 0, max: 0 }` when no finite value is present.
8
+ */
9
+ export function numericDomain(data, dimension) {
10
+ let min = Infinity;
11
+ let max = -Infinity;
12
+ for (const row of data) {
13
+ const v = row[dimension];
14
+ if (typeof v === 'number' && Number.isFinite(v)) {
15
+ if (v < min)
16
+ min = v;
17
+ if (v > max)
18
+ max = v;
19
+ }
20
+ }
21
+ return min === Infinity ? { min: 0, max: 0 } : { min, max };
22
+ }
23
+ /**
24
+ * Pure: two slider handles → a core `range` FilterSpec (bounds normalized so
25
+ * `lo <= hi`), or `null` when they span the whole domain (no constraint).
26
+ */
27
+ export function rangeBoundsToSpec(lower, upper, domain) {
28
+ const lo = Math.min(lower, upper);
29
+ const hi = Math.max(lower, upper);
30
+ if (lo <= domain.min && hi >= domain.max)
31
+ return null;
32
+ return { kind: 'range', min: lo, max: hi };
33
+ }
34
+ /**
35
+ * A two-handle numeric range filter composed from two design-system Sliders
36
+ * (min + max) bound to a core `range` filter on a continuous dimension.
37
+ */
38
+ export function RangeSliderFilter({ store, dimension, label, min, max, step = 1 }) {
39
+ const [domain] = useState(() => {
40
+ const d = numericDomain(store.data, dimension);
41
+ return { min: min ?? d.min, max: max ?? d.max };
42
+ });
43
+ const resolvedLabel = label ?? findDimension(store.model, dimension)?.label ?? dimension;
44
+ const [lower, setLower] = useState(domain.min);
45
+ const [upper, setUpper] = useState(domain.max);
46
+ useEffect(() => {
47
+ const spec = rangeBoundsToSpec(lower, upper, domain);
48
+ if (spec)
49
+ store.setFilter(dimension, spec);
50
+ else
51
+ store.clearFilter(dimension);
52
+ }, [store, dimension, lower, upper, domain]);
53
+ return (_jsxs(_Fragment, { children: [_jsx(Slider, { label: `${resolvedLabel} (min)`, value: lower, min: domain.min, max: domain.max, step: step, onChange: (e) => setLower(e.target.valueAsNumber) }), _jsx(Slider, { label: `${resolvedLabel} (max)`, value: upper, min: domain.min, max: domain.max, step: step, onChange: (e) => setUpper(e.target.valueAsNumber) })] }));
54
+ }
55
+ //# sourceMappingURL=RangeSliderFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeSliderFilter.js","sourceRoot":"","sources":["../../src/lib/RangeSliderFilter.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type DashboardStore, type FilterSpec } from '@sentropic/dataviz-core';
2
+ /**
3
+ * A relative-date preset: a labelled choice resolving to a trailing window of
4
+ * `days` ending "now", or `null` days for "all" (no filter).
5
+ */
6
+ export type RelativeDatePreset = {
7
+ value: string;
8
+ label: string;
9
+ /** Trailing window length in days, or `null` for "all" (clears the filter). */
10
+ days: number | null;
11
+ };
12
+ export type RelativeDateFilterProps = {
13
+ /** The dashboard store to bind to. */
14
+ store: DashboardStore;
15
+ /** Date dimension to filter (its cells must be epoch-millisecond numbers). */
16
+ dimension: string;
17
+ label?: string;
18
+ /** Selectable presets; defaults to {@link DEFAULT_RELATIVE_PRESETS}. */
19
+ presets?: RelativeDatePreset[];
20
+ /** Reference "now" for the trailing windows; defaults to the current time. */
21
+ now?: Date;
22
+ className?: string;
23
+ };
24
+ /** Default relative-date presets: all / 7 / 30 / 90 days / 12 months. */
25
+ export declare const DEFAULT_RELATIVE_PRESETS: RelativeDatePreset[];
26
+ /**
27
+ * Pure: a trailing window of `days` ending at `now` → a core `range` FilterSpec
28
+ * in epoch milliseconds, or `null` when `days` is `null` ("all", no filter).
29
+ */
30
+ export declare function relativeRangeToSpec(days: number | null, now: Date): FilterSpec | null;
31
+ /**
32
+ * A relative-date filter: a design-system Select of trailing-window presets
33
+ * bound to a core `range` filter on a date dimension (epoch-millisecond cells).
34
+ */
35
+ export declare function RelativeDateFilter({ store, dimension, label, presets, now, className, }: RelativeDateFilterProps): import("react").JSX.Element;
36
+ //# sourceMappingURL=RelativeDateFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelativeDateFilter.d.ts","sourceRoot":"","sources":["../../src/lib/RelativeDateFilter.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAMxD,CAAC;AAIF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,UAAU,GAAG,IAAI,CAIrF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,KAAiB,EACjB,OAAkC,EAClC,GAAG,EACH,SAAS,GACV,EAAE,uBAAuB,+BAkBzB"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Select } from '@sentropic/design-system-react';
4
+ import {} from '@sentropic/dataviz-core';
5
+ /** Default relative-date presets: all / 7 / 30 / 90 days / 12 months. */
6
+ export const DEFAULT_RELATIVE_PRESETS = [
7
+ { value: 'all', label: 'Tout', days: null },
8
+ { value: '7d', label: '7 derniers jours', days: 7 },
9
+ { value: '30d', label: '30 derniers jours', days: 30 },
10
+ { value: '90d', label: '90 derniers jours', days: 90 },
11
+ { value: '365d', label: '12 derniers mois', days: 365 },
12
+ ];
13
+ const DAY_MS = 24 * 60 * 60 * 1000;
14
+ /**
15
+ * Pure: a trailing window of `days` ending at `now` → a core `range` FilterSpec
16
+ * in epoch milliseconds, or `null` when `days` is `null` ("all", no filter).
17
+ */
18
+ export function relativeRangeToSpec(days, now) {
19
+ if (days == null)
20
+ return null;
21
+ const max = now.getTime();
22
+ return { kind: 'range', min: max - days * DAY_MS, max };
23
+ }
24
+ /**
25
+ * A relative-date filter: a design-system Select of trailing-window presets
26
+ * bound to a core `range` filter on a date dimension (epoch-millisecond cells).
27
+ */
28
+ export function RelativeDateFilter({ store, dimension, label = 'Période', presets = DEFAULT_RELATIVE_PRESETS, now, className, }) {
29
+ const nowRef = useRef(now ?? new Date());
30
+ const [selected, setSelected] = useState(presets[0]?.value ?? 'all');
31
+ useEffect(() => {
32
+ const preset = presets.find((p) => p.value === selected);
33
+ const spec = preset ? relativeRangeToSpec(preset.days, nowRef.current) : null;
34
+ if (spec)
35
+ store.setFilter(dimension, spec);
36
+ else
37
+ store.clearFilter(dimension);
38
+ }, [store, dimension, selected, presets]);
39
+ return (_jsx(Select, { label: label, value: selected, onChange: (e) => setSelected(e.target.value), options: presets.map((p) => ({ value: p.value, label: p.label })), className: className }));
40
+ }
41
+ //# sourceMappingURL=RelativeDateFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelativeDateFilter.js","sourceRoot":"","sources":["../../src/lib/RelativeDateFilter.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAwC,MAAM,yBAAyB,CAAC;AA0B/E,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAyB;IAC5D,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3C,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE;IACnD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;IACtD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE;IACtD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE;CACxD,CAAC;AAEF,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAmB,EAAE,GAAS;IAChE,IAAI,IAAI,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,wBAAwB,EAClC,GAAG,EACH,SAAS,GACe;IACxB,MAAM,MAAM,GAAG,MAAM,CAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;IACrE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,IAAI,IAAI;YAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;YACtC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,CACL,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EACjE,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SmallMultiples.d.ts","sourceRoot":"","sources":["../../src/lib/SmallMultiples.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAW,EACX,IAAI,EACJ,SAAS,GACV,EAAE,mBAAmB,+BAoCrB"}
1
+ {"version":3,"file":"SmallMultiples.d.ts","sourceRoot":"","sources":["../../src/lib/SmallMultiples.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,MAAM,mBAAmB,GAAG;IAChC,sCAAsC;IACtC,KAAK,EAAE,cAAc,CAAC;IACtB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAW,EACX,IAAI,EACJ,SAAS,GACV,EAAE,mBAAmB,+BAuCrB"}
@@ -26,17 +26,21 @@ export function SmallMultiples({ store, viewId, facetBy, dimension, measure, lab
26
26
  keys.push(k);
27
27
  }
28
28
  }
29
+ let min = 0;
29
30
  let max = 0;
30
31
  panels = keys.map((k) => {
31
32
  const facetRows = rows.filter((row) => keyOf(row[facetBy]) === k);
32
33
  const data = groupAggregate(facetRows, dimension, m).map(({ key: barKey, value }) => {
34
+ if (value < min)
35
+ min = value;
33
36
  if (value > max)
34
37
  max = value;
35
38
  return tone ? { label: barKey, value, tone } : { label: barKey, value };
36
39
  });
37
40
  return { key: k, data };
38
41
  });
39
- domain = panels.length ? [0, max] : undefined;
42
+ // Shared domain anchored at 0 (keeps negatives in view for mixed facets).
43
+ domain = panels.length ? [min, max] : undefined;
40
44
  }
41
45
  return (_jsx(Grid, { columns: columns, gap: 4, className: className, role: "group", "aria-label": label, children: panels.map((panel) => (_jsx(BarChart, { data: panel.data, label: `${label} — ${panel.key}`, domain: domain }, panel.key))) }));
42
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SmallMultiples.js","sourceRoot":"","sources":["../../src/lib/SmallMultiples.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,GAGT,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,GAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAsB7C,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/D;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,GAAG,CAAC,EACX,IAAI,EACJ,SAAS,GACW;IACpB,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,GAA6C,EAAE,CAAC;IAC1D,IAAI,MAAoC,CAAC;IACzC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBAClF,IAAI,KAAK,GAAG,GAAG;oBAAE,GAAG,GAAG,KAAK,CAAC;gBAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC1E,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IACD,OAAO,CACL,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,OAAO,gBAAa,KAAK,YACjF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,QAAQ,IAAiB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,IAA7E,KAAK,CAAC,GAAG,CAAwE,CACjG,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SmallMultiples.js","sourceRoot":"","sources":["../../src/lib/SmallMultiples.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/dataviz-react",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "React adapter for @sentropic/dataviz-core, built on @sentropic/design-system-react.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -27,8 +27,8 @@
27
27
  "test": "vitest run"
28
28
  },
29
29
  "dependencies": {
30
- "@sentropic/dataviz-core": "0.2.1",
31
- "@sentropic/design-system-react": "0.18.0",
30
+ "@sentropic/dataviz-core": "0.4.0",
31
+ "@sentropic/design-system-react": "0.21.0",
32
32
  "@sentropic/design-system-themes": "0.11.0"
33
33
  },
34
34
  "peerDependencies": {