@pstdio/ui 0.39.0 → 0.41.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 (82) hide show
  1. package/dist/{MermaidComponent-81jr28u4.js → MermaidComponent-BCiI63_G.js} +3 -3
  2. package/dist/{MermaidComponent-81jr28u4.js.map → MermaidComponent-BCiI63_G.js.map} +1 -1
  3. package/dist/chat-question-bubble-w2vMbFsS.js +68 -0
  4. package/dist/chat-question-bubble-w2vMbFsS.js.map +1 -0
  5. package/dist/chat-ui.d.ts +94 -17
  6. package/dist/chat-ui.js +2240 -1476
  7. package/dist/chat-ui.js.map +1 -1
  8. package/dist/{data-table-stats-row-CpRe_xK2.js → data-table-stats-row-EiTEONdY.js} +2 -2
  9. package/dist/{data-table-stats-row-CpRe_xK2.js.map → data-table-stats-row-EiTEONdY.js.map} +1 -1
  10. package/dist/data-table.d.ts +27 -7
  11. package/dist/data-table.js +1035 -872
  12. package/dist/data-table.js.map +1 -1
  13. package/dist/diff-bubble-DewUd_2w.js +61 -0
  14. package/dist/diff-bubble-DewUd_2w.js.map +1 -0
  15. package/dist/{diff-drawer-45rpk3aq.js → diff-drawer-BwZBOObe.js} +106 -85
  16. package/dist/diff-drawer-BwZBOObe.js.map +1 -0
  17. package/dist/diff-viewer-kOOd7C7h.js +574 -0
  18. package/dist/diff-viewer-kOOd7C7h.js.map +1 -0
  19. package/dist/diff.d.ts +11 -0
  20. package/dist/diff.js +107 -98
  21. package/dist/diff.js.map +1 -1
  22. package/dist/display-sort-control-DPxc0e5z.js +587 -0
  23. package/dist/display-sort-control-DPxc0e5z.js.map +1 -0
  24. package/dist/{workspace-badge-Brm3Xr3m.d.ts → host-storage-DP0RLj4i.d.ts} +15 -1
  25. package/dist/{index-BfFLdci8.d.ts → index-C9mywhyX.d.ts} +49 -13
  26. package/dist/index-D3UJyWWh.d.ts +501 -0
  27. package/dist/index.d.ts +38 -13
  28. package/dist/index.js +941 -908
  29. package/dist/index.js.map +1 -1
  30. package/dist/kanban-renderer.d.ts +2 -326
  31. package/dist/kanban-renderer.js +991 -610
  32. package/dist/kanban-renderer.js.map +1 -1
  33. package/dist/list-row-DM0DiIrN.js +1167 -0
  34. package/dist/list-row-DM0DiIrN.js.map +1 -0
  35. package/dist/{mermaid-renderer-DImi0fDp.js → mermaid-renderer-0PmNkOXI.js} +29 -29
  36. package/dist/mermaid-renderer-0PmNkOXI.js.map +1 -0
  37. package/dist/mermaid.js +1 -1
  38. package/dist/param-editor.js +2 -3
  39. package/dist/prism-JVIsQMoJ.js +1029 -0
  40. package/dist/prism-JVIsQMoJ.js.map +1 -0
  41. package/dist/{resource-badge-95WPVlZf.d.ts → resource-badge-nOWPqxFU.d.ts} +1 -0
  42. package/dist/rich-text-DM24VNQZ.js +10447 -0
  43. package/dist/rich-text-DM24VNQZ.js.map +1 -0
  44. package/dist/rich-text.d.ts +2 -2
  45. package/dist/rich-text.js +2 -2
  46. package/dist/style.css +1 -1
  47. package/dist/terminal.d.ts +5 -63
  48. package/dist/terminal.js +102 -122
  49. package/dist/terminal.js.map +1 -1
  50. package/dist/{theme-BsOWAIi2.js → theme-at0rtSnX.js} +441 -246
  51. package/dist/theme-at0rtSnX.js.map +1 -0
  52. package/dist/theme-kKuLN2jb.js +80 -0
  53. package/dist/theme-kKuLN2jb.js.map +1 -0
  54. package/dist/theme-preference-BV4cbJNB.js +115 -0
  55. package/dist/theme-preference-BV4cbJNB.js.map +1 -0
  56. package/dist/theme.js +3 -2
  57. package/dist/{tree-list-WhISG-cz.js → tree-list-Cqgl8mnN.js} +400 -377
  58. package/dist/tree-list-Cqgl8mnN.js.map +1 -0
  59. package/package.json +4 -4
  60. package/dist/diff-bubble-DZsarmSG.js +0 -61
  61. package/dist/diff-bubble-DZsarmSG.js.map +0 -1
  62. package/dist/diff-drawer-45rpk3aq.js.map +0 -1
  63. package/dist/diff-viewer-DJ1B5hxL.js +0 -558
  64. package/dist/diff-viewer-DJ1B5hxL.js.map +0 -1
  65. package/dist/list-row-uqD-q4gv.js +0 -1018
  66. package/dist/list-row-uqD-q4gv.js.map +0 -1
  67. package/dist/mermaid-renderer-DImi0fDp.js.map +0 -1
  68. package/dist/param-editor-BQd4AOUP.js +0 -225
  69. package/dist/param-editor-BQd4AOUP.js.map +0 -1
  70. package/dist/param-editor-field-BJ_rLUnV.js +0 -2385
  71. package/dist/param-editor-field-BJ_rLUnV.js.map +0 -1
  72. package/dist/prism-BStPsJSB.js +0 -658
  73. package/dist/prism-BStPsJSB.js.map +0 -1
  74. package/dist/rich-text-VYAmEigU.js +0 -6979
  75. package/dist/rich-text-VYAmEigU.js.map +0 -1
  76. package/dist/slider-hwHYe98I.js +0 -423
  77. package/dist/slider-hwHYe98I.js.map +0 -1
  78. package/dist/theme-BsOWAIi2.js.map +0 -1
  79. package/dist/theme-preference-pzfuK5cH.js +0 -101
  80. package/dist/theme-preference-pzfuK5cH.js.map +0 -1
  81. package/dist/tree-list-WhISG-cz.js.map +0 -1
  82. package/dist/types-DWA3enV6.d.ts +0 -182
