@object-ui/plugin-dashboard 6.2.3 → 7.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 (59) hide show
  1. package/CHANGELOG.md +220 -0
  2. package/dist/{packages/plugin-dashboard/src/DashboardConfigPanel.d.ts → DashboardConfigPanel.d.ts} +2 -1
  3. package/dist/DashboardConfigPanel.d.ts.map +1 -0
  4. package/dist/{packages/plugin-dashboard/src/DashboardGridLayout.d.ts → DashboardGridLayout.d.ts} +1 -1
  5. package/dist/DashboardGridLayout.d.ts.map +1 -0
  6. package/dist/{packages/plugin-dashboard/src/DashboardRenderer.d.ts → DashboardRenderer.d.ts} +2 -2
  7. package/dist/DashboardRenderer.d.ts.map +1 -0
  8. package/dist/{packages/plugin-dashboard/src/DashboardWithConfig.d.ts → DashboardWithConfig.d.ts} +10 -2
  9. package/dist/DashboardWithConfig.d.ts.map +1 -0
  10. package/dist/DatasetWidget.d.ts +33 -0
  11. package/dist/DatasetWidget.d.ts.map +1 -0
  12. package/dist/{packages/plugin-dashboard/src/DrillDownDrawer.d.ts → DrillDownDrawer.d.ts} +7 -2
  13. package/dist/DrillDownDrawer.d.ts.map +1 -0
  14. package/dist/MetricCard.d.ts.map +1 -0
  15. package/dist/{packages/plugin-dashboard/src/MetricWidget.d.ts → MetricWidget.d.ts} +7 -1
  16. package/dist/MetricWidget.d.ts.map +1 -0
  17. package/dist/ObjectDataTable.d.ts.map +1 -0
  18. package/dist/{packages/plugin-dashboard/src/ObjectMetricWidget.d.ts → ObjectMetricWidget.d.ts} +3 -1
  19. package/dist/ObjectMetricWidget.d.ts.map +1 -0
  20. package/dist/{packages/plugin-dashboard/src/ObjectPivotTable.d.ts → ObjectPivotTable.d.ts} +1 -1
  21. package/dist/ObjectPivotTable.d.ts.map +1 -0
  22. package/dist/OpenInListButton.d.ts +12 -0
  23. package/dist/OpenInListButton.d.ts.map +1 -0
  24. package/dist/{packages/plugin-dashboard/src/PivotTable.d.ts → PivotTable.d.ts} +2 -2
  25. package/dist/PivotTable.d.ts.map +1 -0
  26. package/dist/RecordDetailDrawer.d.ts +23 -0
  27. package/dist/RecordDetailDrawer.d.ts.map +1 -0
  28. package/dist/{packages/plugin-dashboard/src/WidgetConfigPanel.d.ts → WidgetConfigPanel.d.ts} +1 -1
  29. package/dist/WidgetConfigPanel.d.ts.map +1 -0
  30. package/dist/index.d.ts +27 -2
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +1655 -1007
  33. package/dist/index.umd.cjs +2 -1
  34. package/dist/recordFields.d.ts +70 -0
  35. package/dist/recordFields.d.ts.map +1 -0
  36. package/dist/{packages/plugin-dashboard/src/utils.d.ts → utils.d.ts} +2 -2
  37. package/dist/utils.d.ts.map +1 -0
  38. package/package.json +12 -12
  39. package/dist/packages/plugin-dashboard/src/DashboardConfigPanel.d.ts.map +0 -1
  40. package/dist/packages/plugin-dashboard/src/DashboardConfigPanel.stories.d.ts +0 -14
  41. package/dist/packages/plugin-dashboard/src/DashboardConfigPanel.stories.d.ts.map +0 -1
  42. package/dist/packages/plugin-dashboard/src/DashboardGridLayout.d.ts.map +0 -1
  43. package/dist/packages/plugin-dashboard/src/DashboardRenderer.d.ts.map +0 -1
  44. package/dist/packages/plugin-dashboard/src/DashboardRenderer.stories.d.ts +0 -24
  45. package/dist/packages/plugin-dashboard/src/DashboardRenderer.stories.d.ts.map +0 -1
  46. package/dist/packages/plugin-dashboard/src/DashboardWithConfig.d.ts.map +0 -1
  47. package/dist/packages/plugin-dashboard/src/DrillDownDrawer.d.ts.map +0 -1
  48. package/dist/packages/plugin-dashboard/src/MetricCard.d.ts.map +0 -1
  49. package/dist/packages/plugin-dashboard/src/MetricWidget.d.ts.map +0 -1
  50. package/dist/packages/plugin-dashboard/src/ObjectDataTable.d.ts.map +0 -1
  51. package/dist/packages/plugin-dashboard/src/ObjectMetricWidget.d.ts.map +0 -1
  52. package/dist/packages/plugin-dashboard/src/ObjectPivotTable.d.ts.map +0 -1
  53. package/dist/packages/plugin-dashboard/src/PivotTable.d.ts.map +0 -1
  54. package/dist/packages/plugin-dashboard/src/WidgetConfigPanel.d.ts.map +0 -1
  55. package/dist/packages/plugin-dashboard/src/index.d.ts +0 -27
  56. package/dist/packages/plugin-dashboard/src/index.d.ts.map +0 -1
  57. package/dist/packages/plugin-dashboard/src/utils.d.ts.map +0 -1
  58. /package/dist/{packages/plugin-dashboard/src/MetricCard.d.ts → MetricCard.d.ts} +0 -0
  59. /package/dist/{packages/plugin-dashboard/src/ObjectDataTable.d.ts → ObjectDataTable.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,225 @@
1
1
  # @object-ui/plugin-dashboard
2
2
 
3
+ ## 7.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 677f7ed: feat(charts,dashboard): data-screen customization primitives
8
+
9
+ - object-metric `variant:'bare'` — big tinted number + label, no card chrome
10
+ (data-screen KPIs that stay data-bound).
11
+ - object-chart `colors` prop overrides the theme `--chart-1..n` palette so a
12
+ page/dashboard can brand its charts; compact metric formatting (`'0.0a'` →
13
+ "1.1M").
14
+ - ObjectChartSchema.chartType widened to donut/horizontal-bar/column.
15
+
16
+ ### Patch Changes
17
+
18
+ - 08c47da: feat(dashboard): dataset chart widgets paint select/lookup dimensions in their option colors
19
+
20
+ A dashboard `DatasetWidget` chart grouped by a select/lookup dimension (e.g.
21
+ project `health`) painted its categories from the generic `--chart-1..5`
22
+ palette — the same gap the chart view (`object-chart`) had before #1932. It now
23
+ resolves the dimension field's option colors (using the dataset's base `object`
24
+ - dimension→field map the query already returns) and threads them to the
25
+ renderer as a per-category `categoryColors` map, so health green/red/yellow
26
+ paints semantically.
27
+
28
+ The value/label→color resolution is extracted into a shared `buildOptionColorMap`
29
+ (`@object-ui/core`) now used by both `DatasetWidget` and `ObjectChart`.
30
+
31
+ - Updated dependencies [677f7ed]
32
+ - Updated dependencies [08c47da]
33
+ - Updated dependencies [a71be60]
34
+ - Updated dependencies [cb03bc3]
35
+ - @object-ui/types@7.1.0
36
+ - @object-ui/core@7.1.0
37
+ - @object-ui/react@7.1.0
38
+ - @object-ui/components@7.1.0
39
+ - @object-ui/fields@7.1.0
40
+ - @object-ui/i18n@7.1.0
41
+
42
+ ## 7.0.0
43
+
44
+ ### Minor Changes
45
+
46
+ - 78f9c16: Dataset-bound dashboard widgets now use the measure's display label + format and
47
+ render metric widgets with a consistent card.
48
+
49
+ - KPI value and chart legend use the measure `label` (carried on the analytics
50
+ result `fields`) instead of the raw measure name — "Tasks" not "task_count".
51
+ - The KPI value is formatted via the measure `format` hint ("$0,0" → "$616,000").
52
+ - A dataset-bound `metric` widget takes the shared Card wrapper (title + border)
53
+ like kpi/gauge, instead of rendering as bare untitled text.
54
+
55
+ Requires `AnalyticsResult.fields[].label`/`format` (objectstack-ai/framework#1683).
56
+
57
+ - 92449ef: Dataset-bound dashboard widgets now render their TRUE chart family instead of
58
+ always a bar chart.
59
+
60
+ `DatasetWidget` routes by `widget.type` to the shared advanced chart renderer:
61
+ pie/donut/line/area/scatter/radar/funnel/treemap/sankey/column/horizontal-bar
62
+ each draw distinctly (one series per measure, carrying the measure label).
63
+ `table`/`pivot` render a grouped table of dimensions + measures (formatted via
64
+ the measure `format`). `metric`/`kpi`/`gauge`/`solid-gauge`/`bullet` keep the
65
+ single-value KPI rendering. Families without a distinct renderer map to their
66
+ closest relative (e.g. `spline`→line, `stacked-area`→area, `pyramid`→funnel) so
67
+ a widget never renders as a silently-wrong bar.
68
+
69
+ ### Patch Changes
70
+
71
+ - cb2fdb1: feat(dashboard): expand drill-in — table/list row→record + scatter/treemap/sankey drill-through
72
+
73
+ Drill-in now covers the widgets that were missing it, and formalizes the two
74
+ interaction semantics mainstream BI/low-code platforms separate. `DrillDownConfig`
75
+ gains a `mode` discriminator: `'filter'` (drill-through: aggregate bucket → filtered
76
+ record list) and `'record'` (drill-to-record: a table/list row → that record's detail).
77
+
78
+ - Scatter, treemap and sankey charts now wire click → the existing filtered-record
79
+ drill drawer (radar excluded — no single clickable category point). The
80
+ Recharts-payload → drill-event mapping is extracted to pure, tested functions.
81
+ - Object-backed table/list widgets drill to the clicked record in a read-only detail
82
+ drawer (Sheet/Dialog), on by default (`drillDown:{enabled:false}` opts out). Field
83
+ labels and value formatting (incl. tenant-default currency) are shared with the
84
+ table cells so a value reads identically in both. An author-supplied `onRowClick`
85
+ still wins.
86
+ - The chart/KPI drill-through record lists now drill into a record too, completing the
87
+ segment → list → record chain.
88
+
89
+ - c3749eb: feat(dashboard): dataset chart widgets drill through to records
90
+
91
+ Dataset-bound **chart** widgets (bar/line/pie/area/donut/funnel/…) are now
92
+ click-drillable, matching table/pivot. Clicking a segment maps it back to its
93
+ dataset row and opens the same governed drill drawer (raw group keys preserved),
94
+ so a chart-only dashboard is no longer an exploration dead-end. This closes the
95
+ "object-backed chart drills but dataset chart doesn't" inconsistency and aligns
96
+ with mainstream BI (click a chart → see records).
97
+
98
+ - `@object-ui/core`: `findChartSeriesRow` — inverse of `buildChartSeries`,
99
+ maps a clicked `{category, series}` back to the source dataset row index
100
+ (matches both dims when a 2nd dimension is pivoted into series).
101
+ - `ObjectChart`: optional `onSegmentClick` lets a host own the chart click
102
+ (and suppress the widget's own object-drill).
103
+ - `DatasetWidget`: lifts the drill machinery to cover both table/pivot and
104
+ chart, and wires the chart's segment click to the precise dataset drill.
105
+
106
+ - 3d036a9: fix(dashboard): complete the drill chain in the shared DrillDownDrawer
107
+
108
+ The chart and KPI drill-through record lists already let you click a row to open
109
+ that record, but the shared `DrillDownDrawer` (used by **pivot** and **dataset**
110
+ widget drill-through) did not — so the segment → list → record chain was
111
+ inconsistent across widget types. `DrillDownDrawer` now enables record drill on
112
+ its filtered list (dialog target, stacking over the drawer), so every
113
+ drill-through list lands on a clickable record.
114
+
115
+ - 6cfa330: feat(dashboard): drill "Open in list" escape hatch + unify report drill
116
+
117
+ Adopts the mainstream BI peek-then-escalate drill model. Drill-through opens an
118
+ in-place drawer (keep context) and offers an "Open in list →" affordance to
119
+ escalate to the object's full list page (sort / bulk-select / export / shareable
120
+ URL) — the Looker / Power BI "see records → open in page" pattern.
121
+
122
+ - New `DrillNavigationContext` (`@object-ui/react`): the app shell provides
123
+ `openRecordList`; the renderer stays decoupled from console routing.
124
+ - The drill drawers (pivot / dataset / chart / KPI) render the escape hatch when
125
+ a host navigation handler is present, and hide it otherwise (self-contained
126
+ peek). `DashboardView` provides the handler via `useOpenRecordList`.
127
+ - `DrillDownConfig.target` gains `'navigate'` — skip the drawer and open the
128
+ list directly; degrades to `'drawer'` when no host handler is available.
129
+ - `ReportView` drill-through now opens the same in-place drawer (peek records →
130
+ click a row to open a record) instead of navigating away; the escape hatch
131
+ preserves the previous navigate-to-list behavior. Dashboard and report drill
132
+ are now unified.
133
+ - i18n: `dashboard.openInList` (en / zh).
134
+
135
+ - bd8b054: fix(currency): resolve the tenant default currency across the long-tail renderers
136
+
137
+ Phase 2b of the currency-resolution work (ADR-0053). The cell/field renderers
138
+ already funnelled through `resolveFieldCurrency` + `useLocalization` (#1856),
139
+ but the rest of the renderers still hard-coded `USD` or read only one of
140
+ `currency`/`defaultCurrency`. They now share the same resolution chain — explicit
141
+ field currency -> `currencyConfig.defaultCurrency` -> legacy `defaultCurrency` ->
142
+ tenant `localization.currency` -> plain number:
143
+
144
+ - `plugin-dashboard` `ObjectMetricWidget` (inferred currency), `ObjectDataTable`
145
+ (symbol-format fallback).
146
+ - `plugin-grid` `useColumnSummary` (footer agrees with the cells) and
147
+ `ObjectGrid` (compact amount + name-inferred currency cells).
148
+ - `plugin-detail` `DetailView` summary metrics.
149
+ - `plugin-gantt` `ObjectGantt` currency tooltips.
150
+ - `components` `element:number` (`format: 'currency'`) — tenant default instead
151
+ of a baked-in `USD`, and renders with the tenant locale.
152
+
153
+ `resolveFieldCurrency` now lives in `@object-ui/i18n` (co-located with
154
+ `useLocalization`, which supplies the tenant default); `@object-ui/fields`
155
+ re-exports it, so the existing import path is unchanged. No behavior change when
156
+ no tenant currency is configured — a field that declares its own currency, or a
157
+ deployment with no `localization.currency`, renders exactly as before.
158
+
159
+ - 650bd1f: fix(forms/dashboard/related-list): four business-facing rendering fixes found while QA-ing a showcase workspace
160
+
161
+ - **plugin-form / WizardForm**: a multi-step `object-form` with `formType: 'wizard'` posted an empty/partial body on submit, so the server rejected every required field. Two causes: (1) the footer Next/Create buttons bypassed the inner form and submitted the wizard's own (never-collected) `formData`; (2) the create-mode data-seeding effect re-ran on `dataSource`/`objectSchema` identity churn and reset `formData` to `{}` mid-wizard. Now the buttons submit the inner form natively (`<form id>` + `type="submit"`, which validates each step and collects values via `getValues()`), and the create seed is made idempotent.
162
+ - **plugin-dashboard / DashboardRenderer**: chart widgets rendered as empty cards (recharts logged `width(-1) height(-1)`) because the positioned grid used `auto-rows-min`, collapsing any widget with no intrinsic height. The explicit-columns grid now uses `gridAutoRows: minmax(5rem, auto)` so spanned chart rows get a real height while tables can still grow.
163
+ - **plugin-detail / RelatedList**: auto-derived related-list columns led with system audit fields (`created_at`, `updated_at`, …) for child objects without a name/title field, pushing business columns past the column cap. System audit fields are now sorted last.
164
+ - **plugin-form / ObjectForm + WizardForm**: a successful create/update gave no feedback for metadata-only pages (which can't pass an `onSuccess` function). They now show a default `toast.success('Created'/'Saved')` when no `onSuccess` handler is supplied (guarded so a `submitHandler` host like MasterDetailForm never double-toasts).
165
+
166
+ - Updated dependencies [5976ba3]
167
+ - Updated dependencies [a00e16d]
168
+ - Updated dependencies [eaccefd]
169
+ - Updated dependencies [f7f325d]
170
+ - Updated dependencies [c12986e]
171
+ - Updated dependencies [71d7ce0]
172
+ - Updated dependencies [053c948]
173
+ - Updated dependencies [89e113c]
174
+ - Updated dependencies [ddbe4a2]
175
+ - Updated dependencies [2d47e94]
176
+ - Updated dependencies [9049bbe]
177
+ - Updated dependencies [77cc6bb]
178
+ - Updated dependencies [6c0c92c]
179
+ - Updated dependencies [97c6831]
180
+ - Updated dependencies [cb2fdb1]
181
+ - Updated dependencies [c3749eb]
182
+ - Updated dependencies [c09f44e]
183
+ - Updated dependencies [6cfa330]
184
+ - Updated dependencies [ad8ade6]
185
+ - Updated dependencies [d54346c]
186
+ - Updated dependencies [5332639]
187
+ - Updated dependencies [3870c20]
188
+ - Updated dependencies [2eb3096]
189
+ - Updated dependencies [b88c560]
190
+ - Updated dependencies [0ad72a6]
191
+ - Updated dependencies [bd398df]
192
+ - Updated dependencies [3fa23a7]
193
+ - Updated dependencies [18d0339]
194
+ - Updated dependencies [66ed3ad]
195
+ - Updated dependencies [c6445b6]
196
+ - Updated dependencies [80c133c]
197
+ - Updated dependencies [5e1b838]
198
+ - Updated dependencies [59b6bbb]
199
+ - Updated dependencies [d16566f]
200
+ - Updated dependencies [90acb7f]
201
+ - Updated dependencies [7913390]
202
+ - Updated dependencies [514f426]
203
+ - Updated dependencies [1394e34]
204
+ - Updated dependencies [e95cc25]
205
+ - Updated dependencies [abe8ebc]
206
+ - Updated dependencies [300d755]
207
+ - Updated dependencies [bd8b054]
208
+ - Updated dependencies [4eb9cb6]
209
+ - Updated dependencies [7c239fd]
210
+ - Updated dependencies [858ad94]
211
+ - Updated dependencies [2270239]
212
+ - Updated dependencies [db8cd00]
213
+ - Updated dependencies [2f31406]
214
+ - Updated dependencies [18728c1]
215
+ - Updated dependencies [8d1195d]
216
+ - @object-ui/core@7.0.0
217
+ - @object-ui/components@7.0.0
218
+ - @object-ui/react@7.0.0
219
+ - @object-ui/i18n@7.0.0
220
+ - @object-ui/types@7.0.0
221
+ - @object-ui/fields@7.0.0
222
+
3
223
  ## 6.2.3
4
224
 
5
225
  ### Patch Changes
@@ -5,6 +5,7 @@
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
+ import * as React from 'react';
8
9
  export interface DashboardConfigPanelProps {
9
10
  /** Whether the panel is open */
10
11
  open: boolean;
@@ -24,5 +25,5 @@ export interface DashboardConfigPanelProps {
24
25
  * demonstrating that a full config panel can be expressed in ~60 lines
25
26
  * of declarative schema rather than 1500+ lines of imperative code.
26
27
  */
27
- export declare function DashboardConfigPanel({ open, onClose, config, onSave, onFieldChange, }: DashboardConfigPanelProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function DashboardConfigPanel({ open, onClose, config, onSave, onFieldChange, }: DashboardConfigPanelProps): React.JSX.Element;
28
29
  //# sourceMappingURL=DashboardConfigPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardConfigPanel.d.ts","sourceRoot":"","sources":["../src/DashboardConfigPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkH/B,MAAM,WAAW,yBAAyB;IACxC,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,iCAAiC;IACjC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAC9C,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACrD;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,aAAa,GACd,EAAE,yBAAyB,qBAiB3B"}
@@ -1,5 +1,5 @@
1
1
  import { LayoutItem as RGLLayout } from 'react-grid-layout';
2
- import { DashboardSchema } from '../../types/src';
2
+ import { DashboardSchema } from '@object-ui/types';
3
3
  import * as React from 'react';
4
4
  export interface DashboardGridLayoutProps {
5
5
  schema: DashboardSchema;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardGridLayout.d.ts","sourceRoot":"","sources":["../src/DashboardGridLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA2C,KAAK,UAAU,IAAI,SAAS,EAAuC,MAAM,mBAAmB,CAAC;AAC/I,OAAO,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AA2B/E,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,SAAS,EAAE,GAClB,eAAe,CAajB;AAcD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAgUlE,CAAC"}
@@ -1,5 +1,5 @@
1
- import { DashboardSchema, DashboardWidgetSchema } from '../../types/src';
2
- import { ActionDef, ActionResult, ActionContext, ModalHandler } from '../../core/src';
1
+ import { DashboardSchema, DashboardWidgetSchema } from '@object-ui/types';
2
+ import { ActionDef, ActionResult, ActionContext, ModalHandler } from '@object-ui/core';
3
3
  export interface DashboardRendererProps {
4
4
  schema: DashboardSchema;
5
5
  className?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardRenderer.d.ts","sourceRoot":"","sources":["../src/DashboardRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA+J5F,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,WAAW,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IAC9D,mGAAmG;IACnG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC;IACrH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,gIAy1B7B,CAAC"}
@@ -1,4 +1,12 @@
1
- import { DashboardSchema } from '../../types/src';
1
+ import { DashboardSchema } from '@object-ui/types';
2
+ /**
3
+ * ObjectUI
4
+ * Copyright (c) 2024-present ObjectStack Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import * as React from 'react';
2
10
  export interface DashboardWithConfigProps {
3
11
  /** Dashboard schema for rendering */
4
12
  schema: DashboardSchema;
@@ -28,5 +36,5 @@ export interface DashboardWithConfigProps {
28
36
  * - Back navigation from widget config to dashboard config
29
37
  * - Live preview: widget config changes are reflected in real time
30
38
  */
31
- export declare function DashboardWithConfig({ schema, config, onConfigSave, onWidgetSave, onRefresh, recordCount, defaultConfigOpen, className, }: DashboardWithConfigProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function DashboardWithConfig({ schema, config, onConfigSave, onWidgetSave, onRefresh, recordCount, defaultConfigOpen, className, }: DashboardWithConfigProps): React.JSX.Element;
32
40
  //# sourceMappingURL=DashboardWithConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardWithConfig.d.ts","sourceRoot":"","sources":["../src/DashboardWithConfig.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAU/E,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,6DAA6D;IAC7D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACpD,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACvE,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAyB,EACzB,SAAS,GACV,EAAE,wBAAwB,qBAgM1B"}
@@ -0,0 +1,33 @@
1
+ import { buildDatasetDrillFilter } from '@object-ui/core';
2
+ /**
3
+ * Build the record-list filter for a drilled row. Re-exported for back-compat;
4
+ * the implementation now lives in `@object-ui/core` (`buildDatasetDrillFilter`)
5
+ * so the dashboard and the report renderer drill identically.
6
+ */
7
+ export declare const buildDrillFilter: typeof buildDatasetDrillFilter;
8
+ /**
9
+ * Pivot flat dataset rows into a cross-tab: `rowDims` go DOWN, `colDim` spreads
10
+ * ACROSS. Returns ordered row/column headers (display labels from the rows) and
11
+ * a map from a `${rowId} ${colId}` cell key to the FLAT row index holding
12
+ * that combination's measure values. No re-aggregation — the dataset already
13
+ * grouped by every dimension, so each cell maps to exactly one row (the index
14
+ * is also what drill-through uses to read `drillRawRows`).
15
+ */
16
+ export declare function buildPivot(rows: Array<Record<string, unknown>>, rowDims: string[], colDim: string): {
17
+ rowHeaders: Array<{
18
+ id: string;
19
+ labels: string[];
20
+ }>;
21
+ colHeaders: Array<{
22
+ id: string;
23
+ label: string;
24
+ }>;
25
+ cellIndex: Map<string, number>;
26
+ };
27
+ /** Serialize a 2D array (first row = headers) to CSV text. */
28
+ export declare function toCsv(rows: Array<Array<string | number | null | undefined>>): string;
29
+ export declare function DatasetWidget({ widget, dataSource }: {
30
+ widget: any;
31
+ dataSource: unknown;
32
+ }): import("react").JSX.Element;
33
+ //# sourceMappingURL=DatasetWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasetWidget.d.ts","sourceRoot":"","sources":["../src/DatasetWidget.tsx"],"names":[],"mappings":"AA8BA,OAAO,EAOL,uBAAuB,EAExB,MAAM,iBAAiB,CAAC;AAczB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,gCAA0B,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,GACb;IACD,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAcA;AASD,8DAA8D;AAC9D,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAEpF;AAmDD,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,+BAiWzF"}
@@ -4,8 +4,13 @@ export interface DrillDownDrawerProps {
4
4
  onClose: () => void;
5
5
  /** Drawer/dialog header. */
6
6
  title: string;
7
- /** "drawer" (right-side Sheet) or "dialog" (centered Dialog). */
8
- target?: 'drawer' | 'dialog';
7
+ /**
8
+ * Where the drill lands: `'drawer'` (right-side Sheet), `'dialog'` (centered
9
+ * Dialog), or `'navigate'` (skip the in-place view and open the object's full
10
+ * list page via the host's drill navigation). `'navigate'` falls back to
11
+ * `'drawer'` when no host navigation handler is available.
12
+ */
13
+ target?: 'drawer' | 'dialog' | 'navigate';
9
14
  /** Object name to query. */
10
15
  objectName: string;
11
16
  /** Filter applied to the drilled list. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrillDownDrawer.d.ts","sourceRoot":"","sources":["../src/DrillDownDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC1C,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoG1D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricCard.d.ts","sourceRoot":"","sources":["../src/MetricCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8DhD,CAAC"}
@@ -36,6 +36,12 @@ export interface MetricWidgetProps {
36
36
  suffix?: string;
37
37
  /** When set, the entire card becomes clickable and emits this handler. */
38
38
  onClick?: () => void;
39
+ /**
40
+ * Layout variant. `'card'` (default) is the bordered KPI card; `'bare'` drops
41
+ * all card chrome and renders a large tinted number + label — the dense
42
+ * big-number look data-screens (大屏) want, while staying data-bound.
43
+ */
44
+ variant?: 'card' | 'bare';
39
45
  }
40
- export declare const MetricWidget: ({ label, value, trend, icon, className, description, loading, error, colorVariant, format, currency, prefix, suffix, onClick, ...props }: MetricWidgetProps) => import("react/jsx-runtime").JSX.Element;
46
+ export declare const MetricWidget: ({ label, value, trend, icon, className, description, loading, error, colorVariant, format, currency, prefix, suffix, onClick, variant, ...props }: MetricWidgetProps) => React.JSX.Element;
41
47
  //# sourceMappingURL=MetricWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricWidget.d.ts","sourceRoot":"","sources":["../src/MetricWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AA2HvC,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GACjD,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAgCrC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sFAAsF;IACtF,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,YAAY,GAAI,mJAiB1B,iBAAiB,sBAmInB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectDataTable.d.ts","sourceRoot":"","sources":["../src/ObjectDataTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAerF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAiB9F;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,YAAY,EAAE,GAAG,GAChB,MAAM,EAAE,CAgCV;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiT1D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { DrillDownConfig } from '../../types/src';
2
+ import { DrillDownConfig } from '@object-ui/types';
3
3
  import { CompareToConfig } from './utils';
4
4
  /**
5
5
  * ObjectMetricWidget — Data-bound metric widget.
@@ -97,6 +97,8 @@ export interface ObjectMetricWidgetProps {
97
97
  compareTo?: CompareToConfig;
98
98
  /** Optional i18n translator used to localize the trend label. */
99
99
  t?: (key: string, defaultValue: string) => string;
100
+ /** Layout variant forwarded to MetricWidget: 'card' (default) or 'bare'. */
101
+ variant?: 'card' | 'bare';
100
102
  }
101
103
  export declare const ObjectMetricWidget: React.FC<ObjectMetricWidgetProps>;
102
104
  //# sourceMappingURL=ObjectMetricWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectMetricWidget.d.ts","sourceRoot":"","sources":["../src/ObjectMetricWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,iBAAiB;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;IACF,6BAA6B;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,+CAA+C;IAC/C,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kDAAkD;IAClD,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpG,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iEAAiE;IACjE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+UhE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { PivotTableSchema } from '../../types/src';
2
+ import { PivotTableSchema } from '@object-ui/types';
3
3
  export interface ObjectPivotTableProps {
4
4
  schema: PivotTableSchema & {
5
5
  objectName?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectPivotTable.d.ts","sourceRoot":"","sources":["../src/ObjectPivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkD,MAAM,OAAO,CAAC;AAQvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gBAAgB,GAAG;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAgO5D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+ export interface OpenInListButtonProps {
3
+ /** Object whose list page to open. */
4
+ objectName?: string;
5
+ /** Filter (object FIELD name → raw value) scoping the list. */
6
+ filter?: Record<string, unknown>;
7
+ /** Invoked after navigation is triggered (e.g. to close the drawer). */
8
+ onNavigate?: () => void;
9
+ className?: string;
10
+ }
11
+ export declare const OpenInListButton: React.FC<OpenInListButtonProps>;
12
+ //# sourceMappingURL=OpenInListButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenInListButton.d.ts","sourceRoot":"","sources":["../src/OpenInListButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA4B5D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { default as React } from 'react';
2
- import { PivotTableSchema } from '../../types/src';
3
- import { DrillEvent } from '../../core/src';
2
+ import { PivotTableSchema } from '@object-ui/types';
3
+ import { DrillEvent } from '@object-ui/core';
4
4
  export interface PivotTableProps {
5
5
  schema: PivotTableSchema;
6
6
  className?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PivotTable.d.ts","sourceRoot":"","sources":["../src/PivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWlE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C;AA6ED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4PhD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+ export interface RecordDetailDrawerProps {
3
+ /** The record to display, or `null` when nothing is selected. */
4
+ record: Record<string, any> | null;
5
+ /** Object the record belongs to (drives label translation + field meta). */
6
+ objectName?: string;
7
+ /** Object schema (field metadata) for labels / formatting. Optional. */
8
+ objectSchema?: any;
9
+ /**
10
+ * Optional whitelist of field accessors to show (e.g. `drillDown.columns`).
11
+ * When omitted, all non-system fields are shown in schema declaration order
12
+ * (falling back to the record's own keys when no schema is available).
13
+ */
14
+ fields?: string[];
15
+ /** Explicit drawer/dialog title; defaults to the record's display name. */
16
+ title?: string;
17
+ /** Where to open. Defaults to `'drawer'` (right-side Sheet). */
18
+ target?: 'drawer' | 'dialog';
19
+ /** Called when the drawer requests to close. */
20
+ onClose: () => void;
21
+ }
22
+ export declare const RecordDetailDrawer: React.FC<RecordDetailDrawerProps>;
23
+ //# sourceMappingURL=RecordDetailDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordDetailDrawer.d.ts","sourceRoot":"","sources":["../src/RecordDetailDrawer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAcvC,MAAM,WAAW,uBAAuB;IACtC,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,gDAAgD;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAgBD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgFhE,CAAC"}
@@ -29,5 +29,5 @@ export interface WidgetConfigPanelProps {
29
29
  /** Available fields of the currently selected object for dropdown selection */
30
30
  availableFields?: SelectOption[];
31
31
  }
32
- export declare function WidgetConfigPanel({ open, onClose, config, onSave, onFieldChange, headerExtra, availableObjects, availableFields, }: WidgetConfigPanelProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function WidgetConfigPanel({ open, onClose, config, onSave, onFieldChange, headerExtra, availableObjects, availableFields, }: WidgetConfigPanelProps): React.JSX.Element;
33
33
  //# sourceMappingURL=WidgetConfigPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WidgetConfigPanel.d.ts","sourceRoot":"","sources":["../src/WidgetConfigPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4F/B,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEhE;AAuBD,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA4b5D,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,wCAAwC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAC9C,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAClC,+EAA+E;IAC/E,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;CAClC;AAiFD,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,EAAE,sBAAsB,qBA8BxB"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,27 @@
1
- export * from './packages/plugin-dashboard/src/index'
2
- export {}
1
+ import { DashboardRenderer } from './DashboardRenderer';
2
+ import { DashboardGridLayout } from './DashboardGridLayout';
3
+ import { MetricWidget } from './MetricWidget';
4
+ import { MetricCard } from './MetricCard';
5
+ import { ObjectMetricWidget } from './ObjectMetricWidget';
6
+ import { PivotTable } from './PivotTable';
7
+ import { ObjectPivotTable } from './ObjectPivotTable';
8
+ import { ObjectDataTable } from './ObjectDataTable';
9
+ import { DashboardConfigPanel } from './DashboardConfigPanel';
10
+ import { WidgetConfigPanel } from './WidgetConfigPanel';
11
+ import { DashboardWithConfig } from './DashboardWithConfig';
12
+ import { DrillDownDrawer } from './DrillDownDrawer';
13
+ export { DashboardRenderer, DashboardGridLayout, MetricWidget, MetricCard, ObjectMetricWidget, PivotTable, ObjectPivotTable, ObjectDataTable, DashboardConfigPanel, WidgetConfigPanel, DashboardWithConfig, DrillDownDrawer };
14
+ export declare const dashboardComponents: {
15
+ DashboardRenderer: import('react').ForwardRefExoticComponent<Omit<import('./DashboardRenderer').DashboardRendererProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
16
+ DashboardGridLayout: import('react').FC<import('./DashboardGridLayout').DashboardGridLayoutProps>;
17
+ MetricWidget: ({ label, value, trend, icon, className, description, loading, error, colorVariant, format, currency, prefix, suffix, onClick, variant, ...props }: import('./MetricWidget').MetricWidgetProps) => import("react").JSX.Element;
18
+ MetricCard: import('react').FC<import('./MetricCard').MetricCardProps>;
19
+ ObjectMetricWidget: import('react').FC<import('./ObjectMetricWidget').ObjectMetricWidgetProps>;
20
+ PivotTable: import('react').FC<import('./PivotTable').PivotTableProps>;
21
+ ObjectPivotTable: import('react').FC<import('./ObjectPivotTable').ObjectPivotTableProps>;
22
+ ObjectDataTable: import('react').FC<import('./ObjectDataTable').ObjectDataTableProps>;
23
+ DashboardConfigPanel: typeof DashboardConfigPanel;
24
+ WidgetConfigPanel: typeof WidgetConfigPanel;
25
+ DashboardWithConfig: typeof DashboardWithConfig;
26
+ };
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,CAAC;AAwM9N,eAAO,MAAM,mBAAmB;;;;;;;;;;;;CAY/B,CAAC"}