@vantageos/mosaic 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +88 -2
- package/LICENSE +110 -0
- package/README.md +193 -21
- package/dist/PipelineBoard-FucyGArR.d.cts +759 -0
- package/dist/PipelineBoard-FucyGArR.d.ts +759 -0
- package/dist/PipelineBoard.markdown-DIcvrS-2.d.cts +16 -0
- package/dist/PipelineBoard.markdown-DIcvrS-2.d.ts +16 -0
- package/dist/{StatusBadge.schema-1tOjB4Ir.d.cts → StatusBadge.schema-BEjSH2_4.d.cts} +2 -2
- package/dist/{StatusBadge.schema-1tOjB4Ir.d.ts → StatusBadge.schema-BEjSH2_4.d.ts} +2 -2
- package/dist/{Tabs.schema-BzcEyeq8.d.cts → Tabs.schema-Dqr6vwV3.d.cts} +2 -2
- package/dist/{Tabs.schema-BzcEyeq8.d.ts → Tabs.schema-Dqr6vwV3.d.ts} +2 -2
- package/dist/Timeline-Coo_3tA_.d.cts +114 -0
- package/dist/Timeline-Coo_3tA_.d.ts +114 -0
- package/dist/Timeline.markdown-C6UPDv1H.d.cts +4 -0
- package/dist/Timeline.markdown-C6UPDv1H.d.ts +4 -0
- package/dist/TransactionPreview-BzWDn8kE.d.cts +391 -0
- package/dist/TransactionPreview-BzWDn8kE.d.ts +391 -0
- package/dist/TransactionPreview.markdown-Dpb0VYgN.d.cts +7 -0
- package/dist/TransactionPreview.markdown-Dpb0VYgN.d.ts +7 -0
- package/dist/artifacts.cjs +190 -2
- package/dist/artifacts.cjs.map +1 -1
- package/dist/artifacts.js +190 -2
- package/dist/artifacts.js.map +1 -1
- package/dist/confirmation.cjs +728 -2
- package/dist/confirmation.cjs.map +1 -1
- package/dist/confirmation.d.cts +2 -1
- package/dist/confirmation.d.ts +2 -1
- package/dist/confirmation.js +726 -4
- package/dist/confirmation.js.map +1 -1
- package/dist/display.cjs +1555 -203
- package/dist/display.cjs.map +1 -1
- package/dist/display.d.cts +6 -229
- package/dist/display.d.ts +6 -229
- package/dist/display.js +1539 -206
- package/dist/display.js.map +1 -1
- package/dist/forms.cjs +139 -46
- package/dist/forms.cjs.map +1 -1
- package/dist/forms.d.cts +2 -2
- package/dist/forms.d.ts +2 -2
- package/dist/forms.js +139 -46
- package/dist/forms.js.map +1 -1
- package/dist/host.cjs +822 -0
- package/dist/host.cjs.map +1 -0
- package/dist/host.d.cts +287 -0
- package/dist/host.d.ts +287 -0
- package/dist/host.js +794 -0
- package/dist/host.js.map +1 -0
- package/dist/{index-CwXVgtGb.d.cts → index-BadRcCbm.d.cts} +28 -11
- package/dist/{index-CwXVgtGb.d.ts → index-BadRcCbm.d.ts} +28 -11
- package/dist/index.cjs +2202 -247
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -8
- package/dist/index.d.ts +42 -8
- package/dist/index.js +2167 -251
- package/dist/index.js.map +1 -1
- package/dist/input.d.cts +2 -2
- package/dist/input.d.ts +2 -2
- package/dist/media.cjs +190 -2
- package/dist/media.cjs.map +1 -1
- package/dist/media.d.cts +1 -1
- package/dist/media.d.ts +1 -1
- package/dist/media.js +190 -2
- package/dist/media.js.map +1 -1
- package/dist/preact/artifacts.js +190 -2
- package/dist/preact/artifacts.js.map +1 -1
- package/dist/preact/confirmation.d.ts +321 -1
- package/dist/preact/confirmation.js +629 -4
- package/dist/preact/confirmation.js.map +1 -1
- package/dist/preact/display.d.ts +570 -31
- package/dist/preact/display.js +1248 -126
- package/dist/preact/display.js.map +1 -1
- package/dist/preact/forms.d.ts +32 -15
- package/dist/preact/forms.js +139 -46
- package/dist/preact/forms.js.map +1 -1
- package/dist/preact/host.d.ts +307 -0
- package/dist/preact/host.js +875 -0
- package/dist/preact/host.js.map +1 -0
- package/dist/preact/media.d.ts +37 -1
- package/dist/preact/media.js +423 -0
- package/dist/preact/media.js.map +1 -1
- package/dist/preact/progress.d.ts +92 -1
- package/dist/preact/progress.js +469 -3
- package/dist/preact/progress.js.map +1 -1
- package/dist/progress.cjs +525 -2
- package/dist/progress.cjs.map +1 -1
- package/dist/progress.d.cts +2 -1
- package/dist/progress.d.ts +2 -1
- package/dist/progress.js +522 -3
- package/dist/progress.js.map +1 -1
- package/dist/react/artifacts.cjs +190 -2
- package/dist/react/artifacts.cjs.map +1 -1
- package/dist/react/artifacts.js +190 -2
- package/dist/react/artifacts.js.map +1 -1
- package/dist/react/confirmation.cjs +630 -2
- package/dist/react/confirmation.cjs.map +1 -1
- package/dist/react/confirmation.d.cts +3 -3
- package/dist/react/confirmation.d.ts +3 -3
- package/dist/react/confirmation.js +629 -4
- package/dist/react/confirmation.js.map +1 -1
- package/dist/react/display.cjs +1137 -123
- package/dist/react/display.cjs.map +1 -1
- package/dist/react/display.d.cts +42 -14
- package/dist/react/display.d.ts +42 -14
- package/dist/react/display.js +1122 -126
- package/dist/react/display.js.map +1 -1
- package/dist/react/forms.cjs +139 -46
- package/dist/react/forms.cjs.map +1 -1
- package/dist/react/forms.d.cts +1 -1
- package/dist/react/forms.d.ts +1 -1
- package/dist/react/forms.js +139 -46
- package/dist/react/forms.js.map +1 -1
- package/dist/react/host.cjs +910 -0
- package/dist/react/host.cjs.map +1 -0
- package/dist/react/host.d.cts +24 -0
- package/dist/react/host.d.ts +24 -0
- package/dist/react/host.js +875 -0
- package/dist/react/host.js.map +1 -0
- package/dist/react/input.d.cts +1 -1
- package/dist/react/input.d.ts +1 -1
- package/dist/react/media.cjs +426 -0
- package/dist/react/media.cjs.map +1 -1
- package/dist/react/media.d.cts +19 -1
- package/dist/react/media.d.ts +19 -1
- package/dist/react/media.js +423 -0
- package/dist/react/media.js.map +1 -1
- package/dist/react/progress.cjs +471 -2
- package/dist/react/progress.cjs.map +1 -1
- package/dist/react/progress.d.cts +1 -1
- package/dist/react/progress.d.ts +1 -1
- package/dist/react/progress.js +469 -3
- package/dist/react/progress.js.map +1 -1
- package/dist/server/resource.cjs +151 -0
- package/dist/server/resource.cjs.map +1 -0
- package/dist/server/resource.d.cts +90 -0
- package/dist/server/resource.d.ts +90 -0
- package/dist/server/resource.js +147 -0
- package/dist/server/resource.js.map +1 -0
- package/dist/server.cjs +1100 -25
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +84 -5
- package/dist/server.d.ts +84 -5
- package/dist/server.js +1087 -27
- package/dist/server.js.map +1 -1
- package/dist/tokens.cjs +73 -22
- package/dist/tokens.cjs.map +1 -1
- package/dist/tokens.d.cts +23 -3
- package/dist/tokens.d.ts +23 -3
- package/dist/tokens.js +73 -22
- package/dist/tokens.js.map +1 -1
- package/package.json +250 -231
- package/registry.yaml +51 -2
- package/dist/Alert.schema-LPJE5gFP.d.cts +0 -71
- package/dist/Alert.schema-LPJE5gFP.d.ts +0 -71
- package/dist/ProgressBar.schema-CdVYx0Wq.d.cts +0 -22
- package/dist/ProgressBar.schema-CdVYx0Wq.d.ts +0 -22
- package/dist/{ConfirmDialog-B3CQQGmJ.d.cts → ConfirmDialog-BCtOcmHe.d.cts} +1 -1
- package/dist/{ConfirmDialog-B3CQQGmJ.d.ts → ConfirmDialog-BCtOcmHe.d.ts} +1 -1
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TableView pure logic (R01 / R10): sorting, selection and cell-kind rules. No React, no DOM.
|
|
8
|
+
* Shared by the React and Preact runtimes through the shared TableView implementation.
|
|
9
|
+
*/
|
|
10
|
+
type SortDirection = "asc" | "desc";
|
|
11
|
+
interface SortState {
|
|
12
|
+
key: string;
|
|
13
|
+
direction: SortDirection;
|
|
14
|
+
}
|
|
15
|
+
/** How a column's cells are compared and rendered. */
|
|
16
|
+
type ColumnKind = "text" | "number" | "amount" | "icon";
|
|
17
|
+
type SelectionMode = "none" | "single" | "multiple";
|
|
18
|
+
/**
|
|
19
|
+
* Exact comparison of decimal strings (token amounts): no Number() round trip, so values
|
|
20
|
+
* beyond 2^53 or with 18 decimals compare correctly. Unparseable input compares as equal.
|
|
21
|
+
*/
|
|
22
|
+
declare function compareDecimalStrings(a: string, b: string): number;
|
|
23
|
+
/** Stable sort; missing values last in both directions. Never mutates `items`. */
|
|
24
|
+
declare function sortItems<T>(items: readonly T[], getValue: (item: T) => unknown, kind: ColumnKind, direction: SortDirection, locale: string): T[];
|
|
25
|
+
/** Header click cycle on a column: none -> asc -> desc -> none; another column restarts at asc. */
|
|
26
|
+
declare function nextSort(current: SortState | undefined, key: string): SortState | undefined;
|
|
27
|
+
|
|
28
|
+
type ColumnDef<TRow extends Record<string, unknown> = Record<string, unknown>> = {
|
|
29
|
+
key: string;
|
|
30
|
+
header: string;
|
|
31
|
+
type?: "text" | "number" | "amount" | "icon";
|
|
32
|
+
align?: "start" | "center" | "end";
|
|
33
|
+
width?: string | number;
|
|
34
|
+
sortable?: boolean;
|
|
35
|
+
sensitive?: boolean;
|
|
36
|
+
render?: (row: TRow) => ReactNode;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Validates the serialisable (non-function) portion of TableView props.
|
|
40
|
+
* The `rows$` Observable and `render` callbacks are not Zod-parseable and
|
|
41
|
+
* must be validated at the call-site type level.
|
|
42
|
+
*/
|
|
43
|
+
declare const TableViewPropsSchema: z.ZodObject<{
|
|
44
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
45
|
+
key: z.ZodString;
|
|
46
|
+
header: z.ZodString;
|
|
47
|
+
/** Cell kind: drives comparison and rendering. `amount` = decimal STRING, never a float. */
|
|
48
|
+
type: z.ZodDefault<z.ZodEnum<["text", "number", "amount", "icon"]>>;
|
|
49
|
+
/** Defaults to `end` for `number` / `amount` columns, `start` otherwise. */
|
|
50
|
+
align: z.ZodOptional<z.ZodEnum<["start", "center", "end"]>>;
|
|
51
|
+
/** CSS width: a number is pixels. */
|
|
52
|
+
width: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
53
|
+
sortable: z.ZodDefault<z.ZodBoolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Values of this column are masked in the A-1 markdown fallback and kept out of the HTML
|
|
56
|
+
* props of a tool result (delivered via the result `_meta`), never written to `content[]`.
|
|
57
|
+
*/
|
|
58
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
type: "number" | "icon" | "text" | "amount";
|
|
61
|
+
key: string;
|
|
62
|
+
header: string;
|
|
63
|
+
sortable: boolean;
|
|
64
|
+
sensitive: boolean;
|
|
65
|
+
width?: string | number | undefined;
|
|
66
|
+
align?: "start" | "center" | "end" | undefined;
|
|
67
|
+
}, {
|
|
68
|
+
key: string;
|
|
69
|
+
header: string;
|
|
70
|
+
type?: "number" | "icon" | "text" | "amount" | undefined;
|
|
71
|
+
width?: string | number | undefined;
|
|
72
|
+
align?: "start" | "center" | "end" | undefined;
|
|
73
|
+
sortable?: boolean | undefined;
|
|
74
|
+
sensitive?: boolean | undefined;
|
|
75
|
+
}>, "many">;
|
|
76
|
+
/**
|
|
77
|
+
* Serialisable rows, for views built through `createMosaicResource` (the React props carry
|
|
78
|
+
* `rows` separately).
|
|
79
|
+
*/
|
|
80
|
+
rows: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
81
|
+
virtualizeThreshold: z.ZodDefault<z.ZodNumber>;
|
|
82
|
+
ariaLabel: z.ZodString;
|
|
83
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
84
|
+
selectionMode: z.ZodDefault<z.ZodEnum<["none", "single", "multiple"]>>;
|
|
85
|
+
/** Initial sort. */
|
|
86
|
+
sort: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
key: z.ZodString;
|
|
88
|
+
direction: z.ZodEnum<["asc", "desc"]>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
key: string;
|
|
91
|
+
direction: "asc" | "desc";
|
|
92
|
+
}, {
|
|
93
|
+
key: string;
|
|
94
|
+
direction: "asc" | "desc";
|
|
95
|
+
}>>;
|
|
96
|
+
stickyHeader: z.ZodDefault<z.ZodBoolean>;
|
|
97
|
+
/** Scroll region height when `stickyHeader` is on (pixels). */
|
|
98
|
+
maxHeight: z.ZodDefault<z.ZodNumber>;
|
|
99
|
+
density: z.ZodDefault<z.ZodEnum<["comfortable", "compact"]>>;
|
|
100
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
locale: "en" | "fr";
|
|
103
|
+
loading: boolean;
|
|
104
|
+
columns: {
|
|
105
|
+
type: "number" | "icon" | "text" | "amount";
|
|
106
|
+
key: string;
|
|
107
|
+
header: string;
|
|
108
|
+
sortable: boolean;
|
|
109
|
+
sensitive: boolean;
|
|
110
|
+
width?: string | number | undefined;
|
|
111
|
+
align?: "start" | "center" | "end" | undefined;
|
|
112
|
+
}[];
|
|
113
|
+
rows: Record<string, unknown>[];
|
|
114
|
+
virtualizeThreshold: number;
|
|
115
|
+
ariaLabel: string;
|
|
116
|
+
selectionMode: "none" | "single" | "multiple";
|
|
117
|
+
stickyHeader: boolean;
|
|
118
|
+
maxHeight: number;
|
|
119
|
+
density: "compact" | "comfortable";
|
|
120
|
+
sort?: {
|
|
121
|
+
key: string;
|
|
122
|
+
direction: "asc" | "desc";
|
|
123
|
+
} | undefined;
|
|
124
|
+
}, {
|
|
125
|
+
columns: {
|
|
126
|
+
key: string;
|
|
127
|
+
header: string;
|
|
128
|
+
type?: "number" | "icon" | "text" | "amount" | undefined;
|
|
129
|
+
width?: string | number | undefined;
|
|
130
|
+
align?: "start" | "center" | "end" | undefined;
|
|
131
|
+
sortable?: boolean | undefined;
|
|
132
|
+
sensitive?: boolean | undefined;
|
|
133
|
+
}[];
|
|
134
|
+
ariaLabel: string;
|
|
135
|
+
locale?: "en" | "fr" | undefined;
|
|
136
|
+
sort?: {
|
|
137
|
+
key: string;
|
|
138
|
+
direction: "asc" | "desc";
|
|
139
|
+
} | undefined;
|
|
140
|
+
loading?: boolean | undefined;
|
|
141
|
+
rows?: Record<string, unknown>[] | undefined;
|
|
142
|
+
virtualizeThreshold?: number | undefined;
|
|
143
|
+
selectionMode?: "none" | "single" | "multiple" | undefined;
|
|
144
|
+
stickyHeader?: boolean | undefined;
|
|
145
|
+
maxHeight?: number | undefined;
|
|
146
|
+
density?: "compact" | "comfortable" | undefined;
|
|
147
|
+
}>;
|
|
148
|
+
type TableViewPropsSchemaInput = z.input<typeof TableViewPropsSchema>;
|
|
149
|
+
type TableViewPropsSchemaOutput = z.output<typeof TableViewPropsSchema>;
|
|
150
|
+
/** Options shared by the static and streaming variants (R01 / R10 extension). */
|
|
151
|
+
type TableViewOptions<TRow extends Record<string, unknown>> = {
|
|
152
|
+
/** `none` (default) adds no selection column. `single` renders radios, `multiple` checkboxes. */
|
|
153
|
+
selectionMode?: SelectionMode;
|
|
154
|
+
/** Controlled selection: row keys (`id` when present, else `row-<original index>`). */
|
|
155
|
+
selectedKeys?: string[];
|
|
156
|
+
defaultSelectedKeys?: string[];
|
|
157
|
+
/** Selected rows in table order, plus their keys. Feed it to `selectionModelContext`. */
|
|
158
|
+
onSelectionChange?: (rows: Partial<TRow>[], keys: string[]) => void;
|
|
159
|
+
/** Controlled sort; `null` = unsorted. */
|
|
160
|
+
sort?: SortState | null;
|
|
161
|
+
defaultSort?: SortState;
|
|
162
|
+
onSortChange?: (sort: SortState | undefined) => void;
|
|
163
|
+
stickyHeader?: boolean;
|
|
164
|
+
/** Scroll region height in pixels when `stickyHeader` is on. Default 400. */
|
|
165
|
+
maxHeight?: number;
|
|
166
|
+
density?: "comfortable" | "compact";
|
|
167
|
+
/** Shows a Skeleton table instead of rows. */
|
|
168
|
+
loading?: boolean;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Props for the static TableView — accepts a plain array of rows.
|
|
172
|
+
* Primary API for already-fetched data (no rxjs required).
|
|
173
|
+
*/
|
|
174
|
+
type TableViewProps<TRow extends Record<string, unknown> = Record<string, unknown>> = {
|
|
175
|
+
columns: ColumnDef<TRow>[];
|
|
176
|
+
rows: Partial<TRow>[];
|
|
177
|
+
virtualizeThreshold?: number;
|
|
178
|
+
ariaLabel: string;
|
|
179
|
+
locale?: "en" | "fr";
|
|
180
|
+
/** v0.2.1+: when provided, rows become keyboard-activable (role=button + tabIndex=0 + Enter/Space). 5-BU ABSOLUTE blocker fix. */
|
|
181
|
+
onRowClick?: (row: TRow, index: number) => void;
|
|
182
|
+
} & TableViewOptions<TRow>;
|
|
183
|
+
/**
|
|
184
|
+
* Props for StreamingTableView — accepts an RxJS Observable for incremental row appending.
|
|
185
|
+
* Consumers using this variant MUST install rxjs ^7.8.0 in their project.
|
|
186
|
+
*/
|
|
187
|
+
type StreamingTableViewProps<TRow extends Record<string, unknown> = Record<string, unknown>> = {
|
|
188
|
+
columns: ColumnDef<TRow>[];
|
|
189
|
+
rows$: Observable<Partial<TRow>[]>;
|
|
190
|
+
virtualizeThreshold?: number;
|
|
191
|
+
ariaLabel: string;
|
|
192
|
+
locale?: "en" | "fr";
|
|
193
|
+
/** v0.2.1+: same semantics as static TableView. */
|
|
194
|
+
onRowClick?: (row: TRow, index: number) => void;
|
|
195
|
+
} & TableViewOptions<TRow>;
|
|
196
|
+
declare function validateTableViewProps(raw: unknown): TableViewPropsSchemaOutput;
|
|
197
|
+
|
|
198
|
+
type AnyRow = Record<string, unknown>;
|
|
199
|
+
/**
|
|
200
|
+
* TableView — Static rows variant (primary API).
|
|
201
|
+
*
|
|
202
|
+
* Accepts `rows: Row[]` for already-fetched data — no rxjs required.
|
|
203
|
+
* Activates TanStack Virtual v3 windowing when rows.length > virtualizeThreshold.
|
|
204
|
+
* Zod-validates serialisable props; renders role="alert" fallback on failure.
|
|
205
|
+
* Fully accessible: aria-rowcount, aria-label, scope="col", aria-sort on sortable headers.
|
|
206
|
+
*
|
|
207
|
+
* R01 / R10 extension (additive, every new prop optional): sortable columns, single / multiple
|
|
208
|
+
* selection, sticky header, compact density, column align / width, `amount` and `icon` cell kinds
|
|
209
|
+
* and a Skeleton loading state. Claude inline cards want few rows and no nested scrolling:
|
|
210
|
+
* keep inline summaries short and offer fullscreen for the full set.
|
|
211
|
+
*/
|
|
212
|
+
declare function TableView<TRow extends AnyRow = AnyRow>(props: TableViewProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
213
|
+
/**
|
|
214
|
+
* StreamingTableView — Streaming rows variant (advanced, opt-in).
|
|
215
|
+
*
|
|
216
|
+
* Pattern 4 Streaming Hydration reference implementation.
|
|
217
|
+
* Consumes an RxJS Observable<Row[]> for incremental row appending.
|
|
218
|
+
* Consumers MUST install rxjs ^7.8.0 in their project.
|
|
219
|
+
* Same extension props as TableView.
|
|
220
|
+
*/
|
|
221
|
+
declare function StreamingTableView<TRow extends AnyRow = AnyRow>(props: StreamingTableViewProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* EmptyState component props schema.
|
|
225
|
+
*
|
|
226
|
+
* Empty-set illustration + title + description + optional CTA.
|
|
227
|
+
* Consumer-driven i18n: caller passes already-localized strings.
|
|
228
|
+
*
|
|
229
|
+
* icon — optional ReactNode / PreactNode passed by the caller
|
|
230
|
+
* title — required heading (h2, consumer-driven i18n)
|
|
231
|
+
* description — optional supporting text
|
|
232
|
+
* action — optional CTA: { label, onClick, variant? }
|
|
233
|
+
*/
|
|
234
|
+
declare const EmptyStatePropsSchema: z.ZodObject<{
|
|
235
|
+
title: z.ZodString;
|
|
236
|
+
description: z.ZodOptional<z.ZodString>;
|
|
237
|
+
action: z.ZodOptional<z.ZodObject<{
|
|
238
|
+
label: z.ZodString;
|
|
239
|
+
variant: z.ZodDefault<z.ZodEnum<["primary", "secondary"]>>;
|
|
240
|
+
}, "strip", z.ZodTypeAny, {
|
|
241
|
+
label: string;
|
|
242
|
+
variant: "primary" | "secondary";
|
|
243
|
+
}, {
|
|
244
|
+
label: string;
|
|
245
|
+
variant?: "primary" | "secondary" | undefined;
|
|
246
|
+
}>>;
|
|
247
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
248
|
+
}, "strip", z.ZodTypeAny, {
|
|
249
|
+
locale: "en" | "fr";
|
|
250
|
+
title: string;
|
|
251
|
+
description?: string | undefined;
|
|
252
|
+
action?: {
|
|
253
|
+
label: string;
|
|
254
|
+
variant: "primary" | "secondary";
|
|
255
|
+
} | undefined;
|
|
256
|
+
}, {
|
|
257
|
+
title: string;
|
|
258
|
+
locale?: "en" | "fr" | undefined;
|
|
259
|
+
description?: string | undefined;
|
|
260
|
+
action?: {
|
|
261
|
+
label: string;
|
|
262
|
+
variant?: "primary" | "secondary" | undefined;
|
|
263
|
+
} | undefined;
|
|
264
|
+
}>;
|
|
265
|
+
type EmptyStatePropsSchemaInput = z.input<typeof EmptyStatePropsSchema>;
|
|
266
|
+
type EmptyStatePropsSchemaOutput = z.output<typeof EmptyStatePropsSchema>;
|
|
267
|
+
/**
|
|
268
|
+
* Full EmptyState props including framework-specific node types and callback.
|
|
269
|
+
* `icon` and `action.onClick` are excluded from Zod (functions/nodes are not serializable).
|
|
270
|
+
*
|
|
271
|
+
* Note: action.variant is optional for callers — Zod applies "primary" default at parse time.
|
|
272
|
+
*/
|
|
273
|
+
type EmptyStateProps = Omit<EmptyStatePropsSchemaOutput, "action"> & {
|
|
274
|
+
icon?: any;
|
|
275
|
+
action?: {
|
|
276
|
+
label: string;
|
|
277
|
+
variant?: "primary" | "secondary";
|
|
278
|
+
onClick: () => void;
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
declare function validateEmptyStateProps(raw: unknown): EmptyStatePropsSchemaOutput;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Skeleton — cross-runtime loading placeholder (React 19 implementation).
|
|
285
|
+
*
|
|
286
|
+
* Accepts `Record<string, unknown>` for MCP postMessage injection safety.
|
|
287
|
+
* Zod validation narrows before render. Invalid props → accessible error span.
|
|
288
|
+
*
|
|
289
|
+
* Animation "none" is auto-applied when prefers-reduced-motion is set (via
|
|
290
|
+
* Tailwind's animate-pulse which respects the media query natively), or by
|
|
291
|
+
* passing animation="none" explicitly.
|
|
292
|
+
*
|
|
293
|
+
* WCAG-AA:
|
|
294
|
+
* - role="status" + aria-busy="true" on the container
|
|
295
|
+
* - aria-label resolves via t() in EN/FR
|
|
296
|
+
* - aria-hidden="true" on individual line spans (status role covers the group)
|
|
297
|
+
*/
|
|
298
|
+
declare function Skeleton(raw: Record<string, unknown>): react_jsx_runtime.JSX.Element;
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Skeleton component props schema.
|
|
302
|
+
*
|
|
303
|
+
* variant — shape of the placeholder:
|
|
304
|
+
* "rect" → rectangular block (default)
|
|
305
|
+
* "circle" → circular avatar / icon placeholder
|
|
306
|
+
* "text" → single or multi-line text placeholder
|
|
307
|
+
*
|
|
308
|
+
* width / height — CSS values (string) or pixels (number).
|
|
309
|
+
* "rect" defaults: width="100%", height=100
|
|
310
|
+
* "circle" defaults: width=height (equal, square rendered as circle)
|
|
311
|
+
* "text" defaults: width="100%", height=16
|
|
312
|
+
*
|
|
313
|
+
* count — number of text line spans (only meaningful for variant="text").
|
|
314
|
+
* Default 1. Ignored for rect/circle.
|
|
315
|
+
*
|
|
316
|
+
* animation — shimmer style:
|
|
317
|
+
* "pulse" → opacity pulse (default)
|
|
318
|
+
* "wave" → left-to-right gradient sweep
|
|
319
|
+
* "none" → static placeholder (auto-selected when prefers-reduced-motion)
|
|
320
|
+
*/
|
|
321
|
+
declare const SkeletonPropsSchema: z.ZodObject<{
|
|
322
|
+
variant: z.ZodDefault<z.ZodEnum<["rect", "circle", "text"]>>;
|
|
323
|
+
width: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
324
|
+
height: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
|
|
325
|
+
count: z.ZodDefault<z.ZodNumber>;
|
|
326
|
+
animation: z.ZodDefault<z.ZodEnum<["pulse", "wave", "none"]>>;
|
|
327
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
328
|
+
}, "strip", z.ZodTypeAny, {
|
|
329
|
+
locale: "en" | "fr";
|
|
330
|
+
variant: "rect" | "circle" | "text";
|
|
331
|
+
count: number;
|
|
332
|
+
animation: "none" | "pulse" | "wave";
|
|
333
|
+
width?: string | number | undefined;
|
|
334
|
+
height?: string | number | undefined;
|
|
335
|
+
}, {
|
|
336
|
+
locale?: "en" | "fr" | undefined;
|
|
337
|
+
width?: string | number | undefined;
|
|
338
|
+
variant?: "rect" | "circle" | "text" | undefined;
|
|
339
|
+
height?: string | number | undefined;
|
|
340
|
+
count?: number | undefined;
|
|
341
|
+
animation?: "none" | "pulse" | "wave" | undefined;
|
|
342
|
+
}>;
|
|
343
|
+
type SkeletonProps = z.infer<typeof SkeletonPropsSchema>;
|
|
344
|
+
declare function validateSkeletonProps(raw: unknown): SkeletonProps;
|
|
345
|
+
/**
|
|
346
|
+
* Resolve final width/height CSS values given the variant and raw props.
|
|
347
|
+
* Centralised here so React + Preact runtimes share identical defaults.
|
|
348
|
+
*/
|
|
349
|
+
declare function resolveSkeletonDimensions(variant: SkeletonProps["variant"], width: SkeletonProps["width"], height: SkeletonProps["height"]): {
|
|
350
|
+
widthCss: string;
|
|
351
|
+
heightCss: string;
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* StatCard (R08): one metric — label, value, optional trend and change.
|
|
356
|
+
*
|
|
357
|
+
* Every field has a default so `{}` parses: a ChatGPT global entrypoint opens with empty
|
|
358
|
+
* arguments (openai/mcp-extensions docs/spec.md, entrypoints) and the view then shows an empty
|
|
359
|
+
* state instead of failing. `value` is a STRING (a decimal string for money, never a float).
|
|
360
|
+
* Claude inline cards count each stat toward the "4-5 data points" cap: keep few per card.
|
|
361
|
+
*/
|
|
362
|
+
declare const StatCardPropsSchema: z.ZodObject<{
|
|
363
|
+
label: z.ZodDefault<z.ZodString>;
|
|
364
|
+
value: z.ZodDefault<z.ZodString>;
|
|
365
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
366
|
+
trend: z.ZodOptional<z.ZodEnum<["up", "down", "flat"]>>;
|
|
367
|
+
/** Pre-formatted change, e.g. "+4.2%". */
|
|
368
|
+
change: z.ZodOptional<z.ZodString>;
|
|
369
|
+
tone: z.ZodDefault<z.ZodEnum<["neutral", "success", "warning", "danger"]>>;
|
|
370
|
+
description: z.ZodOptional<z.ZodString>;
|
|
371
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
372
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
373
|
+
}, "strip", z.ZodTypeAny, {
|
|
374
|
+
value: string;
|
|
375
|
+
label: string;
|
|
376
|
+
locale: "en" | "fr";
|
|
377
|
+
loading: boolean;
|
|
378
|
+
tone: "warning" | "danger" | "neutral" | "success";
|
|
379
|
+
description?: string | undefined;
|
|
380
|
+
unit?: string | undefined;
|
|
381
|
+
trend?: "flat" | "up" | "down" | undefined;
|
|
382
|
+
change?: string | undefined;
|
|
383
|
+
}, {
|
|
384
|
+
value?: string | undefined;
|
|
385
|
+
label?: string | undefined;
|
|
386
|
+
locale?: "en" | "fr" | undefined;
|
|
387
|
+
description?: string | undefined;
|
|
388
|
+
loading?: boolean | undefined;
|
|
389
|
+
unit?: string | undefined;
|
|
390
|
+
trend?: "flat" | "up" | "down" | undefined;
|
|
391
|
+
change?: string | undefined;
|
|
392
|
+
tone?: "warning" | "danger" | "neutral" | "success" | undefined;
|
|
393
|
+
}>;
|
|
394
|
+
type StatCardProps = z.input<typeof StatCardPropsSchema>;
|
|
395
|
+
type StatCardPropsOutput = z.output<typeof StatCardPropsSchema>;
|
|
396
|
+
declare function validateStatCardProps(raw: unknown): StatCardPropsOutput;
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* StatCard — one KPI: label, value, optional unit, trend (word + arrow, never colour alone) and
|
|
400
|
+
* change. Skeleton while `loading`; an empty state for `{}` (ChatGPT entrypoint default).
|
|
401
|
+
* WCAG-AA: a labelled region; the trend is stated in text.
|
|
402
|
+
*/
|
|
403
|
+
declare function StatCard(raw: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* BalanceCard (R09): a wallet balance for the Fuse server views.
|
|
407
|
+
*
|
|
408
|
+
* Source shape: fuse-mcp-server `src/tools/getBalance.ts` returns `{ address, token,
|
|
409
|
+
* tokenAddress?, decimals, balanceRaw?, balanceWei?, balanceFormatted }`. `balance` is the
|
|
410
|
+
* `balanceFormatted` DECIMAL STRING — shown as given, never routed through a float. Read-only.
|
|
411
|
+
* `{}` parses (ChatGPT entrypoint default).
|
|
412
|
+
*/
|
|
413
|
+
declare const BalanceCardPropsSchema: z.ZodObject<{
|
|
414
|
+
token: z.ZodDefault<z.ZodString>;
|
|
415
|
+
balance: z.ZodDefault<z.ZodString>;
|
|
416
|
+
address: z.ZodDefault<z.ZodString>;
|
|
417
|
+
tokenAddress: z.ZodOptional<z.ZodString>;
|
|
418
|
+
decimals: z.ZodOptional<z.ZodNumber>;
|
|
419
|
+
network: z.ZodOptional<z.ZodString>;
|
|
420
|
+
testnet: z.ZodDefault<z.ZodBoolean>;
|
|
421
|
+
/** Decimal string in `currency`. */
|
|
422
|
+
usdValue: z.ZodOptional<z.ZodString>;
|
|
423
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
424
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
425
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
426
|
+
}, "strip", z.ZodTypeAny, {
|
|
427
|
+
locale: "en" | "fr";
|
|
428
|
+
loading: boolean;
|
|
429
|
+
currency: string;
|
|
430
|
+
token: string;
|
|
431
|
+
balance: string;
|
|
432
|
+
address: string;
|
|
433
|
+
testnet: boolean;
|
|
434
|
+
tokenAddress?: string | undefined;
|
|
435
|
+
decimals?: number | undefined;
|
|
436
|
+
network?: string | undefined;
|
|
437
|
+
usdValue?: string | undefined;
|
|
438
|
+
}, {
|
|
439
|
+
locale?: "en" | "fr" | undefined;
|
|
440
|
+
loading?: boolean | undefined;
|
|
441
|
+
currency?: string | undefined;
|
|
442
|
+
token?: string | undefined;
|
|
443
|
+
balance?: string | undefined;
|
|
444
|
+
address?: string | undefined;
|
|
445
|
+
tokenAddress?: string | undefined;
|
|
446
|
+
decimals?: number | undefined;
|
|
447
|
+
network?: string | undefined;
|
|
448
|
+
testnet?: boolean | undefined;
|
|
449
|
+
usdValue?: string | undefined;
|
|
450
|
+
}>;
|
|
451
|
+
type BalanceCardProps = z.input<typeof BalanceCardPropsSchema>;
|
|
452
|
+
type BalanceCardPropsOutput = z.output<typeof BalanceCardPropsSchema>;
|
|
453
|
+
declare function validateBalanceCardProps(raw: unknown): BalanceCardPropsOutput;
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* BalanceCard — composition of {@link StatCard} (amount + token) with the network badge, a
|
|
457
|
+
* testnet badge, the truncated address (full address in `title`) and, when the sandbox exposes
|
|
458
|
+
* the async clipboard, a copy button. Read-only; no wallet action.
|
|
459
|
+
*/
|
|
460
|
+
declare function BalanceCard(raw: BalanceCardProps): react_jsx_runtime.JSX.Element;
|
|
461
|
+
|
|
462
|
+
declare const FeedMessageSchema: z.ZodObject<{
|
|
463
|
+
id: z.ZodOptional<z.ZodString>;
|
|
464
|
+
sender: z.ZodString;
|
|
465
|
+
channel: z.ZodOptional<z.ZodString>;
|
|
466
|
+
/** Plain text. Rendered as text, never as HTML. */
|
|
467
|
+
content: z.ZodString;
|
|
468
|
+
/** ISO 8601. */
|
|
469
|
+
timestamp: z.ZodString;
|
|
470
|
+
attachmentUrl: z.ZodOptional<z.ZodString>;
|
|
471
|
+
attachmentLabel: z.ZodOptional<z.ZodString>;
|
|
472
|
+
unread: z.ZodOptional<z.ZodBoolean>;
|
|
473
|
+
}, "strip", z.ZodTypeAny, {
|
|
474
|
+
timestamp: string;
|
|
475
|
+
content: string;
|
|
476
|
+
sender: string;
|
|
477
|
+
id?: string | undefined;
|
|
478
|
+
channel?: string | undefined;
|
|
479
|
+
attachmentUrl?: string | undefined;
|
|
480
|
+
attachmentLabel?: string | undefined;
|
|
481
|
+
unread?: boolean | undefined;
|
|
482
|
+
}, {
|
|
483
|
+
timestamp: string;
|
|
484
|
+
content: string;
|
|
485
|
+
sender: string;
|
|
486
|
+
id?: string | undefined;
|
|
487
|
+
channel?: string | undefined;
|
|
488
|
+
attachmentUrl?: string | undefined;
|
|
489
|
+
attachmentLabel?: string | undefined;
|
|
490
|
+
unread?: boolean | undefined;
|
|
491
|
+
}>;
|
|
492
|
+
type FeedMessage = z.infer<typeof FeedMessageSchema>;
|
|
493
|
+
/**
|
|
494
|
+
* MessageFeed (R03): VantagePeers messages as a READ-ONLY feed — not a chat input (Claude's
|
|
495
|
+
* design guidelines list chat inputs under patterns to avoid; the host composer exists).
|
|
496
|
+
* Messages are ordered oldest first; `maxItems` keeps the latest N (Claude inline: last few).
|
|
497
|
+
* `{}` parses (ChatGPT entrypoint default).
|
|
498
|
+
*/
|
|
499
|
+
declare const MessageFeedPropsSchema: z.ZodObject<{
|
|
500
|
+
messages: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
501
|
+
id: z.ZodOptional<z.ZodString>;
|
|
502
|
+
sender: z.ZodString;
|
|
503
|
+
channel: z.ZodOptional<z.ZodString>;
|
|
504
|
+
/** Plain text. Rendered as text, never as HTML. */
|
|
505
|
+
content: z.ZodString;
|
|
506
|
+
/** ISO 8601. */
|
|
507
|
+
timestamp: z.ZodString;
|
|
508
|
+
attachmentUrl: z.ZodOptional<z.ZodString>;
|
|
509
|
+
attachmentLabel: z.ZodOptional<z.ZodString>;
|
|
510
|
+
unread: z.ZodOptional<z.ZodBoolean>;
|
|
511
|
+
}, "strip", z.ZodTypeAny, {
|
|
512
|
+
timestamp: string;
|
|
513
|
+
content: string;
|
|
514
|
+
sender: string;
|
|
515
|
+
id?: string | undefined;
|
|
516
|
+
channel?: string | undefined;
|
|
517
|
+
attachmentUrl?: string | undefined;
|
|
518
|
+
attachmentLabel?: string | undefined;
|
|
519
|
+
unread?: boolean | undefined;
|
|
520
|
+
}, {
|
|
521
|
+
timestamp: string;
|
|
522
|
+
content: string;
|
|
523
|
+
sender: string;
|
|
524
|
+
id?: string | undefined;
|
|
525
|
+
channel?: string | undefined;
|
|
526
|
+
attachmentUrl?: string | undefined;
|
|
527
|
+
attachmentLabel?: string | undefined;
|
|
528
|
+
unread?: boolean | undefined;
|
|
529
|
+
}>, "many">>;
|
|
530
|
+
maxItems: z.ZodOptional<z.ZodNumber>;
|
|
531
|
+
/** IANA timezone for timestamps (e.g. `hostContext.timeZone`). */
|
|
532
|
+
timeZone: z.ZodOptional<z.ZodString>;
|
|
533
|
+
/** Above this many shown messages the feed is virtualised through VirtualList. */
|
|
534
|
+
virtualizeThreshold: z.ZodDefault<z.ZodNumber>;
|
|
535
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
536
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
537
|
+
}, "strip", z.ZodTypeAny, {
|
|
538
|
+
locale: "en" | "fr";
|
|
539
|
+
loading: boolean;
|
|
540
|
+
virtualizeThreshold: number;
|
|
541
|
+
messages: {
|
|
542
|
+
timestamp: string;
|
|
543
|
+
content: string;
|
|
544
|
+
sender: string;
|
|
545
|
+
id?: string | undefined;
|
|
546
|
+
channel?: string | undefined;
|
|
547
|
+
attachmentUrl?: string | undefined;
|
|
548
|
+
attachmentLabel?: string | undefined;
|
|
549
|
+
unread?: boolean | undefined;
|
|
550
|
+
}[];
|
|
551
|
+
timeZone?: string | undefined;
|
|
552
|
+
maxItems?: number | undefined;
|
|
553
|
+
}, {
|
|
554
|
+
locale?: "en" | "fr" | undefined;
|
|
555
|
+
timeZone?: string | undefined;
|
|
556
|
+
loading?: boolean | undefined;
|
|
557
|
+
virtualizeThreshold?: number | undefined;
|
|
558
|
+
messages?: {
|
|
559
|
+
timestamp: string;
|
|
560
|
+
content: string;
|
|
561
|
+
sender: string;
|
|
562
|
+
id?: string | undefined;
|
|
563
|
+
channel?: string | undefined;
|
|
564
|
+
attachmentUrl?: string | undefined;
|
|
565
|
+
attachmentLabel?: string | undefined;
|
|
566
|
+
unread?: boolean | undefined;
|
|
567
|
+
}[] | undefined;
|
|
568
|
+
maxItems?: number | undefined;
|
|
569
|
+
}>;
|
|
570
|
+
type MessageFeedProps = z.input<typeof MessageFeedPropsSchema>;
|
|
571
|
+
type MessageFeedPropsOutput = z.output<typeof MessageFeedPropsSchema>;
|
|
572
|
+
declare function validateMessageFeedProps(raw: unknown): MessageFeedPropsOutput;
|
|
573
|
+
|
|
574
|
+
type MessageFeedViewProps = MessageFeedProps & {
|
|
575
|
+
/**
|
|
576
|
+
* Route attachment links through the host (`ui/open-link`, see `openLink` in ./host) —
|
|
577
|
+
* sandboxed views cannot navigate. Without it an http(s) attachment is a plain anchor.
|
|
578
|
+
*/
|
|
579
|
+
onOpenLink?: (url: string) => void;
|
|
580
|
+
};
|
|
581
|
+
/**
|
|
582
|
+
* MessageFeed — read-only message feed (R03). Plain-text content, safe attachment links, the
|
|
583
|
+
* latest `maxItems` for inline cards, VirtualList above `virtualizeThreshold`. Not a chat input.
|
|
584
|
+
*/
|
|
585
|
+
declare function MessageFeed(raw?: MessageFeedViewProps): react_jsx_runtime.JSX.Element;
|
|
586
|
+
|
|
587
|
+
declare const PipelineDealSchema: z.ZodObject<{
|
|
588
|
+
id: z.ZodString;
|
|
589
|
+
title: z.ZodString;
|
|
590
|
+
/** Decimal STRING (never a float), in the board currency. */
|
|
591
|
+
amount: z.ZodOptional<z.ZodString>;
|
|
592
|
+
contact: z.ZodOptional<z.ZodString>;
|
|
593
|
+
url: z.ZodOptional<z.ZodString>;
|
|
594
|
+
}, "strip", z.ZodTypeAny, {
|
|
595
|
+
title: string;
|
|
596
|
+
id: string;
|
|
597
|
+
amount?: string | undefined;
|
|
598
|
+
url?: string | undefined;
|
|
599
|
+
contact?: string | undefined;
|
|
600
|
+
}, {
|
|
601
|
+
title: string;
|
|
602
|
+
id: string;
|
|
603
|
+
amount?: string | undefined;
|
|
604
|
+
url?: string | undefined;
|
|
605
|
+
contact?: string | undefined;
|
|
606
|
+
}>;
|
|
607
|
+
declare const PipelineStageSchema: z.ZodObject<{
|
|
608
|
+
id: z.ZodString;
|
|
609
|
+
name: z.ZodString;
|
|
610
|
+
deals: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
611
|
+
id: z.ZodString;
|
|
612
|
+
title: z.ZodString;
|
|
613
|
+
/** Decimal STRING (never a float), in the board currency. */
|
|
614
|
+
amount: z.ZodOptional<z.ZodString>;
|
|
615
|
+
contact: z.ZodOptional<z.ZodString>;
|
|
616
|
+
url: z.ZodOptional<z.ZodString>;
|
|
617
|
+
}, "strip", z.ZodTypeAny, {
|
|
618
|
+
title: string;
|
|
619
|
+
id: string;
|
|
620
|
+
amount?: string | undefined;
|
|
621
|
+
url?: string | undefined;
|
|
622
|
+
contact?: string | undefined;
|
|
623
|
+
}, {
|
|
624
|
+
title: string;
|
|
625
|
+
id: string;
|
|
626
|
+
amount?: string | undefined;
|
|
627
|
+
url?: string | undefined;
|
|
628
|
+
contact?: string | undefined;
|
|
629
|
+
}>, "many">>;
|
|
630
|
+
}, "strip", z.ZodTypeAny, {
|
|
631
|
+
id: string;
|
|
632
|
+
name: string;
|
|
633
|
+
deals: {
|
|
634
|
+
title: string;
|
|
635
|
+
id: string;
|
|
636
|
+
amount?: string | undefined;
|
|
637
|
+
url?: string | undefined;
|
|
638
|
+
contact?: string | undefined;
|
|
639
|
+
}[];
|
|
640
|
+
}, {
|
|
641
|
+
id: string;
|
|
642
|
+
name: string;
|
|
643
|
+
deals?: {
|
|
644
|
+
title: string;
|
|
645
|
+
id: string;
|
|
646
|
+
amount?: string | undefined;
|
|
647
|
+
url?: string | undefined;
|
|
648
|
+
contact?: string | undefined;
|
|
649
|
+
}[] | undefined;
|
|
650
|
+
}>;
|
|
651
|
+
type PipelineDeal = z.infer<typeof PipelineDealSchema>;
|
|
652
|
+
type PipelineStage = z.infer<typeof PipelineStageSchema>;
|
|
653
|
+
/**
|
|
654
|
+
* PipelineBoard (R06): deals by stage, READ-ONLY (no drag, no stage change), fullscreen-first.
|
|
655
|
+
* `layout: "board"` is the fullscreen columns view; `"summary"` is the inline stage-totals card
|
|
656
|
+
* (see `layoutForDisplayMode`). `{}` parses: ChatGPT opens entrypoints fullscreen with empty
|
|
657
|
+
* arguments (openai/mcp-extensions docs/spec.md).
|
|
658
|
+
*/
|
|
659
|
+
declare const PipelineBoardPropsSchema: z.ZodObject<{
|
|
660
|
+
stages: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
661
|
+
id: z.ZodString;
|
|
662
|
+
name: z.ZodString;
|
|
663
|
+
deals: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
664
|
+
id: z.ZodString;
|
|
665
|
+
title: z.ZodString;
|
|
666
|
+
/** Decimal STRING (never a float), in the board currency. */
|
|
667
|
+
amount: z.ZodOptional<z.ZodString>;
|
|
668
|
+
contact: z.ZodOptional<z.ZodString>;
|
|
669
|
+
url: z.ZodOptional<z.ZodString>;
|
|
670
|
+
}, "strip", z.ZodTypeAny, {
|
|
671
|
+
title: string;
|
|
672
|
+
id: string;
|
|
673
|
+
amount?: string | undefined;
|
|
674
|
+
url?: string | undefined;
|
|
675
|
+
contact?: string | undefined;
|
|
676
|
+
}, {
|
|
677
|
+
title: string;
|
|
678
|
+
id: string;
|
|
679
|
+
amount?: string | undefined;
|
|
680
|
+
url?: string | undefined;
|
|
681
|
+
contact?: string | undefined;
|
|
682
|
+
}>, "many">>;
|
|
683
|
+
}, "strip", z.ZodTypeAny, {
|
|
684
|
+
id: string;
|
|
685
|
+
name: string;
|
|
686
|
+
deals: {
|
|
687
|
+
title: string;
|
|
688
|
+
id: string;
|
|
689
|
+
amount?: string | undefined;
|
|
690
|
+
url?: string | undefined;
|
|
691
|
+
contact?: string | undefined;
|
|
692
|
+
}[];
|
|
693
|
+
}, {
|
|
694
|
+
id: string;
|
|
695
|
+
name: string;
|
|
696
|
+
deals?: {
|
|
697
|
+
title: string;
|
|
698
|
+
id: string;
|
|
699
|
+
amount?: string | undefined;
|
|
700
|
+
url?: string | undefined;
|
|
701
|
+
contact?: string | undefined;
|
|
702
|
+
}[] | undefined;
|
|
703
|
+
}>, "many">>;
|
|
704
|
+
/** ISO 4217 code used to format amounts. */
|
|
705
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
706
|
+
layout: z.ZodDefault<z.ZodEnum<["board", "summary"]>>;
|
|
707
|
+
loading: z.ZodDefault<z.ZodBoolean>;
|
|
708
|
+
locale: z.ZodDefault<z.ZodEnum<["en", "fr"]>>;
|
|
709
|
+
}, "strip", z.ZodTypeAny, {
|
|
710
|
+
locale: "en" | "fr";
|
|
711
|
+
loading: boolean;
|
|
712
|
+
currency: string;
|
|
713
|
+
stages: {
|
|
714
|
+
id: string;
|
|
715
|
+
name: string;
|
|
716
|
+
deals: {
|
|
717
|
+
title: string;
|
|
718
|
+
id: string;
|
|
719
|
+
amount?: string | undefined;
|
|
720
|
+
url?: string | undefined;
|
|
721
|
+
contact?: string | undefined;
|
|
722
|
+
}[];
|
|
723
|
+
}[];
|
|
724
|
+
layout: "board" | "summary";
|
|
725
|
+
}, {
|
|
726
|
+
locale?: "en" | "fr" | undefined;
|
|
727
|
+
loading?: boolean | undefined;
|
|
728
|
+
currency?: string | undefined;
|
|
729
|
+
stages?: {
|
|
730
|
+
id: string;
|
|
731
|
+
name: string;
|
|
732
|
+
deals?: {
|
|
733
|
+
title: string;
|
|
734
|
+
id: string;
|
|
735
|
+
amount?: string | undefined;
|
|
736
|
+
url?: string | undefined;
|
|
737
|
+
contact?: string | undefined;
|
|
738
|
+
}[] | undefined;
|
|
739
|
+
}[] | undefined;
|
|
740
|
+
layout?: "board" | "summary" | undefined;
|
|
741
|
+
}>;
|
|
742
|
+
type PipelineBoardProps = z.input<typeof PipelineBoardPropsSchema>;
|
|
743
|
+
type PipelineBoardPropsOutput = z.output<typeof PipelineBoardPropsSchema>;
|
|
744
|
+
declare function validatePipelineBoardProps(raw: unknown): PipelineBoardPropsOutput;
|
|
745
|
+
|
|
746
|
+
type PipelineBoardViewProps = PipelineBoardProps & {
|
|
747
|
+
/** Summary layout: ask the host for fullscreen (`requestDisplayMode` in ./host). */
|
|
748
|
+
onRequestFullscreen?: () => void;
|
|
749
|
+
/** Deal links go through the host (`ui/open-link`); without it deals with a url are plain text. */
|
|
750
|
+
onOpenLink?: (url: string) => void;
|
|
751
|
+
};
|
|
752
|
+
/**
|
|
753
|
+
* PipelineBoard — deals by stage, READ-ONLY. `board`: one labelled column per stage with stage
|
|
754
|
+
* filter chips (R25); `summary`: the inline stage-totals card. No drag-and-drop and no stage
|
|
755
|
+
* change (R07 deferred). Horizontal pan only; scroll padding honours the host safe-area insets.
|
|
756
|
+
*/
|
|
757
|
+
declare function PipelineBoard(raw?: PipelineBoardViewProps): react_jsx_runtime.JSX.Element;
|
|
758
|
+
|
|
759
|
+
export { StreamingTableView as A, BalanceCard as B, type ColumnDef as C, type StreamingTableViewProps as D, type EmptyStateProps as E, type FeedMessage as F, type TableViewOptions as G, type TableViewProps as H, TableViewPropsSchema as I, type TableViewPropsSchemaInput as J, type TableViewPropsSchemaOutput as K, compareDecimalStrings as L, MessageFeed as M, nextSort as N, resolveSkeletonDimensions as O, PipelineBoard as P, sortItems as Q, validateBalanceCardProps as R, type SelectionMode as S, TableView as T, validateEmptyStateProps as U, validateMessageFeedProps as V, validatePipelineBoardProps as W, validateSkeletonProps as X, validateStatCardProps as Y, validateTableViewProps as Z, type BalanceCardProps as a, type BalanceCardPropsOutput as b, BalanceCardPropsSchema as c, type ColumnKind as d, EmptyStatePropsSchema as e, type EmptyStatePropsSchemaInput as f, type EmptyStatePropsSchemaOutput as g, type MessageFeedProps as h, type MessageFeedPropsOutput as i, MessageFeedPropsSchema as j, type MessageFeedViewProps as k, type PipelineBoardProps as l, type PipelineBoardPropsOutput as m, PipelineBoardPropsSchema as n, type PipelineBoardViewProps as o, type PipelineDeal as p, type PipelineStage as q, Skeleton as r, type SkeletonProps as s, SkeletonPropsSchema as t, type SortDirection as u, type SortState as v, StatCard as w, type StatCardProps as x, type StatCardPropsOutput as y, StatCardPropsSchema as z };
|