@pstdio/ui 0.26.0 → 0.36.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 (620) hide show
  1. package/dist/EquationComponent-DDd5UoIP.js +65 -0
  2. package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
  3. package/dist/MermaidComponent-Cxg7NtjX.js +90 -0
  4. package/dist/MermaidComponent-Cxg7NtjX.js.map +1 -0
  5. package/dist/browser-storage-C_ipoNwP.js +37 -0
  6. package/dist/browser-storage-C_ipoNwP.js.map +1 -0
  7. package/dist/chat-ui.d.ts +688 -2
  8. package/dist/chat-ui.js +3271 -2848
  9. package/dist/chat-ui.js.map +1 -1
  10. package/dist/data-table-stats-row-UuTinYfL.js +415 -0
  11. package/dist/data-table-stats-row-UuTinYfL.js.map +1 -0
  12. package/dist/data-table.d.ts +174 -2
  13. package/dist/data-table.js +1349 -1187
  14. package/dist/data-table.js.map +1 -1
  15. package/dist/diff-bubble-DZsarmSG.js +61 -0
  16. package/dist/diff-bubble-DZsarmSG.js.map +1 -0
  17. package/dist/diff-drawer-45rpk3aq.js +776 -0
  18. package/dist/diff-drawer-45rpk3aq.js.map +1 -0
  19. package/dist/diff-editor-CGpeyoCE.js +124 -0
  20. package/dist/diff-editor-CGpeyoCE.js.map +1 -0
  21. package/dist/diff-size-Dydn_Uw5.js +61 -0
  22. package/dist/diff-size-Dydn_Uw5.js.map +1 -0
  23. package/dist/diff-viewer-hGkaF_zW.js +558 -0
  24. package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
  25. package/dist/diff.d.ts +128 -2
  26. package/dist/diff.js +163 -1302
  27. package/dist/diff.js.map +1 -1
  28. package/dist/empty-state-3mVV_pV-.js +38 -0
  29. package/dist/empty-state-3mVV_pV-.js.map +1 -0
  30. package/dist/file-change-badge-0QFNv82B.js +64 -0
  31. package/dist/file-change-badge-0QFNv82B.js.map +1 -0
  32. package/dist/index-BfFLdci8.d.ts +189 -0
  33. package/dist/index-Dd6e8lU_.d.ts +61 -0
  34. package/dist/index-DlmvvQ6x.d.ts +143 -0
  35. package/dist/index.d.ts +1504 -40
  36. package/dist/index.js +3121 -2707
  37. package/dist/index.js.map +1 -1
  38. package/dist/kanban-renderer.d.ts +339 -2
  39. package/dist/kanban-renderer.js +1413 -1085
  40. package/dist/kanban-renderer.js.map +1 -1
  41. package/dist/list-row-De9R2zKU.js +1008 -0
  42. package/dist/list-row-De9R2zKU.js.map +1 -0
  43. package/dist/mermaid-renderer-DImi0fDp.js +553 -0
  44. package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
  45. package/dist/mermaid.d.ts +12 -2
  46. package/dist/mermaid.js +2 -5
  47. package/dist/monaco-browser-CLRPSE4-.js +14 -0
  48. package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
  49. package/dist/param-editor-I0dKQeeZ.js +225 -0
  50. package/dist/param-editor-I0dKQeeZ.js.map +1 -0
  51. package/dist/param-editor-field-CBguLs_b.js +2368 -0
  52. package/dist/param-editor-field-CBguLs_b.js.map +1 -0
  53. package/dist/param-editor.d.ts +407 -2
  54. package/dist/param-editor.js +3 -47
  55. package/dist/prism-pSHJejZx.js +646 -0
  56. package/dist/prism-pSHJejZx.js.map +1 -0
  57. package/dist/radio-CiFrDN6O.js +54 -0
  58. package/dist/radio-CiFrDN6O.js.map +1 -0
  59. package/dist/resource-badge-95WPVlZf.d.ts +76 -0
  60. package/dist/rich-text-BgDvOEGH.js +7021 -0
  61. package/dist/rich-text-BgDvOEGH.js.map +1 -0
  62. package/dist/rich-text.d.ts +3 -2
  63. package/dist/rich-text.js +2 -429
  64. package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
  65. package/dist/scroll-area-Cr1lNXAr.js +100 -0
  66. package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
  67. package/dist/slider-hwHYe98I.js +423 -0
  68. package/dist/slider-hwHYe98I.js.map +1 -0
  69. package/dist/style.css +2 -1
  70. package/dist/terminal.d.ts +203 -2
  71. package/dist/terminal.js +324 -360
  72. package/dist/terminal.js.map +1 -1
  73. package/dist/theme-0cbWICbg.js +2936 -0
  74. package/dist/theme-0cbWICbg.js.map +1 -0
  75. package/dist/theme-preference-pzfuK5cH.js +101 -0
  76. package/dist/theme-preference-pzfuK5cH.js.map +1 -0
  77. package/dist/theme.d.ts +3 -2
  78. package/dist/theme.js +2 -15
  79. package/dist/tree-list-BUfDQz3v.js +1449 -0
  80. package/dist/tree-list-BUfDQz3v.js.map +1 -0
  81. package/dist/types-yjKBk07w.d.ts +161 -0
  82. package/dist/workspace-badge-Brm3Xr3m.d.ts +75 -0
  83. package/dist/workspace-badge-DrvH8WKV.js +241 -0
  84. package/dist/workspace-badge-DrvH8WKV.js.map +1 -0
  85. package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
  86. package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
  87. package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
  88. package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
  89. package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
  90. package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
  91. package/dist-monaco/monaco.css +1 -0
  92. package/dist-monaco/monaco.js +1201 -0
  93. package/package.json +26 -13
  94. package/dist/EquationComponent-DeDYHvqY.js +0 -62
  95. package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
  96. package/dist/MermaidComponent-X__B6qib.js +0 -60
  97. package/dist/MermaidComponent-X__B6qib.js.map +0 -1
  98. package/dist/activity-timeline-BynMjXSB.js +0 -283
  99. package/dist/activity-timeline-BynMjXSB.js.map +0 -1
  100. package/dist/alert-ubcrW24X.js +0 -33
  101. package/dist/alert-ubcrW24X.js.map +0 -1
  102. package/dist/browser-storage-BinyFNJX.js +0 -40
  103. package/dist/browser-storage-BinyFNJX.js.map +0 -1
  104. package/dist/components/activity/activity-avatar.d.ts +0 -9
  105. package/dist/components/activity/activity-comment.d.ts +0 -27
  106. package/dist/components/activity/activity-composer.d.ts +0 -18
  107. package/dist/components/activity/activity-event.d.ts +0 -12
  108. package/dist/components/activity/activity-root.d.ts +0 -15
  109. package/dist/components/activity/activity-timeline.d.ts +0 -6
  110. package/dist/components/activity/activity.types.d.ts +0 -5
  111. package/dist/components/activity/index.d.ts +0 -25
  112. package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
  113. package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
  114. package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
  115. package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
  116. package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
  117. package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
  118. package/dist/components/chat-ui/components/chat-history-story.d.ts +0 -14
  119. package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
  120. package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
  121. package/dist/components/chat-ui/components/chat-input-history.d.ts +0 -6
  122. package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
  123. package/dist/components/chat-ui/components/chat-input.d.ts +0 -33
  124. package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
  125. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
  126. package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
  127. package/dist/components/chat-ui/components/chat-panel-composer.d.ts +0 -49
  128. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
  129. package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
  130. package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
  131. package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
  132. package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
  133. package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
  134. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
  135. package/dist/components/chat-ui/components/message-types.d.ts +0 -116
  136. package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
  137. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
  138. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
  139. package/dist/components/chat-ui/components/send-button.d.ts +0 -7
  140. package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
  141. package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
  142. package/dist/components/chat-ui/components/timeline.d.ts +0 -113
  143. package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
  144. package/dist/components/chat-ui/components/use-chat-input-history.d.ts +0 -16
  145. package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
  146. package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
  147. package/dist/components/chat-ui/index.d.ts +0 -19
  148. package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
  149. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
  150. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
  151. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
  152. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
  153. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
  154. package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
  155. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
  156. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
  157. package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
  158. package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
  159. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
  160. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
  161. package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
  162. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
  163. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
  164. package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
  165. package/dist/components/chat-ui/utils/diff.d.ts +0 -21
  166. package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
  167. package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
  168. package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
  169. package/dist/components/command-palette/index.d.ts +0 -4
  170. package/dist/components/command-palette/palette-filter.d.ts +0 -23
  171. package/dist/components/command-palette/palette-list.d.ts +0 -11
  172. package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
  173. package/dist/components/command-palette/palette.d.ts +0 -48
  174. package/dist/components/data-table/build-columns.d.ts +0 -16
  175. package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
  176. package/dist/components/data-table/color-cell-style.d.ts +0 -13
  177. package/dist/components/data-table/color-scale-cell.d.ts +0 -7
  178. package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
  179. package/dist/components/data-table/data-table-header.d.ts +0 -12
  180. package/dist/components/data-table/data-table-row-display.d.ts +0 -11
  181. package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
  182. package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
  183. package/dist/components/data-table/data-table-state.d.ts +0 -27
  184. package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
  185. package/dist/components/data-table/data-table-stats.d.ts +0 -19
  186. package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
  187. package/dist/components/data-table/data-table.d.ts +0 -2
  188. package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
  189. package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
  190. package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
  191. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
  192. package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
  193. package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
  194. package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
  195. package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
  196. package/dist/components/data-table/edit-mode-story.d.ts +0 -5
  197. package/dist/components/data-table/friendly-json-display.d.ts +0 -31
  198. package/dist/components/data-table/helpers.d.ts +0 -10
  199. package/dist/components/data-table/index.d.ts +0 -7
  200. package/dist/components/data-table/json-cell.d.ts +0 -6
  201. package/dist/components/data-table/pagination-footer.d.ts +0 -11
  202. package/dist/components/data-table/selection-toolbar.d.ts +0 -11
  203. package/dist/components/data-table/types.d.ts +0 -117
  204. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
  205. package/dist/components/diff-viewer/code-editor.d.ts +0 -45
  206. package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
  207. package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
  208. package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
  209. package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
  210. package/dist/components/diff-viewer/diff-card.d.ts +0 -46
  211. package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
  212. package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
  213. package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
  214. package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
  215. package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
  216. package/dist/components/diff-viewer/diff-size.d.ts +0 -16
  217. package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
  218. package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
  219. package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
  220. package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
  221. package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
  222. package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
  223. package/dist/components/diff-viewer/index.d.ts +0 -9
  224. package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
  225. package/dist/components/diff-viewer/types.d.ts +0 -13
  226. package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
  227. package/dist/components/file-browser/column-file-browser.d.ts +0 -20
  228. package/dist/components/internal/performance-panel.d.ts +0 -40
  229. package/dist/components/internal/style-guide.d.ts +0 -14
  230. package/dist/components/internal/token-editor-controls.d.ts +0 -8
  231. package/dist/components/internal/token-editor-data.d.ts +0 -40
  232. package/dist/components/internal/token-editor-state.d.ts +0 -22
  233. package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
  234. package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
  235. package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
  236. package/dist/components/kanban-renderer/index.d.ts +0 -19
  237. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
  238. package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
  239. package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
  240. package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
  241. package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
  242. package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
  243. package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
  244. package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
  245. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
  246. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
  247. package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
  248. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
  249. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
  250. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
  251. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
  252. package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
  253. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
  254. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
  255. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
  256. package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
  257. package/dist/components/kanban-renderer/types.d.ts +0 -159
  258. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
  259. package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
  260. package/dist/components/layout/header.d.ts +0 -7
  261. package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
  262. package/dist/components/layout/index.d.ts +0 -8
  263. package/dist/components/layout/item-section.d.ts +0 -11
  264. package/dist/components/layout/panel-header.constants.d.ts +0 -3
  265. package/dist/components/layout/resizable-split-layout.d.ts +0 -22
  266. package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
  267. package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
  268. package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
  269. package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
  270. package/dist/components/list-row/list-row-actions.d.ts +0 -11
  271. package/dist/components/list-row/list-row-chrome.d.ts +0 -11
  272. package/dist/components/list-row/list-row-content.d.ts +0 -17
  273. package/dist/components/list-row/list-row-menu.d.ts +0 -12
  274. package/dist/components/list-row/list-row-root-props.d.ts +0 -34
  275. package/dist/components/list-row/list-row.d.ts +0 -2
  276. package/dist/components/list-row/list-row.types.d.ts +0 -109
  277. package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
  278. package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
  279. package/dist/components/mermaid-renderer/index.d.ts +0 -2
  280. package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
  281. package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
  282. package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
  283. package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
  284. package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
  285. package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
  286. package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
  287. package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
  288. package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
  289. package/dist/components/notification-center/index.d.ts +0 -2
  290. package/dist/components/notification-center/notification-center.d.ts +0 -2
  291. package/dist/components/notification-center/notification-center.types.d.ts +0 -37
  292. package/dist/components/overlays/attached-menu.d.ts +0 -6
  293. package/dist/components/overlays/attached-panel.d.ts +0 -9
  294. package/dist/components/overlays/attachment-chip.d.ts +0 -13
  295. package/dist/components/overlays/bubble-button.d.ts +0 -10
  296. package/dist/components/overlays/bubble-panel.d.ts +0 -18
  297. package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
  298. package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
  299. package/dist/components/overlays/index.d.ts +0 -17
  300. package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
  301. package/dist/components/overlays/resource-context-menu.d.ts +0 -35
  302. package/dist/components/overlays/search-modal-content.d.ts +0 -20
  303. package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
  304. package/dist/components/overlays/searchable-menu.d.ts +0 -65
  305. package/dist/components/param-editor/index.d.ts +0 -31
  306. package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
  307. package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
  308. package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
  309. package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
  310. package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
  311. package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
  312. package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
  313. package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
  314. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
  315. package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
  316. package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
  317. package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
  318. package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
  319. package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
  320. package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
  321. package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
  322. package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
  323. package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
  324. package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
  325. package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
  326. package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
  327. package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
  328. package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
  329. package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
  330. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
  331. package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
  332. package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
  333. package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
  334. package/dist/components/param-editor/param-editor-field.d.ts +0 -13
  335. package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
  336. package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
  337. package/dist/components/param-editor/param-editor-label.d.ts +0 -7
  338. package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
  339. package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
  340. package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
  341. package/dist/components/param-editor/param-editor-row.d.ts +0 -17
  342. package/dist/components/param-editor/param-editor-section.d.ts +0 -17
  343. package/dist/components/param-editor/param-editor.d.ts +0 -12
  344. package/dist/components/param-editor/param-editor.types.d.ts +0 -31
  345. package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
  346. package/dist/components/primitives/alert.d.ts +0 -9
  347. package/dist/components/primitives/breadcrumb.d.ts +0 -20
  348. package/dist/components/primitives/checkbox.d.ts +0 -8
  349. package/dist/components/primitives/chip.d.ts +0 -4
  350. package/dist/components/primitives/content-placeholder.d.ts +0 -6
  351. package/dist/components/primitives/empty-state.d.ts +0 -12
  352. package/dist/components/primitives/error-boundary.d.ts +0 -26
  353. package/dist/components/primitives/glyph-icon.d.ts +0 -16
  354. package/dist/components/primitives/icon-color-picker.d.ts +0 -15
  355. package/dist/components/primitives/icon-options.d.ts +0 -301
  356. package/dist/components/primitives/index.d.ts +0 -39
  357. package/dist/components/primitives/info-card.d.ts +0 -12
  358. package/dist/components/primitives/integration-card.d.ts +0 -12
  359. package/dist/components/primitives/number-input.d.ts +0 -6
  360. package/dist/components/primitives/radio.d.ts +0 -8
  361. package/dist/components/primitives/resource-badge.d.ts +0 -64
  362. package/dist/components/primitives/scroll-area.d.ts +0 -17
  363. package/dist/components/primitives/segmented-control.d.ts +0 -20
  364. package/dist/components/primitives/session-indicator.d.ts +0 -15
  365. package/dist/components/primitives/simple-card.d.ts +0 -5
  366. package/dist/components/primitives/slider.d.ts +0 -5
  367. package/dist/components/primitives/switch.d.ts +0 -15
  368. package/dist/components/primitives/tag-swatch.d.ts +0 -10
  369. package/dist/components/primitives/toaster.d.ts +0 -3
  370. package/dist/components/primitives/tooltip.d.ts +0 -11
  371. package/dist/components/primitives/workspace-badge.d.ts +0 -23
  372. package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
  373. package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
  374. package/dist/components/rich-text/index.d.ts +0 -19
  375. package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
  376. package/dist/components/rich-text/markdown-editor/markdown-editor-scrolling.play.d.ts +0 -4
  377. package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
  378. package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
  379. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
  380. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
  381. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  382. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  383. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  384. package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
  385. package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
  386. package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
  387. package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
  388. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
  389. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
  390. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
  391. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
  392. package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
  393. package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -6
  394. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
  395. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
  396. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
  397. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
  398. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
  399. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
  400. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
  401. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
  402. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
  403. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
  404. package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -11
  405. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -27
  406. package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
  407. package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
  408. package/dist/components/rich-text/resource-activity-feed/resource-activity-feed.d.ts +0 -58
  409. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  410. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  411. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  412. package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
  413. package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
  414. package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
  415. package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
  416. package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
  417. package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
  418. package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
  419. package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
  420. package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
  421. package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
  422. package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
  423. package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
  424. package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
  425. package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
  426. package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
  427. package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
  428. package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
  429. package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
  430. package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
  431. package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
  432. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
  433. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
  434. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
  435. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
  436. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
  437. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
  438. package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
  439. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
  440. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
  441. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
  442. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
  443. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -12
  444. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
  445. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
  446. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
  447. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
  448. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
  449. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
  450. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
  451. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
  452. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
  453. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
  454. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
  455. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
  456. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
  457. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
  458. package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
  459. package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
  460. package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
  461. package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
  462. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
  463. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
  464. package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
  465. package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
  466. package/dist/components/rich-text/types.d.ts +0 -8
  467. package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
  468. package/dist/components/rich-text/utils/markdown.d.ts +0 -5
  469. package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
  470. package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
  471. package/dist/components/sidenav/sidenav-header.d.ts +0 -6
  472. package/dist/components/sidenav/sidenav.d.ts +0 -2
  473. package/dist/components/sidenav/sidenav.store.d.ts +0 -49
  474. package/dist/components/sidenav/sidenav.types.d.ts +0 -31
  475. package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
  476. package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
  477. package/dist/components/tab-strip/window-tabs.d.ts +0 -15
  478. package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
  479. package/dist/components/tag-editor/index.d.ts +0 -8
  480. package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
  481. package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
  482. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
  483. package/dist/components/tag-editor/tag-editor.d.ts +0 -2
  484. package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
  485. package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
  486. package/dist/components/terminal/bind-session.d.ts +0 -33
  487. package/dist/components/terminal/index.d.ts +0 -6
  488. package/dist/components/terminal/scripted-bridge.d.ts +0 -35
  489. package/dist/components/terminal/terminal-contract.d.ts +0 -22
  490. package/dist/components/terminal/terminal-theme.d.ts +0 -12
  491. package/dist/components/terminal/terminal.d.ts +0 -56
  492. package/dist/components/terminal/types.d.ts +0 -35
  493. package/dist/components/terminal/use-terminal-session.d.ts +0 -21
  494. package/dist/components/tree-list/tree-list-background.d.ts +0 -8
  495. package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
  496. package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
  497. package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
  498. package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
  499. package/dist/components/tree-list/tree-list-model.d.ts +0 -58
  500. package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
  501. package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
  502. package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
  503. package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
  504. package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
  505. package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
  506. package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
  507. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
  508. package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
  509. package/dist/components/tree-list/tree-list.d.ts +0 -41
  510. package/dist/components/tree-list/tree-list.types.d.ts +0 -63
  511. package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
  512. package/dist/diff-bubble-DvUPRnfB.js +0 -183
  513. package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
  514. package/dist/edit-mode-data-table-Nfmfi7bz.js +0 -847
  515. package/dist/edit-mode-data-table-Nfmfi7bz.js.map +0 -1
  516. package/dist/empty-state-Bo4HVrgr.js +0 -34
  517. package/dist/empty-state-Bo4HVrgr.js.map +0 -1
  518. package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
  519. package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
  520. package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
  521. package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
  522. package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
  523. package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
  524. package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
  525. package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
  526. package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
  527. package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
  528. package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
  529. package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
  530. package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
  531. package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
  532. package/dist/kanban-renderer-toolbar-Buek4icz.js +0 -1375
  533. package/dist/kanban-renderer-toolbar-Buek4icz.js.map +0 -1
  534. package/dist/lazy-markdown-editor-PzIBc9-l.js +0 -42
  535. package/dist/lazy-markdown-editor-PzIBc9-l.js.map +0 -1
  536. package/dist/list-row-DHzRa9-O.js +0 -815
  537. package/dist/list-row-DHzRa9-O.js.map +0 -1
  538. package/dist/markdown-BCfPxNpb.js +0 -1663
  539. package/dist/markdown-BCfPxNpb.js.map +0 -1
  540. package/dist/markdown-editor-CsJ4KNGu.js +0 -1034
  541. package/dist/markdown-editor-CsJ4KNGu.js.map +0 -1
  542. package/dist/mermaid-renderer-D0YP0FmJ.js +0 -425
  543. package/dist/mermaid-renderer-D0YP0FmJ.js.map +0 -1
  544. package/dist/mermaid.js.map +0 -1
  545. package/dist/monaco-browser-l82HnffN.js +0 -22
  546. package/dist/monaco-browser-l82HnffN.js.map +0 -1
  547. package/dist/param-editor-CFM2Nf3l.js +0 -161
  548. package/dist/param-editor-CFM2Nf3l.js.map +0 -1
  549. package/dist/param-editor-field-Bj-AGUY6.js +0 -1728
  550. package/dist/param-editor-field-Bj-AGUY6.js.map +0 -1
  551. package/dist/param-editor.js.map +0 -1
  552. package/dist/prism-n5gcERyD.js +0 -202
  553. package/dist/prism-n5gcERyD.js.map +0 -1
  554. package/dist/radio-BfjibByI.js +0 -51
  555. package/dist/radio-BfjibByI.js.map +0 -1
  556. package/dist/rich-message-q6Y6QJOq.js +0 -633
  557. package/dist/rich-message-q6Y6QJOq.js.map +0 -1
  558. package/dist/rich-text.js.map +0 -1
  559. package/dist/scroll-area-BMbg1WcD.js +0 -91
  560. package/dist/scroll-area-BMbg1WcD.js.map +0 -1
  561. package/dist/slider-DBHjdxsU.js +0 -1092
  562. package/dist/slider-DBHjdxsU.js.map +0 -1
  563. package/dist/test-utils/local-storage.d.ts +0 -1
  564. package/dist/theme/custom/index.d.ts +0 -2
  565. package/dist/theme/custom/vscode-theme.d.ts +0 -32
  566. package/dist/theme/global.d.ts +0 -62
  567. package/dist/theme/index.d.ts +0 -3
  568. package/dist/theme/primitives/colors.d.ts +0 -1081
  569. package/dist/theme/primitives/fonts.d.ts +0 -84
  570. package/dist/theme/primitives/sizes.d.ts +0 -207
  571. package/dist/theme/recipes/activity-comment.d.ts +0 -36
  572. package/dist/theme/recipes/alert.d.ts +0 -1
  573. package/dist/theme/recipes/badge.d.ts +0 -58
  574. package/dist/theme/recipes/button.d.ts +0 -188
  575. package/dist/theme/recipes/color-picker.d.ts +0 -18
  576. package/dist/theme/recipes/dialog.d.ts +0 -1
  577. package/dist/theme/recipes/divider.d.ts +0 -1
  578. package/dist/theme/recipes/drawer.d.ts +0 -1
  579. package/dist/theme/recipes/editable.d.ts +0 -46
  580. package/dist/theme/recipes/form.d.ts +0 -1
  581. package/dist/theme/recipes/input.d.ts +0 -94
  582. package/dist/theme/recipes/kbd.d.ts +0 -41
  583. package/dist/theme/recipes/menu.d.ts +0 -1
  584. package/dist/theme/recipes/number-input.d.ts +0 -98
  585. package/dist/theme/recipes/popover.d.ts +0 -16
  586. package/dist/theme/recipes/progress-circle.d.ts +0 -28
  587. package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
  588. package/dist/theme/recipes/segmented-control.d.ts +0 -22
  589. package/dist/theme/recipes/skeleton.d.ts +0 -1
  590. package/dist/theme/recipes/switch.d.ts +0 -18
  591. package/dist/theme/recipes/tabs.d.ts +0 -80
  592. package/dist/theme/recipes/textarea.d.ts +0 -62
  593. package/dist/theme/recipes/timeline.d.ts +0 -83
  594. package/dist/theme/recipes/tooltip.d.ts +0 -1
  595. package/dist/theme/recipes/window-title-bar.d.ts +0 -19
  596. package/dist/theme/shadowless-default-config.d.ts +0 -2
  597. package/dist/theme/theme.d.ts +0 -2
  598. package/dist/theme/tokens/borders.d.ts +0 -17
  599. package/dist/theme/tokens/colors-background.d.ts +0 -260
  600. package/dist/theme/tokens/colors-visualization.d.ts +0 -162
  601. package/dist/theme/tokens/colors.d.ts +0 -878
  602. package/dist/theme/tokens/layer-styles.d.ts +0 -1
  603. package/dist/theme/tokens/text.d.ts +0 -1
  604. package/dist/theme-AzJH4Om3.js +0 -3999
  605. package/dist/theme-AzJH4Om3.js.map +0 -1
  606. package/dist/theme-preference-DxGW1qg-.js +0 -114
  607. package/dist/theme-preference-DxGW1qg-.js.map +0 -1
  608. package/dist/theme.js.map +0 -1
  609. package/dist/tree-list-CPjbGTvs.js +0 -1348
  610. package/dist/tree-list-CPjbGTvs.js.map +0 -1
  611. package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
  612. package/dist/utils/apply-theme-preference.d.ts +0 -22
  613. package/dist/utils/browser-storage.d.ts +0 -7
  614. package/dist/utils/file-icon-theme-preference.d.ts +0 -15
  615. package/dist/utils/get-file-type-icon.d.ts +0 -2
  616. package/dist/utils/prism.d.ts +0 -1
  617. package/dist/utils/resolve-file-icon-element.d.ts +0 -8
  618. package/dist/utils/theme-preference.d.ts +0 -20
  619. package/dist/workspace-badge-CuOcmnZc.js +0 -175
  620. package/dist/workspace-badge-CuOcmnZc.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"kanban-renderer-toolbar-Buek4icz.js","sources":["../src/components/kanban-renderer/collection-badge.tsx","../src/components/kanban-renderer/types.ts","../src/components/kanban-renderer/kanban-renderer-enum-helpers.ts","../src/components/kanban-renderer/kanban-renderer-badge-helpers.ts","../src/components/kanban-renderer/kanban-renderer-helpers.ts","../src/components/kanban-renderer/kanban-renderer-views.ts","../src/components/kanban-renderer/use-kanban-renderer-store.ts","../src/components/kanban-renderer/display-menu.tsx","../src/components/kanban-renderer/filter-menu.tsx","../src/components/kanban-renderer/kanban-renderer-grouping.ts","../src/components/kanban-renderer/kanban-renderer-view-bar.tsx","../src/components/kanban-renderer/use-resolved-attributes.ts","../src/components/kanban-renderer/kanban-renderer-toolbar.tsx"],"sourcesContent":["import { Badge, Icon, Text } from \"@chakra-ui/react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport * as lucideIcons from \"lucide-react\";\n\ninterface CollectionBadgeProps {\n label: string;\n icon?: string;\n onClick?: () => void;\n}\n\nconst toPascalCase = (value: string) =>\n value\n .split(/[^a-zA-Z0-9]+/)\n .filter(Boolean)\n .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join(\"\");\n\nconst resolveIcon = (name: string | undefined) => {\n if (!name) return undefined;\n const pascalName = toPascalCase(name);\n for (const candidate of [name, pascalName, `${pascalName}Icon`]) {\n const component = (lucideIcons as Record<string, unknown>)[candidate];\n if (component && (typeof component === \"function\" || typeof component === \"object\")) {\n return component as LucideIcon;\n }\n }\n return undefined;\n};\n\nexport const CollectionBadge = (props: CollectionBadgeProps) => {\n const { label, icon, onClick } = props;\n const BadgeIcon = resolveIcon(icon);\n\n const content = (\n <>\n {BadgeIcon ? <Icon as={BadgeIcon} boxSize=\"3.5\" flexShrink={0} aria-hidden=\"true\" /> : null}\n <Text as=\"span\" textStyle=\"label/XS/medium\" color=\"fg.muted\" minW=\"0\" maxW=\"10rem\" truncate>\n {label}\n </Text>\n </>\n );\n\n const sharedProps = {\n display: \"inline-flex\",\n gap: \"2xs\",\n alignItems: \"center\",\n minW: \"0\",\n maxW: \"100%\",\n variant: \"subtle\",\n bg: { _light: \"bg.muted\", _dark: \"bg.subtle\" },\n color: \"fg.muted\",\n textStyle: \"label/XS/medium\",\n \"data-testid\": \"collection-badge\",\n } as const;\n\n if (onClick) {\n return (\n <Badge asChild {...sharedProps} cursor=\"pointer\">\n <button\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onClick();\n }}\n >\n {content}\n </button>\n </Badge>\n );\n }\n\n return (\n <Badge as=\"span\" {...sharedProps} cursor=\"default\">\n {content}\n </Badge>\n );\n};\n","import type { ReactNode } from \"react\";\n\nexport type ViewMode = \"board\" | \"list\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport const NO_GROUPING = \"none\";\nexport const MANUAL_ORDERING = \"manual\";\n\nexport interface EnumOption {\n value: string;\n label: string;\n color?: string;\n icon?: string | null;\n}\n\n/**\n * Reactive options source for enum / enum-multi attributes. Mirrors React's\n * useSyncExternalStore contract so a contribution can hand its options off as\n * a live collection (e.g. a project-scoped resource) instead of a frozen\n * array, and the renderer subscribes to it the same way it subscribes to rows.\n */\nexport interface EnumOptionsSource {\n subscribe: (listener: () => void) => () => void;\n getSnapshot: () => EnumOption[];\n}\n\nexport type EnumOptions = EnumOption[] | EnumOptionsSource;\n\nexport type AttributeType =\n | { kind: \"enum\"; options: EnumOptions }\n | { kind: \"enum-multi\"; options: EnumOptions }\n | { kind: \"string\" }\n | { kind: \"date\" }\n | { kind: \"number\" }\n | { kind: \"user\" };\n\nexport const isEnumOptionsSource = (options: EnumOptions): options is EnumOptionsSource => !Array.isArray(options);\n\nexport type AttributeKind = AttributeType[\"kind\"];\n\n// Keep the display and badge contracts below aligned with\n// pstdio-api-contracts/src/extension-kernel/types/kanban-renderer.ts. This published\n// package cannot import the private contracts package, so it owns a structural copy.\nexport type AttributeDisplayDescriptor = { kind: \"badge-list\"; itemsAttributeId: string };\n\ntype CollectionBadgeJsonValue =\n | string\n | number\n | boolean\n | null\n | CollectionBadgeJsonValue[]\n | CollectionBadgeJsonObject;\n\ninterface CollectionBadgeJsonObject {\n [key: string]: CollectionBadgeJsonValue;\n}\n\nexport interface CollectionBadgeResource {\n type: string;\n id: string;\n projectId?: string;\n label?: string;\n extensionId?: string;\n metadata?: CollectionBadgeJsonObject;\n}\n\nexport interface CollectionBadgeItem {\n id: string;\n label: string;\n icon?: string;\n resource?: CollectionBadgeResource;\n}\n\nexport interface AttributeDescriptor {\n id: string;\n label: string;\n type: AttributeType;\n filterable?: boolean;\n groupable?: boolean;\n sortable?: boolean;\n displayable?: boolean;\n editable?: boolean;\n display?: AttributeDisplayDescriptor;\n render?: (value: unknown, row: KanbanRendererRow) => ReactNode;\n compare?: (a: unknown, b: unknown) => number;\n}\n\n/**\n * Reactive source for an entire attribute schema. Mirrors React's\n * useSyncExternalStore contract so consumers (e.g. the workbench's\n * kanban-renderer bridge) can subscribe and re-resolve when the schema changes\n * — letting a contribution add/remove/edit attributes at runtime without\n * re-registering.\n */\nexport interface AttributesSource {\n subscribe: (listener: () => void) => () => void;\n getSnapshot: () => AttributeDescriptor[];\n}\n\nexport const isAttributesSource = (\n attributes: AttributeDescriptor[] | AttributesSource,\n): attributes is AttributesSource => !Array.isArray(attributes);\n\nexport interface KanbanRendererRow {\n id: string;\n title: string;\n /**\n * Optional navigation handle. When set, the renderer's default click handler\n * routes through the contribution's onRowClick (which typically opens the\n * resource via the workbench).\n */\n resource?: unknown;\n attributes: Record<string, unknown>;\n}\n\nexport interface KanbanRendererOrdering {\n attributeId: string | typeof MANUAL_ORDERING;\n direction: SortDirection;\n}\n\nexport interface KanbanRendererSettings {\n viewMode: ViewMode;\n columnGrouping: string | typeof NO_GROUPING;\n rowGrouping: string | typeof NO_GROUPING;\n ordering: KanbanRendererOrdering;\n displayProperties: string[];\n}\n\nexport type KanbanRendererFilterState = Record<string, string[]>;\n\nexport interface KanbanRendererSavedView {\n id: string;\n title: string;\n settings: KanbanRendererSettings;\n filters: KanbanRendererFilterState;\n isDefault?: boolean;\n}\n\nexport type KanbanRendererCreateFieldType =\n | \"text\"\n | \"longtext\"\n | \"markdown\"\n | \"number\"\n | \"boolean\"\n | \"select\"\n | \"multi-select\"\n | \"files\";\n\nexport interface KanbanRendererCreateField {\n id: string;\n label: string;\n description?: string;\n placeholder?: string;\n type: KanbanRendererCreateFieldType;\n required?: boolean;\n defaultValue?: unknown;\n options?: EnumOption[];\n /** `files` fields only. */\n multiple?: boolean;\n accept?: string;\n}\n\n/** Chrome copy is supplied by the caller so the dialog ships no strings of its own. */\nexport interface KanbanRendererCreateLabels {\n cancel: string;\n properties: string;\n submitError: string;\n removeFile: string;\n}\n\nexport interface KanbanRendererCreateRowConfig {\n title: string;\n submitLabel: string;\n fields: KanbanRendererCreateField[];\n labels: KanbanRendererCreateLabels;\n}\n\nexport interface KanbanRendererCreateSubmission {\n columnId: string;\n columnAttributeId?: string;\n /** Declared field values, excluding `files` fields — those arrive as `files`. */\n values: Record<string, unknown>;\n /** Every editable attribute the user set, keyed by attribute id. */\n attributeValues: Record<string, unknown>;\n files: File[];\n}\n\nexport const DEFAULT_KANBAN_RENDERER_SETTINGS: KanbanRendererSettings = {\n viewMode: \"board\",\n columnGrouping: NO_GROUPING,\n rowGrouping: NO_GROUPING,\n ordering: { attributeId: MANUAL_ORDERING, direction: \"asc\" },\n displayProperties: [],\n};\n\n/**\n * Look up an attribute by id from a contribution-provided descriptor list.\n * Returns undefined for sentinels (\"none\", \"manual\") or unknown ids.\n */\nexport const findAttribute = (attributes: AttributeDescriptor[], id: string | undefined) => {\n if (!id || id === NO_GROUPING || id === MANUAL_ORDERING) return undefined;\n return attributes.find((attribute) => attribute.id === id);\n};\n","import type { AttributeType, EnumOption } from \"./types\";\nimport { isEnumOptionsSource } from \"./types\";\n\nconst dedupeEnumOptions = (options: EnumOption[]) => {\n const seen = new Set<string>();\n return options.filter((option) => {\n if (seen.has(option.value)) return false;\n seen.add(option.value);\n return true;\n });\n};\n\n/**\n * Normalize an enum / enum-multi attribute's `options` to a plain option list.\n * Sources resolve via `getSnapshot()` on every call, so callers naturally see\n * the latest values.\n */\nexport const getEnumOptions = (type: AttributeType) => {\n if (type.kind !== \"enum\" && type.kind !== \"enum-multi\") return [];\n const options = isEnumOptionsSource(type.options) ? type.options.getSnapshot() : type.options;\n return dedupeEnumOptions(options);\n};\n\nexport const toTitleCase = (value: string) =>\n value\n .replaceAll(\"_\", \" \")\n .split(\" \")\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => chunk[0]!.toUpperCase() + chunk.slice(1))\n .join(\" \");\n\nexport const findEnumOption = (type: AttributeType, value: string) => {\n if (type.kind !== \"enum\" && type.kind !== \"enum-multi\") return undefined;\n return getEnumOptions(type).find((option) => option.value === value);\n};\n\nexport const enumOptionLabel = (type: AttributeType, value: string) => {\n const option = findEnumOption(type, value);\n return option?.label ?? toTitleCase(value);\n};\n","import { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\nimport type { AttributeDescriptor, AttributeType, EnumOption } from \"./types\";\n\nconst summarizeMultiEnum = (values: string[], type: AttributeType) => {\n if (values.length === 0) return null;\n if (values.length <= 2) return values.map((value) => enumOptionLabel(type, value)).join(\", \");\n return `${enumOptionLabel(type, values[0]!)}, ${enumOptionLabel(type, values[1]!)} +${values.length - 2}`;\n};\n\nexport interface AttributeBadge {\n attributeId: string;\n attributeLabel?: string;\n label: string;\n color?: string;\n icon?: string | null;\n value?: string | string[];\n options?: EnumOption[];\n isEditable?: boolean;\n}\n\nexport const getAttributeBadgeColorPalette = (_badge: AttributeBadge) => \"gray\";\n\nexport const renderEnumBadge = (descriptor: AttributeDescriptor, type: AttributeType, value: unknown) => {\n if (type.kind !== \"enum\") return null;\n const stringValue = typeof value === \"string\" ? value : null;\n const editable = descriptor.editable === true;\n if (!stringValue) {\n return editable\n ? {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: descriptor.label,\n value: stringValue ?? undefined,\n options: getEnumOptions(type),\n isEditable: true,\n }\n : null;\n }\n const option = findEnumOption(type, stringValue);\n return {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: option?.label ?? toTitleCase(stringValue),\n color: option?.color,\n icon: option?.icon,\n ...(editable ? { value: stringValue, options: getEnumOptions(type), isEditable: true } : {}),\n };\n};\n\nexport const renderMultiEnumBadge = (descriptor: AttributeDescriptor, type: AttributeType, value: unknown) => {\n if (type.kind !== \"enum-multi\") return null;\n const values = Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === \"string\") : [];\n const summary = summarizeMultiEnum(values, type);\n const editable = descriptor.editable === true;\n if (!summary) {\n return editable\n ? {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: descriptor.label,\n value: values,\n options: getEnumOptions(type),\n isEditable: true,\n }\n : null;\n }\n const firstOption = values[0] ? findEnumOption(type, values[0]) : undefined;\n return {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: summary,\n color: firstOption?.color,\n icon: firstOption?.icon,\n ...(editable ? { value: values, options: getEnumOptions(type), isEditable: true } : {}),\n };\n};\n","import { createElement, type ReactNode } from \"react\";\nimport { CollectionBadge } from \"./collection-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-badge-helpers\";\nimport { renderEnumBadge, renderMultiEnumBadge } from \"./kanban-renderer-badge-helpers\";\nimport { getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\nimport type {\n AttributeDescriptor,\n CollectionBadgeItem,\n KanbanRendererFilterState,\n KanbanRendererRow,\n KanbanRendererSettings,\n} from \"./types\";\nimport { findAttribute, MANUAL_ORDERING, NO_GROUPING } from \"./types\";\n\nexport type { AttributeBadge } from \"./kanban-renderer-badge-helpers\";\nexport { getAttributeBadgeColorPalette } from \"./kanban-renderer-badge-helpers\";\nexport { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\n\n/**\n * Read a typed attribute value out of a row. enum-multi normalizes to an array;\n * single-valued kinds normalize to undefined when missing.\n */\nexport const getAttributeValue = (row: KanbanRendererRow, descriptor: AttributeDescriptor) => {\n const raw = row.attributes[descriptor.id];\n if (descriptor.type.kind === \"enum-multi\") {\n if (Array.isArray(raw)) return raw.filter((entry): entry is string => typeof entry === \"string\");\n return [] as string[];\n }\n return raw;\n};\n\nexport const getAttributeStringValues = (row: KanbanRendererRow, descriptor: AttributeDescriptor): string[] => {\n const value = getAttributeValue(row, descriptor);\n if (descriptor.type.kind === \"enum-multi\") return value as string[];\n if (value === null || value === undefined) return [];\n if (typeof value === \"string\") return value === \"\" ? [] : [value];\n if (typeof value === \"number\") return [String(value)];\n return [];\n};\n\nconst formatDateValue = (value: unknown) => {\n if (typeof value !== \"string\" || value === \"\") return null;\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return null;\n return date.toLocaleDateString();\n};\n\nconst formatNumberValue = (value: unknown) => {\n if (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n if (typeof value === \"string\" && value !== \"\" && !Number.isNaN(Number(value))) return value;\n return null;\n};\n\nconst formatStringValue = (value: unknown) => {\n if (value === null || value === undefined) return null;\n if (typeof value === \"string\") return value === \"\" ? null : value;\n return String(value);\n};\n\nconst formatUserValue = (value: unknown) => formatStringValue(value);\n\nconst isRenderableNode = (value: unknown) => value !== null && value !== undefined && value !== false;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst textValue = (value: unknown) => (typeof value === \"string\" && value.trim() ? value.trim() : undefined);\n\nconst isCollectionResource = (value: unknown): value is NonNullable<CollectionBadgeItem[\"resource\"]> =>\n isRecord(value) && typeof value.type === \"string\" && typeof value.id === \"string\";\n\nconst normalizeCollectionBadgeItems = (value: unknown): CollectionBadgeItem[] => {\n if (!Array.isArray(value)) return [];\n\n return value.flatMap((item) => {\n if (!isRecord(item)) return [];\n const id = textValue(item.id);\n if (!id) return [];\n const label = textValue(item.label) ?? id;\n const icon = textValue(item.icon);\n const resource = isCollectionResource(item.resource) ? item.resource : undefined;\n return [{ id, label, ...(icon ? { icon } : {}), ...(resource ? { resource } : {}) }];\n });\n};\n\nexport const renderBadgeListDisplay = (\n descriptor: AttributeDescriptor,\n value: unknown,\n row: KanbanRendererRow,\n openResource?: (resource: NonNullable<CollectionBadgeItem[\"resource\"]>) => void,\n): ReactNode => {\n if (descriptor.display?.kind !== \"badge-list\") return null;\n const items = normalizeCollectionBadgeItems(row.attributes[descriptor.display.itemsAttributeId]);\n if (items.length === 0) return null;\n\n const selectedId = typeof value === \"string\" ? value : undefined;\n const selectedItem = items.find((item) => item.id === selectedId) ?? items[0];\n if (!selectedItem) return null;\n\n const orderedItems = [selectedItem, ...items.filter((item) => item.id !== selectedItem.id)];\n return orderedItems.map((item) =>\n createElement(CollectionBadge, {\n key: item.id,\n label: item.label,\n icon: item.icon,\n onClick: item.resource && openResource ? () => openResource(item.resource!) : undefined,\n }),\n );\n};\n\n/**\n * Per-type default cell summary used by the card / list end-content. Returns\n * null when the attribute has no displayable value.\n */\nexport const renderAttributeBadge = (\n descriptor: AttributeDescriptor,\n row: KanbanRendererRow,\n): AttributeBadge | null => {\n const type = descriptor.type;\n const value = getAttributeValue(row, descriptor);\n\n if (descriptor.render || descriptor.display) return null;\n\n if (type.kind === \"enum\") return renderEnumBadge(descriptor, type, value);\n if (type.kind === \"enum-multi\") return renderMultiEnumBadge(descriptor, type, value);\n\n if (type.kind === \"date\") {\n const formatted = formatDateValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n }\n\n if (type.kind === \"number\") {\n const formatted = formatNumberValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n }\n\n if (type.kind === \"user\") {\n const formatted = formatUserValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted, color: \"blue\" } : null;\n }\n\n const formatted = formatStringValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n};\n\nexport const collectDisplayBadges = (\n row: KanbanRendererRow,\n attributes: AttributeDescriptor[],\n displayProperties: string[],\n): AttributeBadge[] => {\n const badges: AttributeBadge[] = [];\n for (const id of displayProperties) {\n const descriptor = findAttribute(attributes, id);\n if (!descriptor || descriptor.displayable === false) continue;\n const badge = renderAttributeBadge(descriptor, row);\n if (badge) badges.push(badge);\n }\n return badges;\n};\n\nexport const collectDisplayCustomSlots = (\n row: KanbanRendererRow,\n attributes: AttributeDescriptor[],\n displayProperties: string[],\n): ReactNode[] => {\n const slots: ReactNode[] = [];\n for (const id of displayProperties) {\n const descriptor = findAttribute(attributes, id);\n if (!descriptor || descriptor.displayable === false) continue;\n\n const value = getAttributeValue(row, descriptor);\n const slot = descriptor.render ? descriptor.render(value, row) : renderBadgeListDisplay(descriptor, value, row);\n if (isRenderableNode(slot)) slots.push(slot);\n }\n return slots;\n};\n\nconst collectValuesFromRows = (rows: KanbanRendererRow[], descriptor: AttributeDescriptor) => {\n const values = new Set<string>();\n for (const row of rows) {\n for (const value of getAttributeStringValues(row, descriptor)) values.add(value);\n }\n return values;\n};\n\nexport interface FilterCategoryView {\n id: string;\n label: string;\n selectionMode: \"multiple\";\n options: { value: string; label: string; color?: string }[];\n}\n\n/**\n * Build the filter menu's category list from the declared attributes. Enum\n * descriptors expose their declared options first; auto-derived values from\n * the data fill in the gaps for string / date / number / user attributes (so\n * filter chips for free-form fields don't require declaring every option).\n */\nexport const buildFilterCategories = (\n attributes: AttributeDescriptor[],\n rows: KanbanRendererRow[],\n): FilterCategoryView[] => {\n const categories: FilterCategoryView[] = [];\n for (const descriptor of attributes) {\n if (!descriptor.filterable) continue;\n\n if (descriptor.type.kind === \"enum\" || descriptor.type.kind === \"enum-multi\") {\n const declared = getEnumOptions(descriptor.type);\n const auto = collectValuesFromRows(rows, descriptor);\n const declaredValues = new Set(declared.map((option) => option.value));\n const undeclared = [...auto]\n .filter((value) => !declaredValues.has(value))\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n\n categories.push({\n id: descriptor.id,\n label: descriptor.label,\n selectionMode: \"multiple\",\n options: [\n ...declared.map((option) => ({ value: option.value, label: option.label, color: option.color })),\n ...undeclared,\n ],\n });\n continue;\n }\n\n const auto = [...collectValuesFromRows(rows, descriptor)]\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n categories.push({ id: descriptor.id, label: descriptor.label, selectionMode: \"multiple\", options: auto });\n }\n return categories;\n};\n\nexport interface MenuOption {\n value: string;\n label: string;\n}\n\nexport const buildGroupingOptions = (attributes: AttributeDescriptor[]): MenuOption[] => {\n const options: MenuOption[] = [{ value: NO_GROUPING, label: \"None\" }];\n for (const descriptor of attributes) {\n if (!descriptor.groupable) continue;\n // enum-multi is intentionally not offered for grouping (one row can hold\n // multiple values; we don't double-render).\n if (descriptor.type.kind === \"enum-multi\") continue;\n options.push({ value: descriptor.id, label: descriptor.label });\n }\n return options;\n};\n\nexport const buildOrderingOptions = (attributes: AttributeDescriptor[]): MenuOption[] => {\n const options: MenuOption[] = [{ value: MANUAL_ORDERING, label: \"Manual\" }];\n options.push({ value: \"title\", label: \"Title\" });\n for (const descriptor of attributes) {\n if (!descriptor.sortable) continue;\n options.push({ value: descriptor.id, label: descriptor.label });\n }\n return options;\n};\n\nexport const buildDisplayPropertyOptions = (attributes: AttributeDescriptor[]): MenuOption[] => {\n const options: MenuOption[] = [];\n for (const descriptor of attributes) {\n if (!descriptor.displayable) continue;\n options.push({ value: descriptor.id, label: descriptor.label });\n }\n return options;\n};\n\nexport const resolveSubGroupingOptions = (options: MenuOption[], columnGrouping: string) => {\n if (columnGrouping === NO_GROUPING) return options.filter((option) => option.value === NO_GROUPING);\n return options.filter((option) => option.value === NO_GROUPING || option.value !== columnGrouping);\n};\n\nexport const resolveListDropTargetColumnKey = (columnGrouping: string, placement?: { columnKey?: string }) => {\n if (columnGrouping === NO_GROUPING) return \"all\";\n return placement?.columnKey;\n};\n\nexport const resolveKnownColumnKeys = (\n columnGrouping: string,\n attributes: AttributeDescriptor[],\n filters?: KanbanRendererFilterState,\n) => {\n if (columnGrouping === NO_GROUPING) return undefined;\n const descriptor = findAttribute(attributes, columnGrouping);\n const active = filters?.[columnGrouping];\n if (descriptor && active && active.length > 0) return normalizeFilterValues(descriptor, active);\n if (!descriptor) return undefined;\n if (descriptor.type.kind === \"enum\") return getEnumOptions(descriptor.type).map((option) => option.value);\n return undefined;\n};\n\nexport const normalizeFilterValues = (_descriptor: AttributeDescriptor, values: string[]) => values;\n\nexport const omitFilterCategory = (filters: KanbanRendererFilterState, id: string): KanbanRendererFilterState => {\n const next = { ...filters };\n delete next[id];\n return next;\n};\n\n/**\n * Drop persisted settings entries that reference attribute ids no longer\n * declared by the contribution. Falls back to defaults for missing grouping\n * and ordering attributes so a stale saved view still loads cleanly.\n */\nexport const sanitizeSettings = (\n settings: KanbanRendererSettings,\n attributes: AttributeDescriptor[],\n): KanbanRendererSettings => {\n const knownIds = new Set(attributes.map((attribute) => attribute.id));\n const validGroupingId = (id: string) => id === NO_GROUPING || knownIds.has(id);\n const validOrderingId = (id: string) => id === MANUAL_ORDERING || id === \"title\" || knownIds.has(id);\n\n const columnGrouping = validGroupingId(settings.columnGrouping) ? settings.columnGrouping : NO_GROUPING;\n const rowGrouping = validGroupingId(settings.rowGrouping) ? settings.rowGrouping : NO_GROUPING;\n const orderingId = validOrderingId(settings.ordering.attributeId) ? settings.ordering.attributeId : MANUAL_ORDERING;\n const displayProperties = settings.displayProperties.filter(validGroupingId);\n\n return {\n viewMode: settings.viewMode,\n columnGrouping,\n rowGrouping,\n ordering: { attributeId: orderingId, direction: settings.ordering.direction },\n displayProperties,\n };\n};\n\nexport const sanitizeFilters = (filters: KanbanRendererFilterState, attributes: AttributeDescriptor[]) => {\n const attributesById = new Map(attributes.map((attribute) => [attribute.id, attribute]));\n const next: KanbanRendererFilterState = {};\n for (const [id, values] of Object.entries(filters)) {\n const descriptor = attributesById.get(id);\n if (!descriptor) continue;\n if (!values || values.length === 0) continue;\n next[id] = normalizeFilterValues(descriptor, values);\n }\n return next;\n};\n","import type { KanbanRendererFilterState, KanbanRendererSavedView, KanbanRendererSettings } from \"./types\";\n\ninterface KanbanRendererViewState {\n settings: KanbanRendererSettings;\n filters: KanbanRendererFilterState;\n}\n\nconst cloneSettings = (settings: KanbanRendererSettings): KanbanRendererSettings => ({\n ...settings,\n ordering: { ...settings.ordering },\n displayProperties: [...settings.displayProperties],\n});\n\nconst cloneFilters = (filters: KanbanRendererFilterState): KanbanRendererFilterState =>\n Object.fromEntries(Object.entries(filters).map(([id, values]) => [id, [...values]]));\n\nexport const snapshotKanbanRendererView = (\n id: string,\n title: string,\n state: KanbanRendererViewState,\n isDefault = false,\n): KanbanRendererSavedView => ({\n id,\n title,\n settings: cloneSettings(state.settings),\n filters: cloneFilters(state.filters),\n ...(isDefault ? { isDefault: true } : {}),\n});\n\nexport const applyKanbanRendererView = (view: KanbanRendererSavedView) => ({\n settings: cloneSettings(view.settings),\n filters: cloneFilters(view.filters),\n});\n\nconst comparableSettings = (settings: KanbanRendererSettings) => ({\n viewMode: settings.viewMode,\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n ordering: settings.ordering,\n displayProperties: [...settings.displayProperties].sort(),\n});\n\nconst comparableFilters = (filters: KanbanRendererFilterState) =>\n Object.fromEntries(\n Object.entries(filters)\n .filter(([, values]) => values.length > 0)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([id, values]) => [id, [...values].sort()]),\n );\n\nexport const isKanbanRendererViewDirty = (\n view: KanbanRendererSavedView | undefined,\n state: KanbanRendererViewState,\n) => {\n if (!view) return false;\n return (\n JSON.stringify(comparableSettings(view.settings)) !== JSON.stringify(comparableSettings(state.settings)) ||\n JSON.stringify(comparableFilters(view.filters)) !== JSON.stringify(comparableFilters(state.filters))\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\nimport { omitFilterCategory } from \"./kanban-renderer-helpers\";\nimport {\n applyKanbanRendererView,\n isKanbanRendererViewDirty,\n snapshotKanbanRendererView,\n} from \"./kanban-renderer-views\";\nimport {\n DEFAULT_KANBAN_RENDERER_SETTINGS,\n type KanbanRendererFilterState,\n type KanbanRendererSavedView,\n type KanbanRendererSettings,\n MANUAL_ORDERING,\n NO_GROUPING,\n} from \"./types\";\n\ninterface KanbanRendererSnapshot {\n settings: KanbanRendererSettings;\n filters: KanbanRendererFilterState;\n expandedGroups: Record<string, boolean>;\n views: KanbanRendererSavedView[];\n activeViewId: string;\n}\n\ninterface KanbanRendererStoreInitialState {\n settings?: Partial<KanbanRendererSettings>;\n filters?: KanbanRendererFilterState;\n expandedGroups?: Record<string, boolean>;\n views?: KanbanRendererSavedView[];\n activeViewId?: string;\n}\n\ninterface KanbanRendererState extends KanbanRendererSnapshot {\n setViewMode: (viewMode: KanbanRendererSettings[\"viewMode\"]) => void;\n setColumnGrouping: (columnGrouping: KanbanRendererSettings[\"columnGrouping\"]) => void;\n setRowGrouping: (rowGrouping: KanbanRendererSettings[\"rowGrouping\"]) => void;\n setOrdering: (ordering: KanbanRendererSettings[\"ordering\"]) => void;\n setOrderingAttributeId: (attributeId: KanbanRendererSettings[\"ordering\"][\"attributeId\"]) => void;\n setDisplayProperties: (displayProperties: string[]) => void;\n toggleSortDirection: () => void;\n toggleDisplayProperty: (property: string) => void;\n setFilter: (attributeId: string, values: string[]) => void;\n toggleFilterValue: (attributeId: string, value: string) => void;\n clearFilter: (attributeId: string) => void;\n clearAllFilters: () => void;\n setExpandedGroup: (groupId: string, isExpanded: boolean) => void;\n activateView: (viewId: string) => void;\n createView: (view: { id: string; title: string }) => void;\n saveActiveView: () => void;\n resetActiveView: () => void;\n renameView: (viewId: string, title: string) => void;\n duplicateView: (viewId: string, duplicate: { id: string; title: string }) => void;\n deleteView: (viewId: string) => void;\n setDefaultView: (viewId: string) => void;\n reset: () => void;\n}\n\ninterface CreateKanbanRendererStoreOptions {\n storageKey: string;\n initialState?: KanbanRendererStoreInitialState;\n}\n\nconst WORKSPACE_STORE_NAMESPACE = \"pstdio/ui/kanban-renderer\";\n\nconst toStorageName = (storageKey: string) => `${WORKSPACE_STORE_NAMESPACE}/${storageKey}`;\n\nconst DEFAULT_SNAPSHOT: KanbanRendererSnapshot = {\n settings: DEFAULT_KANBAN_RENDERER_SETTINGS,\n filters: {},\n expandedGroups: {},\n views: [],\n activeViewId: \"default\",\n};\n\nconst createSnapshot = (initialState?: KanbanRendererStoreInitialState): KanbanRendererSnapshot => {\n const initialSettings = { ...DEFAULT_SNAPSHOT.settings, ...(initialState?.settings ?? {}) };\n const initialFilters = initialState?.filters ?? DEFAULT_SNAPSHOT.filters;\n const suppliedViews = initialState?.views ?? [];\n const views =\n suppliedViews.length > 0\n ? suppliedViews\n : [snapshotKanbanRendererView(\"default\", \"All\", { settings: initialSettings, filters: initialFilters }, true)];\n const requestedView = views.find((view) => view.id === initialState?.activeViewId);\n const activeView = requestedView ?? views.find((view) => view.isDefault) ?? views[0]!;\n\n return {\n ...applyKanbanRendererView(activeView),\n expandedGroups: initialState?.expandedGroups ?? DEFAULT_SNAPSHOT.expandedGroups,\n views,\n activeViewId: activeView.id,\n };\n};\n\nconst toggleValue = (values: string[], value: string) =>\n values.includes(value) ? values.filter((entry) => entry !== value) : [...values, value];\n\n// Strip the legacy \"tag:\" prefix used before attributes became first-class.\nconst stripTagPrefix = (id: string) => (id.startsWith(\"tag:\") ? id.slice(4) : id);\n\nconst migrateSettings = (settings: Record<string, unknown>): KanbanRendererSettings => {\n const orderingRaw = settings.ordering as Record<string, unknown> | undefined;\n const orderingId =\n typeof orderingRaw?.attributeId === \"string\"\n ? (orderingRaw.attributeId as string)\n : typeof orderingRaw?.field === \"string\"\n ? stripTagPrefix(orderingRaw.field as string)\n : MANUAL_ORDERING;\n const orderingDirection = (\n orderingRaw?.direction === \"desc\" ? \"desc\" : \"asc\"\n ) as KanbanRendererSettings[\"ordering\"][\"direction\"];\n\n const columnGrouping =\n typeof settings.columnGrouping === \"string\" ? stripTagPrefix(settings.columnGrouping) : NO_GROUPING;\n const rowGrouping = typeof settings.rowGrouping === \"string\" ? stripTagPrefix(settings.rowGrouping) : NO_GROUPING;\n const displayProperties = Array.isArray(settings.displayProperties)\n ? (settings.displayProperties as unknown[])\n .filter((entry): entry is string => typeof entry === \"string\")\n .map(stripTagPrefix)\n : [];\n\n return {\n viewMode: settings.viewMode === \"list\" ? \"list\" : \"board\",\n columnGrouping,\n rowGrouping,\n ordering: { attributeId: orderingId === \"manual\" ? MANUAL_ORDERING : orderingId, direction: orderingDirection },\n displayProperties,\n };\n};\n\nconst migrateFilters = (filters: Record<string, unknown>): KanbanRendererFilterState => {\n const next: KanbanRendererFilterState = {};\n for (const [id, values] of Object.entries(filters)) {\n if (!Array.isArray(values)) continue;\n const stringValues = values.filter((value): value is string => typeof value === \"string\");\n if (stringValues.length === 0) continue;\n next[stripTagPrefix(id)] = stringValues;\n }\n return next;\n};\n\nexport const createKanbanRendererStore = (options: CreateKanbanRendererStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = createSnapshot(initialState);\n\n return createStore<KanbanRendererState>()(\n persist(\n (set) => ({\n ...snapshot,\n setViewMode: (viewMode) => set((state) => ({ ...state, settings: { ...state.settings, viewMode } })),\n setColumnGrouping: (columnGrouping) =>\n set((state) => ({ ...state, settings: { ...state.settings, columnGrouping } })),\n setRowGrouping: (rowGrouping) => set((state) => ({ ...state, settings: { ...state.settings, rowGrouping } })),\n setOrdering: (ordering) => set((state) => ({ ...state, settings: { ...state.settings, ordering } })),\n setOrderingAttributeId: (attributeId) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, ordering: { ...state.settings.ordering, attributeId } },\n })),\n setDisplayProperties: (displayProperties) =>\n set((state) => ({ ...state, settings: { ...state.settings, displayProperties } })),\n toggleSortDirection: () =>\n set((state) => ({\n ...state,\n settings: {\n ...state.settings,\n ordering: {\n ...state.settings.ordering,\n direction: state.settings.ordering.direction === \"asc\" ? \"desc\" : \"asc\",\n },\n },\n })),\n toggleDisplayProperty: (property) =>\n set((state) => {\n const displayProperties = state.settings.displayProperties.includes(property)\n ? state.settings.displayProperties.filter((value) => value !== property)\n : [...state.settings.displayProperties, property];\n return { ...state, settings: { ...state.settings, displayProperties } };\n }),\n setFilter: (attributeId, values) =>\n set((state) => ({ ...state, filters: { ...state.filters, [attributeId]: values } })),\n toggleFilterValue: (attributeId, value) =>\n set((state) => {\n const currentValues = state.filters[attributeId] ?? [];\n const nextValues = toggleValue(currentValues, value);\n const nextFilters =\n nextValues.length === 0\n ? omitFilterCategory(state.filters, attributeId)\n : { ...state.filters, [attributeId]: nextValues };\n return { ...state, filters: nextFilters };\n }),\n clearFilter: (attributeId) =>\n set((state) => ({ ...state, filters: omitFilterCategory(state.filters, attributeId) })),\n clearAllFilters: () => set((state) => ({ ...state, filters: {} })),\n setExpandedGroup: (groupId, isExpanded) =>\n set((state) => ({ ...state, expandedGroups: { ...state.expandedGroups, [groupId]: isExpanded } })),\n activateView: (viewId) =>\n set((state) => {\n const view = state.views.find((entry) => entry.id === viewId);\n return view\n ? { ...state, ...applyKanbanRendererView(view), activeViewId: view.id, expandedGroups: {} }\n : state;\n }),\n createView: (view) =>\n set((state) => {\n const savedView = snapshotKanbanRendererView(view.id, view.title, state);\n return { ...state, views: [...state.views, savedView], activeViewId: savedView.id };\n }),\n saveActiveView: () =>\n set((state) => ({\n ...state,\n views: state.views.map((view) =>\n view.id === state.activeViewId\n ? snapshotKanbanRendererView(view.id, view.title, state, view.isDefault)\n : view,\n ),\n })),\n resetActiveView: () =>\n set((state) => {\n const view = state.views.find((entry) => entry.id === state.activeViewId);\n return view ? { ...state, ...applyKanbanRendererView(view) } : state;\n }),\n renameView: (viewId, title) =>\n set((state) => ({\n ...state,\n views: state.views.map((view) => (view.id === viewId ? { ...view, title } : view)),\n })),\n duplicateView: (viewId, duplicate) =>\n set((state) => {\n const source = state.views.find((view) => view.id === viewId);\n if (!source) return state;\n const copy = snapshotKanbanRendererView(duplicate.id, duplicate.title, source);\n return {\n ...state,\n ...applyKanbanRendererView(copy),\n views: [...state.views, copy],\n activeViewId: copy.id,\n expandedGroups: {},\n };\n }),\n deleteView: (viewId) =>\n set((state) => {\n if (state.views.length === 1) return state;\n const views = state.views.filter((view) => view.id !== viewId);\n if (views.length === state.views.length || state.activeViewId !== viewId) return { ...state, views };\n const activeView = views.find((view) => view.isDefault) ?? views[0]!;\n return {\n ...state,\n ...applyKanbanRendererView(activeView),\n views,\n activeViewId: activeView.id,\n expandedGroups: {},\n };\n }),\n setDefaultView: (viewId) =>\n set((state) => ({\n ...state,\n views: state.views.map((view) => ({ ...view, isDefault: view.id === viewId || undefined })),\n })),\n reset: () => set(snapshot),\n }),\n {\n name: toStorageName(storageKey),\n version: 3,\n migrate: (persisted, version) => {\n if (!persisted || typeof persisted !== \"object\") return persisted as KanbanRendererSnapshot;\n const state = persisted as {\n settings?: Record<string, unknown>;\n filters?: Record<string, unknown>;\n expandedGroups?: Record<string, boolean>;\n views?: KanbanRendererSavedView[];\n activeViewId?: string;\n };\n if (version >= 3) {\n const snapshot = state as unknown as KanbanRendererSnapshot;\n return { ...snapshot, expandedGroups: {} };\n }\n const settings = migrateSettings(state.settings ?? {});\n const filters = migrateFilters(state.filters ?? {});\n return createSnapshot({ settings, filters });\n },\n storage: createJSONStorage(createBrowserStorage),\n partialize: (state) => ({\n settings: state.settings,\n filters: state.filters,\n views: state.views,\n activeViewId: state.activeViewId,\n }),\n },\n ),\n );\n};\n\nconst workspaceStoreRegistry = new Map<string, ReturnType<typeof createKanbanRendererStore>>();\n\nexport const getKanbanRendererStore = (storageKey: string, initialState?: KanbanRendererStoreInitialState) => {\n const existingStore = workspaceStoreRegistry.get(storageKey);\n if (existingStore) return existingStore;\n\n const store = createKanbanRendererStore({ storageKey, initialState });\n workspaceStoreRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useKanbanRendererStore = <T>(\n storageKey: string,\n selector: (state: KanbanRendererState) => T,\n initialState?: KanbanRendererStoreInitialState,\n) => {\n const store = getKanbanRendererStore(storageKey, initialState);\n return useStore(store, selector);\n};\n\nexport const isActiveKanbanRendererViewDirty = (\n state: Pick<KanbanRendererState, \"activeViewId\" | \"filters\" | \"settings\" | \"views\">,\n) =>\n isKanbanRendererViewDirty(\n state.views.find((view) => view.id === state.activeViewId),\n state,\n );\n\nexport type { KanbanRendererSnapshot, KanbanRendererState, KanbanRendererStoreInitialState };\n","import { Button, HStack, Icon, IconButton, Menu, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, List, Settings2, SortAsc, SortDesc, SquareKanban } from \"lucide-react\";\nimport { Fragment, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { type MenuOption, resolveSubGroupingOptions } from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererSettings } from \"./types\";\n\ninterface DisplayMenuProps {\n settings: KanbanRendererSettings;\n groupingOptions: MenuOption[];\n orderingOptions: MenuOption[];\n displayPropertyOptions: MenuOption[];\n onViewModeChange: (value: KanbanRendererSettings[\"viewMode\"]) => void;\n onColumnGroupingChange: (value: string) => void;\n onRowGroupingChange: (value: string) => void;\n onOrderingAttributeIdChange: (value: string) => void;\n onSortDirectionToggle: () => void;\n onDisplayPropertyToggle: (property: string) => void;\n}\n\nconst SectionLabel = (props: { children: string }) => (\n <Text paddingX=\"xs\" paddingTop=\"xs\" paddingBottom=\"2xs\" textStyle=\"label/XS/medium\" color=\"fg.muted\">\n {props.children}\n </Text>\n);\n\nconst Dropdown = (props: {\n label: string;\n value: string;\n options: MenuOption[];\n onSelect: (value: string) => void;\n valueSuffix?: ReactNode;\n onSuffixAction?: () => void;\n}) => {\n const selectedLabel = props.options.find((option) => option.value === props.value)?.label ?? props.label;\n const hasNoneFirst = props.options[0]?.value === \"none\";\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" width=\"full\" justifyContent=\"flex-start\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\">{props.label}</Text>\n <HStack marginLeft=\"auto\" minW=\"0\" gap=\"2xs\" color=\"fg.muted\">\n <Text textStyle=\"label/S/regular\" truncate>\n {selectedLabel}\n </Text>\n {props.valueSuffix}\n </HStack>\n <ChevronDown size={12} />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content>\n {props.options.map((option, index) => (\n <Fragment key={option.value}>\n {hasNoneFirst && index === 1 ? <Menu.Separator /> : null}\n <Menu.Item value={option.value} onClick={() => props.onSelect(option.value)}>\n <HStack width=\"full\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n {option.value === props.value ? <Icon as={Check} marginLeft=\"auto\" boxSize=\"0.875rem\" /> : null}\n </HStack>\n </Menu.Item>\n </Fragment>\n ))}\n {props.onSuffixAction ? (\n <>\n <Menu.Separator />\n <Menu.Item value=\"toggle-direction\" onClick={props.onSuffixAction}>\n Reverse order\n </Menu.Item>\n </>\n ) : null}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const DisplayMenu = (props: DisplayMenuProps) => {\n const {\n settings,\n groupingOptions,\n orderingOptions,\n displayPropertyOptions,\n onViewModeChange,\n onColumnGroupingChange,\n onRowGroupingChange,\n onOrderingAttributeIdChange,\n onSortDirectionToggle,\n onDisplayPropertyToggle,\n } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (!open) return;\n const closeOnOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) return;\n setOpen(false);\n };\n document.addEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n return () => document.removeEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n }, [open]);\n\n return (\n <Popover.Root\n open={open}\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-end\",\n offset: { mainAxis: 8 },\n getAnchorElement: () => triggerRef.current,\n }}\n onOpenChange={(details) => setOpen(details.open)}\n >\n <Tooltip content=\"Display\">\n <Popover.Trigger asChild>\n <IconButton ref={triggerRef} aria-label=\"Display settings\" variant=\"ghost\" size=\"2xs\">\n <Icon as={Settings2} />\n </IconButton>\n </Popover.Trigger>\n </Tooltip>\n <Portal>\n <Popover.Positioner>\n <Popover.Content ref={contentRef} width=\"18.75rem\" padding=\"xs\" gap=\"1px\">\n <SectionLabel>DISPLAY</SectionLabel>\n <HStack borderRadius=\"sm\" bg=\"bg.subtle\" padding=\"2xs\" gap=\"2xs\">\n <Button\n flex=\"1\"\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={settings.viewMode === \"list\"}\n onClick={() => onViewModeChange(\"list\")}\n >\n <List />\n List\n </Button>\n <Button\n flex=\"1\"\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={settings.viewMode === \"board\"}\n onClick={() => onViewModeChange(\"board\")}\n >\n <SquareKanban />\n Board\n </Button>\n </HStack>\n\n <Dropdown\n label=\"Grouping\"\n value={settings.columnGrouping}\n options={groupingOptions}\n onSelect={(value) => {\n onColumnGroupingChange(value);\n if (value === \"none\" || value === settings.rowGrouping) onRowGroupingChange(\"none\");\n }}\n />\n <Dropdown\n label=\"Ordering\"\n value={settings.ordering.attributeId}\n options={orderingOptions}\n valueSuffix={\n settings.ordering.attributeId === \"manual\" ? undefined : (\n <Icon\n as={settings.ordering.direction === \"asc\" ? SortAsc : SortDesc}\n aria-label={`${settings.ordering.direction === \"asc\" ? \"Ascending\" : \"Descending\"} order`}\n aria-hidden={false}\n role=\"img\"\n boxSize=\"0.875rem\"\n flexShrink={0}\n />\n )\n }\n onSelect={onOrderingAttributeIdChange}\n onSuffixAction={settings.ordering.attributeId === \"manual\" ? undefined : onSortDirectionToggle}\n />\n <Dropdown\n label=\"Sub-grouping\"\n value={settings.rowGrouping}\n options={resolveSubGroupingOptions(groupingOptions, settings.columnGrouping)}\n onSelect={onRowGroupingChange}\n />\n\n <SectionLabel>PROPERTIES</SectionLabel>\n <HStack paddingX=\"xs\" paddingBottom=\"xs\" flexWrap=\"wrap\" gap=\"2xs\">\n {displayPropertyOptions.map((option) => {\n const active = settings.displayProperties.includes(option.value);\n return (\n <Button\n key={option.value}\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={active}\n onClick={() => onDisplayPropertyToggle(option.value)}\n >\n {option.label}\n </Button>\n );\n })}\n </HStack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Badge, Button, HStack, Icon, IconButton, Input, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { Filter, Search } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Checkbox } from \"@/components/primitives/checkbox\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { FilterCategoryView } from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererFilterState } from \"./types\";\n\ninterface FilterMenuProps {\n categories: FilterCategoryView[];\n filters: KanbanRendererFilterState;\n countsByCategory: Record<string, Record<string, number>>;\n onToggleFilterValue: (attributeId: string, value: string) => void;\n onClearFilter: (attributeId: string) => void;\n onClearAll: () => void;\n}\n\nconst contentProps = {\n p: \"2xs\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1px\",\n} as const;\n\nconst selectedValues = (filters: KanbanRendererFilterState, categoryId: string) =>\n filters[categoryId]?.filter(Boolean) ?? [];\n\nconst hasActiveFilters = (filters: KanbanRendererFilterState) =>\n Object.values(filters).some((values) => values.length > 0);\n\nconst selectedDescription = (category: FilterCategoryView, values: string[]) => {\n const labels = values.map((value) => category.options.find((option) => option.value === value)?.label ?? value);\n if (labels.length <= 2) return labels.join(\", \");\n return `${labels.slice(0, 2).join(\", \")} +${(labels.length - 2).toString()}`;\n};\n\nconst CategoryLabel = (props: { category: FilterCategoryView; values: string[] }) => {\n const { category, values } = props;\n\n return (\n <HStack minW=\"0\" width=\"full\" gap=\"2xs\">\n <Text textStyle=\"label/S/regular\" truncate>\n {category.label}\n </Text>\n {values.length > 0 ? (\n <Text textStyle=\"label/XS\" color=\"fg.menu-item.secondary\" truncate>\n {selectedDescription(category, values)}\n </Text>\n ) : null}\n </HStack>\n );\n};\n\nconst OptionLabel = (props: { checked: boolean; label: string }) => (\n <HStack minW=\"0\" gap=\"xs\">\n <Checkbox\n checked={props.checked}\n readOnly\n aria-readonly=\"true\"\n inputProps={{ tabIndex: -1, \"aria-hidden\": true }}\n pointerEvents=\"none\"\n size=\"sm\"\n />\n <Text textStyle=\"label/S/regular\" truncate>\n {props.label}\n </Text>\n </HStack>\n);\n\nexport const FilterMenu = (props: FilterMenuProps) => {\n const { categories, filters, countsByCategory, onToggleFilterValue, onClearFilter, onClearAll } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [activeCategoryId, setActiveCategoryId] = useState(categories[0]?.id ?? \"\");\n const activeCategory = categories.find((category) => category.id === activeCategoryId) ?? categories[0];\n const filtersApplied = hasActiveFilters(filters);\n const normalizedQuery = query.trim().toLocaleLowerCase();\n const visibleCategories = categories.filter((category) =>\n category.label.toLocaleLowerCase().includes(normalizedQuery),\n );\n\n useEffect(() => {\n if (!open) return;\n const closeOnOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) return;\n setOpen(false);\n };\n document.addEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n return () => document.removeEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n }, [open]);\n\n return (\n <Popover.Root\n open={open}\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-end\",\n offset: { mainAxis: 8 },\n getAnchorElement: () => triggerRef.current,\n }}\n onOpenChange={(details) => {\n setOpen(details.open);\n if (!details.open) setQuery(\"\");\n }}\n >\n <Tooltip content=\"Filter\">\n <Popover.Trigger asChild>\n <IconButton\n ref={triggerRef}\n aria-label=\"Filter rows\"\n aria-pressed={filtersApplied}\n variant={filtersApplied ? \"subtle\" : \"ghost\"}\n size=\"2xs\"\n >\n <Icon as={Filter} />\n </IconButton>\n </Popover.Trigger>\n </Tooltip>\n <Portal>\n <Popover.Positioner>\n <Popover.Content\n ref={contentRef}\n width=\"min(440px, calc(100vw - 32px))\"\n height=\"min(320px, calc(100vh - 32px))\"\n padding=\"0\"\n gap=\"0\"\n overflow=\"hidden\"\n >\n <HStack height=\"2.25rem\" gap=\"xs\" paddingX=\"sm\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\">\n <Icon as={Search} boxSize=\"0.875rem\" color=\"fg.muted\" />\n <Input\n aria-label=\"Filter properties\"\n value={query}\n placeholder=\"Filter by…\"\n variant=\"flushed\"\n border=\"0\"\n height=\"full\"\n padding=\"0\"\n onChange={(event) => setQuery(event.target.value)}\n />\n </HStack>\n <HStack alignItems=\"stretch\" gap=\"0\" flex=\"1\" minH=\"0\">\n <Stack\n data-testid=\"filter-property-column\"\n width=\"11.75rem\"\n flexShrink={0}\n borderRightWidth=\"1px\"\n borderColor=\"border.subtle\"\n gap=\"0\"\n minH=\"0\"\n >\n <HStack height=\"2rem\" paddingX=\"sm\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n PROPERTY\n </Text>\n <Button marginLeft=\"auto\" size=\"2xs\" variant=\"ghost\" onClick={onClearAll}>\n Clear all\n </Button>\n </HStack>\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n viewportProps={{ overscrollBehavior: \"contain\" }}\n contentProps={contentProps}\n >\n {visibleCategories.map((category) => {\n const values = selectedValues(filters, category.id);\n return (\n <ListRow\n key={category.id}\n id={category.id}\n role=\"button\"\n variant=\"compact\"\n isSelected={activeCategory?.id === category.id}\n label={<CategoryLabel category={category} values={values} />}\n endContent={\n values.length > 0 ? (\n <Badge variant=\"number\" colorPalette=\"gray\">\n {values.length}\n </Badge>\n ) : undefined\n }\n onActivate={() => setActiveCategoryId(category.id)}\n />\n );\n })}\n </ScrollArea>\n </Stack>\n <Stack flex=\"1\" minW=\"0\" minH=\"0\" gap=\"0\">\n {activeCategory ? (\n <>\n <HStack height=\"2rem\" paddingX=\"sm\">\n <Text textStyle=\"label/S/medium\" truncate>\n {activeCategory.label}\n </Text>\n <Button\n marginLeft=\"auto\"\n size=\"2xs\"\n variant=\"ghost\"\n onClick={() => onClearFilter(activeCategory.id)}\n >\n Clear\n </Button>\n </HStack>\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n viewportProps={{ overscrollBehavior: \"contain\" }}\n contentProps={contentProps}\n >\n {activeCategory.options.map((option) => {\n const checked = selectedValues(filters, activeCategory.id).includes(option.value);\n return (\n <ListRow\n key={option.value}\n id={option.value}\n role=\"checkbox\"\n aria-label={option.label}\n aria-checked={checked}\n variant=\"compact\"\n label={<OptionLabel checked={checked} label={option.label} />}\n endContent={\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n {countsByCategory[activeCategory.id]?.[option.value] ?? 0}\n </Text>\n }\n onActivate={() => onToggleFilterValue(activeCategory.id, option.value)}\n />\n );\n })}\n </ScrollArea>\n </>\n ) : null}\n </Stack>\n </HStack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import {\n enumOptionLabel,\n getAttributeStringValues,\n getAttributeValue,\n getEnumOptions,\n normalizeFilterValues,\n toTitleCase,\n} from \"./kanban-renderer-helpers\";\nimport {\n type AttributeDescriptor,\n type AttributeType,\n findAttribute,\n type KanbanRendererFilterState,\n type KanbanRendererOrdering,\n type KanbanRendererRow,\n MANUAL_ORDERING,\n NO_GROUPING,\n} from \"./types\";\n\ninterface GroupingOptions {\n attributes: AttributeDescriptor[];\n columnGrouping: string;\n rowGrouping: string;\n knownColumnKeys?: string[];\n}\n\ninterface KanbanRendererRowGroup {\n key: string;\n label: string;\n rows: KanbanRendererRow[];\n}\n\ninterface KanbanRendererColumnGroup {\n key: string;\n label: string;\n rows: KanbanRendererRow[];\n subgroups: KanbanRendererRowGroup[];\n}\n\nconst UNASSIGNED_LABEL = \"Unassigned\";\n\nconst fallbackLabel = (descriptor: AttributeDescriptor) => `No ${descriptor.label.toLowerCase()}`;\n\nconst labelForGroupKey = (key: string, descriptor: AttributeDescriptor | undefined) => {\n if (!descriptor) return key === NO_GROUPING ? \"All\" : key;\n if (descriptor.type.kind === \"enum\" || descriptor.type.kind === \"enum-multi\")\n return enumOptionLabel(descriptor.type, key);\n return key;\n};\n\n// Drops values that are no longer a declared enum option so rows pointing at a\n// removed status collapse into the \"No <attribute>\" column instead of stranding\n// an orphaned column keyed by the deleted value.\nconst resolveGroupingValue = (value: string | undefined, descriptor: AttributeDescriptor) => {\n if (value === undefined) return undefined;\n if (descriptor.type.kind !== \"enum\" && descriptor.type.kind !== \"enum-multi\") return value;\n return getEnumOptions(descriptor.type).some((option) => option.value === value) ? value : undefined;\n};\n\nconst getGroupingKey = (row: KanbanRendererRow, descriptor: AttributeDescriptor | undefined, columnId: string) => {\n if (columnId === NO_GROUPING) return \"all\";\n if (!descriptor) return \"all\";\n // Grouping by an enum-multi is intentionally rejected at the renderer level\n // (the contribution lists it as non-groupable). Defensive fallback: treat\n // each row as a single bucket using its first value, else fallback.\n if (descriptor.type.kind === \"enum-multi\") {\n const [first] = getAttributeStringValues(row, descriptor);\n return resolveGroupingValue(first, descriptor) ?? fallbackLabel(descriptor);\n }\n const [value] = getAttributeStringValues(row, descriptor);\n return resolveGroupingValue(value, descriptor) ?? fallbackLabel(descriptor);\n};\n\nconst compareGroupKey = (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true });\n\nconst compareGroupKeyForDescriptor = (a: string, b: string, descriptor: AttributeDescriptor | undefined) => {\n if (descriptor && (descriptor.type.kind === \"enum\" || descriptor.type.kind === \"enum-multi\")) {\n const ordered = compareEnumValues(a, b, descriptor.type);\n if (ordered !== 0) return ordered;\n }\n return compareGroupKey(a, b);\n};\n\nconst orderByDirection = (value: number, direction: KanbanRendererOrdering[\"direction\"]) =>\n direction === \"asc\" ? value : value * -1;\n\nconst compareEnumValues = (left: string | undefined, right: string | undefined, type: AttributeType) => {\n if (type.kind !== \"enum\" && type.kind !== \"enum-multi\") return 0;\n const options = getEnumOptions(type);\n const toIndex = (value: string | undefined) => {\n if (value === undefined) return options.length;\n const index = options.findIndex((option) => option.value === value);\n return index === -1 ? options.length + 1 : index;\n };\n return toIndex(left) - toIndex(right);\n};\n\nconst compareForDescriptor = (a: KanbanRendererRow, b: KanbanRendererRow, descriptor: AttributeDescriptor) => {\n if (descriptor.compare) return descriptor.compare(getAttributeValue(a, descriptor), getAttributeValue(b, descriptor));\n\n const left = getAttributeValue(a, descriptor);\n const right = getAttributeValue(b, descriptor);\n\n if (descriptor.type.kind === \"date\") {\n const leftTime = typeof left === \"string\" ? new Date(left).getTime() : 0;\n const rightTime = typeof right === \"string\" ? new Date(right).getTime() : 0;\n return leftTime - rightTime;\n }\n\n if (descriptor.type.kind === \"number\") {\n const leftNum = typeof left === \"number\" ? left : Number(left ?? 0);\n const rightNum = typeof right === \"number\" ? right : Number(right ?? 0);\n return leftNum - rightNum;\n }\n\n if (descriptor.type.kind === \"enum\" || descriptor.type.kind === \"enum-multi\") {\n const [leftValue] = getAttributeStringValues(a, descriptor);\n const [rightValue] = getAttributeStringValues(b, descriptor);\n return compareEnumValues(leftValue, rightValue, descriptor.type);\n }\n\n const leftString = typeof left === \"string\" ? left : String(left ?? \"\");\n const rightString = typeof right === \"string\" ? right : String(right ?? \"\");\n return leftString.localeCompare(rightString, undefined, { numeric: true });\n};\n\nexport const orderRows = (\n rows: KanbanRendererRow[],\n ordering: KanbanRendererOrdering,\n attributes: AttributeDescriptor[],\n) => {\n if (ordering.attributeId === MANUAL_ORDERING) return rows;\n\n if (ordering.attributeId === \"title\") {\n return [...rows].sort((a, b) => orderByDirection(a.title.localeCompare(b.title), ordering.direction));\n }\n\n const descriptor = findAttribute(attributes, ordering.attributeId);\n if (!descriptor) return rows;\n\n return [...rows].sort((a, b) => orderByDirection(compareForDescriptor(a, b, descriptor), ordering.direction));\n};\n\nexport const groupRows = (rows: KanbanRendererRow[], options: GroupingOptions): KanbanRendererColumnGroup[] => {\n const { attributes, columnGrouping, rowGrouping, knownColumnKeys } = options;\n const columnDescriptor = findAttribute(attributes, columnGrouping);\n const rowDescriptor = findAttribute(attributes, rowGrouping);\n const groupedByColumn = new Map<string, KanbanRendererRow[]>();\n\n if (knownColumnKeys) {\n for (const key of knownColumnKeys) groupedByColumn.set(key, []);\n }\n\n for (const row of rows) {\n const key = getGroupingKey(row, columnDescriptor, columnGrouping);\n groupedByColumn.set(key, [...(groupedByColumn.get(key) ?? []), row]);\n }\n\n const columnEntries = [...groupedByColumn.entries()].sort(([left], [right]) =>\n compareGroupKeyForDescriptor(left, right, columnDescriptor),\n );\n\n return columnEntries.map(([columnKey, columnRows]) => {\n const label = labelForGroupKey(columnKey, columnDescriptor);\n\n if (rowGrouping === NO_GROUPING) {\n return { key: columnKey, label, rows: columnRows, subgroups: [] };\n }\n\n const groupedByRow = new Map<string, KanbanRendererRow[]>();\n for (const row of columnRows) {\n const rowKey = getGroupingKey(row, rowDescriptor, rowGrouping);\n groupedByRow.set(rowKey, [...(groupedByRow.get(rowKey) ?? []), row]);\n }\n\n const subgroups = [...groupedByRow.entries()]\n .sort(([left], [right]) => compareGroupKeyForDescriptor(left, right, rowDescriptor))\n .map(([rowKey, rowRows]) => ({\n key: rowKey,\n label: labelForGroupKey(rowKey, rowDescriptor) || toTitleCase(rowKey || UNASSIGNED_LABEL),\n rows: rowRows,\n }));\n\n return { key: columnKey, label, rows: columnRows, subgroups };\n });\n};\n\nconst matchesFilter = (row: KanbanRendererRow, descriptor: AttributeDescriptor, values: string[]) => {\n const rowValues = getAttributeStringValues(row, descriptor);\n const normalizedValues = normalizeFilterValues(descriptor, values);\n return rowValues.some((value) => normalizedValues.includes(value));\n};\n\nexport const filterRows = (\n rows: KanbanRendererRow[],\n filters: KanbanRendererFilterState,\n attributes: AttributeDescriptor[],\n) => {\n const activeFilters = Object.entries(filters).filter(\n (entry): entry is [string, string[]] => Array.isArray(entry[1]) && entry[1].length > 0,\n );\n if (activeFilters.length === 0) return rows;\n\n return rows.filter((row) =>\n activeFilters.every(([id, values]) => {\n const descriptor = findAttribute(attributes, id);\n if (!descriptor) return true;\n return matchesFilter(row, descriptor, values);\n }),\n );\n};\n\nexport const countFilterValues = (\n rows: KanbanRendererRow[],\n attributeId: string,\n attributes: AttributeDescriptor[],\n) => {\n const counts: Record<string, number> = {};\n const descriptor = findAttribute(attributes, attributeId);\n if (!descriptor) return counts;\n for (const row of rows) {\n for (const value of getAttributeStringValues(row, descriptor)) {\n counts[value] = (counts[value] ?? 0) + 1;\n }\n }\n return counts;\n};\n\nexport type { KanbanRendererColumnGroup, KanbanRendererRowGroup };\n","import { Box, Button, chakra, Dialog, HStack, Icon, IconButton, Input, Stack, Tabs, Text } from \"@chakra-ui/react\";\nimport { Copy, Pencil, Plus, RotateCcw, Trash2, X } from \"lucide-react\";\nimport { type FormEvent, type ReactNode, useState } from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { FilterCategoryView } from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererFilterState, KanbanRendererSavedView } from \"./types\";\nimport { isActiveKanbanRendererViewDirty, useKanbanRendererStore } from \"./use-kanban-renderer-store\";\n\ninterface KanbanRendererViewBarProps {\n storageKey: string;\n categories: FilterCategoryView[];\n filters: KanbanRendererFilterState;\n leading?: ReactNode;\n filterControl: ReactNode;\n displayControl: ReactNode;\n align?: \"split\" | \"end\";\n}\n\nconst nextViewIdentity = (views: KanbanRendererSavedView[]) => {\n let index = views.length + 1;\n while (views.some((view) => view.id === `view-${index.toString()}`)) index += 1;\n return { id: `view-${index.toString()}`, title: `View ${index.toString()}` };\n};\n\nconst duplicateIdentity = (view: KanbanRendererSavedView, views: KanbanRendererSavedView[]) => {\n const baseId = `${view.id}-copy`;\n let index = 1;\n let id = baseId;\n while (views.some((entry) => entry.id === id)) {\n index += 1;\n id = `${baseId}-${index.toString()}`;\n }\n return { id, title: `${view.title} copy` };\n};\n\nconst filterValueLabel = (category: FilterCategoryView | undefined, values: string[]) =>\n values.map((value) => category?.options.find((option) => option.value === value)?.label ?? value).join(\", \");\n\nconst FilterPill = (props: { category: FilterCategoryView | undefined; values: string[]; onRemove: () => void }) => {\n const { category, values, onRemove } = props;\n const label = category?.label ?? \"Filter\";\n\n return (\n <HStack\n height=\"filter-pill\"\n gap=\"2xs\"\n paddingLeft=\"xs\"\n paddingRight=\"2xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"xs\"\n bg=\"bg.muted\"\n flexShrink={0}\n >\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n {label} {values.length > 1 ? \"is any of\" : \"is\"}\n </Text>\n <Text textStyle=\"label/XS/medium\" maxW=\"12rem\" truncate>\n {filterValueLabel(category, values)}\n </Text>\n <chakra.button\n type=\"button\"\n aria-label={`Remove ${label} filter`}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n width=\"1rem\"\n height=\"1rem\"\n color=\"fg.muted\"\n borderRadius=\"xs\"\n _hover={{ color: \"fg\", bg: \"bg.hover\" }}\n onClick={onRemove}\n >\n <Icon as={X} boxSize=\"0.75rem\" />\n </chakra.button>\n </HStack>\n );\n};\n\nconst RenameViewDialog = (props: {\n open: boolean;\n title: string;\n onOpenChange: (open: boolean) => void;\n onRename: (title: string) => void;\n}) => {\n const { open, title, onOpenChange, onRename } = props;\n const [value, setValue] = useState(title);\n const submit = (event: FormEvent) => {\n event.preventDefault();\n const nextTitle = value.trim();\n if (!nextTitle) return;\n onRename(nextTitle);\n onOpenChange(false);\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={(details) => onOpenChange(details.open)}>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content asChild>\n <form onSubmit={submit}>\n <Dialog.Header>\n <Dialog.Title>Rename view</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <Input\n autoFocus\n aria-label=\"View name\"\n value={value}\n onChange={(event) => setValue(event.target.value)}\n />\n </Dialog.Body>\n <Dialog.Footer>\n <Button variant=\"ghost\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"primary\" disabled={!value.trim()}>\n Rename\n </Button>\n </Dialog.Footer>\n </form>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n\nexport const KanbanRendererViewBar = (props: KanbanRendererViewBarProps) => {\n const { storageKey, categories, filters, leading, filterControl, displayControl, align = \"split\" } = props;\n const views = useKanbanRendererStore(storageKey, (state) => state.views);\n const activeViewId = useKanbanRendererStore(storageKey, (state) => state.activeViewId);\n const dirty = useKanbanRendererStore(storageKey, isActiveKanbanRendererViewDirty);\n const activateView = useKanbanRendererStore(storageKey, (state) => state.activateView);\n const createView = useKanbanRendererStore(storageKey, (state) => state.createView);\n const saveActiveView = useKanbanRendererStore(storageKey, (state) => state.saveActiveView);\n const resetActiveView = useKanbanRendererStore(storageKey, (state) => state.resetActiveView);\n const clearFilter = useKanbanRendererStore(storageKey, (state) => state.clearFilter);\n const renameView = useKanbanRendererStore(storageKey, (state) => state.renameView);\n const duplicateView = useKanbanRendererStore(storageKey, (state) => state.duplicateView);\n const deleteView = useKanbanRendererStore(storageKey, (state) => state.deleteView);\n const [renameTarget, setRenameTarget] = useState<KanbanRendererSavedView>();\n const activeFilters = Object.entries(filters).filter(([, values]) => values.length > 0);\n const showFilterRow = dirty || activeFilters.length > 0;\n\n const actionsFor = (view: KanbanRendererSavedView): ResourceContextAction[] => [\n {\n key: \"rename\",\n label: \"Rename\",\n icon: <Icon as={Pencil} boxSize=\"0.875rem\" />,\n onClick: () => setRenameTarget(view),\n },\n {\n key: \"duplicate\",\n label: \"Duplicate\",\n icon: <Icon as={Copy} boxSize=\"0.875rem\" />,\n onClick: () => duplicateView(view.id, duplicateIdentity(view, views)),\n },\n {\n key: \"delete\",\n label: \"Delete view\",\n icon: <Icon as={Trash2} boxSize=\"0.875rem\" />,\n isDisabled: views.length === 1,\n separatorBefore: true,\n onClick: () => deleteView(view.id),\n },\n ];\n\n return (\n <Stack\n data-testid=\"kanban-renderer-header\"\n gap=\"0\"\n flexShrink={0}\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <HStack height=\"view-bar\" minW=\"0\" gap=\"2xs\" paddingX=\"xs\">\n {leading}\n <Tabs.Root\n value={activeViewId}\n size=\"sm\"\n variant=\"subtle\"\n minW=\"0\"\n overflow=\"hidden\"\n onValueChange={(details) => activateView(details.value)}\n >\n <Tabs.List overflowX=\"auto\" overflowY=\"hidden\">\n {views.map((view) => (\n <ResourceContextMenu key={view.id} actions={actionsFor(view)} positioning={{ placement: \"bottom-start\" }}>\n <Tabs.Trigger value={view.id}>\n {view.title}\n {dirty && view.id === activeViewId ? (\n <Box\n aria-label=\"Unsaved view changes\"\n width=\"0.375rem\"\n height=\"0.375rem\"\n borderRadius=\"full\"\n bg=\"fg.warning\"\n />\n ) : null}\n </Tabs.Trigger>\n </ResourceContextMenu>\n ))}\n </Tabs.List>\n </Tabs.Root>\n <Tooltip content=\"Add view\">\n <IconButton\n aria-label=\"Add view\"\n size=\"2xs\"\n variant=\"ghost\"\n onClick={() => createView(nextViewIdentity(views))}\n >\n <Icon as={Plus} />\n </IconButton>\n </Tooltip>\n {align === \"split\" ? <Box flex=\"1\" /> : null}\n {filterControl}\n {displayControl}\n </HStack>\n\n {showFilterRow ? (\n <HStack\n height=\"view-subheader\"\n minW=\"0\"\n gap=\"2xs\"\n paddingX=\"xs\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <HStack minW=\"0\" gap=\"2xs\" overflowX=\"auto\">\n {activeFilters.map(([categoryId, values]) => (\n <FilterPill\n key={categoryId}\n category={categories.find((category) => category.id === categoryId)}\n values={values}\n onRemove={() => clearFilter(categoryId)}\n />\n ))}\n </HStack>\n <Box flex=\"1\" />\n {dirty ? (\n <>\n <Button size=\"2xs\" variant=\"outline\" onClick={resetActiveView}>\n <RotateCcw />\n Reset\n </Button>\n <Button size=\"2xs\" variant=\"primary\" onClick={saveActiveView}>\n Save view\n </Button>\n </>\n ) : null}\n </HStack>\n ) : null}\n\n {renameTarget ? (\n <RenameViewDialog\n key={renameTarget.id}\n open\n title={renameTarget.title}\n onOpenChange={(open) => !open && setRenameTarget(undefined)}\n onRename={(title) => renameView(renameTarget.id, title)}\n />\n ) : null}\n </Stack>\n );\n};\n","import { useEffect, useReducer } from \"react\";\n\nimport type { AttributeDescriptor, EnumOptionsSource } from \"./types\";\nimport { isEnumOptionsSource } from \"./types\";\n\nconst collectSources = (attributes: AttributeDescriptor[]): EnumOptionsSource[] => {\n const sources: EnumOptionsSource[] = [];\n for (const attribute of attributes) {\n if (attribute.type.kind !== \"enum\" && attribute.type.kind !== \"enum-multi\") continue;\n if (isEnumOptionsSource(attribute.type.options)) sources.push(attribute.type.options);\n }\n return sources;\n};\n\n/**\n * Returns the same descriptors with every source-backed enum's options\n * replaced by a fresh `getSnapshot()` array. Pure — call from anywhere that\n * needs a normalized view of the schema.\n */\nexport const resolveAttributeOptions = (attributes: AttributeDescriptor[]): AttributeDescriptor[] =>\n attributes.map((attribute) => {\n if (attribute.type.kind !== \"enum\" && attribute.type.kind !== \"enum-multi\") return attribute;\n if (!isEnumOptionsSource(attribute.type.options)) return attribute;\n return { ...attribute, type: { ...attribute.type, options: attribute.type.options.getSnapshot() } };\n });\n\n/**\n * Subscribes to every source-backed enum in `attributes` and returns the\n * resolved descriptors (options materialized to plain arrays). When any\n * source's listener fires the component rerenders, so downstream renders see\n * the new snapshot automatically.\n */\nexport const useResolvedAttributes = (attributes: AttributeDescriptor[]) => {\n const [, forceRender] = useReducer((tick: number) => tick + 1, 0);\n\n useEffect(() => {\n const sources = collectSources(attributes);\n if (sources.length === 0) return;\n const refresh = () => forceRender();\n const unsubscribes = sources.map((source) => source.subscribe(refresh));\n return () => {\n for (const dispose of unsubscribes) dispose();\n };\n }, [attributes]);\n\n return resolveAttributeOptions(attributes);\n};\n","import type { ReactNode } from \"react\";\nimport { DisplayMenu } from \"./display-menu\";\nimport { FilterMenu } from \"./filter-menu\";\nimport { countFilterValues } from \"./kanban-renderer-grouping\";\nimport {\n buildDisplayPropertyOptions,\n buildFilterCategories,\n buildGroupingOptions,\n buildOrderingOptions,\n} from \"./kanban-renderer-helpers\";\nimport { KanbanRendererViewBar } from \"./kanban-renderer-view-bar\";\nimport type {\n AttributeDescriptor,\n KanbanRendererFilterState,\n KanbanRendererRow,\n KanbanRendererSavedView,\n KanbanRendererSettings,\n} from \"./types\";\nimport { useKanbanRendererStore } from \"./use-kanban-renderer-store\";\nimport { useResolvedAttributes } from \"./use-resolved-attributes\";\n\nexport interface KanbanRendererToolbarProps<TRow extends KanbanRendererRow = KanbanRendererRow> {\n rows: TRow[];\n storageKey: string;\n attributes: AttributeDescriptor[];\n defaultSettings?: Partial<KanbanRendererSettings>;\n defaultFilters?: KanbanRendererFilterState;\n defaultViews?: KanbanRendererSavedView[];\n defaultActiveViewId?: string;\n leading?: ReactNode;\n displayControl?: ReactNode;\n align?: \"split\" | \"end\";\n}\n\nexport const KanbanRendererToolbar = <TRow extends KanbanRendererRow>(props: KanbanRendererToolbarProps<TRow>) => {\n const {\n rows,\n storageKey,\n attributes: rawAttributes,\n defaultSettings,\n defaultFilters,\n defaultViews,\n defaultActiveViewId,\n leading,\n displayControl,\n align = \"split\",\n } = props;\n\n const attributes = useResolvedAttributes(rawAttributes);\n const groupingOptions = buildGroupingOptions(attributes);\n const orderingOptions = buildOrderingOptions(attributes);\n const displayPropertyOptions = buildDisplayPropertyOptions(attributes);\n\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 setViewMode = useKanbanRendererStore(storageKey, (state) => state.setViewMode, initialState);\n const setColumnGrouping = useKanbanRendererStore(storageKey, (state) => state.setColumnGrouping, initialState);\n const setRowGrouping = useKanbanRendererStore(storageKey, (state) => state.setRowGrouping, initialState);\n const setOrderingAttributeId = useKanbanRendererStore(\n storageKey,\n (state) => state.setOrderingAttributeId,\n initialState,\n );\n const toggleSortDirection = useKanbanRendererStore(storageKey, (state) => state.toggleSortDirection, initialState);\n const toggleDisplayProperty = useKanbanRendererStore(\n storageKey,\n (state) => state.toggleDisplayProperty,\n initialState,\n );\n const toggleFilterValue = useKanbanRendererStore(storageKey, (state) => state.toggleFilterValue, initialState);\n const clearFilter = useKanbanRendererStore(storageKey, (state) => state.clearFilter, initialState);\n const clearAllFilters = useKanbanRendererStore(storageKey, (state) => state.clearAllFilters, initialState);\n\n const categoryOptions = buildFilterCategories(attributes, rows);\n const countsByCategory = Object.fromEntries(\n categoryOptions.map((category) => [category.id, countFilterValues(rows, category.id, attributes)]),\n );\n\n const filterControl = (\n <FilterMenu\n categories={categoryOptions}\n filters={filters}\n countsByCategory={countsByCategory}\n onToggleFilterValue={toggleFilterValue}\n onClearFilter={clearFilter}\n onClearAll={clearAllFilters}\n />\n );\n const resolvedDisplayControl =\n displayControl === undefined ? (\n <DisplayMenu\n settings={settings}\n groupingOptions={groupingOptions}\n orderingOptions={orderingOptions}\n displayPropertyOptions={displayPropertyOptions}\n onViewModeChange={setViewMode}\n onColumnGroupingChange={setColumnGrouping}\n onRowGroupingChange={setRowGrouping}\n onOrderingAttributeIdChange={setOrderingAttributeId}\n onSortDirectionToggle={toggleSortDirection}\n onDisplayPropertyToggle={toggleDisplayProperty}\n />\n ) : (\n displayControl\n );\n\n return (\n <KanbanRendererViewBar\n storageKey={storageKey}\n categories={categoryOptions}\n filters={filters}\n leading={leading}\n filterControl={filterControl}\n displayControl={resolvedDisplayControl}\n align={align}\n />\n );\n};\n"],"names":["toPascalCase","value","split","filter","Boolean","map","part","charAt","toUpperCase","slice","join","resolveIcon","name","pascalName","candidate","component","lucideIcons","CollectionBadge","props","$","_c","label","icon","onClick","t0","BadgeIcon","t1","jsx","Icon","t2","Text","t3","content","t4","Symbol","for","display","gap","alignItems","minW","maxW","variant","bg","_light","_dark","color","textStyle","sharedProps","t5","event","stopPropagation","t6","Badge","NO_GROUPING","MANUAL_ORDERING","isEnumOptionsSource","options","Array","isArray","isAttributesSource","attributes","DEFAULT_KANBAN_RENDERER_SETTINGS","viewMode","columnGrouping","rowGrouping","ordering","attributeId","direction","displayProperties","findAttribute","id","find","attribute","dedupeEnumOptions","seen","Set","option","has","add","getEnumOptions","type","kind","getSnapshot","toTitleCase","replaceAll","chunk","length","findEnumOption","enumOptionLabel","summarizeMultiEnum","values","renderEnumBadge","descriptor","stringValue","editable","attributeLabel","undefined","isEditable","renderMultiEnumBadge","entry","summary","firstOption","getAttributeValue","row","raw","getAttributeStringValues","String","formatDateValue","date","Date","Number","isNaN","getTime","toLocaleDateString","formatNumberValue","isFinite","formatStringValue","formatUserValue","isRenderableNode","isRecord","textValue","trim","isCollectionResource","normalizeCollectionBadgeItems","flatMap","item","resource","renderBadgeListDisplay","openResource","items","itemsAttributeId","selectedId","selectedItem","createElement","key","renderAttributeBadge","render","formatted","collectDisplayBadges","badges","displayable","badge","push","collectDisplayCustomSlots","slots","slot","collectValuesFromRows","rows","buildFilterCategories","categories","filterable","declared","auto","declaredValues","undeclared","sort","a","b","localeCompare","numeric","selectionMode","buildGroupingOptions","groupable","buildOrderingOptions","sortable","buildDisplayPropertyOptions","resolveSubGroupingOptions","resolveListDropTargetColumnKey","placement","columnKey","resolveKnownColumnKeys","filters","active","normalizeFilterValues","_descriptor","omitFilterCategory","next","sanitizeSettings","settings","knownIds","validGroupingId","validOrderingId","orderingId","sanitizeFilters","attributesById","Map","Object","entries","get","cloneSettings","cloneFilters","fromEntries","snapshotKanbanRendererView","title","state","isDefault","applyKanbanRendererView","view","comparableSettings","comparableFilters","left","right","isKanbanRendererViewDirty","JSON","stringify","WORKSPACE_STORE_NAMESPACE","toStorageName","storageKey","DEFAULT_SNAPSHOT","expandedGroups","createSnapshot","initialState","initialSettings","initialFilters","suppliedViews","views","activeView","activeViewId","toggleValue","includes","stripTagPrefix","startsWith","migrateSettings","orderingRaw","field","orderingDirection","migrateFilters","stringValues","createKanbanRendererStore","snapshot","createStore","persist","set","setViewMode","setColumnGrouping","setRowGrouping","setOrdering","setOrderingAttributeId","setDisplayProperties","toggleSortDirection","toggleDisplayProperty","property","setFilter","toggleFilterValue","currentValues","nextValues","nextFilters","clearFilter","clearAllFilters","setExpandedGroup","groupId","isExpanded","activateView","viewId","createView","savedView","saveActiveView","resetActiveView","renameView","duplicateView","duplicate","source","copy","deleteView","setDefaultView","reset","version","migrate","persisted","storage","createJSONStorage","createBrowserStorage","partialize","workspaceStoreRegistry","getKanbanRendererStore","existingStore","store","useKanbanRendererStore","selector","useStore","isActiveKanbanRendererViewDirty","SectionLabel","children","Dropdown","selectedLabel","hasNoneFirst","valueSuffix","jsxs","HStack","ChevronDown","Button","option_0","index","Fragment","Menu","onSelect","Check","t7","onSuffixAction","t8","t9","DisplayMenu","groupingOptions","orderingOptions","displayPropertyOptions","onViewModeChange","onColumnGroupingChange","onRowGroupingChange","onOrderingAttributeIdChange","onSortDirectionToggle","onDisplayPropertyToggle","triggerRef","useRef","contentRef","open","setOpen","useState","closeOnOutsidePointerDown","target","Node","current","contains","document","addEventListener","removeEventListener","useEffect","offset","mainAxis","getAnchorElement","details","Tooltip","IconButton","Settings2","List","t10","t11","t12","SquareKanban","t13","t14","t15","t16","t17","SortAsc","SortDesc","t18","t19","t20","t21","t22","t23","t24","t25","t26","Portal","Popover","t27","contentProps","p","flexDirection","selectedValues","categoryId","hasActiveFilters","some","selectedDescription","category","labels","toString","CategoryLabel","OptionLabel","tabIndex","checked","Checkbox","FilterMenu","countsByCategory","onToggleFilterValue","onClearFilter","onClearAll","query","setQuery","activeCategoryId","setActiveCategoryId","activeCategory","filtersApplied","normalizedQuery","toLocaleLowerCase","visibleCategories","category_0","Filter","T0","Search","event_0","Input","T1","T2","Stack","t28","t29","t30","t31","t32","t33","T3","ScrollArea","t34","t35","t36","overscrollBehavior","t38","category_1","ListRow","t39","t40","t37","t41","t42","t43","t44","t45","Content","t46","Positioner","t47","t48","Root","UNASSIGNED_LABEL","fallbackLabel","toLowerCase","labelForGroupKey","resolveGroupingValue","getGroupingKey","columnId","first","compareGroupKey","compareGroupKeyForDescriptor","ordered","compareEnumValues","orderByDirection","toIndex","findIndex","compareForDescriptor","compare","leftTime","rightTime","leftNum","rightNum","leftValue","rightValue","leftString","rightString","orderRows","groupRows","knownColumnKeys","columnDescriptor","rowDescriptor","groupedByColumn","columnRows","subgroups","groupedByRow","rowKey","rowRows","matchesFilter","rowValues","normalizedValues","filterRows","activeFilters","every","countFilterValues","counts","nextViewIdentity","duplicateIdentity","baseId","filterValueLabel","FilterPill","onRemove","X","chakra","RenameViewDialog","onOpenChange","onRename","setValue","preventDefault","nextTitle","submit","Dialog","KanbanRendererViewBar","leading","filterControl","displayControl","align","_temp","_temp2","dirty","_temp3","_temp4","_temp5","_temp6","_temp7","_temp8","_temp9","_temp0","renameTarget","setRenameTarget","_temp1","showFilterRow","Pencil","Copy","Trash2","isDisabled","separatorBefore","actionsFor","view_0","ResourceContextMenu","Tabs","Box","Plus","values_0","RotateCcw","state_0","state_1","state_2","state_3","state_4","state_5","state_6","state_7","state_8","collectSources","sources","resolveAttributeOptions","useResolvedAttributes","forceRender","useReducer","refresh","unsubscribes","subscribe","dispose","tick","KanbanRendererToolbar","rawAttributes","defaultSettings","defaultFilters","defaultViews","defaultActiveViewId","categoryOptions","resolvedDisplayControl","state_9"],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
