@object-ui/plugin-dashboard 17.5.0 → 17.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +5042 -0
  2. package/README.md +544 -74
  3. package/dist/DashboardConfigPanel.d.ts +3 -0
  4. package/dist/DashboardConfigPanel.d.ts.map +1 -1
  5. package/dist/DashboardFilterBar.d.ts.map +1 -1
  6. package/dist/DashboardGridLayout.d.ts +3 -2
  7. package/dist/DashboardGridLayout.d.ts.map +1 -1
  8. package/dist/DashboardRenderer.d.ts +32 -2
  9. package/dist/DashboardRenderer.d.ts.map +1 -1
  10. package/dist/DashboardWithConfig.d.ts +1 -1
  11. package/dist/DashboardWithConfig.d.ts.map +1 -1
  12. package/dist/DatasetWidget.d.ts +43 -119
  13. package/dist/DatasetWidget.d.ts.map +1 -1
  14. package/dist/DrillDownDrawer.d.ts +14 -5
  15. package/dist/DrillDownDrawer.d.ts.map +1 -1
  16. package/dist/MetricCard.d.ts +1 -1
  17. package/dist/MetricWidget.d.ts +27 -2
  18. package/dist/MetricWidget.d.ts.map +1 -1
  19. package/dist/ObjectDataTable.d.ts +473 -19
  20. package/dist/ObjectDataTable.d.ts.map +1 -1
  21. package/dist/ObjectMetricWidget.d.ts +65 -27
  22. package/dist/ObjectMetricWidget.d.ts.map +1 -1
  23. package/dist/ObjectPivotTable.d.ts +46 -7
  24. package/dist/ObjectPivotTable.d.ts.map +1 -1
  25. package/dist/PivotTable.d.ts +20 -3
  26. package/dist/PivotTable.d.ts.map +1 -1
  27. package/dist/RecordDetailDrawer.d.ts +8 -0
  28. package/dist/RecordDetailDrawer.d.ts.map +1 -1
  29. package/dist/WidgetConfigPanel.d.ts +29 -1
  30. package/dist/WidgetConfigPanel.d.ts.map +1 -1
  31. package/dist/WidgetEmptyState.d.ts +27 -0
  32. package/dist/WidgetEmptyState.d.ts.map +1 -0
  33. package/dist/domPassthroughPins.d.ts.map +1 -1
  34. package/dist/index.d.ts +30 -25
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2306 -1858
  37. package/dist/index.umd.cjs +2 -2
  38. package/dist/legacyRetiredWidget.d.ts +5 -3
  39. package/dist/legacyRetiredWidget.d.ts.map +1 -1
  40. package/dist/measureRefusal.d.ts +50 -0
  41. package/dist/measureRefusal.d.ts.map +1 -0
  42. package/dist/recordFields.d.ts +159 -9
  43. package/dist/recordFields.d.ts.map +1 -1
  44. package/dist/retired-node-types.d.ts +29 -0
  45. package/dist/retired-node-types.d.ts.map +1 -0
  46. package/dist/useConfigPanelTranslation.d.ts +35 -0
  47. package/dist/useConfigPanelTranslation.d.ts.map +1 -0
  48. package/dist/useDashboardAutoRefresh.d.ts +47 -0
  49. package/dist/useDashboardAutoRefresh.d.ts.map +1 -0
  50. package/dist/utils.d.ts +36 -7
  51. package/dist/utils.d.ts.map +1 -1
  52. package/dist/widgetDispatch.d.ts +144 -18
  53. package/dist/widgetDispatch.d.ts.map +1 -1
  54. package/dist/widgetSubCaption.d.ts +40 -0
  55. package/dist/widgetSubCaption.d.ts.map +1 -0
  56. package/package.json +15 -15
@@ -1,26 +1,66 @@
1
+ import { BaseSchema, DashboardComponentSchema, DashboardWidgetSchema, DashboardWidgetSlotComponentSchema, DashboardWidgetTypeName } from '@object-ui/types';
2
+ import { MetricWidgetProps } from './MetricWidget.js';
1
3
  /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
