@zestl/zvolv-widgets 0.0.1 → 0.0.3
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/CHANGELOG.md +62 -0
- package/MIRROR_NOTES.md +156 -0
- package/README.md +271 -6
- package/SKILL.md +30 -3
- package/dist/index.cjs +4691 -3792
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +434 -24
- package/dist/index.d.ts +434 -24
- package/dist/index.js +4543 -3663
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
package/dist/index.d.ts
CHANGED
|
@@ -235,6 +235,8 @@ declare function useTokens(): ZvolvTokens;
|
|
|
235
235
|
|
|
236
236
|
type KpiTemplateId = "standard" | "trend" | "comparison" | "progress" | "financial" | "status" | "chart" | "hero_chart" | "icon";
|
|
237
237
|
type BadgeTone = "success" | "warning" | "error" | "info" | "neutral";
|
|
238
|
+
/** Where a content item goes in a card-level KPI layout (`config.layout: "card"`). */
|
|
239
|
+
type KpiRole = "main" | "sub" | "chip" | "series";
|
|
238
240
|
/**
|
|
239
241
|
* View-model for a single resolved KPI item.
|
|
240
242
|
*
|
|
@@ -273,9 +275,34 @@ interface KpiContentVM {
|
|
|
273
275
|
description?: string;
|
|
274
276
|
};
|
|
275
277
|
series?: number[];
|
|
278
|
+
/** From `KpiContentConfig.role`; set only when configured. */
|
|
279
|
+
role?: KpiRole;
|
|
276
280
|
raw: any;
|
|
277
281
|
config: any;
|
|
278
282
|
}
|
|
283
|
+
/** Content items sorted into card slots. */
|
|
284
|
+
interface KpiCardRoles {
|
|
285
|
+
/** role "main", else the first item without a role, else the first item. */
|
|
286
|
+
main: KpiContentVM | null;
|
|
287
|
+
/** role "sub": small values under the main one. */
|
|
288
|
+
subs: KpiContentVM[];
|
|
289
|
+
/** role "chip": its `delta` is the change badge. */
|
|
290
|
+
chip: KpiContentVM | null;
|
|
291
|
+
/** Sparkline data: the role "series" item's series, else main's. */
|
|
292
|
+
series: number[] | undefined;
|
|
293
|
+
}
|
|
294
|
+
/** Args for `KpiWidget` `render` and the `"KPI_CARD:card"` template. */
|
|
295
|
+
interface KpiCardRenderArgs {
|
|
296
|
+
/** Every resolved item, in config order. */
|
|
297
|
+
vms: KpiContentVM[];
|
|
298
|
+
/** Items by `dataPoint` (the first item wins when two share one). */
|
|
299
|
+
byKey: Record<string, KpiContentVM>;
|
|
300
|
+
roles: KpiCardRoles;
|
|
301
|
+
state: "loading" | "ready" | "empty" | "unconfigured" | "error";
|
|
302
|
+
tokens: any;
|
|
303
|
+
config: any;
|
|
304
|
+
onItemClick?: (vm: KpiContentVM, index: number) => void;
|
|
305
|
+
}
|
|
279
306
|
/** Props every KPI template component receives. */
|
|
280
307
|
interface KpiTemplateProps {
|
|
281
308
|
vm: KpiContentVM;
|
|
@@ -307,11 +334,23 @@ declare const Value: React.FC<{
|
|
|
307
334
|
declare const Delta: React.FC<{
|
|
308
335
|
vm: KpiTemplateProps["vm"];
|
|
309
336
|
}>;
|
|
310
|
-
|
|
337
|
+
interface KpiSparklineProps {
|
|
311
338
|
series: number[];
|
|
312
339
|
color: string;
|
|
340
|
+
/** CSS width. Default "100%". */
|
|
341
|
+
width?: number | string;
|
|
342
|
+
/** Height in px. Default 40. */
|
|
313
343
|
height?: number;
|
|
314
|
-
|
|
344
|
+
/** Fill the area under the line. */
|
|
345
|
+
area?: boolean;
|
|
346
|
+
/** "minmax" (default) fits the data; "zero" keeps 0 on the axis. */
|
|
347
|
+
scale?: "minmax" | "zero";
|
|
348
|
+
}
|
|
349
|
+
declare const Sparkline: React.FC<KpiSparklineProps>;
|
|
350
|
+
/** Sorts card items into slots by `role`. Pure. */
|
|
351
|
+
declare function resolveKpiRoles(vms: KpiContentVM[]): KpiCardRoles;
|
|
352
|
+
/** Default `"KPI_CARD:card"` template: one card, items placed by `role`. */
|
|
353
|
+
declare const Card: React.FC<KpiCardRenderArgs>;
|
|
315
354
|
declare const KPI_DEFAULT_TEMPLATES: {
|
|
316
355
|
standard: React.FC<KpiTemplateProps>;
|
|
317
356
|
trend: React.FC<KpiTemplateProps>;
|
|
@@ -458,7 +497,21 @@ declare const WidgetShell: React.FC<WidgetShellProps>;
|
|
|
458
497
|
|
|
459
498
|
/** Heuristic: a plain number in the ~2000–2100 ms-epoch band is a timestamp, not a value. */
|
|
460
499
|
declare function isLikelyTimestamp(v: any): boolean;
|
|
461
|
-
type DateGapUnit = "day" | "week" | "month";
|
|
500
|
+
type DateGapUnit = "day" | "week" | "month" | "quarter" | "year";
|
|
501
|
+
/**
|
|
502
|
+
* Start of the period containing `d`. Weeks start on Monday (ISO), matching
|
|
503
|
+
* Elasticsearch's `1w` calendar_interval; quarters start Jan/Apr/Jul/Oct.
|
|
504
|
+
* Periods are in the browser's zone unless `timeZone` (IANA) is given.
|
|
505
|
+
*/
|
|
506
|
+
declare function startOfPeriod(d: dayjs.Dayjs, unit: DateGapUnit, timeZone?: string): dayjs.Dayjs;
|
|
507
|
+
/** The period after `d` (which must already be a period start). */
|
|
508
|
+
declare function addPeriod(d: dayjs.Dayjs, unit: DateGapUnit, timeZone?: string): dayjs.Dayjs;
|
|
509
|
+
/**
|
|
510
|
+
* Parses an x-value. Epoch ms and strings with an explicit offset are instants;
|
|
511
|
+
* other strings ("2026-01-05", "2026-01-05 10:00") are wall time in `timeZone`
|
|
512
|
+
* when given, else in the browser's zone.
|
|
513
|
+
*/
|
|
514
|
+
declare function parseDateValue(v: any, timeZone?: string): dayjs.Dayjs;
|
|
462
515
|
interface FillDateGapsArgs {
|
|
463
516
|
rows: any[];
|
|
464
517
|
xKey: string;
|
|
@@ -470,18 +523,92 @@ interface FillDateGapsArgs {
|
|
|
470
523
|
start: dayjs.Dayjs;
|
|
471
524
|
end: dayjs.Dayjs;
|
|
472
525
|
} | null;
|
|
526
|
+
/**
|
|
527
|
+
* How rows falling in the same period combine. "sum" (default) adds each
|
|
528
|
+
* series valueField and keeps the first row's other fields (x included).
|
|
529
|
+
* "last" keeps only the last row per period — the pre-0.0.2 behaviour, which
|
|
530
|
+
* drops data when day-level rows are shown weekly or monthly.
|
|
531
|
+
*/
|
|
532
|
+
merge?: "sum" | "last";
|
|
533
|
+
/**
|
|
534
|
+
* x-value format for inserted zero rows when it cannot be inferred from the
|
|
535
|
+
* data (e.g. empty input). Default: "date" ("YYYY-MM-DD"), or "timestamp"
|
|
536
|
+
* when the first row's x is epoch ms.
|
|
537
|
+
*/
|
|
538
|
+
xFormat?: "timestamp" | "date";
|
|
539
|
+
/**
|
|
540
|
+
* IANA zone periods are computed in. Must match the ES `time_zone` the rows
|
|
541
|
+
* were bucketed in (`groupBy(..., { timeZone })`). Default: browser zone.
|
|
542
|
+
*/
|
|
543
|
+
timeZone?: string;
|
|
473
544
|
}
|
|
474
545
|
/**
|
|
475
546
|
* Inserts zero rows for periods with no data so a time axis reads continuously.
|
|
476
547
|
*
|
|
477
|
-
*
|
|
478
|
-
*
|
|
548
|
+
* Periods are keyed by their start instant, so keys stay unambiguous across
|
|
549
|
+
* year boundaries. A period's existing row keeps its own x-value and format
|
|
550
|
+
* (epoch ms stays epoch ms, strings stay strings); inserted zero rows use the
|
|
551
|
+
* period start in the same format.
|
|
552
|
+
*/
|
|
553
|
+
declare function fillDateGaps({ rows, xKey, series, unit, range, merge, xFormat, timeZone, }: FillDateGapsArgs): any[];
|
|
554
|
+
/**
|
|
555
|
+
* Running totals ("level over time"): replaces each `fields` value with the sum
|
|
556
|
+
* of itself and every earlier row, starting from `baseline[field]` (the total
|
|
557
|
+
* before the first row). Rows are ordered by `xKey` date first; rows whose x is
|
|
558
|
+
* not a date keep their position at the end.
|
|
479
559
|
*/
|
|
480
|
-
declare function
|
|
560
|
+
declare function applyCumulative(rows: any[], xKey: string, fields: string[], baseline?: Record<string, number>): any[];
|
|
481
561
|
declare function coerceSeriesNumbers(rows: any[], series: {
|
|
482
562
|
valueField: string;
|
|
483
563
|
}[]): any[];
|
|
484
564
|
|
|
565
|
+
/**
|
|
566
|
+
* Row reshaping that runs client-side after the query: turning one wide row
|
|
567
|
+
* into one row per category (`unpivot`), and filling categories that returned
|
|
568
|
+
* no bucket (`categoryGap`). Neither changes what is queried.
|
|
569
|
+
*/
|
|
570
|
+
interface UnpivotOptions {
|
|
571
|
+
/** Columns of row 0 to turn into rows, in output order. */
|
|
572
|
+
columns: string[];
|
|
573
|
+
/** Output key for the column name. Default "label". */
|
|
574
|
+
labelField?: string;
|
|
575
|
+
/** Output key for the column value. Default "value". */
|
|
576
|
+
valueField?: string;
|
|
577
|
+
/**
|
|
578
|
+
* Extra columns to copy onto an output row: source column → output field.
|
|
579
|
+
* A source column belongs to the listed column its name starts with (the
|
|
580
|
+
* longest such match), so `{ "Contacted %": "step" }` sets `step` on the
|
|
581
|
+
* "Contacted" row. A source column matching no listed column is copied
|
|
582
|
+
* onto every output row.
|
|
583
|
+
*/
|
|
584
|
+
extra?: Record<string, string>;
|
|
585
|
+
}
|
|
586
|
+
interface CategoryGapOptions {
|
|
587
|
+
/** Row key holding the category — normally the chart's argumentField. */
|
|
588
|
+
field: string;
|
|
589
|
+
/**
|
|
590
|
+
* Categories in display order, or "fromForm" to read the field's dropdown
|
|
591
|
+
* options from the form schema.
|
|
592
|
+
*/
|
|
593
|
+
values: string[] | "fromForm";
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Row 0's `columns` → one row per column, in the given order:
|
|
597
|
+
* `{ [labelField]: column, [valueField]: number }`. A missing column is 0.
|
|
598
|
+
* Other input rows are ignored (a multi-number source returns one row).
|
|
599
|
+
*/
|
|
600
|
+
declare function unpivotRows(rows: any[], options: UnpivotOptions): any[];
|
|
601
|
+
/** The dropdown values of a form element, as stored (select value first). */
|
|
602
|
+
declare function elementOptionValues(element: any): string[];
|
|
603
|
+
/**
|
|
604
|
+
* One row per value of `field`, in `values` order. Categories with no row get
|
|
605
|
+
* `{ [field]: value }` plus 0 for every series valueField. Rows whose category
|
|
606
|
+
* is not listed are kept, in their original order, after the listed ones.
|
|
607
|
+
*/
|
|
608
|
+
declare function fillCategoryGaps(rows: any[], field: string, values: string[], series: {
|
|
609
|
+
valueField: string;
|
|
610
|
+
}[]): any[];
|
|
611
|
+
|
|
485
612
|
/**
|
|
486
613
|
* DataSource authoring — how a widget says WHERE its data comes from.
|
|
487
614
|
*
|
|
@@ -528,14 +655,35 @@ interface DataSourceField {
|
|
|
528
655
|
filter?: FieldFilter;
|
|
529
656
|
formula?: any[];
|
|
530
657
|
}
|
|
658
|
+
type DateInterval = "day" | "week" | "month" | "quarter" | "year";
|
|
531
659
|
interface PivotRow {
|
|
532
660
|
/** Output column name. Must match the series `argumentField`. */
|
|
533
661
|
title: string;
|
|
662
|
+
/** The Elasticsearch field grouped on. */
|
|
534
663
|
masterField: string;
|
|
535
664
|
masterFieldType?: string;
|
|
536
665
|
masterFieldDataType?: MasterFieldDataType;
|
|
666
|
+
/**
|
|
667
|
+
* Date fields only: bucket by calendar period (ES `date_histogram`) instead of
|
|
668
|
+
* by exact value. Weeks start on Monday (ISO). Row keys are epoch ms.
|
|
669
|
+
*/
|
|
670
|
+
interval?: DateInterval;
|
|
671
|
+
/** IANA zone for `interval` bucket boundaries. Default: the browser's zone. */
|
|
672
|
+
timeZone?: string;
|
|
673
|
+
}
|
|
674
|
+
type AggregationType = "sum" | "avg" | "min" | "max" | "count" | "value_count" | "cardinality" | "percentiles";
|
|
675
|
+
type DateDiffUnit = "days" | "hours" | "minutes";
|
|
676
|
+
/** `end - start` between two date fields, as built by `dateDiff()`. */
|
|
677
|
+
interface DateDiffSpec {
|
|
678
|
+
/** Start date masterfield. */
|
|
679
|
+
start: string;
|
|
680
|
+
/**
|
|
681
|
+
* End date masterfield; or a fixed end: a date token (`{@[TODAY]}`,
|
|
682
|
+
* `{@[7DAYSAGO]}`, …) or a literal date ("2026-03-31", ISO date-time).
|
|
683
|
+
*/
|
|
684
|
+
end: string;
|
|
685
|
+
unit: DateDiffUnit;
|
|
537
686
|
}
|
|
538
|
-
type AggregationType = "sum" | "avg" | "min" | "max" | "count" | "value_count" | "cardinality";
|
|
539
687
|
interface PivotSummary {
|
|
540
688
|
title: string;
|
|
541
689
|
masterField: string;
|
|
@@ -544,6 +692,15 @@ interface PivotSummary {
|
|
|
544
692
|
/** Output name of the aggregated value. Must match the series `valueField`. */
|
|
545
693
|
value: string;
|
|
546
694
|
type: AggregationType;
|
|
695
|
+
/** Aggregate a date difference (script) instead of a stored field. */
|
|
696
|
+
dateDiff?: DateDiffSpec;
|
|
697
|
+
/** `percentiles` only: which percentiles. Rows get `<value>_p50`-style keys. */
|
|
698
|
+
percents?: number[];
|
|
699
|
+
/**
|
|
700
|
+
* Conditions from `aggregate(..., { where })`. `pivot()` / `formSource()` /
|
|
701
|
+
* `taskSource()` move them into `pivot.filters`; they are not read from here.
|
|
702
|
+
*/
|
|
703
|
+
filters?: PivotFilter[];
|
|
547
704
|
}
|
|
548
705
|
interface PivotFilter {
|
|
549
706
|
field: string;
|
|
@@ -553,6 +710,12 @@ interface PivotFilter {
|
|
|
553
710
|
masterFieldDataType?: MasterFieldDataType;
|
|
554
711
|
operator: FilterOperator;
|
|
555
712
|
value: any[];
|
|
713
|
+
/**
|
|
714
|
+
* "AND": AND this condition with every other entry targeting the same
|
|
715
|
+
* `field` (summary). Without it, only the last entry per field applies —
|
|
716
|
+
* the original behaviour, kept for stored configs.
|
|
717
|
+
*/
|
|
718
|
+
combine?: "AND";
|
|
556
719
|
}
|
|
557
720
|
type PostOperator = "ADD" | "SUB" | "MUL" | "DIV" | "PERCENT";
|
|
558
721
|
interface PostOperation {
|
|
@@ -595,13 +758,49 @@ declare function field(header: string, masterFieldType: MasterFieldType | string
|
|
|
595
758
|
* "Status" becomes masterfield "status" automatically.
|
|
596
759
|
*/
|
|
597
760
|
declare function taskField(header: string, masterFieldType?: MasterFieldType | string, options?: Partial<DataSourceField>): DataSourceField;
|
|
598
|
-
/**
|
|
599
|
-
|
|
761
|
+
/**
|
|
762
|
+
* A group-by dimension. `title` is what a series' `argumentField` must match;
|
|
763
|
+
* the query groups on the field's masterfield.
|
|
764
|
+
*
|
|
765
|
+
* Pass `{ interval }` on a date field to bucket by calendar period:
|
|
766
|
+
* `groupBy(requestDate, "Month", { interval: "month" })`.
|
|
767
|
+
*/
|
|
768
|
+
declare function groupBy(f: DataSourceField, title?: string, options?: {
|
|
769
|
+
interval?: DateInterval;
|
|
770
|
+
timeZone?: string;
|
|
771
|
+
}): PivotRow;
|
|
772
|
+
/** A field-like spec for `aggregate()`: the time from `start` to `end`. */
|
|
773
|
+
interface DateDiffField extends DataSourceField {
|
|
774
|
+
dateDiff: DateDiffSpec;
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* The time between two date fields, for `aggregate()` (avg / min / max / sum /
|
|
778
|
+
* percentiles). Documents missing either date are skipped.
|
|
779
|
+
*
|
|
780
|
+
* `end` is a date field, or a fixed end that only needs `start` to exist:
|
|
781
|
+
* `"TODAY"` / a date token like `{@[30DAYSAGO]}` (start of that day), or a
|
|
782
|
+
* literal date such as `"2026-03-31"` (local midnight) or an ISO date-time.
|
|
783
|
+
* Any other string is treated as a field name; an unknown `{@[…]}` token warns.
|
|
784
|
+
*
|
|
785
|
+
* aggregate(dateDiff(requestDate, offerDate, "days"), "avg", "Avg Days to Offer")
|
|
786
|
+
*/
|
|
787
|
+
declare function dateDiff(start: DataSourceField, end: DataSourceField | "TODAY" | string, unit?: DateDiffUnit): DateDiffField;
|
|
788
|
+
interface AggregateOptions {
|
|
789
|
+
/** `percentiles` only. Default (ES): 1, 5, 25, 50, 75, 95, 99. */
|
|
790
|
+
percents?: number[];
|
|
791
|
+
/**
|
|
792
|
+
* Conditions this metric alone is filtered by, AND-ed together. Several
|
|
793
|
+
* filtered metrics on one form still run as one request.
|
|
794
|
+
*
|
|
795
|
+
* aggregate(amount, "sum", "Billed", { where: [[status, where("IN", "Invoiced", "Paid")]] })
|
|
796
|
+
*/
|
|
797
|
+
where?: [DataSourceField, FieldFilter][];
|
|
798
|
+
}
|
|
600
799
|
/**
|
|
601
800
|
* An aggregated metric. `outputName` is what a series' `valueField` must match,
|
|
602
801
|
* and what a postOperation references as an operand.
|
|
603
802
|
*/
|
|
604
|
-
declare function aggregate(f: DataSourceField, type?: AggregationType, outputName?: string): PivotSummary;
|
|
803
|
+
declare function aggregate(f: DataSourceField, type?: AggregationType, outputName?: string, options?: AggregateOptions): PivotSummary;
|
|
605
804
|
/**
|
|
606
805
|
* A value derived from other aggregates, computed after the query returns.
|
|
607
806
|
*
|
|
@@ -769,11 +968,19 @@ interface UseWidgetDataArgs {
|
|
|
769
968
|
*/
|
|
770
969
|
localFilters?: any;
|
|
771
970
|
rowLimit?: number;
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
971
|
+
/** Fill empty periods (and optionally accumulate) on a date x-axis. See `DateGapOptions`. */
|
|
972
|
+
dateGap?: DateGapOptions | null;
|
|
973
|
+
/**
|
|
974
|
+
* Turn row 0's columns into one row per column, in order (after
|
|
975
|
+
* postOperations). With no declared series, x/y become `labelField`/`valueField`.
|
|
976
|
+
*/
|
|
977
|
+
unpivot?: UnpivotOptions | null;
|
|
978
|
+
/**
|
|
979
|
+
* Ensure one row per category, in the given order, with 0 for every series
|
|
980
|
+
* valueField where no bucket came back. Applied after postOperations and
|
|
981
|
+
* widget filters, before local search / column filters / sort.
|
|
982
|
+
*/
|
|
983
|
+
categoryGap?: CategoryGapOptions | null;
|
|
777
984
|
/** Rows supplied by an automation binding; when provided, no query is issued. */
|
|
778
985
|
automationRows?: any[] | null;
|
|
779
986
|
automationLoading?: boolean;
|
|
@@ -788,6 +995,39 @@ interface UseWidgetDataArgs {
|
|
|
788
995
|
/** Debounce for remote search, ms. Default 400. */
|
|
789
996
|
searchDebounceMs?: number;
|
|
790
997
|
}
|
|
998
|
+
interface DateGapOptions {
|
|
999
|
+
unit: DateGapUnit;
|
|
1000
|
+
/** Range to fill, inclusive. Both are needed to insert zero rows. */
|
|
1001
|
+
start?: string;
|
|
1002
|
+
end?: string;
|
|
1003
|
+
/** How rows in the same period combine. Default "sum"; "last" is the pre-0.0.2 behaviour. */
|
|
1004
|
+
merge?: "sum" | "last";
|
|
1005
|
+
/**
|
|
1006
|
+
* IANA zone for period boundaries. Default: the `timeZone` of the pivot row
|
|
1007
|
+
* plotted on x (`groupBy(..., { interval, timeZone })`), else the browser's.
|
|
1008
|
+
*/
|
|
1009
|
+
timeZone?: string;
|
|
1010
|
+
/**
|
|
1011
|
+
* Running totals after gap filling: `true` for every series valueField, or a
|
|
1012
|
+
* list of fields. Each row then holds the level at the end of its period.
|
|
1013
|
+
* Rows before `start` are dropped (they belong to the baseline), even when
|
|
1014
|
+
* `end` is not given.
|
|
1015
|
+
*/
|
|
1016
|
+
cumulative?: string[] | true;
|
|
1017
|
+
/** Starting value per cumulative field: the total before `start`. */
|
|
1018
|
+
baseline?: Record<string, number>;
|
|
1019
|
+
/**
|
|
1020
|
+
* Fetch `baseline` instead of passing it: a summary-only data source whose
|
|
1021
|
+
* summary output names match the cumulative fields. The hook adds
|
|
1022
|
+
* `dateField < start` and the widget's dashboard / widget filters (not the
|
|
1023
|
+
* dashboard date range, which would exclude everything before `start`).
|
|
1024
|
+
* One extra request. An explicit `baseline` value wins per field.
|
|
1025
|
+
*/
|
|
1026
|
+
baselineSource?: {
|
|
1027
|
+
dataSource: ZvolvDataSource;
|
|
1028
|
+
dateField: string;
|
|
1029
|
+
};
|
|
1030
|
+
}
|
|
791
1031
|
/**
|
|
792
1032
|
* Fetches, normalizes and shapes a widget's rows.
|
|
793
1033
|
*
|
|
@@ -1008,6 +1248,19 @@ interface KpiWidgetProps extends Omit<InteractiveWidgetProps, "widgetType"> {
|
|
|
1008
1248
|
className?: string;
|
|
1009
1249
|
style?: React.CSSProperties;
|
|
1010
1250
|
onItemClick?: (vm: any, index: number) => void;
|
|
1251
|
+
/**
|
|
1252
|
+
* Sparkline series per content index, for `seriesSource.mode: "timeseries"`
|
|
1253
|
+
* items you fetch yourself. Wins over a self-fetched `seriesSource.dataSource`.
|
|
1254
|
+
*/
|
|
1255
|
+
externalSeriesByIndex?: Record<number, number[]>;
|
|
1256
|
+
/**
|
|
1257
|
+
* Render the whole card yourself. Used only with `layout: "card"` (so a
|
|
1258
|
+
* generic `render` a host passes to every widget never changes a KPI).
|
|
1259
|
+
* Wins over the `"KPI_CARD:card"` template.
|
|
1260
|
+
*/
|
|
1261
|
+
renderCard?: (args: KpiCardRenderArgs) => React.ReactNode;
|
|
1262
|
+
/** Same as `renderCard`, and likewise only with `layout: "card"`. */
|
|
1263
|
+
render?: (args: KpiCardRenderArgs) => React.ReactNode;
|
|
1011
1264
|
}
|
|
1012
1265
|
declare const KpiWidget: React.FC<KpiWidgetProps>;
|
|
1013
1266
|
|
|
@@ -1081,9 +1334,49 @@ interface RankingBarWidgetProps extends Omit<InteractiveWidgetProps, "widgetType
|
|
|
1081
1334
|
}
|
|
1082
1335
|
/**
|
|
1083
1336
|
* Ranked list of categories. Sorting, ranking and ratio math happen here; the
|
|
1084
|
-
* caller renders. `config.ranking` supplies { limit, order, labelField, valueField }
|
|
1337
|
+
* caller renders. `config.ranking` supplies { limit, order, labelField, valueField };
|
|
1338
|
+
* `order: "none"` keeps the incoming row order.
|
|
1085
1339
|
*/
|
|
1086
1340
|
declare const RankingBarWidget: React.FC<RankingBarWidgetProps>;
|
|
1341
|
+
interface FunnelRow {
|
|
1342
|
+
label: any;
|
|
1343
|
+
value: number;
|
|
1344
|
+
/** value ÷ the first stage's value, 0..∞. 0 when the first stage is 0. */
|
|
1345
|
+
ratioToFirst: number;
|
|
1346
|
+
/** value ÷ the previous stage × 100. null for the first stage, or when the previous is 0. */
|
|
1347
|
+
stepPct: number | null;
|
|
1348
|
+
isFirst: boolean;
|
|
1349
|
+
index: number;
|
|
1350
|
+
raw: any;
|
|
1351
|
+
}
|
|
1352
|
+
interface FunnelRenderArgs {
|
|
1353
|
+
rows: FunnelRow[];
|
|
1354
|
+
/** The first stage, or null with no rows. */
|
|
1355
|
+
first: FunnelRow | null;
|
|
1356
|
+
tokens: ZvolvTokens;
|
|
1357
|
+
config: any;
|
|
1358
|
+
toLabel: (value: any) => any;
|
|
1359
|
+
onItemClick?: (row: FunnelRow) => void;
|
|
1360
|
+
}
|
|
1361
|
+
interface FunnelWidgetProps extends Omit<InteractiveWidgetProps, "widgetType"> {
|
|
1362
|
+
title?: string;
|
|
1363
|
+
description?: string;
|
|
1364
|
+
emptyMessage?: string;
|
|
1365
|
+
unconfiguredMessage?: string;
|
|
1366
|
+
className?: string;
|
|
1367
|
+
style?: React.CSSProperties;
|
|
1368
|
+
/** Called with the clicked stage — for drill-down. */
|
|
1369
|
+
onItemClick?: (row: FunnelRow) => void;
|
|
1370
|
+
render?: (args: FunnelRenderArgs) => React.ReactNode;
|
|
1371
|
+
}
|
|
1372
|
+
/** Rows (in stage order) → funnel stages. Pure; usable outside React. */
|
|
1373
|
+
declare function computeFunnelRows(rows: any[], labelField: string, valueField: string): FunnelRow[];
|
|
1374
|
+
/**
|
|
1375
|
+
* Stage funnel (type FUNNEL). Rows arrive in stage order — usually from `unpivot` on a
|
|
1376
|
+
* one-row, many-number source — and are never re-sorted. `config.funnel`
|
|
1377
|
+
* may set { labelField, valueField }; defaults are the series x / y.
|
|
1378
|
+
*/
|
|
1379
|
+
declare const FunnelWidget: React.FC<FunnelWidgetProps>;
|
|
1087
1380
|
interface GaugeRenderArgs {
|
|
1088
1381
|
value: number;
|
|
1089
1382
|
min: number;
|
|
@@ -2034,15 +2327,45 @@ declare function resolveFormWidget(config: any, dataSource?: any): {
|
|
|
2034
2327
|
};
|
|
2035
2328
|
/** Form widget: the headless form engine inside widget chrome. */
|
|
2036
2329
|
declare const FormWidget: React.FC<FormWidgetProps>;
|
|
2330
|
+
/** Options for a filter control fetched from another data source. */
|
|
2331
|
+
interface FilterOptionsSource {
|
|
2332
|
+
/** Usually a raw-rows formSource on another form, e.g. open mandates. */
|
|
2333
|
+
dataSource: any;
|
|
2334
|
+
/** Row key shown in the dropdown. */
|
|
2335
|
+
labelField: string;
|
|
2336
|
+
/**
|
|
2337
|
+
* Row key used as the filter value. For a FORM_SEARCH lookup target this
|
|
2338
|
+
* must be the lookup's ViewLabel field: the filter matches `<field>.view`.
|
|
2339
|
+
*/
|
|
2340
|
+
valueField: string;
|
|
2341
|
+
/** Sort options by label. Default: keep the source's row order. */
|
|
2342
|
+
sort?: "asc" | "desc";
|
|
2343
|
+
/** Label of the "no filter" option. Default "All". */
|
|
2344
|
+
allLabel?: string;
|
|
2345
|
+
}
|
|
2346
|
+
interface FilterOption {
|
|
2347
|
+
label: any;
|
|
2348
|
+
value: any;
|
|
2349
|
+
}
|
|
2037
2350
|
interface FilterControl {
|
|
2038
2351
|
key: string;
|
|
2039
2352
|
label: any;
|
|
2040
2353
|
type: "text" | "select" | "multiselect" | "date" | "daterange" | "number";
|
|
2041
|
-
options?:
|
|
2042
|
-
label: any;
|
|
2043
|
-
value: any;
|
|
2044
|
-
}[];
|
|
2354
|
+
options?: FilterOption[];
|
|
2045
2355
|
value?: any;
|
|
2356
|
+
/** Field the produced WidgetFilter targets. */
|
|
2357
|
+
field?: string;
|
|
2358
|
+
optionsSource?: FilterOptionsSource;
|
|
2359
|
+
/** True while `optionsSource` options load. */
|
|
2360
|
+
loading?: boolean;
|
|
2361
|
+
}
|
|
2362
|
+
interface FilterSlotArgs {
|
|
2363
|
+
control: FilterControl;
|
|
2364
|
+
options: FilterOption[];
|
|
2365
|
+
value: any;
|
|
2366
|
+
setValue: (value: any) => void;
|
|
2367
|
+
loading: boolean;
|
|
2368
|
+
tokens: ZvolvTokens;
|
|
2046
2369
|
}
|
|
2047
2370
|
interface FilterPanelRenderArgs {
|
|
2048
2371
|
controls: FilterControl[];
|
|
@@ -2050,6 +2373,8 @@ interface FilterPanelRenderArgs {
|
|
|
2050
2373
|
setValue: (key: string, value: any) => void;
|
|
2051
2374
|
apply: () => void;
|
|
2052
2375
|
reset: () => void;
|
|
2376
|
+
/** Current selections as widget filters (select / multiselect controls with a `field`). */
|
|
2377
|
+
filters: WidgetFilter[];
|
|
2053
2378
|
tokens: ZvolvTokens;
|
|
2054
2379
|
config: any;
|
|
2055
2380
|
}
|
|
@@ -2061,8 +2386,31 @@ interface FilterPanelWidgetProps {
|
|
|
2061
2386
|
/** Current filter values, owned by the dashboard (URL params). */
|
|
2062
2387
|
value?: Record<string, any>;
|
|
2063
2388
|
onChange?: (values: Record<string, any>) => void;
|
|
2389
|
+
/**
|
|
2390
|
+
* Selections as `WidgetFilter[]` — pass straight to a widget's
|
|
2391
|
+
* `widgetFilters`. A control on "All" (null / empty) contributes nothing.
|
|
2392
|
+
*/
|
|
2393
|
+
onFiltersChange?: (filters: WidgetFilter[]) => void;
|
|
2394
|
+
/** Replaces one control's UI; the panel still owns options and state. */
|
|
2395
|
+
renderFilter?: (args: FilterSlotArgs) => React.ReactNode;
|
|
2064
2396
|
render?: (args: FilterPanelRenderArgs) => React.ReactNode;
|
|
2065
2397
|
}
|
|
2398
|
+
/**
|
|
2399
|
+
* The option a stored value refers to. Values restored from URL params are
|
|
2400
|
+
* strings, so "123" matches an option whose value is 123.
|
|
2401
|
+
*/
|
|
2402
|
+
declare function matchFilterOption(options: FilterOption[] | undefined, value: any): FilterOption | undefined;
|
|
2403
|
+
/** Panel values → widget filters: `{ field, operator: "IN", value: [...] }` per selected control. */
|
|
2404
|
+
declare function filterPanelToWidgetFilters(controls: FilterControl[], values: Record<string, any>): WidgetFilter[];
|
|
2405
|
+
/**
|
|
2406
|
+
* The query behind a control's options: a distinct-values (composite terms)
|
|
2407
|
+
* aggregation over the WHOLE index, with the source's own filters applied by
|
|
2408
|
+
* Elasticsearch — never "the first N rows". A source that already declares a
|
|
2409
|
+
* pivot is used as is.
|
|
2410
|
+
*/
|
|
2411
|
+
declare function optionsDataSource(source: FilterOptionsSource): any;
|
|
2412
|
+
/** Fetched rows → distinct, non-empty options. Pure. */
|
|
2413
|
+
declare function rowsToFilterOptions(rows: any[], source: FilterOptionsSource): FilterOption[];
|
|
2066
2414
|
/**
|
|
2067
2415
|
* In-grid filter panel. Dashboard filters are URL-param driven and owned by the
|
|
2068
2416
|
* host, so this is a controlled component: it renders controls and reports
|
|
@@ -2151,6 +2499,19 @@ declare function getPostOpOperandSet(postOperations?: any[]): Set<string>;
|
|
|
2151
2499
|
*/
|
|
2152
2500
|
declare function alignSummaryToSeries(dataSource: any, series: any[]): any;
|
|
2153
2501
|
|
|
2502
|
+
/**
|
|
2503
|
+
* Percentiles summaries come back as an object of percent → value rather than
|
|
2504
|
+
* a number. These helpers spread it into flat, chartable keys.
|
|
2505
|
+
*/
|
|
2506
|
+
/** Output key for one percentile: ("Days", 50) → "Days_p50", 99.9 → "Days_p99_9". */
|
|
2507
|
+
declare function percentileKey(name: string, percent: number | string): string;
|
|
2508
|
+
/**
|
|
2509
|
+
* For each named percentiles summary, writes `<name>_p<percent>` keys and sets
|
|
2510
|
+
* `<name>` itself to the median (p50) when it was requested. Rows whose value
|
|
2511
|
+
* is already a number, or flat `<name>_p..` keys from the server, are left as is.
|
|
2512
|
+
*/
|
|
2513
|
+
declare function flattenPercentiles(rows: any[], names: string[]): any[];
|
|
2514
|
+
|
|
2154
2515
|
declare const PREFIX_UNITS: Record<string, string>;
|
|
2155
2516
|
declare const SUFFIX_UNITS: Record<string, string>;
|
|
2156
2517
|
/** Mirrors Angular formatAmountValue() from dashboards.utils */
|
|
@@ -2182,6 +2543,21 @@ declare function usesFormFramework(dataSource: ZvolvDataSource): boolean;
|
|
|
2182
2543
|
* did not author.
|
|
2183
2544
|
*/
|
|
2184
2545
|
|
|
2546
|
+
/**
|
|
2547
|
+
* A KPI sparkline that fetches its own series. The widget runs one query per
|
|
2548
|
+
* content item through `useWidgetData`, applies `dateGap`, and plots
|
|
2549
|
+
* `rows[].valueField` in x order.
|
|
2550
|
+
*/
|
|
2551
|
+
interface KpiTimeseriesSource {
|
|
2552
|
+
mode: "timeseries";
|
|
2553
|
+
/** Usually a pivot grouped by a date row with `interval`. */
|
|
2554
|
+
dataSource: ZvolvDataSource;
|
|
2555
|
+
/** Row key of the period — the groupBy title. */
|
|
2556
|
+
xField: string;
|
|
2557
|
+
/** Row key of the plotted value — the aggregate output name. */
|
|
2558
|
+
valueField: string;
|
|
2559
|
+
dateGap?: DateGapOptions;
|
|
2560
|
+
}
|
|
2185
2561
|
interface AxisConfig {
|
|
2186
2562
|
title?: string;
|
|
2187
2563
|
valueFormat?: string;
|
|
@@ -2208,7 +2584,7 @@ interface ChartConfig extends WidgetChromeConfig {
|
|
|
2208
2584
|
stackOrder?: "none" | "asc" | "desc";
|
|
2209
2585
|
/** Insert zero rows for empty periods so a time axis reads continuously. */
|
|
2210
2586
|
fillDateGaps?: boolean;
|
|
2211
|
-
dateGapUnit?:
|
|
2587
|
+
dateGapUnit?: DateGapUnit;
|
|
2212
2588
|
}
|
|
2213
2589
|
interface KpiContentConfig {
|
|
2214
2590
|
title?: string;
|
|
@@ -2241,13 +2617,25 @@ interface KpiContentConfig {
|
|
|
2241
2617
|
statusFallbackTone?: string;
|
|
2242
2618
|
seriesPoints?: string[];
|
|
2243
2619
|
seriesPoint?: string;
|
|
2244
|
-
|
|
2620
|
+
/**
|
|
2621
|
+
* `{ mode: "timeseries", dataSource, xField, valueField, dateGap }` makes the
|
|
2622
|
+
* widget fetch the sparkline itself. `{ mode: "timeseries" }` alone still
|
|
2623
|
+
* reads the `externalSeriesByIndex` prop.
|
|
2624
|
+
*/
|
|
2625
|
+
seriesSource?: KpiTimeseriesSource | {
|
|
2245
2626
|
mode?: "timeseries" | "fields";
|
|
2246
2627
|
[k: string]: any;
|
|
2247
2628
|
};
|
|
2629
|
+
/** Slot in `layout: "card"`: big value, small inline value, delta chip, or sparkline. */
|
|
2630
|
+
role?: KpiRole;
|
|
2248
2631
|
}
|
|
2249
2632
|
interface KpiConfig extends WidgetChromeConfig {
|
|
2250
2633
|
template?: KpiTemplateId;
|
|
2634
|
+
/**
|
|
2635
|
+
* "card" renders every item inside ONE card, placed by `role` (template key
|
|
2636
|
+
* `"KPI_CARD:card"`). Default: each item as its own block.
|
|
2637
|
+
*/
|
|
2638
|
+
layout?: "card" | "stack";
|
|
2251
2639
|
contents?: KpiContentConfig[];
|
|
2252
2640
|
}
|
|
2253
2641
|
interface TableColumnConfig {
|
|
@@ -2361,10 +2749,19 @@ interface RankingConfig extends WidgetChromeConfig {
|
|
|
2361
2749
|
ranking?: {
|
|
2362
2750
|
labelField?: string;
|
|
2363
2751
|
valueField?: string;
|
|
2364
|
-
|
|
2752
|
+
/** "none" keeps the incoming row order. Default "desc". */
|
|
2753
|
+
order?: "asc" | "desc" | "none";
|
|
2365
2754
|
limit?: number;
|
|
2366
2755
|
};
|
|
2367
2756
|
}
|
|
2757
|
+
interface FunnelConfig extends WidgetChromeConfig {
|
|
2758
|
+
template?: string;
|
|
2759
|
+
/** Defaults: the series x / y (with `unpivot`, "label" / "value"). */
|
|
2760
|
+
funnel?: {
|
|
2761
|
+
labelField?: string;
|
|
2762
|
+
valueField?: string;
|
|
2763
|
+
};
|
|
2764
|
+
}
|
|
2368
2765
|
interface TreeConfig extends WidgetChromeConfig {
|
|
2369
2766
|
tree?: {
|
|
2370
2767
|
idField?: string;
|
|
@@ -2423,6 +2820,19 @@ interface FilterPanelConfig extends WidgetChromeConfig {
|
|
|
2423
2820
|
label: any;
|
|
2424
2821
|
value: any;
|
|
2425
2822
|
}[];
|
|
2823
|
+
/**
|
|
2824
|
+
* Fetch options from another data source (one request). Selecting one
|
|
2825
|
+
* emits `{ field, operator: "IN", value: [v] }` via `onFiltersChange`;
|
|
2826
|
+
* "All" emits nothing. For a FORM_SEARCH `field`, `valueField` must be
|
|
2827
|
+
* the lookup's ViewLabel field (the filter matches `<field>.view`).
|
|
2828
|
+
*/
|
|
2829
|
+
optionsSource?: {
|
|
2830
|
+
dataSource: ZvolvDataSource;
|
|
2831
|
+
labelField: string;
|
|
2832
|
+
valueField: string;
|
|
2833
|
+
sort?: "asc" | "desc";
|
|
2834
|
+
allLabel?: string;
|
|
2835
|
+
};
|
|
2426
2836
|
}[];
|
|
2427
2837
|
}
|
|
2428
2838
|
/** A complete widget definition as a dashboard stores it. */
|
|
@@ -3067,4 +3477,4 @@ declare function formWidget(o: {
|
|
|
3067
3477
|
Description: string;
|
|
3068
3478
|
};
|
|
3069
3479
|
|
|
3070
|
-
export { ActionCardWidget, type ActionCardWidgetProps, type ActionConfig, type ActionItem, type ActionOutcome, type ActionRenderArgs, ActivityFeedWidget, type AggregationType, AreaChartWidget, type AxisConfig, BLOCKED_FILE_EXTENSIONS, type BadgeTone, BannerWidget, BarChartWidget, COLUMN_FILTER_BLANK, CONTAINER_KINDS, CalendarWidget, CardListWidget, CarouselWidget, type CellArgs, type ChartConfig, type ChartRenderArgs, ChartWidget, type ChartWidgetProps, ChildTableWidget, type CollectionConfig, type CollectionItem, type CollectionMappingConfig, type CollectionRenderArgs, CollectionWidget, type CollectionWidgetProps, type ColumnFilterSlotArgs, type ColumnFilters, type CreateZvolvRuntimeOptions, type DashboardFilterDef, type DashboardFilterValue, type DashboardNode, DashboardTableWidget, type DataSourceDefinition, type DataSourceField, DatabaseTableWidget, type DateGapUnit, type DateRange, type DateRangeToken, type DateToken, type DeepPartial, DefaultField, type DefaultInsight, DoughnutChartWidget, EMPTY_INTERACTIONS, type ElementSpec, EntityGalleryWidget, type FieldFilter, type FieldKind, type FieldOption, type FieldOptionsState, type FileFieldState, type FileItem, type FilterControl, type FilterInsight, type FilterOperator, type FilterPanelConfig, type FilterPanelRenderArgs, FilterPanelWidget, type FilterPanelWidgetProps, type FilterableField, FormApiContext, type FormConfig, type FormDefinition, type FormElement, type FormErrors, type FormField, FormFields, type FormInspection, type FormKit, FormKitSlot, type FormMode, type FormSpec, type FormStatus, type FormValues, FormWidget, type FormWidgetProps, type FormulaInsight, GRID, GanttChartWidget, type GaugeConfig, GaugeMeterWidget, type GaugeMeterWidgetProps, type GaugeRenderArgs, GoogleMapWidget, GridCardWidget, type GridItem, type HeatCell, type HeatMapConfig, type HeatMapRenderArgs, HeatMapWidget, type HeatMapWidgetProps, type HtmlConfig, type HtmlRenderArgs, HtmlWidget, type HtmlWidgetProps, type IframeConfig, IframeWidget, type IframeWidgetProps, type InteractionMode, type InteractionProps, type InteractionStateProps, type InteractionUiProps, type InteractiveWidgetData, type InteractiveWidgetProps, KPI_DEFAULT_TEMPLATES, type KpiConfig, type KpiContentConfig, type KpiContentVM, Delta as KpiDelta, Label as KpiLabel, Sparkline as KpiSparkline, type KpiTemplateId, type KpiTemplateProps, Value as KpiValue, KpiWidget, type KpiWidgetProps, type LegendConfig, LineChartWidget, type LookupConfig, type MapConfig, type MapMarker, type MapRenderArgs, type MapWidgetProps, type MasterFieldDataType, type MasterFieldType, MeetingSchedulerWidget, type MockQuery, type MockRuntimeOptions, NON_INPUT_TYPES, NON_RENDERING_TYPES, type NormalizedWidget, type OpenFormRequest, PREFIX_UNITS, type PayloadInsight, PieChartWidget, type PivotConfig, type PivotFilter, PivotGridWidget, type PivotGridWidgetProps, type PivotRenderArgs, type PivotRow, type PivotSummary, type PostOperation, type PostOperator, RankingBarWidget, type RankingBarWidgetProps, type RankingConfig, type RankingRenderArgs, type RankingRow, RawHtmlWidget, type ResolvedChromeConfig, type RuleEffect, type RuleInsight, type RuleOverride, SAMPLE_ROWS, SUBMISSION_SKIP_TYPES, SUFFIX_UNITS, ScatterChartWidget, type SearchSlotArgs, type SeriesConfig, type SheetColumn, type SheetFieldState, type SortDirection, type SortSlotArgs, type SortState, type StepItem, type StepperConfig, type StepperRenderArgs, StepperWidget, type StepperWidgetProps, type SubmitOptions, type TabConfig, type TabItem, type TabRenderArgs, TabWidget, type TabWidgetProps, type TableColumn, type TableColumnConfig, type TableConfig, type TableRenderArgs, TableWidget, type TableWidgetProps, TaskTrackerTableWidget, type TemplateComponent, type TemplateMap, TemplateProvider, type TemporalConfig, type TemporalEvent, type TemporalMappingConfig, type TemporalRenderArgs, TemporalWidget, type TemporalWidgetProps, TimelineWidget, type Tone, type ToolbarSlotArgs, type TreeConfig, type TreeNode, type TreeRenderArgs, TreeWidget, type TreeWidgetProps, type TrialButton, type TrialFieldState, type TrialLogEntry, type UploadedFile, type UseKpiContentsArgs, type UseWidgetDataArgs, type UseZvolvFormArgs, type ValidationInsight, WIDGET_REGISTRY, type WidgetChrome, type WidgetChromeConfig, type WidgetConfigurations, type WidgetDataResult, type WidgetDefinition, type WidgetFilter, type WidgetFilterSlotArgs, type WidgetInteractionState, type WidgetInteractions, WidgetShell, type WidgetShellProps, type WidgetState, type WidgetStateRenderArgs, WidgetStateSlot, type WidgetStyleOverrides, type WidgetTypeId, ZaiChatWidget, type ZaiChatWidgetProps, type ZvolvDataSource, ZvolvForm, type ZvolvFormApi, type ZvolvFormProps, ZvolvProvider, type ZvolvProviderProps, type ZvolvRuntime, ZvolvThemeProvider, type ZvolvTokens, ZvolvWidget, type ZvolvWidgetProps, aggregate, alignSummaryToSeries, applyLocalColumnFilters, applyLocalSearch, applyLocalSort, applyLocalWidgetFilters, applyPostOperations, applyRules, automationSource, buildColumnFilterClauses, buildDashFilters, buildDashboardTree, buildInitialValues, buildRemoteSort, buildSearchClause, buildSubmissionElements, buildTree, buildTriggerBody, buildWidgetFilterClauses, cascade, cdateFiltersFor, childIdsOf, cleanTitle, clearLookupCache, coerceSeriesNumbers, computeRowFormulas, createMockRuntime, createSubmission, createZvolvRuntime, dashboardDefaultDateToken, dashboardFilterDefs, dateRangeFor, defaultTokens, defineConfig, defineForm, derive, describeWidgetFilter, distinctColumnValues, eid, el, evaluateFormula, extractAgentFormData, fetchForm, fetchLookupOptions, fetchSubmission, field, fieldKind, fieldKindOf, fillDateGaps, filterableFields, formSource, formWidget, formatAmountValue, formatCompact, formatFieldValue, formulaLabels, getDataType, getEmptyValue, getPostOpOperandSet, getPostOpResult, gridHeight, gridWidgets, groupBy, hasActiveInteractions, inspectForm, interpolate, invokeAgent, invokeTrigger, invokeZeno, isDataSourceConfigured, isLegacyId, isLikelyTimestamp, isServerSafeFormula, lookupConfigOf, mergeTokens, normaliseElement, normaliseForm, normalizeWidget, openFormRequest, operatorsForKind, optionFilterRules, parseConfig, parseDeep, pivot, renderHtmlVariables, resetQueryUser, resolveChrome, resolveChromeConfig, resolveCollectionMapping, resolveDashboardLayout, resolveDateToken, resolveDrillDown, resolveFieldType, resolveFilterMode, resolveFormWidget, resolveSeries, resolveTableMode, resolveWidget, resolveWidgetDefaults, resolveXKey, rowSubmissionIds, ruleMatches, rulesOf, searchPeople, serializeElementValue, statusTone, submissionIdOf, submissionToValues, submitElementsOf, taskField, taskSource, toBraceFormula, toNum, toRelational, toneColor, toneSurface, updateSubmission, uploadFile, useCollectionItems, useFieldOptions, useFileField, useFormApi, useFormInspector, useInteractiveWidgetData, useKpiContents, useSheetField, useTableColumns, useTemplateOverride, useTemporalEvents, useTokens, useTrialField, useWidgetData, useWidgetInteractions, useZvolvClient, useZvolvForm, useZvolvRuntime, usesFormFramework, validateField, validateForm, when, where };
|
|
3480
|
+
export { ActionCardWidget, type ActionCardWidgetProps, type ActionConfig, type ActionItem, type ActionOutcome, type ActionRenderArgs, ActivityFeedWidget, type AggregateOptions, type AggregationType, AreaChartWidget, type AxisConfig, BLOCKED_FILE_EXTENSIONS, type BadgeTone, BannerWidget, BarChartWidget, COLUMN_FILTER_BLANK, CONTAINER_KINDS, CalendarWidget, CardListWidget, CarouselWidget, type CategoryGapOptions, type CellArgs, type ChartConfig, type ChartRenderArgs, ChartWidget, type ChartWidgetProps, ChildTableWidget, type CollectionConfig, type CollectionItem, type CollectionMappingConfig, type CollectionRenderArgs, CollectionWidget, type CollectionWidgetProps, type ColumnFilterSlotArgs, type ColumnFilters, type CreateZvolvRuntimeOptions, type DashboardFilterDef, type DashboardFilterValue, type DashboardNode, DashboardTableWidget, type DataSourceDefinition, type DataSourceField, DatabaseTableWidget, type DateDiffField, type DateDiffSpec, type DateDiffUnit, type DateGapOptions, type DateGapUnit, type DateInterval, type DateRange, type DateRangeToken, type DateToken, type DeepPartial, DefaultField, type DefaultInsight, DoughnutChartWidget, EMPTY_INTERACTIONS, type ElementSpec, EntityGalleryWidget, type FieldFilter, type FieldKind, type FieldOption, type FieldOptionsState, type FileFieldState, type FileItem, type FillDateGapsArgs, type FilterControl, type FilterInsight, type FilterOperator, type FilterOption, type FilterOptionsSource, type FilterPanelConfig, type FilterPanelRenderArgs, FilterPanelWidget, type FilterPanelWidgetProps, type FilterSlotArgs, type FilterableField, FormApiContext, type FormConfig, type FormDefinition, type FormElement, type FormErrors, type FormField, FormFields, type FormInspection, type FormKit, FormKitSlot, type FormMode, type FormSpec, type FormStatus, type FormValues, FormWidget, type FormWidgetProps, type FormulaInsight, type FunnelConfig, type FunnelRenderArgs, type FunnelRow, FunnelWidget, type FunnelWidgetProps, GRID, GanttChartWidget, type GaugeConfig, GaugeMeterWidget, type GaugeMeterWidgetProps, type GaugeRenderArgs, GoogleMapWidget, GridCardWidget, type GridItem, type HeatCell, type HeatMapConfig, type HeatMapRenderArgs, HeatMapWidget, type HeatMapWidgetProps, type HtmlConfig, type HtmlRenderArgs, HtmlWidget, type HtmlWidgetProps, type IframeConfig, IframeWidget, type IframeWidgetProps, type InteractionMode, type InteractionProps, type InteractionStateProps, type InteractionUiProps, type InteractiveWidgetData, type InteractiveWidgetProps, KPI_DEFAULT_TEMPLATES, Card as KpiCard, type KpiCardRenderArgs, type KpiCardRoles, type KpiConfig, type KpiContentConfig, type KpiContentVM, Delta as KpiDelta, Label as KpiLabel, type KpiRole, Sparkline as KpiSparkline, type KpiSparklineProps, type KpiTemplateId, type KpiTemplateProps, type KpiTimeseriesSource, Value as KpiValue, KpiWidget, type KpiWidgetProps, type LegendConfig, LineChartWidget, type LookupConfig, type MapConfig, type MapMarker, type MapRenderArgs, type MapWidgetProps, type MasterFieldDataType, type MasterFieldType, MeetingSchedulerWidget, type MockQuery, type MockRuntimeOptions, NON_INPUT_TYPES, NON_RENDERING_TYPES, type NormalizedWidget, type OpenFormRequest, PREFIX_UNITS, type PayloadInsight, PieChartWidget, type PivotConfig, type PivotFilter, PivotGridWidget, type PivotGridWidgetProps, type PivotRenderArgs, type PivotRow, type PivotSummary, type PostOperation, type PostOperator, RankingBarWidget, type RankingBarWidgetProps, type RankingConfig, type RankingRenderArgs, type RankingRow, RawHtmlWidget, type ResolvedChromeConfig, type RuleEffect, type RuleInsight, type RuleOverride, SAMPLE_ROWS, SUBMISSION_SKIP_TYPES, SUFFIX_UNITS, ScatterChartWidget, type SearchSlotArgs, type SeriesConfig, type SheetColumn, type SheetFieldState, type SortDirection, type SortSlotArgs, type SortState, type StepItem, type StepperConfig, type StepperRenderArgs, StepperWidget, type StepperWidgetProps, type SubmitOptions, type TabConfig, type TabItem, type TabRenderArgs, TabWidget, type TabWidgetProps, type TableColumn, type TableColumnConfig, type TableConfig, type TableRenderArgs, TableWidget, type TableWidgetProps, TaskTrackerTableWidget, type TemplateComponent, type TemplateMap, TemplateProvider, type TemporalConfig, type TemporalEvent, type TemporalMappingConfig, type TemporalRenderArgs, TemporalWidget, type TemporalWidgetProps, TimelineWidget, type Tone, type ToolbarSlotArgs, type TreeConfig, type TreeNode, type TreeRenderArgs, TreeWidget, type TreeWidgetProps, type TrialButton, type TrialFieldState, type TrialLogEntry, type UnpivotOptions, type UploadedFile, type UseKpiContentsArgs, type UseWidgetDataArgs, type UseZvolvFormArgs, type ValidationInsight, WIDGET_REGISTRY, type WidgetChrome, type WidgetChromeConfig, type WidgetConfigurations, type WidgetDataResult, type WidgetDefinition, type WidgetFilter, type WidgetFilterSlotArgs, type WidgetInteractionState, type WidgetInteractions, WidgetShell, type WidgetShellProps, type WidgetState, type WidgetStateRenderArgs, WidgetStateSlot, type WidgetStyleOverrides, type WidgetTypeId, ZaiChatWidget, type ZaiChatWidgetProps, type ZvolvDataSource, ZvolvForm, type ZvolvFormApi, type ZvolvFormProps, ZvolvProvider, type ZvolvProviderProps, type ZvolvRuntime, ZvolvThemeProvider, type ZvolvTokens, ZvolvWidget, type ZvolvWidgetProps, addPeriod, aggregate, alignSummaryToSeries, applyCumulative, applyLocalColumnFilters, applyLocalSearch, applyLocalSort, applyLocalWidgetFilters, applyPostOperations, applyRules, automationSource, buildColumnFilterClauses, buildDashFilters, buildDashboardTree, buildInitialValues, buildRemoteSort, buildSearchClause, buildSubmissionElements, buildTree, buildTriggerBody, buildWidgetFilterClauses, cascade, cdateFiltersFor, childIdsOf, cleanTitle, clearLookupCache, coerceSeriesNumbers, computeFunnelRows, computeRowFormulas, createMockRuntime, createSubmission, createZvolvRuntime, dashboardDefaultDateToken, dashboardFilterDefs, dateDiff, dateRangeFor, defaultTokens, defineConfig, defineForm, derive, describeWidgetFilter, distinctColumnValues, eid, el, elementOptionValues, evaluateFormula, extractAgentFormData, fetchForm, fetchLookupOptions, fetchSubmission, field, fieldKind, fieldKindOf, fillCategoryGaps, fillDateGaps, filterPanelToWidgetFilters, filterableFields, flattenPercentiles, formSource, formWidget, formatAmountValue, formatCompact, formatFieldValue, formulaLabels, getDataType, getEmptyValue, getPostOpOperandSet, getPostOpResult, gridHeight, gridWidgets, groupBy, hasActiveInteractions, inspectForm, interpolate, invokeAgent, invokeTrigger, invokeZeno, isDataSourceConfigured, isLegacyId, isLikelyTimestamp, isServerSafeFormula, lookupConfigOf, matchFilterOption, mergeTokens, normaliseElement, normaliseForm, normalizeWidget, openFormRequest, operatorsForKind, optionFilterRules, optionsDataSource, parseConfig, parseDateValue, parseDeep, percentileKey, pivot, renderHtmlVariables, resetQueryUser, resolveChrome, resolveChromeConfig, resolveCollectionMapping, resolveDashboardLayout, resolveDateToken, resolveDrillDown, resolveFieldType, resolveFilterMode, resolveFormWidget, resolveKpiRoles, resolveSeries, resolveTableMode, resolveWidget, resolveWidgetDefaults, resolveXKey, rowSubmissionIds, rowsToFilterOptions, ruleMatches, rulesOf, searchPeople, serializeElementValue, startOfPeriod, statusTone, submissionIdOf, submissionToValues, submitElementsOf, taskField, taskSource, toBraceFormula, toNum, toRelational, toneColor, toneSurface, unpivotRows, updateSubmission, uploadFile, useCollectionItems, useFieldOptions, useFileField, useFormApi, useFormInspector, useInteractiveWidgetData, useKpiContents, useSheetField, useTableColumns, useTemplateOverride, useTemporalEvents, useTokens, useTrialField, useWidgetData, useWidgetInteractions, useZvolvClient, useZvolvForm, useZvolvRuntime, usesFormFramework, validateField, validateForm, when, where };
|