@pstdio/ui 0.16.0 → 0.18.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 (210) hide show
  1. package/dist/{MermaidComponent-BCMQqPqu.js → MermaidComponent-BPiVFNYK.js} +2 -2
  2. package/dist/{MermaidComponent-BCMQqPqu.js.map → MermaidComponent-BPiVFNYK.js.map} +1 -1
  3. package/dist/chat-ui.js +1618 -1102
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/{checkbox-D5AzFRlb.js → checkbox-B2zYVemL.js} +28 -28
  6. package/dist/checkbox-B2zYVemL.js.map +1 -0
  7. package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
  8. package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
  9. package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
  10. package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
  11. package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
  12. package/dist/components/chat-ui/components/message-types.d.ts +14 -0
  13. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
  14. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
  15. package/dist/components/chat-ui/components/timeline.d.ts +5 -0
  16. package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
  17. package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
  18. package/dist/components/chat-ui/index.d.ts +4 -2
  19. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  20. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
  21. package/dist/components/data-table/build-columns.d.ts +13 -2
  22. package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
  23. package/dist/components/data-table/color-cell-style.d.ts +13 -0
  24. package/dist/components/data-table/color-scale-cell.d.ts +7 -0
  25. package/dist/components/data-table/data-table-column-menu.d.ts +15 -0
  26. package/dist/components/data-table/data-table-header.d.ts +10 -0
  27. package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
  28. package/dist/components/data-table/data-table-state.d.ts +27 -0
  29. package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
  30. package/dist/components/data-table/data-table-stats.d.ts +19 -0
  31. package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
  32. package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
  33. package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
  34. package/dist/components/data-table/editable-cells-story.d.ts +9 -0
  35. package/dist/components/data-table/friendly-json-display.d.ts +31 -0
  36. package/dist/components/data-table/index.d.ts +3 -1
  37. package/dist/components/data-table/json-cell.d.ts +6 -0
  38. package/dist/components/data-table/pagination-footer.d.ts +4 -1
  39. package/dist/components/data-table/selection-toolbar.d.ts +3 -1
  40. package/dist/components/data-table/types.d.ts +72 -0
  41. package/dist/components/diff-viewer/code-editor.d.ts +2 -0
  42. package/dist/components/diff-viewer/index.d.ts +1 -1
  43. package/dist/components/diff-viewer/monaco-browser.d.ts +1 -0
  44. package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
  45. package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
  46. package/dist/components/kanban-renderer/index.d.ts +19 -0
  47. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
  48. package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
  49. package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
  50. package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
  51. package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +15 -14
  52. package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +4 -3
  53. package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
  54. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
  55. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
  56. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
  57. package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
  58. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
  59. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
  60. package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
  61. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
  62. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
  63. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
  64. package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +11 -8
  65. package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -8
  66. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
  67. package/dist/components/layout/index.d.ts +1 -0
  68. package/dist/components/layout/panel-header.constants.d.ts +2 -0
  69. package/dist/components/layout/resizable-split-layout.d.ts +3 -2
  70. package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
  71. package/dist/components/layout/resizable-split-layout.handle.d.ts +6 -2
  72. package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
  73. package/dist/components/list-row/list-row-actions.d.ts +1 -0
  74. package/dist/components/list-row/list-row-content.d.ts +7 -0
  75. package/dist/components/list-row/list-row.types.d.ts +4 -1
  76. package/dist/components/overlays/attached-menu.d.ts +6 -0
  77. package/dist/components/overlays/attachment-chip.d.ts +13 -0
  78. package/dist/components/overlays/index.d.ts +6 -2
  79. package/dist/components/overlays/resource-context-menu.d.ts +13 -1
  80. package/dist/components/overlays/searchable-menu-input.d.ts +9 -0
  81. package/dist/components/param-editor/index.d.ts +6 -2
  82. package/dist/components/param-editor/inputs/action-input.d.ts +1 -0
  83. package/dist/components/param-editor/inputs/boolean-input.d.ts +13 -0
  84. package/dist/components/param-editor/inputs/color-input.d.ts +1 -0
  85. package/dist/components/param-editor/inputs/date-input.d.ts +1 -0
  86. package/dist/components/param-editor/inputs/file-upload-input.d.ts +15 -0
  87. package/dist/components/param-editor/inputs/file-upload-value.d.ts +7 -0
  88. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +1 -0
  89. package/dist/components/param-editor/inputs/markdown-input.d.ts +13 -0
  90. package/dist/components/param-editor/inputs/number-input.d.ts +1 -0
  91. package/dist/components/param-editor/inputs/range-input.d.ts +1 -0
  92. package/dist/components/param-editor/inputs/resource-input.d.ts +2 -0
  93. package/dist/components/param-editor/inputs/segmented-input.d.ts +1 -0
  94. package/dist/components/param-editor/inputs/selection-input.d.ts +7 -6
  95. package/dist/components/param-editor/inputs/selection-menu.d.ts +33 -0
  96. package/dist/components/param-editor/inputs/text-input.d.ts +1 -0
  97. package/dist/components/param-editor/param-editor-advanced-field.d.ts +14 -0
  98. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +24 -0
  99. package/dist/components/param-editor/param-editor-field.d.ts +2 -0
  100. package/dist/components/param-editor/param-editor-horizontal.d.ts +3 -2
  101. package/dist/components/param-editor/param-editor-label.d.ts +1 -0
  102. package/dist/components/param-editor/param-editor-presentation.d.ts +3 -0
  103. package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
  104. package/dist/components/param-editor/param-editor-section.d.ts +1 -0
  105. package/dist/components/param-editor/param-editor.d.ts +1 -0
  106. package/dist/components/param-editor/param-editor.types.d.ts +59 -18
  107. package/dist/components/param-editor/resolve-param-value.d.ts +2 -0
  108. package/dist/components/primitives/chip.d.ts +4 -0
  109. package/dist/components/primitives/index.d.ts +2 -0
  110. package/dist/components/primitives/resource-badge.d.ts +12 -10
  111. package/dist/components/rich-text/index.d.ts +1 -0
  112. package/dist/components/rich-text/lazy-markdown-editor.d.ts +2 -0
  113. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
  114. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
  115. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
  116. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
  117. package/dist/components/rich-text/types.d.ts +1 -1
  118. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  119. package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
  120. package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
  121. package/dist/components/sidenav/sidenav.d.ts +2 -0
  122. package/dist/components/sidenav/sidenav.store.d.ts +49 -0
  123. package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +5 -5
  124. package/dist/components/tab-strip/tab-visibility-filter.d.ts +1 -0
  125. package/dist/components/terminal/terminal.d.ts +11 -0
  126. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -1
  127. package/dist/components/tree-list/tree-list.d.ts +1 -1
  128. package/dist/components/tree-list/tree-list.types.d.ts +4 -0
  129. package/dist/data-table.js +1321 -0
  130. package/dist/data-table.js.map +1 -0
  131. package/dist/diff.js +370 -366
  132. package/dist/diff.js.map +1 -1
  133. package/dist/font/css/prompt-studio-icons.css +690 -0
  134. package/dist/font/prompt-studio-icons.eot +0 -0
  135. package/dist/font/prompt-studio-icons.svg +1 -0
  136. package/dist/font/prompt-studio-icons.ttf +0 -0
  137. package/dist/font/prompt-studio-icons.woff +0 -0
  138. package/dist/font/prompt-studio-icons.woff2 +0 -0
  139. package/dist/index.d.ts +3 -3
  140. package/dist/index.js +1854 -3381
  141. package/dist/index.js.map +1 -1
  142. package/dist/kanban-renderer-toolbar-Db1mIWWd.js +1318 -0
  143. package/dist/kanban-renderer-toolbar-Db1mIWWd.js.map +1 -0
  144. package/dist/kanban-renderer.js +1101 -0
  145. package/dist/kanban-renderer.js.map +1 -0
  146. package/dist/lazy-markdown-editor-DwhqQ-NN.js +26 -0
  147. package/dist/lazy-markdown-editor-DwhqQ-NN.js.map +1 -0
  148. package/dist/list-row-BYWwcbGK.js +823 -0
  149. package/dist/list-row-BYWwcbGK.js.map +1 -0
  150. package/dist/markdown-DDd2ESoH.js +743 -0
  151. package/dist/markdown-DDd2ESoH.js.map +1 -0
  152. package/dist/markdown-editor-CYVkzt8t.js +741 -0
  153. package/dist/markdown-editor-CYVkzt8t.js.map +1 -0
  154. package/dist/monaco-browser-CO0NxK_Z.js +19 -0
  155. package/dist/monaco-browser-CO0NxK_Z.js.map +1 -0
  156. package/dist/param-editor-BCZOw5Gt.js +140 -0
  157. package/dist/param-editor-BCZOw5Gt.js.map +1 -0
  158. package/dist/param-editor-field-ZzZwgjZ_.js +2094 -0
  159. package/dist/param-editor-field-ZzZwgjZ_.js.map +1 -0
  160. package/dist/resource-badge-CuItchgL.js +98 -0
  161. package/dist/resource-badge-CuItchgL.js.map +1 -0
  162. package/dist/rich-message--eRzjWYK.js +730 -0
  163. package/dist/rich-message--eRzjWYK.js.map +1 -0
  164. package/dist/rich-text.js +114 -827
  165. package/dist/rich-text.js.map +1 -1
  166. package/dist/style.css +1 -1
  167. package/dist/terminal.js +197 -177
  168. package/dist/terminal.js.map +1 -1
  169. package/dist/theme/primitives/fonts.d.ts +3 -0
  170. package/dist/theme/primitives/sizes.d.ts +23 -0
  171. package/dist/theme/recipes/badge.d.ts +8 -0
  172. package/dist/theme/recipes/button.d.ts +6 -0
  173. package/dist/theme/recipes/color-picker.d.ts +18 -1
  174. package/dist/theme/recipes/switch.d.ts +17 -0
  175. package/dist/theme/recipes/tabs.d.ts +4 -4
  176. package/dist/theme/tokens/colors.d.ts +18 -24
  177. package/dist/{theme-CJBYBJaA.js → theme-poQlUgt0.js} +414 -240
  178. package/dist/theme-poQlUgt0.js.map +1 -0
  179. package/dist/theme.js +1 -1
  180. package/dist/tree-list-BAja2eXU.js +1033 -0
  181. package/dist/tree-list-BAja2eXU.js.map +1 -0
  182. package/package.json +11 -4
  183. package/dist/checkbox-D5AzFRlb.js.map +0 -1
  184. package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
  185. package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
  186. package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
  187. package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
  188. package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
  189. package/dist/components/data-renderer/index.d.ts +0 -18
  190. package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
  191. package/dist/components/param-editor/inputs/file-accept.d.ts +0 -22
  192. package/dist/components/param-editor/inputs/file-drop-input.d.ts +0 -14
  193. package/dist/components/sidebar/sidebar.d.ts +0 -2
  194. package/dist/components/sidebar/sidebar.store.d.ts +0 -49
  195. package/dist/data-renderer.js +0 -1669
  196. package/dist/data-renderer.js.map +0 -1
  197. package/dist/list-row-mi3Hn-Um.js +0 -740
  198. package/dist/list-row-mi3Hn-Um.js.map +0 -1
  199. package/dist/resource-badge-qCWHP-wQ.js +0 -99
  200. package/dist/resource-badge-qCWHP-wQ.js.map +0 -1
  201. package/dist/rich-message-DBf_5YlW.js +0 -1450
  202. package/dist/rich-message-DBf_5YlW.js.map +0 -1
  203. package/dist/theme-CJBYBJaA.js.map +0 -1
  204. package/dist/tree-list-CcuZMLS5.js +0 -930
  205. package/dist/tree-list-CcuZMLS5.js.map +0 -1
  206. package/dist/workspace-badge-Fuo-1zPj.js +0 -314
  207. package/dist/workspace-badge-Fuo-1zPj.js.map +0 -1
  208. /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
  209. /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
  210. /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
