@pstdio/ui 0.26.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/dist/EquationComponent-DDd5UoIP.js +65 -0
  2. package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
  3. package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
  4. package/dist/MermaidComponent-DGDnQ6pb.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-DNJG8tLZ.js +415 -0
  11. package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
  12. package/dist/data-table.d.ts +143 -2
  13. package/dist/data-table.js +1216 -1188
  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 +1508 -40
  36. package/dist/index.js +3167 -2707
  37. package/dist/index.js.map +1 -1
  38. package/dist/kanban-renderer.d.ts +337 -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-IJzw1cA2.js +225 -0
  50. package/dist/param-editor-IJzw1cA2.js.map +1 -0
  51. package/dist/param-editor-field-DscIjv8s.js +2368 -0
  52. package/dist/param-editor-field-DscIjv8s.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-DtQpHBlX.js +7018 -0
  61. package/dist/rich-text-DtQpHBlX.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-kSkOHzbV.js +2852 -0
  74. package/dist/theme-kSkOHzbV.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-9g78pXHS.js +245 -0
  83. package/dist/workspace-badge-9g78pXHS.js.map +1 -0
  84. package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -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":"tree-list-CPjbGTvs.js","sources":["../src/components/layout/resizable-split-layout.geometry.ts","../src/components/layout/resizable-split-layout.handle.tsx","../src/components/layout/resizable-split-layout.panels.tsx","../src/components/layout/resizable-split-layout.root-size.ts","../src/components/layout/resizable-split-layout.tsx","../src/components/tree-list/tree-list-background.tsx","../src/components/tree-list/tree-list-model.ts","../src/components/tree-list/tree-list-drag.ts","../src/components/tree-list/tree-list-move-surface.tsx","../src/components/tree-list/tree-list-inline-input.tsx","../src/components/tree-list/tree-list-node-row.tsx","../src/components/tree-list/tree-list-section-header.tsx","../src/components/tree-list/tree-list-reorder.ts","../src/components/tree-list/tree-list-drag-provider.tsx","../src/components/tree-list/tree-list-sortable.tsx","../src/components/tree-list/use-tree-list-keyboard-navigation.ts","../src/components/tree-list/tree-list.tsx"],"sourcesContent":["export type ResizableSplitSide = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nconst MIN_HORIZONTAL_COLLAPSE_THRESHOLD_PX = 72;\nconst MAX_HORIZONTAL_COLLAPSE_THRESHOLD_PX = 160;\nconst VERTICAL_COLLAPSE_THRESHOLD_PX = 72;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst axes = {\n left: {\n rootDirection: \"row\",\n dimension: \"width\",\n separatorOrientation: \"vertical\",\n cursor: \"col-resize\",\n pointerCoordinate: \"clientX\",\n deltaDirection: 1,\n panelFirst: true,\n },\n right: {\n rootDirection: \"row\",\n dimension: \"width\",\n separatorOrientation: \"vertical\",\n cursor: \"col-resize\",\n pointerCoordinate: \"clientX\",\n deltaDirection: -1,\n panelFirst: false,\n },\n top: {\n rootDirection: \"column\",\n dimension: \"height\",\n separatorOrientation: \"horizontal\",\n cursor: \"row-resize\",\n pointerCoordinate: \"clientY\",\n deltaDirection: 1,\n panelFirst: true,\n },\n bottom: {\n rootDirection: \"column\",\n dimension: \"height\",\n separatorOrientation: \"horizontal\",\n cursor: \"row-resize\",\n pointerCoordinate: \"clientY\",\n deltaDirection: -1,\n panelFirst: false,\n },\n} as const;\n\nexport const getResizableSplitAxis = (side: ResizableSplitSide) => axes[side];\n\nexport const resolveResizableBounds = (input: {\n rootSize: number;\n fallbackRootSize: number;\n minSize: number;\n maxSize?: number;\n contentMinSize: number;\n}) => {\n const rootSize = input.rootSize > 0 ? input.rootSize : input.fallbackRootSize;\n const maxFromContent = Math.max(0, rootSize - input.contentMinSize);\n const configuredMax = input.maxSize ?? maxFromContent;\n const maxSize = Math.max(0, Math.min(configuredMax, maxFromContent));\n const minSize = Math.min(input.minSize, maxSize);\n\n return { minSize, maxSize };\n};\n\nconst resolveCollapseThreshold = (side: ResizableSplitSide, minSize: number) => {\n if (side === \"top\" || side === \"bottom\") return VERTICAL_COLLAPSE_THRESHOLD_PX;\n return clamp(minSize / 2, MIN_HORIZONTAL_COLLAPSE_THRESHOLD_PX, MAX_HORIZONTAL_COLLAPSE_THRESHOLD_PX);\n};\n\nexport const resolveDraggedPanelSize = (input: {\n side: ResizableSplitSide;\n startSize: number;\n pointerDelta: number;\n minSize: number;\n maxSize: number;\n collapsible: boolean;\n}) => {\n const axis = getResizableSplitAxis(input.side);\n const rawSize = input.startSize + input.pointerDelta * axis.deltaDirection;\n const collapsed = input.collapsible && rawSize <= resolveCollapseThreshold(input.side, input.minSize);\n\n return {\n rawSize,\n size: collapsed ? 0 : clamp(rawSize, input.minSize, input.maxSize),\n collapsed,\n };\n};\n","import { Box, Flex, type SystemStyleObject } from \"@chakra-ui/react\";\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { getResizableSplitAxis } from \"@/components/layout/resizable-split-layout.geometry\";\n\n// Two separators share one behaviour. The \"gap\" separator sits between panel\n// cards: it is as wide as the panel gap and shows a grip of three dots. The\n// \"line\" separator divides content inside a panel: it is a 1px border line.\n// Both become a full-length bar after a short hover delay, while dragging, or\n// on keyboard focus, and both have an invisible hit area wider than themselves.\n\nexport type ResizableSplitSeparator = \"gap\" | \"line\";\n\nconst HOVER_DELAY_MS = 250;\nconst GRIP_DOTS = [0, 1, 2];\n\nconst resolveHandleLayout = (vertical: boolean, thickness: string) => {\n if (vertical) {\n return {\n w: thickness,\n h: \"full\",\n hitArea: { top: 0, bottom: 0, insetInlineStart: \"-1\", insetInlineEnd: \"-1\" },\n gripDirection: \"column\" as const,\n bar: { top: \"0\", bottom: \"0\", insetInlineStart: \"50%\", w: \"0.5\", transform: \"translateX(-50%)\" },\n };\n }\n\n return {\n w: \"full\",\n h: thickness,\n hitArea: { insetInline: 0, top: \"-1\", bottom: \"-1\" },\n gripDirection: \"row\" as const,\n bar: { top: \"50%\", insetInline: \"0\", h: \"0.5\", transform: \"translateY(-50%)\" },\n };\n};\n\ntype HandleLayout = ReturnType<typeof resolveHandleLayout>;\n\ninterface HandlePartProps {\n active: boolean;\n layout: HandleLayout;\n}\n\nconst ResizeHandleGrip = (props: HandlePartProps) => {\n const { active, layout } = props;\n\n return (\n <Flex\n data-part=\"grip\"\n direction={layout.gripDirection}\n gap=\"3xs\"\n opacity={active ? 0 : 1}\n transition=\"opacity 120ms ease\"\n >\n {GRIP_DOTS.map((dot) => (\n <Box key={dot} boxSize=\"0.5\" borderRadius=\"full\" bg=\"border\" />\n ))}\n </Flex>\n );\n};\n\nconst ResizeHandleBar = (props: HandlePartProps) => {\n const { active, layout } = props;\n\n return (\n <Box\n data-part=\"bar\"\n position=\"absolute\"\n borderRadius=\"xs\"\n bg=\"fg.info\"\n opacity={active ? 1 : 0}\n transition=\"opacity 120ms ease\"\n pointerEvents=\"none\"\n {...layout.bar}\n />\n );\n};\n\ninterface ResizeHandleProps {\n css: SystemStyleObject;\n axis: ReturnType<typeof getResizableSplitAxis>;\n bounds: { minSize: number; maxSize: number };\n collapsed: boolean;\n collapsible: boolean;\n contentPanelId: string;\n dragging: boolean;\n resizablePanelId: string;\n resizeLabel: string;\n resolvedPanelSize: number;\n separator: ResizableSplitSeparator;\n onCollapse: () => void;\n onResizeKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => void;\n onResizeStart: (event: ReactPointerEvent<HTMLDivElement>) => void;\n}\n\nexport const ResizeHandle = (props: ResizeHandleProps) => {\n const {\n css,\n axis,\n bounds,\n collapsed,\n collapsible,\n contentPanelId,\n dragging,\n resizablePanelId,\n resizeLabel,\n resolvedPanelSize,\n separator,\n onCollapse,\n onResizeKeyDown,\n onResizeStart,\n } = props;\n const line = separator === \"line\";\n const layout = resolveHandleLayout(axis.separatorOrientation === \"vertical\", line ? \"1px\" : \"panel-gap\");\n const [hovered, setHovered] = useState(false);\n const hoverTimerRef = useRef(0);\n const active = hovered || dragging;\n // A collapsed panel hides its separator; the nav chrome owns reopening.\n const visibility = collapsed ? { \"aria-hidden\": true, tabIndex: -1 } : { tabIndex: 0 };\n\n useEffect(() => () => window.clearTimeout(hoverTimerRef.current), []);\n\n const handlePointerEnter = () => {\n hoverTimerRef.current = window.setTimeout(() => setHovered(true), HOVER_DELAY_MS);\n };\n\n const handlePointerLeave = () => {\n window.clearTimeout(hoverTimerRef.current);\n setHovered(false);\n };\n\n return (\n <Box\n css={css}\n data-collapsed={collapsed}\n role=\"separator\"\n aria-label={resizeLabel}\n aria-orientation={axis.separatorOrientation}\n aria-controls={`${resizablePanelId} ${contentPanelId}`}\n aria-valuemin={collapsible ? 0 : Math.round(bounds.minSize)}\n aria-valuemax={Math.round(bounds.maxSize)}\n aria-valuenow={Math.round(resolvedPanelSize)}\n {...visibility}\n position=\"relative\"\n zIndex=\"docked\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n w={layout.w}\n h={layout.h}\n bg={line ? \"border.subtle\" : undefined}\n cursor={axis.cursor}\n touchAction=\"none\"\n outline=\"none\"\n _before={{ content: '\"\"', position: \"absolute\", ...layout.hitArea }}\n _focusVisible={{ \"& [data-part=bar]\": { opacity: 1 }, \"& [data-part=grip]\": { opacity: 0 } }}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onPointerDown={onResizeStart}\n onDoubleClick={collapsible ? onCollapse : undefined}\n onKeyDown={onResizeKeyDown}\n >\n {line ? null : <ResizeHandleGrip active={active} layout={layout} />}\n <ResizeHandleBar active={active} layout={layout} />\n </Box>\n );\n};\n","import { Box, type SystemStyleObject } from \"@chakra-ui/react\";\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n ReactNode,\n PointerEvent as ReactPointerEvent,\n RefObject,\n} from \"react\";\nimport type { getResizableSplitAxis } from \"@/components/layout/resizable-split-layout.geometry\";\nimport { type ResizableSplitSeparator, ResizeHandle } from \"@/components/layout/resizable-split-layout.handle\";\n\ninterface ResizableSplitPanelsProps {\n styles: Record<\"resizablePanel\" | \"contentPanel\" | \"separator\", SystemStyleObject>;\n axis: ReturnType<typeof getResizableSplitAxis>;\n bounds: { minSize: number; maxSize: number };\n collapsed: boolean;\n collapsible: boolean;\n contentPanel: ReactNode;\n contentPanelId: string;\n contentPanelRef: RefObject<HTMLDivElement | null>;\n resizablePanel: ReactNode;\n resizablePanelId: string;\n resizablePanelRef: RefObject<HTMLDivElement | null>;\n dragging: boolean;\n resizeLabel: string;\n resolvedPanelSize: number;\n separator: ResizableSplitSeparator;\n onCollapse: () => void;\n onResizeKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => void;\n onResizeStart: (event: ReactPointerEvent<HTMLDivElement>) => void;\n}\n\nexport const ResizableSplitPanels = (props: ResizableSplitPanelsProps) => {\n const {\n styles,\n axis,\n bounds,\n collapsed,\n collapsible,\n contentPanel,\n contentPanelId,\n contentPanelRef,\n resizablePanel,\n resizablePanelId,\n resizablePanelRef,\n dragging,\n resizeLabel,\n resolvedPanelSize,\n separator,\n onCollapse,\n onResizeKeyDown,\n onResizeStart,\n } = props;\n const resizablePanelNode = (\n <Box\n key=\"resizable-panel\"\n id={resizablePanelId}\n ref={resizablePanelRef}\n css={styles.resizablePanel}\n data-collapsed={collapsed}\n aria-hidden={collapsed ? true : undefined}\n >\n {resizablePanel}\n </Box>\n );\n const contentPanelNode = (\n <Box key=\"content-panel\" id={contentPanelId} ref={contentPanelRef} css={styles.contentPanel}>\n {contentPanel}\n </Box>\n );\n const resizeTrigger = (\n <ResizeHandle\n css={styles.separator}\n key=\"resize-handle\"\n axis={axis}\n bounds={bounds}\n collapsed={collapsed}\n collapsible={collapsible}\n contentPanelId={contentPanelId}\n resizablePanelId={resizablePanelId}\n dragging={dragging}\n resizeLabel={resizeLabel}\n resolvedPanelSize={resolvedPanelSize}\n separator={separator}\n onCollapse={onCollapse}\n onResizeKeyDown={onResizeKeyDown}\n onResizeStart={onResizeStart}\n />\n );\n\n if (axis.panelFirst) {\n return (\n <>\n {resizablePanelNode}\n {resizeTrigger}\n {contentPanelNode}\n </>\n );\n }\n\n return (\n <>\n {contentPanelNode}\n {resizeTrigger}\n {resizablePanelNode}\n </>\n );\n};\n","import { type RefObject, useEffect, useState } from \"react\";\n\nexport type PanelDimension = \"width\" | \"height\";\n\n// Tracks the root element's size along the split axis so the panel bounds\n// follow window and container resizes.\nexport const useResizableSplitRootSize = (rootRef: RefObject<HTMLDivElement | null>, dimension: PanelDimension) => {\n const [rootSize, setRootSize] = useState(0);\n\n useEffect(() => {\n const element = rootRef.current;\n if (!element) return;\n\n const updateRootSize = () => {\n setRootSize(element.getBoundingClientRect()[dimension]);\n };\n\n updateRootSize();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(updateRootSize);\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [rootRef, dimension]);\n\n return rootSize;\n};\n","import { type ConditionalValue, Flex, type FlexProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n type PointerEvent as ReactPointerEvent,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport {\n getResizableSplitAxis,\n type ResizableSplitSide,\n resolveDraggedPanelSize,\n resolveResizableBounds,\n} from \"@/components/layout/resizable-split-layout.geometry\";\nimport type { ResizableSplitSeparator } from \"@/components/layout/resizable-split-layout.handle\";\nimport { ResizableSplitPanels } from \"@/components/layout/resizable-split-layout.panels\";\nimport { type PanelDimension, useResizableSplitRootSize } from \"@/components/layout/resizable-split-layout.root-size\";\n\ninterface ResizableSplitLayoutProps extends Omit<FlexProps, \"children\" | \"onResize\"> {\n resizablePanel: ReactNode;\n contentPanel: ReactNode;\n resizableSide?: ResizableSplitSide;\n defaultSizePx?: number;\n minSizePx?: number;\n maxSizePx?: number;\n contentMinSizePx?: number;\n collapsed?: boolean;\n collapsible?: boolean;\n resizeLabel?: string;\n separator?: ResizableSplitSeparator;\n layout?: ConditionalValue<\"split\" | \"stacked\" | \"stacked-reverse\" | \"content\">;\n onSizeChange?: (size: number) => void;\n onCollapsedChange?: (collapsed: boolean) => void;\n}\n\nconst FALLBACK_ROOT_SIZE = { width: 1200, height: 720 };\nconst KEYBOARD_RESIZE_STEP = 24;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst getElementSize = (element: HTMLDivElement | null, dimension: PanelDimension) =>\n element?.getBoundingClientRect()[dimension] ?? 0;\n\nexport const ResizableSplitLayout = (props: ResizableSplitLayoutProps) => {\n const {\n resizablePanel,\n contentPanel,\n resizableSide = \"left\",\n defaultSizePx = 240,\n minSizePx = 200,\n maxSizePx,\n contentMinSizePx = 0,\n collapsed: controlledCollapsed,\n collapsible = true,\n resizeLabel = \"Resize panel\",\n separator = \"gap\",\n layout = \"split\",\n onSizeChange,\n onCollapsedChange,\n ...rest\n } = props;\n const axis = getResizableSplitAxis(resizableSide);\n const styles = useSlotRecipe({ key: \"resizableSplitLayout\" })({\n orientation: axis.dimension === \"width\" ? \"horizontal\" : \"vertical\",\n layout,\n });\n const id = useId();\n const rootRef = useRef<HTMLDivElement>(null);\n const resizablePanelRef = useRef<HTMLDivElement>(null);\n const contentPanelRef = useRef<HTMLDivElement>(null);\n const cleanupDragRef = useRef<() => void>(() => undefined);\n const rootSize = useResizableSplitRootSize(rootRef, axis.dimension);\n const lastSizeRef = useRef(defaultSizePx);\n const [panelSize, setPanelSize] = useState(defaultSizePx);\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [dragging, setDragging] = useState(false);\n const collapsed = controlledCollapsed ?? internalCollapsed;\n const bounds = resolveResizableBounds({\n rootSize,\n fallbackRootSize: FALLBACK_ROOT_SIZE[axis.dimension],\n minSize: minSizePx,\n maxSize: maxSizePx,\n contentMinSize: contentMinSizePx,\n });\n const resolvedPanelSize = collapsed ? 0 : clamp(panelSize, bounds.minSize, bounds.maxSize);\n const contentPanelId = `${id}-content`;\n const resizablePanelId = `${id}-resizable`;\n const sizeStyle = { ...rest.style, \"--split-size\": `${resolvedPanelSize}px` };\n\n useEffect(() => {\n lastSizeRef.current = defaultSizePx;\n setPanelSize(defaultSizePx);\n }, [defaultSizePx]);\n\n useEffect(() => () => cleanupDragRef.current(), []);\n\n const applyPanelSize = (size: number) => {\n rootRef.current?.style.setProperty(\"--split-size\", `${size}px`);\n };\n\n const commitPanelSize = (size: number) => {\n const nextBounds = resolveResizableBounds({\n rootSize: getElementSize(rootRef.current, axis.dimension),\n fallbackRootSize: FALLBACK_ROOT_SIZE[axis.dimension],\n minSize: minSizePx,\n maxSize: maxSizePx,\n contentMinSize: contentMinSizePx,\n });\n const nextSize = clamp(size, nextBounds.minSize, nextBounds.maxSize);\n\n lastSizeRef.current = nextSize;\n setPanelSize(nextSize);\n applyPanelSize(nextSize);\n onSizeChange?.(nextSize);\n };\n\n const setCollapsed = (nextCollapsed: boolean) => {\n if (controlledCollapsed === undefined) {\n setInternalCollapsed(nextCollapsed);\n }\n\n onCollapsedChange?.(nextCollapsed);\n };\n\n const handleResizeStart = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0 || (collapsed && !collapsible)) return;\n\n event.preventDefault();\n cleanupDragRef.current();\n\n const resizeHandle = event.currentTarget;\n const bounds = resolveResizableBounds({\n rootSize: getElementSize(rootRef.current, axis.dimension),\n fallbackRootSize: FALLBACK_ROOT_SIZE[axis.dimension],\n minSize: minSizePx,\n maxSize: maxSizePx,\n contentMinSize: contentMinSizePx,\n });\n const startPointer = event[axis.pointerCoordinate];\n const startSize = collapsed ? 0 : getElementSize(resizablePanelRef.current, axis.dimension) || lastSizeRef.current;\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n let nextSize = startSize === 0 ? 0 : clamp(startSize, bounds.minSize, bounds.maxSize);\n let nextCollapsed = collapsed;\n let animationFrame = 0;\n\n const setDraggingPanelState = (value: string) => {\n if (resizablePanelRef.current) resizablePanelRef.current.style.pointerEvents = value;\n if (contentPanelRef.current) contentPanelRef.current.style.pointerEvents = value;\n };\n\n const schedulePanelSize = () => {\n if (animationFrame) return;\n\n animationFrame = window.requestAnimationFrame(() => {\n animationFrame = 0;\n applyPanelSize(nextSize);\n });\n };\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n const result = resolveDraggedPanelSize({\n side: resizableSide,\n startSize,\n pointerDelta: moveEvent[axis.pointerCoordinate] - startPointer,\n minSize: bounds.minSize,\n maxSize: bounds.maxSize,\n collapsible,\n });\n nextCollapsed = result.collapsed;\n nextSize = result.size;\n schedulePanelSize();\n };\n\n const cleanup = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", cleanup);\n window.removeEventListener(\"pointercancel\", cleanup);\n window.removeEventListener(\"blur\", cleanup);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n if (resizeHandle.hasPointerCapture(event.pointerId)) resizeHandle.releasePointerCapture(event.pointerId);\n setDraggingPanelState(\"\");\n setDragging(false);\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n animationFrame = 0;\n }\n cleanupDragRef.current = () => undefined;\n if (nextCollapsed) {\n applyPanelSize(0);\n setCollapsed(true);\n } else {\n setCollapsed(false);\n commitPanelSize(nextSize);\n }\n };\n\n cleanupDragRef.current = cleanup;\n resizeHandle.setPointerCapture(event.pointerId);\n document.body.style.cursor = axis.cursor;\n document.body.style.userSelect = \"none\";\n setDraggingPanelState(\"none\");\n setDragging(true);\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", cleanup, { once: true });\n window.addEventListener(\"pointercancel\", cleanup, { once: true });\n window.addEventListener(\"blur\", cleanup, { once: true });\n };\n\n const handleCollapse = () => {\n if (collapsible) setCollapsed(true);\n };\n\n const handleResizeKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n const negativeDirectionKey = axis.dimension === \"width\" ? \"ArrowLeft\" : \"ArrowUp\";\n const positiveDirectionKey = axis.dimension === \"width\" ? \"ArrowRight\" : \"ArrowDown\";\n const size = lastSizeRef.current;\n\n if (\n collapsed &&\n (event.key === negativeDirectionKey || event.key === positiveDirectionKey || event.key === \"End\")\n ) {\n event.preventDefault();\n setCollapsed(false);\n commitPanelSize(size);\n } else if (event.key === negativeDirectionKey) {\n event.preventDefault();\n commitPanelSize(size - KEYBOARD_RESIZE_STEP * axis.deltaDirection);\n } else if (event.key === positiveDirectionKey) {\n event.preventDefault();\n commitPanelSize(size + KEYBOARD_RESIZE_STEP * axis.deltaDirection);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n if (collapsible) setCollapsed(true);\n else commitPanelSize(bounds.minSize);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commitPanelSize(bounds.maxSize);\n }\n };\n\n return (\n <Flex ref={rootRef} css={styles.root} {...rest} style={sizeStyle}>\n <ResizableSplitPanels\n styles={styles}\n axis={axis}\n bounds={bounds}\n collapsed={collapsed}\n collapsible={collapsible}\n contentPanel={contentPanel}\n contentPanelId={contentPanelId}\n contentPanelRef={contentPanelRef}\n resizablePanel={resizablePanel}\n resizablePanelId={resizablePanelId}\n resizablePanelRef={resizablePanelRef}\n dragging={dragging}\n resizeLabel={resizeLabel}\n resolvedPanelSize={resolvedPanelSize}\n separator={separator}\n onCollapse={handleCollapse}\n onResizeKeyDown={handleResizeKeyDown}\n onResizeStart={handleResizeStart}\n />\n </Flex>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\n\ninterface TreeListBackgroundProps {\n actions: ResourceContextAction[];\n children: ReactNode;\n}\n\n// The menu target stays behind the rows so item context menus keep priority.\nexport const TreeListBackground = (props: TreeListBackgroundProps) => {\n const { actions, children } = props;\n\n return (\n <Box position=\"relative\" flex=\"1 0 auto\" minH=\"full\" w=\"full\" minW=\"0\" maxW=\"full\">\n <ResourceContextMenu actions={actions} closeOnSelect={false}>\n <Box position=\"absolute\" inset=\"0\" zIndex={0} aria-hidden data-tree-list-background=\"true\" />\n </ResourceContextMenu>\n <Box position=\"relative\" zIndex={1} w=\"full\" minW=\"0\" maxW=\"full\">\n {children}\n </Box>\n </Box>\n );\n};\n","import type { TreeListNode, TreeListSection } from \"./tree-list.types\";\n\nexport const isInList = (id: string, values: string[]) => values.includes(id);\n\nexport const isActiveNode = (id: string, activeNodeId?: string | string[] | null) =>\n Array.isArray(activeNodeId) ? activeNodeId.includes(id) : activeNodeId === id;\n\nexport const isNavigableNode = (node: TreeListNode) => node.isNavigable || node.navigationIntent !== undefined;\n\nexport const getNodeChildren = (node: TreeListNode) => (node.children as TreeListNode[] | undefined) ?? [];\n\nexport const hasExpandableChildren = (node: TreeListNode) =>\n getNodeChildren(node).length > 0 || node.isContainer === true;\n\nexport type VirtualRow =\n | {\n kind: \"section-header\";\n key: string;\n sectionId: string;\n section: TreeListSection;\n collapsible: boolean;\n expanded: boolean;\n }\n | { kind: \"node\"; key: string; sectionId: string; node: TreeListNode; level: number; parentNodeId?: string }\n | { kind: \"section-empty\"; key: string; sectionId: string; emptyState: TreeListSection[\"emptyState\"] };\n\nexport type VirtualNodeRow = Extract<VirtualRow, { kind: \"node\" }>;\nexport type VirtualSectionHeaderRow = Extract<VirtualRow, { kind: \"section-header\" }>;\n\n/** Rows the keyboard can land on: enabled nodes and collapsible section headers. */\nexport type FocusableRow = VirtualNodeRow | VirtualSectionHeaderRow;\n\nconst appendVisibleNodeRows = (input: {\n rows: VirtualRow[];\n sectionId: string;\n nodes: TreeListNode[];\n expandedNodeIds: string[];\n level: number;\n parentNodeId?: string;\n}) => {\n const { rows, sectionId, nodes, expandedNodeIds, level, parentNodeId } = input;\n\n for (const node of nodes) {\n rows.push({ kind: \"node\", key: `${sectionId}:${node.id}`, sectionId, node, level, parentNodeId });\n\n const children = getNodeChildren(node);\n if (children.length === 0 || !isInList(node.id, expandedNodeIds)) continue;\n\n appendVisibleNodeRows({\n rows,\n sectionId,\n nodes: children,\n expandedNodeIds,\n level: level + 1,\n parentNodeId: node.id,\n });\n }\n};\n\nexport const buildVirtualRows = (\n sections: TreeListSection[],\n expandedSectionIds: string[],\n expandedNodeIds: string[],\n) => {\n const rows: VirtualRow[] = [];\n for (const section of sections) {\n const collapsible = section.collapsible !== false && section.label !== undefined;\n const expanded = collapsible ? isInList(section.id, expandedSectionIds) : true;\n if (section.label) {\n rows.push({\n kind: \"section-header\",\n key: `header:${section.id}`,\n sectionId: section.id,\n section,\n collapsible,\n expanded,\n });\n }\n if (!expanded) continue;\n if (section.nodes.length === 0) {\n if (section.emptyState) {\n rows.push({\n kind: \"section-empty\",\n key: `empty:${section.id}`,\n sectionId: section.id,\n emptyState: section.emptyState,\n });\n }\n continue;\n }\n appendVisibleNodeRows({ rows, sectionId: section.id, nodes: section.nodes, expandedNodeIds, level: 0 });\n }\n return rows;\n};\n\n/** Stable id used to track keyboard focus across renders. */\nexport const getRowFocusId = (row: FocusableRow) => (row.kind === \"node\" ? row.node.id : row.key);\n\nexport const isFocusableRow = (row: VirtualRow): row is FocusableRow => {\n if (row.kind === \"node\") return row.node.disabled !== true;\n return row.kind === \"section-header\" && row.collapsible;\n};\n\nexport const getFocusableRows = (rows: VirtualRow[]) => rows.filter(isFocusableRow);\n\nexport const resolveTreeListFocusRowId = (\n focusedRowId: string | undefined,\n activeNodeId: string | string[] | null | undefined,\n rows: VirtualRow[],\n) => {\n const focusableRows = getFocusableRows(rows);\n const focusableIds = new Set(focusableRows.map(getRowFocusId));\n if (focusedRowId && focusableIds.has(focusedRowId)) return focusedRowId;\n\n const activeIds = Array.isArray(activeNodeId) ? activeNodeId : activeNodeId ? [activeNodeId] : [];\n const activeId = activeIds.find((id) => focusableIds.has(id));\n if (activeId) return activeId;\n\n const firstRow = focusableRows[0];\n return firstRow ? getRowFocusId(firstRow) : undefined;\n};\n\nconst resolveSectionHeaderNavigation = (input: {\n row: VirtualSectionHeaderRow;\n focusableRows: FocusableRow[];\n currentIndex: number;\n key: string;\n}) => {\n const { row, focusableRows, currentIndex, key } = input;\n\n if (key === \"Enter\" || key === \" \") return { type: \"toggle-section\" as const, sectionId: row.sectionId };\n\n if (key === \"ArrowRight\") {\n if (!row.expanded) return { type: \"toggle-section\" as const, sectionId: row.sectionId };\n\n const nextRow = focusableRows[currentIndex + 1];\n if (nextRow?.kind === \"node\" && nextRow.sectionId === row.sectionId) {\n return { type: \"focus\" as const, rowId: nextRow.node.id };\n }\n return null;\n }\n\n if (key === \"ArrowLeft\" && row.expanded) return { type: \"toggle-section\" as const, sectionId: row.sectionId };\n\n return null;\n};\n\nconst resolveNodeNavigation = (input: {\n row: VirtualNodeRow;\n focusableRows: FocusableRow[];\n currentIndex: number;\n expandedNodeIds: string[];\n key: string;\n}) => {\n const { row, focusableRows, currentIndex, expandedNodeIds, key } = input;\n const expanded = isInList(row.node.id, expandedNodeIds);\n const expandable = hasExpandableChildren(row.node);\n\n if (key === \"ArrowRight\") {\n if (!expandable) return null;\n if (!expanded) return { type: \"toggle-node\" as const, nodeId: row.node.id };\n\n const nextRow = focusableRows[currentIndex + 1];\n if (nextRow?.kind === \"node\" && nextRow.parentNodeId === row.node.id) {\n return { type: \"focus\" as const, rowId: nextRow.node.id };\n }\n return null;\n }\n\n if (key === \"ArrowLeft\") {\n if (expandable && expanded) return { type: \"toggle-node\" as const, nodeId: row.node.id };\n if (row.parentNodeId) return { type: \"focus\" as const, rowId: row.parentNodeId };\n }\n\n return null;\n};\n\nexport const resolveTreeListKeyboardNavigation = (input: {\n rows: VirtualRow[];\n focusedRowId: string | undefined;\n activeNodeId?: string | string[] | null;\n expandedNodeIds: string[];\n key: string;\n}) => {\n const { rows, focusedRowId, activeNodeId, expandedNodeIds, key } = input;\n const focusableRows = getFocusableRows(rows);\n if (focusableRows.length === 0) return null;\n\n const resolvedFocusRowId = resolveTreeListFocusRowId(focusedRowId, activeNodeId, rows);\n const currentIndex = Math.max(\n 0,\n focusableRows.findIndex((row) => getRowFocusId(row) === resolvedFocusRowId),\n );\n const currentRow = focusableRows[currentIndex];\n if (!currentRow) return null;\n\n const focusByIndex = (index: number) => {\n const clamped = Math.min(Math.max(index, 0), focusableRows.length - 1);\n return { type: \"focus\" as const, rowId: getRowFocusId(focusableRows[clamped]!) };\n };\n\n if (key === \"ArrowDown\") return focusByIndex(currentIndex + 1);\n if (key === \"ArrowUp\") return focusByIndex(currentIndex - 1);\n if (key === \"Home\") return focusByIndex(0);\n if (key === \"End\") return focusByIndex(focusableRows.length - 1);\n\n if (currentRow.kind === \"section-header\") {\n return resolveSectionHeaderNavigation({ row: currentRow, focusableRows, currentIndex, key });\n }\n\n return resolveNodeNavigation({ row: currentRow, focusableRows, currentIndex, expandedNodeIds, key });\n};\n","const TREE_NODE_DATA_TYPE = \"application/x-pstdio-tree-node\";\n\ninterface TreeNodeDataTransfer {\n getData(type: string): string;\n setData(type: string, value: string): void;\n}\n\nexport const writeDraggedTreeNodeId = (dataTransfer: TreeNodeDataTransfer, nodeId: string) => {\n dataTransfer.setData(TREE_NODE_DATA_TYPE, nodeId);\n};\n\nexport const readDraggedTreeNodeId = (dataTransfer: TreeNodeDataTransfer) =>\n dataTransfer.getData(TREE_NODE_DATA_TYPE) || undefined;\n","import { Box } from \"@chakra-ui/react\";\nimport type { DragEvent as ReactDragEvent, ReactNode } from \"react\";\nimport { readDraggedTreeNodeId } from \"./tree-list-drag\";\n\ninterface TreeListMoveSurfaceProps {\n children: ReactNode;\n onMoveNode?: (sourceNodeId: string, targetNodeId?: string) => void;\n}\n\nexport const TreeListMoveSurface = (props: TreeListMoveSurfaceProps) => {\n const { children, onMoveNode } = props;\n\n const handleDragOver = (event: ReactDragEvent<HTMLElement>) => {\n if (!onMoveNode) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n };\n\n const handleDrop = (event: ReactDragEvent<HTMLElement>) => {\n if (!onMoveNode) return;\n event.preventDefault();\n const sourceNodeId = readDraggedTreeNodeId(event.dataTransfer);\n if (sourceNodeId) onMoveNode(sourceNodeId);\n };\n\n return (\n <Box\n p=\"xs\"\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n minH=\"full\"\n flex=\"1 0 auto\"\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n {children}\n </Box>\n );\n};\n","import { Box, Flex, Input } from \"@chakra-ui/react\";\nimport { type ReactNode, useRef, useState } from \"react\";\nimport type { TreeListInlineInput } from \"./tree-list.types\";\n\ninterface TreeListInlineInputRowProps {\n input: TreeListInlineInput;\n icon?: ReactNode;\n level: number;\n}\n\nconst paddingLeft = (level: number) => {\n if (level <= 0) return \"sm\";\n return `calc(var(--chakra-spacing-1) + ${level} * 12px)`;\n};\n\nexport const TreeListInlineInputRow = (props: TreeListInlineInputRowProps) => {\n const { input, icon, level } = props;\n const [value, setValue] = useState(input.defaultValue ?? \"\");\n const [error, setError] = useState<string>();\n const inputRef = useRef<HTMLInputElement>(null);\n const submittingRef = useRef(false);\n\n const commit = async () => {\n if (submittingRef.current) return;\n submittingRef.current = true;\n setError(undefined);\n try {\n await input.onCommit(value.trim());\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : \"Could not create file.\");\n queueMicrotask(() => inputRef.current?.focus());\n } finally {\n submittingRef.current = false;\n }\n };\n\n return (\n <Flex\n h=\"1.75rem\"\n w=\"full\"\n minW=\"0\"\n alignItems=\"center\"\n gap=\"1\"\n pr=\"sm\"\n pl={paddingLeft(level)}\n onMouseDown={(event) => event.stopPropagation()}\n >\n {icon ? (\n <Box\n boxSize=\"16px\"\n color=\"fg.muted\"\n flexShrink={0}\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ \"& > svg\": { width: \"16px\", height: \"16px\" } }}\n >\n {icon}\n </Box>\n ) : null}\n <Input\n ref={inputRef}\n autoFocus\n size=\"xs\"\n value={value}\n aria-label={input.ariaLabel}\n aria-invalid={Boolean(error) || undefined}\n placeholder={input.placeholder}\n title={error}\n onChange={(event) => setValue(event.currentTarget.value)}\n onBlur={() => {\n if (!submittingRef.current) input.onCancel?.();\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n if (event.key === \"Enter\") {\n event.preventDefault();\n void commit();\n }\n if (event.key === \"Escape\" && !submittingRef.current) {\n event.preventDefault();\n input.onCancel?.();\n }\n }}\n />\n </Flex>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { Stack } from \"@chakra-ui/react\";\nimport type { FocusEventHandler, DragEvent as ReactDragEvent } from \"react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TreeListLinkComponent, TreeListNavigateEvent, TreeListNode } from \"./tree-list.types\";\nimport { readDraggedTreeNodeId, writeDraggedTreeNodeId } from \"./tree-list-drag\";\nimport { TreeListInlineInputRow } from \"./tree-list-inline-input\";\nimport { hasExpandableChildren, isActiveNode, isInList, isNavigableNode } from \"./tree-list-model\";\n\ntype TreeListRowVariant = \"compact\" | \"tree\";\n\ninterface TreeListNodeRowProps {\n sectionId: string;\n node: TreeListNode;\n level: number;\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n tabIndex?: number;\n onFocus?: FocusEventHandler<HTMLElement>;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleNode?: (nodeId: string) => void;\n onMoveNode?: (sourceNodeId: string, targetNodeId?: string) => void;\n}\n\nexport const TreeListNodeRow = (props: TreeListNodeRowProps) => {\n const {\n sectionId,\n node,\n level,\n expandedNodeIds,\n activeNodeId,\n rowVariant,\n nodeGap,\n linkComponent: LinkComponent,\n tabIndex,\n onFocus,\n onNavigate,\n onToggleNode,\n onMoveNode,\n } = props;\n\n if (node.inlineInput) {\n return <TreeListInlineInputRow input={node.inlineInput} icon={node.icon} level={level} />;\n }\n\n const hasChildren = hasExpandableChildren(node);\n const expanded = hasChildren && isInList(node.id, expandedNodeIds);\n const isActive = isActiveNode(node.id, activeNodeId);\n const isDisabled = node.disabled === true;\n const isNavigable = isNavigableNode(node);\n const canLink = Boolean(LinkComponent && node.href && isNavigable && !hasChildren && !isDisabled);\n\n const handleActivate = () => {\n if (isDisabled) return;\n if (hasChildren) {\n onToggleNode?.(node.id);\n return;\n }\n if (isNavigable && onNavigate) {\n onNavigate({ sectionId, nodeId: node.id, node, intent: node.navigationIntent });\n return;\n }\n node.onActivate?.();\n };\n\n const handleDragStart = (event: ReactDragEvent<HTMLElement>) => {\n writeDraggedTreeNodeId(event.dataTransfer, node.id);\n event.dataTransfer.effectAllowed = \"move\";\n };\n\n const handleDragOver = (event: ReactDragEvent<HTMLElement>) => {\n if (!onMoveNode) return;\n event.stopPropagation();\n if (!node.canDrop) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n };\n\n const handleDrop = (event: ReactDragEvent<HTMLElement>) => {\n if (!onMoveNode) return;\n event.stopPropagation();\n if (!node.canDrop) return;\n event.preventDefault();\n const sourceNodeId = readDraggedTreeNodeId(event.dataTransfer);\n if (sourceNodeId && sourceNodeId !== node.id) onMoveNode(sourceNodeId, node.id);\n };\n\n const rowItem: TreeListNode = {\n ...node,\n actions: node.actions?.map((action) => ({\n ...action,\n onAction: action.onAction\n ? (context) => action.onAction?.({ sectionId, nodeId: node.id, ...context })\n : undefined,\n })),\n };\n const { inlineInput: _inlineInput, rowVariant: nodeRowVariant, ...listRowItem } = rowItem;\n\n const rowProps = {\n ...listRowItem,\n depth: level,\n variant: nodeRowVariant ?? rowVariant,\n isSelected: isActive,\n isExpanded: expanded,\n showExpandToggle: hasChildren,\n tabIndex,\n \"data-tree-list-focus-id\": node.id,\n \"aria-level\": level + 1,\n \"aria-expanded\": hasChildren ? expanded : undefined,\n \"data-tree-list-node-id\": node.id,\n onFocus,\n onActivate: handleActivate,\n onToggleExpand: () => onToggleNode?.(node.id),\n };\n\n const row =\n canLink && LinkComponent && node.href ? (\n <LinkComponent to={node.href}>\n <ListRow {...rowProps} asChild />\n </LinkComponent>\n ) : (\n <ListRow {...rowProps} />\n );\n\n return (\n <Stack\n gap={nodeGap}\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n draggable={Boolean(onMoveNode && node.canDrag)}\n onDragStart={node.canDrag ? handleDragStart : undefined}\n onDragOver={onMoveNode ? handleDragOver : undefined}\n onDrop={onMoveNode ? handleDrop : undefined}\n >\n {row}\n </Stack>\n );\n};\n","import { Box, HStack, IconButton, Menu, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { FocusEventHandler, MouseEvent as ReactMouseEvent } from \"react\";\nimport { SearchableActionMenu } from \"../list-row/searchable-action-menu\";\nimport type { TreeListAction, TreeListSection } from \"./tree-list.types\";\n\ninterface TreeListSectionActionsProps {\n sectionId: string;\n actions: TreeListAction[];\n}\n\nconst TreeListSectionActions = (props: TreeListSectionActionsProps) => {\n const { sectionId, actions } = props;\n if (actions.length === 0) return null;\n\n return (\n <HStack\n gap=\"0\"\n opacity=\"0\"\n pointerEvents=\"none\"\n _groupHover={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: \"1\", pointerEvents: \"auto\" }}\n transition=\"opacity 120ms ease\"\n onClick={(event) => event.stopPropagation()}\n >\n {actions.map((action) => {\n if (action.menuItems && action.menuItems.length >= 8) {\n return <SearchableActionMenu key={action.id} action={action} />;\n }\n if (action.menuItems && action.menuItems.length > 0) {\n return (\n <Menu.Root key={action.id}>\n <Menu.Trigger asChild>\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\">\n {action.menuItems.map((item) => (\n <Menu.Item key={item.id} value={item.id} disabled={item.disabled} onClick={() => item.onAction?.()}>\n {item.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n }\n return (\n <IconButton\n key={action.id}\n variant=\"ghost\"\n size=\"2xs\"\n aria-label={action.label}\n onClick={(event) => {\n event.stopPropagation();\n action.onAction?.({ sectionId });\n }}\n >\n {action.icon}\n </IconButton>\n );\n })}\n </HStack>\n );\n};\n\ninterface TreeListSectionHeaderProps {\n section: TreeListSection;\n collapsible: boolean;\n expanded: boolean;\n focusId: string;\n tabIndex: number;\n onFocus: FocusEventHandler<HTMLElement>;\n onToggle: () => void;\n onContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;\n}\n\nexport const TreeListSectionHeader = (props: TreeListSectionHeaderProps) => {\n const { section, collapsible, expanded, focusId, tabIndex, onFocus, onToggle, onContextMenu } = props;\n\n return (\n <HStack\n className=\"group\"\n justify=\"space-between\"\n align=\"center\"\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n px=\"sm\"\n py=\"2xs\"\n height=\"7\"\n cursor={collapsible ? \"pointer\" : \"default\"}\n tabIndex={collapsible ? tabIndex : undefined}\n data-tree-list-focus-id={collapsible ? focusId : undefined}\n aria-expanded={collapsible ? expanded : undefined}\n _hover={collapsible ? { bg: \"bg.hover\" } : undefined}\n _focusVisible={collapsible ? { bg: \"bg.hover\" } : undefined}\n onFocus={collapsible ? onFocus : undefined}\n onClick={collapsible ? onToggle : undefined}\n onContextMenu={\n onContextMenu\n ? (event) => {\n event.preventDefault();\n onContextMenu(event, section.id);\n }\n : undefined\n }\n >\n <HStack gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/XS\" textTransform=\"uppercase\" color=\"fg.muted\" letterSpacing=\"0.08em\" truncate>\n {section.label}\n </Text>\n {collapsible ? (\n <Box color=\"fg.muted\" flexShrink={0}>\n <ChevronRight\n size={14}\n style={{ transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n ) : null}\n </HStack>\n <TreeListSectionActions sectionId={section.id} actions={section.actions ?? []} />\n </HStack>\n );\n};\n","import type { TreeListSection } from \"./tree-list.types\";\n\nconst SECTION_PREFIX = \"section:\";\n\nexport const toSectionDragId = (sectionId: string) => `${SECTION_PREFIX}${sectionId}`;\nexport const isSectionDragId = (id: string) => id.startsWith(SECTION_PREFIX);\nexport const fromSectionDragId = (id: string) => id.slice(SECTION_PREFIX.length);\n\nconst arrayMoveInPlace = <T>(items: T[], from: number, to: number) => {\n const next = items.slice();\n const [removed] = next.splice(from, 1);\n next.splice(to, 0, removed);\n return next;\n};\n\nexport type ReorderResult =\n | { kind: \"section\"; nextSectionIds: string[] }\n | { kind: \"node\"; orders: Record<string, string[]> };\n\nexport interface TreeListMoveEndpoint {\n kind: \"section\" | \"node\";\n sectionId: string;\n id: string;\n moveScope?: string;\n}\n\nexport interface TreeListMove {\n source: TreeListMoveEndpoint;\n destination: TreeListMoveEndpoint;\n}\n\nexport type TreeListMovePolicy = (move: TreeListMove) => boolean;\n\nconst findNodeLocation = (sections: TreeListSection[], nodeId: string) => {\n for (const section of sections) {\n const index = section.nodes.findIndex((node) => node.id === nodeId);\n if (index >= 0) return { section, index, node: section.nodes[index]! };\n }\n return undefined;\n};\n\nconst permitsMove = (move: TreeListMove, canMove: TreeListMovePolicy | undefined) => canMove?.(move) ?? true;\n\nexport const canDropOnTreeListTarget = (\n sections: TreeListSection[],\n activeId: string,\n overId: string,\n canMove?: TreeListMovePolicy,\n) => {\n if (activeId === overId) return true;\n if (isSectionDragId(activeId)) {\n if (!isSectionDragId(overId)) return false;\n const source = sections.find((section) => section.id === fromSectionDragId(activeId));\n const destination = sections.find((section) => section.id === fromSectionDragId(overId));\n if (!source || !destination || source.canReorder === false || destination.canReorder === false) return false;\n return permitsMove(\n {\n source: { kind: \"section\", sectionId: source.id, id: source.id, moveScope: source.moveScope },\n destination: {\n kind: \"section\",\n sectionId: destination.id,\n id: destination.id,\n moveScope: destination.moveScope,\n },\n },\n canMove,\n );\n }\n\n const source = findNodeLocation(sections, activeId);\n if (!source || source.node.canReorder === false) return false;\n const destinationSection = isSectionDragId(overId)\n ? sections.find((section) => section.id === fromSectionDragId(overId))\n : undefined;\n const destinationNode = destinationSection ? undefined : findNodeLocation(sections, overId);\n const section = destinationSection ?? destinationNode?.section;\n if (!section || section.canReorder === false || destinationNode?.node.canReorder === false) return false;\n return permitsMove(\n {\n source: {\n kind: \"node\",\n sectionId: source.section.id,\n id: source.node.id,\n moveScope: source.node.moveScope ?? source.section.moveScope,\n },\n destination: destinationNode\n ? {\n kind: \"node\",\n sectionId: section.id,\n id: destinationNode.node.id,\n moveScope: destinationNode.node.moveScope ?? section.moveScope,\n }\n : { kind: \"section\", sectionId: section.id, id: section.id, moveScope: section.moveScope },\n },\n canMove,\n );\n};\n\nconst computeSectionReorder = (\n sections: TreeListSection[],\n activeId: string,\n overId: string,\n canMove?: TreeListMovePolicy,\n): ReorderResult | null => {\n const activeSection = sections.find((section) => section.id === fromSectionDragId(activeId));\n const overSection = sections.find((section) => section.id === fromSectionDragId(overId));\n if (!activeSection || !overSection) return null;\n if (activeSection.canReorder === false || overSection.canReorder === false) return null;\n if (\n !permitsMove(\n {\n source: {\n kind: \"section\",\n sectionId: activeSection.id,\n id: activeSection.id,\n moveScope: activeSection.moveScope,\n },\n destination: {\n kind: \"section\",\n sectionId: overSection.id,\n id: overSection.id,\n moveScope: overSection.moveScope,\n },\n },\n canMove,\n )\n ) {\n return null;\n }\n const orderedIds = sections.map((section) => section.id);\n const oldIndex = orderedIds.indexOf(activeSection.id);\n const newIndex = orderedIds.indexOf(overSection.id);\n if (oldIndex === newIndex) return null;\n return { kind: \"section\", nextSectionIds: arrayMoveInPlace(orderedIds, oldIndex, newIndex) };\n};\n\nconst computeNodeReorder = (\n sections: TreeListSection[],\n activeId: string,\n overId: string,\n canMove?: TreeListMovePolicy,\n): ReorderResult | null => {\n const source = findNodeLocation(sections, activeId);\n if (!source || source.node.canReorder === false) return null;\n const overSection = isSectionDragId(overId)\n ? sections.find((section) => section.id === fromSectionDragId(overId))\n : undefined;\n const overNode = overSection ? undefined : findNodeLocation(sections, overId);\n const destinationSection = overSection ?? overNode?.section;\n if (!destinationSection || destinationSection.canReorder === false || overNode?.node.canReorder === false)\n return null;\n\n const destination: TreeListMoveEndpoint = overNode\n ? {\n kind: \"node\",\n sectionId: destinationSection.id,\n id: overNode.node.id,\n moveScope: overNode.node.moveScope ?? destinationSection.moveScope,\n }\n : {\n kind: \"section\",\n sectionId: destinationSection.id,\n id: destinationSection.id,\n moveScope: destinationSection.moveScope,\n };\n if (\n !permitsMove(\n {\n source: {\n kind: \"node\",\n sectionId: source.section.id,\n id: source.node.id,\n moveScope: source.node.moveScope ?? source.section.moveScope,\n },\n destination,\n },\n canMove,\n )\n ) {\n return null;\n }\n\n const sourceIds = source.section.nodes.map((node) => node.id);\n if (source.section.id === destinationSection.id) {\n const newIndex = overNode ? overNode.index : sourceIds.length - 1;\n if (source.index === newIndex) return null;\n return { kind: \"node\", orders: { [source.section.id]: arrayMoveInPlace(sourceIds, source.index, newIndex) } };\n }\n\n const destinationIds = destinationSection.nodes.map((node) => node.id);\n const insertionIndex = overNode ? overNode.index : destinationIds.length;\n destinationIds.splice(insertionIndex, 0, source.node.id);\n return {\n kind: \"node\",\n orders: {\n [source.section.id]: sourceIds.filter((id) => id !== source.node.id),\n [destinationSection.id]: destinationIds,\n },\n };\n};\n\nexport const computeReorderResult = (\n sections: TreeListSection[],\n activeId: string,\n overId: string,\n canMove?: TreeListMovePolicy,\n): ReorderResult | null => {\n if (activeId === overId) return null;\n if (isSectionDragId(activeId)) {\n return isSectionDragId(overId) ? computeSectionReorder(sections, activeId, overId, canMove) : null;\n }\n return computeNodeReorder(sections, activeId, overId, canMove);\n};\n","import {\n type CollisionDetection,\n closestCenter,\n DndContext,\n type DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { createContext, type ReactNode } from \"react\";\nimport type { TreeListSection } from \"./tree-list.types\";\nimport type { TreeListMovePolicy } from \"./tree-list-reorder\";\nimport { canDropOnTreeListTarget, computeReorderResult, fromSectionDragId } from \"./tree-list-reorder\";\n\nexport const SharedTreeListDragContext = createContext(false);\n\ninterface TreeListDragProviderProps {\n sections: TreeListSection[];\n canMove?: TreeListMovePolicy;\n onReorderSections?: (nextSectionIds: string[], sourceSectionId: string, destinationSectionId: string) => void;\n onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;\n children: ReactNode;\n}\n\nexport const TreeListDragProvider = (props: TreeListDragProviderProps) => {\n const { sections, canMove, onReorderSections, onReorderNodes, children } = props;\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 4 } }));\n const collisionDetection: CollisionDetection = (input) =>\n closestCenter(input).filter((collision) =>\n canDropOnTreeListTarget(sections, String(input.active.id), String(collision.id), canMove),\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n if (!event.over) return;\n const activeId = String(event.active.id);\n const overId = String(event.over.id);\n const result = computeReorderResult(sections, activeId, overId, canMove);\n if (!result) return;\n if (result.kind === \"section\") {\n onReorderSections?.(result.nextSectionIds, fromSectionDragId(activeId), fromSectionDragId(overId));\n return;\n }\n for (const [sectionId, nextNodeIds] of Object.entries(result.orders)) {\n onReorderNodes?.(sectionId, nextNodeIds);\n }\n };\n\n return (\n <DndContext sensors={sensors} collisionDetection={collisionDetection} onDragEnd={handleDragEnd}>\n <SharedTreeListDragContext.Provider value>{children}</SharedTreeListDragContext.Provider>\n </DndContext>\n );\n};\n","import { Box, Stack, type StackProps } from \"@chakra-ui/react\";\nimport {\n type CollisionDetection,\n closestCenter,\n DndContext,\n type DragEndEvent,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport { SortableContext, useSortable, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { type MouseEvent as ReactMouseEvent, useContext } from \"react\";\nimport type { TreeListLinkComponent, TreeListNavigateEvent, TreeListNode, TreeListSection } from \"./tree-list.types\";\nimport { SharedTreeListDragContext } from \"./tree-list-drag-provider\";\nimport { buildVirtualRows, type VirtualRow } from \"./tree-list-model\";\nimport { TreeListNodeRow } from \"./tree-list-node-row\";\nimport {\n canDropOnTreeListTarget,\n computeReorderResult,\n type TreeListMovePolicy,\n toSectionDragId,\n} from \"./tree-list-reorder\";\nimport { TreeListSectionHeader } from \"./tree-list-section-header\";\n\ntype TreeListRowVariant = \"compact\" | \"tree\";\n\ninterface SortableHostProps {\n id: string;\n disabled?: boolean;\n children: (input: {\n setNodeRef: (element: HTMLElement | null) => void;\n listeners: ReturnType<typeof useSortable>[\"listeners\"];\n style: { transform?: string; transition?: string; opacity?: number };\n }) => React.ReactNode;\n}\n\n// Render-prop sortable host. The child decides which DOM node receives the\n// drag listeners so we never paint a visible grip glyph — the row or section\n// header is itself the drag handle. Clicks pass through because the pointer\n// sensor activates only after the cursor moves 4px (configured below).\nconst SortableHost = (props: SortableHostProps) => {\n const sortable = useSortable({ id: props.id, disabled: props.disabled });\n const style = {\n transform: CSS.Transform.toString(sortable.transform),\n transition: sortable.transition,\n opacity: sortable.isDragging ? 0.5 : 1,\n };\n return (\n <>\n {props.children({\n setNodeRef: sortable.setNodeRef,\n listeners: sortable.listeners,\n style,\n })}\n </>\n );\n};\n\ninterface SortableSectionGroupProps {\n section: TreeListSection;\n sectionRows: VirtualRow[];\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleSection?: (sectionId: string) => void;\n onToggleNode?: (nodeId: string) => void;\n onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;\n}\n\nconst SortableSectionGroup = (props: SortableSectionGroupProps) => {\n const {\n section,\n sectionRows,\n expandedNodeIds,\n activeNodeId,\n rowVariant,\n nodeGap,\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n } = props;\n\n const headerRow = sectionRows.find((row) => row.kind === \"section-header\");\n const nodeRows = sectionRows.filter((row) => row.kind === \"node\");\n const topLevelNodeIds = nodeRows\n .filter((row) => row.kind === \"node\" && row.level === 0)\n .map((row) => (row.kind === \"node\" ? row.node.id : \"\"));\n\n return (\n <SortableHost id={toSectionDragId(section.id)} disabled={section.canReorder === false}>\n {({ setNodeRef, listeners, style }) => (\n <Box ref={setNodeRef} style={style} w=\"full\" minW=\"0\">\n {headerRow && headerRow.kind === \"section-header\" ? (\n // Drag listeners live on the header so dragging the section moves\n // it, while click-to-collapse still works via the activation\n // distance on the pointer sensor.\n <Box onPointerDownCapture={(event) => listeners?.onPointerDown?.(event)}>\n <TreeListSectionHeader\n section={headerRow.section}\n collapsible={headerRow.collapsible}\n expanded={headerRow.expanded}\n focusId={headerRow.key}\n tabIndex={-1}\n onFocus={() => {}}\n onToggle={() => onToggleSection?.(headerRow.sectionId)}\n onContextMenu={onSectionContextMenu}\n />\n </Box>\n ) : null}\n <SortableContext items={topLevelNodeIds} strategy={verticalListSortingStrategy}>\n <Stack gap={nodeGap} w=\"full\" minW=\"0\">\n {nodeRows.map((row) =>\n row.kind === \"node\" ? (\n <SortableOrPlainNodeRow\n key={row.key}\n row={row}\n expandedNodeIds={expandedNodeIds}\n activeNodeId={activeNodeId}\n rowVariant={rowVariant}\n nodeGap={nodeGap}\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n />\n ) : null,\n )}\n </Stack>\n </SortableContext>\n </Box>\n )}\n </SortableHost>\n );\n};\n\ninterface SortableOrPlainNodeRowProps {\n row: Extract<VirtualRow, { kind: \"node\" }>;\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleNode?: (nodeId: string) => void;\n}\n\nconst renderNodeRow = (input: {\n node: TreeListNode;\n sectionId: string;\n level: number;\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleNode?: (nodeId: string) => void;\n}) => (\n <TreeListNodeRow\n sectionId={input.sectionId}\n node={input.node}\n level={input.level}\n expandedNodeIds={input.expandedNodeIds}\n activeNodeId={input.activeNodeId}\n rowVariant={input.rowVariant}\n nodeGap={input.nodeGap}\n linkComponent={input.linkComponent}\n onNavigate={input.onNavigate}\n onToggleNode={input.onToggleNode}\n />\n);\n\n// Top-level nodes participate in their section's SortableContext and can move\n// between sections. Nested rows inherit position from their parent and render plain.\nconst SortableOrPlainNodeRow = (props: SortableOrPlainNodeRowProps) => {\n const { row, ...rest } = props;\n if (row.level > 0) {\n return renderNodeRow({ node: row.node, sectionId: row.sectionId, level: row.level, ...rest });\n }\n return (\n <SortableHost id={row.node.id} disabled={row.node.canReorder === false}>\n {({ setNodeRef, listeners, style }) => (\n <Box\n ref={setNodeRef}\n style={style}\n w=\"full\"\n minW=\"0\"\n onPointerDownCapture={(event) => listeners?.onPointerDown?.(event)}\n >\n {renderNodeRow({ node: row.node, sectionId: row.sectionId, level: row.level, ...rest })}\n </Box>\n )}\n </SortableHost>\n );\n};\n\ninterface TreeListSortableProps {\n sections: TreeListSection[];\n expandedSectionIds?: string[];\n expandedNodeIds?: string[];\n activeNodeId?: string | string[] | null;\n rowVariant?: TreeListRowVariant;\n sectionGap?: StackProps[\"gap\"];\n nodeGap?: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleSection?: (sectionId: string) => void;\n onToggleNode?: (nodeId: string) => void;\n onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;\n onReorderSections?: (nextSectionIds: string[]) => void;\n onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;\n canMove?: TreeListMovePolicy;\n}\n\nexport const TreeListSortable = (props: TreeListSortableProps) => {\n const {\n sections,\n expandedSectionIds = [],\n expandedNodeIds = [],\n activeNodeId,\n rowVariant = \"tree\",\n sectionGap = \"0\",\n nodeGap = \"0\",\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onReorderSections,\n onReorderNodes,\n canMove,\n } = props;\n\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 4 } }));\n const usesSharedDragContext = useContext(SharedTreeListDragContext);\n const collisionDetection: CollisionDetection = (input) =>\n closestCenter(input).filter((collision) =>\n canDropOnTreeListTarget(sections, String(input.active.id), String(collision.id), canMove),\n );\n\n const handleDragEnd = (event: DragEndEvent) => {\n if (!event.over) return;\n const result = computeReorderResult(sections, String(event.active.id), String(event.over.id), canMove);\n if (!result) return;\n if (result.kind === \"section\") {\n onReorderSections?.(result.nextSectionIds);\n } else {\n for (const [sectionId, nextNodeIds] of Object.entries(result.orders)) {\n onReorderNodes?.(sectionId, nextNodeIds);\n }\n }\n };\n\n const rows = buildVirtualRows(sections, expandedSectionIds, expandedNodeIds);\n\n const content = (\n <SortableContext\n items={sections.map((section) => toSectionDragId(section.id))}\n strategy={verticalListSortingStrategy}\n >\n <Stack gap={sectionGap} w=\"full\" minW=\"0\" maxW=\"full\">\n {sections.map((section) => (\n <SortableSectionGroup\n key={section.id}\n section={section}\n sectionRows={rows.filter((row) => row.sectionId === section.id)}\n expandedNodeIds={expandedNodeIds}\n activeNodeId={activeNodeId}\n rowVariant={rowVariant}\n nodeGap={nodeGap}\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={onToggleSection}\n onToggleNode={onToggleNode}\n onSectionContextMenu={onSectionContextMenu}\n />\n ))}\n </Stack>\n </SortableContext>\n );\n if (usesSharedDragContext) return content;\n return (\n <DndContext sensors={sensors} collisionDetection={collisionDetection} onDragEnd={handleDragEnd}>\n {content}\n </DndContext>\n );\n};\n","import { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport {\n getFocusableRows,\n getRowFocusId,\n isFocusableRow,\n resolveTreeListFocusRowId,\n resolveTreeListKeyboardNavigation,\n type VirtualRow,\n} from \"./tree-list-model\";\n\nconst findRowElement = (root: HTMLElement | null, focusId: string) => {\n if (!root) return null;\n const elements = root.querySelectorAll<HTMLElement>(\"[data-tree-list-focus-id]\");\n return [...elements].find((element) => element.dataset.treeListFocusId === focusId) ?? null;\n};\n\nconst findFocusedRowId = (root: HTMLElement | null, target: EventTarget | null) => {\n if (!root || !(target instanceof HTMLElement) || !root.contains(target)) return undefined;\n return target.closest<HTMLElement>(\"[data-tree-list-focus-id]\")?.dataset.treeListFocusId;\n};\n\nconst isTextEditingTarget = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) return false;\n if (target.isContentEditable) return true;\n return [\"INPUT\", \"TEXTAREA\", \"SELECT\"].includes(target.tagName);\n};\n\nconst getRowIndex = (rows: VirtualRow[], focusId: string) =>\n rows.findIndex((row) => isFocusableRow(row) && getRowFocusId(row) === focusId);\n\nexport const useTreeListKeyboardNavigation = (input: {\n rows: VirtualRow[];\n activeNodeId?: string | string[] | null;\n expandedNodeIds: string[];\n onToggleNode?: (nodeId: string) => void;\n onToggleSection?: (sectionId: string) => void;\n scrollToRow?: (index: number) => void;\n}) => {\n const { rows, activeNodeId, expandedNodeIds, onToggleNode, onToggleSection, scrollToRow } = input;\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [focusedRowId, setFocusedRowId] = useState<string>();\n const [pendingFocusRowId, setPendingFocusRowId] = useState<string>();\n const focusRowId = resolveTreeListFocusRowId(focusedRowId, activeNodeId, rows);\n const focusableRowIds = getFocusableRows(rows).map(getRowFocusId).join(\"\\0\");\n\n useEffect(() => {\n if (!focusedRowId) return;\n if (focusableRowIds.split(\"\\0\").includes(focusedRowId)) return;\n setFocusedRowId(undefined);\n }, [focusedRowId, focusableRowIds]);\n\n useEffect(() => {\n if (!pendingFocusRowId) return;\n const frame = requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const element = findRowElement(rootRef.current, pendingFocusRowId);\n if (!element) return;\n element.focus();\n setPendingFocusRowId(undefined);\n });\n });\n\n return () => cancelAnimationFrame(frame);\n }, [pendingFocusRowId]);\n\n const focusRow = (rowId: string) => {\n setFocusedRowId(rowId);\n const element = findRowElement(rootRef.current, rowId);\n if (element) {\n element.focus();\n return;\n }\n\n const rowIndex = getRowIndex(rows, rowId);\n if (rowIndex === -1) return;\n scrollToRow?.(rowIndex);\n setPendingFocusRowId(rowId);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n if (isTextEditingTarget(event.target)) return;\n\n const navigation = resolveTreeListKeyboardNavigation({\n rows,\n focusedRowId: findFocusedRowId(rootRef.current, event.target) ?? focusRowId,\n activeNodeId,\n expandedNodeIds,\n key: event.key,\n });\n if (!navigation) return;\n\n event.preventDefault();\n if (navigation.type === \"toggle-node\") {\n onToggleNode?.(navigation.nodeId);\n return;\n }\n if (navigation.type === \"toggle-section\") {\n onToggleSection?.(navigation.sectionId);\n return;\n }\n\n focusRow(navigation.rowId);\n };\n\n return {\n focusRowId,\n rootRef,\n handleKeyDown,\n onRowFocus: (rowId: string) => setFocusedRowId(rowId),\n };\n};\n","import { Box, Stack, type StackProps } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport type { MouseEvent as ReactMouseEvent, RefObject } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { TreeListLinkComponent, TreeListNavigateEvent, TreeListSection } from \"./tree-list.types\";\nimport { TreeListBackground } from \"./tree-list-background\";\nimport { buildVirtualRows, type VirtualRow } from \"./tree-list-model\";\nimport { TreeListMoveSurface } from \"./tree-list-move-surface\";\nimport { TreeListNodeRow } from \"./tree-list-node-row\";\nimport type { TreeListMovePolicy } from \"./tree-list-reorder\";\nimport { TreeListSectionHeader } from \"./tree-list-section-header\";\nimport { TreeListSortable } from \"./tree-list-sortable\";\nimport { useTreeListKeyboardNavigation } from \"./use-tree-list-keyboard-navigation\";\n\nexport { buildVirtualRows } from \"./tree-list-model\";\n\ntype TreeListRowVariant = \"compact\" | \"tree\";\n\n/** Sectioned hierarchical list for files, resources, navigation, and customizable sidenavs. */\ninterface TreeListProps {\n /** Ordered sections to render, each containing nested tree nodes. */\n sections: TreeListSection[];\n /** Controlled section ids that are currently expanded. */\n expandedSectionIds?: string[];\n /** Controlled node ids that are currently expanded. */\n expandedNodeIds?: string[];\n /** Active node id, or ids, used for selection styling. */\n activeNodeId?: string | string[] | null;\n /** Compact rows suit app navigation; tree rows suit file/resource hierarchies. */\n rowVariant?: TreeListRowVariant;\n sectionGap?: StackProps[\"gap\"];\n nodeGap?: StackProps[\"gap\"];\n /** Link renderer used when nodes provide `href`. */\n linkComponent?: TreeListLinkComponent;\n /** Called when a navigable node is activated. */\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleSection?: (sectionId: string) => void;\n onToggleNode?: (nodeId: string) => void;\n onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;\n /** Render large trees with virtual rows. Disable when using drag ordering. */\n virtualize?: boolean;\n scrollRef?: RefObject<HTMLDivElement | null>;\n // When true, sections and items render with drag handles. Virtualization is\n // bypassed (per the ADR) — customizable trees are typically small. Hosts\n // must supply onReorderSections / onReorderNodes to persist the new order.\n draggable?: boolean;\n onReorderSections?: (nextSectionIds: string[]) => void;\n onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;\n /** Decide whether a proposed customization move is valid. */\n canMove?: TreeListMovePolicy;\n /** Move a node onto another node, or onto the tree root when the target is omitted. */\n onMoveNode?: (sourceNodeId: string, targetNodeId?: string) => void;\n // When set, right-clicking the empty back area of the tree (everything not\n // covered by an item row) opens this menu. Item rows keep their own\n // right-click behaviour — the menu lives on a layer behind them.\n backgroundContextActions?: ResourceContextAction[];\n}\n\nconst VIRTUAL_ROW_ESTIMATE = 32;\nconst VIRTUAL_ROW_OVERSCAN = 4;\n\ninterface RenderVirtualRowInput {\n row: VirtualRow;\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n focusRowId?: string;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onRowFocus: (rowId: string) => void;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleSection?: (sectionId: string) => void;\n onToggleNode?: (nodeId: string) => void;\n onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;\n onMoveNode?: (sourceNodeId: string, targetNodeId?: string) => void;\n}\n\nconst renderVirtualRow = (input: RenderVirtualRowInput) => {\n const {\n row,\n expandedNodeIds,\n activeNodeId,\n focusRowId,\n rowVariant,\n nodeGap,\n linkComponent,\n onRowFocus,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onMoveNode,\n } = input;\n\n if (row.kind === \"section-header\") {\n return (\n <TreeListSectionHeader\n section={row.section}\n collapsible={row.collapsible}\n expanded={row.expanded}\n focusId={row.key}\n tabIndex={row.key === focusRowId ? 0 : -1}\n onFocus={() => onRowFocus(row.key)}\n onToggle={() => onToggleSection?.(row.sectionId)}\n onContextMenu={onSectionContextMenu}\n />\n );\n }\n\n if (row.kind === \"section-empty\") return row.emptyState ?? null;\n\n return (\n <TreeListNodeRow\n sectionId={row.sectionId}\n node={row.node}\n level={row.level}\n expandedNodeIds={expandedNodeIds}\n activeNodeId={activeNodeId}\n rowVariant={rowVariant}\n nodeGap={nodeGap}\n linkComponent={linkComponent}\n tabIndex={row.node.id === focusRowId ? 0 : -1}\n onFocus={() => onRowFocus(row.node.id)}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n onMoveNode={onMoveNode}\n />\n );\n};\n\ninterface VirtualTreeListProps extends TreeListProps {\n rows: VirtualRow[];\n scrollRef: RefObject<HTMLDivElement | null>;\n}\n\nconst VirtualTreeList = (props: VirtualTreeListProps) => {\n const {\n rows,\n expandedNodeIds = [],\n activeNodeId,\n rowVariant = \"tree\",\n nodeGap = \"0\",\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onMoveNode,\n scrollRef,\n } = props;\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => VIRTUAL_ROW_ESTIMATE,\n overscan: VIRTUAL_ROW_OVERSCAN,\n getItemKey: (index) => rows[index]?.key ?? index,\n });\n const keyboard = useTreeListKeyboardNavigation({\n rows,\n activeNodeId,\n expandedNodeIds,\n onToggleNode,\n onToggleSection,\n scrollToRow: (index) => virtualizer.scrollToIndex(index, { align: \"auto\" }),\n });\n\n return (\n <Box\n ref={keyboard.rootRef}\n role=\"listbox\"\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n position=\"relative\"\n style={{ height: virtualizer.getTotalSize() }}\n onKeyDown={keyboard.handleKeyDown}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const row = rows[virtualItem.index];\n if (!row) return null;\n\n return (\n <Box\n key={virtualItem.key}\n ref={virtualizer.measureElement}\n data-index={virtualItem.index}\n data-tree-list-row={row.kind}\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n w=\"full\"\n pb={virtualItem.index === rows.length - 1 ? \"0\" : nodeGap}\n style={{ transform: `translateY(${virtualItem.start}px)` }}\n >\n {renderVirtualRow({\n row,\n expandedNodeIds,\n activeNodeId,\n focusRowId: keyboard.focusRowId,\n rowVariant,\n nodeGap,\n linkComponent,\n onRowFocus: keyboard.onRowFocus,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onMoveNode,\n })}\n </Box>\n );\n })}\n </Box>\n );\n};\n\nconst StackTreeList = (props: TreeListProps) => {\n const {\n sections,\n expandedSectionIds = [],\n expandedNodeIds = [],\n activeNodeId,\n rowVariant = \"tree\",\n sectionGap = \"0\",\n nodeGap = \"0\",\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onMoveNode,\n virtualize,\n scrollRef,\n } = props;\n const rows = buildVirtualRows(sections, expandedSectionIds, expandedNodeIds);\n const keyboard = useTreeListKeyboardNavigation({\n rows,\n activeNodeId,\n expandedNodeIds,\n onToggleNode,\n onToggleSection,\n });\n\n if (virtualize && scrollRef) {\n return <VirtualTreeList {...props} rows={rows} scrollRef={scrollRef} />;\n }\n\n return (\n <Stack\n ref={keyboard.rootRef}\n role=\"listbox\"\n gap={sectionGap}\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n overflowX=\"hidden\"\n onKeyDown={keyboard.handleKeyDown}\n >\n {sections.map((section) => {\n const sectionRows = rows.filter((row) => row.sectionId === section.id);\n\n return (\n <Stack\n key={section.id}\n gap={nodeGap}\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n data-testid={`tree-list-section-${section.id}`}\n >\n {sectionRows.map((row) => (\n <Box key={row.key} w=\"full\" minW=\"0\">\n {renderVirtualRow({\n row,\n expandedNodeIds,\n activeNodeId,\n focusRowId: keyboard.focusRowId,\n rowVariant,\n nodeGap,\n linkComponent,\n onRowFocus: keyboard.onRowFocus,\n onNavigate,\n onToggleSection,\n onToggleNode,\n onSectionContextMenu,\n onMoveNode,\n })}\n </Box>\n ))}\n </Stack>\n );\n })}\n </Stack>\n );\n};\n\nexport const TreeList = (props: TreeListProps) => {\n const content = props.draggable ? (\n <TreeListSortable\n sections={props.sections}\n expandedSectionIds={props.expandedSectionIds}\n expandedNodeIds={props.expandedNodeIds}\n activeNodeId={props.activeNodeId}\n rowVariant={props.rowVariant}\n sectionGap={props.sectionGap}\n nodeGap={props.nodeGap}\n linkComponent={props.linkComponent}\n onNavigate={props.onNavigate}\n onToggleSection={props.onToggleSection}\n onToggleNode={props.onToggleNode}\n onSectionContextMenu={props.onSectionContextMenu}\n onReorderSections={props.onReorderSections}\n onReorderNodes={props.onReorderNodes}\n canMove={props.canMove}\n />\n ) : (\n <StackTreeList {...props} />\n );\n const paddedContent = <TreeListMoveSurface onMoveNode={props.onMoveNode}>{content}</TreeListMoveSurface>;\n\n if (!props.backgroundContextActions || props.backgroundContextActions.length === 0) {\n return paddedContent;\n }\n\n return <TreeListBackground actions={props.backgroundContextActions}>{paddedContent}</TreeListBackground>;\n};\n"],"names":["MIN_HORIZONTAL_COLLAPSE_THRESHOLD_PX","MAX_HORIZONTAL_COLLAPSE_THRESHOLD_PX","VERTICAL_COLLAPSE_THRESHOLD_PX","clamp","value","min","max","Math","axes","left","rootDirection","dimension","separatorOrientation","cursor","pointerCoordinate","deltaDirection","panelFirst","right","top","bottom","getResizableSplitAxis","side","resolveResizableBounds","input","rootSize","fallbackRootSize","maxFromContent","contentMinSize","configuredMax","maxSize","minSize","resolveCollapseThreshold","resolveDraggedPanelSize","axis","rawSize","startSize","pointerDelta","collapsed","collapsible","size","HOVER_DELAY_MS","GRIP_DOTS","resolveHandleLayout","vertical","thickness","w","h","hitArea","insetInlineStart","insetInlineEnd","gripDirection","bar","transform","insetInline","ResizeHandleGrip","props","$","_c","active","layout","t0","t1","t2","Symbol","for","map","_temp","t3","jsx","Flex","ResizeHandleBar","Box","ResizeHandle","css","bounds","contentPanelId","dragging","resizablePanelId","resizeLabel","resolvedPanelSize","separator","onCollapse","onResizeKeyDown","onResizeStart","line","hovered","setHovered","useState","hoverTimerRef","useRef","tabIndex","visibility","t4","t5","window","clearTimeout","current","useEffect","t6","setTimeout","handlePointerEnter","t7","handlePointerLeave","t8","t9","t10","round","t11","t12","t13","undefined","t14","content","position","t15","opacity","t16","t17","t18","t19","dot","ResizableSplitPanels","styles","contentPanel","contentPanelRef","resizablePanel","resizablePanelRef","resizablePanelNode","contentPanelNode","resizeTrigger","useResizableSplitRootSize","rootRef","setRootSize","element","updateRootSize","getBoundingClientRect","ResizeObserver","observer","observe","disconnect","FALLBACK_ROOT_SIZE","width","height","KEYBOARD_RESIZE_STEP","getElementSize","ResizableSplitLayout","controlledCollapsed","maxSizePx","onCollapsedChange","onSizeChange","rest","resizableSide","defaultSizePx","minSizePx","contentMinSizePx","key","useSlotRecipe","orientation","id","useId","cleanupDragRef","lastSizeRef","panelSize","setPanelSize","internalCollapsed","setInternalCollapsed","setDragging","style","sizeStyle","t20","setProperty","applyPanelSize","t21","size_0","nextBounds","nextSize","commitPanelSize","t22","nextCollapsed","setCollapsed","t23","event","button","preventDefault","resizeHandle","currentTarget","bounds_0","startPointer","previousCursor","document","body","previousUserSelect","userSelect","nextSize_0","nextCollapsed_0","animationFrame","setDraggingPanelState","pointerEvents","schedulePanelSize","requestAnimationFrame","handlePointerMove","moveEvent","result","cleanup","removeEventListener","hasPointerCapture","pointerId","releasePointerCapture","cancelAnimationFrame","_temp2","setPointerCapture","addEventListener","once","handleResizeStart","t24","handleCollapse","t25","event_0","negativeDirectionKey","positiveDirectionKey","size_1","handleResizeKeyDown","t26","t27","root","TreeListBackground","actions","children","ResourceContextMenu","jsxs","isInList","values","includes","isActiveNode","activeNodeId","Array","isArray","isNavigableNode","node","isNavigable","navigationIntent","getNodeChildren","hasExpandableChildren","length","isContainer","appendVisibleNodeRows","rows","sectionId","nodes","expandedNodeIds","level","parentNodeId","push","kind","buildVirtualRows","sections","expandedSectionIds","section","label","expanded","emptyState","getRowFocusId","row","isFocusableRow","disabled","getFocusableRows","filter","resolveTreeListFocusRowId","focusedRowId","focusableRows","focusableIds","Set","has","activeId","find","firstRow","resolveSectionHeaderNavigation","currentIndex","type","nextRow","rowId","resolveNodeNavigation","expandable","nodeId","resolveTreeListKeyboardNavigation","resolvedFocusRowId","findIndex","currentRow","focusByIndex","index","clamped","TREE_NODE_DATA_TYPE","writeDraggedTreeNodeId","dataTransfer","setData","readDraggedTreeNodeId","getData","TreeListMoveSurface","onMoveNode","dropEffect","handleDragOver","sourceNodeId","handleDrop","paddingLeft","TreeListInlineInputRow","icon","setValue","defaultValue","error","setError","inputRef","submittingRef","commit","onCommit","trim","cause","Error","message","queueMicrotask","focus","stopPropagation","Input","ariaLabel","Boolean","placeholder","onCancel","TreeListNodeRow","rowVariant","nodeGap","linkComponent","LinkComponent","onFocus","onNavigate","onToggleNode","inlineInput","hasChildren","isActive","isDisabled","canLink","href","intent","onActivate","handleActivate","effectAllowed","handleDragStart","canDrop","event_1","action","onAction","context","listRowItem","nodeRowVariant","rowItem","_inlineInput","depth","variant","isSelected","isExpanded","showExpandToggle","onToggleExpand","rowProps","ListRow","canDrag","Stack","TreeListSectionActions","menuItems","SearchableActionMenu","Menu","IconButton","HStack","TreeListSectionHeader","focusId","onToggle","onContextMenu","bg","Text","ChevronRight","transition","item","SECTION_PREFIX","toSectionDragId","isSectionDragId","startsWith","fromSectionDragId","slice","arrayMoveInPlace","items","from","to","next","removed","splice","findNodeLocation","permitsMove","move","canMove","canDropOnTreeListTarget","overId","source","destination","canReorder","moveScope","destinationSection","destinationNode","computeSectionReorder","activeSection","overSection","orderedIds","oldIndex","indexOf","newIndex","nextSectionIds","computeNodeReorder","overNode","sourceIds","orders","destinationIds","insertionIndex","computeReorderResult","SharedTreeListDragContext","createContext","TreeListDragProvider","onReorderSections","onReorderNodes","activationConstraint","distance","sensors","useSensors","useSensor","PointerSensor","closestCenter","collision","String","collisionDetection","over","nextNodeIds","Object","entries","handleDragEnd","DndContext","SortableHost","sortable","useSortable","isDragging","listeners","setNodeRef","CSS","Transform","toString","SortableSectionGroup","sectionRows","onToggleSection","onSectionContextMenu","headerRow","nodeRows","_temp3","_temp4","topLevelNodeIds","onPointerDown","_temp5","SortableContext","verticalListSortingStrategy","row_3","SortableOrPlainNodeRow","renderNodeRow","bb0","TreeListSortable","sectionGap","usesSharedDragContext","useContext","T0","_temp6","T1","section_0","row_0","row_1","row_2","findRowElement","querySelectorAll","dataset","treeListFocusId","findFocusedRowId","target","HTMLElement","contains","closest","isTextEditingTarget","isContentEditable","tagName","getRowIndex","useTreeListKeyboardNavigation","scrollToRow","setFocusedRowId","pendingFocusRowId","setPendingFocusRowId","focusRowId","join","focusableRowIds","split","frame","element_0","rowIndex","focusRow","altKey","ctrlKey","metaKey","shiftKey","navigation","handleKeyDown","rowId_0","onRowFocus","VIRTUAL_ROW_ESTIMATE","VIRTUAL_ROW_OVERSCAN","renderVirtualRow","VirtualTreeList","scrollRef","virtualizer","useVirtualizer","count","getScrollElement","estimateSize","overscan","getItemKey","keyboard","scrollToIndex","align","getTotalSize","getVirtualItems","virtualItem","measureElement","start","StackTreeList","virtualize","TreeList","draggable","paddedContent","backgroundContextActions"],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- export interface FileIconThemeFont {
2
- fontFamily: string;
3
- src: {
4
- url: string;
5
- format?: string;
6
- }[];
7
- weight?: string;
8
- style?: string;
9
- }
10
- export interface FileIconThemeDefinition {
11
- fontCharacter?: string;
12
- fontColor?: string;
13
- fontId?: string;
14
- }
15
- export interface FileIconThemePreferenceOption {
16
- id: string;
17
- title?: string;
18
- definitions: Record<string, unknown>;
19
- fileExtensions: Record<string, string>;
20
- fileNames: Record<string, string>;
21
- defaults: {
22
- file?: string;
23
- folder?: string;
24
- };
25
- fonts: FileIconThemeFont[];
26
- }
27
- export declare const defaultFileIconThemePreferences: FileIconThemePreferenceOption[];
28
- export declare const isFileIconThemePreference: (value: string | null, themes: readonly FileIconThemePreferenceOption[]) => value is string;
29
- export interface ResolvedFileIconGlyph {
30
- fontFamily: string;
31
- fontCharacter: string;
32
- fontColor?: string;
33
- }
34
- export declare const resolveFileIconGlyph: (theme: FileIconThemePreferenceOption | undefined, filename: string, isDirectory?: boolean) => ResolvedFileIconGlyph | undefined;
35
- export declare const applyFileIconThemePreference: (themeId: string | null, themes: readonly FileIconThemePreferenceOption[]) => void;
@@ -1,22 +0,0 @@
1
- export type ThemePreference = string;
2
- export type ThemePreferenceMode = "light" | "dark";
3
- export type ThemePreferenceTokens = Record<string, string>;
4
- export interface ThemePreferenceOption {
5
- id: ThemePreference;
6
- title?: string;
7
- mode: ThemePreferenceMode;
8
- tokens?: ThemePreferenceTokens;
9
- monacoTheme?: unknown;
10
- }
11
- export declare const defaultThemePreferences: ({
12
- id: string;
13
- mode: "light";
14
- } | {
15
- id: string;
16
- mode: "dark";
17
- })[];
18
- export declare const isThemePreference: (value: string | null, themePreferences?: readonly ThemePreferenceOption[]) => value is ThemePreference;
19
- export declare const getThemePreferenceMode: (theme: ThemePreference, themePreferences?: readonly ThemePreferenceOption[]) => ThemePreferenceMode;
20
- export declare const getThemePreferenceClassName: (theme: ThemePreference) => string;
21
- export declare const getThemePreferenceClassNames: (theme: ThemePreference, mode?: ThemePreferenceMode) => string[];
22
- export declare const applyThemePreference: (theme: ThemePreference, themePreferences?: readonly ThemePreferenceOption[]) => void;
@@ -1,7 +0,0 @@
1
- interface BrowserStorage {
2
- getItem: (key: string) => string | null;
3
- removeItem: (key: string) => void;
4
- setItem: (key: string, value: string) => void;
5
- }
6
- export declare const createBrowserStorage: () => BrowserStorage;
7
- export {};
@@ -1,15 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { FileIconThemePreferenceOption } from './apply-file-icon-theme-preference';
3
- interface FileIconThemePreferenceContextValue {
4
- fileIconThemePreference: string | null;
5
- fileIconThemePreferences: readonly FileIconThemePreferenceOption[];
6
- activeFileIconTheme: FileIconThemePreferenceOption | undefined;
7
- setFileIconThemePreference: (preference: string) => void;
8
- }
9
- interface FileIconThemePreferenceProviderProps {
10
- children: ReactNode;
11
- themePreferences?: readonly FileIconThemePreferenceOption[];
12
- }
13
- export declare const FileIconThemePreferenceProvider: (props: FileIconThemePreferenceProviderProps) => import("react/jsx-runtime").JSX.Element;
14
- export declare const useFileIconThemePreference: () => FileIconThemePreferenceContextValue;
15
- export {};
@@ -1,2 +0,0 @@
1
- import { LucideIcon } from 'lucide-react';
2
- export declare const getFileTypeIcon: (filename: string) => LucideIcon;
@@ -1 +0,0 @@
1
- export declare const installPrismGlobal: () => Promise<void>;
@@ -1,8 +0,0 @@
1
- import { FileIconThemePreferenceOption } from './apply-file-icon-theme-preference';
2
- interface ResolveFileIconElementOptions {
3
- isDirectory?: boolean;
4
- theme?: FileIconThemePreferenceOption;
5
- size?: number;
6
- }
7
- export declare const resolveFileIconElement: (filename: string, options?: ResolveFileIconElementOptions) => import("react/jsx-runtime").JSX.Element;
8
- export {};
@@ -1,20 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { ThemePreference, ThemePreferenceOption } from './apply-theme-preference';
3
- interface ThemePreferenceContextValue {
4
- themePreference: ThemePreference;
5
- themePreferences: readonly ThemePreferenceOption[];
6
- setThemePreference: (preference: ThemePreference) => void;
7
- toggleThemePreference: () => void;
8
- }
9
- interface ThemePreferenceProviderProps {
10
- children: ReactNode;
11
- initialPreference?: ThemePreference;
12
- /** A default used only when the user has not chosen a theme in this scope. */
13
- defaultPreference?: ThemePreference;
14
- preferenceScope?: string;
15
- themePreferences?: readonly ThemePreferenceOption[];
16
- }
17
- export declare const getInitialThemePreference: (themePreferences?: readonly ThemePreferenceOption[]) => string;
18
- export declare const ThemePreferenceProvider: (props: ThemePreferenceProviderProps) => import("react/jsx-runtime").JSX.Element;
19
- export declare const useThemePreference: () => ThemePreferenceContextValue;
20
- export {};