- import { c as u } from "react/compiler-runtime";
3
- import { NumberInput as i, Box as d } from "@chakra-ui/react";
4
- import * as f from "react";
5
- import { useState as b, useEffect as p } from "react";
6
- import { i as h } from "./prism-n5gcERyD.js";
7
- const R = f.forwardRef(function(o, n) {
8
- const r = u(8);
9
- let t, e;
10
- r[0] !== o ? ({
11
- children: t,
12
- ...e
13
- } = o, r[0] = o, r[1] = t, r[2] = e) : (t = r[1], e = r[2]);
14
- let l;
15
- r[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (l = /* @__PURE__ */ c(i.Control, { children: [
16
- /* @__PURE__ */ a(i.IncrementTrigger, {}),
17
- /* @__PURE__ */ a(i.DecrementTrigger, {})
18
- ] }), r[3] = l) : l = r[3];
19
- let m;
20
- return r[4] !== t || r[5] !== n || r[6] !== e ? (m = /* @__PURE__ */ c(i.Root, { ref: n, variant: "outline", ...e, children: [
21
- t,
22
- l
23
- ] }), r[4] = t, r[5] = n, r[6] = e, r[7] = m) : m = r[7], m;
24
- }), g = i.Input, y = (s) => {
25
- const [o, n] = b(null);
26
- return p(() => {
27
- let r = !1;
28
- return (async () => {
29
- await h();
30
- const t = await import("./markdown-editor-CsJ4KNGu.js").then((e) => e.m);
31
- r || n(() => t.MarkdownEditor);
32
- })(), () => {
33
- r = !0;
34
- };
35
- }, []), o ? /* @__PURE__ */ a(o, { ...s }) : /* @__PURE__ */ a(d, { minH: "7rem", borderWidth: "1px", borderColor: "border", borderRadius: "xs" });
36
- };
37
- export {
38
- y as L,
39
- g as N,
40
- R as a
41
- };
42
- //# sourceMappingURL=lazy-markdown-editor-PzIBc9-l.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy-markdown-editor-PzIBc9-l.js","sources":["../src/components/primitives/number-input.tsx","../src/components/rich-text/lazy-markdown-editor.tsx"],"sourcesContent":["import { NumberInput as ChakraNumberInput } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface NumberInputProps extends ChakraNumberInput.RootProps {}\n\nexport const NumberInputRoot = React.forwardRef<HTMLDivElement, NumberInputProps>(function NumberInput(props, ref) {\n const { children, ...rest } = props;\n return (\n <ChakraNumberInput.Root ref={ref} variant=\"outline\" {...rest}>\n {children}\n <ChakraNumberInput.Control>\n <ChakraNumberInput.IncrementTrigger />\n <ChakraNumberInput.DecrementTrigger />\n </ChakraNumberInput.Control>\n </ChakraNumberInput.Root>\n );\n});\n\nexport const NumberInputField = ChakraNumberInput.Input;\n","import { Box } from \"@chakra-ui/react\";\nimport { type ComponentType, useEffect, useState } from \"react\";\nimport { installPrismGlobal } from \"@/utils/prism\";\nimport type { MarkdownEditorProps } from \"./markdown-editor/markdown-editor\";\n\nexport const LazyMarkdownEditor = (props: MarkdownEditorProps) => {\n const [Editor, setEditor] = useState<ComponentType<MarkdownEditorProps> | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n\n void (async () => {\n await installPrismGlobal();\n const module = await import(\"./markdown-editor/markdown-editor\");\n if (!cancelled) setEditor(() => module.MarkdownEditor);\n })();\n\n return () => {\n cancelled = true;\n };\n }, []);\n\n if (!Editor) return <Box minH=\"7rem\" borderWidth=\"1px\" borderColor=\"border\" borderRadius=\"xs\" />;\n\n return <Editor {...props} />;\n};\n"],"names":["NumberInputRoot","React","forwardRef","props","ref","$","_c","children","rest","t0","Symbol","for","jsxs","ChakraNumberInput","jsx","t1","NumberInputField","Input","LazyMarkdownEditor","Editor","setEditor","useState","useEffect","cancelled","installPrismGlobal","module","n","MarkdownEditor","Box"],"mappings":";;;;;;AAKO,MAAMA,IAAkBC,EAAMC,WAA6C,SAAAC,GAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC,GAAAC;AAAA,EAAAH,SAAAF,KAChF;AAAA,IAAAI,UAAAA;AAAAA,IAAA,GAAAC;AAAAA,EAAAA,IAA8BL,GAAME,OAAAF,GAAAE,OAAAE,GAAAF,OAAAG,MAAAD,IAAAF,EAAA,CAAA,GAAAG,IAAAH,EAAA,CAAA;AAAA,MAAAI;AAAA,EAAAJ,EAAA,CAAA,MAAAK,uBAAAC,IAAA,2BAAA,KAIhCF,IAAA,gBAAAG,EAAAC,EAAA,SAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAAD,EAAA,kBAAA,EAAA;AAAA,IACA,gBAAAC,EAAAD,EAAA,kBAAA,CAAA,CAAA;AAAA,EAAA,GACF,GAA4BR,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAU;AAAA,SAAAV,EAAA,CAAA,MAAAE,KAAAF,SAAAD,KAAAC,EAAA,CAAA,MAAAG,KAL9BO,gCAA6BX,KAAAA,GAAa,SAAA,WAAS,GAAKI,GACrDD,UAAAA;AAAAA,IAAAA;AAAAA,IACDE;AAAAA,EAAAA,GAIF,GAAyBJ,OAAAE,GAAAF,OAAAD,GAAAC,OAAAG,GAAAH,OAAAU,KAAAA,IAAAV,EAAA,CAAA,GANzBU;AAMyB,CAE5B,GAEYC,IAAmBH,EAAkBI,OCbrCC,IAAqBA,CAACf,MAA+B;AAChE,QAAM,CAACgB,GAAQC,CAAS,IAAIC,EAAoD,IAAI;AAgBpF,SAdAC,EAAU,MAAM;AACd,QAAIC,IAAY;AAEhB,YAAM,YAAY;AAChB,YAAMC,EAAAA;AACN,YAAMC,IAAS,MAAM,OAAO,+BAAmC,EAAA,KAAA,CAAAC,MAAAA,EAAA,CAAA;AAC/D,MAAKH,KAAWH,EAAU,MAAMK,EAAOE,cAAc;AAAA,IACvD,GAAA,GAEO,MAAM;AACXJ,MAAAA,IAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAA,CAAE,GAEAJ,IAEE,gBAAAL,EAACK,GAAA,EAAO,GAAIhB,EAAAA,CAAM,IAFL,gBAAAW,EAACc,GAAA,EAAI,MAAK,QAAO,aAAY,OAAM,aAAY,UAAS,cAAa,KAAA,CAAI;AAG/F;"}