@gravitee/gamma-lib-observability 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/INTEGRATION.md +57 -1
  2. package/README.md +1 -0
  3. package/USAGE_GUIDE.md +156 -0
  4. package/dist/dashboards/DashboardView.d.ts +1 -1
  5. package/dist/dashboards/DashboardView.d.ts.map +1 -1
  6. package/dist/dashboards/WidgetGroup.d.ts +16 -0
  7. package/dist/dashboards/WidgetGroup.d.ts.map +1 -0
  8. package/dist/dashboards/WidgetGroupContext.d.ts +9 -0
  9. package/dist/dashboards/WidgetGroupContext.d.ts.map +1 -0
  10. package/dist/dashboards/WidgetItem.d.ts +50 -0
  11. package/dist/dashboards/WidgetItem.d.ts.map +1 -0
  12. package/dist/dashboards/index.d.ts +9 -0
  13. package/dist/dashboards/index.d.ts.map +1 -1
  14. package/dist/dashboards/renderers/BarPresentation.d.ts +4 -0
  15. package/dist/dashboards/renderers/BarPresentation.d.ts.map +1 -0
  16. package/dist/dashboards/renderers/BarWidgetRenderer.d.ts.map +1 -1
  17. package/dist/dashboards/renderers/CartesianPresentation.d.ts +4 -0
  18. package/dist/dashboards/renderers/CartesianPresentation.d.ts.map +1 -0
  19. package/dist/dashboards/renderers/CartesianWidgetRenderer.d.ts.map +1 -1
  20. package/dist/dashboards/renderers/DoughnutPresentation.d.ts +4 -0
  21. package/dist/dashboards/renderers/DoughnutPresentation.d.ts.map +1 -0
  22. package/dist/dashboards/renderers/DoughnutWidgetRenderer.d.ts.map +1 -1
  23. package/dist/dashboards/renderers/MetricGroupPresentation.d.ts +4 -0
  24. package/dist/dashboards/renderers/MetricGroupPresentation.d.ts.map +1 -0
  25. package/dist/dashboards/renderers/MetricGroupWidgetRenderer.d.ts.map +1 -1
  26. package/dist/dashboards/renderers/MetricPresentation.d.ts +4 -0
  27. package/dist/dashboards/renderers/MetricPresentation.d.ts.map +1 -0
  28. package/dist/dashboards/renderers/MetricWidgetRenderer.d.ts.map +1 -1
  29. package/dist/dashboards/widget-data.d.ts +71 -0
  30. package/dist/dashboards/widget-data.d.ts.map +1 -0
  31. package/dist/index.d.ts +2 -2
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +767 -643
  34. package/dist/styles/observability.css +1 -1
  35. package/dist/testing/mock-metrics-data-source.d.ts +8 -0
  36. package/dist/testing/mock-metrics-data-source.d.ts.map +1 -0
  37. package/package.json +1 -1
