@pstdio/ui 0.25.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/README.md +8 -1
  2. package/dist/EquationComponent-DDd5UoIP.js +65 -0
  3. package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
  4. package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
  5. package/dist/MermaidComponent-DGDnQ6pb.js.map +1 -0
  6. package/dist/browser-storage-C_ipoNwP.js +37 -0
  7. package/dist/browser-storage-C_ipoNwP.js.map +1 -0
  8. package/dist/chat-ui.d.ts +688 -2
  9. package/dist/chat-ui.js +3272 -2763
  10. package/dist/chat-ui.js.map +1 -1
  11. package/dist/data-table-stats-row-DNJG8tLZ.js +415 -0
  12. package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
  13. package/dist/data-table.d.ts +143 -2
  14. package/dist/data-table.js +1216 -1188
  15. package/dist/data-table.js.map +1 -1
  16. package/dist/diff-bubble-DZsarmSG.js +61 -0
  17. package/dist/diff-bubble-DZsarmSG.js.map +1 -0
  18. package/dist/diff-drawer-45rpk3aq.js +776 -0
  19. package/dist/diff-drawer-45rpk3aq.js.map +1 -0
  20. package/dist/diff-editor-CGpeyoCE.js +124 -0
  21. package/dist/diff-editor-CGpeyoCE.js.map +1 -0
  22. package/dist/diff-size-Dydn_Uw5.js +61 -0
  23. package/dist/diff-size-Dydn_Uw5.js.map +1 -0
  24. package/dist/diff-viewer-hGkaF_zW.js +558 -0
  25. package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
  26. package/dist/diff.d.ts +128 -2
  27. package/dist/diff.js +163 -1300
  28. package/dist/diff.js.map +1 -1
  29. package/dist/empty-state-3mVV_pV-.js +38 -0
  30. package/dist/empty-state-3mVV_pV-.js.map +1 -0
  31. package/dist/file-change-badge-0QFNv82B.js +64 -0
  32. package/dist/file-change-badge-0QFNv82B.js.map +1 -0
  33. package/dist/index-BfFLdci8.d.ts +189 -0
  34. package/dist/index-Dd6e8lU_.d.ts +61 -0
  35. package/dist/index-DlmvvQ6x.d.ts +143 -0
  36. package/dist/index.d.ts +1508 -41
  37. package/dist/index.js +3167 -3173
  38. package/dist/index.js.map +1 -1
  39. package/dist/kanban-renderer.d.ts +337 -2
  40. package/dist/kanban-renderer.js +1413 -1084
  41. package/dist/kanban-renderer.js.map +1 -1
  42. package/dist/list-row-De9R2zKU.js +1008 -0
  43. package/dist/list-row-De9R2zKU.js.map +1 -0
  44. package/dist/mermaid-renderer-DImi0fDp.js +553 -0
  45. package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
  46. package/dist/mermaid.d.ts +12 -2
  47. package/dist/mermaid.js +2 -5
  48. package/dist/monaco-browser-CLRPSE4-.js +14 -0
  49. package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
  50. package/dist/param-editor-IJzw1cA2.js +225 -0
  51. package/dist/param-editor-IJzw1cA2.js.map +1 -0
  52. package/dist/param-editor-field-DscIjv8s.js +2368 -0
  53. package/dist/param-editor-field-DscIjv8s.js.map +1 -0
  54. package/dist/param-editor.d.ts +407 -0
  55. package/dist/param-editor.js +3 -0
  56. package/dist/prism-pSHJejZx.js +646 -0
  57. package/dist/prism-pSHJejZx.js.map +1 -0
  58. package/dist/radio-CiFrDN6O.js +54 -0
  59. package/dist/radio-CiFrDN6O.js.map +1 -0
  60. package/dist/resource-badge-95WPVlZf.d.ts +76 -0
  61. package/dist/rich-text-DtQpHBlX.js +7018 -0
  62. package/dist/rich-text-DtQpHBlX.js.map +1 -0
  63. package/dist/rich-text.d.ts +3 -2
  64. package/dist/rich-text.js +2 -265
  65. package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
  66. package/dist/scroll-area-Cr1lNXAr.js +100 -0
  67. package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
  68. package/dist/slider-hwHYe98I.js +423 -0
  69. package/dist/slider-hwHYe98I.js.map +1 -0
  70. package/dist/style.css +2 -1
  71. package/dist/terminal.d.ts +203 -2
  72. package/dist/terminal.js +324 -357
  73. package/dist/terminal.js.map +1 -1
  74. package/dist/theme-kSkOHzbV.js +2852 -0
  75. package/dist/theme-kSkOHzbV.js.map +1 -0
  76. package/dist/theme-preference-pzfuK5cH.js +101 -0
  77. package/dist/theme-preference-pzfuK5cH.js.map +1 -0
  78. package/dist/theme.d.ts +3 -2
  79. package/dist/theme.js +2 -15
  80. package/dist/tree-list-BUfDQz3v.js +1449 -0
  81. package/dist/tree-list-BUfDQz3v.js.map +1 -0
  82. package/dist/types-yjKBk07w.d.ts +161 -0
  83. package/dist/workspace-badge-9g78pXHS.js +245 -0
  84. package/dist/workspace-badge-9g78pXHS.js.map +1 -0
  85. package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -0
  86. package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
  87. package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
  88. package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
  89. package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
  90. package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
  91. package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
  92. package/dist-monaco/monaco.css +1 -0
  93. package/dist-monaco/monaco.js +1201 -0
  94. package/package.json +30 -12
  95. package/dist/EquationComponent-DeDYHvqY.js +0 -62
  96. package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
  97. package/dist/MermaidComponent-BVdDqDRU.js +0 -60
  98. package/dist/MermaidComponent-BVdDqDRU.js.map +0 -1
  99. package/dist/browser-storage-DPtOQJx0.js +0 -127
  100. package/dist/browser-storage-DPtOQJx0.js.map +0 -1
  101. package/dist/components/activity/activity-avatar.d.ts +0 -9
  102. package/dist/components/activity/activity-comment.d.ts +0 -27
  103. package/dist/components/activity/activity-composer.d.ts +0 -18
  104. package/dist/components/activity/activity-event.d.ts +0 -12
  105. package/dist/components/activity/activity-root.d.ts +0 -15
  106. package/dist/components/activity/activity-timeline.d.ts +0 -6
  107. package/dist/components/activity/activity.types.d.ts +0 -5
  108. package/dist/components/activity/index.d.ts +0 -27
  109. package/dist/components/activity/resource-activity-feed.d.ts +0 -58
  110. package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
  111. package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
  112. package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
  113. package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
  114. package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
  115. package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
  116. package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
  117. package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
  118. package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
  119. package/dist/components/chat-ui/components/chat-input.d.ts +0 -31
  120. package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
  121. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
  122. package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
  123. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
  124. package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
  125. package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
  126. package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
  127. package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
  128. package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
  129. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
  130. package/dist/components/chat-ui/components/message-types.d.ts +0 -116
  131. package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
  132. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
  133. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
  134. package/dist/components/chat-ui/components/send-button.d.ts +0 -7
  135. package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
  136. package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
  137. package/dist/components/chat-ui/components/timeline.d.ts +0 -113
  138. package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
  139. package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
  140. package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
  141. package/dist/components/chat-ui/index.d.ts +0 -19
  142. package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
  143. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
  144. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
  145. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
  146. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
  147. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
  148. package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
  149. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
  150. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
  151. package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
  152. package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
  153. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
  154. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
  155. package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
  156. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
  157. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
  158. package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
  159. package/dist/components/chat-ui/utils/diff.d.ts +0 -21
  160. package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
  161. package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
  162. package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
  163. package/dist/components/command-palette/index.d.ts +0 -4
  164. package/dist/components/command-palette/palette-filter.d.ts +0 -23
  165. package/dist/components/command-palette/palette-list.d.ts +0 -11
  166. package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
  167. package/dist/components/command-palette/palette.d.ts +0 -48
  168. package/dist/components/data-table/build-columns.d.ts +0 -16
  169. package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
  170. package/dist/components/data-table/color-cell-style.d.ts +0 -13
  171. package/dist/components/data-table/color-scale-cell.d.ts +0 -7
  172. package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
  173. package/dist/components/data-table/data-table-header.d.ts +0 -12
  174. package/dist/components/data-table/data-table-row-display.d.ts +0 -11
  175. package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
  176. package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
  177. package/dist/components/data-table/data-table-state.d.ts +0 -27
  178. package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
  179. package/dist/components/data-table/data-table-stats.d.ts +0 -19
  180. package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
  181. package/dist/components/data-table/data-table.d.ts +0 -2
  182. package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
  183. package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
  184. package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
  185. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
  186. package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
  187. package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
  188. package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
  189. package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
  190. package/dist/components/data-table/edit-mode-story.d.ts +0 -5
  191. package/dist/components/data-table/friendly-json-display.d.ts +0 -31
  192. package/dist/components/data-table/helpers.d.ts +0 -10
  193. package/dist/components/data-table/index.d.ts +0 -7
  194. package/dist/components/data-table/json-cell.d.ts +0 -6
  195. package/dist/components/data-table/pagination-footer.d.ts +0 -11
  196. package/dist/components/data-table/selection-toolbar.d.ts +0 -11
  197. package/dist/components/data-table/types.d.ts +0 -117
  198. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
  199. package/dist/components/diff-viewer/code-editor.d.ts +0 -43
  200. package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
  201. package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
  202. package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
  203. package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
  204. package/dist/components/diff-viewer/diff-card.d.ts +0 -46
  205. package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
  206. package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
  207. package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
  208. package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
  209. package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
  210. package/dist/components/diff-viewer/diff-size.d.ts +0 -16
  211. package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
  212. package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
  213. package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
  214. package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
  215. package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
  216. package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
  217. package/dist/components/diff-viewer/index.d.ts +0 -9
  218. package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
  219. package/dist/components/diff-viewer/types.d.ts +0 -13
  220. package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
  221. package/dist/components/file-browser/column-file-browser.d.ts +0 -20
  222. package/dist/components/internal/performance-panel.d.ts +0 -40
  223. package/dist/components/internal/style-guide.d.ts +0 -14
  224. package/dist/components/internal/token-editor-controls.d.ts +0 -8
  225. package/dist/components/internal/token-editor-data.d.ts +0 -40
  226. package/dist/components/internal/token-editor-state.d.ts +0 -22
  227. package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
  228. package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
  229. package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
  230. package/dist/components/kanban-renderer/index.d.ts +0 -19
  231. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
  232. package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
  233. package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
  234. package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
  235. package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
  236. package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
  237. package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
  238. package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
  239. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
  240. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
  241. package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
  242. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
  243. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
  244. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
  245. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
  246. package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
  247. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
  248. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
  249. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
  250. package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
  251. package/dist/components/kanban-renderer/types.d.ts +0 -159
  252. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
  253. package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
  254. package/dist/components/layout/header.d.ts +0 -7
  255. package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
  256. package/dist/components/layout/index.d.ts +0 -8
  257. package/dist/components/layout/item-section.d.ts +0 -11
  258. package/dist/components/layout/panel-header.constants.d.ts +0 -3
  259. package/dist/components/layout/resizable-split-layout.d.ts +0 -22
  260. package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
  261. package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
  262. package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
  263. package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
  264. package/dist/components/list-row/list-row-actions.d.ts +0 -11
  265. package/dist/components/list-row/list-row-chrome.d.ts +0 -11
  266. package/dist/components/list-row/list-row-content.d.ts +0 -17
  267. package/dist/components/list-row/list-row-menu.d.ts +0 -12
  268. package/dist/components/list-row/list-row-root-props.d.ts +0 -34
  269. package/dist/components/list-row/list-row.d.ts +0 -2
  270. package/dist/components/list-row/list-row.types.d.ts +0 -109
  271. package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
  272. package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
  273. package/dist/components/mermaid-renderer/index.d.ts +0 -2
  274. package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
  275. package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
  276. package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
  277. package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
  278. package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
  279. package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
  280. package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
  281. package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
  282. package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
  283. package/dist/components/notification-center/index.d.ts +0 -2
  284. package/dist/components/notification-center/notification-center.d.ts +0 -2
  285. package/dist/components/notification-center/notification-center.types.d.ts +0 -37
  286. package/dist/components/overlays/attached-menu.d.ts +0 -6
  287. package/dist/components/overlays/attached-panel.d.ts +0 -9
  288. package/dist/components/overlays/attachment-chip.d.ts +0 -13
  289. package/dist/components/overlays/bubble-button.d.ts +0 -10
  290. package/dist/components/overlays/bubble-panel.d.ts +0 -18
  291. package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
  292. package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
  293. package/dist/components/overlays/index.d.ts +0 -17
  294. package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
  295. package/dist/components/overlays/resource-context-menu.d.ts +0 -35
  296. package/dist/components/overlays/search-modal-content.d.ts +0 -20
  297. package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
  298. package/dist/components/overlays/searchable-menu.d.ts +0 -65
  299. package/dist/components/param-editor/index.d.ts +0 -31
  300. package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
  301. package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
  302. package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
  303. package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
  304. package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
  305. package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
  306. package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
  307. package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
  308. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
  309. package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
  310. package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
  311. package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
  312. package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
  313. package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
  314. package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
  315. package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
  316. package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
  317. package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
  318. package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
  319. package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
  320. package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
  321. package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
  322. package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
  323. package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
  324. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
  325. package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
  326. package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
  327. package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
  328. package/dist/components/param-editor/param-editor-field.d.ts +0 -13
  329. package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
  330. package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
  331. package/dist/components/param-editor/param-editor-label.d.ts +0 -7
  332. package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
  333. package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
  334. package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
  335. package/dist/components/param-editor/param-editor-row.d.ts +0 -17
  336. package/dist/components/param-editor/param-editor-section.d.ts +0 -17
  337. package/dist/components/param-editor/param-editor.d.ts +0 -12
  338. package/dist/components/param-editor/param-editor.types.d.ts +0 -31
  339. package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
  340. package/dist/components/primitives/alert.d.ts +0 -9
  341. package/dist/components/primitives/breadcrumb.d.ts +0 -20
  342. package/dist/components/primitives/checkbox.d.ts +0 -8
  343. package/dist/components/primitives/chip.d.ts +0 -4
  344. package/dist/components/primitives/content-placeholder.d.ts +0 -6
  345. package/dist/components/primitives/empty-state.d.ts +0 -12
  346. package/dist/components/primitives/error-boundary.d.ts +0 -26
  347. package/dist/components/primitives/glyph-icon.d.ts +0 -16
  348. package/dist/components/primitives/icon-color-picker.d.ts +0 -15
  349. package/dist/components/primitives/icon-options.d.ts +0 -301
  350. package/dist/components/primitives/index.d.ts +0 -39
  351. package/dist/components/primitives/info-card.d.ts +0 -12
  352. package/dist/components/primitives/integration-card.d.ts +0 -12
  353. package/dist/components/primitives/number-input.d.ts +0 -6
  354. package/dist/components/primitives/radio.d.ts +0 -8
  355. package/dist/components/primitives/resource-badge.d.ts +0 -64
  356. package/dist/components/primitives/scroll-area.d.ts +0 -17
  357. package/dist/components/primitives/segmented-control.d.ts +0 -20
  358. package/dist/components/primitives/session-indicator.d.ts +0 -15
  359. package/dist/components/primitives/simple-card.d.ts +0 -5
  360. package/dist/components/primitives/slider.d.ts +0 -5
  361. package/dist/components/primitives/switch.d.ts +0 -15
  362. package/dist/components/primitives/tag-swatch.d.ts +0 -10
  363. package/dist/components/primitives/toaster.d.ts +0 -3
  364. package/dist/components/primitives/tooltip.d.ts +0 -11
  365. package/dist/components/primitives/workspace-badge.d.ts +0 -23
  366. package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
  367. package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
  368. package/dist/components/rich-text/index.d.ts +0 -17
  369. package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
  370. package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
  371. package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
  372. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
  373. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
  374. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  375. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  376. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  377. package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
  378. package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
  379. package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
  380. package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
  381. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
  382. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
  383. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
  384. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
  385. package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
  386. package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -4
  387. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
  388. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
  389. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
  390. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
  391. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
  392. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
  393. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
  394. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
  395. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
  396. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
  397. package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -9
  398. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -25
  399. package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
  400. package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
  401. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  402. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  403. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  404. package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
  405. package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
  406. package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
  407. package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
  408. package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
  409. package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
  410. package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
  411. package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
  412. package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
  413. package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
  414. package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
  415. package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
  416. package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
  417. package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
  418. package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
  419. package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
  420. package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
  421. package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
  422. package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
  423. package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
  424. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
  425. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
  426. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
  427. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
  428. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
  429. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
  430. package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
  431. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
  432. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
  433. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
  434. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
  435. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -11
  436. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
  437. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
  438. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
  439. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
  440. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
  441. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
  442. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
  443. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
  444. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
  445. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
  446. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
  447. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
  448. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
  449. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
  450. package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
  451. package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
  452. package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
  453. package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
  454. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
  455. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
  456. package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
  457. package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
  458. package/dist/components/rich-text/types.d.ts +0 -8
  459. package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
  460. package/dist/components/rich-text/utils/markdown.d.ts +0 -5
  461. package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
  462. package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
  463. package/dist/components/sidenav/sidenav-header.d.ts +0 -6
  464. package/dist/components/sidenav/sidenav.d.ts +0 -2
  465. package/dist/components/sidenav/sidenav.store.d.ts +0 -49
  466. package/dist/components/sidenav/sidenav.types.d.ts +0 -31
  467. package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
  468. package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
  469. package/dist/components/tab-strip/window-tabs.d.ts +0 -15
  470. package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
  471. package/dist/components/tag-editor/index.d.ts +0 -8
  472. package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
  473. package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
  474. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
  475. package/dist/components/tag-editor/tag-editor.d.ts +0 -2
  476. package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
  477. package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
  478. package/dist/components/terminal/bind-session.d.ts +0 -33
  479. package/dist/components/terminal/index.d.ts +0 -6
  480. package/dist/components/terminal/scripted-bridge.d.ts +0 -35
  481. package/dist/components/terminal/terminal-contract.d.ts +0 -22
  482. package/dist/components/terminal/terminal-theme.d.ts +0 -12
  483. package/dist/components/terminal/terminal.d.ts +0 -56
  484. package/dist/components/terminal/types.d.ts +0 -35
  485. package/dist/components/terminal/use-terminal-session.d.ts +0 -21
  486. package/dist/components/tree-list/tree-list-background.d.ts +0 -8
  487. package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
  488. package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
  489. package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
  490. package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
  491. package/dist/components/tree-list/tree-list-model.d.ts +0 -58
  492. package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
  493. package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
  494. package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
  495. package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
  496. package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
  497. package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
  498. package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
  499. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
  500. package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
  501. package/dist/components/tree-list/tree-list.d.ts +0 -41
  502. package/dist/components/tree-list/tree-list.types.d.ts +0 -63
  503. package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
  504. package/dist/diff-bubble-DvUPRnfB.js +0 -183
  505. package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
  506. package/dist/edit-mode-data-table-B8UpWb7i.js +0 -846
  507. package/dist/edit-mode-data-table-B8UpWb7i.js.map +0 -1
  508. package/dist/empty-state-Bo4HVrgr.js +0 -34
  509. package/dist/empty-state-Bo4HVrgr.js.map +0 -1
  510. package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
  511. package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
  512. package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
  513. package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
  514. package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
  515. package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
  516. package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
  517. package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
  518. package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
  519. package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
  520. package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
  521. package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
  522. package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
  523. package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
  524. package/dist/kanban-renderer-toolbar-DzY6THJY.js +0 -1374
  525. package/dist/kanban-renderer-toolbar-DzY6THJY.js.map +0 -1
  526. package/dist/lazy-markdown-editor-ClZPZuaU.js +0 -235
  527. package/dist/lazy-markdown-editor-ClZPZuaU.js.map +0 -1
  528. package/dist/list-row-BDoV_iMV.js +0 -815
  529. package/dist/list-row-BDoV_iMV.js.map +0 -1
  530. package/dist/markdown-editor-CAVqJ9yR.js +0 -1019
  531. package/dist/markdown-editor-CAVqJ9yR.js.map +0 -1
  532. package/dist/markdown-gNucAjnF.js +0 -1643
  533. package/dist/markdown-gNucAjnF.js.map +0 -1
  534. package/dist/mermaid-renderer-CVnuKs-A.js +0 -425
  535. package/dist/mermaid-renderer-CVnuKs-A.js.map +0 -1
  536. package/dist/mermaid.js.map +0 -1
  537. package/dist/monaco-browser-l82HnffN.js +0 -22
  538. package/dist/monaco-browser-l82HnffN.js.map +0 -1
  539. package/dist/param-editor-CTx3mDxQ.js +0 -161
  540. package/dist/param-editor-CTx3mDxQ.js.map +0 -1
  541. package/dist/param-editor-field-DteDEyeU.js +0 -2810
  542. package/dist/param-editor-field-DteDEyeU.js.map +0 -1
  543. package/dist/prompt-input-DNpRL5tI.js +0 -564
  544. package/dist/prompt-input-DNpRL5tI.js.map +0 -1
  545. package/dist/radio-cLMEBBZk.js +0 -76
  546. package/dist/radio-cLMEBBZk.js.map +0 -1
  547. package/dist/rich-message-CuPiKxKX.js +0 -78
  548. package/dist/rich-message-CuPiKxKX.js.map +0 -1
  549. package/dist/rich-text.js.map +0 -1
  550. package/dist/test-utils/local-storage.d.ts +0 -1
  551. package/dist/theme/custom/index.d.ts +0 -2
  552. package/dist/theme/custom/vscode-theme.d.ts +0 -32
  553. package/dist/theme/global.d.ts +0 -62
  554. package/dist/theme/index.d.ts +0 -3
  555. package/dist/theme/primitives/colors.d.ts +0 -1081
  556. package/dist/theme/primitives/fonts.d.ts +0 -84
  557. package/dist/theme/primitives/sizes.d.ts +0 -207
  558. package/dist/theme/recipes/activity-comment.d.ts +0 -36
  559. package/dist/theme/recipes/alert.d.ts +0 -1
  560. package/dist/theme/recipes/badge.d.ts +0 -58
  561. package/dist/theme/recipes/button.d.ts +0 -188
  562. package/dist/theme/recipes/color-picker.d.ts +0 -18
  563. package/dist/theme/recipes/dialog.d.ts +0 -1
  564. package/dist/theme/recipes/divider.d.ts +0 -1
  565. package/dist/theme/recipes/drawer.d.ts +0 -1
  566. package/dist/theme/recipes/editable.d.ts +0 -46
  567. package/dist/theme/recipes/form.d.ts +0 -1
  568. package/dist/theme/recipes/input.d.ts +0 -94
  569. package/dist/theme/recipes/kbd.d.ts +0 -41
  570. package/dist/theme/recipes/menu.d.ts +0 -1
  571. package/dist/theme/recipes/number-input.d.ts +0 -98
  572. package/dist/theme/recipes/popover.d.ts +0 -16
  573. package/dist/theme/recipes/progress-circle.d.ts +0 -28
  574. package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
  575. package/dist/theme/recipes/segmented-control.d.ts +0 -22
  576. package/dist/theme/recipes/skeleton.d.ts +0 -1
  577. package/dist/theme/recipes/switch.d.ts +0 -18
  578. package/dist/theme/recipes/tabs.d.ts +0 -80
  579. package/dist/theme/recipes/textarea.d.ts +0 -62
  580. package/dist/theme/recipes/timeline.d.ts +0 -74
  581. package/dist/theme/recipes/tooltip.d.ts +0 -1
  582. package/dist/theme/recipes/window-title-bar.d.ts +0 -19
  583. package/dist/theme/shadowless-default-config.d.ts +0 -2
  584. package/dist/theme/theme.d.ts +0 -2
  585. package/dist/theme/tokens/borders.d.ts +0 -17
  586. package/dist/theme/tokens/colors-background.d.ts +0 -260
  587. package/dist/theme/tokens/colors-visualization.d.ts +0 -162
  588. package/dist/theme/tokens/colors.d.ts +0 -878
  589. package/dist/theme/tokens/layer-styles.d.ts +0 -1
  590. package/dist/theme/tokens/text.d.ts +0 -1
  591. package/dist/theme-Dc7hVvMC.js +0 -3990
  592. package/dist/theme-Dc7hVvMC.js.map +0 -1
  593. package/dist/theme-preference-Bpobguh4.js +0 -114
  594. package/dist/theme-preference-Bpobguh4.js.map +0 -1
  595. package/dist/theme.js.map +0 -1
  596. package/dist/tree-list-CZvcg3_6.js +0 -1348
  597. package/dist/tree-list-CZvcg3_6.js.map +0 -1
  598. package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
  599. package/dist/utils/apply-theme-preference.d.ts +0 -22
  600. package/dist/utils/browser-storage.d.ts +0 -7
  601. package/dist/utils/file-icon-theme-preference.d.ts +0 -15
  602. package/dist/utils/get-file-type-icon.d.ts +0 -2
  603. package/dist/utils/prism.d.ts +0 -1
  604. package/dist/utils/resolve-file-icon-element.d.ts +0 -8
  605. package/dist/utils/theme-preference.d.ts +0 -20
  606. package/dist/workspace-badge-BR_GgsAG.js +0 -175
  607. package/dist/workspace-badge-BR_GgsAG.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"kanban-renderer.js","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 <Text textStyle=\"heading/M/semibold\">{config.title}</Text>\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 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 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 <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 {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"],"names":["applyBoardMoveItem","input","settings","rowId","targetColumnId","targetGroupKey","beforeItemId","onAttributeChange","onReorder","columnGrouping","NO_GROUPING","rowGrouping","ordering","attributeId","MANUAL_ORDERING","applyBoardMoveToGroup","ColumnHeader","props","$","_c","column","onCreateStart","onColumnAction","t0","color","t1","icon","getIconComponent","t2","jsx","Icon","t3","label","Text","t4","items","length","Badge","t5","Symbol","for","Spacer","t6","canCreate","createLabel","id","Tooltip","IconButton","Plus","t7","actions","jsxs","Menu","MoreHorizontal","map","action","ListRow","t8","HStack","stopRowActivation","event","stopPropagation","getSelectedValues","badge","Array","isArray","value","toggleMultiValue","values","optionValue","includes","filter","badgeStyleProps","bg","_light","_dark","_hover","getBadgeIconColor","selectionIcon","isMultiValue","isSelected","SquareCheck","Square","Check","KanbanRendererAttributeBadge","onChange","T0","T1","T2","T3","t9","bb0","options","canEdit","Boolean","isEditable","selectedValues","t10","onClick","onPointerDown","onKeyDown","rowInteractionProps","handleOptionChange","nextValue","t11","t12","ChevronDown","t13","Fragment","badgeContent","t14","Root","Portal","Positioner","Content","option","KanbanRendererCard","eyebrow","title","badges","customSlots","workspaceBadge","draggable","onBadgeChange","onDragStart","onDragEnd","undefined","hasBadges","cursor","defaultPrevented","target","Node","currentTarget","contains","handleClick","borderColor","WorkspaceBadge","Wrap","Stack","GroupSection","columnId","group","selectedItemId","canDragIn","canDragOut","isDropTarget","onGroupDragOver","onGroupDragLeave","onGroupDrop","expanded","setExpanded","useState","_temp","Box","ChevronRight","item","ResourceContextMenu","contextMenuActions","_temp2","event_0","preventDefault","itemId","dataTransfer","getData","cardProps","key","dropEffect","KanbanRendererBoard","columns","onMoveItem","onMoveToGroup","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","handleDragEnd","handleDragOver","event_1","relatedTarget","handleDragLeave","columnId_0","event_2","itemId_0","handleDrop","display","alignItems","gap","padding","minH","ScrollArea","margin","spaceY","groups","groupId","event_3","event_4","event_5","itemId_1","event_6","event_7","itemId_2","setData","effectAllowed","flattenKanbanRendererListItems","depth","rows","canExpand","children","push","isGroup","getRowIsExpanded","getDropTargetIndicatorProps","_before","content","position","left","top","width","height","expandedState","updateExpandedState","isExpanded","renderLabel","countBadge","renderEndContent","buildListRowItem","hasChildren","statusIcon","statusColorPalette","countColorPalette","statusColor","endContent","isContainer","contextMenuItems","disabled","isDisabled","separatorBefore","onAction","KanbanRendererList","expandedGroups","onItemClick","onExpandedGroupChange","localExpandedGroups","setLocalExpandedGroups","activeDropTargetId","setActiveDropTargetId","draggedItemId","setDraggedItemId","current","handleExpandedChange","row","KanbanRendererListRow","onDraggedItemChange","onDropTargetChange","onExpandedChange","canDropHere","onDropRow","rowItem","toggleExpanded","handleActivate","draggedId","t15","t16","KanbanRendererEmptyState","emptyState","description","EmptyState","KanbanRendererContent","viewMode","boardColumns","listItems","listExpandedGroups","selectedRowId","emptyTitle","emptyDescription","onBoardMoveItem","onBoardMoveToGroup","onCreateRow","onListExpandedGroupChange","listKey","HorizontalGroupTitle","HorizontalGroup","params","renderParam","variant","VStack","ParamEditorHorizontal","defaultValues","onOpenResource","readOnly","horizontalParams","isParamEditorHorizontalControl","horizontalGroups","param","ParamEditorField","compactParams","richParams","isParamEditorRichControl","compactGroups","_temp4","_temp5","richGroups","_temp6","_temp7","hasCompactControls","group_2","groupParams_1","groupParams","param_2","group_3","groupParams_2","param_0","_temp3","param_1","group_0","group_1","groupParams_0","MarkdownControl","field","defaultValue","next","placeholder","LazyMarkdownEditor","FilesControl","removeLabel","useRef","files","multiple","picked","from","slice","accept","click","Paperclip","Button","file","index","AttachmentChip","_","itemIndex","name","toString","FieldInput","type","Textarea","required","SelectionInput","Number","Input","CreateFieldControl","emptyValue","initialFieldValues","fields","Object","fromEntries","isFilled","trim","editableCreateAttributes","attributes","attribute","editable","initialAttributeValues","columnAttributeId","kind","attributeToParam","locked","base","multiSelect","clearable","getEnumOptions","singleLine","KanbanRendererCreateDialog","open","config","onClose","onSubmit","setValues","attributeValues","setAttributeValues","submitting","setSubmitting","error","setError","resetToken","setResetToken","initializedRef","editableAttributes","useEffect","token","seeded","declared","Set","kept","entries","has","added","keys","close","valid","every","submit","fileFieldIds","flatMap","declaredValues","caught","Error","message","labels","submitError","Dialog","details","handleDialogAcceptShortcut","CloseButton","removeFile","properties","cancel","submitLabel","buildKanbanRendererListItems","visibleRows","grouped","onRowClick","getRowContextMenuActions","supportsManualReorder","listDisplayProperties","displayProperties","property","getStatusPresentation","descriptor","findAttribute","findEnumOption","getRowStatusPresentation","status","toListItem","placement","shorthand","collectDisplayBadges","collectDisplayCustomSlots","targetColumnKey","resolveListDropTargetColumnKey","rowKey","toGroupListItem","parent","groupingAttributeId","columnKey","orderRows","subgroups","rowEyebrow","KanbanRenderer","storageKey","rawAttributes","defaultSettings","defaultFilters","defaultViews","defaultActiveViewId","createRow","getBoardColumnConfig","hideToolbar","toolbarLeading","useResolvedAttributes","createColumnId","setCreateColumnId","filters","views","activeViewId","initialState","useKanbanRendererStore","setExpandedGroup","filterRows","knownColumnKeys","resolveKnownColumnKeys","groupRows","cardDisplayProperties","toBoardItems","boardRows","columnGroupingDescriptor","columnConfig","orderedRows","enumOption","subgroup","context","handleBoardMoveItem","rowId_0","context_0","handleBoardMoveToGroup","KanbanRendererToolbar","state","state_0","state_1","state_2"],"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","findAttribute","NO_GROUPING","useKanbanRendererStore","useResolvedAttributes","BoardColumnConfig","color","canDragIn","canDragOut","canCreate","actions","KanbanRendererProps","rows","TRow","storageKey","attributes","selectedRowId","emptyState","emptyTitle","emptyDescription","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","t10","t11","viewMode","t12","t13","state","state_0","state_1","state_2","property","_c","Tooltip$1","ResourceContextMenu","ListRow","getIconComponent","AttachmentChip","WorkspaceBadge","EmptyState$1","collectDisplayCustomSlots","filterRows","isActiveKanbanRendererViewDirty","orderRows","buildDisplayPropertyOptions","useKanbanRendererStore","KanbanRendererToolbar","collectDisplayBadges","resolveAttributeOptions","FilterMenu","groupRows","DisplayMenu","buildGroupingOptions","buildFilterCategories","buildOrderingOptions","resolveListDropTargetColumnKey","findEnumOption","NO_GROUPING","getAttributeStringValues","findAttribute","resolveKnownColumnKeys","getEnumOptions","isEnumOptionsSource","renderAttributeBadge","sanitizeFilters","LazyMarkdownEditor","isAttributesSource","KanbanRendererStorageProvider","renderBadgeListDisplay","sanitizeSettings","getAttributeValue","MANUAL_ORDERING","useResolvedAttributes","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","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 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 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 <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 {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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"}