@@ -0,0 +1,501 @@
1
+ import { f as ResourceContextAction, i as WorkspaceBadgeProps } from "./host-storage-DP0RLj4i.js";
2
+ import { ComponentProps, ComponentType, DragEventHandler, ReactNode } from "react";
3
+ import { ViewFilterCondition, ViewFilterGroup, ViewFilterGroup as ViewFilterGroup$1, ViewFilterRule, ViewFilterRule as ViewFilterRule$1, ViewSort, ViewSort as ViewSort$1, ViewSortDirection } from "@pstdio/sdk/extensions";
4
+ //#region src/components/collection-view/collection-view-types.d.ts
5
+ declare const EMPTY_VIEW_FILTER: ViewFilterGroup;
6
+ /** What a saved view stores. Search, selection, and collapsed groups are screen state and never saved. */
7
+ interface CollectionSavedView<TSettings> {
8
+ id: string;
9
+ title: string;
10
+ settings: TSettings;
11
+ filter: ViewFilterGroup;
12
+ sorts: ViewSort[];
13
+ /** @deprecated Use defaultActiveViewId instead. */
14
+ isDefault?: boolean;
15
+ }
16
+ interface CollectionViewState<TSettings> {
17
+ settings: TSettings;
18
+ filter: ViewFilterGroup;
19
+ sorts: ViewSort[];
20
+ }
21
+ interface CollectionViewsSource<TSettings> {
22
+ views: (CollectionSavedView<TSettings> & {
23
+ builtIn: boolean;
24
+ })[];
25
+ defaultViewId: string;
26
+ onCreateView: (input: CollectionViewState<TSettings> & {
27
+ title: string;
28
+ copyFrom?: string;
29
+ }) => Promise<CollectionSavedView<TSettings>>;
30
+ onUpdateView: (id: string, input: Partial<CollectionViewState<TSettings>> & {
31
+ title?: string;
32
+ }) => Promise<void>;
33
+ onDeleteView: (id: string) => Promise<void>;
34
+ onSetDefaultView: (id: string | null) => Promise<void>;
35
+ }
36
+ //#endregion
37
+ //#region src/components/kanban-renderer/types.d.ts
38
+ type ViewMode = "board" | "list";
39
+ declare const NO_GROUPING = "none";
40
+ interface EnumOption {
41
+ value: string;
42
+ label: string;
43
+ color?: string;
44
+ icon?: string | null;
45
+ }
46
+ /**
47
+ * Reactive options source for enum / enum-multi attributes. Mirrors React's
48
+ * useSyncExternalStore contract so a contribution can hand its options off as
49
+ * a live collection (e.g. a project-scoped resource) instead of a frozen
50
+ * array, and the renderer subscribes to it the same way it subscribes to rows.
51
+ */
52
+ interface EnumOptionsSource {
53
+ subscribe: (listener: () => void) => () => void;
54
+ getSnapshot: () => EnumOption[];
55
+ }
56
+ type EnumOptions = EnumOption[] | EnumOptionsSource;
57
+ type AttributeType = {
58
+ kind: "enum";
59
+ options: EnumOptions;
60
+ } | {
61
+ kind: "enum-multi";
62
+ options: EnumOptions;
63
+ } | {
64
+ kind: "boolean";
65
+ legacyValues?: Record<string, boolean>;
66
+ } | {
67
+ kind: "string";
68
+ } | {
69
+ kind: "date";
70
+ } | {
71
+ kind: "number";
72
+ } | {
73
+ kind: "user";
74
+ };
75
+ declare const isEnumOptionsSource: (options: EnumOptions) => options is EnumOptionsSource;
76
+ type AttributeKind = AttributeType["kind"];
77
+ type AttributeDisplayDescriptor = {
78
+ kind: "badge-list";
79
+ itemsAttributeId: string;
80
+ };
81
+ type CollectionBadgeJsonValue = string | number | boolean | null | CollectionBadgeJsonValue[] | CollectionBadgeJsonObject;
82
+ interface CollectionBadgeJsonObject {
83
+ [key: string]: CollectionBadgeJsonValue;
84
+ }
85
+ interface CollectionBadgeResource {
86
+ type: string;
87
+ id: string;
88
+ projectId?: string;
89
+ label?: string;
90
+ extensionId?: string;
91
+ metadata?: CollectionBadgeJsonObject;
92
+ }
93
+ interface CollectionBadgeItem {
94
+ id: string;
95
+ label: string;
96
+ icon?: string;
97
+ resource?: CollectionBadgeResource;
98
+ }
99
+ interface AttributeDescriptor {
100
+ id: string;
101
+ label: string;
102
+ type: AttributeType;
103
+ filterable?: boolean;
104
+ groupable?: boolean;
105
+ sortable?: boolean;
106
+ displayable?: boolean;
107
+ editable?: boolean;
108
+ display?: AttributeDisplayDescriptor;
109
+ render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
110
+ compare?: (a: unknown, b: unknown) => number;
111
+ }
112
+ /**
113
+ * Reactive source for an entire attribute schema. Mirrors React's
114
+ * useSyncExternalStore contract so consumers (e.g. the workbench's
115
+ * kanban-renderer bridge) can subscribe and re-resolve when the schema changes
116
+ * — letting a contribution add/remove/edit attributes at runtime without
117
+ * re-registering.
118
+ */
119
+ interface AttributesSource {
120
+ subscribe: (listener: () => void) => () => void;
121
+ getSnapshot: () => AttributeDescriptor[];
122
+ }
123
+ declare const isAttributesSource: (attributes: AttributeDescriptor[] | AttributesSource) => attributes is AttributesSource;
124
+ interface KanbanRendererRow {
125
+ id: string;
126
+ title: string;
127
+ /**
128
+ * Optional navigation handle. When set, the renderer's default click handler
129
+ * routes through the contribution's onRowClick (which typically opens the
130
+ * resource via the workbench).
131
+ */
132
+ resource?: unknown;
133
+ attributes: Record<string, unknown>;
134
+ }
135
+ /** Board display settings. Order lives in the view's sorts. */
136
+ interface KanbanRendererSettings {
137
+ viewMode: ViewMode;
138
+ columnGrouping: string | typeof NO_GROUPING;
139
+ rowGrouping: string | typeof NO_GROUPING;
140
+ displayProperties: string[];
141
+ }
142
+ type KanbanRendererSavedView = CollectionSavedView<KanbanRendererSettings>;
143
+ type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
144
+ interface KanbanRendererCreateField {
145
+ id: string;
146
+ label: string;
147
+ description?: string;
148
+ placeholder?: string;
149
+ type: KanbanRendererCreateFieldType;
150
+ required?: boolean;
151
+ defaultValue?: unknown;
152
+ options?: EnumOption[];
153
+ /** `files` fields only. */
154
+ multiple?: boolean;
155
+ accept?: string;
156
+ }
157
+ /** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
158
+ interface KanbanRendererCreateLabels {
159
+ cancel: string;
160
+ properties: string;
161
+ submitError: string;
162
+ removeFile: string;
163
+ }
164
+ interface KanbanRendererCreateRowConfig {
165
+ title: string;
166
+ submitLabel: string;
167
+ fields: KanbanRendererCreateField[];
168
+ labels: KanbanRendererCreateLabels;
169
+ }
170
+ interface KanbanRendererCreateSubmission {
171
+ columnId: string;
172
+ columnAttributeId?: string;
173
+ /** Declared field values, excluding `files` fields — those arrive as `files`. */
174
+ values: Record<string, unknown>;
175
+ /** Every editable attribute the user set, keyed by attribute id. */
176
+ attributeValues: Record<string, unknown>;
177
+ files: File[];
178
+ }
179
+ declare const DEFAULT_KANBAN_RENDERER_SETTINGS: KanbanRendererSettings;
180
+ /**
181
+ * Look up an attribute by id from a contribution-provided descriptor list.
182
+ * Returns undefined for the "none" grouping or unknown ids.
183
+ */
184
+ declare const findAttribute: (attributes: AttributeDescriptor[], id: string | undefined) => AttributeDescriptor | undefined;
185
+ type KanbanRendererViewsSource = CollectionViewsSource<KanbanRendererSettings>;
186
+ //#endregion
187
+ //#region src/components/collection-view/collection-view-fields.d.ts
188
+ /**
189
+ * Read a typed attribute value out of a row. enum-multi normalizes to an array;
190
+ * single-valued kinds normalize to undefined when missing.
191
+ */
192
+ declare const getAttributeValue: (row: KanbanRendererRow, descriptor: AttributeDescriptor) => unknown;
193
+ declare const getAttributeStringValues: (row: KanbanRendererRow, descriptor: AttributeDescriptor) => string[];
194
+ //#endregion
195
+ //#region src/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts
196
+ interface AttributeBadge {
197
+ attributeId: string;
198
+ attributeLabel?: string;
199
+ label: string;
200
+ color?: string;
201
+ icon?: string | null;
202
+ value?: string | string[];
203
+ options?: EnumOption[];
204
+ isEditable?: boolean;
205
+ }
206
+ //#endregion
207
+ //#region src/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts
208
+ /**
209
+ * Normalize an enum / enum-multi attribute's `options` to a plain option list.
210
+ * Sources resolve via `getSnapshot()` on every call, so callers naturally see
211
+ * the latest values.
212
+ */
213
+ declare const getEnumOptions: (type: AttributeType) => EnumOption[];
214
+ //#endregion
215
+ //#region src/components/kanban-renderer/kanban-renderer-helpers.d.ts
216
+ declare const renderBadgeListDisplay: (descriptor: AttributeDescriptor, value: unknown, row: KanbanRendererRow, openResource?: (resource: NonNullable<CollectionBadgeItem["resource"]>) => void) => ReactNode;
217
+ /**
218
+ * Per-type default cell summary used by the card / list end-content. Returns
219
+ * null when the attribute has no displayable value.
220
+ */
221
+ declare const renderAttributeBadge: (descriptor: AttributeDescriptor, row: KanbanRendererRow) => AttributeBadge | null;
222
+ declare const collectDisplayBadges: (row: KanbanRendererRow, attributes: AttributeDescriptor[], displayProperties: string[]) => AttributeBadge[];
223
+ interface FilterCategoryView {
224
+ id: string;
225
+ label: string;
226
+ selectionMode: "multiple";
227
+ options: {
228
+ value: string;
229
+ label: string;
230
+ color?: string;
231
+ icon?: string | null;
232
+ }[];
233
+ }
234
+ /**
235
+ * Build the filter menu's category list from the declared attributes. Enum
236
+ * descriptors expose their declared options first; auto-derived values from
237
+ * the data fill in the gaps for string / date / number / user attributes (so
238
+ * filter chips for free-form fields don't require declaring every option).
239
+ */
240
+ declare const buildFilterCategories: (attributes: AttributeDescriptor[], rows: KanbanRendererRow[]) => FilterCategoryView[];
241
+ interface MenuOption {
242
+ value: string;
243
+ label: string;
244
+ }
245
+ declare const buildGroupingOptions: (attributes: AttributeDescriptor[]) => MenuOption[];
246
+ declare const buildDisplayPropertyOptions: (attributes: AttributeDescriptor[]) => MenuOption[];
247
+ //#endregion
248
+ //#region src/components/kanban-renderer/display-menu.d.ts
249
+ interface DisplayMenuProps {
250
+ settings: KanbanRendererSettings;
251
+ sortControl?: ReactNode;
252
+ groupingOptions: MenuOption[];
253
+ displayPropertyOptions: MenuOption[];
254
+ onViewModeChange: (value: KanbanRendererSettings["viewMode"]) => void;
255
+ onColumnGroupingChange: (value: string) => void;
256
+ onRowGroupingChange: (value: string) => void;
257
+ onDisplayPropertyToggle: (property: string) => void;
258
+ }
259
+ declare const DisplayMenu: (props: DisplayMenuProps) => import("react/jsx-runtime").JSX.Element;
260
+ //#endregion
261
+ //#region src/components/kanban-renderer/kanban-renderer-action.d.ts
262
+ type KanbanActionErrorHandler = (error: unknown, action: string) => void;
263
+ //#endregion
264
+ //#region src/components/kanban-renderer/kanban-renderer-card.d.ts
265
+ interface KanbanRendererCardProps$1 {
266
+ eyebrow?: string;
267
+ title: string;
268
+ /** Search text to mark in the title and eyebrow. */
269
+ highlight?: string;
270
+ badges?: AttributeBadge[];
271
+ customSlots?: ReactNode[];
272
+ workspaceBadge?: WorkspaceBadgeProps;
273
+ isSelected?: boolean;
274
+ draggable?: boolean;
275
+ onBadgeChange?: (attributeId: string, value: unknown) => void;
276
+ onDragStart?: DragEventHandler<HTMLDivElement>;
277
+ onDragEnd?: DragEventHandler<HTMLDivElement>;
278
+ onClick?: () => void;
279
+ }
280
+ declare const KanbanRendererCard: (props: KanbanRendererCardProps$1) => import("react/jsx-runtime").JSX.Element;
281
+ //#endregion
282
+ //#region src/components/kanban-renderer/kanban-renderer-board.d.ts
283
+ type KanbanRendererCardProps = ComponentProps<typeof KanbanRendererCard>;
284
+ interface KanbanRendererBoardItem {
285
+ id: string;
286
+ cardProps: Omit<KanbanRendererCardProps, "draggable" | "onDragStart" | "onDragEnd" | "isSelected">;
287
+ contextMenuActions?: ResourceContextAction[];
288
+ }
289
+ interface KanbanRendererBoardColumnAction {
290
+ id: string;
291
+ label: string;
292
+ icon: ComponentType<{
293
+ size?: number | string;
294
+ }>;
295
+ }
296
+ interface KanbanRendererBoardGroup {
297
+ key: string;
298
+ label: string;
299
+ items: KanbanRendererBoardItem[];
300
+ }
301
+ interface KanbanRendererBoardColumn {
302
+ id: string;
303
+ label: string;
304
+ createLabel?: string;
305
+ color?: string;
306
+ icon?: string | null;
307
+ items: KanbanRendererBoardItem[];
308
+ groups?: KanbanRendererBoardGroup[];
309
+ /** Cards in the column before search narrowed it. Set only while a search is active. */
310
+ totalCount?: number;
311
+ canDragIn: boolean;
312
+ canDragOut: boolean;
313
+ canCreate: boolean;
314
+ actions: KanbanRendererBoardColumnAction[];
315
+ }
316
+ interface KanbanRendererBoardProps {
317
+ columns: KanbanRendererBoardColumn[];
318
+ selectedItemId?: string | null;
319
+ onMoveItem?: (itemId: string, targetColumnId: string, context?: {
320
+ beforeItemId?: string;
321
+ targetGroupKey?: string;
322
+ }) => Promise<void> | void;
323
+ onMoveToGroup?: (itemId: string, targetGroupKey: string, context?: {
324
+ beforeItemId?: string;
325
+ }) => Promise<void> | void;
326
+ onCreateStart?: (columnId: string) => void;
327
+ onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
328
+ }
329
+ declare const KanbanRendererBoard: (props: KanbanRendererBoardProps) => import("react/jsx-runtime").JSX.Element;
330
+ //#endregion
331
+ //#region src/components/kanban-renderer/kanban-renderer.d.ts
332
+ /** Board-column behavior and menu configuration for a resolved column group. */
333
+ interface BoardColumnConfig {
334
+ /** Chakra color palette used for the column header and group badges. */
335
+ color?: string;
336
+ canDragIn?: boolean;
337
+ canDragOut?: boolean;
338
+ canCreate?: boolean;
339
+ actions?: KanbanRendererBoardColumnAction[];
340
+ }
341
+ /** Switchable list/board renderer for rows with typed attributes, filtering, grouping, and ordering. */
342
+ interface KanbanRendererProps<TRow extends KanbanRendererRow = KanbanRendererRow> {
343
+ /** Stable rows to render. Each row must have an id, title, and attributes map. */
344
+ rows: TRow[];
345
+ /** Persistent key used by the renderer store for view, filter, grouping, ordering, and list expansion settings. */
346
+ storageKey: string;
347
+ itemLabel?: string;
348
+ /** Attribute descriptors that define display, filtering, grouping, ordering, and board columns. */
349
+ attributes: AttributeDescriptor[];
350
+ selectedRowId?: string | null;
351
+ emptyState?: ReactNode;
352
+ emptyTitle?: string;
353
+ emptyDescription?: string;
354
+ /** Replaces the data area while a query is unavailable, keeping its controls mounted. */
355
+ contentPlaceholder?: ReactNode;
356
+ defaultSettings?: Partial<KanbanRendererSettings>;
357
+ defaultFilter?: ViewFilterGroup;
358
+ defaultSorts?: ViewSort[];
359
+ viewsSource?: KanbanRendererViewsSource;
360
+ defaultViews?: KanbanRendererSavedView[];
361
+ defaultActiveViewId?: string;
362
+ hideToolbar?: boolean;
363
+ toolbarActions?: ReactNode;
364
+ toolbarLeading?: ReactNode;
365
+ onRowClick?: (row: TRow) => void;
366
+ /** Reports a failed badge edit or complete move once and consumes its rejection. */
367
+ onActionError?: KanbanActionErrorHandler;
368
+ /** Called when a row attribute changes through drag/drop, board movement, or inline controls. */
369
+ onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
370
+ /** Called for manual row ordering when a dragged row is dropped before another row. Only used while the view has no sorts. */
371
+ onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
372
+ createRow?: KanbanRendererCreateRowConfig;
373
+ onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
374
+ onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
375
+ getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
376
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
377
+ }
378
+ declare const KanbanRenderer: <TRow extends KanbanRendererRow>(props: KanbanRendererProps<TRow>) => import("react/jsx-runtime").JSX.Element;
379
+ //#endregion
380
+ //#region src/components/kanban-renderer/kanban-renderer-create-dialog.d.ts
381
+ interface KanbanRendererCreateDialogProps {
382
+ open: boolean;
383
+ columnId: string;
384
+ columnAttributeId?: string;
385
+ attributes: AttributeDescriptor[];
386
+ config: KanbanRendererCreateRowConfig;
387
+ onClose: () => void;
388
+ onSubmit: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
389
+ }
390
+ declare const KanbanRendererCreateDialog: (props: KanbanRendererCreateDialogProps) => import("react/jsx-runtime").JSX.Element;
391
+ //#endregion
392
+ //#region src/components/kanban-renderer/kanban-renderer-list.d.ts
393
+ interface KanbanRendererListItem {
394
+ id: string;
395
+ eyebrow?: string;
396
+ title: string;
397
+ /** Search text to mark in the title and eyebrow. */
398
+ highlight?: string;
399
+ isGroup?: boolean;
400
+ countBadge?: number;
401
+ countColorPalette?: string;
402
+ statusIcon?: ComponentType<{
403
+ size?: number | string;
404
+ }>;
405
+ statusColor?: string;
406
+ statusColorPalette?: string;
407
+ badges?: AttributeBadge[];
408
+ customSlots?: ReactNode[];
409
+ children?: KanbanRendererListItem[];
410
+ onClick?: () => void;
411
+ onBadgeChange?: (attributeId: string, value: unknown) => void;
412
+ contextMenuActions?: ResourceContextAction[];
413
+ draggable?: boolean;
414
+ onDropRow?: (rowId: string) => void;
415
+ }
416
+ type KanbanRendererListExpandedState = Record<string, boolean>;
417
+ interface KanbanRendererListProps {
418
+ items: KanbanRendererListItem[];
419
+ selectedItemId?: string | null;
420
+ expandedGroups?: KanbanRendererListExpandedState;
421
+ onItemClick?: (item: KanbanRendererListItem) => void;
422
+ onExpandedGroupChange?: (rowId: string, isExpanded: boolean) => void;
423
+ }
424
+ declare const KanbanRendererList: (props: KanbanRendererListProps) => import("react/jsx-runtime").JSX.Element;
425
+ //#endregion
426
+ //#region src/components/kanban-renderer/kanban-renderer-toolbar.d.ts
427
+ interface KanbanRendererToolbarProps<TRow extends KanbanRendererRow = KanbanRendererRow> {
428
+ rows: TRow[];
429
+ storageKey: string;
430
+ itemLabel?: string;
431
+ attributes: AttributeDescriptor[];
432
+ defaultSettings?: Partial<KanbanRendererSettings>;
433
+ defaultFilter?: ViewFilterGroup;
434
+ defaultSorts?: ViewSort[];
435
+ viewsSource?: KanbanRendererViewsSource;
436
+ defaultViews?: KanbanRendererSavedView[];
437
+ defaultActiveViewId?: string;
438
+ search: string;
439
+ onSearchChange: (value: string) => void;
440
+ searchResultLabel?: string;
441
+ leading?: ReactNode;
442
+ actions?: ReactNode;
443
+ }
444
+ declare const KanbanRendererToolbar: <TRow extends KanbanRendererRow>(props: KanbanRendererToolbarProps<TRow>) => import("react/jsx-runtime").JSX.Element;
445
+ //#endregion
446
+ //#region src/components/collection-view/use-collection-view-store.d.ts
447
+ /** The unsaved state of one renderer: the active view and the edits made on top of it. */
448
+ interface CollectionViewSnapshot<TSettings> {
449
+ settings: TSettings;
450
+ filter: ViewFilterGroup;
451
+ sorts: ViewSort[];
452
+ expandedGroups: Record<string, boolean>;
453
+ activeViewId: string;
454
+ }
455
+ type CollectionViewMenu = "filter";
456
+ interface CollectionViewStoreState<TSettings> extends CollectionViewSnapshot<TSettings> {
457
+ /** The view bar menu that is open. Screen state: never persisted. */
458
+ openMenu: CollectionViewMenu | null;
459
+ /** The root rule whose pill editor is open. Screen state: never persisted. */
460
+ openRuleIndex: number | null;
461
+ setOpenMenu: (menu: CollectionViewMenu | null) => void;
462
+ setOpenRuleIndex: (index: number | null) => void;
463
+ /** Adds a rule for the field and opens its pill editor. */
464
+ startRule: (field: AttributeDescriptor) => void;
465
+ /** Commits picker values; scalar values transfer editing to their bubble. */
466
+ selectRule: (rule: ViewFilterRule) => void;
467
+ setSettings: (settings: Partial<TSettings>) => void;
468
+ setFilter: (filter: ViewFilterGroup) => void;
469
+ setSorts: (sorts: ViewSort[]) => void;
470
+ setExpandedGroup: (groupId: string, isExpanded: boolean) => void;
471
+ activateView: (view: CollectionSavedView<TSettings>) => void;
472
+ reset: () => void;
473
+ }
474
+ //#endregion
475
+ //#region src/components/kanban-renderer/use-kanban-renderer-store.d.ts
476
+ type KanbanRendererState = CollectionViewStoreState<KanbanRendererSettings>;
477
+ interface KanbanRendererStoreInitialState {
478
+ settings?: Partial<KanbanRendererSettings>;
479
+ filter?: ViewFilterGroup;
480
+ sorts?: ViewSort[];
481
+ }
482
+ /** The unsaved view state of one board. Hosts read it to send the view to their query. */
483
+ declare const useKanbanRendererStore: <T>(storageKey: string, selector: (state: KanbanRendererState) => T, initialState?: KanbanRendererStoreInitialState) => T;
484
+ //#endregion
485
+ //#region src/components/kanban-renderer/use-resolved-attributes.d.ts
486
+ /**
487
+ * Returns the same descriptors with every source-backed enum's options
488
+ * replaced by a fresh `getSnapshot()` array. Pure — call from anywhere that
489
+ * needs a normalized view of the schema.
490
+ */
491
+ declare const resolveAttributeOptions: (attributes: AttributeDescriptor[]) => AttributeDescriptor[];
492
+ /**
493
+ * Subscribes to every source-backed enum in `attributes` and returns the
494
+ * resolved descriptors (options materialized to plain arrays). When any
495
+ * source's listener fires the component rerenders, so downstream renders see
496
+ * the new snapshot automatically.
497
+ */
498
+ declare const useResolvedAttributes: (attributes: AttributeDescriptor[]) => AttributeDescriptor[];
499
+ //#endregion
500
+ export { isEnumOptionsSource as $, getAttributeStringValues as A, EnumOptionsSource as B, buildFilterCategories as C, renderBadgeListDisplay as D, renderAttributeBadge as E, AttributeType as F, KanbanRendererRow as G, KanbanRendererCreateFieldType as H, AttributesSource as I, KanbanRendererViewsSource as J, KanbanRendererSavedView as K, DEFAULT_KANBAN_RENDERER_SETTINGS as L, AttributeDescriptor as M, AttributeDisplayDescriptor as N, getEnumOptions as O, AttributeKind as P, isAttributesSource as Q, EnumOption as R, buildDisplayPropertyOptions as S, collectDisplayBadges as T, KanbanRendererCreateRowConfig as U, KanbanRendererCreateField as V, KanbanRendererCreateSubmission as W, ViewMode as X, NO_GROUPING as Y, findAttribute as Z, KanbanRendererCard as _, KanbanRendererToolbar as a, ViewFilterRule$1 as at, FilterCategoryView as b, KanbanRendererListItem as c, KanbanRenderer as d, CollectionSavedView as et, KanbanRendererProps as f, KanbanRendererBoardItem as g, KanbanRendererBoardColumnAction as h, CollectionViewStoreState as i, ViewFilterGroup$1 as it, getAttributeValue as j, AttributeBadge as k, KanbanRendererCreateDialog as l, KanbanRendererBoardColumn as m, useResolvedAttributes as n, EMPTY_VIEW_FILTER as nt, KanbanRendererToolbarProps as o, ViewSort$1 as ot, KanbanRendererBoard as p, KanbanRendererSettings as q, useKanbanRendererStore as r, ViewFilterCondition as rt, KanbanRendererList as s, ViewSortDirection as st, resolveAttributeOptions as t, CollectionViewsSource as tt, BoardColumnConfig as u, KanbanRendererCardProps$1 as v, buildGroupingOptions as w, MenuOption as x, DisplayMenu as y, EnumOptions as z };
501
+ export {};