package/INTEGRATION.md CHANGED
@@ -13,6 +13,7 @@ This guide walks through integrating the observability library into a Gamma modu
13
13
  - [Quick Start](#quick-start)
14
14
  - [Feature: Dashboards](#feature-dashboards)
15
15
  - [Feature: Logs](#feature-logs)
16
+ - [Feature: Widget Embedding](#feature-widget-embedding)
16
17
  - [Feature: Traces (preview)](#feature-traces-preview)
17
18
  - [Navigation & Breadcrumbs](#navigation--breadcrumbs)
18
19
  - [Capabilities (RBAC)](#capabilities-rbac)
@@ -383,6 +384,61 @@ interface LogsFeatureConfig {
383
384
 
384
385
  ---
385
386
 
387
+ ## Feature: Widget Embedding
388
+
389
+ Beyond the `observe/*` routes, the library lets you embed individual widgets on any page. This is useful for KPI sections on API detail pages, overview pages, or sidebar widgets.
390
+
391
+ ### Auto mode — connected widgets
392
+
393
+ Widgets fetch their own data from the `MetricsDataSourceProvider`. Mount the provider at app root if it is not already present:
394
+
395
+ ```tsx
396
+ import {
397
+ MetricsDataSourceProvider,
398
+ createHttpDataSource,
399
+ WidgetGroup,
400
+ WidgetItem,
401
+ } from '@gravitee/gamma-lib-observability';
402
+
403
+ const dataSource = createHttpDataSource(baseUrl);
404
+
405
+ <MetricsDataSourceProvider dataSource={dataSource}>
406
+ <WidgetGroup timeRange={tr} filters={apiFilters}>
407
+ <WidgetItem widget={requestsKpi} />
408
+ <WidgetItem widget={errorRateKpi} />
409
+ <WidgetItem widget={latencyKpi} />
410
+ </WidgetGroup>
411
+ </MetricsDataSourceProvider>;
412
+ ```
413
+
414
+ Each `WidgetItem` resolves a renderer that handles data fetching, loading states, and error handling internally.
415
+
416
+ ### Manual mode — host-provided data
417
+
418
+ When you already have the data (e.g. from a different API, WebSocket, or shared state), pass a `data` prop to bypass all data fetching. No `MetricsDataSourceProvider` or `QueryClientProvider` is required:
419
+
420
+ ```tsx
421
+ import { WidgetItem } from '@gravitee/gamma-lib-observability';
422
+ import type { MetricWidgetData } from '@gravitee/gamma-lib-observability';
423
+
424
+ const kpiData: MetricWidgetData = {
425
+ type: 'metric',
426
+ value: '12.4k',
427
+ label: 'Total Requests',
428
+ state: 'ready',
429
+ trend: { value: 10.7, direction: 'up' },
430
+ trendSentiment: 'higher-is-better',
431
+ };
432
+
433
+ <WidgetItem widget={requestsKpi} data={kpiData} />;
434
+ ```
435
+
436
+ Manual mode supports all widget types: `metric`, `metric-group`, `cartesian`, `bar`, `doughnut`. Each type has a corresponding `WidgetData` interface (`MetricWidgetData`, `BarWidgetData`, etc.).
437
+
438
+ For full data type reference, see [`USAGE_GUIDE.md` — Widget Integration Levels](./USAGE_GUIDE.md#widget-integration-levels).
439
+
440
+ ---
441
+
386
442
  ## Feature: Traces (preview)
387
443
 
388
444
  Trace support is available at the **type and provider level** but does not yet have a UI route. You can prepare your integration now:
@@ -588,7 +644,7 @@ defineFilterProvider({
588
644
 
589
645
  ### MetricsDataSourceProvider at app root
590
646
 
591
- If you need observability widgets on pages **outside** the `observe/*` route (e.g., an overview page), wrap your root layout with `MetricsDataSourceProvider`:
647
+ If you use auto-mode widgets on pages **outside** the `observe/*` route (see [Widget Embedding](#feature-widget-embedding)), wrap your root layout with `MetricsDataSourceProvider`:
592
648
 
593
649
  ```tsx
594
650
  import { MetricsDataSourceProvider, createHttpDataSource } from '@gravitee/gamma-lib-observability';
package/README.md CHANGED
@@ -9,6 +9,7 @@ This library provides a **contributor model**: it exports page components, route
9
9
  ### Key features
10
10
 
11
11
  - **Dashboards** — read-only preset dashboards with CSS Grid widget layout
12
+ - **Embeddable widgets** — `WidgetItem` and `WidgetGroup` for embedding KPIs/charts on any page, with auto (data-fetching) and manual (host-provided data) modes
12
13
  - **Logs** — `LogsExplorerPage` with search, filters, pagination, and column visibility
13
14
  - **Filters & time range** — `<FilterBar>`, `<TimeRangePicker>`, URL state codec
14
15
  - **DI providers** — DataSource ports (Metrics, Logs, Traces), Capability, Persistence
package/USAGE_GUIDE.md CHANGED
@@ -282,6 +282,162 @@ if (isTimeSeriesWidget(widget)) {
282
282
 
283
283
  ---
284
284
 
285
+ ## Widget Integration Levels
286
+
287
+ The library provides three levels of widget integration, each usable independently. Level 3 supports both auto mode (data-fetching) and manual mode (host-provided data).
288
+
289
+ ```
290
+ DashboardView (full dashboard with positional grid, editing, persistence, capabilities)
291
+ └→ WidgetGroup (flex layout + shared context via React Context)
292
+ └→ WidgetItem (renderer resolution + data fetching + lifecycle)
293
+ └→ manual mode: host passes data directly (no providers required)
294
+ ```
295
+
296
+ ### Level 1 — `DashboardView` (full dashboard page)
297
+
298
+ Use when you need a complete dashboard experience with a 12-column positional grid.
299
+
300
+ ```tsx
301
+ import { DashboardView } from '@gravitee/gamma-lib-observability';
302
+
303
+ <DashboardView dashboard={dashboardDef} timeRange={tr} />;
304
+ ```
305
+
306
+ ### Level 2 — `WidgetGroup` + `WidgetItem` (KPI section on any page)
307
+
308
+ Use when embedding multiple widgets in a non-dashboard context (e.g. API detail page, overview). `WidgetGroup` propagates `timeRange` and `filters` to all nested `WidgetItem` children via React Context.
309
+
310
+ ```tsx
311
+ import { WidgetGroup, WidgetItem } from '@gravitee/gamma-lib-observability';
312
+
313
+ <WidgetGroup timeRange={tr} filters={apiFilters}>
314
+ <WidgetItem widget={requestsKpi} />
315
+ <WidgetItem widget={errorRateKpi} />
316
+ <WidgetItem widget={latencyKpi} />
317
+ </WidgetGroup>;
318
+ ```
319
+
320
+ `WidgetGroup` renders a responsive flex layout where each child takes equal width. Use `align` to control cross-axis alignment (`'stretch'` | `'center'` | `'start'` | `'end'`, defaults to `'stretch'`).
321
+
322
+ > **Important:** `WidgetGroup` children must be direct `WidgetItem` elements (not wrapped in extra `<div>`s) for equal-width sizing to work correctly.
323
+
324
+ #### Title chrome for chart widgets
325
+
326
+ `WidgetItem` renders the widget's registry output directly — it does **not** provide title chrome. `metric` widgets include their own label, but `cartesian`, `bar`, and `doughnut` widgets rely on external chrome for titles.
327
+
328
+ When embedding chart widgets outside of `DashboardView`, wrap them with `DashboardWidget` from graphene-charts:
329
+
330
+ ```tsx
331
+ import { DashboardWidget } from '@gravitee/graphene-charts/dashboard-grid';
332
+
333
+ <WidgetGroup timeRange={tr}>
334
+ <WidgetItem widget={requestsKpi} />
335
+ <DashboardWidget title="Traffic" noPadding>
336
+ <WidgetItem widget={trafficChart} timeRange={tr} />
337
+ </DashboardWidget>
338
+ </WidgetGroup>;
339
+ ```
340
+
341
+ #### Filter composition
342
+
343
+ `WidgetGroup` filters are passed to renderers via the `filters` prop. If a page-level `ContextFiltersProvider` is also present, renderers will merge both sources — group filters **compose with** page filters, they do not replace them.
344
+
345
+ ### Level 3 — `WidgetItem` standalone (isolated widget)
346
+
347
+ Use when embedding a single widget in a sidebar, card, or other context.
348
+
349
+ ```tsx
350
+ import { WidgetItem } from '@gravitee/gamma-lib-observability';
351
+
352
+ <WidgetItem widget={activeUsersKpi} timeRange={tr} />;
353
+ ```
354
+
355
+ When used standalone, `timeRange` is required as a prop. Props always take precedence over `WidgetGroup` context when both are provided.
356
+
357
+ ### Level 3b — Manual mode (host-provided data)
358
+
359
+ Any `WidgetItem` (standalone or inside a `WidgetGroup`) can switch to manual mode. Use when the host already owns the data, or when no `MetricsDataSourceProvider` is available. Pass a `data` prop matching the widget type to skip all data fetching:
360
+
361
+ ```tsx
362
+ import { WidgetItem } from '@gravitee/gamma-lib-observability';
363
+ import type { MetricWidgetData } from '@gravitee/gamma-lib-observability';
364
+
365
+ const kpiData: MetricWidgetData = {
366
+ type: 'metric',
367
+ value: '12.4k',
368
+ label: 'Total Requests',
369
+ state: 'ready',
370
+ trend: { value: 10.7, direction: 'up' },
371
+ trendSentiment: 'higher-is-better',
372
+ };
373
+
374
+ <WidgetItem widget={requestsKpi} data={kpiData} />;
375
+ ```
376
+
377
+ In manual mode:
378
+
379
+ - No `MetricsDataSourceProvider` or `QueryClientProvider` required
380
+ - No `timeRange` required (the host controls when to re-render)
381
+ - The `data.type` must match `widget.type`
382
+ - The host is responsible for fetching data, computing trends, and managing loading/error states
383
+
384
+ #### Available data types
385
+
386
+ | `data.type` | TypeScript type | Key fields |
387
+ | -------------- | ----------------------- | ------------------------------------------------------------ |
388
+ | `metric` | `MetricWidgetData` | `value`, `label`, `state`, `trend?`, `sparklineData?` |
389
+ | `metric-group` | `MetricGroupWidgetData` | `items[]` (value, label, trend?), `state` |
390
+ | `cartesian` | `CartesianWidgetData` | `data[]` (CartesianDataPoint), `config`, `series[]`, `state` |
391
+ | `bar` | `BarWidgetData` | `data[]` (category, count), `config`, `state`, `layout?` |
392
+ | `doughnut` | `DoughnutWidgetData` | `data[]` (category, value), `config`, `state` |
393
+
394
+ All types share a `state: 'loading' | 'ready' | 'empty'` field that controls skeleton/empty rendering.
395
+
396
+ #### Presentation components
397
+
398
+ For even finer control, the library also exports the pure presentation components directly:
399
+
400
+ ```tsx
401
+ import { MetricPresentation, BarPresentation } from '@gravitee/gamma-lib-observability';
402
+
403
+ <MetricPresentation value="12.4k" label="Requests" state="ready" />;
404
+ ```
405
+
406
+ ### Props reference
407
+
408
+ #### `WidgetItemProps`
409
+
410
+ `WidgetItemProps` is a **discriminated union**: in auto mode, `widget` accepts any `Widget` and `data` is omitted. In manual mode, `widget` and `data` must be the matching pair for the same widget type. TypeScript enforces this at compile time.
411
+
412
+ | Mode | `widget` type | `data` type |
413
+ | ------ | ------------------- | ----------------------- |
414
+ | Auto | `Widget` (any) | omitted |
415
+ | Manual | `MetricWidget` | `MetricWidgetData` |
416
+ | Manual | `MetricGroupWidget` | `MetricGroupWidgetData` |
417
+ | Manual | `CartesianWidget` | `CartesianWidgetData` |
418
+ | Manual | `BarWidget` | `BarWidgetData` |
419
+ | Manual | `DoughnutWidget` | `DoughnutWidgetData` |
420
+
421
+ Shared props (available in all modes):
422
+
423
+ | Prop | Type | Required | Description |
424
+ | ----------- | ---------------------------- | -------- | --------------------------------------------------------------------------------- |
425
+ | `timeRange` | `TimeRange` | No\* | Time range for data fetching. Required in auto mode when not inside `WidgetGroup` |
426
+ | `filters` | `readonly FilterCondition[]` | No | Filters for data fetching. Overrides group context when provided. |
427
+
428
+ \* Not required in manual mode (when `data` is provided).
429
+
430
+ #### `WidgetGroupProps`
431
+
432
+ | Prop | Type | Required | Default | Description |
433
+ | ----------- | ---------------------------- | -------- | ----------- | --------------------------------------------------------- |
434
+ | `timeRange` | `TimeRange` | Yes | | Time range propagated to all nested `WidgetItem`s |
435
+ | `filters` | `readonly FilterCondition[]` | No | `[]` | Filters propagated to all nested `WidgetItem`s |
436
+ | `align` | `WidgetGroupAlign` | No | `'stretch'` | Cross-axis alignment: `stretch`, `center`, `start`, `end` |
437
+ | `children` | `ReactNode` | Yes | | `WidgetItem` children |
438
+
439
+ ---
440
+
285
441
  ## URL State Codec
286
442
 
287
443
  The URL state codec encodes the current observability view (filters + time range) into URL query parameters, enabling bookmarkable and shareable views.
@@ -3,7 +3,7 @@ import { Dashboard, FilterCondition, TimeRange, WidgetLayout } from '../types/do
3
3
  export interface DashboardViewProps {
4
4
  readonly dashboard: Dashboard;
5
5
  readonly timeRange: TimeRange;
6
- readonly filters?: FilterCondition[];
6
+ readonly filters?: readonly FilterCondition[];
7
7
  /** Enable drag-and-drop and resize on dashboard widgets. Requires `observability.dashboards.write` capability. @default false */
8
8
  readonly editable?: boolean;
9
9
  /** Height of a single grid row in pixels. @default 150 */
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardView.d.ts","sourceRoot":"","sources":["../../src/dashboards/DashboardView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,0CAA0C,CAAC;AAGrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAoBnG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,iIAAiI;IACjI,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;CAChF;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAS,EACT,OAAY,EACZ,QAAgB,EAChB,SAAS,EACT,cAAwC,EACxC,cAAc,GACf,EAAE,kBAAkB,2CAoDpB"}
1
+ {"version":3,"file":"DashboardView.d.ts","sourceRoot":"","sources":["../../src/dashboards/DashboardView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,0CAA0C,CAAC;AAGrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiBnG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,iIAAiI;IACjI,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;CAChF;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAS,EACT,OAAuB,EACvB,QAAgB,EAChB,SAAS,EACT,cAAwC,EACxC,cAAc,GACf,EAAE,kBAAkB,2CA8CpB"}
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ import { FilterCondition, TimeRange } from '../types/domain';
3
+ export type WidgetGroupAlign = 'stretch' | 'center' | 'start' | 'end';
4
+ export interface WidgetGroupProps {
5
+ readonly timeRange: TimeRange;
6
+ readonly filters?: readonly FilterCondition[];
7
+ readonly align?: WidgetGroupAlign;
8
+ readonly children: ReactNode;
9
+ }
10
+ /**
11
+ * Groups multiple `WidgetItem` components with a shared `timeRange` and
12
+ * `filters` context. Renders children in a responsive flex layout where
13
+ * each child takes equal width.
14
+ */
15
+ export declare function WidgetGroup({ timeRange, filters, align, children }: WidgetGroupProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=WidgetGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetGroup.d.ts","sourceRoot":"","sources":["../../src/dashboards/WidgetGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGlE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AASD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,OAAuB,EAAE,KAAiB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAQhH"}
@@ -0,0 +1,9 @@
1
+ import { FilterCondition, TimeRange } from '../types/domain';
2
+ export declare const EMPTY_FILTERS: readonly FilterCondition[];
3
+ export interface WidgetGroupContextValue {
4
+ readonly timeRange: TimeRange;
5
+ readonly filters: readonly FilterCondition[];
6
+ }
7
+ export declare const WidgetGroupContextProvider: import('react').Provider<WidgetGroupContextValue | null>;
8
+ export declare function useWidgetGroupContext(): WidgetGroupContextValue | null;
9
+ //# sourceMappingURL=WidgetGroupContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetGroupContext.d.ts","sourceRoot":"","sources":["../../src/dashboards/WidgetGroupContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAElE,eAAO,MAAM,aAAa,EAAE,SAAS,eAAe,EAAO,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAID,eAAO,MAAM,0BAA0B,0DAA8B,CAAC;AAEtE,wBAAgB,qBAAqB,IAAI,uBAAuB,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,50 @@
1
+ import { BarWidget, CartesianWidget, DoughnutWidget, FilterCondition, MetricGroupWidget, MetricWidget, TimeRange, Widget } from '../types/domain';
2
+ import { BarWidgetData, CartesianWidgetData, DoughnutWidgetData, MetricGroupWidgetData, MetricWidgetData } from './widget-data';
3
+ interface WidgetItemBaseProps {
4
+ readonly timeRange?: TimeRange;
5
+ readonly filters?: readonly FilterCondition[];
6
+ }
7
+ interface WidgetItemAutoProps extends WidgetItemBaseProps {
8
+ readonly widget: Widget;
9
+ readonly data?: undefined;
10
+ }
11
+ interface WidgetItemManualMetricProps extends WidgetItemBaseProps {
12
+ readonly widget: MetricWidget;
13
+ readonly data: MetricWidgetData;
14
+ }
15
+ interface WidgetItemManualMetricGroupProps extends WidgetItemBaseProps {
16
+ readonly widget: MetricGroupWidget;
17
+ readonly data: MetricGroupWidgetData;
18
+ }
19
+ interface WidgetItemManualCartesianProps extends WidgetItemBaseProps {
20
+ readonly widget: CartesianWidget;
21
+ readonly data: CartesianWidgetData;
22
+ }
23
+ interface WidgetItemManualBarProps extends WidgetItemBaseProps {
24
+ readonly widget: BarWidget;
25
+ readonly data: BarWidgetData;
26
+ }
27
+ interface WidgetItemManualDoughnutProps extends WidgetItemBaseProps {
28
+ readonly widget: DoughnutWidget;
29
+ readonly data: DoughnutWidgetData;
30
+ }
31
+ /**
32
+ * Props for `WidgetItem`. The union ensures that when `data` is provided,
33
+ * `data.type` is paired with the correct `widget` subtype at compile time.
34
+ */
35
+ export type WidgetItemProps = WidgetItemAutoProps | WidgetItemManualMetricProps | WidgetItemManualMetricGroupProps | WidgetItemManualCartesianProps | WidgetItemManualBarProps | WidgetItemManualDoughnutProps;
36
+ /**
37
+ * Standalone widget that resolves a renderer from the widget registry.
38
+ *
39
+ * **Auto mode** (default): resolves a connected renderer that handles data
40
+ * fetching internally. Requires `MetricsDataSourceProvider` in the tree.
41
+ *
42
+ * **Manual mode** (`data` prop): renders the presentation layer directly
43
+ * with the provided data. No providers or `timeRange` required.
44
+ *
45
+ * When used inside a `WidgetGroup`, inherits `timeRange` and `filters` from
46
+ * context. Props always take precedence over context values.
47
+ */
48
+ export declare function WidgetItem(props: WidgetItemProps): import("react/jsx-runtime").JSX.Element;
49
+ export {};
50
+ //# sourceMappingURL=WidgetItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetItem.d.ts","sourceRoot":"","sources":["../../src/dashboards/WidgetItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,MAAM,EACP,MAAM,iBAAiB,CAAC;AASzB,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAKvB,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAED,UAAU,mBAAoB,SAAQ,mBAAmB;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,UAAU,2BAA4B,SAAQ,mBAAmB;IAC/D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC;AAED,UAAU,gCAAiC,SAAQ,mBAAmB;IACpE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;CACtC;AAED,UAAU,8BAA+B,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;CAC9B;AAED,UAAU,6BAA8B,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,2BAA2B,GAC3B,gCAAgC,GAChC,8BAA8B,GAC9B,wBAAwB,GACxB,6BAA6B,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAMhD"}
@@ -1,4 +1,13 @@
1
1
  export { DashboardView, type DashboardViewProps } from './DashboardView';
2
+ export { WidgetGroup, type WidgetGroupAlign, type WidgetGroupProps } from './WidgetGroup';
3
+ export { useWidgetGroupContext, type WidgetGroupContextValue } from './WidgetGroupContext';
4
+ export { WidgetItem, type WidgetItemProps } from './WidgetItem';
5
+ export type { BarWidgetData, CartesianWidgetData, DoughnutWidgetData, MetricGroupItem, MetricGroupWidgetData, MetricWidgetData, WidgetData, } from './widget-data';
6
+ export { BarPresentation, type BarPresentationProps } from './renderers/BarPresentation';
7
+ export { CartesianPresentation, type CartesianPresentationProps } from './renderers/CartesianPresentation';
8
+ export { DoughnutPresentation, type DoughnutPresentationProps } from './renderers/DoughnutPresentation';
9
+ export { MetricGroupPresentation, type MetricGroupPresentationProps } from './renderers/MetricGroupPresentation';
10
+ export { MetricPresentation, type MetricPresentationProps } from './renderers/MetricPresentation';
2
11
  export { mergeFilters } from './merge-filters';
3
12
  export { registerDefaultRenderers } from './register-default-renderers';
4
13
  export { clearWidgetRenderers, getWidgetRenderer, registerWidgetRenderer, type WidgetRenderer, type WidgetRendererProps, } from './widget-renderer-registry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAG5E,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACjH,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAG5E,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { BarWidgetData } from '../widget-data';
2
+ export type BarPresentationProps = Omit<BarWidgetData, 'type'>;
3
+ export declare function BarPresentation({ data, config, state, layout }: BarPresentationProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=BarPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarPresentation.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/BarPresentation.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOpD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAE/D,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAmB,EAAE,EAAE,oBAAoB,2CAsBjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/BarWidgetRenderer.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAOvE,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,SAAS,CAAC,2CAqD/F"}
1
+ {"version":3,"file":"BarWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/BarWidgetRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,SAAS,CAAC,2CA+B/F"}
@@ -0,0 +1,4 @@
1
+ import { CartesianWidgetData } from '../widget-data';
2
+ export type CartesianPresentationProps = Omit<CartesianWidgetData, 'type'>;
3
+ export declare function CartesianPresentation({ data, config, series, state }: CartesianPresentationProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=CartesianPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartesianPresentation.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/CartesianPresentation.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAE3E,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,0BAA0B,2CAoBhG"}
@@ -1 +1 @@
1
- {"version":3,"file":"CartesianWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/CartesianWidgetRenderer.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAK5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,wBAAgB,uBAAuB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,eAAe,CAAC,2CAwF3G"}
1
+ {"version":3,"file":"CartesianWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/CartesianWidgetRenderer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAK5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,wBAAgB,uBAAuB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,eAAe,CAAC,2CA8D3G"}
@@ -0,0 +1,4 @@
1
+ import { DoughnutWidgetData } from '../widget-data';
2
+ export type DoughnutPresentationProps = Omit<DoughnutWidgetData, 'type'>;
3
+ export declare function DoughnutPresentation({ data, config, state }: DoughnutPresentationProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=DoughnutPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DoughnutPresentation.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/DoughnutPresentation.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,yBAAyB,2CAStF"}
@@ -1 +1 @@
1
- {"version":3,"file":"DoughnutWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/DoughnutWidgetRenderer.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,cAAc,CAAC,2CAuCzG"}
1
+ {"version":3,"file":"DoughnutWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/DoughnutWidgetRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,cAAc,CAAC,2CAkCzG"}
@@ -0,0 +1,4 @@
1
+ import { MetricGroupWidgetData } from '../widget-data';
2
+ export type MetricGroupPresentationProps = Omit<MetricGroupWidgetData, 'type'>;
3
+ export declare function MetricGroupPresentation({ items, state, skeletonCount }: MetricGroupPresentationProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=MetricGroupPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricGroupPresentation.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricGroupPresentation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE/E,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,4BAA4B,2CAEpG"}
@@ -1 +1 @@
1
- {"version":3,"file":"MetricGroupWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricGroupWidgetRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqBvE,wBAAgB,yBAAyB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,2CAmF/G"}
1
+ {"version":3,"file":"MetricGroupWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricGroupWidgetRenderer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAsBvE,wBAAgB,yBAAyB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,2CAmF/G"}
@@ -0,0 +1,4 @@
1
+ import { MetricWidgetData } from '../widget-data';
2
+ export type MetricPresentationProps = Omit<MetricWidgetData, 'type'>;
3
+ export declare function MetricPresentation({ value, label, state, trend, trendSentiment, sparklineData, }: MetricPresentationProps): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=MetricPresentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricPresentation.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricPresentation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAErE,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,aAAa,GACd,EAAE,uBAAuB,2CAWzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MetricWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricWidgetRenderer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,YAAY,CAAC,2CA4ErG"}
1
+ {"version":3,"file":"MetricWidgetRenderer.d.ts","sourceRoot":"","sources":["../../../src/dashboards/renderers/MetricWidgetRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC,YAAY,CAAC,2CA4ErG"}
@@ -0,0 +1,71 @@
1
+ import { CartesianDataPoint, ChartConfig, ChartState, MetricTrend } from '@gravitee/graphene-charts';
2
+ import { BarChartLayout, MetricTrendSentiment, SeriesDefinition } from '../types/domain';
3
+ /**
4
+ * Pre-computed presentation data for a `metric` widget.
5
+ * Pass to `WidgetItem` via the `data` prop to bypass automatic data fetching.
6
+ */
7
+ export interface MetricWidgetData {
8
+ readonly type: 'metric';
9
+ readonly value: string | number;
10
+ readonly label: string;
11
+ readonly state: ChartState;
12
+ readonly trend?: MetricTrend;
13
+ readonly trendSentiment?: MetricTrendSentiment;
14
+ readonly sparklineData?: number[];
15
+ }
16
+ /**
17
+ * Pre-computed presentation data for a `metric-group` widget.
18
+ */
19
+ export interface MetricGroupWidgetData {
20
+ readonly type: 'metric-group';
21
+ readonly items: readonly MetricGroupItem[];
22
+ readonly state: ChartState;
23
+ readonly skeletonCount?: number;
24
+ }
25
+ export interface MetricGroupItem {
26
+ readonly value: string | number;
27
+ readonly label: string;
28
+ readonly trend?: MetricTrend;
29
+ readonly trendSentiment?: MetricTrendSentiment;
30
+ }
31
+ /**
32
+ * Pre-computed presentation data for a `cartesian` widget.
33
+ */
34
+ export interface CartesianWidgetData {
35
+ readonly type: 'cartesian';
36
+ readonly data: readonly CartesianDataPoint[];
37
+ readonly config: ChartConfig;
38
+ readonly series: readonly SeriesDefinition[];
39
+ readonly state: ChartState;
40
+ }
41
+ /**
42
+ * Pre-computed presentation data for a `bar` widget.
43
+ */
44
+ export interface BarWidgetData {
45
+ readonly type: 'bar';
46
+ readonly data: readonly {
47
+ category: string;
48
+ count: number;
49
+ }[];
50
+ readonly config: ChartConfig;
51
+ readonly state: ChartState;
52
+ readonly layout?: BarChartLayout;
53
+ }
54
+ /**
55
+ * Pre-computed presentation data for a `doughnut` widget.
56
+ */
57
+ export interface DoughnutWidgetData {
58
+ readonly type: 'doughnut';
59
+ readonly data: readonly {
60
+ category: string;
61
+ value: number;
62
+ }[];
63
+ readonly config: ChartConfig;
64
+ readonly state: ChartState;
65
+ }
66
+ /**
67
+ * Discriminated union of all widget data types.
68
+ * The `type` field matches the corresponding `Widget['type']`.
69
+ */
70
+ export type WidgetData = MetricWidgetData | MetricGroupWidgetData | CartesianWidgetData | BarWidgetData | DoughnutWidgetData;
71
+ //# sourceMappingURL=widget-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-data.d.ts","sourceRoot":"","sources":["../../src/dashboards/widget-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9F;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,qBAAqB,GACrB,mBAAmB,GACnB,aAAa,GACb,kBAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -11,8 +11,8 @@ export { CODEC_VERSION, DEFAULT_TIME_RANGE, decodeObservabilityState, encodeObse
11
11
  export type { EncodedState, ObservabilityState } from './url-state';
12
12
  export { buildChipLabel, buildChipLabelParts, buildChipTooltip, DEFAULT_PERIOD, defineFilterProvider, FilterBar, FilterChip, FilterPopoverForm, FilterProvidersProvider, getLocaleWeekStart, isMultiSelectForFilter, normalizeMembershipOperatorForValues, operatorLabel, operatorNeedsValue, PERIOD_DISPLAY_LABELS, PERIOD_LABELS, PRESET_CATEGORIES, RELATIVE_PERIODS, resolveRelativePeriod, TimeRangePicker, useFilterProvider, useFilterProviders, } from './filters';
13
13
  export type { ChipLabelParts, FilterBarProps, FilterChipProps, FilterPopoverFormProps, FilterProvider, FilterProviderConfig, FilterProviderKind, FilterProvidersProviderProps, FilterValueLoaderParams, FilterValueLoaderResult, FilterValueOption, PresetCategory, ResolveOptions, TimeRangePickerProps, WeekStartDay, } from './filters';
14
- export { DashboardView, clearWidgetRenderers, computeBucketInterval, computePreviousTimeRange, computeTrend, extractMeasureValue, extractSparklineData, facetsToBar, facetsToDoughnut, getWidgetRenderer, measureResultToMetric, mergeFilters, mergeTimeSeriesToCartesian, registerDefaultRenderers, registerWidgetRenderer, resolveStableTimeRange, } from './dashboards';
15
- export type { AdaptedMetric, DashboardViewProps, WidgetRenderer, WidgetRendererProps } from './dashboards';
14
+ export { BarPresentation, CartesianPresentation, DashboardView, DoughnutPresentation, MetricGroupPresentation, MetricPresentation, WidgetGroup, WidgetItem, clearWidgetRenderers, computeBucketInterval, computePreviousTimeRange, computeTrend, extractMeasureValue, extractSparklineData, facetsToBar, facetsToDoughnut, getWidgetRenderer, measureResultToMetric, mergeFilters, mergeTimeSeriesToCartesian, registerDefaultRenderers, registerWidgetRenderer, resolveStableTimeRange, useWidgetGroupContext, } from './dashboards';
15
+ export type { AdaptedMetric, BarPresentationProps, BarWidgetData, CartesianPresentationProps, CartesianWidgetData, DashboardViewProps, DoughnutPresentationProps, DoughnutWidgetData, MetricGroupItem, MetricGroupPresentationProps, MetricGroupWidgetData, MetricPresentationProps, MetricWidgetData, WidgetData, WidgetGroupAlign, WidgetGroupContextValue, WidgetGroupProps, WidgetItemProps, WidgetRenderer, WidgetRendererProps, } from './dashboards';
16
16
  export { DashboardTemplatesProvider, defineDashboardTemplate, resolveDashboardFromTemplate, useDashboardTemplate, useDashboardTemplates, } from './dashboards';
17
17
  export type { DashboardTemplate, DashboardTemplateConfig, DashboardTemplateContext, DashboardTemplatesProviderProps, } from './dashboards';
18
18
  export { LiveIndicator } from './live';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}