@@ -51,13 +51,13 @@ export interface AttributeDescriptor {
51
51
  displayable?: boolean;
52
52
  editable?: boolean;
53
53
  display?: AttributeDisplayDescriptor;
54
- render?: (value: unknown, row: DataRendererRow) => ReactNode;
54
+ render?: (value: unknown, row: KanbanRendererRow) => ReactNode;
55
55
  compare?: (a: unknown, b: unknown) => number;
56
56
  }
57
57
  /**
58
58
  * Reactive source for an entire attribute schema. Mirrors React's
59
59
  * useSyncExternalStore contract so consumers (e.g. the workbench's
60
- * data-renderer bridge) can subscribe and re-resolve when the schema changes
60
+ * kanban-renderer bridge) can subscribe and re-resolve when the schema changes
61
61
  * — letting a contribution add/remove/edit attributes at runtime without
62
62
  * re-registering.
63
63
  */
@@ -66,7 +66,7 @@ export interface AttributesSource {
66
66
  getSnapshot: () => AttributeDescriptor[];
67
67
  }
68
68
  export declare const isAttributesSource: (attributes: AttributeDescriptor[] | AttributesSource) => attributes is AttributesSource;
69
- export interface DataRendererRow {
69
+ export interface KanbanRendererRow {
70
70
  id: string;
71
71
  title: string;
72
72
  /**
@@ -77,19 +77,62 @@ export interface DataRendererRow {
77
77
  resource?: unknown;
78
78
  attributes: Record<string, unknown>;
79
79
  }
80
- export interface DataRendererOrdering {
80
+ export interface KanbanRendererOrdering {
81
81
  attributeId: string | typeof MANUAL_ORDERING;
82
82
  direction: SortDirection;
83
83
  }
84
- export interface DataRendererSettings {
84
+ export interface KanbanRendererSettings {
85
85
  viewMode: ViewMode;
86
86
  columnGrouping: string | typeof NO_GROUPING;
87
87
  rowGrouping: string | typeof NO_GROUPING;
88
- ordering: DataRendererOrdering;
88
+ ordering: KanbanRendererOrdering;
89
89
  displayProperties: string[];
90
90
  }
91
- export type DataRendererFilterState = Record<string, string[]>;
92
- export declare const DEFAULT_DATA_RENDERER_SETTINGS: DataRendererSettings;
91
+ export type KanbanRendererFilterState = Record<string, string[]>;
92
+ export interface KanbanRendererSavedView {
93
+ id: string;
94
+ title: string;
95
+ settings: KanbanRendererSettings;
96
+ filters: KanbanRendererFilterState;
97
+ isDefault?: boolean;
98
+ }
99
+ export type KanbanRendererCreateFieldType = "text" | "longtext" | "markdown" | "number" | "boolean" | "select" | "multi-select" | "files";
100
+ export interface KanbanRendererCreateField {
101
+ id: string;
102
+ label: string;
103
+ description?: string;
104
+ placeholder?: string;
105
+ type: KanbanRendererCreateFieldType;
106
+ required?: boolean;
107
+ defaultValue?: unknown;
108
+ options?: EnumOption[];
109
+ /** `files` fields only. */
110
+ multiple?: boolean;
111
+ accept?: string;
112
+ }
113
+ /** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */
114
+ export interface KanbanRendererCreateLabels {
115
+ cancel: string;
116
+ properties: string;
117
+ submitError: string;
118
+ removeFile: string;
119
+ }
120
+ export interface KanbanRendererCreateRowConfig {
121
+ title: string;
122
+ submitLabel: string;
123
+ fields: KanbanRendererCreateField[];
124
+ labels: KanbanRendererCreateLabels;
125
+ }
126
+ export interface KanbanRendererCreateSubmission {
127
+ columnId: string;
128
+ columnAttributeId?: string;
129
+ /** Declared field values, excluding `files` fields — those arrive as `files`. */
130
+ values: Record<string, unknown>;
131
+ /** Every editable attribute the user set, keyed by attribute id. */
132
+ attributeValues: Record<string, unknown>;
133
+ files: File[];
134
+ }
135
+ export declare const DEFAULT_KANBAN_RENDERER_SETTINGS: KanbanRendererSettings;
93
136
  /**
94
137
  * Look up an attribute by id from a contribution-provided descriptor list.
95
138
  * Returns undefined for sentinels ("none", "manual") or unknown ids.
@@ -0,0 +1,78 @@
1
+ import { KanbanRendererFilterState, KanbanRendererSavedView, KanbanRendererSettings } from './types';
2
+ interface KanbanRendererSnapshot {
3
+ settings: KanbanRendererSettings;
4
+ filters: KanbanRendererFilterState;
5
+ expandedGroups: Record<string, boolean>;
6
+ views: KanbanRendererSavedView[];
7
+ activeViewId: string;
8
+ }
9
+ interface KanbanRendererStoreInitialState {
10
+ settings?: Partial<KanbanRendererSettings>;
11
+ filters?: KanbanRendererFilterState;
12
+ expandedGroups?: Record<string, boolean>;
13
+ views?: KanbanRendererSavedView[];
14
+ activeViewId?: string;
15
+ }
16
+ interface KanbanRendererState extends KanbanRendererSnapshot {
17
+ setViewMode: (viewMode: KanbanRendererSettings["viewMode"]) => void;
18
+ setColumnGrouping: (columnGrouping: KanbanRendererSettings["columnGrouping"]) => void;
19
+ setRowGrouping: (rowGrouping: KanbanRendererSettings["rowGrouping"]) => void;
20
+ setOrdering: (ordering: KanbanRendererSettings["ordering"]) => void;
21
+ setOrderingAttributeId: (attributeId: KanbanRendererSettings["ordering"]["attributeId"]) => void;
22
+ setDisplayProperties: (displayProperties: string[]) => void;
23
+ toggleSortDirection: () => void;
24
+ toggleDisplayProperty: (property: string) => void;
25
+ setFilter: (attributeId: string, values: string[]) => void;
26
+ toggleFilterValue: (attributeId: string, value: string) => void;
27
+ clearFilter: (attributeId: string) => void;
28
+ clearAllFilters: () => void;
29
+ setExpandedGroup: (groupId: string, isExpanded: boolean) => void;
30
+ activateView: (viewId: string) => void;
31
+ createView: (view: {
32
+ id: string;
33
+ title: string;
34
+ }) => void;
35
+ saveActiveView: () => void;
36
+ resetActiveView: () => void;
37
+ renameView: (viewId: string, title: string) => void;
38
+ duplicateView: (viewId: string, duplicate: {
39
+ id: string;
40
+ title: string;
41
+ }) => void;
42
+ deleteView: (viewId: string) => void;
43
+ setDefaultView: (viewId: string) => void;
44
+ reset: () => void;
45
+ }
46
+ interface CreateKanbanRendererStoreOptions {
47
+ storageKey: string;
48
+ initialState?: KanbanRendererStoreInitialState;
49
+ }
50
+ export declare const createKanbanRendererStore: (options: CreateKanbanRendererStoreOptions) => Omit<import('zustand').StoreApi<KanbanRendererState>, "setState" | "persist"> & {
51
+ setState(partial: KanbanRendererState | Partial<KanbanRendererState> | ((state: KanbanRendererState) => KanbanRendererState | Partial<KanbanRendererState>), replace?: false | undefined): unknown;
52
+ setState(state: KanbanRendererState | ((state: KanbanRendererState) => KanbanRendererState), replace: true): unknown;
53
+ persist: {
54
+ setOptions: (options: Partial<import('zustand/middleware').PersistOptions<KanbanRendererState, unknown, unknown>>) => void;
55
+ clearStorage: () => void;
56
+ rehydrate: () => Promise<void> | void;
57
+ hasHydrated: () => boolean;
58
+ onHydrate: (fn: (state: KanbanRendererState) => void) => () => void;
59
+ onFinishHydration: (fn: (state: KanbanRendererState) => void) => () => void;
60
+ getOptions: () => Partial<import('zustand/middleware').PersistOptions<KanbanRendererState, unknown, unknown>>;
61
+ };
62
+ };
63
+ export declare const getKanbanRendererStore: (storageKey: string, initialState?: KanbanRendererStoreInitialState) => Omit<import('zustand').StoreApi<KanbanRendererState>, "setState" | "persist"> & {
64
+ setState(partial: KanbanRendererState | Partial<KanbanRendererState> | ((state: KanbanRendererState) => KanbanRendererState | Partial<KanbanRendererState>), replace?: false | undefined): unknown;
65
+ setState(state: KanbanRendererState | ((state: KanbanRendererState) => KanbanRendererState), replace: true): unknown;
66
+ persist: {
67
+ setOptions: (options: Partial<import('zustand/middleware').PersistOptions<KanbanRendererState, unknown, unknown>>) => void;
68
+ clearStorage: () => void;
69
+ rehydrate: () => Promise<void> | void;
70
+ hasHydrated: () => boolean;
71
+ onHydrate: (fn: (state: KanbanRendererState) => void) => () => void;
72
+ onFinishHydration: (fn: (state: KanbanRendererState) => void) => () => void;
73
+ getOptions: () => Partial<import('zustand/middleware').PersistOptions<KanbanRendererState, unknown, unknown>>;
74
+ };
75
+ };
76
+ export declare const useKanbanRendererStore: <T>(storageKey: string, selector: (state: KanbanRendererState) => T, initialState?: KanbanRendererStoreInitialState) => T;
77
+ export declare const isActiveKanbanRendererViewDirty: (state: Pick<KanbanRendererState, "activeViewId" | "filters" | "settings" | "views">) => boolean;
78
+ export type { KanbanRendererSnapshot, KanbanRendererState, KanbanRendererStoreInitialState };
@@ -3,4 +3,5 @@ export { Header } from './header';
3
3
  export { HorizontalMenuStack } from './horizontal-menu-stack';
4
4
  export type { ItemSectionProps } from './item-section';
5
5
  export { ItemSection } from './item-section';
6
+ export { PANEL_HEADER_CONTROL_SIZE, PANEL_HEADER_HEIGHT, PANEL_HEADER_TAB_SIZE, } from './panel-header.constants';
6
7
  export { ResizableSplitLayout } from './resizable-split-layout';
@@ -1 +1,3 @@
1
1
  export declare const PANEL_HEADER_HEIGHT = "2.5rem";
2
+ export declare const PANEL_HEADER_CONTROL_SIZE: "2xs";
3
+ export declare const PANEL_HEADER_TAB_SIZE: "sm";
@@ -1,6 +1,6 @@
1
1
  import { FlexProps } from '@chakra-ui/react';
2
2
  import { ReactNode } from 'react';
3
- import { ResizableSplitSide } from './resizable-split-layout.handle';
3
+ import { ResizableSplitSide } from './resizable-split-layout.geometry';
4
4
  interface ResizableSplitLayoutProps extends Omit<FlexProps, "children" | "onResize"> {
5
5
  resizablePanel: ReactNode;
6
6
  contentPanel: ReactNode;
@@ -12,8 +12,9 @@ interface ResizableSplitLayoutProps extends Omit<FlexProps, "children" | "onResi
12
12
  collapsed?: boolean;
13
13
  collapsible?: boolean;
14
14
  resizeLabel?: string;
15
+ resizeHandleSizePx?: number;
15
16
  showResizeSeparator?: boolean;
16
- onSizeChange?: (width: number) => void;
17
+ onSizeChange?: (size: number) => void;
17
18
  onCollapsedChange?: (collapsed: boolean) => void;
18
19
  }
19
20
  export declare const ResizableSplitLayout: (props: ResizableSplitLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,56 @@
1
+ export type ResizableSplitSide = "left" | "right" | "top" | "bottom";
2
+ export declare const getResizableSplitAxis: (side: ResizableSplitSide) => {
3
+ readonly rootDirection: "row";
4
+ readonly dimension: "width";
5
+ readonly separatorOrientation: "vertical";
6
+ readonly cursor: "col-resize";
7
+ readonly pointerCoordinate: "clientX";
8
+ readonly deltaDirection: 1;
9
+ readonly panelFirst: true;
10
+ } | {
11
+ readonly rootDirection: "row";
12
+ readonly dimension: "width";
13
+ readonly separatorOrientation: "vertical";
14
+ readonly cursor: "col-resize";
15
+ readonly pointerCoordinate: "clientX";
16
+ readonly deltaDirection: -1;
17
+ readonly panelFirst: false;
18
+ } | {
19
+ readonly rootDirection: "column";
20
+ readonly dimension: "height";
21
+ readonly separatorOrientation: "horizontal";
22
+ readonly cursor: "row-resize";
23
+ readonly pointerCoordinate: "clientY";
24
+ readonly deltaDirection: 1;
25
+ readonly panelFirst: true;
26
+ } | {
27
+ readonly rootDirection: "column";
28
+ readonly dimension: "height";
29
+ readonly separatorOrientation: "horizontal";
30
+ readonly cursor: "row-resize";
31
+ readonly pointerCoordinate: "clientY";
32
+ readonly deltaDirection: -1;
33
+ readonly panelFirst: false;
34
+ };
35
+ export declare const resolveResizableBounds: (input: {
36
+ rootSize: number;
37
+ fallbackRootSize: number;
38
+ minSize: number;
39
+ maxSize?: number;
40
+ contentMinSize: number;
41
+ }) => {
42
+ minSize: number;
43
+ maxSize: number;
44
+ };
45
+ export declare const resolveDraggedPanelSize: (input: {
46
+ side: ResizableSplitSide;
47
+ startSize: number;
48
+ pointerDelta: number;
49
+ minSize: number;
50
+ maxSize: number;
51
+ collapsible: boolean;
52
+ }) => {
53
+ rawSize: number;
54
+ size: number;
55
+ collapsed: boolean;
56
+ };
@@ -1,14 +1,18 @@
1
1
  import { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';
2
- export type ResizableSplitSide = "left" | "right";
2
+ import { getResizableSplitAxis } from './resizable-split-layout.geometry';
3
3
  interface ResizeHandleProps {
4
+ axis: ReturnType<typeof getResizableSplitAxis>;
4
5
  bounds: {
5
6
  minSize: number;
6
7
  maxSize: number;
7
8
  };
9
+ collapsed: boolean;
10
+ collapsible: boolean;
8
11
  contentPanelId: string;
9
12
  resizablePanelId: string;
13
+ resizeHandleSizePx: number;
10
14
  resizeLabel: string;
11
- resolvedPanelWidth: number;
15
+ resolvedPanelSize: number;
12
16
  showResizeSeparator: boolean;
13
17
  onResizeKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => void;
14
18
  onResizeStart: (event: ReactPointerEvent<HTMLDivElement>) => void;
@@ -0,0 +1,25 @@
1
+ import { KeyboardEvent as ReactKeyboardEvent, ReactNode, PointerEvent as ReactPointerEvent, RefObject } from 'react';
2
+ import { getResizableSplitAxis } from './resizable-split-layout.geometry';
3
+ interface ResizableSplitPanelsProps {
4
+ axis: ReturnType<typeof getResizableSplitAxis>;
5
+ bounds: {
6
+ minSize: number;
7
+ maxSize: number;
8
+ };
9
+ collapsed: boolean;
10
+ collapsible: boolean;
11
+ contentPanel: ReactNode;
12
+ contentPanelId: string;
13
+ contentPanelRef: RefObject<HTMLDivElement | null>;
14
+ resizablePanel: ReactNode;
15
+ resizablePanelId: string;
16
+ resizablePanelRef: RefObject<HTMLDivElement | null>;
17
+ resizeHandleSizePx: number;
18
+ resizeLabel: string;
19
+ resolvedPanelSize: number;
20
+ showResizeSeparator: boolean;
21
+ onResizeKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => void;
22
+ onResizeStart: (event: ReactPointerEvent<HTMLDivElement>) => void;
23
+ }
24
+ export declare const ResizableSplitPanels: (props: ResizableSplitPanelsProps) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -5,6 +5,7 @@ interface RowActionsProps {
5
5
  sectionId?: string;
6
6
  nodeId?: string;
7
7
  };
8
+ alwaysVisible?: boolean;
8
9
  }
9
10
  export declare const RowActions: (props: RowActionsProps) => import("react/jsx-runtime").JSX.Element | null;
10
11
  export {};
@@ -1,4 +1,10 @@
1
1
  import { ListRowItem, ListRowProps } from './list-row.types';
2
+ export declare const createResourceRowActions: (item: ListRowItem, showContextMenuTrigger?: boolean) => import('./list-row.types').ListRowAction[] | {
3
+ id: string;
4
+ label: string;
5
+ icon: import("react/jsx-runtime").JSX.Element;
6
+ menuItems: import('./list-row.types').ListRowActionMenuItem[];
7
+ }[];
2
8
  export declare const ListRowContent: (props: {
3
9
  item: ListRowItem;
4
10
  isExpanded: boolean;
@@ -6,4 +12,5 @@ export declare const ListRowContent: (props: {
6
12
  isDisabled: boolean;
7
13
  tone: ListRowProps["tone"];
8
14
  variant: ListRowProps["variant"];
15
+ showContextMenuTrigger: boolean;
9
16
  }) => import("react/jsx-runtime").JSX.Element;
@@ -13,6 +13,7 @@ export interface ListRowActionContext {
13
13
  export interface ListRowActionMenuItem {
14
14
  id: string;
15
15
  label: string;
16
+ commandId?: string;
16
17
  description?: string;
17
18
  icon?: ReactNode | ComponentType<{
18
19
  size?: number | string;
@@ -37,7 +38,7 @@ export interface ListRowAction {
37
38
  menuItems?: ListRowActionMenuItem[];
38
39
  onAction?: (context: ListRowActionContext) => void;
39
40
  }
40
- export type ListRowVariant = "default" | "compact" | "full-width" | "tree" | "empty-state";
41
+ export type ListRowVariant = "default" | "compact" | "collection" | "full-width" | "tree" | "empty-state";
41
42
  export type ListRowTone = "default" | "danger";
42
43
  export type ListRowMenuPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "right" | "right-start" | "right-end" | "left" | "left-start" | "left-end";
43
44
  /** Data model for one reusable row, including labels, icons, menus, actions, and children. */
@@ -80,6 +81,8 @@ export interface ListRowProps extends ListRowItem, Omit<ListRowRootProps, "as" |
80
81
  isExpanded?: boolean;
81
82
  /** Forces the expand affordance when children are lazy-loaded or externally controlled. */
82
83
  showExpandToggle?: boolean;
84
+ /** Shows context-menu actions from an inline trigger in addition to right-click access. */
85
+ showContextMenuTrigger?: boolean;
83
86
  variant?: ListRowVariant;
84
87
  tone?: ListRowTone;
85
88
  selectedBg?: ListRowRootProps["bg"];
@@ -0,0 +1,6 @@
1
+ import { FlexProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ export interface AttachedMenuProps extends Omit<FlexProps, "children"> {
4
+ children?: ReactNode;
5
+ }
6
+ export declare const AttachedMenu: (props: AttachedMenuProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ export interface AttachmentChipProps {
2
+ file: File;
3
+ /** Accessible label for the remove control; the caller owns translation. */
4
+ removeLabel: string;
5
+ disabled?: boolean;
6
+ onRemove: () => void;
7
+ }
8
+ /**
9
+ * A file queued for upload, before the resource it belongs to exists. Removal
10
+ * lives on the chip because there is no other surface between picking a file
11
+ * and submitting where a mistaken attachment can be taken back.
12
+ */
13
+ export declare const AttachmentChip: (props: AttachmentChipProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,11 +1,15 @@
1
+ export type { AttachedMenuProps } from './attached-menu';
2
+ export { AttachedMenu } from './attached-menu';
1
3
  export { AttachedPanel } from './attached-panel';
4
+ export type { AttachmentChipProps } from './attachment-chip';
5
+ export { AttachmentChip } from './attachment-chip';
2
6
  export { BubbleButton } from './bubble-button';
3
7
  export { BubblePanel } from './bubble-panel';
4
8
  export { DeleteConfirmationModal } from './delete-confirmation-modal';
5
9
  export type { RepoPickerDialogEntry, RepoPickerDialogProps } from './repo-picker-dialog';
6
10
  export { RepoPickerDialog } from './repo-picker-dialog';
7
- export type { ResourceContextAction } from './resource-context-menu';
8
- export { ResourceContextMenu } from './resource-context-menu';
11
+ export type { ResourceActionMenuProps, ResourceContextAction } from './resource-context-menu';
12
+ export { ResourceActionMenu, ResourceContextMenu } from './resource-context-menu';
9
13
  export type { SearchModalContentProps } from './search-modal-content';
10
14
  export { SearchModalContent } from './search-modal-content';
11
15
  export type { SearchableMenuItem, SearchableMenuParentList } from './searchable-menu';
@@ -1,9 +1,10 @@
1
1
  import { Menu } from '@chakra-ui/react';
2
- import { ComponentProps, ReactNode } from 'react';
2
+ import { ComponentProps, ReactElement, ReactNode } from 'react';
3
3
  type MenuRootProps = ComponentProps<typeof Menu.Root>;
4
4
  export interface ResourceContextAction {
5
5
  key: string;
6
6
  label: string;
7
+ commandId?: string;
7
8
  onClick: () => Promise<void> | void;
8
9
  isDisabled?: boolean;
9
10
  icon?: ReactNode;
@@ -18,6 +19,17 @@ interface ResourceContextMenuProps {
18
19
  positioning?: MenuRootProps["positioning"];
19
20
  /** Keep the menu open after selecting an item — useful for menus that toggle several entries in one pass. */
20
21
  closeOnSelect?: MenuRootProps["closeOnSelect"];
22
+ /** Preserve the trigger tree while actions load or change. */
23
+ keepMountedWhenEmpty?: boolean;
21
24
  }
25
+ export interface ResourceActionMenuProps {
26
+ actions: ResourceContextAction[];
27
+ children: ReactElement;
28
+ contentMinWidth?: string;
29
+ contentBackground?: string;
30
+ positioning?: MenuRootProps["positioning"];
31
+ closeOnSelect?: MenuRootProps["closeOnSelect"];
32
+ }
33
+ export declare const ResourceActionMenu: (props: ResourceActionMenuProps) => import("react/jsx-runtime").JSX.Element;
22
34
  export declare const ResourceContextMenu: (props: ResourceContextMenuProps) => import("react/jsx-runtime").JSX.Element;
23
35
  export {};
@@ -0,0 +1,9 @@
1
+ import { Ref } from 'react';
2
+ interface SearchableMenuInputProps {
3
+ inputRef?: Ref<HTMLInputElement>;
4
+ value: string;
5
+ placeholder: string;
6
+ onValueChange: (value: string) => void;
7
+ }
8
+ export declare const SearchableMenuInput: (props: SearchableMenuInputProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -1,10 +1,12 @@
1
1
  export { ActionInput } from './inputs/action-input';
2
2
  export { ANCHOR_GRID_VALUES, isAnchorGridValue } from './inputs/anchor-grid';
3
3
  export { AnchorGridInput } from './inputs/anchor-grid-input';
4
+ export { BooleanInput } from './inputs/boolean-input';
4
5
  export { ColorInput } from './inputs/color-input';
5
6
  export { DateInput } from './inputs/date-input';
6
- export { FileDropInput } from './inputs/file-drop-input';
7
+ export { FileUploadInput } from './inputs/file-upload-input';
7
8
  export { HorizontalTextInput } from './inputs/horizontal-text-input';
9
+ export { MarkdownInput } from './inputs/markdown-input';
8
10
  export { NumberInput } from './inputs/number-input';
9
11
  export { RangeInput } from './inputs/range-input';
10
12
  export { ResourceInput } from './inputs/resource-input';
@@ -14,12 +16,14 @@ export { TextInput } from './inputs/text-input';
14
16
  export { VectorInput } from './inputs/vector-input';
15
17
  export type { ParamEditorProps } from './param-editor';
16
18
  export { ParamEditor } from './param-editor';
17
- export type { ActionOption, ActionsParam, AnchorGridParam, AnchorGridValue, BaseParam, ColorParam, DateParam, FileDropParam, FileDropValue, InputGroup, NumberParam, Param, ParamValue, ParamValueMap, PropertyParam, RangeParam, RangeValue, ResourceOption, ResourceParam, ResourceRefValue, SegmentedOption, SegmentedParam, SelectionParam, TextParam, VectorParam, VectorValue, } from './param-editor.types';
19
+ export type { ActionOption, ActionsParam, AnchorGridParam, AnchorGridValue, BaseParam, BooleanParam, ColorParam, DateParam, FileUploadParam, FileUploadStatus, FileUploadValue, InputGroup, MarkdownParam, NumberParam, Param, ParamEditorReadOnlyContent, ParamEditorReadOnlyImage, ParamValue, ParamValueMap, PropertyParam, RangeParam, RangeValue, ReadOnlyParam, ResourceOption, ResourceParam, ResourceRefValue, SegmentedOption, SegmentedParam, SelectionParam, TextParam, VectorParam, VectorValue, } from './param-editor.types';
18
20
  export { ParamEditorControlItem } from './param-editor-control-item';
19
21
  export { ParamEditorControlList } from './param-editor-control-list';
20
22
  export { ParamEditorField } from './param-editor-field';
21
23
  export { ParamEditorFieldLabel } from './param-editor-field-label';
22
24
  export { ParamEditorInlineGroup } from './param-editor-inline-group';
23
25
  export { ParamEditorLabel } from './param-editor-label';
26
+ export { isParamEditorRichControl } from './param-editor-presentation';
27
+ export { ParamEditorReadOnlyField } from './param-editor-read-only-field';
24
28
  export { ParamEditorReadOnlyValue } from './param-editor-read-only-value';
25
29
  export { ParamEditorSection } from './param-editor-section';
@@ -8,6 +8,7 @@ interface ActionInputProps {
8
8
  onChange: (id: string, value: string) => void;
9
9
  readOnly?: boolean;
10
10
  fullWidth?: boolean;
11
+ presentation?: "stacked" | "horizontal";
11
12
  }
12
13
  export declare const ActionInput: (props: ActionInputProps) => import("react/jsx-runtime").JSX.Element;
13
14
  export {};
@@ -0,0 +1,13 @@
1
+ interface BooleanInputProps {
2
+ id: string;
3
+ name: string;
4
+ description?: string;
5
+ defaultValue: boolean;
6
+ onChange: (id: string, value: boolean) => void;
7
+ readOnly?: boolean;
8
+ hideLabel?: boolean;
9
+ fullWidth?: boolean;
10
+ size?: "xs" | "sm";
11
+ }
12
+ export declare const BooleanInput: (props: BooleanInputProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -8,6 +8,7 @@ interface ColorInputProps {
8
8
  hideLabel?: boolean;
9
9
  tooltipPlacement?: "top" | "right" | "bottom" | "left";
10
10
  fullWidth?: boolean;
11
+ size?: "xs" | "sm";
11
12
  }
12
13
  export declare const ColorInput: (props: ColorInputProps) => import("react/jsx-runtime").JSX.Element;
13
14
  export {};
@@ -10,6 +10,7 @@ interface DateInputProps {
10
10
  hideLabel?: boolean;
11
11
  tooltipPlacement?: "top" | "right" | "bottom" | "left";
12
12
  fullWidth?: boolean;
13
+ size?: "xs" | "sm";
13
14
  }
14
15
  export declare const DateInput: (props: DateInputProps) => import("react/jsx-runtime").JSX.Element;
15
16
  export {};
@@ -0,0 +1,15 @@
1
+ import { FileUploadValue } from '../param-editor.types';
2
+ interface FileUploadInputProps {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ defaultValue: FileUploadValue[];
7
+ accept?: string;
8
+ multiple?: boolean;
9
+ uploadLabel?: string;
10
+ onChange: (id: string, value: FileUploadValue[]) => void;
11
+ readOnly?: boolean;
12
+ presentation?: "stacked" | "horizontal";
13
+ }
14
+ export declare const FileUploadInput: (props: FileUploadInputProps) => import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FileUploadValue } from '../param-editor.types';
2
+ export type FileUploadSummaryState = "empty" | "queued" | "uploading" | "complete" | "error";
3
+ export declare const createFileUploadValues: (files: File[], existing: FileUploadValue[], multiple: boolean) => FileUploadValue[];
4
+ export declare const getFileUploadSummary: (values: FileUploadValue[]) => {
5
+ state: FileUploadSummaryState;
6
+ count: number;
7
+ };
@@ -7,6 +7,7 @@ interface HorizontalTextInputProps {
7
7
  readOnly?: boolean;
8
8
  hideLabel?: boolean;
9
9
  tooltipPlacement?: "top" | "right" | "bottom" | "left";
10
+ size?: "xs" | "sm";
10
11
  }
11
12
  export declare const HorizontalTextInput: (props: HorizontalTextInputProps) => import("react/jsx-runtime").JSX.Element;
12
13
  export {};
@@ -0,0 +1,13 @@
1
+ interface MarkdownInputProps {
2
+ id: string;
3
+ name: string;
4
+ description?: string;
5
+ defaultValue: string;
6
+ placeholder?: string;
7
+ onChange: (id: string, value: string) => void;
8
+ readOnly?: boolean;
9
+ presentation?: "stacked" | "horizontal";
10
+ size?: "xs" | "sm";
11
+ }
12
+ export declare const MarkdownInput: (props: MarkdownInputProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -12,6 +12,7 @@ interface NumberInputProps {
12
12
  hideSlider?: boolean;
13
13
  tooltipPlacement?: "top" | "right" | "bottom" | "left";
14
14
  fullWidth?: boolean;
15
+ size?: "xs" | "sm";
15
16
  }
16
17
  export declare const NumberInput: (props: NumberInputProps) => import("react/jsx-runtime").JSX.Element;
17
18
  export {};
@@ -12,6 +12,7 @@ interface RangeInputProps {
12
12
  onChange: (id: string, value: RangeValue) => void;
13
13
  readOnly?: boolean;
14
14
  fullWidth?: boolean;
15
+ presentation?: "stacked" | "horizontal";
15
16
  }
16
17
  export declare const RangeInput: (props: RangeInputProps) => import("react/jsx-runtime").JSX.Element;
17
18
  export {};
@@ -13,6 +13,8 @@ interface ResourceInputProps {
13
13
  placeholder?: string;
14
14
  emptyText?: string;
15
15
  fullWidth?: boolean;
16
+ presentation?: "stacked" | "horizontal";
17
+ size?: "xs" | "sm";
16
18
  }
17
19
  export declare const ResourceInput: (props: ResourceInputProps) => import("react/jsx-runtime").JSX.Element;
18
20
  export {};
@@ -9,6 +9,7 @@ interface SegmentedInputProps {
9
9
  onChange: (id: string, value: string) => void;
10
10
  readOnly?: boolean;
11
11
  fullWidth?: boolean;
12
+ presentation?: "stacked" | "horizontal";
12
13
  }
13
14
  export declare const SegmentedInput: (props: SegmentedInputProps) => import("react/jsx-runtime").JSX.Element;
14
15
  export {};
@@ -1,13 +1,9 @@
1
- interface Option {
2
- id: string;
3
- name: string;
4
- icon?: string;
5
- }
1
+ import { SelectionMenuOption } from './selection-menu';
6
2
  interface SelectionInputProps {
7
3
  id: string;
8
4
  defaultValue: string | string[];
9
5
  name: string;
10
- options: Option[];
6
+ options: SelectionMenuOption[];
11
7
  onChange: (id: string, value: string | string[]) => void;
12
8
  description: string;
13
9
  readOnly?: boolean;
@@ -16,6 +12,11 @@ interface SelectionInputProps {
16
12
  tooltipPlacement?: "top" | "right" | "bottom" | "left";
17
13
  placeholder?: string;
18
14
  fullWidth?: boolean;
15
+ /** Re-picking the selected option clears it. */
16
+ clearable?: boolean;
17
+ /** Inert, but still rendered as a control. */
18
+ disabled?: boolean;
19
+ size?: "xs" | "sm";
19
20
  }
20
21
  export declare const SelectionInput: (props: SelectionInputProps) => import("react/jsx-runtime").JSX.Element;
21
22
  export {};