@pstdio/ui 0.16.0 → 0.17.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 (150) hide show
  1. package/dist/chat-ui.js +1618 -1102
  2. package/dist/chat-ui.js.map +1 -1
  3. package/dist/{checkbox-D5AzFRlb.js → checkbox-B2zYVemL.js} +28 -28
  4. package/dist/checkbox-B2zYVemL.js.map +1 -0
  5. package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
  6. package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
  7. package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
  8. package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
  9. package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
  10. package/dist/components/chat-ui/components/message-types.d.ts +14 -0
  11. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
  12. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
  13. package/dist/components/chat-ui/components/timeline.d.ts +5 -0
  14. package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
  15. package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
  16. package/dist/components/chat-ui/index.d.ts +4 -2
  17. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  18. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
  19. package/dist/components/data-table/build-columns.d.ts +13 -2
  20. package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
  21. package/dist/components/data-table/color-cell-style.d.ts +13 -0
  22. package/dist/components/data-table/color-scale-cell.d.ts +7 -0
  23. package/dist/components/data-table/data-table-column-menu.d.ts +12 -0
  24. package/dist/components/data-table/data-table-header.d.ts +18 -0
  25. package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
  26. package/dist/components/data-table/data-table-state.d.ts +27 -0
  27. package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
  28. package/dist/components/data-table/data-table-stats.d.ts +19 -0
  29. package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
  30. package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
  31. package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
  32. package/dist/components/data-table/friendly-json-display.d.ts +31 -0
  33. package/dist/components/data-table/index.d.ts +3 -1
  34. package/dist/components/data-table/json-cell.d.ts +6 -0
  35. package/dist/components/data-table/pagination-footer.d.ts +4 -1
  36. package/dist/components/data-table/selection-toolbar.d.ts +3 -1
  37. package/dist/components/data-table/types.d.ts +72 -0
  38. package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
  39. package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
  40. package/dist/components/kanban-renderer/index.d.ts +19 -0
  41. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
  42. package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
  43. package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
  44. package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
  45. package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +15 -14
  46. package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +4 -3
  47. package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
  48. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
  49. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
  50. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
  51. package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
  52. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
  53. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
  54. package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
  55. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
  56. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
  57. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
  58. package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +11 -8
  59. package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -8
  60. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
  61. package/dist/components/layout/index.d.ts +1 -0
  62. package/dist/components/layout/panel-header.constants.d.ts +2 -0
  63. package/dist/components/layout/resizable-split-layout.d.ts +3 -2
  64. package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
  65. package/dist/components/layout/resizable-split-layout.handle.d.ts +6 -2
  66. package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
  67. package/dist/components/list-row/list-row-actions.d.ts +1 -0
  68. package/dist/components/list-row/list-row-content.d.ts +7 -0
  69. package/dist/components/list-row/list-row.types.d.ts +4 -1
  70. package/dist/components/overlays/attached-menu.d.ts +6 -0
  71. package/dist/components/overlays/attachment-chip.d.ts +13 -0
  72. package/dist/components/overlays/index.d.ts +6 -2
  73. package/dist/components/overlays/resource-context-menu.d.ts +13 -1
  74. package/dist/components/param-editor/index.d.ts +2 -1
  75. package/dist/components/param-editor/inputs/selection-input.d.ts +6 -6
  76. package/dist/components/param-editor/inputs/selection-menu.d.ts +29 -0
  77. package/dist/components/param-editor/param-editor-horizontal.d.ts +1 -0
  78. package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
  79. package/dist/components/param-editor/param-editor-section.d.ts +1 -0
  80. package/dist/components/param-editor/param-editor.d.ts +1 -0
  81. package/dist/components/param-editor/param-editor.types.d.ts +35 -6
  82. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
  83. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
  84. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
  85. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
  86. package/dist/components/rich-text/types.d.ts +1 -1
  87. package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
  88. package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
  89. package/dist/components/sidenav/sidenav.d.ts +2 -0
  90. package/dist/components/sidenav/sidenav.store.d.ts +49 -0
  91. package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +5 -5
  92. package/dist/components/tab-strip/tab-visibility-filter.d.ts +1 -0
  93. package/dist/components/terminal/terminal.d.ts +11 -0
  94. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -1
  95. package/dist/components/tree-list/tree-list.d.ts +1 -1
  96. package/dist/components/tree-list/tree-list.types.d.ts +4 -0
  97. package/dist/data-table.js +1271 -0
  98. package/dist/data-table.js.map +1 -0
  99. package/dist/diff.js +2 -2
  100. package/dist/index.d.ts +3 -3
  101. package/dist/index.js +1885 -3360
  102. package/dist/index.js.map +1 -1
  103. package/dist/kanban-renderer-toolbar-B9ro-9z1.js +1318 -0
  104. package/dist/kanban-renderer-toolbar-B9ro-9z1.js.map +1 -0
  105. package/dist/kanban-renderer.js +1087 -0
  106. package/dist/kanban-renderer.js.map +1 -0
  107. package/dist/list-row-YRUxEcy3.js +808 -0
  108. package/dist/list-row-YRUxEcy3.js.map +1 -0
  109. package/dist/param-editor-CYZJbmKu.js +933 -0
  110. package/dist/param-editor-CYZJbmKu.js.map +1 -0
  111. package/dist/param-editor-read-only-field-DgtLqcFa.js +925 -0
  112. package/dist/param-editor-read-only-field-DgtLqcFa.js.map +1 -0
  113. package/dist/prism-BXb57lxL.js +125 -0
  114. package/dist/prism-BXb57lxL.js.map +1 -0
  115. package/dist/rich-message-DBf_5YlW.js.map +1 -1
  116. package/dist/style.css +1 -1
  117. package/dist/terminal.js +197 -177
  118. package/dist/terminal.js.map +1 -1
  119. package/dist/theme/primitives/sizes.d.ts +23 -0
  120. package/dist/theme/recipes/button.d.ts +6 -0
  121. package/dist/theme/recipes/tabs.d.ts +4 -4
  122. package/dist/theme/tokens/colors.d.ts +18 -24
  123. package/dist/{theme-CJBYBJaA.js → theme-CNhnbvcE.js} +208 -162
  124. package/dist/theme-CNhnbvcE.js.map +1 -0
  125. package/dist/theme.js +1 -1
  126. package/dist/tree-list-CZHLAURU.js +1033 -0
  127. package/dist/tree-list-CZHLAURU.js.map +1 -0
  128. package/package.json +10 -4
  129. package/dist/checkbox-D5AzFRlb.js.map +0 -1
  130. package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
  131. package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
  132. package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
  133. package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
  134. package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
  135. package/dist/components/data-renderer/index.d.ts +0 -18
  136. package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
  137. package/dist/components/sidebar/sidebar.d.ts +0 -2
  138. package/dist/components/sidebar/sidebar.store.d.ts +0 -49
  139. package/dist/data-renderer.js +0 -1669
  140. package/dist/data-renderer.js.map +0 -1
  141. package/dist/list-row-mi3Hn-Um.js +0 -740
  142. package/dist/list-row-mi3Hn-Um.js.map +0 -1
  143. package/dist/theme-CJBYBJaA.js.map +0 -1
  144. package/dist/tree-list-CcuZMLS5.js +0 -930
  145. package/dist/tree-list-CcuZMLS5.js.map +0 -1
  146. package/dist/workspace-badge-Fuo-1zPj.js +0 -314
  147. package/dist/workspace-badge-Fuo-1zPj.js.map +0 -1
  148. /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
  149. /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
  150. /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
