@pstdio/ui 0.38.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{MermaidComponent-BLMDb5XE.js → MermaidComponent-81jr28u4.js} +2 -2
- package/dist/{MermaidComponent-BLMDb5XE.js.map → MermaidComponent-81jr28u4.js.map} +1 -1
- package/dist/chat-ui.d.ts +13 -11
- package/dist/chat-ui.js +1029 -915
- package/dist/chat-ui.js.map +1 -1
- package/dist/{data-table-stats-row-BrpOFzgn.js → data-table-stats-row-CpRe_xK2.js} +2 -2
- package/dist/{data-table-stats-row-BrpOFzgn.js.map → data-table-stats-row-CpRe_xK2.js.map} +1 -1
- package/dist/data-table.d.ts +3 -1
- package/dist/data-table.js +7 -10
- package/dist/data-table.js.map +1 -1
- package/dist/{diff-viewer-hGkaF_zW.js → diff-viewer-BP_mI6Wx.js} +3 -3
- package/dist/{diff-viewer-hGkaF_zW.js.map → diff-viewer-BP_mI6Wx.js.map} +1 -1
- package/dist/diff.js +1 -1
- package/dist/{index-BfFLdci8.d.ts → index-Bfddrlz8.d.ts} +1 -1
- package/dist/{index-DlmvvQ6x.d.ts → index-CbtbcvKm.d.ts} +1 -1
- package/dist/index.d.ts +11 -9
- package/dist/index.js +111 -99
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer.d.ts +9 -21
- package/dist/kanban-renderer.js +276 -274
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/{list-row-De9R2zKU.js → list-row-uqD-q4gv.js} +20 -10
- package/dist/list-row-uqD-q4gv.js.map +1 -0
- package/dist/{param-editor-BsyIOdrP.js → param-editor-BQd4AOUP.js} +2 -2
- package/dist/{param-editor-BsyIOdrP.js.map → param-editor-BQd4AOUP.js.map} +1 -1
- package/dist/{param-editor-field-qEWoluWT.js → param-editor-field-BJ_rLUnV.js} +728 -722
- package/dist/param-editor-field-BJ_rLUnV.js.map +1 -0
- package/dist/param-editor.d.ts +1 -0
- package/dist/param-editor.js +2 -2
- package/dist/{rich-text-CQAntEuA.js → rich-text-VYAmEigU.js} +1142 -1184
- package/dist/rich-text-VYAmEigU.js.map +1 -0
- package/dist/rich-text.d.ts +1 -1
- package/dist/rich-text.js +1 -1
- package/dist/style.css +1 -1
- package/dist/{theme-BH-rGipZ.js → theme-CbmSEbRF.js} +37 -6
- package/dist/theme-CbmSEbRF.js.map +1 -0
- package/dist/theme.js +1 -1
- package/dist/tree-list-BNZwjQZA.js +1616 -0
- package/dist/tree-list-BNZwjQZA.js.map +1 -0
- package/dist/{types-yjKBk07w.d.ts → types-DWA3enV6.d.ts} +22 -1
- package/package.json +2 -2
- package/dist/list-row-De9R2zKU.js.map +0 -1
- package/dist/param-editor-field-qEWoluWT.js.map +0 -1
- package/dist/rich-text-CQAntEuA.js.map +0 -1
- package/dist/theme-BH-rGipZ.js.map +0 -1
- package/dist/tree-list-BUfDQz3v.js +0 -1449
- package/dist/tree-list-BUfDQz3v.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban-renderer.js","names":["KanbanRendererSettings","MANUAL_ORDERING","NO_GROUPING","ApplyBoardMoveItemInput","settings","Pick","rowId","targetColumnId","targetGroupKey","beforeItemId","onAttributeChange","attributeId","value","Promise","onReorder","beforeRowId","ApplyBoardMoveToGroupInput","applyBoardMoveItem","input","columnGrouping","rowGrouping","ordering","applyBoardMoveToGroup","Badge","HStack","Icon","IconButton","Menu","Spacer","Text","MoreHorizontal","Plus","ListRow","getIconComponent","Tooltip","KanbanRendererBoardColumn","ColumnHeaderProps","column","onCreateStart","columnId","onColumnAction","actionId","Promise","ColumnHeader","props","$","_c","t0","color","t1","icon","t2","t3","label","t4","items","length","t5","Symbol","for","t6","canCreate","createLabel","id","t7","actions","map","action","t8","_c","Tooltip","Badge","Icon","Menu","Portal","Check","ChevronDown","Square","SquareCheck","ListRow","getIconComponent","AttributeBadge","KanbanRendererAttributeBadgeProps","badge","onChange","attributeId","value","stopRowActivation","event","stopPropagation","getSelectedValues","Array","isArray","toggleMultiValue","values","optionValue","includes","filter","badgeStyleProps","bg","_light","_dark","color","_hover","const","getBadgeIconColor","selectionIcon","input","isMultiValue","isSelected","KanbanRendererAttributeBadge","props","$","_c","T0","T1","T2","T3","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","options","canEdit","Boolean","isEditable","length","selectedValues","t10","onClick","onPointerDown","onKeyDown","rowInteractionProps","handleOptionChange","nextValue","t11","icon","t12","t13","label","badgeContent","t14","Root","Positioner","Content","map","option","_c","_Fragment","HStack","Stack","Text","Wrap","DragEventHandler","MouseEvent","ReactNode","WorkspaceBadgeProps","WorkspaceBadge","KanbanRendererAttributeBadge","AttributeBadge","KanbanRendererCardProps","eyebrow","title","badges","customSlots","workspaceBadge","isSelected","draggable","onBadgeChange","attributeId","value","onDragStart","HTMLDivElement","onDragEnd","onClick","KanbanRendererCard","props","$","_c","t0","t1","t2","t3","undefined","t4","hasBadges","length","cursor","t5","event","defaultPrevented","target","Node","currentTarget","contains","handleClick","t6","t7","t8","borderColor","t9","t10","t11","t12","t13","map","badge","t14","_c","Badge","Box","HStack","Icon","Stack","Text","ChevronRight","DragEvent","useState","ResourceContextMenu","KanbanRendererBoardGroup","KanbanRendererCard","GroupSectionProps","columnId","group","selectedItemId","canDragIn","canDragOut","isDropTarget","onDragStart","itemId","event","HTMLDivElement","onDragEnd","onGroupDragOver","onGroupDragLeave","onGroupDrop","beforeItemId","GroupSection","props","$","_c","expanded","setExpanded","t0","t1","undefined","t2","t3","t4","Symbol","for","bg","t5","_temp","t6","t7","t8","label","t9","items","length","t10","t11","map","item","id","contextMenuActions","_temp2","event_0","preventDefault","stopPropagation","dataTransfer","getData","cardProps","t12","key","value","dropEffect","_c","_temp","_temp2","Box","Stack","ComponentProps","ComponentType","DragEvent","useState","ResourceContextAction","ResourceContextMenu","ScrollArea","ColumnHeader","GroupSection","KanbanRendererCard","KanbanRendererCardProps","KanbanRendererBoardItem","id","cardProps","Omit","contextMenuActions","KanbanRendererBoardColumnAction","label","icon","size","KanbanRendererBoardGroup","key","items","KanbanRendererBoardColumn","createLabel","color","groups","canDragIn","canDragOut","canCreate","actions","KanbanRendererBoardProps","columns","selectedItemId","onMoveItem","itemId","targetColumnId","context","beforeItemId","targetGroupKey","Promise","onMoveToGroup","onCreateStart","columnId","onColumnAction","actionId","KanbanRendererBoard","props","$","_c","t0","undefined","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","_temp","t1","Symbol","for","handleDragEnd","t2","event_0","event","preventDefault","dataTransfer","dropEffect","handleDragOver","t3","event_1","currentTarget","contains","relatedTarget","Node","handleDragLeave","t4","columnId_0","event_2","itemId_0","getData","handleDrop","t5","display","alignItems","gap","padding","minH","t6","t7","column","margin","spaceY","length","map","group","groupId","event_3","stopPropagation","event_4","event_5","itemId_1","item","event_6","event_7","itemId_2","setData","effectAllowed","_c","_temp","ScrollArea","Box","HStack","Icon","Text","Wrap","ComponentType","DragEvent","ReactNode","useState","ResourceContextAction","ListRow","ListRowItem","KanbanRendererAttributeBadge","AttributeBadge","KanbanRendererListItem","id","eyebrow","title","isGroup","countBadge","countColorPalette","statusIcon","size","statusColor","statusColorPalette","badges","customSlots","children","onClick","onBadgeChange","attributeId","value","contextMenuActions","draggable","onDropRow","rowId","KanbanRendererListExpandedState","Record","KanbanRendererListProps","items","selectedItemId","expandedGroups","onItemClick","item","onExpandedGroupChange","isExpanded","INDENT_STEP_PX","FlattenedKanbanRendererListItem","depth","canExpand","getKanbanRendererListIndentation","undefined","flattenKanbanRendererListItems","expanded","rows","length","push","getRowIsExpanded","getDropTargetIndicatorProps","isDropTarget","_before","content","position","bg","left","top","width","height","const","expandedState","updateExpandedState","renderLabel","renderEndContent","hasBadges","map","badge","buildListRowItem","hasChildren","label","icon","endContent","isContainer","contextMenuItems","action","key","disabled","isDisabled","separatorBefore","onAction","KanbanRendererList","props","$","_c","t0","t1","Symbol","for","localExpandedGroups","setLocalExpandedGroups","activeDropTargetId","setActiveDropTargetId","draggedItemId","setDraggedItemId","T0","t2","t3","current","handleExpandedChange","t4","row","KanbanRendererListRowProps","onDraggedItemChange","itemId","onDropTargetChange","onExpandedChange","KanbanRendererListRow","isSelected","canDropHere","Boolean","rowItem","toggleExpanded","handleActivate","event","stopPropagation","dataTransfer","setData","effectAllowed","handleDragStart","event_0","preventDefault","dropEffect","handleDragOver","t5","event_1","currentTarget","contains","relatedTarget","Node","handleDragLeave","t6","event_2","draggedId","getData","handleDrop","t7","handleDragEnd","t8","t9","t10","t11","t12","t13","t14","t15","t16","_c","Box","ReactNode","EmptyState","KanbanRendererBoard","KanbanRendererBoardColumn","KanbanRendererList","KanbanRendererListItem","KanbanRendererSettings","KanbanRendererEmptyStateProps","emptyState","title","description","height","KanbanRendererContentProps","viewMode","boardColumns","listItems","listExpandedGroups","Record","selectedRowId","emptyTitle","emptyDescription","onBoardMoveItem","rowId","targetColumnId","context","beforeItemId","targetGroupKey","Promise","onBoardMoveToGroup","onCreateRow","columnId","onColumnAction","actionId","onListExpandedGroupChange","isExpanded","listKey","KanbanRendererEmptyState","props","$","_c","undefined","t0","KanbanRendererContent","length","_c","EmptyState","Box","HStack","Stack","Text","VStack","InputGroup","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorField","isParamEditorHorizontalControl","isParamEditorRichControl","ParamEditorHorizontalProps","params","groups","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","variant","HorizontalGroupProps","group","renderParam","param","React","ReactNode","width","HorizontalGroupTitle","props","$","_c","children","t0","HorizontalGroup","undefined","t1","title","t2","t3","t4","t5","map","t6","t7","ParamEditorHorizontal","T0","t8","t9","horizontalParams","filter","horizontalGroups","_temp","t10","compactParams","_temp2","richParams","compactGroups","_temp4","_temp5","richGroups","_temp6","_temp7","gap","hasCompactControls","length","t11","group_2","groupParams_1","groupParams","t12","param_2","t13","t14","group_3","groupParams_2","param_0","_temp3","param_1","group_0","group_1","groupParams_0","_c","_temp","_temp2","_temp4","_temp5","_temp3","Button","Icon","Input","Stack","Text","Textarea","Wrap","Paperclip","useRef","AttachmentChip","SelectionInput","LazyMarkdownEditor","KanbanRendererCreateField","MarkdownControl","props","$","_c","disabled","field","onChange","t0","defaultValue","t1","t2","next","t3","placeholder","FilesControl","removeLabel","value","input","Array","isArray","File","files","multiple","event","picked","from","target","slice","accept","t4","t5","Symbol","for","current","click","t6","label","t7","length","map","file","index","name","toString","filter","_","itemIndex","t8","CreateFieldControlProps","FieldInput","type","id","description","options","_temp","required","t9","t10","event_0","Number","CreateFieldControl","option","icon","undefined","color","_c","_temp","Button","CloseButton","Dialog","HStack","Stack","Text","useEffect","useRef","useState","handleDialogAcceptShortcut","Param","ParamValueMap","ParamEditorHorizontal","CreateFieldControl","getEnumOptions","AttributeDescriptor","KanbanRendererCreateField","KanbanRendererCreateRowConfig","KanbanRendererCreateSubmission","KanbanRendererCreateDialogProps","open","columnId","columnAttributeId","attributes","config","onClose","onSubmit","submission","Promise","emptyValue","field","type","initialFieldValues","fields","Object","fromEntries","map","id","defaultValue","isFilled","value","required","Array","isArray","length","trim","undefined","editableCreateAttributes","filter","attribute","editable","initialAttributeValues","kind","attributeToParam","locked","base","name","label","description","multiSelect","placeholder","clearable","disabled","options","option","icon","color","singleLine","KanbanRendererCreateDialog","props","values","setValues","Record","attributeValues","setAttributeValues","submitting","setSubmitting","error","setError","resetToken","setResetToken","initializedRef","editableAttributes","current","token","seeded","declared","Set","kept","entries","has","added","keys","close","valid","every","submit","fileFieldIds","files","flatMap","File","declaredValues","caught","Error","message","labels","submitError","details","event","title","toString","removeFile","properties","attributeId","cancel","submitLabel","ResourceContextAction","getIconComponent","KanbanRendererColumnGroup","orderRows","collectDisplayBadges","collectDisplayCustomSlots","findEnumOption","resolveListDropTargetColumnKey","KanbanRendererListItem","AttributeDescriptor","KanbanRendererRow","KanbanRendererSettings","findAttribute","MANUAL_ORDERING","NO_GROUPING","BuildKanbanRendererListItemsInput","settings","visibleRows","TRow","grouped","attributes","onRowClick","row","onAttributeChange","rowId","attributeId","value","Promise","onReorder","beforeRowId","getRowContextMenuActions","buildKanbanRendererListItems","input","supportsManualReorder","ordering","listDisplayProperties","displayProperties","filter","property","getStatusPresentation","key","descriptor","option","type","undefined","statusColorPalette","color","statusIcon","icon","getRowStatusPresentation","status","toListItem","placement","columnKey","rowKey","shorthand","id","eyebrow","title","badges","customSlots","contextMenuActions","onClick","onBadgeChange","draggable","Boolean","onDropRow","draggedId","targetColumnKey","columnGrouping","rowGrouping","toGroupListItem","group","label","rows","parent","groupingAttributeId","isGroup","countBadge","length","children","map","column","subgroups","Stack","ReactNode","useState","ResourceContextAction","KanbanRendererBoardColumn","KanbanRendererBoardColumnAction","KanbanRendererBoardGroup","applyBoardMoveItem","applyBoardMoveToGroup","KanbanRendererContent","KanbanRendererCreateDialog","filterRows","groupRows","orderRows","collectDisplayBadges","collectDisplayCustomSlots","findEnumOption","resolveKnownColumnKeys","buildKanbanRendererListItems","KanbanRendererToolbar","AttributeDescriptor","KanbanRendererCreateRowConfig","KanbanRendererCreateSubmission","KanbanRendererFilterState","KanbanRendererRow","KanbanRendererSavedView","KanbanRendererSettings","findAttribute","NO_GROUPING","useKanbanRendererStore","useResolvedAttributes","BoardColumnConfig","color","canDragIn","canDragOut","canCreate","actions","KanbanRendererProps","rows","TRow","storageKey","attributes","selectedRowId","emptyState","emptyTitle","emptyDescription","contentPlaceholder","defaultSettings","Partial","defaultFilters","defaultViews","defaultActiveViewId","hideToolbar","toolbarLeading","onRowClick","row","onAttributeChange","rowId","attributeId","value","Promise","onReorder","beforeRowId","createRow","onCreateRow","submission","onColumnAction","columnId","actionId","getBoardColumnConfig","groupKey","getRowContextMenuActions","rowEyebrow","shorthand","id","KanbanRenderer","props","$","_c","rawAttributes","t0","t1","t2","t3","undefined","createColumnId","setCreateColumnId","t4","settings","filters","views","activeViewId","initialState","_temp","_temp2","expandedGroups","_temp3","setExpandedGroup","_temp4","listItems","t5","visibleRows","knownColumnKeys","columnGrouping","grouped","rowGrouping","cardDisplayProperties","displayProperties","filter","_temp5","toBoardItems","boardRows","map","contextMenuActions","cardProps","eyebrow","includes","title","badges","customSlots","onBadgeChange","onClick","columnGroupingDescriptor","column","columnConfig","key","orderedRows","ordering","enumOption","type","groups","subgroups","length","subgroup","label","items","icon","boardColumns","t6","targetColumnId","context","targetGroupKey","beforeItemId","handleBoardMoveItem","t7","rowId_0","context_0","handleBoardMoveToGroup","t8","t9","viewMode","t10","t11","state","state_0","state_1","state_2","property","_c","Tooltip$1","ResourceContextMenu","ListRow","getIconComponent","AttachmentChip","WorkspaceBadge","EmptyState$1","buildGroupingOptions","KanbanRendererToolbar","orderRows","useResolvedAttributes","isActiveKanbanRendererViewDirty","FilterMenu","buildFilterCategories","filterRows","resolveAttributeOptions","groupRows","KanbanRendererStorageProvider","useKanbanRendererStore","buildDisplayPropertyOptions","isEnumOptionsSource","renderAttributeBadge","resolveListDropTargetColumnKey","findEnumOption","buildOrderingOptions","getEnumOptions","isAttributesSource","findAttribute","getAttributeValue","sanitizeFilters","NO_GROUPING","collectDisplayCustomSlots","renderBadgeListDisplay","LazyMarkdownEditor","MANUAL_ORDERING","DisplayMenu","getAttributeStringValues","resolveKnownColumnKeys","collectDisplayBadges","sanitizeSettings","SelectionInput","isParamEditorRichControl","isParamEditorHorizontalControl","ParamEditorField","applyBoardMoveItem","input","settings","onAttributeChange","rowId","targetColumnId","targetGroupKey","onReorder","beforeItemId","applyBoardMoveToGroup","ColumnHeader","$","c","props","t0","column","t1","t2","Icon","t3","Text","t4","Badge","t5","Spacer","t6","onCreateStart","IconButton","Plus","t7","onColumnAction","Menu","MoreHorizontal","action","t8","HStack","stopRowActivation","event","getSelectedValues","badge","toggleMultiValue","values","optionValue","value","badgeStyleProps","getBadgeIconColor","selectionIcon","SquareCheck","Square","Check","KanbanRendererAttributeBadge","T0","T1","T2","T3","t9","onChange","options","canEdit","isMultiValue","selectedValues","t10","rowInteractionProps","handleOptionChange","nextValue","t11","t12","ChevronDown","t13","Fragment","badgeContent","t14","Portal","isSelected","option","KanbanRendererCard","badges","customSlots","hasBadges","cursor","draggable","onClick","handleClick","eyebrow","workspaceBadge","title","onBadgeChange","Wrap","onDragEnd","onDragStart","Stack","GroupSection","expanded","setExpanded","useState","isDropTarget","canDragIn","onGroupDragOver","onGroupDragLeave","onGroupDrop","_temp$4","Box","ChevronRight","group","canDragOut","selectedItemId","item","_temp2$2","event_0","itemId","columnId","KanbanRendererBoard","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","_temp$3","handleDragEnd","handleDragOver","event_1","handleDragLeave","onMoveItem","event_2","itemId_0","columnId_0","handleDrop","columns","onMoveToGroup","ScrollArea$1","groupId","event_3","event_4","event_5","itemId_1","event_6","event_7","itemId_2","flattenKanbanRendererListItems","rows","items","canExpand","getRowIsExpanded","depth","getDropTargetIndicatorProps","isGroup","expandedState","updateExpandedState","isExpanded","renderLabel","renderEndContent","buildListRowItem","hasChildren","KanbanRendererList","localExpandedGroups","setLocalExpandedGroups","activeDropTargetId","setActiveDropTargetId","draggedItemId","setDraggedItemId","expandedGroups","onExpandedGroupChange","onItemClick","current","handleExpandedChange","KanbanRendererListRow","row","canDropHere","rowItem","onExpandedChange","toggleExpanded","handleActivate","onDraggedItemChange","onDropTargetChange","draggedId","t15","t16","KanbanRendererEmptyState","emptyState","height","description","KanbanRendererContent","viewMode","boardColumns","emptyDescription","emptyTitle","onBoardMoveItem","onBoardMoveToGroup","onCreateRow","selectedRowId","listItems","listExpandedGroups","listKey","onListExpandedGroupChange","HorizontalGroupTitle","children","HorizontalGroup","width","variant","params","renderParam","VStack","ParamEditorHorizontal","defaultValues","onOpenResource","readOnly","groups","horizontalParams","horizontalGroups","_temp$2","param","compactParams","_temp2$1","richParams","compactGroups","_temp4$1","_temp5$1","richGroups","_temp6","_temp7","gap","hasCompactControls","group_2","groupParams_1","param_2","group_3","groupParams_2","param_0","_temp3$1","param_1","group_0","groupParams","group_1","groupParams_0","MarkdownControl","field","disabled","next","FilesControl","useRef","files","picked","Paperclip","Button","removeLabel","itemIndex","index","file","FieldInput","Textarea","_temp$1","Input","CreateFieldControl","emptyValue","initialFieldValues","fields","isFilled","editableCreateAttributes","attributes","attribute","initialAttributeValues","columnAttributeId","attributeToParam","base","multiSelect","locked","KanbanRendererCreateDialog","setValues","attributeValues","setAttributeValues","submitting","setSubmitting","error","setError","resetToken","setResetToken","initializedRef","editableAttributes","useEffect","open","config","token","seeded","declared","kept","id","added","id_0","editable","seeded_0","declared_0","kept_0","current_0","id_1","added_0","id_2","close","onClose","valid","field_0","submit","fileFieldIds","field_1","field_2","id_3","declaredValues","id_4","onSubmit","caught","Dialog","details","handleDialogAcceptShortcut","CloseButton","field_3","current_1","attribute_0","current_2","attributeId","value_0","buildKanbanRendererListItems","supportsManualReorder","listDisplayProperties","property","getStatusPresentation","descriptor","key","getRowStatusPresentation","status","toListItem","shorthand","getRowContextMenuActions","onRowClick","targetColumnKey","placement","toGroupListItem","groupingAttributeId","parent","columnKey","visibleRows","grouped","rowEyebrow","KanbanRenderer","rawAttributes","hideToolbar","createColumnId","setCreateColumnId","defaultActiveViewId","defaultFilters","defaultSettings","defaultViews","initialState","storageKey","_temp","filters","_temp2","_temp3","setExpandedGroup","_temp4","getBoardColumnConfig","knownColumnKeys","cardDisplayProperties","_temp5","toBoardItems","boardRows","columnGroupingDescriptor","columnConfig","orderedRows","enumOption","subgroup","context","handleBoardMoveItem","rowId_0","context_0","handleBoardMoveToGroup","toolbarLeading","contentPlaceholder","createRow","state","state_0","state_1","state_2"],"sources":["../src/components/kanban-renderer/kanban-renderer-board-move.ts","../src/components/kanban-renderer/kanban-renderer-board-column-header.tsx","../src/components/kanban-renderer/kanban-renderer-attribute-badge.tsx","../src/components/kanban-renderer/kanban-renderer-card.tsx","../src/components/kanban-renderer/kanban-renderer-board-group-section.tsx","../src/components/kanban-renderer/kanban-renderer-board.tsx","../src/components/kanban-renderer/kanban-renderer-list.tsx","../src/components/kanban-renderer/kanban-renderer-content.tsx","../src/components/param-editor/param-editor-horizontal.tsx","../src/components/kanban-renderer/kanban-renderer-create-field.tsx","../src/components/kanban-renderer/kanban-renderer-create-dialog.tsx","../src/components/kanban-renderer/kanban-renderer-list-items.ts","../src/components/kanban-renderer/kanban-renderer.tsx"],"sourcesContent":["import type { KanbanRendererSettings } from \"./types\";\nimport { MANUAL_ORDERING, NO_GROUPING } from \"./types\";\n\ninterface ApplyBoardMoveItemInput {\n settings: Pick<KanbanRendererSettings, \"columnGrouping\" | \"ordering\" | \"rowGrouping\">;\n rowId: string;\n targetColumnId: string;\n targetGroupKey?: string;\n beforeItemId?: string;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n}\n\ninterface ApplyBoardMoveToGroupInput {\n settings: Pick<KanbanRendererSettings, \"ordering\" | \"rowGrouping\">;\n rowId: string;\n targetGroupKey: string;\n beforeItemId?: string;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n}\n\nexport const applyBoardMoveItem = async (input: ApplyBoardMoveItemInput) => {\n const { settings, rowId, targetColumnId, targetGroupKey, beforeItemId, onAttributeChange, onReorder } = input;\n\n if (settings.columnGrouping !== NO_GROUPING && onAttributeChange) {\n await onAttributeChange(rowId, settings.columnGrouping, targetColumnId);\n }\n if (settings.rowGrouping !== NO_GROUPING && targetGroupKey && onAttributeChange) {\n await onAttributeChange(rowId, settings.rowGrouping, targetGroupKey);\n }\n if (settings.ordering.attributeId === MANUAL_ORDERING) {\n await onReorder?.(rowId, beforeItemId);\n }\n};\n\nexport const applyBoardMoveToGroup = async (input: ApplyBoardMoveToGroupInput) => {\n const { settings, rowId, targetGroupKey, beforeItemId, onAttributeChange, onReorder } = input;\n\n if (settings.rowGrouping === NO_GROUPING || !onAttributeChange) return;\n await onAttributeChange(rowId, settings.rowGrouping, targetGroupKey);\n if (settings.ordering.attributeId === MANUAL_ORDERING) {\n await onReorder?.(rowId, beforeItemId);\n }\n};\n","import { Badge, HStack, Icon, IconButton, Menu, Spacer, Text } from \"@chakra-ui/react\";\nimport { MoreHorizontal, Plus } from \"lucide-react\";\n\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { KanbanRendererBoardColumn } from \"./kanban-renderer-board\";\n\ninterface ColumnHeaderProps {\n column: KanbanRendererBoardColumn;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const ColumnHeader = (props: ColumnHeaderProps) => {\n const { column, onCreateStart, onColumnAction } = props;\n\n return (\n <HStack minH=\"1.5rem\" gap=\"2xs\" alignItems=\"center\" colorPalette={column.color ?? \"gray\"}>\n <Icon\n data-testid=\"column-status-icon\"\n as={getIconComponent(column.icon)}\n boxSize=\"0.875rem\"\n color=\"colorPalette.solid\"\n flexShrink={0}\n />\n <Text textStyle=\"label/S/medium\">{column.label}</Text>\n\n <Badge variant=\"number\" size=\"xs\" colorPalette=\"gray\">\n {column.items.length}\n </Badge>\n\n <Spacer />\n\n {column.canCreate && onCreateStart && (\n <Tooltip content={column.createLabel ?? \"Create new row\"}>\n <IconButton\n size=\"2xs\"\n variant=\"outline\"\n onClick={() => onCreateStart(column.id)}\n aria-label={column.createLabel ?? \"Create row\"}\n >\n <Icon as={Plus} boxSize=\"12px\" />\n </IconButton>\n </Tooltip>\n )}\n\n {column.actions.length > 0 && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={`Column actions for ${column.label}`}>\n <Icon as={MoreHorizontal} boxSize=\"12px\" />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"180px\" bg=\"bg\">\n {column.actions.map((action) => (\n <Menu.Item key={action.id} value={action.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={action.label}\n icon={<Icon as={action.icon} boxSize=\"16px\" />}\n onActivate={() => onColumnAction?.(column.id, action.id)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n )}\n </HStack>\n );\n};\n","import { Badge, Icon, Menu, Portal } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\ninterface KanbanRendererAttributeBadgeProps {\n badge: AttributeBadge;\n onChange?: (attributeId: string, value: unknown) => void;\n}\n\nconst stopRowActivation = (event: { stopPropagation: () => void }) => event.stopPropagation();\n\nconst getSelectedValues = (badge: AttributeBadge) => {\n if (Array.isArray(badge.value)) return badge.value;\n return badge.value ? [badge.value] : [];\n};\n\nconst toggleMultiValue = (values: string[], optionValue: string) =>\n values.includes(optionValue) ? values.filter((value) => value !== optionValue) : [...values, optionValue];\n\nconst badgeStyleProps = {\n bg: { _light: \"bg.muted\", _dark: \"bg.subtle\" },\n color: \"fg.muted\",\n _hover: { bg: { _light: \"bg.subtle\", _dark: \"bg.hover\" } },\n} as const;\n\nconst getBadgeIconColor = (badge: AttributeBadge) => (badge.color ? `${badge.color}.fg` : \"fg.muted\");\n\nconst selectionIcon = (input: { isMultiValue: boolean; isSelected: boolean }) => {\n if (input.isMultiValue) return input.isSelected ? <SquareCheck size={14} /> : <Square size={14} />;\n return input.isSelected ? <Check size={14} /> : null;\n};\n\nexport const KanbanRendererAttributeBadge = (props: KanbanRendererAttributeBadgeProps) => {\n const { badge, onChange } = props;\n const options = badge.options ?? [];\n const canEdit = Boolean(onChange && badge.isEditable && options.length > 0);\n const isMultiValue = Array.isArray(badge.value);\n const selectedValues = getSelectedValues(badge);\n const rowInteractionProps = {\n onClick: stopRowActivation,\n onPointerDown: stopRowActivation,\n onKeyDown: stopRowActivation,\n };\n\n const handleOptionChange = (optionValue: string) => {\n let nextValue: string | string[];\n if (isMultiValue) nextValue = toggleMultiValue(selectedValues, optionValue);\n else nextValue = selectedValues.includes(optionValue) ? \"\" : optionValue;\n onChange?.(badge.attributeId, nextValue);\n };\n\n const badgeContent = (\n <>\n {badge.icon ? <Icon as={getIconComponent(badge.icon)} boxSize=\"3.5\" color={getBadgeIconColor(badge)} /> : null}\n {badge.label}\n {canEdit ? <Icon as={ChevronDown} boxSize=\"3\" color=\"fg.muted\" /> : null}\n </>\n );\n\n if (!canEdit) {\n return (\n <Badge variant=\"subtle\" gap=\"2xs\" textStyle=\"label/XS/medium\" {...badgeStyleProps}>\n {badgeContent}\n </Badge>\n );\n }\n\n return (\n <Menu.Root closeOnSelect={!isMultiValue}>\n <Menu.Trigger asChild>\n <Badge\n as=\"span\"\n role=\"button\"\n tabIndex={0}\n variant=\"subtle\"\n gap=\"2xs\"\n textStyle=\"label/XS/medium\"\n cursor=\"pointer\"\n {...badgeStyleProps}\n onClick={stopRowActivation}\n onPointerDown={stopRowActivation}\n onKeyDown={stopRowActivation}\n >\n {badgeContent}\n </Badge>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content\n minW=\"180px\"\n p=\"0\"\n gap=\"0\"\n onClick={stopRowActivation}\n onPointerDown={stopRowActivation}\n onKeyDown={stopRowActivation}\n >\n {options.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n return (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n role={isMultiValue ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={isSelected}\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={<Icon as={getIconComponent(option.icon)} boxSize=\"16px\" />}\n iconColor={`${option.color ?? \"gray\"}.500`}\n isSelected={isSelected}\n endContent={selectionIcon({ isMultiValue, isSelected })}\n onActivate={() => handleOptionChange(option.value)}\n {...rowInteractionProps}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { HStack, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport type { DragEventHandler, MouseEvent, ReactNode } from \"react\";\nimport type { WorkspaceBadgeProps } from \"@/components/primitives/workspace-badge\";\nimport { WorkspaceBadge } from \"@/components/primitives/workspace-badge\";\nimport { KanbanRendererAttributeBadge } from \"./kanban-renderer-attribute-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\nexport interface KanbanRendererCardProps {\n eyebrow?: string;\n title: string;\n badges?: AttributeBadge[];\n customSlots?: ReactNode[];\n workspaceBadge?: WorkspaceBadgeProps;\n isSelected?: boolean;\n draggable?: boolean;\n onBadgeChange?: (attributeId: string, value: unknown) => void;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n}\n\nexport const KanbanRendererCard = (props: KanbanRendererCardProps) => {\n const {\n eyebrow,\n title,\n badges = [],\n customSlots = [],\n workspaceBadge,\n isSelected = false,\n draggable,\n onBadgeChange,\n onDragStart,\n onDragEnd,\n onClick,\n } = props;\n\n const hasBadges = badges.length > 0 || customSlots.length > 0;\n const cursor = draggable ? \"grab\" : onClick ? \"pointer\" : \"default\";\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.defaultPrevented) return;\n if (!(event.target instanceof Node) || !event.currentTarget.contains(event.target)) return;\n onClick?.();\n };\n\n return (\n <Stack\n gap=\"xs\"\n padding=\"compact\"\n borderRadius=\"compact\"\n borderWidth=\"1px\"\n borderColor={isSelected ? \"border.accent\" : \"border\"}\n width=\"100%\"\n background=\"bg\"\n transition=\"border-color 0.2s ease-in-out, background 0.2s ease-in-out\"\n _hover={{ borderColor: isSelected ? \"border.accent\" : \"border.accent-light\" }}\n cursor={cursor}\n draggable={draggable}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onClick={onClick ? handleClick : undefined}\n data-selected={isSelected ? \"true\" : undefined}\n data-testid=\"renderer-card\"\n >\n {eyebrow || workspaceBadge ? (\n <HStack minW=\"0\" gap=\"2xs\">\n {eyebrow ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\" fontFamily=\"mono\" truncate>\n {eyebrow}\n </Text>\n ) : null}\n <HStack marginLeft=\"auto\">{workspaceBadge ? <WorkspaceBadge {...workspaceBadge} /> : null}</HStack>\n </HStack>\n ) : null}\n\n <Text textStyle=\"paragraph/S/regular\" minW=\"0\" overflowWrap=\"anywhere\">\n {title}\n </Text>\n\n {hasBadges && (\n <Wrap gap=\"2xs\">\n {badges.map((badge) => (\n <KanbanRendererAttributeBadge key={badge.attributeId} badge={badge} onChange={onBadgeChange} />\n ))}\n {customSlots}\n </Wrap>\n )}\n </Stack>\n );\n};\n","import { Badge, Box, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { type DragEvent, useState } from \"react\";\n\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport type { KanbanRendererBoardGroup } from \"./kanban-renderer-board\";\nimport { KanbanRendererCard } from \"./kanban-renderer-card\";\n\ninterface GroupSectionProps {\n columnId: string;\n group: KanbanRendererBoardGroup;\n selectedItemId: string | null;\n canDragIn: boolean;\n canDragOut: boolean;\n isDropTarget: boolean;\n onDragStart: (itemId: string) => (event: DragEvent<HTMLDivElement>) => void;\n onDragEnd: () => void;\n onGroupDragOver: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDragLeave: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDrop: (event: DragEvent<HTMLDivElement>, beforeItemId?: string) => void;\n}\n\nexport const GroupSection = (props: GroupSectionProps) => {\n const {\n columnId,\n group,\n selectedItemId,\n canDragIn,\n canDragOut,\n isDropTarget,\n onDragStart,\n onDragEnd,\n onGroupDragOver,\n onGroupDragLeave,\n onGroupDrop,\n } = props;\n const [expanded, setExpanded] = useState(true);\n\n return (\n <Stack\n data-column-id={columnId}\n data-group-key={group.key}\n gap=\"0\"\n borderRadius=\"sm\"\n background={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n transition=\"background 150ms ease\"\n onDragOver={canDragIn ? onGroupDragOver : undefined}\n onDragLeave={canDragIn ? onGroupDragLeave : undefined}\n onDrop={canDragIn ? onGroupDrop : undefined}\n >\n <HStack\n px=\"xs\"\n py=\"2xs\"\n gap=\"2xs\"\n cursor=\"pointer\"\n _hover={{ bg: \"bg.hover\" }}\n borderRadius=\"sm\"\n onClick={() => setExpanded((value) => !value)}\n >\n <Box display=\"flex\" alignItems=\"center\" flexShrink={0}>\n <Icon\n as={ChevronRight}\n boxSize=\"14px\"\n color=\"fg.muted\"\n transform={expanded ? \"rotate(90deg)\" : \"rotate(0deg)\"}\n transition=\"transform 0.15s ease\"\n />\n </Box>\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {group.label}\n </Text>\n <Badge variant=\"number\" colorPalette=\"gray\" size=\"sm\">\n {group.items.length}\n </Badge>\n </HStack>\n {expanded && (\n <Stack gap=\"xs\" pt=\"xs\">\n {group.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onGroupDrop(event, item.id);\n }\n : undefined\n }\n >\n <KanbanRendererCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={canDragOut}\n onDragStart={canDragOut ? onDragStart(item.id) : undefined}\n onDragEnd={canDragOut ? onDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { type ComponentProps, type ComponentType, type DragEvent, useState } from \"react\";\n\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { ColumnHeader } from \"./kanban-renderer-board-column-header\";\nimport { GroupSection } from \"./kanban-renderer-board-group-section\";\nimport { KanbanRendererCard } from \"./kanban-renderer-card\";\n\ntype KanbanRendererCardProps = ComponentProps<typeof KanbanRendererCard>;\n\nexport interface KanbanRendererBoardItem {\n id: string;\n cardProps: Omit<KanbanRendererCardProps, \"draggable\" | \"onDragStart\" | \"onDragEnd\" | \"isSelected\">;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface KanbanRendererBoardColumnAction {\n id: string;\n label: string;\n icon: ComponentType<{ size?: number | string }>;\n}\n\nexport interface KanbanRendererBoardGroup {\n key: string;\n label: string;\n items: KanbanRendererBoardItem[];\n}\n\nexport interface KanbanRendererBoardColumn {\n id: string;\n label: string;\n createLabel?: string;\n color?: string;\n icon?: string | null;\n items: KanbanRendererBoardItem[];\n groups?: KanbanRendererBoardGroup[];\n canDragIn: boolean;\n canDragOut: boolean;\n canCreate: boolean;\n actions: KanbanRendererBoardColumnAction[];\n}\n\ninterface KanbanRendererBoardProps {\n columns: KanbanRendererBoardColumn[];\n selectedItemId?: string | null;\n onMoveItem?: (\n itemId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => Promise<void> | void;\n onMoveToGroup?: (itemId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => Promise<void> | void;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const KanbanRendererBoard = (props: KanbanRendererBoardProps) => {\n const { columns, selectedItemId = null, onMoveItem, onMoveToGroup, onCreateStart, onColumnAction } = props;\n\n const [activeColumn, setActiveColumn] = useState<string | null>(null);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const handleDragStart = (itemId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(\"text/plain\", itemId);\n event.dataTransfer.effectAllowed = \"move\";\n };\n\n const handleDragEnd = () => {\n setActiveColumn(null);\n setActiveGroup(null);\n };\n\n const handleDragOver = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(columnId);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveColumn(null);\n };\n\n const handleDrop = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setActiveColumn(null);\n\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n\n onMoveItem?.(itemId, columnId);\n };\n\n return (\n <ScrollArea\n height=\"100%\"\n size=\"xs\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ display: \"flex\", alignItems: \"stretch\", gap: \"xs\", padding: \"xs\", minH: \"100%\" }}\n >\n {columns.map((column) => (\n <Stack\n key={column.id}\n data-testid={`board-column-${column.id}`}\n gap=\"xs\"\n padding=\"compact\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"sm\"\n background={activeColumn === column.id ? \"bg.active\" : \"bg.subtle\"}\n transition=\"background 150ms ease\"\n height=\"100%\"\n minH=\"240px\"\n overflow=\"hidden\"\n minW=\"260px\"\n flex=\"1 0 260px\"\n onDragOver={column.canDragIn ? handleDragOver(column.id) : undefined}\n onDragLeave={column.canDragIn ? handleDragLeave : undefined}\n onDrop={column.canDragIn ? handleDrop(column.id) : undefined}\n >\n <ColumnHeader column={column} onCreateStart={onCreateStart} onColumnAction={onColumnAction} />\n\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n size=\"xs\"\n verticalScrollbarProps={{ margin: \"0\" }}\n contentProps={{\n spaceY: \"xs\",\n }}\n >\n {column.groups && column.groups.length > 0\n ? column.groups.map((group) => {\n const groupId = `${column.id}::${group.key}`;\n return (\n <GroupSection\n key={group.key}\n columnId={column.id}\n group={group}\n selectedItemId={selectedItemId}\n canDragIn={column.canDragIn}\n canDragOut={column.canDragOut}\n isDropTarget={activeGroup === groupId}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onGroupDragOver={(event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveGroup(groupId);\n setActiveColumn(null);\n }}\n onGroupDragLeave={(event) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveGroup(null);\n }}\n onGroupDrop={(event, beforeItemId) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveGroup(null);\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n if (onMoveItem) {\n onMoveItem(itemId, column.id, { beforeItemId, targetGroupKey: group.key });\n return;\n }\n onMoveToGroup?.(itemId, group.key, { beforeItemId });\n }}\n />\n );\n })\n : column.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(column.id);\n }\n : undefined\n }\n onDrop={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onMoveItem?.(itemId, column.id, { beforeItemId: item.id });\n }\n : undefined\n }\n >\n <KanbanRendererCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={column.canDragOut}\n onDragStart={column.canDragOut ? handleDragStart(item.id) : undefined}\n onDragEnd={column.canDragOut ? handleDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </ScrollArea>\n </Stack>\n ))}\n </ScrollArea>\n );\n};\n","import { Box, HStack, Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { type ComponentType, type DragEvent, type ReactNode, useState } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowItem } from \"../list-row/list-row.types\";\nimport { KanbanRendererAttributeBadge } from \"./kanban-renderer-attribute-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\nexport interface KanbanRendererListItem {\n id: string;\n eyebrow?: string;\n title: string;\n isGroup?: boolean;\n countBadge?: number;\n countColorPalette?: string;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n statusColorPalette?: string;\n badges?: AttributeBadge[];\n customSlots?: ReactNode[];\n children?: KanbanRendererListItem[];\n onClick?: () => void;\n onBadgeChange?: (attributeId: string, value: unknown) => void;\n contextMenuActions?: ResourceContextAction[];\n draggable?: boolean;\n onDropRow?: (rowId: string) => void;\n}\n\nexport type KanbanRendererListExpandedState = Record<string, boolean>;\n\nexport interface KanbanRendererListProps {\n items: KanbanRendererListItem[];\n selectedItemId?: string | null;\n expandedGroups?: KanbanRendererListExpandedState;\n onItemClick?: (item: KanbanRendererListItem) => void;\n onExpandedGroupChange?: (rowId: string, isExpanded: boolean) => void;\n}\n\nconst INDENT_STEP_PX = 12;\n\ninterface FlattenedKanbanRendererListItem {\n id: string;\n item: KanbanRendererListItem;\n depth: number;\n isGroup: boolean;\n canExpand: boolean;\n}\n\nexport const getKanbanRendererListIndentation = (depth: number) => {\n if (depth <= 0) return undefined;\n return `${depth * INDENT_STEP_PX}px`;\n};\n\nexport const flattenKanbanRendererListItems = (\n items: KanbanRendererListItem[],\n expanded: KanbanRendererListExpandedState,\n depth = 0,\n) => {\n const rows: FlattenedKanbanRendererListItem[] = [];\n\n for (const item of items) {\n const canExpand = (item.children?.length ?? 0) > 0;\n rows.push({\n id: item.id,\n item,\n depth,\n isGroup: item.isGroup === true,\n canExpand,\n });\n\n if (canExpand && getRowIsExpanded(expanded, item.id)) {\n rows.push(...flattenKanbanRendererListItems(item.children ?? [], expanded, depth + 1));\n }\n }\n\n return rows;\n};\n\nconst getDropTargetIndicatorProps = (isDropTarget: boolean, isGroup: boolean) => {\n if (!isDropTarget) return undefined;\n\n return {\n _before: {\n content: '\"\"',\n position: \"absolute\",\n bg: \"border.accent\",\n left: \"0\",\n top: \"0\",\n width: isGroup ? \"3px\" : \"100%\",\n height: isGroup ? \"100%\" : \"2px\",\n },\n } as const;\n};\n\nconst getRowIsExpanded = (expandedState: KanbanRendererListExpandedState, rowId: string) => {\n return expandedState[rowId] !== false;\n};\n\nconst updateExpandedState = (expandedState: KanbanRendererListExpandedState, rowId: string, isExpanded: boolean) => {\n return { ...expandedState, [rowId]: isExpanded };\n};\n\nconst renderLabel = (item: KanbanRendererListItem, isGroup: boolean) => {\n if (isGroup) {\n return (\n <HStack gap=\"xs\" minW=\"0\" maxW=\"full\" flex=\"1\">\n <Text textStyle=\"label/S/medium\" minW=\"0\" truncate>\n {item.title}\n </Text>\n <Text textStyle=\"label/XS\" color=\"fg.muted\" flexShrink={0}>\n {item.countBadge}\n </Text>\n </HStack>\n );\n }\n\n return (\n <HStack gap=\"compact\" minW=\"0\" maxW=\"full\" flex=\"1\">\n {item.eyebrow ? (\n <Text data-testid=\"list-row-eyebrow\" flexShrink={0} textStyle=\"mono/XS\" color=\"fg.muted\" truncate>\n {item.eyebrow}\n </Text>\n ) : null}\n <Text textStyle=\"paragraph/S/regular\" minW=\"0\" truncate>\n {item.title}\n </Text>\n </HStack>\n );\n};\n\nconst renderEndContent = (item: KanbanRendererListItem) => {\n const hasBadges = (item.badges?.length ?? 0) > 0 || (item.customSlots?.length ?? 0) > 0;\n\n if (!hasBadges) return null;\n\n return (\n <HStack gap=\"xs\" flexShrink={0}>\n <Wrap gap=\"2xs\" flexShrink={0}>\n {item.badges?.map((badge) => (\n <KanbanRendererAttributeBadge key={badge.attributeId} badge={badge} onChange={item.onBadgeChange} />\n ))}\n {item.customSlots}\n </Wrap>\n </HStack>\n );\n};\n\nconst buildListRowItem = (item: KanbanRendererListItem, hasChildren: boolean): ListRowItem => ({\n id: item.id,\n label: renderLabel(item, item.isGroup === true),\n icon: item.statusIcon ? (\n <Icon\n data-testid={item.isGroup ? \"list-status-icon\" : \"row-status-icon\"}\n as={item.statusIcon}\n boxSize=\"1rem\"\n colorPalette={item.statusColorPalette ?? item.countColorPalette ?? \"gray\"}\n color={item.statusColor ?? (item.isGroup || item.statusColorPalette ? \"colorPalette.solid\" : \"fg.muted\")}\n />\n ) : undefined,\n endContent: renderEndContent(item),\n isContainer: hasChildren,\n contextMenuItems: item.contextMenuActions?.map((action) => ({\n id: action.key,\n label: action.label,\n icon: action.icon ?? undefined,\n disabled: action.isDisabled,\n separatorBefore: action.separatorBefore,\n endContent: action.endContent,\n onAction: action.onClick,\n })),\n});\n\nexport const KanbanRendererList = (props: KanbanRendererListProps) => {\n const { items, selectedItemId = null, expandedGroups, onItemClick, onExpandedGroupChange } = props;\n const [localExpandedGroups, setLocalExpandedGroups] = useState<KanbanRendererListExpandedState>({});\n const [activeDropTargetId, setActiveDropTargetId] = useState<string | null>(null);\n const [draggedItemId, setDraggedItemId] = useState<string | null>(null);\n const expanded = expandedGroups ?? localExpandedGroups;\n const rows = flattenKanbanRendererListItems(items, expanded);\n\n const handleExpandedChange = (rowId: string, isExpanded: boolean) => {\n onExpandedGroupChange?.(rowId, isExpanded);\n if (expandedGroups === undefined) {\n setLocalExpandedGroups((current) => updateExpandedState(current, rowId, isExpanded));\n }\n };\n\n return (\n <Box>\n {rows.map((row) => (\n <KanbanRendererListRow\n key={row.id}\n row={row}\n isExpanded={getRowIsExpanded(expanded, row.id)}\n selectedItemId={selectedItemId}\n activeDropTargetId={activeDropTargetId}\n draggedItemId={draggedItemId}\n onDraggedItemChange={setDraggedItemId}\n onDropTargetChange={setActiveDropTargetId}\n onItemClick={onItemClick}\n onExpandedChange={handleExpandedChange}\n />\n ))}\n </Box>\n );\n};\n\ninterface KanbanRendererListRowProps {\n row: FlattenedKanbanRendererListItem;\n isExpanded: boolean;\n selectedItemId: string | null;\n activeDropTargetId: string | null;\n draggedItemId: string | null;\n onDraggedItemChange: (itemId: string | null) => void;\n onDropTargetChange: (itemId: string | null) => void;\n onExpandedChange: (rowId: string, isExpanded: boolean) => void;\n onItemClick?: (item: KanbanRendererListItem) => void;\n}\n\nconst KanbanRendererListRow = (props: KanbanRendererListRowProps) => {\n const {\n row,\n isExpanded,\n selectedItemId,\n activeDropTargetId,\n draggedItemId,\n onDraggedItemChange,\n onDropTargetChange,\n onItemClick,\n onExpandedChange,\n } = props;\n const { item, isGroup, canExpand } = row;\n const isSelected = item.id === selectedItemId;\n const canDropHere = Boolean(item.onDropRow) && item.id !== draggedItemId;\n const isDropTarget = canDropHere && item.id === activeDropTargetId;\n const rowItem = buildListRowItem(item, canExpand);\n const toggleExpanded = () => onExpandedChange(row.id, !isExpanded);\n\n const handleActivate = () => {\n if (canExpand) {\n toggleExpanded();\n return;\n }\n if (isGroup) return;\n item.onClick?.();\n onItemClick?.(item);\n };\n\n const handleDragStart = (event: DragEvent<HTMLDivElement>) => {\n if (!item.draggable) return;\n event.stopPropagation();\n event.dataTransfer.setData(\"text/plain\", item.id);\n event.dataTransfer.effectAllowed = \"move\";\n onDraggedItemChange(item.id);\n onDropTargetChange(null);\n };\n\n const handleDragOver = (event: DragEvent<HTMLDivElement>) => {\n if (!canDropHere) return;\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n onDropTargetChange(item.id);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n onDropTargetChange(null);\n };\n\n const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n if (!canDropHere || !item.onDropRow) return;\n event.preventDefault();\n event.stopPropagation();\n onDropTargetChange(null);\n onDraggedItemChange(null);\n const draggedId = event.dataTransfer.getData(\"text/plain\");\n if (!draggedId || draggedId === item.id) return;\n item.onDropRow(draggedId);\n };\n\n const handleDragEnd = () => {\n onDropTargetChange(null);\n onDraggedItemChange(null);\n };\n\n return (\n <Box\n data-drop-target={isDropTarget ? \"true\" : undefined}\n position=\"relative\"\n borderBottomWidth=\"1px\"\n borderBottomColor=\"border.subtle\"\n bg={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n draggable={item.draggable}\n transition=\"background 120ms ease\"\n {...getDropTargetIndicatorProps(isDropTarget, canExpand)}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragLeave={item.onDropRow ? handleDragLeave : undefined}\n onDragEnd={handleDragEnd}\n onDrop={handleDrop}\n >\n <ListRow\n {...rowItem}\n aria-label={isGroup ? undefined : item.title}\n variant={isGroup ? \"compact\" : \"collection\"}\n depth={row.depth}\n isSelected={isSelected}\n isExpanded={isExpanded}\n showExpandToggle={canExpand}\n showContextMenuTrigger={false}\n onActivate={handleActivate}\n onToggleExpand={toggleExpanded}\n />\n </Box>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { KanbanRendererBoard, type KanbanRendererBoardColumn } from \"./kanban-renderer-board\";\nimport { KanbanRendererList, type KanbanRendererListItem } from \"./kanban-renderer-list\";\nimport type { KanbanRendererSettings } from \"./types\";\n\ninterface KanbanRendererEmptyStateProps {\n emptyState?: ReactNode;\n title: string;\n description?: string;\n height?: string;\n}\n\ninterface KanbanRendererContentProps {\n viewMode: KanbanRendererSettings[\"viewMode\"];\n boardColumns: KanbanRendererBoardColumn[];\n listItems: KanbanRendererListItem[];\n listExpandedGroups: Record<string, boolean>;\n selectedRowId: string | null;\n emptyState?: ReactNode;\n emptyTitle: string;\n emptyDescription?: string;\n onBoardMoveItem: (\n rowId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => Promise<void> | void;\n onBoardMoveToGroup: (\n rowId: string,\n targetGroupKey: string,\n context?: { beforeItemId?: string },\n ) => Promise<void> | void;\n onCreateRow?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n onListExpandedGroupChange: (rowId: string, isExpanded: boolean) => void;\n listKey: string;\n}\n\nconst KanbanRendererEmptyState = (props: KanbanRendererEmptyStateProps) => {\n const { emptyState, title, description, height } = props;\n\n if (emptyState !== undefined) {\n return height ? <Box height={height}>{emptyState}</Box> : emptyState;\n }\n\n return <EmptyState title={title} description={description} height={height} />;\n};\n\nexport const KanbanRendererContent = (props: KanbanRendererContentProps) => {\n const {\n viewMode,\n boardColumns,\n listItems,\n listExpandedGroups,\n selectedRowId,\n emptyState,\n emptyTitle,\n emptyDescription,\n onBoardMoveItem,\n onBoardMoveToGroup,\n onCreateRow,\n onColumnAction,\n onListExpandedGroupChange,\n listKey,\n } = props;\n\n if (viewMode === \"board\") {\n return (\n <Box flex=\"1\" minH=\"0\">\n {boardColumns.length > 0 ? (\n <KanbanRendererBoard\n columns={boardColumns}\n selectedItemId={selectedRowId}\n onMoveItem={onBoardMoveItem}\n onMoveToGroup={onBoardMoveToGroup}\n onCreateStart={onCreateRow}\n onColumnAction={onColumnAction}\n />\n ) : (\n <KanbanRendererEmptyState\n emptyState={emptyState}\n title={emptyTitle}\n description={emptyDescription}\n height=\"100%\"\n />\n )}\n </Box>\n );\n }\n\n if (listItems.length > 0) {\n return (\n <KanbanRendererList\n key={listKey}\n items={listItems}\n selectedItemId={selectedRowId}\n expandedGroups={listExpandedGroups}\n onExpandedGroupChange={onListExpandedGroupChange}\n />\n );\n }\n\n return <KanbanRendererEmptyState emptyState={emptyState} title={emptyTitle} description={emptyDescription} />;\n};\n","import { Box, HStack, Stack, Text, VStack } from \"@chakra-ui/react\";\nimport type { InputGroup, Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorField } from \"./param-editor-field\";\nimport { isParamEditorHorizontalControl, isParamEditorRichControl } from \"./param-editor-presentation\";\n\nexport interface ParamEditorHorizontalProps {\n params?: Param[];\n groups?: InputGroup[];\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n variant?: \"default\" | \"small\";\n}\n\ninterface HorizontalGroupProps {\n group: InputGroup;\n params: Param[];\n renderParam: (param: Param) => React.ReactNode;\n variant: \"default\" | \"small\";\n width?: \"auto\" | \"full\";\n}\n\nconst HorizontalGroupTitle = (props: { children: string }) => {\n const { children } = props;\n\n return (\n <Text\n minH=\"0.75rem\"\n textStyle=\"label/XS\"\n color=\"fg.muted\"\n lineHeight=\"1\"\n letterSpacing=\"0.08em\"\n textTransform=\"uppercase\"\n >\n {children}\n </Text>\n );\n};\n\nconst HorizontalGroup = (props: HorizontalGroupProps) => {\n const { group, params, renderParam, variant, width = \"auto\" } = props;\n\n return (\n <VStack\n as=\"section\"\n aria-label={group.title}\n gap={variant === \"small\" ? \"2xs\" : \"xs\"}\n alignItems=\"start\"\n minW=\"0\"\n width={width}\n >\n <HorizontalGroupTitle>{group.title}</HorizontalGroupTitle>\n <HStack gap={variant === \"small\" ? \"2xs\" : \"xs\"} flexWrap=\"wrap\" alignItems=\"start\" minW=\"0\" width={width}>\n {params.map(renderParam)}\n </HStack>\n </VStack>\n );\n};\n\nexport const ParamEditorHorizontal = (props: ParamEditorHorizontalProps) => {\n const { params = [], groups = [], defaultValues, onChange, onOpenResource, readOnly, variant = \"default\" } = props;\n const horizontalParams = params.filter(isParamEditorHorizontalControl);\n const horizontalGroups = groups.map((group) => ({\n ...group,\n params: group.params.filter(isParamEditorHorizontalControl),\n }));\n const renderParam = (param: Param) => (\n <ParamEditorField\n key={param.id}\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n presentation=\"horizontal\"\n size={variant === \"small\" ? \"xs\" : \"sm\"}\n />\n );\n const compactParams = horizontalParams.filter((param) => !isParamEditorRichControl(param));\n const richParams = horizontalParams.filter(isParamEditorRichControl);\n const compactGroups = horizontalGroups\n .map((group) => ({ group, params: group.params.filter((param) => !isParamEditorRichControl(param)) }))\n .filter(({ params: groupParams }) => groupParams.length > 0);\n const richGroups = horizontalGroups\n .map((group) => ({ group, params: group.params.filter(isParamEditorRichControl) }))\n .filter(({ params: groupParams }) => groupParams.length > 0);\n const gap = variant === \"small\" ? \"xs\" : \"sm\";\n const hasCompactControls = compactParams.length > 0 || compactGroups.length > 0;\n\n return (\n <Stack flex=\"1\" maxW=\"full\" gap={gap} minW=\"0\">\n {hasCompactControls ? (\n <HStack gap={gap} flexWrap=\"wrap\" alignItems=\"start\" minW=\"0\">\n {compactParams.map(renderParam)}\n {compactGroups.map(({ group, params: groupParams }) => (\n <HorizontalGroup\n key={group.id}\n group={group}\n params={groupParams}\n renderParam={renderParam}\n variant={variant}\n />\n ))}\n </HStack>\n ) : null}\n\n {richParams.map((param) => (\n <Box key={param.id} width=\"full\" minW=\"0\">\n {renderParam(param)}\n </Box>\n ))}\n\n {richGroups.map(({ group, params: groupParams }) => (\n <HorizontalGroup\n key={`${group.id}-rich`}\n group={group}\n params={groupParams}\n renderParam={renderParam}\n variant={variant}\n width=\"full\"\n />\n ))}\n </Stack>\n );\n};\n","import { Button, Icon, Input, Stack, Text, Textarea, Wrap } from \"@chakra-ui/react\";\nimport { Paperclip } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { AttachmentChip } from \"@/components/overlays/attachment-chip\";\nimport { SelectionInput } from \"@/components/param-editor/inputs/selection-input\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport type { KanbanRendererCreateField } from \"./types\";\n\n// The editor and its syntax highlighting are heavy and only needed once a\n// markdown field is actually on screen, so the host loads them on demand.\nconst MarkdownControl = (props: {\n disabled: boolean;\n field: KanbanRendererCreateField;\n onChange: (value: unknown) => void;\n}) => {\n const { disabled, field, onChange } = props;\n\n return (\n <LazyMarkdownEditor\n // Seed from the declared default so a pre-filled field is visible rather\n // than blank-but-submittable. Lexical reads this once, on mount.\n defaultState={typeof field.defaultValue === \"string\" ? field.defaultValue : \"\"}\n isEditable={!disabled}\n placeholder={field.placeholder}\n autoFocus\n onChange={(next) => onChange(next)}\n />\n );\n};\n\nconst FilesControl = (props: {\n disabled: boolean;\n field: KanbanRendererCreateField;\n removeLabel: string;\n value: unknown;\n onChange: (value: unknown) => void;\n}) => {\n const { disabled, field, removeLabel, value, onChange } = props;\n const input = useRef<HTMLInputElement>(null);\n const files = Array.isArray(value) ? (value as File[]) : [];\n\n return (\n <Stack gap=\"2xs\" align=\"start\">\n <input\n ref={input}\n hidden\n type=\"file\"\n accept={field.accept}\n multiple={field.multiple !== false}\n // Appending keeps earlier picks; replacing silently discards them. A\n // single-file field replaces instead, so it can never hold two.\n onChange={(event) => {\n const picked = Array.from(event.target.files ?? []);\n onChange(field.multiple === false ? picked.slice(0, 1) : [...files, ...picked]);\n event.target.value = \"\";\n }}\n />\n <Button size=\"xs\" variant=\"ghost\" disabled={disabled} onClick={() => input.current?.click()}>\n <Icon as={Paperclip} boxSize=\"4\" />\n {field.label}\n </Button>\n {files.length > 0 ? (\n <Wrap gap=\"2xs\">\n {files.map((file, index) => (\n <AttachmentChip\n key={`${file.name}-${index.toString()}`}\n file={file}\n disabled={disabled}\n removeLabel={removeLabel}\n onRemove={() => onChange(files.filter((_, itemIndex) => itemIndex !== index))}\n />\n ))}\n </Wrap>\n ) : null}\n </Stack>\n );\n};\n\ninterface CreateFieldControlProps {\n disabled: boolean;\n field: KanbanRendererCreateField;\n removeLabel: string;\n value: unknown;\n onChange: (value: unknown) => void;\n}\n\nconst FieldInput = (props: CreateFieldControlProps) => {\n const { disabled, field, value, onChange } = props;\n\n if (field.type === \"longtext\")\n return (\n <Textarea\n aria-label={field.label}\n minH=\"120px\"\n size=\"sm\"\n placeholder={field.placeholder}\n value={typeof value === \"string\" ? value : \"\"}\n disabled={disabled}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n\n // Declared selects share the ParamEditor's control, so they look and behave\n // exactly like the resource attributes rendered beside them.\n if (field.type === \"select\" || field.type === \"multi-select\")\n return (\n <SelectionInput\n hideLabel\n id={field.id}\n name={field.label}\n description={field.description ?? \"\"}\n defaultValue={(value as string | string[]) ?? (field.type === \"multi-select\" ? [] : \"\")}\n options={(field.options ?? []).map((option) => ({\n id: option.value,\n name: option.label,\n icon: option.icon ?? undefined,\n color: option.color,\n }))}\n multiSelect={field.type === \"multi-select\"}\n placeholder={field.placeholder ?? field.label}\n clearable={!field.required}\n readOnly={disabled}\n onChange={(_, next) => onChange(next)}\n />\n );\n\n if (field.type === \"boolean\")\n return (\n <Button size=\"sm\" variant=\"outline\" disabled={disabled} onClick={() => onChange(value !== true)}>\n {field.label}\n </Button>\n );\n\n return (\n <Input\n aria-label={field.label}\n size=\"sm\"\n type={field.type === \"number\" ? \"number\" : \"text\"}\n placeholder={field.placeholder}\n value={typeof value === \"string\" || typeof value === \"number\" ? value : \"\"}\n disabled={disabled}\n onChange={(event) =>\n onChange(field.type === \"number\" && event.target.value ? Number(event.target.value) : event.target.value)\n }\n />\n );\n};\n\nexport const CreateFieldControl = (props: CreateFieldControlProps) => {\n const { disabled, field, removeLabel, value, onChange } = props;\n\n // Files and markdown carry their own trigger label / placeholder, so the\n // stacked label above them would just repeat it.\n if (field.type === \"files\")\n return (\n <FilesControl disabled={disabled} field={field} removeLabel={removeLabel} value={value} onChange={onChange} />\n );\n\n if (field.type === \"markdown\") return <MarkdownControl disabled={disabled} field={field} onChange={onChange} />;\n\n return (\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/S/medium\">{`${field.label}${field.required ? \" *\" : \"\"}`}</Text>\n {field.description ? (\n <Text textStyle=\"paragraph/XS/regular\" color=\"fg.muted\">\n {field.description}\n </Text>\n ) : null}\n <FieldInput {...props} />\n </Stack>\n );\n};\n","import { Button, CloseButton, Dialog, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { handleDialogAcceptShortcut } from \"@/components/overlays/dialog-accept-shortcut\";\nimport type { Param, ParamValueMap } from \"@/components/param-editor/param-editor.types\";\nimport { ParamEditorHorizontal } from \"@/components/param-editor/param-editor-horizontal\";\nimport { CreateFieldControl } from \"./kanban-renderer-create-field\";\nimport { getEnumOptions } from \"./kanban-renderer-helpers\";\nimport type {\n AttributeDescriptor,\n KanbanRendererCreateField,\n KanbanRendererCreateRowConfig,\n KanbanRendererCreateSubmission,\n} from \"./types\";\n\ninterface KanbanRendererCreateDialogProps {\n open: boolean;\n columnId: string;\n columnAttributeId?: string;\n attributes: AttributeDescriptor[];\n config: KanbanRendererCreateRowConfig;\n onClose: () => void;\n onSubmit: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;\n}\n\nconst emptyValue = (field: KanbanRendererCreateField) => {\n if (field.type === \"files\" || field.type === \"multi-select\") return [];\n if (field.type === \"boolean\") return false;\n return \"\";\n};\n\nconst initialFieldValues = (fields: KanbanRendererCreateField[]) =>\n Object.fromEntries(fields.map((field) => [field.id, field.defaultValue ?? emptyValue(field)]));\n\nconst isFilled = (field: KanbanRendererCreateField, value: unknown) => {\n if (!field.required) return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === \"string\") return value.trim().length > 0;\n return value !== undefined && value !== null;\n};\n\n// Every editable attribute is offered, whatever its kind — narrowing to enums\n// silently drops editable user/date/number attributes from the create form.\nconst editableCreateAttributes = (attributes: AttributeDescriptor[]) =>\n attributes.filter((attribute) => attribute.editable);\n\nconst initialAttributeValues = (\n attributes: AttributeDescriptor[],\n columnAttributeId: string | undefined,\n columnId: string,\n) =>\n Object.fromEntries(\n attributes.map((attribute) => [\n attribute.id,\n attribute.id === columnAttributeId ? columnId : attribute.type.kind === \"enum-multi\" ? [] : \"\",\n ]),\n );\n\n/**\n * Editable attributes render through the ParamEditor so a resource property and\n * a command param are the same control, not two that merely resemble each other.\n */\nconst attributeToParam = (attribute: AttributeDescriptor, locked: boolean): Param => {\n const base = { id: attribute.id, name: attribute.label, description: \"\" };\n\n if (attribute.type.kind === \"enum\" || attribute.type.kind === \"enum-multi\") {\n const multiSelect = attribute.type.kind === \"enum-multi\";\n return {\n ...base,\n type: \"selection\",\n defaultValue: multiSelect ? [] : \"\",\n multiSelect,\n // The trigger shows the value alone; the attribute name is the placeholder.\n placeholder: attribute.label,\n clearable: !locked,\n // The column already chose this value, and the create command reads it\n // from the column param — editing it here would be ignored.\n disabled: locked,\n options: getEnumOptions(attribute.type).map((option) => ({\n id: option.value,\n name: option.label,\n icon: option.icon ?? undefined,\n color: option.color,\n })),\n };\n }\n\n if (attribute.type.kind === \"number\") return { ...base, type: \"number\", defaultValue: 0 };\n return { ...base, type: \"text\", defaultValue: \"\", singleLine: true };\n};\n\nexport const KanbanRendererCreateDialog = (props: KanbanRendererCreateDialogProps) => {\n const { open, columnId, columnAttributeId, attributes, config, onClose, onSubmit } = props;\n const [values, setValues] = useState<Record<string, unknown>>({});\n const [attributeValues, setAttributeValues] = useState<Record<string, unknown>>({});\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState(\"\");\n // Uncontrolled editors (Lexical) read their seed once on mount, so a reset has\n // to remount the fields or the old text stays on screen over fresh state.\n const [resetToken, setResetToken] = useState(0);\n const initializedRef = useRef(false);\n const editableAttributes = editableCreateAttributes(attributes);\n\n // Opening is the only thing that clears the form. Attributes and fields can\n // arrive or change while it is open (they come from live sources), so this\n // runs once per open cycle — resetting on those would wipe what was typed.\n useEffect(() => {\n if (!open) {\n initializedRef.current = false;\n return;\n }\n if (initializedRef.current) return;\n initializedRef.current = true;\n\n setValues(initialFieldValues(config.fields));\n setAttributeValues(initialAttributeValues(editableCreateAttributes(attributes), columnAttributeId, columnId));\n setError(\"\");\n setResetToken((token) => token + 1);\n }, [attributes, columnAttributeId, columnId, config.fields, open]);\n\n // Fields can be added or withdrawn while the dialog is open. Seed the new\n // ones and drop the withdrawn, so what is submitted always matches what is\n // rendered — but leave everything the user has already filled in alone.\n useEffect(() => {\n if (!open) return;\n const seeded = initialFieldValues(config.fields);\n const declared = new Set(config.fields.map((field) => field.id));\n setValues((current) => {\n const kept = Object.entries(current).filter(([id]) => declared.has(id));\n const added = Object.entries(seeded).filter(([id]) => !(id in current));\n if (added.length === 0 && kept.length === Object.keys(current).length) return current;\n return { ...Object.fromEntries(added), ...Object.fromEntries(kept) };\n });\n }, [config.fields, open]);\n\n // Same contract for attributes: seed the ones that appear after opening, drop\n // the ones withdrawn. A withdrawn entry left behind would still be submitted\n // even though its control is gone.\n useEffect(() => {\n if (!open) return;\n const editable = editableCreateAttributes(attributes);\n const seeded = initialAttributeValues(editable, columnAttributeId, columnId);\n const declared = new Set(editable.map((attribute) => attribute.id));\n setAttributeValues((current) => {\n const kept = Object.entries(current).filter(([id]) => declared.has(id));\n const added = Object.entries(seeded).filter(([id]) => !(id in current));\n if (added.length === 0 && kept.length === Object.keys(current).length) return current;\n return { ...Object.fromEntries(added), ...Object.fromEntries(kept) };\n });\n }, [attributes, open, columnId, columnAttributeId]);\n\n const close = () => {\n if (!submitting) onClose();\n };\n\n const valid = config.fields.every((field) => isFilled(field, values[field.id]));\n\n const submit = async () => {\n if (!valid || submitting) return;\n setSubmitting(true);\n setError(\"\");\n try {\n const fileFieldIds = new Set(config.fields.filter((field) => field.type === \"files\").map((field) => field.id));\n const files = [...fileFieldIds].flatMap((id) => (Array.isArray(values[id]) ? (values[id] as File[]) : []));\n const declaredValues = Object.fromEntries(Object.entries(values).filter(([id]) => !fileFieldIds.has(id)));\n\n await onSubmit({ columnId, columnAttributeId, values: declaredValues, attributeValues, files });\n onClose();\n } catch (caught) {\n setError(caught instanceof Error ? caught.message : config.labels.submitError);\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <Dialog.Root open={open} size=\"lg\" scrollBehavior=\"inside\" onOpenChange={(details) => !details.open && close()}>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content\n maxH=\"calc(100% - 48px)\"\n onKeyDownCapture={(event) => handleDialogAcceptShortcut(event, () => void submit(), valid && !submitting)}\n >\n <Dialog.Header>\n <Dialog.Title>{config.title}</Dialog.Title>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" disabled={submitting} />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n {config.fields.map((field) => (\n <CreateFieldControl\n key={`${field.id}:${resetToken.toString()}`}\n field={field}\n removeLabel={config.labels.removeFile}\n value={values[field.id]}\n disabled={submitting}\n onChange={(value) => setValues((current) => ({ ...current, [field.id]: value }))}\n />\n ))}\n {editableAttributes.length > 0 ? (\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/S/medium\">{config.labels.properties}</Text>\n <ParamEditorHorizontal\n variant=\"small\"\n params={editableAttributes.map((attribute) =>\n attributeToParam(attribute, attribute.id === columnAttributeId),\n )}\n defaultValues={attributeValues as ParamValueMap}\n readOnly={submitting}\n onChange={(attributeId, value) =>\n setAttributeValues((current) => ({ ...current, [attributeId]: value }))\n }\n />\n </Stack>\n ) : null}\n {error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.error\">\n {error}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer justifyContent=\"end\">\n <HStack gap=\"2\">\n <Button size=\"sm\" variant=\"ghost\" disabled={submitting} onClick={close}>\n {config.labels.cancel}\n </Button>\n <Button size=\"sm\" variant=\"primary\" disabled={!valid} loading={submitting} onClick={() => void submit()}>\n {config.submitLabel}\n </Button>\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport { type KanbanRendererColumnGroup, orderRows } from \"./kanban-renderer-grouping\";\nimport {\n collectDisplayBadges,\n collectDisplayCustomSlots,\n findEnumOption,\n resolveListDropTargetColumnKey,\n} from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererListItem } from \"./kanban-renderer-list\";\nimport type { AttributeDescriptor, KanbanRendererRow, KanbanRendererSettings } from \"./types\";\nimport { findAttribute, MANUAL_ORDERING, NO_GROUPING } from \"./types\";\n\ninterface BuildKanbanRendererListItemsInput<TRow extends KanbanRendererRow> {\n settings: KanbanRendererSettings;\n visibleRows: TRow[];\n grouped: KanbanRendererColumnGroup[];\n attributes: AttributeDescriptor[];\n onRowClick?: (row: TRow) => void;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];\n}\n\nexport const buildKanbanRendererListItems = <TRow extends KanbanRendererRow>(\n input: BuildKanbanRendererListItemsInput<TRow>,\n) => {\n const {\n settings,\n visibleRows,\n grouped,\n attributes,\n onRowClick,\n onAttributeChange,\n onReorder,\n getRowContextMenuActions,\n } = input;\n const supportsManualReorder = settings.ordering.attributeId === MANUAL_ORDERING;\n const listDisplayProperties = settings.displayProperties.filter((property) => property !== \"id\");\n const getStatusPresentation = (attributeId: string, key: string) => {\n const descriptor = findAttribute(attributes, attributeId);\n const option = descriptor ? findEnumOption(descriptor.type, key) : undefined;\n return {\n statusColorPalette: option?.color,\n statusIcon: getIconComponent(option?.icon),\n };\n };\n const getRowStatusPresentation = (row: TRow) => {\n const status = row.attributes.status;\n if (typeof status !== \"string\") return {};\n return getStatusPresentation(\"status\", status);\n };\n\n const toListItem = (row: TRow, placement?: { columnKey?: string; rowKey?: string }): KanbanRendererListItem => {\n const shorthand = typeof row.attributes.id === \"string\" ? row.attributes.id : undefined;\n\n return {\n id: row.id,\n eyebrow: shorthand && shorthand !== row.title ? shorthand : undefined,\n title: row.title,\n ...getRowStatusPresentation(row),\n badges: collectDisplayBadges(row, attributes, listDisplayProperties),\n customSlots: collectDisplayCustomSlots(row, attributes, listDisplayProperties),\n contextMenuActions: getRowContextMenuActions?.(row),\n onClick: () => onRowClick?.(row),\n onBadgeChange: onAttributeChange\n ? (attributeId: string, value: unknown) => onAttributeChange(row.id, attributeId, value)\n : undefined,\n draggable: Boolean(onAttributeChange || onReorder),\n onDropRow:\n supportsManualReorder && (onAttributeChange || onReorder)\n ? (draggedId) => {\n const targetColumnKey = resolveListDropTargetColumnKey(settings.columnGrouping, placement);\n if (targetColumnKey && settings.columnGrouping !== NO_GROUPING && onAttributeChange) {\n onAttributeChange(draggedId, settings.columnGrouping, targetColumnKey);\n }\n if (settings.rowGrouping !== NO_GROUPING && placement?.rowKey && onAttributeChange) {\n onAttributeChange(draggedId, settings.rowGrouping, placement.rowKey);\n }\n onReorder?.(draggedId, row.id);\n }\n : undefined,\n };\n };\n\n const toGroupListItem = (\n group: { key: string; label: string; rows: KanbanRendererRow[] },\n parent?: { columnKey: string },\n ): KanbanRendererListItem => {\n const groupingAttributeId = parent ? settings.rowGrouping : settings.columnGrouping;\n return {\n id: parent ? `group::${parent.columnKey}::${group.key}` : `group::${group.key}`,\n title: group.label,\n isGroup: true,\n countBadge: group.rows.length,\n ...getStatusPresentation(groupingAttributeId, group.key),\n onDropRow:\n onAttributeChange && settings.columnGrouping !== NO_GROUPING\n ? (draggedId) => {\n const columnKey = parent?.columnKey ?? group.key;\n onAttributeChange(draggedId, settings.columnGrouping, columnKey);\n if (settings.rowGrouping !== NO_GROUPING && parent) {\n onAttributeChange(draggedId, settings.rowGrouping, group.key);\n }\n }\n : undefined,\n children: orderRows(group.rows, settings.ordering, attributes).map((row) =>\n toListItem(row as TRow, {\n columnKey: parent?.columnKey ?? group.key,\n rowKey: parent ? group.key : undefined,\n }),\n ),\n };\n };\n\n if (settings.columnGrouping === NO_GROUPING) {\n return orderRows(visibleRows, settings.ordering, attributes).map((row) => toListItem(row as TRow));\n }\n\n return grouped.map((column) =>\n column.subgroups.length > 0\n ? {\n id: `group::${column.key}`,\n title: column.label,\n isGroup: true,\n countBadge: column.rows.length,\n ...getStatusPresentation(settings.columnGrouping, column.key),\n onDropRow: onAttributeChange\n ? (draggedId: string) => onAttributeChange(draggedId, settings.columnGrouping, column.key)\n : undefined,\n children: column.subgroups.map((group) => toGroupListItem(group, { columnKey: column.key })),\n }\n : toGroupListItem(column),\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\n\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type {\n KanbanRendererBoardColumn,\n KanbanRendererBoardColumnAction,\n KanbanRendererBoardGroup,\n} from \"./kanban-renderer-board\";\nimport { applyBoardMoveItem, applyBoardMoveToGroup } from \"./kanban-renderer-board-move\";\nimport { KanbanRendererContent } from \"./kanban-renderer-content\";\nimport { KanbanRendererCreateDialog } from \"./kanban-renderer-create-dialog\";\nimport { filterRows, groupRows, orderRows } from \"./kanban-renderer-grouping\";\nimport {\n collectDisplayBadges,\n collectDisplayCustomSlots,\n findEnumOption,\n resolveKnownColumnKeys,\n} from \"./kanban-renderer-helpers\";\nimport { buildKanbanRendererListItems } from \"./kanban-renderer-list-items\";\nimport { KanbanRendererToolbar } from \"./kanban-renderer-toolbar\";\nimport type {\n AttributeDescriptor,\n KanbanRendererCreateRowConfig,\n KanbanRendererCreateSubmission,\n KanbanRendererFilterState,\n KanbanRendererRow,\n KanbanRendererSavedView,\n KanbanRendererSettings,\n} from \"./types\";\nimport { findAttribute, NO_GROUPING } from \"./types\";\nimport { useKanbanRendererStore } from \"./use-kanban-renderer-store\";\nimport { useResolvedAttributes } from \"./use-resolved-attributes\";\n\n/** Board-column behavior and menu configuration for a resolved column group. */\nexport interface BoardColumnConfig {\n /** Chakra color palette used for the column header and group badges. */\n color?: string;\n canDragIn?: boolean;\n canDragOut?: boolean;\n canCreate?: boolean;\n actions?: KanbanRendererBoardColumnAction[];\n}\n\n/** Switchable list/board renderer for rows with typed attributes, filtering, grouping, and ordering. */\nexport interface KanbanRendererProps<TRow extends KanbanRendererRow = KanbanRendererRow> {\n /** Stable rows to render. Each row must have an id, title, and attributes map. */\n rows: TRow[];\n /** Persistent key used by the renderer store for view, filter, grouping, ordering, and list expansion settings. */\n storageKey: string;\n /** Attribute descriptors that define display, filtering, grouping, ordering, and board columns. */\n attributes: AttributeDescriptor[];\n selectedRowId?: string | null;\n emptyState?: ReactNode;\n emptyTitle?: string;\n emptyDescription?: string;\n /** Replaces the data area while a query is unavailable, keeping its controls mounted. */\n contentPlaceholder?: ReactNode;\n defaultSettings?: Partial<KanbanRendererSettings>;\n defaultFilters?: KanbanRendererFilterState;\n defaultViews?: KanbanRendererSavedView[];\n defaultActiveViewId?: string;\n hideToolbar?: boolean;\n toolbarLeading?: ReactNode;\n onRowClick?: (row: TRow) => void;\n /** Called when a row attribute changes through drag/drop, board movement, or inline controls. */\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n /** Called for manual row ordering when a dragged row is dropped before another row. */\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n createRow?: KanbanRendererCreateRowConfig;\n onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];\n}\n\nconst rowEyebrow = (row: KanbanRendererRow) => {\n const shorthand = row.attributes.id;\n return typeof shorthand === \"string\" && shorthand ? shorthand : row.id;\n};\n\nexport const KanbanRenderer = <TRow extends KanbanRendererRow>(props: KanbanRendererProps<TRow>) => {\n const {\n rows,\n storageKey,\n attributes: rawAttributes,\n selectedRowId = null,\n emptyState,\n emptyTitle = \"No rows found\",\n emptyDescription = \"Try changing filters or display settings.\",\n contentPlaceholder,\n defaultSettings,\n defaultFilters,\n defaultViews,\n defaultActiveViewId,\n onRowClick,\n onAttributeChange,\n onReorder,\n createRow,\n onCreateRow,\n onColumnAction,\n getBoardColumnConfig,\n getRowContextMenuActions,\n hideToolbar = false,\n toolbarLeading,\n } = props;\n\n const attributes = useResolvedAttributes(rawAttributes);\n const [createColumnId, setCreateColumnId] = useState<string | null>(null);\n const initialState = {\n settings: defaultSettings,\n filters: defaultFilters,\n views: defaultViews,\n activeViewId: defaultActiveViewId,\n };\n const settings = useKanbanRendererStore(storageKey, (state) => state.settings, initialState);\n const filters = useKanbanRendererStore(storageKey, (state) => state.filters, initialState);\n const expandedGroups = useKanbanRendererStore(storageKey, (state) => state.expandedGroups, initialState);\n const setExpandedGroup = useKanbanRendererStore(storageKey, (state) => state.setExpandedGroup, initialState);\n\n const visibleRows = filterRows(rows, filters, attributes) as TRow[];\n\n const knownColumnKeys = resolveKnownColumnKeys(settings.columnGrouping, attributes, filters);\n\n const grouped = groupRows(visibleRows, {\n attributes,\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n knownColumnKeys,\n });\n\n const listItems = buildKanbanRendererListItems({\n settings,\n visibleRows,\n grouped,\n attributes,\n onRowClick,\n onAttributeChange,\n onReorder,\n getRowContextMenuActions,\n });\n\n const cardDisplayProperties = settings.displayProperties.filter((property) => property !== \"id\");\n const toBoardItems = (boardRows: KanbanRendererRow[]) =>\n boardRows.map((row) => ({\n id: row.id,\n contextMenuActions: getRowContextMenuActions?.(row as TRow),\n cardProps: {\n eyebrow: settings.displayProperties.includes(\"id\") ? rowEyebrow(row) : undefined,\n title: row.title,\n badges: collectDisplayBadges(row, attributes, cardDisplayProperties),\n customSlots: collectDisplayCustomSlots(row, attributes, cardDisplayProperties),\n onBadgeChange: onAttributeChange\n ? (attributeId: string, value: unknown) => onAttributeChange(row.id, attributeId, value)\n : undefined,\n onClick: () => onRowClick?.(row as TRow),\n },\n }));\n\n const columnGroupingDescriptor = findAttribute(attributes, settings.columnGrouping);\n\n const boardColumns: KanbanRendererBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedRows = orderRows(column.rows, settings.ordering, attributes);\n // Column color follows the enum option when the contribution does not\n // provide one, while row display badges stay visually neutral.\n const enumOption = columnGroupingDescriptor ? findEnumOption(columnGroupingDescriptor.type, column.key) : undefined;\n\n const groups: KanbanRendererBoardGroup[] | undefined =\n column.subgroups.length > 0\n ? column.subgroups.map((subgroup) => ({\n key: subgroup.key,\n label: subgroup.label,\n items: toBoardItems(orderRows(subgroup.rows, settings.ordering, attributes)),\n }))\n : undefined;\n\n return {\n id: column.key,\n label: column.label,\n color: columnConfig.color ?? enumOption?.color,\n icon: enumOption?.icon ?? \"circle\",\n canDragIn: columnConfig.canDragIn ?? false,\n canDragOut: columnConfig.canDragOut ?? false,\n canCreate: columnConfig.canCreate ?? false,\n actions: columnConfig.actions ?? [],\n items: toBoardItems(orderedRows),\n groups,\n } satisfies KanbanRendererBoardColumn;\n });\n\n const handleBoardMoveItem = async (\n rowId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => {\n await applyBoardMoveItem({\n settings,\n rowId,\n targetColumnId,\n targetGroupKey: context?.targetGroupKey,\n beforeItemId: context?.beforeItemId,\n onAttributeChange,\n onReorder,\n });\n };\n\n const handleBoardMoveToGroup = async (rowId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => {\n await applyBoardMoveToGroup({\n settings,\n rowId,\n targetGroupKey,\n beforeItemId: context?.beforeItemId,\n onAttributeChange,\n onReorder,\n });\n };\n\n return (\n <Stack data-testid=\"kanban-renderer\" height=\"100%\" minH=\"0\" gap=\"0\" background=\"bg\" overflow=\"hidden\">\n {hideToolbar ? null : (\n <KanbanRendererToolbar\n rows={rows}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={defaultSettings}\n defaultFilters={defaultFilters}\n defaultViews={defaultViews}\n defaultActiveViewId={defaultActiveViewId}\n leading={toolbarLeading}\n />\n )}\n\n {contentPlaceholder !== undefined ? (\n contentPlaceholder\n ) : (\n <KanbanRendererContent\n viewMode={settings.viewMode}\n boardColumns={boardColumns}\n listItems={listItems}\n listExpandedGroups={expandedGroups}\n selectedRowId={selectedRowId}\n emptyState={emptyState}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n onBoardMoveItem={handleBoardMoveItem}\n onBoardMoveToGroup={handleBoardMoveToGroup}\n onCreateRow={createRow && onCreateRow ? setCreateColumnId : undefined}\n onColumnAction={onColumnAction}\n onListExpandedGroupChange={setExpandedGroup}\n listKey={`${settings.columnGrouping}:${settings.rowGrouping}`}\n />\n )}\n {createRow && onCreateRow && createColumnId ? (\n <KanbanRendererCreateDialog\n open\n columnId={createColumnId}\n columnAttributeId={settings.columnGrouping === NO_GROUPING ? undefined : settings.columnGrouping}\n attributes={attributes}\n config={createRow}\n onClose={() => setCreateColumnId(null)}\n onSubmit={onCreateRow}\n />\n ) : null}\n </Stack>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kanban-renderer.js","names":["KanbanRendererSettings","MANUAL_ORDERING","NO_GROUPING","ApplyBoardMoveItemInput","settings","Pick","rowId","targetColumnId","targetGroupKey","beforeItemId","onAttributeChange","attributeId","value","Promise","onReorder","beforeRowId","ApplyBoardMoveToGroupInput","applyBoardMoveItem","input","columnGrouping","rowGrouping","ordering","applyBoardMoveToGroup","Badge","HStack","Icon","IconButton","Menu","Spacer","Text","MoreHorizontal","Plus","ListRow","getIconComponent","Tooltip","KanbanRendererBoardColumn","ColumnHeaderProps","column","onCreateStart","columnId","onColumnAction","actionId","Promise","ColumnHeader","props","$","_c","t0","color","t1","icon","t2","t3","label","t4","items","length","t5","Symbol","for","t6","canCreate","createLabel","id","t7","actions","map","action","t8","_c","Tooltip","Badge","Icon","Menu","Portal","Check","ChevronDown","Square","SquareCheck","ListRow","getIconComponent","AttributeBadge","KanbanRendererAttributeBadgeProps","badge","onChange","attributeId","value","stopRowActivation","event","stopPropagation","getSelectedValues","Array","isArray","toggleMultiValue","values","optionValue","includes","filter","badgeStyleProps","bg","_light","_dark","color","_hover","const","getBadgeIconColor","selectionIcon","input","isMultiValue","isSelected","KanbanRendererAttributeBadge","props","$","_c","T0","T1","T2","T3","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","Symbol","for","bb0","options","canEdit","Boolean","isEditable","length","selectedValues","t10","onClick","onPointerDown","onKeyDown","rowInteractionProps","handleOptionChange","nextValue","t11","icon","t12","t13","label","badgeContent","t14","Root","Positioner","Content","map","option","_c","_Fragment","HStack","Stack","Text","Wrap","DragEventHandler","MouseEvent","ReactNode","WorkspaceBadgeProps","WorkspaceBadge","KanbanRendererAttributeBadge","AttributeBadge","KanbanRendererCardProps","eyebrow","title","badges","customSlots","workspaceBadge","isSelected","draggable","onBadgeChange","attributeId","value","onDragStart","HTMLDivElement","onDragEnd","onClick","KanbanRendererCard","props","$","_c","t0","t1","t2","t3","undefined","t4","hasBadges","length","cursor","t5","event","defaultPrevented","target","Node","currentTarget","contains","handleClick","t6","t7","t8","borderColor","t9","t10","t11","t12","t13","map","badge","t14","_c","Badge","Box","HStack","Icon","Stack","Text","ChevronRight","DragEvent","useState","ResourceContextMenu","KanbanRendererBoardGroup","KanbanRendererCard","GroupSectionProps","columnId","group","selectedItemId","canDragIn","canDragOut","isDropTarget","onDragStart","itemId","event","HTMLDivElement","onDragEnd","onGroupDragOver","onGroupDragLeave","onGroupDrop","beforeItemId","GroupSection","props","$","_c","expanded","setExpanded","t0","t1","undefined","t2","t3","t4","Symbol","for","bg","t5","_temp","t6","t7","t8","label","t9","items","length","t10","t11","map","item","id","contextMenuActions","_temp2","event_0","preventDefault","stopPropagation","dataTransfer","getData","cardProps","t12","key","value","dropEffect","_c","_temp","_temp2","Box","Stack","ComponentProps","ComponentType","DragEvent","useState","ResourceContextAction","ResourceContextMenu","ScrollArea","ColumnHeader","GroupSection","KanbanRendererCard","KanbanRendererCardProps","KanbanRendererBoardItem","id","cardProps","Omit","contextMenuActions","KanbanRendererBoardColumnAction","label","icon","size","KanbanRendererBoardGroup","key","items","KanbanRendererBoardColumn","createLabel","color","groups","canDragIn","canDragOut","canCreate","actions","KanbanRendererBoardProps","columns","selectedItemId","onMoveItem","itemId","targetColumnId","context","beforeItemId","targetGroupKey","Promise","onMoveToGroup","onCreateStart","columnId","onColumnAction","actionId","KanbanRendererBoard","props","$","_c","t0","undefined","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","_temp","t1","Symbol","for","handleDragEnd","t2","event_0","event","preventDefault","dataTransfer","dropEffect","handleDragOver","t3","event_1","currentTarget","contains","relatedTarget","Node","handleDragLeave","t4","columnId_0","event_2","itemId_0","getData","handleDrop","t5","display","alignItems","gap","padding","minH","t6","t7","column","margin","spaceY","length","map","group","groupId","event_3","stopPropagation","event_4","event_5","itemId_1","item","event_6","event_7","itemId_2","setData","effectAllowed","_c","_temp","ScrollArea","Box","HStack","Icon","Text","Wrap","ComponentType","DragEvent","ReactNode","useState","ResourceContextAction","ListRow","ListRowItem","KanbanRendererAttributeBadge","AttributeBadge","KanbanRendererListItem","id","eyebrow","title","isGroup","countBadge","countColorPalette","statusIcon","size","statusColor","statusColorPalette","badges","customSlots","children","onClick","onBadgeChange","attributeId","value","contextMenuActions","draggable","onDropRow","rowId","KanbanRendererListExpandedState","Record","KanbanRendererListProps","items","selectedItemId","expandedGroups","onItemClick","item","onExpandedGroupChange","isExpanded","INDENT_STEP_PX","FlattenedKanbanRendererListItem","depth","canExpand","getKanbanRendererListIndentation","undefined","flattenKanbanRendererListItems","expanded","rows","length","push","getRowIsExpanded","getDropTargetIndicatorProps","isDropTarget","_before","content","position","bg","left","top","width","height","const","expandedState","updateExpandedState","renderLabel","renderEndContent","hasBadges","map","badge","buildListRowItem","hasChildren","label","icon","endContent","isContainer","contextMenuItems","action","key","disabled","isDisabled","separatorBefore","onAction","KanbanRendererList","props","$","_c","t0","t1","Symbol","for","localExpandedGroups","setLocalExpandedGroups","activeDropTargetId","setActiveDropTargetId","draggedItemId","setDraggedItemId","T0","t2","t3","current","handleExpandedChange","t4","row","KanbanRendererListRowProps","onDraggedItemChange","itemId","onDropTargetChange","onExpandedChange","KanbanRendererListRow","isSelected","canDropHere","Boolean","rowItem","toggleExpanded","handleActivate","event","stopPropagation","dataTransfer","setData","effectAllowed","handleDragStart","event_0","preventDefault","dropEffect","handleDragOver","t5","event_1","currentTarget","contains","relatedTarget","Node","handleDragLeave","t6","event_2","draggedId","getData","handleDrop","t7","handleDragEnd","t8","t9","t10","t11","t12","t13","t14","t15","t16","_c","Box","ReactNode","EmptyState","KanbanRendererBoard","KanbanRendererBoardColumn","KanbanRendererList","KanbanRendererListItem","KanbanRendererSettings","KanbanRendererEmptyStateProps","emptyState","title","description","height","KanbanRendererContentProps","viewMode","boardColumns","listItems","listExpandedGroups","Record","selectedRowId","emptyTitle","emptyDescription","onBoardMoveItem","rowId","targetColumnId","context","beforeItemId","targetGroupKey","Promise","onBoardMoveToGroup","onCreateRow","columnId","onColumnAction","actionId","onListExpandedGroupChange","isExpanded","listKey","KanbanRendererEmptyState","props","$","_c","undefined","t0","KanbanRendererContent","length","_c","EmptyState","Box","HStack","Stack","Text","VStack","InputGroup","Param","ParamValue","ParamValueMap","ResourceRefValue","ParamEditorField","isParamEditorHorizontalControl","isParamEditorRichControl","ParamEditorHorizontalProps","params","groups","defaultValues","onChange","id","value","onOpenResource","ref","readOnly","variant","HorizontalGroupProps","group","renderParam","param","React","ReactNode","width","HorizontalGroupTitle","props","$","_c","children","t0","HorizontalGroup","undefined","t1","title","t2","t3","t4","t5","map","t6","t7","ParamEditorHorizontal","T0","t8","t9","horizontalParams","filter","horizontalGroups","_temp","t10","compactParams","_temp2","richParams","compactGroups","_temp4","_temp5","richGroups","_temp6","_temp7","gap","hasCompactControls","length","t11","group_2","groupParams_1","groupParams","t12","param_2","t13","t14","group_3","groupParams_2","param_0","_temp3","param_1","group_0","group_1","groupParams_0","_c","_temp","_temp2","_temp4","_temp5","_temp3","Button","Icon","Input","Stack","Text","Textarea","Wrap","Paperclip","useRef","AttachmentChip","SelectionInput","LazyMarkdownEditor","KanbanRendererCreateField","MarkdownControl","props","$","_c","disabled","field","onChange","t0","defaultValue","t1","t2","next","t3","placeholder","FilesControl","removeLabel","value","input","Array","isArray","File","files","multiple","event","picked","from","target","slice","accept","t4","t5","Symbol","for","current","click","t6","label","t7","length","map","file","index","name","toString","filter","_","itemIndex","t8","CreateFieldControlProps","FieldInput","type","id","description","options","_temp","required","t9","t10","event_0","Number","CreateFieldControl","option","icon","undefined","color","_c","_temp","Button","CloseButton","Dialog","HStack","Stack","Text","useEffect","useRef","useState","handleDialogAcceptShortcut","Param","ParamValueMap","ParamEditorHorizontal","CreateFieldControl","getEnumOptions","AttributeDescriptor","KanbanRendererCreateField","KanbanRendererCreateRowConfig","KanbanRendererCreateSubmission","KanbanRendererCreateDialogProps","open","columnId","columnAttributeId","attributes","config","onClose","onSubmit","submission","Promise","emptyValue","field","type","initialFieldValues","fields","Object","fromEntries","map","id","defaultValue","isFilled","value","required","Array","isArray","length","trim","undefined","editableCreateAttributes","filter","attribute","editable","initialAttributeValues","kind","attributeToParam","locked","base","name","label","description","multiSelect","placeholder","clearable","disabled","options","option","icon","color","singleLine","KanbanRendererCreateDialog","props","values","setValues","Record","attributeValues","setAttributeValues","submitting","setSubmitting","error","setError","resetToken","setResetToken","initializedRef","editableAttributes","current","token","seeded","declared","Set","kept","entries","has","added","keys","close","valid","every","submit","fileFieldIds","files","flatMap","File","declaredValues","caught","Error","message","labels","submitError","details","event","title","toString","removeFile","properties","attributeId","cancel","submitLabel","ResourceContextAction","getIconComponent","KanbanRendererColumnGroup","orderRows","collectDisplayBadges","collectDisplayCustomSlots","findEnumOption","resolveListDropTargetColumnKey","KanbanRendererListItem","AttributeDescriptor","KanbanRendererRow","KanbanRendererSettings","findAttribute","MANUAL_ORDERING","NO_GROUPING","BuildKanbanRendererListItemsInput","settings","visibleRows","TRow","grouped","attributes","onRowClick","row","onAttributeChange","rowId","attributeId","value","Promise","onReorder","beforeRowId","getRowContextMenuActions","buildKanbanRendererListItems","input","supportsManualReorder","ordering","listDisplayProperties","displayProperties","filter","property","getStatusPresentation","key","descriptor","option","type","undefined","statusColorPalette","color","statusIcon","icon","getRowStatusPresentation","status","toListItem","placement","columnKey","rowKey","shorthand","id","eyebrow","title","badges","customSlots","contextMenuActions","onClick","onBadgeChange","draggable","Boolean","onDropRow","draggedId","targetColumnKey","columnGrouping","rowGrouping","toGroupListItem","group","label","rows","parent","groupingAttributeId","isGroup","countBadge","length","children","map","column","subgroups","Stack","ReactNode","useState","ResourceContextAction","KanbanRendererBoardColumn","KanbanRendererBoardColumnAction","KanbanRendererBoardGroup","applyBoardMoveItem","applyBoardMoveToGroup","KanbanRendererContent","KanbanRendererCreateDialog","filterRows","groupRows","orderRows","collectDisplayBadges","collectDisplayCustomSlots","findEnumOption","resolveKnownColumnKeys","buildKanbanRendererListItems","KanbanRendererToolbar","AttributeDescriptor","KanbanRendererCreateRowConfig","KanbanRendererCreateSubmission","KanbanRendererFilterState","KanbanRendererRow","KanbanRendererSavedView","KanbanRendererSettings","KanbanRendererViewsSource","findAttribute","NO_GROUPING","useKanbanRendererStore","useKanbanViews","useResolvedAttributes","BoardColumnConfig","color","canDragIn","canDragOut","canCreate","actions","KanbanRendererProps","rows","TRow","storageKey","attributes","selectedRowId","emptyState","emptyTitle","emptyDescription","contentPlaceholder","defaultSettings","Partial","defaultFilters","viewsSource","defaultViews","defaultActiveViewId","hideToolbar","toolbarActions","toolbarLeading","onRowClick","row","onAttributeChange","rowId","attributeId","value","Promise","onReorder","beforeRowId","createRow","onCreateRow","submission","onColumnAction","columnId","actionId","getBoardColumnConfig","groupKey","getRowContextMenuActions","rowEyebrow","shorthand","id","KanbanRenderer","props","$","_c","rawAttributes","t0","t1","t2","t3","undefined","createColumnId","setCreateColumnId","t4","settings","filters","initialState","_temp","_temp2","expandedGroups","_temp3","setExpandedGroup","_temp4","listItems","t5","visibleRows","knownColumnKeys","columnGrouping","grouped","rowGrouping","cardDisplayProperties","displayProperties","filter","_temp5","toBoardItems","boardRows","map","contextMenuActions","cardProps","eyebrow","includes","title","badges","customSlots","onBadgeChange","onClick","columnGroupingDescriptor","column","columnConfig","key","orderedRows","ordering","enumOption","type","groups","subgroups","length","subgroup","label","items","icon","boardColumns","t6","targetColumnId","context","targetGroupKey","beforeItemId","handleBoardMoveItem","t7","rowId_0","context_0","handleBoardMoveToGroup","t8","t9","viewMode","t10","t11","state","state_0","state_1","state_2","property","_c","Tooltip$1","ResourceContextMenu","ListRow","getIconComponent","AttachmentChip","WorkspaceBadge","EmptyState$1","buildGroupingOptions","KanbanRendererToolbar","groupRows","useResolvedAttributes","DisplayMenu","orderRows","buildFilterCategories","useKanbanViews","resolveAttributeOptions","filterRows","KanbanRendererStorageProvider","useKanbanRendererStore","buildDisplayPropertyOptions","isAttributesSource","renderAttributeBadge","resolveListDropTargetColumnKey","findEnumOption","buildOrderingOptions","getEnumOptions","findAttribute","NO_GROUPING","getAttributeValue","sanitizeFilters","MANUAL_ORDERING","collectDisplayCustomSlots","renderBadgeListDisplay","LazyMarkdownEditor","DEFAULT_KANBAN_RENDERER_SETTINGS","FilterMenu","getAttributeStringValues","resolveKnownColumnKeys","collectDisplayBadges","sanitizeSettings","isEnumOptionsSource","SelectionInput","isParamEditorRichControl","isParamEditorHorizontalControl","ParamEditorField","applyBoardMoveItem","input","settings","onAttributeChange","rowId","targetColumnId","targetGroupKey","onReorder","beforeItemId","applyBoardMoveToGroup","ColumnHeader","$","c","props","t0","column","t1","t2","Icon","t3","Text","t4","Badge","t5","Spacer","t6","onCreateStart","IconButton","Plus","t7","onColumnAction","Menu","MoreHorizontal","action","t8","HStack","stopRowActivation","event","getSelectedValues","badge","toggleMultiValue","values","optionValue","value","badgeStyleProps","getBadgeIconColor","selectionIcon","SquareCheck","Square","Check","KanbanRendererAttributeBadge","T0","T1","T2","T3","t9","onChange","options","canEdit","isMultiValue","selectedValues","t10","rowInteractionProps","handleOptionChange","nextValue","t11","t12","ChevronDown","t13","Fragment","badgeContent","t14","Portal","isSelected","option","KanbanRendererCard","badges","customSlots","hasBadges","cursor","draggable","onClick","handleClick","eyebrow","workspaceBadge","title","onBadgeChange","Wrap","onDragEnd","onDragStart","Stack","GroupSection","expanded","setExpanded","useState","isDropTarget","canDragIn","onGroupDragOver","onGroupDragLeave","onGroupDrop","_temp$4","Box","ChevronRight","group","canDragOut","selectedItemId","item","_temp2$2","event_0","itemId","columnId","KanbanRendererBoard","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","_temp$3","handleDragEnd","handleDragOver","event_1","handleDragLeave","onMoveItem","event_2","itemId_0","columnId_0","handleDrop","columns","onMoveToGroup","ScrollArea$1","groupId","event_3","event_4","event_5","itemId_1","event_6","event_7","itemId_2","flattenKanbanRendererListItems","rows","items","canExpand","getRowIsExpanded","depth","getDropTargetIndicatorProps","isGroup","expandedState","updateExpandedState","isExpanded","renderLabel","renderEndContent","buildListRowItem","hasChildren","KanbanRendererList","localExpandedGroups","setLocalExpandedGroups","activeDropTargetId","setActiveDropTargetId","draggedItemId","setDraggedItemId","expandedGroups","onExpandedGroupChange","onItemClick","current","handleExpandedChange","KanbanRendererListRow","row","canDropHere","rowItem","onExpandedChange","toggleExpanded","handleActivate","onDraggedItemChange","onDropTargetChange","draggedId","t15","t16","KanbanRendererEmptyState","emptyState","height","description","KanbanRendererContent","viewMode","boardColumns","emptyDescription","emptyTitle","onBoardMoveItem","onBoardMoveToGroup","onCreateRow","selectedRowId","listItems","listExpandedGroups","listKey","onListExpandedGroupChange","HorizontalGroupTitle","children","HorizontalGroup","width","variant","params","renderParam","VStack","ParamEditorHorizontal","defaultValues","onOpenResource","readOnly","groups","horizontalParams","horizontalGroups","_temp$2","param","compactParams","_temp2$1","richParams","compactGroups","_temp4$1","_temp5$1","richGroups","_temp6","_temp7","gap","hasCompactControls","group_2","groupParams_1","param_2","group_3","groupParams_2","param_0","_temp3$1","param_1","group_0","groupParams","group_1","groupParams_0","MarkdownControl","field","disabled","next","FilesControl","useRef","files","picked","Paperclip","Button","removeLabel","itemIndex","index","file","FieldInput","Textarea","_temp$1","Input","CreateFieldControl","emptyValue","initialFieldValues","fields","isFilled","editableCreateAttributes","attributes","attribute","initialAttributeValues","columnAttributeId","attributeToParam","base","multiSelect","locked","KanbanRendererCreateDialog","setValues","attributeValues","setAttributeValues","submitting","setSubmitting","error","setError","resetToken","setResetToken","initializedRef","editableAttributes","useEffect","open","config","token","seeded","declared","kept","id","added","id_0","editable","seeded_0","declared_0","kept_0","current_0","id_1","added_0","id_2","close","onClose","valid","field_0","submit","fileFieldIds","field_1","field_2","id_3","declaredValues","id_4","onSubmit","caught","Dialog","details","handleDialogAcceptShortcut","CloseButton","field_3","current_1","attribute_0","current_2","attributeId","value_0","buildKanbanRendererListItems","supportsManualReorder","listDisplayProperties","property","getStatusPresentation","descriptor","key","getRowStatusPresentation","status","toListItem","shorthand","getRowContextMenuActions","onRowClick","targetColumnKey","placement","toGroupListItem","groupingAttributeId","parent","columnKey","visibleRows","grouped","rowEyebrow","KanbanRenderer","rawAttributes","hideToolbar","createColumnId","setCreateColumnId","defaultFilters","defaultSettings","initialState","storageKey","_temp","filters","_temp2","_temp3","setExpandedGroup","_temp4","getBoardColumnConfig","knownColumnKeys","cardDisplayProperties","_temp5","toBoardItems","boardRows","columnGroupingDescriptor","columnConfig","orderedRows","enumOption","subgroup","context","handleBoardMoveItem","rowId_0","context_0","handleBoardMoveToGroup","defaultActiveViewId","defaultViews","toolbarActions","toolbarLeading","viewsSource","contentPlaceholder","createRow","state","state_0","state_1","state_2"],"sources":["../src/components/kanban-renderer/kanban-renderer-board-move.ts","../src/components/kanban-renderer/kanban-renderer-board-column-header.tsx","../src/components/kanban-renderer/kanban-renderer-attribute-badge.tsx","../src/components/kanban-renderer/kanban-renderer-card.tsx","../src/components/kanban-renderer/kanban-renderer-board-group-section.tsx","../src/components/kanban-renderer/kanban-renderer-board.tsx","../src/components/kanban-renderer/kanban-renderer-list.tsx","../src/components/kanban-renderer/kanban-renderer-content.tsx","../src/components/param-editor/param-editor-horizontal.tsx","../src/components/kanban-renderer/kanban-renderer-create-field.tsx","../src/components/kanban-renderer/kanban-renderer-create-dialog.tsx","../src/components/kanban-renderer/kanban-renderer-list-items.ts","../src/components/kanban-renderer/kanban-renderer.tsx"],"sourcesContent":["import type { KanbanRendererSettings } from \"./types\";\nimport { MANUAL_ORDERING, NO_GROUPING } from \"./types\";\n\ninterface ApplyBoardMoveItemInput {\n settings: Pick<KanbanRendererSettings, \"columnGrouping\" | \"ordering\" | \"rowGrouping\">;\n rowId: string;\n targetColumnId: string;\n targetGroupKey?: string;\n beforeItemId?: string;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n}\n\ninterface ApplyBoardMoveToGroupInput {\n settings: Pick<KanbanRendererSettings, \"ordering\" | \"rowGrouping\">;\n rowId: string;\n targetGroupKey: string;\n beforeItemId?: string;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n}\n\nexport const applyBoardMoveItem = async (input: ApplyBoardMoveItemInput) => {\n const { settings, rowId, targetColumnId, targetGroupKey, beforeItemId, onAttributeChange, onReorder } = input;\n\n if (settings.columnGrouping !== NO_GROUPING && onAttributeChange) {\n await onAttributeChange(rowId, settings.columnGrouping, targetColumnId);\n }\n if (settings.rowGrouping !== NO_GROUPING && targetGroupKey && onAttributeChange) {\n await onAttributeChange(rowId, settings.rowGrouping, targetGroupKey);\n }\n if (settings.ordering.attributeId === MANUAL_ORDERING) {\n await onReorder?.(rowId, beforeItemId);\n }\n};\n\nexport const applyBoardMoveToGroup = async (input: ApplyBoardMoveToGroupInput) => {\n const { settings, rowId, targetGroupKey, beforeItemId, onAttributeChange, onReorder } = input;\n\n if (settings.rowGrouping === NO_GROUPING || !onAttributeChange) return;\n await onAttributeChange(rowId, settings.rowGrouping, targetGroupKey);\n if (settings.ordering.attributeId === MANUAL_ORDERING) {\n await onReorder?.(rowId, beforeItemId);\n }\n};\n","import { Badge, HStack, Icon, IconButton, Menu, Spacer, Text } from \"@chakra-ui/react\";\nimport { MoreHorizontal, Plus } from \"lucide-react\";\n\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { KanbanRendererBoardColumn } from \"./kanban-renderer-board\";\n\ninterface ColumnHeaderProps {\n column: KanbanRendererBoardColumn;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const ColumnHeader = (props: ColumnHeaderProps) => {\n const { column, onCreateStart, onColumnAction } = props;\n\n return (\n <HStack minH=\"1.5rem\" gap=\"2xs\" alignItems=\"center\" colorPalette={column.color ?? \"gray\"}>\n <Icon\n data-testid=\"column-status-icon\"\n as={getIconComponent(column.icon)}\n boxSize=\"0.875rem\"\n color=\"colorPalette.solid\"\n flexShrink={0}\n />\n <Text textStyle=\"label/S/medium\">{column.label}</Text>\n\n <Badge variant=\"number\" size=\"xs\" colorPalette=\"gray\">\n {column.items.length}\n </Badge>\n\n <Spacer />\n\n {column.canCreate && onCreateStart && (\n <Tooltip content={column.createLabel ?? \"Create new row\"}>\n <IconButton\n size=\"2xs\"\n variant=\"outline\"\n onClick={() => onCreateStart(column.id)}\n aria-label={column.createLabel ?? \"Create row\"}\n >\n <Icon as={Plus} boxSize=\"12px\" />\n </IconButton>\n </Tooltip>\n )}\n\n {column.actions.length > 0 && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={`Column actions for ${column.label}`}>\n <Icon as={MoreHorizontal} boxSize=\"12px\" />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"180px\" bg=\"bg\">\n {column.actions.map((action) => (\n <Menu.Item key={action.id} value={action.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={action.label}\n icon={<Icon as={action.icon} boxSize=\"16px\" />}\n onActivate={() => onColumnAction?.(column.id, action.id)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n )}\n </HStack>\n );\n};\n","import { Badge, Icon, Menu, Portal } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\ninterface KanbanRendererAttributeBadgeProps {\n badge: AttributeBadge;\n onChange?: (attributeId: string, value: unknown) => void;\n}\n\nconst stopRowActivation = (event: { stopPropagation: () => void }) => event.stopPropagation();\n\nconst getSelectedValues = (badge: AttributeBadge) => {\n if (Array.isArray(badge.value)) return badge.value;\n return badge.value ? [badge.value] : [];\n};\n\nconst toggleMultiValue = (values: string[], optionValue: string) =>\n values.includes(optionValue) ? values.filter((value) => value !== optionValue) : [...values, optionValue];\n\nconst badgeStyleProps = {\n bg: { _light: \"bg.muted\", _dark: \"bg.subtle\" },\n color: \"fg.muted\",\n _hover: { bg: { _light: \"bg.subtle\", _dark: \"bg.hover\" } },\n} as const;\n\nconst getBadgeIconColor = (badge: AttributeBadge) => (badge.color ? `${badge.color}.fg` : \"fg.muted\");\n\nconst selectionIcon = (input: { isMultiValue: boolean; isSelected: boolean }) => {\n if (input.isMultiValue) return input.isSelected ? <SquareCheck size={14} /> : <Square size={14} />;\n return input.isSelected ? <Check size={14} /> : null;\n};\n\nexport const KanbanRendererAttributeBadge = (props: KanbanRendererAttributeBadgeProps) => {\n const { badge, onChange } = props;\n const options = badge.options ?? [];\n const canEdit = Boolean(onChange && badge.isEditable && options.length > 0);\n const isMultiValue = Array.isArray(badge.value);\n const selectedValues = getSelectedValues(badge);\n const rowInteractionProps = {\n onClick: stopRowActivation,\n onPointerDown: stopRowActivation,\n onKeyDown: stopRowActivation,\n };\n\n const handleOptionChange = (optionValue: string) => {\n let nextValue: string | string[];\n if (isMultiValue) nextValue = toggleMultiValue(selectedValues, optionValue);\n else nextValue = selectedValues.includes(optionValue) ? \"\" : optionValue;\n onChange?.(badge.attributeId, nextValue);\n };\n\n const badgeContent = (\n <>\n {badge.icon ? <Icon as={getIconComponent(badge.icon)} boxSize=\"3.5\" color={getBadgeIconColor(badge)} /> : null}\n {badge.label}\n {canEdit ? <Icon as={ChevronDown} boxSize=\"3\" color=\"fg.muted\" /> : null}\n </>\n );\n\n if (!canEdit) {\n return (\n <Badge variant=\"subtle\" gap=\"2xs\" textStyle=\"label/XS/medium\" {...badgeStyleProps}>\n {badgeContent}\n </Badge>\n );\n }\n\n return (\n <Menu.Root closeOnSelect={!isMultiValue}>\n <Menu.Trigger asChild>\n <Badge\n as=\"span\"\n role=\"button\"\n tabIndex={0}\n variant=\"subtle\"\n gap=\"2xs\"\n textStyle=\"label/XS/medium\"\n cursor=\"pointer\"\n {...badgeStyleProps}\n onClick={stopRowActivation}\n onPointerDown={stopRowActivation}\n onKeyDown={stopRowActivation}\n >\n {badgeContent}\n </Badge>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content\n minW=\"180px\"\n p=\"0\"\n gap=\"0\"\n onClick={stopRowActivation}\n onPointerDown={stopRowActivation}\n onKeyDown={stopRowActivation}\n >\n {options.map((option) => {\n const isSelected = selectedValues.includes(option.value);\n return (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n role={isMultiValue ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={isSelected}\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={<Icon as={getIconComponent(option.icon)} boxSize=\"16px\" />}\n iconColor={`${option.color ?? \"gray\"}.500`}\n isSelected={isSelected}\n endContent={selectionIcon({ isMultiValue, isSelected })}\n onActivate={() => handleOptionChange(option.value)}\n {...rowInteractionProps}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { HStack, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport type { DragEventHandler, MouseEvent, ReactNode } from \"react\";\nimport type { WorkspaceBadgeProps } from \"@/components/primitives/workspace-badge\";\nimport { WorkspaceBadge } from \"@/components/primitives/workspace-badge\";\nimport { KanbanRendererAttributeBadge } from \"./kanban-renderer-attribute-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\nexport interface KanbanRendererCardProps {\n eyebrow?: string;\n title: string;\n badges?: AttributeBadge[];\n customSlots?: ReactNode[];\n workspaceBadge?: WorkspaceBadgeProps;\n isSelected?: boolean;\n draggable?: boolean;\n onBadgeChange?: (attributeId: string, value: unknown) => void;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n}\n\nexport const KanbanRendererCard = (props: KanbanRendererCardProps) => {\n const {\n eyebrow,\n title,\n badges = [],\n customSlots = [],\n workspaceBadge,\n isSelected = false,\n draggable,\n onBadgeChange,\n onDragStart,\n onDragEnd,\n onClick,\n } = props;\n\n const hasBadges = badges.length > 0 || customSlots.length > 0;\n const cursor = draggable ? \"grab\" : onClick ? \"pointer\" : \"default\";\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.defaultPrevented) return;\n if (!(event.target instanceof Node) || !event.currentTarget.contains(event.target)) return;\n onClick?.();\n };\n\n return (\n <Stack\n gap=\"xs\"\n padding=\"compact\"\n borderRadius=\"compact\"\n borderWidth=\"1px\"\n borderColor={isSelected ? \"border.accent\" : \"border\"}\n width=\"100%\"\n background=\"bg\"\n transition=\"border-color 0.2s ease-in-out, background 0.2s ease-in-out\"\n _hover={{ borderColor: isSelected ? \"border.accent\" : \"border.accent-light\" }}\n cursor={cursor}\n draggable={draggable}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onClick={onClick ? handleClick : undefined}\n data-selected={isSelected ? \"true\" : undefined}\n data-testid=\"renderer-card\"\n >\n {eyebrow || workspaceBadge ? (\n <HStack minW=\"0\" gap=\"2xs\">\n {eyebrow ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\" fontFamily=\"mono\" truncate>\n {eyebrow}\n </Text>\n ) : null}\n <HStack marginLeft=\"auto\">{workspaceBadge ? <WorkspaceBadge {...workspaceBadge} /> : null}</HStack>\n </HStack>\n ) : null}\n\n <Text textStyle=\"paragraph/S/regular\" minW=\"0\" overflowWrap=\"anywhere\">\n {title}\n </Text>\n\n {hasBadges && (\n <Wrap gap=\"2xs\">\n {badges.map((badge) => (\n <KanbanRendererAttributeBadge key={badge.attributeId} badge={badge} onChange={onBadgeChange} />\n ))}\n {customSlots}\n </Wrap>\n )}\n </Stack>\n );\n};\n","import { Badge, Box, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { type DragEvent, useState } from \"react\";\n\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport type { KanbanRendererBoardGroup } from \"./kanban-renderer-board\";\nimport { KanbanRendererCard } from \"./kanban-renderer-card\";\n\ninterface GroupSectionProps {\n columnId: string;\n group: KanbanRendererBoardGroup;\n selectedItemId: string | null;\n canDragIn: boolean;\n canDragOut: boolean;\n isDropTarget: boolean;\n onDragStart: (itemId: string) => (event: DragEvent<HTMLDivElement>) => void;\n onDragEnd: () => void;\n onGroupDragOver: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDragLeave: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDrop: (event: DragEvent<HTMLDivElement>, beforeItemId?: string) => void;\n}\n\nexport const GroupSection = (props: GroupSectionProps) => {\n const {\n columnId,\n group,\n selectedItemId,\n canDragIn,\n canDragOut,\n isDropTarget,\n onDragStart,\n onDragEnd,\n onGroupDragOver,\n onGroupDragLeave,\n onGroupDrop,\n } = props;\n const [expanded, setExpanded] = useState(true);\n\n return (\n <Stack\n data-column-id={columnId}\n data-group-key={group.key}\n gap=\"0\"\n borderRadius=\"sm\"\n background={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n transition=\"background 150ms ease\"\n onDragOver={canDragIn ? onGroupDragOver : undefined}\n onDragLeave={canDragIn ? onGroupDragLeave : undefined}\n onDrop={canDragIn ? onGroupDrop : undefined}\n >\n <HStack\n px=\"xs\"\n py=\"2xs\"\n gap=\"2xs\"\n cursor=\"pointer\"\n _hover={{ bg: \"bg.hover\" }}\n borderRadius=\"sm\"\n onClick={() => setExpanded((value) => !value)}\n >\n <Box display=\"flex\" alignItems=\"center\" flexShrink={0}>\n <Icon\n as={ChevronRight}\n boxSize=\"14px\"\n color=\"fg.muted\"\n transform={expanded ? \"rotate(90deg)\" : \"rotate(0deg)\"}\n transition=\"transform 0.15s ease\"\n />\n </Box>\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {group.label}\n </Text>\n <Badge variant=\"number\" colorPalette=\"gray\" size=\"sm\">\n {group.items.length}\n </Badge>\n </HStack>\n {expanded && (\n <Stack gap=\"xs\" pt=\"xs\">\n {group.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onGroupDrop(event, item.id);\n }\n : undefined\n }\n >\n <KanbanRendererCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={canDragOut}\n onDragStart={canDragOut ? onDragStart(item.id) : undefined}\n onDragEnd={canDragOut ? onDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { type ComponentProps, type ComponentType, type DragEvent, useState } from \"react\";\n\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { ColumnHeader } from \"./kanban-renderer-board-column-header\";\nimport { GroupSection } from \"./kanban-renderer-board-group-section\";\nimport { KanbanRendererCard } from \"./kanban-renderer-card\";\n\ntype KanbanRendererCardProps = ComponentProps<typeof KanbanRendererCard>;\n\nexport interface KanbanRendererBoardItem {\n id: string;\n cardProps: Omit<KanbanRendererCardProps, \"draggable\" | \"onDragStart\" | \"onDragEnd\" | \"isSelected\">;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface KanbanRendererBoardColumnAction {\n id: string;\n label: string;\n icon: ComponentType<{ size?: number | string }>;\n}\n\nexport interface KanbanRendererBoardGroup {\n key: string;\n label: string;\n items: KanbanRendererBoardItem[];\n}\n\nexport interface KanbanRendererBoardColumn {\n id: string;\n label: string;\n createLabel?: string;\n color?: string;\n icon?: string | null;\n items: KanbanRendererBoardItem[];\n groups?: KanbanRendererBoardGroup[];\n canDragIn: boolean;\n canDragOut: boolean;\n canCreate: boolean;\n actions: KanbanRendererBoardColumnAction[];\n}\n\ninterface KanbanRendererBoardProps {\n columns: KanbanRendererBoardColumn[];\n selectedItemId?: string | null;\n onMoveItem?: (\n itemId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => Promise<void> | void;\n onMoveToGroup?: (itemId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => Promise<void> | void;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const KanbanRendererBoard = (props: KanbanRendererBoardProps) => {\n const { columns, selectedItemId = null, onMoveItem, onMoveToGroup, onCreateStart, onColumnAction } = props;\n\n const [activeColumn, setActiveColumn] = useState<string | null>(null);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const handleDragStart = (itemId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(\"text/plain\", itemId);\n event.dataTransfer.effectAllowed = \"move\";\n };\n\n const handleDragEnd = () => {\n setActiveColumn(null);\n setActiveGroup(null);\n };\n\n const handleDragOver = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(columnId);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveColumn(null);\n };\n\n const handleDrop = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setActiveColumn(null);\n\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n\n onMoveItem?.(itemId, columnId);\n };\n\n return (\n <ScrollArea\n height=\"100%\"\n size=\"xs\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ display: \"flex\", alignItems: \"stretch\", gap: \"xs\", padding: \"xs\", minH: \"100%\" }}\n >\n {columns.map((column) => (\n <Stack\n key={column.id}\n data-testid={`board-column-${column.id}`}\n gap=\"xs\"\n padding=\"compact\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"sm\"\n background={activeColumn === column.id ? \"bg.active\" : \"bg.subtle\"}\n transition=\"background 150ms ease\"\n height=\"100%\"\n minH=\"240px\"\n overflow=\"hidden\"\n minW=\"260px\"\n flex=\"1 0 260px\"\n onDragOver={column.canDragIn ? handleDragOver(column.id) : undefined}\n onDragLeave={column.canDragIn ? handleDragLeave : undefined}\n onDrop={column.canDragIn ? handleDrop(column.id) : undefined}\n >\n <ColumnHeader column={column} onCreateStart={onCreateStart} onColumnAction={onColumnAction} />\n\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n size=\"xs\"\n verticalScrollbarProps={{ margin: \"0\" }}\n contentProps={{\n spaceY: \"xs\",\n }}\n >\n {column.groups && column.groups.length > 0\n ? column.groups.map((group) => {\n const groupId = `${column.id}::${group.key}`;\n return (\n <GroupSection\n key={group.key}\n columnId={column.id}\n group={group}\n selectedItemId={selectedItemId}\n canDragIn={column.canDragIn}\n canDragOut={column.canDragOut}\n isDropTarget={activeGroup === groupId}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onGroupDragOver={(event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveGroup(groupId);\n setActiveColumn(null);\n }}\n onGroupDragLeave={(event) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveGroup(null);\n }}\n onGroupDrop={(event, beforeItemId) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveGroup(null);\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n if (onMoveItem) {\n onMoveItem(itemId, column.id, { beforeItemId, targetGroupKey: group.key });\n return;\n }\n onMoveToGroup?.(itemId, group.key, { beforeItemId });\n }}\n />\n );\n })\n : column.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(column.id);\n }\n : undefined\n }\n onDrop={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onMoveItem?.(itemId, column.id, { beforeItemId: item.id });\n }\n : undefined\n }\n >\n <KanbanRendererCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={column.canDragOut}\n onDragStart={column.canDragOut ? handleDragStart(item.id) : undefined}\n onDragEnd={column.canDragOut ? handleDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </ScrollArea>\n </Stack>\n ))}\n </ScrollArea>\n );\n};\n","import { Box, HStack, Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { type ComponentType, type DragEvent, type ReactNode, useState } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowItem } from \"../list-row/list-row.types\";\nimport { KanbanRendererAttributeBadge } from \"./kanban-renderer-attribute-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-helpers\";\n\nexport interface KanbanRendererListItem {\n id: string;\n eyebrow?: string;\n title: string;\n isGroup?: boolean;\n countBadge?: number;\n countColorPalette?: string;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n statusColorPalette?: string;\n badges?: AttributeBadge[];\n customSlots?: ReactNode[];\n children?: KanbanRendererListItem[];\n onClick?: () => void;\n onBadgeChange?: (attributeId: string, value: unknown) => void;\n contextMenuActions?: ResourceContextAction[];\n draggable?: boolean;\n onDropRow?: (rowId: string) => void;\n}\n\nexport type KanbanRendererListExpandedState = Record<string, boolean>;\n\nexport interface KanbanRendererListProps {\n items: KanbanRendererListItem[];\n selectedItemId?: string | null;\n expandedGroups?: KanbanRendererListExpandedState;\n onItemClick?: (item: KanbanRendererListItem) => void;\n onExpandedGroupChange?: (rowId: string, isExpanded: boolean) => void;\n}\n\nconst INDENT_STEP_PX = 12;\n\ninterface FlattenedKanbanRendererListItem {\n id: string;\n item: KanbanRendererListItem;\n depth: number;\n isGroup: boolean;\n canExpand: boolean;\n}\n\nexport const getKanbanRendererListIndentation = (depth: number) => {\n if (depth <= 0) return undefined;\n return `${depth * INDENT_STEP_PX}px`;\n};\n\nexport const flattenKanbanRendererListItems = (\n items: KanbanRendererListItem[],\n expanded: KanbanRendererListExpandedState,\n depth = 0,\n) => {\n const rows: FlattenedKanbanRendererListItem[] = [];\n\n for (const item of items) {\n const canExpand = (item.children?.length ?? 0) > 0;\n rows.push({\n id: item.id,\n item,\n depth,\n isGroup: item.isGroup === true,\n canExpand,\n });\n\n if (canExpand && getRowIsExpanded(expanded, item.id)) {\n rows.push(...flattenKanbanRendererListItems(item.children ?? [], expanded, depth + 1));\n }\n }\n\n return rows;\n};\n\nconst getDropTargetIndicatorProps = (isDropTarget: boolean, isGroup: boolean) => {\n if (!isDropTarget) return undefined;\n\n return {\n _before: {\n content: '\"\"',\n position: \"absolute\",\n bg: \"border.accent\",\n left: \"0\",\n top: \"0\",\n width: isGroup ? \"3px\" : \"100%\",\n height: isGroup ? \"100%\" : \"2px\",\n },\n } as const;\n};\n\nconst getRowIsExpanded = (expandedState: KanbanRendererListExpandedState, rowId: string) => {\n return expandedState[rowId] !== false;\n};\n\nconst updateExpandedState = (expandedState: KanbanRendererListExpandedState, rowId: string, isExpanded: boolean) => {\n return { ...expandedState, [rowId]: isExpanded };\n};\n\nconst renderLabel = (item: KanbanRendererListItem, isGroup: boolean) => {\n if (isGroup) {\n return (\n <HStack gap=\"xs\" minW=\"0\" maxW=\"full\" flex=\"1\">\n <Text textStyle=\"label/S/medium\" minW=\"0\" truncate>\n {item.title}\n </Text>\n <Text textStyle=\"label/XS\" color=\"fg.muted\" flexShrink={0}>\n {item.countBadge}\n </Text>\n </HStack>\n );\n }\n\n return (\n <HStack gap=\"compact\" minW=\"0\" maxW=\"full\" flex=\"1\">\n {item.eyebrow ? (\n <Text data-testid=\"list-row-eyebrow\" flexShrink={0} textStyle=\"mono/XS\" color=\"fg.muted\" truncate>\n {item.eyebrow}\n </Text>\n ) : null}\n <Text textStyle=\"paragraph/S/regular\" minW=\"0\" truncate>\n {item.title}\n </Text>\n </HStack>\n );\n};\n\nconst renderEndContent = (item: KanbanRendererListItem) => {\n const hasBadges = (item.badges?.length ?? 0) > 0 || (item.customSlots?.length ?? 0) > 0;\n\n if (!hasBadges) return null;\n\n return (\n <HStack gap=\"xs\" flexShrink={0}>\n <Wrap gap=\"2xs\" flexShrink={0}>\n {item.badges?.map((badge) => (\n <KanbanRendererAttributeBadge key={badge.attributeId} badge={badge} onChange={item.onBadgeChange} />\n ))}\n {item.customSlots}\n </Wrap>\n </HStack>\n );\n};\n\nconst buildListRowItem = (item: KanbanRendererListItem, hasChildren: boolean): ListRowItem => ({\n id: item.id,\n label: renderLabel(item, item.isGroup === true),\n icon: item.statusIcon ? (\n <Icon\n data-testid={item.isGroup ? \"list-status-icon\" : \"row-status-icon\"}\n as={item.statusIcon}\n boxSize=\"1rem\"\n colorPalette={item.statusColorPalette ?? item.countColorPalette ?? \"gray\"}\n color={item.statusColor ?? (item.isGroup || item.statusColorPalette ? \"colorPalette.solid\" : \"fg.muted\")}\n />\n ) : undefined,\n endContent: renderEndContent(item),\n isContainer: hasChildren,\n contextMenuItems: item.contextMenuActions?.map((action) => ({\n id: action.key,\n label: action.label,\n icon: action.icon ?? undefined,\n disabled: action.isDisabled,\n separatorBefore: action.separatorBefore,\n endContent: action.endContent,\n onAction: action.onClick,\n })),\n});\n\nexport const KanbanRendererList = (props: KanbanRendererListProps) => {\n const { items, selectedItemId = null, expandedGroups, onItemClick, onExpandedGroupChange } = props;\n const [localExpandedGroups, setLocalExpandedGroups] = useState<KanbanRendererListExpandedState>({});\n const [activeDropTargetId, setActiveDropTargetId] = useState<string | null>(null);\n const [draggedItemId, setDraggedItemId] = useState<string | null>(null);\n const expanded = expandedGroups ?? localExpandedGroups;\n const rows = flattenKanbanRendererListItems(items, expanded);\n\n const handleExpandedChange = (rowId: string, isExpanded: boolean) => {\n onExpandedGroupChange?.(rowId, isExpanded);\n if (expandedGroups === undefined) {\n setLocalExpandedGroups((current) => updateExpandedState(current, rowId, isExpanded));\n }\n };\n\n return (\n <Box>\n {rows.map((row) => (\n <KanbanRendererListRow\n key={row.id}\n row={row}\n isExpanded={getRowIsExpanded(expanded, row.id)}\n selectedItemId={selectedItemId}\n activeDropTargetId={activeDropTargetId}\n draggedItemId={draggedItemId}\n onDraggedItemChange={setDraggedItemId}\n onDropTargetChange={setActiveDropTargetId}\n onItemClick={onItemClick}\n onExpandedChange={handleExpandedChange}\n />\n ))}\n </Box>\n );\n};\n\ninterface KanbanRendererListRowProps {\n row: FlattenedKanbanRendererListItem;\n isExpanded: boolean;\n selectedItemId: string | null;\n activeDropTargetId: string | null;\n draggedItemId: string | null;\n onDraggedItemChange: (itemId: string | null) => void;\n onDropTargetChange: (itemId: string | null) => void;\n onExpandedChange: (rowId: string, isExpanded: boolean) => void;\n onItemClick?: (item: KanbanRendererListItem) => void;\n}\n\nconst KanbanRendererListRow = (props: KanbanRendererListRowProps) => {\n const {\n row,\n isExpanded,\n selectedItemId,\n activeDropTargetId,\n draggedItemId,\n onDraggedItemChange,\n onDropTargetChange,\n onItemClick,\n onExpandedChange,\n } = props;\n const { item, isGroup, canExpand } = row;\n const isSelected = item.id === selectedItemId;\n const canDropHere = Boolean(item.onDropRow) && item.id !== draggedItemId;\n const isDropTarget = canDropHere && item.id === activeDropTargetId;\n const rowItem = buildListRowItem(item, canExpand);\n const toggleExpanded = () => onExpandedChange(row.id, !isExpanded);\n\n const handleActivate = () => {\n if (canExpand) {\n toggleExpanded();\n return;\n }\n if (isGroup) return;\n item.onClick?.();\n onItemClick?.(item);\n };\n\n const handleDragStart = (event: DragEvent<HTMLDivElement>) => {\n if (!item.draggable) return;\n event.stopPropagation();\n event.dataTransfer.setData(\"text/plain\", item.id);\n event.dataTransfer.effectAllowed = \"move\";\n onDraggedItemChange(item.id);\n onDropTargetChange(null);\n };\n\n const handleDragOver = (event: DragEvent<HTMLDivElement>) => {\n if (!canDropHere) return;\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n onDropTargetChange(item.id);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n onDropTargetChange(null);\n };\n\n const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n if (!canDropHere || !item.onDropRow) return;\n event.preventDefault();\n event.stopPropagation();\n onDropTargetChange(null);\n onDraggedItemChange(null);\n const draggedId = event.dataTransfer.getData(\"text/plain\");\n if (!draggedId || draggedId === item.id) return;\n item.onDropRow(draggedId);\n };\n\n const handleDragEnd = () => {\n onDropTargetChange(null);\n onDraggedItemChange(null);\n };\n\n return (\n <Box\n data-drop-target={isDropTarget ? \"true\" : undefined}\n position=\"relative\"\n borderBottomWidth=\"1px\"\n borderBottomColor=\"border.subtle\"\n bg={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n draggable={item.draggable}\n transition=\"background 120ms ease\"\n {...getDropTargetIndicatorProps(isDropTarget, canExpand)}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragLeave={item.onDropRow ? handleDragLeave : undefined}\n onDragEnd={handleDragEnd}\n onDrop={handleDrop}\n >\n <ListRow\n {...rowItem}\n aria-label={isGroup ? undefined : item.title}\n variant={isGroup ? \"compact\" : \"collection\"}\n depth={row.depth}\n isSelected={isSelected}\n isExpanded={isExpanded}\n showExpandToggle={canExpand}\n showContextMenuTrigger={false}\n onActivate={handleActivate}\n onToggleExpand={toggleExpanded}\n />\n </Box>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { KanbanRendererBoard, type KanbanRendererBoardColumn } from \"./kanban-renderer-board\";\nimport { KanbanRendererList, type KanbanRendererListItem } from \"./kanban-renderer-list\";\nimport type { KanbanRendererSettings } from \"./types\";\n\ninterface KanbanRendererEmptyStateProps {\n emptyState?: ReactNode;\n title: string;\n description?: string;\n height?: string;\n}\n\ninterface KanbanRendererContentProps {\n viewMode: KanbanRendererSettings[\"viewMode\"];\n boardColumns: KanbanRendererBoardColumn[];\n listItems: KanbanRendererListItem[];\n listExpandedGroups: Record<string, boolean>;\n selectedRowId: string | null;\n emptyState?: ReactNode;\n emptyTitle: string;\n emptyDescription?: string;\n onBoardMoveItem: (\n rowId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => Promise<void> | void;\n onBoardMoveToGroup: (\n rowId: string,\n targetGroupKey: string,\n context?: { beforeItemId?: string },\n ) => Promise<void> | void;\n onCreateRow?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n onListExpandedGroupChange: (rowId: string, isExpanded: boolean) => void;\n listKey: string;\n}\n\nconst KanbanRendererEmptyState = (props: KanbanRendererEmptyStateProps) => {\n const { emptyState, title, description, height } = props;\n\n if (emptyState !== undefined) {\n return height ? <Box height={height}>{emptyState}</Box> : emptyState;\n }\n\n return <EmptyState title={title} description={description} height={height} />;\n};\n\nexport const KanbanRendererContent = (props: KanbanRendererContentProps) => {\n const {\n viewMode,\n boardColumns,\n listItems,\n listExpandedGroups,\n selectedRowId,\n emptyState,\n emptyTitle,\n emptyDescription,\n onBoardMoveItem,\n onBoardMoveToGroup,\n onCreateRow,\n onColumnAction,\n onListExpandedGroupChange,\n listKey,\n } = props;\n\n if (viewMode === \"board\") {\n return (\n <Box flex=\"1\" minH=\"0\">\n {boardColumns.length > 0 ? (\n <KanbanRendererBoard\n columns={boardColumns}\n selectedItemId={selectedRowId}\n onMoveItem={onBoardMoveItem}\n onMoveToGroup={onBoardMoveToGroup}\n onCreateStart={onCreateRow}\n onColumnAction={onColumnAction}\n />\n ) : (\n <KanbanRendererEmptyState\n emptyState={emptyState}\n title={emptyTitle}\n description={emptyDescription}\n height=\"100%\"\n />\n )}\n </Box>\n );\n }\n\n if (listItems.length > 0) {\n return (\n <KanbanRendererList\n key={listKey}\n items={listItems}\n selectedItemId={selectedRowId}\n expandedGroups={listExpandedGroups}\n onExpandedGroupChange={onListExpandedGroupChange}\n />\n );\n }\n\n return <KanbanRendererEmptyState emptyState={emptyState} title={emptyTitle} description={emptyDescription} />;\n};\n","import { Box, HStack, Stack, Text, VStack } from \"@chakra-ui/react\";\nimport type { InputGroup, Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorField } from \"./param-editor-field\";\nimport { isParamEditorHorizontalControl, isParamEditorRichControl } from \"./param-editor-presentation\";\n\nexport interface ParamEditorHorizontalProps {\n params?: Param[];\n groups?: InputGroup[];\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n variant?: \"default\" | \"small\";\n}\n\ninterface HorizontalGroupProps {\n group: InputGroup;\n params: Param[];\n renderParam: (param: Param) => React.ReactNode;\n variant: \"default\" | \"small\";\n width?: \"auto\" | \"full\";\n}\n\nconst HorizontalGroupTitle = (props: { children: string }) => {\n const { children } = props;\n\n return (\n <Text\n minH=\"0.75rem\"\n textStyle=\"label/XS\"\n color=\"fg.muted\"\n lineHeight=\"1\"\n letterSpacing=\"0.08em\"\n textTransform=\"uppercase\"\n >\n {children}\n </Text>\n );\n};\n\nconst HorizontalGroup = (props: HorizontalGroupProps) => {\n const { group, params, renderParam, variant, width = \"auto\" } = props;\n\n return (\n <VStack\n as=\"section\"\n aria-label={group.title}\n gap={variant === \"small\" ? \"2xs\" : \"xs\"}\n alignItems=\"start\"\n minW=\"0\"\n width={width}\n >\n <HorizontalGroupTitle>{group.title}</HorizontalGroupTitle>\n <HStack gap={variant === \"small\" ? \"2xs\" : \"xs\"} flexWrap=\"wrap\" alignItems=\"start\" minW=\"0\" width={width}>\n {params.map(renderParam)}\n </HStack>\n </VStack>\n );\n};\n\nexport const ParamEditorHorizontal = (props: ParamEditorHorizontalProps) => {\n const { params = [], groups = [], defaultValues, onChange, onOpenResource, readOnly, variant = \"default\" } = props;\n const horizontalParams = params.filter(isParamEditorHorizontalControl);\n const horizontalGroups = groups.map((group) => ({\n ...group,\n params: group.params.filter(isParamEditorHorizontalControl),\n }));\n const renderParam = (param: Param) => (\n <ParamEditorField\n key={param.id}\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n presentation=\"horizontal\"\n size={variant === \"small\" ? \"xs\" : \"sm\"}\n />\n );\n const compactParams = horizontalParams.filter((param) => !isParamEditorRichControl(param));\n const richParams = horizontalParams.filter(isParamEditorRichControl);\n const compactGroups = horizontalGroups\n .map((group) => ({ group, params: group.params.filter((param) => !isParamEditorRichControl(param)) }))\n .filter(({ params: groupParams }) => groupParams.length > 0);\n const richGroups = horizontalGroups\n .map((group) => ({ group, params: group.params.filter(isParamEditorRichControl) }))\n .filter(({ params: groupParams }) => groupParams.length > 0);\n const gap = variant === \"small\" ? \"xs\" : \"sm\";\n const hasCompactControls = compactParams.length > 0 || compactGroups.length > 0;\n\n return (\n <Stack flex=\"1\" maxW=\"full\" gap={gap} minW=\"0\">\n {hasCompactControls ? (\n <HStack gap={gap} flexWrap=\"wrap\" alignItems=\"start\" minW=\"0\">\n {compactParams.map(renderParam)}\n {compactGroups.map(({ group, params: groupParams }) => (\n <HorizontalGroup\n key={group.id}\n group={group}\n params={groupParams}\n renderParam={renderParam}\n variant={variant}\n />\n ))}\n </HStack>\n ) : null}\n\n {richParams.map((param) => (\n <Box key={param.id} width=\"full\" minW=\"0\">\n {renderParam(param)}\n </Box>\n ))}\n\n {richGroups.map(({ group, params: groupParams }) => (\n <HorizontalGroup\n key={`${group.id}-rich`}\n group={group}\n params={groupParams}\n renderParam={renderParam}\n variant={variant}\n width=\"full\"\n />\n ))}\n </Stack>\n );\n};\n","import { Button, Icon, Input, Stack, Text, Textarea, Wrap } from \"@chakra-ui/react\";\nimport { Paperclip } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { AttachmentChip } from \"@/components/overlays/attachment-chip\";\nimport { SelectionInput } from \"@/components/param-editor/inputs/selection-input\";\nimport { LazyMarkdownEditor } from \"@/components/rich-text\";\nimport type { KanbanRendererCreateField } from \"./types\";\n\n// The editor and its syntax highlighting are heavy and only needed once a\n// markdown field is actually on screen, so the host loads them on demand.\nconst MarkdownControl = (props: {\n disabled: boolean;\n field: KanbanRendererCreateField;\n onChange: (value: unknown) => void;\n}) => {\n const { disabled, field, onChange } = props;\n\n return (\n <LazyMarkdownEditor\n // Seed from the declared default so a pre-filled field is visible rather\n // than blank-but-submittable. Lexical reads this once, on mount.\n defaultState={typeof field.defaultValue === \"string\" ? field.defaultValue : \"\"}\n isEditable={!disabled}\n placeholder={field.placeholder}\n autoFocus\n onChange={(next) => onChange(next)}\n />\n );\n};\n\nconst FilesControl = (props: {\n disabled: boolean;\n field: KanbanRendererCreateField;\n removeLabel: string;\n value: unknown;\n onChange: (value: unknown) => void;\n}) => {\n const { disabled, field, removeLabel, value, onChange } = props;\n const input = useRef<HTMLInputElement>(null);\n const files = Array.isArray(value) ? (value as File[]) : [];\n\n return (\n <Stack gap=\"2xs\" align=\"start\">\n <input\n ref={input}\n hidden\n type=\"file\"\n accept={field.accept}\n multiple={field.multiple !== false}\n // Appending keeps earlier picks; replacing silently discards them. A\n // single-file field replaces instead, so it can never hold two.\n onChange={(event) => {\n const picked = Array.from(event.target.files ?? []);\n onChange(field.multiple === false ? picked.slice(0, 1) : [...files, ...picked]);\n event.target.value = \"\";\n }}\n />\n <Button size=\"xs\" variant=\"ghost\" disabled={disabled} onClick={() => input.current?.click()}>\n <Icon as={Paperclip} boxSize=\"4\" />\n {field.label}\n </Button>\n {files.length > 0 ? (\n <Wrap gap=\"2xs\">\n {files.map((file, index) => (\n <AttachmentChip\n key={`${file.name}-${index.toString()}`}\n file={file}\n disabled={disabled}\n removeLabel={removeLabel}\n onRemove={() => onChange(files.filter((_, itemIndex) => itemIndex !== index))}\n />\n ))}\n </Wrap>\n ) : null}\n </Stack>\n );\n};\n\ninterface CreateFieldControlProps {\n disabled: boolean;\n field: KanbanRendererCreateField;\n removeLabel: string;\n value: unknown;\n onChange: (value: unknown) => void;\n}\n\nconst FieldInput = (props: CreateFieldControlProps) => {\n const { disabled, field, value, onChange } = props;\n\n if (field.type === \"longtext\")\n return (\n <Textarea\n aria-label={field.label}\n minH=\"120px\"\n size=\"sm\"\n placeholder={field.placeholder}\n value={typeof value === \"string\" ? value : \"\"}\n disabled={disabled}\n onChange={(event) => onChange(event.target.value)}\n />\n );\n\n // Declared selects share the ParamEditor's control, so they look and behave\n // exactly like the resource attributes rendered beside them.\n if (field.type === \"select\" || field.type === \"multi-select\")\n return (\n <SelectionInput\n hideLabel\n id={field.id}\n name={field.label}\n description={field.description ?? \"\"}\n defaultValue={(value as string | string[]) ?? (field.type === \"multi-select\" ? [] : \"\")}\n options={(field.options ?? []).map((option) => ({\n id: option.value,\n name: option.label,\n icon: option.icon ?? undefined,\n color: option.color,\n }))}\n multiSelect={field.type === \"multi-select\"}\n placeholder={field.placeholder ?? field.label}\n clearable={!field.required}\n readOnly={disabled}\n onChange={(_, next) => onChange(next)}\n />\n );\n\n if (field.type === \"boolean\")\n return (\n <Button size=\"sm\" variant=\"outline\" disabled={disabled} onClick={() => onChange(value !== true)}>\n {field.label}\n </Button>\n );\n\n return (\n <Input\n aria-label={field.label}\n size=\"sm\"\n type={field.type === \"number\" ? \"number\" : \"text\"}\n placeholder={field.placeholder}\n value={typeof value === \"string\" || typeof value === \"number\" ? value : \"\"}\n disabled={disabled}\n onChange={(event) =>\n onChange(field.type === \"number\" && event.target.value ? Number(event.target.value) : event.target.value)\n }\n />\n );\n};\n\nexport const CreateFieldControl = (props: CreateFieldControlProps) => {\n const { disabled, field, removeLabel, value, onChange } = props;\n\n // Files and markdown carry their own trigger label / placeholder, so the\n // stacked label above them would just repeat it.\n if (field.type === \"files\")\n return (\n <FilesControl disabled={disabled} field={field} removeLabel={removeLabel} value={value} onChange={onChange} />\n );\n\n if (field.type === \"markdown\") return <MarkdownControl disabled={disabled} field={field} onChange={onChange} />;\n\n return (\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/S/medium\">{`${field.label}${field.required ? \" *\" : \"\"}`}</Text>\n {field.description ? (\n <Text textStyle=\"paragraph/XS/regular\" color=\"fg.muted\">\n {field.description}\n </Text>\n ) : null}\n <FieldInput {...props} />\n </Stack>\n );\n};\n","import { Button, CloseButton, Dialog, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { handleDialogAcceptShortcut } from \"@/components/overlays/dialog-accept-shortcut\";\nimport type { Param, ParamValueMap } from \"@/components/param-editor/param-editor.types\";\nimport { ParamEditorHorizontal } from \"@/components/param-editor/param-editor-horizontal\";\nimport { CreateFieldControl } from \"./kanban-renderer-create-field\";\nimport { getEnumOptions } from \"./kanban-renderer-helpers\";\nimport type {\n AttributeDescriptor,\n KanbanRendererCreateField,\n KanbanRendererCreateRowConfig,\n KanbanRendererCreateSubmission,\n} from \"./types\";\n\ninterface KanbanRendererCreateDialogProps {\n open: boolean;\n columnId: string;\n columnAttributeId?: string;\n attributes: AttributeDescriptor[];\n config: KanbanRendererCreateRowConfig;\n onClose: () => void;\n onSubmit: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;\n}\n\nconst emptyValue = (field: KanbanRendererCreateField) => {\n if (field.type === \"files\" || field.type === \"multi-select\") return [];\n if (field.type === \"boolean\") return false;\n return \"\";\n};\n\nconst initialFieldValues = (fields: KanbanRendererCreateField[]) =>\n Object.fromEntries(fields.map((field) => [field.id, field.defaultValue ?? emptyValue(field)]));\n\nconst isFilled = (field: KanbanRendererCreateField, value: unknown) => {\n if (!field.required) return true;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === \"string\") return value.trim().length > 0;\n return value !== undefined && value !== null;\n};\n\n// Every editable attribute is offered, whatever its kind — narrowing to enums\n// silently drops editable user/date/number attributes from the create form.\nconst editableCreateAttributes = (attributes: AttributeDescriptor[]) =>\n attributes.filter((attribute) => attribute.editable);\n\nconst initialAttributeValues = (\n attributes: AttributeDescriptor[],\n columnAttributeId: string | undefined,\n columnId: string,\n) =>\n Object.fromEntries(\n attributes.map((attribute) => [\n attribute.id,\n attribute.id === columnAttributeId ? columnId : attribute.type.kind === \"enum-multi\" ? [] : \"\",\n ]),\n );\n\n/**\n * Editable attributes render through the ParamEditor so a resource property and\n * a command param are the same control, not two that merely resemble each other.\n */\nconst attributeToParam = (attribute: AttributeDescriptor, locked: boolean): Param => {\n const base = { id: attribute.id, name: attribute.label, description: \"\" };\n\n if (attribute.type.kind === \"enum\" || attribute.type.kind === \"enum-multi\") {\n const multiSelect = attribute.type.kind === \"enum-multi\";\n return {\n ...base,\n type: \"selection\",\n defaultValue: multiSelect ? [] : \"\",\n multiSelect,\n // The trigger shows the value alone; the attribute name is the placeholder.\n placeholder: attribute.label,\n clearable: !locked,\n // The column already chose this value, and the create command reads it\n // from the column param — editing it here would be ignored.\n disabled: locked,\n options: getEnumOptions(attribute.type).map((option) => ({\n id: option.value,\n name: option.label,\n icon: option.icon ?? undefined,\n color: option.color,\n })),\n };\n }\n\n if (attribute.type.kind === \"number\") return { ...base, type: \"number\", defaultValue: 0 };\n return { ...base, type: \"text\", defaultValue: \"\", singleLine: true };\n};\n\nexport const KanbanRendererCreateDialog = (props: KanbanRendererCreateDialogProps) => {\n const { open, columnId, columnAttributeId, attributes, config, onClose, onSubmit } = props;\n const [values, setValues] = useState<Record<string, unknown>>({});\n const [attributeValues, setAttributeValues] = useState<Record<string, unknown>>({});\n const [submitting, setSubmitting] = useState(false);\n const [error, setError] = useState(\"\");\n // Uncontrolled editors (Lexical) read their seed once on mount, so a reset has\n // to remount the fields or the old text stays on screen over fresh state.\n const [resetToken, setResetToken] = useState(0);\n const initializedRef = useRef(false);\n const editableAttributes = editableCreateAttributes(attributes);\n\n // Opening is the only thing that clears the form. Attributes and fields can\n // arrive or change while it is open (they come from live sources), so this\n // runs once per open cycle — resetting on those would wipe what was typed.\n useEffect(() => {\n if (!open) {\n initializedRef.current = false;\n return;\n }\n if (initializedRef.current) return;\n initializedRef.current = true;\n\n setValues(initialFieldValues(config.fields));\n setAttributeValues(initialAttributeValues(editableCreateAttributes(attributes), columnAttributeId, columnId));\n setError(\"\");\n setResetToken((token) => token + 1);\n }, [attributes, columnAttributeId, columnId, config.fields, open]);\n\n // Fields can be added or withdrawn while the dialog is open. Seed the new\n // ones and drop the withdrawn, so what is submitted always matches what is\n // rendered — but leave everything the user has already filled in alone.\n useEffect(() => {\n if (!open) return;\n const seeded = initialFieldValues(config.fields);\n const declared = new Set(config.fields.map((field) => field.id));\n setValues((current) => {\n const kept = Object.entries(current).filter(([id]) => declared.has(id));\n const added = Object.entries(seeded).filter(([id]) => !(id in current));\n if (added.length === 0 && kept.length === Object.keys(current).length) return current;\n return { ...Object.fromEntries(added), ...Object.fromEntries(kept) };\n });\n }, [config.fields, open]);\n\n // Same contract for attributes: seed the ones that appear after opening, drop\n // the ones withdrawn. A withdrawn entry left behind would still be submitted\n // even though its control is gone.\n useEffect(() => {\n if (!open) return;\n const editable = editableCreateAttributes(attributes);\n const seeded = initialAttributeValues(editable, columnAttributeId, columnId);\n const declared = new Set(editable.map((attribute) => attribute.id));\n setAttributeValues((current) => {\n const kept = Object.entries(current).filter(([id]) => declared.has(id));\n const added = Object.entries(seeded).filter(([id]) => !(id in current));\n if (added.length === 0 && kept.length === Object.keys(current).length) return current;\n return { ...Object.fromEntries(added), ...Object.fromEntries(kept) };\n });\n }, [attributes, open, columnId, columnAttributeId]);\n\n const close = () => {\n if (!submitting) onClose();\n };\n\n const valid = config.fields.every((field) => isFilled(field, values[field.id]));\n\n const submit = async () => {\n if (!valid || submitting) return;\n setSubmitting(true);\n setError(\"\");\n try {\n const fileFieldIds = new Set(config.fields.filter((field) => field.type === \"files\").map((field) => field.id));\n const files = [...fileFieldIds].flatMap((id) => (Array.isArray(values[id]) ? (values[id] as File[]) : []));\n const declaredValues = Object.fromEntries(Object.entries(values).filter(([id]) => !fileFieldIds.has(id)));\n\n await onSubmit({ columnId, columnAttributeId, values: declaredValues, attributeValues, files });\n onClose();\n } catch (caught) {\n setError(caught instanceof Error ? caught.message : config.labels.submitError);\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <Dialog.Root open={open} size=\"lg\" scrollBehavior=\"inside\" onOpenChange={(details) => !details.open && close()}>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content\n maxH=\"calc(100% - 48px)\"\n onKeyDownCapture={(event) => handleDialogAcceptShortcut(event, () => void submit(), valid && !submitting)}\n >\n <Dialog.Header>\n <Dialog.Title>{config.title}</Dialog.Title>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" disabled={submitting} />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n {config.fields.map((field) => (\n <CreateFieldControl\n key={`${field.id}:${resetToken.toString()}`}\n field={field}\n removeLabel={config.labels.removeFile}\n value={values[field.id]}\n disabled={submitting}\n onChange={(value) => setValues((current) => ({ ...current, [field.id]: value }))}\n />\n ))}\n {editableAttributes.length > 0 ? (\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/S/medium\">{config.labels.properties}</Text>\n <ParamEditorHorizontal\n variant=\"small\"\n params={editableAttributes.map((attribute) =>\n attributeToParam(attribute, attribute.id === columnAttributeId),\n )}\n defaultValues={attributeValues as ParamValueMap}\n readOnly={submitting}\n onChange={(attributeId, value) =>\n setAttributeValues((current) => ({ ...current, [attributeId]: value }))\n }\n />\n </Stack>\n ) : null}\n {error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.error\">\n {error}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer justifyContent=\"end\">\n <HStack gap=\"2\">\n <Button size=\"sm\" variant=\"ghost\" disabled={submitting} onClick={close}>\n {config.labels.cancel}\n </Button>\n <Button size=\"sm\" variant=\"primary\" disabled={!valid} loading={submitting} onClick={() => void submit()}>\n {config.submitLabel}\n </Button>\n </HStack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport { getIconComponent } from \"@/components/primitives/icon-options\";\nimport { type KanbanRendererColumnGroup, orderRows } from \"./kanban-renderer-grouping\";\nimport {\n collectDisplayBadges,\n collectDisplayCustomSlots,\n findEnumOption,\n resolveListDropTargetColumnKey,\n} from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererListItem } from \"./kanban-renderer-list\";\nimport type { AttributeDescriptor, KanbanRendererRow, KanbanRendererSettings } from \"./types\";\nimport { findAttribute, MANUAL_ORDERING, NO_GROUPING } from \"./types\";\n\ninterface BuildKanbanRendererListItemsInput<TRow extends KanbanRendererRow> {\n settings: KanbanRendererSettings;\n visibleRows: TRow[];\n grouped: KanbanRendererColumnGroup[];\n attributes: AttributeDescriptor[];\n onRowClick?: (row: TRow) => void;\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];\n}\n\nexport const buildKanbanRendererListItems = <TRow extends KanbanRendererRow>(\n input: BuildKanbanRendererListItemsInput<TRow>,\n) => {\n const {\n settings,\n visibleRows,\n grouped,\n attributes,\n onRowClick,\n onAttributeChange,\n onReorder,\n getRowContextMenuActions,\n } = input;\n const supportsManualReorder = settings.ordering.attributeId === MANUAL_ORDERING;\n const listDisplayProperties = settings.displayProperties.filter((property) => property !== \"id\");\n const getStatusPresentation = (attributeId: string, key: string) => {\n const descriptor = findAttribute(attributes, attributeId);\n const option = descriptor ? findEnumOption(descriptor.type, key) : undefined;\n return {\n statusColorPalette: option?.color,\n statusIcon: getIconComponent(option?.icon),\n };\n };\n const getRowStatusPresentation = (row: TRow) => {\n const status = row.attributes.status;\n if (typeof status !== \"string\") return {};\n return getStatusPresentation(\"status\", status);\n };\n\n const toListItem = (row: TRow, placement?: { columnKey?: string; rowKey?: string }): KanbanRendererListItem => {\n const shorthand = typeof row.attributes.id === \"string\" ? row.attributes.id : undefined;\n\n return {\n id: row.id,\n eyebrow: shorthand && shorthand !== row.title ? shorthand : undefined,\n title: row.title,\n ...getRowStatusPresentation(row),\n badges: collectDisplayBadges(row, attributes, listDisplayProperties),\n customSlots: collectDisplayCustomSlots(row, attributes, listDisplayProperties),\n contextMenuActions: getRowContextMenuActions?.(row),\n onClick: () => onRowClick?.(row),\n onBadgeChange: onAttributeChange\n ? (attributeId: string, value: unknown) => onAttributeChange(row.id, attributeId, value)\n : undefined,\n draggable: Boolean(onAttributeChange || onReorder),\n onDropRow:\n supportsManualReorder && (onAttributeChange || onReorder)\n ? (draggedId) => {\n const targetColumnKey = resolveListDropTargetColumnKey(settings.columnGrouping, placement);\n if (targetColumnKey && settings.columnGrouping !== NO_GROUPING && onAttributeChange) {\n onAttributeChange(draggedId, settings.columnGrouping, targetColumnKey);\n }\n if (settings.rowGrouping !== NO_GROUPING && placement?.rowKey && onAttributeChange) {\n onAttributeChange(draggedId, settings.rowGrouping, placement.rowKey);\n }\n onReorder?.(draggedId, row.id);\n }\n : undefined,\n };\n };\n\n const toGroupListItem = (\n group: { key: string; label: string; rows: KanbanRendererRow[] },\n parent?: { columnKey: string },\n ): KanbanRendererListItem => {\n const groupingAttributeId = parent ? settings.rowGrouping : settings.columnGrouping;\n return {\n id: parent ? `group::${parent.columnKey}::${group.key}` : `group::${group.key}`,\n title: group.label,\n isGroup: true,\n countBadge: group.rows.length,\n ...getStatusPresentation(groupingAttributeId, group.key),\n onDropRow:\n onAttributeChange && settings.columnGrouping !== NO_GROUPING\n ? (draggedId) => {\n const columnKey = parent?.columnKey ?? group.key;\n onAttributeChange(draggedId, settings.columnGrouping, columnKey);\n if (settings.rowGrouping !== NO_GROUPING && parent) {\n onAttributeChange(draggedId, settings.rowGrouping, group.key);\n }\n }\n : undefined,\n children: orderRows(group.rows, settings.ordering, attributes).map((row) =>\n toListItem(row as TRow, {\n columnKey: parent?.columnKey ?? group.key,\n rowKey: parent ? group.key : undefined,\n }),\n ),\n };\n };\n\n if (settings.columnGrouping === NO_GROUPING) {\n return orderRows(visibleRows, settings.ordering, attributes).map((row) => toListItem(row as TRow));\n }\n\n return grouped.map((column) =>\n column.subgroups.length > 0\n ? {\n id: `group::${column.key}`,\n title: column.label,\n isGroup: true,\n countBadge: column.rows.length,\n ...getStatusPresentation(settings.columnGrouping, column.key),\n onDropRow: onAttributeChange\n ? (draggedId: string) => onAttributeChange(draggedId, settings.columnGrouping, column.key)\n : undefined,\n children: column.subgroups.map((group) => toGroupListItem(group, { columnKey: column.key })),\n }\n : toGroupListItem(column),\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type {\n KanbanRendererBoardColumn,\n KanbanRendererBoardColumnAction,\n KanbanRendererBoardGroup,\n} from \"./kanban-renderer-board\";\nimport { applyBoardMoveItem, applyBoardMoveToGroup } from \"./kanban-renderer-board-move\";\nimport { KanbanRendererContent } from \"./kanban-renderer-content\";\nimport { KanbanRendererCreateDialog } from \"./kanban-renderer-create-dialog\";\nimport { filterRows, groupRows, orderRows } from \"./kanban-renderer-grouping\";\nimport {\n collectDisplayBadges,\n collectDisplayCustomSlots,\n findEnumOption,\n resolveKnownColumnKeys,\n} from \"./kanban-renderer-helpers\";\nimport { buildKanbanRendererListItems } from \"./kanban-renderer-list-items\";\nimport { KanbanRendererToolbar } from \"./kanban-renderer-toolbar\";\nimport type {\n AttributeDescriptor,\n KanbanRendererCreateRowConfig,\n KanbanRendererCreateSubmission,\n KanbanRendererFilterState,\n KanbanRendererRow,\n KanbanRendererSavedView,\n KanbanRendererSettings,\n KanbanRendererViewsSource,\n} from \"./types\";\nimport { findAttribute, NO_GROUPING } from \"./types\";\nimport { useKanbanRendererStore } from \"./use-kanban-renderer-store\";\nimport { useKanbanViews } from \"./use-kanban-views\";\nimport { useResolvedAttributes } from \"./use-resolved-attributes\";\n\n/** Board-column behavior and menu configuration for a resolved column group. */\nexport interface BoardColumnConfig {\n /** Chakra color palette used for the column header and group badges. */\n color?: string;\n canDragIn?: boolean;\n canDragOut?: boolean;\n canCreate?: boolean;\n actions?: KanbanRendererBoardColumnAction[];\n}\n\n/** Switchable list/board renderer for rows with typed attributes, filtering, grouping, and ordering. */\nexport interface KanbanRendererProps<TRow extends KanbanRendererRow = KanbanRendererRow> {\n /** Stable rows to render. Each row must have an id, title, and attributes map. */\n rows: TRow[];\n /** Persistent key used by the renderer store for view, filter, grouping, ordering, and list expansion settings. */\n storageKey: string;\n /** Attribute descriptors that define display, filtering, grouping, ordering, and board columns. */\n attributes: AttributeDescriptor[];\n selectedRowId?: string | null;\n emptyState?: ReactNode;\n emptyTitle?: string;\n emptyDescription?: string;\n /** Replaces the data area while a query is unavailable, keeping its controls mounted. */\n contentPlaceholder?: ReactNode;\n defaultSettings?: Partial<KanbanRendererSettings>;\n defaultFilters?: KanbanRendererFilterState;\n viewsSource?: KanbanRendererViewsSource;\n defaultViews?: KanbanRendererSavedView[];\n defaultActiveViewId?: string;\n hideToolbar?: boolean;\n toolbarActions?: ReactNode;\n toolbarLeading?: ReactNode;\n onRowClick?: (row: TRow) => void;\n /** Called when a row attribute changes through drag/drop, board movement, or inline controls. */\n onAttributeChange?: (rowId: string, attributeId: string, value: unknown) => Promise<void> | void;\n /** Called for manual row ordering when a dragged row is dropped before another row. */\n onReorder?: (rowId: string, beforeRowId?: string) => Promise<void> | void;\n createRow?: KanbanRendererCreateRowConfig;\n onCreateRow?: (submission: KanbanRendererCreateSubmission) => Promise<void> | void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n getRowContextMenuActions?: (row: TRow) => ResourceContextAction[];\n}\n\nconst rowEyebrow = (row: KanbanRendererRow) => {\n const shorthand = row.attributes.id;\n return typeof shorthand === \"string\" && shorthand ? shorthand : row.id;\n};\n\nexport const KanbanRenderer = <TRow extends KanbanRendererRow>(props: KanbanRendererProps<TRow>) => {\n const {\n rows,\n storageKey,\n attributes: rawAttributes,\n selectedRowId = null,\n emptyState,\n emptyTitle = \"No rows found\",\n emptyDescription = \"Try changing filters or display settings.\",\n contentPlaceholder,\n defaultSettings,\n defaultFilters,\n viewsSource,\n defaultViews,\n defaultActiveViewId,\n onRowClick,\n onAttributeChange,\n onReorder,\n createRow,\n onCreateRow,\n onColumnAction,\n getBoardColumnConfig,\n getRowContextMenuActions,\n hideToolbar = false,\n toolbarActions,\n toolbarLeading,\n } = props;\n\n useKanbanViews(props);\n const attributes = useResolvedAttributes(rawAttributes);\n const [createColumnId, setCreateColumnId] = useState<string | null>(null);\n const initialState = {\n settings: defaultSettings,\n filters: defaultFilters,\n };\n const settings = useKanbanRendererStore(storageKey, (state) => state.settings, initialState);\n const filters = useKanbanRendererStore(storageKey, (state) => state.filters, initialState);\n const expandedGroups = useKanbanRendererStore(storageKey, (state) => state.expandedGroups, initialState);\n const setExpandedGroup = useKanbanRendererStore(storageKey, (state) => state.setExpandedGroup, initialState);\n\n const visibleRows = filterRows(rows, filters, attributes) as TRow[];\n\n const knownColumnKeys = resolveKnownColumnKeys(settings.columnGrouping, attributes, filters);\n\n const grouped = groupRows(visibleRows, {\n attributes,\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n knownColumnKeys,\n });\n\n const listItems = buildKanbanRendererListItems({\n settings,\n visibleRows,\n grouped,\n attributes,\n onRowClick,\n onAttributeChange,\n onReorder,\n getRowContextMenuActions,\n });\n\n const cardDisplayProperties = settings.displayProperties.filter((property) => property !== \"id\");\n const toBoardItems = (boardRows: KanbanRendererRow[]) =>\n boardRows.map((row) => ({\n id: row.id,\n contextMenuActions: getRowContextMenuActions?.(row as TRow),\n cardProps: {\n eyebrow: settings.displayProperties.includes(\"id\") ? rowEyebrow(row) : undefined,\n title: row.title,\n badges: collectDisplayBadges(row, attributes, cardDisplayProperties),\n customSlots: collectDisplayCustomSlots(row, attributes, cardDisplayProperties),\n onBadgeChange: onAttributeChange\n ? (attributeId: string, value: unknown) => onAttributeChange(row.id, attributeId, value)\n : undefined,\n onClick: () => onRowClick?.(row as TRow),\n },\n }));\n\n const columnGroupingDescriptor = findAttribute(attributes, settings.columnGrouping);\n\n const boardColumns: KanbanRendererBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedRows = orderRows(column.rows, settings.ordering, attributes);\n // Column color follows the enum option when the contribution does not\n // provide one, while row display badges stay visually neutral.\n const enumOption = columnGroupingDescriptor ? findEnumOption(columnGroupingDescriptor.type, column.key) : undefined;\n\n const groups: KanbanRendererBoardGroup[] | undefined =\n column.subgroups.length > 0\n ? column.subgroups.map((subgroup) => ({\n key: subgroup.key,\n label: subgroup.label,\n items: toBoardItems(orderRows(subgroup.rows, settings.ordering, attributes)),\n }))\n : undefined;\n\n return {\n id: column.key,\n label: column.label,\n color: columnConfig.color ?? enumOption?.color,\n icon: enumOption?.icon ?? \"circle\",\n canDragIn: columnConfig.canDragIn ?? false,\n canDragOut: columnConfig.canDragOut ?? false,\n canCreate: columnConfig.canCreate ?? false,\n actions: columnConfig.actions ?? [],\n items: toBoardItems(orderedRows),\n groups,\n } satisfies KanbanRendererBoardColumn;\n });\n\n const handleBoardMoveItem = async (\n rowId: string,\n targetColumnId: string,\n context?: { beforeItemId?: string; targetGroupKey?: string },\n ) => {\n await applyBoardMoveItem({\n settings,\n rowId,\n targetColumnId,\n targetGroupKey: context?.targetGroupKey,\n beforeItemId: context?.beforeItemId,\n onAttributeChange,\n onReorder,\n });\n };\n\n const handleBoardMoveToGroup = async (rowId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => {\n await applyBoardMoveToGroup({\n settings,\n rowId,\n targetGroupKey,\n beforeItemId: context?.beforeItemId,\n onAttributeChange,\n onReorder,\n });\n };\n\n return (\n <Stack data-testid=\"kanban-renderer\" height=\"100%\" minH=\"0\" gap=\"0\" background=\"bg\" overflow=\"hidden\">\n {hideToolbar ? null : (\n <KanbanRendererToolbar\n rows={rows}\n storageKey={storageKey}\n attributes={attributes}\n defaultSettings={defaultSettings}\n defaultFilters={defaultFilters}\n viewsSource={viewsSource}\n defaultViews={defaultViews}\n defaultActiveViewId={defaultActiveViewId}\n leading={toolbarLeading}\n actions={toolbarActions}\n />\n )}\n\n {contentPlaceholder !== undefined ? (\n contentPlaceholder\n ) : (\n <KanbanRendererContent\n viewMode={settings.viewMode}\n boardColumns={boardColumns}\n listItems={listItems}\n listExpandedGroups={expandedGroups}\n selectedRowId={selectedRowId}\n emptyState={emptyState}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n onBoardMoveItem={handleBoardMoveItem}\n onBoardMoveToGroup={handleBoardMoveToGroup}\n onCreateRow={createRow && onCreateRow ? setCreateColumnId : undefined}\n onColumnAction={onColumnAction}\n onListExpandedGroupChange={setExpandedGroup}\n listKey={`${settings.columnGrouping}:${settings.rowGrouping}`}\n />\n )}\n {createRow && onCreateRow && createColumnId ? (\n <KanbanRendererCreateDialog\n open\n columnId={createColumnId}\n columnAttributeId={settings.columnGrouping === NO_GROUPING ? undefined : settings.columnGrouping}\n attributes={attributes}\n config={createRow}\n onClose={() => setCreateColumnId(null)}\n onSubmit={onCreateRow}\n />\n ) : null}\n </Stack>\n );\n};\n"],"mappings":"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"}
|