+ * One entry of a dashboard's `widgets[]`: the slot's element type, a widget or
5
+ * a component node placed directly in the slot (the 2026-08-14 `metric-card`
6
+ * slot ruling, objectstack#8593). Read off `DashboardComponentSchema.widgets`,
7
+ * so it is the slot's own declaration, not a restatement.
4
8
  *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
9
+ * Every dashboard surface reads `widgets[]` entries by this type
10
+ * (objectui#11514). The widget arm, `DashboardWidgetSchema`, is not a read type
11
+ * for an entry: since objectui#11483's closure its `type` names the widget
12
+ * vocabulary only, so the component arm is not assignable to it.
7
13
  */
14
+ export type DashboardWidgetSlotEntry = DashboardComponentSchema['widgets'][number];
15
+ export declare function specDefaultWidgetType(): DashboardWidgetTypeName;
8
16
  /**
9
- * Widget-type → dispatch family, shared by every dashboard surface.
17
+ * The `type` a dashboard surface draws a `widgets[]` entry as: the authored
18
+ * `type`, or {@link specDefaultWidgetType} when the entry names none
19
+ * (objectui#11514, Q2 A). Every read of an entry's `type` on the two surfaces
20
+ * goes through it — the dispatch, the metric span and chrome, the mobile
21
+ * metric row — so a typeless widget draws exactly as the same widget with
22
+ * `type: 'metric'` does. It used to reach the slot-component passthrough and
23
+ * draw the registry's red OBJUI-001 panel.
10
24
  *
11
- * Three surfaces used to restate this knowledge independently and disagree:
12
- * `DatasetWidget` covered all 19 `ChartTypeSchema` values, `DashboardRenderer`
13
- * covered 15, and `DashboardGridLayout` 8. A type the surface didn't name fell
14
- * through to `{ ...widget }`, whose `type` no component registers — so
15
- * `SchemaRenderer` rendered a red `role="alert"` panel dumping the widget JSON
16
- * (#2943).
17
- *
18
- * The single-value families were the sharpest case: `DashboardRenderer` already
19
- * had `METRIC_LIKE_TYPES = ['gauge','solid-gauge','kpi','bullet']` with a
20
- * docstring saying they "render as a metric card rather than a chart" — and
21
- * consulted it only to pick a grid span. The tile was sized correctly and the
22
- * widget was never routed.
25
+ * ⛔ Not for the legacy `component` envelope (`{ id, component, layout }`,
26
+ * objectui's own format, which the spec's widget has no member for). It draws
27
+ * its node, never a family, so the spec's default `type` says nothing about it:
28
+ * an envelope that names no `type` keeps `undefined` here and draws, chrome
29
+ * included, as it always did.
30
+ */
31
+ export declare function resolveWidgetType(entry: DashboardWidgetSlotEntry): DashboardWidgetSlotEntry['type'];
32
+ /**
33
+ * The node an entry's legacy `component` envelope holds, typed as the widget
34
+ * arm declares that member (`DashboardWidgetSchema['component']`). Read off the
35
+ * entry whichever arm it is, as the surfaces always read it. The component arm
36
+ * declares no `component`, so a bare `entry.component` on the slot entry reads
37
+ * through `BaseSchema`'s index signature and is `any` — which made each
38
+ * surface's whole `getComponentSchema` return `any` (objectui#11514).
39
+ */
40
+ export declare function entryComponent(entry: DashboardWidgetSlotEntry): DashboardWidgetSchema['component'];
41
+ /**
42
+ * Whether a slot entry is the component arm, `DashboardWidgetSlotComponentSchema`:
43
+ * its `type` is a member of the closed `DASHBOARD_COMPONENT_WIDGET_TYPES`, which
44
+ * no widget `type` names (objectui#11483). Read at runtime, so a stored entry
45
+ * whose `type` is a string outside every vocabulary is NOT the component arm.
46
+ */
47
+ export declare function isSlotComponentEntry(entry: DashboardWidgetSlotEntry): entry is DashboardWidgetSlotComponentSchema;
48
+ /**
49
+ * The labelled placeholder a dashboard surface draws for a widget `type` it
50
+ * has no renderer for: a known family with no renderer yet
51
+ * (`UNSUPPORTED_CHART_TYPES`), and, since objectui#11514 (Q2 A), a `type` that
52
+ * names no family at all — stale metadata both validator faces refuse at
53
+ * `type`, which used to fall through to the slot-component passthrough and
54
+ * draw the registry's red OBJUI-001 panel dumping the widget. One declaration
55
+ * for both surfaces, which each spelled it out before.
23
56
  */
57
+ export declare function unsupportedWidgetSchema(widgetType: string | undefined): {
58
+ readonly type: "text";
59
+ readonly content: `\u300C${string}\u300Dchart type is not supported yet`;
60
+ readonly variant: "caption";
61
+ readonly align: "center";
62
+ readonly className: "flex h-full w-full items-center justify-center rounded border border-dashed bg-muted/20 p-4 text-muted-foreground";
63
+ };
24
64
  /**
25
65
  * Spec chart families that only render as another family. Normalizing them
26
66
  * here is what lets one branch serve `column` and `bar` (the spec's own
@@ -28,6 +68,16 @@
28
68
  */
29
69
  export declare const CHART_TYPE_ALIASES: Record<string, string>;
30
70
  /** Cartesian / categorical / flow families the chart renderer draws. */
71
+ declare const SERIES_CHART_FAMILIES: readonly ["bar", "horizontal-bar", "line", "area", "pie", "donut", "scatter", "funnel", "radar", "treemap", "sankey", "combo"];
72
+ /**
73
+ * A family {@link SERIES_CHART_TYPES} names, as a literal union: the
74
+ * `chartType` a `series` dispatch carries. Each member is one of the families
75
+ * `ObjectChartSchema.chartType` declares (objectui#11513), so the `object-chart`
76
+ * node a surface builds from a dispatch names its family with no cast
77
+ * (objectui#11514). Pinned by `__tests__/dashboard-producer-node-types-11514.test.ts`.
78
+ */
79
+ export type SeriesChartFamily = (typeof SERIES_CHART_FAMILIES)[number];
80
+ /** Cartesian / categorical / flow families the chart renderer draws. */
31
81
  export declare const SERIES_CHART_TYPES: ReadonlySet<string>;
32
82
  /**
33
83
  * Single-value "performance" families — one number, optionally against a
@@ -65,7 +115,7 @@ export type WidgetDispatchFamily =
65
115
  export interface WidgetDispatch {
66
116
  family: WidgetDispatchFamily;
67
117
  /** For `series`: the alias-resolved base family to draw. */
68
- chartType?: string;
118
+ chartType?: SeriesChartFamily;
69
119
  }
70
120
  /**
71
121
  * Classify a widget `type` into its dispatch family. Exported for the
@@ -73,4 +123,80 @@ export interface WidgetDispatch {
73
123
  * `passthrough` (the branch that produces the red box).
74
124
  */
75
125
  export declare function classifyWidgetType(widgetType: string | undefined): WidgetDispatch;
126
+ /**
127
+ * The node key a dashboard surface hands `SchemaRenderer` for each component
128
+ * this package registers with `skipFallback: true` (objectui#10859 batch 8,
129
+ * phase 2b, seat ruling M3 option A).
130
+ *
131
+ * `metric` and `metric-card` are two vocabularies that happened to share one
132
+ * spelling: the dashboard WIDGET type (the spec's `ChartTypeSchema` value
133
+ * `metric`; the 2026-08-14 slot ruling's `metric-card`, objectstack#8593) and
134
+ * the internal NODE key the dashboard renders that widget through. The widget
135
+ * vocabulary is untouched. Only the node key moved: the registrations publish
136
+ * `plugin-dashboard:metric` / `plugin-dashboard:metric-card` and no bare
137
+ * fallback, so nothing authors a bare `metric` / `metric-card` NODE that the
138
+ * registry mounts while `objectui validate` refuses it at `type`.
139
+ *
140
+ * ⛔ Both surfaces (`DashboardRenderer`, `DashboardGridLayout`) emit through
141
+ * this table, so they cannot drift apart; a new `skipFallback` registration in
142
+ * this package that a widget can reach gets its row here in the same edit.
143
+ *
144
+ * The values are literal types (objectui#11466), so a node a surface builds
145
+ * under `DASHBOARD_NODE_TYPES.metric` is discriminated by its key and checked
146
+ * against {@link DashboardMetricNodeSchema}, the `CustomNodeRegistry` entry
147
+ * below. A lookup by an authored `type` string goes through the string-keyed
148
+ * view {@link toDashboardNodeType} reads.
149
+ */
150
+ export declare const DASHBOARD_NODE_TYPES: {
151
+ readonly metric: "plugin-dashboard:metric";
152
+ readonly 'metric-card': "plugin-dashboard:metric-card";
153
+ };
154
+ /**
155
+ * The `plugin-dashboard:metric` node: what both dashboard surfaces hand
156
+ * `SchemaRenderer` for a `metric` widget drawn inline, and what the `metric`
157
+ * registration (`skipFallback: true`) mounts as `MetricWidget`.
158
+ *
159
+ * Declared in `@object-ui/types`' `CustomNodeRegistry` (objectui#11466, as
160
+ * objectui#11479's Q1 A ruled), the registry an application augments for the
161
+ * node types it registers that `@object-ui/types` does not declare. So the
162
+ * producers name a declared node type, and `SchemaRenderer` takes the node
163
+ * with no cast. The key is this package's: `@object-ui/types` cannot name a
164
+ * plugin's namespace.
165
+ *
166
+ * Its keys are the ones `MetricWidget` reads off the node, typed by that
167
+ * component's props so the two cannot disagree. Host state (`loading`,
168
+ * `error`) and the `onClick` handler are props, ⛔ not node keys.
169
+ */
170
+ export interface DashboardMetricNodeSchema extends BaseSchema {
171
+ type: typeof DASHBOARD_NODE_TYPES.metric;
172
+ label: MetricWidgetProps['label'];
173
+ value: MetricWidgetProps['value'];
174
+ description?: MetricWidgetProps['description'];
175
+ trend?: MetricWidgetProps['trend'];
176
+ /** A Lucide icon name. A React element is a host prop, never a node key. */
177
+ icon?: string;
178
+ colorVariant?: MetricWidgetProps['colorVariant'];
179
+ format?: MetricWidgetProps['format'];
180
+ currency?: MetricWidgetProps['currency'];
181
+ prefix?: MetricWidgetProps['prefix'];
182
+ suffix?: MetricWidgetProps['suffix'];
183
+ variant?: MetricWidgetProps['variant'];
184
+ }
185
+ declare module '@object-ui/types' {
186
+ interface CustomNodeRegistry {
187
+ 'plugin-dashboard:metric': DashboardMetricNodeSchema;
188
+ }
189
+ }
190
+ /**
191
+ * `node` with its `type` moved onto the namespaced key {@link
192
+ * DASHBOARD_NODE_TYPES} names, or `node` itself when the type has no row.
193
+ *
194
+ * Applied where a surface forwards a node it did not build: the slot-component
195
+ * passthrough (`{ type: 'metric-card', ... }` directly in `widgets[]`) and an
196
+ * author-supplied `widget.component`. Both are widget-vocabulary positions,
197
+ * which keep their spelling; this is the boundary where the widget becomes a
198
+ * node.
199
+ */
200
+ export declare function toDashboardNodeType<T>(node: T): T;
201
+ export {};
76
202
  //# sourceMappingURL=widgetDispatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widgetDispatch.d.ts","sourceRoot":"","sources":["../src/widgetDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUrD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CASjD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAEhD,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAA8B,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAGtD,CAAC;AAEH,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB;AAC9B,mEAAmE;AACjE,QAAQ;AACV,kCAAkC;GAChC,QAAQ;AACV,uBAAuB;GACrB,OAAO;AACT,6EAA6E;GAC3E,OAAO;AACT,iDAAiD;GAC/C,QAAQ;AACV,wDAAwD;GACtD,aAAa;AACf,sEAAsE;GACpE,aAAa,CAAC;AAElB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAUjF"}
1
+ {"version":3,"file":"widgetDispatch.d.ts","sourceRoot":"","sources":["../src/widgetDispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ /**
9
+ * The structural minimum this resolution reads. Deliberately not
10
+ * `DashboardWidgetSchema`: the two surfaces hold their widgets at two different
11
+ * static types (the grid holds the `DashboardWidgetSlotComponentSchema |
12
+ * DashboardWidgetSchema` union its `widgets` slot declares), and both satisfy
13
+ * this shape. `options` is `unknown` because that is what
14
+ * `DashboardWidgetSchema` declares it as.
15
+ */
16
+ export interface SubCaptionWidget {
17
+ id?: string;
18
+ options?: unknown;
19
+ }
20
+ /**
21
+ * Resolve a dataset/metric widget's sub-caption for the active UI language.
22
+ *
23
+ * `dashName` is the dashboard schema's `name` — the segment every convention
24
+ * key on this surface is built from. Without it (or without a widget `id`)
25
+ * there is no key to look up, so the authored limb answers alone; that is the
26
+ * same silent degradation `tWidgetTitle` / `tWidgetDescription` perform, not a
27
+ * new one.
28
+ *
29
+ * `localized` is the host's word that the document was served already
30
+ * translated (`DashboardRendererProps.localized`): the authored limb then
31
+ * answers alone, because the served value IS the translation.
32
+ *
33
+ * Provider-safe: `useObjectLabel` and `useObjectTranslation` both degrade to a
34
+ * no-instance stand-in when no `I18nProvider` is mounted (objectui#5564), which
35
+ * `DashboardGridLayout` depends on — it is a separately exported component a
36
+ * host mounts standalone (its `dashboard-grid` node key was retired by
37
+ * objectui#10859 batch 8).
38
+ */
39
+ export declare function useWidgetSubCaption(dashName: string | undefined, localized?: boolean): (widget: SubCaptionWidget) => string | undefined;
40
+ //# sourceMappingURL=widgetSubCaption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgetSubCaption.d.ts","sourceRoot":"","sources":["../src/widgetSubCaption.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4EH;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,UAAQ,GAChB,CAAC,MAAM,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAalD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-dashboard",
3
- "version": "17.5.0",
3
+ "version": "17.7.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Dashboard plugin for Object UI",
@@ -18,17 +18,15 @@
18
18
  "@dnd-kit/core": "^6.3.1",
19
19
  "@dnd-kit/sortable": "^10.0.0",
20
20
  "@dnd-kit/utilities": "^3.2.2",
21
- "clsx": "^2.1.1",
22
- "lucide-react": "^1.29.0",
23
- "react": "19.2.8",
24
- "react-dom": "19.2.8",
25
- "tailwind-merge": "^3.6.0",
26
- "@object-ui/fields": "17.5.0",
27
- "@object-ui/i18n": "17.5.0",
28
- "@object-ui/core": "17.5.0",
29
- "@object-ui/components": "17.5.0",
30
- "@object-ui/react": "17.5.0",
31
- "@object-ui/types": "17.5.0"
21
+ "@objectstack/spec": "^17.5.0",
22
+ "lucide-react": "^1.43.0",
23
+ "@object-ui/components": "17.7.0",
24
+ "@object-ui/core": "17.7.0",
25
+ "@object-ui/fields": "17.7.0",
26
+ "@object-ui/i18n": "17.7.0",
27
+ "@object-ui/permissions": "17.7.0",
28
+ "@object-ui/react": "17.7.0",
29
+ "@object-ui/types": "17.7.0"
32
30
  },
33
31
  "peerDependencies": {
34
32
  "react": "^18.0.0 || ^19.0.0",
@@ -36,14 +34,16 @@
36
34
  "react-grid-layout": "^2.2.0 || ^1.4.0"
37
35
  },
38
36
  "devDependencies": {
39
- "@objectstack/spec": "^17.0.0-rc.6",
40
37
  "@types/react-grid-layout": "^2.1.0",
41
38
  "@vitejs/plugin-react": "^6.0.5",
39
+ "react": "19.2.8",
42
40
  "react-grid-layout": "^2.2.4",
43
41
  "typescript": "^6.0.3",
44
42
  "vite": "^8.2.1",
45
43
  "vite-plugin-dts": "^5.0.3",
46
- "@object-ui/plugin-charts": "17.5.0"
44
+ "@object-ui/plugin-charts": "17.7.0",
45
+ "@object-ui/sdui-parser": "17.7.0",
46
+ "@object-ui/test-support": "17.4.0"
47
47
  },
48
48
  "keywords": [
49
49
  "objectui",
@@ -81,7 +81,7 @@
81
81
  "scripts": {
82
82
  "build": "vite build",
83
83
  "type-check": "tsc --noEmit && tsc -p tsconfig.test.json",
84
- "test": "vitest run",
84
+ "test": "vitest run --root ../.. packages/plugin-dashboard/",
85
85
  "lint": "eslint ."
86
86
  }
87
87
  }