@@ -5,11 +5,80 @@ export type DisplayValue = {
5
5
  display: ReactNode;
6
6
  sortValue?: unknown;
7
7
  };
8
+ export interface DataTableThemeColor {
9
+ light: string;
10
+ dark: string;
11
+ foreground?: {
12
+ light: string;
13
+ dark: string;
14
+ };
15
+ }
16
+ export interface DataTableColorScaleStop {
17
+ value: number;
18
+ color: DataTableThemeColor;
19
+ }
20
+ export type DataTableCategoricalValue = string | number | boolean | null;
21
+ export interface DataTableCategoricalColor {
22
+ value: DataTableCategoricalValue;
23
+ color: DataTableThemeColor;
24
+ }
25
+ export type DataTableColumnRenderer = {
26
+ type: "json";
27
+ } | {
28
+ type: "color-scale";
29
+ stops: DataTableColorScaleStop[];
30
+ } | {
31
+ type: "categorical-color";
32
+ categories: DataTableCategoricalColor[];
33
+ };
34
+ export type DataTableColumnStat = {
35
+ type: "unique";
36
+ } | {
37
+ type: "histogram";
38
+ bins?: number;
39
+ } | {
40
+ type: "top-values";
41
+ limit?: number;
42
+ };
43
+ export interface DataTableSelectionAction {
44
+ label: string;
45
+ icon?: ReactNode;
46
+ destructive?: boolean;
47
+ onSelect: (rows: RowData[]) => void;
48
+ }
49
+ export interface DataTableRowAction {
50
+ label: string;
51
+ icon?: ReactNode;
52
+ destructive?: boolean;
53
+ onSelect: (row: RowData) => void;
54
+ }
55
+ export interface DataTableCellContext {
56
+ row: RowData;
57
+ rowId: string;
58
+ columnId: string;
59
+ value: unknown;
60
+ }
61
+ export interface DataTableCellContextAction {
62
+ label: string;
63
+ icon?: ReactNode;
64
+ destructive?: boolean;
65
+ onSelect: (context: DataTableCellContext) => void;
66
+ }
8
67
  export interface DataTableProps {
9
68
  data: RowData[];
10
69
  isReadOnly?: boolean;
11
70
  noBorder?: boolean;
12
71
  fullWidth?: boolean;
72
+ initialPageSize?: number;
73
+ pageSizeOptions?: number[];
74
+ selectionMode?: "none" | "multiple";
75
+ selectionActions?: DataTableSelectionAction[];
76
+ rowActions?: DataTableRowAction[];
77
+ compactHeaders?: Partial<Record<string, string>>;
78
+ getRowId?: (row: RowData, index: number) => string;
79
+ toolbarStorageKey?: string;
80
+ enableRowActivation?: boolean;
81
+ getCellContextMenuActions?: (context: DataTableCellContext) => DataTableCellContextAction[];
13
82
  onCSVUpload?: (csv: string) => Promise<void>;
14
83
  onCSVDownload?: (scenarios: string[]) => void;
15
84
  hiddenColumns?: string[];
@@ -17,4 +86,7 @@ export interface DataTableProps {
17
86
  isRowInteractive?: (row: RowData) => boolean;
18
87
  activeRowId?: string | null;
19
88
  columnIcons?: Partial<Record<string, ReactNode>>;
89
+ columnDescriptions?: Partial<Record<string, string>>;
90
+ columnStats?: Partial<Record<string, DataTableColumnStat>>;
91
+ columnRenderers?: Partial<Record<string, DataTableColumnRenderer>>;
20
92
  }
@@ -1,11 +1,11 @@
1
- import { MenuOption } from './data-renderer-helpers';
2
- import { DataRendererSettings } from './types';
1
+ import { MenuOption } from './kanban-renderer-helpers';
2
+ import { KanbanRendererSettings } from './types';
3
3
  interface DisplayMenuProps {
4
- settings: DataRendererSettings;
4
+ settings: KanbanRendererSettings;
5
5
  groupingOptions: MenuOption[];
6
6
  orderingOptions: MenuOption[];
7
7
  displayPropertyOptions: MenuOption[];
8
- onViewModeChange: (value: DataRendererSettings["viewMode"]) => void;
8
+ onViewModeChange: (value: KanbanRendererSettings["viewMode"]) => void;
9
9
  onColumnGroupingChange: (value: string) => void;
10
10
  onRowGroupingChange: (value: string) => void;
11
11
  onOrderingAttributeIdChange: (value: string) => void;
@@ -1,8 +1,8 @@
1
- import { FilterCategoryView } from './data-renderer-helpers';
2
- import { DataRendererFilterState } from './types';
1
+ import { FilterCategoryView } from './kanban-renderer-helpers';
2
+ import { KanbanRendererFilterState } from './types';
3
3
  interface FilterMenuProps {
4
4
  categories: FilterCategoryView[];
5
- filters: DataRendererFilterState;
5
+ filters: KanbanRendererFilterState;
6
6
  countsByCategory: Record<string, Record<string, number>>;
7
7
  onToggleFilterValue: (attributeId: string, value: string) => void;
8
8
  onClearFilter: (attributeId: string) => void;
@@ -0,0 +1,19 @@
1
+ export { DisplayMenu } from './display-menu';
2
+ export { FilterMenu } from './filter-menu';
3
+ export type { BoardColumnConfig, KanbanRendererProps } from './kanban-renderer';
4
+ export { KanbanRenderer } from './kanban-renderer';
5
+ export type { KanbanRendererBoardColumn, KanbanRendererBoardColumnAction, KanbanRendererBoardItem, } from './kanban-renderer-board';
6
+ export { KanbanRendererBoard } from './kanban-renderer-board';
7
+ export type { KanbanRendererCardProps } from './kanban-renderer-card';
8
+ export { KanbanRendererCard } from './kanban-renderer-card';
9
+ export { KanbanRendererCreateDialog } from './kanban-renderer-create-dialog';
10
+ export type { AttributeBadge, FilterCategoryView, MenuOption } from './kanban-renderer-helpers';
11
+ export { buildDisplayPropertyOptions, buildFilterCategories, buildGroupingOptions, buildOrderingOptions, collectDisplayBadges, getAttributeStringValues, getAttributeValue, getEnumOptions, renderAttributeBadge, sanitizeFilters, sanitizeSettings, } from './kanban-renderer-helpers';
12
+ export type { KanbanRendererListItem } from './kanban-renderer-list';
13
+ export { KanbanRendererList } from './kanban-renderer-list';
14
+ export type { KanbanRendererToolbarProps } from './kanban-renderer-toolbar';
15
+ export { KanbanRendererToolbar } from './kanban-renderer-toolbar';
16
+ export type { AttributeDescriptor, AttributeDisplayDescriptor, AttributeKind, AttributesSource, AttributeType, EnumOption, EnumOptions, EnumOptionsSource, KanbanRendererCreateField, KanbanRendererCreateFieldType, KanbanRendererCreateRowConfig, KanbanRendererCreateSubmission, KanbanRendererFilterState, KanbanRendererOrdering, KanbanRendererRow, KanbanRendererSavedView, KanbanRendererSettings, SortDirection, ViewMode, } from './types';
17
+ export { findAttribute, isAttributesSource, isEnumOptionsSource, MANUAL_ORDERING, NO_GROUPING, } from './types';
18
+ export { isActiveKanbanRendererViewDirty, useKanbanRendererStore } from './use-kanban-renderer-store';
19
+ export { resolveAttributeOptions, useResolvedAttributes } from './use-resolved-attributes';
@@ -0,0 +1,7 @@
1
+ import { AttributeBadge } from './kanban-renderer-helpers';
2
+ interface KanbanRendererAttributeBadgeProps {
3
+ badge: AttributeBadge;
4
+ onChange?: (attributeId: string, value: unknown) => void;
5
+ }
6
+ export declare const KanbanRendererAttributeBadge: (props: KanbanRendererAttributeBadgeProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -1,6 +1,6 @@
1
- import { DataRendererBoardColumn } from './data-renderer-board';
1
+ import { KanbanRendererBoardColumn } from './kanban-renderer-board';
2
2
  interface ColumnHeaderProps {
3
- column: DataRendererBoardColumn;
3
+ column: KanbanRendererBoardColumn;
4
4
  onCreateStart?: (columnId: string) => void;
5
5
  onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
6
6
  }
@@ -1,8 +1,8 @@
1
1
  import { DragEvent } from 'react';
2
- import { DataRendererBoardGroup } from './data-renderer-board';
2
+ import { KanbanRendererBoardGroup } from './kanban-renderer-board';
3
3
  interface GroupSectionProps {
4
4
  columnId: string;
5
- group: DataRendererBoardGroup;
5
+ group: KanbanRendererBoardGroup;
6
6
  selectedItemId: string | null;
7
7
  canDragIn: boolean;
8
8
  canDragOut: boolean;
@@ -1,6 +1,6 @@
1
- import { DataRendererSettings } from './types';
1
+ import { KanbanRendererSettings } from './types';
2
2
  interface ApplyBoardMoveItemInput {
3
- settings: Pick<DataRendererSettings, "columnGrouping" | "ordering" | "rowGrouping">;
3
+ settings: Pick<KanbanRendererSettings, "columnGrouping" | "ordering" | "rowGrouping">;
4
4
  rowId: string;
5
5
  targetColumnId: string;
6
6
  targetGroupKey?: string;
@@ -9,7 +9,7 @@ interface ApplyBoardMoveItemInput {
9
9
  onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
10
10
  }
11
11
  interface ApplyBoardMoveToGroupInput {
12
- settings: Pick<DataRendererSettings, "ordering" | "rowGrouping">;
12
+ settings: Pick<KanbanRendererSettings, "ordering" | "rowGrouping">;
13
13
  rowId: string;
14
14
  targetGroupKey: string;
15
15
  beforeItemId?: string;
@@ -1,38 +1,39 @@
1
1
  import { ComponentProps, ComponentType } from 'react';
2
2
  import { ResourceContextAction } from '../overlays/resource-context-menu';
3
- import { DataRendererCard } from './data-renderer-card';
4
- type DataRendererCardProps = ComponentProps<typeof DataRendererCard>;
5
- export interface DataRendererBoardItem {
3
+ import { KanbanRendererCard } from './kanban-renderer-card';
4
+ type KanbanRendererCardProps = ComponentProps<typeof KanbanRendererCard>;
5
+ export interface KanbanRendererBoardItem {
6
6
  id: string;
7
- cardProps: Omit<DataRendererCardProps, "draggable" | "onDragStart" | "onDragEnd" | "isSelected">;
7
+ cardProps: Omit<KanbanRendererCardProps, "draggable" | "onDragStart" | "onDragEnd" | "isSelected">;
8
8
  contextMenuActions?: ResourceContextAction[];
9
9
  }
10
- export interface DataRendererBoardColumnAction {
10
+ export interface KanbanRendererBoardColumnAction {
11
11
  id: string;
12
12
  label: string;
13
13
  icon: ComponentType<{
14
14
  size?: number | string;
15
15
  }>;
16
16
  }
17
- export interface DataRendererBoardGroup {
17
+ export interface KanbanRendererBoardGroup {
18
18
  key: string;
19
19
  label: string;
20
- items: DataRendererBoardItem[];
20
+ items: KanbanRendererBoardItem[];
21
21
  }
22
- export interface DataRendererBoardColumn {
22
+ export interface KanbanRendererBoardColumn {
23
23
  id: string;
24
24
  label: string;
25
25
  createLabel?: string;
26
26
  color?: string;
27
- items: DataRendererBoardItem[];
28
- groups?: DataRendererBoardGroup[];
27
+ icon?: string | null;
28
+ items: KanbanRendererBoardItem[];
29
+ groups?: KanbanRendererBoardGroup[];
29
30
  canDragIn: boolean;
30
31
  canDragOut: boolean;
31
32
  canCreate: boolean;
32
- actions: DataRendererBoardColumnAction[];
33
+ actions: KanbanRendererBoardColumnAction[];
33
34
  }
34
- interface DataRendererBoardProps {
35
- columns: DataRendererBoardColumn[];
35
+ interface KanbanRendererBoardProps {
36
+ columns: KanbanRendererBoardColumn[];
36
37
  selectedItemId?: string | null;
37
38
  onMoveItem?: (itemId: string, targetColumnId: string, context?: {
38
39
  beforeItemId?: string;
@@ -44,5 +45,5 @@ interface DataRendererBoardProps {
44
45
  onCreateStart?: (columnId: string) => void;
45
46
  onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
46
47
  }
47
- export declare const DataRendererBoard: (props: DataRendererBoardProps) => import("react/jsx-runtime").JSX.Element;
48
+ export declare const KanbanRendererBoard: (props: KanbanRendererBoardProps) => import("react/jsx-runtime").JSX.Element;
48
49
  export {};
@@ -1,7 +1,8 @@
1
1
  import { DragEventHandler, ReactNode } from 'react';
2
2
  import { WorkspaceBadgeProps } from '../primitives/workspace-badge';
3
- import { AttributeBadge } from './data-renderer-helpers';
4
- export interface DataRendererCardProps {
3
+ import { AttributeBadge } from './kanban-renderer-helpers';
4
+ export interface KanbanRendererCardProps {
5
+ eyebrow?: string;
5
6
  title: string;
6
7
  badges?: AttributeBadge[];
7
8
  customSlots?: ReactNode[];
@@ -13,4 +14,4 @@ export interface DataRendererCardProps {
13
14
  onDragEnd?: DragEventHandler<HTMLDivElement>;
14
15
  onClick?: () => void;
15
16
  }
16
- export declare const DataRendererCard: (props: DataRendererCardProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const KanbanRendererCard: (props: KanbanRendererCardProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,11 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
- import { DataRendererBoardColumn } from './data-renderer-board';
3
- import { DataRendererListItem } from './data-renderer-list';
4
- import { DataRendererSettings } from './types';
5
- interface DataRendererContentProps {
6
- viewMode: DataRendererSettings["viewMode"];
7
- boardColumns: DataRendererBoardColumn[];
8
- listItems: DataRendererListItem[];
2
+ import { KanbanRendererBoardColumn } from './kanban-renderer-board';
3
+ import { KanbanRendererListItem } from './kanban-renderer-list';
4
+ import { KanbanRendererSettings } from './types';
5
+ interface KanbanRendererContentProps {
6
+ viewMode: KanbanRendererSettings["viewMode"];
7
+ boardColumns: KanbanRendererBoardColumn[];
8
+ listItems: KanbanRendererListItem[];
9
9
  listExpandedGroups: Record<string, boolean>;
10
10
  selectedRowId: string | null;
11
11
  emptyState?: ReactNode;
@@ -23,5 +23,5 @@ interface DataRendererContentProps {
23
23
  onListExpandedGroupChange: (rowId: string, isExpanded: boolean) => void;
24
24
  listKey: string;
25
25
  }
26
- export declare const DataRendererContent: (props: DataRendererContentProps) => import("react/jsx-runtime").JSX.Element;
26
+ export declare const KanbanRendererContent: (props: KanbanRendererContentProps) => import("react/jsx-runtime").JSX.Element;
27
27
  export {};
@@ -0,0 +1,12 @@
1
+ import { AttributeDescriptor, KanbanRendererCreateRowConfig, KanbanRendererCreateSubmission } from './types';
2
+ interface KanbanRendererCreateDialogProps {
3
+ open: boolean;
4
+ columnId: string;
5
+ columnAttributeId?: string;
6
+ attributes: AttributeDescriptor[];
7
+ config: KanbanRendererCreateRowConfig;
8
+ onClose: () => void;
9
+ onSubmit: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
10
+ }
11
+ export declare const KanbanRendererCreateDialog: (props: KanbanRendererCreateDialogProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,10 @@
1
+ import { KanbanRendererCreateField } from './types';
2
+ interface CreateFieldControlProps {
3
+ disabled: boolean;
4
+ field: KanbanRendererCreateField;
5
+ removeLabel: string;
6
+ value: unknown;
7
+ onChange: (value: unknown) => void;
8
+ }
9
+ export declare const CreateFieldControl: (props: CreateFieldControlProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,23 @@
1
+ import { AttributeDescriptor, KanbanRendererFilterState, KanbanRendererOrdering, KanbanRendererRow } from './types';
2
+ interface GroupingOptions {
3
+ attributes: AttributeDescriptor[];
4
+ columnGrouping: string;
5
+ rowGrouping: string;
6
+ knownColumnKeys?: string[];
7
+ }
8
+ interface KanbanRendererRowGroup {
9
+ key: string;
10
+ label: string;
11
+ rows: KanbanRendererRow[];
12
+ }
13
+ interface KanbanRendererColumnGroup {
14
+ key: string;
15
+ label: string;
16
+ rows: KanbanRendererRow[];
17
+ subgroups: KanbanRendererRowGroup[];
18
+ }
19
+ export declare const orderRows: (rows: KanbanRendererRow[], ordering: KanbanRendererOrdering, attributes: AttributeDescriptor[]) => KanbanRendererRow[];
20
+ export declare const groupRows: (rows: KanbanRendererRow[], options: GroupingOptions) => KanbanRendererColumnGroup[];
21
+ export declare const filterRows: (rows: KanbanRendererRow[], filters: KanbanRendererFilterState, attributes: AttributeDescriptor[]) => KanbanRendererRow[];
22
+ export declare const countFilterValues: (rows: KanbanRendererRow[], attributeId: string, attributes: AttributeDescriptor[]) => Record<string, number>;
23
+ export type { KanbanRendererColumnGroup, KanbanRendererRowGroup };
@@ -1,22 +1,22 @@
1
1
  import { ReactNode } from 'react';
2
- import { AttributeBadge } from './data-renderer-badge-helpers';
3
- import { AttributeDescriptor, DataRendererFilterState, DataRendererRow, DataRendererSettings } from './types';
4
- export type { AttributeBadge } from './data-renderer-badge-helpers';
5
- export { getAttributeBadgeColorPalette } from './data-renderer-badge-helpers';
6
- export { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from './data-renderer-enum-helpers';
2
+ import { AttributeBadge } from './kanban-renderer-badge-helpers';
3
+ import { AttributeDescriptor, KanbanRendererFilterState, KanbanRendererRow, KanbanRendererSettings } from './types';
4
+ export type { AttributeBadge } from './kanban-renderer-badge-helpers';
5
+ export { getAttributeBadgeColorPalette } from './kanban-renderer-badge-helpers';
6
+ export { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from './kanban-renderer-enum-helpers';
7
7
  /**
8
8
  * Read a typed attribute value out of a row. enum-multi normalizes to an array;
9
9
  * single-valued kinds normalize to undefined when missing.
10
10
  */
11
- export declare const getAttributeValue: (row: DataRendererRow, descriptor: AttributeDescriptor) => unknown;
12
- export declare const getAttributeStringValues: (row: DataRendererRow, descriptor: AttributeDescriptor) => string[];
11
+ export declare const getAttributeValue: (row: KanbanRendererRow, descriptor: AttributeDescriptor) => unknown;
12
+ export declare const getAttributeStringValues: (row: KanbanRendererRow, descriptor: AttributeDescriptor) => string[];
13
13
  /**
14
14
  * Per-type default cell summary used by the card / list end-content. Returns
15
15
  * null when the attribute has no displayable value.
16
16
  */
17
- export declare const renderAttributeBadge: (descriptor: AttributeDescriptor, row: DataRendererRow) => AttributeBadge | null;
18
- export declare const collectDisplayBadges: (row: DataRendererRow, attributes: AttributeDescriptor[], displayProperties: string[]) => AttributeBadge[];
19
- export declare const collectDisplayCustomSlots: (row: DataRendererRow, attributes: AttributeDescriptor[], displayProperties: string[]) => ReactNode[];
17
+ export declare const renderAttributeBadge: (descriptor: AttributeDescriptor, row: KanbanRendererRow) => AttributeBadge | null;
18
+ export declare const collectDisplayBadges: (row: KanbanRendererRow, attributes: AttributeDescriptor[], displayProperties: string[]) => AttributeBadge[];
19
+ export declare const collectDisplayCustomSlots: (row: KanbanRendererRow, attributes: AttributeDescriptor[], displayProperties: string[]) => ReactNode[];
20
20
  export interface FilterCategoryView {
21
21
  id: string;
22
22
  label: string;
@@ -33,7 +33,7 @@ export interface FilterCategoryView {
33
33
  * the data fill in the gaps for string / date / number / user attributes (so
34
34
  * filter chips for free-form fields don't require declaring every option).
35
35
  */
36
- export declare const buildFilterCategories: (attributes: AttributeDescriptor[], rows: DataRendererRow[]) => FilterCategoryView[];
36
+ export declare const buildFilterCategories: (attributes: AttributeDescriptor[], rows: KanbanRendererRow[]) => FilterCategoryView[];
37
37
  export interface MenuOption {
38
38
  value: string;
39
39
  label: string;
@@ -45,13 +45,13 @@ export declare const resolveSubGroupingOptions: (options: MenuOption[], columnGr
45
45
  export declare const resolveListDropTargetColumnKey: (columnGrouping: string, placement?: {
46
46
  columnKey?: string;
47
47
  }) => string | undefined;
48
- export declare const resolveKnownColumnKeys: (columnGrouping: string, attributes: AttributeDescriptor[], filters?: DataRendererFilterState) => string[] | undefined;
48
+ export declare const resolveKnownColumnKeys: (columnGrouping: string, attributes: AttributeDescriptor[], filters?: KanbanRendererFilterState) => string[] | undefined;
49
49
  export declare const normalizeFilterValues: (_descriptor: AttributeDescriptor, values: string[]) => string[];
50
- export declare const omitFilterCategory: (filters: DataRendererFilterState, id: string) => DataRendererFilterState;
50
+ export declare const omitFilterCategory: (filters: KanbanRendererFilterState, id: string) => KanbanRendererFilterState;
51
51
  /**
52
52
  * Drop persisted settings entries that reference attribute ids no longer
53
53
  * declared by the contribution. Falls back to defaults for missing grouping
54
54
  * and ordering attributes so a stale saved view still loads cleanly.
55
55
  */
56
- export declare const sanitizeSettings: (settings: DataRendererSettings, attributes: AttributeDescriptor[]) => DataRendererSettings;
57
- export declare const sanitizeFilters: (filters: DataRendererFilterState, attributes: AttributeDescriptor[]) => DataRendererFilterState;
56
+ export declare const sanitizeSettings: (settings: KanbanRendererSettings, attributes: AttributeDescriptor[]) => KanbanRendererSettings;
57
+ export declare const sanitizeFilters: (filters: KanbanRendererFilterState, attributes: AttributeDescriptor[]) => KanbanRendererFilterState;
@@ -0,0 +1,25 @@
1
+ import { ResourceContextAction } from '../overlays/resource-context-menu';
2
+ import { KanbanRendererColumnGroup } from './kanban-renderer-grouping';
3
+ import { KanbanRendererListItem } from './kanban-renderer-list';
4
+ import { AttributeDescriptor, KanbanRendererRow, KanbanRendererSettings } from './types';
5
+ interface BuildKanbanRendererListItemsInput<TRow extends KanbanRendererRow> {
6
+ settings: KanbanRendererSettings;
7
+ visibleRows: TRow[];
8
+ grouped: KanbanRendererColumnGroup[];
9
+ attributes: AttributeDescriptor[];
10
+ onRowClick?: (row: TRow) => void;
11
+ onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
12
+ onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
13
+ getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
14
+ }
15
+ export declare const buildKanbanRendererListItems: <TRow extends KanbanRendererRow>(input: BuildKanbanRendererListItemsInput<TRow>) => (KanbanRendererListItem | {
16
+ onDropRow: ((draggedId: string) => void | Promise<void>) | undefined;
17
+ children: KanbanRendererListItem[];
18
+ statusColorPalette: string | undefined;
19
+ statusIcon: import('react').ComponentType;
20
+ id: string;
21
+ title: string;
22
+ isGroup: boolean;
23
+ countBadge: number;
24
+ })[];
25
+ export {};
@@ -0,0 +1,43 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ import { ResourceContextAction } from '../overlays/resource-context-menu';
3
+ import { AttributeBadge } from './kanban-renderer-helpers';
4
+ export interface KanbanRendererListItem {
5
+ id: string;
6
+ eyebrow?: string;
7
+ title: string;
8
+ isGroup?: boolean;
9
+ countBadge?: number;
10
+ countColorPalette?: string;
11
+ statusIcon?: ComponentType<{
12
+ size?: number | string;
13
+ }>;
14
+ statusColor?: string;
15
+ statusColorPalette?: string;
16
+ badges?: AttributeBadge[];
17
+ customSlots?: ReactNode[];
18
+ children?: KanbanRendererListItem[];
19
+ onClick?: () => void;
20
+ onBadgeChange?: (attributeId: string, value: unknown) => void;
21
+ contextMenuActions?: ResourceContextAction[];
22
+ draggable?: boolean;
23
+ onDropRow?: (rowId: string) => void;
24
+ }
25
+ export type KanbanRendererListExpandedState = Record<string, boolean>;
26
+ export interface KanbanRendererListProps {
27
+ items: KanbanRendererListItem[];
28
+ selectedItemId?: string | null;
29
+ expandedGroups?: KanbanRendererListExpandedState;
30
+ onItemClick?: (item: KanbanRendererListItem) => void;
31
+ onExpandedGroupChange?: (rowId: string, isExpanded: boolean) => void;
32
+ }
33
+ interface FlattenedKanbanRendererListItem {
34
+ id: string;
35
+ item: KanbanRendererListItem;
36
+ depth: number;
37
+ isGroup: boolean;
38
+ canExpand: boolean;
39
+ }
40
+ export declare const getKanbanRendererListIndentation: (depth: number) => string | undefined;
41
+ export declare const flattenKanbanRendererListItems: (items: KanbanRendererListItem[], expanded: KanbanRendererListExpandedState, depth?: number) => FlattenedKanbanRendererListItem[];
42
+ export declare const KanbanRendererList: (props: KanbanRendererListProps) => import("react/jsx-runtime").JSX.Element;
43
+ export {};
@@ -1,7 +1,8 @@
1
- import { AttributeDescriptor, DataRendererRow } from './types';
1
+ import { AttributeDescriptor, KanbanRendererRow } from './types';
2
2
  export declare const attributes: AttributeDescriptor[];
3
- export interface StoryRow extends DataRendererRow {
3
+ export interface StoryRow extends KanbanRendererRow {
4
4
  attributes: {
5
+ id?: string;
5
6
  status: string;
6
7
  assignee: string;
7
8
  component: string;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { AttributeDescriptor, KanbanRendererFilterState, KanbanRendererRow, KanbanRendererSavedView, KanbanRendererSettings } from './types';
3
+ export interface KanbanRendererToolbarProps<TRow extends KanbanRendererRow = KanbanRendererRow> {
4
+ rows: TRow[];
5
+ storageKey: string;
6
+ attributes: AttributeDescriptor[];
7
+ defaultSettings?: Partial<KanbanRendererSettings>;
8
+ defaultFilters?: KanbanRendererFilterState;
9
+ defaultViews?: KanbanRendererSavedView[];
10
+ defaultActiveViewId?: string;
11
+ leading?: ReactNode;
12
+ displayControl?: ReactNode;
13
+ align?: "split" | "end";
14
+ }
15
+ export declare const KanbanRendererToolbar: <TRow extends KanbanRendererRow>(props: KanbanRendererToolbarProps<TRow>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { ReactNode } from 'react';
2
+ import { FilterCategoryView } from './kanban-renderer-helpers';
3
+ import { KanbanRendererFilterState } from './types';
4
+ interface KanbanRendererViewBarProps {
5
+ storageKey: string;
6
+ categories: FilterCategoryView[];
7
+ filters: KanbanRendererFilterState;
8
+ leading?: ReactNode;
9
+ filterControl: ReactNode;
10
+ displayControl: ReactNode;
11
+ align?: "split" | "end";
12
+ }
13
+ export declare const KanbanRendererViewBar: (props: KanbanRendererViewBarProps) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,12 @@
1
+ import { KanbanRendererFilterState, KanbanRendererSavedView, KanbanRendererSettings } from './types';
2
+ interface KanbanRendererViewState {
3
+ settings: KanbanRendererSettings;
4
+ filters: KanbanRendererFilterState;
5
+ }
6
+ export declare const snapshotKanbanRendererView: (id: string, title: string, state: KanbanRendererViewState, isDefault?: boolean) => KanbanRendererSavedView;
7
+ export declare const applyKanbanRendererView: (view: KanbanRendererSavedView) => {
8
+ settings: KanbanRendererSettings;
9
+ filters: KanbanRendererFilterState;
10
+ };
11
+ export declare const isKanbanRendererViewDirty: (view: KanbanRendererSavedView | undefined, state: KanbanRendererViewState) => boolean;
12
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { ResourceContextAction } from '../overlays/resource-context-menu';
3
- import { DataRendererBoardColumnAction } from './data-renderer-board';
4
- import { AttributeDescriptor, DataRendererFilterState, DataRendererRow, DataRendererSettings } from './types';
3
+ import { KanbanRendererBoardColumnAction } from './kanban-renderer-board';
4
+ import { AttributeDescriptor, KanbanRendererCreateRowConfig, KanbanRendererCreateSubmission, KanbanRendererFilterState, KanbanRendererRow, KanbanRendererSavedView, KanbanRendererSettings } from './types';
5
5
  /** Board-column behavior and menu configuration for a resolved column group. */
6
6
  export interface BoardColumnConfig {
7
7
  /** Chakra color palette used for the column header and group badges. */
@@ -9,10 +9,10 @@ export interface BoardColumnConfig {
9
9
  canDragIn?: boolean;
10
10
  canDragOut?: boolean;
11
11
  canCreate?: boolean;
12
- actions?: DataRendererBoardColumnAction[];
12
+ actions?: KanbanRendererBoardColumnAction[];
13
13
  }
14
14
  /** Switchable list/board renderer for rows with typed attributes, filtering, grouping, and ordering. */
15
- export interface DataRendererProps<TRow extends DataRendererRow = DataRendererRow> {
15
+ export interface KanbanRendererProps<TRow extends KanbanRendererRow = KanbanRendererRow> {
16
16
  /** Stable rows to render. Each row must have an id, title, and attributes map. */
17
17
  rows: TRow[];
18
18
  /** Persistent key used by the renderer store for view, filter, grouping, ordering, and list expansion settings. */
@@ -23,8 +23,10 @@ export interface DataRendererProps<TRow extends DataRendererRow = DataRendererRo
23
23
  emptyState?: ReactNode;
24
24
  emptyTitle?: string;
25
25
  emptyDescription?: string;
26
- defaultSettings?: Partial<DataRendererSettings>;
27
- defaultFilters?: DataRendererFilterState;
26
+ defaultSettings?: Partial<KanbanRendererSettings>;
27
+ defaultFilters?: KanbanRendererFilterState;
28
+ defaultViews?: KanbanRendererSavedView[];
29
+ defaultActiveViewId?: string;
28
30
  hideToolbar?: boolean;
29
31
  toolbarLeading?: ReactNode;
30
32
  onRowClick?: (row: TRow) => void;
@@ -32,9 +34,10 @@ export interface DataRendererProps<TRow extends DataRendererRow = DataRendererRo
32
34
  onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;
33
35
  /** Called for manual row ordering when a dragged row is dropped before another row. */
34
36
  onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;
35
- onCreateRow?: (columnId: string) => void;
37
+ createRow?: KanbanRendererCreateRowConfig;
38
+ onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;
36
39
  onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;
37
40
  getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;
38
41
  getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];
39
42
  }
40
- export declare const DataRenderer: <TRow extends DataRendererRow>(props: DataRendererProps<TRow>) => import("react/jsx-runtime").JSX.Element;
43
+ export declare const KanbanRenderer: <TRow extends KanbanRendererRow>(props: KanbanRendererProps<TRow>) => import("react/jsx-runtime").JSX.Element;